Реализуем подбор номенклатуры как на рис. 1:

Рисунок 1 — Пример подбора номенклатуры

Программный код формы документа «Заказ покупателя»:

&НаКлиенте
Процедура Подбор(Команда)
	ОткрытьФорму("Обработка.ПодборНоменклатуры.Форма.Форма",, ЭтаФорма,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	АдресВХ = Параметр;
	Если ИмяСобытия = "ЗаполнитьПоПодбору" Тогда
		Объект.Номенклатура.Очистить();
		ЗаполнитьПоПодборуНаСервере(АдресВХ);
	КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьПоПодборуНаСервере(АдресВХ)
	НоменклатураТаблицаЗначений = ПолучитьИзВременногоХранилища(АдресВХ);
	Объект.Номенклатура.Загрузить(НоменклатураТаблицаЗначений);
КонецПроцедуры

Открываем форму обработки подбора номенклатуры, в форме должна присутствовать таблица значений с колонками «Флаг» (булево), «Номенулатура» (ссылка);

Программный код формы подбора номенклатуры, оповещение форм:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|	Номенклатура.Ссылка КАК Номенклатура,
	|	ЛОЖЬ КАК Флаг
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура");
	НоменклатураТаблицаЗначений.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры

&НаКлиенте
Процедура Перенести(Команда)
	АдресВХ = ПеренестиСервере();
	Оповестить("ЗаполнитьПоПодбору", АдресВХ);
	ЭтаФорма.Закрыть();
КонецПроцедуры

Функция ПеренестиСервере()
	УдалитьСтроки = НоменклатураТаблицаЗначений.НайтиСтроки(Новый Структура("Флаг", Ложь));
    Для каждого Строка Из УдалитьСтроки Цикл
    	НоменклатураТаблицаЗначений.Удалить(Строка);
    КонецЦикла;
	Возврат ПоместитьВоВременноеХранилище(НоменклатураТаблицаЗначений.Выгрузить()); 
КонецФункции