Вы разрабатываете некую форму, на ней у вас есть табличное поле привязанное к списку какого-либо справочника. И вы хотите реализовать механизм отметки нужных строк галочками.
Делается очень просто! Для этого вы добавляете новую колонку, через контекстное меню.
Называете ее "Отметка". Выбираете элемент управления Флажок.
Затем создаете реквизит ОтмеченныеСтроки с типом СписокЗначений, в нем будем хранить какие строки отметили.
У табличного поля задействуем два события, первое ПриВыводеСтроки, сробатывает всякий раз, когда система выводит строку табличного поля и ПриИзмененииФлажка, когда пользователь изменяет состояние флажка в колонках табличного поля.
В этих процедурах нужно написать следующее
Процедура ТабличноеПоле1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ОформлениеСтроки.Ячейки.Отметка.ОтображатьФлажок = Истина;
Если ОтмеченныеСтроки.НайтиПоЗначению(ДанныеСтроки.Ссылка) = Неопределено Тогда
ОформлениеСтроки.Ячейки.Отметка.Флажок = Ложь;
Иначе
ОформлениеСтроки.Ячейки.Отметка.Флажок = Истина;
КонецЕсли;
КонецПроцедуры
Здесь мы отображаем флажок в ячейке и выводим его значение согласно списку значений.
Процедура ТабличноеПоле2ПриИзмененииФлажка(Элемент, Колонка)
Если Колонка.Имя = "Отметка" Тогда
НайденныйЭлемент = ОтмеченныеСтроки.НайтиПоЗначению(Элемент.ТекущаяСтрока);
Если НайденныйЭлемент = Неопределено Тогда
ОтмеченныеПользователи.Добавить(Элемент.ТекущаяСтрока);
Иначе
ОтмеченныеПользователи.Удалить(НайденныйЭлемент);
КонецЕсли;
КонецЕсли; КонецПроцедуры
Обрабатываем только колонку Отметка. Если в списке значений уже есть строка, по которой кликнули, то ее удаляем, это означает снятие галочки. И наоборот, если текущей строки нет - добавляем.
В дополнение было бы весьма удобно реализовать механизмы отметить и снять все галочки! Располагаете на форме командную панель, на ней две кнопки. По нажатию на одной выполняете процедуру:
Процедура КоманднаяПанельДействиеОтметитьВсе(Кнопка)
Выборка = Справочники.Пользователи.Выбрать();
Пока Выборка.Следующий() цикл
ОтмеченныеСтроки.Добавить(Выборка.Ссылка);
КонецЦикла;
ЭтаФорма.Обновить();
КонецПроцедуры
Здесь в цикле перебираются все записи (в данном случае это справочник пользователи, поэтому перебираем выборку) и добавляются с список значений ОтмеченныеСтроки. После выполняется перерисовка формы.
Для снятия всех галочек достаточно выполнить Очистку списка значений ОтмеченныеСтроки.
Процедура КоманднаяПанельДействиеСнятьВсе(Кнопка)В итоге у вас получится вот такая табличная часть с дополнительной колонкой Отметка, где выбираются нужные строки, они будут попадать в список значений ОтмеченныеСтроки. И в дальнейшем, перебирая ОтмеченныеСтроки сможете производить с ними какие либо действия! Над таблицей есть две кнопки, установить все галочки и снять!
ОтмеченныеПользователи.Очистить();
ЭтаФорма.Обновить();
КонецПроцедуры
Успехов, терпения и удачных решений!
Комментариев нет:
Отправить комментарий