Имя: Пароль:
1C
 
Как избежать вложенных циклов
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)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой