Как выгрузить реестр на счета подотчетных лиц из 1С:Бухгалтерия, если зарплата ведется во внешней программе?

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

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

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

Причина проблемы: Почему исчезает кнопка «Выгрузить в банк»?

Разберем внутреннюю логику конфигурации 1С:БП 3.0. В форме документа ВедомостьНаВыплатуЗарплатыВБанк видимость кнопок, связанных с обменом с банком, жестко привязана к функциональной опции ИспользоватьВнутреннийУчетЗарплаты. Когда мы устанавливаем в настройках ведение учета во внешней программе, функция ЗарплатаКадрыОбластьДанных.ИспользоватьВнутреннийУчетЗарплаты() возвращает Ложь. В результате программный код при создании формы скрывает команды выгрузки.

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

Решение 1: Использование специализированного документа для подотчетников

Прежде чем приступать к кодингу, проверим наличие в вашем релизе специализированного функционала. В современных версиях БП 3.0 (начиная с 2021 года) появился документ Ведомость на выплату подотчетным лицам. Рассмотрим, как с ним работать:

  1. Перейдем в раздел Банк и касса — Подотчетные лица — Ведомости на выплату подотчетным лицам.
  2. Создадим новый документ. В нем можно указать список сотрудников и суммы.
  3. Этот документ по умолчанию поддерживает выгрузку в банк по формату зарплатного проекта, но корректно формирует назначение платежа и коды видов доходов.

Если в вашей базе (например, при использовании кастомных сборок типа БИТ.Финанс) этот документ скрыт или не настроен, перейдем к программным методам доработки. Для упрощения технического обслуживания таких кастомных сборок можно настроить автоматическое архивирование и обновление нескольких баз 1С в тихом режиме.

Решение 2: Программный вывод кнопки через расширение

Чтобы не снимать конфигурацию с поддержки, используем механизм расширений. Нам необходимо переопределить поведение формы документа ВедомостьНаВыплатуЗарплатыВБанк. Выясним, какой код нам понадобится для восстановления функционала.

Создадим расширение и добавим в него форму документа. В модуле формы перехватим процедуру ПриСозданииНаСервере:


&НаСервере
&Вместо("ПриСозданииНаСервере")
Процедура ИТ_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ПродолжитьВызов(Отказ, СтандартнаяОбработка);
    
    // Принудительно отображаем кнопки выгрузки, даже если учет во внешней программе
    Если Не Элементы.Найти("ФормаВыгрузитьФайлДляОбменаСБанком") = Неопределено Тогда
        Элементы.ФормаВыгрузитьФайлДляОбменаСБанком.Видимость = Истина;
        Элементы.ФормаВыгрузитьФайлДляОбменаСБанком.Доступность = Истина;
    КонецЕсли;
КонецПроцедуры

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

Решение 3: Использование стандартных методов обмена в коде

Если вы решили написать собственную обработку или доработать существующую, проанализируем, какие методы платформы отвечают за формирование файла. Как было отмечено в обсуждении на форуме, ключевым является общий модуль ОбменСБанкамиПоЗарплатнымПроектамКлиент.

Рассмотрим пример вызова диалога выгрузки файла:


// Пример вызова выгрузки из формы документа или внешней обработки
ПараметрыВыгрузки = Новый Структура;
ПараметрыВыгрузки.Вставить("Документ", Объект.Ссылка);
ПараметрыВыгрузки.Вставить("ЗарплатныйПроект", Объект.ЗарплатныйПроект);

ОбменСБанкамиПоЗарплатнымПроектамКлиент.ВыгрузитьФайлДляОбменаСБанком(ПараметрыВыгрузки);

Функция ВыгрузитьФайлДляОбменаСБанком сама проанализирует данные документа, сформирует структуру XML согласно стандарту ISO 20022 или старому формату 1С и предложит пользователю сохранить файл на диск.

Решение 4: Адаптация формата XML под требования банков

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

Обычно используются следующие коды:

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

Специфика работы в БИТ.Финанс

Посмотрим на ситуацию со стороны систем с установленным модулем БИТ.Финанс. В таких конфигурациях процесс оплаты обычно идет через Заявку на расходование денежных средств. Оптимальным решением здесь будет:

  1. Формирование реестра не из зарплатной ведомости, а из реестра платежей БИТ.Финанс.
  2. Настройка типа операции Перечисление подотчетному лицу. Чтобы проконтролировать корректность отражения проводок после настройки обмена, можно выполнить автоматическую сверку бухгалтерских проводок между базами 1С.
  3. Использование внутренней обработки БИТ для выгрузки в Клиент-Банк, которая умеет собирать несколько заявок в один файл.

Это позволит сохранить прозрачность управленческого учета и автоматически сформировать правильные проводки Дт 71.01 Кт 51 при подтверждении выписки банка.

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

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

Выясним напоследок: всегда проверяйте актуальность формата обмена с вашим банком. Даже небольшое отклонение в структуре XML (например, отсутствие номера договора в шапке) приведет к отказу в импорте файла на стороне банковского ПО.

← На главную