Понятие «массив» уже давно используется в программировании и, чаще всего, под ним понимают некоторую структуру в памяти, состоящую из последовательности элементов. Массив в 1С – самая простая из универсальных коллекций значений. Помимо массива к универсальным коллекциям относятся:
- Список значений (в отличие от массива у значений из списка есть представление, реализована возможность сортировки и интерфейсного представления коллекции);
- Таблица значений – коллекция, имеющая колонки для расширенного описания значения, подобную структуру можно получить, выполнив запрос;
- Дерево – очень похоже на таблицу, дополненную структурой подчиненности;
- Структура – динамический набор имен и значений переменных;
- Соответствие – подобно структуре, только переменные сопоставляются не строковым представлениям, а друг другу.
Методы массива
Программное создание экземпляра массива происходит с помощью с помощью оператора Новый() (Рис.1).
Рис.1
- Как видно из приведенного примера массивы можно создавать как с фиксированным количеством элементов, так и без этого ограничения.
- Прежде, чем приступать к обсуждению методов работы с массивом, давайте определимся с двумя понятиями:
- Индекс элемента – можно представить как порядковый номер отдельно взятого значения;
- Количество элементов – число элементов в коллекции, его определение доступно с помощью метода Количество().
Важно знать: в 1С подсчет количества значений любой коллекции начинается с 1, а раздача индексов с 0, т.е первый элемент в массиве имеет индекс 0. Таким образом, обход коллекции с помощью цикла с итератором должен начинаться с 0 и заканчиваться количеством элементов минус 1, в противном случае система с помощью окна (Рис.2) уведомит о наступлении исключительной ситуации.
Рис.2
Любой объект конфигурации имеет свои методы для работы, массив не исключение, перечислим их с некоторой расшифровкой:
- ВГраница() – с помощью метода можно получить максимальный индекс элемента, для пустого массива будет возвращено значение (-1);
- Вставить() – этот метод имеет два параметра: индекс и значение, индекс указывает куда в массив вставить новый элемент, добавляемое значение может быть пустым;
- Добавить() – этот метод вставки значения можно использовать, когда место размещения элемента непринципиально, с его помощью новые данные будут записаны в конец имеющегося массива;
- Найти() – в случае успешного выполнения возвращает индекс указанного в скобках значения, в противном случае возвращает «Неопределено»;
- Очистить() –очищает коллекцию;
- Получить() – читает данные, расположенные в массиве по указанному индексу, можно заменить квадратными скобками [];
- Удалить() – удаляет элемент с указанным индексом;
- Установить() – заменяет данные в указанной ячейке массива.
Одномерные и многомерные массивы
В простейшем случае одномерный массив может содержать значения различных типов (Рис.3)
Рис.3.
Результат выполнения вышеприведенного кода представлен на Рис.4
Рис.4
Таким образом, мы получили одномерный массив, состоящий из строкового значения, ссылки на элемент справочника и даты. При этом при добавлении элементов мы использовали два различных метода Добавить() и Вставить(), если бы при добавлении даты мы использовали метод Добавить() наш результат имел бы несколько другой вид.
В старших классах средней школы дается представление о понятии двумерной матрицы. Это такой набор данных, каждый элемент которого имеет два индекса (в простейшем случае порядковый номер по вертикали и по горизонтали) именно она лучше всего иллюстрирует понятие двумерного массива.
Создавая подобную матрицу можно указать количество строк и столбцов, которые будут использованы.
Допустим, перед нами стоит задача создать массив из фамилии, имени и отчества двух сотрудников. С помощью кода (Рис.5) создаем соответствующий массив с фиксированным количеством столбцов и строк.
Рис.5
Для его обхода нам понадобится два цикла, в первом цикле мы обходим массив по строкам, во втором разбираем строку на элементы. Это можно сделать либо с помощью цикла «Для каждого …. Из» (Рис.6)
Рис.6
- Либо с помощью цикла с итератором «Для … по» (Рис.7)
Рис.7
- В принципе, количество измерений конкретного массива может быть любым, другое дело, что в случае большого количества уровней детализации достаточно сложно создать построитель для чтения данных.
Использование массива
Массивы в 1С чаще всего используются для:
- Создания различных отборов используемых при работе с запросами и другими коллекциями значений;
- Передачи списков в качестве параметров между процедурами и функциями;
- Обмена данными с внешними компонентами, подключенными с использованием COM технологии.
Безусловно, это далеко неполный список того, в каких целях можно задействовать объект «Массив».
Источник: http://blog.it-terminal.ru/programmirovanie-1s/massiv-1s.html
Изучаем массивы в 1С 8.3 (8.2)
Массив в платформе 1С 8.3 это самая простая универсальная коллекция значений.
Что такое Массив?
Массив в языке программирования 1С — это коллекция элементов, следующих друг за другом, которые могут быть доступны с помощью индекса массива. Элементы могут быть любого типа, в том числе и типа Массив. У каждого элемента в массиве есть уникальный номер, который называют Индексом. Посредством индекса можно получить доступ к данному элементу.
Все элементы в массиве упорядочены, т.е. первый элемент имеет индекс, равный нулю, второй — одному, и так далее.
- Создать массив можно при помощи конструктора Новый
- Новый Массив (…)
- Где:
«КоличествоЭлементов» — необязательный параметр. Он может быть один — тогда мы будем иметь одномерный массив, а также их может быть несколько — тогда мы имеем многомерный массив.
- Например,
- Массив1 = Новый Массив(10);
- — Одномерный массив из 10 элементов.
- А:
- Массив1 = Новый Массив(3,2);
- Двумерный массив из 6 элементов (три строки, два столбца).
- Или
- Массив1 = Новый Массив();
- Массив, не имеющий ни одного элемента, — пустой массив.
- В отличие от таблиц значений 1С, работать с массивами можно как в режим тонкого клиента, так и в режим толстого клиента.
Имейте в виду, что когда Вы создадите не пустой массив (одномерный или многомерный), его элементы уже будут существовать, но с не заполненными значениями. Если Вы посмотрите на данный массив в отладчике, то увидите напротив каждого элемента тип Неопределено.
Обращаться к элементу массива можно посредством индекса. Делается это с помощью оператора «квадратные скобки».
-
Массив1[0] = «Первый»;
Массив1[1] = 2; - Как видите, элементы массива могут иметь разные типы ( в том числе ссылочные).
- При помощи индекса и квадратных скобок можно как задать какой-то элемент массива, так и прочитать этот элемент.
-
Сообщить(«Массив1[0]= » + Массив1[0] +
«, Массив[1] = » + Массив1[1]);
Индекс внутри скобок не должен превышать общего количества элементов минус один (т.к. индекс начинается с нуля). Если мы напишем такой код:
Массив1 = Новый Массив(5);
Массив1[5] = 10;
То при его выполнении, возникнет ошибка «Индекс находится за границами массива»
Хоть мы и указали у конструктора массивов в скобках значение 5, но обращаться может только до 4 индекса, поскольку нумерация индексов начинается с нуля.
Перебор элементов массива
Перебрать все элементы массива можно двумя способами. Первый способ – с помощью так называемого «китайского кода», когда присваиваем каждому элементу массива нужное значение. Иногда это бывает необходимо.
Сообщить(Массив[0]);
Сообщить(Массив[2]);
Сообщить(Массив[1]);
Но чаще необходимо прочитать каждый элемент массива в цикле. Для этого в теле цикла нужно обойти индексы от первого до последнего. Сделать это можно при помощи цикла Для…Цикл.
-
Массив1 = Новый Массив(3);
Массив1[0] = 10;
Массив1[1] = 3;
Массив1[2] = 7;
Для н = 0 по 2 Цикл
Сообщить(Массив1[н]);
КонецЦикла; - Или с помощью цикла Для каждого … Цикл
-
Для Каждого ЭлМассив из Массив1 Цикл
Сообщить(ЭлМассив);
КонецЦикла; - Где в переменной ЭлМассив для каждой итерации содержится соответствующее значение элемента массива.
Количество элементов массива
Узнать количество элементов массива можно двумя способами. С помощью метода Количество() и метода ВГраница(). Метод Количество() возвращает количество элементов массива (т.е.
то число, что задается в скобках конструктора массива), а метод ВГраница() самый максимальный индекс элемента массива или граница массива.
В этом случае перебор элементов массива в цикле возможен двумя способами.
-
Для н = 0 по Массив1.Количество() — 1 Цикл
Сообщить(Массив1[н]);
КонецЦикла; - И
-
Для н = 0 по Массив1.ВГраница() Цикл
Сообщить(Массив1[н]);
КонецЦикла; - Второй способ считается более правильным.
Добавление элементов массива
Добавить элемент массива можно с помощью методов Добавить() и Вставить(). Первый метод добавляет элемент в конец массива, а второй вставляет элемент в нужный индекс массива.
Массив1 = Новый Массив();
Массив1.Добавить(10);
Массив1.Вставить(0,20);
Массив1.Добавить(5);
В этом коде мы создали пустой массив, потом добавили элемент (он же первый), потом вставили на нулевой индекс элемент, а потом добавили. Должен получиться следующий результат.
Многомерный массив
Многомерным массивом в языке программирования 1С называется массив, элементами которого являются массивы. Если одномерный массив создавался посредством конструктора с одним параметром, то в многомерном массиве может быть два и больше параметров.
- МассивМн1 = Массив(3,2,5);
- В этом примере мы создали массив, у которого будет три элемента, каждый из которых будет массивом, содержащим по два массива, в каждом из которых будет пять элементов.
- Например, создадим двумерный массив:
МассивМн1 = Новый Массив(3,2);
Для н = 0 По МассивМн1.ВГраница() цикл
МассивВнутренний = МассивМн1[н];
Для к = 0 по МассивВнутренний.ВГраница() цикл
МассивВнутренний[к] = Строка(н+1)+ «.» + Строка(к+1);
КонецЦикла;
- КонецЦикла;
- А вывод в окно сообщений следующим образом
-
Для Каждого ЭлМассиваВнеш из МассивМн1 цикл
СтрокаВывода = «»;
Для Каждого ЭлемМассиваВнутр из ЭлМассиваВнеш цикл
СтрокаВывода = СтрокаВывода + » » + ЭлемМассиваВнутр;
КонецЦикла;Сообщить(СокрЛ(СтрокаВывода));
КонецЦикла;
Статьи о других универсальных коллекциях значений в 1С
- Соответствия в 1С
- Список значений в 1С
- Таблица значений 1С
- Структура в 1С
- Более подробно о работе с массивами и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Книга «Программировать в 1С за 11 шагов»
- Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
- Промо-код на скидку в 15% — 48PVXHeYu
- Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
- можно оплатить вручную:
- Яндекс.Деньги — 410012882996301
Web Money — R955262494655 - Вступайте в мои группы:
Источник: https://www.1s-up.ru/izuchaem-massivy-v-1c-8-3-8-2/
Статический массив: объявление, заполнение, использование
При решении задач с большим количеством данных одинакового типа использование переменных с различными именами, не упорядоченных по адресам памяти, затрудняет программирование. В подобных случаях в языке Си используют объекты, называемые массивами.
- Массив — это непрерывный участок памяти, содержащий последовательность объектов одинакового типа, обозначаемый одним именем.
- Элемент массива (значение элемента массива) – значение, хранящееся в определенной ячейке памяти, расположенной в пределах массива, а также адрес этой ячейки памяти.
Массив характеризуется следующими основными понятиями:
Каждый элемент массива характеризуется тремя величинами:
- адресом элемента — адресом начальной ячейки памяти, в которой расположен этот элемент;
- индексом элемента (порядковым номером элемента в массиве);
- значением элемента.
-
Адрес массива – адрес начального элемента массива. - Имя массива – идентификатор, используемый для обращения к элементам массива.
- Размер массива – количество элементов массива
- Размер элемента – количество байт, занимаемых одним элементом массива.
Графически расположение массива в памяти компьютера можно представить в виде непрерывной ленты адресов.
Представленный на рисунке массив содержит q элементов с индексами от 0 до q-1. Каждый элемент занимает в памяти компьютера k байт, причем расположение элементов в памяти последовательное.
- Адреса i-го элемента массива имеет значение
- n+k·i
Адрес массива представляет собой адрес начального (нулевого) элемента массива. Для обращения к элементам массива используется порядковый номер (индекс) элемента, начальное значение которого равно 0. Так, если массив содержит q элементов, то индексы элементов массива меняются в пределах от 0 до q-1.
- Длина массива – количество байт, отводимое в памяти для хранения всех элементов массива.
- ДлинаМассива = РазмерЭлемента * КоличествоЭлементов
- Для определения размера элемента массива может использоваться функция Например,
sizeof(char) = 1;sizeof(int) = 4;sizeof(float) = 4;sizeof(double) = 8;
Объявление и инициализация массивов
- Для объявления массива в языке Си используется следующий синтаксис:
- тип имя[размерность]={инициализация};
- Инициализация представляет собой набор начальных значений элементов массива, указанных в фигурных скобках, и разделенных запятыми.
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // массив a из 10 целых чисел
Если количество инициализирующих значений, указанных в фигурных скобках, меньше, чем количество элементов массива, указанное в квадратных скобках, то все оставшиеся элементы в массиве (для которых не хватило инициализирующих значений) будут равны нулю. Это свойство удобно использовать для задания нулевых значений всем элементам массива.
int b[10] = {0}; // массив b из 10 элементов, инициализированных 0
Если массив проинициализирован при объявлении, то константные начальные значения его элементов указываются через запятую в фигурных скобках. В этом случае количество элементов в квадратных скобках может быть опущено.
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
При обращении к элементам массива индекс требуемого элемента указывается в квадратных скобках [].
Пример на Си
#include int main(){
int a[] = { 5, 4, 3, 2, 1 }; // массив a содержит 5 элементов
printf(«%d %d %d %d %d
«, a[0], a[1], a[2], a[3], a[4]); getchar();
return 0;
}
Однако часто требуется задавать значения элементов массива в процессе выполнения программы. При этом используется объявление массива без инициализации. В таком случае указание количества элементов в квадратных скобках обязательно. Для задания начальных значений элементов массива очень часто используется параметрический цикл:
1234567891011121314151617
18
#define _CRT_SECURE_NO_WARNINGS#include int main(){
int a[5]; // объявлен массив a из 5 элементов
int i; // Ввод элементов массива for (i = 0; i
Источник: https://prog-cpp.ru/c-massiv/
Программная работа с массивом
Массив — это универсальная коллекция значений, предназначенная для хранения однотипных данных. Элементом массива может быть значение любого типа. В статье рассматривается работа с этим программным объектом.
Создание массива
Добавление элементов в массив
Переопределение значений массива
Чтение значений массива
Поиск элементов массива
Определение количества элементов в массиве
Удаление элементов массива
Выгрузка массива в колонку таблицы значений
Методы работы с массивом в БСП
Массив доступен как на клиенте, так и на сервере. Массивы не хранятся в базе данных и используются для работы с временными наборами данных.
Доступ к элементам массива осуществляется по индексу через оператор […] (первый элемент имеет индекс ).
Также для массива возможен обход посредством оператора Для каждого … Из … Цикл. Имеется возможность организовывать многомерные массивы.
Рассмотрим на примерах работу с этим программным объектом.
Создание массива
// Создание простого массива Мас = Новый Массив(); // Создание массива фиксированной длины Мас = Новый Массив(5); // Создание многомерного массива: массив из 10 элементов, каждый из которых является массивом из 5 элементов Мас = Новый Массив(10, 5);
Добавление элементов в массив
// Добавление элемента в конец массива Мас.Добавить(ЗначениеНовогоЭлемента); // Вставка элемента в индекс 0 Мас.Вставить(0, «Первый»);
Переопределение значений массива
// Элементу с индексом 1 присваивается новое значение Мас[1] = НовоеЗначение; Мас.Установить(1, НовоеЗначение); // Установка значений многомерных массивов Мас[1][3] = НовоеЗначение;
Чтение значений массива
// Чтение значения элемента с индексом 0 (первого) ЭлементМассива = Мас[0]; ЭлементМассива = Мас.Получить(0); // Чтение значений многомерного массива ЭлементМассива = Мас[0][3]; // Перебор всех элементов массива Для Каждого ЭлементМассива Из Мас Цикл Сообщить(ЭлементМассива); КонецЦикла;
Поиск элементов массива
ИндексНайденногоЭлемента = Мас.Найти(«ИскомоеЗначение»); Если ИндексНайденногоЭлемента Неопределено Тогда // КонецЕсли;
Сортировка массива
Сортировка массива описана в отдельной статье.
Определение количества элементов в массиве
КоличествоЭлементов = Мас.Количество(); // Определение максимального индекса массива. Если массив пустой, то возвращается -1. МаксИндекс = Мас.ВГраница();
Удаление элементов массива
// Удаление элемента с индексом 1 (второго) Мас.Удалить(1); // Удаление всех элементов массива Мас.Очистить();
Выгрузка массива в колонку таблицы значений
// Количество строк таблицы значений должно быть равно количеству элементов массива // Значения из массива загружаются в порядке индексов Таблица.ЗагрузитьКолонку(Мас, «ИмяКолонки»);
Методы работы с массивом в БСП
В Библиотеке стандартных подсистем предусмотрено несколько функций для обработки массивов:
// Удаляет повторяющиеся элементы массива Взаимодействия.УдалитьПовторяющиесяЭлементыМассива(Массив, НеИспользоватьНеопределено = Ложь); // Вычитает один массив элементов из другого массива. Возвращает результат вычитания. ОбщегоНазначенияКлиентСервер.СократитьМассив(Массив, МассивВычитания); // Удаляет повторяющиеся элементы массива ОбщегоНазначенияКлиентСервер.СвернутьМассив(Массив); // Создает копию значения типа Массив ОбщегоНазначенияКлиентСервер.СкопироватьМассив(МассивИсточник);
Остались вопросы?
Спросите в х к статье.
Смотри также:
Даты в 1С:Предприятие 8
Программная работа с регистрами сведений
Как получить реквизит от ссылочного значения на клиенте
Источник: https://pro1c8.ru/rabota-s-massivom/
Работаем с массивом программно
Руководство по встроенному языку »
Массив — это программная коллекция (объект встроенного языка), содержащая пронумерованную последовательность значений произвольного типа. Каждому элементу присваивается последовательный целочисленный номер — индекс, начинающийся с нуля. По индексу можно получить или установить значение элемента массива.
В 1С:Предприятие 8 существует два типа массивов:
- фиксированный массив — такой массив имеет фиксированный размер, заданный при его создании. Для фиксированного массива недоступно программное изменение размера, количества и последовательности элементов;
- обычный массив — такой массив имеет динамический размер и его верхний предел практически неограничен. Таким массивом можно произвольно оперировать из встроенного языка;
Сейчас мы рассмотрим обычные массивы.
Создание и инициализация элементов массива
Создание пустого массива выполняется с помощью оператора Новый:
Массив = Новый Массив;
Для добавления элементов в массив используется одноименный метод Массив.Добавить():
Массив.Добавить(10); Массив.Добавить(Дата(2018, 1, 1)); Массив.Добавить(«Просто строка»);
Каждый новый элемент помещается в конец массива. Чтобы создать массив с заданным размером, можно воспользоваться конструктором массива. Например, так:
Массив = Новый Массив(3);
Для доступа к отдельным элементам массива применяется операция разыменования: указывается имя переменной, объявленной как массив, а затем, в квадратных скобках, указывается индекс элемента: ИмяМассива[Индекс]. Такие конструкции можно указывать как слева от оператора присваивания:
Массив[0] = 10; Массив[1] = Дата(2018, 1, 1); Массив[2] = «Просто строка»;
Так и справа: в выражениях и в качестве параметров процедур и функций:
Сообщить(«Массив[0] = » + Массив[0]);
Границы массивов
Как было сказано выше, левая граница массива постоянна и всегда равно нулю (0). Верхняя граница напрямую связана с количеством элементов в массиве. Получить ее можно двумя способами:
Давайте рассмотрим распространенные операции с массивами
Перебор элементов массива
Для перебора (обхода) всех элементов массива обычно используется оператор цикла Для:
Для Инд = 0 По Массив.ВГраница() Цикл Сообщить(«Массив[» + Инд + «] = » + Массив[Инд]); КонецЦикла;
Либо оператор цикла Для Каждого:
Для Каждого Элт Из Массив Цикл Сообщить(«Массив[» + Массив.Индекс(Элт) + «] = » + Элт); КонецЦикла;
Первый способ лучше использовать, если Вам необходимо получить одновременно и индекс, и значение массива. Второй способ больше подходит для ситуации, когда нужно только последовательно перебрать все значения массива. Использование второго способа повышает «читабельность кода».
Поиск в массиве
Для поиска значений в массиве можно воспользоваться одноименным методом Массив.Найти(). Он возвращает индекс найденного элемента или Неопределено, если таковой не был найден:
НайдЭлт = Массив.Найти(10); Если НЕ НайдЭлт = Неопределено Тогда Сообщить(«Массив[» + НайдЭлт + «] = » + Массив[НайдЭлт]) КонецЕсли;
Методы объекта Массив
ВГраница() | Возвращает старший индекс массива |
Вставить() | Добавляет значение в произвольное место массива |
Добавить() | Добавляет значение в конец массива |
Количество() | Возвращает количество элементов в массиве |
Найти() | Выполняет поиск значения в массиве |
Очистить() | Удаляет все элементы массива |
Получить() | Возвращает значение элемента массива по его индексу |
Удалить() | Удаляет значение из массива по его индексу |
Установить() | Устанавливает значение элемента массива |
Источник: https://www.about1c.ru/v83/language-reference/working-with-array
Разработчику о работе с 1С:Предприятие, Pascal, Паскаль
Что такое массив в 1С:Предприятие 8.0, 8.1, 8.2, 8.3?
Массив — это набор значений. Найти значение массива можно по его индексу.
Как создать массив из определенного количества элементов в 1С:Предприятие 8.0, 8.1, 8.2, 8.3?
Процедура КакСоздатьМассивИзОпределенногоКоличестваЭлементов() Перем МасЗнач; МасЗнач=Новый Массив(40); КонецПроцедуры
Как создать массив в 1С:Предприятие 8.0, 8.1, 8.2, 8.3?
Процедура КакСоздатьМассив() Перем МасЗнач; МасЗнач=Новый Массив(); КонецПроцедуры
Как добавить в массив в 1С:Предприятие 8.0, 8.1, 8.2, 8.3?
Процедура КакДобавитьВМассив() Перем МасЗнач; МасЗнач=Новый Массив(); Для л=1 По 10 Цикл МасЗнач.Добавить(л); КонецЦикла; КонецПроцедуры
Как перебрать элементы массива в 1С:Предприятие 8.0, 8.1, 8.2, 8.3?
Процедура КакПеребратьЭлементыМассива() Для каждого СтрМасЭлементы Из МасЗнач Цикл Сообщить(«Элемент массива: «+СтрМасЭлементы); КонецЦикла; КонецПроцедуры
Как вставить элемент в массив в 1С:Предприятие 8.0, 8.1, 8.2, 8.3?
Процедура КакВставитьЭлементВМассив() // Вставим новый элемент с 2 индексом МасЗнач.Вставить(2,»Вставляемый элемент»); КонецПроцедуры
Как узнать размер массива, узнать количество элементов в массиве в 1С:Предприятие 8.0, 8.1, 8.2, 8.3?
Процедура КакУзнатьРазмерМассиваУзнатьКоличествоЭлементовВМассиве() ТекущееКоличество=МасЗнач.Количество() КонецПроцедуры
Как удалить элемент массива в 1С:Предприятие 8.0, 8.1, 8.2, 8.3?
Процедура КакУдалитьЭлементМассива() МасЗнач.Удалить(1); КонецПроцедуры
Как удалить все элементы массива в 1С:Предприятие 8.0, 8.1, 8.2, 8.3?
Процедура КакУдалитьВсеЭлементМассива() МасЗнач.Очистить(); КонецПроцедуры
Как получить значение в массиве, зная его порядковый номер (индекс) в 1С:Предприятие 8.0, 8.1, 8.2, 8.3?
Процедура КакПолучитьЗначениеВМассивеЗнаяЕгоПорядковыйНомерИндекс() ТекущееЗначение1=МасЗнач.Получить(2); ТекущееЗначение2=МасЗнач[3]; КонецПроцедуры
Как изменить один элемент массива в 1С:Предприятие 8.0, 8.1, 8.2, 8.3?
Процедура КакИзменитьОдинЭлементМассива() МасЗнач.Установить(4,»Новая строка»); МасЗнач[5]=»Еще новая строка»; КонецПроцедуры
Может вам интересно:
Как удалить все документы за определенный период (за определенную дату) в 1С:Предприятие 8.2?
Как создать табличный документ в 1С:Предприятие без макета?
В форму поместил поле Контрагент, по которому буду отбирать документы по одному контрагенту, но иногда надо по всем. Как это реализовать? 1С:Предприятие 8.2.
?
Рассмотрим функции для работы со строкой: Найти(), Сред(), СтрДлина(). 1С:Предприятие.
Как загрузить информацию из Excel в 1С:Предприятие? При помощи COMObject. Вариант 1.
Таблица значений в 1С:Предприятии 8.0, 8.1, 8.2.
Горячие клавиши в 1С:Предприятие 8.2.
Как в табличной части документа в 1С:Предприятие 8.
2 добавить новую колонку?
Источник: http://info1c.com/?p=1274
Операции с массивом и структурой в 1с
На моей практике массивы находят очень редкое применение в программировании 1с
Просто чтобы каждый раз не вспоминать синтаксис и не лазить в хелп я держу под рукой такую шпаргалку.
Структуры же используются чаще. Структура это набор именованных разнотипных элементов.
Можно сделать массив структур.
Массивы и структуры в 1с.
Простой массив с заданным количеством элементов. Обратите внимание что нумерация в массиве начинается с ноля.
_Массив = Новый Массив(2);
_Массив[0] = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты;
_Массив[1] = ПланыВидовХарактеристик.
ВидыСубконтоХозрасчетные.Договоры;
Массив с неопределенным количеством элементов.
_Массив = Новый Массив;
_Массив.Добавить(«С„ыв»);
_Массив.Добавить(«РјС‹РІ»);
Количество элементов в массиве.
_КоличествоРлементовВМассиве = _Массив.Количество(); // =2
Многомерный массив.
_Массив = Новый Массив(3, 2);
_Массив[0][0] = 0;
-Массив[0][1] = 1;
_Массив[1][0] = 2;
_Массив[1][1] = 3;
_Массив[2][0] = 4;
_Массив[2][1] = 100;
Массив структур.
�стория = Новый Массив;
Запись = Новый Структура;
Запись.Вставить(«РќР°СЃС‚СЂРѕР№РєРё», ПостроительОтчетов1.ПолучитьНастройки());
Запись.
Вставить(«РћС‚чет», ТекущаяСтрока);
�стория.Добавить(Запись);
Запись.Вставить(«РќР°СЃС‚СЂРѕР№РєРё», ПостроительОтчетов2.ПолучитьНастройки());
Запись.
Вставить(«РћС‚чет», ТекущаяСтрока);
�стория.Добавить(Запись);
- Перебрать массив.
Для Каждого РлементМассива РёР· _Массив Цикл
Сообщить(РлементМассива); КонецЦикла; -
Для _индекс = 0 по _Массив.Количество()-1 цикл
Сообщить( _Массив[_индекс]);
КонецЦикла;
или
Источник: http://www.1c-forever.ru/3_001_00011.html
Массивы – что это и как с ними работать?
Занимаясь программированием, мы достаточно часто сталкиваемся с использованием массивов. У многих эта тема вызывает достаточно много трудностей из-за непонимания того: что из себя представляют массивы и как с ними работать. Однако, их использование было, есть и будет одной из наиболее важный частей написания программного кода.
Именно поэтому, сегодня хотелось бы поговорить о массивах.
Как я уже сказала, массивы очень распространенная вещь. Наиболее часто, если говорить о разработке веб-сайтов, мы сталкиваемся с ними в php и JavaScript кодах.
Конечно же, различия при работе с массивами в php и JavaScript имеются, но поняв, как работать с массивами в одном из языков программирования, разобраться, как работать в другом, не составит практически никакого труда.
В этой статье я буду говорить о массивах относительно языка php.
Что же такое массивы?
По определению, Массив — это нумерованный набор переменных.
Переменные в массиве – это элементы массива. Их позиция в массиве задается индексом.
Таким образом, Массив – это тип данных, который содержит в себе набор элементов. Сразу хочется сказать, что элементы эти, если мы говорим о языке php, не обязательно должны являться однотипными!
Для чего нужны массивы?
Возможно, Вам не совсем понятно, для чего нужно использовать массивы.
Давайте представим один несложный пример.
Скажем, Вам нужно написать программу, которая будет считать среднее арифметическое число продаж за месяц (или за год). Для этого нам нужно знать число продаж за каждый день месяца и, соответственно, где-то эти данные хранить. Мы можем объявить 30 переменных (или 356, если речь идет о годе). Вы уже подсчитали сколько строк кода нужно будет написать?
Далее нам нужно написать формулу, которая будет считать среднее арифметическое. Для этого нужно сложить все переменные и поделить сумму на число дней. Не кажется ли Вам, что формула может получиться «слегка» громоздкой?
При всем при этом, объявляя такое большое число переменных, а потом подставляя все это в формулу немудрено допустить ошибку и наш результат будет некорректным. А что, если в один прекрасный момент нам понадобится узнать среднее арифметическое не за 30 дней, а, например, за полтора месяца? Нужно менять весь код!
Используя массив в этой ситуации, мы значительно облегчим себе жизнь. Ведь используя соответствующие функции, мы может узнать: число элементов массива, сумму элементов массива, мы можем хранить все данные о продажах в одном типе данных – массиве, и при этом нам не нужно будет создавать огромное количество переменных.
Это лишь один небольшой пример, который может помочь Вам понять – зачем же нужны массивы. На практике же, подобные задачи возникают постоянно. И если знать, как работать с массивами, то их решение становится гораздо более легким.
Чтобы научиться работать с массивами нужна практика и определенные знания. Я планирую написать серию статей, в которых и попытаюсь рассказать о разнообразных тонкостях, функциях и примерах. Так что эта статья – лишь начало знакомства с массивами.
Это следует помнить, работая с массивами!
Мы привыкли, что начало чего-либо отсчитывается с «1». Во многих ситуациях так оно и есть, но только не в ситуации с массивами.
Я уже говорила, что позиция элемента в массиве задается ее индексом. Так вот нумерация элементов массива начинается не с 1, а с 0. Это нужно всегда помнить, чтобы не допустить ошибок!
Также следует отметить, что Размером массива называют общее количество элементов в массиве.
Как объявить массив
Объявить (или инициализировать) массив можно несколькими способами.
Можно инициализировать массив поэлементно, указывая индекс.
Для этого сначала придумайте имя для Вашего массива. Например, дадим массиву имя «$Mass1». Теперь мы можем инициализировать массив и занести туда какие-то переменные.
$Mass1[0] = 10;
$Mass1[1] = 11;
$Mass1[2] = 32;
$Mass1[3] = 15;
Как Вы видите, сначала идет имя нашего массива (при объявлении не забываем знак «$»), далее квадратные скобки, в которых указывается индекс элемента, далее знак присваивания «=» и само значение элемента. В данном примере значения представляют собой целые числа, в конце точка с запятой.
Можно сделать тоже самое, но не указывая индексы. При этом php автоматически присвоит индекс для каждого следующего элемента на единицу больше последнего. Другими словами, добавит элемент в конец массива.
$Mass1[] = 10;
$Mass1[] = 11;
$Mass1[] = 32;
$Mass1[] = 15;
Но, как Вы заметили, квадратные скобки все же нужны. Php должен знать, что имеет дело с массивом.
Есть и другой способ, в котором не потребуются квадратные скобки и можно указать все элементы массива сразу в одну строку. Однако, вместо квадратных скобок потребуется специальное слово «array», которое и расскажет php о том, что мы имеем дело с массивом.
Делается это так:
$Mass1 = array(10,11,32,15);
Вот так мы можем создавать массивы и заполнять их различными элементами.
На самом деле это не все способы, так как существуют еще и ассоциативные и многомерные массивы, но о ним мы поговорим в следующей статье. Все по-порядку.
Мы научились создавать массивы. Давайте теперь поговорим о том, как можно получить и изменить определенный элемент массива.
Как получить и изменить элемент массива
- Итак, чтобы обратиться к какому-либо элементу массива, мы будет использовать его индекс, который указывается также в квадратных скобках.
- При этом следует помнить, что индексация начинается с нуля.
- Допустим у нас есть такой массив:
$Mass1 = array('Маша', 'Саша', 'Даша', 'Паша');
Чтобы, например, получить первый элемент массива и вывести его на экран, мы можем использовать следующий код:
$var1 = $Mass1[0];
echo $var1;
- В итоге, на экране мы увидим значение первого элемента массива – «Маша».
- При этом не забудьте, что для того, чтобы тестировать php-код на локальном компьютере, Вам нужно будет установить и запустить Денвер .
- А также не забудьте, что весь php-код нужно писать между специальных символов объявления php. Таким образом полный код этого примера будет таким:
Соответственно, чтобы получить второй элемент, вместо нуля в квадратных скобках указываем единицу и т.д.
Также мы можем добавить элемент в массив или изменить уже существующий.
Чтобы добавить элемент в конец массива, достаточно прописать следующее:
$Mass1[] = 'Света';
А чтобы изменить существующий элемент, нужно в квадратных скобках указать индекс того элемента, который хотим изменить и присвоить ему новое значение. Вот так:
$Mass1[1] = 'Гриша';
И на последок давайте поговорим о размере массива.
Как узнать размер массива
Довольно часто для различных вычислений необходимо знать размер массива, другими словами, количество его элементов.
В php сделать это можно при помощи функции «count»:
echo count($Mass1);
Или при помощи функции «sizeof»:
echo sizeof($Mass1);
Оба варианта выведут на экран значение – «5». Вы можете и не выводить это значение на экран, а просто занести его в переменную и потом использовать там, где Вам нужно.
Думаю, что на сегодня на этом мы закончим, а в следующей статье продолжим работу и знакомство с массивами.
- Также Вы можете поделиться статьей со своими друзьями при помощи кнопок социальных сетей, которые Вы найдете чуть ниже.
- Если Вы еще не подписаны на обновления блога, то форма подписки также ниже.
- Желаю Вам успехов и до встречи в следующих публикациях.
С Вами была Анна Котельникова. До связи!
Источник: https://website-create.ru/massivy-v-php/
Массивы в C++ на практике
Как показала практика, у начинающих кодеров возникает множество вопросов при решении задач по теме «Массивы». В данной статье затронуты вопросы, относящиеся только к массивам в классическом понимании. Работа с контейнерами STL — это отдельная тема.
Как правило, задачи сводятся к следующему: заполнить массив, произвести некие операции с элементами массива, распечатать результат. Уже в постановке задачи угадываются логические блоки её решения. Далее я постараюсь показать типовые «кирпичики», из которых можно сложить решение задачи — т. е. программу.
Организация массива
Память под массив может выделяться автоматически или динамически.
Автоматическое выделение памяти используют, когда размер массива известен на этапе компиляции (т. е. при написании кода).
Динамическое выделение памяти используют, когда размер массива неизвестен на этапе компиляции (допустим, запрашивается у пользователя).
Оба типа массивов могут быть как глобальными (определёнными вне функций), так и локальными (определёнными внутри функции или блока). Здесь для автоматических массивов существует одна тонкость. Память для локального автоматического массива выделяется в стеке. Поэтому размер такого массива должен быть небольшим.
В противном случае можно получить переполнение стека и, как следствие, аварийное завершение программы. Переполнение стека также можно получить и при небольших размерах локального автоматического массива, при многократных рекурсивных вызовах функции.
Поэтому, когда вы определяете в функции автоматический массив, вы должны точно знать, что делаете.
Глобальные автоматические массивы в плане переполнения стека безопасны.
Но они будут видны во всём коде, лексикографически расположенному после объявления массивов, что может спровоцировать их использование напрямую, минуя их передачу в функции через параметры.
Это приведёт к возникновению побочных эффектов работы функций, что затрудняет отладку и делает программы менее надёжными. Такого использования глобальных массивов следует избегать.
Для массивов, использующих динамическое выделение памяти, память распределяется из «кучи» (heap). Куча — это память, выделяемая программе операционной системой, для использования этой программой. Размер кучи, как правило, значительно больше размера стека, а для ОС, поддерживающих парадигму виртуальной памяти, размер кучи теоретически может ограничиваться только разрядностью приложения.
Использование автоматических массивов
Автоматические массивы используют, когда размер массива известен на этапе компиляции.
Размер массива в коде настоятельно рекомендуется указывать с помощью именованной константы. Это полезно по нескольким соображениям:
- имя константы должно указывать на область её применения — самодокументирование кода;
- при необходимости изменить в коде размер массива потребуется внести правку только в одном месте;
- размер массива, как правило, используется в циклах прохода по массиву, проверки границы и пр., поэтому использование символического имени избавит от необходимости тщательной проверки и правки всего кода при изменении размера массива.
Тип константного выражения для определения размера (количество элементов) автоматического массива должен быть целочисленный: char, int, unsigned int, long, etc.
Память, отведённая под автоматические массивы, освобождается при выходе из области видимости переменной-массива. Для локальных массивов это функция или блок. Глобальные массивы уничтожаются при выходе из программы.
Пример определения глобального автоматического массива длиной 10 элементов типа int:
const unsigned int ARRSIZE = 10;
int ary[ARRSIZE];
int main(void) { … }
Пример определения локального автоматического массива длиной 10 элементов типа int:
const unsigned int ARRSIZE = 10;
int main(void) {
int ary[ARRSIZE];
…
}
Использование массивов с динамическим выделением памяти
Массивы с динамическим выделением памяти используют, когда размер массива не известен на этапе компиляции. Реальный размер массива может вычисляться в программе или вводиться пользователем — неважно.
Память для массива выделяется оператором new в форме new тип[количество_элементов].
Тип выражения, определяющего размер (количество элементов) массива должен быть целочисленным. Также это выражение может быть и константным.
Когда работа с массивом закончена, память, выделенную под массив необходимо освободить. Это делается с помощью оператора delete в форме delete [] имя_переменной. После того, как память освобождена, работать с массивом нельзя.
Пример использования массива с динамическим выделением памяти:
int main(void) {
unsigned int arr_size;
// здесь должно быть получение размера массива arr_size
int *ary = new int[arr_size];
// …
delete [] ary;
// …
}
Заполнение массива значениями
При решении учебных задач, обычно предлагается заполнить массив значениями либо введёнными с клавиатуры, либо случайными значениями из определённого диапазона. Начнём со второго случая, как более простого (Парадокс? Нет, правда жизни).
Заполнение массива случайными числами
Для начала необходим генератор случайных чисел. Ниже приведён код одной из простейших реализаций:
#include
using namespace std;
// функция генерации случайного числа из диапазона от range_min до range_max включительно
int rrand(int range_min, int range_max) {
return rand() % (range_max — range_min + 1) + range_min;
}
Однако без дополнительных телодвижений стандартная функция rand() будет при каждом запуске программы генерировать одинаковую последовательность случайных чисел (кстати, это очень удобно при отладке!).
Для того, что бы при каждом запуске программы получать уникальную последовательность случайных чисел, функцию rand() надо «разогнать» начальным случайным значением.
Это делается с помощью функций srand() и time().
Заполнение массива значениями, естественно, делаем в цикле. Помним, что элементы массива в C/C++ нумеруются с 0. Следовательно последний элемент массива имеет индекс на единицу меньший, чем размер массива.
В примере показано заполнение глобального автоматического массива из 10 элементов типа int случайными значения из диапазона от −100 до 100 включительно:
#include
#include
using namespace std;
// функция генерации случайного числа из диапазона от range_min до range_max включительно
int rrand(int range_min, int range_max) {
return rand() % (range_max — range_min + 1) + range_min;
}
const unsigned int ARRSIZE = 10;
const int ABSLIMIT = 100;
int ary[ARRSIZE];
int main(void) {
srand(static_cast(time(NULL)));
// инициализация массива случайными значениями из диапазона -ABSLIMIT..ABSLIMIT
for (unsigned int i = 0; i < ARRSIZE; i++) {
ary[i] = rrand(-ABSLIMIT, ABSLIMIT);
}
return 0;
}
Обратите внимание на включение заголовочных файлов!
Заполнение массива числами, введёнными пользователем
Как ни странно, это более сложный случай. Дело в том, что во-первых, наличие человека всегда может приводить к некорректному вводу данных (ошибкам), во-вторых, для человека необходимо обеспечить какой-никакой интерфейс, а в-третьих, система потокового ввода-вывода STL имеет свои неприятные особенности.
Итак, пользуясь предыдущим примером, попробуем написать фрагмент, отвечающий за ввод значений массива с клавиатуры. Добавим в начало кода заголовочный файл #include , а вместо инициализации массива случайными значениями напишем что-то типа:
for (unsigned int i = 0; i < ARRSIZE; i++) { cout
Источник: https://code-live.ru/post/cpp-array-tutorial/