Як відкрити форму наявного об'єкта? Відкрити керовану форму об'єкта.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для того щоб відкрити форму вибору з відбором 1с 8.2(Звичайні форми), нам потрібно виконати деякі дії. Спершу ми її отримаємо. Після цього виставимо відбір і програмно відкриємо, приклад коду:

Відбір на формі у полі введення 1С 8.2 з кількома значеннями

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

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

Встановлення відбору в полі введення на формі 1С 8.3, подія ПочатокВибору

Тепер розглянемо відбір у полі введення на керованій формі 1С 8.3. Знайдемо на формі елемент, що цікавить нас, в якому ми будемо встановлювати відбір, у нашому випадку це поле «Організація». Знаходимо подію «Початок Вибору», клацаємо на лупу і опиняємось у процедурі. Ми бачимо параметр Дані Вибору, цей параметр має тип СписокЗначень. Для того, щоб обмежити вибір необхідними елементами, нам необхідно заповнити СписокЗначень. Елементи вибрати можемо тільки на сервері, тому створюємо процедуру з директивою компіляції &На сервері. У цій процедурі заповнюємо Дані Вибору.

Головна Для розробників-початківців Вчимося програмувати

Як відкрити форму наявного об'єкта?

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

Наприклад, якщо з форми списку організацій потрібно відкрити форму організації, на якій знаходиться курсор, зробити це можна наступним способом:

Параметри форми передаємо як структури, де ім'я елемента структури відповідає імені параметра форми, а значення - те значення, у якому хочемо встановити параметр форми.

Якщо потрібно відкрити не основну, а довільну форму об'єкта, створену конфігураторі, замість стандартного імені основної форми (ФормаОбъекта ) вказується слово Форма і через точку його - ім'я форми, створеної конфігураторі.

Наприклад:

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

Слід зазначити, що в тому випадку, коли крім посилання на об'єкт ніякі параметри в форму, що відкривається, передавати не потрібно і потрібна саме основна форма існуючого об'єкта, можна використовувати більш простий спосіб - відкривати форму за допомогою процедури ВідкритиЗначення():

ВідкритиЗначення(Елементи.Список.ПоточнаРядок);

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

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

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

С-П каже нам таке:

Глобальний контекст.ОтриматиФорму (Global context.GetForm)
Глобальний контекст (Global context)
ОтриматиФорму (GetForm)
Синтаксис:

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

<ИмяФормы>(обов'язковий)

Тип: .
Назва форми. Утворюється як повний шлях до об'єкту метаданих Форма (наприклад, "Довідник.Контрагенти.Форма.ФормаОб'єкта", "ЗагальнаФорма.ФормаЗбереженняФайлу") або як повний шлях до прикладного об'єкта, доповнений ім'ям форми за умовчанням (наприклад, "Довідник.Товари.Форма" ).
Імена форм за замовчуванням:

  • Форма Об'єкта (ObjectForm) – форма об'єкта за умовчанням;
  • Форма Групи (FolderForm) - форма групи за замовчуванням;
  • Форма запису (RecordForm) - форма запису регістру за замовчуванням;
  • ФормаСписку (ListForm) - форма списку за замовчуванням;
  • Форма вибору (ChoiceForm) - форма вибору за замовчуванням;
  • ФормаВиборуГрупи (FolderChoiceForm) - форма вибору групи за умовчанням;
  • ФормаКонстант (ConstantsForm) - форма констант за промовчанням для звичайного режиму, встановлена ​​як форма констант для конфігурації;
  • Форма (Form) - форма константи, звіту та обробки за умовчанням;
  • Загальна форма (CommonForm) - загальна форма;
  • ФормаНалаштувань (SettingsForm) - форма налаштувань звіту за умовчанням;
  • Форма Завантаження (LoadForm) – форма завантаження налаштувань;
  • Форма Збереження (SaveForm) – форма збереження налаштувань;
  • Форма Варіанту (VariantForm) - форма редагування варіанта звіту;
  • ФормаПошуку (SearchForm) - форма повнотекстового пошуку даних.
Наприклад, для отримання загальної форми "ЗагальніНалаштування" слід у модулі написати код:
Форма = ОтриматиФорму("ЗагальнаФорма.ЗагальніНастройки");

Для зовнішніх звітів та обробок ім'я форми задається таким чином:

  • Зовнішній звіт.<имя отчета>. Форма.<имя формы>;
  • Зовнішній звіт.<имя отчета>.<имя стандартной формы>;
  • Зовнішня обробка.<имя обработки>. Форма.<имя формы>;
  • Зовнішня обробка.<имя обработки>.<имя стандартной формы>.
При цьому зовнішній звіт або обробка мають бути попередньо зареєстровані у системі.
<Параметры>(Необов'язковий)

Тип: .
Параметри форми. Ключ структури – ім'я параметра, а значення – значення параметра форми. Ім'я елемента має збігатися з назвою параметра структури.
П = Новий Структура("Ключ", Постачальник);
Форма = ОтриматиФорму("Довідник.Контрагенти.ФормаОб'єкта", П);
Форма.Відкрити();
<Владелец>(Необов'язковий)

Власник форми - форма чи елемент керування іншої форми.
<Уникальность>(Необов'язковий)

Тип: Довільний.
У цьому параметрі може бути заданий певний ключ, значення якого буде використовуватися для пошуку відкритих форм. Якщо буде знайдено форму з таким самим ключем унікальності, замість відкриття нової форми буде активізовано знайдену форму.
- шукати форму з ключем унікальності за замовчуванням, - не шукати форму взагалі, будь-яке інше значення встановлює ключ унікальності, яким буде зроблено пошук.
Значення за замовчуванням: .
<Окно>(Необов'язковий)

Тип: ; .
Вікно програми, в якому буде відкрито форму.
Застосовується тільки для керованої форми. Вікном може бути лише основне вікно програми або допоміжне вікно форми.
Якщо вказано тип , вікно форми буде створено згідно з вибраним варіантом.
<НавигационнаяСсылка>(Необов'язковий)

Тип: ; .
Якщо містить значення, відмінне від , це значення присвоюється властивості форми, отриманої результаті виклику даного методу, і властивість цієї форми встановлюється в .
Значення за замовчуванням: .
Значення, що повертається:

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

Набуває форми або керованої форми. Перед отриманням здійснюється пошук відкритої такої ж форми.
Пошук здійснюється за типом форми, значенням ключових параметрів форми, власнику форми, ключу користувача унікальності.
Якщо у параметрі<Уникальность>передано значення , пошук вже відкритих форм не здійснюється.
Доступність:

Тонкий клієнт, веб-клієнт, товстий клієнт, мобільний додаток (клієнт).
Примітка:

У тонкому та веб-клієнті отримує лише керовану форму.
Звичайні форми зовнішніх обробок не підтримуються.
Якщо при отриманні звичайної форми у параметрі<ИмяФормы>вказано не стандартне ім'я форми, параметри, що передаються, не обробляються.
У процесі виконання може бути кілька звернень до сервера. Частина кешуються. Як мінімум одне звернення до сервера завжди і воно не кешується. Кешування залежить від версії платформи та версії конфігурації загалом. Якщо встановлено низьку швидкість з'єднання і не вказується поточний рядок, то кешується форма вибору. Очищення кешу здійснюється з періодичністю 20 хв. Видаляються форми, які використовувалися у період.
Див. також:



Подібні публікації