|
v7: Группировка в запросе | ☑ | ||
---|---|---|---|---|
0
IvD
29.03.19
✎
21:24
|
Добрый день, коллеги!
Помогите с запросом Запрос = СоздатьОбъект("Запрос"); ТекстПеременных = "//{{ЗАПРОС(Сформировать) |Период с ДатаНачала по ДатаКонца; |Фирма = Регистр.ПартииНаличие.Фирма; |Производитель = Регистр.ПартииНаличие.Партия.Производитель; |Товар = Регистр.ПартииНаличие.Номенклатура; |Код = Регистр.ПартииНаличие.Номенклатура.Код; |Контрагент = Регистр.ПартииНаличие.ТекущийДокумент.Реализация.Контрагент; |Количество = Регистр.ПартииНаличие.Количество; |Поставщик = Регистр.ПартииНаличие.Партия.Поставщик; |"; ТекстГруппировок = " |Группировка Контрагент Без Групп; |"; ТекстФункций = " |Функция Сумма = Расход(Количество); |"; ТекстУсловий = " |Условие(Фирма = ВыбФирма); |Условие(Производитель = ВыбПроизводитель); |Условие(Поставщик = ВыбПоставщик); |"//}}ЗАПРОС ; ТекстЗапроса = ТекстПеременных+РазделительСтрок+ТекстФункций+РазделительСтрок+ТекстГруппировок+РазделительСтрок+ТекстУсловий; Запрос = СоздатьОбъект("Запрос"); Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; В результат попадают не все записи регистра. Что я делаю не так?! |
|||
1
Злопчинский
29.03.19
✎
22:23
|
Видимо, делаешь неверные умозаключения о том. какие записи должны попадать. а компу на твои умозаключения плювать. он выдает то что написано скорее всего.
|
|||
2
GreyK
30.03.19
✎
10:27
|
(0) Тебе нужны только партии по документам "Реализация"?
|
|||
3
IvD
30.03.19
✎
10:41
|
(2) Номенклатура и производитель из партий с отбором по поставщику
|
|||
4
daviels
30.03.19
✎
11:23
|
|Контрагент = Регистр.ПартииНаличие.ТекущийДокумент.Реализация.Контрагент;
Вот это тогда зачем? у тебя в партии есть все что нужно: Поставщик, Производитель. В регистре есть Номенклатура... Переменная "Контрагент", а соответственно и группировка по ней лишняя получается... ты группируешь по переменной которая заполняется только из документа "Реализация". А задачу описал как: Номенклатура и производитель из партий с отбором по поставщику - тут контрагента нет... |
|||
5
Злопчинский
30.03.19
✎
11:25
|
потому что расход не только по реализациям.
убери контрагента из запроса и для начала сгруппируй например по партиям |
|||
6
daviels
30.03.19
✎
11:53
|
(5) - абсолютно верный совет
|
|||
7
Franchiser
гуру
30.03.19
✎
12:23
|
Тебе нужен coalesce.
По моему в 7.7 можно через запятую написать значение поля, ну или в конструкторе выборе контрагента из 2х документов. P.s. в SQL может этот запрос неправильно интерпретироваться из-за 3х точек |
|||
8
daviels
30.03.19
✎
12:50
|
(7) - это на прямых запросах только работает (1CPP)... прописать это в тексте запроса 7-шного не получится...
он не понимает таких конструкций.... т.е. написать типа: ТекстЗапроса = " Контрагент = coalesce(Документ.РасходнаяНакладная.Контрагент,Документ.РеализацияОтгруженнойПродукции.Контрагент); "; - НЕ ВЫЙДЕТ |
|||
9
daviels
30.03.19
✎
12:51
|
а если нужен контрагент из нескольких документов тогда
ТекстЗапроса = " Контрагент = Документ.РасходнаяНакладная.Контрагент ,Документ.РеализацияОтгруженнойПродукции.Контрагент; "; |
|||
10
daviels
30.03.19
✎
12:52
|
coalesce - возвращает первое значение не NULL
|
|||
11
IvD
30.03.19
✎
15:01
|
Спасибо, уже понятней стало. Только вот так ТекстЗапроса = "
Контрагент = Документ.РасходнаяНакладная.Контрагент ,Документ.РеализацияОтгруженнойПродукции.Контрагент; контрагент не заполняется. Через Регистр.ПартииНаличие.ТекущийДокумент.Реализация.Контрагент его видно... Я опять что -то не так делаю? |
|||
12
Злопчинский
30.03.19
✎
15:02
|
не надо ничего с контрагентами делать пока.
добейся что без контрагента возвращает правильный итог. |
|||
13
Злопчинский
30.03.19
✎
15:05
|
и мне очень сомнительно что у разных партий одного и того же товара разный производитель.
возможно имеет смысл переписать запрос на Регистр.Продажи |
|||
14
Злопчинский
30.03.19
✎
15:06
|
и.. это.. ПартииНаличие - основное назначение для исчисления "внутренних" сумм/движений. тянуть оттуда внешнего контрагента мне не кажется хорошей идеей
|
|||
15
IvD
30.03.19
✎
15:14
|
(13) все верно, у одной партии один производитель.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |