|
При попытке прочтения ячейки #Н/Д вываливается ошибка "Несовпадение типов" и виснет клиент |
|
|
|
|
27.02.18, 11:01
|

Завсегдатай

Группа: Местный
Сообщений: 241
Из: Советский Союз
Спасибо сказали: 59 раз
Рейтинг: 70.4

|
Добрый день, уважаумое сообщество. 1с77. Самописная. При чтении из Эксель файла есть ячкйка с значением #Н/Д. При попытке прочтения данной ячейки 1с77 вываливает ошибку "Несовпадение типов." а затем клент виснит. помогает только сняте задачи в диспечере устройств. Пробовал Цена=Лист.Cells(НомерСтроки,НомерКолонки).Text;
также не помегает: Попытка Исключение КонецПопытки;
Пдскажите пожалуйста, кто знает, как или прочитать эту ячейку или ее пропустить...
Сообщение отредактировал Vofka - 27.02.18, 11:16

Короеды это не жуки. Это пользователи. Они едят кору головного мозга ...
|
|
|
|
27.02.18, 11:33
|

Завсегдатай

Группа: Местный
Сообщений: 241
Из: Советский Союз
Спасибо сказали: 59 раз
Рейтинг: 70.4

|
Naghual @ Сегодня, 11:11 
, Помилка: Несовпадение типов продовжує випадати. Які ще будуть у Вас ідеї? Спробував: спОшибки=СоздатьОбъект("СписокЗначений"); спОшибки.ДобавитьЗначение("#ПУСТО!");
спОшибки.ДобавитьЗначение("#ДЕЛ/0!");
спОшибки.ДобавитьЗначение("#ЗНАЧ!");
спОшибки.ДобавитьЗначение("#ССЫЛКА!");
спОшибки.ДобавитьЗначение("#ИМЯ?");
спОшибки.ДобавитьЗначение("#ЧИСЛО!");
спОшибки.ДобавитьЗначение("#Н/Д");
//Для англ. версии
спОшибки.ДобавитьЗначение("#NULL!");
спОшибки.ДобавитьЗначение("#DIV/0!");
спОшибки.ДобавитьЗначение("#VALUE!");
спОшибки.ДобавитьЗначение("#REF!");
спОшибки.ДобавитьЗначение("#NAME?");
спОшибки.ДобавитьЗначение("#NUM!");
спОшибки.ДобавитьЗначение("#N/A");
Если спОшибки.НайтиЗначение(СокрЛП(ЗагружаемаяОбласть.Cells(х,у).Text))<>0 Тогда значЕ=ЗагружаемаяОбласть.Cells(х,у).Text; Иначе значЕ=ЗагружаемаяОбласть.Cells(х,у).Value; КонецЕсли;
Не ловиться... Та сама помилка...

Короеды это не жуки. Это пользователи. Они едят кору головного мозга ...
|
|
|
|
27.02.18, 11:43
|

Завсегдатай

Группа: Местный
Сообщений: 241
Из: Советский Союз
Спасибо сказали: 59 раз
Рейтинг: 70.4

|
сч=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 Тогда
Не ловит тоже...

Короеды это не жуки. Это пользователи. Они едят кору головного мозга ...
|
|
|
27.02.18, 11:44
|

Говорящий
  
Группа: Пользователи
Сообщений: 71
Из: Днепропетровск
Спасибо сказали: 15 раз
Рейтинг: 15

|
По перше, я питав про Ексель файл а ви привели код 1С. По друге: - Если (число(Значение)>0) и (СтрДлина(Значение)=СтрДлина(число(Значение))) Тогда
тут (число(Значение)) вже буде помилка (двічі) при невірних даних екселю. - спОшибки=СоздатьОбъект("СписокЗначений"); ....
Нащо створювати та наповнювати список кожного разу?

Я желаю всем Счастья!
|
|
|
|
|
27.02.18, 11:52
|

Завсегдатай

Группа: Местный
Сообщений: 241
Из: Советский Союз
Спасибо сказали: 59 раз
Рейтинг: 70.4

|
[необходимо зарегистрироваться для просмотра ссылки] Цитата(Naghual @ 27.02.18, 11:49)
не бачу в цьому сенсу Я з Вами згоден. :-)

Короеды это не жуки. Это пользователи. Они едят кору головного мозга ...
|
|
|
|
|
|
27.02.18, 16:46
|

Крутой

Группа: Местный
Сообщений: 1993
Из: Киева и окрестностей
Спасибо сказали: 403 раз
Рейтинг: 0

|
Цитата(Naghual @ 27.02.18, 16:37)
Саме таке рішення я і запропонував: Варіант, але чи сприймає сам Ексель це як помилку? Там в коді - жорстке обмеження кількості рядків. Може, якщо зробити правильно - визначити робочу зону засобами Екселя - то проблема зникне? Просто файлів читав багато, з таким не стикався...
|
|