При обновлении конфигурации «1С:Бухгалтерия предприятия 3.0», особенно при переходе между релизами в диапазоне от 3.0.71 до 3.0.73, многие технические специалисты сталкиваются с критической ошибкой при запуске системы. Ошибка проявляется в модуле менеджера справочника ЛентыНовостей и связана с несоответствием структуры XDTO-объекта. В этой статье мы подробно разберем, почему возникает эта проблема, как правильно настроить процесс обновления и какие шаги предпринять для очистки информационной базы.
Проанализируем техническую сторону вопроса. Сообщение об ошибке выглядит следующим образом: «Ошибка проверки данных XDTO: Структура объекта не соответствует типу... Не установлено значение одного из следующих свойств: УдалитьПароль». Код ошибки явно указывает на строку в модуле менеджера справочника ЛентыНовостей:
ОбъектХДТО = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ);
Причина кроется в масштабном рефакторинге механизмов интернет-поддержки, который проводила фирма «1С». В указанных релизах реквизит Пароль был признан устаревшим и переименован в УдалитьПароль для последующего удаления из конфигурации. Когда мы выполняем обновление «прыжком» через несколько релизов или используем некорректные настройки сравнения и объединения конфигураций, фабрика XDTO пытается сопоставить данные в формате XML со схемой метаданных, которая не соответствует ожидаемой. Программа ожидает поле с одним именем, а находит другое или не находит вовсе, что приводит к аварийному завершению процесса чтения.
Рассмотрим ситуацию, когда база находится на кастомизированной поддержке и обновление выполняется через файл конфигурации (.cf) методом сравнения и объединения. Одной из самых частых ошибок здесь является пропуск настройки удаления объектов. Разберем по шагам, как сделать это правильно:
ЛентыНовостей старый реквизит Пароль был корректно сопоставлен с пометкой на удаление, а новые реквизиты были добавлены.Если этот флаг не установлен, 1С оставляет «хвосты» старых метаданных, которые конфликтуют с обновленным программным кодом. В результате ФабрикаXDTO обращается к объекту, структура которого в базе данных отличается от той, которую диктует новый программный код в модуле менеджера.
Выясним, насколько важны данные, вызывающие сбой. Справочник ЛентыНовостей является вспомогательным механизмом. Он служит для отображения актуальных новостей от фирмы «1С» на рабочем столе пользователя. Информация в него загружается динамически из интернета. Следовательно, удаление записей в этом справочнике не приведет к потере данных бухгалтерского или налогового учета.
Посмотрим, как можно решить проблему через очистку:
ЛентыНовостей.ПриНачалеРаботыСистемы, попробуйте запустить её в режиме «Конфигуратор» и выполнить тестирование и исправление (ТИИ) с очисткой битых ссылок, хотя в данном случае эффективнее будет программная очистка через внешнюю обработку, запущенную с параметром /Execute.Проанализируем логику: если в справочнике нет записей, то метод ПрочитатьXML не будет вызываться для старых данных, и обновление структуры пройдет гладко. После успешного входа в систему программа сама скачает актуальные ленты новостей уже в новой структуре.
Рассмотрим вариант, предложенный в обсуждении на форуме — комментирование кода. Мы должны понимать, что это «костыль», который помогает запустить базу «здесь и сейчас», но может создать проблемы в будущем. Тем не менее, если другие методы недоступны, можно временно изменить модуль менеджера справочника ЛентыНовостей:
// Комментируем проблемный участок или оборачиваем в попытку
Попытка
ОбъектХДТО = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ);
Исключение
ЗаписьЖурналаРегистрации("Обновление.ЛентыНовостей", УровеньЖурналаРегистрации.Ошибка,,, "Ошибка чтения XDTO");
Возврат; // Или иная логика пропуска некорректного объекта
КонецПопытки;
Важно: После того как база запустится и пройдут все обработчики обновления, крайне рекомендуется вернуть типовой код обратно и убедиться, что структура справочника в метаданных соответствует типовой конфигурации. В противном случае при следующем обновлении вы рискуете получить еще более сложную ошибку реструктуризации базы данных.
Для предотвращения подобных ситуаций при работе с 1С:Бухгалтерия 3.0, придерживайтесь следующих правил:
%AppData%\1C\1Cv8) и серверный кэш, если база работает в клиент-серверном варианте.Подводя итог, можно сказать, что ошибка «Не установлено значение одного из следующих свойств: УдалитьПароль» — это следствие нарушения последовательности или технологии обновления. Правильная настройка режима сравнения-объединения с разрешением удаления объектов является наиболее корректным решением данной проблемы.