|
Помогите оптимизировать запрос. | ☑ | ||
---|---|---|---|---|
0
hasan-rusel
01.08.14
✎
05:51
|
На компьютере в файловой версии СКД отчет "реестр платежей" формируется 3-5 мин. В клиент-серверном варианте 3 часа !! Подскажите куда копать ? В оптимизацию запроса ? Если да, то как его оптимизировать ?
Заранее спасибо ! 1С:Предприятие 8.2 (8.2.19.83) Бухгалтерия предприятия, редакция 2.0 (2.0.60.3) ВЫБРАТЬ СписаниеСРасчетногоСчета.Контрагент.Наименование КАК Контрагент, СписаниеСРасчетногоСчета.Контрагент.НаименованиеПолное, СписаниеСРасчетногоСчета.Дата КАК ДатаПлатежа, ВложенныйЗапрос.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств, СписаниеСРасчетногоСчета.НазначениеПлатежа, СписаниеСРасчетногоСчета.ДоговорКонтрагента.Комментарий КАК ПредметДоговора, ВложенныйЗапрос.ВидПлатежа, СписаниеСРасчетногоСчета.НомерВходящегоДокумента, СписаниеСРасчетногоСчета.ДатаВходящегоДокумента, Адреса.Представление КАК ЮридическийАдрес, ВложенныйЗапрос.СуммаПлатежа ИЗ Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.Ссылка КАК Ссылка, СписаниеСРасчетногоСчетаРасшифровкаПлатежа.ДоговорКонтрагента КАК ДоговорКонтрагента, СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа, СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств, СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом КАК СчетУчетаРасчетовСКонтрагентом, ВЫБОР КОГДА СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты по авансам выданным" ИЛИ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты по авансам выданным (в у.е.)" ТОГДА "Предоплата" КОГДА СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с поставщиками и подрядчиками" ИЛИ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с поставщиками и подрядчиками (в у.е.)" ИЛИ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с прочими поставщиками и подрядчиками" ТОГДА "Факт" ИНАЧЕ " " КОНЕЦ КАК ВидПлатежа ИЗ Документ.СписаниеСРасчетногоСчета.РасшифровкаПлатежа КАК СписаниеСРасчетногоСчетаРасшифровкаПлатежа) КАК ВложенныйЗапрос ПО СписаниеСРасчетногоСчета.Ссылка = ВложенныйЗапрос.Ссылка ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Контрагенты.Наименование КАК Наименование, ВложенныйЗапрос.Вид КАК Вид, ВложенныйЗапрос.ОбъектСсылка КАК ОбъектСсылка, ВложенныйЗапрос.Представление КАК Представление ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ КонтактнаяИнформация.Объект.Ссылка КАК ОбъектСсылка, КонтактнаяИнформация.Вид КАК Вид, КонтактнаяИнформация.Представление КАК Представление ИЗ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация ГДЕ КонтактнаяИнформация.Вид.Наименование = "Юридический адрес") КАК ВложенныйЗапрос ПО Контрагенты.Ссылка = ВложенныйЗапрос.ОбъектСсылка.Ссылка) КАК Адреса ПО СписаниеСРасчетногоСчета.Контрагент.Ссылка = Адреса.ОбъектСсылка.Ссылка ГДЕ СписаниеСРасчетногоСчета.Проведен = ИСТИНА ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПриходныйКассовыйОрдер.Контрагент.Наименование, ПриходныйКассовыйОрдер.Контрагент.НаименованиеПолное, ПриходныйКассовыйОрдер.Дата, ВложенныйЗапрос.СтатьяДвиженияДенежныхСредств, ПриходныйКассовыйОрдер.Основание, "", ВЫБОР КОГДА ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты по авансам выданным" ИЛИ ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты по авансам выданным (в у.е.)" ТОГДА "Предоплата" КОГДА ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты с поставщиками и подрядчиками" ИЛИ ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты с поставщиками и подрядчиками (в у.е.)" ИЛИ ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты с прочими поставщиками и подрядчиками" ТОГДА "Факт" ИНАЧЕ " " КОНЕЦ, "", "", "", ВложенныйЗапрос.СуммаПлатежа ИЗ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка КАК Ссылка, ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа, ПриходныйКассовыйОрдерРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств ИЗ Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа) КАК ВложенныйЗапрос ПО ПриходныйКассовыйОрдер.Ссылка = ВложенныйЗапрос.Ссылка ГДЕ ПриходныйКассовыйОрдер.Проведен = ИСТИНА И ПриходныйКассовыйОрдер.СчетУчетаРасчетовСКонтрагентом.Код = "51" УПОРЯДОЧИТЬ ПО СтатьяДвиженияДенежныхСредств PS) данные нужны обычно за определенный период времени (месяц) |
|||
1
Wobland
01.08.14
✎
05:56
|
>ИЛИ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с поставщиками и подрядчиками (в у.е.)"
расстрелять. и тащить нужные данные с регистров |
|||
2
jsmith
01.08.14
✎
06:11
|
мда...
|
|||
3
anaed
01.08.14
✎
06:12
|
(0) чтобы оптимизировать ваш запрос его нужно стереть и написать новый. Бегло глянул - судя по всему нужно будет Обороты Хозрасчетного соединить с Контактной информацией.
|
|||
4
jsmith
01.08.14
✎
06:12
|
клиент-сервер ахренел от вашего плана запроса
|
|||
5
jsmith
01.08.14
✎
06:13
|
советую подтянуть временные таблицы
и (1) +1 |
|||
6
VladZ
01.08.14
✎
06:38
|
(0) Вот так посмотришь на подобные творения и приходит мысль: "Конструктор запросов - зло". Вот заставь тебя то же самое руками написал - сразу бы "голову включил".
|
|||
7
hasan-rusel
01.08.14
✎
06:51
|
Как-то так ???
ВЫБРАТЬ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.Ссылка КАК Ссылка, СписаниеСРасчетногоСчетаРасшифровкаПлатежа.ДоговорКонтрагента КАК ДоговорКонтрагента, СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа, СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств, СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом КАК СчетУчетаРасчетовСКонтрагентом, ВЫБОР КОГДА СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты по авансам выданным" ИЛИ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты по авансам выданным (в у.е.)" ТОГДА "Предоплата" КОГДА СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с поставщиками и подрядчиками" ИЛИ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с поставщиками и подрядчиками (в у.е.)" ИЛИ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с прочими поставщиками и подрядчиками" ТОГДА "Факт" ИНАЧЕ " " КОНЕЦ КАК ВидПлатежа ПОМЕСТИТЬ ВТ_списание ИЗ Документ.СписаниеСРасчетногоСчета.РасшифровкаПлатежа КАК СписаниеСРасчетногоСчетаРасшифровкаПлатежа ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Контрагенты.Наименование КАК Наименование, ВложенныйЗапрос.Вид КАК Вид, ВложенныйЗапрос.ОбъектСсылка КАК ОбъектСсылка, ВложенныйЗапрос.Представление КАК Представление ПОМЕСТИТЬ ВТ_Адреса ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ КонтактнаяИнформация.Объект.Ссылка КАК ОбъектСсылка, КонтактнаяИнформация.Вид КАК Вид, КонтактнаяИнформация.Представление КАК Представление ИЗ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация ГДЕ КонтактнаяИнформация.Вид.Наименование = "Юридический адрес") КАК ВложенныйЗапрос ПО Контрагенты.Ссылка = ВложенныйЗапрос.ОбъектСсылка.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СписаниеСРасчетногоСчета.Контрагент.Наименование КАК Контрагент, СписаниеСРасчетногоСчета.Контрагент.НаименованиеПолное, СписаниеСРасчетногоСчета.Дата КАК ДатаПлатежа, ВТ_списание.СтатьяДвиженияДенежныхСредств, СписаниеСРасчетногоСчета.НазначениеПлатежа, СписаниеСРасчетногоСчета.ДоговорКонтрагента.Комментарий КАК ПредметДоговора, ВТ_списание.ВидПлатежа, СписаниеСРасчетногоСчета.НомерВходящегоДокумента, СписаниеСРасчетногоСчета.ДатаВходящегоДокумента, ВТ_Адреса.Представление КАК ЮридическийАдрес, ВТ_списание.СуммаПлатежа ИЗ Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета ЛЕВОЕ СОЕДИНЕНИЕ ВТ_списание КАК ВТ_списание ПО СписаниеСРасчетногоСчета.Ссылка = ВТ_списание.Ссылка ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Адреса КАК ВТ_Адреса ПО СписаниеСРасчетногоСчета.Ссылка = ВТ_Адреса.ОбъектСсылка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПриходныйКассовыйОрдер.Контрагент.Наименование, ПриходныйКассовыйОрдер.Контрагент.НаименованиеПолное, ПриходныйКассовыйОрдер.Дата, ВложенныйЗапрос.СтатьяДвиженияДенежныхСредств, ПриходныйКассовыйОрдер.Основание, "", ВЫБОР КОГДА ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты по авансам выданным" ИЛИ ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты по авансам выданным (в у.е.)" ТОГДА "Предоплата" КОГДА ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты с поставщиками и подрядчиками" ИЛИ ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты с поставщиками и подрядчиками (в у.е.)" ИЛИ ПриходныйКассовыйОрдер.СчетКасса.Наименование = "Расчеты с прочими поставщиками и подрядчиками" ТОГДА "Факт" ИНАЧЕ " " КОНЕЦ, "", "", "", ВложенныйЗапрос.СуммаПлатежа ИЗ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка КАК Ссылка, ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа, ПриходныйКассовыйОрдерРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств ИЗ Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа) КАК ВложенныйЗапрос ПО ПриходныйКассовыйОрдер.Ссылка = ВложенныйЗапрос.Ссылка ГДЕ ПриходныйКассовыйОрдер.Проведен = ИСТИНА И ПриходныйКассовыйОрдер.СчетУчетаРасчетовСКонтрагентом.Код = "51" |
|||
8
Borometr
01.08.14
✎
07:06
|
А почему (1) игнорируешь? Почему эти же данные нельзя брать из регистра бухгалтерии и вместо ГДЕ в запросе использовать параметры регистра, что ускорит отбор значений в несколько раз.
|
|||
9
Sammo
01.08.14
✎
07:07
|
1. использование двух точек
СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование приводит к неявному левому соединению со справочником. Передавать параметрами запроса. 2. Рассмотреть возможность получения данных из других источников. Зависит от постановки задачи. |
|||
10
Borometr
01.08.14
✎
07:09
|
(8) + И вместо СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом.Наименование = "Расчеты с прочими поставщиками и подрядчиками" попробуй СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом = ЗНАЧЕНИЕ(ПланСчетов.ЕПСБУ.....). выглядит куда приятнее
|
|||
11
hasan-rusel
01.08.14
✎
07:25
|
(1) Подсажите плиз с какого регистра вытащить СписаниеСРасчетногоСчетаРасшифровкаПлатежа ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |