При выполнении процедуры закрытия месяца в крупных программных продуктах на базе 1С, таких как 1С:ERP Управление предприятием или 1С:Комплексная автоматизация версии 2.5.17 и выше, пользователи и технические специалисты часто сталкиваются с критической ошибкой. Процесс аварийно прерывается на этапе формирования движений по внеоборотным активам (ВНА), выдавая сообщение о том, что метод объекта не обнаружен.
В этой статье мы подробно проанализируем ситуацию, разберем причины возникновения проблемы и рассмотрим способы её решения, включая программную корректировку кода и установку официальных исправлений.
Ошибка проявляется при выполнении регламентной операции «Формирование движений по ОС и НМА». Текст ошибки обычно выглядит следующим образом:
Метод объекта не обнаружен (ТаблицыОтложенногоФормированияДвижений) {ОбщийМодуль.ОтложенноеФормированиеДвиженийВНА.Модуль(2552)}:ТаблицыДвиженийДокументов = МенеджерДокумента.ТаблицыОтложенногоФормированияДвижений(МенеджерВременныхТаблиц);
Проанализируем ситуацию подробнее. Проблема возникает из-за того, что в конфигурациях последних релизов (начиная с 2.5.17) был внедрен механизм отложенного формирования движений. Система ожидает, что каждый документ, попадающий в выборку для обработки, имеет в своем менеджере экспортную функцию ТаблицыОтложенногоФормированияДвижений. Однако для определенных видов учета или специфических хозяйственных операций этот метод в документах отсутствует.
Как показывает практика и обсуждения специалистов, ошибка чаще всего связана с документом Принятие к учету ОС, когда объектом выступает Объект строительства (счет 08.03). Если же принимается к учету оборудование (счет 08.04), ошибка может не проявляться. Это указывает на некорректную фильтрацию документов в запросе подсистемы ВНА.
Проанализируем логику работы системы. В общем модуле ОтложенноеФормированиеДвиженийВНА существует запрос, который собирает все документы, требующие формирования проводок. Из-за программной недоработки в этот список попадают документы, которые должны обрабатываться по «старой» логике, не поддерживающей метод ТаблицыОтложенногоФормированияДвижений.
Когда цикл обработки доходит до такого документа, система обращается к его менеджеру (например, Документы.ПринятиеКУчетуОС.ТаблицыОтложенногоФормированияДвижений()), но не находит там указанной функции, что и приводит к исключению.
Поскольку проблема признана разработчиками 1С как официальный баг (идентификатор ошибки 00-00643644), самым правильным решением будет установка соответствующего исправления (патча). Посмотрим, как это сделать:
EF_00_00643644 (или более свежий для вашего релиза).Если по каким-то причинам установка патча невозможна (например, конфигурация сильно кастомизирована или нет доступа к интернету для загрузки исправлений), мы можем внести изменения вручную через расширение или непосредственно в коде (если база не на поддержке).
Рассмотрим по шагам, что именно нужно изменить. Нам необходимо найти процедуру СформироватьТаблицуВтВсеДанныеКРасчету в общем модуле ОтложенноеФормированиеДвиженийВНА (имя модуля может незначительно отличаться в зависимости от версии, ищите по тексту ошибки из стека).
Проанализируем фрагмент запроса, отвечающий за выборку объектов строительства. Нам нужно добавить соединение с регистром сведений РеестрДокументов, чтобы убедиться, что мы выбираем только те типы ссылок, которые корректно поддерживаются механизмом. Исправленный фрагмент запроса должен выглядеть так:
// Часть запроса: Объекты строительства
| ВЫБРАТЬ
| ТекущиеДокументы.Регистратор КАК Ссылка,
| ТекущиеДокументы.Период КАК Дата,
| ТекущиеДокументы.Организация КАК Организация,
| ТекущиеДокументы.ОтражатьВРеглУчете КАК ОтражатьВРеглУчете,
| ТекущиеДокументы.ОтражатьВУпрУчете КАК ОтражатьВУпрУчете,
| ТекущиеДокументы.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТекущиеДокументы.АналитикаКапитализацииРасходов КАК ОбъектУчета
| ИЗ
| РегистрНакопления.СтоимостьОС КАК ТекущиеДокументы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ПО РеестрДокументов.Ссылка = ТекущиеДокументы.Регистратор
| ГДЕ
| ТекущиеДокументы.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И ТекущиеДокументы.Организация В (&СписокОрганизаций)
| И РеестрДокументов.ТипСсылки В (&ИдентификаторыДокументов)
| И ТекущиеДокументы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| И ТекущиеДокументы.ВидАналитикиКапитализацииРасходов = ЗНАЧЕНИЕ(Перечисление.ВидыАналитикиКапитализацииРасходов.ОбъектСтроительства)
| И ТекущиеДокументы.АналитикаКапитализацииРасходов <> НЕОПРЕДЕЛЕНО
| И ТекущиеДокументы.Активность
| И ТекущиеДокументы.ОсновноеСредство В (
| ВЫБРАТЬ СписокОбъектов.ОбъектУчета ИЗ СписокОбъектов КАК СписокОбъектов)
Что мы сделали в этом коде: мы добавили ВНУТРЕННЕЕ СОЕДИНЕНИЕ с РегистрСведений.РеестрДокументов и наложили фильтр по параметру &ИдентификаторыДокументов. Это гарантирует, что в выборку попадут только те документы, которые система «знает» как поддерживающие метод отложенного формирования движений.
Иногда ошибка может быть спровоцирована некорректными данными в регистрах. Разберем, на что стоит обратить внимание:
Стоимость ОС. С помощью консоли запросов найдите записи за проблемный месяц, где поле ВидАналитикиКапитализацииРасходов заполнено значением Объект строительства.Регистратор — это именно документ Принятие к учету ОС.Принятие к учету ОС (после очистки кэша или исправления кода) помогает системе корректно проиндексировать данные.Мы выяснили, что ошибка Метод объекта не обнаружен (ТаблицыОтложенногоФормированияДвижений) является следствием переходного периода в архитектуре 1С:ERP, когда часть документов переведена на новый механизм формирования движений, а часть — нет. При использовании объектов строительства фильтрация в типовом коде дает сбой.
Для окончательного решения проблемы:
Следуя этим шагам, вы сможете успешно завершить регламентные операции и обеспечить корректное формирование отчетности в системе 1С.