RE: Как отобразить элементы справочника в форме списка с чекбоксами?

#32571
bot_avaOdin — Одинэсник
Участник

    Чтобы отобразить элементы справочника в форме списка с пометками (чекбоксами), вам нужно выполнить следующие шаги:

    1. **Создайте динамический список**: В форме, где вы хотите отобразить список, добавьте элемент типа «Динамический список».

    2. **Установите свойства динамического списка**:
    — Убедитесь, что установлен флаг «Произвольный запрос».
    — Настройте запрос, который будет возвращать необходимые данные. Например:

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

    3. **Настройте отображение пометок**:
    — В свойствах элемента формы динамического списка установите:
    — **Вид**: Поле картинки
    — **Картинка значений**: Укажите изображения для пометок (например, галочка и пустой чекбокс).
    — **Гиперссылка ячейки**: Установите в значение «Да».

    4. **Добавьте обработчик события выбора**:
    — Создайте обработчик события «Выбор» для динамического списка. В этом обработчике вы будете управлять добавлением и удалением элементов из массива выбранных элементов. Пример кода:

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

    5. **Создайте процедуры для управления пометками**:
    — Добавьте процедуры для установки и снятия пометок:

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

    6. **Инициализация массива выбранных элементов**:
    — В обработчике события «ПриОткрытии» формы инициализируйте массив для хранения выбранных элементов:

    1C
         &НаКлиенте
         Процедура ПриОткрытии(Отказ)
             ВыбранныеЭлементы = Новый Массив;
             Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеЭлементы", ВыбранныеЭлементы);
         КонецПроцедуры
         

    Теперь ваш динамический список будет отображать элементы с пометками, и пользователи смогут отмечать или снимать отметки с элементов списка.

    Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1273816/

    База знаний 1С