Как исправить ошибку «Метод объекта не обнаружен (ТаблицыОтложенногоФормированияДвижений)» при закрытии месяца в 1С:ERP?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Бухгалтерский учет
← На главную

При выполнении процедуры закрытия месяца в крупных программных продуктах на базе 1С, таких как 1С:ERP Управление предприятием или 1С:Комплексная автоматизация версии 2.5.17 и выше, пользователи и технические специалисты часто сталкиваются с критической ошибкой. Процесс аварийно прерывается на этапе формирования движений по внеоборотным активам (ВНА), выдавая сообщение о том, что метод объекта не обнаружен.

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

Анализ проблемы и симптомов

Ошибка проявляется при выполнении регламентной операции «Формирование движений по ОС и НМА». Текст ошибки обычно выглядит следующим образом:

Метод объекта не обнаружен (ТаблицыОтложенногоФормированияДвижений) {ОбщийМодуль.ОтложенноеФормированиеДвиженийВНА.Модуль(2552)}:ТаблицыДвиженийДокументов = МенеджерДокумента.ТаблицыОтложенногоФормированияДвижений(МенеджерВременныхТаблиц);

Проанализируем ситуацию подробнее. Проблема возникает из-за того, что в конфигурациях последних релизов (начиная с 2.5.17) был внедрен механизм отложенного формирования движений. Система ожидает, что каждый документ, попадающий в выборку для обработки, имеет в своем менеджере экспортную функцию ТаблицыОтложенногоФормированияДвижений. Однако для определенных видов учета или специфических хозяйственных операций этот метод в документах отсутствует.

Как показывает практика и обсуждения специалистов, ошибка чаще всего связана с документом Принятие к учету ОС, когда объектом выступает Объект строительства (счет 08.03). Если же принимается к учету оборудование (счет 08.04), ошибка может не проявляться. Это указывает на некорректную фильтрацию документов в запросе подсистемы ВНА.

Выясним причину возникновения бага

Проанализируем логику работы системы. В общем модуле ОтложенноеФормированиеДвиженийВНА существует запрос, который собирает все документы, требующие формирования проводок. Из-за программной недоработки в этот список попадают документы, которые должны обрабатываться по «старой» логике, не поддерживающей метод ТаблицыОтложенногоФормированияДвижений.

Когда цикл обработки доходит до такого документа, система обращается к его менеджеру (например, Документы.ПринятиеКУчетуОС.ТаблицыОтложенногоФормированияДвижений()), но не находит там указанной функции, что и приводит к исключению.

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

Поскольку проблема признана разработчиками 1С как официальный баг (идентификатор ошибки 00-00643644), самым правильным решением будет установка соответствующего исправления (патча). Посмотрим, как это сделать:

  1. Перейдем в раздел Администрирование — Обслуживание.
  2. Выберем пункт Обновление программы — Установленные исправления (патчи).
  3. Нажмем Установить исправление и найдем патч с кодом EF_00_00643644 (или более свежий для вашего релиза).
  4. После установки и перезапуска сеанса процедура закрытия месяца должна пройти успешно.

Способ 2: Программное исправление в общем модуле

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

Рассмотрим по шагам, что именно нужно изменить. Нам необходимо найти процедуру СформироватьТаблицуВтВсеДанныеКРасчету в общем модуле ОтложенноеФормированиеДвиженийВНА (имя модуля может незначительно отличаться в зависимости от версии, ищите по тексту ошибки из стека).

Проанализируем фрагмент запроса, отвечающий за выборку объектов строительства. Нам нужно добавить соединение с регистром сведений РеестрДокументов, чтобы убедиться, что мы выбираем только те типы ссылок, которые корректно поддерживаются механизмом. Исправленный фрагмент запроса должен выглядеть так:


// Часть запроса: Объекты строительства
| ВЫБРАТЬ
|   ТекущиеДокументы.Регистратор КАК Ссылка,
|   ТекущиеДокументы.Период КАК Дата,
|   ТекущиеДокументы.Организация КАК Организация,
|   ТекущиеДокументы.ОтражатьВРеглУчете КАК ОтражатьВРеглУчете,
|   ТекущиеДокументы.ОтражатьВУпрУчете КАК ОтражатьВУпрУчете,
|   ТекущиеДокументы.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
|   ТекущиеДокументы.АналитикаКапитализацииРасходов КАК ОбъектУчета
| ИЗ
|   РегистрНакопления.СтоимостьОС КАК ТекущиеДокументы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РеестрДокументов КАК РеестрДокументов
|   ПО РеестрДокументов.Ссылка = ТекущиеДокументы.Регистратор
| ГДЕ
|   ТекущиеДокументы.Период МЕЖДУ &НачалоПериода И &КонецПериода
|   И ТекущиеДокументы.Организация В (&СписокОрганизаций)
|   И РеестрДокументов.ТипСсылки В (&ИдентификаторыДокументов)
|   И ТекущиеДокументы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|   И ТекущиеДокументы.ВидАналитикиКапитализацииРасходов = ЗНАЧЕНИЕ(Перечисление.ВидыАналитикиКапитализацииРасходов.ОбъектСтроительства)
|   И ТекущиеДокументы.АналитикаКапитализацииРасходов <> НЕОПРЕДЕЛЕНО
|   И ТекущиеДокументы.Активность
|   И ТекущиеДокументы.ОсновноеСредство В (
|       ВЫБРАТЬ СписокОбъектов.ОбъектУчета ИЗ СписокОбъектов КАК СписокОбъектов)

Что мы сделали в этом коде: мы добавили ВНУТРЕННЕЕ СОЕДИНЕНИЕ с РегистрСведений.РеестрДокументов и наложили фильтр по параметру &ИдентификаторыДокументов. Это гарантирует, что в выборку попадут только те документы, которые система «знает» как поддерживающие метод отложенного формирования движений.

Дополнительная проверка данных

Иногда ошибка может быть спровоцирована некорректными данными в регистрах. Разберем, на что стоит обратить внимание:

Резюме

Мы выяснили, что ошибка Метод объекта не обнаружен (ТаблицыОтложенногоФормированияДвижений) является следствием переходного периода в архитектуре 1С:ERP, когда часть документов переведена на новый механизм формирования движений, а часть — нет. При использовании объектов строительства фильтрация в типовом коде дает сбой.

Для окончательного решения проблемы:

  1. Первоочередно проверьте наличие патчей в пользовательском режиме.
  2. Если патча нет, примените исправление запроса в расширении, как мы рассмотрели выше.
  3. После внесения правок обязательно перезапустите процедуру «Закрытие месяца».

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

← На главную