|
Оптимизация запроса | ☑ | ||
---|---|---|---|---|
0
SRM1C
23.10.17
✎
11:47
|
Долго запрос отрабатывает, Ваши замечания хотел бы услышать
ВЫБРАТЬ ПриходныйКассовыйОрдерРасшифровкаПлатежа.ДоговорКонтрагента КАК ДоговорПлатежногоАгента, ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка ПОМЕСТИТЬ ВТ_ДоговораПлатежногоАгента ИЗ Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа ГДЕ ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка = &ПриходныйКассовыйОрдер И ПриходныйКассовыйОрдерРасшифровкаПлатежа.ДоговорКонтрагента.ПлатежныйАгент СГРУППИРОВАТЬ ПО ПриходныйКассовыйОрдерРасшифровкаПлатежа.ДоговорКонтрагента, ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПриходныйКассовыйОрдер.СубконтоКт2, ПриходныйКассовыйОрдер.Ссылка ИЗ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер ГДЕ ВЫРАЗИТЬ(ПриходныйКассовыйОрдер.СубконтоКт2 КАК Справочник.ДоговорыКонтрагентов).ПлатежныйАгент И ПриходныйКассовыйОрдер.Ссылка = &ПриходныйКассовыйОрдер ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПриходныйКассовыйОрдер.Ссылка, ПриходныйКассовыйОрдер.Дата, ПриходныйКассовыйОрдер.Номер, ПриходныйКассовыйОрдер.Организация, ПриходныйКассовыйОрдер.Патент, ПриходныйКассовыйОрдер.Основание, ПриходныйКассовыйОрдер.ВидОперации, ПриходныйКассовыйОрдер.Контрагент, ПриходныйКассовыйОрдер.ПринятоОт, ПриходныйКассовыйОрдер.СтавкаНДС, ПриходныйКассовыйОрдер.СуммаДокумента, ПриходныйКассовыйОрдер.ВалютаДокумента, ЕСТЬNULL(ВТ_ДоговораПлатежногоАгента.ДоговорПлатежногоАгента, ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)) КАК ДоговорПлатежногоАгента, ЕСТЬNULL(ВТ_ДоговораПлатежногоАгента.КоличествоДоговоров, 0) > 1 КАК НесколькоДоговоровПлатежногоАгента ПОМЕСТИТЬ ВТ_РеквизитыШапки ИЗ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВТ_ДоговораПлатежногоАгента.Ссылка КАК Ссылка, МАКСИМУМ(ВТ_ДоговораПлатежногоАгента.ДоговорПлатежногоАгента) КАК ДоговорПлатежногоАгента, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_ДоговораПлатежногоАгента.ДоговорПлатежногоАгента) КАК КоличествоДоговоров ИЗ ВТ_ДоговораПлатежногоАгента КАК ВТ_ДоговораПлатежногоАгента СГРУППИРОВАТЬ ПО ВТ_ДоговораПлатежногоАгента.Ссылка) КАК ВТ_ДоговораПлатежногоАгента ПО ПриходныйКассовыйОрдер.Ссылка = ВТ_ДоговораПлатежногоАгента.Ссылка ГДЕ ПриходныйКассовыйОрдер.Ссылка = &ПриходныйКассовыйОрдер ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка, ПриходныйКассовыйОрдерРасшифровкаПлатежа.ДоговорКонтрагента, ПриходныйКассовыйОрдерРасшифровкаПлатежа.СтавкаНДС, ПриходныйКассовыйОрдерРасшифровкаПлатежа.СчетНаОплату, ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаПлатежа, ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаВзаиморасчетов ПОМЕСТИТЬ ВТ_РасшифровкаПлатежа ИЗ Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа ГДЕ ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка = &ПриходныйКассовыйОрдер ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка КАК РеализацияТоваров, ПриходныйКассовыйОрдерРасшифровкаПлатежа.СчетНаОплату ПОМЕСТИТЬ ВТ_РеализацииПоСчету ИЗ Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ПО ПриходныйКассовыйОрдерРасшифровкаПлатежа.СчетНаОплату = РеализацияТоваровУслуг.СчетНаОплатуПокупателю ГДЕ ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка = &ПриходныйКассовыйОрдер И НЕ РеализацияТоваровУслуг.Ссылка ЕСТЬ NULL ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_РеквизитыШапки.Организация, ВТ_РеквизитыШапки.СуммаДокумента, ВТ_РеквизитыШапки.Контрагент, ВТ_РеквизитыШапки.ПринятоОт, ВТ_РеквизитыШапки.Основание, ВТ_РеквизитыШапки.Дата, ВТ_РеквизитыШапки.Номер, ВТ_РеквизитыШапки.ВидОперации, ВТ_РеквизитыШапки.Патент, ВТ_РеквизитыШапки.СтавкаНДС, ВТ_РеквизитыШапки.ДоговорПлатежногоАгента, ВТ_РеквизитыШапки.НесколькоДоговоровПлатежногоАгента ИЗ ВТ_РеквизитыШапки КАК ВТ_РеквизитыШапки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВложенныйЗапрос.СчетНаОплату, ВложенныйЗапрос.ЭтоУслуга, ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.Содержание, СУММА(ВложенныйЗапрос.Количество) КАК Количество ПОМЕСТИТЬ ВТ_РеализованнаяНоменклатура ИЗ (ВЫБРАТЬ ВТ_РеализацииПоСчету.СчетНаОплату КАК СчетНаОплату, ЛОЖЬ КАК ЭтоУслуга, РеализованныеТовары.Номенклатура КАК Номенклатура, "" КАК Содержание, РеализованныеТовары.Количество КАК Количество ИЗ ВТ_РеализацииПоСчету КАК ВТ_РеализацииПоСчету ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализованныеТовары ПО ВТ_РеализацииПоСчету.РеализацияТоваров = РеализованныеТовары.Ссылка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВТ_РеализацииПоСчету.СчетНаОплату, ИСТИНА, РеализованныеУслуги.Номенклатура, РеализованныеУслуги.Содержание, ВЫБОР КОГДА РеализованныеУслуги.Количество = 0 ТОГДА 1 ИНАЧЕ РеализованныеУслуги.Количество КОНЕЦ ИЗ ВТ_РеализацииПоСчету КАК ВТ_РеализацииПоСчету ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Услуги КАК РеализованныеУслуги ПО ВТ_РеализацииПоСчету.РеализацияТоваров = РеализованныеУслуги.Ссылка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВТ_РеализацииПоСчету.СчетНаОплату, ИСТИНА, РеализованныеАгентскиеУслуги.Номенклатура, РеализованныеАгентскиеУслуги.Содержание, ВЫБОР КОГДА РеализованныеАгентскиеУслуги.Количество = 0 ТОГДА 1 ИНАЧЕ РеализованныеАгентскиеУслуги.Количество КОНЕЦ ИЗ ВТ_РеализацииПоСчету КАК ВТ_РеализацииПоСчету ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.АгентскиеУслуги КАК РеализованныеАгентскиеУслуги ПО ВТ_РеализацииПоСчету.РеализацияТоваров = РеализованныеАгентскиеУслуги.Ссылка) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.СчетНаОплату, ВложенныйЗапрос.ЭтоУслуга, ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.Содержание ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_РасшифровкаПлатежа.СчетНаОплату КАК Документ, ДокументСчетНаОплатуПокупателю.Организация КАК Организация, ДокументСчетНаОплатуПокупателю.Дата КАК Дата, ЕСТЬNULL(ДокументСчетНаОплатуПокупателю.СуммаВключаетНДС, ИСТИНА) КАК СуммаВключаетНДС, ЕСТЬNULL(ДокументСчетНаОплатуПокупателю.СуммаСкидки, 0) КАК СуммаСкидкиПоДокументу, ВТ_РасшифровкаПлатежа.ДоговорКонтрагента КАК ДоговорКонтрагента, ДоговорыКонтрагентов.РасчетыВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах, ЕСТЬNULL(ДокументСчетНаОплатуПокупателю.ВалютаДокумента, &ВалютаРегламентированногоУчета) КАК ВалютаДокумента, ВТ_РеквизитыШапки.ВалютаДокумента КАК ВалютаПлатежа, СУММА(ВТ_РасшифровкаПлатежа.СуммаПлатежа) КАК СуммаОплаты, СУММА(ВТ_РасшифровкаПлатежа.СуммаВзаиморасчетов) КАК СуммаВзаиморасчетов, ВТ_РасшифровкаПлатежа.СтавкаНДС ПОМЕСТИТЬ ВТ_ОплачиваемыеДокументы ИЗ ВТ_РасшифровкаПлатежа КАК ВТ_РасшифровкаПлатежа ЛЕВОЕ СОЕДИНЕНИЕ ВТ_РеквизитыШапки КАК ВТ_РеквизитыШапки ПО ВТ_РасшифровкаПлатежа.Ссылка = ВТ_РеквизитыШапки.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК ДокументСчетНаОплатуПокупателю ПО ВТ_РасшифровкаПлатежа.СчетНаОплату = ДокументСчетНаОплатуПокупателю.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ПО ВТ_РасшифровкаПлатежа.ДоговорКонтрагента = ДоговорыКонтрагентов.Ссылка СГРУППИРОВАТЬ ПО ВТ_РасшифровкаПлатежа.СтавкаНДС, ДокументСчетНаОплатуПокупателю.Организация, ДокументСчетНаОплатуПокупателю.Дата, ВТ_РасшифровкаПлатежа.СчетНаОплату, ЕСТЬNULL(ДокументСчетНаОплатуПокупателю.СуммаВключаетНДС, ИСТИНА), ВТ_РеквизитыШапки.ВалютаДокумента, ВТ_РасшифровкаПлатежа.ДоговорКонтрагента, ЕСТЬNULL(ДокументСчетНаОплатуПокупателю.ВалютаДокумента, &ВалютаРегламентированногоУчета), ЕСТЬNULL(ДокументСчетНаОплатуПокупателю.СуммаСкидки, 0), ДоговорыКонтрагентов.РасчетыВУсловныхЕдиницах ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СчетНаОплатуПокупателюТовары.Ссылка КАК Документ, СчетНаОплатуПокупателюТовары.Ссылка.Дата КАК ДатаДокумента, СчетНаОплатуПокупателюТовары.Номенклатура, ВЫБОР КОГДА НЕ (СчетНаОплатуПокупателюТовары.Содержание ПОДОБНО "") ТОГДА СчетНаОплатуПокупателюТовары.Содержание КОГДА НЕ (СчетНаОплатуПокупателюТовары.Номенклатура.НаименованиеПолное ПОДОБНО "") ТОГДА СчетНаОплатуПокупателюТовары.Номенклатура.НаименованиеПолное ИНАЧЕ СчетНаОплатуПокупателюТовары.Номенклатура.Наименование КОНЕЦ КАК Наименование, МАКСИМУМ(ЕСТЬNULL(ШтрихкодыНоменклатуры.Штрихкод, НЕОПРЕДЕЛЕНО)) КАК Штрихкод, СУММА(ВЫБОР КОГДА СчетНаОплатуПокупателюТовары.Количество = 0 И ЕСТЬNULL(СчетНаОплатуПокупателюТовары.Номенклатура.Услуга, ИСТИНА) ТОГДА 1 ИНАЧЕ СчетНаОплатуПокупателюТовары.Количество КОНЕЦ) КАК Количество, ВЫРАЗИТЬ(ВЫБОР КОГДА ВТ_ОплачиваемыеДокументы.СуммаВключаетНДС ТОГДА СчетНаОплатуПокупателюТовары.Цена КОГДА СчетНаОплатуПокупателюТовары.Количество = 0 ТОГДА СчетНаОплатуПокупателюТовары.Сумма + СчетНаОплатуПокупателюТовары.СуммаНДС ИНАЧЕ (СчетНаОплатуПокупателюТовары.Сумма + СчетНаОплатуПокупателюТовары.СуммаНДС) / СчетНаОплатуПокупателюТовары.Количество КОНЕЦ КАК ЧИСЛО(15, 2)) КАК Цена, СУММА(СчетНаОплатуПокупателюТовары.СуммаСкидки) КАК СуммаСкидок, СчетНаОплатуПокупателюТовары.СтавкаНДС, СУММА(ВЫБОР КОГДА ВТ_ОплачиваемыеДокументы.СуммаВключаетНДС ТОГДА СчетНаОплатуПокупателюТовары.Сумма - СчетНаОплатуПокупателюТовары.СуммаСкидки ИНАЧЕ СчетНаОплатуПокупателюТовары.Сумма + СчетНаОплатуПокупателюТовары.СуммаНДС - СчетНаОплатуПокупателюТовары.СуммаСкидки КОНЕЦ) КАК Сумма, СУММА(ЕСТЬNULL(ВТ_РеализованнаяНоменклатура.Количество, 0)) КАК КоличествоОтгружено ИЗ Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюТовары ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОплачиваемыеДокументы КАК ВТ_ОплачиваемыеДокументы ПО СчетНаОплатуПокупателюТовары.Ссылка = ВТ_ОплачиваемыеДокументы.Документ И СчетНаОплатуПокупателюТовары.СтавкаНДС = ВТ_ОплачиваемыеДокументы.СтавкаНДС ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры ПО СчетНаОплатуПокупателюТовары.Номенклатура = ШтрихкодыНоменклатуры.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ ВТ_РеализованнаяНоменклатура КАК ВТ_РеализованнаяНоменклатура ПО (ВТ_РеализованнаяНоменклатура.СчетНаОплату = СчетНаОплатуПокупателюТовары.Ссылка) И (ВТ_РеализованнаяНоменклатура.Номенклатура = СчетНаОплатуПокупателюТовары.Номенклатура) И (ВТ_РеализованнаяНоменклатура.Содержание = СчетНаОплатуПокупателюТовары.Содержание) ГДЕ (СчетНаОплатуПокупателюТовары.Количество <> 0 ИЛИ ЕСТЬNULL(СчетНаОплатуПокупателюТовары.Номенклатура.Услуга, ИСТИНА)) И НЕ ВТ_ОплачиваемыеДокументы.Документ ЕСТЬ NULL СГРУППИРОВАТЬ ПО СчетНаОплатуПокупателюТовары.Ссылка, СчетНаОплатуПокупателюТовары.Ссылка.Дата, ВЫБОР КОГДА НЕ (СчетНаОплатуПокупателюТовары.Содержание ПОДОБНО "") ТОГДА СчетНаОплатуПокупателюТовары.Содержание КОГДА НЕ (СчетНаОплатуПокупателюТовары.Номенклатура.НаименованиеПолное ПОДОБНО "") ТОГДА СчетНаОплатуПокупателюТовары.Номенклатура.НаименованиеПолное ИНАЧЕ СчетНаОплатуПокупателюТовары.Номенклатура.Наименование КОНЕЦ, СчетНаОплатуПокупателюТовары.СтавкаНДС, ВЫРАЗИТЬ(ВЫБОР КОГДА ВТ_ОплачиваемыеДокументы.СуммаВключаетНДС ТОГДА СчетНаОплатуПокупателюТовары.Цена КОГДА СчетНаОплатуПокупателюТовары.Количество = 0 ТОГДА СчетНаОплатуПокупателюТовары.Сумма + СчетНаОплатуПокупателюТовары.СуммаНДС ИНАЧЕ (СчетНаОплатуПокупателюТовары.Сумма + СчетНаОплатуПокупателюТовары.СуммаНДС) / СчетНаОплатуПокупателюТовары.Количество КОНЕЦ КАК ЧИСЛО(15, 2)), СчетНаОплатуПокупателюТовары.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОплачиваемыеСчета.Документ, ОплачиваемыеСчета.Организация, ОплачиваемыеСчета.Дата, ОплачиваемыеСчета.СуммаСкидкиПоДокументу, ОплачиваемыеСчета.РасчетыВУсловныхЕдиницах И ОплачиваемыеСчета.ВалютаДокумента <> ОплачиваемыеСчета.ВалютаПлатежа КАК РасчетыВУсловныхЕдиницах, ОплачиваемыеСчета.СтавкаНДС, ОплачиваемыеСчета.СуммаОплаты, ОплачиваемыеСчета.СуммаВзаиморасчетов, СУММА(ЕСТЬNULL(ОплатаСчетов.Сумма, 0)) КАК СуммаОплатыВсего ИЗ ВТ_ОплачиваемыеДокументы КАК ОплачиваемыеСчета ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОплатаСчетов КАК ОплатаСчетов ПО ОплачиваемыеСчета.Документ = ОплатаСчетов.СчетНаОплату И ОплачиваемыеСчета.СтавкаНДС = ОплатаСчетов.СтавкаНДС И ОплачиваемыеСчета.Организация = ОплатаСчетов.Организация СГРУППИРОВАТЬ ПО ОплачиваемыеСчета.СтавкаНДС, ОплачиваемыеСчета.Документ, ОплачиваемыеСчета.Организация, ОплачиваемыеСчета.Дата, ОплачиваемыеСчета.СуммаОплаты, ОплачиваемыеСчета.СуммаВзаиморасчетов, ОплачиваемыеСчета.РасчетыВУсловныхЕдиницах И ОплачиваемыеСчета.ВалютаДокумента <> ОплачиваемыеСчета.ВалютаПлатежа, ОплачиваемыеСчета.СуммаСкидкиПоДокументу ; //////////////////////////////////////////////////////////////////////////////// |
|||
1
zak555
23.10.17
✎
12:03
|
по РБ и РН надо делать запрос
|
|||
2
DrShad
23.10.17
✎
12:26
|
(1) и не просто по ним как физическим таблицам, ибо такое соединение у ТС присутствует, а с их вирт таблицами оборотов и остатков
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |