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

Програмното отваряне на формуляри в управлявано 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. Как да отворите формата за въвеждане на информационен регистър

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

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

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

  1. Въвеждаме ключовите данни за запис с необходимите стойности в структурата.
  2. Поставяме получената структура в масив.
  3. Създаваме ключ за запис от масива.
  4. Предаваме параметър на формата, която се отваря Ключс ключа за запис от стъпка 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(), разработчикът може да отвори желаната форма без допълнителни извиквания към сървъра, като незабавно посочи стандартното име на основния форма.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



Свързани публикации