|
Как избежать вложенных циклов | ☑ | ||
---|---|---|---|---|
0
ladalk
13.12.15
✎
20:18
|
Добрый день,
есть несколько списков, состоящих из значений свойств справочника "характеристики номенклатуры". В каждом из списков могут быть выбраны несколько значений (а может быть и не одного) (заполняем значения характеристик номенклатуры). Нужно получить все возможные варианты соединения значений. Самое простое решение - это идти по первому списку, потом заходить во второй, затем в третий. Еще, как вариант, записать три массива с выбранными значениями, но опять же надо будет перебирать. Значений немного, на производительности не скажется, но хочется оптимизировать. Может кто подскажет, каким образом можно это сделать? |
|||
1
Лефмихалыч
13.12.15
✎
20:22
|
самое простое решение для получения всех вохможных комбинаций - это все-таки декартово произведение в запросе
|
|||
2
ladalk
13.12.15
✎
20:30
|
поскольку значения выбираются с формы, в запросе необходимо использовать временную таблицу?
|
|||
3
Капюшон
13.12.15
✎
20:42
|
делал чтото такое. рекурсия помогла.
|
|||
4
NcSteel
13.12.15
✎
20:43
|
(2) Можно и без
|
|||
5
ladalk
13.12.15
✎
20:45
|
(4) каким образом?
|
|||
6
Wirtuozzz
13.12.15
✎
20:45
|
(1) Можно пример?
|
|||
7
Лефмихалыч
13.12.15
✎
20:46
|
(5) ну, ты же на форму значения не из воздуха собираешь. Или их туда пользователь руками долбит?
(6)держи ВЫБРАТЬ А.,Б. ИЗ А,Б |
|||
8
Лефмихалыч
13.12.15
✎
20:47
|
там после точек - звездочки. чортов маркдаун их сожрал
|
|||
9
ladalk
13.12.15
✎
20:47
|
(7) пользователь выбирает, какие будут использоваться.
|
|||
10
Лефмихалыч
13.12.15
✎
20:49
|
(9) тогда я не знаю ответа на (5)
|
|||
11
ladalk
13.12.15
✎
20:52
|
(10) получается, что на каждый список делать ТЗ, передавать их в запрос (если они не пустые) и там ВЫбрать с исполозованием полного соединения?
|
|||
12
Garykom
гуру
13.12.15
✎
20:56
|
(0) Зависит от цели построения таких сочетаний
ЗЫ это что еще за конструктор номенклатуры из Челябинска? :) |
|||
13
ladalk
13.12.15
✎
21:04
|
нормальный такой конструктор
|
|||
14
Лефмихалыч
13.12.15
✎
21:05
|
(11) в общем - да. Еще можно сделать одну общую ТЗ, ее передать в запрос, а остальные набрать уже из нее уже запросами, но суть-то та же.
|
|||
15
ladalk
13.12.15
✎
21:08
|
(14) спасибо
|
|||
16
Лефмихалыч
13.12.15
✎
21:10
|
(13) в общем-то я с Garykom согласен - ощущение, что ты пытаешься техническими средствами решить организационную задачу. Редко когда нужны все возможные сочетания. Просто потому, что продаются не все возможные, а толлько востребованные. С этой стороны - может лучше как-то очеловечить эту механизьму. Но тебе видней.
|
|||
17
ladalk
13.12.15
✎
21:13
|
суть в том, чтобы облегчить работу человеку, которой забивает поступления сотни пар обуви - для одной модели несколько цветов, размеров и тд. Человек тыкает в те строки, который соответствуют поступлению, например сезон зима; цвет черный, красный; размер 37,38,39, а на выходе получаем номенклатуру с характеристиками "зима, черный, 37", "зима, красный, 37", "зима, черный, 38", "зима, красный, 38" и т.д.
|
|||
18
Garykom
гуру
13.12.15
✎
21:26
|
(17) а количество каждой как указать? или это только для автосоздания номенклатуры?
может лучше заюзать ТЧ, сделать копирование строк и менять параметры для новой строки? смысл 1 заполненная строка = 1 номенклатура, вместо 1 строку заполнили и все сочетания параметров перебрали и кучу номенклатуры наплодили |
|||
19
MishaD
13.12.15
✎
21:28
|
(17) идея то интересная, а если номенклатуры с каким-то размером не окажется. Например красной 38. характеристика то все равно создастся.
|
|||
20
ladalk
13.12.15
✎
21:29
|
количество в документе поступления будет.
"и все сочетания параметров перебрали" - вот как это сделать? |
|||
21
ladalk
13.12.15
✎
21:30
|
(19) вот пользователь и отмечает, что нужно создавать. Если нет у номенклатуры какой-то позиции характеристики - пользователь не отмечает, и, соответственно, не создается
|
|||
22
ladalk
13.12.15
✎
21:31
|
(18) в смысле всю характеристику в наименование номенклатуры запихнуть?
|
|||
23
Garykom
гуру
13.12.15
✎
21:35
|
(22) это по желанию, суть без перебора сочетаний обойтись пусть оператор сам сочетания указывает а то будет (19)
Да получить от поставщика электронную накладную и распарсить ее никак? |
|||
24
Лефмихалыч
13.12.15
✎
21:41
|
Вот я тоже подумал о том, чтобы с поставщиком о хоть каком-то обмене договорится
|
|||
25
Лефмихалыч
13.12.15
✎
21:44
|
да в целом - как-то это через жопу. Номенклатурные позиции эти на самом деле известны гораздо раньше прихода. Они известны в момент формирования заказа поставщику и в этот же момент должны быть уже закодированы в базе. Оператор, забивающий приход, должен выбирать уже из имеющихся. Иначе потом хрен вы поймете, был пересорт/недовоз/перевоз или это про на складе все спёрли и перепутали.
|
|||
26
ladalk
13.12.15
✎
21:44
|
(23,24) я вас умоляю) какой обмен с китайцами на рынках?
|
|||
27
Лефмихалыч
13.12.15
✎
21:46
|
ох ё...
|
|||
28
ladalk
13.12.15
✎
21:47
|
(25) чтобы все в название номенклатуры пихать - однозначно нет
|
|||
29
ladalk
13.12.15
✎
22:09
|
а еще вопрос: есть ли возможность ввести какое-то значение с клавиатуры? т.е. в диалоговом окне.
|
|||
30
ladalk
13.12.15
✎
22:14
|
ВвестиСтроку();
|
|||
31
mistеr
13.12.15
✎
22:26
|
(0) >Значений немного, на производительности не скажется, но хочется оптимизировать.
Вот здесь и нужно собрать волю в кулак и остановить себя. |
|||
32
Мэс33
13.12.15
✎
22:33
|
(31) Тут двояко.
- можно остановиться, так как выхлопа как такого не будет. Никто и не поймет подвигов ТС, и материально его труд не будет достойно вознагражден; - не надо останавливаться. Сейчас решит эту проблему на маленькой не критической задаче пока есть время, а потом в другом месте эти знания пригодятся. |
|||
33
NcSteel
13.12.15
✎
22:50
|
(4) Очень легко
ВЫБРАТЬ А.* Из А Где А.Ссылка в (&Список1) ну и по аналогии с (7) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |