При работе с подсистемой охраны труда в ЗУП 3.1 пользователи часто сталкиваются с тем, что отчет Медосмотры, срок действия которых истекает отображает сотрудников некорректно. Например, фактор с периодичностью «один раз в два года» может попадать в отчет каждый год или не попадать вовсе, если система «не видит» записи в регистрах. Давайте разберем, почему это происходит и как исправить ситуацию.
Для начала разберемся, как программа «понимает», когда сотруднику пора на медосмотр. Отчет формируется на базе данных двух основных регистров сведений:
Периодичность медицинских осмотров рабочих мест (или Периодичность медицинских осмотров позиций штатного расписания в зависимости от релиза).Периодические медицинские осмотры.Программа связывает эти два регистра по полю Рабочее место (или Позиция штатного расписания) и сопоставляет их с физическим лицом. Ошибки чаще всего возникают из-за того, что записи в этих регистрах не были созданы, содержат пропуски или неактуальны после кадровых переводов сотрудника.
Первое, что мы должны сделать — убедиться в целостности данных. Если у сотрудника в регистре Периодические медицинские осмотры отсутствует запись, отчет не сможет рассчитать дату следующего осмотра.
Проанализируем структуру запроса, который использует типовой отчет. Это поможет нам понять логику соединения:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
Представления_СотрудникиОрганизации.Сотрудник КАК Сотрудник,
ПериодическиеОсмотры.ДатаСледующегоОсмотра КАК ДатаСледующегоОсмотра,
ВредныеПозиции.ВредныеФакторыПолноеПредставление КАК Факторы
ИЗ РегистрСведений.ПериодичностьМедицинскихОсмотровПозицииШтатногоРасписания КАК ВредныеПозиции
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ШтатноеРасписание КАК ШтатноеРасписание
ПО (ШтатноеРасписание.Ссылка = ВредныеПозиции.Позиция)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПериодическиеМедицинскиеОсмотры КАК ПериодическиеОсмотры
ПО (ПериодическиеОсмотры.ФизическоеЛицо = Представления_СотрудникиОрганизации.ФизическоеЛицо)
Как видим, если в регистре ПериодичностьМедицинскихОсмотровПозицииШтатногоРасписания нет записи для конкретной позиции, то связи не будет, и сотрудник не попадет в отчет. Проверьте вручную, заполнены ли эти регистры для проблемных должностей.
Важно понимать: типовой отчет имеет жестко зашитую логику. Если у вредных факторов установлена разная периодичность (например, один фактор раз в год, другой раз в два года), отчет часто не умеет гибко обрабатывать эту разницу и всегда ориентируется на «ближайшую» дату. Если в отчете выводится сотрудник, который не должен проходить осмотр, или, наоборот, не выводится тот, кому пора — это часто является системным ограничением текущей версии ЗУП 3.1.
Если типовой отчет не справляется, наиболее щадящим методом решения задачи для конфигурации будет создание внешнего отчета на базе СКД (Системы компоновки данных). Это позволит избежать внесения изменений в типовую конфигурацию и сохранить ее на поддержке.
Что нам нужно реализовать в таком отчете:
Штатного расписания для определения перечня факторов.Периодические медицинские осмотры для получения даты последнего прохождения.Вредные факторы.При таком подходе мы не зависим от того, корректно ли «отрабатывает» типовой отчет, а вычисляем необходимость осмотра на основе текущих кадровых данных сотрудника и настроек его должности.
Итак, если вы столкнулись с ошибками в отчете по медосмотрам:
ПериодичностьМедицинскихОсмотровПозицииШтатногоРасписания и ПериодическиеМедицинскиеОсмотры.1С.Помните, что при смене должности сотрудником, записи в регистрах медосмотров должны быть актуализированы. Если этого не делать, отчет будет подтягивать информацию по старым позициям, что и приводит к «фантомным» записям в результатах.