Вход
Быстрая регистрация
Если вы у нас впервые: О проекте FAQ
1

Ошибка в 1с - индекс находится за границами массива - как исправить?

Kruzhi [4.9K] 8 месяцев назад
2

Знакомая ситуация. Скорее всего вы использовали в программном коде массив, при этом не убедившись, в том, что массив может быть пустым пытаетесь из него что-то извлечь.

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

ЗначениеИзМассива = Массив[Индекс].Значе­ние;

При этом если вы получили непустой массив или массив с количеством элементов меньше или равным индексу, вы значение извлечете. А если массив короче, или вовсе пустой.

Кошерно делать такую проверку:

ЭлементовВМассиве = Массив.Количество();

Если ЭлементовВМассиве >= (Индекс +1) Тогда

ЗначениеИзМассива = Массив[Индекс].Значе­ние;

Иначе

ЗначениеИзМассива = "";

//Если массив пустой, значит извлекать из него нечего

//Здесь можно вставить ругательство такого плана:

Сообщение = Новый СообщениеПользовател­ю;

Сообщение.Текст = "Массив недостаточной длины. Не могу извлечь из него искомое значение";

Сообщение.Сообщить()­;

КонецЕсли;

В итоге. Делайте все кошерно. Если выскакивает, посмотрите в какой обработке, в каком модуле выскаивает это ругательство и посмотрите, что происходит с массивом. Поставьте проверку на пустые значения. Скорее всего эта ошибка возникает в модулях, созданных пользователями 1С. В типовых модулях такие ошибки если и появляются, то вылизываются сразу.

автор вопроса выбрал этот ответ лучшим
Знаете ответ?
Есть интересный вопрос? Задайте его нашему сообществу, у нас наверняка найдется ответ!
Делитесь опытом и знаниями, зарабатывайте награды и репутацию, заводите новых интересных друзей!
Задавайте интересные вопросы, давайте качественные ответы и зарабатывайте деньги. Подробнее..
регистрация
OpenID