Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
01 июн 2024, 02:10

Передать таблицу значений из одной управляемой формыв другую

Автор Kamor, 27 июн 2018, 15:54

0 Пользователей и 1 гость просматривают эту тему.

Kamor

Добрый день!
Есть 2 формы, из формы1 открываю форму2, в форме2 пользователь заполняет таблицу значений. Как передать таблицу значений из формы2 в форму1. 1с 8.3 УТ 11.4.

Kamor

Пытаюсь сделать вот так:
код первой формы:

форма = ПолучитьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма.Форма", );
Значение = Форма.ОткрытьМодально();
СтруктураПараметров = ПолучитьИзВременногоХранилища(значение);

Код второй формы

структурапараметров =  новый Структура;
Массив = новый Массив;
Для Каждого товар из Объект.Корзина цикл
массив.Добавить(товар.номенклатура);
массив.Добавить(товар.количество);
КонецЦикла;
структурапараметров.Вставить("Массив1",массив);
Товар = ПоместитьВоВременноеХранилище(структурапараметров);
ЭтаФорма.Закрыть(Товар);


Ошибка: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
СтруктураПараметров = ПолучитьИзВременногоХранилища(значение);
по причине:
Ошибка получения значения из временного хранилища

LexaK

а зачем так?

структурапараметров.Вставить("Массив1",массив);
Товар = ПоместитьВоВременноеХранилище(структурапараметров);
ЭтаФорма.Закрыть(Товар);


сразу массив возвращайте

ЭтаФорма.Закрыть(массив);
если помогло нажмите: Спасибо!

bsn-chita

ОсновнаяФорма:

&НаКлиенте
Процедура ОткрытьФормуПодбора(Команда)
ОткрытьФорму("Обработка.ПередачаПараметровВФормах.Форма.ФормаПобдора",,ЭтаФорма);
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьПодбор(АдресВХ) Экспорт
А = ОбработатьПодборНаСервере(АдресВХ);
КонецПроцедуры

&НаСервере
Функция ОбработатьПодборНаСервере(АдресВХ)
Возврат ПолучитьИзВременногоХранилища(АдресВХ);
КонецФункции


Форма подбора:

&НаКлиенте
Процедура ЗавершитьПодборИПередатьДанныеВОсновнуюформу(Команда)
АдресВХ = Неопределено;
ЗавершитьПодборИПередатьДанныеВОсновнуюформуНаСервере(АдресВХ);
ВладелецФормы.ОбработатьПодбор(АдресВХ);
Закрыть();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ЗавершитьПодборИПередатьДанныеВОсновнуюформуНаСервере(АдресВХ)
АдресВХ = ПоместитьВоВременноеХранилище("Данные для передачи", Новый УникальныйИдентификатор);
КонецПроцедуры

Добавлено: 28 июн 2018, 01:20


Добавил вариант с оповещением.
Основная форма:

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

&НаКлиенте
Процедура ОбработатьПодбор(АдресВХ) Экспорт
А = ОбработатьПодборНаСервере(АдресВХ);
КонецПроцедуры

&НаСервере
Функция ОбработатьПодборНаСервере(АдресВХ)
Возврат ПолучитьИзВременногоХранилища(АдресВХ);
КонецФункции

&НаКлиенте
Процедура ПриЗавершенииПодбора(Результат, ДополнительныеПараметры) Экспорт
Если ТипЗнч(Результат) = Тип("Структура") Тогда
А = ПолучитьИзВременногоХранилища(Результат.ОповещениеАдресВХ);
КонецЕсли;
КонецПроцедуры

Форма подбора:

&НаКлиенте
Процедура ЗавершитьПодборИПередатьДанныеВОсновнуюформу(Команда)
АдресВХ = Неопределено;
ЗавершитьПодборИПередатьДанныеВОсновнуюформуНаСервере(АдресВХ);
ВладелецФормы.ОбработатьПодбор(АдресВХ);

ПараметрыПриЗакрытии = Новый Структура;
ПараметрыПриЗакрытии.Вставить("ОповещениеАдресВХ",АдресВХ);
Закрыть(ПараметрыПриЗакрытии);
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ЗавершитьПодборИПередатьДанныеВОсновнуюформуНаСервере(АдресВХ)
АдресВХ = ПоместитьВоВременноеХранилище("Данные для передачи", Новый УникальныйИдентификатор);
КонецПроцедуры

Kamor

bsn-chita, спасибо. Сделал по первому примеру, все заработало.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск