Предаване на параметри към управляваната форма 1s 8.3. Параметри на формата. Как се предават параметрите в редовни форми

Програмно отваряне на формуляри в управлявано приложение 1C се различава значително от тяхното откритие в редовно приложение. Нека първо разгледаме стария метод. Състои се от получаване на формуляр и след това отварянето му в нормален или модален режим (когато се отвори в модален режим, формулярът блокира програмата).

GetForm() . отворено()

Това е най-бавният метод за отваряне на формуляри. Въпреки това ви позволява да обработите формуляра програмно, преди да го отворите. За да обработите кода, трябва да промените малко:

Формуляр = GetForm( "Документ. Получаване на стоки и услуги. Форма на документ") ;
//Тук извършваме действия с формата
форма. Отваряне();

Трябва да се има предвид, че когато формулярът бъде получен, ще се изпълни друга процедура за събитие WhenCreatedOnServer.

Нека да разгледаме други методи, които ви позволяват да отваряте формуляри в управлявано 1C приложение по-бързо и по-удобно. В зависимост от конкретната ситуация могат да се използват различни методи.

1. Как да отворите обектна форма в управлявано приложение, ако има връзка към нея.

В този случай всичко е изключително просто.

RefLink = Директории. Номенклатура. FindByCode("000000001" ) ;
OpenValue(RefLink);

2. Как да отворите формуляра за избор и след това да получите избраната стойност.

Има функция за това Въведете стойност().Функцията има 3 параметъра:

  • Променливата, в която ще бъде записана избраната стойност;
  • Подсказка, която ще се покаже в прозореца за избор;
  • Описание на видовете избрани стойности. Може да има няколко типа, в който случай ще бъдете подканени да изберете тип, преди да изберете конкретна стойност.

В резултат на изпълнение на функцията ще се отвори стандартната форма за избор на обект от посочения тип.

Променлива стойност;
Array= нов масив;
Масив. Добавяне(Тип( "Връзка към директория. Номенклатура") ) ;
Масив. Добавяне(Тип( "DirectoryLink. Контрагенти") ) ;

TypeDescription= ново TypeDescription(Array) ;

Res = EnterValue(Value, "Hint" , TypeDescription) ;

Предишните методи ви позволяваха само да отваряте формулярите по подразбиране за обекти (формуляр за обект или формуляр за избор). Ако трябва да отворите персонализиран формуляр, можете да използвате функцията OpenForm().

Тази функция има доста параметри. Нека да разгледаме някои от тях:

  • Име на формуляра— тук можете да изберете една от стандартните форми на обект, напр. Формуляр за изборили Формуляр за списък. Или конкретна форма, създадена от разработчиците.
  • Опции— позволява ви да го прехвърлите във формуляра във формуляра структуринякои параметри, преди да го отворите, като по този начин определяте изходните данни. Параметрите могат да бъдат всякакви данни, които могат да бъдат предадени от клиента към сървъра. Параметрите, предадени при отваряне на формата, могат да бъдат обработени в процедурата WhenCreatingOnServer()във формата, която се отваря.
  • Режим на отваряне на формуляр— има 3 опции: независима, блокиране на целия интерфейс, блокиране на формата на собственика.

Нека да разгледаме как се използва функцията OpenForm()в различни ситуации.

3. Как да отворите формата на съществуващ обект

Всяка форма има един ключов атрибут. Той е подчертан с удебелен шрифт в списъка с подробности за формуляра и обикновено се извиква Обектпод формата на елементи от справочници и документи. Други обекти може да имат различно име. За да отворите форма на съществуващ обект, трябва да предадете параметър на формата, която се отваря Ключсъс стойността като препратка към обект.

&На клиент
Процедура Команда1 (Команда)
Параметър= нова структура;
Параметър. Insert("Key" , FindC() ) ;
OpenForm(, параметър);
Край на процедурата

&На сървъра
Функция FindC();
Връщане на директории. Контрагенти. FindByRequisites ("TIN", "745107734623")
EndFunction

4. Как да отворите нов формуляр за обект

Една проста функция ще свърши работа тук OpenForm()без никакви параметри.

&На клиент
Процедура Команда1 (Команда)
OpenForm( "Директория. Контрагенти. Обектна форма") ;
Край на процедурата

5. Как да отворите формуляр за нов обект и да го попълните въз основа на нещо

Трябва да подадете параметър База, чиято стойност ще бъде препратка към основния обект за пълнене. Това ще стартира процедурата ProcessFill().

&На клиент
Процедура Команда1 (Команда)
Параметър= нова структура;
Параметър. Insert("Base", LinkToBuyerAccount) ;
OpenForm( "Документ. Продажби на стоки и услуги. Формуляр за обект", параметър);
Край на процедурата

Този пример ще създаде документ Продажба на стоки и услугии се попълва на базата на фактура за плащане към купувача, връзката към която е предадена.

6. Как да отворите формуляр и да зададете селекция върху него

Изборът на формуляри 1C може да бъде прост или сложен. Простият избор включва изрази като Организация = Horns and Hooves LLC.Сложният подбор включва други видове сравнение, напр. В списъка. В тази статия ще разгледаме организацията на простата селекция, а отделна статия ще бъде посветена на сложната селекция.

За да организирате проста селекция, трябва да подадете параметър с ключ към формата, която се отваря Избор, стойността ще бъде структура, в която ключът е името на полето на динамичния списък, а стойността е данните, които се търсят.

Например, нека отворим формата за списък с директории GTD номераи направете избор там по собственик - елемент на директория Номенклатура.

&На клиент
Процедура Команда1 (Команда)
Параметър= нова структура;

селекция= нова структура;
Избор. Insert("Собственик", LinkToNomenclature) ;

Параметър. Insert("Selection", Selection) ;

OpenForm( "Указател.GTD номера. Формуляр за списък", параметър);
Край на процедурата

7. Как да отворите формата за въвеждане на информационен регистър

За да направите това, ще ви е необходим ключ за въвеждане на информационен регистър.

Ключ за запис— това са стойностите на всички измервания и периодът (ако регистърът е периодичен). Тоест ключът на записа е параметрите, чрез които записът може да бъде уникално идентифициран.

Алгоритъмът за отваряне е както следва:

  1. Въвеждаме ключовите данни за запис с необходимите стойности в структурата.
  2. Поставяме получената структура в масив.
  3. Създаваме ключ за запис от масива.
  4. Предаваме параметър на формата, която се отваря Ключс ключа за запис от стъпка 3 като стойност.

&На клиент
Процедура Команда1 (Команда)
Параметър= нова структура;

KeyParameters= нова структура;
Ключови параметри. Insert("Номенклатура", LinkToNomenclature) ;
Ключови параметри. Insert("PriceType", LinkToPriceType) ;
Ключови параметри. Вмъкване ("Период", Дата) ;

KeyArray = Нов масив;
KeyArray. Добавяне (ключови параметри);

EntryKey = Нов( "Информационен регистър. Ключ на запис. Номенклатура на цените", KeyArray);

Параметър. Insert("Key", RecordKey) ;

OpenForm( "Регистър на информацията. Цени на номенклатурата. Регистърна форма", параметър);
Край на процедурата

Имаме обработка с този основен формуляр:

От тази форма трябва да отворим допълнителна форма, като текстът от полето на формата трябва да се прехвърли в отворената форма. Допълнителният формуляр е както следва:

Така, когато щракнете върху бутона „Изпълни“, се отваря допълнителна форма с вече въведения текст в полето:

Нека да разгледаме начин за решаване на такъв проблем.

Решение

За да прехвърлите параметри между обикновени формуляри, можете или да използвате глобалната експортна променлива на модула на формуляра, или да създадете атрибут на формуляр. Нека разгледаме и двата метода за нашата задача.

1. Използване на променливата за глобален експорт на модула на формуляра.

Добавете следното към основния формуляр за процедурата за манипулиране на бутона "Изпълнение": програмен код:

Процедура ButtonExecutePress(Button)Form = GetForm(" Допълнителна форма" ) ; // "Текст" е глобална експортна променлива на отворения модул на формуляраформа. Текст = FormElements. Текст. Значение; форма. Отваряне();

Край на процедурата

Текстовата променлива е добавена към модула на отваряния формуляр заедно с манипулатора на събитие "BeforeOpen": Експортиране на променлив текст;Процедура BeforeOpen(Failure, StandardProcessing)FormElements. Предаден текст. Стойност = Текст;

Край на процедурата

Проблемът е решен и то съвсем просто!

2. Използване на подробности за формуляра.

За втория метод дори не е необходимо да пренаписваме манипулаторите на бутоните „Run“ и „BeforeOpen“. Всичко, което е необходимо, е да добавите атрибута „Текст“ с тип низ към отворената форма.

Изводи

В управляваните форми предаването на параметри е много по-лесно. В конвенционалните форми в повечето случаи се използва описаният подход. Можете да обработите примера от статията.

изтеглете от връзката

За да поддържа автоматичното взаимодействие между формулярите, системата предоставя редица стандартни параметри, които се използват за контрол на формулярите, когато се отварят. Използвайки тези параметри, системата реализира в полетата на формуляри избора от формуляри за избор, отваряне на формуляри на обекти, работа със стандартни команди и т.н. Те предоставят различни сценарии за работа на интерфейса, вградени в системата. Но разработчикът може също да използва тези параметри във вградения език, като ги предава при извикване на метода OpenForm().

  • Ние изброяваме параметрите, предоставени от системата и тяхното предназначение:Режим на избор
  • – формата се отваря в режим на избор. Осигурява се от разширението за формуляр за управляван динамичен списък. CurrentRow
  • – низ, който ще се активира в списъка при отваряне. Подава се стойност, която идентифицира низа. Осигурява се от разширението за формуляр за управляван динамичен списък.Избор на групи и елементи
  • – този параметър задава свойството SelectionGroupsIElements на основната таблица с атрибути на формуляра. Осигурява се от разширението за формуляр за управляван динамичен списък. AllowSelectRoot
  • Избор– дефинира възможността за избор на корен във формуляр с динамичен списък, показан като дърво. Предоставя се от разширение за управляван формуляр за динамичен списък, показан като дърво. – селекция установена вдинамичен списък
  • Ключ. Представлява структура. Имената на елементите съответстват на имената на полетата, чрез които се извършва изборът, а стойностите съдържат стойностите за избор. Осигурява се от разширението за формуляр за управляван динамичен списък.
  • – стойност, идентифицираща обекта, който се редактира във формата. Ако стойността липсва или е неправилна, се създава нов обект с помощта на останалите параметри. Осигурява се от разширения на обектни формуляри и мениджър на записи на информационен регистър.– стойност, идентифицираща обекта, който ще се използва за копиране при създаване на нов обект. Осигурява се от разширения на обектни формуляри и мениджър на записи на информационен регистър.
  • Попълване на стойности– стойности за попълване на детайлите на нов обект. Представлява структура. Имената на елементите съответстват на имената на детайлите, а стойностите съдържат данните, които ще се използват за попълване на посочените детайли. Осигурява се от разширения на обектни формуляри и мениджър на записи на информационен регистър.
  • База– стойност, идентифицираща обекта, който ще се използва като основа при създаване на нов обект чрез въвеждане на основата. Осигурява се от разширения на обектна форма.
  • Това е група– определя вида на новия обект: група или елемент. Осигурява се от разширения на обектна форма.

Пример за работа с параметри на формата

За да демонстрирате как работят параметрите на формуляра, разгледайте изпълнението на избиране на елемент в поле за въвеждане. Същността на примера ще бъде внедряването на механизма за избор на елемент от списък на вградения език.

Докато започнете да работите с примера, трябва да имате конфигурация със следните свойства:

  • Основен режим на стартиране – Управлявано приложение;
  • има директория Продукти с йерархия на групи и елементи;
  • има директория Analogs с атрибут SelectedProduct от типа DirectoryLink.Products;
  • и двете директории имат формуляри за управлявани елементи.

Сега нека внедрим в тази конфигурация всички механизми, които платформата използва за избор на елемент от списъка на вградения език. По този начин ще видим как се използват стандартните параметри на формуляра; как самата система ги използва; как един разработчик може да ги използва.

Нека добавим допълнителен флаг, който ще контролира затварянето на формата за избор след избиране на елемент. Нека наречем този флаг CloseAfterSelection (тип Boolean). Нека го добавим като параметър на формата Форма за избор на директория Продукти.

За да отворите формуляра за избор на елемент, трябва да създадете манипулатор на събитие за събитието Начало на избора за елемента на формуляра Избран продукт под формата на елемента на директория Analogues:

&На клиент

Процедура SelectedProductStartSelection(Item, StandardProcessing)

StandardProcessing = False;

SelectionParameters = Нова структура;

SelectionParameters.Insert("SelectionMode", True);

SelectionParameters.Insert("SelectingGroupsAndElements", UsingGroupsAndElements.Elements);

SelectionParameters.Insert("AllowRootSelection", False);

SelectionParameters.Insert("CurrentRow", Object.SelectedProduct);

SelectionParameters.Insert("CloseAfterSelection", 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)

АкоПараметри. Важност Когато е създаден на сървъравсички неключови параметри на формуляра се премахват от колекцията Параметри.
съвет. Неключовите параметри на формуляра, необходими за по-нататъшна работа, трябва да се съхраняват в данните на формуляра.

2. Стандартни параметри на формата

За да поддържа автоматичното взаимодействие между формулярите, системата предоставя редица стандартни параметри, които се използват за контрол на формулярите, когато се отварят. Използвайки тези параметри, системата реализира в полетата на формуляри избора от формуляри за избор, отваряне на формуляри на обекти, работа със стандартни команди и т.н. Те предоставят различни сценарии за работа на интерфейса, вградени в системата.
Но разработчикът може също да използва тези параметри във вградения език, като ги предава при извикване на метода OpenForm().
Списък на стандартните параметри на формуляра в зависимост от вида на разширението на формуляра може да бъде намерен в разделите Вграден език - Интерфейс
(управляван) – Управляван формуляр – Разширяване... вграденсертификати

3. Пример за работа с параметри на формата

За да демонстрирате как работят параметрите на формуляра, разгледайте изпълнението на избиране на елемент в поле за въвеждане. Същността на примера ще бъде внедряването на механизма за избор на елемент от списък на вградения език.
Докато започнете да работите с примера, трябва да имате конфигурация със следните свойства:
● има директория Продукти с йерархия на групи и елементи;
● има директория Analogs с подробности за SelectedProduct type DirectoryLink.Продукти;
● и двете директории имат форми на елементи.
Сега нека внедрим в тази конфигурация всички механизми, които платформата използва за избор на елемент от списъка на вградения език. В този случай ще видим:
● как се използват параметрите на стандартната форма;
● как самата система ги използва;
● как един разработчик може да ги използва.
Нека добавим допълнителен параметър, който ще контролира затварянето на формата за избор след избиране на елемент. Нека наречем този параметър CloseAfterSelection(булев тип). Нека го добавим като параметър на формата Форма за избор на директория Продукти.
За да отворите формуляра за избор на елемент, трябва да създадете манипулатор на събитие за събитието Начало на избора за елемента на формуляра SelectedProduct под формата на елемента директория Analogues.

&На клиент
("Важност", SelectedProductStartSelection(Item, StandardProcessing)
Стандартна обработка= невярно;
Опции за избор= Нова структура;
Опции за избор. Вмъкване(„Режим на избор“, вярно);
Опции за избор. Вмъкване(„Избор на групи и елементи“, Използване на GroupsAndElements.Elements);
Опции за избор. Вмъкване(„AllowRootSelection“, False);
Опции за избор. Вмъкване(„Текуща линия“, Object.SelectedProduct);
Опции за избор. Вмъкване(“CloseAfterSelection”, False);
OpenForm(“Директория.Продукти.Формуляр за избор”, Опции за избор, Items.SelectedItem);
Край на процедурата
Необходимо е да се спрем отделно на третия параметър на метода OpenForm(). Този параметър определя кой ще бъде собственик на формата за избор и кой ще бъде уведомен за направения избор. В този случай сме посочили самия елемент на формуляра като собственик на формуляра за избор, но можем също да посочим самия формуляр с този параметър. В този случай ще е необходимо да се внедри манипулатор Обработка на селекциямодул формуляр и решете в него в кой атрибут на формуляр да поставите избраните данни.
ЗАБЕЛЕЖКА. Ако не внедрим манипулатора на събитието StartSelection, тогава неговите действия ще се извършват от самата система. Това важи за всички допълнителни манипулатори, които се използват в примера.
Сега трябва да обработите предадените параметри във формуляра за избор. Нека направим това в манипулатора Когато е създаден на сървъра() на модула за формуляр за избор.

&На сървъра
("Важност", WhenCreatingOnServer(Failure, StandardProcessing)
Стандартна обработка= невярно;
Elements.List.SelectingGroupsAndElements = Parameters.SelectingGroupsAndElements;
Elements.List.AllowRootSelection = Parameters.AllowRootSelection;
Elements.List.CurrentRow = Parameters.CurrentRow;
CloseOnSelection = Опции.CloseAfterSelection;
Край на процедурата
За да проверим функционалността на зададените от нас параметри на формуляра, с помощта на конфигуратора ще зададем свойството List за таблицата на формата за избор – низ, който ще се активира в списъка при отваряне. Подава се стойност, която идентифицира низа. Осигурява се от разширението за формуляр за управляван динамичен списък.към стойността на Групи (без използване на параметъра изборът на елементи от директорията няма да бъде наличен).
ЗАБЕЛЕЖКА. Ако таблицата със списък, показваща списък с продукти, няма свойството SelectionMode, зададено на True, тогава изборът на продукти няма да бъде наличен.
Сега трябва да се справим с избора на желания елемент във формата за избор. За да направите това, трябва да дефинирате манипулатор за събитието SelectValue на таблицата на формуляра.

&На клиент
("Важност", ListSelectionValues(елемент, стандартна обработка, стойност)
Стандартна обработка= невярно;
NotifyOfSelection(Стойност);
Край на процедурата
Всичко, което трябва да направим, е да внедрим обработка за избор на елемент в самото поле за въвеждане. За да направите това, трябва да обработите събитието Обработка на селекциянашето поле за въвеждане SelectedProduct.

&На клиент
("Важност", SelectedItemSelectionProcessing(Item, SelectedValue, StandardProcessing)
Стандартна обработка= невярно;
Object.SelectedProduct = SelectedValue;
Край на процедурата
Ние независимо внедрихме системен механизъм за избор на стойност в поле за въвеждане на формуляр.
ВНИМАНИЕ!Този пример не е пълен. Единствената му цел е да демонстрира механизмите за работа с параметри на формата.
Ако при създаване на параметри (манипулатор SelectedProductStartSelection()) заменете реда:

Опции за избор. Вмъкване(“CloseAfterSelection”, True);
на ред:
Опции за избор. Вмъкване(“CloseAfterSelection”, False) ;
тогава формулярът за избор вече няма да се затвори, след като изборът е направен. Това може да се използва, например, за прилагане на формуляр за избор (избиране на няколко продукта без затваряне на формуляра за избор).

Операция