Имя: Пароль:
1C
1С v8
Как передать из произвольной формы выбора НоменклатуруСсылку и Количество?
0 altaykniga
 
03.06.16
15:30
Доброй пятницы, уважаемые специалисты! Подскажите незнающим, пожалуйста.

Из ТЧ Документа Продукция открываю произвольную форму выбора, основная таблица не заполнена, произвольный запрос вытягивает данные для отображения в ФормеВыбора из ТЧ документаОснования. При выборе нужной строки формаВыбора закрывается, но в форму документа, откуда открывал формуВыбора, передать могу либо НоменклатураСсылка, либо Количество. А мне нужно передать и то, и другое.
Передавать через структуру тоже не получается, вообще тогда ничего не передается
вот выдержки из модулей форм:

1.ФормаДокумента (откуда открываем форму выбора)

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

2. ФормаВыбораДетали


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Список.Параметры.УстановитьЗначениеПараметра("ЗаказПокупателя", Параметры.Документ.ДокументОснование);
    Список.Параметры.УстановитьЗначениеПараметра("СписокДеталейЗаказаНаПроизводство", Параметры.СписокДеталейЗаказаНаПроизводство);    
    ЭтаФорма.ЗакрыватьПриВыборе = Истина;
    
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
    ОповеститьОВыборе(ВыбранноеЗначение);
КонецПроцедуры

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ДанныеВыбора = Новый Структура;
    ДанныеВыбора.Вставить("Номенклатура", Элемент.ТекущиеДанные.Номенклатура);
    ДанныеВыбора.Вставить("ИД_Детали", Элемент.ТекущиеДанные.ИД_Детали);
    ОповеститьОВыборе(ДанныеВыбора);
КонецПроцедуры
1 Timon1405
 
03.06.16
16:04
посмотреть как сделан подбор в типовых не предлагать?
2 takefive
 
03.06.16
16:18
приемник
Результат = ОткрытьФормуМодально()
источник
ЭтаФорма.Закрыть(Результат)
3 altaykniga
 
03.06.16
16:29
(2) открытьФормуМодально() в управляемом приложении?
4 bootini
 
03.06.16
17:00
&НаКлиенте
Процедура ПродукцияНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
+ Code
    
    СтандартнаяОбработка = Ложь;
    ПараметрыВыбора = Новый Структура("Документ", Объект.Ссылка);
    //еще нам нужно передать массив!!!(не списокЗначений) ИД_Деталей

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

&НаКлиенте
Процедура ПолучитьДетальКоличество (Результат, ДополнительныеПараметры) Экспорт
Если ТипЗнч(Результат) = Тип("Структура") Тогда
Для каждого КлючЗначение Из Результат Цикл
Если КлючЗначение.Ключ = "Номенклатура" Тогда
МояНоменклатура = КлючЗначение.Значение;

КонецЕсли;
Если КлючЗначение.Ключ = "Количество" Тогда
МояКоличество = КлючЗначение.Значение;


КонецЕсли;
КонецЕсли;

КонецПроцедуры
5 bootini
 
03.06.16
17:06
(4) Эт если без модальности.
6 Nuobu
 
03.06.16
17:07
(3) В управляемом есть модальность, если включить.
7 EvgeniuXP
 
03.06.16
17:47
(6) есть - но это некошерно :)
8 altaykniga
 
06.06.16
08:49
(4) после выполнения процедуры ПолучитьДетальКоличество()
вызывается Процедура ПродукцияНоменклатураПриИзменении(Элемент), но выбранная номенклатура сюда не передалась!

Элементы.Продукция.ТекущиеДанные.Количество - передалось значение из формыВыбораДетали, а
Элементы.Продукция.ТекущиеДанные.Номенклатура - пустая ссылка! Почему?
Независимо от того, куда вы едете — это в гору и против ветра!