gifts2017

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

Опубликовал Соломон Яковлевич (meganibler) в раздел Обработки - Обработка справочников

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

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

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

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

Покурив статью про рекурсию и запросы http://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

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

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

См. также

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

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

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

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

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

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

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


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

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

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


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

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

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

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


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

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


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

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

:D

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

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

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

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

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

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

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

Цитата

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


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

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

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

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

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

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

Получить удовольствие от процесса внедрения. Это искусство... :)
31. Denis Li (S1ed) 18.07.11 16:56
(3) Вопрос на засыпку: как обработка отрабатывает узловые спецификации? 8-)
А за идею и реализацию жирный плюс. :D
semen_2008; +1 Ответить
32. Соломон Яковлевич (meganibler) 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) 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) 03.07.12 09:33
(34) stoptime, Действительно, для простого пользователя встроенный механизм работы со спецификациями, штука жутко не удобная. Мои коллеги тоже переделали хранение версий спецификаций в виде документов.
(36) 4ur, Рад что обработка пригодилась, (я так и не успел её применить - уволился). Про PDM самому интересно.
38. mic auto (4ur) 27.08.12 12:01
на практике проверил, что работает намного быстрее, чем стандартный конструктор, хотя так до конца и не понял, но при разузловании нескольких узлов все равно начинаются тормоза и только повторный запуск обработки от их избавляет, вроде нигде ничего не накапливается, но это факт. Относительно PDM, так реально никто ничего и не посоветовал, жаль. К сожалению демку найти нереально, чтобы попробовать, а стоит достаточно дорого. Основная загвоздка - как УПП+PDM будет работать в одной базе, не загнется ли база, если сотня пользователей ломанется, да и размер базы интересует, у нас она и так уже 60ГБ.
39. Антон Паскаль (platon_) 25.03.14 13:47
Обработка прервана.Временная таблица - более 3 миллионов записей !

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


и ещё. а как быть если учёт ведётся по характеристикам?
40. Gerat2 Копылов (Gerat2) 13.05.14 08:29