7.7 "Нессответствие типов" при загрузке из xls

Тема в разделе "Обмен данными в "1С:Предприятие 7.7"", создана пользователем ZaharovAleksandr, 22 июл 2013.

  1. TopicStarter Overlay
    ZaharovAleksandr
    Offline

    ZaharovAleksandr

    Регистрация:
    17 авг 2012
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Э = СоздатьОбъект("Excel.Application");
    Открываю нужный лист далее бегаю по строкам и столбцам.
    Натыкаюсь на проблемную ячейку:
    Лист.Cells(ТекущаяСтрока,ТекущаяКолонка).Value - Выдается сообщение "Несоответствие типов" и прога виснет.
    Если обратиться к формуле данной ячейки, то получим
    Лист.Cells(ТекущаяСтрока,ТекущаяКолонка).Formula = "VLOOKUP(A14,Прайс!$C:$I,5,0)*(1-$T$2)*(1+$V$2)".

    Если посмотреть в ёкселе формула задана так: "=ВПР(A14;Прайс!$C:$I;5;0)*(1-$T$2)*(1+$V$2)",
    А знечение ячейки: #Н/Д - Данные отсутствуют.

    Как мне обойти ячейки с ошибками в формулах?
    Попытка Исключение Не работает. Любое обращение к значению ячейки приводит к зависанию.
    Я таже через табло в отладчике обращаюсь к ячейки виснет и отладчик и предприятие...
    К сожаленю искать в xls-файлах вручную нет возможности. Слишком большой объем информаци: не менее 100 файлов с различным количеством
    листов, в различных папаках и подпапках в куче файлов с другими расширениями. Файлы замещаются периодически, поэтому исправлять бессмысленно.

    Заранее благодарю.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Проэкспериментировал... Действительно зависает.
    А если обойти так:
    Код:
    Если Найти(ЯчЕксел.formula,"VLOOKUP")<>0 Тогда
    Продолжить;
    КонецЕсли;
    У меня не виснет....
    
  3. Неназываемый
    Offline

    Неназываемый Опытный в 1С Команда форума

    Регистрация:
    2 фев 2007
    Сообщения:
    507
    Симпатии:
    7
    Баллы:
    29
    Попробуй выгрузить таблицу Эксель в массив.
    Код:
    МассивЭсель = Excel.Sheets(1).UsedRange.Value.Выгрузить();
    
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
  5. TopicStarter Overlay
    ZaharovAleksandr
    Offline

    ZaharovAleksandr

    Регистрация:
    17 авг 2012
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Да - это выход на первый взгляд, Это первое, что я попробывал натолкнувшись на данную ошибку. Сработало, но не все формулы мне нужно игнорировать.
    Скорее всего это не решить.
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
  7. TopicStarter Overlay
    ZaharovAleksandr
    Offline

    ZaharovAleksandr

    Регистрация:
    17 авг 2012
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    2007

    Идею понял. Попробую прогнать на более новых и старых версиях
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    На 2003м можете не пробовать - повиснет. Весь вопрос почему? Причем не только на этой формуле... REF тоже подвисает.
  9. TopicStarter Overlay
    ZaharovAleksandr
    Offline

    ZaharovAleksandr

    Регистрация:
    17 авг 2012
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Все! Решение готово:
    Есть такой еще параметр как Text.
    Можно так сделать. Добавить в список значений возможные ошибки в формулах типа: #н/д, дел/0, и т.д.
    А затем Если Список.НайтиЗначение(Нрег(Лист.Cells(ТекущаяСтрока,ТекущаяКолонка).Text)) > 0 Тогда Продолжить КонецЕсли;
    фууухххх. как гора с плеч.
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Прикольно... Нужно будет применить.

Поделиться этой страницей