Как исправить ошибку «Предопределенный элемент отсутствует в данных» при обновлении 1С:Бухгалтерия 3.0.70.39?

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

Обновление типовых конфигураций 1С обычно проходит в автоматическом режиме, но иногда возникают ситуации, когда процесс прерывается критической ошибкой. Одной из наиболее резонансных проблем стало обновление 1С:Бухгалтерия предприятия 3.0 до релиза 3.0.70.39 (и последующих). Пользователи сталкиваются с сообщением: ПланСчетов.Хозрасчетный.ОбеспеченияОбязательствИПлатежейПолученные. Предопределенный элемент отсутствует в данных. В этой статье мы подробно разберем, почему это происходит и как восстановить работоспособность базы, даже если у вас нет свежей резервной копии.

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

Рассмотрим ситуацию глубже. В релизе 3.0.70.39 разработчики 1С внесли масштабные изменения в ПланСчетов.Хозрасчетный для поддержки учета аренды и лизинга согласно ФСБУ 25/2018. Основные изменения коснулись забалансовых счетов 008 («Обеспечения обязательств и платежей полученные») и 009 («Обеспечения обязательств и платежей выданные»).

Проанализируем механику ошибки. В новой версии эти счета перестали быть простыми элементами и были разделены на субсчета (например, 008.01, 008.21). При запуске обновления программа выполняет скрипты миграции данных. Если в вашей информационной базе связь между предопределенным элементом в конфигурации и записью в таблице базы данных была нарушена (например, из-за прошлых некорректных обновлений, программных сбоев или ручного редактирования предопределенных счетов), система «теряет» счет. Скрипт пытается обратиться к объекту ПланыСчетов.Хозрасчетный.ОбеспеченияОбязательствИПлатежейПолученные, но получает отказ, так как платформа не видит его в составе актуальных данных.

Решение 1: Использование тестирования и исправления (ТИИ)

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

  1. Запустим информационную базу в режиме Конфигуратор.
  2. Обязательно создадим резервную копию (меню «Администрирование» — «Выгрузить информационную базу»), даже если база уже находится в «полурабочем» состоянии. При регулярном обслуживании нескольких баз выгрузку и создание архивов выполняют через автоматическое резервное копирование баз 1С.
  3. Перейдем в меню «Администрирование» — «Тестирование и исправление».
  4. Установим следующие флажки:
    • Реиндексация таблиц информационной базы;
    • Проверка логической целостности;
    • Проверка ссылочной целостности;
    • Реструктуризация таблиц информационной базы (это ключевой пункт для работы с планом счетов).
  5. В блоке «При наличии ссылок на несуществующие объекты» выберем «Создавать объекты».
  6. Нажмем «Выполнить» и дождемся завершения процесса.

После завершения попробуем снова запустить базу в режиме «Предприятие». Если ошибка сохраняется, перейдем к следующему шагу.

Решение 2: Программное восстановление связи предопределенных данных

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

Напишем и выполним следующий фрагмент кода:


ПланыСчетов.Хозрасчетный.УстановитьОбновлениеПредопределенныхДанных(ОбновлениеПредопределенныхДанных.Автоматически);
Сообщить("Флаг обновления предопределенных данных установлен. Перезапустите программу.");

Этот метод принудительно устанавливает режим, при котором платформа при следующем запуске попытается сопоставить элементы в базе данных с описанием в конфигурации по их внутренним именам (ИмяПредопределенныхДанных).

Решение 3: Ручное создание счетов и привязка имени

В некоторых случаях счета 008 и 009 могут быть помечены на удаление или вовсе отсутствовать в списке предопределенных. Выясним, как добавить их вручную. Рассмотрим последовательность действий в режиме Конфигуратор:

  1. Откроем дерево конфигурации и найдем План счетов — Хозрасчетный.
  2. Перейдем на вкладку «Прочее» и нажмем кнопку «Предопределенные».
  3. Посмотрим, существуют ли там счета с именами ОбеспеченияОбязательствИПлатежейПолученные (код 008) и ОбеспеченияОбязательствИПлатежейВыданные (код 009).
  4. Если они отсутствуют в данных (в режиме «Предприятие»), их необходимо добавить вручную, строго соблюдая Имя (как в конфигурации) и Код.
  5. После добавления счетов 008, 009, а также новых субсчетов 008.01, 008.21, 009.01, 009.21, система должна «узнать» их при запуске обновления.

Решение 4: Сравнение и объединение с конфигурацией поставщика

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

Рассмотрим шаги в Конфигураторе:

  1. Зайдем в меню «Конфигурация» — «Поддержка» — «Настройка поддержки».
  2. Нажмем кнопку «Сравнить, объединить».
  3. В открывшемся окне сравнения снимем все галочки.
  4. Найдем в списке План счетов — Хозрасчетный. Если напротив него стоит флажок изменений, установим его и нажмем «Выполнить».
  5. Это позволит вернуть структуру плана счетов к типовому виду, предусмотренному разработчиками 1С для данного релиза.

Рекомендации по платформе и кэшированию

Важно помнить, что версии 1С:Бухгалтерия 3.0.70.х требуют актуальной версии платформы. Рекомендуется использовать 8.3.14.1779 или выше. Если вы используете устаревшую платформу, механизмы реструктуризации могут работать некорректно, что и приводит к «потере» счетов.

Также не забудем про очистку кэша. Проанализируем простейший способ:

Это действие принудительно создаст новую папку кэша, что исключит влияние старых временных файлов на процесс обновления данных.

Заключение

Мы разобрали комплекс мер по устранению ошибки отсутствия предопределенных данных. Помните, что работа с планом счетов — это ответственная процедура. Всегда начинайте с резервного копирования и использования утилиты chkdbfl.exe, которая находится в папке bin установленной платформы. Если ручные методы не помогают, использование обработки «Установка предопределенных данных» из состава БСП станет финальным шагом, который позволит связать «битые» записи в базе с логикой конфигурации.

← На главную