Механізм – швидких констант

Досить часто зустрічаються ситуації, коли розробки функціоналу докладання деякі елементи довідників, ПВХ, документи, стають свого роду константами. Зазвичай такі елементи не заводяться як визначених даних.

Наприклад, така ситуація:

Торгова конфігурація, елементом номенклатури заведена "Упаковка", при необхідності додається до документів реалізації. Далі правила змінюються, ставиться завдання включати упаковку у ВСІ документи реалізації, зробити це програмно. Потрібно в коді програми ініціалізувати упаковку як свого роду константу. Як вчинити?

  1. Додати посилання на упаковку у константи.
  2. Завести певний елемент номенклатури (ще одна упаковка).
  3. Шукати за кодом, найменуванням, реквізитом.

Все це не те. Для випадку (1) – а якщо таких буде багато? Плодити константи? Для випадку (2) – явне дублювання сутностей, негарно. Для випадку (3) – ненадійно. Відрізати користувачам можливість редагування коду/найменування/реквізитів не можна.

Зіставлення в коді можна проводити за кодом/найменуванням елемента відповідного ПВХ.

Об'єкти та процедури методу.

  1. Створюємо ПВХ, типізацію якого включаємо все необхідне з конкретної конфігурації. Код у цьому ПВХ є унікальним і є "синонімом" як константи.
  2. Створюємо регістр відомостей, який буде зберігати конкретні значення (у тому числі множинні) для елементів ПВХ. Робимо його періодичним.
  3. Визначаємо механізм перевірок для зміни коду ПВХ та записів регістру щодо некоректної зміни. Можна, звичайно, цього й не робити, адже повний доступ матиме лише розробник. Він, звичайно, знає, що робить, але всі помиляються.
  4. Достатньо лише однієї функції для отримання даних у модулі:

У розвантаженні ІБ міститься два приклади роботи з механізмом:

  1. Для звіту "Головний Звіт" при відкритті форми відображається список користувачів, які мають право на його використання. Це приклад константи має обліковий тип (масив).
  2. Для документа "ВитратнаНакладна" при записі отримуємо та записуємо значення відповідального, доставку та упаковку.

Механізм простий, тому детальнішого опису не наводжу.