Имя: Пароль:
1C
1С v8
Помогите с запросом
,
0 Garikus
 
28.04.15
09:32
1С 8.2 запрос весьма примитивный, но не работает, сломал всю голову

Запрос1 = Новый Запрос;
    Запрос1.Текст =
        "ВЫБРАТЬ
        |    РеализацияТоваровУслугТовары.Количество
        |ИЗ
        |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |        ПО РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
        |ГДЕ
        |    РеализацияТоваровУслуг.Дата МЕЖДУ &ДН И &ДК
        |    И РеализацияТоваровУслуг.Проведен = ИСТИНА
        |    И РеализацияТоваровУслуг.Контрагент В (&Кон)";
        
    //контрг = справочники.Контрагенты.НайтиПоНаименованию(строка.ссылка.наименование);
    Запрос1.УстановитьПараметр("ДК", Началогода(ТекущаяДата()));
    Запрос1.УстановитьПараметр("ДН", ТекущаяДата());
    Запрос1.УстановитьПараметр("Кон",строка);

    Резул = Запрос1.Выполнить().Выгрузить();

В итоге резул пустой, подскажите что не так?
1 Garikus
 
28.04.15
09:32
(0) Строка это ссылка на контрагента
2 Jonny_Khomich
 
28.04.15
09:33
дата конца больше даты начала.
3 zak555
 
28.04.15
09:33
бери все нужны реквизиты шапки из тч
РеализацияТоваровУслугТовары.Ссылка.Контрагент
и т.д.
4 and2
 
28.04.15
09:34
массив для приличия сделал что ли
5 Jonny_Khomich
 
28.04.15
09:35
(2) тьфу, то есть наоборот. Дата начала больше даты конца
6 jsmith82
 
28.04.15
09:36
(2) +1
7 Garikus
 
28.04.15
09:36
(5) Б.... Пи... ПИ... спасибо, я ди.... , биг спасибо
8 Garikus
 
28.04.15
09:36
)))))))))))))))))))))))))))))))
9 jsmith82
 
28.04.15
09:36
да и с контрагентами беда
и вообще запрос ахтунг
10 Jonny_Khomich
 
28.04.15
09:37
(9) но это уже совсем другая история.
11 1Сергей
 
28.04.15
09:37
(5) +1

Чтобы не было путаницы, лучше давать имена переменным Дата1 и Дата2
12 jsmith82
 
28.04.15
09:38
дату конца можно вообще не трогать
просто >=
13 DomanM
 
28.04.15
09:39
а разве ссылка на контрагента срботает с "В"
14 Timon1405
 
28.04.15
09:46
ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Количество
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    И РеализацияТоваровУслугТовары.Ссылка.Проведен
    И РеализацияТоваровУслугТовары.Ссылка.Контрагент В(&Кон)
а вообще, запрос адов, конечно
15 Garikus
 
28.04.15
09:49
(14) а подскажите как красивее?
16 Garikus
 
28.04.15
09:50
нужно за определенный интервал получить общее количество отгруженного по контрагенту
17 PaulBC
 
28.04.15
09:53
(16) красивее использовать запрос к регистру продаж
18 Timon1405
 
28.04.15
09:54
(16) сравните мой вариант с вашим и подумайте, в чем отличие
А ваша задача решается примерно так
ВЫБРАТЬ
    ПродажиОбороты.КоличествоОборот
ИЗ
    РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, Авто, Контрагент = &Контрагент) КАК ПродажиОбороты
19 Vladal
 
28.04.15
09:57
(16) Тогда запрос не под документу, а по регистру продаж делай. Виртуальная таблица Обороты.
(5), (7) Я в запросах иногда сам меняю условия по периоду. Пример:

Из РегистрНакопления.Продажи.Обороты(Мин(НачалоПериода, ОкончаниеПериода), Макс(НачалоПериода, ОкончаниеПериода) ...

А то ж они как дети неразумныые - правят период ручками и потом плачут, что отчет не формируется.
20 Garikus
 
28.04.15
10:01
кол = РегистрыНакопления.Продажи.Обороты(Началогода(ТекущаяДата()),ТекущаяДата(), Новый Структура("Контрагент", строка.ссылка)).Итог("Количество"); как то так получилось
21 Vladal
 
28.04.15
10:10
(20) Это семерочный подход. Если надо получить значения в цикле, то в каждой итерации будет дергаться таблица оборотов, что неоптимально.
Правильно сделать запросом, где получить выборку сразу для списка контрагентов.

Лучше озвучь задачу целиком - сформулируй цель, от этого может зависеть правильность/оптимальность решения.