Имя: Пароль:
1C
1С v8
Ошибка в запросе
0 SherifSP
 
13.03.13
11:49
ТекстЗапроса = "ВЫБРАТЬ
                  |    ЗаказПокупателя.Контрагент КАК Контрагент,
                  |    ЗаказПокупателя.ТорговаяТочка КАК ТорговаяТочка,
                  |    ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)) КАК Адрес,
                  |    ЗаказПокупателя.Ссылка КАК Заказ
                  |ИЗ
                  |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                  |        ПО ЗаказПокупателя.ТорговаяТочка = КонтактнаяИнформация.Объект
                  |ГДЕ
                  |    ЗаказПокупателя.Проведен
                  |    И ЗаказПокупателя.ДатаОтгрузки = &ДатаОтгрузки
                  |    И ЗаказПокупателя.ТорговаяТочка.Регион В ИЕРАРХИИ(&Регион)
                  |    И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
                  |ИТОГИ
                  |    МАКСИМУМ(Контрагент),
                  |    МАКСИМУМ(Адрес)
                  |ПО
                  |    ТорговаяТочка";
   
   Если ХО Тогда
       ТекстЗапроса = ТекстЗапроса + "
       |    И ЗаказПокупателя.ХолодильноеОборудование = Истина";
   КонецЕсли;


А вот и сама ошибка

{(20, 2)}: Синтаксическая ошибка "И"
<<?>>И ЗаказПокупателя.ХолодильноеОборудование = Истина
1 Chin
 
13.03.13
11:50
Потому что условие добовляется в текст после упорядочивания "ПО"
2 Defender aka LINN
 
13.03.13
11:50
Да. И?
3 Chin
 
13.03.13
11:51
Точнее после итогов
4 SherifSP
 
13.03.13
11:52
(2) В чем ошибка?)
5 SherifSP
 
13.03.13
11:53
То есть нужно добавить непосредственно в самом запросе?
6 Fragster
 
гуру
13.03.13
11:54
надо курить построитель запроса
7 SherifSP
 
13.03.13
11:54
Вот так типа ?

"ВЫБРАТЬ
                  |    ЗаказПокупателя.Контрагент КАК Контрагент,
                  |    ЗаказПокупателя.ТорговаяТочка КАК ТорговаяТочка,
                  |    ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)) КАК Адрес,
                  |    ЗаказПокупателя.Ссылка КАК Заказ
                  |ИЗ
                  |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                  |        ПО ЗаказПокупателя.ТорговаяТочка = КонтактнаяИнформация.Объект
                  |ГДЕ
                  |    ЗаказПокупателя.Проведен
                  |    И ЗаказПокупателя.ДатаОтгрузки = &ДатаОтгрузки
Если ХО Тогда
       ТекстЗапроса = ТекстЗапроса + "
       |    И ЗаказПокупателя.ХолодильноеОборудование = Истина";
   КонецЕсли;
                  |    И ЗаказПокупателя.ТорговаяТочка.Регион В ИЕРАРХИИ(&Регион)
                  |    И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
                  |ИТОГИ
                  |    МАКСИМУМ(Контрагент),
                  |    МАКСИМУМ(Адрес)
                  |ПО
                  |    ТорговаяТочка";
8 SherifSP
 
13.03.13
11:54
Ток без кавычек )
9 Maxus43
 
13.03.13
11:54
(7) нет конечно
10 Chin
 
13.03.13
11:55
(7) Типа так, но красивей так:
ТекстЗапроса = "ВЫБРАТЬ
                  |    ЗаказПокупателя.Контрагент КАК Контрагент,
                  |    ЗаказПокупателя.ТорговаяТочка КАК ТорговаяТочка,
                  |    ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)) КАК Адрес,
                  |    ЗаказПокупателя.Ссылка КАК Заказ
                  |ИЗ
                  |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                  |        ПО ЗаказПокупателя.ТорговаяТочка = КонтактнаяИнформация.Объект
                  |ГДЕ
                  |    ЗаказПокупателя.Проведен
                  |    И ЗаказПокупателя.ДатаОтгрузки = &ДатаОтгрузки
                  |    И ЗаказПокупателя.ТорговаяТочка.Регион В ИЕРАРХИИ(&Регион)
                  |    И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
                  |    &Вставка
                  |ИТОГИ
                  |    МАКСИМУМ(Контрагент),
                  |    МАКСИМУМ(Адрес)
                  |ПО
                  |    ТорговаяТочка";
   
   ТекстЗапроса = СтрЗаменить(ТекстЗапроса, &Вставка, ?(XO, "
       |    И ЗаказПокупателя.ХолодильноеОборудование = Истина", ""));
11 regniws
 
13.03.13
11:55
да, рубай прям так!
12 Sammo
 
13.03.13
11:55
1. И должно добавляться в ГДЕ
2. Там нефига не левое соединение, а внутренне (Где может превращать левое во внутреннее)
13 Chin
 
13.03.13
11:56
(10) Там где замена текста вставка в ковычках должная быть "&Вставка"
14 Рэйв
 
13.03.13
11:56
ТекстЗапроса = "ВЫБРАТЬ
                  |    ЗаказПокупателя.Контрагент КАК Контрагент,
                  |    ЗаказПокупателя.ТорговаяТочка КАК ТорговаяТочка,
                  |    ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)) КАК Адрес,
                  |    ЗаказПокупателя.Ссылка КАК Заказ
                  |ИЗ
                  |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                  |        ПО ЗаказПокупателя.ТорговаяТочка = КонтактнаяИнформация.Объект
                  |ГДЕ
                  |    ЗаказПокупателя.Проведен
                  |    И ЗаказПокупателя.ДатаОтгрузки = &ДатаОтгрузки
                  |    И ЗаказПокупателя.ТорговаяТочка.Регион В ИЕРАРХИИ(&Регион)
                  |    И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)";
                   Если ХО Тогда
                      ТекстЗапроса = ТекстЗапроса + "
                   |    И ЗаказПокупателя.ХолодильноеОборудование = Истина";
                   КонецЕсли;                  
                   ТекстЗапроса = ТекстЗапроса + "
                  |ИТОГИ
                  |    МАКСИМУМ(Контрагент),
                  |    МАКСИМУМ(Адрес)
                  |ПО
                  |    ТорговаяТочка";
15 Maxus43
 
13.03.13
11:57
|ГДЕ
                  |    ЗаказПокупателя.Проведен
                  |    И ЗаказПокупателя.ДатаОтгрузки = &ДатаОтгрузки
                  |    И ЗаказПокупателя.ТорговаяТочка.Регион В ИЕРАРХИИ(&Регион)
                  |    И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
                  |    //ХО
  Если ХО Тогда

ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//XO", "И ЗаказПокупателя.ХолодильноеОборудование = Истина");

а мне так больше нравится
16 zladenuw
 
13.03.13
11:58
я за условие в самом запросе
17 SherifSP
 
13.03.13
12:02
Сколько программистов, столько и стилей))
18 Рэйв
 
13.03.13
12:03
// или так


ТекстЗапроса = "ВЫБРАТЬ
                  |    ЗаказПокупателя.Контрагент КАК Контрагент,
                  |    ЗаказПокупателя.ТорговаяТочка КАК ТорговаяТочка,
                  |    ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)) КАК Адрес,
                  |    ЗаказПокупателя.Ссылка КАК Заказ
                  |ИЗ
                  |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                  |        ПО ЗаказПокупателя.ТорговаяТочка = КонтактнаяИнформация.Объект
                  |ГДЕ
                  |    ЗаказПокупателя.Проведен
                  |    И ЗаказПокупателя.ДатаОтгрузки = &ДатаОтгрузки
                  |    И ЗаказПокупателя.ТорговаяТочка.Регион В ИЕРАРХИИ(&Регион)
                  |    И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)";
                  |    И ( &ХО  И ЗаказПокупателя.ХолодильноеОборудование )
                  |ИТОГИ
                  |    МАКСИМУМ(Контрагент),
                  |    МАКСИМУМ(Адрес)
                  |ПО
                  |    ТорговаяТочка";
                 
                  Запрос.УстановитьПараметр("ХО",ХО);
19 SherifSP
 
13.03.13
12:03
(14) Как по мне самый читаемый)
20 Maxus43
 
13.03.13
12:04
(19) только забудь о конструкторе запросов тогда
21 SherifSP
 
13.03.13
12:06
(20) Знаю)
22 sapphire
 
13.03.13
12:09
(18) Не совсем правильно
23 sapphire
 
13.03.13
12:11
(18)
ТекстЗапроса = "ВЫБРАТЬ
                  |    ЗаказПокупателя.Контрагент КАК Контрагент,
                  |    ЗаказПокупателя.ТорговаяТочка КАК ТорговаяТочка,
                  |    ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)) КАК Адрес,
                  |    ЗаказПокупателя.Ссылка КАК Заказ
                  |ИЗ
                  |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                  |        ПО ЗаказПокупателя.ТорговаяТочка = КонтактнаяИнформация.Объект
                  |ГДЕ
                  |    ЗаказПокупателя.Проведен
                  |    И ЗаказПокупателя.ДатаОтгрузки = &ДатаОтгрузки
                  |    И ЗаказПокупателя.ТорговаяТочка.Регион В ИЕРАРХИИ(&Регион)
                  |    И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)";
                  |    И ( (&ХО  И ЗаказПокупателя.ХолодильноеОборудование) ИЛИ (Не &ХО))
                  |ИТОГИ
                  |    МАКСИМУМ(Контрагент),
                  |    МАКСИМУМ(Адрес)
                  |ПО
                  |    ТорговаяТочка";
                 
                  Запрос.УстановитьПараметр("ХО",ХО);

// Если ХО не установлен, то отбора нет
24 Fragster
 
гуру
13.03.13
12:12
(23) это самый медленный вариант
25 Рэйв
 
13.03.13
12:12
(23)Возможно:-)  проверить запустить негде
26 Лефмихалыч
 
13.03.13
12:19
юзайте компоновку или на худо конец построитель
2 + 2 = 3.9999999999999999999999999999999...