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

Как отобразить элем...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

как сделать чтобы он отображался как список с пометками



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

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

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

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

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

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

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

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

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

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

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

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

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

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



   
ОтветитьЦитата