|
Как программно заполнить табличную часть | ☑ | ||
---|---|---|---|---|
0
oleg_prg
03.09.12
✎
13:00
|
Добрый день. Подскажите пожалуйста как заполнить табличную часть
1С8.2 обычное прил На форме создал табличную часть ТЧ, прописал код, все работает как надо НС = ТЧ.Добавить(); Для Б = 1 по 20 Цикл НС.Установить(Б-1, ОкноExcel.Worksheets(1).Range(Символ(Б+64)+СокрЛП(А)).Value); Состояние("Загрузка строки "+СокрЛП(А)); КонецЦикла; Затем эту табличную часть сделал как реквизит формы, после этого выдается ошибка, в месте НС.Установить - метод установить не обнаружен. Вопрос как можно заполнить новую строку НС по индексу, а то писать все поля (НС.Поле1 = ххх, НС.Поле2 = ххх,...)как-то совсем нехочется |
|||
1
oleg_prg
03.09.12
✎
13:02
|
НС[Б] = ОкноExcel.Worksheets(1).Range(Символ(Б+64)+СокрЛП(А)).Value, тоже неверно, выдает что обращение по индексу невозможно
|
|||
2
Ненавижу 1С
гуру
03.09.12
✎
13:04
|
Б это вроде идентификатором колонки должен быть
|
|||
3
Reset
03.09.12
✎
13:06
|
У строки табличной части нелья обращаться к полям по индексу, в отличие от строки таблицы значений
|
|||
4
oleg_prg
03.09.12
✎
13:07
|
(2) Ненавижу 1С Да, спасибо огромное, точно!!! Дальше разбирусь!
|
|||
5
oleg_prg
03.09.12
✎
13:07
|
Да, туплю, всем спасибо!
|
|||
6
Reset
03.09.12
✎
13:09
|
Если желание выпендрится, получи имена колонок ТЧ из метаданных в массив и используй для адресации их; или используй строку промежуточной таблицы значений с именами как у ТЧ, а потом ее перезгуржай в строку ТЧ через заполнитьЗеаченияСвв
|
|||
7
oleg_prg
03.09.12
✎
13:12
|
Я сделал так
НС = ТЧ.Добавить(); Для Б = 1 по 20 Цикл НС[ЭлементыФормы.ТЧ.Колонки[Б].Имя] = ОкноExcel.Worksheets(1).Range(Символ(Б+64)+СокрЛП(А)).Value; Состояние("Загрузка строки "+СокрЛП(А)); КонецЦикла; |
|||
8
zladenuw
03.09.12
✎
13:14
|
можно загрузить твой ексель в таблицу и загрузить в тч.
примерно так Процедура Загрузить() Экспорт ExcelФайл = ПолучитьCOMОбъект(мВыбФайл); Состояние("Обработка файла Microsoft Excel..."); // Читаем данные первого листа книги Попытка ExcelЛист = ExcelФайл.Sheets(1); Исключение Предупреждение("Файл открыт, закройте его!!!",,"ОШИБКА"); Возврат; КонецПопытки; // RowCount = 6500; ВсегоКолонок = 3; НомерПервойКолонки = 1; // СоздатьТЧДанных(); //Обратаем всю область данных Область = ExcelЛист.Range(ExcelЛист.Cells(1,НомерПервойКолонки), ExcelЛист.Cells(RowCount,ВсегоКолонок)); Данные = Область.Value.Выгрузить(); //Создание пустых строк по RowCount Для Счетчик = 1 По RowCount Цикл НоваяСтрока = ТЧДанных.Добавить(); КонецЦикла; //Заполнение Тч данными Для Счетчик = 0 По ВсегоКолонок-1 Цикл ТЧДанных.ЗагрузитьКолонку(Данные[Счетчик], "Колонка"+Счетчик); КонецЦикла; Создать(); ExcelФайл.Close(); КонецПроцедуры //------------------------------ Процедура СоздатьТЧДанных() // Создание описателя типов для таблицы значений //КЧ = Новый КвалификаторыЧисла(15,2); КС = Новый КвалификаторыСтроки(50); Массив = Новый Массив; Массив.Добавить(Тип("Строка")); ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС); //Массив.Очистить(); //Массив.Добавить(Тип("Число")); //ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ); // Очистить предыдущие значения ТЧДанных.Очистить(); ТЧДанных.Колонки.Очистить(); // Создать колонки табличного документа ТЧДанных.Колонки.Добавить("Колонка0",ОписаниеТиповС,"Х"); ТЧДанных.Колонки.Добавить("Колонка1",ОписаниеТиповС,"ХХ"); ТЧДанных.Колонки.Добавить("Колонка2",ОписаниеТиповС,"ХХX"); //ТЧДанных.Колонки.Добавить("Колонка3",ОписаниеТиповС,"ХXXX"); //ТЧДанных.Колонки.Добавить("Колонка4",ОписаниеТиповС,"Норматив"); //ТЧДанных.Колонки.Добавить("Колонка5",ОписаниеТиповС,"Х"); //ТЧДанных.Колонки.Добавить("Колонка6",ОписаниеТиповС,"Кво"); КонецПроцедуры |
|||
9
Reset
03.09.12
✎
13:28
|
(8) Вместо СоздатьТЧДанных() можно ТЧ.ВыгрузитьКолонки(..
Вместо цикла //Заполнение Тч данными можно ТЧ.Загрузить( |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |