Добрый день, в 1С совсем ещё новичок и мало чего знаю. Прямо сейчас разрабатываю в рамках обучения конфигурацию для небольшого несуществующего кафе. И вот возникла такая проблема. Есть документ "Заказы", в котором есть некоторые реквизиты (которые в моём вопросе роли никакой не играют, поэтому значения их опущу) и табличная часть "ЗаказываемыеБлюда" с реквизитами "Блюдо" и "Цена". Первый реквизит ссылочного типа на справочник "ТехнологическиеКартыБлюд", где перечислены подаваемые в кафе блюда. Есть так же документ "ПриготовлениеБлюда", в котором есть некоторые реквизиты и табличная часть. В контексте моего вопроса важны следующие реквизиты (не табличной части): реквизит "Заказ" ссылочного типа на документ "Заказы", и так же реквизит "Блюдо", тоже ссылочного типа на уже знакомый нам справочник "ТехнологическиеКартыБлюд". И вот собственно вопрос. Как сделать так, чтобы при создании нового документа "ПриготовлениеБлюда" в поле "Блюдо" можно было выбирать ТОЛЬКО ТЕ блюда, которые есть в заказе, указанном в поле "Заказы"?
---
например так:

```1c
    &НаСервереБезКонтекста
    Функция ПолучитьСписокБлюдНаСервере(Знач Заказ)
    Возврат Заказ.Блюда.ВыгрузитьКолонку("Блюдо");
    КонецФункции

    &НаКлиенте
    Процедура ЗаказПриИзменении(Элемент)
    СписокБлюд = ПолучитьСписокБлюдНаСервере(Объект.Заказ);
    Элементы.Блюдо.СписокВыбора.ЗагрузитьЗначения(СписокБлюд);
    КонецПроцедуры
```

Возможно еще нужно ПриСозданииНаСервере заполнять список выбора, но это если нужно при открытии уже сохраненного документа изменять реквизит Блюдо.
---
заполнить ПриСозданииНаСервере:

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

```1c
    &НаСервереБезКонтекста
    Функция ПолучитьСписокБлюдНаСервере(Знач Заказ)
    Возврат Заказ.Блюда.ВыгрузитьКолонку("Блюдо");
    КонецФункции

    &НаКлиенте
    Процедура ЗаказПриИзменении(Элемент)
    СписокБлюд = ПолучитьСписокБлюдНаСервере(Объект.Заказ);
    Элементы.Блюдо.СписокВыбора.ЗагрузитьЗначения(СписокБлюд);
    КонецПроцедуры
```

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

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если ЗначениеЗаполнено(Объект.Заказ) Тогда
    СписокБлюд = ПолучитьСписокБлюдНаСервере(Объект.Заказ);
    Элементы.Блюдо.СписокВыбора.ЗагрузитьЗначения(СписокБлюд);
    КонецЕсли;
    КонецПроцедуры
```
---
Работает, спасибо!
---
Читай Связи параметров выбора
---
Я пытался их использовать, связывая с реквизитом "Заказы", но ни один из возможных отборов не работал. У нас же в самом справочнике нету какого-то объекта, имеющего ссылку на "Заказы". Поэтому и не получалось (если я правильно понял как это работает). Или можно как-то по другому связь построить?