ПараметрыЗаписиИсторииДанных

Типы · WriteDataHistoryParameters

Описывает параметры истории данных, используемые при записи версии.

Полное описание, параметры и ограничения

ПараметрыЗаписиИсторииДанных (WriteDataHistoryParameters)

ПараметрыЗаписиИсторииДанных (WriteDataHistoryParameters)

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

Свойства:
ВыполнятьОбработкуПослеЗаписиВерсии (ExecuteAfterWriteVersionProcessing)
ДополнительныеДанные (AdditionalData)
КомментарийВерсии (VersionComment)
ОбновлятьИсториюСразуПослеЗаписи (UpdateHistoryImmediatelyAfterWrite)
Отказ (Cancel)
ПредставленияПолейДополнительныхДанных (AdditionalDataFieldsPresentations)

Методы:
ДобавитьДополнительныеДанные (AddAdditionalData)
ДобавитьПредставлениеПоляДополнительныхДанных (AddAdditionalDataFieldPresentation)

Описание:

Описывает параметры истории данных, используемые при записи версии.

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

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

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

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

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

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

Подготовить дополнительные данные истории без создания версии

ПараметрыЗаписиИсторииДанных — настройки будущей записи, не уже созданная версия. Добавляем собственную цену и таблицу штрихкодов с подписями, оставляя объект незаписанным.

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

  5. Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.


Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
    ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
КонецЕсли;
Товар = Справочники.УчебныеТовары.СоздатьЭлемент();
Товар.Наименование = "Учебная книга";
Товар.Артикул = "A-01";
Товар.Цена = 250;
СтрокаШтрихкода = Товар.Штрихкоды.Добавить();
СтрокаШтрихкода.Штрихкод = "TRAINING-A-01";
СтрокаШтрихкода.Основной = Истина;
История = Товар.ЗаписьИсторииДанных;
История.КомментарийВерсии = "Учебная подготовка цены и штрихкода";
История.Отказ = Ложь;
История.ОбновлятьИсториюСразуПослеЗаписи = Ложь;
История.ВыполнятьОбработкуПослеЗаписиВерсии = Ложь;
История.ДобавитьДополнительныеДанные("УчебнаяЦена", Товар.Цена, "Цена учебного товара");
История.ДобавитьДополнительныеДанные("УчебныеШтрихкоды", Товар.Штрихкоды.Выгрузить(), "Штрихкоды учебного товара");
История.ДобавитьПредставлениеПоляДополнительныхДанных("УчебнаяЦена", "ru", "Учебная цена");
История.ДобавитьПредставлениеПоляДополнительныхДанных("УчебнаяЦена", "Цена для упражнения");
Сообщить(История.КомментарийВерсии = "Учебная подготовка цены и штрихкода");
Сообщить(Не История.Отказ);
Сообщить(Не История.ОбновлятьИсториюСразуПослеЗаписи);
Сообщить(Не История.ВыполнятьОбработкуПослеЗаписиВерсии);
Сообщить(История.ДополнительныеДанные.УчебнаяЦена = 250);
Сообщить(История.ДополнительныеДанные.УчебныеШтрихкоды.Количество() = 1);
Сообщить(История.ПредставленияПолейДополнительныхДанных.Получить("УчебнаяЦена:ru") = "Учебная цена");
Сообщить(Товар.ЭтоНовый());

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

  1. Контейнер получаем из свойства нового товара. Само свойство только для чтения, но его параметры можно изменять.

  2. Дополнительное поле УчебнаяЦена и таблица УчебныеШтрихкоды относятся к дополнительным данным версии, а не создают реквизиты метаданных.

  3. Первый метод добавляет данные вместе с подписью; второй задаёт подпись на ru и отдельным вариантом подпись по умолчанию.

  4. Флаги будущего обновления/обработки оставляем Ложь. Записать не вызывается: эти настройки не доказывают появления версии истории.

  5. Запись истории также зависит от её использования в конфигурации; Отказ=Ложь сам по себе историю не включает.

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

  1. Восемь сообщений Истина; цена дополнительных данных 250, в дополнительной таблице одна собственная строка.

  2. В объекте всё ещё ЭтоНовый=Истина и рабочие версии истории не изменились этим фрагментом.

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

Подготовлен понятный проект параметров истории с данными и подписями без записи объекта.

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

  1. Комментарий версии ограничен 1024 символами; длинные строки будут обрезаны.

  2. Если дополнительная таблица содержит НомерСтроки/LineNumber, действуют требования сортировки и последовательных номеров.

  3. Не используйте Отказ=Истина для обхода требований аудита рабочей системы.

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

Разобрать устаревший метод комментария истории

Старый метод без параметров не рекомендуется с 8.3.15. У собственного черновика показываем отдельный диагностический вызов и затем современное свойство без записи версии.

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

  5. Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.

  6. В отдельной пустой конфигурации Учебная85 создайте Планы обмена → УчебныйОбмен: длина кода 9, тип Строка, наименование длиной 100. Распределённая информационная база выключена; состав плана пустой.

  7. Добавьте реквизит АдресУчебногоУзла: Строка длиной 100, Проверка заполнения = Показывать ошибку. Модуль объекта и подписки должны быть пустыми; не добавляйте отправку сообщений или внешние действия.

  8. Добавьте макет УчебнаяПамятка типа Текстовый документ, одна строка: Этот узел используется только для учебных примеров. История данных для плана не включена. Обновите конфигурацию базы данных.

  9. Каждый фрагмент запускайте отдельно на сервере в ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи. УчебныйОбмен не является существующим рабочим обменом КА2 или УТ.

  10. Узел каждый раз новый и периферийный. Существующие узлы и текущий узел базы не меняются. Запись, блокировка и удаление далее выполняются только над своим новым UUID в собственной отменяемой транзакции.

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

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

  1. В локальной справке старый метод имеет синтаксис без аргументов и помечен Не рекомендуется с 8.3.15.

  2. Для знакомства с наследуемым кодом вызываем его только на своём новом черновике. Возможная ошибка показана пользователю, а не скрыта.

  3. В новом коде используется ЗаписьИсторииДанных.КомментарийВерсии — явная строка у параметров будущей записи.

  4. История в учебном плане выключена и Записать не вызывается. Поэтому не объявляем созданную версию или сохранённый комментарий.

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

  1. Три итоговые проверки Истина; диагностическое сообщение старого вызова может быть успешным или содержать явную ошибку.

  2. Объект остаётся новым с пустой ссылкой. Никакая версия истории не проверяется как записанная.

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

Разобраны граница устаревшего API и рекомендуемое современное свойство.

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

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

  2. Не добавляйте выдуманный строковый параметр старому методу: локальная справка его не объявляет.

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

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

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

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

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