Возникает при формировании объекта по версии истории данных.
Синтаксис
ОбработкаФормированияПоВерсииИсторииДанных(<ДанныеВерсии>, <НомерВерсии>, <ИсключитьДанные>, <СтандартнаяОбработка>)Полное описание, параметры и ограничения
ДокументОбъект.<Имя документа>.ОбработкаФормированияПоВерсииИсторииДанных (DocumentObject.<Document name>.GenerateFromDataHistoryVersionProcessing)
ДокументОбъект.<Имя документа> (DocumentObject.<Document name>)
ОбработкаФормированияПоВерсииИсторииДанных (GenerateFromDataHistoryVersionProcessing)
Доступен, начиная с версии 8.3.13.
Синтаксис:
ОбработкаФормированияПоВерсииИсторииДанных(<ДанныеВерсии>, <НомерВерсии>, <ИсключитьДанные>, <СтандартнаяОбработка>)
Параметры:
<ДанныеВерсии>
Тип: ФиксированнаяСтруктура.
Фиксированная структура с данными версии, по которой выполняется формирование.
<НомерВерсии>
Тип: Число.
Номер версии, по которой выполняется формирование.
<ИсключитьДанные>
Тип: Массив.
Массив с именами полей и табличных частей, которые будут исключены из стандартной обработки.
<СтандартнаяОбработка>
Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет. Отказ от стандартной обработки не отменяет действие.
Значение по умолчанию: Истина.
Описание:
Возникает при формировании объекта по версии истории данных.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
См. также:
МенеджерИсторииДанных, метод СформироватьПоВерсии
Использование в версии:
Доступен, начиная с версии 8.3.13.
Методическая информация
Практические примеры
Пометить сформированную по истории копию: УчебнаяЗаявкаИстории
Точный контракт события истории данных и конкретный собственный объект, без ручного вызова процедуры вместо события платформы.
Где и как запускать
Собственный модуль менеджера / объекта / набора записей согласно подготовке; сервер / толстый клиент.
Подготовка
Только собственная отдельная учебная база. Создайте Документы → УчебнаяЗаявкаИстории. Свой непроводимый документ с реквизитом КомментарийИстории Строка 100. Создайте одну собственную заявку и вручную измените комментарий.
У этого своего объекта включите ИсторияДанных; у дополнительного поля КомментарийИстории, если оно используется, также включите участие в истории. Подготовьте две версии только собственных данных; включение флага само не создаёт задним числом версии.
Дождитесь штатного обновления своей истории. Для ручного обновления выбирайте конкретные свои данные / свои метаданные и не вызывайте бесконтрольное ОбновитьИсторию() без отбора в рабочей базе.
Обработчик разместите в указанном модуле объекта / менеджера; директивы управляемой формы и первый параметр Элемент здесь не нужны. BSL, запись собственных данных и обновление истории при сборке HTML не выполнялись.
Модуль объекта своего объекта, а для регистра — модуль набора записей, для константы — модуль менеджера значения. Процедуру назначьте соответствующему событию.
Дополнительный блок выполняйте в собственной обработке отдельно: он читает первую реально существующую версию только своих метаданных. Не добавляйте Копия.Записать(): предварительный просмотр и восстановление с записью — разные действия.
Процедура ОбработкаФормированияПоВерсииИсторииДанных(ДанныеВерсии, НомерВерсии, ИсключитьДанные, СтандартнаяОбработка)
ДополнительныеСвойства.Вставить("СозданИзИстории", Истина);
ДополнительныеСвойства.Вставить("ТребуетПодтверждения", Истина);
ИсключитьДанные.Добавить("КомментарийИстории");
ДополнительныеСвойства.Вставить("НомерИсходнойВерсии", НомерВерсии);
Сообщить("Подготовлена только копия собственных данных для просмотра");
КонецПроцедурыСвоя обработка, сервер / толстый клиент: сформировать копию по действительно существующей версии, без записи
Отбор = Новый Структура("Метаданные", Метаданные.Документы.УчебнаяЗаявкаИстории);
Версии = ИсторияДанных.ВыбратьВерсии(Отбор, "Данные,НомерВерсии", "НомерВерсии Возр", 1);
Если Версии.Количество() = 0 Тогда
Сообщить("В своей истории пока нет сформированных версий");
Возврат;
КонецЕсли;
Версия = Версии[0];
Копия = ИсторияДанных.СформироватьПоВерсии(Версия.Данные, Версия.НомерВерсии);
Если Копия.ДополнительныеСвойства.Свойство("СозданИзИстории", Маркер) Тогда
Сообщить("Свой обработчик пометил копию: " + Строка(Маркер));
Иначе
Сообщить("Проверьте назначение своего обработчика");
КонецЕсли;Разбор по шагам
Подготовьте собственный объект и настоящие версии его истории.
Назначьте обработчик в точном модуле.
Выполните показанное штатное действие / дополнительный код и проверьте фактический журнал или маркер копии.
Как проверить результат
Два собственных признака находятся в ДополнительныеСвойства копии. Вызывающий код действительно читает маркер; запись копии в базу не выполняется.
У события константы, плана обмена и плана видов расчёта сигнатура без параметров. У задачи СтандартнаяОбработка находится перед ИсключитьДанные; у регистра есть КлючЗаписи.
КомментарийИстории намеренно исключён из стандартного заполнения. В новой копии он не обещается равным текущему комментарию базы: это пропуск исторического поля, не автоматическое сохранение текущего значения.
Ожидаемый результат
Показана прикладная реакция на реальную фазу истории данных, а не выдуманный номер версии.
На что обратить внимание
Не вызывайте обновление истории рекурсивно из её обработчиков.
Свойства безопасности разделения и права истории не обходятся.
BSL, обработка истории и запись журнала при сборке HTML не выполнялись.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.