Универсальная проверка заполнения реквизитов объектов с расширенными возможностями




Расширенный функционал обработки событий записи объектов, который позволит Вам настроить гибкую проверку и обработку данных событий в режиме 1С Предприятия, не прибегая к изменению конфигурации.

Думаю, без преувеличения каждому разработчику на практике приходилось реализовывать задачи по проверке корректности заполнения тех или иных реквизитов в справочниках, документах и т.п. Задача достаточно простая, и путей решения может быть множество. У каждого есть свои плюсы и минусы. Кто-то использует расширения, кто-то включает режим поддержки с возможностью изменения и меняет свойства у реквизитов объектов, контроль над которыми запросил заказчик и т.д. и т.п.

Мне пришла в голову идея (возможно, и скорее всего не первому) глобальнее подойти к решению этого вопроса.

Идея довольно проста. Почему бы не сделать этот функционал более гибким? Без боязни потерять ту или иную проверку после обновления?

Для этого необходимо лишь создать хранилище этих настроек, грамотно подойти к вопросу реализации алгоритмов проверки, и не забыть про права пользователей, позволяющие им использовать функционал.

И так. Что нам потребуется.

— несколько подписок на события;

— непериодический независимый регистр сведений для хранения настроек контроля;

— серверный общий модуль для служебных алгоритмов;

— конфа, написанная на БСП;

— прямые руки.

Рисунок 1. Структура подсистемы.

 

1. Подписки можно использовать любые, какие вам потребуются для реализации. К сожалению в расширениях их пока нельзя использовать, поэтому я интегрировал весь функционал в основную конфу.

В моем случае логика была следующей: справочники и планы видов характеристик я проверяю перед записью, поскольку записанный элемент справочника или ПВХ уже влияет на учет; документы я проверяю в момент проведения, поскольку, очевидно, непроведенный документ не содержит проводок, а следовательно не влияет на учет. Случаи формирования отчетов по документам не глядя на флаг проведения я не рассматриваю, оставлю это на совести разработчиков, которым приходит в голову писать такие отчеты.

2. Регистр сведений содержит:

— ряд измерений для хранения данных в разрезе аналитик;

— ресурсы:

— Алгоритм (тип строка) для хранения произвольного алгоритма контроля.

Ресурс Алгоритм — самое важное звено. Здесь можно описать любой алгоритм, который будет выполняться на сервере. Начиная от "Сообщить("hello, world!)"", заканчивая сложными конструкциями как контроля, так и отчета о его выполнении, например, отправка на почту результата.

В общем модуле пара процедур, логика которых представлена ниже.

1. Сначала инициализация самого объекта проверки.

2. Поиск настроек контроля заполнения объекта в регистре.

3. Далее отработка алгоритмов проверки.

В самом алгоритме вы можете обращаться к самому объекту и менять его, используя переменную Источник.

А также можно корректировать текст, который увидит пользователь: переменная ТекстОшибки.

Вот собственно и всё.

Разработка выполнена на платформе 8.3.12.1790.

Внимание!

1. Если вы загружаете демо-базу, то можете взять конфигурацию оттуда, и загружать отсюда конфигурацию не надо! Конфы идентичны.

2. Будьте внимательны при объединении. Справочники объединять не надо! Они использованы для примера. Идентификаторы объектов метаданных — справочник из БСП, он должен быть у вас в конфе. Без него решение необходимо дорабатывать.

6 Comments

  1. Cartman

    А смысл? Функционал шире чем тут?

    https://infostart.ru/public/290094/

    Единственный минус той — нельзя сравнить реквизит объекта с другим реквизитом объекта.

    Reply
  2. dhurricane

    (1) Там же судя по описанию СКД используется. Значит должно быть сравнение и полей компоновки друг с другом.

    Reply
  3. Cartman

    (2) В сложном режиме можно вроде. Но это уже кодить надо.

    Reply
  4. alex.msk

    (1) Я не ставлю целью соревноваться в «ширине» функционала. Моё решение просто другое.

    Смысл разработки указан в описании.

    Reply
  5. 9269477065

    В расширение возможно переделать?

    Reply
  6. alex.msk

    (5) Нет. Расширение не поддерживает подписки на события. Если только тащить в него все объекты.. Но смысл..

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *