Заполнение материалов по спецификации

1. Jane1508 4 24.05.21 17:46 Сейчас в теме
В заказе на производство добавили 2 реквизита. 1. Элемент формы "Потери"; 2. Элемент табличной части "КолРец"(рис. ЗнП1).
"КолРец" - это количество продукции которое планируется произвести, а "Количество" - количество с учетом потерь.
Соответственно, в материалах тоже должно быть два столбца "КолРец"- это 100% рецептура, и "Количество" - с учетом потерь.
Надо что бы при использовании процедуры "ЗаполнитьМатериалыПоСпецификации" заполнялись оба столбца. Как с потерями, так и без потерь по 100% рецептуре(рис. ЗнП2) .
Пыталась переделать процедуру "ЗаполнитьМатериалыПоСпецификации", но не вышло. Подскажите, пожалуйста, где и что надо добавить.


Процедура ЗаполнитьМатериалыПоСпецификации(ТабличнаяЧасть, ИмяТабличнойЧасти) Экспорт
	
	ТаблицаИсходныеКомплектующие = ТабличнаяЧасть.Выгрузить();
	
	Параметры = Новый Структура("ПараметрыВыпуска, КоличествоУровнейРазузлования, ДатаСпецификации");
	Параметры.Вставить("РазмещатьВСопутствующихИзделиях", Истина);
	
	РезультатРазузлования = Новый Структура("ИсходныеКомплектующие");
	
	Для Каждого СтрокаТабличнойЧасти Из Продукция Цикл
		
		Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.Спецификация) Тогда
			Продолжить;
		КонецЕсли;
		
		РезультатРазузлования.Вставить("ИсходныеКомплектующие", Неопределено);
		
		СтруктураИсточник = Новый Структура("Номенклатура, ХарактеристикаНоменклатуры, ЕдиницаИзмерения, Коэффициент, Количество, Спецификация");
		ЗаполнитьЗначенияСвойств(СтруктураИсточник, СтрокаТабличнойЧасти);
		
		ПараметрыВыпуска = Новый Соответствие;
		Для Каждого ПараметрВыпуска из ПараметрыВыпускаПродукции Цикл
			
			Если ПараметрВыпуска.КлючСвязи = СтрокаТабличнойЧасти.КлючСвязи Тогда
				ПараметрыВыпуска.Вставить(ПараметрВыпуска.ВидПараметра.Наименование, ПараметрВыпуска.Значение);
			КонецЕсли;
			
		КонецЦикла;
		
		Параметры.ПараметрыВыпуска = ПараметрыВыпуска;
		Параметры.КоличествоУровнейРазузлования = 1;
		Параметры.ДатаСпецификации = Дата;
		
		МассивОшибок = РазузлованиеНоменклатуры.РазузловатьНоменклатуру(СтруктураИсточник, РезультатРазузлования, Параметры);
		
		Если МассивОшибок.Количество() > 0 Тогда
			
			Для каждого Ошибка из МассивОшибок Цикл
				
				ОбщегоНазначения.Сообщение("Ошибка: " + Ошибка.Причина, Ошибка.СтатусОшибки);
				ОбщегоНазначения.Сообщение(" Спецификация: " + Ошибка.Спецификация);
				ОбщегоНазначения.Сообщение(" Номер строки: " + Ошибка.НомерСтроки);
				ОбщегоНазначения.Сообщение(" Описание ошибки: " + Ошибка.ОписаниеОшибки);
			
			КонецЦикла;
			
		КонецЕсли;
		
		Если РезультатРазузлования.ИсходныеКомплектующие = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		
		ИсходныеКомплектующие = РезультатРазузлования.ИсходныеКомплектующие;
		
		ИсходныеКомплектующие.ЗаполнитьЗначения(Подразделение, "Подразделение");
		//заполним подразделение по основной спецификации полуфабрикатов
		Для каждого Строка из ИсходныеКомплектующие цикл
			ПодразделениеНоменклатуры = ЗаказыНаПроизводствоИПереработку.ПолучитьПодразделениеИзСпецификации(Строка.Спецификация,Строка.Номенклатура,Строка.ХарактеристикаНоменклатуры);
			Если ЗначениеЗаполнено(ПодразделениеНоменклатуры) Тогда
				Строка.Подразделение = ПодразделениеНоменклатуры;
			КонецЕсли;
		КонецЦикла;
		
		ИсходныеКомплектующие.Колонки.Добавить("Продукция");
		ИсходныеКомплектующие.Колонки.Добавить("ХарактеристикаПродукции");
		
		ИсходныеКомплектующие.ЗаполнитьЗначения(СтрокаТабличнойЧасти.Номенклатура, "Продукция");
		ИсходныеКомплектующие.ЗаполнитьЗначения(СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры, "ХарактеристикаПродукции");
		ИсходныеКомплектующие.ЗаполнитьЗначения(СтрокаТабличнойЧасти.Спецификация, "Спецификация");
		
		ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ИсходныеКомплектующие, ТаблицаИсходныеКомплектующие);
		
	КонецЦикла;
	
	ТаблицаИсходныеКомплектующие.Свернуть("Номенклатура, ХарактеристикаНоменклатуры, ЕдиницаИзмерения, Коэффициент, ВидВоспроизводства, Спецификация, Подразделение, Продукция, ХарактеристикаПродукции", "Количество");
	
	ТабличнаяЧасть.Загрузить(ТаблицаИсходныеКомплектующие);
	
	Для Каждого СтрокаТабличнойЧасти Из ТабличнаяЧасть Цикл
		
		ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуМестТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, Ложь);		
		
	КонецЦикла;
	
КонецПроцедуры // ЗаполнитьМатериалыПоСпецификации()
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. гаврюша 3 25.05.21 10:49 Сейчас в теме
Сделайте отдельной внешней обработкой заполнения табличных частей. Скопируйте процедуру заполнения спецификации и добавьте заполнение своих колонок.
Оставьте свое сообщение

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