[ЕХТ] Фреймворк для Расширений 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С.
  • Поехали!

 

 

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

См. также

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

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

12000 руб.

02.09.2020    171714    960    403    

924

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

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

8400 руб.

20.08.2024    14262    108    46    

108

Инструментарий разработчика Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

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

9360 руб.

17.05.2024    27251    96    48    

137

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

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

22200 руб.

06.10.2023    17263    43    15    

75

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

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

15000 руб.

10.11.2023    11888    45    27    

67

SALE! %

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

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

4800 3840 руб.

14.01.2013    191166    1152    0    

920

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    1112    2    0    

5

Инструментарий разработчика Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    104112    244    100    

307
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. sapervodichka 6937 21.10.22 22:03 Сейчас в теме
По сути - это динамический вывод элементов на формы, перехват команд и свои подписки на события, которые делались в основной конфигурации. Об этом ранее много статей и инструкций публиковалось. Ты предлагаешь всё тоже самое только через расширение организовать.
Хорошая альтернатива уже зарекомендовавшему себя подходу.
Я пока останусь на старом варианте, где модули перехватов и выводов вшиты в основную конфу. Расширения для быстрых исправлений и полностью автономных решений я конечно использую.
+1 за чёткое описание и бесплатный тест.
user1518453; mszsuz; +2 Ответить
2. mszsuz 337 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 337 16.04.23 19:27 Сейчас в теме
(5) Да, в служебное расширение Подписки автоматически включены все объекты Конфигурации и перехвачены все события. При возникновении любого события Фреймворк передает информацию о событии во все обработчики. При изменении Конфигурации, например после обновления, расширение Подписки обновляется автоматически.
(6) Спасибо за интерес к разработке!
8. vandalsvq 1592 04.07.23 11:19 Сейчас в теме
Интересное решение, сначала не сразу понял как реализовано, но перечитал повнимательнее, посмотрел скрины и врубился. Подскажите пожалуйста, а фреймворк собирает расширение "EXT_Подписки" автоматически через конфигуратор?
9. mszsuz 337 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] Обновление завершено
Прикрепленные файлы:
Оставьте свое сообщение