Как исправить ошибку проверки данных XDTO при обновлении 1С:Бухгалтерия 3.0 в справочнике «Ленты новостей»?

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

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

Анализируем причину возникновения ошибки

Проанализируем техническую сторону вопроса. Сообщение об ошибке выглядит следующим образом: «Ошибка проверки данных XDTO: Структура объекта не соответствует типу... Не установлено значение одного из следующих свойств: УдалитьПароль». Код ошибки явно указывает на строку в модуле менеджера справочника ЛентыНовостей:

ОбъектХДТО = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ);

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

Способ 1. Корректная настройка «Сравнения и объединения»

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

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

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

Способ 2. Очистка данных справочника перед обновлением

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

Посмотрим, как можно решить проблему через очистку:

  1. Если база еще открывается (например, на старом релизе), запустите обработку «Групповое изменение реквизитов» или напишите простенький код для удаления всех элементов справочника ЛентыНовостей.
  2. Если база уже не запускается из-за ошибки в ПриНачалеРаботыСистемы, попробуйте запустить её в режиме «Конфигуратор» и выполнить тестирование и исправление (ТИИ) с очисткой битых ссылок, хотя в данном случае эффективнее будет программная очистка через внешнюю обработку, запущенную с параметром /Execute.

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

Способ 3. Программное исправление (временная мера)

Рассмотрим вариант, предложенный в обсуждении на форуме — комментирование кода. Мы должны понимать, что это «костыль», который помогает запустить базу «здесь и сейчас», но может создать проблемы в будущем. Тем не менее, если другие методы недоступны, можно временно изменить модуль менеджера справочника ЛентыНовостей:


// Комментируем проблемный участок или оборачиваем в попытку
Попытка
    ОбъектХДТО = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ);
Исключение
    ЗаписьЖурналаРегистрации("Обновление.ЛентыНовостей", УровеньЖурналаРегистрации.Ошибка,,, "Ошибка чтения XDTO");
    Возврат; // Или иная логика пропуска некорректного объекта
КонецПопытки;

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

Дополнительные рекомендации

Для предотвращения подобных ситуаций при работе с 1С:Бухгалтерия 3.0, придерживайтесь следующих правил:

Подводя итог, можно сказать, что ошибка «Не установлено значение одного из следующих свойств: УдалитьПароль» — это следствие нарушения последовательности или технологии обновления. Правильная настройка режима сравнения-объединения с разрешением удаления объектов является наиболее корректным решением данной проблемы.

← На главную