Имя: Пароль:
1C
1С v8
8.2 Открыть модально форму списка с отбором
0 MaxFoxxy
 
31.01.12
14:13
Нужно по артикулу найти все подходящие элементы справочника Номенклатура и показать их списком для выбора. Выбранное значение записать.
Делаю так:

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

   КонецЕсли;
КонецПроцедуры


Когда пишу ОткрытьМодально - открывается тупо сипсок всех элементов справочника. Если просто Открыть - Открывается нужный мне отбор (Но мне нужно вернуть результат выбор). где не прав? Заранее спасибо
1 MaxFoxxy
 
31.01.12
14:29
И вообще не понятно почему не работает так :

СписокЭлементов = Общий.СписокНоменклатурыПоАртикулу(Текст);
   ФормаВыбора = ПолучитьФорму("Справочник.Номенклатура.ФормаСписка",Новый Структура("Ссылка",СписокЭлементов),Элемент);
   ФормаВыбора.Элементы.Список.Отображение = ОтображениеТаблицы.Список;
   ФормаВыбора.ОткрытьМодально();

Отбора не устанавливается...
2 арах
 
31.01.12
14:35
пример из типовой

ПараметрыФормы = Новый Структура();
   ПараметрыФормы.Вставить("ОткрыватьПриПервомОбращении", ОткрыватьФормуВыбораПриПервомОбращении);
   ПараметрыФормы.Вставить("ИдентификаторКлиента", ИдентификаторКлиента);
   ФормаВыбораРМ = ПолучитьФорму("Справочник.ПодключаемоеОборудование.Форма.ФормаВыбораРабочегоМеста", ПараметрыФормы);
   Ответ = ФормаВыбораРМ.ОткрытьМодально();
3 MaxFoxxy
 
31.01.12
14:38
(2)

ПараметрыФормы = Новый Структура();
   ПараметрыФормы.Вставить("Ссылка",СписокЭлементов);
   ФормаВыбораРМ = ПолучитьФорму("Справочник.Номенклатура.ФормаСписка", ПараметрыФормы);
   ФормаВыбораРМ.Элементы.Список.Отображение = ОтображениеТаблицы.Список;
   Ответ = ФормаВыбораРМ.ОткрытьМодально();

отбор в открытой форме не устанавливается(
4 DrShad
 
31.01.12
14:38
а почему форму списка, а не форму выбора?
5 News
 
31.01.12
14:41
(4)
да, если открывать форму выбора отбор должен отработать
6 acsent
 
31.01.12
14:42
не факт что по списку устанавливается
7 MaxFoxxy
 
31.01.12
14:46
(4) Нужно открыть форму списка и выбрать нужный элемент
8 DrShad
 
31.01.12
14:49
(7) накуя
9 MaxFoxxy
 
31.01.12
14:55
В документе есть ТЧ, в ТЧ поле Номенклатура. Хочу чтобы я вводил не код 1С а артикул(реквизит спр Номенкалтура) и по окончанию ввода выбирал не из всего списка а из списка с установленным отбором по этому полю
10 News
 
31.01.12
15:05
НовыйМассив = Новый Массив();
Для каждого ЭлСписка Из СписокЭлементов Цикл        
НовыйМассив.Добавить(Новый ПараметрВыбора("Отбор.Ссылка",ЭлСписка.Значение));
КонецЦикла;
НовыеПараметры = Новый ФиксированныйМассив(НовыйМассив);
Элемент.ПараметрыВыбора = НовыеПараметры;
11 News
 
31.01.12
15:24
(9) лучше использовать обработку "Автоподбор" для номенклатуры
СтандартнаяОбработка = Ложь;
ДанныеВыбора = СписокЭлементов;
12 MaxFoxxy
 
31.01.12
18:21
(11) спасибо добрый человек!!! открыл мне глаза! Спасибо!