Как открыть управляемую форму документа по ссылке?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе разработки конфигураций и внешних обработок на платформе 1С:Предприятие 8.3 регулярно возникает задача открыть форму существующего документа, имея в наличии только ссылку на него. При переходе на управляемые формы и отказе от модальности разработчики сталкиваются с вопросами правильного выбора методов платформы: когда достаточно показать значение, а когда требуется тонкая настройка параметров через вызов ОткрытьФорму. Разберем различные способы решения этой задачи, выясним особенности передачи параметров и научимся избегать распространенных ошибок.

Способ 1. Простое интерактивное отображение через ПоказатьЗначение

Если нам требуется просто открыть для пользователя основную форму документа (ту, которая назначена в метаданных по умолчанию), платформа предоставляет специализированный метод глобального контекста. В режиме отказа от модальности для этого используется процедура ПоказатьЗначение, заменившая устаревший метод ОткрытьЗначение.

Рассмотрим синтаксис и пример использования:


// Пример простого открытия основной формы документа
ПоказатьЗначение(, СсылкаНаДокумент);

Проанализируем нюансы данного подхода:

  1. Метод доступен на тонком, толстом и веб-клиенте.
  2. Ограничение: этот способ открывает исключительно основную форму объекта, заданную в конфигураторе. Мы не можем указать произвольную или дополнительную форму.
  3. Через этот метод нельзя передать собственные параметры формы или настроить контекст открытия (например, заблокировать редактирование через ТолькоПросмотр).

Способ 2. Открытие формы с помощью метода ОткрытьФорму

Когда требуется открыть неосновную форму, гибко управлять поведением формы или передать дополнительные параметры, мы используем метод ОткрытьФорму. Чтобы платформа поняла, что открывается именно существующий объект из базы данных, а не создается новый документ, критически важно передать предопределенный параметр Ключ.

Посмотрим на пример открытия основной формы объекта конкретного документа:


ПараметрыФормы = Новый Структура("Ключ", СсылкаНаДокумент);
ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы);

Обратите внимание на структуру параметров: если передать произвольное имя ключа (например, СсылкаНаДокумент вместо Ключ), управляемая форма не свяжется с существующей записью и откроется как новый, незаполненный документ.

Способ 3. Открытие неосновной или произвольной формы документа

Довольно часто в документах создается несколько форм: дополнительная форма для быстрого просмотра, специализированная форма для согласования или внутренняя сервисная форма. Чтобы открыть конкретную форму, мы указываем полный путь к ней в метаданных.

Разберем по шагам, как обратиться к неосновной форме:


// Открываем дополнительную форму "ФормаСогласования"
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", СсылкаНаДокумент);

ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаСогласования", ПараметрыФормы);

Если имя метаданных документа заранее неизвестно (например, при написании универсального алгоритма обработки ссылок различных типов), путь к форме формируется динамически:


// Формирование имени формы на основе метаданных ссылки
ИмяДокумента = СсылкаНаДокумент.Метаданные().Имя;
ИмяФормы = "Документ." + ИмяДокумента + ".Форма.ФормаСогласования";

ПараметрыФормы = Новый Структура("Ключ", СсылкаНаДокумент);
ОткрытьФорму(ИмяФормы, ПараметрыФормы);

Способ 4. Предотвращение дублирования окон и управление правами

По умолчанию каждый повторный вызов ОткрытьФорму может приводить к открытию нового дублирующего окна формы одного и того же объекта. Чтобы избежать захламления рабочего пространства пользователя, платформе следует передать признак уникальности.

Рассмотрим подробнее использование параметров метода ОткрытьФорму:


ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", СсылкаНаДокумент);
ПараметрыФормы.Вставить("ТолькоПросмотр", Истина); // Открытие без возможности редактирования

// 4-й параметр метода ОткрытьФорму - Уникальность
// Передаем саму ссылку в качестве ключа уникальности
ОткрытьФорму(
    "Документ.РеализацияТоваровУслуг.ФормаОбъекта", 
    ПараметрыФормы, 
    ЭтотОбъект, 
    СсылкаНаДокумент
);

В данном случае, если форма документа уже открыта на рабочем столе пользователя, платформа не станет создавать дублирующее окно, а просто активирует и выведет на передний план уже открытую форму.

Важно помнить: при программном открытии форм система проверяет права текущего пользователя на интерактивные действия (права «Чтение» и «Интерактивное открытие»). Если у пользователя отсутствуют необходимые права к документу, вызов методов приведет к исключению времени выполнения, поэтому для безопасного вызова в универсальных интерфейсах рекомендуется предварительно проверять права доступа через функцию ПравоДоступа на стороне сервера.

← На главную