Как проверить типовой статус предопределенного счета в 1С:ERP и попадет ли он в баланс?

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

В процессе сопровождения и аудита информационных баз 1С:ERP Управление предприятием специалисты нередко сталкиваются с ситуацией, когда в плане счетов отображается счет со значком предопределенности (например, 91.01.1), однако в чистой типовой конфигурации аналогичный субсчет отсутствует. Рассмотрим подробно, почему в рабочей базе появляются подобные элементы, как технически проверить их происхождение и гарантирует ли значок предопределенности автоматическое включение счета в бухгалтерскую отчетность.

Причины появления нетиповых предопределенных счетов

Проанализируем основные факторы, из-за которых счет в пользовательском режиме может отображаться как предопределенный, даже если в стандартной поставке ERP его нет:

  1. Перенос данных и переход с других конфигураций. Наиболее распространенный сценарий — перенос данных из предыдущих версий учетных систем, например, при переходе с 1С:Управление производственным предприятием (УПП) на 1С:ERP. Если перенос выполнялся через правила обмена (в формате XML), счет мог выгрузиться вместе со значением реквизита ИмяПредопределенныхДанных либо привязаться по внутреннему идентификатору (UUID). В результате платформа 8.3 автоматически помечает такой элемент как предопределенный.
  2. Подключенные расширения конфигурации. Платформа 1С:Предприятие поддерживает добавление предопределенных данных через расширения. Если субсчет был добавлен разработчиком в расширении, в основной конфигурации метаданных его не будет, но в режиме предприятия он получит значок предопределенности.
  3. Программное назначение имени предопределенного элемента. В современных версиях платформы существует возможность программно связать элемент справочника или плана счетов со строковым идентификатором предопределенных данных, заполнив соответствующее свойство объекта.
  4. Переименование или перекодирование существующего типового счета. Пользователи или администраторы с полными правами могли вручную изменить код или наименование стандартного предопределенного счета, сохранив его внутреннюю ссылку.

Как проверить статус и происхождение счета

Разберем по шагам, как достоверно определить, является ли счет системным или он был внесен в базу искусственно.

Шаг 1. Проверка идентификатора предопределенных данных.

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


СчетСсылка = ПланыСчетов.Хозрасчетный.НайтиПоКоду("91.01.1");
Если ЗначениеЗаполнено(СчетСсылка) Тогда
    ИмяПредопределенного = СчетСсылка.ИмяПредопределенныхДанных;
    Сообщить("Имя предопределенных данных: " + ИмяПредопределенного);
КонецЕсли;

Также можно применить метод менеджера плана счетов:


ИмяПредопределенного = ПланыСчетов.Хозрасчетный.ПолучитьИмяПредопределенного(СчетСсылка);

Если метод возвращает пустую строку, счет не имеет системной привязки в метаданных конфигурации, а если возвращается непустая строка — анализируем, существует ли такое имя в метаданных.

Шаг 2. Анализ расширений и конфигурации поставщика.

Откроем дерево метаданных конфигуратора и проверим состав подключенных расширений в ветке Планы счетов -> Хозрасчетный -> Предопределенные. Если счет отсутствует и в основной конфигурации, и в расширениях, значит, он появился в результате некорректного переноса данных или прямой записи свойства.

Попадает ли предопределенный субсчет в бухгалтерский баланс

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

Рассмотрим, как устроен механизм заполнения бухгалтерского баланса в типовых решениях 1С:

  1. Запросы по иерархии счетов. Если в алгоритме заполнения конкретной строки баланса используется условие отбора вида Где Счет В ИЕРАРХИИ (&СчетГруппа), то новый субсчет, подчиненный типовому родителю (например, счету 91.01), автоматически войдет в расчет оборотов и сальдо.
  2. Прямое обращение к фиксированному списку счетов. Если процедура заполнения обращается к жесткому списку предопределенных счетов (через Счет В (&МассивСчетов) или точное равенство Счет = &Счет), алгоритм просто проигнорирует неизвестный нетиповой субсчет.
  3. Специфика активно-пассивных счетов и субконто. Для корректного формирования развернутого сальдо в балансе алгоритмы отчетов анализируют разрезы аналитического учета (субконто). Если на нетиповом субсчете настроен иной состав субконто или неверно указан признак активности счета, это приведет к искажению строк актива и пассива.

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

Как очистить ошибочную предопределенность счета

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


СчетОбъект = ПланыСчетов.Хозрасчетный.НайтиПоКоду("91.01.1").ПолучитьОбъект();
Если СчетОбъект <> Неопределено Тогда
    СчетОбъект.ИмяПредопределенныхДанных = "";
    СчетОбъект.Записать();
    Сообщить("Признак предопределенности успешно снят со счета " + СчетОбъект.Код);
КонецЕсли;

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

← На главную