Як відкрити форму наявного об'єкта? Відкрити керовану форму об'єкта.
Програмне відкриття форм у керованому додатку 1С значно відрізняється від їхнього відкриття у звичайному додатку. Розглянемо спершу старий метод. Він полягає в отриманні форми та її подальшому відкритті у звичайному або модальному режимі (при відкритті в модальному режимі форма блокує роботу програми).
ОтриматиФорму() . Відкрити()
Це найповільніший метод відкриття форм. Проте він дозволяє програмно обробити форму перед відкриттям. Для обробки код потрібно трохи змінити:
Форма = Отримати Форму ( "Документ.НадходженняТоварівПослуг.ФормаДокумента")
;
//Тут виконуємо дії з формою
Форма. Відкрити() ;
Треба враховувати, що при отриманні форми виконуватиметься ще процедура події При створенні на сервері.
Розглянемо інші методи, які дозволяють відкривати форми в керованому додатку 1С швидше та зручніше. Залежно від конкретної ситуації можна використовувати різні методи.
1. Як відкрити форму об'єкта в керованому додатку, якщо є посилання на нього.
В цьому випадку все дуже просто.
Посилання = Довідники. Номенклатура. ЗнайтиПоКоду("000000001");
ВідкритиЗначення(Посилання) ;
2. Як відкрити форму вибору та отримати потім обране значення.
Для цього існує функція ВвестиЗначення().У функції 3 параметри:
- Змінна, до якої буде записано обране значення;
- Підказка, яка відображатиметься у вікні вибору;
- Опис типів обраних значень. Можливо кілька типів, тоді перед вибором конкретного значення буде запропоновано вибрати тип.
В результаті виконання функції відкриється форма вибору за умовчанням об'єкта зазначеного типу.
Перем Значення;
Масив = новий масив;
Масив. Додати(Тип( "ДовідникПосилання.Номенклатура")
)
;
Масив. Додати(Тип( "ДовідникПосилання.Контрагенти")
)
;
Опис Типів = новий Опис Типів (Масив) ;
Різ = ВвестиЗначення (Значення, "Підказка", Опис Типів);
Попередні способи дозволяли відкривати лише форми, встановлені для стандартних об'єктів (форму об'єкта або форму вибору). Якщо потрібно відкрити довільну форму, то можна скористатися функцією ВідкритиФорму().
Ця функція має багато параметрів. Розглянемо деякі з них:
- Ім'я форми- Тут можна вибрати або одну із стандартних форм об'єкта, наприклад, Форма Виборуабо ФормаСписку. Або конкретну, створену розробниками форму.
- Параметри- дозволяє передати у форму у вигляді структуридеякі параметри перед її відкриттям, тим самим визначивши дані, що виводяться. Параметри можуть являти собою будь-які дані, які можна передавати з клієнта на сервер. Передані при відкритті форми параметри можна обробити у процедурі При створенні на сервері ()у форми, що відкривається.
- Режим відкриття форми- має 3 варіанти: незалежний, блокувати весь інтерфейс, блокувати форму власника.
Розглянемо, як застосовується функція ВідкритиФорму()у різних ситуаціях.
3. Як відкрити форму існуючого об'єкту
Кожна форма має один ключовий реквізит. Він виділений жирним у списку реквізитів форми і зазвичай називається Об'єкту форм елементів довідників, документів. В інших об'єктів назва може бути іншою. Для відкриття форми існуючого об'єкта потрібно передати у форму, що відкривається, параметр Ключзі значенням як посилання на об'єкт.
&На Клієнті
Процедура Команда1 (Команда)
Параметр = новий структура;
Параметр. Вставити("Ключ", ЗнайтиС());
ВідкритиФорму(, Параметр) ;
КінецьПроцедури
&На сервері
Функція ЗнайтиС();
Повернення Довідники. Контрагенти. ЗнайтиПо Реквізиту ("ІПН", "745107734623")
КінецьФункції
4. Як відкрити форму нового об'єкту
Тут підійде просто функція ВідкритиФорму()без жодних параметрів.
&На Клієнті
Процедура Команда1 (Команда)
ВідкритиФорму( "Довідник.Контрагенти.ФормаОб'єкта")
;
КінецьПроцедури
5. Як відкрити форму нового об'єкта та заповнити її на підставі чогось
Потрібно передати параметр Заснування, значенням якого буде посилання на об'єкт-основу заповнення. При цьому буде запущено процедуру Обробка Заповнення ().
&На Клієнті
Процедура Команда1 (Команда)
Параметр = новий структура;
Параметр. Вставити("Підстава" , ПосиланняНа РахунокПокупцю) ;
ВідкритиФорму( "Документ.РеалізаціяТоварівПослуг.ФормаОб'єкта", Параметр);
КінецьПроцедури
У цьому прикладі буде створено документ Реалізація товарів та послугта заповнений на підставі рахунку на оплату покупцю, посилання на який було передано.
6. Як відкрити форму та задати на ній відбір
Відбір на формах 1С може бути простим та складним. Простий відбір передбачає вирази типу Організація = ТОВ «Роги та копита».Складний відбір передбачає інші типи порівняння, наприклад, В списку. У цій статті розглянемо організацію простого відбору, а складному буде присвячено окрему статтю.
Щоб організувати простий відбір, потрібно передати у форму, що відкривається, параметр з ключем Відбір, значенням буде структура, в якій ключ - ім'я поля динамічного списку, а значення - дані, що шукаються.
Наприклад, відкриємо форму списку довідника Номери ВМДі зробимо там відбір за власником - елементом довідника Номенклатура.
&На Клієнті
Процедура Команда1 (Команда)
Параметр = новий структура;
Відбір = новий Структура;
Відбір. Вставити("Власник" , ПосиланняНаНоменклатуру) ;
Параметр. Вставити("Відбір", Відбір);
ВідкритиФорму( "Довідник.НомераГТД.ФормаСписку", Параметр);
КінецьПроцедури
7. Як відкрити форму запису регістру відомостей
Для цього знадобиться ключ запису регістру відомостей.
Ключ запису— це значення всіх вимірів та період (якщо регістр періодичний). Тобто ключ запису — це параметри, якими можна однозначно ідентифікувати запис.
Алгоритм відкриття наступний:
- Заносимо в структуру дані ключа запису з потрібними значеннями.
- Поміщаємо отриману структуру масив.
- З масиву створюємо ключ запису.
- Передаємо у форму, що відкривається, параметр Ключз ключем запису з п.3 як значення.
&На Клієнті
Процедура Команда1 (Команда)
Параметр = новий структура;
ПараметриКлюча = новий Структура;
ПараметриКлюча. Вставити("Номенклатура" , ПосиланняНаНоменклатуру) ;
ПараметриКлюча. Вставити("ТипЦени" , ПосиланняНаТипЦен) ;
ПараметриКлюча. Вставити("Період", Дата);
МасивКлюча = Новий Масив;
МасивКлюча. Додати(ПараметриКлючу) ;
КлючЗаписи = Новий( "РегістрВідомостейКлючЗаписи.ЦіниНоменклатури", МасивКлюча);
Параметр. Вставити("Ключ" , КлючЗаписи) ;
ВідкритиФорму( "РеєстрВідомостей.ЦіниНоменклатури.ФормаЗаписи", Параметр);
КінецьПроцедури
Для того щоб відкрити форму вибору з відбором 1с 8.2(Звичайні форми), нам потрібно виконати деякі дії. Спершу ми її отримаємо. Після цього виставимо відбір і програмно відкриємо, приклад коду:
Відбір на формі у полі введення 1С 8.2 з кількома значеннями
У прикладі вище ми розглянули як встановлювати відбір на формі виборуза конкретним значенням. Тепер давайте розглянемо ситуацію коли потрібно підставити кілька значень, це може бути, наприклад, як масив, так і вивантаження з результату запиту. Це відбір у полі введення 1сз кількома значеннями.
Для початку отримуємо форму вибору, у параметрах передаємо "Елемент" (власника), встановлюємо прапор режиму вибору. Потім створюємо список значень та масив, відзначаємо що як відбір коли встановлюється вид порівняння у списку, може бути об'єкт тільки з типом СписокЗначень. Додаємо елементи в масив, потім цей масив завантажуємо в СписокЗначень, який в результаті ми встановлюємо у відборі. Також не забуваємо увімкнути прапор використання даного відбору, та встановити ВидПорівняння.
Встановлення відбору в полі введення на формі 1С 8.3, подія ПочатокВибору
Тепер розглянемо відбір у полі введення на керованій формі 1С 8.3. Знайдемо на формі елемент, що цікавить нас, в якому ми будемо встановлювати відбір, у нашому випадку це поле «Організація». Знаходимо подію «Початок Вибору», клацаємо на лупу і опиняємось у процедурі. Ми бачимо параметр Дані Вибору, цей параметр має тип СписокЗначень. Для того, щоб обмежити вибір необхідними елементами, нам необхідно заповнити СписокЗначень. Елементи вибрати можемо тільки на сервері, тому створюємо процедуру з директивою компіляції &На сервері. У цій процедурі заповнюємо Дані Вибору.
Головна Для розробників-початківців Вчимося програмуватиЯк відкрити форму наявного об'єкта?
При відкритті форми існуючого об'єкта необхідно крім імені форми вказати також і той об'єкт, форма якого має бути відкрита. Для цього використовується параметр форми Ключ і посилання на об'єкт, що нас цікавить.
Наприклад, якщо з форми списку організацій потрібно відкрити форму організації, на якій знаходиться курсор, зробити це можна наступним способом:
Параметри форми передаємо як структури, де ім'я елемента структури відповідає імені параметра форми, а значення - те значення, у якому хочемо встановити параметр форми.
Якщо потрібно відкрити не основну, а довільну форму об'єкта, створену конфігураторі, замість стандартного імені основної форми (ФормаОбъекта ) вказується слово Форма і через точку його - ім'я форми, створеної конфігураторі.
Наприклад:
ПосиланняНаЕлементДовідника = Елементи.Список.ПоточнаРядок; ПараметриФорми = Новий Структура("Ключ", ПосиланняНаЕлементДовідника); ВідкритиФорму("Довідник.Організації.Форма.УніверсальнаФормаОб'єкта", ПараметриФорми);
Слід зазначити, що в тому випадку, коли крім посилання на об'єкт ніякі параметри в форму, що відкривається, передавати не потрібно і потрібна саме основна форма існуючого об'єкта, можна використовувати більш простий спосіб - відкривати форму за допомогою процедури ВідкритиЗначення():
ВідкритиЗначення(Елементи.Список.ПоточнаРядок);
Такий спосіб має меншу універсальність, але в деяких випадках він заощаджує час і сили. Наприклад, у розглянутому випадку один такий рядок може замінити всю написану нами раніше процедуру з трьох рядків.
Однак слід уважно ставитися до використання цієї процедури. У деяких випадках вона може викликати додаткові звернення до сервера, наприклад коли потрібно відкрити форму елемента ієрархічного довідника. При використанні цієї процедури платформа буде виконувати додаткове звернення до сервера для того, щоб визначити, чи є елемент групою чи ні, оскільки для елемента та групи потрібно відкривати різні форми.
У той самий час ця інформація може бути заздалегідь відома розробнику всередині його алгоритму, і, використовуючи функцію Відкрити Форму() , розробник може відкривати потрібну форму без додаткових звернень до сервера, відразу ж вказуючи стандартне ім'я основної форми.