Рано или поздно каждый бухгалтер или программист, работающий с историческими конфигурациями 1С на обычных формах (такими как 1С:Управление производственным предприятием, редакция 1.3 или 1С:Зарплата и управление персоналом, редакция 2.5 КОРП), сталкивается со странным поведением программы. В документе ЗарплатаКВыплатеОрганизаций присутствует колонка «Взыскано» (в конфигураторе имя этого реквизита табличной части — ВзысканнаяСумма), но при автоматическом заполнении документа она упорно остается пустой.
Давайте подробно разберем, почему так происходит, обратимся к законодательному контексту проблемы, выясним технические сложности реализации автозаполнения в архитектуре старых конфигураций и рассмотрим практические пути решения этой задачи.
Появление этой колонки — не прихоть разработчиков 1С, а прямое требование законодательства Российской Федерации. С 1 июня 2020 года вступили в силу изменения в Федеральный закон № 229-ФЗ «Об исполнительном производстве» и новые Указания Центробанка РФ.
Согласно этим правилам, все работодатели при переводе денежных средств (зарплаты, премий, пособий и других доходов) на счета сотрудников в банках обязаны указывать в расчетных документах:
//ВП//Сумма).Благодаря этой информации банк видит, сколько денег работодатель уже вычел из дохода сотрудника по исполнительным листам, и не производит повторное избыточное списание с расчетного счета физлица.
Проанализируем программный код конфигураций старого поколения. При поиске по имени реквизита ВзысканнаяСумма в конфигураторе можно обнаружить, что обращения к этому полю происходят только на чтение (при формировании печатных форм реестров или при выгрузке файлов для обмена с банками). Записи или расчета этой суммы в типовом коде нет.
Выясним причину такого архитектурного решения. На момент вступления закона в силу (середина 2020 года) конфигурации 1С:УПП 1.3 и 1С:ЗУП 2.5 уже находились на так называемой ограниченной поддержке. Это означает, что фирма 1С поддерживает в них только критически важные изменения законодательства (формы отчетности, новые форматы файлов обмена, ставки налогов). Разработка сложного нового функционала в этих программах не ведется.
Для соблюдения закона разработчики добавили реквизит ВзысканнаяСумма в метаданные и обеспечили его выгрузку в банк (начиная с формата обмена 3.6). Однако сам расчет и заполнение этой колонки методисты 1С оставили на усмотрение пользователей для ручного ввода. Автоматического заполнения «из коробки» для этих конфигураций выпущено не было и уже не будет.
В отличие от устаревших программ, в современных конфигурациях (например, 1С:ЗУП 3.1 или 1С:ERP 2) этот процесс полностью автоматизирован, так как архитектура новых решений изначально проектировалась с учетом сложных взаимосвязей документов выплаты и регистров расчета.
Спроектировать универсальный алгоритм автоматического заполнения колонки «Взыскано» в рамках архитектуры УПП 1.3 достаточно сложно по нескольким причинам:
НачислениеЗарплатыСотрудникам и пишутся в регистр расчета УдержанияОрганизаций. Документ ЗарплатаКВыплатеОрганизаций делает движения совершенно по другим регистрам (например, по регистру накопления ВзаиморасчетыСРаботникамиОрганизаций). Прямой аналитической связи между конкретной выплатой и конкретным удержанием в системе нет.Посмотрим, какими путями можно решить проблему незаполнения колонки на практике.
Если на вашем предприятии работает небольшое количество сотрудников с исполнительными листами, самым простым и надежным решением будет ручной ввод. Перед выгрузкой реестра в банк бухгалтер открывает расчетный листок сотрудника за текущий месяц, смотрит сумму удержания по исполнительному листу и вручную вписывает её в колонку «Взыскано» документа ЗарплатаКВыплатеОрганизаций.
Для автоматизации рутинного труда программисты 1С разрабатывают внешние обработки, подключаемые к документу через механизм «Дополнительные внешние обработки по заполнению табличных частей». Рассмотрим пример логики, которую можно заложить в такую обработку.
Проанализируем алгоритм:
ЗарплатаКВыплатеОрганизаций (период регистрации, организация, список сотрудников в табличной части).УдержанияОрганизаций с отбором по сотрудникам документа, периоду регистрации и видам удержания (свойства которых указывают на то, что это исполнительные листы).ЗарплатаКВыплатеОрганизаций за этот же месяц, по которым уже была заполнена и выплачена сумма удержания (чтобы исключить двойное отражение при выплате второй части зарплаты).ВзысканнаяСумма.Рассмотрим пример программного кода для такой обработки (фрагмент запроса для получения сумм удержаний):
// Пример запроса для получения сумм удержаний по исполнительным листам
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Удержания.Физлицо КАК Физлицо,
| СУММА(Удержания.Результат) КАК СуммаВзыскано
|ИЗ
| РегистрРасчета.УдержанияОрганизаций КАК Удержания
|ГДЕ
| Удержания.ПериодРегистрации = &ПериодРегистрации
| И Удержания.Организация = &Организация
| И Удержания.Физлицо В (&СписокФизлиц)
| И Удержания.ВидРасчета.ЯвляетсяИсполнительнымЛистом = ИСТИНА
|ГРУППИРОВАТЬ ПО
| Удержания.Физлицо";
Запрос.УстановитьПараметр("ПериодРегистрации", СсылкаНаДокумент.ПериодРегистрации);
Запрос.УстановитьПараметр("Организация", СсылкаНаДокумент.Организация);
СписокФизлиц = Новый Массив;
Для Каждого СтрокаТЧ Из СсылкаНаДокумент.ЗарплатаТабличнаяЧасть Цикл
СписокФизлиц.Добавить(СтрокаТЧ.Физлицо);
КонецЦикла;
Запрос.УстановитьПараметр("СписокФизлиц", СписокФизлиц);
РезультатЗапроса = Запрос.Выполнить();
Обратите внимание: в примере кода используется гипотетическое свойство вида расчета ЯвляетсяИсполнительнымЛистом. В реальной базе вам потребуется делать отбор либо по конкретным видам расчета (алименты, удержания по ИЛ), либо анализировать их принадлежность к категории удержаний по исполнительным документам через дополнительные свойства или фиксированный список предопределенных видов расчета.
Если расчет зарплаты на вашем предприятии фактически ведется в современной программе (например, в 1С:ЗУП 3.1), а в 1С:УПП 1.3 данные переносятся только для целей ведения консолидированного бухгалтерского учета и последующей отправки платежей, проблему можно решить на уровне интеграции.
В этом случае необходимо настроить правила конвертации данных (в программе «1С:Конвертация данных 2») таким образом, чтобы значение колонки «Взыскано» из заполненного документа «Ведомость в банк» в ЗУП 3.1 корректно сопоставлялось и переносилось в реквизит ВзысканнаяСумма документа ЗарплатаКВыплатеОрганизаций в УПП 1.3. При такой схеме вам вообще не придется ничего дописывать внутри УПП.
Подводя итог, отметим: колонка «Взыскано» в УПП 1.3 и ЗУП 2.5 пустует не из-за ошибки в вашей базе, а по причине прекращения активного развития этих программных продуктов фирмой 1С. Поскольку требования законодательства по заполнению реестров жесткие, вам обязательно нужно выбрать один из рассмотренных нами путей решения проблемы: ручное заполнение (при малом объеме документов), подключение внешней обработки автоматического заполнения или настройку синхронизации данных.