Как исправить ошибку «Поле объекта не обнаружено (РаботаГрафикРаботыСуммированныйУчетРабочегоВремени)» при печати справки для пособия по безработице в 1С:ЗУП 3.1

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

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

Суть технической проблемы

Ошибка проявляется следующим образом: при нажатии на кнопку печати справки из справочника Сотрудники или из документа Увольнение система выдает сообщение:

{Отчет.ПечатнаяФормаСправкаОСреднемЗаработке.МодульМенеджера(175)}: Поле объекта не обнаружено (РаботаГрафикРаботыСуммированныйУчетРабочегоВремени)

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

Выясним причину: в коде МодульМенеджера отчета происходит обращение к результату запроса. Алгоритм программы таков, что если в настройках состава начислений и удержаний не включена опция почасовой оплаты, программный код «считает», что поле РаботаГрафикРаботыСуммированныйУчетРабочегоВремени не требуется в выборке, и исключает его из текста запроса. Тем не менее, ниже по коду (в строке 175 или аналогичных) программа все равно пытается обратиться к этому полю для проверки условий сменности графика. В итоге возникает конфликт: код пытается прочитать данные из поля, которого физически нет в структуре полученного результата запроса.

Эта ошибка была официально зарегистрирована фирмой «1С» под номером 30171526.

Решение 1: Обновление конфигурации (Рекомендуемый способ)

Самый надежный и правильный метод — это переход на релизы, в которых ошибка была официально исправлена разработчиками. Рассмотрим подробнее:

  1. Ошибка исправлена в версии 3.1.13.75 и всех последующих (включая ветки 3.1.14, 3.1.17 и современные 3.1.27+).
  2. Для пользователей, находящихся на долгосрочной поддержке ветки 3.1.10, необходимо запланировать переход на более актуальную редакцию.
  3. Если прямое обновление основной базы невозможно из-за доработок или требований к платформе, рассмотрим вариант «быстрой печати»: создадим копию базы данных, обновим её до актуального релиза, сформируем и распечатаем необходимые справки, после чего копию можно удалить.

Решение 2: Временный обход через настройки программы

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

Разберем по шагам этот алгоритм:

  1. Перейдем в раздел Настройка — Расчет зарплаты.
  2. Нажмем на ссылку Настройка состава начислений и удержаний.
  3. Перейдем на вкладку Почасовая оплата.
  4. Установим флажок Применение почасовой оплаты. Сохраним изменения, нажав «Применить и закрыть».
  5. Теперь вернемся в карточку сотрудника и попробуем снова сформировать справку. Благодаря включенной настройке, поле РаботаГрафикРаботыСуммированныйУчетРабочегоВремени будет принудительно включено в запрос, и ошибка исчезнет.
  6. Важно: После печати справки флажок можно снять, чтобы не загромождать интерфейс лишними видами начислений, если они вам не нужны в повседневной работе.

Решение 3: Установка официального патча (исправления)

Для конфигураций на управляемых формах (ЗУП 3.1) существует механизм оперативного исправления ошибок без полного обновления конфигурации — патчи (файлы расширений .cfe).

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

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

  1. Зайдем в раздел Администрирование — Обслуживание.
  2. Найдем пункт Обновление программы и перейдем по ссылке Установленные исправления (патчи).
  3. Нажмем кнопку Поиск и установка исправлений (требуется доступ к порталу ИТС).
  4. Если в списке доступных обновлений есть патч для ошибки 30171526, выберем его и установим. Программа попросит перезагрузиться, после чего печать справки заработает корректно.

Решение 4: Исправление программного кода (для программистов)

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

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

В МодульМенеджера отчета ПечатнаяФормаСправкаОСреднемЗаработке найдем текст запроса (обычно это функция ТекстЗапросаПечатьСправки) и убедимся, что выбор поля не зависит от функциональных опций. Либо в месте возникновения ошибки заменим прямое обращение на безопасное:


// Вместо:
// Если ДанныеДетальныхЗаписей.РаботаГрафикРаботыСуммированныйУчетРабочегоВремени Тогда

// Используем безопасный подход:
СуммированныйУчет = Ложь;
Попытка
    СуммированныйУчет = ДанныеДетальныхЗаписей.РаботаГрафикРаботыСуммированныйУчетРабочегоВремени;
Исключение
    // Поле отсутствует в структуре, значит суммированный учет не используется или не определен
КонецПопытки;

Если СуммированныйУчет Тогда
    // Ваша логика для сменного графика
КонецЕсли;

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

Решение 5: Печать через документ «Увольнение»

Иногда ошибка проявляется только при печати из справочника Сотрудники, но обходится при печати из документа-основания. Рассмотрим этот вариант:

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

Резюме

Мы проанализировали ошибку, связанную с отсутствием поля РаботаГрафикРаботыСуммированныйУчетРабочегоВремени. Выяснилось, что это типовой баг версии 3.1.10.

Краткий план действий:

← На главную