Программное событие "ПослеЗавершенияТранзакции"

09.06.20

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

Подсистема программного события "ПослеЗавершенияТранзкации". Сбор и хранение сведений о событиях записи в разрезе транзакций.

Файлы

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

Наименование Скачано Купить файл
Программное событие "ПослеЗавершенияТранзакции":
.zip 375,22Kb ver:1
0 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

В продолжение публикации barelpro Обработчик "После завершения транзакции"

Зачем это надо

Любая постобработка после завершения транзакций, чаще всего

  • Обмен данными с внешними системами
  • Любые дополнения данных, для которых необходимо понимать состав транзакции

На текущий момент

Известно 3 варианта решения

1. Регламентные задания - в транзакции записывается регл. задание и автоматически запускается после ее завершения

  • Плюс - простота реализации
  • Минус - полная зависимость по времени запуска от неуправляемого менеджера регл. заданий, задержки при запуске, как следствие невозможно накопить данные о составе

2. MSSQL триггеры - срабатывание события на стороне сервера БД и вызов 1С

  • Плюс - решение кажется наиболее надежным, на стороне сервера БД ничего не потеряется
  • Минус - сложность реализации, разработки и поддержки. Не чистый 1С, модификация затреднена

3. Взаимоблокировки в фоновых заданиях

  • Плюс - по тестам наиболее быстрый вариант срабатывания, возможность адекватной привязки событий записи к выполняемым транзакциям
  • Минус - сравнительная сложность реализации по сравнению с вариантом регламентных заданий

Данная разработка реализует третий вариант организации события ПослеЗавершенияТранзакции

Алгоритм данной реализации

Блок-схема

 

 Блок-схема

 

Возможности реализации:

  • Хранение сведений о событиях записи с привязкой к транзакциям
  • С указанием состава контролируемых типов
  • Вызов метода подписки при завершении транзакции

Требования:

1С Предприятие версии >= 8.3.9

Установка:

1. Установить расширения

Для расширений снять флаги Безопасный режим и Защита от опасных действий

2. Сравнить, объединить с конфигурацией подсистемы (Скачать). При объединении конфигураций снять флаг с ветки свойства!

3. В начало метода УстановкаПараметровСеанса модуля сеанса добавить

	// Подсистема события ПослеЗавершенияТранзакции
	Если ИменаПараметровСеанса = Неопределено Тогда
		пзт_Подсистема.Инициализировать();
	КонецЕсли;
	// Конец Подсистема события ПослеЗавершенияТранзакции

Готово!

Использование:

Настройка

В обработке ПЗТ. Настройки необходимо включить использование подсистемы и задать состав наблюдаемых объектов. Для применения настроек перезапустить сеансы.

Добавление своего функционала

Создать обработку, реализующую в модуле объекта интерфейс, объявленный в Обработка.пзтр_АдаптерСобытия

Добавить в обработчики событий ПослеЗавершенияТранзакции, ПередЗаписью, ПриЗаписи, ОбработкаПотерянныхТранзакций желаемый функционал

Назначить созданную обработку активным адаптером для вида ПЗТ. Подписка на события. Для этого в обработке ОМ. Управление адаптерами

  • По кнопке Адаптеры добавляем новую обработку в качестве адаптера для вида ПЗТ. Подписка на события
  • Назначаем добавленный адаптер активным для вида ПЗТ. Подписка на события
  • Перезапускаем сеансы

Готово!

Интерфейс и данные

ОбщийМодуль.пзт_Транзакции содержит методы управления программными транзакциями

  • УникальныйИдентификатор Начать() - возвращает идентификатор созданной транзакции
  • Булево Активна(Транзакция) - Истина, если заданная программная транзакция активна
  • Булево Завершена(Транзакция) - Истина, если заданная программная транзакция завершена
  • Булево Отменена(Транзакция) - Истина, если заданная программная транзакция отменена
  • УникальныйИдентификатор Текущая() - возвращает идентификатор текущей программной транзакции

Используются 4 регистра сведений

  • пзт_Транзакции - список завершившихся транзакций
  • пзт_СоставТранзакцийОбъекты - сведения о событиях объектов (Справочник, Документ, ...) в разрезе транзакций, условных идентификаторов программных объектов записи и версий записи
  • пзт_СоставТранзакцийРегистры - аналогичные сведения для регистров. Для независимых регистров сведений отбор хранится в сериализованном виде
  • пзт_ТранзакцииОжидающиеОбработку - список успешно завершившихся транзакций с длительностью превышающей интервал ожидания завершения транзакции

Каждый час вызывается предопределенное регламентное задание ПЗТ. Обработка потерянных транзакций для сбора сведений о "подвисших" транзакциях (с длительностью выше таймаута периода ожидания), собранные данные передаются в адаптер событий.

Отчетность:

ПЗТ. Транзакции - выводит информацию о транзакциях, принадлежащих им событиям. 

Известные баги:

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

Причина - пауза ожидания в потоке наблюдения, минимальное значения которой 1 сек.

Путь обхода - в явном виде, принудительно начинать программную транзакцию для каждой системной транзакции:

// Вместо
Объект.Записать();
// Использовать
НачатьТранзакцию();
пзт_Транзакция.Начать();
Объект.Записать();
ЗафиксироватьТранзакцию();

 

Вступайте в нашу телеграмм-группу Инфостарт

ПослеЗавершенияТранзакции

См. также

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

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

15500 руб.

02.09.2020    219674    1201    413    

1061

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

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

14400 руб.

20.08.2024    44605    246    123    

227

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    27996    73    30    

101

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

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

9500 руб.

17.05.2024    39805    145    57    

183

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

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

9900 руб.

25.08.2025    13425    19    7    

31

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

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

16000 руб.

10.11.2023    19788    76    39    

92

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

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 руб.

22.11.2024    2690    2    0    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. NoRazum 30 12.01.22 17:31 Сейчас в теме
Скачал думаю для интереса посмотреть что до как.
три расширения

Открыл обработку.пзтр_АдаптерСобытия

идут запросы к регистру сведений
в расширениях этих регистров нету
Рабочего примера не увидел.
Но кода много )))
2. shmalevoz 312 13.01.22 09:28 Сейчас в теме
(1) Скачать последнюю версию Страница проекта
Спасибо за сигнал, простите, как оказалось скрипт не включал в архив сборки файлы с русскими именами. После переименования архив собрался корректно. Заодно подтянуты и свежие версии библиотек.
Для отправки сообщения требуется регистрация/авторизация