Массив — упорядоченный список значений
Массив — это простейшая коллекция, где элементы хранятся в строгом порядке и доступ к ним осуществляется по индексу (номеру позиции).
bsl// Создание массива МассивТоваров = Новый Массив; МассивТоваров.Добавить("Стол"); МассивТоваров.Добавить("Стул"); МассивТоваров.Добавить("Шкаф"); // Обращение к элементам по индексу (начинается с 0!) Сообщить(МассивТоваров[0]); // Выведет: "Стол" Сообщить(МассивТоваров[1]); // Выведет: "Стул" // Перебор всех элементов Для Каждого Элемент Из МассивТоваров Цикл Сообщить(Элемент); КонецЦикла;
Когда использовать массив:
-
Когда важен порядок элементов
-
Когда нужно обрабатывать данные последовательно
-
Для хранения однотипных объектов (список товаров, документов и т.д.)
Структура — набор пар "Ключ-Значение"
Структура хранит данные в виде пар "ключ-значение", где каждый элемент имеет уникальное имя (ключ). Порядок элементов не гарантируется.
bsl// Создание структуры ДанныеСотрудника = Новый Структура; ДанныеСотрудника.Вставить("Имя", "Иван"); ДанныеСотрудника.Вставить("Фамилия", "Петров"); ДанныеСотрудника.Вставить("Возраст", 30); ДанныеСотрудника.Вставить("Отдел", "Бухгалтерия"); // Обращение к элементам по имени ключа Сообщить(ДанныеСотрудника["Имя"]); // Выведет: "Иван" Сообщить(ДанныеСотрудника.Отдел); // Выведет: "Бухгалтерия" // Можно также обращаться через точку (если ключ корректен) Сообщить(ДанныеСотрудника.Возраст); // Выведет: 30
Когда использовать структуру:
-
Когда нужно хранить разнотипные данные об одном объекте
-
Когда важны имена полей, а не их порядок
-
Для передачи параметров в функции и методы
Соответствие — гибрид массива и структуры
Соответствие похоже на структуру (тоже "ключ-значение"), но ключом может быть любой тип данных, а не только строка.
bsl// Создание соответствия СоотвСтатусы = Новый Соответствие; СоотвСтатусы.Вставить(1, "Новый"); СоотвСтатусы.Вставить(2, "В работе"); СоотвСтатусы.Вставить(3, "Выполнен"); СоотвСтатусы.Вставить("Отменен", 0); // Обращение по любому ключу Сообщить(СоотвСтатусы[1]); // Выведет: "Новый" Сообщить(СоотвСтатусы["Отменен"]); // Выведет: 0 // Ключами могут быть разные типы данных РазныеКлючи = Новый Соответствие; РазныеКлючи.Вставить(Дата(2024,01,01), "Новый год"); РазныеКлючи.Вставить(Справочники.Номенклатура.НайтиПоНаименованию("Блокнот"), 150);
Когда использовать соответствие:
-
Когда нужны сложные ключи (даты, ссылки на объекты)
-
Для создания "словарей" преобразований
-
Когда тип ключа заранее неизвестен
Сравнительная таблица
| Критерий | Массив | Структура | Соответствие |
|---|---|---|---|
| Доступ к элементам | По индексу (число) | По строковому ключу | По ключу любого типа |
| Порядок элементов | Сохраняется | Не гарантируется | Не гарантируется |
| Ключи | Автоматические числа | Только строки | Любые типы данных |
| Производительность | Быстрый доступ по индексу | Быстрый поиск по ключу | Зависит от типа ключа |
| Типичное использование | Списки, коллекции | Объекты, параметры | Словари, преобразования |
Практические примеры
Пример 1: Когда что выбрать
bsl// МАССИВ — список заказов для последовательной обработки ЗаказыНаСегодня = Новый Массив; ЗаказыНаСегодня.Добавить(Док1); ЗаказыНаСегодня.Добавить(Док2); // СТРУКТУРА — параметры отчета ПараметрыОтчета = Новый Структура; ПараметрыОтчета.Вставить("ДатаНачала", Дата(2024,01,01)); ПараметрыОтчета.Вставить("ДатаОкончания", ТекущаяДата()); ПараметрыОтчета.Вставить("Организация", ВыбраннаяОрганизация); // СООТВЕТСТВИЕ — преобразование кодов в наименования КодыВНаименования = Новый Соответствие; КодыВНаименования.Вставить("001", "Администратор"); КодыВНаименования.Вставить("002", "Менеджер");
Пример 2: Преобразования между типами
bsl// Из структуры в соответствие Структура = Новый Структура; Структура.Вставить("Ключ1", "Значение1"); Структура.Вставить("Ключ2", "Значение2"); Соотв = Новый Соответствие; Для Каждого КлючИЗначение Из Структура Цикл Соотв.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); КонецЦикла;
Частые ошибки новичков
-
Путаница в индексах — в массивах индексы начинаются с 0!
-
Обращение к несуществующему ключу в структуре вызовет ошибку
-
Попытка использовать нестроковый ключ в структуре
-
Забывают, что порядок в структуре и соответствии не гарантирован
Заключение
-
Используйте массив, когда важен порядок и нужна последовательная обработка
-
Используйте структуру, когда работаете с именованными параметрами объекта
-
Используйте соответствие, когда нужны сложные ключи или словари преобразований
Правильный выбор типа коллекции сделает ваш код более читаемым, эффективным и простым в поддержке. Начните с массивов и структур — они используются в 90% случаев, а соответствие применяйте для специальных задач.

