Начало - Интернет настройка
Как програмно да попълня и отворя нов формуляр за документ? Как да отворите формуляр на съществуващ обект? 1s 8.3 отворете нов документ.
Добър ден на всички!
Мисля, че информацията в тази тема ще бъде много полезна за много посетители на този форум.
Дълго време не можех да разреша проблема - как да отворя формуляра на нов документ, така че да не се отваря празен, а вече частично попълнен програмно, докато самият документ все още не е записан в базата данни? Прекарах много време в търсене на решение на този проблем в Интернет, посетих много форуми, където беше повдигнат този проблем, но само няколко от тях попаднаха на решения. Най-простият от тях е първо да създадете програмно нов документ, програмно да попълните необходимите подробности, да запишете документа в базата данни и след това да го отворите за потребителя. Ами ако потребителят не иска да го запази? Ами ако промени решението си и затвори отворената форма? В този случай вече записаният документ ще остане в базата данни. И кой има нужда от допълнителни документи в базата данни?
И ако не запазите документа, тогава най-популярната опция е да използвате метода GetForm („Документи. Задължителен тип документ. Формуляр на документ“). Но в този случай можете да получите празен формуляр на документ и просто да го покажете с помощта на метода Open(). Това също не е вариант...
След известно време проблемът беше решен с помощта на функцията за глобален контекст „Попълнете стойностите на свойствата“.

Глобален контекст
FillPropertyValues
Синтаксис:
FillPropertyValues(<Приемник>, <Источник>, <Список свойств>, <Исключая свойства>)
Описание:
Копира стойностите на свойствата<Источника>към имоти<Приемника>. Съвпадението се извършва чрез имена на свойства.

Използвайки моята задача като пример, бих искал да обясня как можете да използвате тази функция, за да попълните формуляр за нов документ. Задачата беше следната: Има един документ (Работна поръчка), чийто реквизит на табличната част е друг документ (Предоставяне на услуги). Така че беше необходимо да се уверите, че когато нов документ „Предоставяне на услуги“ се добави към табличната част на „Работна поръчка“, формата на новия документ „Предоставяне на услуги“ се показва на екрана с подробностите вече попълнени, взети от работната поръчка, от която е предизвикано създаването. В същото време самият нов документ, в момента, в който формулярът му се появява на екрана, все още не е записан в базата данни. Това трябваше да се направи, ако потребителят изведнъж реши да не попълни документа и просто затвори формуляра.
Ето фрагмент от код с решение на проблема:

&На клиентската процедура EnterRecord()RecordForm = GetForm("Document.Provision of Medical Services.ObjectForm");

Fill inPropertyValues(RecordForm.Object,Object,"Date,Specialist,Specialization,Nurse,Execution Status",); // Попълнете стойностите на подробности, чиито имена са еднакви в двата документа TextStr = Elements.Reception.CurrentData; //Данни на текущия ред на изходния документProperty Structure = New Structure; // Структурата съдържа стойностите на онези подробности, които трябва да бъдат попълнени във формуляра на новия документ, но които не са в изходния документ StructureProperties.Insert("Work Order", Object.Link);
PropertyStructure.Insert("ReceptionTime",TexStr.ReceptionTime);

Попълнете PropertyValues(RecordForm.Object,PropertyStructure,"RecordOrder,AppointmentTime",);

EntryForm.Open(); Край на процедурата

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

Формуляр = 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( "Регистър на информацията. Цени на номенклатурата. Регистърна форма", параметър);
Край на процедурата

Начало За начинаещи разработчици Научете се да програмирате

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

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

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

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

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

Например:

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

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

OpenValue(Items.List.CurrentRow);

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

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

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



 


Прочетете:



Процес на рестартиране на браузъра Firefox

Процес на рестартиране на браузъра Firefox

Повечето проблеми с Firefox могат да бъдат коригирани, като следвате методите за отстраняване на неизправности, описани по-долу. Опитайте тези стъпки в ред. Ако някой не работи,...

Безплатно нулиране на нивото на мастилото в принтери Epson L100, L110, L210, L300, L350, L355, L550, L555, L800

Безплатно нулиране на нивото на мастилото в принтери Epson L100, L110, L210, L300, L350, L355, L550, L555, L800

Безплатно нулиране на нивото на мастилото за принтери Epson L110, L210, L300, L350, L355, L550, L555.

VK руската версия на моята страница

VK руската версия на моята страница

Инструкции за презареждане на контейнери с мастило и...

Форматиране на SD и microSD карти с памет: защо е необходимо и как да го направите

Форматиране на SD и microSD карти с памет: защо е необходимо и как да го направите

Социалната мрежа Vkontakte моята страница днес е един от най-популярните интернет ресурси в света, да не говорим за Русия и Украйна. тя...

feed-image RSS