Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Процедура РассчитатьКоличествоМатериаловПоФормулеНаСервере()
- СпрМенеджер = Справочники.РесурсныеСпецификации;
- ТипКолонкиФормула = Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(1024));
- // Описание источников
- ОписаниеИсточников = СпрМенеджер.ОписаниеИсточниковДанныхОперандов();
- // Параметры расчета
- РеквизитыСтруктурыДанных =
- "СпособРаспределенияЗатратНаВыходныеИзделия," +
- "ТипПроизводственногоПроцесса," +
- "ВариантНазначения," +
- "МногоэтапныйПроизводственныйПроцесс," +
- "ВыпускПроизвольнымиПорциями," +
- "ОптимальнаяПартияВыпуска," +
- "ОсновноеИзделиеНоменклатура," +
- "ДопустимоеПревышениеОптимальнойПартииВыпуска," +
- "МинимальнаяПартияВыпуска," +
- "ОптимальноеКоличествоПередачиМеждуЭтапами," +
- "ЕстьУточняемоеОсновноеИзделие," +
- "ЕстьПараметризацияРесурсов," +
- "ЕстьАвтовыборСпецификацийВПроцессе," +
- "ЕстьРасчетВероятности," +
- "ЕстьНекратныйВыпуск," +
- "ЕстьНекратныеНормативыВРЦ"
- ;
- СтруктураДанных = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Спецификация, РеквизитыСтруктурыДанных);
- СтруктураДанных.Вставить("Спецификация", Спецификация);
- СтруктураДанных.Вставить("СпецификацияПредставление", Строка(Спецификация));
- СтруктураДанных.Вставить("СостояниеДанныхНаборов", "Отсутствуют");
- СтруктураДанных.Вставить("МаксимальныйСрокПролеживанияВДнях", 1);
- СтруктураДанных.Вставить("ОптимальноеКоличествоПередачиМеждуЭтапами", Ложь);
- СтруктураДанных.Вставить("ОсновноеИзделие", СтруктураДанных.ОсновноеИзделиеНоменклатура);
- ДанныеОсновногоИзделия = СпрМенеджер.СтруктураДанныхОсновногоИзделияСпецификации();
- ЗаполнитьЗначенияСвойств(ДанныеОсновногоИзделия, СтруктураДанных.ОсновноеИзделие);
- ДанныеОсновногоИзделия.Количество = Спецификация.ВыходныеИзделия.Итог("КоличествоУпаковок");
- ДанныеОсновногоИзделия.КоличествоУпаковок = ДанныеОсновногоИзделия.Количество;
- СтруктураДанных.ОсновноеИзделие = ДанныеОсновногоИзделия;
- ДанныеТабличныхЧастей = Новый Структура;
- ДанныеТабличныхЧастей.Вставить("ВыходныеИзделия", Спецификация.ВыходныеИзделия.Выгрузить());
- ДанныеТабличныхЧастей.Вставить("ВозвратныеОтходы", Спецификация.ВозвратныеОтходы.Выгрузить());
- ДанныеТабличныхЧастей.Вставить("МатериалыИУслуги", Спецификация.МатериалыИУслуги.Выгрузить());
- ИсточникиДанных = СпрМенеджер.СтруктураИсточниковДляРасчетаПоФормулам();
- // основное изделие спецификации
- ОсновноеИзделие = ОбщегоНазначения.СкопироватьРекурсивно(СтруктураДанных.ОсновноеИзделие);
- ИсточникиДанных.ОсновноеИзделие = ОсновноеИзделие;
- Для Каждого СтрокаДанных Из ДанныеТабличныхЧастей Цикл
- ИмяТЧ = СтрокаДанных.Ключ;
- ТЗДанные = ДанныеТабличныхЧастей[ИмяТЧ];
- ТЗДанные.Колонки.Добавить("Формула", ТипКолонкиФормула);
- Таблица = ОбщегоНазначенияУТ.ВыгрузитьТаблицуЗначений(ТЗДанные,, "НомерСтроки,АлгоритмРасчетаКоличества", Новый Структура("Формула", ""));
- НаборДанных = Новый Массив;
- НаборДанных.Добавить(Таблица);
- ИсточникиДанных[ИмяТЧ].Колонки.Добавить("Формула", ТипКолонкиФормула);
- Для каждого Строка Из ТЗДанные Цикл
- нстрИсточника = ИсточникиДанных[ИмяТЧ].Добавить();
- ЗаполнитьЗначенияСвойств(нстрИсточника, Строка);
- // заполним количество
- НайденныеСтрокиТЧ = Спецификация[ИмяТЧ].НайтиСтроки(Новый Структура("КлючСвязи", нстрИсточника.КлючСвязи));
- Если НайденныеСтрокиТЧ.Количество() > 0 Тогда
- нстрИсточника.Количество = НайденныеСтрокиТЧ[0].КоличествоУпаковок;
- КонецЕсли;
- КонецЦикла;
- КонецЦикла;
- ПараметрыДляРасчета = УправлениеДаннымиОбИзделиях.ПараметрыДляРасчетаПоФормулам(ОписаниеИсточников, НаборДанных);
- ДанныеДляРасчета = УправлениеДаннымиОбИзделиях.ДанныеДляРасчетаПоФормулам(СпрМенеджер, ПараметрыДляРасчета, ОписаниеИсточников, ИсточникиДанных);
- Для Каждого Строка Из ИсточникиДанных.МатериалыИУслуги Цикл
- // заполним преоразованную формулу
- МассивСтрокСФормулами = НаборДанных[0].НайтиСтроки(Новый Структура("НомерСтроки, АлгоритмРасчетаКоличества", Строка.НомерСтроки, Строка.АлгоритмРасчетаКоличества));
- Если МассивСтрокСФормулами.Количество() > 0 Тогда
- Формула = МассивСтрокСФормулами[0].Формула;
- Если Формула <> Неопределено И Не ПустаяСтрока(Формула) Тогда
- Строка.Формула = Формула;
- УправлениеДаннымиОбИзделиях.РассчитатьКоличествоПоФормуле(Строка, ДанныеДляРасчета, "Количество");
- КонецЕсли;
- КонецЕсли;
- КонецЦикла;
- Объект.МатериалыИУслуги.Загрузить(ИсточникиДанных.МатериалыИУслуги);
- КонецПроцедуры
Add Comment
Please, Sign In to add comment