|
Передача параметров между двумя формами | ☑ | ||
---|---|---|---|---|
0
Стажер_1С
09.08.18
✎
14:53
|
Привет всем! Управляемые формы
Есть 2 формы: ФормаДокумента и ФормаПодбора(Произвольная форма); Из Формы Документа я открываю 2 форму: ВтораяФорма= ПолучитьФорму("Документ.МойДок.Форма.ФормаПодбора"); ВтораяФорма.ОсновныеСредства = Элементы.основныесредства.ТекущиеДанные.ОсновноеСредство; ВтораяФорма.Открыть(); Во второй форме у меня есть ТаблицаЗначений с 2 колонками: 1. ШтрихКОД(тип - строка); 2. Снять (тип - булево). Мне надо перекинуть из второй формы,все строки из ТаблицыЗначения, где снять=истина, в первую форму (ФормаДокумента) и там уже заполонить свою табличную часть. Как это сделать??? |
|||
1
Mankubus
09.08.18
✎
15:17
|
(0) 1. При получении формы заполни владельца
2. При закрытии делай оповестить о выборе 3. В обработке выбора лови значения |
|||
2
Helfershelfer
09.08.18
✎
15:25
|
в дополнение к (1) можно добавить:
поместите массив отобранных строк исходной таблицы во временное хранилище (ВХ). в обработке оповещения передавайте адрес ВХ. в первой форме на сервере по адресу получите данные из ВХ. |
|||
3
Стажер_1С
10.08.18
✎
07:39
|
(1) При закрытие 2 формы?.Как оповестить, как это реализовать?
Обработку выбора у формы или у реквизита на форме? |
|||
4
Mankubus
10.08.18
✎
07:43
|
(3) посмотри в типовой как сделана форма подбора в реализации товаров и услуг
>>При закрытие 2 формы? да >>Как оповестить, как это реализовать? ОповеститьОВыборе >>Обработку выбора у формы или у реквизита на форме? без разницы. что заполнишь владельцем туда и вернется значение выбора |
|||
5
Стажер_1С
10.08.18
✎
07:47
|
(4) Сейчас сделаю
|
|||
6
Стажер_1С
10.08.18
✎
07:56
|
(4) Смотри,как правильно:
ФормаВыбора.ВладелецФормы = Элементы.основныесредства; ИЛИ ФормаВыбора.ВладелецФормы =Объект.ОсновныеСредства; Чтобы была ясность.У меня в документе,есть табли.часть(ОсновныеСредства), у этой табл части много колонок.Я добавила свою (ШтрихКод). Когда встаешь на строку,в моей колонки : &НаКлиенте Процедура ОсновныеСредстваШтрихКодАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) Если ЗначениеЗаполнено(Элементы.основныесредства.ТекущиеДанные.ОсновноеСредство) И ЗначениеЗаполнено(Элементы.основныесредства.ТекущиеДанные.Количество) Тогда ФормаВыбора = ПолучитьФорму("Документ.мойдок.Форма.ФормаПодбора"); ФормаВыбора.ОсновныеСредства = Элементы.основныесредства.ТекущиеДанные.ОсновноеСредство; ФормаВыбора.КолВоОсталось = Элементы.основныесредства.ТекущиеДанные.Количество; ФормаВыбора.ВладелецФормы = Элементы.основныесредства; ФормаВыбора.Открыть(); КонецПроцедуры |
|||
7
Стажер_1С
10.08.18
✎
07:59
|
далее все происходит во 2 форме:
СписокШтрихкоды- динамическийсписок,который собирается из регистрасведений ШтрихКодыОС - таблица значений на этой же форме,на ней пользователь и отмечает галочки. &НаСервере Процедура ПриОткрытииНаСервере() СписокШтрихкоды.Параметры.УстановитьЗначениеПараметра("ОсновноеСредство", ОсновныеСредства); //Подсчет кол-ва записей в динамическом списке Схема = Элементы.СписокШтрихкоды.ПолучитьИсполняемуюСхемуКомпоновкиДанных(); Настройки = Элементы.СписокШтрихкоды.ПолучитьИсполняемыеНастройкиКомпоновкиДанных(); КМ = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КМ.Выполнить(Схема, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПК = Новый ПроцессорКомпоновкиДанных; ПК.Инициализировать(Макет); ТЗ = Новый ТаблицаЗначений; ПВ = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПВ.УстановитьОбъект(ТЗ); ПВ.Вывести(ПК); Для каждого ТекСтр Из ТЗ Цикл НоваяСтрока = ШтрихКодыОС.Добавить(); НоваяСтрока.ШтрихКодФормы = ТекСтр.ШтрихКод; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ПриОткрытииНаСервере(); КонецПроцедуры &НаКлиенте Процедура ПриЗакрытии(ЗавершениеРаботы) ОповеститьОВыборе(ЭтотОбъект.ШтрихКодыОС); КонецПроцедуры |
|||
8
Стажер_1С
10.08.18
✎
08:00
|
и вот не вышло,не появились у меня значения
|
|||
9
Стажер_1С
10.08.18
✎
14:03
|
Если кому-то надо:
В первой форме: Если ЗначениеЗаполнено(Элементы.основныесредства.ТекущиеДанные.ОсновноеСредство) И ЗначениеЗаполнено(Элементы.основныесредства.ТекущиеДанные.Количество) Тогда СтруктураПараметров = Новый Структура("ОС,КолВоСписать",Элементы.ОсновныеСредства.ТекущиеДанные.ОсновноеСредство,Элементы.ОсновныеСредства.ТекущиеДанные.Количество); ДопПараметры = Новый Структура("ТекОС",Элементы.ОсновныеСредства.ТекущиеДанные.ОсновноеСредство); Оповещение = Новый ОписаниеОповещения("ЗапонитьСтрокуШтрихКода",ЭтотОбъект,ДопПараметры); Открытьформу("Документ.МойДокумент.Форма.МояФорма2",СтруктураПараметров,Элементы.ОсновныеСредства,,,,Оповещение,РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); Иначе Сообщить("Не выбрано основное средство или количество!"); КонецЕсли; &НаКлиенте Процедура ЗапонитьСтрокуШтрихКода(ШтрихКод,Параметры) Экспорт Тут пишем,что хотим делать с данными,которые получили из 2 формы КонецПроцедуры 2 форма: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ЭтотОбъект.ОсновныеСредства = Параметры.ОС; ЭтотОбъект.КолВоОсталось = Параметры.КолВоСписать; КонецПроцедуры &НаКлиенте Процедура ПриЗакрытии(ЗавершениеРаботы) ОповеститьОВыборе(ЭтотОбъект.ШтрихКодыОС); КонецПроцедуры |
|||
10
Cyberhawk
10.08.18
✎
14:04
|
Не комильфо оповещать все формы, если это происходит при закрытии формы. Передавай результат закрытия в форму-владелец
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |