Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ Документация _ как получить сводный BOM многоплатного изделия?

Автор: PCBExp Oct 7 2017, 07:53

Например есть изделие из трех плат. На каждой плате есть одни и те же компоненты и какие то уникальные. Материнская плата содержит к примеру 200 уникальных строк/позиций а дочки строк по по 50-100. Закупер хочет получить сводный BOM на все изделие. То есть если на основной плате стоит 5 штук на все времена любимых BAV99 а на двух дочках по одному то в сводном BOMе должна быть одна строчка где их 7 штук указано. Как их потом монтажное производство делит на три потока не наша забота. Сейчас все это руками делается и ошибки вычищаются с гарантией со второго третьего раза. А хочется один раз автоматом окучить три файла. Голову сломал, но как это в Excel сделать не понимаю. Если только макрос привлечь?

Потом (если решим эту задачу) усложним задачу! На одном таком изделии может быть 2 одинаковых дочки и одна непохожая - то есть надо количество дочек как то учесть.

Автор: ViKo Oct 7 2017, 08:04

Программу TDD видели? ВП документик называется.

Автор: AlexandrY Oct 7 2017, 12:04

Цитата(PCBExp @ Oct 7 2017, 10:53) *
Если только макрос привлечь?

Макрос будет ваш довольно сложным.

По уму это делается в Access

Сначала в Access вставляются все ваши внешние BOM-ы сделанные в Excel.
Потом нажимется конопка и генерируется таблица плат. В ней после генерации указываете количестов плат каждого типа.
Потом жмете кнопку и происходит обновление содержимого SQL запросов в базе данных.
Данные собираются несколькими специальными запросами текст которых зависит от таблицы плат.
В результате генерируется сводная таблица консолидированного BOM-а

Т.е. в этой базе динамически меняется структура SQL запросов.
Вряд ли вы в голом Excel-е это так просто сделаете.

Автор: x736C Oct 7 2017, 12:46

По уму в Access, но если нет желания с ним связываться, то легко реализуется на VB script в самом Excel.
Единственная трудность может возникнуть, если один компонент будут слегка отличаться в записи в двух таблицах, то простой скрипт занесет их как два разных компонента.
Я бы так и сделал, честно говоря. Слишком узкая задача, чтобы подключать сюда еще и Access. Тем более, что он в самые распространенные и доступные пакты Офиса не входит. Хотя для многих это спорный аргумент.

Цитата(AlexandrY @ Oct 7 2017, 15:04) *
Макрос будет ваш довольно сложным.

Я вас умоляюsm.gif

Автор: AlexandrY Oct 7 2017, 13:20

Цитата(x736C @ Oct 7 2017, 15:46) *
По уму в Access, но если нет желания с ним связываться, то легко реализуется на VB script в самом Excel.

VB script в Excel? biggrin.gif
Я не помню уже тех времен когда в Excel можно было что-то написать на VB script если это в принципе было возможно.

Сейчас пишут на VBA. API VBA одинаковое что в Excel, что в Access.
Поэтому для разроботчика на API VBA в принципе нет разница в Excel или в Access писать.
Только в шитах в Excel программист вынужден будет делать бескорнечные циклы по ячейкам и промежуточные таблицы вместо того чтобы написать короткие SQL команды.

Автор: x736C Oct 7 2017, 13:39

Да, имел в виду VBA. В общем, несложный скрипт для такой задачи. Не спорю, что с Access все удобнее и проще.

Цитата(AlexandrY @ Oct 7 2017, 16:20) *
Только в шитах в Excel программист вынужден будет делать бескорнечные циклы по ячейкам и промежуточные таблицы
Вы просто не умеете его готовитьsm.gif
Никаких бесконечных циклов, и без промежуточных можно обойтись.

Автор: AlexandrY Oct 7 2017, 13:40

Цитата(x736C @ Oct 7 2017, 16:33) *
В общем, несложный скрипт для такой задачи.

Да конечно он не сложный для профессионала.
А написал за час в Access. В Excel написал бы за день, но не буду.
Напишите в Excel если вам так нравиться.
Будет чем помериться. smile3009.gif

Автор: x736C Oct 7 2017, 13:48

Кстати, у меня Excel честно купленный. А Ваш Access? Ну ладно, это я придираюсьsm.gif

А так да, денек я бы может и убил бы на такой скрипт. Но может и быстрее. Мне почему-то представляется все совсем просто.

Автор: AlexandrY Oct 7 2017, 14:05

Цитата(x736C @ Oct 7 2017, 16:48) *
Кстати, у меня Excel честно купленный. А Ваш Access? Ну ладно, это я придираюсьsm.gif

Даю совет. Приложения Access работают без MS Office - под голой виндой.
Поэтому спокойно качайте триал, делайте приложение и раздавайте всем желающим.
Вот мой проект - http://electronix.ru/redirect.php?https://github.com/Indemsys/Consolidated-BOM/blob/master/Consolidated_BOM.accdb

Автор: DVF Oct 8 2017, 00:16

Цитата(AlexandrY @ Oct 7 2017, 18:05) *
Вот мой проект - http://electronix.ru/redirect.php?https://github.com/Indemsys/Consolidated-BOM/blob/master/Consolidated_BOM.accdb

И все? А, где хелп для начинающих?

Автор: AlexandrY Oct 8 2017, 07:31

Цитата(DVF @ Oct 8 2017, 03:16) *
И все? А, где хелп для начинающих?

Предполагается, что пользователь имеет представление об SQL и редакторах таблиц в Access.
Если нет, то читать мануал на Access.

Самое сложное действие пользователя здесь - вставить в базу данных ссылки на внешние таблицы в Excel
Это делается в закладке "Внешние данные" -> "Создать источник данных" -> "Из файла" -> "Excel", а там выбрать опцию "Создать связанную таблицу для связи с источником данных"

Далее нажать последовательно три кнопки слева на право в форме.
После редактирования названия плат нажимать вторую кнопку.
После редактировании количества плат нажимать только третью кнопку.

Какие поля должны быть в BOM-е можно посмотреть в таблице BOM_table_template
Такие же поля должны быть в BOM-ах в Excel. Но могут быть и дополнительные, они просто не попадут в консолидированный BOM.
Если поля не нравятся, то придеться редактировать запросы quElements_by_Boards, quBOM_, quBOM, quAllBomsUnion_w_Total
Группировка производится по полям LibRef и PartNum. Они должны иметь уникальные значения для разных деталей.
Но опять же, это не сложно изменить.

Автор: PCBExp Oct 8 2017, 11:44

Цитата(x736C @ Oct 7 2017, 16:48) *
Кстати, у меня Excel честно купленный. А Ваш Access? Ну ладно, это я придираюсьsm.gif

А так да, денек я бы может и убил бы на такой скрипт. Но может и быстрее. Мне почему-то представляется все совсем просто.


Мне Excel тоже ближе. О базах типа Access я совсем поверхностное представление имею и разбираться в этом нет ни малейшего желания. Интересно а сколько может такая работа стоить если ее профессионалам заказать?

Автор: x736C Oct 8 2017, 12:11

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

Цитата(PCBExp @ Oct 7 2017, 10:53) *
Потом (если решим эту задачу) усложним задачу! На одном таком изделии может быть 2 одинаковых дочки и одна непохожая - то есть надо количество дочек как то учесть.
Этот момент не очень понятен. Приведите конкретный пример, как вручную это делается сейчас.

Автор: PCBExp Oct 8 2017, 15:13

Цитата(x736C @ Oct 8 2017, 15:11) *
PCBExp,
Этот момент не очень понятен. Приведите конкретный пример, как вручную это делается сейчас.

Я в этой теме закупщику помочь хотел. Например он получает задачу произвести оборудование для 250 шкафов управления освещением. В каждом шкафу 2 одинаковых изделия и 3 разных. Всего 4 типа. Для простоты скажем что каждое изделие это одноплатная конструкция. На каждую плату есть BOM. Отсуда надо: три типа по штуке и четвертый тип 2 штуки на шкаф. И всего этого добра на 250 шкафов.

Автор: x736C Oct 8 2017, 15:19

Закупщик получает задачу произвести оборудование?

Очень размыто.

С первой частью задачи все понятно. Есть пересекающиеся позиции и уникальные. Пересекающиеся надо просуммировать и записать одной записью.

1. Что такое «дочка»? Дочерняя плата или что? Я просто не в теме. При аббревиатуре BOM я представляю себе список из резисторов, конденсаторов и прочей комплектухи. Понятно, что это может быть что угодно. Но тогда нужно более конкретный пример.

2. Что значит «надо как-то учесть»? Как вы ее сейчас учитываете?

3. 250 шкафов — это 250 отдельных Excel-таблиц, которые надо свести в одну?

Автор: PCBExp Oct 8 2017, 16:00

Не придирайтесь к словам - закупщик конечно же получает задачу купить комплектацию на оборудование.

В общем случае "дочка" это действительно дочерняя плата которая вторым этажом крепится на основную плату, но в контексте темы это не принципиально. Эта дочерняя плата делалась отдельным проектом, соответственно список компонентов в нее входящих (Bill Of Material - BOM) свой - как отдельный файл.

Как я уже писал в состав одного шкафа входит 4 типа устройств причем устройств 1-ого типа 2 штуки. На каждый типа есть свой BOM. Сейчас я беру BOM на 1-й тип и умножаю все количества на 2. Для простоты будем считать что этот BOM самый многочисленный (там 200 строк) и ручками переношу туда записи относящиеся к уникальным типам компонентов из трех других BOMов. Для не уникальных (тех которые есть в этом самом многочисленном) я просто увеличиваю количества. Это сильно упрощенная процедура

Мой коллега нашел очень специфический узкозаточенный ресурс в интернете - форум EXCELеводов и разместил там вчера объявление с подробностями. Не поленился... Как ни странно ближе к полуночи нашелся желающий решить проблему за деньги. Я бы не хотел делать рекламы и создавать ажиотажа. Если интересно могу кинуть ссылку в личку на этот форум. там и пример BOM и задача поточнее. Меня собственно интересует денежный вопрос - насколько это дорого или подарочно...

Автор: x736C Oct 8 2017, 16:18

Теперь более-менее понятнее.
Тут экспертов по Excel вряд ли будет (кто за деньги бы решал задачи в Excel). Каждый его использует для своих нужд, кто во что горазд.
Можете сами попытаться прикинуть, исходя из трудозатрат. Все индивидуально и, возможно, предмет торга.
Задача не очень сложная, но если вам она не под силу, а решение её значительно экономит вам время, то и компенсацию будут просить соответствующую. Это так, общие соображения.
Я бы попробовал не на экселевском форуме, а, например, тут
http://electronix.ru/redirect.php?http://www.cyberforum.ru/
То есть на форумах, посвященных скриптам в целом. Там цена может оказаться ниже. Наверное.
Большинство ответов на свои вопросы при кодировании на VBA находил именно на этом форуме через поисковик.

Кстати сказать, задача достаточно типичная для Excel, и, уверен, много раз решалась.
В Excel встроены инструменты для создания сводных таблиц.
Я бы поискал по запросу: excel tables merge.
Много информации вываливается по сведению таблиц. Возможно, есть решение для вас.

Автор: AlexandrY Oct 8 2017, 16:49

Цитата(x736C @ Oct 8 2017, 19:18) *
Я бы поискал по запросу: excel tables merge.

Это и есть ваш секрет которым вы думали победить Access? biggrin.gif

Но включите логику.
В Ecxel нет линка к внешним Excel таблицам, а есть только импорт.
Т.е. по сути в Excel вы всегда должны будете при любом самом мелком изменении любого BOM-а заново проводит рутинную операцию импорта.
Уже одно это ставит сильный вопрос об адекватности подхода.

Автор: PCBExp Oct 8 2017, 16:53

Цитата(x736C @ Oct 8 2017, 19:18) *
Теперь более-менее понятнее.
Тут экспертов по Excel вряд ли будет (кто за деньги бы решал задачи в Excel).

Слияния таблиц это только половина задачи. Вторую половину - обработка слитого я руками делал. Но вчера нам пообещали за 3000р решить обе "половины". У меня ни опыта ни желания на такой подвиг не нашлось. Потратить неделю на разбирательство мне точно не дадут. Быстрее у меня не получится. В свободное время - лень. Подожду до понедельника. biggrin.gif

Автор: x736C Oct 8 2017, 17:05

AlexandrY, нет. Мой секрет VBA. В рамках скрипта эти любые изменения в BOM можно очень просто учесть.
И тут у Excel есть «линки» не только к внешним таблицам, а ко много чему внешнему.

Но в Excel есть и другие возможности, которые я не исследовал. Отметил такое направление.

Вы недооцениваете важность для очень многих людей не привлечения дополнительной сущности в виде Access.
Ситуаций может быть масса, но например. У вас есть коллега снабженец, которому 55-60 лет, которому вы хотите помочь. Вы даете ему просто xls файл, который все делает. Excel у него уже установлен и он его освоил. В противном случае, вы должны установить ему дополнительный trial-пакет, объяснять как это правильно делать. Пусть это и несложно. Но всё в совокупности для очень многих людей окажется менее предпочтительным вариантом.

Да и не отвергаю я ваш вариант. Для кого-то и он подойдет.

Автор: AlexandrY Oct 8 2017, 17:51

Цитата(x736C @ Oct 8 2017, 20:05) *
Да и не отвергаю я ваш вариант. Для кого-то и он подойдет.

Не так чтобы я сильно ревновал, но вы заинтриговали намеками.
Но похоже у вас нет твердых оснований для уверенности в Excel.

Да, на VBA можно многое, но гибкий устраняющий рутину пользовательский интефейс это не пару строк на бейсике.
Поэтому тот кто хочет такой интерфейс именно на шите Excel заплатит дважды. А потом еще и VBA придется учить.
А это будет посложней чем ознакомиться с парочкой базовых операторов Access SQL.

Я вам даже больше скажу.
Добавлением пары строк в мой проект на Access вы можете быть избавлены от вида самого Access, все кнопки будут в Excel и результат в Excel.
Я спорю не за форму, а за технологию.
Без SQL такие задачи не решаются.

Автор: x736C Oct 8 2017, 18:13

Совершенно верно. Мне сподручнее было выучить в какой-то степени совершенства VBA, т.к. много других задач он позволял мне решать.
И с интерфейсом никогда не заморачивался, т.к. писал для себя sm.gif
Две кнопки и пойдетsm.gif

Свою первую программу в жизни, за которую получил какие-то деньги, как сейчас помню, написал в MS Word, будучи студентом.
Там был какой-то интерфейс, и она рассчитывала коэффициенты и генерировала прошивку МК для программирования синтезатора.
Удобно было после всего отправить на печать и получить что-то вроде протокола со всеми использованными настройками.
Местами убого была написана, но работала исправно. С тех пор я нежно люблю этот инструментsm.gif



P.S. Да ну, бросьте. В Excel есть все, чтобы такую простую задачу решать без Access.
Access — это очень мощный инструмент для большого спектра задач не в пример этой.
Кстати с Access и его формами тоже немного имел дело. С тех пор его невзлюбил. sm.gif

Автор: AlexandrY Oct 8 2017, 18:29

Цитата(x736C @ Oct 8 2017, 21:13) *
В Excel есть все, чтобы такую простую задачу решать без Access.
Access — это очень мощный инструмент для большого спектра задач не в пример этой.

Еще раз говорю что API VBA в Excel и в Acсess есть одно и тоже.
Если вас так пугает слово Access, то смело его выкидывате, и оставьте только Microsoft Jet Database Engine.
Я свои базы данных на базе Jet успешно продавал нашим ведущим страховым брокерам, национальному лотерейному комитету и еще другим.
После этого невзлюбил клиентов и больше за деньги никому не пишу.

Автор: a123-flex Oct 12 2017, 15:21

Цитата(PCBExp @ Oct 8 2017, 19:53) *
Слияния таблиц это только половина задачи. Вторую половину - обработка слитого я руками делал. Но вчера нам пообещали за 3000р решить обе "половины". У меня ни опыта ни желания на такой подвиг не нашлось. Потратить неделю на разбирательство мне точно не дадут. Быстрее у меня не получится. В свободное время - лень. Подожду до понедельника. biggrin.gif

Я в свое время такое сделал (Excel + VBA).
Получилась некоторая система, потратилось больше 1 дня, если честно - месяц. Но там функционала побольше было, и уникальная база всех используемых компонентов, и сборка изделий, и дозакупка по базе, и еще че-то... Не понравилось, что при смене одного Excel-я на другой возникли проблемы с работоспособностью скриптов. Кроме того, сам VBA... он хорош по своему. Но все же это не мейнстрим, и не конечный продукт, а какой-то аппендикс.
А хотелось нарабатывать не в корзину, и иметь долговременную поддержку, и развитие среды.

В итоге плюнул и переписал все на питоне. Щаз радуюсь.

Странно что AlexandrY не разрекламировал свою систему - он тогда выложил систему с поддержкой закупок по минимальной цене с нескольких on-line агрегаторов, целый efind практически.
Поделитесь, чем дело закончилось, AlexandrY ?

Автор: AlexandrY Oct 12 2017, 17:39

Цитата(a123-flex @ Oct 12 2017, 18:21) *
Поделитесь, чем дело закончилось, AlexandrY ?

Ряд причин остановили проект.
octopart.com сменил протокол, мы стали заказывать сборку в основном по аутсорсу, в Altium-е появился автоматический поиск по десятку крупнейших online магазинов.

Автор: Myron Oct 12 2017, 17:54

Цитата(AlexandrY @ Oct 12 2017, 11:39) *
Ряд причин остановили проект.
octopart.com сменил протокол, мы стали заказывать сборку в основном по аутсорсу, в Altium-е появился автоматический поиск по десятку крупнейших online магазинов.
Это Volt? Какая версия Алимум?

Автор: AlexandrY Oct 12 2017, 18:13

Цитата(Myron @ Oct 12 2017, 20:54) *
Это Volt? Какая версия Алимум?

Где-то с 17-й версии эта фича есть, я сильно не слежу.

Автор: a123-flex Oct 12 2017, 18:37

Цитата(AlexandrY @ Oct 12 2017, 20:39) *
в Altium-е появился автоматический поиск по десятку крупнейших online магазинов.

да. кусок лакомый был... неудивительно что большие дяди его оторвали)))

Цитата(AlexandrY @ Oct 12 2017, 20:39) *
мы стали заказывать сборку в основном по аутсорсу

а как это, если не секрет ?

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)