База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как вернуть ссылку “Док2” в “Док1” в управляемых формах 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 дня, 23 часа назад сделано
Odin – Одинэсник.
-
АвторСообщения
-
-
30 сентября 2025 в 12:45 #33550
Odineski
УчастникИз документа “Док1” открывается обработка “Обработка” из которой создается документ “Док 2”. Необходимо вернуть ссылку на “Док2” в “Док1” на управляемых формах
-
30 сентября 2025 в 12:45 #33551
Odin – Одинэсник
УчастникПавел, привет!
Для решения задачи передачи ссылки на созданный в обработке документ “Док2” обратно в форму документа “Док1” в управляемом приложении 1С, рекомендую следующий подход:
—
### Общая идея
1. Из формы документа “Док1” вызывается форма обработки “Обработка”.
2. В обработке создаётся документ “Док2” и сохраняется.
3. Обработка возвращает ссылку на созданный документ “Док2” обратно в форму “Док1”.
4. В форме “Док1” ссылка на “Док2” записывается в нужный реквизит.—
### Подробный пример реализации
#### 1. В форме документа “Док1” вызываем обработку и получаем ссылку
1С (Код)12345678910111213141516171819202122bsl&НаКлиентеПроцедура ОткрытьОбработкуСозданияДок2(Команда)// Открываем форму обработки с передачей параметров, если нужноПараметры = Новый Структура;ФормаОбработки = ОткрытьФорму("Обработка.Обработка.Форма", Параметры, ЭтаФорма);// Подписываемся на событие закрытия формы обработки, чтобы получить результатФормаОбработки.ПриЗакрытии = ОбработатьЗакрытиеОбработки;КонецПроцедуры&НаКлиентеПроцедура ОбработатьЗакрытиеОбработки(Источник, Отказ)// Проверяем, что обработка вернула ссылку на Док2Если ЗначениеЗаполнено(Источник.РезультатСозданияДок2) Тогда// Записываем ссылку в реквизит документа "Док1"Объект.СсылкаНаДок2 = Источник.РезультатСозданияДок2;// Можно сразу записать документ, если нужно// Объект.Записать();Сообщить("Документ Док2 создан и ссылка записана.");КонецЕсли;КонецПроцедуры—
#### 2. В модуле формы обработки “Обработка” создаём документ “Док2” и возвращаем ссылку
1С (Код)1234567891011121314151617181920212223bsl// Переменная для хранения результатаПерем РезультатСозданияДок2;// Процедура создания документа "Док2"&НаКлиентеПроцедура СоздатьДок2(Команда)// Вызов серверной функции создания документаРезультатСозданияДок2 = СоздатьДок2НаСервере();// Закрываем форму, чтобы вернуть результат в вызывающую формуЗакрыть();КонецПроцедуры&НаСервереФункция СоздатьДок2НаСервере() ЭкспортНовыйДок2 = Документы.Док2.СоздатьДокумент();// Заполняем реквизиты нового документа по логике// Например:// НовыйДок2.Реквизит = Значение;НовыйДок2.Записать();Возврат НовыйДок2.Ссылка;КонецФункции—
#### 3. В модуле формы обработки объявляем публичное свойство для передачи результата
1С (Код)123bsl// В модуле формы обработкиПерем РезультатСозданияДок2 Экспорт;—
### Итог
– Форма “Док1” открывает форму обработки.
– Обработка создаёт документ “Док2” и сохраняет ссылку в публичную переменную.
– При закрытии формы обработки ссылка передаётся обратно в форму “Док1”.
– В форме “Док1” ссылка записывается в нужный реквизит.—
### Важные моменты
– Если нужно, чтобы ссылка записывалась сразу в базу, вызовите
Объект.Записать()
после присвоения.
– Можно использовать событиеПриЗакрытии
формы обработки для передачи результата.
– Если требуется более сложный обмен данными, можно использовать временное хранилище или события.—
Рекомендую посмотреть здесь:
https://infostart.ru/public/1518475/ — пример передачи ссылки из обработки в форму документа.—
Если нужно, могу помочь с конкретным кодом под вашу конфигурацию.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.