На улице должливый день, а по заданию "партии" надо в Документе ВыпускГотовойПродукции в табличной части, для реквизита Партия выбрать документ ПоступлениеПолуфабриков. Реквизит Партия имеет тип Документ.ПоступлениеПолуфабрикатов, вроде бы выбор очевиден! Но надо выбрать не все документы, а так, что бы менеджер с ума не сошел от представленного разнообразия, а показать ему только те документы, которые имеют нужный Склад и Номенклатуру, да и вдобавок ненулевой остаток из Регистра накоплений Партии. Тряхнем стариной, приступим!
Добавим ФормуВыбора для документа ПоступлениеПолуфабрикатов
В свойствах списка поставим галочку Произвольный запрос
Вызовем конструктор запросов и заменим стандартный запрос, запросом к регистру партий, что бы узнать ненулевые остатки и зададим в нем несколько условий для отбора по Номенклатуре и Складу
В запросе появились два параметра. Склад и Номенклатура. Передачей их в запрос займемся чуть позже. Закрываем редактор запроса.
Форма, после редактирования запроса, обиделась и съежилась, Теперь нет табличной части. Остались лишь одинокие Дата и Номер,а все потому что у них пропал путь к данным.
Восстановим.
Как только поправили ПутьКДанным у Даты, форма обрадовалась и отобразила нам таблицу. Набросаем в таблицу нужных колонок, что бы пользователю было удобней выбирать.
Теперь вернемся к документу ВыпускГотовойПродукции, к реквизиту Партии и пропишем параметры (Склад и Номенклатура), которые должны передаться в ФормуВыбора документа ПоступлениеПолуфабрикатов. Мы же не хотим выплачивать больничные менеджеру.
Щелкаем на Партии и выбираем СвязиПараметорВыбора
Добавляем два параметра: Склад и Номенклатура
Для реквизита Партии, если у нас несколько форм выбора, укажем нашу форму выбора, как основную. Если ФормаВыбора одна ее можно не указывать
Осталось передать наши параметры в Список ФормыВыбора документа ПоступленияПолуфабрикатов. В ФормеВыбора используем предопределенную процедуру ПриСозданииНаСервере
Пробуем как это работает
Жмем Показать все, что бы появилась наша ФормаВыбора
Теперь хотелось бы передать значение Остатка в вызывающую форму, что бы заполнить колонку Количество.
Задействуем события Списка ФормыВыбора документа ПоступлениеПолуфабрикатов, которые отвечают за выбор пользователем конкретного документа. Это предопределенные процедуры ВыборЗначения и ОбработкаВыбора.
Пропишем для них программный код в котором задействуем Оповестить для возврата остатка в вызывающую форму.
Передадим наш остаток в виде структуры, через параметр.
В вызывающей форме, ВыпускГотовойПродукции назначим обработку ОбработкаОповещения
Пропишем код
Все!