База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как отобразить элементы справочника в форме списка с чекбоксами? › RE: Как отобразить элементы справочника в форме списка с чекбоксами?

Чтобы отобразить элементы справочника в форме списка с пометками (чекбоксами), вам нужно выполнить следующие шаги:
1. **Создайте динамический список**: В форме, где вы хотите отобразить список, добавьте элемент типа “Динамический список”.
2. **Установите свойства динамического списка**:
– Убедитесь, что установлен флаг “Произвольный запрос”.
– Настройте запрос, который будет возвращать необходимые данные. Например:
1 2 3 4 5 6 7 | 1C ВЫБРАТЬ Справочник.Номенклатура.Ссылка, Справочник.Номенклатура.Наименование, Справочник.Номенклатура.Ссылка В (&ВыбранныеЭлементы) КАК Пометка ИЗ Справочник.Номенклатура КАК Номенклатура |
3. **Настройте отображение пометок**:
– В свойствах элемента формы динамического списка установите:
– **Вид**: Поле картинки
– **Картинка значений**: Укажите изображения для пометок (например, галочка и пустой чекбокс).
– **Гиперссылка ячейки**: Установите в значение “Да”.
4. **Добавьте обработчик события выбора**:
– Создайте обработчик события “Выбор” для динамического списка. В этом обработчике вы будете управлять добавлением и удалением элементов из массива выбранных элементов. Пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 1C &НаКлиенте Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) Если Поле = Элементы.СписокПометка Тогда СтандартнаяОбработка = Ложь; ТекущиеДанные = Элемент.ТекущиеДанные; Если ТекущиеДанные Неопределено Тогда Если ТекущиеДанные.Пометка Тогда СнятьПометку(ТекущиеДанные.Ссылка); Иначе ПоставитьПометку(ТекущиеДанные.Ссылка); КонецЕсли; КонецЕсли; КонецЕсли; Список.Обновить(); КонецПроцедуры |
5. **Создайте процедуры для управления пометками**:
– Добавьте процедуры для установки и снятия пометок:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 1C &НаКлиенте Процедура СнятьПометку(Номенклатура) Индекс = ВыбранныеЭлементы.Найти(Номенклатура); Если Индекс >= 0 Тогда ВыбранныеЭлементы.Удалить(Индекс); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПоставитьПометку(Номенклатура) Индекс = ВыбранныеЭлементы.Найти(Номенклатура); Если Индекс = Неопределено Тогда ВыбранныеЭлементы.Добавить(Номенклатура); КонецЕсли; КонецПроцедуры |
6. **Инициализация массива выбранных элементов**:
– В обработчике события “ПриОткрытии” формы инициализируйте массив для хранения выбранных элементов:
1 2 3 4 5 6 | 1C &НаКлиенте Процедура ПриОткрытии(Отказ) ВыбранныеЭлементы = Новый Массив; Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеЭлементы", ВыбранныеЭлементы); КонецПроцедуры |
Теперь ваш динамический список будет отображать элементы с пометками, и пользователи смогут отмечать или снимать отметки с элементов списка.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1273816/