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