Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебно-методическое пособие РЭИС.doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
3.85 Mб
Скачать

5.2. Структура и соответствие

Структура и соответствие являются динамическими наборами данных — коллекциями значений. Каждый элемент такой коллекции представляет собой пару «ключ» и «значение». Ключи структуры и соответствия уникальны, поэтому они однозначно идентифицируют элемент коллекции.

Структуры часто применяются в методах объектов для указания отборов,

Отбор = Новый Структура("Цена", 100);

Выборка = Справочники.Номенклатура . Выбрать (,Отбор);

Структуры можно использовать для передачи списка параметров (в версии 7.7 для этой цели часто применялся список значений и его методы Установить и Получить):

Параметры = Новый Структура("ДатаНач,ДатаКон");

Параметры.ДатаНач = ВыбДата;

Параметры.ДатаКон = ДобавитьМесяц(ВыбДата,1);

Если ВыбТипОтчета <> 0 Тогда

Параметры.Вставить("ТипОтчета",ВыбТипОтчета);

КонецЕсли;

глСформироватьОбороты(Параметры);

Можно перебрать элементы структуры или соответствия с помощью конструкции «Для Каждого». Каждый элемент коллекции является объектом специального типа КлючИЗначение:

Для Каждого парам Из Параметры Цикл

ИмяПараметра = парам.Ключ;

Значение = парам.Значение;

КонецЦикла;

Для структуры можно обращаться к элементам коллекции через точку, поскольку ключи являются свойствами структуры:

НачДата = парам.ДатаНач;

КонДата = парам.ДатаКон;

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

Найдено = парам.Свойство("ТипОтчета",ВыбТипОтчета);

Если Найдено Тогда

СформироватьПользовательскийОтчет(ВыбТипОтчета);

Иначе

СформироватьОтчетПоУмолчанию();

КонецЕсли;

У соответствия нет метода Свойство и обращение производится с помощью оператора [...] или метода Получить:

ТоварАналог = соотвАналоги[Товар].Значение;

5.3. Список значений

Список значений — это аналог одномерного массива, который предназначен в основном для решения интерфейсных задач, например, при использовании элементов управления СписокВыбора и ПолеВыбора.

В списке значения могут храниться значения разных типов, хотя можно наложить ограничение с помощью свойства ТипЗначения.

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

  • Значение — собственно хранимое значение.

  • Представление — пользовательское представление значения, которое будет показано при выводе значения на экран, например, в диалоге выбора значения из списка. Если представление не указано, то оно формируется системой автоматически.

  • Пометка — пометка (флажок), связанная со значением. Может быть использована для отметки некоторых значений из списка.

  • Картинка — графическое изображение, связанное с данным значением.

В 1С:Предприятии 8.0 объект СписокЗначений состоит из объектов типа ЭлементСпискаЗначений, которые имеют свойства Значение, Представление, Пометка и Картинка.

Создание новых списков значений производится с помощью ключевого слова Новый:

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

Ниже демонстрируются приемы добавления и удаления элементов списка значений:

сзСотр. Очистить(); //удалим все элементы

//У следующего элемента индекс 0, представление "Иванов Иван"

сзСотр.Добавить("Иванов","Иванов Иван");

//У следующего элемента будет индекс 1, представление "Петров Петр"

//и установлена пометка

сзСотр.Добавить("Петров","Петров Петр", Истина);

сзСотр.Удалить(1); //удалить 2-й элемент, т.е. Петрова

сзСотр.Вставить(0,"Сидоров"); //Иванов сдвигается ниже

сзСотр.Сдвинуть(1,-1); //сдвинем Иванова обратно к началу

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

сзСотр[0].Значение = "Кузнецов";

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

//1-й вариант

Для Каждого эл Из сзСотр Цикл

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

КонецЦикла;

//2-й вариант

Для н = 0 По сзСотр.Количество()-1 Цикл

Сообщить(сзСотр[н].Значение);

КонецЦикла;

В списке значений можно искать заданное значение:

НайденныйЭлементСписка = сзСотр.НайтиПоЗначению("Иванов");

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

Сообщить("Элемент найден!");

КонецЕсли;

Как уже говорилось выше, в списке значений могут быть пометки, которые представляют собой флажки (значения типа «булево»). С помощью пометок несколько значений списка могут быть выделены, и тем самым они будут отличаться от остальных. Назначение пометок определяется проектной логикой. Разработчик может программно считывать и устанавливать пометки у элементов списка значений:

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

сзСотр.Добавить("Иванов",,Истина);//пометка установлена

сзСотр.Добавить("Петров");//пометка не установлена

сзСотр.Добавить("Сидоров");//пометка не установлена

ВыборПроизведен = сзСотр.ОтметитьЭлементы("Укажите сотрудников");

Если ВыборПроизведен Тогда

Для Каждого эл Из сзСотр Цикл

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

Сообщить("Отмечен сотрудник " + эл.Значение);

КонецЕсли;

КонецЦикла;

КонецЕсли;

Методы ВыбратьЭлемент и ОтметитьЭлементы открывают диалоговое окно для пользователя, в котором он может выбрать один элемент или расставить пометки, тем самым выбрав несколько элементов.

Элементы списка значений могут быть легко отсортированы по значению или по представлению:

сзСотр.СортироватьПоЗначению(НаправлениеСортировки.Возр);

сзСотр.СортироватьПоПредставлению(НаправлениеСортировки.Убыв);

В список значений можно загрузить значения из массива и выгрузить значения в массив, например:

мас = Новый Массив;

мас.Добавить("Иванов");

мас.Добавить("Якушин");

мас.Добавить("Сидоров"};

сзСотр.ЗагрузитьЗначения(мас);

сзСотр.СортироватьПоЗначению();

мас2 = сзСотр.ВыгрузитьЗначения();

При размещении в форме поля списка автоматически создается новый реквизит формы типа СписокЗначений. Через этот реквизит можно управлять содержимым списка, добавлять или удалять элементы, расставлять пометки, задавать картинки. Следует понимать, что ПолеСписка — это не список значений, а элемент управления, имеющий собственный набор свойств и методов. Со списком значений также тесно связан элемент управления ПолеВыбора. Его свойство СписокВыбора представляет собой список значений, из которого пользователь может выбрать одно значение.