Как правильно перенести графики работы сотрудников в 1С:ЗУП 3.1 между базами?

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

Перенос графиков работы в программе 1С:Зарплата и управление персоналом 3.1 — это задача, которая на первый взгляд кажется простой. Однако многие специалисты сталкиваются с ситуацией, когда после стандартной выгрузки и загрузки через XML справочник ГрафикиРаботыСотрудников в базе-приемнике остается пустым или отображается некорректно. Разберем подробно, почему это происходит и какие объекты необходимо перенести, чтобы графики выглядели и работали в новой базе идентично источнику.

Проблема комплексной структуры объекта «График работы»

Проанализируем архитектуру хранения данных в ЗУП 3.1. График работы — это не просто элемент справочника. Это сложный комплексный объект, данные которого распределены между основной таблицей справочника, бинарными данными в хранилище значений и несколькими независимыми регистрами сведений. Если мы переносим только справочник, система получает «каркас», но не видит внутреннего наполнения, настроек заполнения и рассчитанных норм времени.

Шаг 1: Перенос справочника и работа с реквизитом «Настройка»

В справочнике ГрафикиРаботыСотрудников заложен один из самых важных реквизитов — Настройка. Он имеет тип ХранилищеЗначения. Рассмотрим подробнее, что это значит для нас при переносе:

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

Также обратим внимание на реквизит ПроизводственныйКалендарь. Если в базе-приемнике производственный календарь имеет другой UUID (уникальный идентификатор) или вовсе не создан, ссылка в графике станет «битой». Проверьте, чтобы производственные календари в обеих базах были идентичны или перенесены заранее.

Шаг 2: Обязательные регистры сведений

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

  1. ГрафикиРаботыПоВидамВремени: Это основной регистр, где хранится детальная информация о количестве часов по каждому виду времени на каждую дату.
  2. СреднемесячныеНормыВремениГрафиковРаботыСотрудников: Данный регистр используется для расчета среднего заработка и определения нормы времени за месяц. Без него отчеты по труду и расчетные листки могут выводить некорректные данные.
  3. ДанныеГрафиковРаботы: Проанализируем этот регистр. Он является агрегирующим и необходим для быстрого доступа системы к данным о времени. В ЗУП 3.1 существует несколько подобных регистров (например, ДанныеГрафиковРаботыПо ВидамВремени). Рекомендуется выгружать их все.

Шаг 3: Сохранение визуального отображения и цветов

Часто возникает вопрос: почему данные перенеслись, но ячейки в графике не окрашены в привычные цвета (например, «Я» — явка, «Н» — ночные)? Посмотрим на механизм отрисовки формы графика. Цвета и символы привязаны к справочнику ВидыИспользованияРабочегоВремени.

Важный момент: Если в базе-приемнике элементы этого справочника (например, «Явка») имеют другие внутренние идентификаторы, то записи в регистре ГрафикиРаботыПоВидамВремени не смогут сопоставиться с визуальными обозначениями. В результате вы увидите пустые клетки или «Объект не найден». Перед переносом графиков убедитесь, что справочник видов времени синхронизирован по кодам или UUID.

Шаг 4: Ручные изменения и корректировки

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

Регистр сведений: РучныеИзмененияГрафиковРаботы.

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

Итоговый алгоритм действий при переносе

Представим алгоритм в виде последовательных шагов, которые гарантируют успех:

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

Альтернативный способ: Enterprise Data

Рассмотрим более современный подход. Вместо ручного выбора таблиц в XML-обработке, попробуем использовать механизм Enterprise Data. При синхронизации через этот формат система автоматически собирает все связанные данные объекта. Если настроить синхронизацию «один в один», то риск потерять данные в регистрах сводится к минимуму, так как правила выгрузки уже учитывают сложную структуру графиков в ЗУП 3.1.

Проверка результата

После завершения загрузки в базу-приемник выполним следующие действия для контроля:

  1. Откроем карточку любого перенесенного графика.
  2. Убедимся, что в поле «Календарь» стоит корректная ссылка, а не «Объект не найден».
  3. Проверим визуальную сетку: должны отображаться и буквенные коды, и часы.
  4. Нажмем кнопку «Печать» (График работы) и проверим, совпадают ли нормы часов за месяц с базой-источником.

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

← На главную