Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> выбор тех или иных элементов списка в зависимости от переключателей          
sanytch Подменю пользователя
сообщение 16.12.15, 11:40
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

Доброго времени суток! как начинающий столкнулся с переключателями и ещё и в комбинации со списком. Сам разобраться не могу ни научным методом ни методом научного тыка посему обращаюсь к знающим.
Суть проблемы такова - есть отчет в котором в виде списка с галочками выбираются элементы для формирования отчетности. т.к. элементов всё больше и больше то решили сгруппировать их по некоему признаку и создать пару переключателей, которые бы устанавливали отметки на нужных элементах списка.
т.е. есть переключатели Яблоки и Груши. если выбран Яблоки то в списке должны быть отмечены Элиза, Голд, Арлет, Мелроуз, а если выбран переключатель Груши то Дюшес, Бергамот, Медовая, Детская
Заранее всем спасибо за толчок в нужном направлении)

Ну вот как то получилось так: (ВыбФирма - Идентификатор первого переключателя ВыбФирма_ - имя списка)
Процедура ПометВыб()
    Если ВыбФирма=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 Подменю пользователя
сообщение 16.12.15, 14:45
Сообщение #2

Завсегдатай
****
Группа: Пользователи
Сообщений: 102
Из: Днепропетровск
Спасибо сказали: 21 раз
Рейтинг: 0

Пройдите циклом по элементам списка и задавай галочки в зависимости от свойств его значений.


 ! 

Правила, пункт 1
 


Сообщение отредактировал Vofka - 16.12.15, 14:54


Signature
Я желаю всем Счастья!

Мичман Харитонов Подменю пользователя
сообщение 16.12.15, 16:51
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 164
Из: м. Кам'янське
Спасибо сказали: 26 раз
Рейтинг: 0

Возможно, есть более простой вариант.
Например, если у Вас в справочнике ТМЦ элементы Элиза, Голд и т.д. находятся в папке "Яблоки", можно использовать метод
ПринадлежитГруппе()
, если принадлежит - устанавливать пометку.

TipsyKID Подменю пользователя
сообщение 16.12.15, 18:54
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

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


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

sanytch Подменю пользователя
сообщение 16.12.15, 21:39
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

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

Суть уловил. Спасибо. Попробую Ваш вариант.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 01.05.24, 2:46
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!