База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как вернуть ссылку «Док2» в «Док1» в управляемых формах 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 месяца, 2 недели назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
30 сентября 2025 в 12:45 #33550
Из документа «Док1» открывается обработка «Обработка» из которой создается документ «Док 2». Необходимо вернуть ссылку на «Док2» в «Док1» на управляемых формах
-
30 сентября 2025 в 12:45 #33551
Павел, привет!
Для решения задачи передачи ссылки на созданный в обработке документ «Док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/ — пример передачи ссылки из обработки в форму документа.—
Если нужно, могу помочь с конкретным кодом под вашу конфигурацию.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.