Как исправить ошибку «Значение не является значением объектного типа (Код)» при обновлении конфигурации 1С?

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

При обновлении типовых конфигураций 1С (таких как 1С:Бухгалтерия 8 или 1С:Зарплата и управление персоналом) администраторы и программисты иногда сталкиваются с критической ошибкой реструктуризации базы данных. В журнале регистрации или в окне сообщений выводится исключение следующего вида:

Ошибка при обновлении конфигурации: {ОбщийМодуль.ОбменСообщениямиВнутренний.Модуль(370)}: Значение не является значением объектного типа (Код)

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

Разберем подробно причины возникновения этой неисправности и рассмотрим проверенные алгоритмы её устранения.

Причины возникновения ошибки

Проанализируем техническую суть происходящего сбоя. В платформе 1С:Предприятие 8.3 механизм работы с предопределенными элементами справочников был существенно изменен: связи задаются не только по внутреннему имени метаданных, но и через уникальные идентификаторы (GUID), хранящиеся в специальных таблицах базы данных.

К возникновению коллизии приводят следующие факторы:

  1. Технологический баг реструктуризации в некоторых релизах платформы 8.3. При обновлении метаданных платформа некорректно обрабатывает таблицу предопределенных элементов, из-за чего создает дублирующие записи или разрушает ссылку на объект ЭтаКонечнаяТочка в механизме обмена сообщениями.
  2. Пропуск промежуточных релизов. Если обновление выполняется через несколько версий сразу («через шаг»), а разработчик типового решения менял структуру предопределенных элементов или переносил их в архивные справочники (с префиксом Удалить...), платформа не может корректно сопоставить данные.
  3. Рассинхронизация узлов РИБ. Редактирование состава предопределенных элементов в подчиненном узле до получения полного файла изменений из главного узла приводит к конфликту идентификаторов.
  4. Повреждение ссылочной целостности базы данных. Наличие битых ссылок в служебных таблицах подсистемы «Облачный документооборот» или «Обмен сообщениями».

Решение 1: Запуск процедуры «Тестирование и исправление» в Конфигураторе

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

Важно: Перед выполнением любых регламентных операций обязательно создайте полную резервную копию информационной базы (выгрузку .dt или копию файла 1Cv8.1CD).

Рассмотрим пошаговый порядок действий:

  1. Запустите информационную базу в режиме Конфигуратор.
  2. Перейдите в главное меню Администрирование — Тестирование и исправление....
  3. Настройте флаги тестирования следующим образом:
    • Реиндексация таблиц информационной базы
    • Проверка логической целостности информационной базы
    • Проверка ссылочной целостности информационной базы
    • Реструктуризация таблиц информационной базы
  4. В нижнем блоке настроек «При наличии ссылок на несуществующие объекты» выберите вариант Очищать ссылки.
  5. В блоке «При частичной утрате объектов» выберите вариант Удалять объекты.
  6. Нажмите кнопку Выполнить и дождитесь полного завершения процесса. На больших базах процесс может занять продолжительное время.
  7. После успешного завершения тестирования повторите попытку обновления конфигурации базы данных (нажатием клавиши F7 или через меню Конфигурация -> Обновить конфигурацию базы данных).

При повторном обновлении реструктуризация на этапе 80–90% может задерживаться дольше обычного — это нормальное поведение platforms, выполняющей пересчет и очистку поврежденных предопределенных элементов.

Решение 2: Обновление через сравнение и объединение конфигураций

Если прямое обновление продолжает завершаться ошибкой даже после тестирования, разберем альтернативный метод с использованием эталонного файла конфигурации (.cf):

  1. Разверните пустую или вторую технологическую базу данных той же конфигурации.
  2. Обновите эту вторую базу штатным образом до целевого релиза, на который не удавалось обновиться ранее.
  3. Выгрузите из обновленной базы файл конфигурации через меню Конфигурация — Сохранить конфигурацию в файл... (получив файл 1Cv8.cf).
  4. Откройте основную проблемную базу в Конфигураторе и выполните меню Конфигурация — Сравнить, объединить с конфигурацией из файла..., указав сохраненный .cf файл.
  5. Согласитесь на обновление и обновление конфигурации базы данных.
  6. После выполнения объединения запустите Тестирование и исправление с флагами очистки битых ссылок и реструктуризации, как описано в Первом решении.
  7. Запустите базу в режиме 1С:Предприятие для выполнения обработчиков обновления информационной базы.

Дополнительные рекомендации при работе с РИБ и файловыми базами

Проанализируем сопутствующие технические нюансы, которые помогут предотвратить повторное появление ошибки:

← На главную