Система подписок
Позволяет очень гибко расширять функционал по контролю и заполнению документов и справочников без использования расширений. Новый функционал применяется моментально, пользователям не нужно перезапускать 1с для применения изменений. Мною лично уже внедрено более 150 разнообразных "доработок", такие как контроль заполнения реквизитов определенным значением, дополнительный запрос по остаткам в разрезе реквизитов, дополнение функционала в типовых конфигурациях (например при перепроведении документа очищается табличная часть "виды запасов", если они не были введены вручную), контроль остатков в разрезе фирм при оформлении перемещений, отправка уведомлений пользователям если их документ кто то исправил... В общем потраченное на разработку время оправдало себя на 1000%.
Расширение реализует механизм обработки подписок на управляемых формах при таких событиях:
Для справочников - проверка заполнения, при записи, перед записью, перед удалением.
Для документов - проведение, удаление проведения, проверка заполнения, при записи, перед записью, перед удалением.
Есть справочник Правила проверки, находится в НСИ и Администрировании
UPD: Добавил подписку на события ПередЗаписью, теперь не обязательно лопатить кучу кода в конфигурации и выяснять почему в регистры пишутся не те данные, можно добавить "костыль" и уже на сформированных записях регистров изменять те или иные значения измерений, реквизитов и ресурсов. При этом внесенные изменения работают тут же, не надо выгонять пользователей с программы.
Добавил я это все из-за необходимости поправить недоработку разработчиков конфигурации.
Проблема: при оформлении приобретения/продаж через заказ поставщика или клиента, если используется в договоре метод детализации расчетов "По заказам" зачастую бывают случаи, когда выполняется следующая цепочка: оформили заказ, оплатили/получили оплату его, а потом вдруг поменяли в заказе договор и отгрузили/приняли товар, то оплата/поступление оплаты и отгрузка/поступление не взаимозачитываются, в итоге образуется одновременно дебиторская и кредиторская задолженности по одному объекту расчетов - заказу. При этом механизма взаимозачета в 1с КА в таких ситуациях нет, документ Взаимозачёт задолженности не реализует такой функционал (не знаю ошибка это или намеренно, но договор в движения регистров он подставляет из объекта расчетов, который меняется с изменением заказа).
Решение: сначала начал искать в конфигурации каким образом и какими запросами формируются движения в регистрах. Процесс был не быстрый, исправление затрагивало кучу процедур и функций, которые в последствии могли бы конфликтовать после обновления конфигурации. Поэтому реализовал сей функционал на моих подписках, теперь я просто передЗаписью регистров анализирую содержимое этих записей и изменяю их. А также в регистр бухгалтерии добавляю соответствующие проводки (подписка на ОбработкуПроведения при проведении документа ВзаимозачетЗадолженности создает новые проводки в регистре бухгалтерии). Решение работает, нужные движения формируются и исправляются, основная конфигурация не тронута.

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

Если нужно более сложное условие, результат условия должен быть обязательно отражен в переменной РезультатУсловия

Сам исполняемый код

Подробное описание правила

Здесь назначаем пользователя или группу пользователей, на которых распространяется правило и событие при котором оно будет выполняться

На этой вкладке создаем параметры, которые будут передаваться в код, или условие, порядок такой: пишем Имя параметра и его значение, в значении может быть ссылка на объект метаданных или же значение типа Число, дата и т.д. В общем поле с произвольным типом данных. В условии и коде параметры доступны через переменную ПравилоПараметры.[Идентификатор]. У меня в примере это видно.
Данное правило работает выводит сообщение со значением параметра ТестПараметры, которое равно 145, то есть выводит в сообщении "145".
Настроить поведение при подписках можно практически любое. Например можно заполнять автоматически поля при определенных условиях и предопределенными значениями. Например при выборе организации "Иванов И.И.", заполнять автоматом подразделение или проверять на пустое значение этот реквизит, выводить сообщение пользователю об ошибке и отменять операцию.
Тестировался на платформе 8.3.21, конфигурация КА 2.5.8.254 режим совместимости с 8.3.17.
Проверено на следующих конфигурациях и релизах:
- 1С:Комплексная автоматизация 2, релизы 2.5.18.64
Вступайте в нашу телеграмм-группу Инфостарт
