Как исправить ошибку «Область не найдена: КонецСтроки» во внешней печатной форме 1С:Розница

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

При работе с внешними печатными формами (ВПФ) в конфигурациях на базе БСП (Библиотека стандартных подсистем), таких как 1С:Розница 2.3 или 3.0, часто возникает ситуация, когда ранее работавшая обработка внезапно выдает ошибку: Ошибка при вызове метода контекста (ПолучитьОбласть): Область не найдена: КонецСтроки. Рассмотрим подробнее, почему это происходит и как реанимировать печатную форму.

Причина возникновения ошибки: конфликт макетов

Проанализируем ситуацию, описанную в коде внешней обработки. Основная проблема кроется в строке инициализации макета. Разберем этот фрагмент кода:


Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПеремещениеТоваров.ПФ_MXL_НакладнаяНаПеремещение");

Используя метод УправлениеПечатью.МакетПечатнойФормы(), программист дает системе команду: «Возьми макет, который встроен в саму конфигурацию (в метаданные документа)». В этом и заключается ловушка. Если вы скачали внешнюю обработку или написали её сами, подразумевается, что макет находится внутри файла .epf. Однако код игнорирует внутренний макет и обращается к типовому.

Выясним причину поломки: скорее всего, база данных была обновлена. В новых релизах 1С:Розница разработчики часто меняют структуру типовых макетов. Область, которая раньше называлась КонецСтроки (обычно это вертикальная область для отрисовки правой границы таблицы), могла быть переименована или удалена вовсе. Поскольку ваша внешняя обработка продолжает искать эту область в системном макете по старому имени, возникает критическая ошибка.

Решение №1: Использование внутреннего макета обработки

Это самый правильный и надежный способ. Мы должны заставить программу брать макет не из конфигурации, а из самой внешней обработки. Для этого заменим вызов функции БСП на стандартный метод получения макета объекта.

Найдем в модуле объекта обработки (обычно это функция ПечатьНакладная) строку, где определяется переменная Макет, и заменим её:


// Было (обращение к конфигурации):
// Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПеремещениеТоваров.ПФ_MXL_НакладнаяНаПеремещение");

// Стало (обращение к макету внутри обработки):
Макет = ЭтотОбъект.ПолучитьМакет("НакладнаяНаПеремещение"); 

Важно: Проверьте во вкладке «Макеты» вашей внешней обработки точное имя макета. Если он называется иначе (например, ПФ_MXL_Накладная), укажите именно это имя в кавычках.

Решение №2: Исправление областей в макете

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

  1. Перейдем в раздел Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм.
  2. Найдем в списке макет Накладная на перемещение (Перемещение товаров).
  3. Откроем его для редактирования.
  4. Нам нужно найти вертикальную область (колонку), которая должна закрывать таблицу. Если её нет, выделим крайнюю правую колонку таблицы, зайдем в меню Таблица — Имена — Назначить имя и введем КонецСтроки.

Однако помните: если в коде используется конструкция Макет.ПолучитьОбласть("ШапкаТаблицы|КонецСтроки"), это означает, что программа ищет пересечение горизонтальной строки ШапкаТаблицы и вертикальной колонки КонецСтроки. Если одна из этих именованных областей отсутствует, ошибка сохранится.

Анализ ошибки обмена ЕГАИС: «Преобразование к типу Булево»

В ходе обсуждения часто всплывает и другая проблема, связанная с обновлением — сбой при обмене с ЕГАИС. Ошибка {ОбщийМодуль.РаботаСФайлами.Модуль(56)}: Преобразование значения к типу Булево не может быть выполнено говорит о логической ошибке в коде типовой конфигурации или повреждении данных.

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

Для решения этой проблемы рекомендуем следующие шаги:

  1. Провести Тестирование и исправление информационной базы (особенно пункты «Проверка логической целостности» и «Очистка ссылок на несуществующие объекты»).
  2. Проверить справочник Присоединенные файлы (ТТН Входящие ЕГАИС) на наличие «битых» записей.
  3. Если ошибка блокирует работу, можно временно зайти в конфигуратор и добавить проверку на заполненность объекта перед обращением к свойству ПометкаУдаления:

Если ФайлОбъект <> Неопределено И НЕ ФайлОбъект.Пустая() Тогда
    Если ФайлОбъект.ПометкаУдаления Тогда
        // логика обработки
    КонецЕсли;
КонецЕсли;

Подведем итоги

Мы проанализировали две разные, но часто сопутствующие друг другу ошибки в 1С:Розница. Основной вывод: при использовании внешних печатных форм всегда следите за тем, чтобы объект Макет инициализировался из локального ресурса обработки ЭтотОбъект.ПолучитьМакет(). Это гарантирует независимость вашей печатной формы от обновлений конфигурации и изменений в типовых макетах 1С.

← На главную