Имя: Пароль:
1C
1С v8
Запрос список складов в одну строку
, , ,
0 VOI
 
21.02.13
14:52
Есть два источника
Документ "Заявка" и Документ "Заказ"
Заявка связана с заказом ... у одной заявки может быть мого заказов.
Мне нужно вывести два столбца: "Скалад Заявка" и "Склад Заказ"

Необходимы поля запроса:
СкладЗаявка - это склад из шапки Документа "Заявка"
СкладЗаказ  - это список складов в одной ячейке (названий) на уровне одной заявки

Исходная ситуация:
Скзад Заявка
       |- Склад Заказ № 1
       |- Склад Заказ № 2
       |- Склад Заказ № 3

Что нужно:
Склад Заказ |  Склад Заказ №1 , Склад Заказ №2, Склад Заказ №3|
1 Wobland
 
21.02.13
14:53
ясно
2 VOI
 
21.02.13
15:06
Пример выдуманый чтобы неописывать основную задачу. Может кто встречался с такого рода задачкой? Наставте на путь истинны... Нехватает одно этого винтика к моему отчету.
3 VOI
 
21.02.13
15:07
(0) + необходимо плучить список складов (из примера) в одной ячейке, т.е текстовым представлением.
4 Wobland
 
21.02.13
15:08
(3) ну и собирай свою строку. спорим, не убедишь, что именно в запросе надо?
5 Maxus43
 
21.02.13
15:09
в СКД легко, в запросе посложней
6 Wobland
 
21.02.13
15:10
(5) ну-ка, ну-ка. как в запросе? слыхал я краем уха про какие-то диалекты sql...
7 VOI
 
21.02.13
15:12
(4) - да именно в запросе. Дело в том что сам отчет я докуручиваю, начинал его другой программер. Используется построитель отчетов. А с построителем сильно ненаиграешся, покрайней мере неразгонишся))
8 Maxus43
 
21.02.13
15:15
в запросе - если знать количество складов то можно. Или динамически текст запроса составлять
9 Wobland
 
21.02.13
15:15
(8) весь цимес в том, что в каждой ожидаемой строке количество разное
10 Wobland
 
21.02.13
15:16
(7) у построителя можно текст забрать. а я его не люблю и не умею. собирай потом
11 Maxus43
 
21.02.13
15:16
(9) можно исходить из макисмального количества, в ущерб красоте получим результат
12 Maxus43
 
21.02.13
15:18
короче я за СКД. Или за пост обработку результата
13 Нуф-Нуф
 
21.02.13
15:19
а что мешает получить в скд?
14 VOI
 
21.02.13
15:20
(13) - (7)
15 Maxus43
 
21.02.13
15:21
(14) запихни его запрос в СКД, красивей будет
16 VOI
 
21.02.13
15:25
(15) Эххх да вот уже задумываюсь.
17 GANR
 
21.02.13
15:35
В запросе-то? Я бы пихнул в СКД, и если надо В ТЗ/дерево выгрузил результат. Ну да ладно:

1. Пронумеровать склад / заказы внутри группы (додумайтесь сами) склад / заявка Книга знаний: v8: Нумерация строк в запросе
2. Сгруппировать по склад / заявка
3. Взять агрегатные функции
МАКСИМУМ(ВЫБОР КОГДА НомерПП = 1 ТОГДА СкдлаЗаказ.Наиенование ИНАЧЕ "" КОНЕЦ)
МАКСИМУМ(ВЫБОР КОГДА НомерПП = 2 ТОГДА СкдлаЗаказ.Наиенование ИНАЧЕ "" КОНЕЦ)
...
МАКСИМУМ(ВЫБОР КОГДА НомерПП = N ТОГДА СкдлаЗаказ.Наиенование ИНАЧЕ "" КОНЕЦ)
4. Сложить п.3 через запятую

Что-нибудь понятно?
18 GANR
 
21.02.13
15:36
Но в (17) есть ограничение (8)
19 GANR
 
21.02.13
15:37
А в MS SQL для (17) есть PIVOT
20 VOI
 
21.02.13
15:44
(17) Спасибо, буду пробывать )
21 GANR
 
21.02.13
15:47
(20) Но лучше, как советуют (12)(13) и (17). И, кстати, вполне вероятно, что тебе будет проще на СКД написать с нуля этот отчет.