1 с 7 метод выбрать по значению

О чем эта статья

  • Что такое универсальные коллекции, когда и в каких случаях их необходимо использовать?
  • Что общего у всех универсальных коллекций? Какие приемы можно использовать для работы со всеми ними?
  • Что такое массив, как и когда его использовать? Какие у него есть методы?
  • Зачем использовать структуру? В чем её отличие от массива?
  • В каких случаях использовать список значений? Как отобразить его на форме?
  • Соответствие — что это и когда его использовать? В чем преимущества относительно структуры?
  • Для чего используется таблица значений? Как описать ее структуру? Как добавить/удалить строки? Как вывести ее на форму?
  • Дерево значений — для чего используется? Как заполнить и вывести на форму? Как с ним работать?

В статье рассматривается платформа 1С:Предприятие 8.3 актуальной редакции.

  • Дополнительные методы для Массива
  • Универсальная коллекция Структура
  • Универсальная коллекция Список значений
  • Универсальная коллекция Соответствие
  • Универсальная коллекция Таблица значений
  • Универсальная коллекция Дерево значений

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

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

Можно получить новую коллекцию вручную, обратившись к конструктору и создав экземпляр класса.

Конструкторы для многих универсальных коллекций являются параметризованными.

Соответствующее описание конструктора есть в синтакс-помощнике.

Таким образом, используя параметры конструктора, можно сразу задать желаемое поведение данного объекта.

Почти любую универсальную коллекцию можно создать с помощью конструктора (исключением являются табличные части, которые выступают в качестве объектов конфигурации).

Для того чтобы обратиться к элементу Массива НашМассив, можно использовать обращение по индексу, для этого индекс указывается в квадратных скобках.

Для некоторых коллекций существует также понятие номера строки. Номер строки начинается с единицы. Например, для табличной части есть такое свойство, как номер строки. Важно иметь ввиду, что если мы знаем номер строки и хотим обратиться по индексу, то в качестве индекса следует использовать значение на единицу меньше номера строки.

Для всех коллекций используется обход элементов коллекции. Обход возможен двумя способами: циклом Для и циклом Для каждого из.

Для большинства универсальных коллекций применимы методы: Количество, Индекс, Добавить, Вставить, Удалить и Найти.

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

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

Методы добавления новых значений в данную коллекцию существуют практически у любой универсальной коллекции. На рисунке представлено, как заполнить Массив значениями от 0 до 10 двумя способами.

Для того, чтобы добавить элемент в Массив мы можем использовать метод Добавить, в скобках указать добавляемое значение. При этом значение будет добавляться в конец списка, т.е. Массив будет постоянно увеличиваться за счет последней позиции.

Синтаксис: Вставить (<индекс>,<значение>)

Для удаления элементов из коллекции используется метод Удалить. В методе Удалить указывается по индексу, какой элемент мы будем удалять.

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

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

Пример использования: НашаПеременная = НашМассив.Найти(8);

Дополнительные методы для Массива

В частности, переменную КоличествоВМассиве можно было определить иначе:

Метод Установить позволяет присвоить значение элементу Массива по индексу.

Пример: НашМассив.Установить (2,8);

Можно для Массива использовать метод Получить, для того, чтобы прочитать значение по индексу, не обращаясь к использованию квадратных скобок.

Пример: НашаПеременная = НашМассив.Получить(2);

Универсальная коллекция Структура

Структура представляет собой коллекцию, каждое значение которой состоит из пары. Первый элемент пары называется Ключ. Второй элемент пары — Значение.

Структуру очень удобно использовать, если мы хотим создать некий список параметров. Если данная Структура называется НашаСтруктура, то обращаться к ее двум значениям мы будем следующим образом: НашаСтруктура.Код и НашаСтруктура.Имя.

Структура делает программный код читаемым (понятным). Структура применяется достаточно часто, гораздо чаще чем Массив.

Кроме того, Структура применяется в том случае, если процедура и функция содержат большое количество передаваемых параметров.

Отдельно следует отметить, что в качестве Ключа в Структуре может выступать не абсолютно любая строка. Накладываются определенные ограничения.

Допустимо начало Ключа с буквы или знака подчеркивания. Таким образом, Ключ должен удовлетворять требованиям к созданию идентификаторов.

Структура — это некое неупорядоченное множество. Именно поэтому для Структуры существует только метод вставки.

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

Как и Массив, конструктор Структуры может иметь параметры. Т.е. возможно описать само содержание Структуры, используя конструктор.

Например: НашаСтруктура = Новый Структура («Код,Имя», 133, «Вася»);

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

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

Если существует такой элемент, то система вернет значение Истина, в противном случае — Ложь.

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

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

СписокЗначений представляет собой линейный список элементов любого типа данных.

Первая колонка — Отметка. Она имеет булевский тип данных и позволяет пользователю либо ставить флажки, либо их снимать.

Третья колонка — само хранимое значение, т.е. это любой тип данных, причем в разных строках он может быть различным.

СписокЗначений — это тот объект, с которым может визуально работать пользователь. Т.е. СписокЗначений можно вывести на форму.

Найдем СписокЗначений в ситакс-помощнике. Конструктор СпискаЗначений не параметризованный (нельзя задать какие-то значения по умолчанию).

Методы СписокЗначений
  • Вставить(<индекс>, <значение>, <представление>, <пометка>, <картинка>) ;
  • Добавить(<значение>, <представление>, <пометка>, <картинка>);
  • Количество();
  • Индекс(<элемент>).

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

Существуют методы поиска: НайтиПоЗначению(<искомоезначение>); НайтиПоИдентификатору(<идентификатор>).

Существуют методы: СортироватьПоЗначению(<направление>); СортироватьПоПредставлению(<направление>).

Для использования этих методов в свойствах конфигурации Режим использования модальности должен быть установлен на значение Использовать.

Пример кода, вызываемого из модуля Управляемого приложения:

Код из модуля управляемого приложения
Код в пользовательском режиме
СписокЗначений отображение
Создание команды в форме
Обработчик действия в модуле формы
Пользовательский режим
Настройка в пользовательском режиме

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

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

При вставке элементов в коллекцию Соответствие помимо метода Вставить(<ключ>,<значение>) существует другой способ вставки значения — это использование обычного оператора присваивания.

Т.е. если элемент в коллекции не присутствовал, то с помощью оператора присваивания он будет добавлен, а если присутствовал, то будет обновлен.

Универсальная коллекция Таблица значений

Можно оставить колонки нетипизированными, тогда в одной колонке в разных строках могут храниться значения разных типов.

  • это объект, с которым может работать пользователь (таблицу значений можно вывести на экран, пользователь может ее заполнять, в дальнейшем введенные данные можно читать);
  • построение индексов для быстрого поиска;
  • клонирование, заполнение определенным значением всей колонки, выгрузка все колонки в массив.

Итак, ТаблицаЗначений состоит из набора строк и набора колонок. И строки, и колонки представляют собой коллекции.

Синтакс-помощник: ТаблицаЗначений

Важный момент! Процедура, которая формирует ТаблицуЗначений, должна компилироваться & НаСервере.

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

Например:

Для вызова данной процедуры будем использовать команду.

В описании ТаблицыЗначений в качестве элементов коллекции выступают именно СтрокиТаблицыЗначений.

КолонкаТаблицыЗначений

Чтобы присвоить значение колонке, мы через точку обращаемся по имени колонки или по индексу (с помощью квадратных скобок).

Для заполнения ТаблицыЗначений могут использоваться следующие методы:

ЗаполнитьЗначения(<значение>, <колонки>) — позволяет заполнить все колонки, либо выбранные колонки одним значением. ЗагрузитьКолонку(<массив>, <колонка>) — загружает колонку из массива. ВыгрузитьКолонку(<колонка>) — выгружает колонку в массив.

Скопировать(<строки>, <колонки>) — позволяет на основании существующей таблицы создать новую ТаблицуЗначений, при этом указывать не все строки и все колонки, а только некоторые из них. Возвращаемое значение — ТаблицаЗначений.

В ТаблицеЗначений существует метод Итог(<колонка>). Можно указать ту колонку, в которой нужно просуммировать числовые величины. Применительно к ранее показанному коду в Табло можно рассчитать значение: ТЗ.Итог(«Сумма«).

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

ТЗ.Свернуть

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

Далее у этого объекта («Таблица») нужно будет создать колонки с соответствующим именем и типом данных.

Свойства таблицы
Таблица в форме
Модуль формы

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

Поскольку строки могут быть подчинены друг другу, то для каждой строки может быть указан Родитель, а также подчиненные ей строки.

Создадим соответствующую команду Дерево и ее процедуру обработки.

Создадим ДеревоЗначений в котором одна родительская строка и две подчиненные.

Создадим реквизит формы ДерЗн (тип данных — ДеревоЗначений).

Для этого реквизита создадим колонки Год и Месяц.

Переместим соответствующий элемент ДерЗн на форму.

В конце Процедуры ДеревоНаСервере() допишем:

Проверим, что получилось в пользовательском режиме.

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

Обработка дерева значений с помощью рекурсии

В следующей статье рассмотрим, при помощи какого важного механизма разработчик может упростить обращение к элементу справочника из программного кода.

PDF-версия статьи для участников группы ВКонтакте

Если Вы еще не вступили в группу — сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

Ссылка доступна для зарегистрированных пользователей)Ссылка доступна для зарегистрированных пользователей)Ссылка доступна для зарегистрированных пользователей)

Источник

Поделиться:
Нет комментариев

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

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

×
Вам будет интересно