Часто при разработке дополнительных обработок для конфигураций на базе 1С:Комплексная автоматизация или Управление торговлей разработчики сталкиваются с тем, что нужный справочник отсутствует в списке выбора «Назначение» в справочнике Дополнительные отчеты и обработки. Давайте разберем, почему это происходит и как исправить ситуацию, не нарушая работу типовой конфигурации.
Для начала проанализируем, почему список выбора ограничен. Система Библиотека стандартных подсистем (БСП), которая лежит в основе современных конфигураций 1С, использует жестко заданный перечень объектов, к которым можно «привязать» внешнюю команду. Это сделано из соображений безопасности и производительности системы.
Если справочника нет в выпадающем списке, значит, он не зарегистрирован в специальных Определяемых типах конфигурации. Именно эти типы определяют, какие объекты системы могут участвовать в подсистеме подключаемых команд.
Для того чтобы ваша обработка стала доступной для конкретного справочника, объект метаданных должен быть «поставщиком» команд. В современных версиях БСП (начиная с версии 3.1.x) этот процесс регламентирован. Рассмотрим, где именно это задается:
Определяемый тип с именем, похожим на ОбъектСДополнительнымиКомандами.ПриОпределенииОбъектовСКомандамиПечати в модуле УправлениеПечатьюПереопределяемый.Если справочник Характеристики номенклатуры не был изначально заложен разработчиками 1С как объект, поддерживающий дополнительные команды, система его просто «не увидит» в стандартном интерфейсе настройки.
Рассмотрим несколько подходов, которые помогут нам решить данную задачу, опираясь на лучшие практики 1С-разработки:
Чтобы избежать снятия конфигурации с поддержки и обеспечить простоту дальнейших обновлений, мы настоятельно рекомендуем использовать Расширения конфигурации. Это позволит нам безопасно внести изменения в логику БСП.
В расширении мы можем переопределить соответствующие методы. Рассмотрим структуру действий:
Определяемые типы, которые отвечают за дополнительные команды, и включите в них ваш справочник (например, Характеристики номенклатуры).УправлениеПечатьюПереопределяемый создайте обработчик события ПриОпределенииОбъектовСКомандамиПечати.Пример логики, которую мы можем использовать в модуле расширения:
Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
// Добавляем наш справочник в список доступных для печати
СписокОбъектов.Добавить(Метаданные.Справочники.ХарактеристикиНоменклатуры);
КонецПроцедуры
Если вы не хотите вносить изменения в структуру конфигурации даже через расширения, можно реализовать логику «Внешней обработки» без привязки к механизму Дополнительных отчетов и обработок. В этом случае:
Файл -> Открыть.Мы выяснили, что отсутствие справочника в списке выбора — это не ошибка, а особенность архитектуры БСП. Чтобы расширить функционал, мы должны:
Определяемых типах системы.УправлениеПечатьюПереопределяемый затрудняет обновление базы, поэтому использование расширений является приоритетным.Работая таким образом, мы сохраняем целостность системы, обеспечиваем предсказуемость обновлений и получаем желаемый функционал для пользователей.