Как включить сортировку по дате приема в списке сотрудников 1С:ЗУП КОРП 3.1?

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

При работе с крупными конфигурациями, такими как «1С:Зарплата и управление персоналом КОРП» (ЗУП КОРП), специалисты часто сталкиваются с неочевидным поведением системы, которое отличается от базовых или ПРОФ версий. Одна из распространенных задач — настройка удобного списка сотрудников для кадровиков или расчетчиков. Казалось бы, простая задача: добавить сортировку по дате приема на работу. Однако в версии КОРП это действие может привести к ошибкам компоновки данных.

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

Суть проблемы: ошибка настроек компоновки данных

Рассмотрим типичный сценарий. Пользователь или администратор пытается изменить порядок вывода строк в форме списка справочника Сотрудники. Стандартно список сортируется по ФИО (полю Наименование). Однако для кадровых задач часто требуется видеть последних принятых сотрудников вверху списка.

При попытке добавить поле Дата приема в настройки сортировки (через меню «Еще — Настроить список» или в Конфигураторе), система выдает ошибку:


Параметры Отбора, Сортировки, Группировки или список отображаемых полей заданы неверно. 
Не найдено поле упорядочивания ДатаПриема 
[ОшибкаНастроекКомпоновкиДанных]

Даже если мы обратимся к Конфигуратору и попробуем модифицировать обработку СписокСотрудников, добавляя поле в запрос динамического списка или программно устанавливая ЭлементПорядкаКомпоновкиДанных, ошибка сохраняется. Это происходит потому, что механизм формирования списка сотрудников в ЗУП КОРП устроен сложнее, чем обычный динамический список.

Почему это происходит? Технический разбор

Давайте проанализируем, как устроен список сотрудников в современных версиях ЗУП 3.1. Это не просто отображение таблицы справочника. Это сложный динамический список, запрос которого формируется «на лету» (программно) в зависимости от функциональных опций и настроек пользователя.

В версии ЗУП КОРП объем данных значительно больше, чем в ПРОФ. Система хранит историю грейдов, охраны труда, специфические льготы и многое другое. Чтобы список открывался быстро, разработчики 1С по умолчанию используют оптимизированный запрос.

  1. Оптимизация: В стандартном режиме запрос получает минимум данных, необходимых для идентификации сотрудника. Поля вроде «Дата приема», «Подразделение» или «Должность» могут отображаться в списке, но они подтягиваются особым образом или не включаются в индексы сортировки СКД (Системы Компоновки Данных) для ускорения выборки.
  2. Ограничение СКД: Когда мы пытаемся принудительно отсортировать список по полю ДатаПриема, СКД пытается найти это поле в доступных полях упорядочивания основного набора данных. Если запрос оптимизирован, этого поля там физически нет в контексте сортировки (оно может быть только как поле вывода). Отсюда и возникает ошибка «Не найдено поле упорядочивания».

Именно поэтому попытки добавить поле через расширение или код формы часто терпят неудачу: при инициализации формы стандартные механизмы ЗУП КОРП «переписывают» схему компоновки под текущие настройки производительности.

Решение проблемы штатными средствами

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

Давайте пошагово выполним настройку, которая разблокирует возможность сортировки по любым колонкам.

Шаг 1. Переход к настройкам кадрового учета

Запустите программу в пользовательском режиме под правами Администратора или пользователя с полными правами на настройку системы.

  1. Перейдите в раздел Настройка.
  2. Выберите пункт Кадровый учет.

В этом окне собраны глобальные настройки поведения кадровой подсистемы, которые влияют на видимость полей, учет остатков отпусков, контроль штатного расписания и, как выяснилось, на поведение списков.

Шаг 2. Включение расширенной сортировки

В открывшемся окне настроек нам необходимо найти специфическую опцию. Прокрутите список настроек (обычно она находится в нижней части или в блоке дополнительных настроек).

Найдите флажок с названием:

Использовать в списке сотрудников сортировку и отбор по любым колонкам

Установите этот флажок. После этого необходимо нажать кнопку «Записать и закрыть», чтобы сохранить изменения в константах базы данных.

Шаг 3. Проверка результата

Теперь давайте вернемся к списку сотрудников и проверим, как изменилось поведение системы.

  1. Перейдите в раздел Кадры — Сотрудники.
  2. Нажмите кнопку Еще — Настроить список.
  3. Перейдите на вкладку Сортировка.
  4. Попробуйте найти поле Дата приема в списке доступных полей (левая часть окна) и перенести его в выбранные поля.

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

Также вы сможете просто кликнуть по заголовку колонки «Дата приема» в самой таблице, и 1С выполнит сортировку (появится треугольник направления сортировки), чего раньше сделать было нельзя.

Важные нюансы и последствия

Мы решили проблему, но как профессионалы, мы должны понимать цену этого решения. Почему эта галочка не включена по умолчанию?

Влияние на производительность

Когда вы включаете опцию «Использовать в списке сотрудников сортировку и отбор по любым колонкам», вы фактически говорите системе: «Мне не важна максимальная скорость открытия списка, мне нужна функциональность». Программа перестраивает запрос динамического списка, добавляя множество LEFT JOIN (левых соединений) к регистрам сведений (таким как КадроваяИсторияСотрудников, текущие кадровые данные и т.д.) прямо в основной текст запроса выборки.

Поэтому в ЗУП КОРП, которая ориентирована на крупные предприятия, эта возможность вынесена в опцию и по умолчанию отключена ради быстродействия.

Альтернативные способы анализа

Если после включения настройки список сотрудников начал работать слишком медленно, мы рекомендуем вернуть настройку обратно и воспользоваться альтернативными путями получения данных.

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

Использование отчета «Штатные сотрудники»

  1. Перейдите в раздел Кадры — Кадровые отчеты.
  2. Выберите отчет Штатные сотрудники.
  3. В настройках отчета (кнопка Настройки... — Расширенный) на вкладке Поля и сортировки можно добавить сортировку по полю Дата приема.

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

Резюме

Подведем итог нашему исследованию проблемы сортировки в ЗУП КОРП:

  1. Ошибка отсутствия поля упорядочивания возникает из-за оптимизированного запроса динамического списка в версии КОРП.
  2. Попытки исправить это через Конфигуратор неэффективны, так как запрос переопределяется программно.
  3. Решение заключается в установке флага «Использовать в списке сотрудников сортировку и отбор по любым колонкам» в разделе Настройка — Кадровый учет.
  4. Следует помнить о возможном снижении производительности списка на больших объемах данных.

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

← На главную