Как решить проблему с актуальной формой РСВ и закрытием 26 счета по НУ в 1С:Бухгалтерия 2.0?

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

При сопровождении и обновлении сильно доработанных конфигураций «1С:Бухгалтерия предприятия» редакции 2.0 специалисты часто сталкиваются со специфическими трудностями. Особенно остро эти проблемы проявились на финальном этапе жизненного цикла этой редакции (в конце 2020 – начале 2021 года), когда фирма «1С» внедряла важные законодательные изменения в экстренном режиме. В этой статье мы подробно разберем две взаимосвязанные проблемы, возникшие в релизе 2.0.66.128: сложности с поиском автозаполняемой формы отчета «Расчет по страховым взносам» (РСВ) за 4 квартал 2020 года и критический сбой при проведении регламентных операций по закрытию 26 счета в налоговом учете (НУ).

Часть 1. Почему не отображается или не заполняется актуальная форма РСВ?

Рассмотрим ситуацию, когда после успешного обновления конфигурации до версии 2.0.66.128 бухгалтер жалуется на то, что форма отчета РСВ осталась старой (от 18.09.2019 г.) или в ней отсутствует кнопка «Заполнить».

Выясним причину такого поведения системы. В данном периоде фирма «1С» выпускала обновления регламентированной отчетности поэтапно:

  1. В релизе 2.0.66.124 была добавлена лишь визуальная форма-шаблон нового отчета в соответствии с Приказом ФНС России от 15.10.2020 № ЕД-7-11/751@. Кнопка автоматического заполнения для нее отсутствовала, отчет можно было заполнить только вручную.
  2. В релизе 2.0.66.128 разработчики полноценно реализовали механизмы автозаполнения новой формы данными информационной базы.

Если после обновления до релиза 128 вы по-прежнему видите старую форму или неактивную кнопку заполнения, проанализируем ваши действия. Распространенная ошибка пользователей заключается в том, что они пытаются открыть ранее созданный и сохраненный документ отчета. В «1С» логика работы с регламентированными отчетами такова: структура и версия формы жестко привязываются к документу в момент его первоначального создания. При простом обновлении конфигурации старый сохраненный отчет сам по себе не конвертируется в новый формат.

Для решения этой проблемы выполним следующие шаги:

  1. Перейдем в подсистему регламентированной отчетности.
  2. Вместо открытия старого черновика нажмем кнопку «Создать новый отчет».
  3. В окне выбора периода обязательно укажем 4 квартал 2020 года. На данном релизе система автоматически инициализирует актуальный бланк отчета (Приложение № 1 к приказу ФНС России от 18.09.2019 № ММВ-7-11/470@ в редакции приказа ФНС России от 15.10.2020 № ЕД-7-11/751@).
  4. Убедимся, что кнопка «Заполнить» стала активной, и выполним расчет показателей.

Дополнительно отметим технический нюанс: новая регламентированная отчетность тесно связана со служебными алгоритмами, находящимися в общих модулях программы. Если при обновлении конфигурации вы выборочно исключали новые модули (например, оставляя старые версии из-за собственных доработок), новая форма РСВ может работать некорректно или выдавать ошибки при обращении к серверным процедурам. Все новые зашифрованные модули должны быть обновлены без исключения.

Часть 2. Причины сбоя закрытия 26 счета по НУ на релизе 2.0.66.128

Перейдем к более сложной технической проблеме, с которой часто сталкиваются программисты «1С» при сопровождении нетиповых (доработанных) баз данных. После обновления на релиз 2.0.66.128 перестает проводиться документ «Регламентная операция» при выполнении закрытия 26 счета по налоговому учету (НУ) — проводки либо вообще не формируются, либо расчет происходит некорректно.

Проанализируем ситуацию изнутри. Фирма «1С» поставляет часть критически важных общих модулей, отвечающих за расчет себестоимости, закрытие затратных счетов и расчет налогов, в скомпилированном двоичном виде (без исходных текстов). В среде разработчиков их называют «зашифрованными» или «двоичными» модулями.

На доработанных конфигурациях программисты часто применяли обходной маневр: во время обновления они намеренно снимали галочки со служебных модулей закрытия месяца, оставляя их старые версии, в которых исходный код еще был открыт. Это позволяло сохранять собственные кастомные доработки алгоритмов распределения затрат и выполнять отладку кода. До релиза 128 такой подход успешно «прокатывал».

Почему же схема сломалась в релизе 2.0.66.128? Дело в том, что в этом обновлении произошли глобальные архитектурные изменения метаданных в связи с законодательными требованиями начала 2021 года:

Новые зашифрованные модули закрытия месяца были полностью переписаны под измененную структуру метаданных. Когда мы оставляем старый открытый модуль закрытия счетов, его код пытается обратиться к старой структуре регистров и счетов. Происходит внутренний конфликт: старый алгоритм распределения косвенных расходов «не видит» новые параметры проведения документов и новые субсчета, из-за чего закрытие 26 счета по налоговому учету завершается ошибкой или выполняется вхолостую без формирования необходимых проводок в регистре бухгалтерии.

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

Часть 3. Варианты решения проблемы для разработчиков: как обойти зашифрованные модули?

Что делать, если конфигурация сильно доработана, логику закрытия 26 счета необходимо скорректировать под требования бизнеса, но сам модуль закрытия теперь зашифрован? Рассмотрим детально три архитектурных способа обхода этой проблемы без нарушения поддержки и без декомпиляции модулей 1С.

Способ №1: Использование механизма «Подписки на события»

Это наиболее корректный и безопасный метод разработки в рамках обычных форм 1С v8.3. Подписка на событие позволяет выполнить наш собственный открытый программный код сразу после того, как отработает стандартный закрытый алгоритм проведения документа РегламентнаяОперация.

Разберем по шагам реализацию этого механизма:

  1. Откроем базу в режиме «Конфигуратор».
  2. В дереве метаданных найдем ветку «Общие» -> «Подписки на события» и добавим новую подписку.
  3. Назовем подписку, например, КорректировкаПроведенияРегламентныхОпераций.
  4. В качестве источника выберем документ ДокументОбъект.РегламентнаяОперация.
  5. В качестве события выберем ОбработкаПроведения.
  6. Создадим новый неглобальный общий модуль (например, КорректировкаУчетаПроводкиСервер) и укажем его процедуру в качестве обработчика события. Модуль должен иметь свойства Сервер и Внешнее соединение.

Посмотрим на пример программного кода, который мы можем написать внутри созданной процедуры общего модуля для программной корректировки распределения 26 счета:


Процедура КорректировкаПроведенияРегламентныхОперацийОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт

    // Проверяем, что документ проводится и это операция закрытия затратных счетов
    Если Отказ Или Источник.ПометкаУдаления Тогда
        Возврат;
    КонецЕсли;

    Если Источник.ВидОперации = Перечисления.ВидыРегламентныхОпераций.ЗакрытиеСчетов20_23_25_26 Тогда
        
        // Получаем таблицу движений по регистру бухгалтерии (налоговый учет)
        ТаблицаНУ = Источник.Движения.Налоговый.Выгрузить();
        
        НужнаМодификация = Ложь;
        
        // Проанализируем движения документа по 26 счету
        Для Каждого СтрокаДвижения Из ТаблицаНУ Цикл
            Если СтрокаДвижения.СчетКт = ПланыСчетов.Налоговый.ОбщехозяйственныеРасходы Тогда
                // Здесь мы можем реализовать собственную логику распределения или доначисления сумм НУ
                // Например, если сумма НУ по какой-то причине осталась нулевой:
                Если СтрокаДвижения.СммаНУКт = 0 Тогда
                    // Вычисляем сумму на основе данных бухгалтерского учета или собственных регистров
                    СтрокаДвижения.СуммаНУКт = СтрокаДвижения.Сумма; // Пример условного заполнения
                    НужнаМодификация = Истина;
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        
        // Если движения были изменены, записываем их обратно в документ
        Если НужнаМодификация Тогда
            Источник.Движения.Налоговый.Загрузить(ТаблицаНУ);
            // Устанавливаем признак необходимости записи движений при проведении
            Источник.Движения.Налоговый.Записывать = Истина;
        КонецЕсли;
        
    КонецЕсли;

КонецПроцедуры

Используя данный метод, мы не трогаем стандартный зашифрованный код закрытия месяца. Система сначала выполняет стандартный расчет (пусть даже он не закрывает часть аналитики по 26 счету), а затем наша подписка перехватывает управление и программно «дозакрывает» или перераспределяет проводки по налоговому учету так, как этого требует специфика ведения учета на вашем предприятии.

Способ №2: Разработка внешней обработки постобработки данных

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

Схема работы внешней обработки выглядит следующим образом:

  1. Пользователь запускает обработку и указывает период (месяц).
  2. Алгоритм обработки производит поиск документа РегламентнаяОперация за выбранный период с видом операции ЗакрытиеСчетов20_23_25_26.
  3. Программа анализирует остатки на конец месяца по дебету и кредиту счета 26 в налоговом учете с помощью запроса к виртуальной таблице РегистрБухгалтерии.Налоговый.Остатки.
  4. Если обнаруживается незакрытое сальдо по налоговому учету, обработка в режиме транзакции программно корректирует движения документа РегламентнаяОперация, добавляя недостающие проводки в корреспонденции со счетами продаж (90.02, 90.08 и др.) или основного производства (20.01), в зависимости от принятой учетной политики.

Плюс этого метода — конфигурация остается полностью типовой, что облегчает последующую установку обновлений. Минус — появляется человеческий фактор (бухгалтер может забыть запустить внешнюю обработку после перепроведения документов закрытия месяца).

Способ №3: Переход на редакцию 3.0 и внедрение механизма расширений

Наиболее стратегически верным решением, которое настоятельно рекомендует фирма «1С», является перевод организации на современную редакцию «Бухгалтерия предприятия 3.0». Поддержка редакции 2.0 завершена, и дальнейшее ее использование связано с большими рисками несоответствия законодательству.

Перейдя на редакцию 3.0 (работающую на управляемых формах платформы 1С v8.3), вы получите доступ к революционному инструменту кастомизации — расширениям конфигурации (файлы с расширением *.cfe).

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


&После("ВыполнитьРаспределениеКосвенныхРасходов")
Процедура Расширение_ВыполнитьРаспределениеКосвенныхРасходов(ПараметрыРасчета, РезультатВыполнения)
    // Данный код выполнится сразу после стандартного (даже если он находится в закрытом модуле)
    // Здесь мы можем реализовать гибкую логику корректировки распределения 26 счета
    КорректировкаЗатратСервер.ВыполнитьПостОбработкуСчета26(ПараметрыРасчета);
КонецПроцедуры

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

Выводы и рекомендации

Подводя итоги нашего анализа, дадим несколько практических советов:

← На главную