Имя: Пароль:
1C
1С v8
Загрузка в ТЗ из txt с разделителями
0 Tumakota
 
04.12.12
10:06
Всем доброго времени суток, вот код заполнения таблицы

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

при обработке выдает ошибку: "Получение элемента по индексу для значения не определено
           новСтр[номЗнач] = СтрЗаменить(зн,символОграничения,"");"

Но вот понять не могу, на УТ 10.3 работает, а вот на Рознице.Аптека 2.0 выдает такую ошибку:(
1 Wobland
 
04.12.12
10:07
вас понял
2 mikecool
 
04.12.12
10:07
новСтр не имеет индекса
3 cw014
 
04.12.12
10:07
Отладчиком пользоваться учили?
4 mikecool
 
04.12.12
10:08
(3) миста - лучший отладчик (с) не знаю, чье
5 Рэйв
 
04.12.12
10:11
номЗнач = 2;
Для каждого зн Из масЗначСтр Цикл
   новСтр[Объект.ТЗНастройки.Колонки[номЗнач].Имя] = СтрЗаменить(зн,символОграничения,"");
   номЗнач = номЗнач + 1;
КонецЦикла;


Только границу индексов проверяй.
6 cw014
 
04.12.12
10:12
(2) Ну если на УТ работает, то либо для УТ нет данных, либо все таки у строки ТЧ есть возможность по индексу колонки обратиться к свойству, а не по его имени
7 Reset
 
04.12.12
10:13
(0) В Рознице.Аптека 2.0 для элемента коллекции Объект.ТЗНастройки не определено получение элемента по индексу
8 Reset
 
04.12.12
10:13
или (6) :)
квоСтрок<2 в УТ ;)
9 Reset
 
04.12.12
10:14
или масЗначСтр - пустой
10 Reset
 
04.12.12
10:16
А серьезно - к строке ТЧ нельзя обращаться по индексу
11 Tumakota
 
04.12.12
10:18
(5) Если как вы написали то ошибка что поле объекта Колонки не найдены
12 Reset
 
04.12.12
10:20
Для метода как (5) нужно имена колонок или из метаданных брать или (имхо некрасиво) из связанного ТП
Программист всегда исправляет последнюю ошибку.