Иногда при выборе реквизита типа ссылки в формах документов возникает необходимость сформировать собственный список выбора. Алгоритм его получения может быть достаточно сложным, чтобы реализовать это из-за свойств реквизита документа или элемента формы. В этом случае задачу можно реализовать программно. Довольно часто это выполняется из-за отказа от стандартной обработки выбора, и создания собственной формы выбора для элементов справочников и документов. Этот вариант особенно хорошо подходит для создания динамических списков выбора и сложных отборных алгоритмов.
Однако также есть возможность установить список выбора, для стандартной обработки выбора из-за свойства элемента формы «<ПараметрыВыбора». В таком случае будет использоваться стандартная обработка выбора, но с программно сформированным списком доступных значений.
Пример реализации: Рассмотрим этот вариант на примере документа «Заказ клиента». Предположим, что при выборе номенклатуры в табличной части документа нам необходимо формировать список выбора только с тех позиций, по которым есть остатки на складе.
Для этого переходим в форму документа и создаем процедуру события «НачалоВыбора» для элемента формы «Номенклатура»:
>
Создаем процедуры на клиенте и функцию без контекста на сервере, в которых прописываем следующий код:

В коде серверной функции, с помощью запроса в регистр «Остатки номенклатуры», получаем список номенклатур, по которым есть остатки на складе. Записываем полученные значения в массив и возвращаем его в клиентскую процедуру.
Далее в клиентской процедуре создаем массив объектов «ПараметрВыбора» и добавляем к нему новый объект с указанием отбора по ссылке и массиву необходимых значений:
![]()
При необходимости таких отборов можно добавить несколько. Последним шагом устанавливаем для свойства элемента формы «ПараметрыВыбора» новый фиксированный массив наших параметров выбора:

После проверки работы доработки в режиме использования мы видим, что при выборе номенклатуры открывается список только тех позиций, по которым есть остатки на складе:
