Добрый день!
Проблема в следующем. Выгрузив Номенклатура.xml в дерево значений, заношу номенклатуру в справочник. Не все ВидыНоменклатуры совпадают с имеющимися в справочнике. Пока юзаю ФормуВыбора справочника ВидыНоменклатуры.
В процедуре (&НаСервере), после проверки Вида на соответствие

```1c
    Если НомЭ.ВидНоменклатуры = Справочники.ВидыНоменклатуры.ПустаяСсылка() Тогда
    ВыборВидаНом(СтрокаНом.ВидНоменклатуры);
    КонецЕсли;
```

, вызываю функцию для окна Выбора и передаю в виде текста ВидНоменклатуры

```1c
    Функция ВыборВидаНом(Строка)
    ФормаВыб = Справочники.ВидыНоменклатуры.ПолучитьФорму("ФормаВыбора");
    ФормаВыб.Заголовок = "Выберите замену " + Строка;
    ФормаВыб.Открыть();
    КонецФункции
```

Такой формат работает только в режиме толстого клиента (да, пока вываливается кучка окошек и не обрабатывается результат выбора, но это на следующем шаге).
Если указываю для функции (&На клиенте), то говорит, что переменная ФормаВыб не определенна, что понятно (на клиенте не заполнить переменную).
Если переношу эту строку в процедуру, а потом передаю в функцию полученную форму, то не могу указать в функции эту переменную.
Если в обычном режиме запускаю (не толстый), и без указания для функции НаКлиенте, то Интерактивные операции недоступны.
Уже мозги закипают, ткните пожалуйста, что не так?
Тест на 8.3.18 и УТ 11.4.12
---
Функция работы с диалогом "ВыборВидаНом" однозначно должна быть с диррективой "НаКлиенте". Т.к. Вы работаете с управляемыми формами, Вам теперь необходимо спроектировать свою обработку таким образом, чтобы диалоги с пользователем были на клиенте (в процедурах и функциях с диррективой "НаКлиенте"), а работа с объектами базы данных - на сервере. Инициатор вызова сервера всегда клиент.

В самом простом случае - обходить дерево на клиенте, открывать диалоги (формы выбора) там же, а если нужен доступ к объектам в базе, вызывать необходимые серверные процедуры и функции.
---
посмотрите как уже сделано в типовой.
Пример: обработка ЗагрузкаЦенПоставщикаИзВнешнихФайлов.
Делаете сопоставление загружаемы данных с элементами справочника. Несопоставленные данные выводите пользователю для ручного сопоставления.
---
Спасибо за подсказку!
Примерно понял алгоритм работы данной обработки.
Сложно разбирать типовые коды, уж очень 1с-ники любят размазать код:(
---
На клиенте форма выбора открывается так:

```1c
    ОткрытьФорму("Справочник.ВидыНоменклатуры.ФормаВыбора", , ЭтотОбъект);
```

Третьим параметром здесь указывается форма-владелец открываемого диалога выбора вида номенклатуры. Не знаю, как именно Вы планируете в итоге построить взаимодействие с пользователем, но скорее всего Вам потребуется реализовать еще и обработчик выбора значения из формы. Это может быть обработчик "ОбработкаВыбора" как для формы, если указали "ЭтотОбъект" как в примере выше, так и например обработчик самого дерева значений, если скажем вместо "ЭтотОбъект" указать таблицу формы (Элементы.ИмяДереваЗначений).
---
Спасибо Вам за ответ, но не помогло решить проблему.
Да, подготовил форму для выбора (с выбором необходимого значения и флажком для последующих совпадений видов номенклатуры с найденным(чтоб не переспрашивал при таком же виде). Но она также не заработала, поэтому решил вызывать типовую форму (вдруг я в форме накосячил).
Насколько смог уяснить для себя, что вызов клиента с сервера невозможен. Поэтому если для функции указывать НаКлиенте, то ошибка вызова функции.
Немного уточню информацию по создаваемому коду. Пишу в созданной обработке, в модуле формы.
Изменять что либо в типовой конфигурации не хочу.
Пишу для себя, пытаюсь разобраться по ходу пьесы.
---
но не помогло решить проблему.А какую именно проблему-то? Пока Вы только обозначили, что не знаете как открыть форму выбора. Я подсказал. Разве форма не открылась? Другой вопрос, что с ней дальше делать, но для этого нужно сформулировать следующую проблему. Я же ее не знаю.

вызов клиента с сервера невозможен. Поэтому если для функции указывать НаКлиенте, то ошибка вызова функции.Да, с сервера вызов клиента не возможен.
---
(4) А какую именно проблему-то?
Прошу прощения за косноязычность, но проблема в том, что при запуске обработки в режиме отладки (кроме толстого клиента) вываливаются ошибки, которые не дают возможности выбора ВидаНоменклатуры.
Указывал в старт-топике, что могу запустить в толстом клиенте, но при этом "куча окошек" - это как раз вываливаются окна выбора ВидаНоменклатуры для каждого ненайденного вида.
Разве форма не открылась?
Если указываю для функции операнд НаКлиенте
то синтакс говорит
Процедура или функция с указанным именем не определена (ВыборВидаНом)
     <<?>>ВыборВидаНом(СтрокаНом.ВидНоменклатуры); (Проверка: Сервер)

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

В самом простом случае - обходить дерево на клиенте, открывать диалоги (формы выбора) там же, а если нужен доступ к объектам в базе, вызывать необходимые серверные процедуры и функции.
---
Чтобы не править весь код заново, проще всего строки, у которых неопределённы ВидыНоменклатуры, скидывать в реквизит формы. А потом по кнопке обходить данный реквизит с вызовом создания номенклатуры на сервере? Правильно ли Вас понял?
Спасибо большое за помощь!