Управляемая форма для замены Таблица.ВыбратьСтроку()

В управляемых формах убрали возможность использовать "ВыбратьСтроку()". К статье приложена управляемая форма в обработке, которая поможет решить данную проблему. Просто добавьте форму в общие и вызывайте из любого объекта конфигурации

Так уж получилось, что в 1С посчитали лишним метод «ВыбратьСтроку()» для управляемых форм. Мне надоело делать под каждую таблицу отдельную управляемую форму, поэтому была сделана универсальная управляемая форма, которая подойдет практически под любой случай. Я помещаю эту форму в общие формы и вызываю в нужное время с нужными параметрами.

 ТекстЗапроса = "ВЫБРАТЬ
| ДополнительноеСоглашение.Ссылка,
| ДополнительноеСоглашение.Проведен,
| ДополнительноеСоглашение.Номер,
| ДополнительноеСоглашение.Дата,
| ДополнительноеСоглашение.Тип
|ИЗ
| Документ.ДополнительноеСоглашение КАК ДополнительноеСоглашение
|ГДЕ
| ДополнительноеСоглашение.Договор = &Договор";

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

ЗаголовокФормы = "Дополнительные соглашения по договору";

ОформлениеТаблицы = Новый СписокЗначений;
ОформлениеТаблицы.Добавить(Новый Структура("Видимость, Ширина, Заголовок", Ложь, Неопределено, Неопределено), "Ссылка");
ОформлениеТаблицы.Добавить(Новый Структура("Видимость, Ширина, Заголовок", Неопределено, 5, Неопределено), "Проведен");
ОформлениеТаблицы.Добавить(Новый Структура("Видимость, Ширина, Заголовок", Неопределено, Неопределено, "Тип допсоглашения"), "Тип");

Если ТекущийРежимЗапуска() = РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение Тогда
РежимОкна = 0;
Иначе
РежимОкна = 2;
КонецЕсли;

ФорматРезультата = "Ссылка";

ИмяСобытия = "СписокДопСоглашений" + Строка(Объект.Ссылка.УникальныйИдентификатор());

ЗакрыватьФормуПриВыборе = Истина;

ПараметрыФормы = Новый Структура("ТекстЗапроса, ПараметрыЗапроса, ЗаголовокФормы, ОформлениеТаблицы, РежимОкна, ФорматРезультата, ИмяСобытия, ЗакрыватьФормуПриВыборе",
ТекстЗапроса, ПараметрыЗапроса, ЗаголовокФормы, ОформлениеТаблицы, РежимОкна, ФорматРезультата, ИмяСобытия, ЗакрыватьФормуПриВыборе);

ОткрытьФорму("ОбщаяФорма.ФормаТаблицаДляВыбора_тк", ПараметрыФормы, ЭтаФорма);

Форма может вызываться в обычном и модальном режиме.

Как видно на примере, форма принимает следующие параметры:

ТекстЗапроса — тип Строка, принимается текст запроса по стандарту 1С;

ПараметрыЗапроса — тип СписокЗначений, каждый элемент списка соответствует одному параметру, при этом представление элемента — имя параметра, а значение элемента — это значение параметра. Если параметров у запроса нет, нужно либо убрать параметр из структуры параметров формы, либо передавать в качестве параметра пустую структуру;

ЗаголовокФормы — тип Строка, прописывает данный текст в заголовок формы таблицы;

ОформлениеТаблицы — тип СписокЗначений, где представление элемента — это имя колонки результата запроса, а значение элемента — структура с элементами Видимость, Ширина, Заголовок, которые применяются к колонкам таблицы при отображении. Если какое-то свойство нужно оставить по умолчанию, то в значение нужно передать Неопределено;

РежимОкна — тип Число, доступные значения от 0 до 3.

  • 0 — форма открывается исключительно для отображения данных, обработка выбора строки отключена.
  • 1 — работает для модального режима окна, в этом случае результат будет возвращен, как результат обработки мдального окна.
  • 2 — используется при передаче выбранного результата в обработку оповещения формы-владельца.
  • 3 — используется для передачи результата в обработку выбора.

ФорматРезультата — тип Строка или СписокЗначений. Строка используется если необходимо выбрать значение из одной колонки выбранной строки, в этом случае нужно просто указать имя колонки результата запроса. СписокЗначений используется в случае, если при выборе нужно передать несколько значений. В этом случае каждое значение элемента списка должно содержать строковое значение наименования колонки результата запроса. А этом случае при выборе строки будет сформирована структура, в которую будут помещены значения соответствующих ячеек выбранной строки.

ИмяСобытия — тип Строка, может использоваться при РежимОкна = 2 для отслеживания оповещения по имени события.

ЗакрыватьФормуПриВыходе — тип Булево, при Ложь форма не закрывается в случае выбора строки. Работает только для РежимОкна = 2 или РежимОкна = 3.

4 Comments

  1. Yashazz

    Я что-то не понял, а где все комментарии? Это у меня браузер дурит?

    Reply
  2. Yashazz

    Так вот, повторюсь. Автор публикации выбрал один из самых неудобных, ресурсо- и трудо-ёмких способов. Это замечательно можно и нужно сделать безо всяких запросов.

    P.S. Если уж доводить до абсурда, то на формочке выбора должен располагаться динамический список с произвольным запросом; накручено всяческое СКД и условное оформление)))

    Reply
  3. pentanom

    (6) Yashazz, «Пример (или ссылка) в студию !»

    Reply
  4. grom04

    Отличная идея, спасибо!

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *