Собственно сабж, кто работал, кто сталкивался...
Есть база MS SQL, надо к ней подключиться и запросом выбрать данные для обработки в 1С. Кто с этим часто работает, можете пару советов/сохраненных ссылок кинуть, а то толкового ничего пока не нашел... Это УТ 11.1, поэтому в принципе 8.3, древнее не обязательно)
Благодарю)
---
ToTMoM,

```1c
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    // Вставить содержимое обработчика.
    Соединение = Новый COMОбъект("ADODB.Connection");
    Драйвер="{SQL Server}";//
    Сервер="ip";//"DRIVER={MySQL ODBC 3.51 Driver};SERVER=ip;UID=УИД;pwd=пароль;DATABASE=имяБД;TABLE=имяТаблицы;"
    Юзер="Пользователь";
    Пароль=";
    БД="ИмяБД";
    Таблица="ИмяТаблицы1";
    ТаблицаРасширенная="ИмяТаблицы2";
    //Новый Драйвер важно чтобы был на 32-битах
    ConnectionString="DRIVER={MySQL ODBC 3.51 Driver};SERVER=ip;UID=УИД;pwd=пароль;DATABASE=имяБД;TABLE=имяТаблицы;"; //"DRIVER="+Драйвер+";SERVER="+Сервер+";UID="+Юзер+";pwd="+Пароль+";DATABASE="+БД+";";//
    Соединение.CursorLocation=3;

    НаборЗаписей=Новый COMОбъект("ADODB.Recordset");
    Если Соединение.state=0 Тогда
    Соединение.open(ConnectionString);
    Сообщить("Подключились");
    КонецЕсли;

    СтандартнаяОбработка = Ложь; // отключаем стандартный вывод отчета - будем выводить программно
    // Получаем настрокий отчета, в т.ч. период
    Настройки = КомпоновщикНастроек.ПолучитьНастройки(); // Получаем настройки отчета

    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; // Создаем данные расшифровки
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; // Создаем компоновщик макета
    // Инициализируем макет компоновки используя схему компоновки данных
    // и созданные ранее настройки и данные расшифровки
    //СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    //cdr
    СхемаКомпоновкиДанных = ПолучитьМакет("cdr");
    //cel
    //СхемаКомпоновкиДанных = ПолучитьМакет("cel");
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

    НачалоПериода=ПолучитьДатуMySQL(МакетКомпоновки.ЗначенияПараметров.НачалоПериода.Значение);
    КонецПериода=ПолучитьДатуMySQL(МакетКомпоновки.ЗначенияПараметров.КонецПериода.Значение);
    //ТекстЗапроса="SEL ECT calldate,src,dst,disposition,billsec FR OM "+Таблица+" WHERE calldate BETWEEN '"+НачалоПериода+"' AND '"+КонецПериода+"'";
    ТекстЗапроса="SEL ECT * FR OM "+Таблица+" WHERE calldate BETWEEN '"+НачалоПериода+"' AND '"+КонецПериода+"'";
    // 0 "calldate" 01.09.2015 7:45:13
    // 1 "clid" "211"
    // 2 "src" "211"
    // 3 "dst" "980174275424"
    // 4 "dcontext" "from-internal"
    // 5 "channel" "SIP/211-00000adc"
    // 6 "dstchannel" "DAHDI/i1/980174275424-162"
    // 7 "lastapp" "Busy"
    // 8 "lastdata" "20"
    // 9 "duration" 3
    //10 "billsec" 0
    //11 "disposition" "BUSY"
    //12 "amaflags" 3
    //13 "accountcode" "
    //14 "uniqueid" "1441082713.4875"
    //15 "userfield" "
    //16 "did" "
    //17 "recordingfile" "
    //18 "cnum" "211"
    //19 "cnam" "Akulova"
    //20 "outbound_cnum" "0173301505"
    //21 "outbound_cnam" "
    //22 "dst_cnam" "

    //ТекстЗапросаРасширенный="SEL ECT * FR OM "+ТаблицаРасширенная+" WH ERE eventtime BETWEEN '"+НачалоПериода+"' AND '"+КонецПериода+"'";
    // Name Value
    // 0 "id" 1
    // 1 "eventtype" "CHAN_START"
    // 2 "eventtime" 05.09.2015 17:35:39
    // 3 "cid_name" "
    // 4 "cid_num" "80336557227"
    // 5 "cid_ani" "
    // 6 "cid_rdnis" "
    // 7 "cid_dnid" "
    // 8 "exten" "607"
    // 9 "context" "fr om-internal"
    //10 "channame" "DAHDI/i1/80336557227-1"
    //11 "src" "
    //12 "dst" "
    //13 "channel" "
    //14 "dstchannel" "
    //15 "appname" "
    //16 "appdata" "
    //17 "amaflags" 3
    //18 "accountcode" "
    //19 "uniqueid" "1441463739.0"
    //20 "linkedid" "1441463739.0"
    //21 "peer" "
    //22 "userdeftype" "
    //23 "eventextra" "
    //24 "userfield" "

    НаборЗаписей.ActiveConnection=Соединение;
    НаборЗаписей.Open(ТекстЗапроса);
    //НаборЗаписей.Open(ТекстЗапросаРасширенный);

    ТЗЛогSQL=Новый ТаблицаЗначений;
    ТЗЛогSQL.Колонки.Добавить("ДатаЗвонка");
    ТЗЛогSQL.Колонки.Добавить("Источник");
    ТЗЛогSQL.Колонки.Добавить("Приемник");
    ТЗЛогSQL.Колонки.Добавить("ИсточникОригинальный");
    ТЗЛогSQL.Колонки.Добавить("ПриемникОригинальный");
    ТЗЛогSQL.Колонки.Добавить("РезультатОтвечен");
    ТЗЛогSQL.Колонки.Добавить("Результат");
    ТЗЛогSQL.Колонки.Добавить("РезультатИтог");
    ТЗЛогSQL.Колонки.Добавить("КоличествоЗвонков");
    ТЗЛогSQL.Колонки.Добавить("СреднееВремяЗвонка");
    ТЗЛогSQL.Колонки.Добавить("Время");
    ТЗЛогSQL.Колонки.Добавить("ОбъектИсточник");
    ТЗЛогSQL.Колонки.Добавить("ОбъектПриемник");
    ТЗЛогSQL.Колонки.Добавить("ПодразделениеИсточник");
    ТЗЛогSQL.Колонки.Добавить("ПодразделениеПриемник");
    ТЗЛогSQL.Колонки.Добавить("ВидИсточник");
    ТЗЛогSQL.Колонки.Добавить("ВидПриемник");
    ТЗЛогSQL.Колонки.Добавить("КонтрагентИсточник");
    ТЗЛогSQL.Колонки.Добавить("КонтрагентПриемник");
    ТЗЛогSQL.Колонки.Добавить("ДлинаИсточник");
    ТЗЛогSQL.Колонки.Добавить("ДлинаПриемник");

    //cdr
    ТЗЛогSQL.Колонки.Добавить("clid");
    ТЗЛогSQL.Колонки.Добавить("dcontext");
    ТЗЛогSQL.Колонки.Добавить("channel");
    ТЗЛогSQL.Колонки.Добавить("dstchannel");
    ТЗЛогSQL.Колонки.Добавить("lastapp");
    ТЗЛогSQL.Колонки.Добавить("lastdata");
    ТЗЛогSQL.Колонки.Добавить("duration");
    ТЗЛогSQL.Колонки.Добавить("amaflags");
    ТЗЛогSQL.Колонки.Добавить("accountcode");
    ТЗЛогSQL.Колонки.Добавить("uniqueid");
    ТЗЛогSQL.Колонки.Добавить("userfield");
    ТЗЛогSQL.Колонки.Добавить("did");
    ТЗЛогSQL.Колонки.Добавить("recordingfile");
    ТЗЛогSQL.Колонки.Добавить("cnum");
    ТЗЛогSQL.Колонки.Добавить("cnam");
    ТЗЛогSQL.Колонки.Добавить("outbound_cnum");
    ТЗЛогSQL.Колонки.Добавить("outbound_cnam");
    ТЗЛогSQL.Колонки.Добавить("dst_cnam");

    //cel
    //ТЗЛогSQL.Колонки.Добавить("id");
    //ТЗЛогSQL.Колонки.Добавить("eventtype");
    //ТЗЛогSQL.Колонки.Добавить("cid_name");
    //ТЗЛогSQL.Колонки.Добавить("cid_ani");
    //ТЗЛогSQL.Колонки.Добавить("cid_rdnis");
    //ТЗЛогSQL.Колонки.Добавить("cid_dnid");
    //ТЗЛогSQL.Колонки.Добавить("context");
    //ТЗЛогSQL.Колонки.Добавить("channame");
    //ТЗЛогSQL.Колонки.Добавить("src");
    //ТЗЛогSQL.Колонки.Добавить("dst");
    //ТЗЛогSQL.Колонки.Добавить("channel");
    //ТЗЛогSQL.Колонки.Добавить("did");
    //ТЗЛогSQL.Колонки.Добавить("dstchannel");
    //ТЗЛогSQL.Колонки.Добавить("appname");
    //ТЗЛогSQL.Колонки.Добавить("appdata");
    //ТЗЛогSQL.Колонки.Добавить("amaflags");
    //ТЗЛогSQL.Колонки.Добавить("accountcode");
    //ТЗЛогSQL.Колонки.Добавить("uniqueid");
    //ТЗЛогSQL.Колонки.Добавить("linkedid");
    //ТЗЛогSQL.Колонки.Добавить("peer");
    //ТЗЛогSQL.Колонки.Добавить("userdeftype");
    //ТЗЛогSQL.Колонки.Добавить("eventextra");
    //ТЗЛогSQL.Колонки.Добавить("userfield");

    ТЗНомеров=Новый ТаблицаЗначений;
    ТЗНомеров.Колонки.Добавить("НомерТелефона");
    Пока НаборЗаписей.EOF() = 0 do
    Стр=ТЗЛогSQL.Добавить();
    //cdr
    Стр.ДатаЗвонка = НаборЗаписей.Fields(0).Value;
    Стр.Источник = РазобратьНомер(НаборЗаписей.Fields(2).Value);
    Стр.Приемник = РазобратьНомер(НаборЗаписей.Fields(3).Value);
    Стр.ИсточникОригинальный = НаборЗаписей.Fields(2).Value;
    Стр.ПриемникОригинальный = НаборЗаписей.Fields(3).Value;
    Стр.Результат = НаборЗаписей.Fields(11).Value;
    Стр.РезультатОтвечен = ?(Стр.Результат = "ANSWERED",1,0);
    Стр.КоличествоЗвонков = 1;
    Стр.СреднееВремяЗвонка = НаборЗаписей.Fields(10).Value;
    Стр.Время = НаборЗаписей.Fields(10).Value;
    Стр.ДлинаИсточник=СтрДлина(Стр.Источник);
    Стр.ДлинаПриемник=СтрДлина(Стр.Приемник);
    Стр.clid = НаборЗаписей.Fields(1).Value;
    Стр.dcontext = НаборЗаписей.Fields(4).Value;
    Стр.channel = НаборЗаписей.Fields(5).Value;
    Стр.dstchannel = НаборЗаписей.Fields(6).Value;
    Стр.lastapp = НаборЗаписей.Fields(7).Value;
    Стр.lastdata = НаборЗаписей.Fields(8).Value;
    Стр.duration = НаборЗаписей.Fields(9).Value;
    Стр.amaflags = НаборЗаписей.Fields(12).Value;
    Стр.accountcode = НаборЗаписей.Fields(13).Value;
    Стр.uniqueid = НаборЗаписей.Fields(14).Value;
    Стр.userfield = НаборЗаписей.Fields(15).Value;
    Стр.did = НаборЗаписей.Fields(16).Value;
    Стр.recordingfile = НаборЗаписей.Fields(17).Value;
    Стр.cnum = НаборЗаписей.Fields(18).Value;
    Стр.cnam = НаборЗаписей.Fields(19).Value;
    Стр.outbound_cnum = НаборЗаписей.Fields(20).Value;
    Стр.outbound_cnam = НаборЗаписей.Fields(21).Value;
    Стр.dst_cnam = НаборЗаписей.Fields(22).Value;

    //cel
    //Стр.ДатаЗвонка = НаборЗаписей.Fields(2).Value;
    //Стр.Источник = РазобратьНомер(НаборЗаписей.Fields(4).Value);
    //Стр.Приемник = РазобратьНомер(НаборЗаписей.Fields(8).Value);
    //Стр.ИсточникОригинальный = НаборЗаписей.Fields(4).Value;
    //Стр.ПриемникОригинальный = НаборЗаписей.Fields(8).Value;
    //Стр.Результат = НаборЗаписей.Fields(1).Value;
    ////Стр.РезультатОтвечен = ?(Стр.Результат = "ANSWERED",1,0);
    //Стр.КоличествоЗвонков = 1;
    ////Стр.СреднееВремяЗвонка = НаборЗаписей.Fields(10).Value;
    ////Стр.Время = НаборЗаписей.Fields(10).Value;
    //Стр.ДлинаИсточник=СтрДлина(Стр.Источник);
    //Стр.ДлинаПриемник=СтрДлина(Стр.Приемник);
    //Стр.id = НаборЗаписей.Fields(0).Value;
    //Стр.cid_name = НаборЗаписей.Fields(3).Value;
    //Стр.cid_ani = НаборЗаписей.Fields(5).Value;
    //Стр.cid_rdnis = НаборЗаписей.Fields(6).Value;
    //Стр.cid_dnid = НаборЗаписей.Fields(7).Value;
    //Стр.context = НаборЗаписей.Fields(9).Value;
    //Стр.channame = НаборЗаписей.Fields(10).Value;
    //Стр.src = НаборЗаписей.Fields(11).Value;
    //Стр.dst = НаборЗаписей.Fields(12).Value;
    //Стр.channel = НаборЗаписей.Fields(13).Value;
    //Стр.dstchannel = НаборЗаписей.Fields(14).Value;
    //Стр.appname = НаборЗаписей.Fields(15).Value;
    //Стр.appdata = НаборЗаписей.Fields(16).Value;
    //Стр.amaflags = НаборЗаписей.Fields(17).Value;
    //Стр.accountcode = НаборЗаписей.Fields(18).Value;
    //Стр.uniqueid = НаборЗаписей.Fields(19).Value;
    //Стр.linkedid = НаборЗаписей.Fields(20).Value;
    //Стр.peer = НаборЗаписей.Fields(21).Value;
    //Стр.userdeftype = НаборЗаписей.Fields(22).Value;
    //Стр.eventextra = НаборЗаписей.Fields(23).Value;
    //Стр.userfield = НаборЗаписей.Fields(24).Value;

    СтрТЗНомеров=ТЗНомеров.Добавить();
    СтрТЗНомеров.НомерТелефона=Стр.Источник;
    СтрТЗНомеров=ТЗНомеров.Добавить();
    СтрТЗНомеров.НомерТелефона=Стр.Приемник;

    НаборЗаписей.MoveNext();
    КонецЦикла;
    НаборЗаписей.Close();
    Сообщить(ТЗЛогSQL.Количество());

    ТЗРезультатОтвечен = Новый ТаблицаЗначений;
    ТЗРезультатОтвечен = ТЗЛогSQL.Скопировать(,"ДатаЗвонка,ИсточникОригинальный,РезультатОтвечен");
    ТЗРезультатОтвечен.Свернуть("ДатаЗвонка,ИсточникОригинальный","РезультатОтвечен");

    ТЗНомеров.Свернуть("НомерТелефона");

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | КонтактнаяИнформация.Объект,
    | КонтактнаяИнформация.Вид,
    | КонтактнаяИнформация.ПолныйНомерТелефона,
    | КонтактнаяИнформация.Представление,
    | ВложенныйЗапрос.ПодразделениеОрганизации
    |ИЗ
    | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    | РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо КАК СотрудникФизлицо
    | ИЗ
    | РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних) КАК ВложенныйЗапрос
    | ПО КонтактнаяИнформация.Объект = ВложенныйЗапрос.СотрудникФизлицо
    |ГДЕ
    | КонтактнаяИнформация.Тип = &Тип
    | И КонтактнаяИнформация.ПолныйНомерТелефона В(&ТЗНомеров)";

    Запрос.УстановитьПараметр("ТЗНомеров", ТЗНомеров);
    Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);

    ТЗНомеров = Запрос.Выполнить().Выгрузить();

    Для Каждого Стр Из ТЗЛогSQL Цикл
    Стр.ОбъектИсточник=";
    Стр.ВидИсточник=";
    Стр.ОбъектПриемник=";
    Стр.ВидПриемник=";
    Стр.КонтрагентИсточник=";
    Стр.КонтрагентПриемник=";

    Исх=ТЗНомеров.Найти(Стр.Источник,"ПолныйНомерТелефона");
    Если Исх<>Неопределено Тогда
    Стр.ОбъектИсточник=Исх.Объект;
    Стр.ВидИсточник=Исх.Вид;
    Если ТипЗнч(Исх.Объект)=Тип("СправочникСсылка.КонтактныеЛицаКонтрагентов") Тогда
    Стр.КонтрагентИсточник=Исх.Объект.Владелец;
    ИначеЕсли ТипЗнч(Исх.Объект)=Тип("СправочникСсылка.Контрагенты") Тогда
    Стр.КонтрагентИсточник=Исх.Объект;
    ИначеЕсли ТипЗнч(Исх.Объект)=Тип("СправочникСсылка.ФизическиеЛица") Тогда
    Стр.ПодразделениеИсточник=Исх.ПодразделениеОрганизации;
    КонецЕсли;
    Стр.Источник=Исх.Представление;
    КонецЕсли;

    Исх=ТЗНомеров.Найти(Стр.Приемник,"ПолныйНомерТелефона");
    Если Исх<>Неопределено Тогда
    Стр.ОбъектПриемник=Исх.Объект;
    Стр.ВидПриемник=Исх.Вид;
    Если ТипЗнч(Исх.Объект)=Тип("СправочникСсылка.КонтактныеЛицаКонтрагентов") Тогда
    Стр.КонтрагентПриемник=Исх.Объект.Владелец;
    ИначеЕсли ТипЗнч(Исх.Объект)=Тип("СправочникСсылка.Контрагенты") Тогда
    Стр.КонтрагентПриемник=Исх.Объект;
    ИначеЕсли ТипЗнч(Исх.Объект)=Тип("СправочникСсылка.ФизическиеЛица") Тогда
    Стр.ПодразделениеПриемник=Исх.ПодразделениеОрганизации;
    КонецЕсли;
    Стр.Приемник=Исх.Представление;
    КонецЕсли;

    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("ДатаЗвонка", Стр.ДатаЗвонка);
    ПараметрыОтбора.Вставить("ИсточникОригинальный", Стр.ИсточникОригинальный);

    НайденныеСтроки = ТЗРезультатОтвечен.НайтиСтроки(ПараметрыОтбора);
    Если НайденныеСтроки <>Неопределено Тогда
    Стр.РезультатИтог = ?(НайденныеСтроки[0].РезультатОтвечен > 0,"ANSWERED","NO ANSWER");
    КонецЕсли;

    КонецЦикла;

    // Скомпонуем результат
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;// Передаем таблицу "ЖурТаб" в процессор компоновки
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, Новый Структура("ТЗЛогSQL", ТЗЛогSQL), ДанныеРасшифровки);

    ДокументРезультат.Очистить();

    // Выводим результат в табличный документ
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    ДокументРезультат.ПоказатьУровеньГруппировокСтрок(0);

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

Создаешь СКД. Затем колонки в нем сам набьешь.
В наборе данных таблица указана ТЗЛогSQL.

Суть в том, чтобы нужный драйвер стоял. По драйверу уже гуглите.
---
ToTMoM, у нас есть отчет на СКД.
Он тянет данные из внешней базы, астериск.
Суть в чем.
Ты подключаешь дрова и затем пишешь скуль запрос. Потом получаешь таблицу и через внешний источник уже ее используешь в 1С.
Если нужен код завтра могу скинуть.
но тут главное драйвер и запрос на скуле.
Если скульные запросы понимаешь и в 1С запросы легко пишешь, то проблем не будет.
---
Xershi, да, запрос на скуле дадут, не моя забота, вопрос в получении данных и обработки их в 1С. Можешь скинуть пример кода, ну что за драйвер там и т.д. :-)
Исходно у меня есть база MS (Service Desk) и скулевские запросы к ней. И мне надо к ней подключиться, выбрать данные, отобразить на форме 1С, потом изменить как-нибудь, потом при записи изменений в 1С апдейтнуть таблицы в MS-базе.
Т.е. технически вопрос: как производится поключение и выборка данных в такой ситуации, нужен реальным пример кода по факту :)
А то меня что-то это в ступор вводит, фиг пойму что делать надо :(
---
ToTMoM,

```1c
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    // Вставить содержимое обработчика.
    Соединение = Новый COMОбъект("ADODB.Connection");
    Драйвер="{SQL Server}";//
    Сервер="ip";//"DRIVER={MySQL ODBC 3.51 Driver};SERVER=ip;UID=УИД;pwd=пароль;DATABASE=имяБД;TABLE=имяТаблицы;"
    Юзер="Пользователь";
    Пароль=";
    БД="ИмяБД";
    Таблица="ИмяТаблицы1";
    ТаблицаРасширенная="ИмяТаблицы2";
    //Новый Драйвер важно чтобы был на 32-битах
    ConnectionString="DRIVER={MySQL ODBC 3.51 Driver};SERVER=ip;UID=УИД;pwd=пароль;DATABASE=имяБД;TABLE=имяТаблицы;"; //"DRIVER="+Драйвер+";SERVER="+Сервер+";UID="+Юзер+";pwd="+Пароль+";DATABASE="+БД+";";//
    Соединение.CursorLocation=3;

    НаборЗаписей=Новый COMОбъект("ADODB.Recordset");
    Если Соединение.state=0 Тогда
    Соединение.open(ConnectionString);
    Сообщить("Подключились");
    КонецЕсли;

    СтандартнаяОбработка = Ложь; // отключаем стандартный вывод отчета - будем выводить программно
    // Получаем настрокий отчета, в т.ч. период
    Настройки = КомпоновщикНастроек.ПолучитьНастройки(); // Получаем настройки отчета

    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; // Создаем данные расшифровки
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; // Создаем компоновщик макета
    // Инициализируем макет компоновки используя схему компоновки данных
    // и созданные ранее настройки и данные расшифровки
    //СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    //cdr
    СхемаКомпоновкиДанных = ПолучитьМакет("cdr");
    //cel
    //СхемаКомпоновкиДанных = ПолучитьМакет("cel");
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

    НачалоПериода=ПолучитьДатуMySQL(МакетКомпоновки.ЗначенияПараметров.НачалоПериода.Значение);
    КонецПериода=ПолучитьДатуMySQL(МакетКомпоновки.ЗначенияПараметров.КонецПериода.Значение);
    //ТекстЗапроса="SEL ECT calldate,src,dst,disposition,billsec FR OM "+Таблица+" WHERE calldate BETWEEN '"+НачалоПериода+"' AND '"+КонецПериода+"'";
    ТекстЗапроса="SEL ECT * FR OM "+Таблица+" WHERE calldate BETWEEN '"+НачалоПериода+"' AND '"+КонецПериода+"'";
    // 0 "calldate" 01.09.2015 7:45:13
    // 1 "clid" "211"
    // 2 "src" "211"
    // 3 "dst" "980174275424"
    // 4 "dcontext" "from-internal"
    // 5 "channel" "SIP/211-00000adc"
    // 6 "dstchannel" "DAHDI/i1/980174275424-162"
    // 7 "lastapp" "Busy"
    // 8 "lastdata" "20"
    // 9 "duration" 3
    //10 "billsec" 0
    //11 "disposition" "BUSY"
    //12 "amaflags" 3
    //13 "accountcode" "
    //14 "uniqueid" "1441082713.4875"
    //15 "userfield" "
    //16 "did" "
    //17 "recordingfile" "
    //18 "cnum" "211"
    //19 "cnam" "Akulova"
    //20 "outbound_cnum" "0173301505"
    //21 "outbound_cnam" "
    //22 "dst_cnam" "

    //ТекстЗапросаРасширенный="SEL ECT * FR OM "+ТаблицаРасширенная+" WH ERE eventtime BETWEEN '"+НачалоПериода+"' AND '"+КонецПериода+"'";
    // Name Value
    // 0 "id" 1
    // 1 "eventtype" "CHAN_START"
    // 2 "eventtime" 05.09.2015 17:35:39
    // 3 "cid_name" "
    // 4 "cid_num" "80336557227"
    // 5 "cid_ani" "
    // 6 "cid_rdnis" "
    // 7 "cid_dnid" "
    // 8 "exten" "607"
    // 9 "context" "fr om-internal"
    //10 "channame" "DAHDI/i1/80336557227-1"
    //11 "src" "
    //12 "dst" "
    //13 "channel" "
    //14 "dstchannel" "
    //15 "appname" "
    //16 "appdata" "
    //17 "amaflags" 3
    //18 "accountcode" "
    //19 "uniqueid" "1441463739.0"
    //20 "linkedid" "1441463739.0"
    //21 "peer" "
    //22 "userdeftype" "
    //23 "eventextra" "
    //24 "userfield" "

    НаборЗаписей.ActiveConnection=Соединение;
    НаборЗаписей.Open(ТекстЗапроса);
    //НаборЗаписей.Open(ТекстЗапросаРасширенный);

    ТЗЛогSQL=Новый ТаблицаЗначений;
    ТЗЛогSQL.Колонки.Добавить("ДатаЗвонка");
    ТЗЛогSQL.Колонки.Добавить("Источник");
    ТЗЛогSQL.Колонки.Добавить("Приемник");
    ТЗЛогSQL.Колонки.Добавить("ИсточникОригинальный");
    ТЗЛогSQL.Колонки.Добавить("ПриемникОригинальный");
    ТЗЛогSQL.Колонки.Добавить("РезультатОтвечен");
    ТЗЛогSQL.Колонки.Добавить("Результат");
    ТЗЛогSQL.Колонки.Добавить("РезультатИтог");
    ТЗЛогSQL.Колонки.Добавить("КоличествоЗвонков");
    ТЗЛогSQL.Колонки.Добавить("СреднееВремяЗвонка");
    ТЗЛогSQL.Колонки.Добавить("Время");
    ТЗЛогSQL.Колонки.Добавить("ОбъектИсточник");
    ТЗЛогSQL.Колонки.Добавить("ОбъектПриемник");
    ТЗЛогSQL.Колонки.Добавить("ПодразделениеИсточник");
    ТЗЛогSQL.Колонки.Добавить("ПодразделениеПриемник");
    ТЗЛогSQL.Колонки.Добавить("ВидИсточник");
    ТЗЛогSQL.Колонки.Добавить("ВидПриемник");
    ТЗЛогSQL.Колонки.Добавить("КонтрагентИсточник");
    ТЗЛогSQL.Колонки.Добавить("КонтрагентПриемник");
    ТЗЛогSQL.Колонки.Добавить("ДлинаИсточник");
    ТЗЛогSQL.Колонки.Добавить("ДлинаПриемник");

    //cdr
    ТЗЛогSQL.Колонки.Добавить("clid");
    ТЗЛогSQL.Колонки.Добавить("dcontext");
    ТЗЛогSQL.Колонки.Добавить("channel");
    ТЗЛогSQL.Колонки.Добавить("dstchannel");
    ТЗЛогSQL.Колонки.Добавить("lastapp");
    ТЗЛогSQL.Колонки.Добавить("lastdata");
    ТЗЛогSQL.Колонки.Добавить("duration");
    ТЗЛогSQL.Колонки.Добавить("amaflags");
    ТЗЛогSQL.Колонки.Добавить("accountcode");
    ТЗЛогSQL.Колонки.Добавить("uniqueid");
    ТЗЛогSQL.Колонки.Добавить("userfield");
    ТЗЛогSQL.Колонки.Добавить("did");
    ТЗЛогSQL.Колонки.Добавить("recordingfile");
    ТЗЛогSQL.Колонки.Добавить("cnum");
    ТЗЛогSQL.Колонки.Добавить("cnam");
    ТЗЛогSQL.Колонки.Добавить("outbound_cnum");
    ТЗЛогSQL.Колонки.Добавить("outbound_cnam");
    ТЗЛогSQL.Колонки.Добавить("dst_cnam");

    //cel
    //ТЗЛогSQL.Колонки.Добавить("id");
    //ТЗЛогSQL.Колонки.Добавить("eventtype");
    //ТЗЛогSQL.Колонки.Добавить("cid_name");
    //ТЗЛогSQL.Колонки.Добавить("cid_ani");
    //ТЗЛогSQL.Колонки.Добавить("cid_rdnis");
    //ТЗЛогSQL.Колонки.Добавить("cid_dnid");
    //ТЗЛогSQL.Колонки.Добавить("context");
    //ТЗЛогSQL.Колонки.Добавить("channame");
    //ТЗЛогSQL.Колонки.Добавить("src");
    //ТЗЛогSQL.Колонки.Добавить("dst");
    //ТЗЛогSQL.Колонки.Добавить("channel");
    //ТЗЛогSQL.Колонки.Добавить("did");
    //ТЗЛогSQL.Колонки.Добавить("dstchannel");
    //ТЗЛогSQL.Колонки.Добавить("appname");
    //ТЗЛогSQL.Колонки.Добавить("appdata");
    //ТЗЛогSQL.Колонки.Добавить("amaflags");
    //ТЗЛогSQL.Колонки.Добавить("accountcode");
    //ТЗЛогSQL.Колонки.Добавить("uniqueid");
    //ТЗЛогSQL.Колонки.Добавить("linkedid");
    //ТЗЛогSQL.Колонки.Добавить("peer");
    //ТЗЛогSQL.Колонки.Добавить("userdeftype");
    //ТЗЛогSQL.Колонки.Добавить("eventextra");
    //ТЗЛогSQL.Колонки.Добавить("userfield");

    ТЗНомеров=Новый ТаблицаЗначений;
    ТЗНомеров.Колонки.Добавить("НомерТелефона");
    Пока НаборЗаписей.EOF() = 0 do
    Стр=ТЗЛогSQL.Добавить();
    //cdr
    Стр.ДатаЗвонка = НаборЗаписей.Fields(0).Value;
    Стр.Источник = РазобратьНомер(НаборЗаписей.Fields(2).Value);
    Стр.Приемник = РазобратьНомер(НаборЗаписей.Fields(3).Value);
    Стр.ИсточникОригинальный = НаборЗаписей.Fields(2).Value;
    Стр.ПриемникОригинальный = НаборЗаписей.Fields(3).Value;
    Стр.Результат = НаборЗаписей.Fields(11).Value;
    Стр.РезультатОтвечен = ?(Стр.Результат = "ANSWERED",1,0);
    Стр.КоличествоЗвонков = 1;
    Стр.СреднееВремяЗвонка = НаборЗаписей.Fields(10).Value;
    Стр.Время = НаборЗаписей.Fields(10).Value;
    Стр.ДлинаИсточник=СтрДлина(Стр.Источник);
    Стр.ДлинаПриемник=СтрДлина(Стр.Приемник);
    Стр.clid = НаборЗаписей.Fields(1).Value;
    Стр.dcontext = НаборЗаписей.Fields(4).Value;
    Стр.channel = НаборЗаписей.Fields(5).Value;
    Стр.dstchannel = НаборЗаписей.Fields(6).Value;
    Стр.lastapp = НаборЗаписей.Fields(7).Value;
    Стр.lastdata = НаборЗаписей.Fields(8).Value;
    Стр.duration = НаборЗаписей.Fields(9).Value;
    Стр.amaflags = НаборЗаписей.Fields(12).Value;
    Стр.accountcode = НаборЗаписей.Fields(13).Value;
    Стр.uniqueid = НаборЗаписей.Fields(14).Value;
    Стр.userfield = НаборЗаписей.Fields(15).Value;
    Стр.did = НаборЗаписей.Fields(16).Value;
    Стр.recordingfile = НаборЗаписей.Fields(17).Value;
    Стр.cnum = НаборЗаписей.Fields(18).Value;
    Стр.cnam = НаборЗаписей.Fields(19).Value;
    Стр.outbound_cnum = НаборЗаписей.Fields(20).Value;
    Стр.outbound_cnam = НаборЗаписей.Fields(21).Value;
    Стр.dst_cnam = НаборЗаписей.Fields(22).Value;

    //cel
    //Стр.ДатаЗвонка = НаборЗаписей.Fields(2).Value;
    //Стр.Источник = РазобратьНомер(НаборЗаписей.Fields(4).Value);
    //Стр.Приемник = РазобратьНомер(НаборЗаписей.Fields(8).Value);
    //Стр.ИсточникОригинальный = НаборЗаписей.Fields(4).Value;
    //Стр.ПриемникОригинальный = НаборЗаписей.Fields(8).Value;
    //Стр.Результат = НаборЗаписей.Fields(1).Value;
    ////Стр.РезультатОтвечен = ?(Стр.Результат = "ANSWERED",1,0);
    //Стр.КоличествоЗвонков = 1;
    ////Стр.СреднееВремяЗвонка = НаборЗаписей.Fields(10).Value;
    ////Стр.Время = НаборЗаписей.Fields(10).Value;
    //Стр.ДлинаИсточник=СтрДлина(Стр.Источник);
    //Стр.ДлинаПриемник=СтрДлина(Стр.Приемник);
    //Стр.id = НаборЗаписей.Fields(0).Value;
    //Стр.cid_name = НаборЗаписей.Fields(3).Value;
    //Стр.cid_ani = НаборЗаписей.Fields(5).Value;
    //Стр.cid_rdnis = НаборЗаписей.Fields(6).Value;
    //Стр.cid_dnid = НаборЗаписей.Fields(7).Value;
    //Стр.context = НаборЗаписей.Fields(9).Value;
    //Стр.channame = НаборЗаписей.Fields(10).Value;
    //Стр.src = НаборЗаписей.Fields(11).Value;
    //Стр.dst = НаборЗаписей.Fields(12).Value;
    //Стр.channel = НаборЗаписей.Fields(13).Value;
    //Стр.dstchannel = НаборЗаписей.Fields(14).Value;
    //Стр.appname = НаборЗаписей.Fields(15).Value;
    //Стр.appdata = НаборЗаписей.Fields(16).Value;
    //Стр.amaflags = НаборЗаписей.Fields(17).Value;
    //Стр.accountcode = НаборЗаписей.Fields(18).Value;
    //Стр.uniqueid = НаборЗаписей.Fields(19).Value;
    //Стр.linkedid = НаборЗаписей.Fields(20).Value;
    //Стр.peer = НаборЗаписей.Fields(21).Value;
    //Стр.userdeftype = НаборЗаписей.Fields(22).Value;
    //Стр.eventextra = НаборЗаписей.Fields(23).Value;
    //Стр.userfield = НаборЗаписей.Fields(24).Value;

    СтрТЗНомеров=ТЗНомеров.Добавить();
    СтрТЗНомеров.НомерТелефона=Стр.Источник;
    СтрТЗНомеров=ТЗНомеров.Добавить();
    СтрТЗНомеров.НомерТелефона=Стр.Приемник;

    НаборЗаписей.MoveNext();
    КонецЦикла;
    НаборЗаписей.Close();
    Сообщить(ТЗЛогSQL.Количество());

    ТЗРезультатОтвечен = Новый ТаблицаЗначений;
    ТЗРезультатОтвечен = ТЗЛогSQL.Скопировать(,"ДатаЗвонка,ИсточникОригинальный,РезультатОтвечен");
    ТЗРезультатОтвечен.Свернуть("ДатаЗвонка,ИсточникОригинальный","РезультатОтвечен");

    ТЗНомеров.Свернуть("НомерТелефона");

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | КонтактнаяИнформация.Объект,
    | КонтактнаяИнформация.Вид,
    | КонтактнаяИнформация.ПолныйНомерТелефона,
    | КонтактнаяИнформация.Представление,
    | ВложенныйЗапрос.ПодразделениеОрганизации
    |ИЗ
    | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    | РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо КАК СотрудникФизлицо
    | ИЗ
    | РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних) КАК ВложенныйЗапрос
    | ПО КонтактнаяИнформация.Объект = ВложенныйЗапрос.СотрудникФизлицо
    |ГДЕ
    | КонтактнаяИнформация.Тип = &Тип
    | И КонтактнаяИнформация.ПолныйНомерТелефона В(&ТЗНомеров)";

    Запрос.УстановитьПараметр("ТЗНомеров", ТЗНомеров);
    Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);

    ТЗНомеров = Запрос.Выполнить().Выгрузить();

    Для Каждого Стр Из ТЗЛогSQL Цикл
    Стр.ОбъектИсточник=";
    Стр.ВидИсточник=";
    Стр.ОбъектПриемник=";
    Стр.ВидПриемник=";
    Стр.КонтрагентИсточник=";
    Стр.КонтрагентПриемник=";

    Исх=ТЗНомеров.Найти(Стр.Источник,"ПолныйНомерТелефона");
    Если Исх<>Неопределено Тогда
    Стр.ОбъектИсточник=Исх.Объект;
    Стр.ВидИсточник=Исх.Вид;
    Если ТипЗнч(Исх.Объект)=Тип("СправочникСсылка.КонтактныеЛицаКонтрагентов") Тогда
    Стр.КонтрагентИсточник=Исх.Объект.Владелец;
    ИначеЕсли ТипЗнч(Исх.Объект)=Тип("СправочникСсылка.Контрагенты") Тогда
    Стр.КонтрагентИсточник=Исх.Объект;
    ИначеЕсли ТипЗнч(Исх.Объект)=Тип("СправочникСсылка.ФизическиеЛица") Тогда
    Стр.ПодразделениеИсточник=Исх.ПодразделениеОрганизации;
    КонецЕсли;
    Стр.Источник=Исх.Представление;
    КонецЕсли;

    Исх=ТЗНомеров.Найти(Стр.Приемник,"ПолныйНомерТелефона");
    Если Исх<>Неопределено Тогда
    Стр.ОбъектПриемник=Исх.Объект;
    Стр.ВидПриемник=Исх.Вид;
    Если ТипЗнч(Исх.Объект)=Тип("СправочникСсылка.КонтактныеЛицаКонтрагентов") Тогда
    Стр.КонтрагентПриемник=Исх.Объект.Владелец;
    ИначеЕсли ТипЗнч(Исх.Объект)=Тип("СправочникСсылка.Контрагенты") Тогда
    Стр.КонтрагентПриемник=Исх.Объект;
    ИначеЕсли ТипЗнч(Исх.Объект)=Тип("СправочникСсылка.ФизическиеЛица") Тогда
    Стр.ПодразделениеПриемник=Исх.ПодразделениеОрганизации;
    КонецЕсли;
    Стр.Приемник=Исх.Представление;
    КонецЕсли;

    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("ДатаЗвонка", Стр.ДатаЗвонка);
    ПараметрыОтбора.Вставить("ИсточникОригинальный", Стр.ИсточникОригинальный);

    НайденныеСтроки = ТЗРезультатОтвечен.НайтиСтроки(ПараметрыОтбора);
    Если НайденныеСтроки <>Неопределено Тогда
    Стр.РезультатИтог = ?(НайденныеСтроки[0].РезультатОтвечен > 0,"ANSWERED","NO ANSWER");
    КонецЕсли;

    КонецЦикла;

    // Скомпонуем результат
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;// Передаем таблицу "ЖурТаб" в процессор компоновки
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, Новый Структура("ТЗЛогSQL", ТЗЛогSQL), ДанныеРасшифровки);

    ДокументРезультат.Очистить();

    // Выводим результат в табличный документ
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    ДокументРезультат.ПоказатьУровеньГруппировокСтрок(0);

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

Создаешь СКД. Затем колонки в нем сам набьешь.
В наборе данных таблица указана ТЗЛогSQL.

Суть в том, чтобы нужный драйвер стоял. По драйверу уже гуглите.
---
Xershi, (5) DenisCh, благодарю, сейчас попробуем )
---
Xershi, синтаксис понял, свои данные подставил - завелось с полоборота, все работает :-) Благодарю :-)
---
Xershi, За помощь ;-)
---
ToTMoM, три рубля, но все равно приятно))
---
http://mudritskiy.blogspot.ru/2013/05/1-adodb.html
---
DenisCh, четко изложенный материал, благодарю)
(9) Xershi, :-)
---
ToTMoM, Кстати, что называется, лайфхак.
цикл чтения

```1c
    Пока не rsRES.eof() Цикл
    НоваяЗапись = НаборЗаписей.Добавить();
    Для х = 0 по 3 Цикл
    НоваяЗапись["Колонка"+(х+1)] = rsRES.Fields(х).Value;
    КонецЦикла;
    rsRES.MoveNext();
    КонецЦикла;
```

лучше оптимизировать (если выборка большая) подобным способом

```1c
    поле1 = rsRES.Fields(0);
    поле2 = rsRES.Fields(1);
    ....
    Пока не rsRES.eof() Цикл
    НоваяЗапись = НаборЗаписей.Добавить();
    НоваяЗапись["Колонка1"] = поле1.value;
    ...
    // Для х = 0 по 3 Цикл
    // НоваяЗапись["Колонка"+(х+1)] = rsRES.Fields(х).Value;
    // КонецЦикла;
    rsRES.MoveNext();
    КонецЦикла;
```

даёт процентов 10-15 прироста.
---
DenisCh, Прикольно, только потом стена кода :-(

(9) Xershi, возник кстати другой интересный с практической точки зрения вопрос: а как хранить "открытое подключение"?
Т.е. допустим у меня форма на клиенте, и при смене страницы нужно обновить данные выборкой из базы, т.к. данные точно-точно нужны самые актуальные - запрашиваем при каждой смене страницы. И поэтому чтобы не делать постоянно миллиард подключений то я, как понимаю, надо:
При первом получении данных подключится, проверить состояние. Если все норм - сделать выборку. Сохранить на сервере как-то активное подключение.
При последующих вызовах надо брать сохраненное подключение, проверять его состояние, и если все норм - создавать новый RecordSet и делать выборку.
Вопрос - а как вы храните открытое COMОбъект("ADODB.Connection") на сервере?
---
ToTMoM, Я для этого использовать общий модуль с хешированием повторно возвращаемых значений
---
ToTMoM, у нас обычные формы. Нам это не к чему.