Как в 1С:ЗУП 3.1 выгрузить расчетные листки по всем сотрудникам в отдельные файлы Excel?

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

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

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

Способ 1: Использование механизма «Рассылка отчетов»

Проанализируем самый простой и быстрый способ, который не требует навыков программирования. В типовых конфигурациях 1С, включая ЗУП 3.1, существует мощный инструмент — Рассылка отчетов. Хотя его прямое назначение — отправка документов на почту, мы можем использовать его для генерации персональных файлов.

Рассмотрим пошагово, как настроить этот процесс:

  1. Перейдем в раздел Администрирование — Печатные формы, отчеты и обработки — Рассылки отчетов.
  2. Создадим новую рассылку. В поле «Отчет» выберем «Расчетный листок».
  3. На вкладке «Расписание» оставим признак «Выполнять вручную» (если нам не нужна регулярная отправка).
  4. На вкладке «Дополнительно» в поле Тип получателей выберем Физические лица. Это критически важный момент: именно этот выбор позволяет системе «понять», что для каждого человека нужно сформировать персональные данные.
  5. Установим флажок Свой отчет для каждого получателя.
  6. В табличной части выберем сотрудников (получателей). Хитрость: если вам нужно получить все файлы себе, вы можете указать свой адрес электронной почты для всех сотрудников или временно подменить их адреса в справочнике своим.
  7. На вкладке «Доставка» выберем формат Excel (.xlsx).

После запуска рассылки система сформирует 50+ отдельных писем, в каждом из которых будет прикреплен персональный расчетный листок. Вам останется только сохранить вложения из почтового клиента в нужную папку. Это значительно быстрее, чем формировать каждый отчет вручную.

Способ 2: Программный метод (создание внешней обработки)

Если вариант с почтой кажется вам «костыльным», или требуется сохранять файлы напрямую в сетевую папку с определенными именами (например, «Иванов_Январь2024.xlsx»), стоит рассмотреть программный метод. Выясним, как это реализовать, используя экспортные функции типовых отчетов.

Основная идея заключается в том, чтобы в цикле перебирать список сотрудников, программно формировать отчет АнализНачисленийИУдержаний (на базе которого строятся расчетные листки) с отбором по конкретному физлицу и сохранять результат на диск.

Проанализируем пример кода, который можно использовать в модуле внешней обработки:


// Функция вызывает формирование табличного документа расчетного листка
&НаСервере
Функция СформироватьИСохранитьЛисток(СотрудникСсылка, ПериодРегистрации, Организация, ПутьКПапке)
    
    // Подготавливаем массив с одним сотрудником для отчета
    МассивФизЛиц = Новый Массив;
    МассивФизЛиц.Добавить(СотрудникСсылка);
    
    // Получаем табличный документ расчетного листка
    // Используем штатный метод отчета АнализНачисленийИУдержаний
    ТабличныйДокумент = СформироватьПечатнуюФормуЛистка(МассивФизЛиц, Организация, ПериодРегистрации);
    
    // Формируем имя файла
    ИмяФайла = Строка(СотрудникСсылка) + "_" + Формат(ПериодРегистрации, "ДФ=MM_yyyy") + ".xlsx";
    ПолныйПуть = ПутьКПапке + "\" + ИмяФайла;
    
    // Сохраняем в формате Excel
    ТабличныйДокумент.Записать(ПолныйПуть, ТипФайлаТабличногоДокумента.XLSX);
    
    Возврат ПолныйПуть;
КонецФункции

Разберем подробнее внутреннюю логику формирования документа. Нам необходимо инициализировать схему компоновки данных (СКД) и загрузить настройки нужного варианта отчета:


&НаСервере
Функция СформироватьПечатнуюФормуЛистка(ФизическиеЛицаОтчета, Организация, Месяц)
    
    ДокументРезультат = Новый ТабличныйДокумент;
    
    // Создаем объект отчета программно
    ОтчетОбъект = Отчеты.АнализНачисленийИУдержаний.Создать();
    ОтчетОбъект.ИнициализироватьОтчет();
    
    // Загружаем настройки варианта "Расчетный листок"
    Настройки = ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек.РасчетныйЛисток.Настройки;
    ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    
    // Устанавливаем период
    СтандартныйПериод = Новый СтандартныйПериод;
    СтандартныйПериод.ДатаНачала = НачалоМесяца(Месяц);
    СтандартныйПериод.ДатаОкончания = КонецМесяца(Месяц);
    
    // Заполняем параметры и отборы
    ПараметрПериод = ОтчетОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
    Если ПараметрПериод <> Неопределено Тогда
        ПараметрПериод.Значение = СтандартныйПериод;
        ПараметрПериод.Использование = Истина;
    КонецЕсли;
    
    // Добавляем отбор по организации и списку физлиц
    ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ОтчетОбъект.КомпоновщикНастроек.Настройки.Отбор, 
        "Организация", ВидСравненияКомпоновкиДанных.Равно, Организация);
    ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ОтчетОбъект.КомпоновщикНастроек.Настройки.Отбор, 
        "ФизическоеЛицо", ВидСравненияКомпоновкиДанных.ВСписке, ФизическиеЛицаОтчета);
        
    // Формируем результат
    ОтчетОбъект.СкомпоноватьРезультат(ДокументРезультат);
    
    Возврат ДокументРезультат;
КонецФункции

Используя этот код в цикле по списку сотрудников организации, мы получим автоматизированную выгрузку 50 файлов за считанные секунды.

Способ 3: Групповое сохранение через функционал БСП

Мало кто знает, что в современных версиях ЗУП (на базе Библиотеки стандартных подсистем) есть скрытая возможность группового сохранения печатных форм. Рассмотрим, как это работает:

  1. Откройте отчет Расчетный листок и сформируйте его по всей организации.
  2. Нажмите кнопку Печать (значок принтера) в верхней панели.
  3. В открывшемся окне предварительного просмотра выделите в списке слева всех сотрудников (или нажмите Ctrl+A).
  4. Нажмите кнопку Сохранить (значок дискеты).
  5. В появившемся диалоге выберите формат Лист Microsoft Excel (.xlsx) и обратите внимание на переключатель: «Сохранить в отдельные файлы».
  6. Настройте шаблон имени файла, используя доступные поля (например, ФИО и Период).

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

Важное замечание о безопасности (152-ФЗ)

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

Помните:

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

← На главную