Страницы: 1
RSS
Логика конфигуратора - в какой программе ее описывать?
 
Прошу помощи клуба знатоков в следующем вопросе.

Получил я полгода назад задачу сделать конфигуратор для подбора необходимых компонентов при монтаже определенного оборудования. Т.к. я считаюсь крутым экспертом Excel (что не совсем правда, но на общем фоне - да, можно сказать лучший из худших), то сделал я это все в Excel, даже без макросов, просто с кучей выпадающих меню и подменю. Логику мой начальник написал сам на коленке, вернее на огромном плакате.

Смысл обычный - человек заполняет типа анкету и выбирает последовательно определенные пункты меню сверху вниз, а в зависимости от выбора формируется на отдельном листе список необходимых компонентов. После того, как человек заполнил анкету - у него есть готовый список, с перечнем позиций и их ценой. Такое теоретически должна создавать наша ERP, но там даже близко к этому не подступились и решили сделать в качестве теста вариант в Excel на довольно узкий сегмент оборудования  и поручили мне. Ну, мне сказали, я сделал в конце концов.

Краткий пример я привожу в качестве подбора конфигурации авто. Т.е. вот также человек выбирает пункты меню и на выходе имеет определенную конфигурацию автомобиля с его ценой. Причем некоторые компоненты добавляются автоматически при выборе пункта меню, некоторые МОГУТ быть добавлены/или не добавлены как опцион и так далее.  Уже в ходе разработки конфигуратора я сталкивался с тем, что в логике были ошибки, которые выяснялись уже в ходе проверки чернового варианта и приходилось переписывать конфигуратор довольно сильно. Но так как оборудование было не очень сложным, с горем пополам смог доделать конфигуратор и отдать его на тестирование. Откровенно говоря, я думал, что все это умрет тихо и мирно после этого - такие случаи были ранее. Но народ проверил, народу понравилось, т.к. очень облегчало работу. И меня недавно вызвал начальник - говорит, делай новый конфигуратор на намного более сложное оборудование.

Сразу встал вопрос именно с описанием всей логики конфигуратора. В чем ее писать и делать? Т.к. оборудование ОЧЕНЬ сложное, то вопрос именно с самого начала детально описать и проверить всю логику, а уже потом приступать к работе, иначе толку точно не будет. Но я не пойму даже, как ее описывать. Может быть есть какие-то стандартные программы для этого, чтобы разрабатывать логику таких конфигураторов? Писать снова что-то на коленке не хочется. Может у кого-то был подобный опыт и он может подсказать, в каком направлении копать?
Goedenavond!
 
seggi, приветствую!
Готов сделать под ключ на условиях релокации в Германию :D

Вообще всё начинается с плоской таблицы - Excel'я для этого вполне хватит.
Количество полей = количество уровней выбора + 1-2 столбца для всякого.
Далее, Пользовательская Форма берёт Таблицу в массив, сортирует его по всем полям (при необходимости другого порядка вывода создаются служебные поля в памяти или на листе) и предлагает выбрать первый уровень.
При выборе 1го уровня (уникальный список из значений 1го поля Таблицы), переходит к значениям 2го поля Таблицы "отфильтрованной" по 1му полю. И так далее.
Обязательность и опциональность прописывается отдельно.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, я бы помог с Германией, но я уже в Голландии.  :D

У меня проблема еще состоит в том, что один и тот же пункт и связанная с ним позиция может встретиться несколько раз при выборе. Т.е. нет жестокого выбора пункта только на шаге N+1, N+2 и т.к.  Где-то она встретиться первый раз в качестве опциона, там я ее, к примеру отмечаю как ненужную, а потом ниже я выбираю что-то сопутствующее и она опять попадается как опцион или даже сразу включается в качестве стандартной комплектации.  Как описать такие вот случаи - я пока не понимаю.
Goedenavond!
 
Цитата
seggi: Как описать такие вот случаи
ещё 2 таблицы: таблица опций + таблица уровень-опция, где мы указываем, какие опции для каких уровней могут быть выбраны. Связь "многие-ко-многим" между 2мя таблицами всегда осуществляется с помощью 3ей (нормализация БД)
Изменено: Jack Famous - 08.11.2022 12:39:53
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Я может не смогу до конца правильно объяснить, но у меня нет жестко разграниченных позиций, которые ИЛИ ВСЕГДА стандарт, ИЛИ ВСЕГДА ОПЦИОН.

Вот попробовал описать примерно на примере. Идеальный вариант (у меня его нет почти) и неидеальный, который часто присутствует.  
Goedenavond!
 
seggi, теперь замените разделы на что-то более приближённое реальности)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Копал тут в одном направлении, а накопал статью - https://www.planetaexcel.ru/techniques/1/9645/

Из нее узнал про новую формулу Filter, попробовал, понравилось очень. Засунул все меню и подменю в один список - название и идентификатор - две колонки, а в следующие колонки ставлю просто единицы там, где нужно просто выбрать те или иные пункты меню. На отдельный лист вынес ссылки на массивы по каждой колонке с условием - C1:C100=1, а потом вставка меню  через проверку  данных с ссылкой на первую верхную ячейку массива - типа List1!C2# - с решеткой чтобы массив вытаскивать. И все, все списки формируются на лету, не надо создавать именнованные диапазоны для каждого подменю (как у меня было раньше). Новый пункт меню или подменю - просто добавил в низ списка, поставил единицу где надо и ВСЕ!!! Потом считываю индификаторы и формирую список позиций на лету.

Блииииин, насколько все упростилось - слов нет, я вчера испытал просто почти сексуальное наслаждение....  :D
Майкрософт - поклон тебе земной,  а Николаю - отдельное большое спасибо за статью.
Goedenavond!
 
Цитата
seggi: узнал про новую формулу Filter
всё, что могут новые формулы, можно и в VBA сделать, но далеко не всё, что может VBA могут (даже новые) формулы  :D
Учитывайте также и обратную совместимость - решения на новом офисе не будут работать (во всяком случае, должным образом) в старом, а VBA будет  ;)
Изменено: Jack Famous - 09.11.2022 09:55:02
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Ну, у нас преимущество то, что все централизовано. Перешли на Microsoft 365 сразу все, по команде.
А в VBA глубоко погружаться для себя не вижу смысла, мне за это не доплачивают. Если можно сделать формулами - буду делать формулами.
Goedenavond!
Страницы: 1
Наверх