В процессе ежедневной работы с программой 1С:Зарплата и Управление Персоналом 3.1 (а также в комплексных решениях 1С:ERP 2.5 и 1С:Комплексная автоматизация 2.5) расчетчики и кадровики часто сталкиваются с неудобством при заполнении документа Табель. По умолчанию программа может выстраивать список сотрудников по табельным номерам, внутренним идентификаторам или подразделениям, что сильно затрудняет визуальный поиск конкретного человека в длинном списке. При попытке отсортировать данные стандартным кликом по колонке или через контекстное меню правой кнопки мыши пользователи обнаруживают, что привычные инструменты недоступны.
В этой статье мы подробно разберем причины такого поведения системы, рассмотрим по шагам, как настроить автоматическую сортировку сотрудников по алфавиту «из коробки» при заполнении документов, а также научимся гибко управлять порядком вывода сотрудников в печатной форме отчета Т-13.
Для начала давайте выясним причину, по которой разработчики платформы ограничили интерактивную сортировку непосредственно внутри открытого документа Табель. Многие пользователи пытаются нажать правой кнопкой мыши на колонку «Сотрудник» и ожидают увидеть стандартные команды упорядочивания, однако вместо этого получают лишь системные действия: «добавить», «скопировать», «удалить», «переместить вверх» или «переместить вниз».
Такое поведение программы обусловлено сложной многострочной структурой табличной части документа:
Табель на одного работника может приходиться несколько строк. Это происходит, если у сотрудника в течение одного расчетного периода сочетаются различные виды времени (например, «Явка», «Ночные часы», «Праздничные», «Работа в выходные дни») или если в базе ведется детализированный учет по территориям и условиям труда.Поэтому стандартный механизм сортировки в самом табличном поле заблокирован. Однако мы можем управлять порядком заполнения этого документа с помощью глобальных настроек системы.
Для того чтобы при нажатии кнопки Заполнить сотрудники сразу выстраивались в строго алфавитном порядке (по фамилии, имени и отчеству), нам необходимо скорректировать глобальные правила упорядочивания документов. Проанализируем, как это сделать по шагам:
Важное примечание: Изменение данных настроек является глобальным и влияет на все новые документы. Однако оно не изменит порядок сотрудников в уже созданных и проведенных документах задним числом автоматически. Чтобы применить новые правила к старому документу, откройте его и заново нажмите кнопку Заполнить.
Если учет ведется в комплексных ERP-решениях, кадровый функционал там практически полностью идентичен программе ЗУП, но структура меню немного отличается. Разберем, где находятся нужные настройки в этих конфигурациях:
Если перед нами стоит задача отсортировать уже заполненный сложный документ без его полной перезаписи и перезаполнения (чтобы не потерять ручные правки времени, внесенные пользователями), стандартными средствами интерактивной работы этого не сделать. В таком случае программисты прибегают к написанию небольших внешних обработок табличных частей. Посмотрим на пример кода, который выполняет правильную сортировку многострочной части с сохранением структуры данных:
// Пример программной сортировки строк табеля по сотруднику с сохранением связей
Процедура СортироватьТабельНаСервере(ДокументОбъект)
ТабличнаяЧасть = ДокументОбъект.ДанныеОВремени;
// Для сохранения корректной структуры сначала выгрузим ТЧ в таблицу значений
ТаблицаДанных = ТабличнаяЧасть.Выгрузить();
// Добавим вспомогательную колонку для сортировки по представлению сотрудника
ТаблицаДанных.Колонки.Добавить("ФИОСотрудника", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(150)));
Для Каждого СтрокаТЗ Из ТаблицаДанных Цикл
Если ЗначениеЗаполнено(СтрокаТЗ.Сотрудник) Тогда
СтрокаТЗ.ФИОСотрудника = СтрокаТЗ.Сотрудник.Наименование;
КонецЕсли;
КонецЦикла;
// Сортируем таблицу по представлению сотрудника и дополнительным реквизитам
ТаблицаДанных.Сортировать("ФИОСотрудника Возр, НомерСтроки Возр");
// Загружаем отсортированные данные обратно в документ
ТабличнаяЧасть.Загрузить(ТаблицаДанных);
КонецПроцедуры
Использование подобных внешних обработок позволяет пользователям в один клик упорядочивать информацию на экране, даже если документ содержит сотни ручных правок видов времени.
Часто бывает так, что в самом документе Табель порядок сотрудников не имеет принципиального значения, но при формировании печатного отчета Т-13 для сдачи в архив руководство или бухгалтерия требуют строгого соблюдения алфавитного порядка. В системе компоновки данных (СКД) отчетов 1С настроить это можно очень гибко и без изменения конфигурации. Рассмотрим этот процесс по шагам:
Подразделение в списке сортировок, оставив только поле Сотрудник с направлением «По возрастанию».Подразделение (по возрастанию), а вторым пунктом — Сотрудник.Наименование (по возрастанию).В крупных организациях с большим объемом кадровых данных разработчики ради оптимизации производительности базы данных иногда отключают стандартную динамическую сортировку списков. Если вы работаете в версии КОРП и обнаружили, что в самом справочнике Сотрудники у вас пропала возможность кликать по заголовкам колонок (например, сортировать по дате приема, должности или табельному номеру), выполните следующее действие:
Мы подробно проанализировали все способы управления порядком отображения сотрудников в табелях и отчетах программного семейства 1С. Применение этих несложных настроек позволит вам сэкономить массу времени и избавит от необходимости ручного перемещения строк внутри документов.