Если вы начинающий разработчик - вступайте в мою группу помощник программиста 1С. В ней мы обсуждаем вопросы программирования в 1С для начинающих (Владимир Милькин, школа программирования).

Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат

Библиотека Запросы ПрикладныеОбъекты УниверсальныеФункции

Массивы в языке 1С 8.3, 8.2 (в примерах)

Полный синтаксис (нажмите, чтобы раскрыть)
/// Как создать массив (сразу нужного размера) в 1с 8.3, 8.2
 
Процедура Пример1()
    // в массиве сразу 3 элемента
    Массив = Новый Массив(3);
 
    // инициализируем их значениями
    Массив[0] = 5;
    Массив[1] = Массив[0] * 2; // 10
    Массив[2] = Массив[1] * 2; // 20
 
    // выводим на печать
    Для Каждого ЭлементМассива из Массив Цикл
        Сообщить(ЭлементМассива); // 5 10 20
    КонецЦикла;
КонецПроцедуры
 
/// Как создать пустой массив (с последующим добавлением 
/// элементов) в 1с 8.3, 8.2
 
Процедура Пример2()
    // в массиве 0 элементов
    Массив = Новый Массив;
 
    // добавляем последовательно три элемента
    Массив.Добавить(100); // (100)
    Массив.Добавить(300); // (100, 300)
    Массив.Добавить(500); // (100, 300, 500)
 
    // выводим на печать
    Для Каждого ЭлементМассива из Массив Цикл
        Сообщить(ЭлементМассива); // 100 300 500
    КонецЦикла;
КонецПроцедуры
 
/// Как обойти все элементы массива по индексу в 1с 8.3, 8.2
 
Процедура Пример3()
    // инициализируем массив: (100, 300, 500)
    Массив = Новый Массив;
    Массив.Добавить(100);
    Массив.Добавить(300);
    Массив.Добавить(500);
 
    // пробегаемся от первого (с индексом 0) до последнего
    // элемента (с индексом Количество - 1).
    Для Индекс = 0 По Массив.Количество() - 1 Цикл
        Сообщить(Массив[Индекс]);
    КонецЦикла;
КонецПроцедуры
 
/// Массив может содержать элементы различных типов: числа,
/// строки и т.д. 
 
Процедура Пример4()
    Массив = Новый Массив(4);
    Массив[0] = "HELP"; // ("HELP")
    Массив[1] = "ME"; // ("HELP", "ME")
    Массив[2] = "1C"; // ("HELP", "ME", "1C")
    Массив[3] = Формат(2013, "ЧГ=0"); // ("HELP", "ME", "1C", 2013)
 
    Для Каждого ЭлементМассива из Массив Цикл
        Сообщить(ЭлементМассива); // HELP ME 1C 2013
    КонецЦикла;
КонецПроцедуры
 
/// Как передать массив в качестве параметра функции в 1с 8.3, 8.2
 
Функция Метод5(массивПереданныйПоСсылке)
    массивПереданныйПоСсылке[0] = 10;
    Возврат массивПереданныйПоСсылке[0] * 2;
КонецФункции
 
Процедура Пример5()
    // инициализация массива из одного элемента: (13)
    Массив = Новый Массив(1);
    Массив[0] = 13;
 
    // значение первого элемента до вызова функции
    Сообщить(Массив[0]); // 13
 
    // массив ВСЕГДА передается в функцию ПО ССЫЛКЕ, значит,
    // изменяя массив внутри функции, мы меняем его снаружи
    Сообщить(Метод5(Массив)); // 20
 
    // значение первого элемента после вызова функции изменилось
    Сообщить(Массив[0]); // 10
КонецПроцедуры
 
/// Как вернуть массив в качестве результата работы функции
/// в 1с 8.3, 8.2
 
Функция Метод6()
    // инициализация массива (СПАСИБО, ВАМ)
    массив = Новый Массив(2);
    массив[0] = "СПАСИБО";
    массив[1] = "ВАМ";
 
    Возврат массив;
КонецФункции
 
Процедура Пример6()
    // инициализация переменной массивом, который возвращает и формирует
    // функция Метод6
    Массив = Метод6();
 
    // вывод на печать
    Для Каждого ЭлементМассива из Массив Цикл
        Сообщить(ЭлементМассива); // СПАСИБО ВАМ
    КонецЦикла;
КонецПроцедуры
 
/// Ещё пример на передачу массива в качестве параметра процедуры
/// в 1с 8.3, 8.2
 
Процедура Метод7(Массив)
    Если Массив <> Неопределено И Массив.Количество() > 0 Тогда
        Сообщить(Массив[0]);
    КонецЕсли;
КонецПроцедуры
 
Процедура Пример7()
    // инициализация массива: (10, 20)
    Массив = Новый Массив(2);
    Массив[0] = 10;
    Массив[1] = 20;
 
    // печать первого элемента, переданного массива
    Метод7(Массив); // 10
    Метод7(Неопределено); // ничего
    Метод7(Новый Массив); // ничего
КонецПроцедуры
 
/// Как получить последний элемент массива в 1с 8.3, 8.2
 
Процедура Пример8()
    // инициализация массива: ("Кошка", "Собака", "Пантера", "Тигр")
    Массив = Новый Массив;
    Массив.Добавить("Кошка");
    Массив.Добавить("Собака");
    Массив.Добавить("Пантера");
    Массив.Добавить("Тигр");
 
    Сообщить(Массив[Массив.Количество() - 1]); // Тигр
КонецПроцедуры
 
/// Использование многомерных массивов в 1с 8.3, 8.2
 
Процедура Пример9()
 
    // ( ( (), () ), ( (), () ), ( (), () ) )
    Массив = Новый Массив(3, 2);
 
    // ( ( "Юрий", "Гагарин" ), ( (), () ), ( (), () ) )
    Массив[0][0] = "Юрий";
    Массив[0][1] = "Гагарин";
 
    // ( ( "Юрий", "Гагарин" ), ( "Герман", "Титов" ), ( (), () ) )
    Массив[1][0] = "Герман";
    Массив[1][1] = "Титов";
 
    // ( ( "Юрий", "Гагарин" ), ( "Герман", "Титов" ),
    //   ( "Валентина", "Терешкова" ) )
    Массив[2][0] = "Валентина";
    Массив[2][1] = "Терешкова";
 
    // обход всех элементов через конструкцию Для Каждого
 
    Для Каждого Строка Из Массив Цикл
        Для Каждого Элемент Из Строка Цикл
            Сообщить(Элемент);
        КонецЦикла;
        Сообщить(" ");
    КонецЦикла;
 
    Сообщить(" ");
 
    // обход всех элементов через индекс
 
    Для ИндексСтрока = 0 По Массив.Количество() - 1 Цикл
        Для ИндексСтолбец = 0 По Массив[ИндексСтрока].Количество() - 1 Цикл
            Сообщить(Массив[ИндексСтрока][ИндексСтолбец]);
        КонецЦикла;
        Сообщить(" ");
    КонецЦикла;
КонецПроцедуры
 
/// Вставка, удаление и очистка массива в 1с 8.3, 8.2
 
Процедура Пример10()
    // инициализация пустого массива
    Массив  = Новый Массив;
 
    // вставка трёх элементов; каждый элемент вставляется в начало
    Массив.Вставить(0, 10); // (10)
    Массив.Вставить(0, 100); // (100, 10)
    Массив.Вставить(0, 1000); // (1000, 100, 10)
 
    // определение последнего индекса
    Сообщить(Массив.ВГраница()); // 2
 
    // вывод на печать
    Для Индекс = 0 по Массив.ВГраница() Цикл
        Сообщить(Массив[Индекс]); // 1000 100 10
    КонецЦикла;
 
    // удаление элемента со значением 100
    // для этого сначала находим индекс элемента
    // если не находим возвращаем Неопределено
    Индекс = Массив.Найти(100); // 1
    // и удаляем элемент по найденному индексу
    Массив.Удалить(Индекс); // (1000, 10)
 
    Сообщить(Массив.ВГраница()); // 1
 
    // удаление всех элементов из массива
    Массив.Очистить();
КонецПроцедуры
 
/// Как из обычного получить фиксированный (неизменяемый) 
/// массив в 1с 8.3, 8.2
 
Процедура Пример11()
 
    Числа = Новый Массив;
    Числа.Добавить(1);
    Числа.Добавить(2);
    Числа.Добавить(3);
 
    ФиксированныеЧисла = Новый ФиксированныйМассив(Числа);
    // Получился константный массив на основе обычного:
    //  нельзя менять значения имеющихся элементов
    //  нельзя добавлять новые элементы
    //  нельзя удалять имеющиеся элементы
 
КонецПроцедуры
 
Процедура КнопкаВыполнитьНажатие(Кнопка)
 
КонецПроцедуры

Если вы начинающий разработчик - вступайте в мою группу помощник программиста 1С. В ней мы обсуждаем вопросы программирования в 1С для начинающих (Владимир Милькин, школа программирования).

Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат

Библиотека Запросы ПрикладныеОбъекты УниверсальныеФункции

Массивы в языке 1С 8.3, 8.2 (в примерах)