При работе в конфигурациях на базе «1С:Бухгалтерия предприятия 2.0» или «Управление производственным предприятием 1.3» после обновления часто возникает неприятная ситуация: доработанные документы (например, «Товарный чек» или кастомная «Реализация») перестают проводиться. Программа выдает ошибку: «Метод объекта не обнаружен (СформироватьДвиженияПоРегиструНДСпоОСиНМА_ПеремещениеОборудования)». Рассмотрим подробно, почему это происходит и как восстановить работоспособность системы.
Проанализируем ситуацию: данная ошибка означает, что в коде документа (обычно в модуле объекта в процедуре ОбработкаПроведения) присутствует вызов функции из общего модуля, но в самом общем модуле этой функции больше нет. В нашем случае речь идет об общем модуле УчетНДСФормированиеДвижений.
Разберем, почему процедура исчезла. Фирма «1С» в ходе развития редакций 2.0 и 1.3 проводила масштабный рефакторинг подсистемы учета НДС. Процедуры, отвечающие за сложные движения по регистрам (такие как перемещение оборудования или работа с ОС и НМА), могли быть переименованы, перенесены в другие модули (например, в УчетНДСПереходНаРаздельныйУчет) или вовсе удалены, если логика учета изменилась. Если ваш документ был создан путем копирования типового кода «Реализации», то при обновлении типовой конфигурации вызовы в вашем документе остались старыми, а типовые модули обновились и «потеряли» нужную процедуру.
Самый надежный способ вернуть функционал — это сравнить текущую рабочую конфигурацию с конфигурацией поставщика или старым бекапом. Проанализируем последовательность действий:
УчетНДСФормированиеДвижений. Если в конфигурации поставщика процедура есть, а в основной — нет, система это покажет.Если же в конфигурации поставщика (актуального релиза) этой процедуры тоже нет, значит, методика учета изменилась. В этом случае нам нужно посмотреть, как реализован аналогичный блок в типовом документе «Реализация товаров и услуг» текущего релиза.
Посмотрим на пример кода, который обычно вызывает ошибку. В процедуре ДвиженияРегистровПодсистемыНДС часто встречается следующий блок:
// НДС по ОС - при списании ТМЦ они могут перестать принадлежать к будущим ОС,
// в этом случае необходимо снять блокировку с вычета.
// Если в результате перемещения ТМЦ будет отнесено на счет учета ОС, необходимо включить блокировку.
УчетНДСФормированиеДвижений.СформироватьДвиженияПоРегиструНДСпоОСиНМА_ПеремещениеОборудования(
СтруктураШапкиДокумента,
Движения.НДСПоПриобретеннымЦенностям.Выгрузить(),
Движения,
Отказ
);
Если ваша задача — просто «проткнуть» проведение документа и вы уверены, что операции с оборудованием (ОС) в данном документе не используются, можно временно добавить «заглушку» в общий модуль УчетНДСФормированиеДвижений:
Процедура СформироватьДвиженияПоРегиструНДСпоОСиНМА_ПеремещениеОборудования(СтруктураШапкиДокумента, ТаблицаДвижений, Движения, Отказ) Экспорт
// Пустая процедура для обхода ошибки отсутствия метода
КонецПроцедуры
Важно: Это решение является временным и может привести к некорректному формированию записей в регистре «НДС по ОС и НМА». Правильнее будет найти актуальный аналог этого метода в типовых модулях.
Иногда при работе с документами (например, «Больничный лист») возникает похожая ошибка, но с методом Свойство. Это часто связано с обращением к коллекции ДополнительныеСвойства или структурам параметров.
Выясним причину: программа пытается вызвать метод .Свойство() у переменной, которая имеет значение Неопределено или не является структурой. Рассмотрим, как это исправить программно. Найдите в отладчике строку, на которой происходит сбой, и добавьте проверку типа:
Если ПараметрыОбъекта <> Неопределено Тогда
Если ПараметрыОбъекта.Свойство("ЭтоЭЛН") Тогда
// Ваша логика
КонецЕсли;
КонецЕсли;
Особенно часто это проявляется, если сотрудники «распровели» старые документы, а при повторном проведении код пытается инициализировать данные, которых уже нет в кэше или регистрах сведений.
После того как мы восстановили работоспособность документа, пользователи часто просят вывести кнопку нового документа на панель или в главное меню. В обычных формах (редакция 2.0) это делается через настройку интерфейсов.
Проанализируем шаги по добавлению документа «Товарный чек» в интерфейс:
Документ.ТоварныйЧек.Команда.ОткрытьФормуСписка (или аналогичное стандартное действие).Если вы хотите избежать сложностей с интерфейсом, можно воспользоваться механизмом Дополнительных внешних печатных форм и обработок. Это позволит не править типовую конфигурацию в части меню, а вызывать нужные формы прямо из существующих документов.
Чтобы в будущем при обновлении конфигурации ваши доработки не затирались, придерживайтесь следующих правил:
УчетНДСФормированиеДвижений. Создайте свой модуль, например, Доработки_УчетНДС, и размещайте код там.// СУБД_НачалоДоработки и // СУБД_КонецДоработки. Это поможет быстро найти ваш код в общем массиве при сравнении конфигураций.Следуя этим инструкциям, вы сможете не только исправить текущую ошибку проведения, но и минимизировать риски появления подобных проблем при последующих обновлениях системы 1С.