При закрытии месяца в программе «1С:Бухгалтерия КОРП» или «1С:Бухгалтерия ПРОФ» (редакция 3.0) пользователи могут столкнуться с неожиданной критической ошибкой. Проблема заявляет о себе в процессе выполнения регламентной операции «Расчет налога на прибыль». На экран выводится системное сообщение следующего содержания:
Поле объекта не обнаружено (ТекущийНалогНаПрибыль)
Эта ошибка полностью блокирует процедуру закрытия месяца и не позволяет рассчитать финансовые результаты за отчетный или прошлый период. Давайте вместе подробно разберем, почему возникает этот сбой, как правильно диагностировать его причины и какими способами можно оперативно восстановить работоспособность базы данных.
Для начала проанализируем техническую сторону вопроса. Ошибка возникает в программном коде общего модуля при попытке обращения к свойству плана счетов. Разработчики используют конструкцию вида:
СчетаТекущегоНалога.Добавить(ПланыСчетов.Хозрасчетный.ТекущийНалогНаПрибыль); // 99.02.Т
Платформа обращается к метаданным конфигурации, ожидая найти предопределенный элемент с уникальным именем ТекущийНалогНаПрибыль. Если этого имени в метаданных плана счетов «Хозрасчетный» нет, система аварийно завершает работу.
Откуда вообще взялись эти счета? Начиная с обновления ПБУ 18/02 «Учет расчетов по налогу на прибыль организаций», в план счетов 1С были внесены масштабные изменения. К субсчету 99.02 «Налог на прибыль» были добавлены новые субсчета третьего порядка:
ТекущийНалогНаПрибыль. Он корреспондирует со счетом 68.04.1 при расчете налога.ОтложенныйНалогНаПрибыль. Он используется при расчете отложенных налоговых активов (ОНА) и обязательств (ОНО).Если база данных обновляется стандартно и находится на полной поддержке («на замке»), эти счета появляются автоматически. Однако, если конфигурация была доработана программистами (снята с поддержки с возможностью изменений), при очередном обновлении могла произойти критическая ошибка объединения. Специалист, выполнявший обновление конфигурации, мог случайно снять галочку с объекта Планы счетов -> Хозрасчетный или с его свойства «Предопределенные данные». В результате программный код модулей обновился до актуального релиза, а сам план счетов остался старой структуры.
Также возможна ситуация, когда связь между предопределенными элементами метаданных и физическими записями в базе данных (в режиме «1С:Предприятие») была нарушена из-за сбоев СУБД, кэширования или некорректной синхронизации в распределенных информационных базах (РИБ).
---
Перед тем как переходить к исправлению, нам необходимо локализовать проблему и понять, на каком уровне произошел сбой — на уровне структуры конфигурации или на уровне данных предприятия.
Выполним пошаговую диагностику:
Планы счетов -> Хозрасчетный, нажмем правой кнопкой мыши и выберем пункт «Открыть предопределенные данные». Проанализируем группу счетов 99.02. Если в списке отсутствуют строки с кодами 99.02.Т и 99.02.О — структура конфигурации устарела. Требуется применить Способ 1.---
Если диагностика показала, что новых субсчетов нет в самом конфигураторе, нам необходимо перенести предопределенные данные из чистой конфигурации поставщика (файла .cf) соответствующего релиза.
Рассмотрим этот процесс подробно:
Администрирование -> Выгрузить информационную базу или делаем копию файла 1Cv8.1CD для файловых баз).1cv8.cf).Конфигурация -> Сравнить, объединить с конфигурацией из файла... и укажем путь к файлу 1cv8.cf.Планы счетов -> Хозрасчетный. Поставим напротив нее галочку.Хозрасчетный в окне сравнения и выберем пункт «Установить режим объединения для подчиненных объектов». Убедимся, что свойство «Предопределенные данные» настроено на режим «Взять из конфигурации источника» (или объединить). Галочка на предопределенных данных должна стоять обязательно!F7.После успешного обновления зайдем в режим Предприятия и проверим, проходит ли теперь регламентная операция расчет налога.
---
Если счета в конфигураторе присутствуют, но в режиме Предприятия платформа их не распознает или считает обычными пользовательскими счетами, необходимо запустить механизм регенерации связей.
Проанализируем этот алгоритм:
Администрирование -> Тестирование и исправление....---
Иногда стандартное Тестирование и исправление не может автоматически связать созданный пользователем вручную счет с предопределенным именем из конфигуратора. В такой ситуации мы можем написать простую обработку или выполнить код, который принудительно назначит счету его системный идентификатор.
Рассмотрим пример кода, который решает данную задачу. Запустим внешнюю обработку (например, групповой запуск кода или обработку «Выгрузка и загрузка данных XML» для поиска дублей):
// Найдем счет, созданный в режиме предприятия без признака предопределенного
СчетСсылка = ПланыСчетов.Хозрасчетный.НайтиПоКоду("99.02.Т");
Если Не СчетСсылка.Пустая() Тогда
// Получаем объект для редактирования
СчетОбъект = СчетСсылка.ПолучитьОбъект();
// Принудительно связываем его с именем предопределенного элемента в метаданных
СчетОбъект.ИмяПредопределенныхДанных = "ТекущийНалогНаПрибыль";
Попытка
СчетОбъект.Записать();
Сообщить("Связь для счета 99.02.Т успешно восстановлена!");
Исключение
Сообщить("Ошибка записи счета: " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
Аналогичную процедуру при необходимости нужно провести и для субсчета 99.02.О с системным именем ОтложенныйНалогНаПрибыль. После выполнения данного кода платформа начнет корректно определять эти счета во всех запросах и алгоритмах закрытия месяца.
---
Бывают ситуации, когда закрыть период и рассчитать налоги нужно немедленно, а программиста или системного администратора нет на месте, чтобы манипулировать конфигуратором. В этом случае мы можем применить временную бухгалтерскую хитрость, если это допускает законодательство компании.
Выясним особенности применения ПБУ 18/02. Обязанность применять ПБУ 18/02 распространяется далеко не на все компании. Субъекты малого предпринимательства и некоммерческие организации имеют полное право отказаться от применения данного стандарта.
Если ваша организация относится к таким категориям, вы можете временно или на постоянной основе отключить этот функционал:
После отключения ПБУ 18/02 алгоритмы регламентной операции закрытия месяца перестанут обращаться к субсчетам 99.02.Т и 99.02.О. Расчет налога на прибыль будет производиться по упрощенной схеме, и ошибка Поле объекта не обнаружено (ТекущийНалогНаПрибыль) исчезнет. Однако помните, что если организация обязана применять ПБУ 18/02, этот метод можно использовать лишь как кратковременную меру для срочной печати других отчетов, после чего план счетов обязательно нужно восстановить методами, описанными выше.