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

21.10.22

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

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

Скачать файл

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

Наименование SM По подписке Купить один файл
1Cv8.1CD.zip
.zip 12,61Mb
79
79
0 SM
Скачать

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

 

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

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

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

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

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

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

 

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

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

 

 

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

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

 

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

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

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

 

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

 

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

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

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

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

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

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

 

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

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

 

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

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

 

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

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

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

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

 

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

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

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

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

 

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

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

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

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

 

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

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

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

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

 

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

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

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

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

 

Выводы

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

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

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

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

И главное

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

 

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

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

 

 

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

См. также

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

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

10000 руб.

02.09.2020    135993    750    391    

779

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

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

18000 руб.

06.10.2023    10770    25    6    

55

Инструментарий разработчика Программист Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Платные (руб)

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

5400 руб.

17.05.2024    7798    20    14    

51

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

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

10000 руб.

10.11.2023    6690    18    2    

44

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

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

3600 руб.

14.01.2013    180914    1101    0    

874

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

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

15000 руб.

07.10.2021    15744    3    12    

38

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

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

5000 руб.

07.02.2018    100785    241    97    

300

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

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    24253    17    15    

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

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

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

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

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

Интересное решение, предыдущий вопрос снят.
7. mszsuz 330 16.04.23 19:27 Сейчас в теме
(5) Да, в служебное расширение Подписки автоматически включены все объекты Конфигурации и перехвачены все события. При возникновении любого события Фреймворк передает информацию о событии во все обработчики. При изменении Конфигурации, например после обновления, расширение Подписки обновляется автоматически.
(6) Спасибо за интерес к разработке!
8. vandalsvq 1563 04.07.23 11:19 Сейчас в теме
Интересное решение, сначала не сразу понял как реализовано, но перечитал повнимательнее, посмотрел скрины и врубился. Подскажите пожалуйста, а фреймворк собирает расширение "EXT_Подписки" автоматически через конфигуратор?
9. mszsuz 330 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] Обновление завершено
Прикрепленные файлы:
Оставьте свое сообщение