Click to view
Большинство клиентов 1С используют типовые конфигурации, в которые, тем не менее, вносят изменения для комфортной работы и соответствия имеющимся бизнес-процессам. Администраторы знают - чем больше таких изменений внесено, тем сложнее и дольше производить обновления, которые выпускаются к тому же довольно часто. Поэтому разработчики в свою очередь стремятся к минимизации изменений типовой конфигурации. Для разрешения этой дилеммы был разработан механизм подписок на события в 1С 8.3. Подписки позволяют проделать нужные операции, не затрагивая стандартные процедуры и функции конфигурации 1С.
Создаем подписку в 1С
Перед созданием подписки необходимо обдумать два момента - после какого события процедура должна быть выполнена и для каких объектов. Большой плюс данного механизма заключается в том, что одну подписку можно запрограммировать для всех документов или справочников. Программисту не придется для каждого объекта конфигурации писать процедуру, прописывать ее вызов, передачу параметров. Разработчикам нужно лишь следить, чтобы все реквизиты, к которым обращается подписка на событие при записи документа, были у перечисленных типов.
После того как перечень объектов конфигурации для подписки определен, необходимо выбрать событие, после которого выполнится наша процедура. Список возможных событий для выбранных объектов система предложит вам при создании. Чтобы начать процесс создания подписки, запустите конфигуратор, откройте конфигурацию через «Общие» - «Подписка на событие». Нажатие на «Добавить» приведет к появлению в конфигурации новой подписки со стандартным именем, после чего откроются свойства.
Рис.1 Подписка на событие
В первую очередь необходимо заполнить поля «Имя» и «Синоним», по которым разработчики понимают, что делает данная подписка. Помните, что в поле «Имя» недопустимо вписывать пробелы, то есть все слова нужно писать слитно. Свойство «Источник» указывает, какие узлы конфигурации участвуют в подписке. Вы можете указать один, несколько или даже все объекты одного типа, например, все справочники.
Тип источников напрямую влияет на предлагаемые системой события. Выбирая одно из них, помните, что сначала отрабатывают стандартные процедуры, а потом настает очередь подписок в конфигурации. После события приходит очередь определиться с тем, в каком общем модуле будет записана наша процедура. В свойстве «Обработчик» необходимо указать один из присутствующих в конфигурации модулей с установленным свойством «Серверный».
После выбора модуля и перехода в него, остается лишь описать действия процедуры, и на этом создание подписки в конфигурации будет закончено. Далее можно обновлять конфигурацию 1C и проверять результат работы описанной на встроенном языке процедуры. Разработчики с помощью подписок делают проверки перед записью или проведением документа для контроля заполнения нужных полей. Также удобно заполнять дополнительные регистры - документ или элемент справочника уже записан, и вы можете использовать достоверные данные.
Механизм расширений, который активно используют разработчики 1С версии 8.3.6 и выше, позволяет более тонко прописывать подписки, не затрагивая типовую конфигурацию. При обновлении добавленные разработчиком проверки могут мешать реструктуризации документов, поэтому необходимо отключить подписки. Легче отключить одно расширение, чем предусматривать возможность отключения всех подписок в конфигурации, которых может быть более сотни.
Подписки в расширениях
Расширение - это конфигурация 1С, которая «накладывается» на основную конфигурацию. Само по себе расширение не является функционирующей системой, но благодаря ему разработчики получают свободу действий. Основное преимущество заключается в том, что при обновлении расширение отключается, и обновляется типовая конфигурация. Именно поэтому разработчики стараются переносить свои подписки в расширение.
В расширении есть возможность дополнять модули документов и других объектов и их форм. Достаточно добавить их из основной конфигурации в расширение. Также разработчики могут выбирать, когда исполнять код из расширения относительно процедур из основной конфигурации:
- После;
- Перед;
- Вместо.
В последнем случае код из конфигурации не будет работать, как будто его закомментировали, а вместо него написали свою процедуру. Как это происходит, рассмотрим на примере документа «Реализация товаров и услуг» - будем выдавать сообщение об успехе продажи перед записью. Для этого нам необходимо добавить к конфигурации расширение:
1. Запускайте конфигуратор;
2. Открывайте меню «Конфигурация» - «Расширения конфигурации»;
3. Добавляйте новое расширение конфигурации и называйте его в соответствии с его предназначением;
Рис.2 Добавляем расширение
4. Убирайте галки «Безопасный режим» и «Защита от опасных действий». Они нам помешают;
5. Откройте его структуру.
Чтобы добавить в расширение подписки на события, нужно добавить в расширение документ. Находим его в основной конфигурации, жмем по правой кнопке и в контекстном меню выбираем команду «Добавить в расширение». После это находим нужный документ в расширении и через контекстное меню открываем его модуль объекта.
Рис.3 Добавить в расширение подписки на события
В открывшемся окне мы сможем дополнить стандартные процедуры и даже заменить их, выбрав уточнение «Вместо» для нашей процедуры. Выбираем процедуру «Перед записью» и после нее будем выводить сообщение об успехе операции. Для этого нужно выбрать из перечня стандартных процедур нужную и указать тип вызова - «Вызывать после». Создастся процедура, внутри которой вы сможете описать текст процедуры.
Рис.4 Создастся процедура, внутри которой вы сможете описать текст процедуры
Фрагмент кода
&После("ПередЗаписью")
Процедура Подп_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
КонецПроцедуры
Напишем, чтобы перед записью документа выводилось сообщение об успехе операции. Остается лишь обновить расширение и запустить 1С - при сохранении документа нам будет выводиться сообщение. Это означает, что мы достигли цели и внесли изменение в процесс перед записью документа без изменения типовой конфигурации.
Описанный метод не позволяет подпиской охватить все документы, поэтому все стандартные подписки используются разработчиками в 1С 8.3. Но расширение позволяет разработать, такую важную вещь, как подписка на событие формы, что невозможно сделать в основной конфигурации без изменения формы документа.
Дорабатывайте конфигурации с минимальными изменениями и обновления не будут отнимать у вас много времени.
Смотрите также:
Электронный учебник по программированию в 1С Рекомендации по изучению программирования 1С с нуля Игра "Кто хочет стать миллионером?" с вопросами на определенную тематику (язык программирования JavaScript, английские, немецкие, французские, испанские, португальские, нидерландские, итальянские слова, электробезопасность, промышленная безопасность, бокс и т.п.), написанная на 1С Программирование в 1С 8.3 с нуля - краткий самоучитель Комплексная подготовка программистов 1С:Предприятие 8.2 Сайты с уроками программирования и со справочниками Youtube-каналы с уроками программирования Сайты для обучения программированию Лекции и уроки