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