Обновление типовых конфигураций 1С обычно проходит в автоматическом режиме, но иногда возникают ситуации, когда процесс прерывается критической ошибкой. Одной из наиболее резонансных проблем стало обновление 1С:Бухгалтерия предприятия 3.0 до релиза 3.0.70.39 (и последующих). Пользователи сталкиваются с сообщением: ПланСчетов.Хозрасчетный.ОбеспеченияОбязательствИПлатежейПолученные. Предопределенный элемент отсутствует в данных. В этой статье мы подробно разберем, почему это происходит и как восстановить работоспособность базы, даже если у вас нет свежей резервной копии.
Рассмотрим ситуацию глубже. В релизе 3.0.70.39 разработчики 1С внесли масштабные изменения в ПланСчетов.Хозрасчетный для поддержки учета аренды и лизинга согласно ФСБУ 25/2018. Основные изменения коснулись забалансовых счетов 008 («Обеспечения обязательств и платежей полученные») и 009 («Обеспечения обязательств и платежей выданные»).
Проанализируем механику ошибки. В новой версии эти счета перестали быть простыми элементами и были разделены на субсчета (например, 008.01, 008.21). При запуске обновления программа выполняет скрипты миграции данных. Если в вашей информационной базе связь между предопределенным элементом в конфигурации и записью в таблице базы данных была нарушена (например, из-за прошлых некорректных обновлений, программных сбоев или ручного редактирования предопределенных счетов), система «теряет» счет. Скрипт пытается обратиться к объекту ПланыСчетов.Хозрасчетный.ОбеспеченияОбязательствИПлатежейПолученные, но получает отказ, так как платформа не видит его в составе актуальных данных.
Прежде чем переходить к сложным манипуляциям, попробуем стандартные средства диагностики платформы 1С:Предприятие 8.3. Это наиболее безопасный метод, который помогает в большинстве случаев восстановить логическую целостность.
После завершения попробуем снова запустить базу в режиме «Предприятие». Если ошибка сохраняется, перейдем к следующему шагу.
Если счета физически присутствуют в плане счетов, но не имеют связи с метаданными, мы можем заставить платформу обновить эти связи. Проанализируем программный метод исправления. Для этого нам понадобится консоль кода или создание внешней обработки.
Напишем и выполним следующий фрагмент кода:
ПланыСчетов.Хозрасчетный.УстановитьОбновлениеПредопределенныхДанных(ОбновлениеПредопределенныхДанных.Автоматически);
Сообщить("Флаг обновления предопределенных данных установлен. Перезапустите программу.");
Этот метод принудительно устанавливает режим, при котором платформа при следующем запуске попытается сопоставить элементы в базе данных с описанием в конфигурации по их внутренним именам (ИмяПредопределенныхДанных).
В некоторых случаях счета 008 и 009 могут быть помечены на удаление или вовсе отсутствовать в списке предопределенных. Выясним, как добавить их вручную. Рассмотрим последовательность действий в режиме Конфигуратор:
План счетов — Хозрасчетный.ОбеспеченияОбязательствИПлатежейПолученные (код 008) и ОбеспеченияОбязательствИПлатежейВыданные (код 009).Иногда проблема кроется в том, что основная конфигурация базы разошлась с конфигурацией поставщика. Выполним процедуру синхронизации:
Рассмотрим шаги в Конфигураторе:
План счетов — Хозрасчетный. Если напротив него стоит флажок изменений, установим его и нажмем «Выполнить».Важно помнить, что версии 1С:Бухгалтерия 3.0.70.х требуют актуальной версии платформы. Рекомендуется использовать 8.3.14.1779 или выше. Если вы используете устаревшую платформу, механизмы реструктуризации могут работать некорректно, что и приводит к «потере» счетов.
Также не забудем про очистку кэша. Проанализируем простейший способ:
Это действие принудительно создаст новую папку кэша, что исключит влияние старых временных файлов на процесс обновления данных.
Мы разобрали комплекс мер по устранению ошибки отсутствия предопределенных данных. Помните, что работа с планом счетов — это ответственная процедура. Всегда начинайте с резервного копирования и использования утилиты chkdbfl.exe, которая находится в папке bin установленной платформы. Если ручные методы не помогают, использование обработки «Установка предопределенных данных» из состава БСП станет финальным шагом, который позволит связать «битые» записи в базе с логикой конфигурации.