Сравнение средств выполнения запросов

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

Автор: toypaul

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

Во-первых, нужно знать, что средства для выполнения SQL запросов делятся на несколько категорий по способу работы с ними из среды 1С:

  • Встроенные средства
  • Внешние библиотеки
  • Обычные библиотеки

Встроенные средства - это средства, использующие технологию OLE. К таким средствам относятся компоненты доступа к SQL Server - ADO, SQL-DMO и другие. Возможность работы с данными средствами появляется после установки клиентской части SQL Server (или MDAC) на рабочую станцию. В этом случае не требуется каких-либо действий по инициализации данных средств для работы в 1С. Создание объектов для выполнения запросов производится с помощью функции 1С .

Внешние библиотеки - это специальные DLL, загружаемые для работы в 1С с помощью функции . Например, это внешние компоненты 1С++ или Rainbow (Радуга).

Обычные библиотеки - это обычные DLL операционной системы Windows. Например, таковой является библиотека ToySQL. Для использования данных средств используются специальные загрузчики, которые загружают их в пространство приложения 1С.

Во-вторых, одним из сложных моментов при написании прямых запросов является определение связей между физическими названиями полей в таблицах базы и именами полей в конфигурации, а также определение взаимосвязей таблиц. Для решения данной задачи в некоторые средства была включена функция по преобразованию запросов составленных на метаязыке подобном SQL в прямой SQL запрос, а также обратная функция - преобразование результатов запросов в объекты 1С. Поэтому средства для выполнения SQL запросов можно разделить еще на две категории: с возможностью выполнения метазапросов и без данной возможности. Например, библиотеки 1С++ и библиотека ToySQL предоставляют такую возможность, в то время как ADO не предоставляет такой возможности.

Сразу хочу заметить, что наиболее бедным по функционалу являются средства, которые не предоставляют возможности выполнения метазапросов. Поэтому сравнивать их со средствами, которые предоставляют такие возможности, не имеет смысла. Можно их сравнить по ограниченному набору возможностей. В следующей таблице я приведу такое сравнение библиотеки 1С++ и технологии ADO.

Пункт сравнения

1С++

ADO

Выполнение обычных SQL запросов

+

+

Выполнение метазапросов

+

-

Работа в монопольном режиме

+

-

Выгрузка результата запроса в таблицу значений

+

-

Платное средство

-

-

Одним из самых серьезных ограничений ADO является невозможность работы в монопольном режиме. Пожалуй, одним из главных плюсов ADO является его принадлежность к встроенным средствам и его бесплатность - то есть никакого дополнительного ПО при этом покупать и устанавливать не нужно. По этой причине многие выбирают именно ADO. В каком случае можно выбрать ADO? Вы не хотите устанавливать дополнительное ПО (в том числе платное), вам достаточно выполнять только простые SQL запросы, вы не будете выполнять запросы в монопольном режиме. В остальных случаях ADO вам не подходит и вам нужно выбрать другое средство.

Далее я буду рассматривать библиотеки 1С++ и библиотеку ToySQL. Сразу хочется заметить, что в 1С++ и в ToySQL используется один и тот же для выполнения запросов. В свое время соответствующий код из библиотеки ToySQL был включен в 1С++. Поэтому по скорости выполнения запросов данные средства примерно одинаковы.

Сравнивать данные библиотеки я буду по возможностям метазапросов и по дополнительному функционалу. Хочется отметить, что библиотека 1С++ в свое время изначально ориентировалась на работу с ООП. Также важным фактором является то, что это проект с отрытым исходным кодом. 1С++ является бесплатной библиотекой. Библиотека ToySQL изначально создавалась для работы с SQL запросами. Поэтому весь дополнительный функционал в ней ориентирован на работу с SQL запросами. ToySQL является платной.

Если сравнивать возможности метазапросов, то здесь в первую очередь важным является поддержка как можно большего набора объектов 1С, с которыми можно работать в запросах. Также важным показателем является то, насколько близок функционал метазапросов по возможностям к запросам 1С. Например, есть ли возможность работы с периодическими реквизитами, вывод по иерархии, итоги по группам и прочее. Далее я приведу таблицу, в которой перечисляются объекты, с которыми могут работать библиотеки и дополнительный функционал.

Пункт сравнения

ToySQL

1C++

Простые объекты: справочники, документы, журналы расчета

+

+

Периодические реквизиты

+

+

Регистры остатки и обороты

+

+

Отбор по группе справочника, списку значений

+

+

Остатки в регистрах с группировкой по периоду

+

-

Бухгалтерские итоги

+

-

Операции и проводки

+

-

Вывод справочника по иерархии

+

-

Итоги по группам

+

-

Выгрузка в таблицу значений

+

+

Выполнение запроса по таблице значений

+

+

Сохранение результат запроса в файл

+

-

Специальный объект для работы с временными таблицами

+

-

Опция в функциях

+

-

Работа в монопольном режиме

+

+

Возможность работы с DBF базой

+/-

+

Далее хотелось бы отметить дополнительный функционал каждой библиотеки. В ToySQL реализованы также следующие функции:

  • Работа со скриптами
  • Методы для наложения собственных блокировок. В том числе прилагается инструкция по реализации механизма параллельного проведения документов в 1С
  • Работа с метаданными, методы преобразования объектов в коды и обратно.
  • Обработка нажатий клавиш

В библиотеке 1С++ реализован следующий дополнительный функционал:

  • Работа с ООП - создание классов, наследование, полиморфизм.
  • Работа с интерфейсной частью 1С - работа с формой, раскраска таблиц, перехват нажатий клавиш и прочее
  • Ускорение обращение к методам объектов 1С (TurboBL)

Что выбрать? Если вы ищете, в первую очередь, бесплатный инструмент и готовы самостоятельно реализовывать недостающий функционал по работе с запросами, то ваш выбор - 1С++. Тем более, если вам нужные возможности создания собственных классов или расширение возможностей интерфейса 1С. Если же вам нужен инструмент, реализующий наиболее полно возможности стандартных запросов 1С, если вы хотите настроить параллельное проведение документов, если вы хотите воспользоваться наработками для типовых конфигураций, если для вас важная оперативная поддержка, то ваш выбор - библиотека ToySQL.

Оригинал статьи: http://1csql.ru/materials/articles/toysql/001.html

Начать дискуссию