Имя: Пароль:
1C
 
Оптимизация запроса УПП
0 asder117
 
14.08.17
11:35
Доброе время суток коллеги. Поступила от бухов дибильная задача. собрать доходную часть. причем согласно нашей работы яего должен собрать по разным типом договоров, а договора я могу отлючить только по букве в наименовании
сделал запрос:
     ЗапросА = Новый Запрос;
ЗапросА.Текст = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    ОсновнойДвиженияССубконто.ВалютнаяСуммаКт КАК ВалютнаяСуммаКт,
|    ОсновнойДвиженияССубконто.СубконтоДт1,
|    ПРЕДСТАВЛЕНИЕ(ОсновнойДвиженияССубконто.СубконтоДт1) КАК СубконтоДт1Представление,
|    ОсновнойДвиженияССубконто.СубконтоКт1,
|    ПРЕДСТАВЛЕНИЕ(ОсновнойДвиженияССубконто.СубконтоКт1) КАК СубконтоКт1Представление,
|    ОсновнойДвиженияССубконто.СубконтоДт2,
|    ПРЕДСТАВЛЕНИЕ(ОсновнойДвиженияССубконто.СубконтоДт2) КАК СубконтоДт2Представление,
|    ОсновнойДвиженияССубконто.СубконтоКт2,
|    ПРЕДСТАВЛЕНИЕ(ОсновнойДвиженияССубконто.СубконтоКт3) КАК СубконтоКт3Представление,
|    ОсновнойДвиженияССубконто.Сумма КАК Сумма,
|    ПРЕДСТАВЛЕНИЕ(ОсновнойДвиженияССубконто.Регистратор) КАК ПредставлениеОперации,
|    ОсновнойДвиженияССубконто.Регистратор КАК ДокументОперации,
|    ОсновнойДвиженияССубконто.Период КАК ДатаОперации,
|    ОсновнойДвиженияССубконто.Содержание КАК Операция,
|    ОсновнойДвиженияССубконто.НомерЖурнала,
|    ОсновнойДвиженияССубконто.НомерСтроки,
|    ПРЕДСТАВЛЕНИЕ(ОсновнойДвиженияССубконто.Организация) КАК Организация
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
|            &НачПериода,
|            &КонПериода,
|            Активность = ИСТИНА
|                И Счет В ИЕРАРХИИ (&СчетАнализа)
|                И Организация = &Организация
|                И Субконто1 = &Значение1,
|            ,
|            ) КАК ОсновнойДвиженияССубконто
|ГДЕ
|    ОсновнойДвиженияССубконто.СубконтоДт2.Наименование ПОДОБНО &Наименование
|    //ИЛИ ОсновнойДвиженияССубконто.СубконтоДт2.Наименование ПОДОБНО &Наименование2
|
|УПОРЯДОЧИТЬ ПО
|    ДатаОперации,
|    ОсновнойДвиженияССубконто.Регистратор
|ИТОГИ
|    СУММА(Сумма)
|ПО
|    ОБЩИЕ";
ЗапросА.УстановитьПараметр("Значение1",    Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000003"));    
ЗапросА.УстановитьПараметр("КонПериода",    КонечнаяДата);     //Дата
ЗапросА.УстановитьПараметр("Наименование",    "%А%");     //Строка
ЗапросА.УстановитьПараметр("НачПериода",    НачальнаяДата);     //Дата
ЗапросА.УстановитьПараметр("Организация",    Справочники.Организации.НайтиПоКоду("000000001"));     //Организация
ЗапросА.УстановитьПараметр("СчетАнализа",    ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01"));     //План счетов бухгалтерского учета "90.01"
РезультатЗапросаА = ЗапросА.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока РезультатЗапросаА.Следующий() цикл
все работает на ура сумму выводит. но "&Наименование" у меня будет с десяток (%А%, %Б%, %С%, %ХЯ% и т.д.) т.е. это 10 таких запросов и потом вывод в строку код получится километровый. либо убирать из запроса "|    ОсновнойДвиженияССубконто.СубконтоДт2.Наименование ПОДОБНО &Наименование" и потом при обходе результата по подобию наименования отсеивать. тогда я думаю будут тормоза неимоверные. Кто что посоветует. заранее спасибо
1 asder117
 
14.08.17
11:36
все работает на ура сумму выводит. но "&Наименование" у меня будет с десяток (%А%, %Б%, %С%, %ХЯ% и т.д.) т.е. это 10 таких запросов и потом вывод в строку код получится километровый. либо убирать из запроса "|    ОсновнойДвиженияССубконто.СубконтоДт2.Наименование ПОДОБНО &Наименование" и потом при обходе результата по подобию наименования отсеивать. тогда я думаю будут тормоза неимоверные. Кто что посоветует. заранее спасибо
2 Numerus Mikhail
 
14.08.17
11:38
Завести реквизит "ТипДоговора" -> Заполнить его -> Профит
3 1dvd
 
14.08.17
11:41
(2) или задействуй Свойства/Категории
4 тарам пам пам
 
14.08.17
12:02
во-первых, исправь в запросе
ОсновнойДвиженияССубконто.СубконтоДт2.Наименование
на
ВЫРАЗИТЬ(ОсновнойДвиженияССубконто.СубконтоДт2 КАК Справочник.ДоговорыКонтрагентов).Наименование

А во-вторых, как выше правильно написали, заведи в договорах реквизит, заполни его один раз автоматом и пни бухов чтобы в дальнейшем сами его заполняли. Иначе потом задолбаешься отчет дорабатывать, т. к. будет "этот договор добавь, а этот попадать не должен, хоть там и есть буквы "х * я" в наименовании".
5 asder117
 
14.08.17
12:15
(4) "а этот попадать не должен, хоть там и есть буквы "х * я" в наименовании" вот блин я с этим и столкнулся. Договор бухи тянут из другой базы. надо подумать какой реквизит засандалить. И потом получается группировки-итоги по данному реквизиту собирать...