1с список значений на форме тип значения. Ограничение типа в списке значений
Нередки ситуации, когда необходимо ограничить типы данных, доступные для выбора при редактировании списка значений. Если по условиям задачи известно, что список значений будет содержать данные лишь одного определенного типа, имеет смысл ограничивать доступные типы. В противном случае пользователь при редактировании вынужден самостоятельно выбирать тип из всех имеющихся в конфигурации, что неудобно.
Для этой цели у реквизита формы с типом “Список значений” существует свойство “Тип значения”. Однако, если мы хотим вывести на форму таблицу (или поле), связанную с реквизитом объекта (не формы), такого свойства в палитре свойств не окажется. Что делать?
Рассмотрим пример, в котором мы хотим вывести на форму значение отбора варианта отчета. У нас будет один элемент отбора, с видом сравнения “В списке”, поэтому выводить на форму стандартный отбор компоновки данных нецелесообразно. Для этого создадим новый реквизит отчета с типом “Список значений”, через него будем управлять значением отбора компоновки. Но у реквизита отчета нет свойства “Тип значения”.
Создадим на форме еще один реквизит с типом “Список значений”. У него уже будет это свойство. Выберем в этом свойстве нужный нам тип данных и выведем этот реквизит на форму.
У вас есть вопрос, нужна помощь консультанта?
Теперь нам нужно настроить синхронизацию реквизита формы и реквизита отчета. В этом случае код модуля формы будет выглядеть примерно следующим образом:
Замечу, что передача элементов списка по одному в цикле сделана не случайно. Если написать
ЭтаФорма.ЗначениеОтбора = ЭлементОтбора.ПравоеЗначение;
по аналогии с
Отчет.ЗначениеОтбора = ЭлементОтбора.ПравоеЗначение;
это не даст требуемого эффекта, т.к. в таком случае копируется весь список, со всеми свойствами, в том числе и со свойством “Тип значения”, которое у ЭлементОтбора.ПравоеЗначение не заполнено. Тем самым выставленный нами тип значения будет сброшен.
ЮНИТ 10. СПИСОК ЗНАЧЕНИЙ В ЯЗЫКЕ 1C (В ПРИМЕРАХ)
Описание:
Список значений – это не сохраняемый в базе данных объект, который позволяет строить для решения интерфейсных задач динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может быть наполнен значениями любого типа, т.е. в одном списке типы хранимых значений могут быть разными. Одним из примеров использования данного объекта может служить организация выбора конкретного документа из списка возможных документов, сформированного по сложному алгоритму.
Элементы коллекции: ЭлементСпискаЗначений
Для объекта доступен обход коллекции посредством оператора Для каждого
… Из
… Цикл.
При обходе выбираются элементы коллекции.
Возможно обращение к элементу коллекции посредством оператора […]. В качестве аргумента передается индекс элемента (нумерация с 0).
Свойства:
ДоступныеЗначения
Применяется в случаях, когда требуется ограничить возможность задания значений для элементов списка некоторым подмножеством значений допустимого типа (если для списка установлено описание типа). Неопределено
– ограничения отсутствуют.
Установка этого свойства влияет на работу диалога редактирования списка значений, элементов управления “Таблица” и “Поле ввода”, связанных со списком значений, а также на программное добавление-вставку нового элемента списка значений и установку значений элементам списков.
ТипЗначения
Определяет тип для значений, которые могут храниться в элементах данного списка значений.
Вставить(,)
Вставляет новый элемент в список значений на позицию с уяяказан-ным индексом.
ВыбратьЭлемент(,)
Элемент
– элемент, на который следует изначально спозиционировать список значений при интерактивном выборе. Если значением параметра не является элемент списка значений, входящий в данный список, позиционирования не произойдет.
ВыгрузитьЗначения()
Создает массив и копирует в него значения элементов списка значений.
Добавить(,) Добавляет новый элемент в конец списка значений.
ЗагрузитьЗначения()
Загружает список значений значениями из переданного массива. При этом все прежние элементы списка удаляются.
ЗаполнитьПометки()
Устанавливает пометку у всех элементов списка значений. Индекс(Олемент>)
Получает индекс элемента в списке значений. Если не найдено, то возвращается -1.
Количество()
Получает количество элементов списка значений.
НайтиПоЗначению()
Осуществляет поиск значения элемента списка значений. Если ни один элемент не хранит значения, равного искомому, то возвращается значение Неопределено.
НайтиПоИдентификатору()
Получает элемент списка значений по идентификатору. Если элемент не найден, то возвращается Неопределено.
ОтметитьЭлементы()
Устанавливает или снимает (интерактивно) пометки у элементов списка значений. Возвращает Истина
, если в диалоге нажата кнопка “ОК”, Ложь
– в противном случае.
Очистить()
Очищает список значений, удаляя из него все элементы.
ПоказатьВыборЭлемета(,)
Вызывает окно для интерактивного выбора одного из элементов, входящих в список значений.
ПоказатьОтметкуЭлементов(,)
Предназначен для интерактивной установки состояний пометок у элементов списка значений.
Получить()
Получает значение по индексу. Работает аналогично оператору );
КонецЦикла;
III
Как найти элемент списка по его значению в 1C
ЗначВторник = Список.НайтиПоЗначению(“Вторник”);
III
Как узнать индекс элемента в списке в 1C
Сообщить(Список.Индекс(ЗначВторник));
// 1, так как нумерация с нуля
III
Как отсортировать список по его значениям в 1C
Список.СортироватьПоЗначению
(НаправлениеСортировки.Убыв);
III
Как удалить элемент из списка значений в 1C
// удаляем первый элемент Список. Удалить(Список);
// параметр: элемент списка
III
Как сдвинуть элемент списка значений в 1C
// сдвигаем первый элемент на одну позицию вперед Список.Сдвинуть(0, 1);
III
Как сделать копию списка в 1C
КопияСписка = Список.Скопировать);
Цвета = Новый СписокЗначений();
Цвета. Добавить(“Красный”);
Цвета. Добавить(“Зеленый”);
Цвета. Добавить(“Синий”);
III
Как выгрузить значения списка в массив в 1C
МассивЦветов = Цвета. ВыгрузитьЗначения();
III
Как загрузить значения списка из массива в 1C
Цвета.ЗагрузитьЗначения(МассивЦветов);
III
Как сделать модальный выбор значения из списка в 1C
ВыбЦвет =
Цвета.ВыбратьЭлемент(“Выберите любимый цвет”); Если ВыбЦвет О Неопределено Тогда Сообщить(ВыбЦвет.Значение);
КонецЕсли;
III
Как сделать модальную отметку значений из списка в 1С
Если Цвета.ОтметитьЭлементы(“Выберите любимые цвета”) Тогда
Для Каждого Цвет Из Цвета Цикл Если Цвет. Пометка Тогда Сообщить(Цвет.Значение);
КонецЕсли;
КонецЦикла;
КонецЕсли;
// можно разом установить все отметки в определенное значение Цвета. ЗаполнитьПометки(Истина);
Полный синтаксис (нажмите, чтобы раскрыть)
СписокЗначений
Описание:
Список значений – это не сохраняемый в базе данных объект, который позволяет строить для решения интерфейсных задач динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может быть наполнен значениями любого типа, т.е. в одном списке типы хранимых значений могут быть разными. Одним из примеров использования данного объекта может служить организация выбора конкретного документа из списка возможных документов, сформированного по сложному алгоритму.
Элементы коллекции:
ЭлементСпискаЗначений
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл
. При обходе выбираются элементы коллекции.
Возможно обращение к элементу коллекции посредством оператора […]. В качестве аргумента передается индекс элемента (нумерация с 0
).
Свойства:
Методы:
Конструкторы:
&НаКлиенте Процедура ВыполнитьКод(Команда) /// Как создать список значений в 1с 8.3, 8.2 /// Как добавить элемент в список значений в 1с 8.3, 8.2 // – представление ) Список. // значения могут быть разных типов /// Как вставить элемент в список значений в 1с 8.3, 8.2 /// Как обойти элементы списка значений в 1с 8.3, 8.2 Сообщить( Строка(Элемент. ) КонецЦикла /// Как очистить список значений в 1с 8.3, 8.2 Список. Список. Список. /// Как узнать количество элементов списка значений, а также Сообщить(Список[ КонецЦикла /// Как найти элемент списка по его значению в 1с 8.3, 8.2 /// Как узнать индекс элемента в списке в 1с 8.3, 8.2 // стало: среда, понедельник, вторник Список. // или так // Список.Удалить(0); // стало: вторник понедельник Цвета = Цвета. Цвета. Цвета. /// Как выгрузить значения списка в массив в 1с 8.3, 8.2 /// Как загрузить значения списка из массива в 1с 8.3, 8.2 КонецПроцедуры /// Как сделать немодальный выбор значения из списка Цвета = Цвета. Цвета. Цвета. // процедура ПослеВыбораЭлемента определена чуть ниже Цвета. “Выберите любимый цвет” КонецПроцедуры &НаКлиенте Если Сообщить(Элемент. КонецЕсли КонецПроцедуры /// Как сделать немодальную отметку значений из списка Цвета = Цвета. Цвета. Цвета. // процедура ПослеОтметкиЭлементов определена чуть ниже Цвета. “Выберите любимые цвета” Цвета. КонецПроцедуры &НаКлиенте Если Для Если Сообщить(Цвет. КонецЕсли КонецЦикла КонецЕсли КонецПроцедуры /// Как сделать модальный выбор значения из списка в 1с 8.3, 8.2 Цвета = Цвета. Цвета. Цвета. ВыбЦвет = Если Сообщить(ВыбЦвет. КонецЕсли КонецПроцедуры /// Как сделать модальную отметку значений из списка Цвета = Цвета. Цвета. Цвета. Если Для Если Сообщить(Цвет. КонецЕсли КонецЦикла КонецЕсли // а вот так можно разом установить все отметки КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере |