В процессе сопровождения и аудита информационных баз 1С:ERP Управление предприятием специалисты нередко сталкиваются с ситуацией, когда в плане счетов отображается счет со значком предопределенности (например, 91.01.1), однако в чистой типовой конфигурации аналогичный субсчет отсутствует. Рассмотрим подробно, почему в рабочей базе появляются подобные элементы, как технически проверить их происхождение и гарантирует ли значок предопределенности автоматическое включение счета в бухгалтерскую отчетность.
Проанализируем основные факторы, из-за которых счет в пользовательском режиме может отображаться как предопределенный, даже если в стандартной поставке ERP его нет:
ИмяПредопределенныхДанных либо привязаться по внутреннему идентификатору (UUID). В результате платформа 8.3 автоматически помечает такой элемент как предопределенный.Разберем по шагам, как достоверно определить, является ли счет системным или он был внесен в базу искусственно.
Шаг 1. Проверка идентификатора предопределенных данных.
Выясним точное значение системного имени элемента. Для этого воспользуемся внешней обработкой, консолью кода или отладчиком, выполнив обращение к свойству ссылки:
СчетСсылка = ПланыСчетов.Хозрасчетный.НайтиПоКоду("91.01.1");
Если ЗначениеЗаполнено(СчетСсылка) Тогда
ИмяПредопределенного = СчетСсылка.ИмяПредопределенныхДанных;
Сообщить("Имя предопределенных данных: " + ИмяПредопределенного);
КонецЕсли;
Также можно применить метод менеджера плана счетов:
ИмяПредопределенного = ПланыСчетов.Хозрасчетный.ПолучитьИмяПредопределенного(СчетСсылка);
Если метод возвращает пустую строку, счет не имеет системной привязки в метаданных конфигурации, а если возвращается непустая строка — анализируем, существует ли такое имя в метаданных.
Шаг 2. Анализ расширений и конфигурации поставщика.
Откроем дерево метаданных конфигуратора и проверим состав подключенных расширений в ветке Планы счетов -> Хозрасчетный -> Предопределенные. Если счет отсутствует и в основной конфигурации, и в расширениях, значит, он появился в результате некорректного переноса данных или прямой записи свойства.
Многие специалисты ошибочно полагают, что значок предопределенности служит автоматическим маркером для регламентированных отчетов. Это не так: сам по себе флаг предопределенности никак не гарантирует включение счета в формы регламентированной отчетности.
Рассмотрим, как устроен механизм заполнения бухгалтерского баланса в типовых решениях 1С:
Где Счет В ИЕРАРХИИ (&СчетГруппа), то новый субсчет, подчиненный типовому родителю (например, счету 91.01), автоматически войдет в расчет оборотов и сальдо.Счет В (&МассивСчетов) или точное равенство Счет = &Счет), алгоритм просто проигнорирует неизвестный нетиповой субсчет.Таким образом, узнать, учитывается ли нетиповой счет в балансе, можно только путем анализа кода процедур заполнения отчета в модулях конфигурации либо через отладку процесса формирования регламентированного отчета.
Если выяснилось, что счет попал в базу при обмене ошибочно и должен быть удален или переведен в статус обычного пользовательского счета, выполним программную очистку свойства ИмяПредопределенныхДанных:
СчетОбъект = ПланыСчетов.Хозрасчетный.НайтиПоКоду("91.01.1").ПолучитьОбъект();
Если СчетОбъект <> Неопределено Тогда
СчетОбъект.ИмяПредопределенныхДанных = "";
СчетОбъект.Записать();
Сообщить("Признак предопределенности успешно снят со счета " + СчетОбъект.Код);
КонецЕсли;
После записи объект потеряет значок системного предопределенного счета, что позволит при необходимости перенести движения на типовой счет и пометить ошибочный элемент на удаление стандартными средствами системы.