1с статьи | Курс-репетитор программиста 1С

Создание и обход

СписокЗначений = Новый СписокЗначений;
// добавить элемент в конец списка
СписокЗначений.Добавить(
   "УстановитьФлажки", // Значение
   "Установить флажки", // Представление
   Истина, // Пометка
   БиблиотекаКартинок.УстановитьФлажки // Картинка
);
// вставить в позицию с индексом 0
// возвращается значение с типом "ЭлементСпискаЗначений"
ЭлементСпискаЗначений = СписокЗначений.Вставить(0, "СнятьФлажки", 
   "Снять флажки", 
   Ложь, БиблиотекаКартинок.СнятьФлажки);
   
// сдвинуть элемент списка на 1 позицию вниз
// отрицательное значение сдвигает вверх
СписокЗначений.Сдвинуть(ЭлементСпискаЗначений, 1);   

// вывод элементов списка
Для Каждого Элемент Из СписокЗначений Цикл
   ТекстСообщения = СтрШаблон("Значение: %1, Представление: %2",
      Элемент.Значение, Элемент.Представление);
   Сообщить(ТекстСообщения);
КонецЦикла;

// Что будет выведено?

Показать решение

Получение и поиск элементов списка

// создаем массив значений
МассивЗначений = Новый Массив;
МассивЗначений.Добавить("УстановитьФлажки");
МассивЗначений.Добавить("СнятьФлажки");
СписокЗначений = Новый СписокЗначений;
// загрузка значений из массива
СписокЗначений.ЗагрузитьЗначения(МассивЗначений);

// поиск по значению
Элемент = СписокЗначений.НайтиПоЗначению("Значение");
Если Элемент=Неопределено Тогда
   // значение не найдено
КонецЕсли;

// значение будет найдено, тип ЭлементСнятьФлажки - ЭлементСпискаЗначений
ЭлементСнятьФлажки = СписокЗначений.НайтиПоЗначению("СнятьФлажки");
// идентификатор элемента списка
// не привязан к позиции элемента в списке
ИдентификаторЭлемента = ЭлементСнятьФлажки.ПолучитьИдентификатор();

// поиск по идентификатору
ЭлементСписка = СписокЗначений.НайтиПоИдентификатору(ИдентификаторЭлемента);

// изменим позицию элемента
СписокЗначений.Сдвинуть(ЭлементСнятьФлажки, -1);

// индекс элемента списка  
// определяет позицию элемента в списке
ИндексЭлемента = СписокЗначений.Индекс(ЭлементСнятьФлажки);

// тернарный оператор ?
ТекстСообщения = ?(ИдентификаторЭлемента = ИндексЭлемента,
   "идентификатор совпадает с индексом",
   "идентификатор не совпадает с индексом");

Сообщить(ТекстСообщения);

// Что будет выведено?

Показать решение

Сортировка и выбор элементов списка

// создаем массив значений
МассивЗначений = Новый Массив;
МассивЗначений.Добавить("УстановитьФлажки");
МассивЗначений.Добавить("СнятьФлажки");
МассивЗначений.Добавить("ЗатемнитьФлажки");
СписокЗначений = Новый СписокЗначений;
// загрузка значений из массива
СписокЗначений.ЗагрузитьЗначения(МассивЗначений);                
// сортируем по значению
СписокЗначений.СортироватьПоЗначению(НаправлениеСортировки.Убыв);

// выгружаем значения в массив
СортированныйМассив = СписокЗначений.ВыгрузитьЗначения();        

// можно скопировать список в новый
НовыйСписокЗначений = СписокЗначений.Скопировать();
// очистить элементы старого списка
СписокЗначений.Очистить();         
// добавили новый список в старый
СписокЗначений.Добавить(НовыйСписокЗначений, 
	"Значение элемента - список значений");

// вызвали диалог выбора элементов списка
// процедура, в которой выполняется этот код должна
// быть клиентской и отмечена модификатором Асинх 
// например:
// &НаКлиенте
// Асинх Процедура СортировкаИВыборЭлементовСпискаЗначений()
РезультатВыбора = Ждать СписокЗначений.ВыбратьЭлементАсинх(
	"Выберите элемент списка");

// обработали выбор
Если РезультатВыбора = Неопределено Тогда
   Сообщить("Элемент не был выбран");   
   Возврат;
КонецЕсли; 

ТекстСообщения = СтрШаблон("Тип 1: %1, Тип 2: %2",
      ТипЗнч(РезультатВыбора), 
      ТипЗнч(РезультатВыбора.Значение));
      
Сообщить(ТекстСообщения);

Показать решение

Использование в диалоге

// используем список как набор кнопок
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить("УстановитьФлажки", "Установить флажки");
СписокКнопок.Добавить("СнятьФлажки", "Снять флажки");
СписокКнопок.Добавить("ЗатемнитьФлажки", "Затемнить флажки");

ТекстВопроса = "Вопрос со своими кнопками";
Ответ = Ждать ВопросАсинх(ТекстВопроса, 
   СписокКнопок, // кнопки в диалоге
   5, // таймаут в секундах, по истечению 
   //вернется значение КодВозвратаДиалога.Таймаут
   "СнятьФлажки" // кнопка по умолчанию
);

Если Ответ = "СнятьФлажки" Тогда
   // нажата кнопка "Снять флажки"
КонецЕсли;

СписокКнопок.ЗаполнитьПометки(Истина); // установим все пометки в Истина
// сбросим пометку у первого и второго элементов
СписокКнопок.Получить(0).Пометка = Ложь; 
СписокКнопок.Получить(1).Пометка = Ложь;

// вызов диалога отметки элементов списка
ОтмеченныеЭлементыСписка = Ждать СписокКнопок.ОтметитьЭлементыАсинх();

Если ОтмеченныеЭлементыСписка=Неопределено Тогда
   // нажата кнопка "Отмена" 
   Возврат;
КонецЕсли;

// обход списка по индексу
Для Индекс = 0 По ОтмеченныеЭлементыСписка.Количество()-1 Цикл
   // для получения элемента используем оператор [...]
   ЭлементСписка = ОтмеченныеЭлементыСписка[Индекс];
   Если ЭлементСписка.Пометка Тогда
      Сообщить(ЭлементСписка.Представление);
   КонецЕсли;
КонецЦикла;

// Что будет выведено?

Показать решение

Использование в форме

// опишем реквизит формы с типом "СписокЗначений"
РеквизитСписка = Новый РеквизитФормы("Список", 
   Новый ОписаниеТипов("СписокЗначений"));

// создадим реквизит
Массив = Новый Массив;
Массив.Добавить(РеквизитСписка);
ИзменитьРеквизиты(Массив);

// создадим связанный элемент ПолеВвода
ПолеФормы = Элементы.Добавить("Список", Тип("ПолеФормы"));
ПолеФормы.Вид = ВидПоляФормы.ПолеВвода; // вид поля формы
ПолеФормы.ПутьКДанным = "Список"; // связь с реквизитом формы            

// установим ограничение на тип значений списка - только строка
ЭтаФорма.Список.ТипЗначения = Новый ОписаниеТипов("Строка");

// подготовим список ограничений 
ДоступныеЗначения = Новый СписокЗначений;
ДоступныеЗначения.Добавить("УстановитьФлажки", "Установить флажки");
ДоступныеЗначения.Добавить("СнятьФлажки", "Снять флажки");
// установим ограничение на значения списка
ЭтаФорма.Список.ДоступныеЗначения = ДоступныеЗначения;

// добавим в список два элемента, 
// один допустимый, а второй - нет
ЭтаФорма.Список.Добавить("ЗатемнитьФлажки", "Затемнить флажки"); 
ЭтаФорма.Список.Добавить("СнятьФлажки", "Снять флажки"); 

// выгрузим значения в массив
Массив = ЭтаФорма.Список.ВыгрузитьЗначения();
// сообщим массив
ТекстСообщения = СтрСоединить(Массив, ",");
Сообщить(ТекстСообщения);

// Что будет выведено?

Показать решение

СписокЗначений (ValueList)

Элементы коллекции:

ЭлементСпискаЗначений

Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл.

При обходе выбираются элементы коллекции.

Возможно обращение к элементу коллекции посредством оператора [...].

В качестве аргумента передается индекс элемента (нумерация с 0).

Описание: Используется для доступа к методам списка значений в целом.

Для режима запуска ОбычноеПриложение обмен с сервером невозможен!

Конструкторы (По умолчанию) Синтаксис: Новый СписокЗначений

ЭлементСпискаЗначений.ПолучитьИдентификатор (GetID)

Синтаксис: ПолучитьИдентификатор()

Возвращаемое значение: Тип: Число.

Описание: Получает идентификатор для элемента списка значений. Этот идентификатор не привязан к позиции элемента в списке.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Вставить (Insert)

Синтаксис:

Вставить(<Индекс>, <Значение>, <Представление>, <Пометка>, <Картинка>)

Параметры:

<Индекс> (обязательный) Тип: Число.

Индекс позиции, на которую надо вставить элемент.

<Значение> (необязательный) Тип: Произвольный.

Значение, которое необходимо вставить.

<Представление> (необязательный) Тип: Строка, ФорматированнаяСтрока.

Строковое выражение, содержащее представление добавляемого значения.

Значение по умолчанию: Пустая строка.

<Пометка> (необязательный) Тип: Булево.

Определяет, создавать новое значение с установленной пометкой или нет.

Значение по умолчанию: Ложь.

<Картинка> (необязательный) Тип: Картинка.

Визуальное представление значения.

Значение по умолчанию: Пустая картинка.

Возвращаемое значение: Тип: ЭлементСпискаЗначений.

Новый элемент списка значений.

Описание: Вставляет новый элемент в список значений на позицию с указанным индексом.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

ВыбратьЭлемент (ChooseItem)

Синтаксис: ВыбратьЭлемент(<Заголовок>, <Элемент>)

Параметры:

<Заголовок> (необязательный) Тип: Строка.

Заголовок окна выбора. Если параметр не указан, то используется стандартный заголовок.

Значение по умолчанию: Пустая строка.

<Элемент> (необязательный) Тип: ЭлементСпискаЗначений.

Элемент, на который следует изначально спозиционировать список значений при интерактивном выборе. Если значением параметра не является элемент списка значений, входящий в данный список, позиционирования не произойдет.

Возвращаемое значение: Тип: ЭлементСпискаЗначений, Неопределено.

Если пользователь отказался от выбора, возвращает Неопределено.

Описание: Вызывает окно для интерактивного выбора одного из элементов, входящих в список значений.

Доступность: Тонкий клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).

ВыбратьЭлементАсинх (ChooseItemAsync)

Синтаксис: ВыбратьЭлементАсинх(<Заголовок>, <Элемент>)

Параметры:

<Заголовок> (необязательный) Тип: Строка.

Заголовок окна выбора. Если параметр не указан, то используется стандартный заголовок.

Значение по умолчанию: Пустая строка.

<Элемент> (необязательный) Тип: ЭлементСпискаЗначений.

Элемент, на который следует изначально спозиционировать список значений при интерактивном выборе. Если значением параметра не является элемент списка значений, входящий в данный список, позиционирования не произойдет.

Возвращаемое значение: Тип: Обещание.

Результат выполнения обещания - выбранный элемент, и Неопределено, если пользователь отказался от выбора.

Описание: Асинхронная функция. Позволяет интерактивно выбрать один из элементов, входящих в список значений.

Доступность: Тонкий клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).

ВыгрузитьЗначения (UnloadValues)

Синтаксис: ВыгрузитьЗначения()

Возвращаемое значение: Тип: Массив.

Описание: Создает массив и копирует в него значения элементов списка значений.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Добавить (Add)

Синтаксис: Добавить(<Значение>, <Представление>, <Пометка>, <Картинка>)

Параметры:

<Значение> (необязательный) Тип: Произвольный.

Значение, которое необходимо добавить.

<Представление> (необязательный) Тип: Строка, ФорматированнаяСтрока.

Строковое выражение, содержащее представление добавляемого значения.

Значение по умолчанию: Пустая строка.

<Пометка> (необязательный) Тип: Булево.

Определяет, создавать новое значение с установленной пометкой или без пометки.

Значение по умолчанию: Ложь.

<Картинка> (необязательный) Тип: Картинка.

Визуальное представление значения.

Значение по умолчанию: Пустая картинка.

Возвращаемое значение: Тип: ЭлементСпискаЗначений.

Описание: Добавляет новый элемент в конец списка значений.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

ЗагрузитьЗначения (LoadValues)

Синтаксис: ЗагрузитьЗначения(<МассивЗначений>)

Параметры:

<МассивЗначений> (обязательный) Тип: Массив.

Массив, содержащий значения для заполнения списка значений.

Описание: Загружает список значений значениями из переданного массива. При этом все прежние элементы списка удаляются.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

ЗаполнитьПометки (FillChecks)

Синтаксис: ЗаполнитьПометки(<ЗначениеПометки>)

Параметры:

<ЗначениеПометки> (обязательный) Тип: Булево.

Значение пометки, устанавливаемой для всех элементов списка значений.

Описание: Устанавливает пометку у всех элементов списка значений.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Индекс (IndexOf)

Синтаксис: Индекс(<Элемент>)

Параметры:

<Элемент> (обязательный) Тип: ЭлементСпискаЗначений.

Элемент списка значений, для которого надо определить индекс.

Возвращаемое значение: Тип: Число.

Индекс указанного элемента в списке значений. Если не найдено, то возвращается -1.

Описание: Получает индекс элемента в списке значений.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Количество (Count)

Синтаксис: Количество()

Возвращаемое значение: Тип: Число.

Описание: Получает количество элементов списка значений.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

НайтиПоЗначению (FindByValue)

Синтаксис: НайтиПоЗначению(<ИскомоеЗначение>)

Параметры:

<ИскомоеЗначение> (обязательный) Тип: Произвольный.

Выражение со значением, которое требуется найти.

Возвращаемое значение: Тип: ЭлементСпискаЗначений, Неопределено.

Если ни один элемент не хранит значения, равного искомому, то возвращается значение Неопределено.

Описание: Осуществляет поиск значения элемента списка значений.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

НайтиПоИдентификатору (FindByID)

Синтаксис: НайтиПоИдентификатору(<Идентификатор>)

Параметры:

<Идентификатор> (обязательный) Тип: Число.

Идентификатор элемента списка значений.

Возвращаемое значение: Тип: ЭлементСпискаЗначений, Неопределено.

Неопределено - элемент не найден.

Описание: Получает элемент списка значений по идентификатору.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

ОтметитьЭлементы (CheckItems)

Синтаксис: ОтметитьЭлементы(<Заголовок>)

Параметры:

<Заголовок> (необязательный) Тип: Строка.

Заголовок окна диалога. Если параметр не указан, то используется стандартный заголовок.

Значение по умолчанию: Пустая строка.

Возвращаемое значение: Тип: Булево.

Истина - в диалоге пометки нажата кнопка "ОК"; Ложь - в противном случае.

Неопределено - элемент не найден.

Описание: Устанавливает или снимает (интерактивно) пометки у элементов списка значений.

Доступность: Тонкий клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).

ОтметитьЭлементыАсинх (CheckItemsAsync)

Синтаксис: ОтметитьЭлементыАсинх(<Заголовок>)

Параметры:

<Заголовок> (необязательный) Тип: Строка.

Заголовок окна диалога. Если параметр не указан, то используется стандартный заголовок.

Значение по умолчанию: Пустая строка.

Возвращаемое значение: Тип: Обещание.

Результат выполнения обещания - если нажата кнопка "OK", то СписокЗначений, отметка элементов которого была завершена; Неопределено - если была нажата кнопка "Отмена".

Описание: Асинхронная функция. Предназначена для интерактивной установки состояний пометок у элементов списка значений.

Доступность: Тонкий клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).

Очистить (Clear)

Синтаксис: Очистить()

Описание: Очищает список значений, удаляя из него все элементы.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

ПоказатьВыборЭлемента (ShowChooseItem)

Синтаксис: ПоказатьВыборЭлемента(<ОписаниеОповещенияОЗакрытии>, <Заголовок>, <Элемент>)

Параметры:

<ОписаниеОповещенияОЗакрытии> (обязательный) Тип: ОписаниеОповещения.

Содержит описание процедуры, которая будет вызвана после закрытия диалога выбора элемента со следующими параметрами: <ВыбранныйЭлемент> - если пользователь отказался от выбора, то Неопределено, <ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.

<Заголовок> (необязательный) Тип: Строка.

Заголовок окна выбора. Если параметр не указан, то используется стандартный заголовок.

Значение по умолчанию: Пустая строка.

<Элемент> (необязательный) Тип: ЭлементСпискаЗначений.

Задает элемент, на который следует изначально спозиционироваться при интерактивном выборе. Если значением параметра не является элементом списка значений, входящим в данный список, позиционирования не произойдет.

Описание: Вызывает окно для интерактивного выбора одного из элементов, входящих в список значений.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).

ПоказатьОтметкуЭлементов (ShowCheckItems)

Синтаксис: ПоказатьОтметкуЭлементов(<ОписаниеОповещенияОЗакрытии>, <Заголовок>)

Параметры:

<ОписаниеОповещенияОЗакрытии> (обязательный) Тип: ОписаниеОповещения.

Содержит описание процедуры, которая будет вызвана после закрытия диалога выбора элемента со следующими параметрами: <Список> - если нажата кнопка "OK", то СписокЗначений, отметка элементов которого была завершена; Неопределено - если была нажата кнопка "Отмена"; <ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.

<Заголовок> (необязательный) Тип: Строка.

Заголовок окна диалога. Если параметр не указан, то используется стандартный заголовок.

Значение по умолчанию: Пустая строка.

Описание: Предназначен для интерактивной установки состояний пометок у элементов списка значений.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).

Получить (Get)

Синтаксис: Получить(<Индекс>)

Параметры:

<Индекс> (обязательный) Тип: Число.

Индекс элемента.

Возвращаемое значение: Тип: ЭлементСпискаЗначений.

Описание: Получает значение по индексу. Работает аналогично оператору [].

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Сдвинуть (Move)

Синтаксис: Сдвинуть(<Элемент>, <Смещение>)

Параметры:

<Элемент> (обязательный) Тип: Число, ЭлементСпискаЗначений.

Индекс сдвигаемого элемента списка либо сам элемент.

<Смещение> (обязательный) Тип: Число.

Количество позиций, на которое следует сдвинуть элемент. Положительное значение соответствует смещению элемента в сторону конца списка (увеличение индекса), отрицательное - к началу.

Описание: Сдвигает элемент списка значений на заданное количество позиций вперед или назад.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Скопировать (Copy)

Синтаксис: Скопировать()

Возвращаемое значение: Тип: СписокЗначений.

Описание: Создает копию списка значений.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

СортироватьПоЗначению (SortByValue)

Синтаксис: СортироватьПоЗначению(<Направление>)

Параметры:

<Направление> (необязательный) Тип: НаправлениеСортировки.

Способ сортировки - по возрастанию или по убыванию.

Значение по умолчанию: Возр.

Описание: Сортирует список значений в порядке возрастания или убывания хранимых элементами значений.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

СортироватьПоПредставлению (SortByPresentation)

Синтаксис: СортироватьПоПредставлению(<Направление>)

Параметры:

<Направление> (необязательный) Тип: НаправлениеСортировки.

Способ сортировки - по возрастанию или по убыванию.

Значение по умолчанию: Возр.

Описание: Сортирует список значений по возрастанию или по убыванию в алфавитном порядке представлений входящих в состав списка значений элементов.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Удалить (Delete)

Синтаксис: Удалить(<Элемент>)

Параметры:

<Элемент> (обязательный) Тип: Число, ЭлементСпискаЗначений.

Индекс удаляемого элемента либо сам элемент.

Описание: Удаляет элемент из списка значений.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Слишком маленькое разрешение экрана.