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

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

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

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

Суть проблемы и почему позиции становятся «жирными»

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

  1. Сформировано (булево значение — Истина/Ложь). Этот флаг указывает программе, что подразделение уже создано и действует.
  2. Дата создания (дата утверждения в штатном расписании).

Если в документе «Изменение штатного расписания» пользователь указывает конкретное подразделение в шапке документа, а затем добавляет или меняет в нем позиции, система при проведении некорректно перезаписывает данные. В результате в справочнике Подразделения для выбранного объекта сбрасывается флаг Сформировано (переходит в значение Ложь), а поле Дата создания становится пустым.

Для пользователя это выглядит следующим образом:

Выясним, какими способами можно исправить ситуацию и вернуть базу данных в корректное состояние.

Способ 1. Профилактика: корректное заполнение документов изменения штатного расписания

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

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

Разберем этот алгоритм по шагам:

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

Способ 2. Исправление через «Групповое изменение реквизитов» (без программирования)

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

Рассмотрим пошагово процедуру восстановления через групповую обработку:

  1. Перейдите в раздел Администрирование, далее выберите пункт Обслуживание, раскройте блок Корректировка данных и запустите обработку Групповое изменение реквизитов.
  2. В поле «Изменять» выберите справочник Подразделения.
  3. Нажмите на гиперссылку «Все элементы» рядом, чтобы настроить отбор. Нам нужно выбрать только те подразделения, которые пострадали. Настройте условие: Ссылка Равно [Имя вашего проблемного подразделения]. При необходимости через условие «В списке» можно выбрать сразу несколько поврежденных объектов.
  4. Нажмите «ОК» для сохранения отбора.
  5. В основной табличной части обработки найдите реквизит Сформировано и установите для него значение Да (Истина).
  6. Найдите реквизит Дата создания (или Дата формирования) и укажите корректную дату ввода подразделения в действие (например, дату первого приказа по этому подразделению).
  7. Нажмите кнопку Изменить реквизиты в нижней части экрана.

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

Способ 3. Программное восстановление флагов (для разработчиков)

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

Для восстановления параметров конкретного подразделения нам необходимо получить его объект, принудительно установить требуемые реквизиты и записать изменения в базу данных. Пример кода выглядит следующим образом:


// Пример программного восстановления реквизитов подразделения
Процедура ВосстановитьСтатусПодразделения(СсылкаНаПодразделение, ДатаФормирования) Экспорт
    
    // Получаем объект для редактирования
    ОбъектПодразделения = СсылкаНаПодразделение.ПолучитьОбъект();
    
    Если ОбъектПодразделения <> Неопределено Тогда
        // Принудительно устанавливаем признаки формирования
        ОбъектПодразделения.Сформировано = Истина;
        ОбъектПодразделения.ДатаСоздания = ДатаФормирования;
        
        Попытка
            // Записываем объект с отключением стандартных проверок при необходимости
            ОбъектПодразделения.Записать();
            Сообщить("Подразделение '" + СокрЛП(ОбъектПодразделения.Наименование) + "' успешно восстановлено!");
        Исключение
            ВызватьИсключение "Не удалось записать подразделение: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
        КонецПопытки;
    КонецЕсли;
    
КонецПроцедуры

Использование этого кода позволяет быстро вернуть работоспособность справочника даже при массовом сбое на крупных предприятиях со сложной иерархической структурой.

Способ 4. Обходной путь через временное изменение иерархии

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

  1. Откройте карточку проблемного подразделения через справочник.
  2. Временно измените его подчиненность: в поле Вышестоящее подразделение выберите любого другого родителя.
  3. Нажмите кнопку Записать.
  4. Верните исходное правильное вышестоящее подразделение.
  5. Снова нажмите Записать и закрыть.

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

Резюме: Описанная проблема является зарегистрированной ошибкой платформы в старых релизах ветки 3.1.7. Наиболее надежным и долгосрочным решением является обновление конфигурации 1С:ЗУП до актуального релиза (начиная с ветки 3.1.8 и старше данный баг полностью устранен разработчиками). Если же обновление временно невозможно, используйте ввод документов с пустой шапкой и групповое изменение реквизитов для восстановления поврежденных элементов.

← На главную