Имя: Пароль:
1C
1C 7.7
v7: ОбработкаПодбора
0 tixis
 
01.10.13
10:37
На форме есть 2 списка значений  с одинаковым типом "Справочник.Номенклатура", как организовать подбор в разные списки
сейчас написал :
Процедура ОбработкаПодбора(Элемент,кон)
    
    Если Элемент.вид() = "Номенклатура" Тогда
        
        НомерСтроки = 0;
        
        Если ФормаПодбора.ТекущийЭлемент().ЭтоГруппа() = 1 Тогда
            спрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");
            спрНоменклатура.ИспользоватьРодителя(ФормаПодбора.ТекущийЭлемент());
            спрНоменклатура.ВыбратьЭлементы();
            Пока спрНоменклатура.ПолучитьЭлемент() = 1 Цикл
                Если спрНоменклатура.ТекущийЭлемент().ЭтоГруппа() = 0 Тогда
                    Если ВыбНоменклатура.НайтиЗначение(спрНоменклатура.ТекущийЭлемент())=0 Тогда
                        ВыбНоменклатура.ДобавитьЗначение(спрНоменклатура.ТекущийЭлемент());
                    КонецЕсли;
                КонецЕсли;    
            КонецЦикла;    
        Иначе
            Если ВыбНоменклатура.НайтиЗначение(ФормаПодбора.ТекущийЭлемент())=0 Тогда
                ВыбНоменклатура.ДобавитьЗначение(ФормаПодбора.ТекущийЭлемент());
            КонецЕсли;
        КонецЕсли;
        
        // надо, чтобы всегда была текущая строка
        Если ВыбНоменклатура.РазмерСписка() > 0 Тогда
            ВыбНоменклатура.ТекущаяСтрока(ВыбНоменклатура.РазмерСписка());
        КонецЕсли;    
        
    ИначеЕсли Элемент.вид() = "Склады" Тогда
        
        Если ВыбСклад.НайтиЗначение(Элемент) = 0 Тогда
            ВыбСклад.ДобавитьЗначение(Элемент);            
        КонецЕсли;
    
    ИначеЕсли Элемент.вид() = "Контрагенты" Тогда

        Если (СписокЭлементовМФ.НайтиЗначение(Элемент)=0) Тогда
            Представление=""+Элемент;
            Если ТипЗначенияСтр(Элемент)="Справочник" Тогда
                Если СокрЛП(Метаданные.Справочник(Элемент.Вид()).Владелец) <> "Метаданные" Тогда
                    Представление=Представление+" ("+Элемент.Владелец+")";
                КонецЕсли;
            КонецЕсли;    
            СписокЭлементовМФ.ДобавитьЗначение(Элемент,Представление);
            ТаблицаМФ.ФлВкл=2;
        КонецЕсли;  
    КонецЕсли;
    
    
КонецПроцедуры  


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

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

но все заполняется в выбНоменклатура, вот в обработке подбора как мне разграничивать какой список заполнять?
1 ДенисЧ
 
01.10.13
10:39
Я вводил переменную модуля "текущий список подбора" и в обработке в него пихал...
2 Аццкий Чибуражко
 
01.10.13
10:48
в коде используется только один список значения, поэтому и добавляется только в него... если тебе нужно добавить в другой, то нужно его и использовать...

Иначе
            Если ВыбНоменклатура.НайтиЗначение(ФормаПодбора.ТекущийЭлемент())=0 Тогда
//               ВыбНоменклатура.ДобавитьЗначение(ФормаПодбора.ТекущийЭлемент());
                ДругойСписокВыбНоменклатура.ДобавитьЗначение(ФормаПодбора.ТекущийЭлемент());
            КонецЕсли;
        КонецЕсли;
3 tixis
 
01.10.13
11:32
(1) так и сделал спасибо