Список значений в 1С 8.3 на примерах
Список значений в 1С 8.3 — это объект, позволяющий строить динамические наборы значений и манипулировать ими.
Визуально можно представить как таблицу из четырёх колонок:
- значение,
- картинка,
- пометка,
- представление.
Список значений может быть наполнен значениями любых типов. Значения характеризуются позицией в списке (индексом).
Рассмотрим работу с объектом на примерах:
Содержание
- 1 Создание объекта СписокЗначений
- 2 Добавить элемент в список значений
- 3 Удалить элемент списка значений
- 4 Вставить элемент в список значений
- 5 Установить/снять пометки у всех элементов
- 6 Найти в списке значений
- 7 Узнать индекс элемента с известным значением
- 8 Отсортировать список значений
- 9 Сдвинуть элемент списка значений
- 10 Создать копию списка значений
- 11 Получить количество элементов списка значений
- 12 Перебор элементов списка значений
- 13 Загрузить/выгрузить в массив
- 14 Удалить все элементы из списка значений
- 15 Интерактивный выбор одного элемента из списка на форме
- 16 Интерактивная отметка значений из списка на форме
- 17 Преобразования таблицы значений в список значений
Создание объекта СписокЗначений
СПЗ = Новый СписокЗначений;
Добавить элемент в список значений
СПЗ.Добавить(101,"Телефон пожарной службы");//тип значения число СПЗ.Добавить("101","Телефон пожарной службы");//тип значения строка
Удалить элемент списка значений
СПЗ.Удалить(0);//удаление по индексу, нумерация индексов с "0"
Вставить элемент в список значений
СПЗ.Вставить(1,"102","Телефон полиции");
Установить/снять пометки у всех элементов
СПЗ.ЗаполнитьПометки(ИСТИНА); СПЗ.ЗаполнитьПометки(ЛОЖЬ);
Найти в списке значений
ЗначениеЭлемента = СПЗ.НайтиПоЗначению("101");
Узнать индекс элемента с известным значением
ИндексЭлемента = СПЗ.Индекс(ЗначениеЭлемента);
Отсортировать список значений
СПЗ.СортироватьПоЗначению(НаправлениеСортировки.Возр); //по возрастанию СПЗ.СортироватьПоПредставлению(НаправлениеСортировки.Убыв); //в алфавитном порядке по убыванию представлений
Сдвинуть элемент списка значений
СПЗ.Сдвинуть(0, 1); // Сдвигаем первый элемент "вниз"
Создать копию списка значений
КопияСПЗ = СПЗ.Скопировать();
Получить количество элементов списка значений
КоличествоЭлементов = СПЗ.Количество();
Перебор элементов списка значений
Для каждого Элемент Из СПЗ Цикл //построчный вывод элементов в окно сообщений Сообщить(Элемент.Представление + " - " + Элемент.Значение); КонецЦикла;
Загрузить/выгрузить в массив
МассивТелефонов = СПЗ.ВыгрузитьЗначения();//выгрузка в массив СПЗ.ЗагрузитьЗначения(МассивТелефонов);//загрузка из массива
Удалить все элементы из списка значений
СПЗ.Очистить();
Интерактивный выбор одного элемента из списка на форме
Модальный и немодальный режим. Универсальный способ:
&НаКлиенте Процедура ВызватьОкноДляВыбораЭлементаСПЗ(Команда) РежимМодальности = ПроверкаРежимаМодальности();//Проверяем используется ли режим модальности Если РежимМодальности Тогда //Модальный выбор ВыбЭлемент = СПЗ.ВыбратьЭлемент("Выбрать телефон экстренной службы"); Если ВыбЭлемент <> Неопределено Тогда Сообщить(ВыбЭлемент.Значение); КонецЕсли; Иначе //Немодальный выбор Оповещение = Новый ОписаниеОповещения("ПослеВыбораЭлемента", ЭтаФорма); СПЗ.ПоказатьВыборЭлемента(Оповещение, "Выбрать телефон экстренной службы"); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПослеВыбораЭлемента(Элемент, Параметры) Экспорт Если Элемент <> Неопределено Тогда Сообщить(Элемент.Значение); КонецЕсли; КонецПроцедуры &НаСервере Функция ПроверкаРежимаМодальности() Режим = Метаданные.РежимИспользованияМодальности; ПеречисляемоеСвойство = Метаданные.СвойстваОбъектов.РежимИспользованияМодальности; Если Режим = ПеречисляемоеСвойство.НеИспользовать Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции
Интерактивная отметка значений из списка на форме
Модальный и немодальный режим. Универсальный способ:
&НаКлиенте Процедура ВызватьОкноДляОтметкиЭлементаСПЗ(Команда) РежимМодальности = ПроверкаРежимаМодальности();//Проверяем используется ли режим модальности Если РежимМодальности Тогда Если СПЗ.ОтметитьЭлементы("Выбрать телефоны экстренных служб") Тогда Для Каждого Элемент Из СПЗ Цикл Если Элемент.Пометка Тогда Сообщить(Элемент.Значение); КонецЕсли; КонецЦикла; КонецЕсли; Иначе Оповещение = Новый ОписаниеОповещения("ПослеОтметкиЭлементов", ЭтотОбъект); СПЗ.ПоказатьОтметкуЭлементов(Оповещение,"Выбрать телефоны экстренных служб"); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПослеОтметкиЭлементов(Список, Параметры) Экспорт Если Список <> Неопределено Тогда Для Каждого Элемент Из Список Цикл Если Элемент.Пометка Тогда Сообщить(Элемент.Значение); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры
Преобразования таблицы значений в список значений
&НаКлиенте Процедура ЗагрузитьТЗвСПЗ(Команда) ГотовыйСписок = ДанныеДляЗагрузкиСервер(); КонецПроцедуры &НаСервере Функция ДанныеДляЗагрузкиСервер() ТЗ = Новый ТаблицаЗначений;//создаём таблицу значений СПЗ = Новый СписокЗначений;//создаём список значений //добавляем колонки в таблицу значений ТЗ.Колонки.Добавить("Службы"); ТЗ.Колонки.Добавить("НомераТелефонов"); //заполним значениями таблицу значений НовСтрока = ТЗ.Добавить(); НовСтрока.Службы = "МЧС"; НовСтрока.НомераТелефонов = "101"; НовСтрока = ТЗ.Добавить(); НовСтрока.Службы = "Полиция"; НовСтрока.НомераТелефонов = "102"; //загружаем номера экстренных служб в список значений через массив Массив = ТЗ.ВыгрузитьКолонку("НомераТелефонов");//выгружаем таблицу значений в массив СПЗ.ЗагрузитьЗначения(Массив);//загружаем массив в список значений Возврат СПЗ; КонецФункции
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
СПРОСИТЕ в комментариях!