К статье
Практический материал

Разработка и Конфигурация · 8 мин

Как получить первый элемент массива в 1С

Как получить первый элемент массива в 1С: обращение по индексу [0], проверка количества элементов, типичные ошибки и безопасные приёмы работы с массивами.

В языке 1С массив — это упорядоченная коллекция значений, к элементам которой обращаются по индексу. Самый простой способ получить первый элемент — использовать конструкцию Массив[0], потому что нумерация элементов в 1С начинается с нуля. Однако такое обращение безопасно только тогда, когда массив гарантированно не пуст.

Если массив не содержит ни одного элемента, обращение Массив[0] вызовет ошибку времени выполнения «Индекс находится за границами массива» и прервёт выполнение процедуры. Поэтому в прикладном коде получение первого элемента почти всегда сочетают с проверкой через метод Количество().

Ниже разобраны основные приёмы: прямое обращение по индексу, безопасные варианты с проверкой, альтернативы через цикл и структуру, а также типичные ошибки, которые допускают разработчики при работе с массивами в 1С.

Как обратиться к первому элементу по индексу

Элементы массива в 1С нумеруются с нуля: первый элемент имеет индекс 0, второй — 1, последний — Количество() - 1. Чтобы получить первый элемент, достаточно указать индекс в квадратных скобках после имени переменной:

Массив = Новый Массив;

Массив.Добавить("Первый");

Массив.Добавить("Второй");

ПервыйЭлемент = Массив[0]; // "Первый"

Тот же синтаксис работает и для присваивания значения: Массив[0] = "Новое значение" заменит первый элемент.

Обращение по индексу возвращает значение «как есть»: если в массиве лежит ссылка на справочник, структура или другой массив, вы получите именно этот объект, а не его копию. Изменение свойств полученного объекта отразится на элементе массива.

Как безопасно получить первый элемент: проверка на пустоту

Главный риск при обращении к Массив[0] — пустой массив. Например, массив возвращается функцией поиска, и при отсутствии результатов он пуст. Прямое обращение по индексу в этом случае аварийно завершит код.

Стандартный безопасный шаблон выглядит так:

Если Массив.Количество() > 0 Тогда

ПервыйЭлемент = Массив[0];

Иначе

ПервыйЭлемент = Неопределено;

КонецЕсли;

Альтернатива — обработка исключения через Попытка.. Исключение, но для этой задачи она избыточна: проверка количества читается лучше и не маскирует другие возможные ошибки внутри блока.

Альтернативные способы получить первый элемент

Иногда удобнее не обращаться по индексу напрямую. Несколько рабочих вариантов:

  • Цикл с прерыванием. Конструкция Для Каждого Элемент Из Массив Цикл.. Прервать; вернёт первый элемент и корректно отработает на пустом массиве — цикл просто не выполнится ни разу.
  • Метод Найти(). Если нужен не просто первый элемент, а первый элемент с конкретным значением, используйте Массив.Найти(Значение) — он вернёт индекс или Неопределено.
  • Получить(0). Метод Массив.Получить(0) эквивалентен обращению по индексу и подчиняется тем же ограничениям — на пустом массиве выдаст ошибку.

Выбор зависит от задачи: если массив гарантированно заполнен (например, вы сами только что добавили элементы), достаточно Массив[0]. Если массив пришёл извне — предпочтительнее проверка количества или цикл.

Сравнение способов

Массив[0]

Самый короткий и быстрый вариант. Подходит, когда массив точно не пуст. На пустом массиве — ошибка времени выполнения.

Проверка Количество() + Массив[0]

Универсальный безопасный шаблон для массивов из внешних источников. Требует трёх-пяти строк кода.

Цикл Для Каждого с Прервать

Безопасен без дополнительных проверок, но менее очевиден при чтении кода. Удобен, когда дальше всё равно нужен обход.

Массив.Получить(0)

Полный аналог обращения по индексу. Используется редко, чаще встречается в старом коде.

Как проверить результат и отладить код

После получения первого элемента полезно убедиться, что вы получили именно то, что ожидали. Простейший способ — вывести значение через Сообщить() или посмотреть переменную в отладчике конфигуратора (Ctrl+Shift+F9 для запуска, точка останова на строке обращения).

Проверьте тип значения через ТипЗнч(ПервыйЭлемент), если дальше планируется обращение к свойствам или методам объекта. Например, если в массиве ожидаются ссылки на документы, а первым элементом оказалась строка, обращение к реквизитам вызовет ошибку.

Контрольные точки

Как проверить результат

Количество элементов
Норма

Массив.Количество() возвращает 1 и более

Тревожный признак

Возвращает 0 — обращаться к Массив[0] нельзя

Значение первого элемента
Норма

Переменная содержит ожидаемое значение нужного типа

Тревожный признак

Неопределено или значение другого типа — проверьте, как заполнялся массив

Поведение кода
Норма

Процедура выполняется до конца без исключений

Тревожный признак

Ошибка «Индекс находится за границами массива» — массив пуст или индекс неверен

Типичные ошибки при работе с первым элементом

Большинство проблем связано не с самим синтаксисом, а с неверными предположениях о содержимом массива. Разберём самые частые.

Первая группа ошибок — путаница с нумерацией. Разработчики, привыкшие к языкам с нумерацией с единицы, пишут Массив[1] и получают второй элемент или ошибку на массиве из одного элемента. Вторая группа — отсутствие проверки на пустой массив после вызовов функций поиска, разбора строк или запросов.

Типичные ошибки
01
Обращение Массив[1] вместо Массив[0] — получаете второй элемент или ошибку на массиве из одного элемента, так как нумерация начинается с нуля
02
Отсутствие проверки Количество() > 0 — код падает на пустом массиве, который вернула функция поиска или разбор строки
03
Использование результата СтрРазделить без проверки — при пустой исходной строке массив может оказаться пустым в зависимости от параметров
04
Ожидание копии вместо ссылки — изменение объекта, полученного из массива, меняет сам элемент массива, что не всегда ожидаемо

Практические сценарии из прикладной разработки

Первый элемент результата разбора строки

Частая задача — взять первую часть строки после разделения. Например, получить фамилию из полного ФИО:

Части = СтрРазделить("Иванов Иван Иванович", " ");

Если Части.Количество() > 0 Тогда

Фамилия = Части[0];

КонецЕсли;

Первый элемент из массива, возвращённого функцией

Когда функция возвращает массив найденных ссылок, безопасный код выглядит так:

Найденные = НайтиДокументыПоНомеру(Номер);

Если Найденные.Количество() > 0 Тогда

ДокументСсылка = Найденные[0];

// дальнейшая работа со ссылкой

Иначе

ВызватьИсключение "Документ не найден";

КонецЕсли;

Если вам нужен только первый элемент, а массив формируется запросом к базе данных, эффективнее ограничить выборку на уровне запроса (например, выбрать первую запись с сортировкой), чем загружать в память весь массив ради одного значения.
ПЗ
Практическое замечание

Часто задаваемые вопросы

С чего начинается нумерация массива в 1С?

С нуля. Первый элемент имеет индекс 0, второй — 1, последний — Массив.Количество() - 1. Это отличает 1С от некоторых других встроенных коллекций, и путаница здесь — частая причина ошибок.

Что будет, если обратиться к Массив[0] у пустого массива?

Возникнет ошибка времени выполнения «Индекс находится за границами массива», и выполнение текущей процедуры прервётся. Если код выполнялся в транзакции, она будет откачена. Чтобы этого избежать, проверяйте Массив.Количество() > 0 перед обращением.

Чем отличается Массив[0] от Массив.Получить(0)?

Функционально — ничем: оба варианта возвращают элемент с индексом 0 и одинаково падают на пустом массиве. Обращение через квадратные скобки короче и чаще используется в современном коде.

Как получить первый элемент, не зная, массив это или нет?

Сначала проверьте тип: Если ТипЗнч(Значение) = Тип("Массив") Тогда.. КонецЕсли. Внутри блока дополнительно проверьте количество элементов, и только потом обращайтесь по индексу 0.

Как получить последний элемент массива?

По индексу Массив.Количество() - 1: Последний = Массив[Массив.Количество() - 1]. Как и с первым элементом, предварительно убедитесь, что массив не пуст.

Можно ли получить первый элемент фиксированного массива?

Да, синтаксис тот же: ФиксМассив[0]. Фиксированный массив нельзя изменять (добавлять и удалять элементы), но чтение по индексу работает без ограничений, включая проверку Количество().

Итог

Что важно запомнить

Первый элемент массива в 1С — это Массив[0], нумерация идёт с нуля. Перед обращением к массиву из внешнего источника всегда проверяйте Массив.Количество() > 0, чтобы избежать ошибки «Индекс за границами массива». Для поиска конкретного значения используйте метод Найти(), а если нужен только один элемент из базы — ограничивайте выборку на уровне запроса.