Описание:
Список значений — это не сохраняемый в базе данных объект, который позволяет строить для решения интерфейсных задач динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может быть наполнен значениями любого типа, т.е. в одном списке типы хранимых значений могут быть разными. Одним из примеров использования данного объекта может служить организация выбора конкретного документа из списка возможных документов, сформированного по сложному алгоритму.
Элементы коллекции: ЭлементСпискаЗначений
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.
Возможно обращение к элементу коллекции посредством оператора [. ]. В качестве аргумента передается индекс элемента (нумерация с 0).
Маленький IT блог с характером 1С.
Страницы
Поиск по блогу
четверг, 25 июня 2015 г.
Задание типа значения для реквизита с типом СписокЗначений в управляемых формах
В управляемых формах невозможно задать тип значения для реквизита, который имеет тип СписокЗначений, хотя в обычных формах такая возможность есть. Если реквизит с типом СписокЗначений является реквизитом формы, то здесь особых сложностей нету, достаточно в обработчике события формы ПриСозданииНаСервере написать код по установке типа для значения списка:
ТипыСписка = «Строка»;
ДоступныеТипы = Новый ОписаниеТипов(ТипыСписка);
ЭтаФорма.РеквизитСписокЗначений.ТипЗначения = ДоступныеТипы;
Как видно из примера, тип значения устанавливается через свойство списка значений ТипЗначения, которое имеет тип ОписаниеТипов.
Другое дело, когда форма содержит таблицу значений, у которой имеется реквизит с типом СписокЗначений. В такой ситуации через обработчики событий формы к этому реквизиту не достучаться, поэтому нужно использовать обработчики событий элемента формы, связанного с данным реквизитом.
![]() |
1. Реквизит ТЧ с типом СписокЗначений |
Для этого напишем код по установке типа значения в обработчике события элемента формы НачалоВыбора:
Процедура РеквизитыТаблицыСписокДоступныхЗначенийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТипыСписка = «Строка»;
ДоступныеТипы = Новый ОписаниеТипов(ТипыСписка);
Элемент.Родитель.ТекущиеДанные.РеквизитСписокЗначений.ТипЗначения = ДоступныеТипы;
Что бы для типа значения задать составной тип, необходимо в конструктор объекта ОписаниеТипов передать первым параметром массив типов:
ТипыСписка = Массив;
ТипыСписка.Добавить(Тип(«Строка»));
ТипыСписка.Добавить(Тип(«Число»));
ДоступныеТипы = Новый ОписаниеТипов(ТипыСписка);
ЭтаФорма.РеквизитСписокЗначений.ТипЗначения = ДоступныеТипы;
Единственный минус составного типа в списке значений — это отсутствие множественного выбора (кнопки Подбор), придется добавлять по одному значению в список. а это просто печалит.
Список значений на форме 1С для выбора пользователем значения можно расположить непосредственно на форме обработки/документа. Тогда пользователь сможет выбирать несколько значений из списка (зажав CTRL или SHIFT).
Список значений на форме 1С — в толстом клиенте просто размещаем на форме элемент списка, указываем название связанного реквизита формы.
Список значений на форме 1С — в тонком клиенте добавим реквизит формы, у которого выберем тип Список значений. При перетаскивании реквизита на форму, 1С спросит в каком виде мы хотели бы отображать его – чтобы он отображался аналогично толстому клиенту – выберите «Таблица».
В списке элементов формы появятся таблица, а у нее колонка. В свойствах таблицы можно установить запрет на редактирование списка (свойства Изменять состав/порядок строк или галочка Только просмотр).
Работа со списком значений на форме 1С из программного кода ведется по имени реквизита формы, который в толстом клиенте автоматически добавила система, а в тонком – вручную добавили мы самостоятельно. В примере (на картинках) имя реквизита формы – «ВыберитеЗначение».
В обработчике события формы ПриОткрытии() заполним значения списка, чтобы пользователю было из чего выбирать:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ВыберитеЗначение.Добавить(0, «Создать документ»); //первый параметр – значение, второй параметр – представление значение, представление может отличаться от значения как угодно
ВыберитеЗначение.Добавить(1, «Редактировать документ»);
ВыберитеЗначение.Добавить(2, «Удалить документ»);
В обработчике нашего нужного события (например, кнопка выполнения действий) мы можем проверить, что там понавыбирал наш пользователь. Доступ к результату производится также по имени, но через элемент на форме, поэтому перед именем добавляем ЭлементыФормы (для толстого клиента) или Элемент (для тонкого клиента). Также – условие Если/Иначе уже не пойдет – так как могут быть выбраны несколько значений: