Добрый день, 1С 8.3, УФ, серверная база.

Есть некий документ с реквизитом типа СправочникСссылка.Номенклатура.

В самом справочнике 2 группы :ГруппаА и ГруппаБ.

Хочу, чтобы при получении формы выбора справочника выводились только записи справочника по критерию ГруппаА.

Порылся в сети, нашел такое решение:

```1c
    Процедура НоменклатураНачалоВыбора(Элемент, СтандартнаяОбработка)

    //Отключим стандартный выбор, так как делаем свой
    СтандартнаяОбработка = Ложь;

    //Получаем форму и привязываем ее к Владельцу - Элемент
    ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(, Элемент);

    //Установим отбор по Родителю справочника
    ФормаВыбора.ЭлементыФормы.СправочникСписок.Родитель = Справочники.Номенклатура.НайтиПоКоду("123456");

    //Откроем выбор
    ФормаВыбора.ОткрытьМодально();

    КонецПроцедуры
```

Но в УФ не работает.

Понимаю, что к записям справочника нужно обращаться на сервере, но
```1c
    ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(, Элемент);
```
 на сервере вообще не работает.

Как переделать этот код, чтобы работал на серверной базе в УФ?))

Заранее спасибо!
---
Внимательно смотри - ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",П,Элемент);
---
все, понял где затупил.))

```1c
    &НаКлиенте
    Процедура ПродукцияНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    П=ПродукцияНоменклатураНачалоВыбораНаСервере();
    ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",П,Элемент);

    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПродукцияНоменклатураНачалоВыбораНаСервере()

    Группа=Справочники.Номенклатура.НайтиПоКоду("U0000137672");
    П=Новый Структура;
    Отбор = Новый Структура;
    Отбор.Вставить("Родитель",Группа);
    П.Вставить("Отбор", Отбор);
    Возврат П;

    КонецФункции
```
---
Как переделать этот код, чтобы работал на серверной базе в УФ?))
Ознакомься
---
- очень правильный совет. Автору вопроса - твой вариант из примера под номером 7.
---
да, я уже сделал, спасибо за помощь.)
---
Спасибо, понятно и наглядно. Чем копаться в синтакс-помощнике, все в одном месте.
---
но, не работает.(

```1c
    &НаКлиенте
    Процедура ПродукцияНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    П=ПродукцияНоменклатураНачалоВыбораНаСервере();

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

    КонецПроцедуры

    &НаСервере
    Функция ПродукцияНоменклатураНачалоВыбораНаСервере()

    Группа=Справочники.Номенклатура.НайтиПоКоду("U0000137672");

    П=Новый Структура;
    Отбор = Новый Структура;

    Отбор.Вставить("Владелец",Группа);
    П.Вставить("Отбор", Отбор);
    Возврат П;

    КонецФункции
```
---
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",П,Элемент);

Так попробуй, у меня похожий код отрабатывает.
---
чуть поменял код, все равно ноль на массу

```1c
    &НаКлиенте
    Процедура ПродукцияНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    П=ПродукцияНоменклатураНачалоВыбораНаСервере();

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

    КонецПроцедуры

    &НаСервере
    Функция ПродукцияНоменклатураНачалоВыбораНаСервере()

    Группа=Справочники.Номенклатура.НайтиПоКоду("U0000137672");

    П=Новый Структура;
    Отбор = Новый Структура;

    Отбор.Вставить("Группа",Группа);
    П.Вставить("Отбор", Отбор);
    Возврат П;

    КонецФункции
```
---
И что пишет?
А выведен в форме выбора
в таблице такой элемент "Группа"
---
Ничего не пишет, просто открывает форму выбора без отбора.)
---
Внимательно смотри - ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",П,Элемент);
---
```1c
    &НаКлиенте
    Процедура ПродукцияНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    П=ПродукцияНоменклатураНачалоВыбораНаСервере();
    ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",П,Элемент);

    КонецПроцедуры

    &НаСервере
    Функция ПродукцияНоменклатураНачалоВыбораНаСервере()

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

    КонецФункции
```

поправил, начало писать: Ошибка при выполнении запроса. Ошибка при выполнении запроса.
по причине:
Поле не найдено "Группа"
---
Насчет кода

```1c
    Группа=Справочники.Номенклатура.НайтиПоКоду("U0000137672")
```

Я бы это сделал в событии формы ПриСозданииНаСервере и хранил в реквизите формы. Чтобы лишние разу не ходить на сервер.

Насчет установки отбора. Тут зависит от вложенности элементов справочника. Если внутри группы - только элементы (без вложенной иерархичности), то, думаю, сработает такой отбор:

```1c
    Отбор.Вставить("Родитель",Группа);
```

Если же в группе есть вложенная иерархичность, то нужно дописывать форму выбора.
---
все, понял где затупил.))

```1c
    &НаКлиенте
    Процедура ПродукцияНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    П=ПродукцияНоменклатураНачалоВыбораНаСервере();
    ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",П,Элемент);

    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПродукцияНоменклатураНачалоВыбораНаСервере()

    Группа=Справочники.Номенклатура.НайтиПоКоду("U0000137672");
    П=Новый Структура;
    Отбор = Новый Структура;
    Отбор.Вставить("Родитель",Группа);
    П.Вставить("Отбор", Отбор);
    Возврат П;

    КонецФункции
```
---
все эти старания курам на смех если воспользоваться поиском по строке и при записи нет вышесказанного ограничения
тогда для кого все эти приседания?