Как исправить ошибку «Метод объекта не обнаружен (СформироватьДвиженияПоРегиструНДСпоОСиНМА_ПеремещениеОборудования)» в 1С

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

При работе в конфигурациях на базе «1С:Бухгалтерия предприятия 2.0» или «Управление производственным предприятием 1.3» после обновления часто возникает неприятная ситуация: доработанные документы (например, «Товарный чек» или кастомная «Реализация») перестают проводиться. Программа выдает ошибку: «Метод объекта не обнаружен (СформироватьДвиженияПоРегиструНДСпоОСиНМА_ПеремещениеОборудования)». Рассмотрим подробно, почему это происходит и как восстановить работоспособность системы.

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

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

Разберем, почему процедура исчезла. Фирма «1С» в ходе развития редакций 2.0 и 1.3 проводила масштабный рефакторинг подсистемы учета НДС. Процедуры, отвечающие за сложные движения по регистрам (такие как перемещение оборудования или работа с ОС и НМА), могли быть переименованы, перенесены в другие модули (например, в УчетНДСПереходНаРаздельныйУчет) или вовсе удалены, если логика учета изменилась. Если ваш документ был создан путем копирования типового кода «Реализации», то при обновлении типовой конфигурации вызовы в вашем документе остались старыми, а типовые модули обновились и «потеряли» нужную процедуру.

Шаг 1: Восстановление кода через сравнение и объединение

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

  1. Откроем Конфигуратор.
  2. Перейдем в меню Конфигурация — Поддержка — Настройка поддержки.
  3. Нажмем кнопку Сохранить конфигурацию поставщика в файл (получим файл .cf).
  4. Затем выполним Конфигурация — Сравнить, объединить с конфигурацией из файла, выбрав только что сохраненный файл.
  5. В дереве объектов найдем общий модуль УчетНДСФормированиеДвижений. Если в конфигурации поставщика процедура есть, а в основной — нет, система это покажет.

Если же в конфигурации поставщика (актуального релиза) этой процедуры тоже нет, значит, методика учета изменилась. В этом случае нам нужно посмотреть, как реализован аналогичный блок в типовом документе «Реализация товаров и услуг» текущего релиза.

Шаг 2: Анализ проблемного кода

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


// НДС по ОС - при списании ТМЦ они могут перестать принадлежать к будущим ОС, 
// в этом случае необходимо снять блокировку с вычета.
// Если в результате перемещения ТМЦ будет отнесено на счет учета ОС, необходимо включить блокировку.
УчетНДСФормированиеДвижений.СформироватьДвиженияПоРегиструНДСпоОСиНМА_ПеремещениеОборудования(
    СтруктураШапкиДокумента, 
    Движения.НДСПоПриобретеннымЦенностям.Выгрузить(), 
    Движения, 
    Отказ
);

Если ваша задача — просто «проткнуть» проведение документа и вы уверены, что операции с оборудованием (ОС) в данном документе не используются, можно временно добавить «заглушку» в общий модуль УчетНДСФормированиеДвижений:


Процедура СформироватьДвиженияПоРегиструНДСпоОСиНМА_ПеремещениеОборудования(СтруктураШапкиДокумента, ТаблицаДвижений, Движения, Отказ) Экспорт
    // Пустая процедура для обхода ошибки отсутствия метода
КонецПроцедуры

Важно: Это решение является временным и может привести к некорректному формированию записей в регистре «НДС по ОС и НМА». Правильнее будет найти актуальный аналог этого метода в типовых модулях.

Шаг 3: Исправление ошибки «Метод объекта не обнаружен (Свойство)»

Иногда при работе с документами (например, «Больничный лист») возникает похожая ошибка, но с методом Свойство. Это часто связано с обращением к коллекции ДополнительныеСвойства или структурам параметров.

Выясним причину: программа пытается вызвать метод .Свойство() у переменной, которая имеет значение Неопределено или не является структурой. Рассмотрим, как это исправить программно. Найдите в отладчике строку, на которой происходит сбой, и добавьте проверку типа:


Если ПараметрыОбъекта <> Неопределено Тогда
    Если ПараметрыОбъекта.Свойство("ЭтоЭЛН") Тогда
        // Ваша логика
    КонецЕсли;
КонецЕсли;

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

Шаг 4: Настройка интерфейса в обычных формах (БП 2.0)

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

Проанализируем шаги по добавлению документа «Товарный чек» в интерфейс:

  1. В дереве конфигурации развернем ветку Общие — Интерфейсы.
  2. Найдем используемый интерфейс (например, Полный или Бухгалтер).
  3. Откроем редактор интерфейса (двойным кликом).
  4. В появившемся окне выберем нужное меню (например, «Продажа»).
  5. Нажмем правую кнопку мыши — Добавить.
  6. В свойствах новой кнопки в поле Действие выберем Документ.ТоварныйЧек.Команда.ОткрытьФормуСписка (или аналогичное стандартное действие).

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

Рекомендации по дальнейшей разработке

Чтобы в будущем при обновлении конфигурации ваши доработки не затирались, придерживайтесь следующих правил:

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

← На главную