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