Как загрузить параметры из настроек СКД в консоль запросов без ручного ввода

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

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

Способ 1. Использование «Инструментов разработчика» (ИР)

Наиболее продвинутый и быстрый метод заключается в использовании профессионального набора «Инструменты разработчика» (автор — Сергей Старых, известный как TormozIT). В этом комплексе реализована тесная интеграция между консолью СКД и консолью запросов. Разберем по шагам, как это работает:

  1. Запустим консоль СКД из состава ИР.
  2. Загрузим в нее вашу схему компоновки (файл .dcs) или откроем отчет непосредственно из конфигурации.
  3. Загрузим файл настроек (.xml), который содержит заполненные параметры.
  4. В дереве наборов данных найдем нужный нам запрос. Проанализируем структуру: если дважды щелкнуть левой кнопкой мыши на наборе данных «Запрос», система автоматически откроет стандартную консоль запросов.
  5. Главное преимущество: при таком открытии все параметры, установленные в текущих настройках компоновки, будут автоматически перенесены в таблицу параметров консоли запросов.

Этот метод позволяет избежать механической работы и исключает ошибки при копировании идентификаторов и типов значений.

Способ 2. Решение проблемы с MSScriptControl.ScriptControl

Часто при попытке запустить мощные консоли или инструменты разработчика возникает ошибка: «невозможно подключить MSScriptControl.ScriptControl». Выясним причину этой ситуации. Данный компонент является 32-битным COM-объектом Windows. Если вы запускаете «1С:Предприятие» в 64-битной версии клиента, система не сможет инициализировать этот объект.

Рассмотрим варианты решения этой проблемы:

  1. Запуск 32-битного клиента: Если на вашем компьютере установлены обе версии платформы, попробуйте запустить базу через 32-битный исполняемый файл (обычно находится в папке C:\Program Files (x86)\1cv8\...). В нем MSScriptControl будет работать корректно.
  2. Регистрация библиотеки: В некоторых случаях библиотека msscript.ocx просто не зарегистрирована в системе. Попробуем выполнить команду в консоли Windows от имени администратора: regsvr32 C:\Windows\SysWOW64\msscript.ocx
  3. Переход на управляемые формы: Современные версии консолей запросов для управляемых форм (УФ) чаще всего написаны на чистом коде 1С без использования устаревших внешних компонент. Это полностью снимает вопрос совместимости с разрядностью ОС.

Способ 3. Штатная «Консоль системы компоновки данных»

Если вы не хотите устанавливать сторонние инструменты, воспользуемся стандартной консолью СКД, которая входит в состав инструментов разработчика на диске ИТС. Она позволяет загружать схему и настройки. Рассмотрим алгоритм действий:

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

Проанализируем ситуацию, если параметры представляют собой сложные типы (например, массивы или списки значений). Большинство стандартных консолей корректно сериализуют их из XML настроек компоновки и восстанавливают их структуру в таблице параметров. Это особенно полезно при отладке запросов, использующих оператор В (&Параметр).

Способ 4. Программный захват параметров

Существует еще один профессиональный подход — захват параметров из реального сеанса работы пользователя. Вместо того чтобы выгружать настройки в XML, мы можем использовать «Инструменты разработчика» для перехвата выполнения запроса.

Для этого в ИР существует функция «Захват запросов». Мы запускаем отчет в обычном режиме, а консоль в фоновом режиме перехватывает структуру запроса и все актуальные значения параметров прямо «на лету» перед отправкой на сервер. После этого запрос со всеми данными можно открыть в консоли для детального анализа.

Пример программного извлечения параметров (для автоматизации)

Если вам необходимо написать свою микро-обработку для переноса данных из файла настроек, можно использовать следующий фрагмент кода для чтения параметров из XML:


Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ПутьКФайлуНастроек);
Настройки = СериализаторXDTO.ПрочитатьXML(Чтение, Тип("НастройкиКомпоновкиДанных"));
Для Каждого ЗначениеПараметра Из Настройки.ПараметрыДанных.Элементы Цикл
    Если ЗначениеПараметра.Использование Тогда
        Имя = Строка(ЗначениеПараметра.Параметр);
        Значение = ЗначениеПараметра.Значение;
        // Здесь можно добавить логику заполнения таблицы параметров консоли
    КонецЕсли;
КонецЦикла;

Важный момент: при использовании СериализаторXDTO система автоматически преобразует строковые представления из XML в типизированные объекты 1С (Ссылки, Числа, Даты), что позволяет корректно использовать их в дальнейшем при выполнении запроса в консоли.

Резюме

Мы рассмотрели несколько способов решения задачи. Для разовых правок лучше всего подходит Консоль СКД из состава Инструментов Разработчика, так как она обеспечивает бесшовную передачу параметров в один клик. В случае возникновения ошибок COM-объектов рекомендуется переключиться на 32-битный клиент или использовать версии инструментов на управляемых формах, которые более стабильны в современных средах.

← На главную