Имя: Пароль:
1C
1С v8
Запрос
0 Начинающий_13
 
01.08.12
15:51
Здравствуйте
Скажите можно оптимизировать данный запрос?
Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ТМЦ_Товары.СтавкаНДС,
       |    ТМЦ_Товары.Сумма,
       |    ТМЦ_Товары.НДС,
       |    ТМЦ_Поступление.Контрагент,
       |    ТМЦ_Поступление.Договор,
       |    ТМЦ_Поступление.Валюта
       |ИЗ
       |    Документ.ТМЦ_Поступление.Товары КАК ТМЦ_Товары
       |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТМЦ_Поступление КАК ТМЦ_Поступление
       |        ПО ТМЦ_Товары.Ссылка = ТМЦ_Поступление.Ссылка
       |ГДЕ
       |    ТМЦ_Товары.Ссылка = &Ссылка
       |
       |ОБЪЕДИНИТЬ ВСЕ
       |
       |ВЫБРАТЬ
       |    ТМЦ_Материалы.СтавкаНДС,
       |    ТМЦ_Материалы.Сумма,
       |    ТМЦ_Материалы.НДС,
       |    ТМЦ_Поступление.Контрагент,
       |    ТМЦ_Поступление.Договор,
       |    ТМЦ_Поступление.Валюта
       |ИЗ
       |    Документ.ТМЦ_Поступление.Материалы КАК ТМЦ_Материалы
       |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТМЦ_Поступление КАК ТМЦ_Поступление
       |        ПО ТМЦ_Материалы.Ссылка = ТМЦ_Поступление.Ссылка
       |ГДЕ
       |    ТМЦ_Материалы.Ссылка = &Ссылка



// ОБХЕДИНЕНИЙ МОЖЕТ БЫТЬ МНОГО

Запрос.УстановитьПараметр("Ссылка", Ссылка);
       
   Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();
   
   ТЗ = Результат.Выгрузить();
   ЭлементыФормы.ТЗ.СоздатьКолонки();
   ТЗ.Свернуть("Контрагент,Договор,Валюта,СтавкаНДС","Сумма,НДС");
1 golden-pack
 
01.08.12
15:52
убрать левое соединение
2 golden-pack
 
01.08.12
15:53
ТМЦ_Товары.Ссылка - это и есть ссылка на документ
3 Нуф-Нуф
 
01.08.12
15:53
ужаснах
4 Нуф-Нуф
 
01.08.12
15:54
(2) ну соединение все равно будет, только неявное
5 golden-pack
 
01.08.12
15:54
даже такой запрос будет выплняться меньше секунды
6 Начинающий_13
 
01.08.12
15:54
А как нибудь еще обойти по метаданнм и загрузить в таблицу занчений или только объединением
7 Buster007
 
01.08.12
15:55
(2) если он его уберет, то это не значит, что оно не будет написано в результирующем запросе к sql. Будет неявное соединение.
8 golden-pack
 
01.08.12
15:55
(3) в чем ужас ?
9 Начинающий_13
 
01.08.12
15:55
Хочемся уменьщить писанину
10 МихаилМ
 
01.08.12
15:55
+(1)
при обращении к ТЧ
1с принудительно генерирует соединение с таблицей документов.
поэтому дополнительное тоже самое не требуется.
11 Reset
 
01.08.12
15:55
Выкинуть запрос нах и получить обороты из регистра накопления
12 Начинающий_13
 
01.08.12
15:55
Да ужаса нет хочется меньше что бы было
13 Reset
 
01.08.12
15:56
*взаиморасчетысконтрагнетами (скорее всего)
14 golden-pack
 
01.08.12
15:57
(7) и что теперь ... пусть будет лишний код в запросе ? Типа что бы понимать чекудаоткуда ?
15 Начинающий_13
 
01.08.12
15:57
Я просто формирую книгу покупок сразу при проведении документа прихода. Это самописка. Есть ли при это м недостатки?
16 hhhh
 
01.08.12
16:01
(14) так он делает левое соединение со всеми документами базы. За все годы. Прикинь. Как это может выполниться за одну секунду?
17 Начинающий_13
 
01.08.12
16:01
СПАСИБО
ВОПРОС ЗАКРЫТ
18 Buster007
 
01.08.12
16:02
(14) типа никакого смысла в твоем предложении со стороны оптимизации запроса нет, а дальше кому как нравится.
19 golden-pack
 
01.08.12
16:02
(16) надо будет проверить
20 golden-pack
 
01.08.12
16:03
(18) Да нет. Нафиг любителей написать лишний код - как нравиться
21 Дядя Вова
 
01.08.12
16:07
|ИЗ
       |    Документ.ТМЦ_Поступление.Товары КАК ТМЦ_Товары
       |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТМЦ_Поступление.Материалы КАК ТМЦ_ПоступлениеМатериалы
       |        ПО ТМЦ_Товары.Ссылка = ТМЦ_ПоступлениеМатериалы.Ссылка
       |ГДЕ
       |    ТМЦ_Товары.Ссылка = &Ссылка
А так нельзя что ли?
22 golden-pack
 
01.08.12
16:10
(21) :)
23 hhhh
 
01.08.12
16:14
(21)  Я бы написал

      ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТМЦ_Поступление КАК ТМЦ_Поступление
       |        ПО ТМЦ_Товары.Ссылка = ТМЦ_Поступление.Ссылка И ТМЦ_Поступление.Ссылка = &Ссылка

       |
24 Дядя Вова
 
01.08.12
16:18
(23) Разрешаю )