Как передать ссылку на объект в форму внешней обработки заполнения?

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

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

Пошаговое решение задачи передачи параметров

Для того чтобы передать данные между формами, мы будем использовать возможности платформы по передаче параметров через метод ОткрытьФорму. Рассмотрим этот процесс по шагам.

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

Реализация кода

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

Сначала рассмотрим код на стороне вызывающей формы (клиентская часть):


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

Теперь проанализируем, как принять эти данные в принимающей форме (серверная часть):


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Проверяем наличие параметра в коллекции Параметры
    Если Параметры.Свойство("СсылкаНаДокумент") Тогда
        Ссылка = Параметры.СсылкаНаДокумент;
        
        // Теперь мы можем использовать ссылку для получения реквизитов объекта
        // Например, отобразим номер документа в поле формы
        НомерДокумента = Ссылка.Номер;
    КонецЕсли;
КонецПроцедуры

Важные рекомендации и нюансы

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

Используя этот подход, вы сможете строить гибкие и интерактивные интерфейсы для ваших внешних обработок, делая процесс заполнения данных максимально удобным для конечных пользователей.

← На главную