ДокументОбъект.<Имя документа>.ОбработкаФормированияПоВерсииИсторииДанных

События · GenerateFromDataHistoryVersionProcessing

Возникает при формировании объекта по версии истории данных.

Синтаксис

ОбработкаФормированияПоВерсииИсторииДанных(<ДанныеВерсии>, <НомерВерсии>, <ИсключитьДанные>, <СтандартнаяОбработка>)
Полное описание, параметры и ограничения

ДокументОбъект.<Имя документа>.ОбработкаФормированияПоВерсииИсторииДанных (DocumentObject.<Document name>.GenerateFromDataHistoryVersionProcessing)

ДокументОбъект.<Имя документа> (DocumentObject.<Document name>)

ОбработкаФормированияПоВерсииИсторииДанных (GenerateFromDataHistoryVersionProcessing)

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

Синтаксис:
ОбработкаФормированияПоВерсииИсторииДанных(<ДанныеВерсии>, <НомерВерсии>, <ИсключитьДанные>, <СтандартнаяОбработка>)
Параметры:

<ДанныеВерсии>
Тип: ФиксированнаяСтруктура.
Фиксированная структура с данными версии, по которой выполняется формирование.

<НомерВерсии>
Тип: Число.
Номер версии, по которой выполняется формирование.

<ИсключитьДанные>
Тип: Массив.
Массив с именами полей и табличных частей, которые будут исключены из стандартной обработки.

<СтандартнаяОбработка>
Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет. Отказ от стандартной обработки не отменяет действие.
Значение по умолчанию: Истина.
Описание:

Возникает при формировании объекта по версии истории данных.

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

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

См. также:
МенеджерИсторииДанных, метод СформироватьПоВерсии

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

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

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

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

Пометить сформированную по истории копию: УчебнаяЗаявкаИстории

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

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

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

Подготовка

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

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

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

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

  5. Модуль объекта своего объекта, а для регистра — модуль набора записей, для константы — модуль менеджера значения. Процедуру назначьте соответствующему событию.

  6. Дополнительный блок выполняйте в собственной обработке отдельно: он читает первую реально существующую версию только своих метаданных. Не добавляйте Копия.Записать(): предварительный просмотр и восстановление с записью — разные действия.

Процедура ОбработкаФормированияПоВерсииИсторииДанных(ДанныеВерсии, НомерВерсии, ИсключитьДанные, СтандартнаяОбработка)
    ДополнительныеСвойства.Вставить("СозданИзИстории", Истина);
    ДополнительныеСвойства.Вставить("ТребуетПодтверждения", Истина);
    ИсключитьДанные.Добавить("КомментарийИстории");
    ДополнительныеСвойства.Вставить("НомерИсходнойВерсии", НомерВерсии);
    Сообщить("Подготовлена только копия собственных данных для просмотра");
КонецПроцедуры
Своя обработка, сервер / толстый клиент: сформировать копию по действительно существующей версии, без записи
Отбор = Новый Структура("Метаданные", Метаданные.Документы.УчебнаяЗаявкаИстории);
Версии = ИсторияДанных.ВыбратьВерсии(Отбор, "Данные,НомерВерсии", "НомерВерсии Возр", 1);
Если Версии.Количество() = 0 Тогда
    Сообщить("В своей истории пока нет сформированных версий");
    Возврат;
КонецЕсли;
Версия = Версии[0];
Копия = ИсторияДанных.СформироватьПоВерсии(Версия.Данные, Версия.НомерВерсии);
Если Копия.ДополнительныеСвойства.Свойство("СозданИзИстории", Маркер) Тогда
    Сообщить("Свой обработчик пометил копию: " + Строка(Маркер));
Иначе
    Сообщить("Проверьте назначение своего обработчика");
КонецЕсли;

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

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

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

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

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

  1. Два собственных признака находятся в ДополнительныеСвойства копии. Вызывающий код действительно читает маркер; запись копии в базу не выполняется.

  2. У события константы, плана обмена и плана видов расчёта сигнатура без параметров. У задачи СтандартнаяОбработка находится перед ИсключитьДанные; у регистра есть КлючЗаписи.

  3. КомментарийИстории намеренно исключён из стандартного заполнения. В новой копии он не обещается равным текущему комментарию базы: это пропуск исторического поля, не автоматическое сохранение текущего значения.

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

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

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

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

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

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

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

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

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

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

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