Есть почти стандартный регистр "ПартииНаличие" (ТиС).
Измерения:
Фирма
Номенклатура (включен отбор итогов)
СтатусПартии
Партия
Ресурсы:
Количество
СуммаРуб
СуммаБезНДС
Индексы:
Остатки
PERIOD,Фирма,Номенклатура,СтатусПартии,Парти
PERIOD,Номенклатура
Обороты
IDDOC,LINENO_,ACTNO
*******************************************
Документ.Реализация
АвтоматическаяНумерацияСтрок = 1
Индекс шапки:
IDDOC
ИндексТЧ:
IDDOC,LINENO_
-------------------------------------------
Есть Запрос1
RS.ОбратныйРасчетОтТА(1);
ТекстЗапроса = "
|SELECT
| Рег.Фирма as [Фирма $Справочник.Фирмы],
| Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],
| Рег.СтатусПартии as [СтатусПартии $Перечисление.СтатусыПартии],
| Рег.Партия as [Партия $Справочник.Партии],
| Рег.КоличествоОстатокas [Количество],
| Рег.СуммаРубОстаток as [СуммаРуб],
| Рег.СуммаБезНДСОстатокas [СуммаБезНДС]
|FROM
| $РегистрОстатки.ПартииНаличие(:КонДата~,,,
| (Фирма,Номенклатура,СтатусПартии,Партия),(Количество,СуммаРуб,СуммаБезНДС)) as Рег
|WHERE Рег.Номенклатура IN (
|SELECT
|$Док.Номенклатура
|FROM $ДокументСтроки.Реализация as Док
|WHERE
|Док.IDDOC = :ВыбДок)";
RS.УстановитьТекстовыйПараметр("КонДата", СформироватьПозициюДокумента(Док.ПолучитьПозицию(),1));
RS.УстановитьТекстовыйПараметр("ВыбДок", ВыбДок);
Есть Запрос2
RS.ОбратныйРасчетОтТА(1);
ТекстЗапроса =
"|SELECT
| Рег.Фирма as [Фирма $Справочник.Фирмы],
| Рег.Номенклатура as [Номенклатура$Справочник.Номенклатура],
| Рег.СтатусПартии as [СтатусПартии $Перечисление.СтатусыПартии],
| Рег.Партия as [Партия $Справочник.Партии],
| Рег.КоличествоОстаток as [Количество],
| Рег.СуммаРубОстаток as [СуммаРуб],
| Рег.СуммаБезНДСОстаток as [СуммаБезНДС]
|FROM
| $РегистрОстатки.ПартииНаличие(:КонДата~,,
,(Фирма,Номенклатура,СтатусПартии,Партия),
(Количество,СуммаРуб,СуммаБезНДС)) as Рег
|WHERE Рег.Номенклатура IN (SELECT $Док.Номенклатура FROM $ДокументСтроки.Реализация as Док (nolock) WHERE Док.IDDOC IN(SELECT IDDOC FROM $Документ.Реализация as Док1 WHERE Док1.IDDOC = :ВыбДок))";
RS.УстановитьТекстовыйПараметр("КонДата", СформироватьПозициюДокумента(Док.ПолучитьПозицию(),1));
RS.УстановитьТекстовыйПараметр("ВыбДок", ВыбДок);
И запрос3
RS.ОбратныйРасчетОтТА(1);
ТекстЗапроса = "
|SELECT
| Рег.Фирма as [Фирма $Справочник.Фирмы],
| Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],
| Рег.СтатусПартии as [СтатусПартии $Перечисление.СтатусыПартии],
| Рег.Партия as [Партия $Справочник.Партии],
| Рег.КоличествоОстаток as [Количество],
| Рег.СуммаРубОстаток as [СуммаРуб],
| Рег.СуммаБезНДСОстаток as [СуммаБезНДС]
|FROM
| $РегистрОстатки.ПартииНаличие(:КонДата~,,
| Номенклатура IN (SELECT $Док.Номенклатура FROM $ДокументСтроки.Реализация as Док (nolock) WHERE Док.IDDOC IN(SELECT IDDOC FROM $Документ.Реализация as Док1 WHERE Док1.IDDOC = :ВыбДок)),
| (Фирма,Номенклатура,СтатусПартии,Партия),(Количество,СуммаРуб,СуммаБезНДС)) as Рег";
тьПозицию(),1));
RS.УстановитьТекстовыйПараметр("ВыбДок", ВыбДок);
ТЗ1 = RS.ВыполнитьИнструкцию(ТекстЗапроса);
Вопрос 1: почему запрос2 быстрее чем запрос3 и запрос1?
Объясните пожалуйста)