Преобразовать массив в список значений 1с
Массив в платформе 1С 8.3 это самая простая универсальная коллекция значений.
Что такое Массив?
Массив в языке программирования 1С — это коллекция элементов, следующих друг за другом, которые могут быть доступны с помощью индекса массива. Элементы могут быть любого типа, в том числе и типа Массив. У каждого элемента в массиве есть уникальный номер, который называют Индексом. Посредством индекса можно получить доступ к данному элементу.
Все элементы в массиве упорядочены, т.е. первый элемент имеет индекс, равный нулю, второй — одному, и так далее.
Создать массив можно при помощи конструктора Новый
«КоличествоЭлементов» — необязательный параметр. Он может быть один — тогда мы будем иметь одномерный массив, а также их может быть несколько — тогда мы имеем многомерный массив.
— Одномерный массив из 10 элементов.
Двумерный массив из 6 элементов (три строки, два столбца).
Массив, не имеющий ни одного элемента, — пустой массив.
В отличие от таблиц значений 1С, работать с массивами можно как в режим тонкого клиента, так и в режим толстого клиента.
Имейте в виду, что когда Вы создадите не пустой массив (одномерный или многомерный), его элементы уже будут существовать, но с не заполненными значениями. Если Вы посмотрите на данный массив в отладчике, то увидите напротив каждого элемента тип Неопределено.
Обращаться к элементу массива можно посредством индекса. Делается это с помощью оператора «квадратные скобки».
Как видите, элементы массива могут иметь разные типы ( в том числе ссылочные).
При помощи индекса и квадратных скобок можно как задать какой-то элемент массива, так и прочитать этот элемент.
Индекс внутри скобок не должен превышать общего количества элементов минус один (т.к. индекс начинается с нуля). Если мы напишем такой код:
То при его выполнении, возникнет ошибка «Индекс находится за границами массива»
Хоть мы и указали у конструктора массивов в скобках значение 5, но обращаться может только до 4 индекса, поскольку нумерация индексов начинается с нуля.
Перебор элементов массива
Перебрать все элементы массива можно двумя способами. Первый способ – с помощью так называемого «китайского кода», когда присваиваем каждому элементу массива нужное значение. Иногда это бывает необходимо.
Но чаще необходимо прочитать каждый элемент массива в цикле. Для этого в теле цикла нужно обойти индексы от первого до последнего. Сделать это можно при помощи цикла Для…Цикл.
Или с помощью цикла Для каждого … Цикл
Где в переменной ЭлМассив для каждой итерации содержится соответствующее значение элемента массива.
Количество элементов массива
Узнать количество элементов массива можно двумя способами. С помощью метода Количество() и метода ВГраница(). Метод Количество() возвращает количество элементов массива (т.е. то число, что задается в скобках конструктора массива), а метод ВГраница() самый максимальный индекс элемента массива или граница массива. В этом случае перебор элементов массива в цикле возможен двумя способами.
Второй способ считается более правильным.
Добавление элементов массива
Добавить элемент массива можно с помощью методов Добавить() и Вставить(). Первый метод добавляет элемент в конец массива, а второй вставляет элемент в нужный индекс массива.
В этом коде мы создали пустой массив, потом добавили элемент (он же первый), потом вставили на нулевой индекс элемент, а потом добавили. Должен получиться следующий результат.
Многомерный массив
Многомерным массивом в языке программирования 1С называется массив, элементами которого являются массивы. Если одномерный массив создавался посредством конструктора с одним параметром, то в многомерном массиве может быть два и больше параметров.
МассивМн1 = Массив(3,2,5);
В этом примере мы создали массив, у которого будет три элемента, каждый из которых будет массивом, содержащим по два массива, в каждом из которых будет пять элементов.
Например, создадим двумерный массив:
Статьи о других универсальных коллекциях значений в 1С
Более подробно о работе с массивами и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
Форум
Создание объекта СписокЗначений
Список значений - это аналог одномерного массива в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Объект "Список значений" имеет множество полезных возможностей и работает очень быстро. Следует учитывать, что в языке 1С есть и одномерные массивы в том смысле, как это принято в других языках программирования (Перем мас[10]). Список значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.
Добавление значений в список
//у каждого значения в СпискеЗначений есть экранное представление
//если оно не указано, то используется стандартное строковое представление объекта
СписокЗнач.ДобавитьЗначение("Иванов Иван Иванович");
СписокЗнач.ДобавитьЗначение(Сотрудник);
СписокЗнач.ДобавитьЗначение(1,"Значение №1");
СписокЗнач.УстановитьЗначение(3,3,"Значение №3"); //установить новое значение и представление 3-й позиции
Перебор списка значений
стр = "";
Для Номер = 1 По СписокЗнач.РазмерСписка() Цикл
. значение = СписокЗнач.ПолучитьЗначение(Номер, стр); //получить значение и представление
. Сообщить(значение + ", " + стр);
КонецЦикла;
Сортировка списка значений
//сортировать по значению
СписокЗнач.Сортировать(); //по возрастанию
СписокЗнач.Сортировать(1); //по убыванию
//сортировать по представлению
СписокЗнач.СортироватьПоПредставлению(); //по возрастанию
СписокЗнач.СортироватьПоПредставлению(1); //по убыванию
Поиск значения в списке
//поиск по значению
Синтаксис: НайтиЗначение()
Возвращает номер позиции списка, в которой найдено значение или 0, если не найдено
номстр = СписокЗнач.НайтиЗначение (Сотрудник);
//проверка вхождения значения в список
//работает очень быстро, если между проверками список не изменяется.
//если передается элемент справочника, а в списке хранятся группы справочника
//тогда проверяется вхождение элемента справочника в группу
Если СписокЗнач.Принадлежит(Сотрудник)=1 Тогда
.
КонецЕсли;
Удаление значений из списка
СписокЗнач.УдалитьВсе(); //очистить список значений
//удаляет значения из указанной позиции
СписокЗнач.УдалитьЗначение(откуда, [сколько]);
Список значений как элемент диалога
Список значений может использоваться в экранных формах как элемент диалога с пользователем.
//установить курсор на указанную строку или можно узнать, где находится курсор.
ТекСтрока = СписокЗнач.ТекущаяСтрока(НовСтрока);
//список значений в диалоге может иметь пометки (флажки)
пометка = СписокЗнач.Пометка(Позиция); //прочитать пометку у значения списка
СписокЗнач.Пометка(Позиция,1); //установить пометку у значения списка
СписокЗнач.Пометка(Позиция,0); //снять пометку у значения списка
Выгрузка и загрузка списка значений
//выгрузка в другой список значений или таблицу значений
Синтаксис: Выгрузить(,,)
СписокЗнач.Выгрузить(НовыйСписок,1,10); //выгрузить первые 10 значений
//выгрузка списка значений в строку с разделителями
стр = СписокЗнач.ВСтрокуСРазделителями(); //возвращает строку: 10,12,"Иванов","Петров"
//загрузка списка значений из строки с разделителями
//обратите внимание на двойные кавычки для строковых значений
СписокЗнач.ИзСтрокиСРазделителями("10,12,""Иванов"",""Петров""");
Список значений 1С с натяжкой можно назвать расширенным аналогом массива 1С. Это также – набор значений (значения могут разных типов), есть поиск и сортировка значений.
В дополнение – отличия списка значений 1С от массива 1С.
В списке значений отсутствует:
- список значений 1С создается пустой, а значений добавляются потом (т.е. недоступно: Массив = Новый Массив(10))
- многомерность (хотя элементом списка значений 1С может быть другой элемент массива значений)
- метод ВГраница()
В списке значений 1С есть дополнительные возможности:
- в массиве «элемент» — это непосредсвенное значение, а в списке значений 1С «элемент» это структура со свойствами .Значение и .Представление
- каждый элемент списка значений 1С отображается в интерфейсе не по значению, а по представлению (если оно задано), которое может сильно отличаться от значения (так как задал программист)
- у каждого элемента может быть отображена картинка и «чекбокс» (квадратик для установки галочки «отмечено или нет»)
- у списка значений 1С есть метод выбора пользователем значения из списка.
Список значений 1С часто используется:
А) Как обычный массив
Б) Для работа со списком значений 1С на интерфейсе (например выбор значения в «выпадающем списке»)
В) Для отборов в интерфейсных списках (отбор по множеству значений).
Список значений 1С можно использовать для отбора в запросе полностью также, как и массив (см. пример в «Работа с массивами»).
Список значений 1С можно создать из массива:
спЗначений = Новый СписокЗначений();
спЗначений.ЗагрузитьЗначения(Массив);
Массив можно создать из списка значений 1С:
Массив = спЗначений.ВыгрузитьЗначения();
Пример — создадим список значений 1С из 2 значений:
спЗначений = Новый СписокЗначений(); //массив без фиксированного кол-ва значений
ГСЧ = Новый ГенераторСлучайныхЧисел(); //будем заполнять случайными числами
спЗначений.Добавить( ГСЧ.СлучайноеЧисло(0, 1000) );
спЗначений.Добавить( ГСЧ.СлучайноеЧисло(0, 1000) );
//цикл прохода каждого значения массива, сколько бы их ни было
Для каждого Знч из спЗначений Цикл
Сообщить(Знч.Значение); //обратите внимание – отличия от массива, обращаемся к значению «ячейки» через .Значение
КонецЦикла;
Объекты типа массив в 1С 8.3 представляют собой совокупность упорядоченных значений любого типа, в том числе и типа «массив», что в свою очередь позволяет организовывать многомерные массивы. Идентификация значений осуществляется по индексам, нумерация которых начинается с «0».
Создание массива
Синтаксис:
Примеры:
Добавление элементов в массив
Примеры:
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Получение значения элемента по индексу
Поиск в массиве 1С
Присвоение значений элементам массива
Примеры:
Как узнать количество элементов массива (размер массива)
Перебор массива 1С
Примеры:
Перебор всех элементов двумерного массива
Примеры:
Удаление элементов из массива
Примеры:
Как разложить строку в массив
Пример преобразования массива в список значений
Пример преобразования массива в таблицу значений
Сортировка массива 1С разными способами
Примеры:
Как свернуть массив в 1С
Пример:
Поддержите нас, расскажите друзьям!
СПРОСИТЕ в комментариях!
При использовании данного сайта, вы подтверждаете свое согласие на использование файлов cookie в соответствии с настоящим уведомлением в отношении данного типа файлов. Если вы не согласны с тем, чтобы мы использовали данный тип файлов, то вы должны соответствующим образом установить настройки вашего браузера или не использовать сайт.
Отправляя любую форму на сайте, вы соглашаетесь с политикой конфиденциальности данного сайта.
Список значений в 1С 8.3 — это объект, позволяющий строить динамические наборы значений и манипулировать ими.
Визуально можно представить как таблицу из четырёх колонок:
- значение,
- картинка,
- пометка,
- представление.
Список значений может быть наполнен значениями любых типов. Значения характеризуются позицией в списке (индексом).
Рассмотрим работу с объектом на примерах:
Создание объекта СписокЗначений
Добавить элемент в список значений
Удалить элемент списка значений
Вставить элемент в список значений
Установить/снять пометки у всех элементов
Найти в списке значений
Узнать индекс элемента с известным значением
Отсортировать список значений
Сдвинуть элемент списка значений
Создать копию списка значений
Получить количество элементов списка значений
Перебор элементов списка значений
Загрузить/выгрузить в массив
Удалить все элементы из списка значений
Интерактивный выбор одного элемента из списка на форме
Модальный и немодальный режим. Универсальный способ:
Интерактивная отметка значений из списка на форме
Модальный и немодальный режим. Универсальный способ:
Преобразования таблицы значений в список значений
Поддержите нас, расскажите друзьям!
СПРОСИТЕ в комментариях!
При использовании данного сайта, вы подтверждаете свое согласие на использование файлов cookie в соответствии с настоящим уведомлением в отношении данного типа файлов. Если вы не согласны с тем, чтобы мы использовали данный тип файлов, то вы должны соответствующим образом установить настройки вашего браузера или не использовать сайт.
Отправляя любую форму на сайте, вы соглашаетесь с политикой конфиденциальности данного сайта.
Читайте также: