Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: выбор тех или иных элементов списка в зависимости от переключателей
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
sanytch
Доброго времени суток! как начинающий столкнулся с переключателями и ещё и в комбинации со списком. Сам разобраться не могу ни научным методом ни методом научного тыка посему обращаюсь к знающим.
Суть проблемы такова - есть отчет в котором в виде списка с галочками выбираются элементы для формирования отчетности. т.к. элементов всё больше и больше то решили сгруппировать их по некоему признаку и создать пару переключателей, которые бы устанавливали отметки на нужных элементах списка.
т.е. есть переключатели Яблоки и Груши. если выбран Яблоки то в списке должны быть отмечены Элиза, Голд, Арлет, Мелроуз, а если выбран переключатель Груши то Дюшес, Бергамот, Медовая, Детская
Заранее всем спасибо за толчок в нужном направлении)

Ну вот как то получилось так: (ВыбФирма - Идентификатор первого переключателя ВыбФирма_ - имя списка)
Процедура ПометВыб()
    Если ВыбФирма=1 Тогда
        ВыбФирма_.Пометка(1,0);
        ВыбФирма_.Пометка(2,0);
        ВыбФирма_.Пометка(3,1);
        ВыбФирма_.Пометка(4,1);
        ВыбФирма_.Пометка(5,1);
        ВыбФирма_.Пометка(6,1);
        ВыбФирма_.Пометка(7,0);
        ВыбФирма_.Пометка(8,0);
        ВыбФирма_.Пометка(9,0);
        ВыбФирма_.Пометка(10,0);
        ВыбФирма_.Пометка(11,0);
        ВыбФирма_.Пометка(12,0);
        ВыбФирма_.Пометка(13,1);
        ВыбФирма_.Пометка(14,0);
        ВыбФирма_.Пометка(15,0);
        ВыбФирма_.Пометка(16,0);
        ВыбФирма_.Пометка(17,1);
    Иначе
        ВыбФирма_.Пометка(1,1);
        ВыбФирма_.Пометка(2,1);
        ВыбФирма_.Пометка(3,0);
        ВыбФирма_.Пометка(4,0);
        ВыбФирма_.Пометка(5,0);
        ВыбФирма_.Пометка(6,0);
        ВыбФирма_.Пометка(7,1);
        ВыбФирма_.Пометка(8,1);
        ВыбФирма_.Пометка(9,0);
        ВыбФирма_.Пометка(10,0);
        ВыбФирма_.Пометка(11,0);
        ВыбФирма_.Пометка(12,0);
        ВыбФирма_.Пометка(13,0);
        ВыбФирма_.Пометка(14,0);
        ВыбФирма_.Пометка(15,0);
        ВыбФирма_.Пометка(16,0);
        ВыбФирма_.Пометка(17,0);
    КонецЕсли;
КонецПроцедуры

Всё работает но смущает то что в списке только 17 элементов, хотя и это не мало, а если бы их было 117, как тогда реализовать. Предполагаю что где то в Справочнике нужно добавить какой-то идентификатор для каждой группы и отметку ставить по идентификатору а не по номеру в списке...
кто сталкивался, подскажите. Спасибо
Naghual
Пройдите циклом по элементам списка и задавай галочки в зависимости от свойств его значений.


 ! 

Правила, пункт 1
 
Мичман Харитонов
Возможно, есть более простой вариант.
Например, если у Вас в справочнике ТМЦ элементы Элиза, Голд и т.д. находятся в папке "Яблоки", можно использовать метод
ПринадлежитГруппе()
, если принадлежит - устанавливать пометку.
TipsyKID
Не тестировал, но думаю суть уловите :
    СписокПравил1 = "1,2,4,";
    СписокПравил2 = "3,";
    ВсегоЭлементов = 4;
    
    ТекСписокПравил = ?(ВыбФирма=1 ,СписокПравил1,СписокПравил2);
    
    для инд = 1 по ВсегоЭлементов Цикл
        ПодстстрокаПоиска = Строка(инд) + ",";
        ЗначениеПометки = ?(Найти(ТекСписокПравил,ПодстстрокаПоиска) = 0,0,1);//Если находим номер элемента в правиле то истина(1)
        ВыбФирма_.Пометка(инд,ЗначениеПометки);    
    КонецЦикла;
sanytch
Цитата(TipsyKID @ 16.12.15, 18:54) необходимо зарегистрироваться для просмотра ссылки
Не тестировал, но думаю суть уловите :
    СписокПравил1 = "1,2,4,";
    СписокПравил2 = "3,";
    ВсегоЭлементов = 4;
    
    ТекСписокПравил = ?(ВыбФирма=1 ,СписокПравил1,СписокПравил2);
    
    для инд = 1 по ВсегоЭлементов Цикл
        ПодстстрокаПоиска = Строка(инд) + ",";
        ЗначениеПометки = ?(Найти(ТекСписокПравил,ПодстстрокаПоиска) = 0,0,1);//Если находим номер элемента в правиле то истина(1)
        ВыбФирма_.Пометка(инд,ЗначениеПометки);    
    КонецЦикла;

Суть уловил. Спасибо. Попробую Ваш вариант.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.