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

```1c
    &НаСервереБезКонтекста
    Функция ПолучитьСписокНоменклатуры()
    ВыборкаНоменклатуры = Справочники.Номенклатура.Выбрать();
    СписокНоменклатуры = Новый Массив;
    Пока ВыборкаНоменклатуры.Следующий() Цикл
    СписокНоменклатуры.Добавить(ВыборкаНоменклатуры);
    КонецЦикла;
    Возврат СписокНоменклатуры;
    КонецФункции
    //.............
    // процедура обработчика НачалоВыбора:

    ДанныеВыбора = Новый СписокЗначений;
    ДанныеВыбора.ЗагрузитьЗначения(ПолучитьСписокНоменклатуры());
    СтандартнаяОбработка = Ложь;
```
---
помощью объектной модели запросаА что есть "объектная модель запроса"?

Возврат Справочники.Номенклатура.Выбрать();
Возникает ошибка.По всей видимости, Вам надо возвратить список значений, а не выборку.

```1c
    Выборка = Справочники.Номенклатура.Выбрать();
    Пока Выборка.Следующий() Цикл
    Список.Добавить(Выборка.Ссылка);
    КонецЦикла;
    Возврат Список;
```
Но, конечно, запросом это все как-то веселее выглядит...
---
Объектная это я так понимаю через точку все. Без объявления запроса. А без цикла нельзя?
---
А без цикла нельзя?
Можно и без цикла, используя стандартное окно выбора.
Но задача то не в этом...
---
Я помню когда только начинала учиться проходила курсы Гилева и там прямо в 1 строчку было все. Но я уже забыла как это делалось.
---
вообще-то программная объектная модель в таком виде не применяется. Очень много лишних накладных расходов.
---
А в каком виде применяется?
---
или стандартной формой выбора (стандартной не в плане самой формы, а механизма вызова формы выбора) или запросом.
---
Какая ошибка?
---
Ошибка отображения типов:
Отсутствует отображение для типа 'СправочникВыборка.Номенклатура
---
правильно ошибку выдает. СправочникВыборка не доступна на тонком клиенте.
Зачем ее на тонкий клиент возвращаете?
---
На форме элемента нужно в списке выбора выводить элементы из справочника Номенклатура.
---
Стало не намного понятнее.
учитывая, что даже никакого отбора нет, то чем не устаивает стандартное окно выбора?
Поле элемента привязано к реквизиту формы? Тип реквизита это ссылка на номенклатуру?
---
Учебная задача. Есть реквизит Номенклатура на форме. Да, ссылка на номенклатуру. Нужно в процедуре НачалоВыбора вывести список номенклатуры используя объектную модель. Возможно это часть задачи, дальше будет что то, что будет понятнее. Но пока так.
---
еси рассматривать просто как учебную задачу, в которой нужно использовать объектную модель получения ссылок на номенклатуру (странно, что без отбора) и применение их в обработчике НачалоВыбора, то так:

```1c
    &НаСервереБезКонтекста
    Функция ПолучитьСписокНоменклатуры()
    ВыборкаНоменклатуры = Справочники.Номенклатура.Выбрать();
    СписокНоменклатуры = Новый Массив;
    Пока ВыборкаНоменклатуры.Следующий() Цикл
    СписокНоменклатуры.Добавить(ВыборкаНоменклатуры);
    КонецЦикла;
    Возврат СписокНоменклатуры;
    КонецФункции
    //.............
    // процедура обработчика НачалоВыбора:

    ДанныеВыбора = Новый СписокЗначений;
    ДанныеВыбора.ЗагрузитьЗначения(ПолучитьСписокНоменклатуры());
    СтандартнаяОбработка = Ложь;
```
---
на клиенте она не доступна в режиме запуска "Тонкий клиент", а не на "тонком клиенте". Такая формулировка может ввести в заблуждение читающих слова...
---
вообще-то именно формулировка "СправочникВыборка не доступна на тонком клиенте" должна быть более понятна.
---
Тонкий клиент - это что? Просто режим запуска управляемого приложения, в котором функции, требующие неявного вызова сервера, могут работать преимущественно в серверном контексте и недоступны в клиентском.
---
Тонкий клиент - это что?
Достаточно будет цитаты из СП?
В различных вариантах использования определены различные наборы инструкций препроцессора:
Тонкий клиент (Файловый и Клиент-серверный вариант):
Клиентская часть: Клиент, , ТонкийКлиент.

В противовес тонкого клиента есть Толстый клиент.
---
Клиентская часть: Клиент, , ТонкийКлиент.Отлично. Только неофиты в этом мало понимают, приблизительно разобравшись в двух директивах "НаСервере" и "НаКлиенте". "НаТонкомКлиенте" как-то что-то не то, слух режет.
---
может это подтолкнет помимо Директив компиляции выучить инструкции препроцессора.
---
а не проще просто:
```1c
    ДанныеВыбора = ПолучитьСписокНоменклатуры();
```
При этом в первой функции достаточно заменить Массив на СписокЗначений.
---
передача с между сервером-клиент массив более предпочтителен. СЗ имеет лишние накладные расходы сериализации/десериализации
---
а на сколько? Можете измерить? Предположу, что на 100к элементов потери при пересылке будут компенсированы расходами при копировании из массива в СЗ.