Здравствуйте, коллеги.

Задача следующая: в табличной части документа, при добавлении новой строки (поле Наименование имеет составной тип) кнопкой Добавить появляется окно с Выбор типа данных (используются справочники).
Это замедляет работу пользователя.

Решил разместить в командной панели кнопки Добавить, при нажатии которых, добавлялась бы новая строка в табличную часть документа из вызванной формы элемента справочника соответствующего типа.

Но ни как не могу построить алгоритм - ничего не приходит в голову.

У кого-нибудь есть подобное решение, подсказка?

Заранее благодарен.
---
Короче, вот так работает:

В форме документа

```1c
    &НаКлиенте
    Процедура ДобавитьСлово(Команда)

    Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияФормыЭлементаСправочникаСлова", ЭтаФорма);
    ОткрытьФорму("Справочник.Слова.ФормаОбъекта",,,,,, Оповещение);

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

    Процедура ПослеЗакрытияФормыЭлементаСправочникаСлова(РезультатЗакрытия, ДополнительныеПараметры) Экспорт

    НоваяСтрока = Объект.СловаИПредложения.Добавить();
    НоваяСтрока.Английский = РезультатЗакрытия;

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

В форме элемента справочника, в обработчике ПриЗакрытии

```1c
    &НаКлиенте
    Процедура ПриЗакрытии(ЗавершениеРаботы)

    ОповеститьОВыборе(Объект.Ссылка);

    КонецПроцедуры
```
---
А в чем замедление? В том, что надо выбрать тип? Так логично же. Или туда должно как-то автоматически что-то подставляться?
---
Хотелось бы обходить выбор типа справочника, плюс, там сортировка по алфавиту - все время выбор находится на редко используемом справочнике.
---
Обойти выбор типа - не обойдете. Но если при добавлении строки необходимо спозиционироваться на справочние, который используется чаще всего - присвойте перед начало редактирование пустую ссылку этого справочника.
или еще по другому: кнопку добавить сделать подменю с составом типов и при выборе конкретного типа добавлять пустую ссылку на него.
---
Очень хорошая идея! Как у кнопки Добавить табличной части документа, сделать подменю?
---
Сообщение было скрыто модератором.
---
По кнопке открываешь форму выбора нужного справочника.
Если пользователь что-то выбрал - добавляешь новую строку и заполняешь поле Наименование выбранным значением.
Все.
---
Делаешь столько кнопок, сколько у тебя справочников. На что нажмешь - то и заполнится в новой строке.
---
Хороший подход. Форму-то элемента справочника я открою, но как потом выгрузить этот элемент в табличную часть документа? - в новую запись.

Я тут попытался что-то придумать, но не пошло.

```1c
    // Эта чать под большим вопросом...
    НоваяСтрока = Объект.СловаИПредложения.Добавить();
    ПараметрыФормы = Новый Структура("Наименование", НоваяСтрока.Английский);
    ОткрытьФорму("Справочник.Слова.ФормаОбъекта");
```
---
Короче, вот так работает:

В форме документа

```1c
    &НаКлиенте
    Процедура ДобавитьСлово(Команда)

    Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияФормыЭлементаСправочникаСлова", ЭтаФорма);
    ОткрытьФорму("Справочник.Слова.ФормаОбъекта",,,,,, Оповещение);

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

    Процедура ПослеЗакрытияФормыЭлементаСправочникаСлова(РезультатЗакрытия, ДополнительныеПараметры) Экспорт

    НоваяСтрока = Объект.СловаИПредложения.Добавить();
    НоваяСтрока.Английский = РезультатЗакрытия;

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

В форме элемента справочника, в обработчике ПриЗакрытии

```1c
    &НаКлиенте
    Процедура ПриЗакрытии(ЗавершениеРаботы)

    ОповеститьОВыборе(Объект.Ссылка);

    КонецПроцедуры
```
---
https://its.1c.ru/db/metod8dev/content/2452/hdoc
---
Да, эта тот код работает великолепно. После его срабатывания, поле ввода становится необходимым типом. Но, не понятно, как теперь заполнить новый элемент данными из формы элемента справочника.

&НаКлиенте
Процедура ДобавитьСлово(Команда)

 Массив = Новый Массив();
 Массив.Добавить(Тип("СправочникСсылка.Слова"));
 Описание = Новый ОписаниеТипов(Массив);

 Элементы.СловаИПредложенияАнглийский.ОграничениеТипа = Описание;
 СловаИПредложенияАнглийский = Описание.ПривестиЗначение(СловаИПредложенияАнглийский);

 // Эта чать под большим вопросом...
 НоваяСтрока = Объект.СловаИПредложения.Добавить();
 ПараметрыФормы = Новый Структура("Наименование", НоваяСтрока.Английский);
 ОткрытьФорму("Справочник.Слова.ФормаОбъекта");

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