Список значений — это универсальная коллекция для хранения некого списка значений. Список значений может хранить значения разных типов. ЭлементСпискаЗначений имеет 4 свойства: Значение, Представление, Пометка, Картинка. Список значений можно использовать для интерактивных действий с пользователем, например выбор документа из списка. Можно использовать и на клиенте и на сервере, а также передавать с клиента на сервер. В обычном приложении нельзя передавать на сервер. Создание списка значений Конструктор для создания пустого списка значений: //в списке нет элементов СписокДокументов = Новый СписокЗначений ; Как добавить значение в список значений Добавление новых элементов список значений возможно двумя способами: методом Добавить и методом Вставить . У метода Вставить можно указать индекс куда будет вставлено новое значение. //1 параметр - само значение //2 параметр - представление. Будет отображаться при интерактивном выборе //3 параметр - пометка. Если Истина, то при интерактивном выборе рядом будет //установлена галочка //4 параметр - картинка СписокДокументов = Новый СписокЗначений ; СписокДокументов . Добавить ( "Док1" , "Документ №1" , Ложь , БиблиотекаКартинок . Документ ) ; //можно сразу вставить в нужный индекс СписокДокументов . Вставить ( 1 , "Док2" , "Документ №2" , Ложь , БиблиотекаКартинок . Документ ) ; Удаление элемента из списка значений Для удаления значения из списка применяется метод Удалить . Он удаляет конкретный элемент по его индексу. Чтобы удалить все элементы из списка применяется метод Очистить . //удаление восьмого элемента из списка СписокДокументов . Удалить ( 7 ) ; //полностью очищает список значений СписокДокументов . Очистить ( ) ; Как получить значение списка значений по индексу Для получения значения списка значений можно воспользоваться методом Получить или оператором индексации [ ], указав нужный индекс элемента. Стоит отметить, что таким образом будет получен элемент списка значений, а не само значение. Для получения значения нужно обратиться к свойству Значение: //получит значение первого элемента ЗначениеСписка = СписокДокументов . Получить ( 0 ) . Значение ; //можно так: ЗначениеСписка = СписокДокументов [ 0 ] . Значение ; //а это элемент списка значений: ЭлементСписка1 = СписокДокументов [ 0 ] ; ЭлементСписка2 = СписокДокументов . Получить ( 0 ) ; Список значений и массив Метод ЗагрузитьЗначения позволяет загрузить все значения из массива в список значений. Если в списке значений уже что-то было, то все элементы будут удалены из него. Метод ВыгрузитьЗначения создает массив и выгружает в него все значения из списка значений: МассивДоков1 = Новый Массив ; МассивДоков1 . Добавить ( СсылкаНаДокумент1 ) ; МассивДоков1 . Добавить ( СсылкаНаДокумент2 ) ; МассивДоков1 . Добавить ( СсылкаНаДокумент3 ) ; //все значения массива будут загружены в список значений //если в списке значений уже были какие-то значения, то //они все будут удалены СписокДокументов . ЗагрузитьЗначения ( МассивДоков1 ) ; //в переменной МассивДоков2 будет массив всех значений списка МассивДоков2 = СписокДокументов . ВыгрузитьЗначения ( ) ; Сортировка списка значений Списка значений можно отсортировать как по значению, так и по представлению. Для сортировки по значению используется метод СортироватьПоЗначению . Для сортировки по представлению — метод СортироватьПоПредставлению . СписокДокументов = Новый СписокЗначений ; СписокДокументов . Добавить ( 2 , "два" ) ; СписокДокументов . Добавить ( 1 , "один" ) ; СписокДокументов . Добавить ( 4 , "четыре" ) ; СписокДокументов . Добавить ( 3 , "три" ) ; СписокДокументов . СортироватьПоЗначению ( ) ; //в результате будет следующий порядок: 1,2,3,4 СписокДокументов . СортироватьПоПредставлению ( ) ; //в результате будет следующий порядок: 2,1,3,4 //можно указать направление сортировки СписокДокументов . СортироватьПоЗначению ( НаправлениеСортировки . Убыв ) ; //в результате будет следующий порядок: 4,3,2,1 Количество элементов списка значений Чтобы узнать сколько в списке значений элементов применяется метод Количество . СписокДокументов = Новый СписокЗначений ; СписокДокументов . Добавить ( 2 , "два" ) ; СписокДокументов . Добавить ( 1 , "один" ) ; СписокДокументов . Добавить ( 4 , "четыре" ) ; СписокДокументов . Добавить ( 3 , "три" ) ; КолвоЭлементов = СписокДокументов . Количество ( ) ; //4 Поиск в списке значений Метод НайтиПоЗначению позволяет найти элемент списка значений. Параметром передается значение, которое нужно найти в списке. Данный метод вернет элемент списка, если есть элемент с таким значением, и Неопределено, если такого элемента нет. НайдЗнач = СписокДокументов . НайтиПоЗначению ( 3 ) ; //если в списке нет такого значения, то НайдЗнач = Неопределено Если Не НайдЗнач = Неопределено Тогда //в НайдЗнач будет элемент списка, а не значение Сообщить ( НайдЗнач . Значение ) ; КонецЕсли ; Как создать копию списка значений Для создания полной копии списка значений удобно использовать метод Скопировать : КопияСписка = СписокДокументов . Скопировать ( ) ; Выбор из списка значений Список значений позволяет интерактивно выбрать из него значение. Для этого используется метод ПоказатьВыборЭлемента . При этом в форме выбора будет отображаться именно представление элемента списка значений, а не значение: &НаКлиенте Процедура Команда1 ( Команда ) СписокДокументов = Новый СписокЗначений ; СписокДокументов . Добавить ( 1 , "один" ) ; СписокДокументов . Добавить ( 2 , "два" ) ; СписокДокументов . Добавить ( 3 , "три" ) ; СписокДокументов . Добавить ( 4 , "четыре" ) ; //в списке для выбора будут представления, а не значения ОбратныйВызов = Новый ОписаниеОповещения ( "ОбратныйВызов" , ЭтотОбъект ) ; СписокДокументов . ПоказатьВыборЭлемента ( ОбратныйВызов , "Выберите элемент" ) ; КонецПроцедуры &НаКлиенте Процедура ОбратныйВызов ( ВыбрЭлСписка , ДопПараметры ) Экспорт Если Не ВыбрЭлСписка = Неопределено Тогда Сообщить ( "Вы выбрали " + ВыбрЭлСписка . Значение ) ; КонецЕсли ; КонецПроцедуры В результате на экран будет выведена форма для выбора значения: После выбора программа сообщит какой элемент был выбран: Для возможности выбора нескольких элементов используется метод ПоказатьОтметкуЭлементов . В этом случае на форме выбора, помимо представлений элементов, будет возможность отметить флажком выбранные элементы. &НаКлиенте Процедура Команда1 ( Команда ) //БиблиотекаКартинок.Справочник - картинка в списке для выбора СписокДокументов = Новый СписокЗначений ; СписокДокументов . Добавить ( 1 , "один" , , БиблиотекаКартинок . Справочник ) ; СписокДокументов . Добавить ( 2 , "два" , , БиблиотекаКартинок . Справочник ) ; СписокДокументов . Добавить ( 3 , "три" , , БиблиотекаКартинок . Справочник ) ; СписокДокументов . Добавить ( 4 , "четыре" , , БиблиотекаКартинок . Справочник ) ; //в списке для выбора будут представления и поле для установки галочки ОбратныйВызов = Новый ОписаниеОповещения ( "ОбратныйВызов" , ЭтотОбъект ) ; СписокДокументов . ПоказатьОтметкуЭлементов ( ОбратныйВызов , "Отметьте нужные элементы" ) ; КонецПроцедуры &НаКлиенте Процедура ОбратныйВызов ( Список , ДопПараметры ) Экспорт Для Каждого ЭлементСписка Из Список Цикл Если ЭлементСписка . Пометка Тогда Сообщить ( ЭлементСписка . Значение ) ; КонецЕсли ; КонецЦикла ; КонецПроцедуры В результате будет открыта форма с возможностью установки галочки возле каждого значения списка: После выбора программа сообщит какие элементы были выбраны: Перебор списка значений Перебрать список значений можно как с помощью цикла Для Каждого, так и с помощью цикла Для. В обоих случаях при изменении значения в элементе списка, в самом списке значений значение тоже будет изменено. //1 способ Для Каждого Док Из СписокДокументов Цикл Док . Значение = Док . Значение * 2 ; КонецЦикла ; //2 способ Для Счетчик = 0 По СписокДокументов . Количество ( ) - 1 Цикл СписокДокументов [ 0 ] . Значение = СписокДокументов [ 0 ] . Значение / 2 ; КонецЦикла ; Как типизировать список значений Для ограничения возможных типов списка значений нужно заполнить его свойство ТипЗначения : СписокДокументов = Новый СписокЗначений ; СписокДокументов . ТипЗначения = Новый ОписаниеТипов ( "Число" ) ; //теперь будет выполняться преобразование в тип Число СписокДокументов . Добавить ( 1 ) ; СписокДокументов . Добавить ( "один" ) ; СписокДокументов . Добавить ( Истина ) ; СписокДокументов . Добавить ( Дата ( 2020 , 1 , 1 ) ) ; //в списке: //1 //0 //1 - так как истина преобразуется в 1 //0 Как ограничить возможные значения в списке значений Также можно ограничить список возможных добавляемых значений в список значений. Для этого в свойстве ДоступныеЗначения нужно указать ссылку на другой список значений. Тогда в список значений можно будет добавлять значения только из списка в свойстве ДоступныеЗначения, все остальные значения будут преобразованы в Неопределено: Ограничения = Новый СписокЗначений ; Ограничения . Добавить ( 2 ) ; Ограничения . Добавить ( 4 ) ; СписокДокументов = Новый СписокЗначений ; СписокДокументов . ДоступныеЗначения = Ограничения ; //в список можно добавить только значения 2 и 4 //все остальные будут добавляться как Неопределено СписокДокументов . Добавить ( 1 ) ; СписокДокументов . Добавить ( 2 ) ; СписокДокументов . Добавить ( 3 ) ; СписокДокументов . Добавить ( 4 ) ; //в списке: //Неопределено //2 //Неопределено //4 Смотрите также: Электронный учебник по по программированию в 1С Рекомендации по изучению программирования 1С с нуля Программное решение для сдачи и подготовки к экзаменам Программирование в 1С 8.3 с нуля — краткий самоучитель Комплексная подготовка программистов 1С:Предприятие 8.2 Сайты с уроками программирования и со справочниками Youtube-каналы с уроками программирования Сайты для обучения программированию Лекции и уроки