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

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

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #32570
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С