Как запустить и использовать консоль СКД в режиме обычных форм на платформе 1С:Предприятие?

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

Разработка и отладка отчетов на базе Системы компоновки данных (СКД) в устаревших или кастомизированных конфигурациях на обычных формах (например, Управление торговым предприятием, Управление производственным предприятием 1.3 или Комплексная автоматизация 1.1) часто превращается в серьезную проблему для разработчика. Стандартная обработка «Консоль компоновки данных», поставляемая фирмой «1С» на дисках ИТС, разработана исключительно под управляемый интерфейс. При попытке запустить систему в режиме управляемого приложения для работы с ней разработчики регулярно сталкиваются с фатальными ошибками инициализации сеанса.

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

Выясним причину проблемы: почему стандартная консоль СКД не открывается?

Для начала проанализируем техническую сторону вопроса. Официальная «Консоль системы компоновки данных» спроектирована с использованием управляемых форм. Для корректной отрисовки интерфейса и работы встроенного конструктора запросов и схем платформе требуется режим «Толстый клиент (управляемое приложение)».

Попытка принудительно запустить старую конфигурацию в режиме управляемого приложения через параметры запуска или конфигуратор обычно приводит к аварийному завершению работы системы по следующим причинам:

  1. Ошибки в глобальных модулях: В коде МодульУправляемогоПриложения отсутствует необходимая инициализация параметров сеанса, либо код написан некорректно для работы в управляемом режиме.
  2. Неразделяемый код на клиенте и сервере: Общие модули конфигурации, которые вызываются при старте системы, содержат директивы компиляции или вызовы процедур, предназначенных только для обычного приложения (например, обращение к глобальным переменным интерфейса, модальным окнам или функциям работы с торговым оборудованием).
  3. Отсутствие поддержки расширений: Если вы работаете на платформе 1С:Предприятие 8.2, вам недоступна технология расширений конфигурации (.cfe), которая появилась только в версиях 8.3.6/8.3.8. Соответственно, внедрить управляемые инструменты в качестве расширения технически невозможно.

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

Решение 1. Использование профессионального инструмента «ИР Портативный»

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

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

Выполним следующие шаги для запуска:

  1. Скачайте архив с портативным набором инструментов разработчика (основной файл пакета — ирПортативный.epf).
  2. Запустите вашу информационную базу (например, УТП) в обычном режиме толстого клиента.
  3. Через меню Файл -> Открыть выберите файл ирПортативный.epf.
  4. В открывшейся панели инструментов найдите и запустите встроенную «Консоль компоновки данных».

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

Решение 2. Обходной путь через экспорт XML и «чистую» базу данных

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

Рассмотрим этот алгоритм по шагам:

  1. Откройте конфигуратор вашей рабочей базы на обычных формах. Найдите нужный отчет, откройте его схему компоновки данных и сохраните ее в XML-файл на диск (кнопка «Сохранить схему в файл»).
  2. Создайте на локальном компьютере пустую («чистую») информационную базу на базе любой современной конфигурации или вообще без конфигурации. Главное условие — запустить эту чистую базу в режиме «Толстый клиент (управляемое приложение)».
  3. В этой пустой базе откройте стандартную управляемую «Консоль СКД» от фирмы «1С».
  4. Загрузите в консоль ранее сохраненный XML-файл схемы.
  5. Выполните настройку параметров, структуры, отборов и полей. Поскольку база пустая, вы не сможете получить реальные данные из таблиц исходной базы, однако вы сможете полностью настроить саму схему и проверить синтаксическую корректность структуры. Если вам требуется отладка на реальных данных, вы можете эмулировать простейшие таблицы или перенести часть тестовых данных через XML.
  6. После завершения редактирования выгрузите измененную схему обратно в XML-файл.
  7. В конфигураторе исходной рабочей базы загрузите измененную схему назад в отчет.

Для автоматизации процесса выгрузки и загрузки схем компоновки данных вы можете использовать следующий программный код в простой внешней обработке:


// Пример программного экспорта схемы компоновки данных в XML-файл
СхемаКомпоновкиДанных = Отчеты.МойОтчетУТП.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\skd_templates\MySchema.xml", "UTF-8");
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, СхемаКомпоновкиДанных, "dataCompositionSchema", "http://v8.1c.ru/8.1/data-composition-system/schema");
ЗаписьXML.Закрыть();

Сообщить("Схема успешно экспортирована для настройки!");

После редактирования в чистой базе вы можете загрузить схему обратно следующим образом:


// Пример программного импорта измененной схемы из XML-файла
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл("C:\skd_templates\MySchema.xml");
НоваяСхема = СериализаторXDTO.ПрочитатьXML(ЧтениеXML, Тип("СхемаКомпоновкиДанных"));
ЧтениеXML.Закрыть();

// Запись измененной схемы в отчет или использование в макете
// (требуются права на изменение метаданных, если схема импортируется напрямую в конфигурацию)

Решение 3. Использование сторонних легких консолей СКД на обычных формах

На профильных ресурсах для разработчиков (таких как Инфостарт) доступно множество альтернативных консолей СКД, написанных энтузиастами непосредственно под **обычные формы**.

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

Такие консоли не требуют тяжелых библиотек, запускаются мгновенно как внешние обработки в УТП 8.2 и отлично подходят для быстрого анализа выполнения запросов СКД на реальных данных прямо в рабочей базе. Для детального анализа промежуточных данных компоновки также подойдёт инструмент для отладки отчетов на СКД.

Как временно обойти ошибки запуска управляемого приложения для отладки?

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

Откройте конфигуратор, перейдите в свойства корневого узла конфигурации и откройте Модуль управляемого приложения. Зачастую там присутствуют вызовы процедур, которые вызывают падение системы. Оберните проблемные участки кода в инструкции препроцессора:


Процедура ПриНачалеРаботыСистемы()
    
    #Если Клиент И Не ТонкийКлиент Тогда
        // Этот блок кода выполнится только в обычном толстом клиенте
        // Инициализируем обычные формы и интерфейс
        ИнициализироватьОбычныйИнтерфейс();
    #КонецЕсли

    #Если УправляемоеПриложение Тогда
        // Здесь размещаем код инициализации только для управляемого режима,
        // исключая вызовы модулей, привязанных к обычным формам
        ПараметрыСеанса.ТекущийПользователь = Справочники.Пользователи.НайтиПоРеквизиту("ИмяВхода", ИмяПользователя());
    #КонецЕсли

КонецПроцедуры

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

← На главную