Как исправить ошибку проверки модели XDTO "свойства 'alcPercent' не определен" при обновлении 1С:Бухгалтерия?

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

При переходе на новые релизы конфигурации «1С:Бухгалтерия предприятия 3.0» (особенно часто это происходило при переходе с ветки 3.0.58 на 3.0.59 и последующие) технические специалисты часто сталкиваются с неприятным сбоем на этапе запуска базы данных в режиме «Предприятие». Программа аварийно завершает работу, выдавая длинное системное сообщение об ошибке проверки модели XDTO.

Давайте подробно проанализируем, почему возникает эта ошибка, как устроена технология XDTO в системе «1С:Предприятие 8.3» и рассмотрим несколько эффективных практических способов её устранения.

Выясняем причину возникновения ошибки

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

Ошибка проверки модели XDTO: xdto-objectType-3.2.1 тип: PositionType пакет: Тип '{ свойства 'alcPercent' не определен
Ошибка проверки модели XDTO: xdto-objectType-3.2.1 тип: PositionType пакет: Тип '{ свойства 'alcPercentMin' не определен

Эта ошибка напрямую связана с механизмами интеграции 1С с государственной системой ЕГАИС (ФСРАР). В конфигурациях 1С для работы с ЕГАИС используются специальные объекты метаданных — XDTO-пакеты. Они представляют собой жестко описанные схемы XML-документов (XSD-схемы), по которым программа обменивается данными с транспортным модулем (УТМ).

В новых версиях формата обмена ЕГАИС (в частности, в v3) для товарных позиций в документах (тип PositionType в пакетах вроде TTNSingle_v3 или RepImportedProduct_v3) появились новые обязательные свойства: alcPercent (содержание алкоголя) и alcPercentMin (минимальное содержание алкоголя). Эти свойства ссылаются на базовый тип данных AlcPercentType.

Тип данных AlcPercentType должен быть определен в общем («родительском») XDTO-пакете с именем EGCommon (пространство имен http://fsrar.ru/WEGAIS/Common). Однако во время обновления конфигурации происходит сбой: новые подчиненные пакеты импортируются и обновляются, а базовый пакет EGCommon остается старой версии, где описание типа AlcPercentType попросту отсутствует. Платформа 1С при чтении метаданных обнаруживает битую ссылку на несуществующий тип данных и блокирует запуск системы.

Почему этот базовый пакет не обновляется автоматически? Как правило, это происходит в конфигурациях, которые находятся на поддержке с возможностью изменения (нетиповые базы). При использовании стандартного файла обновления .cfu или автоматического обновления механизм сравнения и объединения конфигураций может ошибочно сохранить старое состояние общего пакета EGCommon из-за выставленного приоритета основной конфигурации или режима «Сохранять объекты поставщика».


Способ 1. Принудительный импорт обновленной XSD-схемы (самый быстрый метод)

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

Проанализируем этот процесс по шагам:

  1. Создадим временную пустую базу из шаблона конфигурации той версии, на которую вы пытались обновиться (например, релиз 3.0.59.26).
  2. Откроем эту чистую базу в режиме Конфигуратор.
  3. В дереве метаданных перейдем по пути: Общие -> XDTO-пакеты.
  4. Найдем пакет с именем EGCommon (пространство имен http://fsrar.ru/WEGAIS/Common).
  5. Нажмем на него правой кнопкой мыши и в контекстном меню выберем пункт Экспортировать XML-схему.... Сохраним полученный файл на диск (например, под именем EGCommon.xsd).
  6. Закроем временную базу и откроем нашу рабочую («проблемную») базу в режиме Конфигуратор.
  7. Перейдем в тот же раздел Общие -> XDTO-пакеты и найдем пакет EGCommon. Обратите внимание: если база на поддержке, возможно, предварительно потребуется включить возможность изменения (меню Конфигурация -> Поддержка -> Настройка поддержки).
  8. Нажмем правой кнопкой мыши на пакет EGCommon в рабочей базе и выберем пункт Импортировать схему.... Укажем сохраненный ранее файл EGCommon.xsd.
  9. Выполним обновление конфигурации базы данных (клавиша F7).

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

Для понимания того, как описывается этот тип внутри импортируемого файла схемы, приведем фрагмент правильного XML-кода:


<xs:simpleType name="AlcPercentType">
  <xs:restriction base="xs:decimal">
    <xs:minInclusive value="0"/>
    <xs:maxInclusive value="100"/>
  </xs:restriction>
</xs:simpleType>

Способ 2. Правильное обновление через полное замещение файла конфигурации (.cf)

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

Давайте рассмотрим, как правильно выполнить эту процедуру:

  1. Обязательно создадим резервную копию нашей информационной базы (выгрузку .dt или копированием файла 1cv8.1CD для файловой базы). Это критически важное правило для любых манипуляций в конфигураторе!
  2. Скачаем с портала поддержки 1С полный дистрибутив целевого релиза (нам нужен именно файл конфигурации 1cv8.cf, а не дистрибутив обновления .cfu). Если дистрибутива нет, его можно получить, создав пустую базу из шаблона обновления и сделав выгрузку конфигурации через меню Конфигурация -> Сохранить конфигурацию в файл....
  3. В конфигураторе рабочей базы перейдем в меню Конфигурация -> Поддержка -> Настройка поддержки. Если кнопка «Включить возможность изменения» активна, значит база была изменена. Если база полностью типовая, мы можем безопасно выполнить замещение.
  4. Выберем пункт меню Конфигурация -> Загрузить конфигурацию из файла... (обратите внимание, именно «Загрузить», а не «Сравнить, объединить»).
  5. Укажем наш чистый файл конфигурации 1cv8.cf. Платформа предупредит, что текущая конфигурация будет полностью заменена. Соглашаемся.
  6. После успешной загрузки нажимаем клавишу F7 для применения изменений к базе данных.

Этот метод гарантирует 100% восстановление исходной структуры метаданных поставщика. Все XDTO-пакеты обновятся до эталонного состояния, исключая любые конфликты версий.


Способ 3. Сравнение и объединение с контролем XDTO-пакетов (для доработанных баз)

Если ваша база данных содержит уникальные доработки и вы не можете воспользоваться вторым способом, необходимо провести процедуру сравнения и объединения вручную с контролем объектов ЕГАИС.

Разберем этот сценарий:

  1. Восстановим базу из резервной копии до проведения неудачного обновления.
  2. Запустим операцию обновления стандартным путем, либо через меню Конфигурация -> Сравнить, объединить с конфигурацией из файла..., указав файл .cf (или .cfu) нового релиза.
  3. В открывшемся окне сравнения и объединения снимем общую галочку со всех объектов, чтобы не запутаться.
  4. Найдем ветку Общие -> XDTO-пакеты.
  5. Установим флажки напротив всех пакетов, связанных с ЕГАИС (особенно обратите внимание на EGCommon, TTNSingle_v3, RepImportedProduct_v3, RepProducedProduct_v3).
  6. Щелкнем правой кнопкой мыши по колонке «Режим объединения» для этих пакетов и принудительно выставим режим Взять из конфигурации поставщика. Это действие заставит платформу перезаписать эти пакеты новыми версиями от разработчиков 1С, проигнорировав любые старые настройки в вашей базе.
  7. Установим остальные необходимые галочки для ваших доработок и завершим объединение.
  8. Применим изменения клавишей F7.

Способ 4. Обход проблемного релиза

Иногда конкретный промежуточный релиз конфигурации (например, 3.0.59.26) выпускается разработчиками со внутренними ошибками или несовместимостью с текущей версией вашей платформы «1С:Предприятие». Если вы обновляетесь вручную, вы можете попробовать «перепрыгнуть» этот релиз.

Для этого мы можем применить следующую тактику:

  1. Посмотрим на таблицу обновлений для вашей конфигурации на официальном сайте 1С. Выясним, на какие последующие релизы (например, ветки 3.0.60 или старше) можно перейти напрямую с вашего исходного релиза (например, 3.0.58.41).
  2. Если прямой переход возможен, минуя проблемную ветку 3.0.59, скачаем сразу более новый дистрибутив и обновимся на него.
  3. Если прямой переход невозможен, выполним обновление конфигурации в конфигураторе на промежуточный релиз, но не будем запускать базу в режиме пользователя. Сразу после первого шага обновления применим изменения метаданных (F7) и запустим процесс обновления на следующий, более стабильный релиз. Реструктуризация данных в режиме предприятия выполнится один раз уже на финальном исправном релизе.

Способ 5. Очистка кэша и обновление платформы 1С

В некоторых случаях ошибка проверки XDTO-модели вызвана некорректной работой локального кэша платформы «1С:Предприятие». Платформа кэширует схемы XML для ускорения работы, и при обновлении конфигурации кэш может не очиститься автоматически, продолжая подставлять старую структуру пакета EGCommon.

Для полной очистки кэша выполним следующие действия:

  1. Удалим информационную базу из списка запуска 1С и добавим ее заново. При этом создается новый внутренний идентификатор базы, и старый кэш перестает сопоставляться с ней.
  2. Проведем ручную очистку временных каталогов на компьютере пользователя. Для этого необходимо закрыть 1С и удалить все файлы и папки из каталогов:
    • %userprofile%\AppData\Local\1C\1Cv8\
    • %userprofile%\AppData\Roaming\1C\1Cv8\
    Обратите внимание, что удалять нужно только папки с длинными шестнадцатеричными именами (UID баз), файлы настроек списка баз ibases.v8i трогать не нужно.
  3. Также стоит обратить внимание на используемую версию технологической платформы. В старых версиях (например, используемой автором ветки 8.3.12.1616) присутствовали известные баги парсера XDTO-схем. Настоятельно рекомендуем обновить платформу «1С:Предприятие» до актуальной стабильной версии (например, веток 8.3.21, 8.3.22 или выше в зависимости от требований вашей конфигурации). Новые версии платформы гораздо стабильнее работают с динамическим кэшированием метаданных.

Применив один из рассмотренных нами методов, вы гарантированно избавитесь от ошибки валидации XDTO-моделей и сможете успешно запустить обновленную базу данных 1С.

← На главную