|
Конкатенация в группировке запроса. как реализовать? | ☑ | ||
---|---|---|---|---|
0
golem14
05.07.21
✎
09:39
|
ВЫБРАТЬ
Сумма(Сумма), Контрагент, Конкатенация(Комментарий) ИЗ Таблица СГРУППИРОВАТЬ ПО Контрагент |
|||
1
ДенисЧ
05.07.21
✎
09:40
|
Переходи на СКД, там это реализовано
|
|||
2
golem14
05.07.21
✎
09:41
|
мне в запросе надо.
|
|||
3
golem14
05.07.21
✎
09:41
|
ну может кодом в постобработке
|
|||
4
mikecool
05.07.21
✎
09:42
|
(3) давай кодом, в запросе никак
|
|||
5
golem14
05.07.21
✎
09:44
|
(4) а как кодом, что-то не соображу.
|
|||
6
OldCondom
05.07.21
✎
09:44
|
эмм, в ВТ без группировки и потом результат сгруппировать?
|
|||
7
golem14
05.07.21
✎
09:45
|
только если перебирать всех контрагентов в цикле
|
|||
8
ДенисЧ
05.07.21
✎
09:47
|
(7) Разумеется, перебирать. А как иначе, если тебе лень простую схему на СКД набросать и программно её выполнить
|
|||
9
golem14
05.07.21
✎
09:49
|
(8) я попробую, но боюсь не осилю.
|
|||
10
Sserj
05.07.21
✎
10:09
|
А вот если бы 1С довала доступ к SQL серверу, то можно было бы просто написать string_agg(Комментарий)
|
|||
11
ДенисЧ
05.07.21
✎
10:12
|
(10) А исчо тибе ничо ни доть?
|
|||
12
acht
05.07.21
✎
10:18
|
(10) Особенно на каком-нибудь DB2, да.
|
|||
13
Said_We
05.07.21
✎
10:27
|
(0) Недавно давал вариант в SQL на 1С как это сделать, но это Извращенский вариант.
|
|||
14
Said_We
05.07.21
✎
10:30
|
(4) :-) прямо-таки ни как?
|
|||
15
Said_We
05.07.21
✎
10:47
|
(0) Тут умножение, но так же можно и складывать строки.
Произведение чисел в запросе пост 12 с пояснениями в 32 и 33. Остальное можно не читать, кроме того что это ахинея, но работает :-) Тут тоже п посте 12 ссылка: Объединение повторяющихся строк в Запросе с различным полем |
|||
16
Said_We
05.07.21
✎
10:56
|
(0) Есть ещё один способ, он где-то тоже в этих или соседних ветках был описан.
Суть в несколько итераций сложить соседние строки. Тоже через нумерацию. Складываются 1+2, 3+4, 5+6... Перенумеровываются. Итерация повторяется. 10 итераций Это 2**10 = 1024 куска можно сложить. й ц у к е н г ш щ з йц ук ен гш щз йцук енгш щз йцукенгш щз йцукенгшщз |
|||
17
golem14
05.07.21
✎
12:13
|
у меня получилось! вот минимальный пример если кому интересно
выражение в СКД: СоединитьСтроки(Комментарий, ",") Получение ТЗ из СКД: ОбъектОтчет = РеквизитФормыВЗначение("Отчет"); ОСКД = ОбъектОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); НастройкиОСКД = ОСКД.НастройкиПоУмолчанию; ПараметрыДанныхОСКД = НастройкиОСКД.ПараметрыДанных.Элементы; Параметр = ПараметрыДанныхОСКД.Найти("Сумма"); Параметр.Значение = 1; КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакетаОСКД.Выполнить(ОСКД, НастройкиОСКД,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиОСКД = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиОСКД.Инициализировать(Макет); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТЗ = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ТЗ); ПроцессорВывода.Вывести(ПроцессорКомпоновкиОСКД); |
|||
18
ДенисЧ
05.07.21
✎
12:15
|
Вот... Могут же люди, когда сильно прижмёт )))
(17) Молодец! |
|||
19
ДенисЧ
05.07.21
✎
12:16
|
Только вместо
ПараметрыДанныхОСКД = НастройкиОСКД.ПараметрыДанных.Элементы; Параметр = ПараметрыДанныхОСКД.Найти("Сумма"); Параметр.Значение = 1; Лучше НастройкиОСКД.ПараметрыДанных.УстановитьЗначениеПараметра("Сумма", 1); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |