Почему не открывается документ ОперацияБух после обновления и как исправить ошибку с удаленным регистром

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

При сопровождении и обновлении типовых и отраслевых конфигураций 1С (например, 1С:Бухгалтерия предприятия 2.0 или 1С:Общепит) можно столкнуться с ситуацией, когда при попытке открыть ранее созданный документ «Операция (бухгалтерский и налоговый учет)» или «Корректировка записей регистров» система выдает критическую ошибку. При детальном анализе выясняется, что документ ссылается на регистр накопления (например, НДС по ОС и НМА), который полностью отсутствует в дереве метаданных конфигурации.

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

Причины возникновения ошибки на уровне платформы и метаданных

Для понимания корня проблемы проанализируем внутреннее устройство документов ручной корректировки движений в платформе 1С:Предприятие:

  1. Хранение состава регистров в виде обычных строк: В документах ОперацияБух и КорректировкаЗаписейРегистров перечень задействованных регистров хранится в специальных табличных частях (например, ТаблицаРегистровНакопления, ТаблицаРегистровСведений). Имена регистров записываются в реквизит с примитивным типом Строка, а не ссылочным типом метаданных.
  2. Механизм реструктуризации при обновлении: Когда разработчики 1С удаляют регистр из конфигурации, платформа физически очищает и удаляет только таблицы самого регистра. Строковые данные внутри табличных частей документов платформа проверять не может, поэтому строки с устаревшими именами регистров остаются в базе.
  3. Отсутствие проверок при инициализации формы: В коде модуля формы документа при открытии выполняется обход списка регистров и прямое обращение к объектам метаданных через конструкции вида Метаданные.РегистрыНакопления[ИмяРегистра] или к коллекции движений Движения[ИмяРегистра]. Если регистра с таким именем в дереве метаданных больше нет, платформа выбрасывает исключение «Поле объекта не обнаружено», блокируя открытие формы.
  4. Пропуск процедур обновления информационной базы: Ошибка часто проявляется, если обновление конфигурации выполнялось с пропуском промежуточных релизов либо без полноценного завершения регламентных процедур начального запуска в пользовательском режиме.

Методологическая причина удаления регистра НДС по ОС и НМА

Выясним причину, по которой регистр накопления НДС по ОС и НМА был исключен из типовых конфигураций. Согласно изменениям в налоговом учете и разъяснениям Минфина РФ, право на вычет НДС по приобретенным основным средствам возникает непосредственно после принятия их на учет на счет 08 (до ввода в эксплуатацию на счет 01). Прежний механизм блокировки вычета через отдельный регистр потерял актуальность. Блокировка вычета по нематериальным активам при этом контролируется на основании регистра Состояния НМА. Соответственно, регистр НДС по ОС и НМА и хранившиеся в нем остатки стали не нужны для расчета налога.

Способ 1. Программная очистка табличной части проблемного документа

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

Посмотрим на пример программного кода для внешней обработки:


ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();

// Получаем табличную часть с составом регистров накопления
СтрокиДляУдаления = Новый Массив;

Для Каждого Стр Из ДокументОбъект.ТаблицаРегистровНакопления Цикл
    // Проверяем наличие регистра в текущих метаданных
    Если Метаданные.РегистрыНакопления.Найти(Стр.Имя) = Неопределено Тогда
        СтрокиДляУдаления.Добавить(Стр);
    КонецЕсли;
КонецЦикла;

// Удаляем устаревшие записи
Для Каждого Стр Из СтрокиДляУдаления Цикл
    ДокументОбъект.ТаблицаРегистровНакопления.Удалить(Стр);
КонецЦикла;

// Записываем документ без повторных проверок
ДокументОбъект.ОбменДанными.Загрузка = Истина;
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);

После выполнения данного скрипта документ ОперацияБух будет успешно открываться в пользовательском режиме.

Способ 2. Массовая проверка и очистка всех документов базы

Если ручных операций в информационной базе много, рекомендуется выполнить пакетную обработку всех документов ОперацияБух и КорректировкаЗаписейРегистров.

Разберем по шагам алгоритм массового исправления:

  1. Выполняем запрос к табличным частям ТаблицаРегистровНакопления, ТаблицаРегистровСведений и ТаблицаРегистровБухгалтерии документов.
  2. С помощью метода Найти() соответствующих коллекций объекта Метаданные определяем, какие регистры больше не существуют в конфигурации.
  3. Для каждого найденного документа получаем объект, очищаем некорректные строки и записываем с флагом ОбменДанными.Загрузка = Истина.

Способ 3. Временное создание метаданного в конфигураторе

Если база снята с поддержки и допускает внесение изменений, но нет возможности написать обработку, применим обходной путь:

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

Что делать с учетными данными удаленного регистра

Проанализируем последствия удаления корректировок для регламентированного учета НДС:

  1. Актуальность старых движений: Сами по себе движения по удаленному регистру больше не участвуют в формировании книги покупок и регламентных документов по учету НДС, поэтому их удаление не нарушит текущую работу программы.
  2. Перенос активных корректировок: Если операция выполняла ручную корректировку входящего налога, которую по-прежнему требуется учитывать, соответствующие суммы следует перенести в актуальный регистр накопления НДС предъявленный либо отразить типовым документом Отражение НДС к вычету.
  3. Контроль регламентных операций: После очистки строк обязательно проверим регламентный документ Формирование записей книги покупок за соответствующий период, чтобы убедиться в отсутствии расхождений между данными учета НДС и счетами бухгалтерского учета (19.01, 68.02).
← На главную