Из документа "Док1" открывается обработка "Обработка" из которой создается документ "Док 2". Необходимо вернуть ссылку на "Док2" в "Док1" на управляемых формах
Павел, привет!
Для решения задачи передачи ссылки на созданный в обработке документ "Док2" обратно в форму документа "Док1" в управляемом приложении 1С, рекомендую следующий подход:
---
### Общая идея
1. Из формы документа "Док1" вызывается форма обработки "Обработка".
2. В обработке создаётся документ "Док2" и сохраняется.
3. Обработка возвращает ссылку на созданный документ "Док2" обратно в форму "Док1".
4. В форме "Док1" ссылка на "Док2" записывается в нужный реквизит.
---
### Подробный пример реализации
#### 1. В форме документа "Док1" вызываем обработку и получаем ссылку
bsl
&НаКлиенте
Процедура ОткрытьОбработкуСозданияДок2(Команда)
// Открываем форму обработки с передачей параметров, если нужно
Параметры = Новый Структура;
ФормаОбработки = ОткрытьФорму("Обработка.Обработка.Форма", Параметры, ЭтаФорма);
// Подписываемся на событие закрытия формы обработки, чтобы получить результат
ФормаОбработки.ПриЗакрытии = ОбработатьЗакрытиеОбработки;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьЗакрытиеОбработки(Источник, Отказ)
// Проверяем, что обработка вернула ссылку на Док2
Если ЗначениеЗаполнено(Источник.РезультатСозданияДок2) Тогда
// Записываем ссылку в реквизит документа "Док1"
Объект.СсылкаНаДок2 = Источник.РезультатСозданияДок2;
// Можно сразу записать документ, если нужно
// Объект.Записать();
Сообщить("Документ Док2 создан и ссылка записана.");
КонецЕсли;
КонецПроцедуры
---
#### 2. В модуле формы обработки "Обработка" создаём документ "Док2" и возвращаем ссылку
bsl
// Переменная для хранения результата
Перем РезультатСозданияДок2;
// Процедура создания документа "Док2"
&НаКлиенте
Процедура СоздатьДок2(Команда)
// Вызов серверной функции создания документа
РезультатСозданияДок2 = СоздатьДок2НаСервере();
// Закрываем форму, чтобы вернуть результат в вызывающую форму
Закрыть();
КонецПроцедуры
&НаСервере
Функция СоздатьДок2НаСервере() Экспорт
НовыйДок2 = Документы.Док2.СоздатьДокумент();
// Заполняем реквизиты нового документа по логике
// Например:
// НовыйДок2.Реквизит = Значение;
НовыйДок2.Записать();
Возврат НовыйДок2.Ссылка;
КонецФункции
---
#### 3. В модуле формы обработки объявляем публичное свойство для передачи результата
bsl // В модуле формы обработки Перем РезультатСозданияДок2 Экспорт;
---
### Итог
- Форма "Док1" открывает форму обработки.
- Обработка создаёт документ "Док2" и сохраняет ссылку в публичную переменную.
- При закрытии формы обработки ссылка передаётся обратно в форму "Док1".
- В форме "Док1" ссылка записывается в нужный реквизит.
---
### Важные моменты
- Если нужно, чтобы ссылка записывалась сразу в базу, вызовите `Объект.Записать()` после присвоения.
- Можно использовать событие `ПриЗакрытии` формы обработки для передачи результата.
- Если требуется более сложный обмен данными, можно использовать временное хранилище или события.
---
Рекомендую посмотреть здесь:
https://infostart.ru/public/1518475/ — пример передачи ссылки из обработки в форму документа.
---
Если нужно, могу помочь с конкретным кодом под вашу конфигурацию.