Тази статия описва как редовни средствапредаване на стойност като параметър при отваряне на управляван формуляр 8.2 в сравнение с това как подобна операция може да бъде приложена в обикновени формуляри.
Как се предават параметрите в редовни форми
В обикновените форми имаше 2 възможности за предаване на параметър:
1) по-рядко срещан метод: в обектната форма в раздела „Подробности“ бяха добавени атрибути и, ако е необходимо, достъпът беше определен чрез визуални средства
2) по-често срещан метод: променлива за експортиране е декларирана в модула на формуляра и стойността е обработена в манипулатора „Преди отваряне“
и в двата случая извикването на формуляра изглеждаше по следния начин:
Form = Object.GetForm("SelectionForm",FormOwner, UniquenessKey);
Form.Parameter = ParameterValue;
Form.Open();
Как се предават параметрите на контролирани форми
Управляваните формуляри вече имат способността незабавно да предават параметри, когато формулярът бъде получен. Параметрите се предават като структура:
Параметри = Нова структура ("CurrentValue", LastElement);
SelectionForm = GetForm("Директория. Номенклатура.SelectionForm", параметри);
FoundItem = SelectionForm.OpenModal();
Освен това управляваният формуляр вече има „разширения на формуляра“ (обект, справочник, документ, отчет). В зависимост от вида на обекта се определя съставът на наличните параметри. Например, ако във формата за избор на директория трябва да позиционирате конкретен елемент, тогава се използва параметърът „CurrentValue“. Голямото предимство е, че самата форма не изисква писане на манипулатори за предварително дефинирани параметри, което намалява количеството код.
Разработчикът също има възможност да дефинира свои собствени параметри (в дизайнера на управлявани формуляри, раздела „Параметри“). Животът на параметрите е ограничен от манипулатора OnCreationOnServer, което е логично, защото параметрите се изискват само при създаване на формуляр, но ако този параметър определя уникалността на формуляра (флагът „ключов параметър“ е зададен в свойствата на параметъра), той ще бъде наличен в други манипулатори.
За да предадете конкретен манипулационен параметър, трябва да направите малко повече:
1) Дефинирайте параметъра в контролирана форма.
В манипулатора OnCreationOnServer дефинирайте обработката на този параметър (достъп до предадените параметри чрез свойството „Параметри“, което има тип FormDataStructure)
2) Опишете получаването на формуляра и предайте стойността на новия параметър в параметрите на функцията GetForm.
Така кодът ще изглежда така:
- На мястото, където получавате формуляра
Параметри = Нова структура ("NewParameter", LastElement);
SelectionForm = GetForm("Директория. Номенклатура.SelectionForm", параметри);
В модул за управлявана форма
&На сървъра
Процедура при създаване на сървър (неуспех, стандартна обработка)
Ако Parameters.Property("NewParameter") Тогава
// тук е кодът за обработка на параметъра
endIf;
Край на процедурата
Заключение
Може би тази статия ще бъде полезна за някого, ще спести време и ще ви спести от ненужен код. За повече подробна информацияО пълен списъкЗа параметри на управляван формуляр се препоръчва да погледнете помощта „Управляван интерфейс\Управляван формуляр“.
[трябва да се регистрирате, за да видите връзката]
За да поддържа автоматичното взаимодействие между формулярите, системата предоставя редица стандартни параметри, които се използват за управление на формуляри, когато се отварят. Използвайки тези параметри, системата реализира в полетата на формуляри избора от формуляри за избор, отваряне на формуляри на обекти, работа със стандартни команди и т.н. Те предоставят различни сценарии за работа на интерфейса, вградени в системата. Но разработчикът може също да използва тези параметри във вградения език, като ги предава при извикване на метода OpenForm().
Ние изброяваме параметрите, предоставени от системата и тяхното предназначение:
За да демонстрирате как работят параметрите на формуляра, разгледайте изпълнението на избиране на елемент в поле за въвеждане. Същността на примера ще бъде внедряването на механизма за избор на елемент от списък на вградения език.
Докато започнете да работите с примера, трябва да имате конфигурация със следните свойства:
Сега нека внедрим в тази конфигурация всички механизми, които платформата използва за избор на елемент от списъка на вградения език. По този начин ще видим как се използват стандартните параметри на формуляра; как самата система ги използва; как един разработчик може да ги използва.
Нека добавим допълнителен флаг, който ще контролира затварянето на формата за избор след избиране на елемент. Нека наречем този флаг CloseAfterSelection (тип Boolean). Нека го добавим като параметър на формата Форма за избор на директория Продукти.
За да отворите формуляра за избор на елемент, трябва да създадете манипулатор на събитие за събитието Начало на избора за елемента на формуляра Избран продукт под формата на елемента на директория Analogues:
&На клиент
Процедура SelectedProductStartSelection(Item, StandardProcessing)
StandardProcessing = False;
SelectionParameters = Нова структура;
SelectionParameters.Insert("SelectionMode", True);
SelectionParameters.Insert("SelectingGroupsAndElements", UsingGroupsAndElements.Elements);
SelectionParameters.Insert("AllowRootSelection", False);
OpenForm("Directory.Products.SelectionForm", SelectionParameters, Elements.SelectedProduct);
Край на процедурата
Необходимо е да се спрем отделно на третия параметър на метода OpenForm(). Този параметър определя кой ще бъде собственик на формата за избор и кой ще бъде уведомен за направения избор. В този случай сме посочили самия елемент на формуляра като собственик на формуляра за избор, но можем също да посочим самия формуляр с този параметър. В този случай ще е необходимо да се внедри манипулаторът Form Module Selection Processing и в него да се реши в кой атрибут на формуляр да се поставят избраните данни. Печат (Ctrl+P)
Опции на формуляра
1. Обща информация
Параметрите на формуляра (раздел Опции) служат за две цели:
● Опишете набора от данни, които ще повлияят на отварянето на формуляра (параметризиране на формуляра). За да направите това, трябва да посочите всички необходими параметри и да посочите техните видове. ● Определете параметрите, които ще повлияят на ключа за уникалност на формуляра. За да направите това, трябва да зададете свойството
Ключов параметър тези параметри, които трябва да участват във формирането на ключа за уникалност на формата. Когато се опитате да отворите формуляр, системата търси съществуващ формуляр, като използва генерирания ключ за уникалност на формуляра. Ако формуляр с получения ключ съществува в системата):
уникалност, именно тази форма се връща; ако не, се създава нов формуляр.
При извикване на формуляр стойностите на параметрите, създадени от разработчика, могат да бъдат посочени в структурата на параметрите заедно със системните параметри на формулярите (ако има такива)..
Параметрите на формуляра могат да бъдат предадени на формуляра в момента на неговото създаване. Анализ на предадените параметри може да се извърши в събитието
WhenCreatingOnServer()(колекцията Parameters е свойство на обекта ManagedForm// На мястото на обаждането.
// Отваряне на формата с параметри.
OpenForm (“GeneralForm.ViewForm”, параметри);
…
// В модула формуляр.
&На сървъра
Процедура WhenCreatingOnServer(Failure, StandardProcessing)
Ако Параметри. Важност = Изброявания.Важност.Важно o Тогава
…
endIf;
Край на процедурата
ВНИМАНИЕ!! След извикване на манипулатора на събитияКогато е създаден на сървъра
всички неключови параметри на формуляра се премахват от колекцията Параметри.
2. Стандартни параметри на формата
За да поддържа автоматичното взаимодействие между формулярите, системата предоставя редица стандартни параметри, които се използват за контрол на формулярите, когато се отварят. Използвайки тези параметри, системата реализира в полетата на формуляри избора от формуляри за избор, отваряне на формуляри на обекти, работа със стандартни команди и т.н. Те предоставят различни сценарии за работа на интерфейса, вградени в системата.
Но разработчикът може също да използва тези параметри във вградения език, като ги предава при извикване на метода OpenForm(). Списък на стандартните параметри на формуляра в зависимост от вида на разширението на формуляра може да бъде намерен в разделите
Вграден език - Интерфейс(управляван) – Управляван формуляр – Разширяване... вграден
За да демонстрирате как работят параметрите на формуляра, разгледайте изпълнението на избиране на елемент в поле за въвеждане. Същността на примера ще бъде внедряването на механизма за избор на елемент от списък на вградения език.
3. Пример за работа с параметри на формата
Докато започнете да работите с примера, трябва да имате конфигурация със следните свойства:
● има директория Продукти с йерархия на групи и елементи; ● има директория с аналози с детайлите SelectedProduct type;
DirectoryLink.Продукти
● и двете директории имат форми на елементи.
Сега нека внедрим в тази конфигурация всички механизми, които платформата използва за избор на елемент от списъка на вградения език. В този случай ще видим:
● как се използват стандартните параметри на формата;
● как самата система ги използва;
● как един разработчик може да ги използва. Нека добавим допълнителен параметър, който ще контролира затварянето на формата за избор след избиране на елемент. Нека наречем този параметър CloseAfterSelection
(булев тип). Нека го добавим като параметър на формата Форма за избор на директория Продукти.
За да отворите формуляра за избор на елемент, трябва да създадете манипулатор на събитие за събитието Начало на избора в елемента формуляр на елемента формуляр Избран продукт.
Процедура &На клиент
SelectedProductStartSelection(Item, StandardProcessing)Стандартна обработка
= невярно;Опции за избор
= Нова структура;Опции за избор. Вмъкване
= Нова структура;(„Избор на групи и елементи“, Използване на GroupsAndElements.Elements);
= Нова структура;(„AllowRootSelection“, False);
= Нова структура;(„Текуща линия“, Object.SelectedProduct);
= Нова структура;(“CloseAfterSelection”, False);
OpenForm(“Директория.Продукти.Формуляр за избор”, = невярно;, Items.SelectedItem);
Край на процедурата
Необходимо е да се спрем отделно на третия параметър на метода OpenForm(). Този параметър определя кой ще бъде собственик на формата за избор и кой ще бъде уведомен за направения избор. В този случай сме посочили самия елемент на формуляра като собственик на формуляра за избор, но можем също да посочим самия формуляр с този параметър. В този случай ще е необходимо да се внедри манипулатор Обработка на селекциямодул формуляр и решете в него в кой атрибут на формуляр да поставите избраните данни.
ЗАБЕЛЕЖКА. Ако не внедрим манипулатора на събитието StartSelection, тогава неговите действия ще се извършват от самата система. Това важи за всички допълнителни манипулатори, които се използват в примера.
Сега трябва да обработите предадените параметри във формуляра за избор. Нека направим това в манипулатора След извикване на манипулатора на събития() на модула за формуляр за избор.
&На сървъра
Процедура WhenCreatingOnServer(Failure, StandardProcessing)
SelectedProductStartSelection(Item, StandardProcessing)Стандартна обработка
Elements.List.SelectingGroupsAndElements = Parameters.SelectingGroupsAndElements;
Elements.List.AllowRootSelection = Parameters.AllowRootSelection;
Elements.List.CurrentRow = Parameters.CurrentRow;
CloseOnSelection = Опции.CloseAfterSelection;
Край на процедурата
За да проверим функционалността на зададените от нас параметри на формуляра, с помощта на конфигуратора ще зададем свойството List за таблицата на формата за избор Избор на групи и елементикъм стойността на Групи (без използване на параметъра изборът на елементи от директорията няма да бъде наличен).
ЗАБЕЛЕЖКА. Ако таблицата със списък, показваща списък с продукти, няма свойството SelectionMode, зададено на True, тогава изборът на продукти няма да бъде наличен.
Сега трябва да се справим с избора на желания елемент във формата за избор. За да направите това, трябва да дефинирате манипулатор за събитието SelectValue на таблицата на формуляра.
За да отворите формуляра за избор на елемент, трябва да създадете манипулатор на събитие за събитието Начало на избора в елемента формуляр на елемента формуляр Избран продукт.
Процедура ListValueSelection(Element, StandardProcessing, Value)
SelectedProductStartSelection(Item, StandardProcessing)Стандартна обработка
NotifyOfSelection(Стойност);
Край на процедурата
Всичко, което трябва да направим, е да внедрим обработка за избор на елемент в самото поле за въвеждане. За да направите това, трябва да управлявате събитието Обработка на селекциянашето поле за въвеждане SelectedProduct.
За да отворите формуляра за избор на елемент, трябва да създадете манипулатор на събитие за събитието Начало на избора в елемента формуляр на елемента формуляр Избран продукт.
Процедура SelectedItemSelectionProcessing(Item, SelectedValue, StandardProcessing)
SelectedProductStartSelection(Item, StandardProcessing)Стандартна обработка
Object.SelectedProduct = SelectedValue;
Край на процедурата
Ние независимо внедрихме системен механизъм за избор на стойност в поле за въвеждане на формуляр.
ВНИМАНИЕ! Този примерне е завършено. Единствената му цел е да демонстрира механизмите за работа с параметри на формата.
Ако при създаване на параметри (манипулатор SelectedProductStartSelection()) заменете реда:
= Нова структура;(“CloseAfterSelection”, True);
на ред:
= Нова структура;(“CloseAfterSelection”, False) ;
тогава формулярът за избор вече няма да се затвори, след като изборът е направен. Това може да се използва, например, за прилагане на формуляр за избор (избиране на няколко продукта без затваряне на формуляра за избор).
Имаме обработка с този основен формуляр:
От тази форма трябва да отворим допълнителна форма, като текстът от полето на формата трябва да се прехвърли в отворената форма. Допълнителният формуляр е както следва:
Така, когато щракнете върху бутона „Изпълни“, се отваря допълнителна форма с вече въведения текст в полето:
Нека да разгледаме начин за решаване на такъв проблем.
За да прехвърлите параметри между обикновени формуляри, можете или да използвате глобалната експортна променлива на модула на формуляра, или да създадете атрибут на формуляр. Нека разгледаме и двата метода за нашата задача.
1. Използване на променливата за глобален експорт на модула на формуляра.
Добавете следния код към главния формуляр за процедурата за манипулиране на бутона "Изпълнение":
Процедура ButtonExecutePress(Button)Form = GetForm(" Допълнителна форма" ) ; // "Текст" е глобална експортна променлива на отворения модул на формуляраформа. Текст = FormElements. Текст. Значение; форма. Отваряне();Край на процедурата
Текстовата променлива е добавена към модула на отваряния формуляр заедно с манипулатора на събитие "BeforeOpen": Експортиране на променлив текст;// Променлива, към която се предава стойността от друга формаПроцедура BeforeOpen(Failure, StandardProcessing)FormElements. Предаден текст. Стойност = Текст;
Край на процедурата
Проблемът е решен и то съвсем просто!
За втория метод дори не е необходимо да пренаписваме манипулаторите на бутоните „Run“ и „BeforeOpen“. Всичко, което е необходимо, е да добавите атрибута „Текст“ с тип низ към отворената форма.
Изводи В управляваните форми предаването на параметри е много по-лесно. В конвенционалните форми в повечето случаи се използва описаният подход..
Можете да обработите примера от статията изтеглете от връзкатаПрограмно отваряне на формуляри в
управлявано приложение
Това е най-бавният метод за отваряне на формуляри. Въпреки това ви позволява да обработите формуляра програмно, преди да го отворите. За да обработите кода, трябва да промените малко:
Формуляр = GetForm( "Документ. Получаване на стоки и услуги. Форма на документ")
;
//Тук извършваме действия с формата
форма. Отваряне();
Трябва да се има предвид, че когато формулярът бъде получен, ще се изпълни друга процедура за събитие WhenCreatedOnServer.
Нека да разгледаме други методи, които ви позволяват да отваряте формуляри в управлявано 1C приложение по-бързо и по-удобно. В зависимост от конкретната ситуация могат да се използват различни методи.
В този случай всичко е изключително просто.
RefLink = Директории. Номенклатура. FindByCode("000000001" ) ;
OpenValue(RefLink);
Има функция за това Въведете стойност().Функцията има 3 параметъра:
В резултат на изпълнение на функцията ще се отвори стандартната форма за избор на обект от посочения тип.
Променлива стойност;
Array = нов масив;
Масив. Добавяне(Тип( "Връзка към директория. Номенклатура")
)
;
Масив. Добавяне(Тип( "DirectoryLink. Контрагенти")
)
;
TypeDescription= ново TypeDescription(Array) ;
Res = EnterValue(Value, "Hint" , TypeDescription) ;
Предишните методи ви позволяваха само да отваряте формулярите по подразбиране за обекти (формуляр за обект или формуляр за избор). Ако трябва да отворите персонализиран формуляр, можете да използвате функцията OpenForm().
Тази функция има доста параметри. Нека да разгледаме някои от тях:
Нека да разгледаме как се използва функцията OpenForm()в различни ситуации.
Всяка форма има един ключов атрибут. Той е подчертан с удебелен шрифт в списъка с подробности за формуляра и обикновено се извиква Обектпод формата на елементи от справочници и документи. Други обекти може да имат различно име. За да отворите форма на съществуващ обект, трябва да предадете параметър на формата, която се отваря Ключсъс стойността като препратка към обект.
За да отворите формуляра за избор на елемент, трябва да създадете манипулатор на събитие за събитието Начало на избора в елемента формуляр на елемента формуляр Избран продукт.
Процедура Команда1 (Команда)
Параметър= нова структура;
Параметър. Insert("Key" , FindC() ) ;
OpenForm(, параметър);
Край на процедурата
&На сървъра
Функция FindC();
Връщане на директории. Контрагенти. FindByRequisites ("TIN", "745107734623")
EndFunction
Една проста функция ще свърши работа тук OpenForm()без никакви параметри.
За да отворите формуляра за избор на елемент, трябва да създадете манипулатор на събитие за събитието Начало на избора в елемента формуляр на елемента формуляр Избран продукт.
Процедура Команда1 (Команда)
OpenForm( "Директория. Контрагенти. Обектна форма")
;
Край на процедурата
Трябва да подадете параметър База, чиято стойност ще бъде препратка към основния обект за пълнене. Това ще стартира процедурата ProcessFill().
За да отворите формуляра за избор на елемент, трябва да създадете манипулатор на събитие за събитието Начало на избора в елемента формуляр на елемента формуляр Избран продукт.
Процедура Команда1 (Команда)
Параметър= нова структура;
Параметър. Insert("Base", LinkToBuyerAccount) ;
OpenForm( "Документ. Продажби на стоки и услуги. Формуляр за обект", параметър);
Край на процедурата
Този пример ще създаде документ Продажба на стоки и услугии се попълва на базата на фактура за плащане към купувача, връзката към която е предадена.
Изборът на формуляри 1C може да бъде прост или сложен. Простият избор включва изрази като Организация = Horns and Hooves LLC.Сложният подбор включва други видове сравнение, напр. В списъка. В тази статия ще разгледаме организацията на простата селекция, а отделна статия ще бъде посветена на сложната селекция.
За да организирате проста селекция, трябва да подадете параметър с ключ към формата, която се отваря Избор, стойността ще бъде структура, в която ключът е името на полето на динамичния списък, а стойността е данните, които се търсят.
Например, нека отворим формата за списък с директории GTD номераи направете избор там по собственик - елемент на директория Номенклатура.
За да отворите формуляра за избор на елемент, трябва да създадете манипулатор на събитие за събитието Начало на избора в елемента формуляр на елемента формуляр Избран продукт.
Процедура Команда1 (Команда)
Параметър= нова структура;
Избор= нова структура;
Избор. Insert("Собственик", LinkToNomenclature) ;
Параметър. Insert("Selection", Selection) ;
OpenForm( "Указател. GTD номера. Формуляр за списък", параметър);
Край на процедурата
За да направите това, ще ви е необходим ключ за въвеждане на информационен регистър.
Ключ за запис— това са стойностите на всички измервания и периодът (ако регистърът е периодичен). Тоест ключът на записа е параметрите, чрез които записът може да бъде уникално идентифициран.
Алгоритъмът за отваряне е както следва:
За да отворите формуляра за избор на елемент, трябва да създадете манипулатор на събитие за събитието Начало на избора в елемента формуляр на елемента формуляр Избран продукт.
Процедура Команда1 (Команда)
Параметър= нова структура;
KeyParameters= нова структура;
Ключови параметри. Insert("Номенклатура", LinkToNomenclature) ;
Ключови параметри. Insert("PriceType", LinkToPriceType) ;
Ключови параметри. Вмъкване ("Период", Дата) ;
KeyArray = Нов масив;
KeyArray. Добавяне (ключови параметри);
EntryKey = Нов( "Информационен регистър. Ключ на запис. Номенклатура на цените", KeyArray);
Параметър. Insert("Key", RecordKey) ;
OpenForm( "Регистър на информацията. Цени на номенклатурата. Регистърна форма", параметър);
Край на процедурата