Як у 1с відкрити форму програмно
У статті буде розказано про те, як у 1с відкрити форму програмно. Все описане нижче стосується лише керованого додатка. Докладно розглянемо метод глобального контексту ВідкритиФорму.
Також можете ознайомитися з більш простими, але менш гнучкими способами відкрити форму посилання: Як в 1с відкрити посилання.
Метод ВідкритиФорму на ім'я
Найгнуткіший і налаштований спосіб програмного відкриття форми в 1с 8. Докладно розглянемо його параметри, а також розберемо кілька прикладів його використання.
Слід зазначити, що метод ВідкритиФорму є клієнтським. Тобто його можна використовувати або у загальних модулях із встановленим прапором Клієнт, або у процедурах (функціях) форм з директивою &На Клієнті.
Розглянемо параметри методу та наведемо необхідні приклади.
Ім'яФорми
Містить повний шлях до форми. Можна вказати як шлях до форми за замовчуванням, так і шлях до довільної форми об'єкта метаданих. Ім'я форми вказується у двох форматах:
- ТипОб'єкта. Назва типу об'єкта метаданих, наприклад: Довідник, Документ, РеєстрВідомостей і т. д.;
- Ім'яОб'єкта. Найменування об'єкта метаданих. Наприклад для довідника: Користувачі, Номенклатура;
- Ім'яФормиЗа замовчуванням. Стандартне ім'я форми, набір за промовчанням іменується для різних об'єктів метаданих. Наприклад для документа: Форма Вибору, ФормаОб'єкта, ФормаСписку. Повний набір імен за замовчуванням можна знайти у синтаксис помічнику, в описі методу ВідкритиФорму;
- Ім'яФорми. Довільне ім'я форми, задане під час її створення. Наприклад у довідника Користувачі, форма Зміна Пошти.
приклад 1.Шлях до форми вибору за промовчанням, довідника Номенклатура.
"Довідник.Номенклатура.ФормаВибору"
Приклад 2. Шлях до форми Зміна Пошти довідника Користувачі, на її ім'я.
"Довідник.Користувачі.Форма.ЗмінаПошти"
Параметри
Містить Структуру параметрів, які передаються у форму. Для кожного типу форми існує набір стандартних параметрів, які не потрібно додатково обробляти в самій формі. Також набір параметрів може бути різним і для об'єктів метаданих. Наприклад, параметр Ключдля форм об'єктів. У нього можна передати посилання на об'єкт, що відкривається (якщо його не передати, буде відкрита форма нового об'єкта).
Докладніше прочитати опис всіх можливих стандартних параметрів можна в синтаксис помічнику, у гілці Інтерфейс (керований) ->
Форма клієнтської програми (у старих версіях платформи Керована форма). Далі у гілках Розширення об'єктів, Розширення довідника і т.д. д., можна знайти Параметри форми. Там дається повний перелік можливих стандартних параметрів із описами.
Також у структуру можна передавати довільні параметри, які можна обробляти програмно, у формі, що відкривається. Наприклад в обробнику події При створенні на сервері.
Розглянемо приклади відкриття різних форм із використанням параметрів.
Приклад 3. Відкрити форму об'єкта довідника Користувачі, використовуючи посилання на об'єкт.
ПараметриФорми = Новий Структура; ПараметриФорми.Вставити("Ключ", Посилання); ВідкритиФорму("Довідник.Користувачі.ФормаОб'єкта", ПараметриФорми);
Приклад 4. Відкрити форму списку довідника Номенклатура з відбором за реквізитом Вид Номенклатури та за списком батьків.
Відбір = Новий Структура; Отбор.Вставить("ВидНоменклатури", ВидНоменклатури); Отбор.Вставить( " Батько " , Список Батьків); ПараметриФорми = Новий Структура; ПараметриФорми.Вставити("Відбір", Відбір); ВідкритиФорму("Довідник.Номенклатура.ФормаСписку", ПараметриФорми);
Тут Відбір — це стандартний параметр для форм, які використовують як основний реквізит Динамічний список. Наприклад, це форми списку та вибору. Він являє собою Структуру, куди можна додати значення елементів відбору. Ключ - ім'я реквізиту, Значення - значення відбору.
У такий спосіб можна відібрати значення, використовуючи вигляд порівняння Рівно або У списку. Для відбору У списку слід додати до структури Масив, Фіксований Масив, або СписокЗначень. Слід зауважити, що відбір Вієрархії встановити цим способом не вийде.
Власник
У цей параметр передається елемент форми або форма клієнтської програми (керована форма) повністю. Використовується для вказівки підпорядкування форми, що відкривається.
Це може знадобитися для багатьох цілей, наприклад:
- Аналізу власника та виконання певних дій у формі, що відкривається;
- Коректної роботи події ОбробкаЗаписуНового, у формі власника;
- Самостійної реалізації вибору полі форми.
Приклад 5. Реалізувати програмний вибір елемента Номенклатура, у полі введення.
&НаКлієнті Процедура НоменклатураПочатокВибору(Елемент, ДаніВибору, СтандартнаОбробка) СтандартнаОбробка = Брехня; ПараметриФорми = Новий Структура; ПараметриФорми.Вставити("ПоточнаРядок", Номенклатура); ВідкритиФорму("Довідник.Номенклатура.ФормаВибору", ПараметриФорми, Елемент); КінецьПроцедури
В даному випадку необхідно:
- Створити обробник події ПочатокВиборудля поля введення;
- Скасувати стандартну обробку вибору;
- У параметр Власник передати елемент форми (поле).
Параметр ПоточнийРядок дозволяє виділяти раніше вибраний елемент у формі вибору. Варто замінити, що у звичайній ситуації такий метод вибору значень не застосовується. Його застосовують лише тоді, коли немає можливості настроїти форму вибору під умови завдання.
Унікальність
У параметрі можна встановити ключ унікальності форми довільного типу. При відкритті форми, платформа буде аналізувати, чи є в поточному сеансі вже відкрита форма, з таким же ключем унікальності. Якщо така форма буде знайдена, вона буде активізована, а нова не відкриється. Цей механізм працює лише для однакових форм. Якщо ви відкриватимете форми об'єкта різних документів з однаковим ключем, то відкриються обидві.
За замовчуванням платформа сама генерує ключ унікальності. Тому, крім використання власного ключа, у параметрі Унікальність, можна регулювати стандартне використання. Якщо передати до нього значення Брехня, то буде використано стандартний ключ, якщо значення Істина, то ключ не буде використовуватися зовсім. Тобто. буде створюватися нова форма, при кожному використанні методу ВідкритиФорму. Значення за умовчанням є Брехнятому спеціально ставити його не потрібно.
Приклад 6. Одночасно відкрити дві форми об'єкта довідника Користувачі, за одним і тим самим посиланням.
ПараметриФорми = Новий Структура; ПараметриФорми.Вставити("Ключ", Користувач); ВідкритиФорму("Довідник.Користувачі.ФормаОб'єкта", ПараметриФорми,, "1"); ВідкритиФорму("Довідник.Користувачі.ФормаОб'єкта", ПараметриФорми,, "2");
Вікно
У параметрі можна вказати вікно, у якому буде відкрито нову форму. Тип параметра ВікноКлієнтськогоДодатка.
Приклад 7. Реалізувати програмний вибір елемента Номенклатура, у полі введення. Реалізувати вибір у вікні форми, де розташоване поле.
&НаКлієнті Процедура НоменклатураПочатокВибору(Елемент, ДаніВибору, СтандартнаОбробка) СтандартнаОбробка = Брехня; Вікно = ЕтаФорма.Вікно; ВідкритиФорму("Довідник._ДемоНоменклатура.ФормаВибору",, Елемент,, Вікно); КінецьПроцедури
У цьому прикладі ми отримуємо вікно поточної форми та використовуємо його для відкриття форми вибору довідника.
НавігаційнеПосилання
Дозволяє встановити власне навігаційне посилання для форми, що відкривається. Встановлюване навігаційне посилання повинно мати тип Рядок. Значення за замовчуванням: Невизначено, при використанні цього значення навігаційне посилання задається автоматично.
ОписОповіданняОЗакриття
У параметр передається опис процедури, яка буде викликана після закриття форми, що відкривається. Тип параметра: Опис Оповіщення.
Приклад 8. У 1с відкрити форму програмно. Використовувати форму об'єкта довідника Користувачі. Після її закриття повідомити, що картку користувача закрито.
&НаКлієнті Процедура ВідкритиФормуКористувача(Користувач) ДопПараметри = Новий Структура; Додаткові параметри.Вставити("Користувач", Користувач); Оповіщення = Новий ОписОповіщення("ПісляЗакриттяФормиКористувача", ЕтаФорма, ДопПараметри); ПараметриФорми = Новий Структура; ПараметриФорми.Вставити("Ключ", Користувач); ВідкритиФорму("Довідник.Користувачі.ФормаОб'єкта", ПараметриФорми.Оповіщення); КінецьПроцедури &НаКлієнті Процедура ПісляЗакриттяФормиКористувача(Результат, ДопПараметри) Експорт Користувач = ДопПараметри.Користувач; Шаблон Повідомлення = "Картка користувача ""%1"" закрита"; Текст Повідомлення = СтрШаблон (Шаблон Повідомлення, Користувач); Повідомити (Текст Повідомлення); КінецьПроцедури
Параметри опису оповіщення, що використовуються в прикладі:
- Перше: ім'я процедури;
- Другий: модуль, у якому вона розташована (у разі поточна форма);
- Третій: структура додаткових параметрів, яка буде передана у процедуру;
Описана процедура обов'язково повинна мати два параметри:
- Результат. Значення, яке повертає форму під час закриття. Форма об'єкта не повертає значень (якщо це спеціально не прописати), тож у даному випадку значення параметра буде Невизначено. А ось форма вибору, наприклад, поверне масив вибраних значень.
- Додаткові параметри. Структура параметрів, створена описі оповіщення.
Також описана процедура має бути експортною.
РежимВідкриттяВікна
Дозволяє вказати режим відкриття керованої форми. За замовчуванням Невизначено, вручну можна задати одне із значень системного перерахування РежимВідкриттяВікнаФорми:
- БлокуватиВеcьІнтерфейс;
- БлокуватиВікноВласника;
- Незалежний.
Метод ВідкритиФорму формою
Існує ще один варіант синтаксису методу ВідкритиФорму.
Використовується, якщо ви вже отримали форму, зробили з нею якісь дії і тепер її потрібно відкрити.
Приклад 9. Отримати форму списку довідника Номенклатура, а потім у 1с відкрити форму програмно.
Форма = ОтриматиФорму("Довідник._ДемоНоменклатура.ФормаСписку"); ВідкритиФорму(Форма);
1С 8.3 Виклик процедур або функцій з модуля об'єкта в модулі форми - програміст 1С Мінськ. Автоматизація бізнесу.
1С 8.3 Виклик процедур або функцій із модуля об'єкта в модулі форми
&На Сервері
Процедура Виклик_з_модуля_об'єкта ()
// Спершу отримуємо об'єкт:
ДокОб'єкт = РеквізитФормиЗначення ("Об'єкт");
ДокОб'єкт. ПроцедураМодуляОб'єктаЕкспортна ();
//.
// Примітка:
// якщо в різних об'єктів, наприклад: два документи і треба у форму одного документа викликати процедуру з іншого документа,
// то в цьому випадку треба процедуру поміщати в модуль менеджера і викликати її як документи. Назва документа. Назва процедури
// відповідно всі виклики на сервері
Як відкрити форму із модуля об'єкта 1С?
Ключові слова: передати значення, значення у форму, передати параметр, передати параметр у форму, параметр у форму, передати праметр у форму
Як з однієї форми відкрити іншу, передавши параметри і отримати назад результат?
1. ВідкритиМодально, параметр закриття, метод Закрити
// перша форма ПовертаєтьсяЗначення = ІншаФорма.ВідкритиМодально(); //в іншій формі: ЦяФорма.Закрити(ПовертаєтьсяЗначення);
2. Реквізити форми (або властивості розширення форми)
Реквізити форми видно зовні як властивості об'єкта Форма. Їх можна створити стільки, скільки потрібно і привласнити їм потрібний тип.
//у першій формі ІншаФорма.Ім'яРеквізиту = Значення;
3. Через ЕлементиФорми (не дуже гарно)
//у першій формі ІншаФорма = ДокументПосилання.ОтриматиФорму(); ІншаФорма.ЕлементиФорми.Ім'яПоля.Значення = Значення;
//У першій формі сповістити всі відкриті форми Сповістити("Ім'яПодії","Форма1", Дані) //в іншій формі призначити обробник події Оповіщення Процедура Обробка Оповіщення(Подія, Джерело, Дані) Якщо Подія cb">Ім'яПодії"І Джерело cb">Форма1" Тоді КінецьЯкщо; КінецьПроцедури
5. Експортні змінні модулів форм
Вони стають видимими зовні, приблизно як реквізити форм:
//у першій формі ІншаФорма.Ім'яЗмінної = Значення; //в іншій формі Перем Ім'яЗмінний Експорт;
6. Експортні змінні модуля об'єкта, якщо він є основним реквізитом форми
Наприклад, є форма елемента довідника, тобто. її основний реквізит має тип "Довідник Об'єкт. Номенклатура". Тоді експортна змінна в модулі об'єкта розширює контекст модуля форми і помітна зовні.
//у першій формі ІншаФорма.Ім'яЗмінної = Значення; //У модулі об'єкта Перем Ім'яЗмінний Експорт;
7. Глобальні змінні (експортні змінні модуля додатку)
9. ЗберегтиЗначення, ВідновитиЗначення
//у першій формі Параметри Сеансу. Ім'я Параметра = Значення; //в іншій формі Якщо ПараметриСеанса.Ім'яПараметра = Значення Тоді КінецьЯкщо;
Зверніть увагу! Спроба прочитати неініціалізований параметр сеансу призводить до помилки! Тому потрібно ініціалізувати всі параметри сеансу раніше, наприклад, ще в процедурі ПРИПОЧАТКУ РОБОТИ Системи.
11. Об'єкти бази даних (довідники, константи, регістри відомостей тощо)