Разработка и Конфигурация · 8 мин
Как получить первый элемент массива в 1С
Как получить первый элемент массива в 1С: обращение по индексу [0], проверка количества элементов, типичные ошибки и безопасные приёмы работы с массивами.
В языке 1С массив — это упорядоченная коллекция значений, к элементам которой обращаются по индексу. Самый простой способ получить первый элемент — использовать конструкцию Массив[0], потому что нумерация элементов в 1С начинается с нуля. Однако такое обращение безопасно только тогда, когда массив гарантированно не пуст.
Если массив не содержит ни одного элемента, обращение Массив[0] вызовет ошибку времени выполнения «Индекс находится за границами массива» и прервёт выполнение процедуры. Поэтому в прикладном коде получение первого элемента почти всегда сочетают с проверкой через метод Количество().
Ниже разобраны основные приёмы: прямое обращение по индексу, безопасные варианты с проверкой, альтернативы через цикл и структуру, а также типичные ошибки, которые допускают разработчики при работе с массивами в 1С.
Как обратиться к первому элементу по индексу
Элементы массива в 1С нумеруются с нуля: первый элемент имеет индекс 0, второй — 1, последний — Количество() - 1. Чтобы получить первый элемент, достаточно указать индекс в квадратных скобках после имени переменной:
Массив = Новый Массив;
Массив.Добавить("Первый");
Массив.Добавить("Второй");
ПервыйЭлемент = Массив[0]; // "Первый"
Тот же синтаксис работает и для присваивания значения: Массив[0] = "Новое значение" заменит первый элемент.
Обращение по индексу возвращает значение «как есть»: если в массиве лежит ссылка на справочник, структура или другой массив, вы получите именно этот объект, а не его копию. Изменение свойств полученного объекта отразится на элементе массива.
Как безопасно получить первый элемент: проверка на пустоту
Главный риск при обращении к Массив[0] — пустой массив. Например, массив возвращается функцией поиска, и при отсутствии результатов он пуст. Прямое обращение по индексу в этом случае аварийно завершит код.
Стандартный безопасный шаблон выглядит так:
Если Массив.Количество() > 0 Тогда
ПервыйЭлемент = Массив[0];
Иначе
ПервыйЭлемент = Неопределено;
КонецЕсли;
Альтернатива — обработка исключения через Попытка.. Исключение, но для этой задачи она избыточна: проверка количества читается лучше и не маскирует другие возможные ошибки внутри блока.
Альтернативные способы получить первый элемент
Иногда удобнее не обращаться по индексу напрямую. Несколько рабочих вариантов:
- Цикл с прерыванием. Конструкция
Для Каждого Элемент Из Массив Цикл.. Прервать;вернёт первый элемент и корректно отработает на пустом массиве — цикл просто не выполнится ни разу. - Метод Найти(). Если нужен не просто первый элемент, а первый элемент с конкретным значением, используйте
Массив.Найти(Значение)— он вернёт индекс илиНеопределено. - Получить(0). Метод
Массив.Получить(0)эквивалентен обращению по индексу и подчиняется тем же ограничениям — на пустом массиве выдаст ошибку.
Выбор зависит от задачи: если массив гарантированно заполнен (например, вы сами только что добавили элементы), достаточно Массив[0]. Если массив пришёл извне — предпочтительнее проверка количества или цикл.
Сравнение способов
Самый короткий и быстрый вариант. Подходит, когда массив точно не пуст. На пустом массиве — ошибка времени выполнения.
Универсальный безопасный шаблон для массивов из внешних источников. Требует трёх-пяти строк кода.
Безопасен без дополнительных проверок, но менее очевиден при чтении кода. Удобен, когда дальше всё равно нужен обход.
Полный аналог обращения по индексу. Используется редко, чаще встречается в старом коде.
Как проверить результат и отладить код
После получения первого элемента полезно убедиться, что вы получили именно то, что ожидали. Простейший способ — вывести значение через Сообщить() или посмотреть переменную в отладчике конфигуратора (Ctrl+Shift+F9 для запуска, точка останова на строке обращения).
Проверьте тип значения через ТипЗнч(ПервыйЭлемент), если дальше планируется обращение к свойствам или методам объекта. Например, если в массиве ожидаются ссылки на документы, а первым элементом оказалась строка, обращение к реквизитам вызовет ошибку.
Как проверить результат
Массив.Количество() возвращает 1 и более
Возвращает 0 — обращаться к Массив[0] нельзя
Переменная содержит ожидаемое значение нужного типа
Неопределено или значение другого типа — проверьте, как заполнялся массив
Процедура выполняется до конца без исключений
Ошибка «Индекс находится за границами массива» — массив пуст или индекс неверен
Типичные ошибки при работе с первым элементом
Большинство проблем связано не с самим синтаксисом, а с неверными предположениях о содержимом массива. Разберём самые частые.
Первая группа ошибок — путаница с нумерацией. Разработчики, привыкшие к языкам с нумерацией с единицы, пишут Массив[1] и получают второй элемент или ошибку на массиве из одного элемента. Вторая группа — отсутствие проверки на пустой массив после вызовов функций поиска, разбора строк или запросов.
Практические сценарии из прикладной разработки
Первый элемент результата разбора строки
Частая задача — взять первую часть строки после разделения. Например, получить фамилию из полного ФИО:
Части = СтрРазделить("Иванов Иван Иванович", " ");
Если Части.Количество() > 0 Тогда
Фамилия = Части[0];
КонецЕсли;
Первый элемент из массива, возвращённого функцией
Когда функция возвращает массив найденных ссылок, безопасный код выглядит так:
Найденные = НайтиДокументыПоНомеру(Номер);
Если Найденные.Количество() > 0 Тогда
ДокументСсылка = Найденные[0];
// дальнейшая работа со ссылкой
Иначе
ВызватьИсключение "Документ не найден";
КонецЕсли;
Если вам нужен только первый элемент, а массив формируется запросом к базе данных, эффективнее ограничить выборку на уровне запроса (например, выбрать первую запись с сортировкой), чем загружать в память весь массив ради одного значения.
Часто задаваемые вопросы
С чего начинается нумерация массива в 1С?
С нуля. Первый элемент имеет индекс 0, второй — 1, последний — Массив.Количество() - 1. Это отличает 1С от некоторых других встроенных коллекций, и путаница здесь — частая причина ошибок.
Что будет, если обратиться к Массив[0] у пустого массива?
Возникнет ошибка времени выполнения «Индекс находится за границами массива», и выполнение текущей процедуры прервётся. Если код выполнялся в транзакции, она будет откачена. Чтобы этого избежать, проверяйте Массив.Количество() > 0 перед обращением.
Чем отличается Массив[0] от Массив.Получить(0)?
Функционально — ничем: оба варианта возвращают элемент с индексом 0 и одинаково падают на пустом массиве. Обращение через квадратные скобки короче и чаще используется в современном коде.
Как получить первый элемент, не зная, массив это или нет?
Сначала проверьте тип: Если ТипЗнч(Значение) = Тип("Массив") Тогда.. КонецЕсли. Внутри блока дополнительно проверьте количество элементов, и только потом обращайтесь по индексу 0.
Как получить последний элемент массива?
По индексу Массив.Количество() - 1: Последний = Массив[Массив.Количество() - 1]. Как и с первым элементом, предварительно убедитесь, что массив не пуст.
Можно ли получить первый элемент фиксированного массива?
Да, синтаксис тот же: ФиксМассив[0]. Фиксированный массив нельзя изменять (добавлять и удалять элементы), но чтение по индексу работает без ограничений, включая проверку Количество().
Что важно запомнить
Первый элемент массива в 1С — это Массив[0], нумерация идёт с нуля. Перед обращением к массиву из внешнего источника всегда проверяйте Массив.Количество() > 0, чтобы избежать ошибки «Индекс за границами массива». Для поиска конкретного значения используйте метод Найти(), а если нужен только один элемент из базы — ограничивайте выборку на уровне запроса.