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