Имя: Пароль:
1C
1С v8
Считать телефон из эксель Ч.2
0 SkillUp
 
15.04.19
10:28
Здр., товарищи есть такая ситуация - https://drive.google.com/open?id=1aFmFn7GV8FYqp3WoYyq6jMefhsuot-4K ,надо считать телефон из эксел, в нормальном виде. Подсказали вместо .text - на Value. Делаю так , но ошибка, и не знаю что делать. Заранее спасибо за помощь...

Ошибка:
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(54)}: Ошибка при получении значения атрибута контекста (Value)
            ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Value;
по причине:
Произошла исключительная ситуация (0x8002000a)

Код с ошибкой:

Для НомерКолонки = 1 по Таблица.Колонки.Количество() Цикл //заполняем строку значениями
            ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Value;
            ИмяКолонки = Таблица.Колонки[НомерКолонки-1].Имя;
            НоваяСтрока[ИмяКолонки] = ТекущееЗначение;
        КонецЦикла;



Полностью код:

Процедура КнопкаВыполнитьНажатие(Кнопка)
    //очищаем таблицу и удаляем колонки
    Таблица.Очистить();
    Таблица.Колонки.Очистить();
    ЭлементыФормы.Таблица.Колонки.Очистить();
    
    ИмяФайла = ПолеВвода1;
    
    // Создание COM-объекта
    Excel = Новый COMОбъект("Excel.Application");
    
    // Открытие книги
    Книга = Excel.Workbooks.Open(ПолеВвода1);
    // Позиционирование на нужном листе
    Лист = Книга.Worksheets(НомерСтраницы).Name;
    
    //Получим количество строк и колонок.
    //В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
    Версия = Лев(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, Сч);
        ИмяБезПробелов = СтрЗаменить(Excel.Cells(1, Сч).text," ",""); // убираем из имени колонок пробелы
        ИмяБезПробелов = СтрЗаменить(ИмяБезПробелов,"-","");
        
        
        Позиция = Найти(ИмяБезПробелов,"Город");
        Если Позиция >0 Тогда
            ИмяБезПробелов = "Город";
        КонецЕсли;    
        
        Таблица.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);
        НоваяКолонка = ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов, ИмяКолонки);
        НоваяКолонка.Данные = ИмяБезПробелов;
        Сч = Сч + 1;
    КонецЦикла;
    
    
    //После формирования колонок считываем тело файла эксель и построчно заносим данные в табличное поле:
    Для НС = 2 по ФайлСтрок Цикл // НС указываем с какой строки начинать обработку
        Состояние("Файл "+Строка(ИмяФайла)+": Обрабатывается первый лист "+Строка(Формат(?(ФайлСтрок=0,0,((100*НС)/ФайлСтрок)),"ЧЦ=3; ЧДЦ=0"))+" %");
        ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break
        НоваяСтрока = Таблица.Добавить();
        Для НомерКолонки = 1 по Таблица.Колонки.Количество() Цикл //заполняем строку значениями
            ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Value;
            ИмяКолонки = Таблица.Колонки[НомерКолонки-1].Имя;
            НоваяСтрока[ИмяКолонки] = ТекущееЗначение;
        КонецЦикла;
    КонецЦикла;    
    
    // Закрытие книги
    Excel.DisplayAlerts = 0;
    Excel.Quit();
    Excel.DisplayAlerts = 1;
    
КонецПроцедуры
1 SkillUp
 
15.04.19
10:46
ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Text;

меняю на

ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Value;

Ни кто не сталкивался с подобным?
2 vova1122
 
15.04.19
10:56
А чем не устраивает через текст ?
ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Text;
или так
3 vova1122
 
15.04.19
10:56
ТекущееЗначение = ""+Excel.Cells(НС, НомерКолонки).Text;
4 SkillUp
 
15.04.19
11:01
(3) 1 мин.
5 SkillUp
 
15.04.19
11:08
Если текст, тогда вот так -https://drive.google.com/open?id=1aFmFn7GV8FYqp3WoYyq6jMefhsuot-4K  и в 1с попадает!!!
6 SkillUp
 
15.04.19
11:08
(3) Не, в 1с нормальное значение не попадает...
7 SkillUp
 
15.04.19
11:09
(2) Надо прочитать! Но если считать, тогда ошибка...
8 shadow_sw
 
15.04.19
11:28
поменять программно значение формата в ячейке на текст, потом читать как текст
9 vova1122
 
15.04.19
11:37
У меня правильно отработало так:
ТекущееЗначение = ""+Excel.Cells(НС, 9).value;
ТекущееЗначение = СтрЗаменить(ТекущееЗначение," ","");
10 SkillUp
 
15.04.19
11:45
(9) О! 1 мин.
11 SkillUp
 
15.04.19
11:48
(9) Шикарно ,СПАСИБО!