Имя: Пароль:
1C
 
Цикл в запросе, (не запрос в цикле)
0 drdroid
 
11.05.10
09:53
Необходимо в запросе который выводит отчет по контрагентам выводить рядом с наименованиями контрагентов колонку менеджеры контрагентов где в одной ячейке выводить всех менеджеров поставщика/покупателя через запятую. Т.е. в запросе необходимо пройтись по табличной части справочника и сцепить всех контрагентов в одну строку.
Как такое сделать в запросе 1С??? В оракле можно было воспользоваться курсором и циклом, в запросах 1С не вижу ничего подобного...

Есть ли возможность в запросе из табличной части сделать одну строку с разделителями?
1 also
 
11.05.10
09:55
в запросе, строку с запятыми не получишь
2 also
 
11.05.10
09:57
можешь в запросе например положить рядом с контрагентом в ячейку вложенную таблицу, а потом циклом из таблички сделать строчку с запятыми
3 drdroid
 
11.05.10
11:12
Пока делаю через цикл при обработке вывода отчета, хотелось бы элегантней в запросе все сделать.
4 also
 
11.05.10
11:13
(3) прочитай (1) еще раз
5 shuhard
 
11.05.10
11:19
(3) СКД + функция
6 Abracadabra
 
11.05.10
11:28
(0) в СКД:

ВЫБРАТЬ
   Контрагенты.Ссылка,
   ПолучитьСписокМенеджеров(Контрагенты.МенеджерыПокупателя.(
       Ссылка,
       НомерСтроки,
       МенеджерПокупателя
   )) КАК СписокМенеджеров
ИЗ
   Справочник.Контрагенты КАК Контрагенты

в глобальном модуле:

Функция ПолучитьСписокМенеджеров(ТаблицаМенеджеров)
   СтрокаМенеджеров = "";
   Для Каждого ТекСтрока Из ТаблицаМенеджеров Цикл
       СтрокаМенеджеров = СтрокаМенеджеров + ТекСтрока.МенеджерПокупателя + ", ";    
   КонецЦикла;

   Возврат СтрокаМенеджеров;

КонецФункции

Привет старикам и их любимому ПостроителюОтчетов :)
7 Abracadabra
 
11.05.10
11:29
У функции только нужно ляпнуть Экспорт
8 Serg_1960
 
11.05.10
11:34
Выводить менеджеров "через запятую", незная сколько их там в списке... ммм... не оптимальное решение.

Привет молодым и их любимому СКД - умный иструмент для... эээ... не оптимальных разработчиков :))
9 Abracadabra
 
11.05.10
11:36
(8) Во-первых, автор и так хочет выводить ВСЕХ менеджеров. Во-вторых, сложно себе представить базу, в которой у каждого контрагента будет прописано несколько сотен менеджеров ;)
10 Abracadabra
 
11.05.10
11:38
а в-третьих, на ПостроителеОтчета нужно будет наштамповать лишних пару сотен строчек кода, чтобы все это сделать :)
11 drdroid
 
11.05.10
13:15
(6) Это то что надо! Спасибо, еще пару вопросов:
Интересненько, а использовать функцию можно только в СКД или в любом запросе?
И без глобализации (для внешнего отчета) не обойтись?
12 shuhard
 
11.05.10
13:19
(11)
только в СКД
нельзя
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший