Как автоматически заполнить недостающие данные в регламентированном отчете 1С:УПП?

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

При подготовке регламентированной отчетности, в частности единого «Расчета по страховым взносам», бухгалтеры нередко сталкиваются с ситуацией, когда отдельные показатели не заполняются автоматически типовым механизмом конфигурации. Характерный пример — строка 230 подраздела 3.2 («в том числе по гражданско-правовым договорам»). Если на предприятии работают сотни сотрудников по договорам ГПХ, ручной ввод становится физически невозможным. Разберем причины такого поведения системы и рассмотрим надежные программные способы автоматического дозаполнения данных без снятия конфигурации с поддержки.

Анализ причин незаполнения строки 230

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

  1. Настройка видов начислений: В планах видов расчета (ОсновныеНачисленияОрганизаций или ДополнительныеНачисленияОрганизаций) у начислений по договорам подряда должен быть указан вид дохода для страховых взносов именно как договоры гражданско-правового характера. Если начисление настроено как обычная оплата труда, суммы попадут в общую базу (строка 220), но строка 230 останется пустой.
  2. Данные регистра накопления: Регламентированный отчет формирует показатели Раздела 3 на основании движений регистра накопления УчетДоходовДляИсчисленияСтраховыхВзносов. Если документы были проведены некорректно или правились вручную, аналитика по договорам ГПХ может быть утеряна.
  3. Ошибки релизов конфигурации: При вводе новых форм отчетности в типовые конфигурации первичные алгоритмы сбора данных нередко содержат неточности в текстах запросов модуля отчета, требующие оперативного исправления.

Способ 1. Программная корректировка сохраненного документа «РегламентированныйОтчет»

Рассмотрим вариант, выбранный автором обсуждения. Интерактивная работа с открытой формой отчета крайне неудобна: в Разделе 3 данные распределены постранично по каждому застрахованному лицу, и программно переключать визуальные страницы через табличный документ неэффективно. Правильный подход — работать напрямую с данными сохраненного документа РегламентированныйОтчет.

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

  1. Бухгалтер формирует регламентированный отчет типовым механизмом, нажимает кнопку «Заполнить» и записывает документ. Форма отчета обязательно должна быть закрыта.
  2. Внешняя обработка получает объект документа РегламентированныйОтчет и извлекает сохраненные показатели.
  3. Обработка выполняет запрос к регистру УчетДоходовДляИсчисленияСтраховыхВзносов за отчетный период с отбором по видам доходов ГПХ в разрезе физических лиц.
  4. В цикле по полученным данным обработка находит строки соответствующих сотрудников в структуре показателей Раздела 3 и прописывает суммы в показатели строки 230.
  5. Модифицированная структура упаковывается обратно в хранилище значений, и документ записывается.

Посмотрим на пример кода внешней обработки, выполняющей подобную модификацию:


ДокументОбъект = ВыбранныйОтчет.ПолучитьОбъект();

// Извлекаем сохраненную структуру показателей
СтруктураДанных = ДокументОбъект.ДанныеОтчета.Получить();

Если ТипЗнч(СтруктураДанных) = Тип("Структура") Тогда
    
    // Получаем таблицу показателей по Разделу 3 (имя ключа зависит от редакции формы)
    Если СтруктураДанных.Свойство("Показатели_Раздел3") Тогда
        ТаблицаРаздел3 = СтруктураДанных.Показатели_Раздел3;
        
        // Обходим строки структуры и подставляем рассчитанные суммы ГПХ
        Для Каждого СтрокаОтчета Из ТаблицаРаздел3 Цикл
            // Поиск соответствия физлица или СНИЛС
            СуммаГПХ = НайтиСуммуГПХПоСотруднику(СтрокаОтчета.СНИЛС);
            Если СуммаГПХ > 0 Тогда
                СтрокаОтчета.П000320023001 = СуммаГПХ; // Код показателя строки 230
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
    
    // Помещаем обновленные данные обратно в хранилище и сохраняем документ
    ДокументОбъект.ДанныеОтчета = Новый ХранилищеЗначения(СтруктураДанных, СтепеньСжатия.Оптимальная);
    ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
    
КонецЕсли;

Способ 2. Подключение внешней формы регламентированного отчета

Проанализируем альтернативный и наиболее рекомендуемый с точки зрения архитектуры способ. Вместо пакетной перезаписи уже сохраненного отчета можно скорректировать сам алгоритм формирования показателей. В 1С:УПП предусмотрен штатный механизм внешних форм регламентированной отчетности:

  1. Откроем справочник РегламентированныеОтчеты, найдем нужный расчет и выгрузим его типовую форму в файл внешней обработки с расширением .erf.
  2. Откроем полученную обработку в конфигураторе и перейдем в модуль объекта. Найдем процедуру формирования запроса для Раздела 3, отвечающую за выборку начислений по строкам 210, 220 и 230.
  3. Скорректируем текст запроса или условия постобработки выборки, чтобы суммы начислений с кодом договора ГПХ корректно распределялись в поле строки 230.
  4. Сохраним обработку и в справочнике РегламентированныеОтчеты переключим переключатель использования формы на «Использовать внешнюю форму», указав путь к файлу.

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

Ограничения и важные нюансы реализации

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

  1. Конфликт открытых окон: Модифицировать реквизит ДанныеОтчета разрешается исключительно при закрытом документе у всех пользователей. Если документ открыт на клиентском месте, последующее нажатие пользователем кнопки «Сохранить» или закрытие формы перезапишет данные базы текущим содержимым экрана.
  2. Сброс данных при перезаполнении: Любое нажатие кнопки «Заполнить» внутри формы регламентированного отчета полностью пересоздает структуру данных, уничтожая все изменения, внесенные внешней обработкой.
  3. Контрольные соотношения: Данные строки 230 должны строго соотноситься с общей базой (строка 220) и общими суммами выплат (строка 210). Если просто заполнить строку 230 без проверки остальных строк, встроенная проверка контрольных соотношений и форматно-логический контроль на стороне ФНС выдадут ошибки при выгрузке в XML.
← На главную