При работе в 1С:ERP Управление предприятием пользователи часто сталкиваются с методологическими сложностями при учете целевого финансирования (субсидий). Одной из наиболее критичных проблем является некорректное формирование проводок при выбытии основного средства (ОС), приобретенного за счет таких средств. В частности, при использовании документа Подготовка к передаче ОС система может сформировать ошибочную сумму по дебету счета 98.05 («Доходы будущих периодов») в корреспонденции со счетом 91.01 («Прочие доходы»). Вместо остаточной стоимости программа подтягивает сумму, равную «первоначальная стоимость плюс накопленная амортизация», что в корне неверно и ведет к существенному искажению финансового результата.
В данной статье мы разберем причины возникновения этой ошибки, проанализируем механизмы работы системы и определим шаги по ее устранению, опираясь на архитектурные изменения последних релизов конфигурации.
Для начала проанализируем, как методологически должен выглядеть процесс признания доходов от целевого финансирования при продаже актива. Согласно ПБУ 13/2000, при выбытии объекта ОС, приобретенного за счет бюджетных средств, не списанная на доходы часть целевого финансирования (остаток на счете 98.05) должна быть признана в качестве прочего дохода в момент выбытия актива. Эта сумма должна строго соответствовать остаточной стоимости объекта в части, профинансированной за счет субсидии.
В системе 1С:ERP за расчет этой суммы отвечает алгоритм, обращающийся к регистру накопления Стоимость ОС. Рассмотрим ситуацию подробнее:
Подготовка к передаче ОС (или Списание ОС), система обращается к данным регистров для определения текущего состояния актива.Дт 98.05 Кт 91.01 программный код выполняет выборку из виртуальных таблиц остатков и оборотов.Стоимость ОС игнорирует вид движения (приход/расход) или некорректно обрабатывает ресурс Амортизация. Вместо вычитания амортизации из стоимости, алгоритм может суммировать эти показатели в абсолютных величинах.Разберем ситуацию, описанную в практике сопровождения. При формировании проводок система берет данные из регистра накопления Стоимость ОС, но делает это без учета контекста операции выбытия. Если мы посмотрим на структуру этого регистра, мы увидим ресурсы Стоимость и Амортизация. Логика расчета должна выглядеть следующим образом:
ОстаточнаяСтоимость = Стоимость (Остаток) - Амортизация (Остаток)
Однако в проблемных версиях конфигурации запрос в модуле проведения документа ПодготовкаКПередачеОС обращается к оборотам регистра за период, не учитывая, что накопленная амортизация уже «сидит» в регистре с определенным знаком. В итоге получается абсурдная ситуация: если ОС стоило 100 000 руб., а амортизация составила 40 000 руб., система вместо 60 000 руб. (100 - 40) может подставить в проводку 140 000 руб. (100 + 40).
Начиная с последних релизов 2.5, фирма «1С» начала активный перенос кода, отвечающего за расчет проводок внеоборотных активов, в специализированные модули с приставкой Переопределяемый. Это сделано специально для того, чтобы специалисты на местах могли корректировать логику без изменения основной конфигурации. Рассмотрим, как мы можем этим воспользоваться.
Вам необходимо обратить внимание на общий модуль ВнеоборотныеАктивыПереопределяемый. Именно в нем теперь локализованы процедуры, позволяющие вмешаться в процесс формирования проводок по целевому финансированию. Если вы обнаружили ошибку в своем релизе, наиболее правильным путем будет создание расширения конфигурации.
Посмотрим на пример логики, которую необходимо внедрить в расширение (процедура-обработчик формирования проводок):
// В расширении перехватываем процедуру расчета сумм целевого финансирования
&После("СформироватьДвиженияПоЦелевомуФинансированию")
Процедура Расш1_СформироватьДвиженияПоЦелевомуФинансированию(ДокументСсылка, ПараметрыПроведения, Движения)
// Проанализируем таблицу проводок, сформированную типовым механизмом
Для Каждого Проводка Из Движения.Хозрасчетный Цикл
Если Проводка.СчетДт = ПланыСчетов.Хозрасчетный.ДоходыБудущихПериодов_05
И Проводка.СчетКт = ПланыСчетов.Хозрасчетный.ПрочиеДоходы Тогда
// Получаем верную остаточную стоимость из регистра "Стоимость ОС"
// Важно: учитываем только организацию и конкретный инвентарный номер
ВернаяСумма = ПолучитьОстаточнуюСтоимостьЦелевыхСредств(ДокументСсылка.ОсновноеСредство);
Если Проводка.Сумма <> ВернаяСумма Тогда
Проводка.Сумма = ВернаяСумма;
Проводка.СуммаНУ = ВернаяСумма; // Если требуется по налоговому учету
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Рассмотрим по шагам, что нужно сделать бухгалтеру и программисту при обнаружении некорректных проводок:
Видом движения (например, «Приход» по амортизации вместо «Расход»).Подготовка к передаче ОС. Однако помните, что это исключит документ из автоматических пересчетов при перекрытии месяца.Как отмечают участники профессиональных сообществ, разработчики типовых конфигураций часто исправляют подобные ошибки через «преобразование алгоритмов». Это означает, что в одном релизе вы можете видеть прямой запрос к таблице, а в другом — вызов сложной функции из общего модуля ВнеоборотныеАктивыСервер, которая учитывает больше нюансов. Именно поэтому при возникновении ошибки первым делом рекомендуется развернуть пустую базу последнего доступного релиза и проверить воспроизводимость проблемы на ней.
Подводя итог, отметим: проблема с завышением сумм по счету 98.05 является известным «багом» в архитектуре ERP 2.5, связанным с переходом на новые модели учета внеоборотных активов. Использование Переопределяемых модулей — это ваш главный инструмент для оперативного исправления ситуации, не дожидаясь официального выхода исправленного релиза, который может затянуться на несколько месяцев.