Тип у ПоляВвода - составной = (ДокументСсылка.ПоступлениеТоваров, ДокументСсылка.Оприходование, ДокументСсылка.Выпуск)
Работу реализовал через подбор. Все очень довольны.
Теперь по делу:
1. Создал Обработку "ПодборПартии"
2. Создал Форму этой обработки (ФормаПодбора),
на этой форме разместил ТабличноеПоле с именем "ОстаткиПоПартиям"
на вкладке Реквизиты формы добавил реквизиты: Дата, Номенклатура, Характеристика, Склад.
В созданные реквизиты я из формы ВыпускПродукции передаю данные, которые в обработке ПодборПартии используются как параметры запроса
теперь коды:
1.на событие ПриОкрытии формы "ПодборПартии"
Процедура ПриОткрытии()
ПолучитьОстатки(Номенклатура, Дата, Характеристика,Склад);
КонецПроцедуры
2. Сама процедура ПолучитьОстатки:
Процедура ПолучитьОстатки(Номенклатура,Период, Характеристика,Склад)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Остатки.Партия,
| СУММА(Остатки.КоличествоОстаток) КАК Остаток,
| Остатки.СуммаОстаток КАК Сумма,
| СУММА(Остатки.СуммаОстаток / ЕСТЬNULL(Остатки.КоличествоОстаток, 1)) КАК Цена
|ИЗ
| РегистрНакопления.ПартииТоваровНаСкладах.Остатки(
| &Период,
| Номенклатура = &Номенклатура
| И Характеристика = &Характеристика
| И Склад = &Склад) КАК Остатки
|
|СГРУППИРОВАТЬ ПО
| Остатки.Партия,
| Остатки.Номенклатура,
| Остатки.Склад,
| Остатки.СуммаОстаток";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура1); //Справочник ссылка: Номенклатура
Запрос.УстановитьПараметр("Период", Период1); //Дата
Запрос.УстановитьПараметр("Характеристика", Характеристика1);
Запрос.УстановитьПараметр("Склад", Склад1);
РезультатЗапроса = Запрос.Выполнить();
ОстаткиПоПартиям.Очистить();
ОстаткиПоПартиям.Загрузить(РезультатЗапроса.Выгрузить());
КонецПроцедуры
3.Пользователь видит список партий с остатками суммами и ценами и выбирает нужную - двойной щелчок и получаем событие "Выбор" табличного поля ОстаткиПоПартиям. Его обработчик:
Процедура ОстаткиПоПартиямВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
ОповеститьОВыборе(ВыбраннаяСтрока);
КонецПроцедуры
Этой процедурой я передаю в форму ВыпускПродукции всю строку, выбранную пользователем
Теперь несколько слов о главной форме:
1. Обрабочик события нажатия кнопки "ПодборПартии"
Процедура КоманднаяПанель1ПодборПартии(Кнопка)
ТекСтрока=ЭлементыФормы.Товары.ТекущиеДанные;
ТекСтрока.Партия=Документы.ПоступлениеТоваров.ПустаяСсылка(); //очистить предыдущий выбор
ФормаПодбора=Обработки.ПодборПартии.ПолучитьФорму("ФормаПодбора",ЭтаФорма);// Важно- обязательно задать подчиненной форме главную (эта форма) иначе эта форма не обработает событие "оповестить о выборе"
// передаем данные для параметров запроса
ФормаПодбора.Дата=Дата;
ФормаПодбора.Склад=СкладИсточник;
ФормаПодбора.Номенклатура=ТекСтрока.Номенклатура;
ФормаПодбора.Характеристика=ТекСтрока.Характеристика;
ФормаПодбора.РежимВыбора=Истина; //указываем что форма открывается для выбора
ФормаПодбора.ОткрытьМодально(); //Открываем как подчиненную
КонецПроцедуры
2 Форме ВыпускПродукции была назначена обработка события: ОбработкаВыбора
Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
ТекСтрока=ЭлементыФормы.Товары.ТекущиеДанные;
ТекСтрока.Партия=ЗначениеВыбора.Партия;
ТекСтрока.Цена=ЗначениеВыбора.Цена;
ТекСтрока.Сумма=ТекСтрока.Количество*ТекСтрока.Цена;
КонецПроцедуры
Все отлично работает
To zetovich
Цитата
Начинающий и "с нуля" не вяжется.
Программированием 1С занялся 2 месяца назад. Изучаю самостоятельно. Большое спасибо вот таким вот форумам