Имя: Пароль:
1C
1С v8
Флажок в табличном поле - проблема с отбором
,
0 бегинер
 
09.12.15
13:45
озадачился "флажком" в динамическом списке - форма списка справочника.
v8: Как сделать флажок в Табличном поле?

Перем ОтмеченныеТовары;//список значений

/////////////////////////////////////////////////////////////////////////

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

Процедура тпНоменклатураПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ОформлениеСтроки.Ячейки.Отметка.ОтображатьФлажок = Истина;
Если ОтмеченныеТовары.НайтиПоЗначению(ДанныеСтроки.Ссылка) = Неопределено Тогда
    ОформлениеСтроки.Ячейки.Отметка.Флажок = Ложь;
Иначе
    ОформлениеСтроки.Ячейки.Отметка.Флажок = Истина;
КонецЕсли;
КонецПроцедуры
/////////////////////////////////////////////////////////////////////////

Процедура тпНоменклатураПоказатьОтмеченные(Элемент)
    Если ОтмеченныеТовары.Количество()=0 Тогда
       Сообщить("Не отмечен ни один товар!");
    Иначе
       Сообщить("Отмечены следующие товары:");
       Для Каждого Товар Из ОтмеченныеТовары Цикл
          Сообщить(Товар.Значение.Наименование);
       КонецЦикла;
    КонецЕсли;
КонецПроцедуры
/////////////////////////////////////////////////////////////////////////

ОтмеченныеТовары = Новый СписокЗначений;


код работает вроде бы нормально, но стоит например применить отбор:
например есть список без отбора, все флажки выделены
делаю отбор нажатием кнопки "отбор по значению в тек колонке"
в результате часть отмеченных флажков скрывается, но они остаются в "спискезначений" как отмеченные.

подскажите как это побороть? чтоб учитывались отборы и скрытые элементы не попадали - удалялись из списка_значений
1 Zmich
 
09.12.15
13:57
2 бегинер
 
09.12.15
14:07
(1) спасибо покурю

на край если что оставлю: элементыформы.СправочникСписок.ВыделенныеСтроки
только с CTRL не совсем удобно выбирать....
3 бегинер
 
10.12.15
14:23
(1) еще раз спасибо, помогло.

Процедура ПриОткрытии()
    ПодключитьОбработчикИзмененияДанных("СправочникСписок.Отбор", "ОбработатьИзменениеОтбора", Истина);
КонецПроцедуры

Процедура ОбработатьИзменениеОтбора(Элемент)
    УдаляемыеТовары = Новый СписокЗначений;    
    Если ОтмеченныеТовары.Количество()<>0 Тогда
       Для Каждого Товар Из ОтмеченныеТовары Цикл
            элементыформы.СправочникСписок.ТекущаяСтрока=Товар.Значение.Ссылка;
            если элементыформы.СправочникСписок.ТекущаяСтрока<>Товар.Значение.Ссылка тогда;
                УдаляемыеТовары.Добавить(Товар.Значение.Ссылка);;
            конецесли;        
        КонецЦикла;
        Если УдаляемыеТовары.Количество()<>0 Тогда
            для каждого Товар из УдаляемыеТовары Цикл
                ОтмеченныеТовары.Удалить(ОтмеченныеТовары.НайтиПоЗначению(Товар.Значение.Ссылка));
            КонецЦикла;    
        конецесли;
    КонецЕсли;    
КонецПроцедуры