Почему в отчете «Справка об остатках отпусков» отображаются неверные итоги и как это исправить?

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

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

Причина 1. Повреждение пользовательских настроек в базе данных

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

Проанализируем алгоритм очистки настроек, который помогает в большинстве случаев:

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

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

Причина 2. Ограничение доступа на уровне записей (RLS)

Если очистка настроек не помогла, разберем ситуацию с правами доступа. В 1С:ЗУП активно используется механизм RLS (Record Level Security). Если у пользователя ограничен доступ к определенным подразделениям или организациям, запрос отчета может просто «не видеть» документы-регистраторы, такие как Ввод остатков отпусков за прошлые годы.

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

  1. Запустим регламентное задание Обновление данных о доступе. Это можно сделать через консоль регламентных заданий или через раздел Обслуживание — Регламентные операции.
  2. Выясним, нет ли установленной Даты запрета изменения данных, которая для некоторых пользователей может работать и как дата запрета чтения (в зависимости от настроек прав).
  3. Проанализируем состав документов сотрудника. Если отчет «теряет» данные за 2017–2019 годы, скорее всего, у пользователя нет прав на чтение документов ввода остатков того периода.

Причина 3. Ошибки платформы и работа с памятью

Бывают случаи, когда формирование отчета сопровождается аварийным завершением работы программы («выкидыванием» из 1С). Это характерно для версий платформы ниже 8.3.18 при работе с тяжелыми схемами компоновки данных. Система некорректно обрабатывает временные таблицы при расчете итогов, что приводит к переполнению памяти сеанса.

Рассмотрим рекомендации по техническому обслуживанию:

Причина 4. Анализ регистров и документов корректировки

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

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


ВЫБРАТЬ
    ОстаткиОтпусковОстатки.Сотрудник,
    ОстаткиОтпусковОстатки.ВидЕжегодногоОтпуска,
    ОстаткиОтпусковОстатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ОстаткиОтпусков.Остатки(&Период, Сотрудник = &Сотрудник) КАК ОстаткиОтпусковОстатки

Если в консоли запросов под «проблемным» пользователем цифры верные, значит, проблема на 100% в настройках СКД (Системы компоновки данных). Если же в консоли цифры тоже «поплыли», значит, дело в механизме RLS или в дублях записей в регистрах.

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

Резюме и план действий

Для исправления итогов в справке об остатках отпусков придерживаемся следующего плана:

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

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

← На главную