Добрый день. (УФ) Хочу открыть форму справочника сразу в нужной папке. Курю сп, не получается. Что пытаюсь сделать:

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

    ЗначениеОтбора = Новый Структура("Родитель",ОтборВШаблонахСМС());
    ПараметрыВыбора = Новый Структура("Отбор", ЗначениеОтбора);
    ЗначениеСМС = ПолучитьФорму("Справочник.ШаблоныСМС.ФормаВыбора",ПараметрыВыбора);
    //ЗначениеСМС.Элементы.Список.ТекущийРодитель = ОтборВШаблонахСМС();
    //ЗначениеСМС.Список.КомпоновщикНастроек.Настройки.Родитель = ОтборВШаблонахСМС();
    //ЗначениеСМС.Элементы.СправочникСписок.ТекущаяСтрока = ОтборВШаблонахСМС();
    //ЗначениеСМС.Элементы.СправочникДерево.ТекущаяСтрока = ОтборВШаблонахСМС();
    ЗначениеСМС.ОткрытьМодально();
    КонецПроцедуры

    &НаСервере
    Функция ОтборВШаблонахСМС()

    СсылкаНаРодителя = Справочники.ШаблоныСМС.НайтиПоКоду("000000141");
    //СсылкаНаРодителя = Справочники.ШаблоныСМС.НайтиПоНаименованию("Продажи");
    Возврат СсылкаНаРодителя;
    КонецФункции
```

Подскажите, как это реализовать в управляемых формах? Заранее спасибо.
---
Используйте РодительВерхнегоУровня вместо ТекущийРодитель.
P.S. правда в этом случае Вы потеряете возможность перехода в другую группу. Но возможно, это как раз то что нужно?
---
Если хотите чтобы возможность переходить в другие группы была -- устанавливайте ТекущийРодитель, но после строки открытия формы. Дело в том что когда Вы это делаете (в текущем варианта) форма ещё не открыта -- и устанавливать текущего родителя банально негде. Но для этого нужно избавиться от модальности.

```1c
    ЗначениеСМС = ПолучитьФорму("Справочник.ШаблоныСМС.ФормаВыбора",ПараметрыВыбора);
    ЗначениеСМС.Открыть();
    ЗначениеСМС.Элементы.Список.ТекущийРодитель = ОтборВШаблонахСМС();
```

Если хотите и модальность оставить -- тогда устанавливайте ТекущийРодитель в событии ПриСозданииНаСервере самой формы выбора, передав его в открываемую форму параметром.
---
это не реализовывается.
Максимум, что можно сделать - спозиционировать курсор(установить текущую строку) на нужной группе в списке.
---
Вы так удивительно категоричны :) это реализовывается, причём несколькими способами, и в различных вариантах.
---
и прям модальные вызовы разрешены в свойстве конфы ?...
---
Используйте РодительВерхнегоУровня вместо ТекущийРодитель.
P.S. правда в этом случае Вы потеряете возможность перехода в другую группу. Но возможно, это как раз то что нужно?
---
Спасибо. Работает!
---
Если хотите чтобы возможность переходить в другие группы была -- устанавливайте ТекущийРодитель, но после строки открытия формы. Дело в том что когда Вы это делаете (в текущем варианта) форма ещё не открыта -- и устанавливать текущего родителя банально негде. Но для этого нужно избавиться от модальности.

```1c
    ЗначениеСМС = ПолучитьФорму("Справочник.ШаблоныСМС.ФормаВыбора",ПараметрыВыбора);
    ЗначениеСМС.Открыть();
    ЗначениеСМС.Элементы.Список.ТекущийРодитель = ОтборВШаблонахСМС();
```

Если хотите и модальность оставить -- тогда устанавливайте ТекущийРодитель в событии ПриСозданииНаСервере самой формы выбора, передав его в открываемую форму параметром.
---
```1c
    СтандартнаяОбработка = Ложь;
    Форма = ПолучитьФорму("Справочник.ШаблоныСМС.ФормаВыбора", , Элемент);
    Форма.Элементы.Список.ТекущийРодитель = ОтборВШаблонахСМС();
    Форма.Открыть();
```
---
Подскажите, пожалуйста, работает благодаря (4). Но теперь выдает ошибку "Проверка мутабельных значений на заполненность не поддерживается".

Вот так работает, но соотв. задача не решена, так как не выбран родитель, но на проверку заполненности не ругается:

```1c
    &НаКлиенте
    Процедура ПолеСМСНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ЗначениеСМС = Неопределено;
    ЗначениеСМС = ПолучитьФорму("Справочник.ШаблоныСМС.ФормаВыбора").ОткрытьМодально();
    //ЗначениеСМС.Элементы.Список.РодительВерхнегоУровня = ОтборВШаблонахСМС();
    //ЗначениеСМС.ОткрытьМодально();
    Если ЗначениеЗаполнено(ЗначениеСМС) Тогда
    Если НЕ Элементы.Анкеты.ТекущиеДанные = Неопределено Тогда
    Анкета = Элементы.Анкеты.ТекущиеДанные.Анкета;
    ПолеСМСнаСервере(ЗначениеСМС,Анкета);
    КонецЕсли;

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

А вот так не работает, ошибка:

```1c
    &НаКлиенте
    Процедура ПолеСМСНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ЗначениеСМС = Неопределено;
    ЗначениеСМС = ПолучитьФорму("Справочник.ШаблоныСМС.ФормаВыбора");
    ЗначениеСМС.Элементы.Список.РодительВерхнегоУровня = ОтборВШаблонахСМС();
    ЗначениеСМС.ОткрытьМодально();
    Если ЗначениеЗаполнено(ЗначениеСМС) Тогда
    Если НЕ Элементы.Анкеты.ТекущиеДанные = Неопределено Тогда
    Анкета = Элементы.Анкеты.ТекущиеДанные.Анкета;
    ПолеСМСнаСервере(ЗначениеСМС,Анкета);
    КонецЕсли;

    КонецПроцедуры
```
---
я понятия не имею где у Вас проверка на заполненность :) у меня никаких ошибок не выдаёт.
---
(9)точно! сейчас поправлю
---
Изменил
---
А. Вроде другой текст был. Здесь-то понятно, кто же проверяет ЗначениеЗаполнено() для формы?
---
не понимаю, почему в первом варианте работает, а во втором нет. И как быть?
---
Ну блин... Потому что в первом случае Вы проверяете на заполненность результат возврата функции ОткрытьМодально(). А во втором -- саму форму. Это же явно видно... что-то мы ушли в обсуждение совсем каких-то элементарных вещей.
---
Да, вижу, спасибо