[ЕХТ] Фреймворк для Расширений 1С: Обработка событий: описание, примеры и демобаза.

21.10.22

Разработка - Инструментарий разработчика

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
1Cv8.1CD.zip
.zip 12,61Mb ver:22.10.21.1
89
89 Скачать бесплатно

В предыдущей публикации перечислены основные возможности Фреймворка, есть подробная инструкция по установке и пример создания расширения. Здесь будет раскрыта только одна тема:

 

Управление обработкой событий

  • Программные подписки - для обработки любого события Конфигурации в Расширениях можно программно подключить один или несколько обработчиков и пост-обработчиков события.

  • Без заимствований - для обработки событий Конфигурации в Расширениях не требуется заимствовать формы, модули и объекты из Конфигурации.

  • Любые события и команды - в подключаемых обработчиках событий в Расширениях могут быть обработаны все события Конфигурации: события модулей и менеджеров объектов, события форм и элементов, а также общие команды, команды форм и объектов.

  • Универсальные обработчики - обработчик события в Расширении может обрабатывать событие от одного, нескольких или всех источников события Конфигурации.

  • Собственные события - предоставляется возможность в Расширении добавлять собственные события и обрабатывать их в этом же или других Расширениях.

 

Как обрабатываются события

Каждое событие Конфигурации перехватывается служебным Расширением "Подписки". После чего, информация о событии рассылается всем "подписчикам" - объектам Расширений, подписавшимся на данное событие.

 

 

Служебное Расширение Подписки

Расширение ЕХТ_Подписки автоматически добавляется в информационную базу при активации лицензии и автоматически обновляется при обновлениях или изменениях Конфигурации.

 

Обработка событий в Расширениях

Добавление подписки на событие

В модуле менеджера объекта или общем модуле Расширения, в функцию Сведения(), необходимо добавить строку Сведения.Подписки = Истина и добавить экспортную функцию Подписки() как на картинке ниже:

 

Параметры подписки

  • Событие: Тип: Строка. Обязательный параметр. Имя события, для которого устанавливается обработчик, например, ПриСозданииНаСервере. Если обработчик должен быть вызван после обработчиков Конфигурации, то имя события указывается с префиксом После, например, ПослеПриСозданииНаСервере.

  • Директива: Тип: Строка. Необязательный параметр. Возможные значения: НаКлиенте или НаСервере. Используется для уточнения контекста выполнения обработчика события для одноименных событий Платформы. Например, для обработки "события приложения"ПриНачалеРаботыСистемы нужно указать НаКлиенте, а для обработки "события внешнего соединения"ПриНачалеРаботыСистемы нужно указать НаСервере.

  • Издатель: Тип: Строка или Массив. Обязательный параметр для событий элементов формы, для остальных событий - необязательный. Имя объекта метаданных Конфигурации, событие которого нужно обработать, например, Справочник.Номенклатура или Документ.ПоступлениеТоваров.Форма.ФормаСписка.

  • Элемент: Тип: Строка или Массив. Обязательный параметр для событий элементов формы, для остальных событий не используется. Имя элемента формы, для которого устанавливается обработчик. Для события ОбработкаКомандыФормы указывается имя команды формы.

  • Подписчик: Тип: Строка. Необязательный параметр. Имя модуля, в котором располагается обработчик события.

  • Обработчик: Тип: Строка. Необязательный параметр. Имя обработчика события.

  • КоличествоПараметров: Тип: Число. Необязательный параметр. Количество параметров функции-обработчика события. Используется, если в обработчике события в Конфигурации указано нестандартное количество параметров. Также используется для одноименных событий с разным количеством параметров. Например: при событии Выбору ТаблицыФормы в обработчик события передаются 3 параметра, а у поля формы Табличный документ - 2.

  • Описание: Тип: Строка. Обязательный параметр. Здесь указывается назначение обработчика события.

 

Обработчики событий

Обработчики событий это экспортные функции, расположенные в модулях объекта, добавившего подписку. Обработчики событий НаКлиенте располагаются в модуле формы Подписки, а обработчики событий на НаСервере- в модуле менеджера объекта.

Имя функции-обработчика события состоит из префикса "ЕХТ_" и имени события, например, ЕХТ_ПриСозданииНаСервере или ЕХТ_ПослеПриСозданииНаСервере

Состав параметров обработчика события совпадает с описанием параметров события в Синтакс-Помощнике, плюс, в каждый обработчик события передается дополнительный параметр - СвойстваСобытия

Через параметр СвойстваСобытия в обработчик передается дополнительная информация о событии, в том числе "Объект" - источник события.

 

Новые события

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

  • ОбработкаКомандыФормы: событие используется для обработки команд формы;

  • ОбработкаРегламентногоЗадания: событие возникает в обработчиках всех регламентных заданий Конфигурации;

  • ОбработкаПодпискиНаСобытие: событие возникает в обработчиках всех объектов Подписка из метаданных Конфигурации;

  • УдалениеУстаревшихДанных: служебное событие, запускаемое по заданному расписанию.

 

Собственные события

С помощью Фреймворка разработчики могут добавлять собственные события, подписываться на них и обрабатывать в любых Расширениях по тем же принципам, что описаны выше. Одним из назначений использования собственных событий является генерация и обработка оповещений на сервере, аналогично оповещениям на клиенте.

 

Список примеров

В этом разделе можно ознакомиться с несколькими простыми примерами обработки событий. К файлам публикации прикреплена демонстрационная база с несколькими справочниками и документами. Каждый пример располагается в отдельном Расширении.

 

Пример 1: Привет, Мир!

Пример обработки события ПриНачалеРаботыСистемы

Расширение просто выводит сообщение при запуске программы.

 
 Объекты и модули Расширения

 

Пример 2: Перерасчет суммы в табличной части

Пример обработки события ПриИзменении

Расширение исправляет ошибку Конфигурации в документе "Поступление товаров", где в табличной части не пересчитывается сумма при изменении цены или количества. Форма документа не заимствуется.

 
 Объекты и модули Расширения

 

Пример 3: Добавление ссылки в форму списка

Пример обработки события ПриСозданииНаСервере

В Конфигурации, в списке документов "Поступление товаров" не выведены колонки "Поставщик" и "Склад" и нет поля "Ссылка", чтобы добавить нужные колонки через "Еще - Изменить форму". Расширение добавляет поле "Ссылка".

 
 Объекты и модули Расширения

 

Пример 4: Обработка команд

Пример обработки событий ОбработкаКоманды и ОбработкаКомандыФормы

Пример обработки в Расширении команд из Конфигурации: общей команды, команды объекта и команды формы. Все три типа команд выведены на форму элемента справочника Номенклатура. Пример обработки события ОбработкаКомандыФормы, которое добавлено во Фреймворке и отсутствует в Платформе.

 
  Объекты и модули Расширения

 

Пример 5: Добавление подбора в документ

Пример обработки событий ПриСозданииНаСервереОбработкаКомандыФормы и ОбработкаВыбора

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

 
 Объекты и модули Расширения

 

Выводы

Не надо заимствовать формы

Посмотрите ещё раз на список примеров. Во всех (кроме "Привет, Мир!", конечно) нужно было доработать формы. Но, в итоге, "ни одна форма не пострадала". Как и не потребовались общие модули СобытияФорм.

Для каждой задачи - свое Расширение 

Каждое решение находится в своем собственном, независимом Расширении. Если, например, разработчики Конфигурации исправят пересчет сумм, то Расширение с исправлением можно просто отключить одной галкой или удалить. Всё остальное продолжит работать по прежнему.

И главное

Не о такой ли простоте мы мечтали все долгие годы разработки? )
Готовое решение сейчас перед вами.
Попробуйте ещё свои кейсы на демобазе и приходите за покупкой!

 

Как установить демобазу с примерами

  • Скачать из файлов публикации архив с файлом 1cv8.1CD .
  • Распаковать этот архив в новую папку на компьютере.
  • Добавить путь к этой папке в программе запуска 1С.
  • Поехали!

 

 

ЕХТ Фреймворк Расширения Обработка событий

См. также

SALE! %

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

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

12000 10000 руб.

02.09.2020    162760    898    401    

879

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 руб.

20.08.2024    9300    72    32    

82

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

22200 руб.

06.10.2023    15936    39    8    

75

SALE! %

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

15000 10000 руб.

10.11.2023    10849    40    27    

65

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

9360 руб.

17.05.2024    24191    71    45    

121

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3840 руб.

14.01.2013    189032    1144    0    

915

SALE! %

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 15000 руб.

07.10.2021    17671    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

2220 руб.

21.02.2023    7982    8    36    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. sapervodichka 6918 21.10.22 22:03 Сейчас в теме
По сути - это динамический вывод элементов на формы, перехват команд и свои подписки на события, которые делались в основной конфигурации. Об этом ранее много статей и инструкций публиковалось. Ты предлагаешь всё тоже самое только через расширение организовать.
Хорошая альтернатива уже зарекомендовавшему себя подходу.
Я пока останусь на старом варианте, где модули перехватов и выводов вшиты в основную конфу. Расширения для быстрых исправлений и полностью автономных решений я конечно использую.
+1 за чёткое описание и бесплатный тест.
user1518453; mszsuz; +2 Ответить
2. mszsuz 336 22.10.22 00:08 Сейчас в теме
Вывод элементов на формы - это бантики, но мускулы Фреймворка - это обработка событий.
Не важно, есть ли в Конфигурации "модули перехватов и выводов" или их нет, необходимо и достаточно установить Фреймворк и тогда для обработки любого события потребуются всего лишь несколько строк кода.
4. German 413 07.11.22 08:07 Сейчас в теме
Ошибочно применять расширения там где они не нужны, если разрабатывать/дорабатывать не через расширения, то никаких проблем нет)))
5. TuneSoft 247 16.04.23 18:51 Сейчас в теме
Добрый день.

Скачал "1Cv8.1CD.zip".
Посмотрел в конфигураторе, в расширениях заимствованы объекты и у форм настроены обработчики событий.
Поясните, пожалуйста, в чём отличие вашей методики от обычного создания расширения с добавлением обработчиков мышкой ?

Может быть ваш установщик автоматически генерирует расширение "ЕХТ_Подписки" добавляя все объекты основной конфигурации с перехватом необходимых событий ? И далее в новых расширениях без заимствования объектов можно добавить обработчик ранее перехваченных событий ?

После изменения основной конфигурации "ЕХТ_Подписки" автоматически обновится и дополнится новыми объектами ?
Прикрепленные файлы:
6. TuneSoft 247 16.04.23 19:03 Сейчас в теме
Увидел после повторного прочтения публикации, лучше бы как-то выделить такое важное предложение и сделать покрупнее:

"Расширение ЕХТ_Подписки автоматически добавляется в информационную базу при активации лицензии и автоматически обновляется при обновлениях или изменениях Конфигурации."

Интересное решение, предыдущий вопрос снят.
7. mszsuz 336 16.04.23 19:27 Сейчас в теме
(5) Да, в служебное расширение Подписки автоматически включены все объекты Конфигурации и перехвачены все события. При возникновении любого события Фреймворк передает информацию о событии во все обработчики. При изменении Конфигурации, например после обновления, расширение Подписки обновляется автоматически.
(6) Спасибо за интерес к разработке!
8. vandalsvq 1591 04.07.23 11:19 Сейчас в теме
Интересное решение, сначала не сразу понял как реализовано, но перечитал повнимательнее, посмотрел скрины и врубился. Подскажите пожалуйста, а фреймворк собирает расширение "EXT_Подписки" автоматически через конфигуратор?
9. mszsuz 336 04.07.23 12:04 Сейчас в теме
(8) Про это хочу рассказать поподробнее.

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

Гифка процесса обновления

// Процесс начинается на стороне ИБ:

[18:52:50] [1/15] Проверка открытого конфигуратора
[18:52:50] [2/15] Проверка изменения конфигурации
[18:53:26] - Конфигурации изменена
[18:53:26] [3/15] Проверка расширения
[18:53:32] - Текущая версия: 3.2.1.3
[18:53:32] - Версия обработки: 3.2.1.3
[18:53:32] - Доступная версия: 3.2.1.3
[18:53:33] [4/15] Запрос по идентификатору конфигурации
[18:53:39] [5/15] Выгрузка конфигурации в файлы
[19:02:42] [6/15] Формирование описания конфигурации
[19:09:42] [7/15] Запрос по идентификатору описания конфигурации
[19:09:50] [8/15] Отправка описания конфигурации

// Тут сервис обновлений по запросу либо отдает готовое расширение, либо генерирует XML-файлы расширения и отдает в виде архива.

[19:09:53] [9/15] Подготовка файлов расширения

// Продолжение процесса на стороне ИБ:

[19:12:37] [10/15] Скачивание архива с файлами расширения
[19:12:54] [11/15] Распаковка архива с файлами расширения

// Здесь Конфигуратор собирает расширение из XML-файлов.

[19:14:46] [12/15] Создание расширения из файлов
[19:18:21] [14/15] Загрузка расширения в информационную базу
[19:22:43] [15/15] Обновление завершено
Прикрепленные файлы:
Оставьте свое сообщение