Как восстановить предопределенный показатель Время в днях в 1С:ЗиКГУ и 1С:ЗУП 3.1

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

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

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

В чем разница между Время в днях и Время в днях (или часах)

Для правильной настройки формул начислений крайне важно понимать физический смысл этих двух показателей:

  1. Время в днях (системное имя ВремяВДнях) — это жестко предопределенный показатель системы. Он всегда возвращает количество фактически отработанных сотрудником дней, независимо от его графика работы или способа ведения учета времени.
  2. Время в днях (или часах) (системное имя ВремяВДняхЧасах) — это динамический показатель. Его поведение зависит от настроек конкретного начисления (является ли оно почасовым) и параметров графика работы сотрудника. Например, если у сотрудника установлен суммированный учет рабочего времени или для начисления рассчитывается тарифная ставка за час, данный показатель вернет отработанные часы вместо дней.

Почему это критично: Если мы настраиваем доплату за совмещение, расчет которой должен производиться строго за дни, использование показателя ВремяВДняхЧасах для сотрудника с почасовым учетом приведет к катастрофической ошибке. Программа подставит в формулу отработанные часы (например, 160 часов вместо 20 дней), из-за чего сумма доплаты увеличится в несколько раз. Именно поэтому для корректного расчета необходим чистый показатель ВремяВДнях.

Почему предопределенный показатель мог пропасть из интерфейса

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

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

Иногда пользователи или неопытные специалисты пытаются решить проблему радикально — берут другой ненужный предопределенный показатель и переименовывают его под свои нужды (или меняют его назначение). Делать так категорически запрещено!

Каждый предопределенный элемент справочника ПоказателиРасчетаЗарплаты жестко привязан к внутренним алгоритмам расчета конфигурации по своему уникальному идентификатору (GUID) и системному имени. Если вы переименуете, например, показатель ТарифнаяСтавкаЧасовая в ВремяВДнях, система все равно продолжит обрабатывать его внутренние механизмы как часовую ставку. Это приведет к следующим последствиям:

Рассмотрим правильные и безопасные способы решения этой проблемы.

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

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

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

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

Способ 2. Восстановление связи через Групповое изменение реквизитов

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

Проанализируем этот процесс:

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

Способ 3. Программное обновление предопределенных данных

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

Для выполнения программного кода нам понадобится внешняя обработка «Групповое изменение реквизитов» (с возможностью выполнения произвольного алгоритма) или любая консоль кода:


// 1. Разрешаем автоматическое обновление предопределенных элементов в базе данных
УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы(ОбновлениеПредопределенныхДанных.Авто);

// 2. Инициируем обновление предопределенных элементов конкретного справочника
ОбновлениеИнформационнойБазы.ОбновитьПредопределенныеЭлементы(Метаданные.Справочники.ПоказателиРасчетаЗарплаты);

Предупреждение("Восстановление предопределенных показателей успешно завершено!");

Этот код заставит систему просканировать метаданные конфигуратора справочника ПоказателиРасчетаЗарплаты, выявить все отсутствующие в пользовательском режиме предопределенные элементы и корректно создать их заново с сохранением правильных GUID.

Способ 4. Перенос предопределенного показателя из чистой базы через XML

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

Посмотрим, как правильно выполнить этот перенос, чтобы не нарушить целостность данных:

  1. Для работы нам потребуется специализированная обработка для управляемых форм — ВыгрузкаЗагрузкаДанныхXML83.epf. Обратите внимание, что старые версии обработки для обычных форм (например, под редакцию 8.2) в ЗУП/ЗиКГУ 3.1 работать не будут.
  2. Откроем демо-базу (или чистую базу) точно такого же релиза, как и наша рабочая база.
  3. Запустим обработку ВыгрузкаЗагрузкаДанныхXML83.epf через главное меню: Файл — Открыть.
  4. В списке объектов выберем справочник Показатели расчета зарплаты.
  5. Настроим отбор: выберем только один элемент, у которого наименование равно «Время в днях» (или системное имя ВремяВДнях).
  6. Укажем путь для выгрузки файла данных на диск и нажмем кнопку Выгрузить.
  7. Откроем нашу рабочую базу под правами администратора, запустим ту же обработку на вкладке Загрузка.
  8. Выберем сохраненный XML-файл и произведем загрузку данных.

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

Способ 5. Тестирование и исправление информационной базы

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

Разберем последовательность действий в конфигураторе:

  1. Обязательно создадим резервную копию нашей информационной базы.
  2. Запустим базу в режиме Конфигуратор.
  3. В меню выберем пункт Администрирование — Тестирование и исправление....
  4. Установим флаги напротив следующих проверок:
    • Проверка логической целостности информационной базы.
    • Проверка уникальности предопределенных данных.
  5. В блоке настройки работы с битыми ссылками (при наличии некорректных объектов) выберем переключатели в положение Создавать объекты или Очищать ссылки (в зависимости от глубины повреждений данных, для предопределенных элементов рекомендуется выбирать автоматическое восстановление/создание).
  6. Нажмем кнопку Выполнить и дождемся завершения процесса. Отчет о результатах тестирования покажет, были ли восстановлены поврежденные таблицы справочника показателей.

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

← На главную