Передать не записанный документ как реквизит

1. user1671936 1 17.05.23 10:45 Сейчас в теме
Добрый день. Подскажите, пожалуйста, как можно передать новый не записанный документ в качестве реквизита/переменной в другую форму, для дальнейшей обработки этого документа уже из другой формы?
По теме из базы знаний
Найденные решения
8. anton13m 2 17.05.23 14:23 Сейчас в теме
(7)
Вы что-то не то с самого начала делаете.
Для чего вы столько данных собираетесь передавать между формами?

Вам нужно использовать ОписаниеОповещения.
ОписаниеОповещения = Новый ОписаниеОповещения("ОбработкаВыбора", ЭтотОбъект);	
ПараметрыФормы = Новый Структура; 
ПараметрыФормы.Вставить("ТипНоменклатуры", "Товар");
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаПодбора", ПараметрыФормы,,,,,ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца)

Первый параметр это процедура, которая будет вызвана после закрытия "ОбработкаВыбора" в ней уже свою логику заполнения реквизитов и делаете.
&НаКлиенте
Процедура ОбработкаВыбора(Результат, Параметры) Экспорт

	Если НЕ Результат = Неопределено Тогда
		
		Для Каждого Строка из Результат.Товары Цикл
			СтрокаТовары = Объект.Товары.Добавить();	
			СтрокаТовары.Номенклатура = Строка;
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры
Показать

А в открываемой форме при закрытии возвращаете что вам нужно:
ПараметрыЗакрытия = Новый Структура("Товары", СписокНоменклатуры.ВыгрузитьЗначения());
Закрыть(ПараметрыЗакрытия); 
user1671936; Sashares; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 17.05.23 11:07 Сейчас в теме
(1) Прикладной объект нужно преобразовать в ДанныеФормыСтруктура, который можно передать другой форме, например, в параметрах открытия.
user1671936; +1 Ответить
3. user1671936 1 17.05.23 12:54 Сейчас в теме
(2)
ДанныеФормыСтруктура
спасибо. Сделал как Вы написали
&НаКлиенте
Процедура test_КнопочкаПеред(Команда)
ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("Документ", Объект);
	Форма = ПолучитьФорму("Обработка.ЗаполнениеДокумента.Форма.Форма", ПараметрыФормы);
	Форма.Открыть();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьДокументНаСервере()
	Запрос = Новый Запрос("ВЫБРАТЬ
	|	Номенклатура.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура");
	Документ = ДокОбъект;
	Документ.Товары.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьДокумент(Команда)
	ЗаполнитьДокументНаСервере();
	Закрыть();
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	КопироватьДанныеФормы(ЭтотОбъект.Параметры.Документ, ДокОбъект);
КонецПроцедуры
Показать
только табличная часть товары так и осталась пустой. Подскажите, пожалуйста, как данные обновить в табличной части товары?
4. toxin74 17.05.23 12:59 Сейчас в теме
(3) Псевдоним Ссылка в запросе переименовать в то имя, как и называется реквизит в табличной части
user1671936; +1 Ответить
5. user1671936 1 17.05.23 13:07 Сейчас в теме
(4) пропустил по невнимательности. Поправил. Но при закрытии формы обработки документ все равно с пустой табличной частью.
Прикрепленные файлы:
6. toxin74 17.05.23 13:14 Сейчас в теме
(5) Как вариант обновить отображение табличной части ОбновитьОтображениеДанных(Элементы."Имя табличной части на форме")
7. user1671936 1 17.05.23 13:22 Сейчас в теме
(6)
ОбновитьОтображениеДанных(Элементы."Имя табличной части на форме")
если я правильно понял, то этот код нужно вызывать в модуле формы документа? В каком событии формы документа можно перехватить закрытие формы обработки?
8. anton13m 2 17.05.23 14:23 Сейчас в теме
(7)
Вы что-то не то с самого начала делаете.
Для чего вы столько данных собираетесь передавать между формами?

Вам нужно использовать ОписаниеОповещения.
ОписаниеОповещения = Новый ОписаниеОповещения("ОбработкаВыбора", ЭтотОбъект);	
ПараметрыФормы = Новый Структура; 
ПараметрыФормы.Вставить("ТипНоменклатуры", "Товар");
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаПодбора", ПараметрыФормы,,,,,ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца)

Первый параметр это процедура, которая будет вызвана после закрытия "ОбработкаВыбора" в ней уже свою логику заполнения реквизитов и делаете.
&НаКлиенте
Процедура ОбработкаВыбора(Результат, Параметры) Экспорт

	Если НЕ Результат = Неопределено Тогда
		
		Для Каждого Строка из Результат.Товары Цикл
			СтрокаТовары = Объект.Товары.Добавить();	
			СтрокаТовары.Номенклатура = Строка;
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры
Показать

А в открываемой форме при закрытии возвращаете что вам нужно:
ПараметрыЗакрытия = Новый Структура("Товары", СписокНоменклатуры.ВыгрузитьЗначения());
Закрыть(ПараметрыЗакрытия); 
user1671936; Sashares; +2 Ответить
9. user1671936 1 17.05.23 14:48 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот