Отваряне на формуляри програмно в обикновено приложение 1s. Как да отворя формата на съществуващ обект? Как да отворите формуляра за вписване в информационен регистър

Програмното отваряне на формуляри в управлявано 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

У дома За начинаещи разработчици Да се ​​научим да програмирате

Как да отворя формата на съществуващ обект?

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

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

Предаваме параметрите на формата като структура, където името на елемента на структурата съответства на името на параметъра на формата, а стойността е стойността, на която искаме да зададем параметъра на формата.

Ако искате да отворите не основната, а произволна форма на обекта, създаден в конфигуратора, вместо стандартното име на основната форма (FormObject), се посочва думата Form, последвана от точка - името на формата създадено в конфигуратора.

Например:

LinkToDirectoryItem = Elements.List.CurrentLine; FormParameters = Нова структура("Ключ", LinkToDirectoryItem); OpenForm("Directory.Organizations.Form.UniversalObjectForm",FormParameters);

Трябва да се отбележи, че в случай, когато освен препратка към обект не е необходимо да се предават параметри към отваряемата форма и е необходима основната форма на съществуващия обект, можете да използвате по-опростен метод - отворете формуляра, като използвате процедурата OpenValue():

OpenValue(Items.List.CurrentRow);

Този метод има по-малко гъвкавост, но в някои случаи спестява време и усилия. Например в разглеждания случай един такъв ред може да замени цялата триредова процедура, която написахме по-рано.

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

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

S-P ни казва следното:

Глобален контекст GetForm (Глобален контекст.GetForm)
Глобален контекст
GetForm (GetForm)
Синтаксис:

GetForm(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>)
Параметри:

<ИмяФормы>(задължително)

Тип: .
Името на формуляра. Формиран като пълния път до обекта с метаданни Form (например „Directory.Accounts.Form.ObjectForm“, „CommonForm.FileSaveForm“) или като пълен път до обекта на приложението, попълнен с името на формуляра по подразбиране (за например "Директория.Продукти.Формуляр за избор" ).
Имена на формуляри по подразбиране:

  • FormObject (ObjectForm) - формата на обекта по подразбиране;
  • FormGroup (FolderForm) - формата на групата по подразбиране;
  • RecordForm - формата за запис по подразбиране на регистъра;
  • Form List (ListForm) - формата на списъка по подразбиране;
  • ChoiceForm - форма за избор по подразбиране;
  • Форма за избор на група (FolderChoiceForm) - форма за избор на група по подразбиране;
  • Формулярни константи (ConstantsForm) - формата по подразбиране на константи за нормален режим, зададена като форма на константи за конфигурацията;
  • Форма (Форма) - формата на константата, отчета и обработката по подразбиране;
  • GeneralForm (CommonForm) - обща форма;
  • SettingsForm - формуляр за настройки на отчет по подразбиране;
  • Form Loading (LoadForm) - формуляр за зареждане на настройките;
  • SaveForm - формуляр за запис на настройки;
  • VariantForm - формуляр за редактиране на вариант на отчет;
  • SearchForm (SearchForm) - форма за пълнотекстово търсене в данните.
Например, за да получите общата форма "GeneralSettings", трябва да напишете следния код в модула:
Form = GetForm("GeneralForm.GeneralSettings");

За външни отчети и обработка името на формуляра се дава, както следва:

  • Външен отчет.<имя отчета>.Форма.<имя формы>;
  • Външен отчет.<имя отчета>.<имя стандартной формы>;
  • Външна обработка.<имя обработки>.Форма.<имя формы>;
  • Външна обработка.<имя обработки>.<имя стандартной формы>.
В този случай външен отчет или обработка трябва да бъдат предварително регистрирани в системата.
<Параметры>(по избор)

Тип: .
Опции за формуляри. Структурният ключ е името на параметъра, а стойността е стойността на параметъра на формата. Името на елемента трябва да съвпада с името на параметъра на структурата.
P = Нова структура("Ключ", Доставчик);
Form = GetForm("Директория.Counterparties.ObjectForm", P);
Form.Open();
<Владелец>(по избор)

Собственикът на формуляр е формуляр или контрола върху друг формуляр.
<Уникальность>(по избор)

Тип: Персонализиран.
Този параметър може да съдържа някакъв ключ, чиято стойност ще се използва за търсене на вече отворени формуляри. Ако бъде намерен формуляр със същия уникален ключ, намереният формуляр ще бъде активиран, вместо да се отваря нов формуляр.
- търсене на формуляр с ключ за уникалност по подразбиране, - изобщо не търсете формуляр, всяка друга стойност задава ключа за уникалност, чрез който ще се извърши търсенето.
Стойност по подразбиране: .
<Окно>(по избор)

Тип: ; .
Прозорецът на приложението, в който ще се отвори формуляра.
Приложимо само за управляван формуляр. Прозорецът може да бъде само главният прозорец на приложението или прозорецът на спомагателния формуляр.
Ако е посочен тип, прозорецът на формуляра ще бъде създаден според избраната опция.
<НавигационнаяСсылка>(по избор)

Тип: ; .
Ако съдържа стойност, различна от , тогава тази стойност се присвоява на свойството на формуляра в резултат на това извикване на метод и свойството на тази форма е зададено на .
Стойност по подразбиране: .
Връщана стойност:

Тип: ; ; .
- ако манипулаторът е настроен да отказва създаването на формуляр.
Описание:

Получава формуляр или управляван формуляр. Преди получаване се извършва търсене на вече отворена същата форма.
Търсенето се извършва по типа на формуляра, стойностите на ключовите параметри на формуляра, собственика на формуляра, ключа за уникалност на потребителя.
Ако в параметъра<Уникальность>стойност се предава, тогава търсенето на вече отворени формуляри не се извършва.
Наличност:

Тънък клиент, уеб клиент, дебел клиент, мобилно приложение (клиент).
Забележка:

В тънкия клиент и уеб клиента получава само управляваната форма.
Обичайните форми на външна обработка не се поддържат.
Ако при получаване на нормална форма в параметъра<ИмяФормы>е посочено нестандартно име на формуляр, предадените параметри не се обработват.
Може да има множество извиквания към сървъра по време на изпълнение. Някои от тях са кеширани. Винаги има поне едно извикване към сървъра и то не се кешира. Кеширането зависи от версията на платформата и версията на конфигурацията като цяло. Ако скоростта на връзката е настроена на ниска и не е посочен текущ ред, тогава формата за избор се кешира. Изчистването на кеша се извършва на интервали от 20 минути. Формулярите, които не са били използвани през този период от време, се изтриват.
Вижте също:

За да отворете формуляр за избор с избор за 1s 8.2(редовни форми), трябва да извършим някои действия. Ще го вземем първи. След това ще зададем селекцията и ще я отворим програмно, ето примерен код:

Избор във формуляра в полето за въвеждане 1C 8.2 с няколко стойности

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

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

Задаване на избор в полето за въвеждане на формуляра в 1C 8.3, събитието StartChoice

Сега помислете избор в полето за въвеждане на управляван формуляр в 1C 8.3. Нека намерим на формуляра интересния за нас елемент, в който ще зададем селекцията, в нашия случай това е полето "Организация". Намираме събитието "StartChoice", щракваме върху лупата и се озоваваме в процедурата. Виждаме параметъра ChoiceData, този параметър е от типа ValueList. За да ограничим избора до необходимите елементи, трябва да попълним Списъка със стойности. Можем да избираме елементи само на сървъра, така че създаваме процедура с компилационната директива &AtServer. В тази процедура попълваме данните за избор.