Ну то тупой алгоритм "что б работало", а если в дальнейшем будет дорабатываться (а оно таки будет), то лучше сразу делать так как будет легче.
А "проще" - я немного перепутал с "подробнее"
Цитата
Хотелось бы чтоб при открытии этой формы выбора
брался склад из документа, не зависимо какой док открываешь
А как же это? Если пишете универсальную обработку подбора в документ, то она должна быть
универсальной.
Цитата
ФормаПодбора.СкладОстатки = Склад;
Выдаст ошибку, если у документа нет реквизита Склад. А в будущем возможно понадобятся и другие передаваемые парметры в форму. так и будете добавлять реквизиты? Правильнее добавить структуру в качестве реквизита обработки и в неё передавать нужные данные.
Вы должны написать такую обработку что бы она вызывалась и отрабатывала с помощью вызова одной функции.
Перейдем тогда к примеру.
Опишите в общем модуле:
Процедура ОткрытьФормуПодбора(ДокОбъект, ФормаВладелец) ЭКСПОРТ
ФормаПодбора = <получаем форму обработки подбора>
ФормаПодбора.ПередаваемыеПараметры = ПолучитьСтрукктурудляПодбора(ДокОбъект);
// в форму подбора также можно передать и форму владельца. Специально добавил дополнительный реквизит в форму
ФормаПодбора.Открыть();
КонецПроцедуры
Функция ПолучитьСтрукктурудляПодбора(ДокОбъект)
ПередаваемыеПараметры = Новый Структура;
// дальше накидываем в структуру все параметры которые нам нужны, пока что это склад
Возврат ПередаваемыеПараметры;
КонецФункции
В процедуре при открытии формы подбора анализируете переданные параметры и выполняете нужные действия
а при нажатии кнопки подбор в документах достаточно будет вставлять одну процедуру
ОткрытьФормуПодбора(ЭтотОбъект, ЭтаФорма);
для передачи данных из обработки подбора в форму документа используйте функцию Оповестить(<ИмяСобытия>, <Параметр>, <Источник>) .
В форме документа это будет обрабатываться в отдельном событии ОбработкаВыбора.
но собственно Вам решать: оставить как есть или делать сразу правильно.