Завсегдатай
Группа: Местный
Сообщений: 248
Из: Советский Союз
Спасибо сказали: 66 раз
Рейтинг: 0
Добрый день, уважаумое сообщество. 1с77. Самописная. При чтении из Эксель файла есть ячкйка с значением #Н/Д. При попытке прочтения данной ячейки 1с77 вываливает ошибку "Несовпадение типов." а затем клент виснит. помогает только сняте задачи в диспечере устройств. Пробовал
Цена=Лист.Cells(НомерСтроки,НомерКолонки).Text;
также не помегает:
ПопыткаИсключениеКонецПопытки;
Пдскажите пожалуйста, кто знает, как или прочитать эту ячейку или ее пропустить...
Завсегдатай
Группа: Местный
Сообщений: 248
Из: Советский Союз
Спасибо сказали: 66 раз
Рейтинг: 0
сч=0;
НомерСтроки=1;
пока сч<40цикл//Сообщить(сч);
колонка=спр2.цена;
попытка
Значение = Лист.Cells(НомерСтроки, колонка).Value;
если ПустоеЗначение(Значение)=0тогдаЕсли (число(Значение)>0) и (СтрДлина(Значение)=СтрДлина(число(Значение))) Тогда
спОшибки=СоздатьОбъект("СписокЗначений");
спОшибки.ДобавитьЗначение("#ПУСТО!");
спОшибки.ДобавитьЗначение("#ДЕЛ/0!");
спОшибки.ДобавитьЗначение("#ЗНАЧ!");
спОшибки.ДобавитьЗначение("#ССЫЛКА!");
спОшибки.ДобавитьЗначение("#ИМЯ?");
спОшибки.ДобавитьЗначение("#ЧИСЛО!");
спОшибки.ДобавитьЗначение("#Н/Д");
//Для англ. версии
спОшибки.ДобавитьЗначение("#NULL!");
спОшибки.ДобавитьЗначение("#DIV/0!");
спОшибки.ДобавитьЗначение("#VALUE!");
спОшибки.ДобавитьЗначение("#REF!");
спОшибки.ДобавитьЗначение("#NAME?");
спОшибки.ДобавитьЗначение("#NUM!");
спОшибки.ДобавитьЗначение("#N/A");
Если спОшибки.НайтиЗначение(СокрЛП(Лист.Cells(НомерСтроки,спр2.Цена).Text))<>0Тогда
Цена=Лист.Cells(НомерСтроки,спр2.Цена).Text;
Иначе
Цена=Лист.Cells(НомерСтроки,спр2.Цена).Text;
КонецЕсли;
сообщить("Проверка на ошбку: "+Цена);
позиции=позиции+1;
Сообщить(НомерСтроки);
сч=0;
Название=Строка(Лист.Cells(НомерСтроки,спр2.Наименование_по_прайсу).Value);//Название
ПолноеНазвание=Название;
Если (пустоеЗначение(спр2.Доп_Наим_Полн_Колонка)=0) Тогда
ПолноеНазвание=ПолноеНазвание+"**"+Строка(Лист.Cells(НомерСтроки,спр2.Доп_Наим_Полн_Колонка).Value);//Дополнительное название к колонке рядомКонецЕсли;
Если (пустоеЗначение(спр2.Доп_Наим_Полн_Колонка1)=0) Тогда
ПолноеНазвание=ПолноеНазвание+"**"+Строка(Лист.Cells(НомерСтроки,спр2.Доп_Наим_Полн_Колонка1).Value);//Дополнительное название к колонке рядомКонецЕсли;
Если (пустоеЗначение(спр2.Доп_Наим_колонка)=0) и (пустоеЗначение(спр2.Доп_Наим_Строка)=0) Тогда
ПолноеНазвание=ПолноеНазвание+"**"+Строка(Лист.Cells(спр2.Доп_Наим_Строка,спр2.Доп_Наим_колонка).Value);//Дополнительное название в ячейкеИначеЕсли (пустоеЗначение(спр2.Доп_Наим_колонка)=0) или (пустоеЗначение(спр2.Доп_Наим_Строка)=0) Тогда
Сообщить("Ошибка в координатах допонительного наименования в "+Значение+" на листе № "+НомерЛиста);
Эксель.Quit();
возврат;
КонецЕсли;
КонецЕсли;
//сообщить(Название);Если пустоеЗначение(спр2.Код_по_прайсу)=0Тогда
код=Лист.Cells(НомерСтроки,спр2.Код_по_прайсу).Value;//Артикул//Сообщить(код);КонецЕсли;
Если пустоеЗначение(спр2.ед_изм)=0Тогда
ед=Лист.Cells(НомерСтроки,спр2.ед_изм).Value;//Единицы измерения//сообщить(ед);КонецЕсли;
ТЗ.НоваяСтрока();
ТЗ.Артикул=код;
ТЗ.Наименование=Название;
ТЗ.ПолноеНаименование=ПолноеНазвание;
Если ПустоеЗначение(спр2.Валюта)=0Тогда
ТЗ.Валютная_Цена=ОКР(Число(Цена),2);
ТЗ.Валюта=спр2.Валюта;
ТЗ.Цена="";
Иначе
ТЗ.Валютная_Цена="";
ТЗ.Валюта=спр2.Валюта;
ТЗ.Цена=окр(Число(Цена),2);
ТЗ.Сайт=спр.Сайт;
ТЗ.ДатаЗагрузки=спр.ДатаЗагрузки;
КонецЕсли;
ТЗ.Наименование=сокрЛП(ТЗ.Наименование);
ТЗ.ПолноеНаименование=СокрЛП(ТЗ.ПолноеНаименование);
ТЗ.ед_изм=ед;
ТЗ.Сайт=спр.Сайт;
ТЗ.ДатаЗагрузки=спр.Датазагрузки;
Конецесли;
Иначе
сч=сч+1;
Конецесли;
ИсключениеКонецПопытки;
НомерСтроки=НомерСтроки+1;
КонецЦикла;
Пробовал проводить проверку на ошибку
Если Найти (Эксель.Cells(з1, з2).Formula,"#REF") =0Тогда
Не ловит тоже...
Короеды это не жуки. Это пользователи. Они едят кору головного мозга ...
Крутой
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0
Цитата(Naghual @ 27.02.18, 16:37)
Саме таке рішення я і запропонував:
Варіант, але чи сприймає сам Ексель це як помилку?
Там в коді - жорстке обмеження кількості рядків. Може, якщо зробити правильно - визначити робочу зону засобами Екселя - то проблема зникне? Просто файлів читав багато, з таким не стикався...
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!