|   |   | 
| 
 | Конкатенация в группировке запроса. как реализовать? | ☑ | ||
|---|---|---|---|---|
| 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); | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |