1С ERP Разузлование спецификаций

1. user5300 1079 26.03.25 11:43 Сейчас в теме
Добрый день, друзья!

Вопрос вроде когда то поднимался уже, но подскажите, пожалуйста еще раз:

Каким способом можно выполнить разузлование спецификаций (в ERP 2.5) более оптимально ?
Желательно с использованием типового функционала (можно и без), а еще лучше с примером
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
15. user5300 1079 26.03.25 14:30 Сейчас в теме
В общем пока остановился на данном решении.

Если найдется оптимальнее - просьба сообщить.

Спасибо всем откликнувшимся !
&НаСервере
Процедура РазузловатьНаСервере(Спецификация, Количество)
	
	Отчет.Материалы.Очистить();
		
	ПараметрыДерева = УправлениеДаннымиОбИзделияхКлиентСервер.ПараметрыДереваСпецификаций();
	
	ПараметрыДерева.Номенклатура               = Справочники.Номенклатура.ПустаяСсылка();
	ПараметрыДерева.ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
	ПараметрыДерева.Спецификация               = Спецификация;
	
	ПараметрыДерева.ПараметрыВыбораСпецификаций = УправлениеДаннымиОбИзделиях.ПараметрыВыбораСпецификаций(Новый Структура(), Обработки.ДеревоРесурсныхСпецификаций);
	
	ПараметрыДерева.Дата                         = ДатаОстатков;
	ПараметрыДерева.ПодразделениеДиспетчер       = Справочники.СтруктураПредприятия.ПустаяСсылка();
	ПараметрыДерева.НаправлениеДеятельности      = Справочники.НаправленияДеятельности.ПустаяСсылка();
	
	
	ПараметрыДерева.ДинамическоеСчитывание       = Истина;  
	
	МнимаяФорма = новый Структура("ДеревоВыводитьЭтапы, ДеревоВыводитьОперации, ДеревоВыводитьВыходныеИзделия,ДеревоВыводитьМатериалы,ДеревоВыводитьТрудозатраты,ДеревоВыводитьЗаголовкиГруппировок",
					           Ложь, Ложь, Ложь, Истина,Ложь,Ложь);

	УправлениеДаннымиОбИзделиях.ЗаполнитьНастройкиОтбораДереваСпецификации(ПараметрыДерева, МнимаяФорма);	
	
	ПараметрыДерева.РазузловыватьПолуфабрикаты = РазузловыватьПолуфабрикаты;
	
	ОсновноеИзделие = Справочники.РесурсныеСпецификации.ДанныеОсновногоИзделияСпецификации(Спецификация);
	
	ПараметрыДерева.Номенклатура = ОсновноеИзделие.Номенклатура;
	ПараметрыДерева.КоличествоВыходногоИзделия = Количество * ОсновноеИзделие.Количество;
	ПараметрыДерева.КоличествоУпаковокВыходногоИзделия = ложь;
	ПараметрыДерева.УпаковкаВыходногоИзделия = ложь;      
	
	ПараметрыДерева.ВыводитьОстаткиТоваров = Истина; 
	
	УправлениеДаннымиОбИзделиях.ПостроитьДеревоСпецификаций(ЭтотОбъект, ПараметрыДерева);
	
	РазвернутьДерево(ДеревоСпецификаций);	
	                  
КонецПроцедуры 

&НаСервере
Процедура РазвернутьДерево(СтрокаДерево)
	
	Для каждого ст из СтрокаДерево.ПолучитьЭлементы() Цикл

		Идентификатор =  ст.ПолучитьИдентификатор();
		
		УправлениеДаннымиОбИзделияхКлиентСервер.ДеревоСпецификацийПередРазворачиванием(ЭтотОбъект, Идентификатор, ложь);
		
		РазвернутьДерево(ст);
		
	КонецЦикла;
	
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 33 26.03.25 12:00 Сейчас в теме +2 $m
3. user5300 1079 26.03.25 12:04 Сейчас в теме
(2) Иерархия без "В ИЕРАРХИИ" вот это только, но не думаю что это по моему вопросу ...
5. user5300 1079 26.03.25 12:29 Сейчас в теме
(4) Это тоже не по моему вопросу...
В интернете я уже находил подобные задачи, но большинство из них не актуальны..
Хотелось бы именно что то более оптимальное
6. nomad_irk 81 26.03.25 13:03 Сейчас в теме
(5) для разузлования вариантов не так много, один из них - рекурсия.
7. glek 119 26.03.25 13:30 Сейчас в теме +2 $m
(1) Разузловать в виде дерева или просто получить все вхождения?
10. user5300 1079 26.03.25 13:39 Сейчас в теме
(7) Преимущественно - получить все вхождения
12. glek 119 26.03.25 13:43 Сейчас в теме
(10) Ищите в сторону модуля менеджера справочника ресурсных спецификаций. Например ДанныеСпецификацииПоНоменклатуре
8. user-z99999 78 26.03.25 13:36 Сейчас в теме
(1) Заказ на производство - Структура заказа
Прикрепленные файлы:
11. user5300 1079 26.03.25 13:41 Сейчас в теме
(8) Этапы немного не то... нужны спецификации
13. user-z99999 78 26.03.25 13:43 Сейчас в теме
(11)
Зайди в спецификацию внутрь. Вверху Дерево спецификации.
14. user5300 1079 26.03.25 13:45 Сейчас в теме
(13) Это тоже я видел, пока использую его, но там частично используются элементы формы + дерево (процедуры сворачивания\разворачивания) ...
Думал есть более оптимальные способы, поэтому поднял тему
15. user5300 1079 26.03.25 14:30 Сейчас в теме
В общем пока остановился на данном решении.

Если найдется оптимальнее - просьба сообщить.

Спасибо всем откликнувшимся !
&НаСервере
Процедура РазузловатьНаСервере(Спецификация, Количество)
	
	Отчет.Материалы.Очистить();
		
	ПараметрыДерева = УправлениеДаннымиОбИзделияхКлиентСервер.ПараметрыДереваСпецификаций();
	
	ПараметрыДерева.Номенклатура               = Справочники.Номенклатура.ПустаяСсылка();
	ПараметрыДерева.ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
	ПараметрыДерева.Спецификация               = Спецификация;
	
	ПараметрыДерева.ПараметрыВыбораСпецификаций = УправлениеДаннымиОбИзделиях.ПараметрыВыбораСпецификаций(Новый Структура(), Обработки.ДеревоРесурсныхСпецификаций);
	
	ПараметрыДерева.Дата                         = ДатаОстатков;
	ПараметрыДерева.ПодразделениеДиспетчер       = Справочники.СтруктураПредприятия.ПустаяСсылка();
	ПараметрыДерева.НаправлениеДеятельности      = Справочники.НаправленияДеятельности.ПустаяСсылка();
	
	
	ПараметрыДерева.ДинамическоеСчитывание       = Истина;  
	
	МнимаяФорма = новый Структура("ДеревоВыводитьЭтапы, ДеревоВыводитьОперации, ДеревоВыводитьВыходныеИзделия,ДеревоВыводитьМатериалы,ДеревоВыводитьТрудозатраты,ДеревоВыводитьЗаголовкиГруппировок",
					           Ложь, Ложь, Ложь, Истина,Ложь,Ложь);

	УправлениеДаннымиОбИзделиях.ЗаполнитьНастройкиОтбораДереваСпецификации(ПараметрыДерева, МнимаяФорма);	
	
	ПараметрыДерева.РазузловыватьПолуфабрикаты = РазузловыватьПолуфабрикаты;
	
	ОсновноеИзделие = Справочники.РесурсныеСпецификации.ДанныеОсновногоИзделияСпецификации(Спецификация);
	
	ПараметрыДерева.Номенклатура = ОсновноеИзделие.Номенклатура;
	ПараметрыДерева.КоличествоВыходногоИзделия = Количество * ОсновноеИзделие.Количество;
	ПараметрыДерева.КоличествоУпаковокВыходногоИзделия = ложь;
	ПараметрыДерева.УпаковкаВыходногоИзделия = ложь;      
	
	ПараметрыДерева.ВыводитьОстаткиТоваров = Истина; 
	
	УправлениеДаннымиОбИзделиях.ПостроитьДеревоСпецификаций(ЭтотОбъект, ПараметрыДерева);
	
	РазвернутьДерево(ДеревоСпецификаций);	
	                  
КонецПроцедуры 

&НаСервере
Процедура РазвернутьДерево(СтрокаДерево)
	
	Для каждого ст из СтрокаДерево.ПолучитьЭлементы() Цикл

		Идентификатор =  ст.ПолучитьИдентификатор();
		
		УправлениеДаннымиОбИзделияхКлиентСервер.ДеревоСпецификацийПередРазворачиванием(ЭтотОбъект, Идентификатор, ложь);
		
		РазвернутьДерево(ст);
		
	КонецЦикла;
	
КонецПроцедуры
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот