Почему внешняя печатная форма не видит новый документ конфигурации в 1С и как это исправить?

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

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

Причина 1. Не обновлен справочник идентификаторов объектов метаданных

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

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

  1. Обновление программным вызовом через внешнюю обработку или консоль кода:

    Выполним вызов метода обновления данных справочника на стороне сервера:

    Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();
  2. Запуск сеанса в режиме обновления информационной базы:

    Запустим информационную базу в режиме 1С:Предприятие с параметром командной строки /c ЗапуститьОбновлениеИнформационнойБазы. В конфигураторе этот параметр можно указать в меню «Сервис» → «Параметры» на вкладке «Запуск 1С:Предприятия» в поле «Параметры запуска».

Причина 2. Конфликт с объектом из расширения

Если документ первоначально разрабатывался в расширении конфигурации, а затем был перенесен в основную конфигурацию, в системе возникает коллизия идентификаторов. Запись о документе сохраняется в справочнике ИдентификаторыОбъектовРасширений, из-за чего подсистемы БСП продолжают связывать логику с расширением, блокируя основной объект.

Рассмотрим порядок устранения конфликта:

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

// Обновляем идентификаторы основной конфигурации
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();

// Обновляем идентификаторы расширений с удалением устаревших связей
Справочники.ИдентификаторыОбъектовРасширений.ОбновитьДанныеСправочника(Истина);

Причина 3. Документ не включен в определяемые типы БСП

Для того чтобы подсистема дополнительных отчетов и обработок разрешила привязать внешнюю печатную форму к объекту, этот объект должен входить в состав определяемых типов конфигурации, отвечающих за работу команд и печатных форм.

Проверим и при необходимости добавим наш документ в следующие объекты метаданных в конфигураторе:

  1. ОпределяемыйТип.ВладелецДополнительныхОбработок — определяет перечень объектов, для которых разрешено подключение дополнительных обработок.
  2. ОпределяемыйТип.ВладелецПечатныхФорм (или ОпределяемыйТип.ОбъектСДополнительнымиКомандами в некоторых версиях БСП) — разрешает формирование команд печати для объекта.

Причина 4. Отсутствие интерфейсной процедуры в модуле менеджера

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

Откроем модуль менеджера созданного документа и добавим процедуру:


// Процедура инициализирует команды печати объекта для БСП
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	// Если требуются встроенные команды печати, они описываются здесь.
	// Для работы внешней печатной формы достаточно наличия самой процедуры.
	
КонецПроцедуры

Причина 5. Ошибки в функции «СведенияОВнешнейОбработке»

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


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

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

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

Причина 6. Кэширование параметров работы программы

Если все метаданные и процедуры настроены верно, но документ все еще недоступен, причиной может быть кэш параметров сеанса или локальный кэш клиента «1С:Предприятия».

  1. Сбросим внутренний кэш параметров работы программы БСП программным кодом: СтандартныеПодсистемыСервер.УстановитьПараметрыРаботыПрограммы(Ложь);
  2. Перезапустим клиентское приложение с параметром /ClearCache для полной очистки локального кэша метаданных пользователя.
← На главную