Подсистема "COMExchange": ускорение выгрузки запросов ADO или «игра с огнём».

11.03.13

Разработка - Запросы

Описана поддержка подсистемой "COMExchange"работы с ВК GameWhithFire.dll и в частности ускоренная выгрузка результата запроса ADO средствами ВК.
А лисички, две сестрички,
Разыскали где-то спички.
К 1С-ке подошли,
1С-ку подожгди.
К.Чуковстий, как оно было
на самом деле...

 

Описание проблемы: 

Узким местом работы с ADO в 1С: Предприятие является преобразование результата запроса (объекта ADODB.RecordSet)
к удобному для работы в коде 1С типу (объекту «ТаблицаЗначений» или «ДеревоЗначений»).
Выгрузку результата запроса приходится делать в двойном цикле по полям и строкам объекта ADODB.RecordSet,
что для выборки данных с большим числом строк и полей может занимать  значительное время.

Одним из вариантов решения проблемы является использование для выгрузки результата запроса внешних компонент.

Для этой цели в подсистеме «COMExchange», начиная с версии 8.1.1.2, реализована поддержка работы
с внешней компонентой GameWhithFire.dll (© Дмитрий Ощепков, aka DmitrO). 
О версии подсистемы можно узнать из справочной информации к подсистеме или к консоли запросов в её комплекте (Рис.3). 

Внешняя компонента распространяется свободно в комплекте поставки
инструментального пакета «Enterprise Integrator» (для использования ВК не требуется приобретение лицензий пакета).

ВК GameWhithFire.dll поставляет объект "AddIn.ADOUtils", который имеет методы, позволяющие
получить объекты «ТаблицаЗначений» и «РезультатЗапроса», заполненные  по данным  объекта ADODB.RecordSet
При этом могут выполняться дополнительные действия: типизация колонок по соответствию типов ADO и 1С,
преобразование значений типа BINARY к строковому 16-тиричному представлению и т.п. (смотри подробности в документации).  


Для
работы с ВК GameWhithFire.dll в подсистеме сделаны следующие изменения:

     1. В общий модуль «COMОбмен» добавлены функции возвращающие объекты ВК "AddIn.ADOUtils" и "AddIn.V8Storage",
         при необходимости подключая ВК;
     2. Добавлены новые опции выполнения запросов ADO, передаваемые функциям ВыполнитьЗапросADO() и ВыполнитьЗапросADO_ТЗ():
         -   GWFUnload - (Булево) выгружать объект 'ADODB.RecordSet' (результат запроса ADO) в таблицу значений с помощью средств ВК;
         -   GWFConvert - (Булево) преобразовывать объект 'ADODB.RecordSet' в объект 'РезультатЗапроса' (1С) с помощью средств ВК;
         -   GWFYearOffset - используемое смещение дат при выгрузке и преобразовании результата запроса ADO;
     3. В форме опций ADO добавлены элементы управления для доступа к новым опциям (Рис.1, Рис.2);

По умолчанию новые опции запросов ADO не используются. Если передана одна из опций запроса GWFUnload или GWFConvert и
не удаётся подключить ВК, функция выполняющая запрос возвращает признак ошибки.

Как видно на Рис.1  и Рис.2  при использовании ВК выгрузка результата запроса ADO в таблицу значений ускоряется на порядок (раз в 10). 
Пример взят из файла в архиве поставки .\COMExchange-8x\Sampels\!ЗагрузкаКурсов\!ЗагрузкаКурсовЦБ_USD.selx.
Ещё значительнее эффект, если выполняется преобразование значений типа BINARY к 16-тиричному представлению (в несколько десятков раз). 

Для того, что бы воспроизвести результат описанного выше примера, потребуется установить подсистему «COMExchange»,
выполнить автоматическое заполнение плана обмена «Обмен данными COM» и открыть в обработке указанный выше файл.


Замечания о типизации колонок результата запроса ADO при выгрузке в таблицу значений:

Поля объекта ADODB.RecordSet, имеющие типы FLOAT или DOUBLE, при выгрузке средствами ВК не типизируются,
поскольку соответствующие числовые типы платформой 1С не поддерживаются
Это может приводить к определённым проблемам, если полученную таблицу значений требуется
загрузить во временную таблицу для обработки в запросе 1С.

В этой связи при выгрузке результата запроса ADO средствами самой подсистемы «COMExchange» указанные выше типы ADO
типизируются «взвешенно-максимальным» в 1С числовым типом Число(32,10) с возможной потерей точности значений.

 

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 руб.

02.09.2020    119930    656    389    

701

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    5620    KawaNoNeko    23    

23

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    1964    2    Yashazz    0    

29

Запрос 1С copilot

Инструментарий разработчика Запросы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

5 стартмани

15.01.2024    6091    29    mkalimulin    23    

48

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    1714    vandalsvq    7    

28

Объектная модель запроса "Схема запроса" 2

Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5285    user1923546    26    

43

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    15958    skovpin_sa    14    

98
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. yuraos 991 11.03.13 06:09 Сейчас в теме
Всем доброго времени суток!
--
В статье как-то ускользнул вопрос о том,
как устанавливается ВК GameWhithFire.dll.
--
Устанавливать ее можно по разному.
Самый простой способ -
просто инсталлировать инструментальный пакет "Enterprise Integrator"
в комплекте с которым ВК поставляется.
2. DoctorRoza 21.08.13 08:34 Сейчас в теме
Отмечусь, чтобы запомнить. С содержанием нужно ознакомиться по ближе.
3. An@st@si 05.09.14 14:17 Сейчас в теме
А лисички, две сестрички,
Разыскали где-то спички.
К 1С-ке подошли,
1С-ку подожгли.

К.Чуковстий,
так оно было
на самом деле...

Интересная формулировка)

Отмечусь... попозже надо почитать...

Спасибо интересно)
Оставьте свое сообщение