Добавление галочек в динамическом списке

1. SkAt91 22.09.23 11:22 Сейчас в теме
В данной статье хотелось бы собрать способы размещения галочек в динамических списках. В повседневной практике неоднократно сталкиваюсь с такими пожеланиями заказчиков, не смотря на некую абсурдность. Основной посыл таких доработок - нежелание клиента переходить в карточку, например, элемента справочника, искать и устанавливать нужную галочку. Хочется ей управлять прямо из динамического списка.
1. Первый метод и действительно рабочий (проверено) взят из статьи https://infostart.ru/1c/articles/1273816/ . Огромное спасибо за исходную идею. Общий посыл здесь такой: мы заменяем отображение типа Булево на картинку (причем коллекцию двух картинок с выбранной/не выбранной галочкой). Получаемое значение галочки в запросе динамического списка представляем Числом (0 и 1), которые будут соответствовать индексу в коллекции картинок. Свойство "Гиперссылка ячейки" устанавливаем в Истина. Механизм срабатывания нажатия на галочку привязан к событию "Выбор" у таблицы динамического списка.
Данный метод рабочий только в случае последних режимов совместимости. По крайней мере успешно механизм работает на 8.3.17. Возможно, есть еще и другие факторы, но мне удалось выявить закономерность только в этой части. Поэтому у некоторых он не срабатывал или срабатывал лишь по двойному нажатию. В режиме 8.3.8 как раз работает только по двойному нажатию. Поэтому пришлось разрабатывать собственный механизм, описанный в пункте ниже.
2. Создание элементов на форме аналогично статье в пункте 1. Создаем динамический список, определяемся с нужной галочкой. Выводим столбцы-элементы на форму. У элемента-галочки устанавливаем свойства: а) Вид - Поле картинки; б) КартинкаЗначений - указываем нужную коллекцию картинок-галочек. Свойство "ГиперссылкаЯчейки" устанавливать не нужно.
Далее добавляем обработчик события у элемента списка "ПриАктивацииПоля". В данном обработчике будет механизм, который должен выполняться при нашем нажатии галочки. Изначальная проблема данного способа была в том, что первое нажатие на галочку срабатывает, а все последующие нет. Так как активизация поля остается как раз на галочке и событие заново не отрабатывает. Чтобы механизм работал корректно при каждом нажатии, достаточно в событии "ПриАктивацииПоля" после всех нужных действий переместить активацию на любое другое поле. И тогда каждое последующее нажатие будет вновь и вновь вызывать срабатываение события "ПриАктивацииПоля". А там каждый раз будет отрабатывать наш механизм. Ну, и не забываем после изменения объекта обновлять список / оповещать об изменений, чтобы значение галочки тут же менялось (в случае, если мы меняем галочкой реквизит текущего объекта).
Для второго пункта прикрепляю обработку с комментариями в коде. Проверена на УТ 11.3.4.103 и КА 2.5.13.98.

P.S. этот пост для меня первый, сохраняю по большей части для себя - чтобы не потерять. Но, думаю, кому-то пригодится. Поэтому без критики за оформление.
Прикрепленные файлы:
ДинамическийСписокСГалочкой.epf
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Дмитрий74Чел 237 22.09.23 11:55 Сейчас в теме
Можно добавить кнопку в шапку формы со значком галочки. А в дин списке только выводить значение. Да, в списке не будет "кнопки"-галочки. Но "не открывать" и "не искать" будет выполнено, а код останется простым и стабильным.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот