09.02.2009, 13:09 | #1 |
Участник
|
Проблема с RightFooter
Добрый день!
Возникла интересная ситуация. При создании документа в по шаблону excel из аксапты, в колонтитул документа программно вставляется имя юзера. Для формирования докуменов используется отдельный сервер. Так вот решили перенести это формирование на другой сервер, и данный метод перестал там работать. void UpdatenRightFooterR(str 21 _footerStr) { Com pageSetupOb=new com(); str ft; int pos; ; pageSetupOb=curSheet.PageSetup(); ft=pageSetupOb.RightFooter(); pos=strscan(ft,"_________________",20,100); ft=StrDel(ft,pos,19); ft=StrIns(ft,_footerStr,pos); pageSetupOb.RightFooter(ft); //здесь ругается, повторюсь, на предыдущем //сервере все ок. // если не передавать ft, то тоже //все формируется без проблем } Ругается "Метод 'RightFooter' в COM-обекте класса 'PageSetup' возвратил код ошибки 0х800А03ЕС (<unknown>), который означает:Нельзя установить свойство RightFooter класса PageSetup." Читал, что приблизительно это может быть связано с версией офиса или инсталяцией MUI, но вроде все одинаково на двух серверах....что еще может быть, может есть какие-нить предположения? |
|
09.02.2009, 13:56 | #2 |
Участник
|
не установлен принтер на втором сервере
|
|
09.02.2009, 14:22 | #3 |
Участник
|
Установлен!
|
|
09.02.2009, 14:36 | #4 |
Участник
|
попробуйте вручную на втором сервере установить этот колонтитул у данного отчета, возможно что-то не так настроено
|
|
09.02.2009, 14:42 | #5 |
Участник
|
Все шаблоны отчетов лежат в одном месте на отдельном сервере, т.е. разницы откуда открывать этот отчет нет.
|
|
09.02.2009, 14:44 | #6 |
Участник
|
По сообщению об ошибке видно, что нельзя сделать модификацию. Установить значение свойства. Читать можно, а менять нельзя.
Значит, сам файл, вероятно, открыт в режиме "только чтение". В него вообще, хоть что-нибудь программно записывается? Кроме того, при передаче параметров, отличных от типа Integer, желательно "оборачивать" их в ComVariant. В данном случае, примерно так: X++: COMVariant comVariant;
;
...
ft = ...
comVariant = new COMVariant(COMVariantInOut::IN, COMVariantType::VT_BSTR);
comVariant.bStr(ft);
pageSetupOb.RightFooter(comVariant); |
|
09.02.2009, 16:11 | #7 |
Участник
|
А вот почему эту модификацию нельзя сделать? читать и менять файл можно...
В файл программно записываются все данные, в том числе и имя юзера в колонтитуле. Думаю, есть другая причина, почему один и тотже код отрабатывают по разному на разных серверах. И причина скорее системная....ведь на первом сервере все работает как надо без ошибок. |
|
09.02.2009, 18:01 | #8 |
Участник
|
Помнится у нас с тобой что-то подобное было. Какие-то сложности с доступом Так тогда и не поняли в чем было дело. Верни все обратно может будет работать
|
|
11.02.2009, 10:12 | #9 |
Участник
|
Для тех кому интересно. Проблему решили. Причина была в том, что на 1 сервер был установлен MS Office без сервис паков и на нем все хорошо отрабатывало, а на втором сервере стоял еще и SP и результат не получался. Соответственно переустановили MS Office без SP и все заработало. Особо хочу отметить тот факт, что по умолчанию с MS Office устанавливается принтер Microsoft Office Document Image Writer. Так вот, формирование документа происходит задействуя этот принтер, без него такая же ошибка как в первом посте. Но и как оказалось, играла роль именно версия принтера 11.03.1897.00 - это рабочая. Т.к. версия принтера не рабочая была 11.03.8166.02. Вот такая хрень с MS Office. Да и еще по поводу оборачивания в ComVariant. После того, как первоначальный код заработал, решил еще обернуть в ComVariant по совету Владимира Максимова, но не тут было....
Опять начал ругаться как в первом посте : "Метод 'RightFooter' в COM-обекте класса 'PageSetup' возвратил код ошибки 0х800А03ЕС (<unknown>), который означает:Нельзя установить свойство RightFooter класса PageSetup." Вернул как было без ComVariant и все ок.....так что при работе аксапты с MS Office могут возникнуть различные казусы, не зависящие от аксапты. |
|
11.02.2009, 11:26 | #10 |
Участник
|
Поздравляю
|
|
11.02.2009, 15:48 | #11 |
Участник
|
Спасибо
|
|