Показать сообщение отдельно
Старый 08.04.2010, 11:00   #1  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,200 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Ошибка чтения файлов XLS под Windows 7
Такая ситуация. Может кто встречался. Аксапта версии 4.0 SP2. Есть у нас несколько функций по загрузке в Аксапту чего-либо из файлов Excel. Например, накладных поставщиков. Все эти файлы присылаются в версиях Excel не выше 2003. Все эти загрузки великолепно работают на компах под WinXP. И вот стали у нас ставить новые компы с предустановленной Windows 7. Поставили мы туда 2007 офис. И стала в этих загрузках появляться плавающая ошибка:
Код:
Error Сообщение (13:28:19) Ошибка времени выполнения: Метод был вызван с недопустимым числом параметров.
Плавающая в том смысле, что один и тот же файл может загрузиться без ошибки, а потом с ошибкой в ячейке Х, а потом с ошибкой в ячейке Y, а потом опять без ошибки, а потом с ошибкой в ячейке Z.. И т.д.
Причем, в том же 2007 офисе, установленном на WinXP, ошибки нет. А на Windows 7 ошибка есть. Установка 2003 офиса на тот же Windows 7 не помогает, дает ту же ошибку. Чего-то значит сломалось в Windows 7, похоже в каких-то библиотеках по работе с com-объектами.
Стек вызовов такой (название нашего класса опускаю, даю стек начиная со стандартных классов по работе с excel:
Код:
Трассировка стека
(C)\Classes\COM\value
(C)\Classes\SysExcelCell_XP\value - line 12
(C)\Classes\SysDataExcelCOMFree\readRow - line 38
(C)\Classes\SysDataExcelCOM\read - line 11
(C)\Classes\SysDataImportExcel\read - line 3
(C)\Classes\SysDataImportDefBase\importFilename - line 38
(C)\Classes\SysDataImportExcel\importFilename - line 6
(C)\Classes\SysDataImportDefBase\import - line 23
(C)\Classes\SysDataImportExcel\import - line 10
(C)\Classes\SysDataImportDefBase\run - line 5
Все эти классы на слое sys, то есть модификаций в них не было.

Код метода, где появляется ошибка:

X++:
public COMVariant value(anytype _value = COMArgument::NoValue)
{
    COMVariant  ret;
    ;
    if (!prmisdefault(_value))
    {
        ret = cell.value(#xlRangeValueDefault,_value);
    }
    else
    {
        ret = cell.value(#xlRangeValueDefault);   // ВОТ В ЭТОЙ СТРОКЕ ПОЯВЛЯЕТСЯ ОШИБКА
    }
    return ret;
}
Не наблюдалось у кого то глюков в Windows 7 при стыковке Аксапты с MS Office ?

Последний раз редактировалось Zabr; 08.04.2010 в 11:05.
За это сообщение автора поблагодарили: Logger (1).