Механізм контролюзаповнення реквізитів

Передмова

Напевно, на кожному підприємстві є працівник, який постійно забуває/забиває при створенні елемента довідника або документа про один або кілька неважливих (на його думку) реквізитів, але в той же час вони можуть бути важливими для його керівника.

У таких випадках є 2 вирішення проблеми:

  1. Керівник кілька разів карає дану людину морально/матеріально/фізично і після цього працівник робить висновки, що все ж таки краще заповнити необхідні поля.
  2. Керівник звертається до програміста, щоб той зробив реквізити обов'язковими для заповнення.

Ми розглянемо другий випадок, тому що в першому вони самі справляються з проблемою і без нашої участі. Так ось, приходить до нас замовник/клієнт і каже: "Мій співробітник Вася Пупкін взагалі нахабнів, ніяк його не можу навчити заповнювати Реквізит1 у картці номенклатури. Зробіть це поле обов'язковим для заповнення."

І ми чудово розуміємо, що жоден із цих способів не є реальним виходом, оскільки наступні оновлення конфігурації будуть ускладнюватися.

Так і який вихід?!

Пропоную вам своє вирішення даної проблеми. Не потрібно ніякі об'єкти знімати з підтримки, необхідно додати кілька нових об'єктів у конфігурацію.

  • 2 ролі
  • Загальний модуль
  • Передплата на подію
  • Реєстр відомостей

Після перенесення даних об'єктів у конфігурацію, все вже готове до роботи. Вихідний код є відкритим, весь механізм можна буде вивчити зсередини. Зупинятися на ньому особливо не будемо. Стисло, для чого потрібні всі ці об'єкти:

  • 2 ролі: длякористувача -Читання налаштувань з регістру, дляадміністратора -Адміністрування реєстру
  • Загальний модуль: міститьпроцедуру (сам механізм) перевірки реквізитів
  • Підписка на подію: спрацьовує на подіюОбробкаПеревіркиЗаповнення
  • Реєстр відомостей: зберігаєналаштування перевірки реквізитів

Давайте все ж таки більш докладно зупинимося на роботі з налаштуваннями даного механізму, оскільки це, мабуть, найважливіша його частина.

Відразу зумовимося, щосписок записів регістру - ценабір правил, а кожен окремийзапис - цеправило перевірки того чи іншого ревізиту.

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

Відкривши демо-базу і натиснувши на командуНалаштування обов'язкових полів, ми потрапляємо до списку правил. Представлений він у вигляді ієрархічного списку: на верхньому рівні розташованийТип (Довідник/Документ), на наступному рівні самОб'єкт, і найнижчий рівень -Реквізит (у нашому випадку – правило).

Натиснемо кнопку Створити та подивимося, як виглядає "картка" правила:

Давайте розберемо кожне з полів правила:

  • Перевірка активна - ознака, що вказує на те, чи враховуватиметься конкретне правило при перевірці реквізиту.
  • Тип - вказує на тип об'єкта метаданих, для якого створюється правило (довідник/документ)
  • Об'єкт - залежно від обраного типу, список довідників чи документів
  • Реквізит – список реквізитів вибраного об'єкта
  • Повідомлення - текст, який відображатиметься, якщо реквізит не пройде перевірку на заповнення
  • Умови – (заповнювати не обов'язково)додаткові умови мовою платформи. Вираз повинен звертатися вІСТИНУ або <ХОЛОДА (детальніше розглянемо далі).
  • Параметри - при необхідності передачі параметра за умови, його треба додати таблицю. Таблиця складається з двох колонок: Ім'я та Значення. Ім'я завжди зумовлене і немає можливості його редагувати. Значення необхідно вибрати із бази.

Також на формі є кнопкаПеревірити, яка на конкретному об'єкті виконує перевірку синтаксису і, власне, самого правила. Перед перевіркою правило записується.

Усі правила можна поділити на три види:

Безумовне

Для цього виду правилахарактерно те, що полеУмоване заповнено. Тим самим це вказує на те, що умовавиконується завжди.

Це правило маєутримувати умову вбудованою мовою. Є можливість звертатися до функцій глобального контексту і загальних модулів, у яких значення, що повертається, типу Булево. Так само є можливість звертатися безпосередньо доОб'єкту, ім'я у нього в даному контексті -Джерело.

Параметричне

У цьому виді правил в умовахвикористовуються параметри. Значення параметрів вказуютьсяу таблиці, імена присвоюються автоматично програмою. Для використання параметраза умови, необхідновказати його ім'я.

Для умов також можна використовувативизначені дані, причому їх можна передавати двома способами: ічерез параметр, іпрямо (наприклад, Довідники.Валюти.ОсновнаВалюта).

УВАГА. Якщо впроваджуватимете цей функціонал, не забудьте призначити ролі користувачам та адміністраторам .