|
Управляемое приложение. Передача данных между фомами. | ☑ | ||
---|---|---|---|---|
0
Koliaff
27.07.12
✎
15:39
|
Если из одной формы открывается другая то данные можно передать, поместив их во временное хранилище. И открыть форму передав временнное хранилище через СтрутураПараметров.
Пример : ОткрытьФормуМодально("ВнешняяОбработка.УстановкаЦен.Форма.СправочникНоменклатура",СтрутураПараметров,ЭтаФорма); Потом при открытии второй формы прочитать из временного хранилища переданные данные. А как передать данные после выбора какого-нибудь значения во второй форме ? Т.е. необходимо во второй форме выбрать что-то, эту форму закрыть и вернуться к первой форме. Но чтобы выбранное значение во второй форме передалось в первую ? |
|||
1
Bober
27.07.12
✎
15:45
|
при закрытии формы возвращать значение и ссылку на временное хранилище
|
|||
2
Koliaff
27.07.12
✎
15:47
|
(Bober) Каким образом ? Когда из первой формы открывается вторая явно указывается Структура параметров, к которым привязано временное хранилище. А в случае закрытии второй формы как передать первой форме эту структуру параметров ?
|
|||
3
Neeki
27.07.12
✎
15:54
|
Попробуй открыть модально форму, и после закрытия получить реквизит формы.
СтруктураПараметровПодбора = Новый Структура(); СтруктураПараметровПодбора.Вставить("Контрагент", Объект.Контрагент); ФормаВыбора = ПолучитьФорму("Документ._СчетНаОплату.Форма.ФормаВыбораПоступленияУправляемая",СтруктураПараметровПодбора,ЭтаФорма); ФормаВыбора.ОткрытьМодально(); //теперь получим нужные данные из формы Результат = ФормаВыбора.ТЗ_Рез; Где ТЗ_Рез - реквизит ФормыВыбора |
|||
4
Koliaff
27.07.12
✎
16:13
|
(Neeki) Большое спасибо ! Получилось !!!
|
|||
5
jump if overflow
27.07.12
✎
16:14
|
в УТ 11 подбор через опвещение сделан
во второй форме &НаКлиенте Процедура СписокНоменклатурыВыборЗначения(Элемент, Значение, СтандартнаяОбработка) ........ ОповеститьОВыборе(Структура); //оповещаем форму владельца ....... в первой форме &НаКлиенте Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) ....... |
|||
6
Koliaff
27.07.12
✎
16:17
|
(jump if overflow) Спасибо, возьму на заметку !
|
|||
7
Ranger_83
27.07.12
✎
16:26
|
Выполнение подбора элементов(взято из http://its.1c.ru/db/v8std#content:2149184136:1)
7.1. Особенность клиент-серверного взаимодействия при выполнении подбора элементов состоит в необходимости передавать список выбранных элементов между формой объекта и формой подбора. При этом объем передаваемых данных может быть достаточно большим. В этом случае не рекомендуется передавать потенциально большой массив данных в качестве параметра формы подбора. Потенциально большой массив данных, хранимый в форме подбора в параметре типа ДанныеФормыКоллекция, может оказаться на клиенте не полным за счет оптимизации работы управляемой формы. Как результат – для передачи параметра будет выполнено дополнительное "дочитывание" данных формы с сервера. 7.2. В целях оптимизации передачи данных между формой объекта и формой подбора рекомендуется использовать временное хранилище, чтение и запись которого должна выполняться на сервере. Проиллюстрируем методику использования формы подбора на примере подбора элементов справочников Товары в табличную часть Товары документа РасходТовара. (Из демонстрационной конфигурации по платформе 1С:Предприятие). Открытие формы подбора из клиентского кода должно приводить не более чем к двум обращениям на сервер. С этой целью локальная команда открытия формы подбора в модуле формы документа РасходТовара помещает список товаров из табличной части во временное хранилище (первый вызов) и открывает форму подбора (второй вызов), передавая адрес временного хранилища: Копировать в буфер обмена &НаКлиенте Процедура ОбработчикКомандыПодбора() АдресТоваровВХранилище = ПоместитьТоварыВХранилище(); ПараметрыПодбора = Новый Структура("АдресТоваровДокумента, ВидЦен, Склад", АдресТоваровВХранилище, Объект.ВидЦен, Объект.Склад); ФормаПодбора = ОткрытьФорму("Документ.РасходТовара.Форма.ФормаПодбора", ПараметрыПодбора, ЭтаФорма); КонецПроцедуры Копировать в буфер обмена &НаСервере // Функция помещает список товаров во временное хранилище и возвращает адрес Функция ПоместитьТоварыВХранилище() Возврат ПоместитьВоВременноеХранилище(Объект.Товары.Выгрузить(,"Товар,Цена,Количество"), УникальныйИдентификатор); КонецФункции Форма подбора получает список выбранных товаров из временного хранилища в обработчике ПриСозданииНаСервере: Копировать в буфер обмена &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) АдресТоваровДокумента = Параметры.АдресТоваровДокумента; Товары.Загрузить(ПолучитьИзВременногоХранилища(АдресТоваровДокумента)); … КонецПроцедуры Закрытие формы подбора должно приводить не более чем к двум обращениям на сервер. При закрытии форма подбора помещает список выбранных товаров во временное хранилище (первый вызов): Копировать в буфер обмена &НаКлиенте Процедура ОКВыполнить() ЗаписатьПодборВХранилище(); ВладелецФормы.ОбработатьПодбор(); Закрыть(); КонецПроцедуры Копировать в буфер обмена &НаСервере Процедура ЗаписатьПодборВХранилище() ПоместитьВоВременноеХранилище(Товары.Выгрузить(), АдресТоваровДокумента); КонецПроцедуры Затем форма документа восстанавливает список товаров из временного хранилища (второй вызов на сервер): Копировать в буфер обмена &НаКлиенте Процедура ОбработатьПодбор() Экспорт ПолучитьТоварыИзХранилища(АдресТоваровВХранилище); КонецПроцедуры Копировать в буфер обмена &НаСервере Процедура ПолучитьТоварыИзХранилища(АдресТоваровВХранилище) Объект.Товары.Загрузить(ПолучитьИзВременногоХранилища(АдресТоваровВХранилище)); КонецПроцедуры |
|||
8
lucifer
27.07.12
✎
16:29
|
в первой форме:
ответ = ОткрытьФормуМодально("ВнешняяОбработка.УстановкаЦен.Форма.СправочникНоменклатура",СтрутураПараметров,ЭтаФорма); Форма какую открываем: закрыть(твои данные); в итоге твои данные будут в переменной ответ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |