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