Как автоматизировать работу с настройками истории данных при обновлении конфигураций 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При регулярном обновлении типовых конфигураций разработчики часто сталкиваются с рутинной задачей: при сравнении и объединении приходится вручную снимать флажки со свойства ИсторияДанных для множества справочников, документов и регистров сведений. Это необходимо, если в вашей конфигурации ведется история изменений средствами платформы, а у поставщика данная опция отключена. Давайте разберемся, как оптимизировать этот процесс и избежать ошибок.

Анализ проблемы и риски ручного вмешательства

Важно понимать, что свойство ИсторияДанных является частью метаданных объекта. На текущий момент платформа 1С не предоставляет встроенного механизма, позволяющего «исключить» это свойство из процесса сравнения конфигураций глобально. Многие пытаются редактировать файлы настроек объединения в формате XML, но это трудоемкий путь, который не всегда гарантирует корректность метаданных.

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

Способ решения: программная настройка после обновления

Вместо попыток «обмануть» конфигуратор, профессиональный подход заключается в принятии изменений поставщика при объединении с последующим принудительным восстановлением ваших настроек. Это позволяет сохранить целостность конфигурации и автоматизировать процесс.

Для управления настройками истории данных используйте объект НастройкиИсторииДанных. Вы можете создать внешнюю обработку, которая будет запускаться после завершения обновления информационной базы. Эта обработка пройдет по списку необходимых объектов метаданных и применит нужные правила.

Пример реализации программной настройки

Разберем, как программно включить историю для конкретного документа с настройкой полей:


Настройки = Новый НастройкиИсторииДанных;
Настройки.Использование = Истина;
Настройки.ИспользованиеПолей.Вставить("Комментарий", Истина);
Настройки.ИспользованиеПолей.Вставить("Товары.Цена", Истина);
ИсторияДанных.УстановитьНастройки(Метаданные.Документы.Заказ, Настройки);

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

Почему это наиболее эффективный путь?

  1. Надежность: Использование стандартного API ИсторияДанных гарантирует, что платформа корректно выполнит все необходимые преобразования таблиц.
  2. Скорость: Вам не нужно тратить время на анализ списка изменений в окне сравнения — вы просто автоматизируете «пост-обработку».
  3. Целостность: Метаданные конфигурации остаются чистыми, а риск возникновения ошибок при обновлении сводится к минимуму.

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

Заключение

Не стремитесь менять сам процесс сравнения — работайте с результатом. Используя методы встроенного языка для управления ИсторияДанных, вы обеспечите стабильность системы и избавитесь от рутинной работы при каждом обновлении типовых решений.

← На главную