При формировании расчетных листков в программе «1С:Зарплата и Управление Персоналом 2.5» пользователи часто сталкиваются с ситуацией, когда компактный расчетный листок одного сотрудника занимает целый лист формата А4. В целях экономии бумаги и времени на обработку документов возникает необходимость разместить два или более листков на одной странице. Разберем основные причины такого поведения программы и рассмотрим способы решения этой задачи без изменения конфигурации и с помощью программных доработок.
Почему расчетные листки печатаются по одному на лист
Проанализируем механику формирования печатных форм в платформе 1С. Поведение отчета и размещение табличного документа на физических страницах зависят от нескольких факторов:
Программные разделители страниц: В типовом алгоритме отчета «Расчетные листки» может быть заложен принудительный перенос строки для каждого нового сотрудника с помощью метода ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц() либо через свойство НачалоСтраницы у выводимой области.
Влияние драйвера принтера по умолчанию: Платформа рассчитывает высоту и ширину печатного листа на основании метрик принтера, который установлен в операционной системе Windows по умолчанию. Если на разных рабочих станциях установлены разные драйверы или заданы разные непечатаемые области, один и тот же отчет на одном компьютере может умещаться по две расчетки на лист, а на другом — только по одной.
Несовпадение формата бумаги: Если в свойствах принтера по умолчанию задан формат бумаги Letter вместо A4, полезная высота листа уменьшается, что приводит к преждевременному переносу следующего блока на новый лист.
Способ 1. Корректировка параметров страницы в 1С
Выясним, как настроить вывод двух листков на одну страницу штатными средствами интерфейса без привлечения программиста. Выполним следующие шаги:
Сформируем отчет «Расчетные листки» за требуемый расчетный период.
Перейдем в главное меню: Файл — Параметры страницы (или нажмем соответствующую иконку на панели предварительного просмотра).
Уменьшим размеры полей документа (левое, правое, верхнее, нижнее) до минимально поддерживаемых принтером значений, например до 3–5 мм.
В блоке масштабирования переключим переключатель на «Установить масштаб» и подберем значение в диапазоне 80–90%, либо выберем вариант «По ширине страницы».
Нажмем кнопку «ОК» и проверим результат в предварительном просмотре печати. Если расчетные листки небольшие, они гармонично разместятся по две штуки на одном листе А4.
Способ 2. Настройка параметров печати в драйвере принтера
Рассмотрим аппаратные возможности печати нескольких страниц на одном физическом носителе. Большинство современных лазерных принтеров поддерживают компоновку нескольких страниц на одном листе бумаги:
В окне 1С нажмем Файл — Печать (или комбинацию клавиш Ctrl + P).
В открывшемся диалоге печати нажмем кнопку «Свойства» выбранного принтера.
Найдем вкладку «Расположение», «Макет» или «Окончательная обработка» (название зависит от производителя принтера: HP, Canon, Kyocera и др.).
В параметре «Число страниц на листе» выберем значение «2 страницы на листе».
При необходимости включим двустороннюю печать (дуплекс), чтобы печатать сразу 4 расчетных листка на одном бумажном носителе с двух сторон.
Еще один альтернативный вариант — предварительно нарезать бумагу формата А4 пополам до формата А5, установить соответствующий формат в лотке принтера и печатать каждый листок на отдельном листе А5.
Способ 3. Программная доработка через внешний отчет
Если требуется автоматизировать процесс без необходимости ручной настройки параметров печати каждым расчетчиком, создадим внешний отчет. Для этого выгрузим типовой отчет «Расчетные листки» из конфигуратора как внешний отчет с расширением .erf и внесем изменения в модуль объекта.
Посмотрим на пример кода, где вывод разделителя страниц управляется методом ПроверитьВывод(). Создадим массив областей текущего сотрудника и будем добавлять разделитель страниц только тогда, когда следующий блок целиком не помещается на оставшемся месте текущего листа:
// Создаем массив для проверки вывода блока расчетного листка
МассивОбластей = Новый Массив;
МассивОбластей.Добавить(ОбластьШапкаЛистка);
МассивОбластей.Добавить(ОбластьСтрокиНачислений);
МассивОбластей.Добавить(ОбластьСтрокиУдержаний);
МассивОбластей.Добавить(ОбластьПодвалЛистка);
// Проверяем, помещается ли расчетный листок целиком на текущей странице
Если Не ТабличныйДокумент.ПроверитьВывод(МассивОбластей) Тогда
// Если блок не умещается, принудительно переносим его на новый лист
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
// Выводим секции расчетного листка в результирующий документ
ТабличныйДокумент.Вывести(ОбластьШапкаЛистка);
ТабличныйДокумент.Вывести(ОбластьСтрокиНачислений);
ТабличныйДокумент.Вывести(ОбластьСтрокиУдержаний);
ТабличныйДокумент.Вывести(ОбластьПодвалЛистка);
Такой подход полностью исключает разрыв одного расчетного листка на две разные страницы и гарантирует вывод максимально возможного количества расчетных листков на одном физическом листе бумаги.
Правовые и организационные аспекты выдачи расчетных листков
При оптимизации печати и переходе на электронные формы предоставления расчетных листков важно учитывать требования законодательства:
Статья 136 Трудового кодекса РФ: Работодатель обязан извещать каждого сотрудника в письменной форме о составных частях заработной платы, размерах удержаний и общей денежной сумме, подлежащей выплате. Порядок и форма выдачи расчетных листков (включая возможность отправки по электронной почте или через личный кабинет КЭДО) должны быть официально утверждены локальными нормативными актами организации (коллективным договором или ПВТР).
Федеральный закон № 152-ФЗ «О персональных данных»: Сведения о заработной плате являются персональными данными сотрудника. Передача расчетных листков по незащищенным каналам связи (e-mail, мессенджеры) требует обязательного письменного согласия сотрудника с фиксацией его адреса, а также применения защитных мер (например, шифрование вложений паролем).