При обновлении типовых конфигураций «1С:Предприятие 8», таких как «Бухгалтерия предприятия 3.0» или «Зарплата и управление персоналом 3.1», пользователи часто сталкиваются с досадной ошибкой при попытке печати документов: Метод объекта не обнаружен (ПолучитьНомерНаПечать). Эта проблема особенно актуальна для версий, вышедших после начала 2020 года, так как именно в этот период компания «1С» провела оптимизацию Библиотеки стандартных подсистем (БСП) и удалила устаревшие функции.
В этой статье мы подробно разберем, почему возникает эта ошибка, как диагностировать ее причину и, самое главное, как самостоятельно исправить код внешней печатной формы или расширения, чтобы вернуть возможность печати документов.
Прежде всего, проанализируем ситуацию. Ошибка возникает из-за того, что в общем модуле ПрефиксацияОбъектовКлиентСервер метод с именем ПолучитьНомерНаПечать был окончательно удален. На смену ему пришел более лаконичный метод НомерНаПечать. Если в вашей базе используются **внешние печатные формы** (ВПФ), созданные программистами ранее, они продолжают обращаться к старому имени функции, которого в обновленной конфигурации больше не существует.
Рассмотрим по шагам, как определить, какая именно форма вызывает сбой, и как её починить.
Если ошибка появляется не при стандартной печати, а при выборе конкретного пункта меню (например, «ТТН (расширенная)» или «Счет-договор»), скорее всего, используется внешняя обработка. Давайте проверим это в пользовательском режиме:
Реализация товаров и услуг: ТТН и транспортная накладная расширенные.Если форма найдена в этом списке — мы на верном пути. Если же ошибка возникает в стандартной кнопке печати, проблема может крыться в **расширении конфигурации**.
Чтобы внести изменения в код, нам нужно извлечь файл обработки из базы данных на компьютер:
.epf в удобное место на диске. Важно: не удаляйте оригинал, пока не убедитесь, что новая версия работает корректно.Теперь приступим к технической части. Для этого нам понадобится режим «Конфигуратор».
.epf.Ctrl + F и введем текст для поиска: ПолучитьНомерНаПечать.Скорее всего, мы увидим строку, похожую на эту:
ДанныеДляПечати.Вставить("Номер", ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ДопДанные.Номер, Истина, Ложь));
Проанализируем вызов. Нам необходимо заменить устаревшее имя метода на новое. Просто удалим часть «Получить» из названия функции. Исправленный код должен выглядеть так:
ДанныеДляПечати.Вставить("Номер", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДопДанные.Номер, Истина, Ложь));
Обратите внимание: Параметры метода (номер объекта, флаги удаления префиксов) обычно остаются идентичными, поэтому простая замена текста решает проблему в 99% случаев.
После внесения правок выполним следующие действия:
.epf файл.Теперь можно проверять печать. Ошибка должна исчезнуть.
Иногда замена одного метода приводит к появлению следующей ошибки, так как в БСП часто обновляются целые группы функций. Если после ПолучитьНомерНаПечать система выдает ошибку на метод ПолучитьНомерДляВыводаНаПечать, знайте — он также заменяется на НомерНаПечать.
Если вы хотите написать универсальный код, который будет работать как на старых версиях программы, так и на новых, рассмотрим возможность использования проверки наличия метода. Это позволит избежать правок при каждом обновлении базы у разных клиентов:
Если ОбщегоНазначения.ЕстьМетодОбъекта(ПрефиксацияОбъектовКлиентСервер, "НомерНаПечать") Тогда
// Используем новый метод для актуальных версий БСП
Результат = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Номер, Истина, Истина);
Иначе
// Используем старый метод для архивных версий
Результат = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Номер, Истина, Истина);
КонецЕсли;
Такой подход гарантирует отказоустойчивость вашей внешней печатной формы. Также не забудьте проверить **Режим совместимости** в расширениях, если правки вносятся через них. Если режим совместимости расширения значительно ниже режима основной конфигурации, некоторые методы могут быть недоступны для вызова, даже если они физически присутствуют в модулях.
Подведем итог: исправление ошибки сводится к простой замене имени функции в коде внешней обработки. Это «курс молодого бойца», который позволяет быстро восстановить работоспособность печати без ожидания приезда профильного специалиста.