Имя: Пароль:
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) нужно имена колонок или из метаданных брать или (имхо некрасиво) из связанного ТП
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn