Имя: Пароль:
1C
1С v8
Выбора в управляемом режиме
,
0 Artificial
 
13.07.16
10:35
Самопальная конфигурация. С УФ практически не знаком. Создал команду "ПодборПоМеню", текст такой:
&НаКлиенте
Процедура ПодборПоМеню(Команда)
    СписокНоменклатурыДляОтбора = ПодборПоМенюНаСервере();
    ОткрытиеФормыВыбора(СписокНоменклатурыДляОтбора);
КонецПроцедуры

&НаСервере
Функция ПодборПоМенюНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.ВидНоменклатуры = &ВидНоменклатуры
        |    И Номенклатура.ТипНоменклатуры = &ТипНоменклатуры";

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

    Результат = Запрос.Выполнить().Выбрать();
        
    СписокНоменклатурыДляОтбора = Новый Массив;
    
    Пока Результат.Следующий() Цикл
        
        СписокНоменклатурыДляОтбора.Добавить(Результат.Ссылка);
        
    КонецЦикла;    
    
    Возврат СписокНоменклатурыДляОтбора;
    
КонецФункции

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

Как сделать, чтоб выбранная номенклатура добавлялась в ТЧ? Спасибо.
1 Господин ПЖ
 
13.07.16
10:37
почитать букварь по уф. пожалуйста
2 Artificial
 
13.07.16
10:37
(1) Нет времени.
3 jsmith
 
13.07.16
10:38
4 jsmith
 
13.07.16
10:39
5 Artificial
 
13.07.16
10:52
(4) Спасибо. Но ничего пока не помогло. Открывает форму с отбором, выбираю значение и глухо.
6 aleks_default
 
13.07.16
10:54
ОткрытьФорму ничего не возвращает. Используй ПолучитьФорму(). Хоть это и не кошерно, но зато дешево и сердито.
7 Artificial
 
13.07.16
10:57
(6)
ФормаПодбора = ПолучитьФорму("Справочник.Номенклатура.ФормаВыбора", , ЭтаФорма);
    
    Бла-бла-бла, отбор, бла-бла
    
    ФормаПодбора.Открыть();

Как-то так?
8 DrZombi
 
гуру
13.07.16
10:59
(7) ты ужо все знаешь, давай за конфигуратор :)
9 novichok79
 
13.07.16
10:59
(0) открой типовую, и посмотри как в ней делается подбор в табличную часть документа. это будет быстрее, чем читать "букварь по УФ"
10 Artificial
 
13.07.16
11:07
Насколько я понимаю, процедура ОбработкаВыбора вызывается в случае выбора значения в подчинённой форме? Почему тогда не вызывается?
11 aleks_default
 
13.07.16
11:13
В качестве владельца формы ты указываешь ЭтаФорма, а обработкувыбора поставил у таб. части наверное.
12 DrZombi
 
гуру
13.07.16
11:21
(10) Смотри в (11), думай :)
13 hhhh
 
13.07.16
11:37
(10) в подчиненной фигачишь событие ОповеститьОВыборе, в основной форме ОбработкаВыбора