Так уж получилось, что в 1С посчитали лишним метод "ВыбратьСтроку()" для управляемых форм. Мне надоело делать под каждую таблицу отдельную управляемую форму, поэтому была сделана универсальная управляемая форма, которая подойдет практически под любой случай. Я помещаю эту форму в общие формы и вызываю в нужное время с нужными параметрами.
ТекстЗапроса = "ВЫБРАТЬ
| ДополнительноеСоглашение.Ссылка,
| ДополнительноеСоглашение.Проведен,
| ДополнительноеСоглашение.Номер,
| ДополнительноеСоглашение.Дата,
| ДополнительноеСоглашение.Тип
|ИЗ
| Документ.ДополнительноеСоглашение КАК ДополнительноеСоглашение
|ГДЕ
| ДополнительноеСоглашение.Договор = &Договор";
ПараметрыЗапроса = Новый СписокЗначений;
ПараметрыЗапроса.Добавить(Объект.Ссылка, "Договор");
ЗаголовокФормы = "Дополнительные соглашения по договору";
ОформлениеТаблицы = Новый СписокЗначений;
ОформлениеТаблицы.Добавить(Новый Структура("Видимость, Ширина, Заголовок", Ложь, Неопределено, Неопределено), "Ссылка");
ОформлениеТаблицы.Добавить(Новый Структура("Видимость, Ширина, Заголовок", Неопределено, 5, Неопределено), "Проведен");
ОформлениеТаблицы.Добавить(Новый Структура("Видимость, Ширина, Заголовок", Неопределено, Неопределено, "Тип допсоглашения"), "Тип");
Если ТекущийРежимЗапуска() = РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение Тогда
РежимОкна = 0;
Иначе
РежимОкна = 2;
КонецЕсли;
ФорматРезультата = "Ссылка";
ИмяСобытия = "СписокДопСоглашений" + Строка(Объект.Ссылка.УникальныйИдентификатор());
ЗакрыватьФормуПриВыборе = Истина;
ПараметрыФормы = Новый Структура("ТекстЗапроса, ПараметрыЗапроса, ЗаголовокФормы, ОформлениеТаблицы, РежимОкна, ФорматРезультата, ИмяСобытия, ЗакрыватьФормуПриВыборе",
ТекстЗапроса, ПараметрыЗапроса, ЗаголовокФормы, ОформлениеТаблицы, РежимОкна, ФорматРезультата, ИмяСобытия, ЗакрыватьФормуПриВыборе);
ОткрытьФорму("ОбщаяФорма.ФормаТаблицаДляВыбора_тк", ПараметрыФормы, ЭтаФорма);
Форма может вызываться в обычном и модальном режиме.
Как видно на примере, форма принимает следующие параметры:
ТекстЗапроса - тип Строка, принимается текст запроса по стандарту 1С;
ПараметрыЗапроса - тип СписокЗначений, каждый элемент списка соответствует одному параметру, при этом представление элемента - имя параметра, а значение элемента - это значение параметра. Если параметров у запроса нет, нужно либо убрать параметр из структуры параметров формы, либо передавать в качестве параметра пустую структуру;
ЗаголовокФормы - тип Строка, прописывает данный текст в заголовок формы таблицы;
ОформлениеТаблицы - тип СписокЗначений, где представление элемента - это имя колонки результата запроса, а значение элемента - структура с элементами Видимость, Ширина, Заголовок, которые применяются к колонкам таблицы при отображении. Если какое-то свойство нужно оставить по умолчанию, то в значение нужно передать Неопределено;
РежимОкна - тип Число, доступные значения от 0 до 3.
- 0 - форма открывается исключительно для отображения данных, обработка выбора строки отключена.
- 1 - работает для модального режима окна, в этом случае результат будет возвращен, как результат обработки мдального окна.
- 2 - используется при передаче выбранного результата в обработку оповещения формы-владельца.
- 3 - используется для передачи результата в обработку выбора.
ФорматРезультата - тип Строка или СписокЗначений. Строка используется если необходимо выбрать значение из одной колонки выбранной строки, в этом случае нужно просто указать имя колонки результата запроса. СписокЗначений используется в случае, если при выборе нужно передать несколько значений. В этом случае каждое значение элемента списка должно содержать строковое значение наименования колонки результата запроса. А этом случае при выборе строки будет сформирована структура, в которую будут помещены значения соответствующих ячеек выбранной строки.
ИмяСобытия - тип Строка, может использоваться при РежимОкна = 2 для отслеживания оповещения по имени события.
ЗакрыватьФормуПриВыходе - тип Булево, при Ложь форма не закрывается в случае выбора строки. Работает только для РежимОкна = 2 или РежимОкна = 3.