При выгрузке ведомостей на выплату зарплаты или других начислений в банк пользователи программы 1С:Зарплата и управление персоналом 3.1 часто сталкиваются с тем, что в сформированном файле всем транзакциям автоматически присваивается один и тот же код вида зачисления — 01 (заработная плата). При этом бухгалтеру может потребоваться указать другие коды, например, 19 для отпускных или 10 для больничных листов. Рассмотрим подробно, откуда берутся эти коды, чем они отличаются от законодательно утвержденных кодов доходов и какими способами можно решить эту задачу в программе.
Прежде чем переходить к настройке программы, разберем ключевое отличие, которое часто вызывает путаницу у бухгалтеров. В банковских реестрах фигурируют два совершенно разных типа кодов:
Наиболее популярные коды зачисления в формате Сбербанка включают следующие значения:
01 — Заработная плата02 — Командировочные расходы03 — Премии10 — Пособия по временной нетрудоспособности (больничные)14 — Материальная помощь19 — Отпускные выплатыПроанализируем логику работы типовой конфигурации. В стандартной поставке программы 1С:ЗУП на уровне интерфейса документа «Ведомость в банк» нет специального поля, где бухгалтер мог бы вручную выбрать код зачисления (например, указать 19 вместо 01). Программа формирует XML-файл обмена по правилам, заложенным в модулях интеграции с конкретным банком.
Обычно в настройках зарплатного проекта указывается формат выгрузки (например, «Стандартный формат Сбербанка (версия 3.6)»). По умолчанию алгоритм выгрузки ориентируется на общие настройки зарплатного проекта и в большинстве случаев подставляет универсальный код 01. В некоторых современных релизах разработчики реализовали частичное автоматическое сопоставление кода на основе реквизита «Способ выплаты» (или характера выплаты ведомости), но жесткого ручного контроля в пользовательском режиме без доработок нет.
Рассмотрим по шагам четыре основных подхода к решению этой проблемы, от организационных до программных.
Выясним у обслуживающего банка особенности вашего зарплатного тарифа. Зачастую требования использовать конкретно код 19 для отпускных вместо 01 являются личной инициативой куратора от банка или привычкой бухгалтера. На практике для большинства коммерческих банков разница между кодами 01 и 19 не имеет значения, если все эти выплаты производятся в рамках одного договора зарплатного проекта и не влекут за собой повышенную комиссию.
Если банк подтверждает, что зачисление всех выплат под кодом 01 допустимо и тариф при этом не меняется, вы можете продолжать выгружать файлы из 1С без изменений. Это стандартная практика, не вызывающая претензий со стороны контролирующих органов.
Если объем выплат невелик, а банк строго требует разделения кодов (например, для правильного расчета тарифа), можно использовать промежуточный ручной метод. Бухгалтер выгружает ведомость из 1С:ЗУП 3.1 со стандартным кодом 01, импортирует полученный XML-файл в Клиент-Банк, а затем открывает реестр внутри банковской программы и вручную меняет значение кода на 19 или другой необходимый для конкретных сотрудников.
В последних версиях платформы алгоритмы автоматического заполнения кодов были улучшены. Чтобы программа корректно определила вид зачисления при формировании файла, не следует смешивать разные начисления в одной ведомости. Разберем этот процесс:
19 для отпуска, 10 для больничного).Если вам требуется регулярная массовая отправка реестров с жестким разделением кодов и вы не хотите тратить время на ручную корректировку в банке, лучшим решением станет использование расширения конфигурации. Это безопасный способ изменения логики программы без снятия ее с поддержки.
Программист 1С может добавить в документ «Ведомость в банк» дополнительный реквизит (например, СсылкаНаСправочникКодыЗачисления) и переопределить процедуру выгрузки XML-файла. Посмотрим на упрощенный пример кода, который может использоваться в расширении для подмены кода зачисления перед формированием файла выгрузки:
&Вместо("ЗаполнитьПараметрыВыгрузкиРеестра")
Процедура Мой_ЗаполнитьПараметрыВыгрузкиРеестра(ПараметрыВыгрузки, ВедомостьСсылка)
// Вызываем стандартный обработчик конфигурации
ПродолжитьВызов(ПараметрыВыгрузки, ВедомостьСсылка);
// Проверяем заполнение нашего дополнительного реквизита в ведомости
Если ЗначениеЗаполнено(ВедомостьСсылка.ДополнительныеРеквизиты) Тогда
Для Каждого СтрокаРеквизита Из ВедомостьСсылка.ДополнительныеРеквизиты Цикл
Если СтрокаРеквизита.Свойство.Имя = "КодВидаЗачисления" Тогда
// Заменяем стандартное значение "01" на выбранный пользователем код
ПараметрыВыгрузки.Вставить("КодВидаЗачисленияБанка", СтрокаРеквизита.Значение);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Применение такого расширения позволит один раз настроить правила выгрузки и полностью автоматизировать процесс взаимодействия с банком, исключив человеческий фактор и необходимость ручной рутинной работы в сторонних программах.