Главная » Статьи » "1С" Предприятие

Скачивать материалы с сайта, могут только зарегистрированные пользователи.
Для регистрации заполните два поля ниже!

Через минуту Вы получите "Гостевой доступ"




Как автоматизировать проверку реквизитов?
Nik Steeks   февраль 2003
Не так давно в КБ была опубликована статья Сергея Лебедева Разграничение доступа к данным в V7, в которой шла речь о некоторых аспектах защиты данных в базах V7. Я же хочу поделиться с заинтересованной частью сетевого сообщества своими мыслями на тему автоматизации "защиты от дурака".

Собственно, проблема: сложные документы и справочники могут содержать огромное количество реквизитов, причём некоторые из них критически важны для правильной работы конфигурации и их заполнение является обязательным, а некоторые – не очень важны (или совсем не важны) и заполнять их не обязательно (хотя и желательно).

Это не всё – у разных документов или справочников одинаковые реквизиты могут относиться к разным категориям важности.

Самое простое решение – при сохранении (проведении, etc.) документа (элемента справочника) делать проверку на заполненность (или, при необходимости, на корректность значения) того или иного реквизита. Но это явно не лучший выход – придётся написать очень много рутинного кода, и гибкость у такого механизма будет нулевая (любое изменение политики придётся прописывать руками в коде).

Второй, более изящный вариант (который и используется в большинстве конфигураций) – вынести проверку реквизитов в глобальный модуль. Глобальная функция через объект "Метаданные" получает список реквизитов проверяемого объекта, перебирает их и проверяет. Флаг "реквизит не должен быть пустым" можно передавать, например, через ключевое слово, помещённое в комментарий к реквизиту (скажем, в "Астор: Торговый Дом v5" этот флаг обозначается в комментарии знаком "!").

Решение красивое, но возникают вопросы: а если необходимость проверки того или иного реквизита надо изменять непосредственно в течении работы системы, без перезаписи структуры меданных? Как быть с проверкой не только на "пусто/не пусто", но и на допустимое значение проверяемого реквизита?

Мною реализован следующий вариант решения проблемы проверок реквизитов. В конфигурации создается служебный справоник "СтруктураКонфигурации". Структура справочника произвольная, как кому удобнее, например: первый уровень "Документы/Справочники", второй уровень "конкретный объект", третий уровень "Реквизиты Шапки/Табличной части", и наконец сами реквизиты, представленные в виде элементов. У каждого элемента служебного справочника есть реквизит-флаг, определяющий необходимость проверки.

Далее, специальная обработка выполняет анализ структуры метаданных и заполняет справочник. В результате информация о всех объектах (документах и справочниках) и всех реквизитах этих объектов записывается в служебный справочник.

В глобальный модуль добавляется универсальная функция проверки реквизитов, которая получает ссылку на объект, определяет его тип, находит его описание в справочнике "СтруктураКонфигурации", перебирает реквизиты и выполняет проверку (если флаг указывает на необходимость таковой).

После этого администратору БД остаётся только открыть справочник "СтруктураКонфигурации" и проставить флаги тем реквизитам, которые необходимо проверять. Изменения в политику вносятся прямо в процессе работы с базой, буквально двумя кликами.

Я не буду детально расписывать мою реализацию описанного механизма – если общая идея понятна, реализация особого труда не составит. Более того, механизм можно доработать и внести в него какие-то дополнительные функции – условия, используемые в проверках на корректность заполнения реквизитов, и т.д.

Категория: "1С" Предприятие | Добавил: c1 (2009 Январь 09)
Просмотров: 927 | Теги: Как автоматизировать проверку рекви | Рейтинг: 0.0/0

Выразить благодарность - Поделиться с друзьями!

 

Здесь все о технической стороне 1С!

 

Узнай, как правильно администрировать 1С Предприятие
Регистрируйся на бесплатный 7-ми дневный курс сейчас:

Ваш E-Mail в безопасности



Всего комментариев: 0
avatar