Как настроить сортировку графика отпусков (Т-7) по дате начала в 1С:ЗУП 2.5?

Пользователь 1С v8.3 (Обычные формы) 1С:Зарплата и Управление Персоналом
← На главную

При работе в программе «1С:Зарплата и управление персоналом 2.5» (ЗУП 2.5) пользователи часто сталкиваются с неудобством при выводе на печать унифицированной формы Т-7 «График отпусков». По умолчанию программа выводит сотрудников в непонятном порядке, хотя в самом документе на экране строки могут быть отсортированы по дате или по алфавиту. Выясним причину такого поведения системы и подробно разберем, как заставить программу печатать график отпусков именно в хронологическом порядке — по дате начала отпуска.

Почему типовая форма Т-7 в ЗУП 2.5 печатается по «Номерам строк»?

Для начала проанализируем техническую сторону вопроса. В конфигурации ЗУП 2.5 за формирование графика отпусков отвечает документ ЗаполнениеГрафикаОтпусковОрганизаций. Код, формирующий печатную форму Т-7, встроен в модуль этого документа. При генерации печатной формы система делает запрос к табличной части документа.

Особенность этого запроса заключается в том, что разработчики фирмы 1С не установили в нем жесткую сортировку по ФИО сотрудника или по периоду отпуска. Данные извлекаются из базы данных в том порядке, в котором они физически там записаны. Этот порядок определяется системным полем НомерСтроки.

Когда мы открываем документ и просто кликаем по шапке колонки «Начало» (дата начала отпуска), платформа 1С выполняет лишь визуальную сортировку на экране пользователя. Физический порядок строк в базе данных при этом не меняется, и поле НомерСтроки сохраняет свои первоначальные значения. Именно поэтому при нажатии кнопки «Печать» форма Т-7 упорно выводится в старом порядке.

Ниже мы рассмотрим три способа решения этой проблемы: от простого пользовательского лайфхака до профессиональной разработки внешней печатной формы.

Способ 1. Штатное решение без программирования (быстрый обходной путь)

Если вам нужно срочно распечатать документ в правильном порядке и вы не хотите привлекать программиста, можно заставить систему пересчитать физические номера строк. Разберем этот процесс по шагам:

  1. Откройте необходимый документ «Заполнение графика отпусков организаций».
  2. Установите курсор в любую ячейку колонки «Начало» (дата начала отпуска).
  3. Нажмите кнопку «Упорядочить по возрастанию» на панели инструментов (или дважды кликните по шапке колонки «Начало»). Строки визуально выстроятся в хронологическом порядке.
  4. Теперь нам нужно заставить программу физически перезаписать этот порядок в базу данных. Для этого внесите любое незначительное изменение в документ. Например, в любой строке измените примечание, перевыберите вид отпуска или просто сотрите и напишите заново одну букву в текстовом поле.
  5. Нажмите кнопку «Записать» или «Провести». В этот момент платформа фиксирует измененное состояние табличной части, переприсваивает номера строк по порядку сверху вниз (ориентируясь на текущее отображение на экране) и сохраняет их в базу данных.
  6. Нажмите кнопку «График отпусков (Т-7)». Печатная форма сформируется строго по датам начала отпуска.

Важно: Этот способ требует аккуратности, так как при последующем случайном добавлении строк или ручном перетаскивании порядок может снова сбиться, и процедуру перезаписи придется повторить.

Способ 2. Создание и регистрация внешней печатной формы (ВПФ)

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

Рассмотрим, что необходимо сделать разработчику во внешней печатной форме. За основу берется типовой макет Т-7 и код его формирования из модуля документа. Нам нужно принудительно отсортировать данные перед выводом в макет.

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


// Предположим, что ТаблицаОтпусков содержит данные для вывода на печать
ТаблицаОтпусков = СсылкаНаОбъект.ЗапланированныеОтпуска.Выгрузить();

// Выполняем принудительную сортировку по колонке ДатаНачала по возрастанию
ТаблицаОтпусков.Сортировать("ДатаНачала Возр");

// Далее следует стандартный алгоритм вывода строк в макет Т-7
Для Каждого СтрокаТаблицы Из ТаблицаОтпусков Цикл
    // Код заполнения параметров области макета
КонецЦикла;

Если же данные для печати собираются с помощью запроса, то в текст самого запроса достаточно добавить секцию упорядочивания:


ВЫБРАТЬ
    СсылкаНаОбъект.Сотрудник КАК Сотрудник,
    СсылкаНаОбъект.ДатаНачала КАК ДатаНачала,
    СсылкаНаОбъект.ДатаОкончания КАК ДатаОкончания
ИЗ
    Документ.ЗаполнениеГрафикаОтпусковОрганизаций.ЗапланированныеОтпуска КАК СсылкаНаОбъект
ГДЕ
    СсылкаНаОбъект.Ссылка = &ДокументСсылка
УПОРЯДОЧИТЬ ПО
    ДатаНачала ВОЗР

После создания файла обработки (формата .epf) зарегистрируйте его в программе через меню: Сервис — Дополнительные отчеты и обработки — Дополнительные внешние печатные формы. Добавьте новую запись, укажите ваш файл и свяжите его с документом «Заполнение графика отпусков организаций».

Способ 3. Использование внешних кадровых отчетов Т-7

Еще один профессиональный альтернативный вариант — отказаться от печати напрямую из документа и использовать специализированные отчеты. В ЗУП 2.5 плановые отпуска сотрудников записываются в регистры сведений.

Вы можете использовать внешний отчет по графику отпусков Т-7, построенный на базе СКД (Системы компоновки данных) или Универсального отчета. Преимущества такого подхода очевидны:

Сравнение работы механизма сортировки в ЗУП 2.5 и ЗУП 3.1

Проанализируем, почему в новой редакции «1С:Зарплата и управление персоналом 3.1» эта проблема больше не возникает. В ЗУП 3.1 разработчики полностью изменили концепцию вывода печатных форм кадровых приказов и графиков:

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

← На главную