Почему новое подразделение не отображается в документе утверждения штатного расписания в 1С:ЗУП 3.1?

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

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

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

В чем причина скрытия подразделений в форме выбора

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

Этот регистр хранит развернутую иерархическую структуру подчиненности (включая ссылки элементов верхнего уровня на самих себя). Если записи в регистре отсутствуют или сформированы некорректно, отбор по ссылке отсекает такие подразделения из диалога выбора.

Посмотрим, в каких случаях происходит рассинхронизация:

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

Способ 1. Программная перезапись справочника подразделений

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

Рассмотрим пример кода для внешней обработки или консоли кода:


Выборка = Справочники.ПодразделенияОрганизаций.Выбрать();
Пока Выборка.Следующий() Цикл
    Объект = Выборка.ПолучитьОбъект();
    Объект.ОбменДанными.Загрузка = Ложь;
    Попытка
        Объект.Записать();
    Исключение
        Сообщить("Ошибка при записи подразделения: " + Объект.Наименование + " - " + ОписаниеОшибки());
    КонецПопытки;
КонецЦикла;

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

Способ 2. Интерактивная перезапись через форму элемента

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

Выполним следующие действия по шагам:

  1. Откроем справочник Подразделения (или Подразделения организаций).
  2. Откроем карточку проблемного подразделения.
  3. Изменим или повторно укажем реквизит «Вышестоящее подразделение» (если подразделение верхнего уровня — достаточно просто открыть форму и нажать сохранение).
  4. Нажмем кнопку «Записать и закрыть».

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

Способ 3. Проверка видимости новых подразделений

В некоторых версиях конфигурации (например, 3.1.3 и 3.1.4) в самой форме выбора предусмотрен флаг фильтрации. Если подразделение только что создано и по нему еще не было утверждено штатное расписание, оно считается новым для системы.

Проверим настройки формы:

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

Рекомендации для настройки обменов и загрузок

Чтобы избежать повторного возникновения проблемы при регулярных обменах с внешними программами (например, при выгрузке организационной структуры из 1С:ERP или 1С:УПП), настроим правила обмена данными следующим образом:

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