ЗадачаМенеджер.<Имя задачи>.ОбработкаПослеЗаписиВерсийИсторииДанных

События · AfterWriteDataHistoryVersionsProcessing

Обработчик вызывается после создания версий, отдельным вызовом метода ВыполнитьОбработкуПослеЗаписиВерсий либо в рамках вызова ОбновитьИсторию при указании необходимости выполнения обработки. Обработчик выполняется с установленным безопасным режимом разделения для всех независимых разделителей конфигурации - переключение в другую область данных будет запрещено. Исключение в обработчике приводит к прерыванию выполнения обработки остальных версий в очереди, поэтому рекомендуется не допускать возникновения исключений. Элементы коллекции информации о записи версий отсортированы по возрастанию данных, по которым создаются версии, и номеров версий. В обработчик передается не более 1000 элементов. Рекомендуется обрабатывать исключения, возникающие в вызываемых механизмах, с целью не прерывать обработку после записи. Рекомендуется создать регламентное задание, удаляющее из обработки версии, созданные ранее определенной даты. Для этого в задании следует вызвать метод УдалитьИзОбработкиПослеЗаписиВерсий с указанием даты.

Синтаксис

ОбработкаПослеЗаписиВерсийИсторииДанных(<ИнформацияОЗаписиВерсий>)
Полное описание, параметры и ограничения

ЗадачаМенеджер.<Имя задачи>.ОбработкаПослеЗаписиВерсийИсторииДанных (TaskManager.<Task name>.AfterWriteDataHistoryVersionsProcessing)

ЗадачаМенеджер.<Имя задачи> (TaskManager.<Task name>)

ОбработкаПослеЗаписиВерсийИсторииДанных (AfterWriteDataHistoryVersionsProcessing)

Доступен, начиная с версии 8.3.15.

Синтаксис:
ОбработкаПослеЗаписиВерсийИсторииДанных(<ИнформацияОЗаписиВерсий>)
Параметры:

<ИнформацияОЗаписиВерсий>
Тип: КоллекцияИнформацииОЗаписиВерсииИсторииДанных.
Содержит информацию о записи версий истории данных.
Описание:

Обработчик вызывается после создания версий, отдельным вызовом метода ВыполнитьОбработкуПослеЗаписиВерсий либо в рамках вызова ОбновитьИсторию при указании необходимости выполнения обработки.
Обработчик выполняется с установленным безопасным режимом разделения для всех независимых разделителей конфигурации - переключение в другую область данных будет запрещено.
Исключение в обработчике приводит к прерыванию выполнения обработки остальных версий в очереди, поэтому рекомендуется не допускать возникновения исключений.
Элементы коллекции информации о записи версий отсортированы по возрастанию данных, по которым создаются версии, и номеров версий.
В обработчик передается не более 1000 элементов.
Рекомендуется обрабатывать исключения, возникающие в вызываемых механизмах, с целью не прерывать обработку после записи.
Рекомендуется создать регламентное задание, удаляющее из обработки версии, созданные ранее определенной даты. Для этого в задании следует вызвать метод УдалитьИзОбработкиПослеЗаписиВерсий с указанием даты.

Доступность:

Сервер, толстый клиент, внешнее соединение.

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

Доступен, начиная с версии 8.3.15.

Методическая информация

Практические примеры

После записи версий: собственный журнал УчебныеСогласования

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

Где и как запускать

Собственный модуль менеджера / объекта / набора записей согласно подготовке; сервер / толстый клиент.

Подготовка

  1. Только собственная отдельная учебная база. Создайте Задачи → УчебныеСогласования. Используйте собственную задачу из подготовки маршрута. Добавьте КомментарийИстории Строка 100; изменяйте только собственную записанную невыполненную задачу.

  2. Работайте в отдельной пустой учебной конфигурации. Создайте справочник УчебныеИсполнители и предопределённый элемент Демонстрационный с наименованием Учебный исполнитель.

  3. Создайте задачу УчебныеСогласования: строковый номер длиной 12, автонумерация, наименование длиной 100. Добавьте реквизит адресации Исполнитель типа СправочникСсылка.УчебныеИсполнители и выберите его основным реквизитом адресации. Здесь используется прямая адресация; регистр ролевой адресации не нужен.

  4. Создайте параметр сеанса УчебныйИсполнитель того же ссылочного типа. В свойстве задачи Текущий исполнитель выберите этот параметр. Запросы урока передают исполнителя явно и не зависят от начального значения параметра сеанса.

  5. Создайте бизнес-процесс УчебноеСогласование со строковым номером длиной 12 и автонумерацией. В свойстве Задача выберите УчебныеСогласования. Карта маршрута: Старт (начало) → Согласовать (действие) → Завершение. В точке Согласовать задайте адресацию Исполнитель = Демонстрационный, Групповая = Ложь.

  6. И у задачи, и у бизнес-процесса создайте обычные реквизиты КомментарийУчебный (Строка 100), Сумма (Число 12.2), Подтверждено (Булево), ЗапретУдаления (Булево). Добавьте табличную часть Детали с колонками Наименование (Строка 100) и Количество (Число 10.0).

  7. У этого своего объекта включите ИсторияДанных; у дополнительного поля КомментарийИстории, если оно используется, также включите участие в истории. Подготовьте две версии только собственных данных; включение флага само не создаёт задним числом версии.

  8. Дождитесь штатного обновления своей истории. Для ручного обновления выбирайте конкретные свои данные / свои метаданные и не вызывайте бесконтрольное ОбновитьИсторию() без отбора в рабочей базе.

  9. Обработчик разместите в указанном модуле объекта / менеджера; директивы управляемой формы и первый параметр Элемент здесь не нужны. BSL, запись собственных данных и обновление истории при сборке HTML не выполнялись.

  10. Модуль менеджера своего объекта. Штатная обработка после записи версий должна быть включена; обновление истории без этой обработки не обязано вызвать событие.

  11. Для проверки откройте журнал регистрации своей учебной базы с отбором по УчебнаяИстория.УчебныеСогласования. Не внедряйте в такой обработчик сеть или намеренные исключения: исключение прерывает последующую обработку очереди.

Процедура ОбработкаПослеЗаписиВерсийИсторииДанных(ИнформацияОЗаписиВерсий)
    ЧислоВерсий = ИнформацияОЗаписиВерсий.Количество();
    Если ЧислоВерсий = 0 Тогда
        Возврат;
    КонецЕсли;
    Комментарий = "Обработана партия собственных версий: " + Строка(ЧислоВерсий);
    ЗаписьЖурналаРегистрации("УчебнаяИстория.УчебныеСогласования", УровеньЖурналаРегистрации.Информация,
        , , Комментарий);
КонецПроцедуры

Разбор по шагам

  1. Подготовьте собственный объект и настоящие версии его истории.

  2. Назначьте обработчик в точном модуле.

  3. Выполните показанное штатное действие / дополнительный код и проверьте фактический журнал или маркер копии.

Как проверить результат

  1. Одна запись собственного события на партию, без имён пользователей, содержимого версии и повторного сохранения объекта.

  2. Количество относится к текущей переданной партии, не ко всей истории. В одном вызове не более 1000 элементов; чужие области данных не переключаются.

Ожидаемый результат

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

На что обратить внимание

  1. Не вызывайте обновление истории рекурсивно из её обработчиков.

  2. Свойства безопасности разделения и права истории не обходятся.

  3. BSL, обработка истории и запись журнала при сборке HTML не выполнялись.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.