Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Считать телефон из эксель Ч.2

Считать телефон из эксель  Ч.2
Я
   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;
    
КонецПроцедуры
 
 
   SkillUp
 
1 - 15.04.19 - 10:46
ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Text;

меняю на 

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.