В программе «1С:Зарплата и управление персоналом» (ЗУП 3.1) механизм групп сотрудников является удобным инструментом для сегментации персонала по произвольным признакам. Однако пользователи часто сталкиваются с проблемой: в справочнике Сотрудники нет явного фильтра, который позволил бы мгновенно увидеть тех, кто еще не распределен по группам. Это происходит потому, что принадлежность к группе — это не реквизит самого сотрудника, а запись в отдельном регистре сведений. В этой статье мы разберем несколько эффективных способов решения этой задачи: от самых простых пользовательских настроек до использования консоли запросов.
Начнем с самого доступного способа, который не требует прав администратора. Мы воспользуемся механизмом настройки компоновки данных в стандартном отчете. Разберем этот процесс по шагам:
Группа. Нажмем «Добавить», найдем в списке доступных полей «Группа» и выберем его.Группа. В колонке Условие установим значение Не заполнено.Проанализируем ситуацию: если сотрудник не входит ни в одну группу, в колонке «Группа» у него будет пусто, и он попадет в наш отчет. Важный нюанс: если сотрудник входит в несколько групп, в обычном режиме отчета он может «задвоиться» (вывестись по одной строке на каждую группу). Но так как мы установили фильтр на пустое значение, мы получим чистый список «бесхозных» сотрудников.
Если первый метод кажется вам недостаточно детальным, воспользуемся мощным инструментом — Универсальным отчетом. Рассмотрим, как настроить его для поиска данных в регистрах.
Сведения о составе групп хранятся в регистре сведений СоставГруппСотрудников. Мы можем пойти «от противного». Сначала выясним, как увидеть записи регистра:
Однако, чтобы найти тех, кого там нет, нам нужно сравнить этот список со списком всех сотрудников. Рассмотрим, как это сделать программным методом или через экспорт в Excel. Если мы выгрузим полный список сотрудников из справочника и список из регистра СоставГруппСотрудников, то с помощью функции ВПР в Excel можно быстро сопоставить данные и найти отсутствующих. Но давайте найдем решение внутри 1С.
Самый точный и быстрый способ для больших баз — это прямой запрос к базе данных. Проанализируем логику: нам нужно выбрать все записи из таблицы Справочник.Сотрудники и сопоставить их с таблицей РегистрСведений.СоставГруппСотрудников. Если связи не найдется, значит, сотрудник не в группе.
Воспользуемся консолью запросов и введем следующий код:
ВЫБРАТЬ
Сотрудники.Ссылка КАК Сотрудник,
Сотрудники.Код КАК ТабельныйНомер,
Сотрудники.Подразделение КАК Подразделение
ИЗ
Справочник.Сотрудники КАК Сотрудники
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставГруппСотрудников КАК СоставГрупп
ПО Сотрудники.Ссылка = СоставГрупп.Сотрудник
ГДЕ
СоставГрупп.Группа ЕСТЬ NULL
И Сотрудники.ВАрхиве = ЛОЖЬ
Разберем, что делает этот код. Оператор ЛЕВОЕ СОЕДИНЕНИЕ присоединяет к каждому сотруднику информацию о его группе. Если сотрудник не состоит в группе, в поле СоставГрупп.Группа вернется значение NULL (пустота). Условие ГДЕ СоставГрупп.Группа ЕСТЬ NULL отсекает всех распределенных сотрудников, оставляя только нужных нам. Также мы добавили фильтр Сотрудники.ВАрхиве = ЛОЖЬ, чтобы не учитывать уволенных и помещенных в архив лиц.
Выясним причину, по которой предыдущие методы могут не сработать. В ЗУП существует два вида групп:
СоставГруппСотрудников).Внимание! Состав динамических групп не хранится в базе данных постоянно. Он вычисляется «на лету» по заданному условию (например, «Все сотрудники отдела маркетинга»). Если в вашей базе используются такие группы, то найти сотрудников, не входящих в них, через регистры невозможно.
В этом случае рекомендуем следующий алгоритм:
Подразделение НЕ В СПИСКЕ (А, Б...) и Должность НЕ В СПИСКЕ (...).Рассмотрим еще один нестандартный метод, который часто выручает пользователей. Инструмент «Групповое изменение реквизитов» обладает мощным построителем отборов.
Хотя этот метод сложнее в настройке визуально, он позволяет отобрать элементы и сразу же, например, присвоить им какую-то общую группу для дальнейшей работы.
Подведем итог: для быстрого разового поиска лучше всего подходит Метод 1 (отчет «Личные данные»). Если же вам требуется регулярный контроль или сложная выборка по тысячам сотрудников, оптимальным решением станет написание небольшого отчета на базе СКД с использованием Метода 3 (запрос с левым соединением). Помните, что порядок в справочнике сотрудников — залог корректного формирования отчетности и распределения прав доступа!