Почему не заполняется колонка «Взыскано» в документе «Зарплата к выплате организаций» в 1С:УПП 1.3 и как это исправить?

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

Рано или поздно каждый бухгалтер или программист, работающий с историческими конфигурациями 1С на обычных формах (такими как 1С:Управление производственным предприятием, редакция 1.3 или 1С:Зарплата и управление персоналом, редакция 2.5 КОРП), сталкивается со странным поведением программы. В документе ЗарплатаКВыплатеОрганизаций присутствует колонка «Взыскано» (в конфигураторе имя этого реквизита табличной части — ВзысканнаяСумма), но при автоматическом заполнении документа она упорно остается пустой.

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

1. Законодательный контекст: откуда появилась колонка «Взыскано»?

Появление этой колонки — не прихоть разработчиков 1С, а прямое требование законодательства Российской Федерации. С 1 июня 2020 года вступили в силу изменения в Федеральный закон № 229-ФЗ «Об исполнительном производстве» и новые Указания Центробанка РФ.

Согласно этим правилам, все работодатели при переводе денежных средств (зарплаты, премий, пособий и других доходов) на счета сотрудников в банках обязаны указывать в расчетных документах:

  1. Код вида дохода (1, 2 или 3) — для определения возможности и очередности списания долгов банком.
  2. Сумму, уже удержанную работодателем по исполнительным документам (алименты, штрафы, долги). В банковских реестрах и платежных поручениях эта сумма передается в специальном формате (обычно в поле «Назначение платежа» в виде конструкции //ВП//Сумма).

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

2. Почему в 1С:УПП 1.3 и 1С:ЗУП 2.5 колонка пустая?

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

Выясним причину такого архитектурного решения. На момент вступления закона в силу (середина 2020 года) конфигурации 1С:УПП 1.3 и 1С:ЗУП 2.5 уже находились на так называемой ограниченной поддержке. Это означает, что фирма 1С поддерживает в них только критически важные изменения законодательства (формы отчетности, новые форматы файлов обмена, ставки налогов). Разработка сложного нового функционала в этих программах не ведется.

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

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

3. Техническая сложность автоматического расчета в УПП 1.3

Спроектировать универсальный алгоритм автоматического заполнения колонки «Взыскано» в рамках архитектуры УПП 1.3 достаточно сложно по нескольким причинам:

4. Варианты решения проблемы

Посмотрим, какими путями можно решить проблему незаполнения колонки на практике.

Вариант А. Ручное заполнение

Если на вашем предприятии работает небольшое количество сотрудников с исполнительными листами, самым простым и надежным решением будет ручной ввод. Перед выгрузкой реестра в банк бухгалтер открывает расчетный листок сотрудника за текущий месяц, смотрит сумму удержания по исполнительному листу и вручную вписывает её в колонку «Взыскано» документа ЗарплатаКВыплатеОрганизаций.

Вариант Б. Использование внешних обработок заполнения табличных частей

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

Проанализируем алгоритм:

  1. Обработка получает контекст документа ЗарплатаКВыплатеОрганизаций (период регистрации, организация, список сотрудников в табличной части).
  2. Выполняется запрос к регистру расчета УдержанияОрганизаций с отбором по сотрудникам документа, периоду регистрации и видам удержания (свойства которых указывают на то, что это исполнительные листы).
  3. Запрос собирает суммы удержаний за указанный месяц.
  4. Дополнительно запрос может анализировать другие документы ЗарплатаКВыплатеОрганизаций за этот же месяц, по которым уже была заполнена и выплачена сумма удержания (чтобы исключить двойное отражение при выплате второй части зарплаты).
  5. Полученные данные сопоставляются по сотрудникам и записываются в колонку ВзысканнаяСумма.

Рассмотрим пример программного кода для такой обработки (фрагмент запроса для получения сумм удержаний):


// Пример запроса для получения сумм удержаний по исполнительным листам
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	Удержания.Физлицо КАК Физлицо,
|	СУММА(Удержания.Результат) КАК СуммаВзыскано
|ИЗ
|	РегистрРасчета.УдержанияОрганизаций КАК Удержания
|ГДЕ
|	Удержания.ПериодРегистрации = &ПериодРегистрации
|	И Удержания.Организация = &Организация
|	И Удержания.Физлицо В (&СписокФизлиц)
|	И Удержания.ВидРасчета.ЯвляетсяИсполнительнымЛистом = ИСТИНА
|ГРУППИРОВАТЬ ПО
|	Удержания.Физлицо";

Запрос.УстановитьПараметр("ПериодРегистрации", СсылкаНаДокумент.ПериодРегистрации);
Запрос.УстановитьПараметр("Организация", СсылкаНаДокумент.Организация);

СписокФизлиц = Новый Массив;
Для Каждого СтрокаТЧ Из СсылкаНаДокумент.ЗарплатаТабличнаяЧасть Цикл
    СписокФизлиц.Добавить(СтрокаТЧ.Физлицо);
КонецЦикла;
Запрос.УстановитьПараметр("СписокФизлиц", СписокФизлиц);

РезультатЗапроса = Запрос.Выполнить();

Обратите внимание: в примере кода используется гипотетическое свойство вида расчета ЯвляетсяИсполнительнымЛистом. В реальной базе вам потребуется делать отбор либо по конкретным видам расчета (алименты, удержания по ИЛ), либо анализировать их принадлежность к категории удержаний по исполнительным документам через дополнительные свойства или фиксированный список предопределенных видов расчета.

Вариант В. Доработка правил обмена при выгрузке из внешних систем

Если расчет зарплаты на вашем предприятии фактически ведется в современной программе (например, в 1С:ЗУП 3.1), а в 1С:УПП 1.3 данные переносятся только для целей ведения консолидированного бухгалтерского учета и последующей отправки платежей, проблему можно решить на уровне интеграции.

В этом случае необходимо настроить правила конвертации данных (в программе «1С:Конвертация данных 2») таким образом, чтобы значение колонки «Взыскано» из заполненного документа «Ведомость в банк» в ЗУП 3.1 корректно сопоставлялось и переносилось в реквизит ВзысканнаяСумма документа ЗарплатаКВыплатеОрганизаций в УПП 1.3. При такой схеме вам вообще не придется ничего дописывать внутри УПП.

Выводы

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

← На главную