Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

Список значений в 1С 8.3 на примерах

Список значений в 1С 8.3 — это объект, позволяющий строить динамические наборы значений и манипулировать ими.

Визуально можно представить как таблицу из четырёх колонок:

  • значение,
  • картинка,
  • пометка,
  • представление.

Список значений может быть наполнен значениями любых типов. Значения характеризуются позицией в списке (индексом).

Рассмотрим работу с объектом на примерах:

Создание объекта СписокЗначений

СПЗ = Новый СписокЗначений;

Добавить элемент в список значений

СПЗ.Добавить(101,"Телефон пожарной службы");//тип значения число
СПЗ.Добавить("101","Телефон пожарной службы");//тип значения строка

Удалить элемент списка значений

СПЗ.Удалить(0);//удаление по индексу, нумерация индексов с "0"

Вставить элемент в список значений

СПЗ.Вставить(1,"102","Телефон полиции");

Установить/снять пометки у всех элементов

СПЗ.ЗаполнитьПометки(ИСТИНА);
СПЗ.ЗаполнитьПометки(ЛОЖЬ);

Найти в списке значений

ЗначениеЭлемента = СПЗ.НайтиПоЗначению("101");

Узнать индекс элемента с известным значением

ИндексЭлемента = СПЗ.Индекс(ЗначениеЭлемента);

Отсортировать список значений

СПЗ.СортироватьПоЗначению(НаправлениеСортировки.Возр);
//по возрастанию СПЗ.СортироватьПоПредставлению(НаправлениеСортировки.Убыв);
//в алфавитном порядке по убыванию представлений

Сдвинуть элемент списка значений

СПЗ.Сдвинуть(0, 1); // Сдвигаем первый элемент "вниз"

Создать копию списка значений

КопияСПЗ = СПЗ.Скопировать();

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

КоличествоЭлементов = СПЗ.Количество();

Перебор элементов списка значений

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

Загрузить/выгрузить в массив

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

Удалить все элементы из списка значений

СПЗ.Очистить();

Интерактивный выбор одного элемента из списка на форме

Модальный и немодальный режим. Универсальный способ:

&НаКлиенте
Процедура ВызватьОкноДляВыбораЭлементаСПЗ(Команда)

РежимМодальности = ПроверкаРежимаМодальности();//Проверяем используется ли режим модальности

Если РежимМодальности Тогда

//Модальный выбор

ВыбЭлемент = СПЗ.ВыбратьЭлемент("Выбрать телефон экстренной службы");

Если ВыбЭлемент <> Неопределено Тогда

Сообщить(ВыбЭлемент.Значение);

КонецЕсли;

Иначе

//Немодальный выбор

Оповещение = Новый ОписаниеОповещения("ПослеВыбораЭлемента", ЭтаФорма);

СПЗ.ПоказатьВыборЭлемента(Оповещение, "Выбрать телефон экстренной службы");

КонецЕсли;

КонецПроцедуры


&НаКлиенте
Процедура ПослеВыбораЭлемента(Элемент, Параметры) Экспорт

Если Элемент <> Неопределено Тогда

Сообщить(Элемент.Значение);

КонецЕсли;

КонецПроцедуры


&НаСервере
Функция ПроверкаРежимаМодальности()

Режим = Метаданные.РежимИспользованияМодальности;

ПеречисляемоеСвойство = Метаданные.СвойстваОбъектов.РежимИспользованияМодальности;

Если Режим = ПеречисляемоеСвойство.НеИспользовать Тогда

Возврат Ложь;

Иначе

Возврат Истина;

КонецЕсли;

КонецФункции

Интерактивная отметка значений из списка на форме

Модальный и немодальный режим. Универсальный способ:

&НаКлиенте
Процедура ВызватьОкноДляОтметкиЭлементаСПЗ(Команда)

РежимМодальности = ПроверкаРежимаМодальности();//Проверяем используется ли режим модальности
Если РежимМодальности Тогда

Если СПЗ.ОтметитьЭлементы("Выбрать телефоны экстренных служб") Тогда

Для Каждого Элемент Из СПЗ Цикл

Если Элемент.Пометка Тогда
Сообщить(Элемент.Значение);
КонецЕсли;

КонецЦикла;

КонецЕсли;

Иначе

Оповещение = Новый ОписаниеОповещения("ПослеОтметкиЭлементов", ЭтотОбъект);

СПЗ.ПоказатьОтметкуЭлементов(Оповещение,"Выбрать телефоны экстренных служб");

КонецЕсли;

КонецПроцедуры


&НаКлиенте
Процедура ПослеОтметкиЭлементов(Список, Параметры) Экспорт

Если Список <> Неопределено Тогда

Для Каждого Элемент Из Список Цикл

Если Элемент.Пометка Тогда

Сообщить(Элемент.Значение);

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецПроцедуры

 

Преобразования таблицы значений в список значений

&НаКлиенте
Процедура ЗагрузитьТЗвСПЗ(Команда)
ГотовыйСписок = ДанныеДляЗагрузкиСервер();
КонецПроцедуры

&НаСервере
Функция ДанныеДляЗагрузкиСервер()
ТЗ = Новый ТаблицаЗначений;//создаём таблицу значений
СПЗ = Новый СписокЗначений;//создаём список значений

//добавляем колонки в таблицу значений
ТЗ.Колонки.Добавить("Службы");
ТЗ.Колонки.Добавить("НомераТелефонов");

//заполним значениями таблицу значений
НовСтрока = ТЗ.Добавить();
НовСтрока.Службы = "МЧС";
НовСтрока.НомераТелефонов = "101";

НовСтрока = ТЗ.Добавить();
НовСтрока.Службы = "Полиция";
НовСтрока.НомераТелефонов = "102";

//загружаем номера экстренных служб в список значений через массив
Массив = ТЗ.ВыгрузитьКолонку("НомераТелефонов");//выгружаем таблицу значений в массив
СПЗ.ЗагрузитьЗначения(Массив);//загружаем массив в список значений
Возврат СПЗ;

КонецФункции

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

Добавить комментарий:

Ваш адрес email не будет опубликован.