Почему отчет «Медосмотры, срок действия которых истекает» в ЗУП 3.1 выдает некорректные данные?

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

При работе с подсистемой охраны труда в ЗУП 3.1 пользователи часто сталкиваются с тем, что отчет Медосмотры, срок действия которых истекает отображает сотрудников некорректно. Например, фактор с периодичностью «один раз в два года» может попадать в отчет каждый год или не попадать вовсе, если система «не видит» записи в регистрах. Давайте разберем, почему это происходит и как исправить ситуацию.

Анализ причин некорректной работы отчета

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

  1. Периодичность медицинских осмотров рабочих мест (или Периодичность медицинских осмотров позиций штатного расписания в зависимости от релиза).
  2. Периодические медицинские осмотры.

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

Шаг 1: Проверка данных в регистрах сведений

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

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


ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Представления_СотрудникиОрганизации.Сотрудник КАК Сотрудник,
    ПериодическиеОсмотры.ДатаСледующегоОсмотра КАК ДатаСледующегоОсмотра,
    ВредныеПозиции.ВредныеФакторыПолноеПредставление КАК Факторы
ИЗ РегистрСведений.ПериодичностьМедицинскихОсмотровПозицииШтатногоРасписания КАК ВредныеПозиции
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ШтатноеРасписание КАК ШтатноеРасписание 
    ПО (ШтатноеРасписание.Ссылка = ВредныеПозиции.Позиция)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПериодическиеМедицинскиеОсмотры КАК ПериодическиеОсмотры 
    ПО (ПериодическиеОсмотры.ФизическоеЛицо = Представления_СотрудникиОрганизации.ФизическоеЛицо)

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

Шаг 2: Ограничения типового функционала

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

Шаг 3: Как реализовать корректный вывод данных

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

Что нам нужно реализовать в таком отчете:

  1. Использовать актуальные данные из Штатного расписания для определения перечня факторов.
  2. Взять данные из регистра Периодические медицинские осмотры для получения даты последнего прохождения.
  3. Рассчитать дату следующего осмотра «на лету» с помощью выражений СКД, используя периодичность, заданную в справочнике Вредные факторы.

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

Итоги и рекомендации

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

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

← На главную