AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.09.2012, 12:16   #1  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Ошибка вставки из textBuffer в Excel
Добрый день! Следующая проблема:
В Цикле заполняю, строку необходимой мне информацией, затем строку помещаю в textBuffer, затем конструкцией
X++:
excelDocument.insertText("A1", texBuffer, 1)
пытаюсь вставить содержимое буфера в Ексель. Но вместо этого в Ексель попадает содержимое буфера обмена компьютера, т.е. всё что я сам копировал и вставлял через буфер, а не то что хочу получить из аксапты!
пробовал просто заполнять строку просто тестовым набором букв! Результат такой же!
Всё это я делаю в методе fetch одно аксаптовского отчёта - хотят чтобы он дублировался в Excel.
В код метода insertText() я не лазил и ничего там не менялось! может кто чем помочь?
Спасибо!
Старый 05.09.2012, 13:24   #2  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
885 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Я делаю через класс TextBuffer - формирую текстовку, потребную к вставке, вызываю у него метод toClipBoard() (копирование в системный буфер обмена) и потом, обращаясь к методу pasteSpecial() у COM-объекта Range, передаю в Excel
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Старый 05.09.2012, 14:20   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,657 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от JuniorAx Посмотреть сообщение
В код метода insertText() я не лазил и ничего там не менялось!
Придется залезть и сравнить с тем, что написано здесь

http://forum.mazzy.ru/index.php?showtopic=385

Метод insertText() не является "стандартным" методом в том смысле, что в исходной поставке его нет. Это "самописка", вероятно, на основе кода, указанного по ссылке.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 05.09.2012, 14:29   #4  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Я попробовал быстренько тестовый job прогнать на этом же приложении! Всё отлично работает, т.е. пишу текст в строковую переменную, запихиваю в буфер, пишу в Ексель, всё теми же самыми методами! т.е. причина не в тексте метода. Но если честно понимания всё равно нет :-(
Старый 05.09.2012, 15:22   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,657 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от JuniorAx Посмотреть сообщение
Я попробовал быстренько тестовый job прогнать на этом же приложении! Всё отлично работает, т.е. пишу текст в строковую переменную, запихиваю в буфер, пишу в Ексель, всё теми же самыми методами! т.е. причина не в тексте метода. Но если честно понимания всё равно нет :-(
В тексте, в тексте. Вы сравните, что написано у Вас и что написано по приведенной выше ссылке. Заодно почитайте в комментариях в каких случаях могут возникнуть проблемы и как их лечить.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 05.09.2012, 15:37   #6  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Спасибо что откликнулись. Сравнил у меня текст в точности такой же, я заменил 0 на 1 в pasteSpecial(), всё так же (((
Я сейчас даже попробовал в в своём примере заменить содержимое просто на текст. Результат тот же самый! Хотя если делать всё через джоб всё работает прекрасно!
Заметил одну особенность ,если буфер вообще не заполнять, то в Excel вообще не попадает ничего! А если хотя бы в буфере есть 1 символ, то выводится содержимое буфера обмена!
Старый 05.09.2012, 15:42   #7  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
А не может ли этого быть из-за того что всё это я пытаюсь проделать в методе fetch отчёта??? Может он как то влияет на поведение буфера обмена? Хотя в коде я ни чего подобного не нашёл.
Старый 05.09.2012, 16:00   #8  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,657 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Вообще-то, по ссылке приведены 3 варианта текста. "Точно такой же" - это какой из них?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 05.09.2012, 16:01   #9  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,657 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Кстати, для справки. Job всегда выполняется на стороне клиента. А где выполняется Ваш код? Если это класс, то какое у него значение свойства RunOn?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 05.09.2012, 16:09   #10  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Кстати, для справки. Job всегда выполняется на стороне клиента.
если для джоба создать MenuItem, в котором указать Cвойство RunOn = Server, то он будет выполняться не на стороне клиента

P.S. сорри за оффтоп...
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 05.09.2012, 16:10   #11  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
У меня ваш вариант! Я попробовал менять 1 в pasteSpecial на 0, эффекта нет. Повторюсь: у меня много отчётов работает по такому же принципу на этом же приложении и ни в одном такого глюка нет. А именно в этом месте появляется! Причём абсолютно не важно что я пытаюсь вывести в Ексель, всё равно выводится содержимое "общего" буфера.
Старый 06.09.2012, 03:30   #12  
Polgid is offline
Polgid
Участник
 
11 / 28 (1) +++
Регистрация: 07.05.2010
Скорее всего Ваш отчет выполняется на стороне сервера. Класс TextBuffer имеет свойство RunOn = Called from, и соответственно если в отчете создать экземпляр класса, он будет выполняться на сервере. Класс ComExcelDocument_RU имеет свойство RunOn = Client и всегда выполняется на клиенте.

Таким образом делая excelDocument.insertText("A1", texBuffer, 1) получается что Вы копируете содержимое textBuffer в буфер обмена сервера, а выводите в эксель содержимое буфера обмена клиента.

Как вариант решения проблемы можно создать наследника класса TextBuffer, со свойством RunOn = Client, и использовать его.
За это сообщение автора поблагодарили: rumpleteazer (1), JuniorAx (1).
Старый 23.10.2013, 23:11   #13  
rumpleteazer is offline
rumpleteazer
Участник
 
127 / 28 (1) +++
Регистрация: 02.09.2002
Цитата:
Сообщение от Polgid Посмотреть сообщение
Как вариант решения проблемы можно создать наследника класса TextBuffer, со свойством RunOn = Client, и использовать его.
Я для того, чтобы обеспечить нахождение textBuffer на клиенте, в методе insertValue создаю копию передаваемого буффера и в клипбоард копирую уже ее.

X++:
curBuffer = new TextBuffer();
curBuffer.setText(_text.getText());
curBuffer.toClipboard()
вместо
X++:
_text.toClipboard()
__________________
С уважением, Rumpleteazer.
Старый 21.03.2014, 18:17   #14  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
X++:
 "pasteSpecial"  COM-  "_Worksheet"    0x800A03EC (<>),  :  PasteSpecial   Worksheet  .
Используем этот метод insertText(), формируем экселевские файлы в пакете на сервере (COMExcelDocument_RU модифицирован на calledfrom).

Когда запускаем на клиенте - отрабатывает нормально, на сервере не хочет работать вставка через буфер, почему?
Теги
clipboard, excel, textbuffer

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вставка в Excel из TextBuffer. Кодировка Poleax DAX: Программирование 14 30.03.2011 11:16
textBuffer и максимальный размер буфера для вставки в Excel Roman777 DAX: Программирование 10 01.02.2010 19:15
Ошибка при выгрузке в Excel tolstjak DAX: Администрирование 2 28.01.2010 10:33
Ошибка при сохранении документа в MS Excel Breeze DAX: Программирование 13 23.01.2009 15:48
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:22.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.