Как в 1С:ЗУП отобрать сотрудников, которые не входят ни в одну группу

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

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

Метод 1. Использование типового отчета «Личные данные сотрудников»

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

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

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

Метод 2. Применение «Универсального отчета»

Если первый метод кажется вам недостаточно детальным, воспользуемся мощным инструментом — Универсальным отчетом. Рассмотрим, как настроить его для поиска данных в регистрах.

Сведения о составе групп хранятся в регистре сведений СоставГруппСотрудников. Мы можем пойти «от противного». Сначала выясним, как увидеть записи регистра:

  1. Зайдем в раздел Администрирование — Обслуживание — Универсальный отчет.
  2. В шапке отчета выберем тип объекта Регистр сведений и имя объекта Состав групп сотрудников.
  3. Сформировав его, мы увидим всех, кто входит в группы.

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

Метод 3. Формирование запроса (для администраторов и программистов)

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

Воспользуемся консолью запросов и введем следующий код:


ВЫБРАТЬ
    Сотрудники.Ссылка КАК Сотрудник,
    Сотрудники.Код КАК ТабельныйНомер,
    Сотрудники.Подразделение КАК Подразделение
ИЗ
    Справочник.Сотрудники КАК Сотрудники
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставГруппСотрудников КАК СоставГрупп
        ПО Сотрудники.Ссылка = СоставГрупп.Сотрудник
ГДЕ
    СоставГрупп.Группа ЕСТЬ NULL
    И Сотрудники.ВАрхиве = ЛОЖЬ

Разберем, что делает этот код. Оператор ЛЕВОЕ СОЕДИНЕНИЕ присоединяет к каждому сотруднику информацию о его группе. Если сотрудник не состоит в группе, в поле СоставГрупп.Группа вернется значение NULL (пустота). Условие ГДЕ СоставГрупп.Группа ЕСТЬ NULL отсекает всех распределенных сотрудников, оставляя только нужных нам. Также мы добавили фильтр Сотрудники.ВАрхиве = ЛОЖЬ, чтобы не учитывать уволенных и помещенных в архив лиц.

Метод 4. Работа с динамическими группами

Выясним причину, по которой предыдущие методы могут не сработать. В ЗУП существует два вида групп:

Внимание! Состав динамических групп не хранится в базе данных постоянно. Он вычисляется «на лету» по заданному условию (например, «Все сотрудники отдела маркетинга»). Если в вашей базе используются такие группы, то найти сотрудников, не входящих в них, через регистры невозможно.

В этом случае рекомендуем следующий алгоритм:

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

Метод 5. Групповое изменение реквизитов как инструмент поиска

Рассмотрим еще один нестандартный метод, который часто выручает пользователей. Инструмент «Групповое изменение реквизитов» обладает мощным построителем отборов.

  1. Перейдем в Администрирование — Обслуживание — Корректировка данных — Групповое изменение реквизитов.
  2. В поле «Выбирать элементы» выберем Сотрудник.
  3. Нажмем на ссылку «Все элементы» для настройки отбора.
  4. Нажмем Добавить условие отбора. В появившемся окне попробуем развернуть поле «Ссылка» и найти связанные данные.

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

Подведем итог: для быстрого разового поиска лучше всего подходит Метод 1 (отчет «Личные данные»). Если же вам требуется регулярный контроль или сложная выборка по тысячам сотрудников, оптимальным решением станет написание небольшого отчета на базе СКД с использованием Метода 3 (запрос с левым соединением). Помните, что порядок в справочнике сотрудников — залог корректного формирования отчетности и распределения прав доступа!

← На главную