Как исправить ошибку Метод объекта не обнаружен (ПолучитьНомерНаПечать) в 1С

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

При обновлении типовых конфигураций «1С:Предприятие 8», таких как «Бухгалтерия предприятия 3.0» или «Зарплата и управление персоналом 3.1», пользователи часто сталкиваются с досадной ошибкой при попытке печати документов: Метод объекта не обнаружен (ПолучитьНомерНаПечать). Эта проблема особенно актуальна для версий, вышедших после начала 2020 года, так как именно в этот период компания «1С» провела оптимизацию Библиотеки стандартных подсистем (БСП) и удалила устаревшие функции.

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

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

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

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

Шаг 1. Идентификация проблемной обработки

Если ошибка появляется не при стандартной печати, а при выборе конкретного пункта меню (например, «ТТН (расширенная)» или «Счет-договор»), скорее всего, используется внешняя обработка. Давайте проверим это в пользовательском режиме:

  1. Перейдем в раздел Администрирование.
  2. Выберем пункт Печатные формы, отчеты и обработки.
  3. Откроем ссылку Дополнительные отчеты и обработки.
  4. В появившемся списке найдем ту печатную форму, при вызове которой возникает ошибка. Например, это может быть Реализация товаров и услуг: ТТН и транспортная накладная расширенные.

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

Шаг 2. Сохранение и подготовка к редактированию

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

  1. В списке Дополнительные отчеты и обработки выделим нужную строку.
  2. Нажмем кнопку Кнопка «Еще» — Сохранить как... (или воспользуемся кнопкой дискеты в карточке обработки).
  3. Сохраним файл с расширением .epf в удобное место на диске. Важно: не удаляйте оригинал, пока не убедитесь, что новая версия работает корректно.

Шаг 3. Исправление кода в Конфигураторе

Теперь приступим к технической части. Для этого нам понадобится режим «Конфигуратор».

  1. Запустим 1С в режиме Конфигуратор.
  2. Выберем в меню Файл — Открыть и выберем сохраненный ранее файл .epf.
  3. В окне структуры обработки нажмем правой кнопкой мыши на корень (название обработки) и выберем Открыть модуль объекта.
  4. Нажмем комбинацию клавиш Ctrl + F и введем текст для поиска: ПолучитьНомерНаПечать.

Скорее всего, мы увидим строку, похожую на эту:


ДанныеДляПечати.Вставить("Номер", ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ДопДанные.Номер, Истина, Ложь));

Проанализируем вызов. Нам необходимо заменить устаревшее имя метода на новое. Просто удалим часть «Получить» из названия функции. Исправленный код должен выглядеть так:


ДанныеДляПечати.Вставить("Номер", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДопДанные.Номер, Истина, Ложь));

Обратите внимание: Параметры метода (номер объекта, флаги удаления префиксов) обычно остаются идентичными, поэтому простая замена текста решает проблему в 99% случаев.

Шаг 4. Сохранение и обновление в базе

После внесения правок выполним следующие действия:

  1. Сохраним изменения в файле (меню Файл — Сохранить).
  2. Вернемся в режим «1С:Предприятие» в раздел Дополнительные отчеты и обработки.
  3. Откроем карточку нашей проблемной обработки.
  4. Нажмем кнопку Обновить из файла и выберем наш исправленный .epf файл.
  5. Нажмем Записать и закрыть.

Теперь можно проверять печать. Ошибка должна исчезнуть.

Дополнительные рекомендации для разработчиков

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

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


Если ОбщегоНазначения.ЕстьМетодОбъекта(ПрефиксацияОбъектовКлиентСервер, "НомерНаПечать") Тогда
    // Используем новый метод для актуальных версий БСП
    Результат = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Номер, Истина, Истина);
Иначе
    // Используем старый метод для архивных версий
    Результат = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Номер, Истина, Истина);
КонецЕсли;

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

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

← На главную