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

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

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

Основные механизмы взаимодействия

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

Реализация вызова формы выбора

Рассмотрим пошагово, как инициировать выбор документа из основной формы МенюКассы. Нам необходимо создать процедуру, которая откроет форму выбора и будет готова обработать результат.

В модуле основной формы пропишем следующий код:


Процедура Добавить(Команда)
    Оповещение = Новый ОписаниеОповещения("ДобавитьЗавершение", ЭтаФорма);
    ОткрытьФорму("Документ.КакойТоДокумент.ФормаВыбора", , ЭтаФорма, , , , Оповещение);
КонецПроцедуры

&НаКлиенте
Процедура ДобавитьЗавершение(Результат, ДополнительныеПараметры) Экспорт
    Если ЗначениеЗаполнено(Результат) Тогда
        // Здесь мы вызываем логику заполнения табличной части
        ЗаполнитьТабличнуюЧастьПоСсылке(Результат);
    КонецЕсли;
КонецПроцедуры

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

Настройка формы выбора для возврата данных

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

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


// Код в модуле формы выбора
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    ТекущиеДанные = Элементы.Список.ТекущиеДанные;
    Если ТекущиеДанные <> Неопределено Тогда
        Закрыть(ТекущиеДанные.Ссылка);
    КонецЕсли;
КонецПроцедуры

Таким образом, когда пользователь делает выбор, форма закрывается, а переданное значение ТекущиеДанные.Ссылка попадает в параметр Результат процедуры ДобавитьЗавершение в основной форме.

Важные рекомендации по архитектуре

При реализации данного механизма стоит учитывать следующие моменты:

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

Используя предложенные методы ОткрытьФорму и Закрыть, вы добьетесь чистого и понятного взаимодействия между формами, которое соответствует стандартам разработки 1С.

← На главную