всем привет. Решил переписать акт сверки на прямой запрос, вроде работает, но сильного прирост а по скорости не получил. Может, что не так сделал? Знающие люди, подскажите пожалуйста. Вот сам запрос.
рс = СоздатьОбъект("AccountsRecordset"); рс.УстБД1С(); //рс.Отладка(1); ТекстЗапроса = " |SELECT |ПозицияДокумента |, ВидДокумента |, Счет [Счет $Счет.Основной] |, Валюта [Валюта $Справочник.Валюты] |, Субконто1 [Субконто1 $Субконто] |, Субконто1_вид |, СуммаНачальныйОстаток СуммаНач |, СуммаОборот СуммаОборот |, СуммаОборотДт Дебет |, СуммаОборотКт Кредит |, СуммаКонечныйОстаток СуммаКон |, ВалютнаяСуммаНачальныйОстаток ВалНач |, ВалютнаяСуммаОборот ВалСумма |, ВалютнаяСуммаКонечныйОстаток ВалКон |, Журнал.IDDOC [Документ $Документ.РасходнаяНакладнаяР] |, Журнал.IDDOCdef ВидДок |, Журнал.DOCNO НомерДок | FROM $БИОстаткиОбороты.Основной(:НачДата, :КонДата~, | Документ, | ,, | ,(Субконто1), | Счет IN (SELECT val FROM #accs) | AND (Субконто1 = :ВыбКлиент) | AND (Субконто2 = :ВыбДоговор) |) БИОстаткиОбороты |LEFT OUTER JOIN _1SJOURN AS Журнал With (NOLOCK) ON БИОстаткиОбороты.ПозицияДокумента = Журнал.DATE_TIME_IDDOC |ORDER BY |БИОстаткиОбороты.ПозицияДокумента |"; рс.УстановитьТекстовыйПараметр("НачДата",НачДата); рс.УстановитьТекстовыйПараметр("КонДата",КонДата); рс.УложитьСписокОбъектов(СписокВыбранныхСчетов, "#accs", "Основной"); рс.УстановитьТекстовыйПараметр("ВыбКлиент",Контрагент); Если ПустоеЗначение(Договор) = 1 Тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "AND (Субконто2 = :ВыбДоговор)", ""); ИначеЕсли Договор.ЭтоГруппа() = 1 Тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "AND (Субконто2 = :ВыбДоговор)", "AND (Субконто2 IN (SELECT val FROM #ВыбДоговор))"); рс.УложитьСписокОбъектов(Договор, "#ВыбДоговор", "Договоры"); Иначе рс.УстановитьТекстовыйПараметр("ВыбДоговор",Договор); КонецЕсли; тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
|