При работе в программе 1С:Зарплата и управление персоналом 3.1 (ЗУП 3.1) пользователи часто сталкиваются с тем, что стандартная кнопка «Выгрузить файл» в документе «Ведомость в банк» формирует реестр только в формате XML. Это обусловлено тем, что типовой механизм обмена по зарплатным проектам в 1С ориентирован на универсальный стандарт XML, согласованный со Сбербанком и другими крупными финансовыми организациями. Однако многие региональные или специализированные банки по-прежнему требуют предоставлять реестры на выплату зарплаты в текстовом формате с разделителями (расширение .txt).
В этой статье мы подробно разберем несколько эффективных способов решения этой задачи: от разработки собственного алгоритма выгрузки до использования штатных обходных путей программы.
Прежде чем перейти к решениям, выясним причину такого поведения системы. Фирма «1С» совместно со Сбербанком разработала единый стандарт обмена данными электронных документов. Этот стандарт базируется на XML-структуре. Изменение формата выгрузки «в один клик» в стандартных настройках программы не предусмотрено, так как структура каждого файла TXT строго индивидуальна для каждого конкретного банка. В приложении к вашему договору с банком всегда фиксируется точная структура: порядок следования полей (например, ФИО, расчетный счет, сумма), разделители (запятая, точка с запятой или знак табуляции) и кодировка текстового файла (обычно Windows-1251 или DOS).
Если у банка уникальный формат реестра, наиболее надежным решением будет создание внешней печатной формы или внешней обработки заполнения. Рассмотрим пример программного кода, который обходит табличную часть документа ВедомостьВБанк и записывает данные в текстовый файл с разделителями.
Для создания собственной выгрузки мы можем использовать следующий шаблон кода на языке 1С:
// Создаем объект для формирования текстового файла
ТекстовыйФайл = Новый ТекстовыйДокумент;
// Получаем ссылку на текущий документ ведомости
СсылкаНаВедомость = Параметры.Источник;
// Запрашиваем данные табличной части "Состав" ведомости
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВедомостьВБанкСостав.ФизическоеЛицо.Наименование КАК ФИО,
| ВедомостьВБанкСостав.НомерЛицевогоСчета КАК НомерСчета,
| ВедомостьВБанкСостав.КВыплате КАК Сумма
|ИЗ
| Документ.ВедомостьВБанк.Состав КАК ВедомостьВБанкСостав
|ГДЕ
| ВедомостьВБанкСостав.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", СсылкаНаВедомость);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
// Обходим полученные строки и формируем структуру TXT
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Формируем строку: ФИО, номер счета и сумма, разделенные точкой с запятой
СтрокаВыгрузки = ВыборкаДетальныеЗаписи.ФИО + ";" +
ВыборкаДетальныеЗаписи.НомерСчета + ";" +
Формат(ВыборкаДетальныеЗаписи.Сумма, "ЧГ=0");
// Добавляем строку в текстовый документ
ТекстовыйФайл.ДобавитьСтроку(СтрокаВыгрузки);
КонецЦикла;
// Записываем файл на диск в кодировке ANSI (Windows-1251)
ИмяФайла = "C:\ВыгрузкаБанк\Реестр_" + Формат(ТекущаяДата(), "ДФ=yyyyMMdd") + ".txt";
ТекстовыйФайл.Записать(ИмяФайла, КодировкаТекста.ANSI);
Этот код можно легко адаптировать под требования любого банка. Если банк требует использовать разделитель табуляции вместо точки с запятой, мы можем заменить символ разделителя на системную константу Символы.Таб.
Прежде чем приступать к программированию собственного решения, мы рекомендуем обратиться в службу технической поддержки вашего банка (в отдел, занимающийся обслуживанием зарплатных проектов). Крупные и средние коммерческие банки (такие как Промсвязьбанк, Уралсиб, Россельхозбанк и другие), знающие специфику систем 1С, часто предоставляют своим клиентам **готовые внешние обработки** абсолютно бесплатно.
Проанализируем процесс подключения такой обработки в программу:
.epf..epf.Если ваша организация перечисляет денежные средства сотрудникам не в рамках зарплатного проекта, а на их личные произвольные счета в различных банках (документ «Ведомость на счета»), в программе предусмотрен другой стандартный путь создания TXT-файла через механизм клиент-банка.
Разберем этот процесс по шагам:
1c_to_kl.txt, предназначенный для импорта в любой Клиент-Банк. Этот файл корректно распознается банковским ПО, и ручная набивка платежек не потребуется.Рассмотрим простейший обходной путь, который выручит в экстренной ситуации, когда файл нужно отправить срочно, а готовой обработки или программиста под рукой нет. Этот способ основан на возможностях табличного документа 1С.
Выполним следующие действия:
Ctrl + S.Важное примечание: При таком способе файл запишется в виде текстовой псевдотаблицы. Если банк предъявляет жесткие требования к автоматической загрузке реестра (например, отсутствие шапки документа и пустых строк), этот файл перед отправкой придется быстро отредактировать в текстовом редакторе (Блокнот или Notepad++), удалив лишние строки заголовка и подвала.