Как передать параметры в открываемую форму документа в 1С?

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

При разработке конфигураций на платформе 1С:Предприятие часто возникает задача программного открытия формы с определенным контекстом. Например, мы хотим не просто открыть форму документа, но и сразу активировать нужную вкладку (страницу) панели. Разберем, как правильно реализовать передачу параметров и их обработку.

Основные принципы передачи параметров

Для открытия формы в управляемом приложении используется метод ОткрытьФорму. Данная функция принимает несколько аргументов, где второй аргумент — это Структура, предназначенная для передачи дополнительных данных. Рассмотрим, как подготовить такую структуру и использовать её в коде.

Предположим, у нас есть задача при открытии формы документа ЭтапПроизводства программно переключить отображение на определенную вкладку. Для этого мы создадим структуру, в которую поместим нужный нам ключ.

Пошаговое руководство по реализации

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

Посмотрим на пример реализации клиентского кода:


&НаКлиенте
Процедура НарядЗаданиеДляРедактирования(Команда)
    // Формируем структуру параметров
    ПараметрыФормы = Новый Структура;
    
    // Передаем стандартный ключ для открытия конкретного объекта
    СсылкаНаЭтап = ПолучитьСсылкуНаЭтапПроизводства(Элементы.Основание_НарядЗадание.ТекущиеДанные.ДокументСсылка);
    ПараметрыФормы.Вставить("Ключ", СсылкаНаЭтап);
    
    // Передаем наш произвольный параметр для переключения вкладки
    ПараметрыФормы.Вставить("ИмяНужнойВкладки", "СтраницаТрудозатраты");
    
    // Открываем форму, передавая структуру вторым параметром
    ОткрытьФорму("Документ.ЭтапПроизводства.Форма.ФормаДокумента", ПараметрыФормы);    
КонецПроцедуры

Обработка полученных параметров в форме

Когда форма открывается, система инициализирует её на сервере. В этот момент мы можем перехватить переданные нами данные. Все параметры, переданные в структуру, становятся доступны через коллекцию Параметры формы.

Рассмотрим, как это выглядит в модуле формы ЭтапПроизводства:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Проверяем, передан ли наш параметр
    Если Параметры.Свойство("ИмяНужнойВкладки") Тогда
        // Устанавливаем текущую страницу панели на основе переданного значения
        // Предположим, что на форме есть элемент ГруппаСтраницы
        Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы[Параметры.ИмяНужнойВкладки];
    КонецЕсли;
КонецПроцедуры

Важные рекомендации при работе с параметрами

Чтобы ваша разработка была надежной и профессиональной, учитывайте следующие нюансы:

Использование Структуры параметров является стандартом разработки в 1С. Это позволяет создавать гибкие и модульные формы, которые могут подстраиваться под контекст вызова, не прибегая к использованию глобальных переменных или других ненадежных механизмов.

← На главную