Множественная операция подбора из справочника
alexoxol78
17.02.2009 - 14:17
|
Всем привет. Передо мной стоит следующая задача: Есть партионный учет по срокам годности товара на складе. Нужно встать на строку с товаром в документе, нажать кнопку "Распределить товар по партиям вручную", далее чтобы открывалась форма подбора справочника "Сроки годности", выбираешь партию срока годности, открывается форма ВвестиЧисло, вводишь цифру, опять открывается подбор спрвочника "Сроки годности", ВвестиЧисло и т.д. до полного распределения товара по партиям. Я это реализовывал через ВвестиЗначение -> ВвестиЧисло -> ВвестиЗначение -> ВвестиЧисло ->... и т.д., но в функции ВвестиЗначение нельзя посмотреть текущий остаток в партии на конкретном складе по конкретному товару, что неудобно. Решил реализовать через подбор, сделал в справочнике "Сроки годности" форму подбора с подсчетом остатков, все нормально, но не могу вызвать циклический подбор. Я представлял себе так, что после вызова процедуры ОткрытьПодбор("Справочник.СрокиГодности","ДляПодбора",,0) выполнение программы остановится и возобновится уже после выбора элемента в подборе в процедуре ОбработкаПодбора(Выб), но это оказалось не так, течение программы продолжается дальше и не ждет когда я выберу значение в подборе, чтобы обработать данные и снова сделать подбор... Как мне быть? Привожу существующий код: Процедура Подбор() ОткрытьПодбор("Справочник.СрокиГодности","ДляПодбора",,0); УстановитьЗначениеВПодборе("СкладПодбор",Склад); УстановитьЗначениеВПодборе("ТоварПодбор",Товар); УстановитьЗначениеВПодборе("БракПодбор",Брак); КонецПроцедуры Процедура ОбработкаПодбора(Выб) ТекПартия = Выб; Если ТекПартия = 0 Тогда ПрерватьРаспределение = 1; Иначе ТекКоличество = 0; Если ВвестиЧисло(ТекКоличество,"Кол-во (осталось "+ОстКоличество+")",19,3,) = 0 Тогда ПрерватьРаспределение = 1; Иначе ОстКоличество = ОстКоличество - ТекКоличество; ТЗ_НовСтр.НоваяСтрока(); ТЗ_НовСтр.Количество = ТекКоличество; ТЗ_НовСтр.СГ = ТекПартия; Если ОстКоличество <= 0 Тогда ПрерватьРаспределение = 1; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры Процедура Распределить() Если Товар.Выбран() = 0 Тогда Предупреждение("Строка для распределения не выбрана!"); Иначе ТекТовар = Товар; ТекОбщКол = Количество; ОстКоличество = ТекОбщКол; ПрерватьРаспределение = 0; Пока ПрерватьРаспределение = 0 Цикл // Выбираем партию срока годности Подбор(); КонецЦикла; // Смотрим что в ТЗ и сверяем с исходным количеством Если ТЗ_НовСтр.КоличествоСтрок() > 0 Тогда ................... и т.д. Не могу зациклить подбор значения.. :( |