gifts2017

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

Опубликовал Ivon (Ivon) в раздел Программирование - Инструментарий

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Скачать файлы

Наименование Файл Версия Размер
УФТаблицаДляВыбора.epf 7
.epf 7,15Kb
09.03.16
7
.epf 7,15Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
5. Яков Коган (Yashazz) 12.03.16 21:07
Я что-то не понял, а где все комментарии? Это у меня браузер дурит?
6. Яков Коган (Yashazz) 14.03.16 16:20
Так вот, повторюсь. Автор публикации выбрал один из самых неудобных, ресурсо- и трудо-ёмких способов. Это замечательно можно и нужно сделать безо всяких запросов.

P.S. Если уж доводить до абсурда, то на формочке выбора должен располагаться динамический список с произвольным запросом; накручено всяческое СКД и условное оформление)))
7. Ильдар Тагиров (pentanom) 23.03.16 10:52
(6) Yashazz, "Пример (или ссылка) в студию !"