Как да отворите формуляр на съществуващ обект? Отворете формуляр за управляван обект.
Програмното отваряне на формуляри в управлявано 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( "Directory.GTD Numbers.List Form", параметър);
Край на процедурата
7. Как да отворите формата за въвеждане на информационен регистър
За да направите това, ще ви е необходим ключ за въвеждане на информационен регистър.
Ключ за запис— това са стойностите на всички измервания и периодът (ако регистърът е периодичен). Тоест ключът на записа е параметрите, чрез които записът може да бъде уникално идентифициран.
Алгоритъмът за отваряне е както следва:
- Въвеждаме ключовите данни за запис с необходимите стойности в структурата.
- Поставяме получената структура в масив.
- Създаваме ключ за запис от масива.
- Предаваме параметър на формата, която се отваря Ключс ключа за запис от стъпка 3 като стойност.
&На клиент
Процедура Команда1 (Команда)
Параметър= нова структура;
KeyParameters= нова структура;
Ключови параметри. Insert("Номенклатура", LinkToNomenclature) ;
Ключови параметри. Insert("PriceType", LinkToPriceType) ;
Ключови параметри. Вмъкване ("Период", Дата) ;
KeyArray = Нов масив;
KeyArray. Добавяне (ключови параметри);
EntryKey = Нов( "Информационен регистър. Ключ на запис. Номенклатура на цените", KeyArray);
Параметър. Insert("Key", RecordKey) ;
OpenForm( "Регистър на информацията. Цени на номенклатурата. Регистърна форма", параметър);
Край на процедурата
За да отворете формата за избор с избор в 1s 8.2(редовни форми), трябва да извършим някои действия. Ще го вземем първи. След това ще зададем селекцията и ще я отворим програмно, ето пример за код:
Избор във формуляра в полето за въвеждане 1C 8.2 с няколко стойности
В примера по-горе, който разгледахме как да зададете избор във формуляра за изборпо конкретна стойност. Сега нека да разгледаме ситуация, в която трябва да замените няколко стойности, това може да бъде например масив или разтоварени от резултат от заявка. Това е избор в полето за въвеждане 1cс множество значения.
Първо получаваме формуляра за избор, предаваме „Element“ (собственик) в параметрите, задаваме флага за режим на избор. След това създаваме списък със стойности и масив, отбелязваме, че като селекция, когато задаваме типа сравнение в списъка, обектът може да присъства само с типа ListValues. Добавяме елементи към масива, след което зареждаме този масив в списъка със стойности, който впоследствие задаваме в селекцията. Също така не забравяйте да активирате флага за използване на тази селекция и да зададете Тип сравнение.
Задаване на избор в полето за въвеждане на формуляра в 1C 8.3, събитие Начало на избора
Сега нека помислим избор в полето за въвеждане на управлявана форма в 1C 8.3. Нека намерим във формуляра елемента, който ни интересува, в който ще зададем селекцията, в нашия случай това е полето „Организация“. Намираме събитието „Начало на избора“, кликваме върху лупата и се озоваваме в процедурата. Виждаме параметъра Данни за избор; този параметър е от тип ValueList. За да ограничим избора до необходимите елементи, трябва да попълним Списък със стойности. Можем да избираме елементи само на сървъра, така че създаваме процедура с директивата за компилиране &OnServer. При тази процедура попълнете данните за избор.
Начало За начинаещи разработчици Учим се да програмирамеКак да отворите формуляр на съществуващ обект?
При отваряне на форма на съществуващ обект, освен името на формата, трябва да посочите и обекта, чиято форма да се отвори. За да направите това, използвайте параметъра Key form и връзка към обекта, който ни интересува.
Например, ако от формуляра за списък с организации трябва да отворите формата на организацията, върху която се намира курсорът, можете да направите това по следния начин:
Предаваме параметрите на формуляра под формата на структура, където името на структурния елемент съответства на името на параметъра на формата, а стойността е стойността, на която искаме да зададем параметъра на формата.
Ако искате да отворите не основната, а произволна форма на обект, създаден в конфигуратора, вместо стандартното име на основната форма (ObjectForm), посочете думата Form, последвана от точка - името на формуляра, създаден в конфигуратора.
Например:
ReferenceToDirectoryElement = Elements.List.CurrentRow; FormParameters = Нова структура ("Ключ", ReferenceToDirectoryElement); OpenForm("Directory.Organizations.Form.UniversalObjectForm",FormParameters);
Трябва да се отбележи, че в случай, че в допълнение към връзката към обект не е необходимо да се предават параметри на формата, която се отваря и е необходима основната форма на съществуващия обект, можете да използвате по-прост метод - отворете формуляра чрез процедурата OpenValue():
OpenValue(Items.List.CurrentRow);
Този метод е по-малко универсален, но в някои случаи спестява време и усилия. Например, в разглеждания случай, един такъв ред може да замени цялата процедура от три реда, която написахме по-рано.
Въпреки това трябва да се внимава, когато се използва тази процедура. В някои случаи това може да причини допълнителни извиквания към сървъра, например, когато трябва да отворите формуляр за елемент от йерархична директория. Когато използвате тази процедура, платформата ще направи допълнително извикване към сървъра, за да определи дали даден елемент е група или не, тъй като трябва да се отварят различни форми за елемента и за групата.
В същото време тази информация може да бъде известна предварително на разработчика в рамките на неговия алгоритъм и, използвайки функцията OpenForm(), разработчикът може да отвори желаната форма без допълнителни извиквания към сървъра, като незабавно посочи стандартното име на основния форма.