При обновлении нетиповых или сильно доработанных конфигураций (например, УПП 1.3 или УСО 1.3) администраторы и программисты часто сталкиваются с критической ошибкой: «Ошибка проверки модели XDTO: xdto-objectType-3.2.1 тип: ... пакет: ... свойства '...' не определен». Эта проблема особенно актуальна для распределенных информационных баз (РИБ), когда в главном узле обновление проходит успешно, а в подчиненном — выдает ошибку. В этой статье мы подробно разберем причины возникновения этой ситуации и рассмотрим пошаговые методы её решения.
Прежде чем переходить к действиям, давайте проанализируем ситуацию и выясним причину сбоя. Ошибка xdto-objectType-3.2.1 указывает на несоответствие между фактической структурой метаданных в конфигурации и описанием типов в XDTO-пакетах. Рассмотрим основные факторы, провоцирующие проблему:
Config и ConfigSave.Как показывает практика, в 90% случаев проблема решается банальной, но правильной очисткой кэша. Если вы работаете в РИБ, крайне важно выполнить эти действия сначала в главном узле, а затем повторить в дочернем. Ускорить этот процесс поможет батник для очистки кэша 1С.
Рассмотрим последовательность действий для локального кэша:
%AppData%\1C\1cv8\%LocalAppData%\1C\1cv8\25b169...). Для более тонкой работы можно использовать скрипт очистки кэша 1С без стирания настроек пользователей.Агент сервера 1С:Предприятия и удалим содержимое папок snccntx и reg_1541 (за исключением логов) в каталоге установки сервера. Также возможна автоматическая очистка серверного кэша 1С скриптом.После очистки кэша в главном узле необходимо заново запустить конфигуратор, внести любое мелкое изменение (например, добавить пробел в комментарии общего модуля), сохранить конфигурацию и выполнить повторную выгрузку обмена для дочернего узла.
Иногда ошибка прямо указывает на конкретное свойство, например alcPercentMax или СправкаБ. Часто это связано с пакетами интеграции с государственными системами (ЕГАИС, Маркировка). Если ваше предприятие не использует данный функционал, мы можем рассмотреть радикальный, но эффективный метод — удаление проблемного пакета.
Проанализируем ситуацию: если в сообщении об ошибке фигурирует пакет TTNSingle_v3 или аналогичный, и вы точно знаете, что алкогольная продукция в базе не ведется, можно попробовать следующее:
Общие -> XDTO-пакеты.Внимание: Если пакет используется в коде, система выдаст список ссылок. В этом случае удалять пакет нельзя, нужно выполнить его «перезагрузку». Выгрузите пакет в файл, удалите его, сохраните конфигурацию, а затем загрузите обратно из сохраненного XML-файла. Это заставит платформу пересчитать внутренние индексы свойств.
Если вы столкнулись с ошибкой в пакетах EGCommon или подобных, можно попробовать импортировать исправленную схему вручную. Посмотрим на пример структуры схемы, которую можно использовать для исправления ошибок со временем в датах:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="DateNoTime">
<xs:restriction base="xs:date"/>
</xs:simpleType>
<xs:simpleType name="DateTimeWithZone">
<xs:restriction base="xs:dateTime"/>
</xs:simpleType>
</xs:schema>
Сохраните необходимую схему в файл с расширением .xsd и воспользуйтесь функцией Импорт схемы XDTO в контекстном меню ветки XDTO-пакетов. Это обновит описание типов и может снять блокирующую ошибку при обновлении метаданных.
При последовательном обновлении через .cfu файлы метаданные накапливают изменения. Если в одном из промежуточных этапов произошел сбой, последующие обновления будут выдавать ошибку XDTO. Разберем, как это обойти:
Конфигурация -> Выгрузить конфигурацию в файл... (получим файл .cf).Конфигурация -> Загрузить конфигурацию из файла....Важно: Метод Загрузить конфигурацию полностью заменяет структуру метаданных, в отличие от Сравнить/Объединить. Это наиболее надежный способ устранить любые логические нестыковки в XDTO-моделях, так как пакеты переписываются целиком из гарантированно рабочего источника.
Если ошибка возникает исключительно в подчиненном узле и вышеуказанные методы не помогают, проанализируем состояние связи узлов. Возможно, произошел рассинхрон основной конфигурации и конфигурации базы данных. В этом случае эффективен следующий алгоритм:
/ResetMasterNode (отвязка от главного узла). Это стандартный способ, если нужно отвязать базу от РИБ для исправления структуры.Загрузить конфигурацию из файла (.cf), взятого из главного узла.F7).
ПланыОбмена.УстановитьГлавныйУзел(СсылкаНаГлавныйУзел);
Этот метод гарантирует, что структура метаданных дочернего узла станет идентична главному, и ошибки XDTO исчезнут.
Рассмотрим еще несколько важных моментов, которые помогут избежать подобных проблем в будущем:
Тестирование и исправление (ТиИ) с включенной опцией Проверка логической целостности. Это поможет выявить «битые» объекты метаданных до того, как они вызовут ошибку XDTO.Таким образом, мы выяснили, что ошибка проверки XDTO чаще всего является следствием накопленных «мусорных» данных в кэше или результатом некорректного наложения обновлений в распределенных базах. Последовательное применение описанных шагов позволит вам успешно завершить обновление даже в самых сложных случаях.