У массива элементы адресуются с нуля, а Сред получает номер символа строки с единицы. Пример использует отдельные переменные для этих разных координат.
Где и как запускать
Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.
Подготовка
Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.
Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().
Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.
Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.
Процедура ВыполнитьПример() Экспорт
Названия = Новый Массив;
Названия.Добавить("Азбука");
Названия.Добавить("Букварь");
Названия.Добавить("Словарь");
ИндексКниги = 0;
НомерСимвола = 1;
Если ИндексКниги < 0 Или ИндексКниги >= Названия.Количество() Тогда
ВызватьИсключение "Нет собственного элемента с таким индексом";
КонецЕсли;
Название = Названия[ИндексКниги];
ПерваяБуква = Сред(Название, НомерСимвола, 1);
Сообщить(Название = "Азбука");
Сообщить(ПерваяБуква = "А");
ПоследнийИндекс = Названия.Количество() - 1;
Сообщить(ПоследнийИндекс = 2);
Сообщить(Названия[ПоследнийИндекс] = "Словарь");
Собрано = "";
Для Каждого Книга Из Названия Цикл
Собрано = Собрано + Сред(Книга, 1, 1);
КонецЦикла;
Сообщить(Собрано = "АБС");
КонецПроцедурыРазбор по шагам
Создать три собственных названия. Размер массива 3 означает индексы 0/1/2, не 1/2/3.
Проверить индекс до обращения: 0 допустим, 3 недопустим. Названия[0] даёт Азбука.
Передать Сред номер первого символа 1 и длину 1. Эти числа не являются индексами массива.
Вычислить последний индекс как Количество()-1, затем получить Словарь. Для пустого массива сначала нужна отдельная проверка количества.
Для Каждого даёт сами строки; из каждой взять первый символ. Итоговая строка АБС независимо подтверждает обход всех трёх элементов.
Как проверить результат
Пять проверок Истина: Азбука, А, последний индекс 2, Словарь и АБС.
Измените ИндексКниги на 2: название Словарь, первая буква С. При 3 защита должна вызвать исключение до обращения к массиву.
Ожидаемый результат
Различие номера и индекса объяснено одной законченной задачей и двумя разными API-контрактами.
На что обратить внимание
Нельзя универсально прибавлять или вычитать 1 для всех методов: сначала выясните, ожидается индекс коллекции или номер части объекта.
Для пустой коллекции Количество()-1 равно -1; это не допустимый индекс.
Переменная Для Каждого содержит значение, а не индекс. Строка Азбука не подходит в качестве числовой позиции массива.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.