Обробка ініціалізації

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

Для даної обробки повинні дотримуватися таких правил:

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

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

Один з варіантів реалізації такого механізму:

  • У конфігурації передбачається константа, що зберігає версію останньої виконаної обробки ініціалізації.
  • В обробці передбачається експортна змінна, що зберігає версію (ціле число). Версія встановлюється при створенні обробки-об’єкта, значення версії прописано в коді модуля. При будь-якої модифікації обробки розробник повинен збільшити цю версію на одиницю.
  • Після увімкнення системи, якщо поточний користувач має повні права і версії обробки в конфігурації і в константі відрізняються, виконується обробка ініціалізації.

 
В даному прикладі, добавлена ​​константа «АБ_ВерсіяВиполненнойОбработкіІніціалізаціі»

У модулі керованого застосування в процедуру «ПріНачалеРаботиСістеми ()» додано виклик серверної процедури:

Процедура ПріНачалеРаботиСістеми // СтандартниеПодсістеми
СтандартниеПодсістемиКліентПріНачалеРаботиСістеми // Кінець СтандартниеПодсістеми
// ++ VION 08.09.2016 Загальні об’єкти
АБ_ОбщегоНазначеніяКліентУстановітьЗаголовокІнформаціоннойБазиАБ_ОбщегоНазначеніяСерверВиполнітьОбработкуІніціалізаціі // – VION 08.09.2016
КонецПроцедури

Яка перевіряє наявність прав і викликає обробку ініціалізації:

// ************************************************ **
Процедура ВиполнітьОбработкуІніціалізаціі () Експорт
Якщо РольДоступна “ПолниеПрава”) Тоді
ОбработкіАБ_ОбработкаІніціалізацііСоздатьВиполнітьОбработку ();
КонецЕсли;
КонецПроцедури

Код модуля обробки ініціалізації

////////////////////////////////////////////////// ////////
// ОБРОБКА ІНІЦІАЛІЗАЦІЇ
// ————————–
// Обробку передбачається запускати багаторазово.
// Кожна дія має коректно відпрацьовувати як при першому запуску обробки, так і при повторних запусках.
// У другому випадку не повинно бути будь-яких побічних ефектів або втрати введених користувачем даних.
// В деяких випадках (якщо того вимагає завдання) можливе виявлення і виправлення налаштувань, вже зроблених,
// але некоректно змінених користувачем з моменту попередньої ініціалізації.
// ————————–
// Використовувані об’єкти конфігурації:
// 1. Константа.ВерсіяВиполненнойОбработкіІніціалізаціі – Тип: Число (5,0)
// 2. Виклик обробки при старті системи: Обработкі.ОбработкаІніціалізаціі.Создать (). ВиполнітьОбработку ();
// ————————–
// Алгоритм для розробника:
// 1. У процедурі ПолучітьТекущуюВерсіюОбработкі () збільшуєте весрію на 1, напрмер було 3, ви ставите 4.
// 2. У модуль обробки додаєте процедуру ОбработкаІніціалізаціі_Весія_4 (Відмова).
// 3. Якщо в процесі обробки виникли помилки, необхідно встановити змінну Відмова в значення Істина.
// 4.

Ссылка на основную публикацию