Использование флажков в динамических списках

18.08.20

Разработка - Механизмы платформы 1С

В статье расскажу как в динамических списках можно использовать поле флажка для отметки строк. Используемый прием можно использовать не только для галочек, но и для любого поля ввода. Несмотря на то, что редактирование динамических списков напрямую невозможно, есть способ обойти платформу. Подробности в публикации.

Итак, исходные данные:

Для примера нам понадобится любая конфигурация (хоть созданная с нуля) со справочником "Номенклатура". Остальное не важно.

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

Создаем внешнюю обработку. Размещаем на ней реквизит с типом "Динамический список" и устанавливаем галочку "Произвольный запрос"

Нажимаем на "Открыть" рядом с настройкой списка и устанавливаем запрос. Запрос выглядит следующим образом:

ВЫБРАТЬ
	Номенклатура.Ссылка,
	Номенклатура.Ссылка В (&ВыбраннаяНоменклатура) КАК Пометка
ИЗ
	Справочник.Номенклатура КАК Номенклатура

Добавляем на форму список и его реквизиты "Пометка", "Ссылка"

В поле "Пометка" устанавливаем следующие свойства элемента:

  • Вид - Поле картинки
  • Положение заголовка - Нет
  • Картинка значений - Наша картинка с галочками
  • Гиперссылка ячейки - Да

Для элемента формы "Список" установите событие "Выбор" с названием процедуры "СписокВыбор".

Скопируйте код ниже в модуль формы:

&НаКлиенте
Перем ВыбраннаяНоменклатура; //Массив, хранящий отмеченную галочками номенклатуру для отображения в списке

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	//Инициализация массива
	ВыбраннаяНоменклатура = Новый Массив;
	
	//Без параметра, даже пустого, список выдаст ошибку и будет прав 
	Список.Параметры.УстановитьЗначениеПараметра("ВыбраннаяНоменклатура", ВыбраннаяНоменклатура);
	
КонецПроцедуры

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

&НаКлиенте
Процедура СнятьПометку(Номенклатура)
	Индекс = ВыбраннаяНоменклатура.Найти(Номенклатура);
	Если Индекс >= 0 Тогда
		ВыбраннаяНоменклатура.Удалить(Индекс);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПоставитьПометку(Номенклатура)
	Индекс = ВыбраннаяНоменклатура.Найти(Номенклатура);
	Если Индекс = Неопределено Тогда
		ВыбраннаяНоменклатура.Добавить(Номенклатура);
	КонецЕсли;
КонецПроцедуры

Поздравляю, теперь в вашем динамическом списке есть галочки!

А теперь как всё это работает.

Особенностью динамических списков является невозможность ввода данных непосредственно в список. Когда-то раньше такая возможность была, но нас ее лишили по техническим причинам. Поэтому вся информация, которая отображается в динамическом списке не может редактироваться и получается запросом.

 
 Не совсем так

А поскольку мы не можем менять данные в самом списке, значит они должны отображаться уже с учетом наших изменений. Остается передавать их в запрос через параметры. Делается это через переменную ВыбраннаяНоменклатура. Информацию к отображению можно передавать любым желаемым способом и в любой желаемой форме, главное чтобы запрос динамического списка его принял.

Еще один важный момент, без которого ничего не получится, это картинки флажков. Если вывести в списке обычное булево поле, то возникает ряд трудностей. Мало того, что галочки отрисовываются без чекбоксов, так еще и нажатие не срабатывает. Двойной клик по полю неудобен, а событие ПриАктивацииПоля не срабатывает если поле уже активировано. Для их решения, собственно, и сделаны манипуляции с полем картинки. На него навешивается гиперссылка и выбор будет срабатывать по однократному нажатию. Более того, у нас даже меняется курсор, показывая что чекбокс отзывается на нажатие.

Что имеем в сухом остатке:

  • При нажатии на поле картинки срабатывает событие.
  • В этом событии дополняется (или наоборот) массив ВыбраннаяНоменклатура.
  • ВыбраннаяНоменклатура передается в динамический спискок
  • Динамический список в зависимости от параметра отображает текущее состояние чекбоксов.
  • Теперь снова можно нажимать на поле картинки, цикл замкнулся...

К слову, тот же прием вы можете использовать для ввода полей другого типа. Например прописать в событии "Выбор" для поля с датой процедуру ПоказатьВводДаты(), и вот уже пользователь может вводить дату в динамический список не меняя самих данных, по которым строится запрос. В некоторых случаях может быть удобно сделать реквизит с типом ТаблицаЗначений и хранить в нем сколько угодно временных данных, влияющих на динамический список.

Код разрабатывался для Управляемых форм на платформе 8.3, конфигурация значения не имеет.

Вступайте в нашу телеграмм-группу Инфостарт

Пример галочка флажок динамический список ввод пометка выбор данные запрос

См. также

Механизмы платформы 1С Программист Бесплатно (free)

Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?

16.07.2025    11135    TitanLuchs    86    

96

Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С v8.3 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    9213    bayselonarrend    126    

63

Механизмы платформы 1С Программист 1С v8.3 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    14076    dsdred    73    

120

Механизмы платформы 1С Программист Стажер 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    17008    bayselonarrend    21    

167

Механизмы платформы 1С Программист Стажер 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    9702    dsdred    18    

83

Механизмы платформы 1С Программист Стажер 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    36423    YA_418728146    35    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7292 05.08.20 10:06 Сейчас в теме
Было бы логично добавить в эту же методику диапазонную (сразу для диапазона строк) установку/снятие пометок.
3. nekit_rdx 230 05.08.20 10:34 Сейчас в теме
(1) Это уже каждый решит для себя, что ему для конкретной задачи нужно :)
Реализовать установку/снятие пометок для нескольких строк сможет любой программист, а вот в статье подобные усложнения отвлекали бы от главного.
d4rkmesa; awpdnk; marku; Alexion; KRJ; konyavka; Daruma; +7 Ответить
4. seregin_79 05.08.20 11:09 Сейчас в теме
(3) Тут то и начинаются самые "вкусности", например, установки отборов, т.е. ситуации типа:
1. Пользователь отметил, скажем пять строк.
2. Пользователь установил отбор, скрывший две или три отмеченных строки.
3. Т.к. такой механизм делается ради какой-либо последующей обработки, то возникает вопрос: Сколько, с точки зрения пользователя, отмечено строк и сколько строк будет обработано?

Сразу скажу, что пару-тройку лет назад находил тут подобную статью и пыталься решить разнообразные вопросы, возникающие вследствии возможностей поведения динамического списка, но вопросов оказалось больше чем времени на их решение.

Механизм любопытный, но использовать стоит с оглядкой на возможные последствия.
GreenLab; ZDmitry83; ixijixi; Dem1urg; +4 Ответить
5. nekit_rdx 230 05.08.20 11:42 Сейчас в теме
(4) Если подходить с точки зрения пользователя, то ему всё равно, таблица это или динамический список. Да, немного удобнее работать, отборы всякие можно ставить, но технические детали его не интересуют.

Представим что пользователь работает с табличной частью в каком-нибудь заказе. Он отмечает нужные строки галочками, прокручивает список вниз, что должно происходить с пометками которые уползли вверх? Существует ли Луна, когда на нее никто не смотрит?)

То же самое с отборами. В обычной таблице значений, в которой флажки доступны по умолчанию и активно используются, можно выполнить поиск по колонке. В таблице останется одна строка, а остальные будут скрыты. Галочки при этом останутся. И если в таблице значений пользователь вынужден помнить или догадываться о том что он какой-то поиск использовал, то динамическому списку можно установить свойство "Группа пользовательских настроек", отобразить ее на форме, и пользователь всегда будет видеть что список не полный.

Но я при этом абсолютно согласен, что последствия стоит учитывать. Если последствия необратимы, то наверняка стоит предупреждать об этом, желательно со списком изменяемых объектов. А если что-то очень важное, то может стоит подумать над созданием мастера с несколькими шагами.
11. qwinter 684 06.08.20 15:37 Сейчас в теме
(4) так ничего не мешает получать ссылки, что с отборами, что без отборов. А какой вариант нужен надо с пользователями согласовывать.
13. seregin_79 06.08.20 16:51 Сейчас в теме
(11) Тут вопрос в том, что получение ссылок и расстановка отметок может быть проведена далеко не с теми отборами, с которыми пользователь будет проверять список перед тем как запустить обработку выбранных объектов и, соответственно будет видеть далеко не то же самое, что уйдет в обработку, а после этого расскажет разработчику все, что о нем думает, т.к. "программа мне показала вот это, а сделала вот то".
14. qwinter 684 06.08.20 19:36 Сейчас в теме
(13) В смысле "может быть проведена далеко не с теми отборами"? А если кто то вместо плюса минус поставит, то тоже будете рассказывать, что таких алгоритмов не надо писать? Я совершенно не понимаю какое это отношение имеет к обсуждаемой статье, тем более, что метод получение настроек списка один единственный, и ничего другого кроме настроек списка со всеми отборами из него не получишь.
16. seregin_79 07.08.20 08:59 Сейчас в теме
(14)
1.
то тоже будете рассказывать, что таких алгоритмов не надо писать?

Я совершенно не понимаю какое это отношение имеет к обсуждаемой статье

Вы внимательно читали написанное?

Если пользователь в процессе установки отметок или после установки отметок изменит отборы списка, то "картинка" изменится, соответственно, нужно при реализации механизма это учитывать. Наиболее простые варинты: при изменении отборов сбрасывать список отмеченных элементов или запрещать отборы.
18. qwinter 684 07.08.20 10:30 Сейчас в теме
(16) Я внимательно читал написаное.
Наиболее простые варинты: при изменении отборов сбрасывать список отмеченных элементов или запрещать отборы.
А вы в курсе существования функции ПолучитьИсполняемыеНастройкиКомпоновкиДанных() и программного вывода СКД в таблицу? Дополнительно создаем СКД с тем же запросом что и в списке, грузим туда отборы списка и отбор по помеченным, и получаем реальные видимые отмеченные элементы. Код элементарный.
19. seregin_79 07.08.20 10:40 Сейчас в теме
(18) А как существование этой функции опровергает мое утверждение, что это нужно учитывать при разработке?
2. frkbvfnjh 814 05.08.20 10:20 Сейчас в теме
Гениальное решение! Спасибо, что по делились. Я не знал что для ячейки можно выставить признак гиперссылки.
nekit_rdx; +1 Ответить
6. simonovich 05.08.20 13:00 Сейчас в теме
Решение крайне простое, но помогает решить многие задачи.
Большое спасибо за идею.
7. Andry.Boris 59 06.08.20 08:39 Сейчас в теме
Проверил, все отлично работает! Автор молодец!
Большое спасибо за идею.
8. XSlava 158 06.08.20 11:45 Сейчас в теме
Вопрос: в каких прикладных задачах необходимы "галочки" при использовании динамического списка?
9. nekit_rdx 230 06.08.20 11:59 Сейчас в теме
(8) Просто примеры:
1) Различные АРМ закупок, продаж, складские и т.д. Отмечаем галочками заказы, нажимаем кнопку "Можно отгружать", заказы пошли другому отделу
2) Форма выбора из справочника. Можно будет выбирать несколько элементов. Может заменить типовую обработку подбора в документ во всяких УТ, КА, ЕРП.
3) Любая внешняя обработка объектов, в которой перед обработкой может потребоваться их анализ. В динамическом списке, в отличии от обычной таблицы, пользователь может выводить новые колонки, отбирать по ним, сортировать и т.д. В общем, если у вас таблица больше, скажем, 100 элементов в ней уже можно запутаться, особенно если разработчик догадался вывести только наименование.
10. XSlava 158 06.08.20 15:29 Сейчас в теме
(9)По моему мнению у динамического списка для этого есть свойство "ВыделенныеСтроки". У выделенных строк есть выделение цветом на уровне платформы.
12. Dem1urg 397 06.08.20 16:41 Сейчас в теме
(10) Да есть, но с его помощью можно только выделить строки, и больше ничего. А описанный в статье прием позволяет реализовать любую логику. И любое количество состояний объекта, а не только "выделен" или "не выделен".
nekit_rdx; +1 Ответить
15. XSlava 158 07.08.20 08:05 Сейчас в теме
(12)Не совсем понятно "реализовать любую логику", выделение строк позволяет реализовать все то что было перечислено ранее. Назначение флага аналогично выделению строк и указывает на "выделен" или "не выделен".
17. пользователь 07.08.20 09:47
Сообщение было скрыто модератором.
...
20. EvgeniuXP 07.08.20 19:35 Сейчас в теме
(15) случайно щелкнул в другую строку и выбор пропал - начинай всё заново :)
WarAn; pr_woland; mrsmrv; +3 Ответить
21. XSlava 158 10.08.20 08:01 Сейчас в теме
(20)Это исключительно вопрос навыка работы с программой. Зато единообразно, во всех конфигурациях, флаг ко всем спискам не приделаешь.
22. SlavaKron 10.08.20 08:23 Сейчас в теме
Наверно, подобие альтернативного выделения строк можно сделать и через условное оформление и через упомянутое событие ПриПолученииДанных, но решение автора мне нравится больше. Оно простое и понятное. Следовало бы указать минус подобного решения - изменение текста запроса динамического списка "небезопасно" при программной реализации.
Замечания по поводу неопределенности при использовании отборов, по-моему, не обоснованы - поведение точно такое же как с отборами в таблице формы.
23. Бубузяка 62 10.08.20 18:04 Сейчас в теме
Хорошее решение, но мне не понравилось перечитывание данных списка.

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

&НаСервере
Процедура УстановитьСписокВыбранныхДокументов()
	
	ЭлементУсловногоОформления = Неопределено;
	Для каждого ЭлементОформления Из УсловноеОформление.Элементы Цикл
		Если ЭлементОформления.Представление = "Выделение подобранных" Тогда
			ЭлементОформления.Отбор.Элементы[0].ПравоеЗначение = Карзина;
		КонецЕсли;
		Если ЭлементОформления.Представление = "Выделение подобранных1" Тогда
			ЭлементОформления.Отбор.Элементы[0].ПравоеЗначение = Карзина;
		КонецЕсли; 
	КонецЦикла; 
	
КонецПроцедуры

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если Поле = Элементы.СписокПоле1 ИЛИ Поле = Элементы.СписокПоле2 Тогда
		Ссылка = Элементы.Список.ТекущаяСтрока;
		СтандартнаяОбработка = Ложь;
		Запись = Карзина.НайтиПоЗначению(Ссылка);
		Если Запись = Неопределено Тогда
			Карзина.Добавить(Ссылка);
		Иначе
			Карзина.Удалить(Карзина.Индекс(Запись));
		КонецЕсли;
		УстановитьСписокВыбранныхДокументов();
	КонецЕсли;
	
КонецПроцедуры
Показать
34. GAlexis 5 24.11.21 15:53 Сейчас в теме
(23)
В одной колонке (СписокПоле1, СписокПоле2) картинка флаг

У меня не отображает 2 картинки если группировка "в ячейке" проверено на 8.3.17.1851 и 8.3.15.1830
36. GAlexis 5 13.12.21 13:54 Сейчас в теме
(34) Разобрался сам. Создается "Группа колонок" Группировка - Горизонтальная. У колонок в группе отключаем ОтображатьВШапке и ОтображатьВПодвале.
24. Yashazz 4861 19.08.20 21:32 Сейчас в теме
Собрался было написать почти такую же публикацию, ан нет, опередили) Да, раскрыт один из возможных способов. Равно как и игры с СКД, и всякие эмуляции, и использование ПриПолученииДанныхНаСервере. Что ж, годно. Хорошо.
Dansur; Drivingblind; +2 Ответить
25. KRJ 19.11.20 10:33 Сейчас в теме
Может кто-нибудь кинуть в меня обработкой в котором реализованы флажки в динамическом списке?
27. Terabaytus 01.03.21 15:24 Сейчас в теме
(25)Держи не жалко )
Прикрепленные файлы:
ЧекБоксы.epf
ramze1C; vanya_1c; Teplotrassamen; marku; +4 Ответить
26. Aleksandr_prof 203 12.02.21 13:29 Сейчас в теме
Добавил данную доработку в форму выбора.
Галка устанавливается только при двойном щелчке.
Не совсем понятно, как меняется картинка с пустой на галку (это же обычная системная картинка 32х16). Она просто сдвигается? Или это какая-то уникальная картинка, которая реагирует на выбор?
Ну и в принципе механизм не работает - когда установил галки и нажал на кнопку выбрать, в параметрах передаётся только выделенный объект, а не те, на которых я установил галки.
28. EVinLa 17.03.21 09:36 Сейчас в теме
не пойму каким образом меняется вид флажка на заполненный? тыкал-тыкал, все равно всегда пустой
29. siniy_sahar 26.03.21 16:48 Сейчас в теме
(26)Вероятнее всего, вы установили для картинки "Гипперссылка", а надо "ГиперссылкаЯчейки". Тогда будет достаточно одного щелчка. Но с тем, что механизм не работает, согласна - у меня тоже только одно значение передаётся
additive; +1 Ответить
30. gusevalex007 28.06.21 09:22 Сейчас в теме
Большое спасибо! Компактное универсальное решение, можно брать за основу во многих других задачах по гибкому выбору элементов для обработки.

Для иерархических справочников пометка/снятие переделывается за 20 минут
31. Funtik90 25.09.21 09:59 Сейчас в теме
что-то как то не работает, выбирается первый элемент галкой, а все последующие галочку не проставляют. Почему?
32. Jeka44 01.11.21 10:49 Сейчас в теме
(31)точно такое же поведение. Вам удалось решить проблему?
33. Funtik90 10.11.21 21:11 Сейчас в теме
(32) я сделал список значений кажется, а у него есть поле со значением булево как раз таки.
37. mr_sav 96 14.01.22 17:11 Сейчас в теме
(33)
(32) Вот тут есть продолжение банкета: https://infostart.ru/public/1584125 - пример реализации флажков в ДС.
35. VadimTer 27.11.21 16:02 Сейчас в теме
В качестве варианта удобно использовать не массив отмечаемых флагом элементов справочника или документов, а список значений, который можно создать в реквизитах управляемой формы и использовать его хоть на сервере, хоть на клиенте при необходимости. Ниже приведен сокращенный запрос динамического списка (ДС) ( с основной таблицей ДС - Документы.РеализацияТоваровУслуг в БП 3.0):

ВЫБРАТЬ
	ДокументРеализацияТоваровУслуг.Ссылка КАК Ссылка,
	ДокументРеализацияТоваровУслуг.ПометкаУдаления КАК ПометкаУдаления,
	ДокументРеализацияТоваровУслуг.Номер КАК Номер,
	ДокументРеализацияТоваровУслуг.Дата КАК Дата,
	ВЫБОР
		КОГДА ДокументРеализацияТоваровУслуг.Ссылка В (&НеОтмеченныеФлажкамиДокументы)
			ТОГДА истина
		ИНАЧЕ ложь
	КОНЕЦ КАК Флажок
ИЗ
	Документ.РеализацияТоваровУслуг КАК ДокументРеализацияТоваровУслуг
ГДЕ
	ДокументРеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
	И ВЫБОР
			КОГДА &КоличествоСтрокСЗКонтрагентов = 0
				ТОГДА ИСТИНА
			ИНАЧЕ ДокументРеализацияТоваровУслуг.Контрагент В (&КонтрагентРеализации)
		КОНЕЦ
	И ВЫБОР
			КОГДА &КоличествоВыбранныеДокументыРеализацииСЗ = 0
				ТОГДА ИСТИНА
			ИНАЧЕ ДокументРеализацияТоваровУслуг.Ссылка В (&ВыбранныеДокументыРеализацииСЗ)
		КОНЕЦ

Для  указанных  в запросе параметров указываем значения в  как, например, в следующей процедуре:

&НаСервере
Процедура ПерезаполнитьВыбранныеДокументыРеализацииСЗ()

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

	НеОтмеченныеФлажкамиДокументы = ВыбранныеДокументыРеализацииСЗ;  	
	ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("НеОтмеченныеФлажкамиДокументы",НеОтмеченныеФлажкамиДокументы);
	
	ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("НачалоПериода",НачалоПериода);
	ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КонецПериода",КонецПериода);
	
	КоличествоСтрокСЗКонтрагентов = КонтрагентРеализации.Количество();
	ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КоличествоСтрокСЗКонтрагентов",КоличествоСтрокСЗКонтрагентов);
	ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КонтрагентРеализации",КонтрагентРеализации);
	  
	
	КоличествоВыбранныеДокументыРеализацииСЗ = ВыбранныеДокументыРеализацииСЗ.Количество();
	ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КоличествоВыбранныеДокументыРеализацииСЗ",КоличествоВыбранныеДокументыРеализацииСЗ);
	ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументыРеализацииСЗ",ВыбранныеДокументыРеализацииСЗ);    
	
	Элементы.ЖурналДокументовРеализации.Обновить();   	

КонецПроцедуры // ПерезаполнитьВыбранныеДокументыРеализацииСЗ()

Данный метод, в моем случае, вызывается из события "Создание на сервере", а тажке  в  событиях при изменении для реквизитов формы "НачалоПериода", "КонецПериода" и "КонтрагентРеализации". Посредством данного метода обновляется ДС в соответствии с измененными реквизитами, а также в актуальном состоянии поддерживается список значений "НеОтмеченныеФлажкамиДокументы" (аналог массива в примере, данном первым автором данной заметки). 

Следующий метод отрабатывает кликанье мышкой по полю флажка ДС:

&НаКлиенте
Процедура ЖурналДокументовРеализацииВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если Поле = Элементы.ЖурналДокументовРеализацииФлажок Тогда
		
		СтандартнаяОбработка = Ложь;
		
		ТекущиеДанные = Элемент.ТекущиеДанные;
				
		Для каждого Стр Из НеОтмеченныеФлажкамиДокументы Цикл
			
			Если Стр.Значение = ТекущиеДанные.Ссылка Тогда
			
			Индекс = НеОтмеченныеФлажкамиДокументы.Индекс(Стр);	
			Прервать;
			
			КонецЕсли;         			
		
		КонецЦикла;

		Если ТекущиеДанные <> Неопределено Тогда
			Если ТекущиеДанные.Флажок Тогда 				
				
				Если Индекс >= 0 Тогда
					
					НеОтмеченныеФлажкамиДокументы.Удалить(Индекс);
					
				КонецЕсли;
				
			Иначе
				
				Если Индекс = Неопределено Тогда
					НеОтмеченныеФлажкамиДокументы.Добавить(ТекущиеДанные.Ссылка);
				КонецЕсли;   
				
			КонецЕсли;
		КонецЕсли;
		
	КонецЕсли;         	
	
	ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("НеОтмеченныеФлажкамиДокументы",НеОтмеченныеФлажкамиДокументы);
	
	КоличествоСтрокСЗКонтрагентов = КонтрагентРеализации.Количество();
	ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КоличествоСтрокСЗКонтрагентов",КоличествоСтрокСЗКонтрагентов);
	ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КонтрагентРеализации",КонтрагентРеализации);
	
	КоличествоВыбранныеДокументыРеализацииСЗ = ВыбранныеДокументыРеализацииСЗ.Количество();
	ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("КоличествоВыбранныеДокументыРеализацииСЗ",КоличествоВыбранныеДокументыРеализацииСЗ);
	ЖурналДокументовРеализации.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументыРеализацииСЗ",ВыбранныеДокументыРеализацииСЗ);

	Элементы.ЖурналДокументовРеализации.Обновить();
	
КонецПроцедуры
Показать


Часть кода последнего метода практически идентичен коду первого автора заметки, за исключением использования списка значений вместо массива, а также использовано больше параметров (что полезно будет для наглядности).

Код может немного некорректно отработать с флажками, приведенных автором первой заметки, так как мной были использованы пиктограммы с крестиками. Но достаточно будет просто заменить Ложь на истину в соответствующем месте запроса, чтобы все отработала нормально.

К данному комментарию также прикрепляю пиктограмму флажка, который приведен первым автором заметки.

В комментариях есть вопросы, что отрабатывает только первое нажатие на поле флажка, а на последующие программа не реагирует. Это, в первую очередь, может быть связано с тем, что используется одинарный значок, а не двойной, который прикреплен к моему комментарию.
Прикрепленные файлы:
ФлажокБЭД.zip
38. mr_sav 96 14.01.22 17:15 Сейчас в теме
Всех категорически приветствую. Вот здесь есть рабочий пример реализации флажков в ДС: https://infostart.ru/public/1584125
39. Angel_19 6 19.07.22 15:35 Сейчас в теме
Автору спасибо!
Работает по двойному клику мышкой, а не по одинарному (ГиперссылкаЯчейки - Истина). Не понял как сделать по одинарному - возможно поведение платформы такое.
40. пользователь 17.10.23 10:47
Сообщение было скрыто модератором.
...
41. mamadakki 22.11.23 09:14 Сейчас в теме
Прошу подсказать а как все снять пометки с динамического списка ?
43. maksa2005 374 30.10.24 08:28 Сейчас в теме
(41) передаешь в установить параметров пустой массив
42. AnPet 3 25.11.23 16:52 Сейчас в теме
Вот здесь та же идея оформленная на одной картинке:

И, что хорошо, работает без дополнительных пиктограмм.
Возможно, это зависит от версии платформы. У меня - 8.3.22.2239
44. 1cNBL 28.01.25 19:47 Сейчас в теме
Не понятно как меняются картинки? Как работает сдвиг? Кто пояснит?
45. rebuzx 166 29.01.25 08:52 Сейчас в теме
Это не одна картинка, а коллекция картинок, индекс которых начинается с 0. Откройте картинку в конфигураторе, выберите Режим коллекции и всё станет понятно. Смотрите тут https://v8.1c.ru/platforma/redaktor-kartinki/
Оставьте свое сообщение