Параметри форми 1С 8.2. Параметри форми. Стандартні параметри форми

19.11.2019 Новини

Для того, щоб підтримувати автоматичну взаємодію між формами, система надає ряд стандартних параметрів, які використовуються для управління формами під час їх відкриття. За допомогою цих параметрів системою реалізується в полях форм вибір із форм вибору, відкриття форм об'єктів, робота стандартних команд тощо. Тобто вони забезпечують різні закладені в систему сценарії роботи інтерфейсу. Але розробник також може використовувати ці параметри у вбудованій мові, передаючи їх під час виклику методу Відкрити Форму ().

Перерахуємо параметри, що надаються системою, та їх призначення:

  • РежимВибору– форма відкривається у режимі вибору. Надається розширенням керованої форми динамічного списку.
  • ПоточнийРядок– рядок, який активізуватиметься у списку під час відкриття. Передається значення, що ідентифікує рядок. Надається розширенням керованої форми динамічного списку.
  • Вибір ГрупІЕлементів– за даним параметром встановлюється властивість Вибір Групи Елементів таблиці основного реквізиту форми. Надається розширенням керованої форми динамічного списку.
  • ДозволитиВибірКорня- Визначає можливість вибору кореня у формі з динамічним списком, що відображається у вигляді дерева. Надається розширенням керованої форми динамічного списку, що відображається у вигляді дерева.
  • Відбір– вибір, що встановлюється в динамічному списку. Являє собою структуру. Імена елементів відповідають іменам полів, якими проводиться відбір, а значення містять значення відбору. Надається розширенням керованої форми динамічного списку.
  • Ключ- Значення, що ідентифікує об'єкт, редагований у формі. У разі відсутності чи неправильного значення створюється новий об'єктіз застосуванням інших параметрів. Надається розширеннями форм об'єктів та менеджера запису регістру відомостей.
  • ЗначенняКопіювання– значення, що ідентифікує об'єкт, який буде використаний для копіювання під час створення нового об'єкта. Надається розширеннями форм об'єктів та менеджера запису регістру відомостей.
  • ЗначенняЗаповнення– значення заповнення реквізитів нового об'єкта. Являє собою структуру. Імена елементів відповідають іменам реквізитів, а значення містять дані, якими заповнюватимуться зазначені реквізити. Надається розширеннями форм об'єктів та менеджера запису регістру відомостей.
  • підстава- значення, що ідентифікує об'єкт, який буде використаний як основа при створенні нового об'єкта введенням на підставі. Надається розширення форм об'єктів.
  • Це група- Визначає вигляд нового об'єкта: група або елемент. Надається розширення форм об'єктів.

Приклад роботи з параметрами форми

Для демонстрації роботи параметрів форми розглянемо реалізацію вибору елемента у полі введення. Сутью прикладу буде реалізація механізму вибору елемента зі списку вбудованою мовою.

На момент початку роботи з прикладом необхідно мати конфігурацію, що має такі властивості:

  • Основний режим запуску - Керований додаток;
  • є довідник Товари з ієрархією груп та елементів;
  • є довідник Аналоги з реквізитом ОбранийТовар типу ДовідникПосилання.Товари;
  • обидва довідники мають керовані форми елементів.

Тепер реалізуємо у цій конфігурації всі механізми, які використовує платформа для вибору елемента зі списку вбудованою мовою. У цьому ми побачимо, як відбувається використання стандартних параметрів форми; як їх використовує сама система; як їх може використати розробник.

Додамо додатковий прапор, який керуватиме закриттям форми вибору після вибору елемента. Назвемо цей прапор ЗакриватиПісляВибору (тип Бульово). Додамо його параметром форми Форма Вибору довідника Товари.

Для того щоб відкрити форму вибору елемента, необхідно у формі елемента довідника Аналоги створити обробник події ПочатокВибору елемента форми

&На Клієнті

Процедура ВибранийТоварПочатокВибору(Елемент, СтандартнаОбробка)

Стандартна Обробка = Брехня;

ПараметриВибору = Новий Структура; ПараметриВибору.Вставити(«РежимВибору», Істина); ПараметриВибора.Вставить(«ВибірГрупІЭлементов», ВикористанняГрупІЭлементов.Элементи); ПараметрыВибора.Вставить(«ДозволитиВиборКорня», Брехня); ПараметриВибора.Вставить(«ПоточнаРядок», Об'єкт.ВибранийТовар); ПараметриВибора.Вставить(«ЗакриватиПісляВибору», Брехня); ВідкритиФорму(«Довідник.Товари.ФормаВибору», ПараметриВибору, Елементи.ВибранийТовар);

КінецьПроцедури

Слід окремо зупинитись на третьому параметрі методу ВідкритиФорму(). Цей параметр визначає, хто буде власником форми вибору і кому надходитиме сповіщення про зроблений вибір. У разі ми вказали власником форми вибору сам елемент форми, але ми можемо вказати цим параметром і саму форму. У цьому випадку необхідно буде реалізовувати обробник Обробка Вибору модуля форми і в ньому вирішувати, в якій реквізит форми розміщувати вибрані дані.

Ця стаття описує, як штатними засобамипередати як параметр значення при відкритті керованої форми 8.2 у порівнянні з тим, як аналогічну операцію виходило реалізувати у звичайних формах.

Як передаються параметри у звичайних формах

У звичайних формах передачі параметра було 2 можливості:
1) менш поширений спосіб: у формі об'єкта на вкладці «Реквізити» додавався реквізит, за необхідності визначався доступ візуальними засобами
2) найпоширеніший спосіб: у модулі форми оголошувалась експортна змінна і в обробнику «ПередВідкриттям» значення оброблялося

в обох випадках виклик форми виглядав приблизно так:

Форма = Об'єкт.ОтриматиФорму("ФормаВибору",ВласникФорми, КлючУнікальності);
Форма.Параметр = ЗначенняПараметра;
Форма.Відкрити();

Як передаються параметри в керованих формах

У керованих формах тепер можна відразу передавати параметри при отриманні форми. Параметри передаються як структури:

Параметри = Новий Структура("ПоточнеЗначення",ОстаннійЕлемент);
ФормаВибору = ОтриматиФорму("Довідник.Номенклатура.ФормаВибору",Параметри);
ЗнайденийЕлемент = ФормаВибору.ОткрытьМодально();

Також у керованої форми виникли «розширення форми» (об'єкт, довідник, документ, звіт). Залежно від типу об'єкта визначається склад доступних параметрів. Наприклад, якщо у формі вибору довідника потрібно позиціонуватись на певному елементі, то використовується параметр «ПоточнеЗначення». Великим плюсом є те, що в самій формі не потрібно писати обробників для зумовлених параметрів, що скорочує кількість коду.

Також у розробника з'явилася можливість визначати свої параметри (у конструкторі керованої форми вкладка "Параметри"). Час життя властивостей обмежено обробником ПриСтворенніНа Сервері, що логічно т.к. параметри потрібні лише при створенні форми, але якщо цей параметр визначає унікальність форми (встановлений прапор «ключовий параметр» у властивостях параметра) він буде доступний і в інших обробниках.

Для передачі специфічного параметра маніпуляцій потрібно зробити трохи більше:

1) Визначити у керованій формі параметр.
У обробнику ПриСтворенніНаСервері визначити обробку даного параметра (звернення до переданих параметрів через властивість «Параметри», що має тип ДаніФормиСтруктура)
2)Описати отримання форми та передати значення нового параметра у параметрах функції ОтриматиФорму.
Таким чином код матиме вигляд:
- у місці набуття форми

Параметри = Новий Структура("НовийПараметр",ОстаннійЕлемент);
ФормаВибору = ОтриматиФорму("Довідник.Номенклатура.ФормаВибору",Параметри);

У модулі керованої форми

&На сервері
Процедура при створенні на сервері (відмова, стандартна обробка)
Якщо Параметри.Властивість("НовийПараметр") Тоді
// тут код обробки параметра
КінецьЯкщо;
КінецьПроцедури

Висновок

Можливо дана стаття комусь стане в нагоді, з економить час і вбереже від зайвого коду. Для більш детальної інформації про повному спискупараметрів керованої форми рекомендується переглянути довідку «Інтерфейс керований \ Керована форма».

[необхідно зареєструватися для перегляду посилання]

У нас є обробка з ось такою основною формою:

З цієї форми нам потрібно відкрити деяку додаткову форму, при цьому текст з поля форми повинен передаватися у форму. Додаткова форма має такий вигляд:

Таким чином, при натисканні на кнопку "Виконати відкривається додаткова формаз уже введеним текстом у полі:

Розглянемо спосіб розв'язання такого завдання.

Рішення

Для передачі параметрів між звичайними формами можна або скористатися глобальною експортною змінною модулем форми, або створити реквізит форми. Розглянемо обидва способи в рамках нашого завдання.

1. Використання глобальної експортної змінної модуля форми.

В основну форму для процедури-оброблювача кнопки "Виконати" додамо наступний програмний код:

Процедура КнопкаВиконатиНатискання(Кнопка) Форма = ОтриматиФорму(" Додаткова форма" ) ; // "Текст" - це глобальна експортна змінна модуля форми, що відкриваєтьсяФорма. Текст = ЕлементиФорми. Текст. значення; Форма. Відкрити() ; КінецьПроцедури

Змінна текст додана в модуль форми, що відкривається разом з обробником події "ПередВідкриттям":

Перем Текст Експорт; // Змінна, в яку передається значення з іншої формиПроцедура ПередВідкриттям (Відмова, Стандартна Обробка) ЕлементиФорми. Переданий текст. Значення = Текст; КінецьПроцедури

Завдання вирішене, причому досить просто!

2. Використання реквізиту форми.

Для другого способу нам навіть не потрібно переписувати обробники кнопки "Виконати" та "Перед Відкриттям". Все, що необхідно - це додати у форму реквізит "Текст" з типом рядок.

Висновки

У керованих формах передавати параметри набагато простіше. У звичайних формах найчастіше використовується описаний підхід.

Обробку з прикладом із статті Ви можете завантажити за посиланням.

Друк (Ctrl+P)

Параметри форми

1. Загальна інформація

Параметри форми (закладка Параметри) служать двом цілям:
● Описати набір даних, які впливатимуть на відкриття форми (параметризація форми). Для цього потрібно перерахувати всі необхідні параметри та вказати їх типи.
● Визначити параметри, які впливатимуть на ключ унікальності форми. Для цього необхідно встановити властивість Ключовий параметру тих параметрів, які мають брати участь у формуванні ключа унікальності форми. При спробі відкрити форму система здійснює пошук існуючої форми за допомогою сформованого ключа унікальності форми. Якщо у системі існує форма з отриманим ключем
унікальності, повертається саме ця форма; якщо ні – створюється нова форма.
При викликі форми параметрів, створених розробником, можна вказувати в структурі параметрів поряд із системними параметрами форм (якщо такі є).
Параметри форми можна передати у форму на момент її створення. Аналіз переданих параметрів можна виконати у події ПриСтворенніНаСервері() (Колекція Параметри є властивістю об'єкта КерованаФорма):

// У місці виклику.
// Формуємо параметр форми.
Параметри = Нова структура ();
Параметри.Вставити("Важливість", ЗумовленеЗначення("Перерахування.Важливість.Важливо"));
// Відкриваємо форму із зазначенням параметрів.
ВідкритиФорму (“ЗагальнаФорма.ФормаПерегляду”, Параметри);

// У модулі форми.
&На сервері
Процедура При створенні на сервері (Відмова, Стандартна Обробка)
Якщо Параметри.Важливість = Перерахування.Важливість.Важнопро Тоді

КінецьЯкщо;
КінецьПроцедури

УВАГА! Після виклику оброблювача події При створенні на серверівсі неключові параметри форми видаляються з колекції Параметри.
Порада. Неключові параметри форми, необхідні для подальшої роботипотрібно зберігати в даних форми.

2. Стандартні параметри форми

Для того, щоб підтримувати автоматичну взаємодію між формами, система надає ряд стандартних параметрів, які використовуються для управління формами під час їх відкриття. За допомогою цих параметрів системою реалізується в полях форм вибір із форм вибору, відкриття форм об'єктів, робота стандартних команд тощо. Тобто вони забезпечують різні закладені в систему сценарії роботи інтерфейсу.
Але розробник також може використовувати ці параметри у вбудованій мові, передаючи їх під час виклику методу Відкрити Форму ().
Перелік стандартних параметрів форм залежно від виду розширення форми можна переглянути в розділах Вбудована мова – Інтерфейс
(Керований) – Керована форма – Розширення… вбудованоїдовідки.

3. Приклад роботи з параметрами форми

Для демонстрації роботи параметрів форми розглянемо реалізацію вибору елемента у полі введення. Сутью прикладу буде реалізація механізму вибору елемента зі списку вбудованою мовою.
На момент початку роботи з прикладом необхідно мати конфігурацію, що має такі властивості:
● є довідник Товари з ієрархією груп та елементів;
● є довідник Аналоги з реквізитом ВибранийТовар типу ДовідникПосилання.Товари;
● обидва довідники мають форми елементів.
Тепер реалізуємо у цій конфігурації всі механізми, які використовує платформа для вибору елемента зі списку вбудованою мовою. При цьому ми побачимо:
● як відбувається використання стандартних параметрів форми;
● як їх використовує сама система;
● як їх може використовувати розробник.
Додамо додатковий параметр, який керуватиме закриттям форми вибору після вибору елемента. Назвемо цей параметр ЗакриватиПісляВибору(Тип Булеве). Додамо його як параметр форми Форма Вибору довідника Товари.
Для того щоб відкрити форму вибору елемента, необхідно у формі елемента довідника Аналоги створити обробник події ПочатокВибору елемента форми ВибранийТовар .

&На Клієнті
Процедура ВибранийТоварПочатокВибору(Елемент, СтандартнаОбробка)
СтандартнаОбробка= Брехня;
ПараметриВибору= Новий Структура;
ПараметриВибору.Вставити("РежимВибору", Істина);
ПараметриВибору.Вставити(“Вибір ГрупІЕлементів”, Використання Груп ІЕлементів.);
ПараметриВибору.Вставити(“Дозволити ВибірКорня”, Брехня);
ПараметриВибору.Вставити(“ПоточнийРядок”, Об'єкт.ВибранийТовар);
ПараметриВибору.Вставити(“ЗакриватиПісляВибору”, Брехня);
ВідкритиФорму("Довідник.Товари.ФормаВибору", ПараметриВибору, Елементи.ВибранийТовар);
КінецьПроцедури
Слід окремо зупинитися на третьому параметрі методу Відкрити Форму (). Цей параметр визначає, хто буде власником форми вибору і кому надходитиме сповіщення про зроблений вибір. У разі ми вказали власником форми вибору сам елемент форми, але ми можемо вказати цим параметром і саму форму. В цьому випадку необхідно буде реалізовувати обробник ОбробкаВиборумодуля форми і в ньому вирішувати, в якому реквізит форми розміщувати вибрані дані.
ПРИМІТКА. Якщо не будемо реалізовувати обробник події ПочатокВибору , його дії виконає сама система. Це справедливо і для подальших обробників, які використані в прикладі.
Тепер необхідно опрацювати передані параметри у формі вибору. Зробимо це в обробнику При створенні на сервері() Модуль форми вибору.

&На сервері
Процедура При створенні на сервері (відмова, стандартна обробка)
СтандартнаОбробка= Брехня;
Елементи.Список.ВибірГрупІЭлементов = Параметри.ВибірГрупІЭлементов;
Елементи.Список.ДозволитиВибірКорня = Параметри.ДозволитиВибірКорня;
Елементи.Список.ПоточнийРядок = Параметри.ПоточнийРядок;
ЗакриватиПриВиборі = Параметри.ЗакриватиПісляВибору;
КінецьПроцедури
Щоб перевірити працездатність встановлених нами параметрів форми, встановимо, за допомогою конфігуратора, у таблиці форми вибору Список властивість Вибір ГрупІЕлементіву значення Групи (без застосування параметра не буде доступним вибір елементів довідника).
ПРИМІТКА. Якщо у таблиці Список , що відображає список товарів, властивість РежимВибору не буде встановлено значення Істина , то вибір товарів буде недоступний.
Тепер нам необхідно опрацювати вибір бажаного елемента у формі вибору. Для цього потрібно визначити обробник події Вибір Значення таблиці форми.

&На Клієнті
Процедура СписокВибірЗначення(Елемент, СтандартнаОбробка, Значення)
СтандартнаОбробка= Брехня;
СповіститиОвиборі(Значення);
КінецьПроцедури
Нам залишилося реалізувати обробку вибору елемента у полі введення. Для цього необхідно опрацювати подію ОбробкаВиборунашого поля введення ВибранийТовар.

&На Клієнті
Процедура ОбранийТоварОбробкаВибору(Елемент, ОбранеЗначення, СтандартнаОбробка)
СтандартнаОбробка= Брехня;
Об'єкт.ВибранийТовар = ОбранеЗначення;
КінецьПроцедури
Ми самостійно реалізували системний механізм вибору значення у полі введення на формі.
УВАГА! Цей прикладне є закінченим. Його єдиним призначенням є демонстрація механізмів роботи з параметрами форми.
Якщо під час створення параметрів (обробник ОбранийТоварПочатокВибору()) замінити рядок:

ПараметриВибору.Вставити(“ЗакриватиПісляВибору”, Істина);
на рядок:
ПараметриВибору.Вставити(“ЗакриватиПісляВибору”, Брехня);
то форма вибору перестане закриватися після того, як буде здійснено вибір. Це можна використати, наприклад, для реалізації форми підбору (вибір кількох товарів без закриття форми вибору).

Програмне відкриття форм у керованому додатку 1С значно відрізняється від їх відкриття звичайному додатку. Розглянемо спершу старий метод. Він полягає в отриманні форми та її подальшому відкритті у звичайному або модальному режимі (при відкритті в модальному режимі форма блокує роботу програми).

ОтриматиФорму() . Відкрити()

Це найповільніший метод відкриття форм. Проте він дозволяє програмно обробити форму перед відкриттям. Для обробки код потрібно трохи змінити:

Форма = Отримати Форму ( "Документ.НадходженняТоварівПослуг.ФормаДокумента") ;
//Тут виконуємо дії з формою
Форма. Відкрити() ;

Треба враховувати, що при отриманні форми виконуватиметься ще процедура події При створенні на сервері.

Розглянемо інші методи, які дозволяють відкривати форми в керованому додатку 1С швидше та зручніше. Залежно від конкретної ситуації можна використовувати різні методи.

1. Як відкрити форму об'єкта в керованому додатку, якщо є посилання на нього.

У цьому випадку все дуже просто.

Посилання = Довідники. Номенклатура. ЗнайтиПоКоду("000000001");
ВідкритиЗначення(Посилання) ;

2. Як відкрити форму вибору та отримати потім обране значення.

Для цього існує функція ВвестиЗначення().У функції 3 параметри:

  • Змінна, до якої буде записано обране значення;
  • Підказка, яка відображатиметься у вікні вибору;
  • Опис типів обраних значень. Можливо кілька типів, тоді перед вибором конкретного значення буде запропоновано вибрати тип.

В результаті виконання функції відкриється форма вибору за умовчанням об'єкта зазначеного типу.

Перем Значення;
Масив = новий масив;
Масив. Додати(Тип( "ДовідникПосилання.Номенклатура") ) ;
Масив. Додати(Тип( "ДовідникПосилання.Контрагенти") ) ;

Опис Типів = новий Опис Типів (Масив) ;

Рез = ВвестиЗначення (Значення, "Підказка", Опис Типів);

Попередні способи дозволяли відкривати лише форми, встановлені для стандартних об'єктів (форму об'єкта або форму вибору). Якщо потрібно відкрити довільну форму, то можна скористатися функцією ВідкритиФорму().

Ця функція має багато параметрів. Розглянемо деякі з них:

  • Ім'я форми- Тут можна вибрати або одну із стандартних форм об'єкта, наприклад, Форма Виборуабо ФормаСписку. Або конкретну, створену розробниками форму.
  • Параметри- дозволяє передати у форму у вигляді структуридеякі параметри перед її відкриттям, тим самим визначивши дані, що виводяться. Параметри можуть являти собою будь-які дані, які можна передавати з клієнта на сервер. Передані при відкритті форми параметри можна обробити у процедурі ПриСтворенніНаСервері()у форми, що відкривається.
  • Режим відкриття форми- має 3 варіанти: незалежний, блокувати весь інтерфейс, блокувати форму власника.

Розглянемо, як застосовується функція ВідкритиФорму()у різних ситуаціях.

3. Як відкрити форму існуючого об'єкту

Кожна форма має один ключовий реквізит. Він виділений жирним у списку реквізитів форми і зазвичай називається Об'єкту форм елементів довідників, документів. В інших об'єктів назва може бути іншою. Для відкриття форми існуючого об'єкта потрібно передати у форму, що відкривається, параметр Ключзі значенням як посилання на об'єкт.

&На Клієнті
Процедура Команда1 (Команда)
Параметр = новий структура;
Параметр. Вставити("Ключ", ЗнайтиС());
ВідкритиФорму(, Параметр) ;
КінецьПроцедури

&На сервері
Функція ЗнайтиС();
Повернення Довідники. Контрагенти. ЗнайтиПо Реквізиту ("ІПН", "745107734623")
КінецьФункції

4. Як відкрити форму нового об'єкту

Тут підійде просто функція ВідкритиФорму()без жодних параметрів.

&На Клієнті
Процедура Команда1 (Команда)
ВідкритиФорму( "Довідник.Контрагенти.ФормаОб'єкта") ;
КінецьПроцедури

5. Як відкрити форму нового об'єкта та заповнити її на підставі чогось

Потрібно передати параметр підстава, значенням якого буде посилання на об'єкт-основу заповнення. При цьому буде запущено процедуру Обробка Заповнення ().

&На Клієнті
Процедура Команда1 (Команда)
Параметр = новий структура;
Параметр. Вставити("Підстава" , ПосиланняНа РахунокПокупцю) ;
ВідкритиФорму( "Документ.РеалізаціяТоварівПослуг.ФормаОб'єкта", Параметр);
КінецьПроцедури

У цьому прикладі буде створено документ Реалізація товарів та послугта заповнений на підставі рахунку на оплату покупцю, посилання на який було передано.

6. Як відкрити форму та задати на ній відбір

Відбір на формах 1С може бути простим та складним. Простий відбір передбачає вирази типу Організація = ТОВ «Роги та копита».Складний відбір передбачає інші типи порівняння, наприклад, У списку. У цій статті розглянемо організацію простого відбору, а складному буде присвячено окрему статтю.

Щоб організувати простий відбір, потрібно передати у форму, що відкривається, параметр з ключем Відбір, значенням буде структура, в якій ключ - ім'я поля динамічного списку, а значення - дані, що шукаються.

Наприклад, відкриємо форму списку довідника Номери ВМДі зробимо там відбір за власником - елементом довідника Номенклатура.

&На Клієнті
Процедура Команда1 (Команда)
Параметр = новий структура;

Відбір = новий Структура;
Відбір. Вставити("Власник" , ПосиланняНаНоменклатуру) ;

Параметр. Вставити("Відбір", Відбір);

ВідкритиФорму( "Довідник.НомераГТД.ФормаСписку", Параметр);
КінецьПроцедури

7. Як відкрити форму запису регістру відомостей

Для цього знадобиться ключ запису регістру відомостей.

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

Алгоритм відкриття наступний:

  1. Заносимо в структуру дані ключа запису з потрібними значеннями.
  2. Поміщаємо отриману структуру масив.
  3. З масиву створюємо ключ запису.
  4. Передаємо у форму, що відкривається, параметр Ключз ключем запису з п.3 як значення.

&На Клієнті
Процедура Команда1 (Команда)
Параметр = новий структура;

ПараметриКлюча = новий Структура;
ПараметриКлюча. Вставити("Номенклатура" , ПосиланняНаНоменклатуру) ;
ПараметриКлюча. Вставити("ТипЦени" , ПосиланняНаТипЦен) ;
ПараметриКлюча. Вставити("Період", Дата);

МасивКлюча = Новий Масив;
МасивКлюча. Додати(ПараметриКлючу) ;

КлючЗаписи = Новий( "РегістрВідомостейКлючЗаписи.ЦіниНоменклатури", МасивКлюча);

Параметр. Вставити("Ключ" , КлючЗаписи) ;

ВідкритиФорму( "РеєстрВідомостей.ЦіниНоменклатури.ФормаЗаписи", Параметр);
КінецьПроцедури