|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
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) Это семерочный подход. Если надо получить значения в цикле, то в каждой итерации будет дергаться таблица оборотов, что неоптимально.
Правильно сделать запросом, где получить выборку сразу для списка контрагентов. Лучше озвучь задачу целиком - сформулируй цель, от этого может зависеть правильность/оптимальность решения. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |