IE2017

Конструктор спецификаций на запросах

Обработки - Обработка справочников

Конструктор спецификаций: Рекурсия vs Запрос

Пару месяцев назад пришлось заняться закачкой КД одного машиностроительного предприятия в УПП.

В процессе знакомства с внутренним убранством УПП, наткнулся на замечательный "Конструктор спецификаций", который тестировали, видимо, только на "кресле-качалке" из демо базы.

При разузловании больших спецификаций, порядка 8000 элементов и 7 уровней вложенности, встроенный конструктор жестоко виснет минут на десять (!!!). Это на двухядреном компе с 4 ГБ.

Покурив статью про рекурсию и запросы //infostart.ru/public/78285/ я занялся адаптацией кода под УПП.

Собственно представленная работа является переделанной обработкой ЗапросПротивРекурсии.epf.

Разница только в формировании таблицы ВТСпецификация и в выводе результата в ДеревоЗначений.

Таблица: Сравнение времени разузлования (в секундах) встроенной обработкой "Конструктор спецификаций" и новой, на запросах. 

номенклатура максимум узлов количесто элементов время рекурсией время запросом
изделие1 4 26 1 2
изделие2 7 375 65 2
изделие3 8 5502  240  9
изделие4 9 8443  540  12

Скачать файлы

Наименование Файл Версия Размер
КонструкторСпецификацийЗапросом
.epf 18,23Kb
05.07.11
322
.epf 18,23Kb 322 Скачать бесплатно
картинка
.PNG 53,01Kb
05.07.11
24
.PNG 53,01Kb 24 Скачать

См. также

Комментарии
1. Ийон Тихий (cool.vlad4) 41 05.07.11 10:37 Сейчас в теме
где работа представленная?
2. Андроид Мар (Андроид) 175 05.07.11 10:53 Сейчас в теме
3. Соломон Яковлевич (meganibler) 67 05.07.11 11:14 Сейчас в теме
Сорри, забыл добавить по запарке.
4. Сергей Рудаков (fishca) 1063 05.07.11 11:14 Сейчас в теме
(0) В УПП используется, на сколько я помню, критерий отбора. При замене критерия отбора в обработке на равноценный запрос производительность возрастает раз эдак в 5. Было проверено на спецификации порядка 10 000 - 15 000 элементов.
5. Сергей Рудаков (fishca) 1063 05.07.11 11:20 Сейчас в теме
(0) ПриВыводеСтроки замени на ПриПолученииДанных ;)
6. Роман Романов (romansun) 171 05.07.11 12:00 Сейчас в теме
упп всё активнее и активнее продвигается на промышленные предприятия? :)

интересно было бы поглядеть внедренное решение... на больших заводах даже весьма крупные сборки должны собираться очень быстро - там это основной инструмент, все эти многочисленные конструкторы и технологи постоянно их туда-сюда крутят, смотрят, собирают применяемости и пр.
7. Игорь Исхаков (Ish_2) 981 05.07.11 12:31 Сейчас в теме
(4) Неинтересно про 10 000 - 15 000 элементов.
Давай поговорим про 1 000 000 элементов и уровень графа спецификаций , скажем, 20.
(граф спецификации "электровоз" имеет по слухам уровень 17)
Как будет работать конструктор спецификаций на УПП ?
8. Сергей Рудаков (fishca) 1063 05.07.11 12:34 Сейчас в теме
(7) и на этом уровне УПП уже разворачивала дерево более часа на не хилом железе ;)
9. Игорь Исхаков (Ish_2) 981 05.07.11 12:39 Сейчас в теме
(8) Пример теста с миллионом узлов и уровнем графа 20 рассмотрен в http://infostart.ru/public/78285/. (тест № 2). Среднее время выполнения при очень среднем железе - не более 5 мин.
10. Сергей Рудаков (fishca) 1063 05.07.11 12:48 Сейчас в теме
(9) если ты думаешь, что я твои публикации в глаза не видел, то глубоко ошибаешься ;) :)
11. Соломон Яковлевич (meganibler) 67 05.07.11 13:24 Сейчас в теме
romansun пишет:
упп всё активнее и активнее продвигается на промышленные предприятия?

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


Вот допустим - я ответсвенный за внедрение новой АСУ на машиностороительном предприятии.
Вводная такая:
Предприятие по размерам средненьное, совейское.
Уже существует, и давно работает самодельная АСУ написанная на Паскале (в ней все данные).
Руководство заинтересовано, денег на покупку программы обещают дать.
Человекоресурс - один человек.

Что выбрать в качестве платформы?
1) 1С8.2 УПП
2) 1С8.2 PDM
3) TechnologiCS
4) 1С7.7 Написать свою, домотканную конфу под это дело.

Про 1С8.2:Машиностроение знаю, но уже дорого.

Склоняюсь к УПП.
12. Роман Романов (romansun) 171 05.07.11 14:38 Сейчас в теме
(11)
вопрос на 5... нет даже... на 10! :D

при отсутствии содействия руководства, плотного содействия - задача эта, в особенности на совейском предприятии, в ресурсах одного человека - практически однозначно тухлая ))

но я ваще пессимист :)

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

Либо вы рискуете ступить на тонкую дорожку самописной или переписной конфы. Это отдельная и очень интересная история :)
cleaner_it; Луна5; +2 Ответить
13. Александр Рытов (Арчибальд) 2660 05.07.11 14:44 Сейчас в теме
(11) Небольшая нахлобучка к типовой бухии.
http://infostart.ru/public/19784/
14. Игорь Исхаков (Ish_2) 981 05.07.11 18:43 Сейчас в теме
(0) УПП нет - смотрел только текст.
Не понял , почему итоговая таблица разузлования выгружается в дерево , а не в таблицу значений.
Какой в этом смысл ?

В алгоритме остались слабые места ( насколько это существенно для практической работы - другой вопрос):
1. Вывод ошибочных веток графа осуществляется очень медленно.
Если задать искусственно 10 000 ошибок зацикливания , то сразу почувствуется.
2. Если в графе 1000 коротких веток ( скажем уровень равен 5), и одна длинная (уровень , скажем - 25), то
в циклах с 6 по 25 будет копироваться вся таблица разузлования (1001 запись).
15. Misha ⁠ (Magister) 133 06.07.11 01:17 Сейчас в теме
(6) (11)
В УПП нифига нет для конструкторов, технологов и иже с ними. Есть только учет и анализ данных для управления.
Это не PDM, и тем более не PLM-система, а именно они нужны сейчас на предприятиях.
olegbess77; +1 Ответить
16. Соломон Яковлевич (meganibler) 67 06.07.11 09:24 Сейчас в теме
Ish_2 пишет:
(0) УПП нет - смотрел только текст.
Не понял , почему итоговая таблица разузлования выгружается в дерево , а не в таблицу значений.
Какой в этом смысл ?

В алгоритме остались слабые места ( насколько это существенно для практической работы - другой вопрос):
1. Вывод ошибочных веток графа осуществляется очень медленно.
Если задать искусственно 10 000 ошибок зацикливания , то сразу почувствуется.
2. Если в графе 1000 коротких веток ( скажем уровень равен 5), и одна длинная (уровень , скажем - 25), то
в циклах с 6 по 25 будет копироваться вся таблица разузлования (1001 запись).


0) Смысл дерева значений в том что именно оно и нужно, как результат.
1) Ошибки выгружаются первые 100. В реальной базе все быстро.
2) В самом первом варианте отчета я выгружал в ДеревоЗначений только последнюю ВремТаблица[n]. Никаких объединений небыло. В таблице была полная информация о структуре изделия.
Каждая строка - это ветка дерева вида %код1%%код2%%код3%%код4%|Количество|Единица. Проблема в том, что Количество и ЕдиницаИзмерения в строке относятся к %код4%. Информация о Количестве и Единице предыдущих теряется.
Пришлось городить Объединение, теперь сколько строк - столько веток.
Можно было бы решить так: %код1%%код2%%код3%%код4%|%Количество1%%Количество2%%Количество3%%Количество4%|%Единица1%%Единица2%%Единица3%%Единица3%
Но в платформе отсутсвует преобразование типов в Запросе. Число в Строку не перевести.
17. Соломон Яковлевич (meganibler) 67 06.07.11 09:33 Сейчас в теме
Magister пишет:
В УПП нифига нет для конструкторов, технологов и иже с ними. Есть только учет и анализ данных для управления.
Это не PDM, и тем более не PLM-система, а именно они нужны сейчас на предприятиях.


Полность в Вами согласен. Когда к нам приходил франчайзи презентовать УПП. я спросил: "Если в спецификациях часто делаются небольшие изменения, это что, нужно каждый раз копировать спецификацию и делать изменения в скопированной?". Ответ был "Ну типа, да".

Посмотреть бы на 1С8.2 PDM вживую, вроде там должно быть по человечески сделано, в плане спецификаций.
Но у нас в городе нигде нет, нада в Питер ехать.
18. Андроид Мар (Андроид) 175 06.07.11 13:12 Сейчас в теме
Есть плюсы и минусы.
"+" 1. Стандартная обработка разузлования делается 3,44 мин. Ваша 28 сек. :D
Это при 13623 элементах и 9 уровней
"-" 1. При 2 элеметах и 2 уровнях Ваша 6 сек. Стандартная 1 сек.
2. Если есть в сец. формула то количество неверное в Вашей обработке.

Вобщем Жырный "+"
19. Соломон Яковлевич (meganibler) 67 06.07.11 13:58 Сейчас в теме
Андроид пишет:
Это при 13623 элементах и 9 уровней


Вы что там, ракету-носитель собираете? :)
Что за тип производства - машиностроение?

Андроид пишет:
2. Если есть в сец. формула то количество неверное в Вашей обработке.

Это да, у нас просто формул нет, может пофиксю.
20. Игорь Исхаков (Ish_2) 981 06.07.11 14:08 Сейчас в теме
(19) Если интересно , то такое "разузлование" применяется при иерархическом составлении бюджета крупной корпорации. И там количество узлов 600-700 тыс. и уровень графа равный 60-70 - совсем не экзотика.
21. Роман Романов (romansun) 171 06.07.11 14:54 Сейчас в теме
(17)
meganibler пишет:
Полность в Вами согласен. Когда к нам приходил франчайзи презентовать УПП. я спросил: "Если в спецификациях часто делаются небольшие изменения, это что, нужно каждый раз копировать спецификацию и делать изменения в скопированной?". Ответ был "Ну типа, да".

Посмотреть бы на 1С8.2 PDM вживую, вроде там должно быть по человечески сделано, в плане спецификаций.


щупайте, судя по скринам и первым версиям аппиуса (когда они еще отдельно от УПП были) - должно быть всё гуд... Хотя на тот момент на крупное совейское предприятие аппиус натянулся бы с трудом, либо вообще не натянулся. Как сейчас - хз. Вот тоже всё хочу узнать от очевидцев ))

(14)
Ish_2 пишет:
Не понял , почему итоговая таблица разузлования выгружается в дерево , а не в таблицу значений.
Какой в этом смысл ?


в моей рабочей конфе были даже два вида отчета: "Линейный состав изделия" и "Иерархический состав изделия", и куча подвидов в зависимости от степени включения дополнительных данных (технологических, экономических).

Вообще, собственно вся эта тема построена сплошь на иерархиях и во многих конкретных бумажных отчетах используется именно древовидное представление.
22. Игорь Исхаков (Ish_2) 981 06.07.11 14:57 Сейчас в теме
(21) Вот я и прошу объяснить зачем нужен "иерархический состав изделя" ?
23. Роман Романов (romansun) 171 06.07.11 15:07 Сейчас в теме
(22)

:D

ха, вопрос больше не по адресу - мне самому всегда было любопытно, для чего нужны бумажные версии всего состава паровоза (а это ~полторы пачки А3), но это факт - данные копии подписываются начальнегами и складируются в стеллажи - типа бумажная копия...

в более нужных примерах - просто людям удобно работать, глядя на листок сборки какого-то узла в иерархическом виде... это может быть 1 листик А4, кусок сборки.... они на ней чо-нить ручкой черкают, черкают.... и потом рождаются шедевры :)

В целом, вопрос "зачем" можно адресовать к любой области, где данные выдаются пользователям в иерархии - это удобно и визуально понятно.
24. Игорь Исхаков (Ish_2) 981 06.07.11 15:42 Сейчас в теме
(23) Ну , можно предположить, что состав изделия может быть интересен на разных уровнях иерархии.
Скажем ,
сравнить сколько "электровоз" стоит в ценах "первичных" комплектующих и в ценах более крупных комплектующих.
Тогда вывод всей спецификации в дерево имеет какой-то смысл.

Конечно, имеет смысл также расчет бюджета корпорации на разных уровнях иерархии.
25. Соломон Яковлевич (meganibler) 67 06.07.11 16:23 Сейчас в теме
Ish_2,
Зачем нужно дерево?
Я загрузил все спецификации из старой АСУ в УПП.
И для того чтобы проверить совпадает ли спецификация в старой базе и в новой, мне нужен отчет в виде дерева.
Пока что только для этого.

Потом напишу отчет для составления применяемости без иерархии. У нас это называется "Нормы по изделиям"
только нужно будет поменять
|ЕСТЬNULL(Спец.Количество, 1) КАК Количество,
на
|Исх.Количество * ЕСТЬNULL(Спец.Количество, 1) КАК Количество,
чтобы количество материала в узле, умножалось на количество узлов.
26. Андроид Мар (Андроид) 175 06.07.11 16:29 Сейчас в теме
meganibler пишет:
Цитата

Андроид пишет:
Это при 13623 элементах и 9 уровней

Вы что там, ракету-носитель собираете?
Что за тип производства - машиностроение?

Цитата

Андроид пишет:
2. Если есть в сец. формула то количество неверное в Вашей обработке.
Это да, у нас просто формул нет, может пофиксю.


Да можно считать что машиностроение. Делаем клетку для птицефабрик. А в клетке может и 20000 элементов и 12 уровней вложения..

Если б и формулу прикрутили, воще респект и уважуха. Не очень люблю в чужом коде ковырятся. И времени особо нет. :D
27. Игорь Исхаков (Ish_2) 981 06.07.11 16:36 Сейчас в теме
(25) Ок. Понятно.
Пожелаю успехов по внедрению УПП без административного ресурса ( когда все "как бы не возражают").
Чем черт не шутит ?
28. Роман Романов (romansun) 171 06.07.11 17:13 Сейчас в теме
(24)

ну тут даже не вывод всего дерева интересен - достаточно какого-то куска (в пределах узла, нескольких узлов, одни только только узлы, иерархия с фильтром, скажем, по материалу, по марке стали, по цеху и прочее и прочее) - всё дерево, конечно, редко когда нужно.

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

простейшая применяемость видна из иерархии опять же, т.е. есть небольшой раскрытый полностью узел - в нём сразу глазами видно, где и в каком количестве какая-нить деталь, не надо смотреть специальный отчет.... да и не всегда компьютер есть под рукой

(27)
хз как, к примеру, с клетками (12 уровней?!), но в целом почти без шансов внедрять такие штуки без постоянного прогибания всех и вся. В конечном счете, накодить можно как угодно, с этим обычно проблем немного, а вот прогнуть очередного начальника, от которого уводят жирный кусок его нужности либо заставляют работать - это проблема.
29. Игорь Исхаков (Ish_2) 981 06.07.11 18:17 Сейчас в теме
(28)
Как управлять проектами внедрения УПП - учат на курсах.
Искусству тихого саботажа учит жизнь.
Какое из искусств для нас(внедренцев) является важнейшим ?
30. Соломон Яковлевич (meganibler) 67 07.07.11 08:06 Сейчас в теме
Ish_2 пишет:
Какое из искусств для нас(внедренцев) является важнейшим ?

Получить удовольствие от процесса внедрения. Это искусство... :)
31. Denis Li (S1ed) 18.07.11 16:56 Сейчас в теме
(3) Вопрос на засыпку: как обработка отрабатывает узловые спецификации? 8-)
А за идею и реализацию жирный плюс. :D
semen_2008; +1 Ответить
32. Соломон Яковлевич (meganibler) 67 25.07.11 15:44 Сейчас в теме
S1ed пишет:
как обработка отрабатывает узловые спецификации?


1)Сначала составляется временная таблица (ВТСпецификация) со ВСЕМИ спецификациями ВСЕХ изделий. (можно было бы заполнять эту таблицу только нужными элементами, тем из чего состоит изделие. Но программе заранее не объяснишь что нужно, а что нет, поэтому загружаем всё). При составлении временной таблицы используется СрезПоследних, чтобы получать данные на любую дату.
Поля таблицы такие:
ВыхНом, ИсхНом, Количество, ЕдиницаИзм

2)Создается хитрая табличка (ВремТаблица0) с единственной строкой:
%%КодВыхНом%, ВыхНом, Количество=1, ЕдИзмеренияВыхНом, ПризнакКонцаВетки=0
В строку помещаем "затравку" - номенклатуру которую разузловываем.

3)Далее над таблицей (ВремТаблица0) совершаются насильсвенные действия происходят преобразования:
В цикле делается запрос, который для каждого элемента ВремТаблица ищет подчиненные элементы в ВТСпецификация. Результат помещается в ВремТаблица+n. Старая таблица уничтожается.
С каждым циклом добавляется один уровень разузлования. Количество циклов заранее не определено, но ограничено.
Выход из цикла принудительный, когда не осталось элементов с ПризнакКонцаВетки = 0.
Эта часть кода взята без изменений из обработки ЗапросПротивРекурсии.epf
Честно говоря, я бы сам до такого не додумался.

4)Заполняется ДеревоЗначений.


блин, наверно вопрос был проще, вот что значит первый день из отпуска...
semen_2008; +1 Ответить
33. Илья Русаков (ruilin) 24.10.11 14:04 Сейчас в теме
а есть у кого-нибудь сам конструктор?
34. Петр Чечин (stoptime) 268 25.11.11 01:40 Сейчас в теме
Интересная тема, делал такиеже изменения в кострукторе спецификций. Скорости не хватало.
Проблеммы которые такой подход не решает.
Постоянно вносятся поправки в узлы. узлы входят в различные типы конечных изделий. возникает путаница.
При необходимости скорректировать для одного заказа, это вобще не удобно. Перепиывал конструктор, чтобы он сам генерировал копии спецификаций. Справочник спецификаций пух.

В какойто момент плюнул, и сделал документ полная спецификация изделия. где храню все таблици из спецификаций плюс данные чтобы построить дерево, плюс добавил там оснастки для технологов. В фоме вывожу почти копию конструктора спецификаций, чтобы с деревом народ работал как привык. Ьонусы - получаю список материалов без гемороя. получаю список узлов. если нужно строю по этому дерево.

PDM недавно крутил, визуально интересная, но если глянуть потроха, там много XML используется , плюс интефейс основной генерится HTML документами, захочеш чтото поменять , придется здорово попотеть. За неделю пока была NFR не осилил структуру данных, не очень прозрачно. Вывод если собираетесь брать, рекомендуюю проходить очень хорошо подумать. Впишится ли система без изменений.
35. mic auto (4ur) 27.06.12 10:21 Сейчас в теме
Данная обработка очень помогла и сэкономила массу времени, хотя задача была специфическая и пришлось "допиливать напильником"
36. mic auto (4ur) 27.06.12 10:23 Сейчас в теме
т.к. тут вскользь упоминается PDM и машиностроение, то может быть есть люди, которые пользуются этими конфигурациями реально, а то у нас как раз необходимо сделать выбор
37. Соломон Яковлевич (meganibler) 67 03.07.12 09:33 Сейчас в теме
(34) stoptime, Действительно, для простого пользователя встроенный механизм работы со спецификациями, штука жутко не удобная. Мои коллеги тоже переделали хранение версий спецификаций в виде документов.
(36) 4ur, Рад что обработка пригодилась, (я так и не успел её применить - уволился). Про PDM самому интересно.
38. mic auto (4ur) 27.08.12 12:01 Сейчас в теме
на практике проверил, что работает намного быстрее, чем стандартный конструктор, хотя так до конца и не понял, но при разузловании нескольких узлов все равно начинаются тормоза и только повторный запуск обработки от их избавляет, вроде нигде ничего не накапливается, но это факт. Относительно PDM, так реально никто ничего и не посоветовал, жаль. К сожалению демку найти нереально, чтобы попробовать, а стоит достаточно дорого. Основная загвоздка - как УПП+PDM будет работать в одной базе, не загнется ли база, если сотня пользователей ломанется, да и размер базы интересует, у нас она и так уже 60ГБ.
39. Антон Паскаль (platon_) 10 25.03.14 13:47 Сейчас в теме
Обработка прервана.Временная таблица - более 3 миллионов записей !

а обойти это ограничение можно как то?


и ещё. а как быть если учёт ведётся по характеристикам?
40. Gerat2 Копылов (Gerat2) 16 13.05.14 08:29 Сейчас в теме
41. Игорь Герман (German_Tagil) 4 20.03.17 14:51 Сейчас в теме
На КА вроде работает спасибо - завтра буду разбираться
42. Игорь Герман (German_Tagil) 4 20.03.17 20:49 Сейчас в теме
(40) Gerat2 Копылов (Gerat2) вопрос запустится запустилось создал две спецификации
и ни туда и ни сюда -чегото надо для пинка что дерево построилось - не строится
может кто подскажет?
Оставьте свое сообщение