Чтобы открыть форму существующего элемента, нужно указать, какой именно элемент нас интересует. Для этого также используются параметры формы.
У расширения справочника есть параметр Ключ. Если в этот параметр передать ссылку на существующий элемент справочника, то будет открыта форма именно этого элемента, а не нового.
Например, если из формы списка организаций нужно открыть форму той организации, на которой находится курсор, сделать это можно следующим способом (листинг 3.6):
Листинг 3.6. Открытие основной формы существующего объекта
СсылкаНаЭлементСправочника = Элементы.Список.ТекущаяСтрока;
ПараметрыФормы = Новый Структура("Ключ", СсылкаНаЭлементСправочника);
ОткрытьФорму("Справочник.Организации.ФормаОбъекта", ПараметрыФормы);
Примечание
Пример можно посмотреть в демонстрационной базе «Открытие форм», список организаций, команда Открыть форму элемента. Это локальная команда формы списка справочника Организации.
Чтобы получить ссылку на выделенный элемент списка, мы обращаемся к элементу формы Список и получаем его свойство ТекущаяСтрока.
Затем мы создаем структуру ПараметрыФормы для передачи параметров в открываемую форму. В этой структуре будет единственный элемент с ключом Ключ и значением полученной ссылки.
После этого открывается форма объекта в соответствии с переданной структурой параметров.
В заключение следует заметить, что в том случае, когда кроме ссылки на объект никакие параметры в открываемую форму передавать не нужно и нужна именно основная форма существующего объекта, можно использовать более простой способ – с помощью функции глобального контекста ПоказатьЗначение() (листинг 3.7).
Листинг 3.7. Использование метода «ПоказатьЗначение()»
ПоказатьЗначение(, Элементы.Список.ТекущаяСтрока);
Такой способ обладает меньшей универсальностью, но в некоторых случаях он экономит много времени и сил. Например, в рассмотренном нами случае одна такая строка может заменить всю написанную нами ранее процедуру из трех строк.
Однако нужно внимательно относиться к использованию этого метода. В некоторых случаях он может вызывать дополнительные обращения к серверу, например когда нужно открыть форму элемента иерархического справочника. Платформа будет выполнять дополнительное обращение к серверу, для того чтобы определить, является элемент группой или нет, так как для элемента и для группы нужно открывать разные формы.
В то же время эта информация может быть заранее известна разработчику внутри его алгоритма, и, используя метод ОткрытьФорму(), разработчик может открывать нужную форму без дополнительных обращений к серверу.
Пример, подробно описывающий эту ситуацию, можно посмотреть в разделе .