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