|
Остатки в ТЗ и фильтр по остаткам | ☑ | ||
---|---|---|---|---|
0
ХочуСпец
07.12.12
✎
09:29
|
Задача: вывести пользователю в табличное поле данные по запасам товаров в разрезе складов. А также дать возможность фильтровать данные по остаткам. Строки: номенклатура. Колонки: Склады. Фильтры: н-р, для для склада СКЛАД1 остаток > 10, для склада СКЛАД2 остаток < 100 и т.д.
Задачу решил так: Запросом в ТЗ вывожу остатки номенклатуры. Выборкой дополняю остатками по складам (колонки). Используя построитель фильтрую данные по остаткам. Проблема: не устраивает скорость работы. Получать остатки при получении данных не вариант, фильтровать необходимо по все ТЗ, а не только по видимой части. Может использовать СКД. В настройка добавить таблицу. Для строк – указать группировку Номенклатура, колонки – Склады. Ресурс – Остаток. Но как потом выгрузить все это в коллекцию значений, ведь по сути это кросс таблица. |
|||
1
hhhh
07.12.12
✎
09:33
|
(0) ну возьмите в УТ 10.3 рабочее место менеджера продаж. Там классно всё показывает. И в разрезе складов.
|
|||
2
Рэйв
07.12.12
✎
09:35
|
Сделай отдельную форму с табличной частью. Заполняй таб часть остатками. Потом легкл фильтруется по любой клонке, в том числе и по остатку.
Минус один - остатки будут не динамическими, надо будет обновлять в случае чего...Ну так у тебя и тормозит все именно из-за динамики |
|||
3
kotletka
07.12.12
✎
09:36
|
спрашивать про быстродейсвтие при этом непривести код и замеры производительности = "поди туда, незнаю куда" может у тебя все верно, но запрос написан через опу и выполняется 50% времени
|
|||
4
ХочуСпец
07.12.12
✎
09:36
|
(2) так и делаю
|
|||
5
ХочуСпец
07.12.12
✎
09:36
|
(3) причем тут код. Запрос простейший. Нужна идея
|
|||
6
ХочуСпец
07.12.12
✎
09:37
|
(3) запрос выполняется быстро. Основное время занимает выборка из запроса (заполнение остатков по колонкам)
|
|||
7
kotletka
07.12.12
✎
09:37
|
(5)твоя идея впринципе верна и тормозить сильно не должно. я говорю про то что может у тебя может тормозит не алгоритм, а реализация
|
|||
8
Maxus43
07.12.12
✎
09:38
|
а отчеты юзерам смотреть не вариант чтоли?
|
|||
9
ХочуСпец
07.12.12
✎
09:40
|
(8) тут редактировать еще надо, перетаскивать и прочее
|
|||
10
Maxus43
07.12.12
✎
09:50
|
(9) подбор номенклатуры обработину смотрел же? там реализовано вроде всё что хочешь
|
|||
11
Рэйв
07.12.12
✎
09:52
|
(10)Отбора на больше-меньше там нет помоему
|
|||
12
ХочуСпец
07.12.12
✎
09:53
|
(10) да и нет отображения складов как колонок. Это динамические списки
|
|||
13
ХочуСпец
07.12.12
✎
09:59
|
хочется использовать СКД, но как в коллекцию значений запихать в таком виде?
|
|||
14
Maxus43
07.12.12
✎
10:01
|
(13) используя в СКД "Таблицу"- никак
|
|||
15
ХочуСпец
07.12.12
✎
10:02
|
(14) к сожалению
|
|||
16
Maxus43
07.12.12
✎
10:06
|
зачем заморачиватся на "Колонках" складах? пусть строками будут склады, в виде дерева норм будет, номенколатура и список складов к ней с количеством
|
|||
17
ХочуСпец
07.12.12
✎
10:11
|
похоже это единственный вариант, придется прогибать заказчика
|
|||
18
Maxus43
07.12.12
✎
10:14
|
(17) этот вариант проще и куча реализованого есть уже просто. (2) тоже вариант, но мне дично не нравится
|
|||
19
ХочуСпец
07.12.12
✎
10:20
|
(18) хм, а как тогда реализовать условие:
По складу1 остаток < 10 И По складу2 остаток > 5 |
|||
20
Maxus43
07.12.12
✎
10:31
|
(19) в ТЧ?
|
|||
21
ХочуСпец
07.12.12
✎
10:36
|
да. Ведь будет только три колонки Номенклатура, Склад, Остаток.
В моем же случае: Номенклатура, ОстатокНаСкладе1, ОстатокНаСкладе2, ... |
|||
22
Maxus43
07.12.12
✎
10:39
|
(21) запрос к ТЧ, там условия, Выгрузить/загрузить.
Как вариант общая ТЧ - не видна юзеру, показывается ему результат с отборами только. Запрос к ТЧ и загрузка - быстро шуршит |
|||
23
ХочуСпец
07.12.12
✎
10:42
|
(21) это понятно
как в (16) реализовать условие в (21) в (16) мы можем указать н-р, отобрать остаток по складам Склад1 и Склад2, и Остаток > 10, но как установить условие что остаток на складе1 > 10, а остаток на складе 2 < 100 |
|||
24
ptiz
07.12.12
✎
10:48
|
(0) "не устраивает скорость работы." - в какой момент тормоза?
|
|||
25
ХочуСпец
07.12.12
✎
10:49
|
(24) запрос исполняется быстро. При заполнении ТЗ колонок остатками по складам (выборка)
|
|||
26
ХочуСпец
07.12.12
✎
10:50
|
Результат = Запрос.Выполнить();
ВыборкаПоНоменклатуре = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоНоменклатуре.Следующий() цикл НоваяСтрокаПоНоменклатуре = ПродукцияОстатки.Добавить(); Продукция = ВыборкаПоНоменклатуре.Продукция; НоваяСтрокаПоНоменклатуре.Продукция = Продукция; НоваяСтрокаПоНоменклатуре.Всего = ВыборкаПоНоменклатуре.Остаток; ВыборкаПоСкладам = ВыборкаПоНоменклатуре.Выбрать(); Пока ВыборкаПоСкладам.Следующий() цикл НоваяСтрокаПоНоменклатуре["Остаток_"+СокрЛП(ВыборкаПоСкладам.Склад.Код)] = ВыборкаПоНоменклатуре.Остаток; КонецЦикла; КонецЦикла; |
|||
27
ptiz
07.12.12
✎
10:55
|
(26) Запрос по ТЗ?
А если делать "НайтиСтроки" по индексированной ТЗ ? Всё равно, смотрю, группировки фиксированные. |
|||
28
ptiz
07.12.12
✎
10:58
|
Тьфу.. понял. Построителем работаешь.
В любом случае - как-нибудь применить НайтиСтроки для отбора или хотя бы уменьшения таблицы для построителя. |
|||
29
ХочуСпец
07.12.12
✎
11:00
|
(28) уменшить можно только уменьшением списка складов
|
|||
30
ХочуСпец
07.12.12
✎
11:01
|
(28) отбор работает мигом. Актуализация остатков страдает
|
|||
31
ptiz
07.12.12
✎
11:03
|
(30) Мне эта строчка не нравится:
ВыборкаПоСкладам.Склад.Код замер делал? |
|||
32
Maxus43
07.12.12
✎
11:06
|
(31) + 1, запросом тяни код
|
|||
33
ХочуСпец
07.12.12
✎
11:10
|
(32) сделаю замер
|
|||
34
ХочуСпец
07.12.12
✎
11:12
|
чуток побыстрее но все равно пока также скорость не удовлетворяет
|
|||
35
Maxus43
07.12.12
✎
11:14
|
замер делал? где затраты наибольшие?
|
|||
36
ХочуСпец
07.12.12
✎
13:38
|
(35) да сделал и пропустил косячину
Запрос: "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.Номенклатура КАК Продукция, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток, | ТоварыНаСкладахОстатки.Склад.Код КАК СкладКод |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад В (&Склады)) КАК ТоварыНаСкладахОстатки |ИТОГИ | СУММА(Остаток) |ПО | Продукция"; Результат = Запрос.Выполнить(); ВыборкаПоНоменклатуре = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоНоменклатуре.Следующий() цикл НоваяСтрокаПоНоменклатуре = ПродукцияОстатки.Добавить(); Продукция = ВыборкаПоНоменклатуре.Продукция; НоваяСтрокаПоНоменклатуре.Продукция = Продукция; НоваяСтрокаПоНоменклатуре.ПродукцияНаименование = Продукция.Наименование; НоваяСтрокаПоНоменклатуре.Всего = ВыборкаПоНоменклатуре.Остаток; ВыборкаПоСкладам = ВыборкаПоНоменклатуре.Выбрать(); Пока ВыборкаПоСкладам.Следующий() цикл НоваяСтрокаПоНоменклатуре["Остаток_"+СокрЛП(ВыборкаПоСкладам.СкладКод)] = ВыборкаПоНоменклатуре.Остаток; КонецЦикла; КонецЦикла; ПРОБЛЕМА: в выборке обращаясь через точку получанию Наименование что КРАЙНЕ НЕВЕРНО. Но наименование мне необходимо по итогу, как переделать запрос |
|||
37
ХочуСпец
07.12.12
✎
13:41
|
туплю, проблема решена
|
|||
38
Maxus43
07.12.12
✎
13:42
|
а всё (5) кричал %)
|
|||
39
ХочуСпец
07.12.12
✎
13:45
|
(38) замер рулит
|
|||
40
ptiz
07.12.12
✎
16:44
|
(36) Прикольно, самую тормозную строку и не показал сразу, а мы гадаем :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |