Как передать реквизиты из табличной части одной внешней обработки в другую?

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

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

Способ первый: передача параметров через метод ОткрытьФорму

Самым эффективным и стандартным способом решения данной задачи является использование параметров формы. Метод ОткрытьФорму позволяет передать структуру с данными, которые будут доступны во второй обработке сразу после её открытия.

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

Разберем это по шагам:

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

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


&НаКлиенте
Процедура ПередатьРеквизитВОбработку(Команда)
    ТекДанные = Элементы.ТЧ.ТекущиеДанные;
    Если ТекДанные <> Неопределено Тогда
        ПараметрыПередачи = Новый Структура("Реквизит", ТекДанные.РеквизитТЧ);
        ОткрытьФорму("ВнешняяОбработка.ВнешняяОбработка2.Форма.Форма", ПараметрыПередачи);
    КонецЕсли;
КонецПроцедуры

Как принять и обработать параметры во второй внешней обработке

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

Проанализируем пример получения данных:


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

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

При использовании данного подхода важно учитывать несколько технических нюансов:

Когда стоит рассмотреть другие архитектурные решения?

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

  1. Выносить общую логику в Общие модули. Это позволит использовать одни и те же функции подготовки данных в обеих обработках.
  2. Использовать Хранилище общих настроек, если переданные данные должны сохраняться между сеансами работы пользователя.
  3. Рассмотреть объединение обработок в одну, если они функционально тесно связаны и зависят друг от друга.

Использование метода ОткрытьФорму с параметрами — это проверенный и надежный способ реализации связи между формами, который отлично подходит для большинства типовых задач в 1С. Удачи в разработке!

← На главную