|
СКД Рассчитываемое поле по условию Группировка одних полей - Сумма другого поля | ☑ | ||
---|---|---|---|---|
0
fantomrik
06.10.14
✎
16:24
|
http://fastpic.ru/view/68/2014/1006/9232ffa6692d4fceb7771677fcc50ca5.jpeg.html
Наверно не совсем верно описал... Есть номенклатура, она может лежать на разных локациях в пределах склада. При текущей компоновке пользователь раскрывает группировку "Номенклатура" и видит локации с количеством на каждой. Но ему не нужна детализация, о просто на уровне номенклатуры видеть еще 1 колонку в которой через любой разделитель отмечены все локации... В запросе не сгруппировать строки с суммированием определенного поля (строкового), вот и подумал, мб в СКД так можно сделать через рассчитываемое поле? |
|||
1
fantomrik
06.10.14
✎
16:41
|
Вижу тут как вариант собирать таблицу программно и передавать внешним набором данных, но хотелось бы изящнее, если скд так позволяет.
|
|||
2
Timon1405
06.10.14
✎
16:53
|
похоже на ваше? http://forum.infostart.ru/forum26/topic43280/
|
|||
3
fantomrik
06.10.14
✎
20:11
|
(2) Спасибо, похоже, но пока решил через программную компановку, внешним набором данных.
|
|||
4
fantomrik
06.10.14
✎
20:38
|
Собственно в продолжение темы.... Результат запроса обхожу руками. До 10000 строк довольно резво обрабатывает, но далее скорость падает в геометрической прогрессии. Можно ли как оптимизировать код, или функции работы со строками сами по себе не очень быстрые и ни чего сделать не получится?
[code] Для каждого СтрокаТЗ Из Результат Цикл Если НЕ ЗначениеЗаполнено(СтрокаТЗ.ИтогЛокаций) Тогда //Перед началом цикла данная колонка добавляется, т.е. она пустая, //но ниже, обходя найденные строки она может стать заполнена Отбор = Новый Структура(); Если ЗначениеЗаполнено(СтрокаТЗ.Артикул) Тогда Отбор.Вставить("Артикул",СтрокаТЗ.Артикул); Локации = Результат.НайтиСтроки(Отбор); Иначе Отбор.Вставить("Номенклатура",СтрокаТЗ.Номенклатура); Локации = Результат.НайтиСтроки(Отбор); КонецЕсли; МассивЛокацийТекст = ""; Для каждого ЭлементаМассива Из Локации Цикл МассивЛокацийТекст = МассивЛокацийТекст + СокрЛП(ЭлементаМассива.Локация) + " "; КонецЦикла; //Без локаций будем писать последним, просто для эстетики Если Найти(МассивЛокацийТекст, "Без локации") > 0 Тогда МассивЛокацийТекст = СтрЗаменить(МассивЛокацийТекст,"Без локации ",""); МассивЛокацийТекст = МассивЛокацийТекст + " Без локации" КонецЕсли; Для каждого Элемента Из Локации Цикл Элемента.ИтогЛокаций = МассивЛокацийТекст; КонецЦикла; КонецЕсли; КонецЦикла; [/code] |
|||
5
vicof
06.10.14
✎
20:47
|
а выводить в отдельный набор или расшифровку по отчету не предлагать?
|
|||
6
vicof
06.10.14
✎
20:51
|
Сделать настройку в виде таблицы, где в столбцах будут указаны локации
|
|||
7
fantomrik
06.10.14
✎
20:56
|
локаций много, получится туева хуча столбцов постоянных и на пересечении будет осток только в тех строках/столбцах, где он есть. как вам строка, к которой добавилось 90 столбцов и только в 85 ом столбце есть цифра?)
|
|||
8
fantomrik
07.10.14
✎
10:37
|
Ап
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |