Добрый день. Использую следующий код

```1c
    ТипСубконто1=Счет.ВидыСубконто[0].ВидСубконто.ТипЗначения;
    Объект.СубконтоЗатратБУ1=ТипСубконто1.ПривестиЗначение(Объект.СубконтоЗатратБУ1);
```

В итоге выводиться весь список всевомозможных типов с позиционированием на нужном типе.(н-р ПодразделенияОрганизаций). Возможно ли прописать так чтобы при нажатии на кнопку выбора субконто уже открывался сам необходимый справочник.
---
В БСП есть общий модуль БухгалтерскийУчетПереопределяемый.
Там описан алгоритм присвоения полю ввода нужного типа Субконто в зависимости от выбранного счета
Например, Есть таб часть на форме, у которой в строке есть реквизиты Счет, Субконто1, Субконто2,Субконто3 и в зависимости от выбора счета, этим ячейкам присваисваются типы соответствующие типу субконто, и при выборе открывается окно с нужным типом данных

```1c
    // Процедура установки типа и видимости субконто в зависимости от выбранного счета
    //
    // Параметры:
    // Счет - <План счетов> - Счет, для которого необходимо настроить тип и видимость субконто
    // Форма - <Управляемая форма> - Форма, которая содержит ПоляФормы и ЗаголовкиПолей
    // ПоляФормы - <Структура> - Ключи, которой Субконто1, Субконто2, Субконто3,
    // а значения имена соответствующих полей на форме (поля субконто)
    // ЗаголовкиПолей - <Структура> ИЛИ <Неопределено> - Ключи, которой Субконто1, Субконто2, Субконто3
    // а значения имена соответствующих полей на форме (заголовки субконто)
    // ЭтоТаблица - <Булево> - Признак того, где выполняется настройка субконто.
    // СкрыватьСубконто - <Булево> - Признак того, нужно ли для этой формы дополнительно скрывать субконто, влияет на выполнении функции НужноСкрытьСубконто
    //
    Процедура ПриВыбореСчета(Счет, Форма, ПоляФормы, ЗаголовкиПолей = Неопределено, ЭтоТаблица = Ложь, СкрыватьСубконто = Истина) Экспорт

    ДанныеСчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(Счет);

    Для Индекс = 1 По 3 Цикл
    ТипЗначенияСубконто = ДанныеСчета["ВидСубконто" + Индекс + "ТипЗначения"];
    Если Индекс <= ДанныеСчета.КоличествоСубконто И НЕ НужноСкрытьСубконто(СкрыватьСубконто, ТипЗначенияСубконто) Тогда
    Если ЭтоТаблица Тогда
    Если ПоляФормы.Свойство("Субконто" + Индекс) Тогда
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ОграничениеТипа = ТипЗначенияСубконто;
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ПодсказкаВвода = ДанныеСчета["ВидСубконто" + Индекс + "Наименование"];
    КонецЕсли;
    Иначе
    Если ЗаголовкиПолей <> Неопределено И ЗаголовкиПолей.Свойство("Субконто" + Индекс) Тогда
    // Заголовок может быть не выведен на форму
    ЭлементФормыЗаголовок = Форма.Элементы.Найти(ЗаголовкиПолей["Субконто" + Индекс]);
    Если ЭлементФормыЗаголовок <> Неопределено Тогда
    ЭлементФормыЗаголовок.Видимость = Истина;
    КонецЕсли;
    Форма[ЗаголовкиПолей["Субконто" + Индекс]] = ДанныеСчета["ВидСубконто" + Индекс + "Наименование"] + ":";
    КонецЕсли;
    Если ПоляФормы.Свойство("Субконто" + Индекс) Тогда
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].Видимость = Истина;
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ОграничениеТипа = ТипЗначенияСубконто;
    КонецЕсли;
    КонецЕсли;
    Иначе
    // Ничего делать не надо, т.к. не доступные поля будут скрыты
    Если Не ЭтоТаблица Тогда
    Если ЗаголовкиПолей <> Неопределено И ЗаголовкиПолей.Свойство("Субконто" + Индекс) Тогда
    // Заголовок может быть не выведен на форму
    ЭлементФормыЗаголовок = Форма.Элементы.Найти(ЗаголовкиПолей["Субконто" + Индекс]);
    Если ЭлементФормыЗаголовок <> Неопределено Тогда
    ЭлементФормыЗаголовок.Видимость = Ложь;
    КонецЕсли;
    Форма[ЗаголовкиПолей["Субконто" + Индекс]] = ";
    КонецЕсли;
    Если ПоляФормы.Свойство("Субконто" + Индекс) Тогда
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].Видимость = Ложь;
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ОграничениеТипа = Новый ОписаниеТипов("Неопределено");
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;

    Если Не ЭтоТаблица Тогда
    Если ЗаголовкиПолей <> Неопределено И ЗаголовкиПолей.Свойство("Подразделение") Тогда
    Форма[ЗаголовкиПолей["Подразделение"]] = ?(ДанныеСчета.УчетПоПодразделениям, НСтр("ru = 'Подразделение'") + ":", ");
    КонецЕсли;
    Если ПоляФормы.Свойство("Подразделение") Тогда

    ДоступностьПодразделения = ДанныеСчета.УчетПоПодразделениям;
    Если ПоляФормы.Свойство("ДоступностьПодразделения") Тогда
    ДоступностьПодразделения = ДоступностьПодразделения ИЛИ ПоляФормы.ДоступностьПодразделения;
    КонецЕсли;

    Форма.Элементы[ПоляФормы["Подразделение"]].Доступность = ДоступностьПодразделения;

    КонецЕсли;
    КонецЕсли;

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

Тебе надо отсюда

```1c
    ДанныеСчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(Счет);

    Для Индекс = 1 По 3 Цикл
    ТипЗначенияСубконто = ДанныеСчета["ВидСубконто" + Индекс + "ТипЗначения"];
    Если Индекс <= ДанныеСчета.КоличествоСубконто И НЕ НужноСкрытьСубконто(СкрыватьСубконто, ТипЗначенияСубконто) Тогда
    Если ЭтоТаблица Тогда
    Если ПоляФормы.Свойство("Субконто" + Индекс) Тогда
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ОграничениеТипа = ТипЗначенияСубконто;
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ПодсказкаВвода = ДанныеСчета["ВидСубконто" + Индекс + "Наименование"];
    КонецЕсли;
    КонецЦикла
```

А вот пример вызова в документе по событию ПриИзменении ячейки табчасти

```1c
    ИдСтроки = Форма.Элементы.ДвиженияХозрасчетный.ТекущаяСтрока;
    Если ИдСтроки = Неопределено Тогда
    Возврат;
    КонецЕсли;
    СтрокаТаблицы = Форма.Объект.Движения.Хозрасчетный.НайтиПоИдентификатору(ИдСтроки);

    ПоляФормы = Новый Структура("Субконто1,Субконто2,Субконто3");
    ПоляФормы.Субконто1 = "ДвиженияХозрасчетныйСубконто" + ДтКт + "1";
    ПоляФормы.Субконто2 = "ДвиженияХозрасчетныйСубконто" + ДтКт + "2";
    ПоляФормы.Субконто3 = "ДвиженияХозрасчетныйСубконто" + ДтКт + "3";
    БухгалтерскийУчетКлиентСервер.ПриВыбореСчета(СтрокаТаблицы["Счет" + ДтКт], Форма, ПоляФормы, Неопределено, Истина, Ложь);
```
---
up
---
```1c
    ВвестиЗначение(ОбъектСтроительства, "Выберите объект строительства", "СправочникСсылка.ОбъектыСтроительства");
```
 это если юзер хочет выбрать
---
В БСП есть общий модуль БухгалтерскийУчетПереопределяемый.
Там описан алгоритм присвоения полю ввода нужного типа Субконто в зависимости от выбранного счета
Например, Есть таб часть на форме, у которой в строке есть реквизиты Счет, Субконто1, Субконто2,Субконто3 и в зависимости от выбора счета, этим ячейкам присваисваются типы соответствующие типу субконто, и при выборе открывается окно с нужным типом данных

```1c
    // Процедура установки типа и видимости субконто в зависимости от выбранного счета
    //
    // Параметры:
    // Счет - <План счетов> - Счет, для которого необходимо настроить тип и видимость субконто
    // Форма - <Управляемая форма> - Форма, которая содержит ПоляФормы и ЗаголовкиПолей
    // ПоляФормы - <Структура> - Ключи, которой Субконто1, Субконто2, Субконто3,
    // а значения имена соответствующих полей на форме (поля субконто)
    // ЗаголовкиПолей - <Структура> ИЛИ <Неопределено> - Ключи, которой Субконто1, Субконто2, Субконто3
    // а значения имена соответствующих полей на форме (заголовки субконто)
    // ЭтоТаблица - <Булево> - Признак того, где выполняется настройка субконто.
    // СкрыватьСубконто - <Булево> - Признак того, нужно ли для этой формы дополнительно скрывать субконто, влияет на выполнении функции НужноСкрытьСубконто
    //
    Процедура ПриВыбореСчета(Счет, Форма, ПоляФормы, ЗаголовкиПолей = Неопределено, ЭтоТаблица = Ложь, СкрыватьСубконто = Истина) Экспорт

    ДанныеСчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(Счет);

    Для Индекс = 1 По 3 Цикл
    ТипЗначенияСубконто = ДанныеСчета["ВидСубконто" + Индекс + "ТипЗначения"];
    Если Индекс <= ДанныеСчета.КоличествоСубконто И НЕ НужноСкрытьСубконто(СкрыватьСубконто, ТипЗначенияСубконто) Тогда
    Если ЭтоТаблица Тогда
    Если ПоляФормы.Свойство("Субконто" + Индекс) Тогда
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ОграничениеТипа = ТипЗначенияСубконто;
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ПодсказкаВвода = ДанныеСчета["ВидСубконто" + Индекс + "Наименование"];
    КонецЕсли;
    Иначе
    Если ЗаголовкиПолей <> Неопределено И ЗаголовкиПолей.Свойство("Субконто" + Индекс) Тогда
    // Заголовок может быть не выведен на форму
    ЭлементФормыЗаголовок = Форма.Элементы.Найти(ЗаголовкиПолей["Субконто" + Индекс]);
    Если ЭлементФормыЗаголовок <> Неопределено Тогда
    ЭлементФормыЗаголовок.Видимость = Истина;
    КонецЕсли;
    Форма[ЗаголовкиПолей["Субконто" + Индекс]] = ДанныеСчета["ВидСубконто" + Индекс + "Наименование"] + ":";
    КонецЕсли;
    Если ПоляФормы.Свойство("Субконто" + Индекс) Тогда
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].Видимость = Истина;
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ОграничениеТипа = ТипЗначенияСубконто;
    КонецЕсли;
    КонецЕсли;
    Иначе
    // Ничего делать не надо, т.к. не доступные поля будут скрыты
    Если Не ЭтоТаблица Тогда
    Если ЗаголовкиПолей <> Неопределено И ЗаголовкиПолей.Свойство("Субконто" + Индекс) Тогда
    // Заголовок может быть не выведен на форму
    ЭлементФормыЗаголовок = Форма.Элементы.Найти(ЗаголовкиПолей["Субконто" + Индекс]);
    Если ЭлементФормыЗаголовок <> Неопределено Тогда
    ЭлементФормыЗаголовок.Видимость = Ложь;
    КонецЕсли;
    Форма[ЗаголовкиПолей["Субконто" + Индекс]] = ";
    КонецЕсли;
    Если ПоляФормы.Свойство("Субконто" + Индекс) Тогда
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].Видимость = Ложь;
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ОграничениеТипа = Новый ОписаниеТипов("Неопределено");
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;

    Если Не ЭтоТаблица Тогда
    Если ЗаголовкиПолей <> Неопределено И ЗаголовкиПолей.Свойство("Подразделение") Тогда
    Форма[ЗаголовкиПолей["Подразделение"]] = ?(ДанныеСчета.УчетПоПодразделениям, НСтр("ru = 'Подразделение'") + ":", ");
    КонецЕсли;
    Если ПоляФормы.Свойство("Подразделение") Тогда

    ДоступностьПодразделения = ДанныеСчета.УчетПоПодразделениям;
    Если ПоляФормы.Свойство("ДоступностьПодразделения") Тогда
    ДоступностьПодразделения = ДоступностьПодразделения ИЛИ ПоляФормы.ДоступностьПодразделения;
    КонецЕсли;

    Форма.Элементы[ПоляФормы["Подразделение"]].Доступность = ДоступностьПодразделения;

    КонецЕсли;
    КонецЕсли;

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

Тебе надо отсюда

```1c
    ДанныеСчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(Счет);

    Для Индекс = 1 По 3 Цикл
    ТипЗначенияСубконто = ДанныеСчета["ВидСубконто" + Индекс + "ТипЗначения"];
    Если Индекс <= ДанныеСчета.КоличествоСубконто И НЕ НужноСкрытьСубконто(СкрыватьСубконто, ТипЗначенияСубконто) Тогда
    Если ЭтоТаблица Тогда
    Если ПоляФормы.Свойство("Субконто" + Индекс) Тогда
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ОграничениеТипа = ТипЗначенияСубконто;
    Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ПодсказкаВвода = ДанныеСчета["ВидСубконто" + Индекс + "Наименование"];
    КонецЕсли;
    КонецЦикла
```

А вот пример вызова в документе по событию ПриИзменении ячейки табчасти

```1c
    ИдСтроки = Форма.Элементы.ДвиженияХозрасчетный.ТекущаяСтрока;
    Если ИдСтроки = Неопределено Тогда
    Возврат;
    КонецЕсли;
    СтрокаТаблицы = Форма.Объект.Движения.Хозрасчетный.НайтиПоИдентификатору(ИдСтроки);

    ПоляФормы = Новый Структура("Субконто1,Субконто2,Субконто3");
    ПоляФормы.Субконто1 = "ДвиженияХозрасчетныйСубконто" + ДтКт + "1";
    ПоляФормы.Субконто2 = "ДвиженияХозрасчетныйСубконто" + ДтКт + "2";
    ПоляФормы.Субконто3 = "ДвиженияХозрасчетныйСубконто" + ДтКт + "3";
    БухгалтерскийУчетКлиентСервер.ПриВыбореСчета(СтрокаТаблицы["Счет" + ДтКт], Форма, ПоляФормы, Неопределено, Истина, Ложь);
```
---
Что я делаю не так?

```1c
    ДанныеСчета = ПроцедурыБухгалтерскогоУчетаВызовСервераПовтИсп.ПолучитьСвойстваСчета(Объект.СчетЗатратБУ);
    ПоляФормы=Новый Структура("СубконтоЗатратБУ1,СубконтоЗатратБУ2,СубконтоЗатратБУ3",Элементы.СубконтоЗатратБУ1,Элементы.СубконтоЗатратБУ2,Элементы.СубконтоЗатратБУ3);

    Для Индекс = 1 По 3 Цикл
    ТипЗначенияСубконто = ДанныеСчета["ВидСубконто" + Индекс + "ТипЗначения"];
    Если Индекс <= ДанныеСчета.КоличествоСубконто Тогда
    //
    Если ПоляФормы.Свойство("СубконтоЗатратБУ" + Индекс) Тогда
    ЭтаФорма.Элементы[ПоляФормы["СубконтоЗатратБУ" + Индекс]].ОграничениеТипа = ТипЗначенияСубконто;
    ЭтаФорма.Элементы[ПоляФормы["СубконтоЗатратБУ" + Индекс]].ПодсказкаВвода = ДанныеСчета["ВидСубконто" + Индекс + "Наименование"];
    КонецЕсли;
    КонецЕсли;

    КонецЦикла;
```

Выходит ошибка
Получение элемента по индексу для значения не определено

```1c
    ЭтаФорма.Элементы[ПоляФормы["СубконтоЗатратБУ" + Индекс]].ОграничениеТипа = ТипЗначенияСубконто;
```
---
Все получилось, спасибо. Последнее сделала так:

```1c
    ЭтаФорма.Элементы[
    "СубконтоЗатратБУ" + Индекс].ОграничениеТипа = ТипЗначенияСубконто;
```