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

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Чел 232 22.09.23 11:55 Сейчас в теме
Можно добавить кнопку в шапку формы со значком галочки. А в дин списке только выводить значение. Да, в списке не будет "кнопки"-галочки. Но "не открывать" и "не искать" будет выполнено, а код останется простым и стабильным.
Оставьте свое сообщение
Вакансии
Программист
Санкт-Петербург
зарплата от 180 000 руб. до 240 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 150 000 руб. до 250 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Программист 1С
Екатеринбург
зарплата от 130 000 руб. до 170 000 руб.
Полный день

Программист 1C
Санкт-Петербург
зарплата от 140 000 руб. до 200 000 руб.
Полный день