Имя: Пароль:
1C
 
Конкатенация в группировке запроса. как реализовать?
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);