Платформа минимум 8.3.6.1977 будет работать на платформах 8.2 если заменить функцию СтрРазделить на свою.
Обработка тестировалась на платформе 8.3.10.2580.
Конфигурация не имеет значения.
Примеры использования обработки:
1. Инициализировали данные подключения и написали запрос.
ЗапросSQL = Обработки.ЗапросSQL.Создать();
ЗапросSQL.Сервер = "server";
ЗапросSQL.База = "base";
ЗапросSQL.Пользователь = "user";
ЗапросSQL.Пароль = "PSW";
ЗапросSQL.Текст =
"SELECT
|Контры.INN ИНН,
|COUNT(DISTINCT Контры.Firma) Организация,
|MAX(Контры.Date) Дата
| FROM IS_Customers_MeetCredit2 Контры
|GROUP BY Контры.INN";
2. А затем выполняем запрос и обрабатываем результаты.
2.0 Реквизит обработки "Выполнено" является индикатором выполнения запроса.
2.1 Результат в выборку - функция Выбрать() которая возвращает выборку по полям запроса.
ВыборкаSQL = ЗапросSQL.Выбрать(); //элемент выборки ВыборкаSQL
Пока ЗапросSQL.СледующийИзВыборки() Цикл
Сообщить("Результат: " + ВыборкаSQL.Дата + ВыборкаSQL.ИНН + " - " + ВыборкаSQL.Организация);
КонецЦикла;
//Функци выборки ВыборкаSQL = ЗапросSQL.Выбрать(); элемент выборки ВыборкаSQL
//ЗапросSQL.СледующийИзВыборки();
//ЗапросSQL.ВНачалоВыборки();
//ЗапросSQL.ВКонецВыборки();
//ЗапросSQL.ПреведущийИзВыборки();
//ЗапросSQL.УстановитьНаПазициюВВыборки(3);
2.2 Результат в таблицу - функция Выгрузить(ТаблицаКоторуюЗаполнитьРезультатом = Неопределено) которая возвращает таблицу значений .
Если в параметр "ТаблицаКоторуюЗаполнитьРезультатом" передать таблицу значений, то она заполниться в соответствии, колонка т.з. - поле запроса.
Таблица = ЗапросSQL.Выгрузить();
Если ЗапросSQL.Выполнено Тогда // Или Таблица <> Неопределено
Таблица.ВыбратьСтроку();
КонецЕсли;
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("ИНН");
ЗапросSQL.Выгрузить(Таблица);
Таблица.ВыбратьСтроку();
2.3 Результат в запрос (самая полезная имхо) - функция ЗапросSQL.ВыгрузитьВЗапрос(ИмяВременнойТаблици,Запрос1с = Неопределено) которая возвращает запрос 1с и временную таблицу в нем.
Если передать в параметр "Запрос1с" передать запрос 1с то временная таблица добавиться в этот запрос.
Запрос1С = ЗапросSQL.ВыгрузитьВЗапрос("ИмяВременнойТаблици");
//Подключаем другую базу
ЗапросSQL.Сервер = "server2";
ЗапросSQL.База = "est1s";
ЗапросSQL.Пользователь = "est1s";
ЗапросSQL.Пароль = "est1s";
ЗапросSQL.Текст =
"SELECT
| sdate.stend,
| sdate.state
|FROM sdate AS sdate";
ЗапросSQL.ВыгрузитьВЗапрос("ИмяВременнойТаблици2",Запрос1С);
Запрос1С.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка,
| ИмяВременнойТаблици2.stend
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИмяВременнойТаблици КАК ИмяВременнойТаблици
| ПО (ИмяВременнойТаблици.ИНН = Контрагенты.ИНН)
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИмяВременнойТаблици2 КАК ИмяВременнойТаблици2
| ПО (ИмяВременнойТаблици2.stend = ИмяВременнойТаблици.Организация)";
Выборка = Запрос1С.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить("Результат: " + Выборка.Ссылка + " : " + Выборка.stend);
КонецЦикла;
2.3 Классика жанра - функция Получить()
Результат = ЗапросSQL.Получить();
Пока Не Результат.EOF Цикл
Сообщить("Результат: " + Результат.Fields.Item("ИНН").Value);
Результат.MoveNext();
КонецЦикла;
3. И еще дополнительно можно:
//---------------------------- Файлы -------------------------------------------
ЗапросSQL.Текст = "INSERT INTO sdate (stend,state) VALUES (1,?)" ;
ЗапросSQL.УстновитьФайлКакПараметр("D:\bender_iz_futuramy_1600x1200_4997.jpg");
ЗапросSQL.Получить();
Если ЗапросSQL.Выполнено Тогда
ЗапросSQL.Текст = "SELECT TOP 1 state FROM sdate";
ЗапросSQL.ВыгрузитьВФайл("state","D:\test.jpg");
КонецЕсли;
//---------------------------- ActiveDirectory -------------------------------------------
ЗапросSQL.НастройкаКакActiveDirectoryProvider();
ЗапросSQL.Текст = "SELECT Name,ADSPath,SAMAccountName FROM 'LDAP://DC=domen,DC=ru' WHERE Name='*/*'";
ВыборкаSQL = ЗапросSQL.Выбрать();
Пока ЗапросSQL.СледующийИзВыборки() Цикл
Сообщить("Результат: " + ВыборкаSQL.Name + ВыборкаSQL.ADSPath + " - " + ВыборкаSQL.SAMAccountName);
КонецЦикла;
//---------------------------- Всякое - Работают только с Выгрузить(); Пост обработка таблицы. -------------------------------------------
ЗапросSQL.ФункцияЗамены.Вставить("ИНН","СтрЗаменить(&values&,""0"",""*"")");
ЗапросSQL.ФункцияЗамены.Вставить("Организация","&values& * -1");
ЗапросSQL.Выгрузить().ВыбратьСтроку();
ЗапросSQL.Квалификаторы.Вставить("ИНН",Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(2,ДопустимаяДлина.Фиксированная)));
ЗапросSQL.Выгрузить().ВыбратьСтроку();
ЗапросSQL.ПредставлениеКолонки.Вставить("ИНН","Это ИНН");
ЗапросSQL.Выгрузить().ВыбратьСтроку();
p.s. Добавил кнопку создания на sql сервере БД соответствия данных 1с и sql. Связь object_id - ключ
Проверено на следующих конфигурациях и релизах:
- 1С:Комплексная автоматизация 2, релизы 3.1.22.80