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