При работе в конфигурации 1С:Бухгалтерия 8.3 (редакция 3.0), дополненной отраслевым решением БИТ.Строительство, пользователи часто сталкиваются с программной ошибкой Не найдено Субконто 1 при попытке проведения документа Поступление (акты, накладные, УПД). Характерной особенностью этой ошибки является то, что она пропадает, если в настройках налогов документа установить флаг НДС включать в стоимость. Это прямо указывает на проблему в блоке формирования движений по 19 счету (НДС по приобретенным ценностям).
В этой статье мы подробно разберем причины возникновения данной ситуации, проанализируем взаимосвязь типового функционала с надстройками БИТ и определим пошаговый алгоритм устранения ошибки.
Для начала разберем, почему программа выдает ошибку именно в разрезе Субконто 1. В типовой конфигурации 1С:Бухгалтерия счета учета НДС (например, 19.03 или 19.04) имеют стандартный набор субконто: Контрагенты и Счета-фактуры полученные. Однако отраслевое решение БИТ.Строительство расширяет эту логику для обеспечения сквозного учета затрат по объектам строительства.
Проанализируем ситуацию: в специализированных планах счетов БИТ (например, на счете 19.33.1) первым субконто часто выступает Объект строительства или Статьи затрат. Программный код БИТ, который перехватывает событие проведения документа (через подписки на события или расширения), ожидает увидеть определенную структуру аналитики. Когда пользователь вручную или через настройки подставляет типовой счет 19.04, код пытается обратиться к Субконто 1, ожидая там увидеть аналитику БИТ, но на типовом счете порядок или состав субконто иной. Это и вызывает программный сбой.
Самый эффективный метод локализации проблемы — использование встроенного отладчика 1С. Рассмотрим, как это сделать правильно:
Субконто 1.Чаще всего код выглядит примерно так:
// Пример логики, которая может вызвать ошибку в БИТ
ДвижениеНДС = Движения.Хозрасчетный.Добавить();
ДвижениеНДС.СчетДт = СчетУчетаНДС;
// Если на счете нет ни одного субконто, обращение ниже вызовет ошибку
ДвижениеНДС.СубконтоДт[СчетУчетаНДС.ВидыСубконто[0].ВидСубконто] = ЗначениеОбъектаСтроительства;
Проанализируем этот фрагмент: если переменная СчетУчетаНДС содержит счет 19.04, у которого нет нужного вида субконто в первой позиции (индекс 0), программа не сможет сопоставить типы данных и выдаст ошибку.
Выясним, какие именно субконто настроены для счетов учета НДС. Нам необходимо сравнить два счета: тот, с которым документ проводится успешно (например, 19.33.1), и тот, на котором возникает ошибка (например, 19.04).
Для этого выполним следующие действия:
19.04 и откроем его карточку.19.33.1.Важный нюанс: в 1С обращение к субконто может происходить по индексу. Если программный модуль БИТ жестко завязан на то, что первое субконто (индекс 0) — это Объекты строительства, то при использовании счета 19.04, где первым идет Контрагенты, запись будет либо некорректной, либо невозможной из-за конфликта типов.
Рассмотрим, почему программа вообще подставляет «неправильный» счет. В 1С:Бухгалтерии за автоматическую подстановку счетов отвечает регистр сведений Счета учета номенклатуры. Если для определенной услуги (например, «Электроэнергия») или группы номенклатуры не указан специализированный счет учета НДС, система будет использовать типовой 19.04.
Разберем по шагам, как исправить настройки автоматической подстановки:
19.33.1).После этой настройки в новых документах будет автоматически подставляться счет, имеющий необходимую для БИТ-модулей аналитику, и ошибка Не найдено Субконто 1 исчезнет.
Проанализируем ситуацию, упомянутую в обсуждении: почему при установке флага НДС включать в стоимость ошибка пропадает? Ответ кроется в алгоритме проведения документа Поступление.
Когда НДС включается в стоимость:
Дт 19 — Кт 60 не формируется.Дт 20 (25, 26) — Кт 60.Если же НДС учитывается отдельно, программа обязана сформировать проводку по счету 19. В этот момент вступает в силу обработчик проведения от БИТ (вкладка Движения (БИТ)), который пытается распределить этот НДС по объектам строительства. Если счет 19 не имеет соответствующего субконто, запись в регистры БИТ обрывается с ошибкой.
Если специфика вашего учета требует использования именно типового счета 19.04, но при этом установлена надстройка БИТ, вам может потребоваться корректировка логики в расширении. Посмотрим, как программно проверить наличие субконто перед обращением к нему, чтобы избежать критической ошибки:
// Безопасное обращение к субконто в коде
ВидСубконтоОбъект = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОбъектыСтроительства;
ИндексСубконто = Движение.СчетДт.ВидыСубконто.Найти(ВидСубконтоОбъект, "ВидСубконто");
Если ИндексСубконто <> Неопределено Тогда
// Субконто найдено на счете, можно записывать значение
Движение.СубконтоДт[ВидСубконтоОбъект] = ЗначениеОбъекта;
КонецЕсли;
Этот подход позволяет избежать жесткой привязки к индексу Субконто 1 и делает систему более устойчивой к изменениям в плане счетов.
Для окончательного решения проблемы рекомендуется:
19.04, проверьте, чтобы на нем были добавлены те виды субконто, которые требуются для работы модулей БИТ (например, через механизм «Дополнительные субконто»).СубконтоДт или СубконтоКт) и для какого счета не хватает аналитики.Соблюдение этих шагов позволит восстановить корректную работу документа и обеспечить правильное формирование проводок как в бухгалтерском учете, так и в специализированных регистрах БИТ.Строительство.