У дома / Настройка / 1c предава параметрите на формата за избор. Предаване на параметри към управлявани и редовни форми. Как да отворите формуляр за избор и след това да получите избраната стойност

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

Печат (Ctrl+P)

Опции за формуляра

1. Обща информация

Параметрите на формуляра (раздел Параметри) служат за две цели:
● Опишете набора от данни, които ще повлияят на отварянето на формуляра (параметризация на формата). За да направите това, трябва да посочите всички необходими параметри и да посочите техните типове.
● Определете параметрите, които ще повлияят на ключа за уникалност на формата. За да направите това, трябва да зададете свойството Ключов параметъртези параметри, които трябва да участват при формирането на ключа за уникалност на формата. Когато се опитате да отворите формуляр, системата търси съществуващ формуляр, използвайки генерирания ключ за уникалност на формуляра. Ако в системата има формуляр с получения ключ
уникалност, тази форма се връща; ако не, се създава нов формуляр.
Когато се извика формуляр, стойностите на параметрите, създадени от разработчика, могат да бъдат посочени в структурата на параметрите, заедно с системните параметри на формуляра (ако има такива).
Параметрите на формуляра могат да се предават на формуляра в момента на неговото създаване. Анализът на предадените параметри може да се извърши в събитието OnCreateOnServer() (Колекцията Parameters е свойство на обекта ManagedForm):

// На мястото за обаждане.
// Формирайте параметъра на формата.
Параметри = Нова структура();
Опции. Поставете("Значение", Предварително дефинирана стойност(„Enumeration.Importance.Important”));
// Отворете формуляра с параметри.
OpenForm("GeneralForm.ViewForm", Параметри);

// В модула за формуляри.
&На сървъра
Процедура OnCreateOnServer(Неуспех, Стандартна обработка)
Ако Параметри. Значение = Enums.Importance.ImportantО, тогава

EndIf;
EndProcedure

ВНИМАНИЕ! След извикване на манипулатора на събития OnCreateOnServerвсички неключови параметри на формуляра се премахват от колекцията Параметри.
Съвет. Неключовите параметри на формуляра, които са необходими за по-нататъшна работа, трябва да се съхраняват в данните на формуляра.

2. Стандартни опции за формуляр

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

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

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

&AtClient
Процедура SelectedItemSelectionStart(елемент, стандартна обработка)
Стандартна обработка= невярно ;
Опции за избор= Нова структура ;
SelectionParameters.Insert(„Режим на избор“, Вярно);
SelectionParameters.Insert(“SelectGroupsAndItems”, Използване наGroupsAndItems.Items);
SelectionParameters.Insert(„AllowRootSelection“, False);
SelectionParameters.Insert(„Текущ ред“, Object.SelectedItem);
SelectionParameters.Insert(“CloseAfterSelection”, False);
OpenForm(“Catalog.Products.ChoiceForm”, Опции за избор, Елементи.Избран продукт);
EndProcedure
Трябва да се спрем отделно на третия параметър на метода OpenForm(). Този параметър определя кой ще бъде собственик на формуляра за избор и кой ще бъде уведомен за направения избор. AT този случайние сме посочили самия елемент на формата като собственик на формуляра за избор, но можем да посочим и самата форма с този параметър. В този случай ще е необходимо да се внедри манипулатора HandlingChoiceформуляр и решете в него кой атрибут на формата да поставите избраните данни.
ЗАБЕЛЕЖКА. Ако не внедрим манипулатора на събития StartChoice , тогава самата система ще изпълни своите действия. Това е вярно за всички други манипулатори, използвани в примера.
Сега трябва да обработим предадените параметри във формата за избор. Нека го направим в манипулатора OnCreateOnServer() на модула за избор на формуляр.

&На сървъра
Процедура OnCreateOnServer(Неуспех, Стандартна обработка)
Стандартна обработка= невярно ;
Elements.List.SelectGroupsAndItems = Параметри.SelectGroupsAndItems;
Elements.List.AllowSelectRoot = Параметри.AllowSelectRoot;
Items.List.CurrentRow = Параметри.CurrentRow;
CloseOnSelection = Параметри.CloseAfterSelection;
EndProcedure
За да проверим ефективността на зададените от нас параметри на формуляра, с помощта на конфигуратора ще зададем свойството List на таблицата на формуляра за избор Изберете Групи и елементидо стойността Групи (без прилагане на параметъра, изборът на елементи от речника няма да бъде наличен).
ЗАБЕЛЕЖКА. Ако таблицата Списък, която показва списък с продукти, няма свойството SelectionMode, зададено на True , тогава изборът на продукти няма да бъде наличен.
Сега трябва да се справим с избора на желания елемент във формата за избор. За да направите това, трябва да дефинирате манипулатор на събитие за събитието SelectValues ​​на таблицата на формуляра.

&AtClient
Процедура ListSelectionValues(елемент, стандартна обработка, стойност)
Стандартна обработка= невярно ;
NotifySelection(Стойност);
EndProcedure
Остава да реализираме обработката на избор на елемент в самото поле за въвеждане. За да направите това, трябва да се справите със събитието HandlingChoiceнашето поле за въвеждане SelectedProduct.

&AtClient
Процедура SelectedItemProcessingChoice(елемент, избрана стойност, стандартна обработка)
Стандартна обработка= невярно ;
Object.SelectedItem = Избрана стойност;
EndProcedure
Ние самостоятелно внедрихме системен механизъм за избор на стойност в полето за въвеждане на формуляра.
ВНИМАНИЕ!Този пример не е пълен. Единствената му цел е да демонстрира механиката на работа с параметрите на формата.
Ако при създаване на параметри (манипулатор SelectedItemSelectionStart()) заменете реда:

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

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

Изброяваме параметрите, предоставени от системата и тяхното предназначение:

  • Режим на избор– формата се отваря в режим на избор. Предоставя се чрез разширение управлявана форма динамичен списък.
  • CurrentLine– низ, който ще бъде активиран в списъка при отваряне. Предава се стойност, която идентифицира низа. Предоставя се от разширението за управляван формуляр за динамичен списък.
  • Изберете Групи и елементи– този параметър задава свойството SelectGroupAndItems на таблицата на основния атрибут на формуляра. Предоставя се от разширението за управляван формуляр за динамичен списък.
  • РазрешиSelectionRoot– определя дали коренът може да бъде избран във формата с динамичен списък, показан като дърво. Предоставя се от разширението за управляван формуляр на динамичен списък, показан като дърво.
  • Избор– избор, зададен в динамичен списък. Представлява структура. Имената на елементите съответстват на имената на полетата, чрез които се прави селекцията, а стойностите съдържат стойностите на селекцията. Предоставя се от разширението за управляван формуляр за динамичен списък.
  • Ключ– стойност, идентифицираща обекта, който се редактира във формуляра. Ако стойността липсва или е неправилна, се създава нов обект с помощта на останалите параметри. Предоставя се от формуляри за обекти и разширения на мениджъра на записи на информация.
  • ValueCopy– стойност, идентифицираща обекта, който ще се използва за копиране при създаване на нов обект. Предоставя се от формуляри за обекти и разширения на мениджъра на записи на информация.
  • Попълване на стойности– стойности за попълване на детайлите на новия обект. Представлява структура. Имената на елементите съответстват на имената на атрибутите, а стойностите съдържат данните, които ще бъдат използвани за попълване на посочените атрибути. Предоставя се от формуляри за обекти и разширения на мениджъра на записи на информация.
  • База– стойност, идентифицираща обекта, който ще бъде използван като основа при създаване на нов обект чрез въвеждане на базата. Предоставя се от разширения за форма на обект.
  • Тази група– определя типа на новия обект: група или елемент. Предоставя се от разширения за форма на обект.

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

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

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

  • Основният режим на стартиране е управлявано приложение;
  • има указател на стоките с йерархия от групи и елементи;
  • има директория Аналози с атрибут SelectedItem от типа DirectoryReference.Goods;
  • и двата справочника имат управлявани формуляри за артикули.

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

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

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

&AtClient

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

StandardProcessing = False;

ChoiceParameters = Нова структура; SelectionParameters.Insert("SelectionMode", True); SelectionParameters.Insert("SelectGroupsAndItems", UseGroupsAndItems.Elements); SelectionParameters.Insert("AllowRootSelection", False); ChoiceParameters.Insert("CurrentRow", Object.SelectedItem); SelectionParameters.Insert("CloseAfterSelection", False); OpenForm("Catalog.Products.ChoiceForm", ChoiceParameters, Elements.SelectedProduct);

EndProcedure

Трябва да се спрем отделно на третия параметър на метода OpenForm(). Този параметър определя кой ще бъде собственик на формуляра за избор и кой ще бъде уведомен за направения избор. В този случай ние посочихме самия елемент на формуляр като собственик на формуляра за избор, но можем да посочим и самата форма с този параметър. В този случай ще е необходимо да се внедри манипулатора SelectProcess на модула на формуляр и да реши в него кой атрибут на формуляр да постави избраните данни.

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

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

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

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

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

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

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

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

RefReference= Препратки. Номенклатура. FindByCode("000000001" ) ;
OpenValue(ReferenceReference) ;

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

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

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

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

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

TypeDescription= new TypeDescription(Array) ;

Res= EnterValue(Стойност, "Съвет", ТипОписание) ;

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

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

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

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

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

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

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

&На сървъра
функция FindC();
Върнете наръчници. Контрагенти. FindByAttribute ("TIN", "745107734623" )
Крайни функции

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

Това е просто функция OpenForm()без никакви параметри.

&AtClient
Процедура Команда 1 (Команда)
OpenForm( "Справочник. Контрагенти. Формуляр за обект") ;
EndProcedure

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

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

&AtClient
Процедура Команда 1 (Команда)
Параметър= нова структура;
Параметър. Insert("Причина" , LinkToAccountToBuyer) ;
OpenForm( "Документ. Реализация на стоки и услуги. Обектна форма", параметър);
EndProcedure

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

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

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

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

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

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

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

Параметър. Insert("Избор", Избор) ;

OpenForm( "Указател.GTE номера. Формуляр за списък", параметър);
EndProcedure

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

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

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

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

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

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

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

ArrayKey = Нов масив;
ArrayKey. Добавяне (KeyParameters) ;

RecordKey = Нов( "Информационен регистърРекордКлюч.НоменклатураЦени", ArrayKey);

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

OpenForm( "Информационен регистър. Номенклатурни цени. Формуляр за запис", параметър);
EndProcedure

Тази статия описва как да се предаде стойност като параметър като параметър при отваряне на управляван формуляр 8.2 в сравнение с това как подобна операция може да бъде реализирана в обикновени форми.

Как параметрите се предават в нормални форми

В нормални форми имаше 2 възможности за предаване на параметър:
1) по-рядко срещан метод: под формата на обект в раздела „Подробности“ беше добавен реквизит, ако е необходимо, достъпът беше определен чрез визуални средства
2) по-често срещан начин: експортирана променлива беше декларирана в модула на формуляра и стойността беше обработена в манипулатора „BeforeOpening“

и в двата случая извикването на формуляра изглеждаше така:

Форма = Object.GetForm("ChoiceForm",FormOwner,UniqueKey);
Форма.Параметър = ПараметърСтойност;
Form.Open();

Как се предават параметрите в управляваните форми

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

Параметри = Нова структура("CurrentValue",LastItem);
ChoiceForm = GetForm("Catalog.Nomenclature.ChoiceForm",Параметри);
FoundItem = ChoiceForm.OpenModal();

Също така, управляваният формуляр има "разширения за формуляри" (обект, директория, документ, отчет). В зависимост от типа обект се определя списъкът с налични параметри. Например, ако трябва да позиционирате определен елемент във формуляра за избор на речник, тогава се използва параметърът „CurrentValue“. Големият плюс е, че в самата форма не се изисква да се пишат манипулатори за предварително дефинирани параметри, което намалява количеството код.

Разработчикът също така има възможност да дефинира свои собствени параметри (в конструктора на управлявана форма, раздел „Параметри“). Животът на параметрите е ограничен от манипулатора OnCreateOnServer, което е логично, тъй като параметрите се изискват само при създаване на формуляра, но ако този параметър определя уникалността на формуляра (флагът "ключов параметър" е зададен в свойствата на параметъра), той ще бъде наличен в други манипулатори.

За да предадете конкретен параметър за манипулация, трябва да направите малко повече:

1) Дефинирайте параметър в управлявана форма.
В манипулатора OnCreateAtServer дефинирайте обработката на този параметър (достъп до предадените параметри чрез свойството „Параметри“ от типа FormDataStructure)
2) Опишете получаването на формуляра и предайте стойността на новия параметър в параметрите на функцията GetForm.
Така кодът ще изглежда така:
- На мястото на получаване на формуляра

Параметри = Нова структура("NewParameter",LastElement);
ChoiceForm = GetForm("Catalog.Nomenclature.ChoiceForm",Параметри);

В модул за управлявана форма

&На сървъра
Процедура при CreationOnServer(Неуспех, Стандартна обработка)
Ако Parameters.Property("NewParameter") Тогава
// код за обработка на параметри тук
EndIf;
EndProcedure

Заключение

Може би тази статия ще бъде полезна на някого, спестява време и ви спестява от ненужен код. За по-подробна информация относно пълен списъкпараметри на управляван формуляр, препоръчително е да погледнете помощта за "Управляван интерфейс \ Управляван формуляр".

[трябва да се регистрирате, за да видите връзката]