Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Импорт данных в 1С из Excel
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
aby_2503
Проблема в следующем: импорт происходит нормально, все работает, но в самом Excel в каждой клетке значения хранятся в несколько строк. Если в Excel менять формат строки и убрать опцию - переносить по словам, тогда суммарная строка отображается со знаком абзаца. Если в таком виде ее импортировать в 1С, то строка отображается некорректно пример-"Абрамова Любовь¶Петровна".
Вот код для импорта
Процедура ЗаполнитьИзExcel()
    Excel = Новый COMОбъект("Excel.Application");
    ВыбФайл = Новый Файл("D:\счетчики\vesel.xls");
    ФайлОткуда = ВыбФайл.ПолноеИмя;
    РабочаяКнига = Excel.WorkBooks.Open(ФайлОткуда);
    Страница=1;
    Пока Страница<=489 Цикл
    Лист = Excel.Sheets(Страница);    
    Строка=2;
    Пока ЗначениеЗаполнено(Лист.Cells(Строка, 3).Value) Цикл
        НовыйПрибор = Справочники.Клиенты.СоздатьЭлемент();
        ДляНим =  Строка(Лист.Cells(Строка,3).Value);
        ДляНим = СтрЗаменить(ДляНим,"¶"," ");
        ДляНим2 =  Строка(Лист.Cells(Строка,4).Value);
        ДляНим2 = СтрЗаменить(ДляНим2,"¶"," ");
        НовыйПрибор.Наименование      = ДляНим;
        НовыйПрибор.Адрес      = ДляНим2;
        //Строка(Лист.Cells(Строка,3).Value);
        //НовыйПрибор.Адрес             = Строка(Лист.Cells(Строка,4).Value);
        НовыйПрибор.Родитель          = Справочники.Клиенты.НайтиПоНаименованию("Варваровка");
        НовыйПрибор.Записать();
        строка = строка + 1;                
        
    КонецЦикла;    
    
    Страница=Страница+1    
    КонецЦикла
    КонецПроцедуры

Пытался вот так по тупому заменить символ - не получается. Также пытался заменить его с помощью функции Символ(), тоже не получилось. Подскажите, что делать.
Ardi
перебрать все буквы слова и найти каким кодом кодируется здесь энтер.
Сообщить(текБуква);
Сообщить(Код(текБуква));

а потом заменять
ДляНим2 = СтрЗаменить(ДляНим2,Симв(НайденыйКодЭнтера)," ");
aby_2503
Цитата(Ardi @ 17.11.11, 13:29) необходимо зарегистрироваться для просмотра ссылки
перебрать все буквы слова и найти каким кодом кодируется здесь энтер.
Сообщить(текБуква);
Сообщить(Код(текБуква));

а потом заменять
ДляНим2 = СтрЗаменить(ДляНим2,Симв(НайденыйКодЭнтера)," ");


Так я знаю код - 182. Код тоже не помогает!
Ardi
Цитата(aby_2503 @ 17.11.11, 14:35) необходимо зарегистрироваться для просмотра ссылки
Так я знаю код - 182. Код тоже не помогает!

Тогда проблема не в экселе, и не в 1с.
pablo
А может там все-таки два символа кодируют энтер?
MATEVI
очень даже может быть 2
WKBAPKA
ну да, два символа, конец строки и перевод каретки

ну если функцией никак не заменить, тогда можно написать простую функцию ну типа:
ДлинаСтр = СтрДлина(МояСтрока);

ИтСтрока = "";
Для инд = 1 По ДлинаСтр Цикл
  Симв = Сред(МояСтрока,инд,1);
  Если КодСивмола(Симв) = НеНужныйКод Тогда
    Продолжить;
  Иначе
    ИтСтрока = ИтСтрока + Симв;
  КонецЕсли;
КонецЦикла;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.