Имя: Пароль:
1C
1С v8
Индекс за пределами границы массива
0 Валидатор
 
24.10.13
17:05
Пишу обработку по загрузке данных из тхт в документ:
ТаблицаЗначений = Новый ТаблицаЗначений;
    ТаблицаЗначений.Колонки.Добавить("Артикул",ОписаниеТиповС2 , "Код номенклатуры");
    ТаблицаЗначений.Колонки.Добавить("Номенклатура",ОписаниеТиповС2 , "Описание номенклатуры");
    ТаблицаЗначений.Колонки.Добавить("ГТД",ОписаниеТиповС2 , "ГТД");
    ТаблицаЗначений.Колонки.Добавить("СтранаПроисхождения",ОписаниеТиповС2 , "Страна происхождения");
    ТаблицаЗначений.Колонки.Добавить("ДатаНакладной",ОписаниеТиповД , "Дата накладной");
    ТаблицаЗначений.Колонки.Добавить("НомерНакладной",ОписаниеТиповС2 , "НомерНакладной");
    ТаблицаЗначений.Колонки.Добавить("Импортер",ОписаниеТиповС2 , "Импортер");
    ТаблицаЗначений.Колонки.Добавить("Количество",ОписаниеТиповЧ , "Количество");
    ТаблицаЗначений.Колонки.Добавить("Цена",ОписаниеТиповЧ , "Цена");
    
    Текст = Новый ЧтениеТекста(ПутьКФайлу, "cp866");
    Стр = Текст.ПрочитатьСтроку();
    Пока Стр <> Неопределено Цикл
        Стр = Текст.ПрочитатьСтроку();
        МассивСтрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Стр,"¦");
        НоваяТЗ = ТаблицаЗначений.Добавить();
        Артикул = МассивСтрок[0];
        НоваяТЗ.Артикул = Артикул;
        Номенклатура = МассивСтрок[1];
        НоваяТЗ.Номенклатура = Номенклатура;
        ГТД = МассивСтрок[2];
        НоваяТЗ.ГТД = ГТД;
        СтранаПроисхождения = МассивСтрок[3];
        НоваяТЗ.СтранаПроисхождения = СтранаПроисхождения;
        ДатаНакладной = МассивСтрок[6];
        НоваяТЗ.ДатаНакладной = ДатаНакладной;
        НомерНакладной = МассивСтрок[7];
        НоваяТЗ.НомерНакладной = НомерНакладной;
        Импортер = МассивСтрок[8];
        НоваяТЗ.Импортер = Импортер;
        Количество = МассивСтрок[9];
        НоваяТЗ.Количество = Количество;
        Цена = МассивСтрок[10];
        НоваяТЗ.Цена = Цена;
    КонецЦикла;


И вылетает ошибка: {Форма.Форма.Форма(62)}: Индекс находится за границами массива
        Артикул = МассивСтрок[0];
как быть? Ошибка вылетает не сразу, сначала позиции просчитываются
1 Валидатор
 
24.10.13
17:06
Стр принимает неопределено значение вот и ошибка( а как это обойти? условие писать? что если неопределено тогда конец типа цикла?
2 zbv
 
24.10.13
17:06
добавь проверку на пустую строку или пустой массив.
3 salvator
 
24.10.13
17:06
Запустить отладчик не предлагать?
4 1dvd
 
24.10.13
17:07
Почитай про конструкцию Если ... Тогда
Без неё очень трудно кодить
5 Валидатор
 
24.10.13
17:07
А как дальше продолжить выполнение кода, если массив пустой? че то туплю
6 Валидатор
 
24.10.13
17:07
(4) да этой конструкцией и буду пользоваться
7 zbv
 
24.10.13
17:07
(1) Стр = Текст.ПрочитатьСтроку(); - перенеси в конец цикла, перед "КонецЦикла"
8 lex-kex
 
24.10.13
17:08
(5) Продолжить
9 Валидатор
 
24.10.13
17:08
(8) продолжить не срабатывает
10 1dvd
 
24.10.13
17:09
Пока Стр <> Неопределено Цикл
        Стр = Текст.ПрочитатьСтроку();
        МассивСтрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Стр,"¦");
        Если МассивСтрок.Количество()>0 Тогда
            НоваяТЗ = ТаблицаЗначений.Добавить();
            ...
11 Валидатор
 
24.10.13
17:09
а во, норм все
12 Валидатор
 
24.10.13
17:09
спс
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой