Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Передача параметров между двумя формами

Передача параметров между двумя формами
Я
   Стажер_1С
 
09.08.18 - 14:53
Привет всем! Управляемые формы

Есть  2 формы: ФормаДокумента и ФормаПодбора(Произвольная форма);

Из Формы Документа я открываю 2 форму:
ВтораяФорма= ПолучитьФорму("Документ.МойДок.Форма.ФормаПодбора");
ВтораяФорма.ОсновныеСредства = Элементы.основныесредства.ТекущиеДанные.ОсновноеСредство;
ВтораяФорма.Открыть();

Во второй форме у меня есть ТаблицаЗначений с 2 колонками: 
1. ШтрихКОД(тип - строка);
2. Снять (тип - булево).

Мне надо перекинуть из второй формы,все строки из ТаблицыЗначения, где снять=истина, в первую форму (ФормаДокумента) и там уже заполонить свою табличную часть.
Как это сделать???
 
 
   Mankubus
 
1 - 09.08.18 - 15:17
(0) 1. При получении формы заполни владельца
2. При закрытии делай оповестить о выборе 
3. В обработке выбора лови значения
   Helfershelfer
 
2 - 09.08.18 - 15:25
в дополнение к (1) можно добавить:
поместите массив отобранных строк исходной таблицы во временное хранилище (ВХ).
в обработке оповещения передавайте адрес ВХ.
в первой форме на сервере по адресу получите данные из ВХ.
   Стажер_1С
 
3 - 10.08.18 - 07:39
(1) При закрытие 2 формы?.Как оповестить, как это реализовать?
Обработку выбора у формы или у реквизита на форме?
   Mankubus
 
4 - 10.08.18 - 07:43
(3) посмотри в типовой как сделана форма подбора в реализации товаров и услуг
>>При закрытие 2 формы?
да
>>Как оповестить, как это реализовать?
ОповеститьОВыборе
>>Обработку выбора у формы или у реквизита на форме?
без разницы. что заполнишь владельцем туда и вернется значение выбора
   Стажер_1С
 
5 - 10.08.18 - 07:47
(4) Сейчас сделаю
   Стажер_1С
 
6 - 10.08.18 - 07:56
(4) Смотри,как правильно:
ФормаВыбора.ВладелецФормы = Элементы.основныесредства;
ИЛИ
ФормаВыбора.ВладелецФормы =Объект.ОсновныеСредства;

Чтобы была ясность.У меня в документе,есть табли.часть(ОсновныеСредства), у этой табл части много колонок.Я добавила свою (ШтрихКод). Когда встаешь на строку,в моей колонки :

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

КонецПроцедуры
   Стажер_1С
 
7 - 10.08.18 - 07:59
далее все происходит во 2 форме:

СписокШтрихкоды- динамическийсписок,который собирается из регистрасведений
ШтрихКодыОС - таблица значений на этой же форме,на ней пользователь и отмечает галочки.

&НаСервере
Процедура ПриОткрытииНаСервере()
    СписокШтрихкоды.Параметры.УстановитьЗначениеПараметра("ОсновноеСредство", ОсновныеСредства);
    
    //Подсчет кол-ва записей в динамическом списке

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

КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
    
    ОповеститьОВыборе(ЭтотОбъект.ШтрихКодыОС);
КонецПроцедуры
   Стажер_1С
 
8 - 10.08.18 - 08:00
и вот не вышло,не появились у меня значения
   Стажер_1С
 
9 - 10.08.18 - 14:03
Если кому-то надо:

В первой форме:
Если  ЗначениеЗаполнено(Элементы.основныесредства.ТекущиеДанные.ОсновноеСредство) И  ЗначениеЗаполнено(Элементы.основныесредства.ТекущиеДанные.Количество) Тогда    
        СтруктураПараметров = Новый Структура("ОС,КолВоСписать",Элементы.ОсновныеСредства.ТекущиеДанные.ОсновноеСредство,Элементы.ОсновныеСредства.ТекущиеДанные.Количество);
        
        ДопПараметры = Новый Структура("ТекОС",Элементы.ОсновныеСредства.ТекущиеДанные.ОсновноеСредство); 
        Оповещение = Новый ОписаниеОповещения("ЗапонитьСтрокуШтрихКода",ЭтотОбъект,ДопПараметры);

        Открытьформу("Документ.МойДокумент.Форма.МояФорма2",СтруктураПараметров,Элементы.ОсновныеСредства,,,,Оповещение,РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
    Иначе
        Сообщить("Не выбрано основное средство или количество!");
    КонецЕсли;


&НаКлиенте
Процедура ЗапонитьСтрокуШтрихКода(ШтрихКод,Параметры) Экспорт
    Тут пишем,что хотим делать с данными,которые получили из 2 формы
КонецПроцедуры



2 форма:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ЭтотОбъект.ОсновныеСредства = Параметры.ОС;
    ЭтотОбъект.КолВоОсталось =  Параметры.КолВоСписать;
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
    ОповеститьОВыборе(ЭтотОбъект.ШтрихКодыОС);
КонецПроцедуры
   Cyberhawk
 
10 - 10.08.18 - 14:04
Не комильфо оповещать все формы, если это происходит при закрытии формы. Передавай результат закрытия в форму-владелец
 
 Рекламное место пустует

Список тем форума
Рекламное место пустует  Рекламное место пустует
2 + 2 = 3.9999999999999999999999999999999...
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует