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