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