Индекс и номер: найти одну книгу в массиве и первый символ названия

Учебные задачи

У массива элементы адресуются с нуля, а Сред получает номер символа строки с единицы. Пример использует отдельные переменные для этих разных координат.

Где и как запускать

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

Подготовка

  1. Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.

  2. Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().

  3. Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.

  4. Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.

Процедура ВыполнитьПример() Экспорт
    Названия = Новый Массив;
    Названия.Добавить("Азбука");
    Названия.Добавить("Букварь");
    Названия.Добавить("Словарь");
    ИндексКниги = 0;
    НомерСимвола = 1;
    Если ИндексКниги < 0 Или ИндексКниги >= Названия.Количество() Тогда
        ВызватьИсключение "Нет собственного элемента с таким индексом";
    КонецЕсли;
    Название = Названия[ИндексКниги];
    ПерваяБуква = Сред(Название, НомерСимвола, 1);
    Сообщить(Название = "Азбука");
    Сообщить(ПерваяБуква = "А");
    ПоследнийИндекс = Названия.Количество() - 1;
    Сообщить(ПоследнийИндекс = 2);
    Сообщить(Названия[ПоследнийИндекс] = "Словарь");
    Собрано = "";
    Для Каждого Книга Из Названия Цикл
        Собрано = Собрано + Сред(Книга, 1, 1);
    КонецЦикла;
    Сообщить(Собрано = "АБС");
КонецПроцедуры

Разбор по шагам

  1. Создать три собственных названия. Размер массива 3 означает индексы 0/1/2, не 1/2/3.

  2. Проверить индекс до обращения: 0 допустим, 3 недопустим. Названия[0] даёт Азбука.

  3. Передать Сред номер первого символа 1 и длину 1. Эти числа не являются индексами массива.

  4. Вычислить последний индекс как Количество()-1, затем получить Словарь. Для пустого массива сначала нужна отдельная проверка количества.

  5. Для Каждого даёт сами строки; из каждой взять первый символ. Итоговая строка АБС независимо подтверждает обход всех трёх элементов.

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

  1. Пять проверок Истина: Азбука, А, последний индекс 2, Словарь и АБС.

  2. Измените ИндексКниги на 2: название Словарь, первая буква С. При 3 защита должна вызвать исключение до обращения к массиву.

Ожидаемый результат

Различие номера и индекса объяснено одной законченной задачей и двумя разными API-контрактами.

На что обратить внимание

  1. Нельзя универсально прибавлять или вычитать 1 для всех методов: сначала выясните, ожидается индекс коллекции или номер части объекта.

  2. Для пустой коллекции Количество()-1 равно -1; это не допустимый индекс.

  3. Переменная Для Каждого содержит значение, а не индекс. Строка Азбука не подходит в качестве числовой позиции массива.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.