сколько штук этих комплектующих еще
Ком=СКом.Комплектующее;
БухИтоги.ИспользоватьСубконто(ВидыСубконто.МестоХранения,Скл,2);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Комплектующее,Ком,2);
// Отбираем по указанному складу и текущей комплектующей
БухИтоги.ВыполнитьЗапрос(,ДатаДок,"10.2");
КолКом=БухИтоги.СКД(3);
// Выясняем, сколько штук этих комплектующих еще есть на складе
СпЗн.ДобавитьЗначение(КолКом);
// Добавляем в список
КонецЦикла;
СпрКом="";
ИОст=0;
// Ищем минимальное значение в списке
Для ЧЦ=1 По СпЗн.РазмерСписка() Цикл
ТТТ="";
Если ЧЦ=1 Тогда
КолСп=СпЗн.ПолучитьЗначение(ЧЦ,ТТТ);
ИОст=КолСп;
Иначе
КолСп=СпЗн.ПолучитьЗначение(ЧЦ,ТТТ);
Если ИОст>КолСп Тогда
ИОст=КолСп;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат(ИОст);
// Выдаем это минимальное значение
КонецФункции
//==========================================================
Процедура Кол()
ОстКомпл=Ост(Склад,Изделие);
// Выясняем остаток на складе
Если Кол>ОстКомпл Тогда
// Если запросили больше
Кол=ОстКомпл;
// Даем сколько есть
КонецЕсли;
КонецПроцедуры
Теперь пропишем процедуру проведения. Здесь у нас будет формирование движения партий, но не по строкам документа, а по комплектующим, определяемым через эти строки. Проводки будут только одного типа (Д 20 – К 10.2). Здесь же будет проверка, не запрашиваем ли мы комплектующих больше, чем есть на складе.
Процедура ОбработкаПроведения()
Если Склад.Выбран()=0 Тогда
Сообщить("Документ Наряд на сборку №"+НомерДок+"
|от "+ДатаДок+" не проведен.
|Не выбран склад заготовок");
НеПроводитьДокумент();
Содержание Назад Вперед