Содержание:
1. Описание из синтакс-помощника
2. Как сформировать новый Массив
Массив (тип значения 1С Массив) – это простейшая универсальная коллекция значений в информационной системе 1С, где элементы упорядочены по индексу (нумерация начинается с 0). Тип значения элементов может быть любой, включая тип значения Массив. Доступ к элементам массива осуществляется через индекс, по номеру которого можно получить доступ к значению элемента на платформе 1С 8.3.
1. Описание из синтакс-помощника
Доступность синтакс-помощника: Тонкий клиент 1С, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: Array.
2. Как сформировать новый Массив
Чтобы сформировать новый Массив, нужно присвоить переменной типа значения «Массив». Каждый Элемент в таком Массиве 1С, получает тип значения «Неопределено». В параметрах создания можно указать, какой Массив хотите создать.
Для пустого Массива:
МойНовыйМассив = Новый Массив();
Для создания одномерного Массива (одна колонка):
МойНовыйМассив = Новый Массив(ЧислоЭлементов);
Для создания N-мерногоМассива, где каждый Элемент так же Массив:
МойНовыйМассив = Новый Массив(ЭлементовПервогоУровня, ЭлементовВторогоУровня, …, ЭлементовN-Уровня);
В этом случае каждый Элемент первого уровня будет иметь тип значения Массив, внутри которого каждый Элемент второго уровня будет так же типом значения Массив и так далее, где на N-уровне Элементы будут с типом значения «Неопределено». Следовательно, количество Элементов в таком Массиве будет равно: ЭлементовПервогоУровня * ЭлементовВторогоУровня* … * ЭлементовN-Уровня
3. Способы заполнения Массива
Существует несколько способов заполнения Массива.
1. Метод «Добавить».
Добавляет Элемент в конец Массива:
МойНовыйМассив.Добавить(«Строка») Поле типа Строка
МойНовыйМассив.Добавить(42) Поле типа Число
МойНовыйМассив.Добавить(‘20190315123501’) Поле типа Дата состав Дата и время
МойНовыйМассив.Добавить(‘20190315’) Поле типа Дата состав Дата
Также любому Элементу может быть присвоен тип значения «Массив». Например:
МойНовыйМассив.Добавить(Новый Массив) Поле типа Массив
2. Метод «Вставить».
Следует отличать его от Метода «Добавить». Последний добавляет Элемент в конец Массива, а первый присваиваетновое значение Элементу:
МойНовыйМассив.Вставить(НомерИндекса,НовоеЗначениеЭлемента)
3. Метод «Количество».
Посредством метода доступно получение количество Элементов в Массиве. Следует обратить внимание, что Количество будет всегда на единицу больше последнего значения Индекса:
МойНовыйМассив.Количество()
4. Метод «Найти». Позволяет найти уникальный Элемент в Массиве, если такой элемент не будет найден, то возвращает значение «Неопределено»:
МойНовыйМассив.Найти(«Слово»)
МойНовыйМассив.Найти(42)
МойНовыйМассив.Найти(’20190315’)
5. Метод «Очистить».
Позволяет удалить все Элементы Массива делая его пустым:
МойНовыйМассив.Очистить()
6. Метод «Получить».
Позволяет получить значение Элемента по его Индексу:
МойНовыйМассив.Получить(ИндексЭлемента)
7. Метод «Удалить».
Позволяет удалить Элемент из Массива по Индексу:
МойНовыйМассив.Удалить(ИндексУдаляемогоЭлемента)
8. Метод «Установить».
Позволяет установить новое значение Элемента по Индексу, когда использование оператора [] (например,МойНовыйМассив[ИндексЭлемента]) невозможно.
МойНовыйМассив.Установить(ИндексЗаменяемогоЭлемента,НовоеЗначениеЭлемента)
9. Метод «ВГраница».
Позволяет получить наибольший Индекс в Массиве. Если Массив пустой, то возвращает-1:
4. Обход Элементов Коллекции
Для данной Коллекции значений доступен обход Элементов Коллекции посредством оператора «Для каждого». При обходе в Циклах выбираются значения Элементов Массива в порядке возрастания Индекса:
Для каждого ЭлементИз МассивЦикл
<Описание событий / вычислений>
КонецЦикла;
Например, при необходимости заменить Элементы на другие значения:
НовоеЧисловоеЗначение = 5;
Для каждого ЭлементИз МойНовыйМассивЦикл
Элемент = НовоеЧисловоеЗначение;
НовоеЧисловоеЗначение = (НовоеЧисловоеЗначение + 7) / 2;
КонецЦикла;
При этом возможен также обход Массива по иному порядку, используя оператор «Для». Следует учитывать, что в таком случае необходимо указывать границу Массива. Иначе по окончанию обхода цикла будет вызвана ошибка «Индекс находится за границами Массива»:
Для Итератор = 0ПоМойНовыйМассив.ВГраница()Цикл
<Описание событий / вычислений>
КонецЦикла;
Например, при необходимости выбрать из Массива все значения типа Число и перенести их в новый Массив:
МассивДляЧисел = Новый Массив();
Для Итератор = 0ПоМойНовыйМассив.ВГраница()Цикл
ЗначениеЭлемента = МойНовыйМассив[Итератор];
ЕслиЗначениеЭлемента= Тип («Число») Тогда
МассивДляЧисел.Добавить(ЗначениеЭлемента);
МойНовыйМассив.Удалить(Итератор);
КонецЕсли;
КонецЦикла;
При выполнении обхода многомерных Массивов выполняются те же конструкции, только с учетом мерности Массивов. Так, например, для трехмерного Массива обход его элементов будет выглядеть следующим образом:
Для Итератор1 = 0ПоМассив.ВГраница()Цикл
Сообщить (Массив[Итератор1]);
Для Итератор2 = 0ПоМассив[Итератор1].ВГраница()Цикл
Сообщить (Массив[Итератор1][Итератор2]);
Для Итератор3 = 0ПоМассив[Итератор1][Итератор2].ВГраница()Цикл
Сообщить (Массив[Итератор1] [Итератор2][Итератор3]);
КонецЦикла;
КонецЦикла;
КонецЦикла;
Специалист компании ООО «Кодерлайн»
Иван Каплин.