Очень долго происходит перебор результатов ~ 6800 строк за 34 мнуты... Запрос = "SELECT | ARTIKLS.ANUMB AS ARTICLE_PROF, | ARTSVST.ASKL1 AS ARTICLE_SKLAD, | ARTSVST.ASKL2 AS ARTICLE_1C, | ARTIKLS.ANAME AS NOMNAME, | ARTSVST.CLPRV AS TARIF_ED_IZM, | COLSLST.CNAME AS CVET_TEKSTURI, | COLSLST.CNAMP AS CVET_ARTICLE, | ARTSVST.CLPRC AS TARIF_OSN_TEKSTURI, | ARTSVST.CLPR1 AS TARIF_VNUTR_TEKSTURI, | ARTSVST.CLPR2 AS TARIF_VNESHN_TEKSTURI, | ARTSVST.CLPRA AS TARIF_DVUHSTORONNEY_TEKSTURI, | GRUPART.MNAME AS NOMGRUPNAME, | GRUPART.MUNIC AS GRUPUNICNOMER, | ARTIKLS.NUNIC AS KATEGORYUNICNOMER, | ARTIKLS.APREF AS KATEGORY, | ARTIKLS.ANAMP AS NOMNAMECONTR, | CORRENC.CNAME AS VALUTE, | CASE | WHEN ARTIKLS.ATYPI = 1 THEN 'пог.м.' | WHEN ARTIKLS.ATYPI = 2 THEN 'м.кв.' | WHEN ARTIKLS.ATYPI = 3 THEN 'шт' | WHEN ARTIKLS.ATYPI = 5 THEN 'компл.' | ELSE 'неизвестно' | END AS ED_IZM | | FROM COLSLST | RIGHT OUTER JOIN ARTSVST ON (COLSLST.CNUMB = ARTSVST.CLNUM) | RIGHT OUTER JOIN ARTIKLS ON (ARTSVST.ANUMB = ARTIKLS.ANUMB) | LEFT OUTER JOIN CORRENC ON (ARTIKLS.CNUMB = CORRENC.CNUMB) | LEFT OUTER JOIN GRUPART ON (ARTIKLS.MUNIC = GRUPART.MPREF) |"; //Загружаем компоненту Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "1CPP.DLL")=0 Тогда ок=0; КонецЕсли; Попытка ЛокDB = СоздатьОбъект("ODBCDataBase"); Исключение Сообщить(ОписаниеОшибки()); Сообщить("Компонента 1С++ не обнаружена","!!"); Возврат; КонецПопытки; ЛокODBC = СоздатьОбъект("ODBCRecordSet"); Сообщить("Начало соединения: " + ТекущееВремя()); ЛокDB.Соединение("driver={Firebird/Interbase(r) \BASE.gdb"); Если ЛокDB.ЕстьСоединение() = 1 Тогда Сообщить("Конец соединения: " + ТекущееВремя()); Иначе Возврат; КонецЕсли; ЛокODBC.УстБД(ЛокDB); Сообщить("Начало выполнения запроса: " + ТекущееВремя()); Если ЛокODBC.Открыть(Запрос) = 0 Тогда Сообщить("Запрос не выполнен!", "!!!"); Возврат; КонецЕсли;
Если ЛокODBC.ВыборкаОткрыта() = 0 Тогда Сообщить("Выборка не открыта", "!!!"); КонецЕсли; Сообщить("Начало проход по запросу: " + ТекущееВремя()); ВсегоСтрок = 0; Пока ЛокODBC.След() = 1 Цикл ВсегоСтрок = ВсегоСтрок + 1; Состояние(ВсегоСтрок); КонецЦикла; Сообщить("Всего строк: " + ВсегоСтрок, "!!!"); Сообщить("Конец прохода по запросу: " + ТекущееВремя()); //ЛокODBC.ВыполнитьИнструкцию(Запрос, ТЗSQL, 1); Сообщить("Конец подготовки запроса: " + ТекущееВремя());
Сообщить("Конец : " + ТекущееВремя()); ЗначениеВФайл(КаталогИБ() + "Профстрой", ТЗSQL, 1); ЛокDB.Закрыть();
|