
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.3] |
![]() |
|
Сообщ.
#1
,
|
|
|
Здравствуйте! Мне надо загрузить данные из файла excel в табличное поле. Я работаю в версии 8.2 обычное приложение. код для версии 8.3 управляемое приложение не работает.
![]() ![]() Процедура ОкрытьФайлНажатие(Элемент) ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбора.Заголовок ="Выберите файл"; Если ДиалогВыбора.Выбрать()Тогда ИмяФайла=ДиалогВыбора.ПолноеИмяФайла; КонецЕсли ; Таблица.Очистить(); Таблица.Колонки.Очистить(); Попытка Excel=Новый COMОбъект("Excel.Application"); Excel.WorkBooks.Open(ИмяФайла); Состояние("Обработка файла Excel"); ExcelЛист=Excel.Sheets(1); Исключение Сообщить("шибка при открытии файла"); Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Версия=Лев(Excel.Version,Найти(Excel.Version,".")-1); Если Версия="8" Тогда ФайлСтрок=Excel.Cells.CurrentRegion.Rows.Count; ФайлКолонок=Макс(Excel.Cells.CurrentRegion.Columns.Count,13); Иначе ФайлСтрок=Excel.Cells(1,1).SpecialCells(11).Row; ФайлКолонок=Excel.Cells(1,1).SpecialCells(11).Column; КонецЕсли; Счетчик=1; Пока ЗначениеЗаполнено(Excel.Cells(1,Счетчик).Text)Цикл ИмяКолонки=Excel.Cells(1,Счетчик).Text; ИмяБезПробелов=СтрЗаменить(ИмяКолонки," ",""); //Таблица.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки); Таблица.Добавить(ИмяКолонки); НоваяКолонка=ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов,ИмяКолонки); НоваяКолонка.Данные=ИмяБезПробелов; Счетчик=Счетчик+1; КонецЦикла; Для нс=2 по Файлстрок Цикл НоваяСтрока=Таблица.Добавить(); Для НомерКолонки=1 По Таблица.Колонки.Количество()Цикл ТекущееЗначение=Excel.Cells(нс.НомерКолонки).Text; ИмяКолонки=Таблица.Колонких[НомерКолонки-1].Имя; НоваяСтрока[ИмяКолонки]=ТекущееЗначение; КонецЦикла; КонецЦикла; КонецПроцедуры Появляются такие ошибки: Слишком много фактических параметров Таблица.Добавить(ИмяКолонки); помогите,пожалуйста, разобраться. |
Сообщ.
#2
,
|
|
|
Цитата Sweety Bell @ Таблица.Добавить(ИмяКолонки); Таблица.Колонки.Добавить(ИмяКолонки); |
Сообщ.
#3
,
|
|
|
я так и написала. Проверила с помощью отладчика. Зависает на строке выше
![]() ![]() Пока ЗначениеЗаполнено(Excel.Cells(1,Счетчик).Text)Цикл ИмяКолонки=Excel.Cells(1,Счетчик).Text; Таблица.Добавить(ИмяКолонки); |
Сообщ.
#4
,
|
|
|
А почему тогда опять в цитируемом коде неправильно? И сообщение об ошибке тогда тут при чем вот это:
Цитата Sweety Bell @ Появляются такие ошибки: Слишком много фактических параметров Таблица.Добавить(ИмяКолонки); ??? Какая ошибка-то в итоге? Может еще быть так, что отлаживается новая версия обработки, а в режиме предприятия открыта старая. |
Сообщ.
#5
,
|
|
|
оно ругается на имя файла. В файле excel действительно названия с пробелами. Я изменила код.
Пока ЗначениеЗаполнено(Excel.Cells(1,Счетчик).Text)Цикл ИмяКолонки=Excel.Cells(1,Счетчик).Value; ИмяБезПробелов=СтрЗаменить(ИмяКолонки," ",""); ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"-",""); ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,".",""); ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"/",""); ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"()",""); ИмяБезПробелов=ТРег(ИмяБезПробелов); Если СокрЛП(ИмяБезПробелов)="" Тогда прервать; Иначе Сообщить(ИмяБезПробелов); ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов); Но он все доходит до пустого столбца и выдает ошибку в этой строке ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов); |
Сообщ.
#6
,
|
|
|
Ну я бы посмотрел что в той строке содержится реально, причем вывел бы код каждого символа. Там могут быть табуляторы, разделители строк или еще что.
|
Сообщ.
#7
,
|
|
|
там действительно были пробелы в строках в файле. я добавила обработку
Пока ЗначениеЗаполнено(Excel.Cells(1,Счетчик).Text)Цикл ИмяКолонки=Excel.Cells(1,Счетчик).Value; ИмяБезПробелов=СтрЗаменить(ИмяКолонки," ",""); ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"-",""); ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,".",""); ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"/",""); ИмяБезПробелов=СтрЗаменить(ИмяБезПробелов,"()",""); ИмяБезПробелов=ТРег(ИмяБезПробелов); Если СокрЛП(ИмяБезПробелов)="" Тогда прервать; Иначе Сообщить(ИмяБезПробелов); ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов); Код доходит до пустого столбца и вылетает. Не могу выйти из этой ситуации |
Сообщ.
#8
,
|
|
|
1. Проанализировать что там за символ с помощью КодСимв().
2. Забить и сделать через Попытка...Исключение, но это не правильно. |
Сообщ.
#9
,
|
|
|
Зачем придумывать велосипед?
|
![]() |
Сообщ.
#10
,
|
|
Цитата evGenius @ Там могут быть табуляторы, разделители строк или еще что. Или неразрывный пробел (Символы.НПП). В свое время я тоже намучался с этим символом в Excel и в 1С. я бы еще добавил СтрЗаменить(ИмяКолонки, Символы.НПП,""). Цитата teagirl @ Зачем придумывать велосипед? Видимо, очень надо ))) |