Почему внешняя печатная форма Приходного кассового ордера не отображается в списке размещений и как это исправить?

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

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

Анализируем механизм регистрации внешней печатной формы

В управляемом приложении за связь внешней обработки с объектами метаданных отвечает экспортная функция СведенияОВнешнейОбработке, расположенная в модуле объекта обработки. Если в этой функции допущена хотя бы небольшая неточность в именах переменных или структуре возвращаемых данных, механизм БСП не сможет распознать, для каких документов предназначена форма.

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

Корректная структура функции СведенияОВнешнейОбработке

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


Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;
    
    // Важно: указываем полное имя документа с префиксом "Документ."
    МассивНазначений.Добавить("Документ.ПриходныйКассовыйОрдер");
    
    ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяПечатнаяФорма");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", "Приходный кассовый ордер (внешний)");
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
    ПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма для ПКО");
    
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    
    ДобавитьКоманду(ТаблицаКоманд,
        "ПКО (КО-1)",
        "ПКО_КО1",
        "ВызовСерверногоМетода",
        Истина,
        "ПечатьMXL");
        
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    
    Возврат ПараметрыРегистрации;

КонецФункции

Обратите внимание на ключевой момент: в массив Назначение имя документа должно передаваться как строка вида Документ.ПриходныйКассовыйОрдер. Если вы напишете просто ПриходныйКассовыйОрдер, система не поймет, к какому типу метаданных относится этот объект, и в пользовательском интерфейсе поле «Размещение» останется пустым.

Почему документа нет в списке при ручном выборе?

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

  1. Ошибки в кэше метаданных: 1С кэширует структуру конфигурации для справочника обработок. Если вы только что изменили код регистрации, попробуйте полностью удалить запись об обработке из справочника, закрыть форму списка и создать новую запись, выбрав файл заново. Это инициирует повторное чтение функции СведенияОВнешнейОбработке.
  2. Тип команды: Убедитесь, что для параметра Использование в таблице команд указано значение ВызовСерверногоМетода или ОткрытиеФормы. Если тип команды не соответствует логике печатной формы, она может игнорироваться механизмом печати объекта.
  3. Ограничения конфигурации: Проверьте, поддерживает ли сам документ ПриходныйКассовыйОрдер в вашей конфигурации подключение внешних печатных форм. В модуле менеджера документа должна присутствовать процедура ДобавитьКомандыПечати, которая интегрирует объект в общую систему печати БСП.

Разбор параметра «Безопасный режим»

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

Рекомендуется явно указывать ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); в коде, если вы уверены в надежности своего кода и вам требуются расширенные привилегии для формирования макета.

Типичные ошибки в написании имен переменных

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

Проанализируем ситуацию: если в коде написано ПараметрыРегистрации.Вставить("ПолучитьНазначениеОбработки", МассивНазначений); вместо ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);, то для платформы список документов останется неопределенным. Система ожидает строго заданные ключи структуры.

Рекомендации по отладке

Если печатная форма все равно не появляется, выполним следующие действия по шагам:

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

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

Соблюдая данные правила формирования структуры регистрации и внимательно проверяя имена метаданных, вы обеспечите беспроблемную интеграцию внешней печатной формы в любой программный продукт на платформе 1С:Предприятие 8.3.

← На главную