Ошибка в УПП 1.3.234.1: почему не проводится "Отражение зарплаты в регл. учете"?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет Промышленность, строительство и АПК
← На главную

После обновления конфигурации "1С:Управление производственным предприятием" (УПП) до релиза 1.3.234.1 многие пользователи столкнулись с проблемой: документ "Отражение зарплаты в регл. учете" перестал проводиться. Система выдает ошибку в обработчике "ОбработкаПроведения" с текстом: "{ОбщийМодуль.УправлениеЗатратамиДвиженияПоРегистрам.Модуль(1383)}: Поле объекта не обнаружено (ВидДокумента)".

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

Выясняем причину: анализ изменений в общем модуле

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

  1. Источник проблемы. Ошибка возникает в общем модуле УправлениеЗатратамиДвиженияПоРегистрам. Этот модуль используется многими документами для формирования движений по регистрам затрат. Документ отражения зарплаты — один из них.
  2. Новый код в релизе 1.3.234.1. В указанном релизе разработчики добавили в общий модуль новый блок кода, предназначенный для особой обработки услуг, поступающих через документ "Поступление товаров и услуг". Этот блок кода проверяет ряд условий, одно из которых — обращение к свойству ВидДокумента из структуры шапки документа.
  3. Особенность документа "Отражение зарплаты". В отличие от большинства других документов, которые для формирования структуры шапки (СтруктураШапкиДокумента) вызывают общие функции (например, ОбщегоНазначения.СформироватьСтруктуруШапкиДокумента), документ "Отражение зарплаты в регл. учете" (а также его "брат" "Отражение зарплаты в упр. учете") формирует эту структуру "вручную" внутри своей обработки проведения. При этом разработчики этого документа не предусмотрели добавление в структуру свойства "ВидДокумента".

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

Теперь, когда причина ясна, рассмотрим несколько путей решения.

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

Фирма "1С" признала наличие этой проблемы и зарегистрировала ее под кодом ошибки 00-00667550. Для оперативного исправления был предложен официальный патч, который заключается в модификации общего модуля УправлениеЗатратамиДвиженияПоРегистрам. Это самый безопасный и правильный способ, если вы пока не готовы обновляться на следующий релиз.

Порядок действий:

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

Изменение №1.

Находим строку:


И СтруктураШапкиДокумента.ВидДокумента = "ПоступлениеТоваровУслуг" И Выборка.Услуга

И заменяем ее на строку с дополнительной проверкой на существование свойства:


И СтруктураШапкиДокумента.Свойство("ВидДокумента") И СтруктураШапкиДокумента.ВидДокумента = "ПоступлениеТоваровУслуг"

Эта правка гарантирует, что система будет обращаться к свойству ВидДокумента только в том случае, если оно в принципе существует в структуре.

Изменение №2.

Находим строку:

Если ЗначениеЗаполнено(СчетЗатратБУПоСчетуНУ) Тогда

И заменяем ее на более сложное условие:


Если Структура.Свойство("Услуга") И Структура.Услуга И ЗначениеЗаполнено(СчетЗатратБУПоСчетуНУ) Тогда

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

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

Важно: Самым надежным решением в долгосрочной перспективе является обновление конфигурации УПП до следующего релиза (например, 1.3.235.1 и выше), в котором эта ошибка уже исправлена разработчиками.

Решение 2: "Методически правильное" исправление в самом документе

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

Порядок действий:

  1. Откройте в конфигураторе документ "ОтражениеЗарплатыВРеглУчете".
  2. Перейдите в его модуль объекта.
  3. Найдите процедуру ОбработкаПроведения(Отказ, Режим).
  4. Внутри этой процедуры найдите место, где инициализируется временная структура шапки документа, обычно это строка вида ВремСтруктураШапкиДокумента = Новый Структура;.
  5. Сразу после этой строки добавьте код, который вставляет в структуру недостающее свойство:

// Устранение ошибки релиза 1.3.234.1
ВремСтруктураШапкиДокумента.Вставить("ВидДокумента", Метаданные().Имя);

Этот код программно добавляет в структуру ключ "ВидДокумента" и присваивает ему имя текущего документа (т.е. "ОтражениеЗарплатыВРеглУчете"). Таким образом, когда управление будет передано в общий модуль, он получит все ожидаемые им данные, и ошибка не возникнет.

Не забудьте: Аналогичную проблему имеет документ "ОтражениеЗарплатыВУпрУчете", поэтому для него следует проделать ту же самую операцию в его модуле объекта.

Решение 3: Быстрое исправление в общем модуле через проверку типа

Это еще один вариант исправления в общем модуле УправлениеЗатратамиДвиженияПоРегистрам, который был предложен сообществом до появления официального патча. Он также полностью рабочий.

Суть в том, чтобы вместо проверки свойства ВидДокумента проверять непосредственно тип документа-регистратора.

Порядок действий:

  1. Откройте общий модуль УправлениеЗатратамиДвиженияПоРегистрам и процедуру ДвиженияПоРегистрамОтражениеЗатрат.
  2. Найдите строку условия:

И СтруктураШапкиДокумента.ВидДокумента = "ПоступлениеТоваровУслуг" И Выборка.Услуга

И замените ее на проверку типа ссылки документа:


И ТипЗнч(СтруктураШапкиДокумента.Ссылка) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") И Выборка.Услуга

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

Подведем итог. Мы рассмотрели три эффективных способа исправления ошибки проведения документа отражения зарплаты. Официальный патч (Решение 1) является наиболее предпочтительным. "Методически правильное" исправление в документе (Решение 2) также является отличным вариантом, так как исправляет саму причину несоответствия данных. Быстрое исправление (Решение 3) — это рабочая альтернатива. Выбирайте тот способ, который лучше всего подходит под ваши рабочие процессы и политику внесения изменений в конфигурацию.

← На главную