База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как отобразить элементы справочника в форме списка с чекбоксами? › RE: Как отобразить элементы справочника в форме списка с чекбоксами?
Чтобы отобразить элементы справочника в форме списка с пометками (чекбоксами), вам нужно выполнить следующие шаги:
1. **Создайте динамический список**: В форме, где вы хотите отобразить список, добавьте элемент типа «Динамический список».
2. **Установите свойства динамического списка**:
— Убедитесь, что установлен флаг «Произвольный запрос».
— Настройте запрос, который будет возвращать необходимые данные. Например:
1C
ВЫБРАТЬ
Справочник.Номенклатура.Ссылка,
Справочник.Номенклатура.Наименование,
Справочник.Номенклатура.Ссылка В (&ВыбранныеЭлементы) КАК Пометка
ИЗ
Справочник.Номенклатура КАК Номенклатура
3. **Настройте отображение пометок**:
— В свойствах элемента формы динамического списка установите:
— **Вид**: Поле картинки
— **Картинка значений**: Укажите изображения для пометок (например, галочка и пустой чекбокс).
— **Гиперссылка ячейки**: Установите в значение «Да».
4. **Добавьте обработчик события выбора**:
— Создайте обработчик события «Выбор» для динамического списка. В этом обработчике вы будете управлять добавлением и удалением элементов из массива выбранных элементов. Пример кода:
1C
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы.СписокПометка Тогда
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные Неопределено Тогда
Если ТекущиеДанные.Пометка Тогда
СнятьПометку(ТекущиеДанные.Ссылка);
Иначе
ПоставитьПометку(ТекущиеДанные.Ссылка);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Список.Обновить();
КонецПроцедуры
5. **Создайте процедуры для управления пометками**:
— Добавьте процедуры для установки и снятия пометок:
1C
&НаКлиенте
Процедура СнятьПометку(Номенклатура)
Индекс = ВыбранныеЭлементы.Найти(Номенклатура);
Если Индекс >= 0 Тогда
ВыбранныеЭлементы.Удалить(Индекс);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоставитьПометку(Номенклатура)
Индекс = ВыбранныеЭлементы.Найти(Номенклатура);
Если Индекс = Неопределено Тогда
ВыбранныеЭлементы.Добавить(Номенклатура);
КонецЕсли;
КонецПроцедуры
6. **Инициализация массива выбранных элементов**:
— В обработчике события «ПриОткрытии» формы инициализируйте массив для хранения выбранных элементов:
1C
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ВыбранныеЭлементы = Новый Массив;
Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеЭлементы", ВыбранныеЭлементы);
КонецПроцедуры
Теперь ваш динамический список будет отображать элементы с пометками, и пользователи смогут отмечать или снимать отметки с элементов списка.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1273816/