|
Цикл в запросе СКД | ☑ | ||
---|---|---|---|---|
0
ifoxy
01.11.13
✎
11:00
|
Подскажите, как организовать цикл в запросе в СКД? Сдесь в одной теме вычитала советуют
в СКД: ВЫБРАТЬ Контрагенты.Ссылка, ПолучитьСписокМенеджеров(Контрагенты.МенеджерыПокупателя.( Ссылка, НомерСтроки, МенеджерПокупателя )) КАК СписокМенеджеров ИЗ Справочник.Контрагенты КАК Контрагенты в глобальном модуле: Функция ПолучитьСписокМенеджеров(ТаблицаМенеджеров) СтрокаМенеджеров = ""; Для Каждого ТекСтрока Из ТаблицаМенеджеров Цикл СтрокаМенеджеров = СтрокаМенеджеров + ТекСтрока.МенеджерПокупателя + ", "; КонецЦикла; Возврат СтрокаМенеджеров; КонецФункции но у меня так не получается, никакую функцию запрос признавать не хочет. Может быть существуют другие варианты зациклить запрос? |
|||
1
Ksandr
01.11.13
✎
11:03
|
Какая задача стоит?
|
|||
2
fisher
01.11.13
✎
11:03
|
По дефолту использование внешних функций в СКД отключено. Смотри примеры программной компоновки.
Но вообще эту хрень можно реализовать без внешних функций. Смотри примеры использования функции СКД ВычислитьВыражениеСГруппировкойМассив() |
|||
3
Ksandr
01.11.13
✎
11:05
|
(2) Можно и просто Массив(ИмяПоля), автор получит, что хочет
|
|||
4
Feunoir
01.11.13
✎
11:10
|
(3) Я бы ещё добавил СоединитьСтроки на всякий случай
СоединитьСтроки(Массив(Контрагенты.МенеджерыПокупателя)) |
|||
5
fisher
01.11.13
✎
11:10
|
(3) И то верно. Привык к более сложным раскладам :)
|
|||
6
fisher
01.11.13
✎
11:10
|
(4) СоединитьСтроки() добавляется автоматом в случае (3). Это документировано.
|
|||
7
fisher
01.11.13
✎
11:12
|
Но можно вызвать явно, если нужен свой разделитель значений.
|
|||
8
Feunoir
01.11.13
✎
11:12
|
(6) Может быть, просто я тут давеча выводил массив чисел, он мне их как массив и вывел, не через запятую, а в столбик. Поэтому "на всякий случай".
|
|||
9
fisher
01.11.13
✎
11:15
|
(8) Хм... Может ты и прав. В СП пишут, что СоединитьСтроки() по дефолту юзает разделителем перевод строки. Странно. Вроде когда я ВычислитьВыражениеСГруппировкойМассив() юзал выводило через запятую...
|
|||
10
ifoxy
01.11.13
✎
11:32
|
забыла уточнить, у меня 8.1 хотя думаю особого значение это не имеет
(3) а можно поподробнее, что значит Массив(ИмяПоля) это мне в запросе такое написать или где? |
|||
11
fisher
01.11.13
✎
11:42
|
(10) Боюсь, имеет. Кажись, в 8.1 этих функций еще не было.
|
|||
12
fisher
01.11.13
✎
11:43
|
В 8.2 это можно писать в выражениях вычисляемых полей и ресурсов СКД.
|
|||
13
ifoxy
01.11.13
✎
11:52
|
а можно тогда маленький примерчик, как бы это было в 8.2 и какой разультат получился, я просто не очень понимаю как можно зациклить одно поле если его результат зависит от даты например.
|
|||
14
fisher
01.11.13
✎
12:05
|
(13) Никакого зацикливания. Допустим, детальные записи у тебя содержат и контрагентов и их менеджеров (соединение с табличной частью).
Делается группировка по контрагентам, а Массив(Менеджер) выступает в качестве агрегатной функции ресурса. |
|||
15
fisher
01.11.13
✎
12:07
|
(13) "Если результат зависит от даты" - если ты имеешь в виду что-то типа среза последних на даты из запроса, то это совсем другой случай. В книге знаний есть примеры. Решается или хитрым запросом к основной таблице регистра, или соединением наборов данных СКД.
|
|||
16
fisher
01.11.13
✎
12:09
|
(15) + В случае параметризированного соединения наборов данных в самом деле получается логика вложенного цикла.
|
|||
17
ifoxy
01.11.13
✎
12:14
|
ну да, соединение наборов данных мне как раз подходит, но в 8.1 есть особенность, в такой конструкции не работают отборы, а они очень нужны(((
|
|||
18
fisher
01.11.13
✎
12:20
|
(17) Если нужны отборы в правом наборе - тогда да, проблема.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |