Здравствуйте, есть реквизит Подразделение на форме документа ОценкаЗначимостиРиска с типом Справочник.Услуги
Так вот, я выбираю подразделение и на основании этого подразделения надо заполнить реквизит Риск Табличной Части Оценка Документа ОценкаЗщначимостиРиска .

Структура справочника немного странная:

```1c
    Наименование Родитель
    Группа1
    Группа1.1 Группа1
    Элемент1 Группа1.1
    Группа1.2 Группа1
    Элемент1 Группа1.2
    Группа2
    Группа2.1 Группа2
    Элемент1 Группа2.1
    Группа2.2 Группа2
    Элемент1 Группа2.2
```

Примерно так.

Я выбираю подразделение Группа2 допустим и реквизит табличной части должен заполняться элементом1 из этой группы.
Сделал так: но не работает

```1c
    &НаСервере
    Процедура ПодразделениеПриИзмененииНаСервере()

    Для Каждого Строка из Объект.Оценка Цикл
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Услуги.Наименование
    |ИЗ
    | Справочник.Услуги КАК Услуги
    |ГДЕ
    | Услуги.Родитель = &Подразделение";

    Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    НоваяСтрока = Объект.Оценка.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаДетальныеЗаписи);
    КонецЦикла;
    КонецЦикла;

    КонецПроцедуры
```
---
```1c
    &НаСервере
    Процедура ПодразделениеПриИзмененииНаСервере()

    Объект.Оценка.Очистить();

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Услуги.Ссылка
    |ИЗ
    | Справочник.Услуги КАК Услуги
    |ГДЕ
    | Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) И Услуги.ЭтоГруппа = Ложь";

    Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);

    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл
    НоваяСтрока = Объект.Оценка.Добавить();
    НоваяСтрока.Риск = Выборка.Ссылка;
    КонецЦикла;

    КонецПроцедуры
```
---
Исходя из постановки задачи и примера могу предположить следующее:
1. в запросе Вы выбираете наименование, а надо ссылку;
2. элемент имеет уровень вложенности 3, параметр &Подразделение - группа уровня 1, а вы проверяете родителя уровня 2. Скорее надо как-то так:

```1c
    ...
    ГДЕ
    Услуги.Родитель.Родитель = &Подразделение // если элементы всегда на 3-ем уровне, а подразделение - на первом
    ...
    ГДЕ
    Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) // если элементы и подразделение могут оказаться на любом уровне
```

3. нет в условии проверки "ЭтоГруппа = Ложь";
---
Элементы могут быть на любом уровне, написал

```1c
    ГДЕ
    Услуги.Ссылка В ИЕРАРХИИ(&Подразделение)
```

А как быть с тем что я заполняю одну колонку(Риск) табличной части?

```1c
    Для Каждого Строка из Объект.Оценка Цикл //Тут я заполняю всю ТЧ
    А мне надо заполнять Объект.Оценка.Риск //Одну колонку ТЧ

    При этом возникает ошибка что поле объекта не обнаружено
```
---
Запрос нужен другой. Скажите в вашем справочнике вот эта иерархия - то есть группы и иэлементы или включена иерархия элементов?
---
а какой другой?
по моей логике я выбираю элементы у которых родитель = подразделение.

Вид иерархии: Иерархия групп и элементов

Может проблема в том что я заполняю все реквизиты табличной части?

Мне надо заполнить в табличной части реквизит(колонку) Риск.

Пишу Для Каждого Строка Из Объект.Оценка(НазваниеТабличнойЧасти).Риск(названиеРеквизита)

Пишет Что поле объекта Риск не обнаружено
---
Вот я думаю вот так подойдет

ГДЕ
   Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) И Услуги.ЭтоГруппа = Ложь.

Ведь нужно вам взять все элементы в какой то группе
---
Ошибка выдается в том что нету реквизита Риск.
Пришлите весь листинг вашей программы. Так нагладянее будет
---
Ну реквизит ТЧ есть, Называется Риск, но я не знаю как к нему обратиться
?
Вот все что связано с данной темой вопроса

```1c
    &НаСервере
    Процедура ПодразделениеПриИзмененииНаСервере()
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    Для Каждого Строка из Объект.Оценка Цикл
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Услуги.Наименование
    |ИЗ
    | Справочник.Услуги КАК Услуги
    |ГДЕ
    | Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) И Услуги.ЭтоГруппа = Ложь";

    Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    НоваяСтрока = Объект.Оценка.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаДетальныеЗаписи);
    КонецЦикла;
    КонецЦикла;
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

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

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

    Объект.Оценка.Очистить();

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Услуги.Ссылка
    |ИЗ
    | Справочник.Услуги КАК Услуги
    |ГДЕ
    | Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) И Услуги.ЭтоГруппа = Ложь";

    Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);

    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл
    НоваяСтрока = Объект.Оценка.Добавить();
    НоваяСтрока.Риск = Выборка.Ссылка;
    КонецЦикла;

    КонецПроцедуры
```
---
Вот так попробуйте

```1c
    &НаСервере
    Процедура ПодразделениеПриИзмененииНаСервере()
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    Для Каждого Строка из Объект.Оценка Цикл
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Услуги.Наименование КАК Риск
    |ИЗ
    | Справочник.Услуги КАК Услуги
    |ГДЕ
    | Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) И Услуги.ЭтоГруппа = Ложь";

    Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    НоваяСтрока = Объект.Оценка.Добавить();
    НоваяСтрока.Риск = ВыборкаДетальныхЗаписей.Риск;

    КонецЦикла;
    КонецЦикла;
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

    КонецПроцедуры
```
---
НоваяСтрока = Объект.Оценка.Добавить();
            НоваяСтрока.Риск = ВыборкаДетальныхЗаписей.Риск;

пишет переменная не определена "НоваяСтрока.Риск = ВыборкаДетальныхЗаписей.Риск;"
---
следовательно у вас в табличной части Оценка нет реквизита Риск. Поэтому и не заполняется у вас. Вы скажите что из запроса и в каком реквизите должно заполниться
---
Да есть у меня этот реквизит, есть.

Из запроса надо взять элемент у которого родитель = Подразделение, и заполнить этими элементами реквизит Риск.

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

```1c
    Запрос.Текст =
    "ВЫБРАТЬ
    | Услуги.Ссылка КАК Риск
    |ИЗ
    | Справочник.Услуги КАК Услуги
    |ГДЕ
    | Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) И Услуги.ЭтоГруппа = Ложь";
```
---
```1c
    Для Каждого Строка из Объект.Оценка Цикл
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Услуги.Ссылка КАК Риск
    |ИЗ
    | Справочник.Услуги КАК Услуги
    |ГДЕ
    | Услуги.Ссылка В ИЕРАРХИИ(&Подразделение) И Услуги.ЭтоГруппа = Ложь";

    Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    НоваяСтрока = Объект.Оценка.Добавить();
    НоваяСтрока.Риск = ВыборкаДетальныеЗаписи.Риск;
    КонецЦикла;
    КонецЦикла;
```

Вот, все как Вы сказали, все равно не работает.
---
да как так то. У вас в результате строки добавляются а сам реквизит Риск пустой чтоли????????????????????
---
Посмотрите внимательнее на пример автора. У него запрос и заполнение ТЧ внутри цикла обхода этой ТЧ. :-) Думаю, в этом проблема.
---
Да, заработало, Спасибо большое, что так провозились со мной))
---
Даже строки не добавляются.
Может проблема в этом ? Для Каждого Строка из Объект.Оценка Цикл
---
блин точно, ну конечно же у вас самая первая строка в коде Для Каждого Строка из Объект.Оценка Цикл - убирете ее и все заработает. А так у вас даже код не срабатывает
---
Вам тоже спасибо большое, что помогли))