23.03.2009, 14:40 | #21 |
Участник
|
Сделал.
Все заработало. Но почему-то стала не симпатичная форма "Генерация отчета". Раньше отображался красивый принтер, а теперь одна строка и то с нулем. Где это можно поправить? Заранее благодарю.
__________________
Александр |
|
23.03.2009, 14:52 | #22 |
MCTS
|
Цитата:
Но почему-то стала не симпатичная форма "Генерация отчета". Раньше отображался красивый принтер, а теперь одна строка и то с нулем.
Открываете метод new() класса CXMLExcelReportEx. После строки prg.setCaption(#PRG_CAPTION); пишете prg.setAnimation(#AviPrint); |
|
23.03.2009, 15:23 | #23 |
Участник
|
Цитата:
Сообщение от Eldar9x
А зачем он, в смысле принтер? Я его снес, по соображениям производительности. К тому же без него круче смотрится . Но если уж хочется, делается просто:
Открываете метод new() класса CXMLExcelReportEx. После строки prg.setCaption(#PRG_CAPTION); пишете prg.setAnimation(#AviPrint);
__________________
Александр |
|
25.03.2011, 12:27 | #24 |
Участник
|
Ячейки с числами..
Вывожу строку, в некоторых ячейках есть числа.
Использую любой стиль, который выделяет строку цветом, или делает шрифт жирным (например CLR_BOLD_STR). Строка меняет цвет, текст становится жирным, но в тех ячейках где числа - никаких изменений. Делал свой стиль для числа - не помогает. Можно ли числовые ячейки форматировать? |
|
16.05.2011, 09:23 | #25 |
MCTS
|
Цитата:
Сообщение от propeller
Вывожу строку, в некоторых ячейках есть числа.
Использую любой стиль, который выделяет строку цветом, или делает шрифт жирным (например CLR_BOLD_STR). Строка меняет цвет, текст становится жирным, но в тех ячейках где числа - никаких изменений. Делал свой стиль для числа - не помогает. Можно ли числовые ячейки форматировать? X++: CExcel excel = new CExcel(); ; excel.send(["Строка", 10.0], ["CLR_BOLD_STR", "", "CLR_NUM"]); excel.show(); Ну другой вариант так делать, только тогда формат ячейки эксель будет 'общий',а не числовой: X++: excel.send(["Строка", strfmt("%1", 10.0)], ["CLR_BOLD_STR"]); |
|
16.05.2011, 11:58 | #26 |
Участник
|
В теме #ifdef.ax4 предлагалось готовое решение для условной компиляции, учитывающей версию Аксапты.
|
|
16.05.2011, 12:18 | #27 |
Участник
|
К слову, в коде метода xmlStart() зашита строка
X++: "<?xml version=\"1.0\" encoding=\"WINDOWS-1251\"?>\n" |
|
16.05.2011, 14:32 | #28 |
MCTS
|
Цитата:
Сообщение от gl00mie
В теме #ifdef.ax4 предлагалось готовое решение для условной компиляции, учитывающей версию Аксапты.
Мне кажется, легче самому контролировать. Цитата:
однако, при работе в 4-ке и выше сформированная строка будет вовсе даже не в ANSI-кодировке.
|
|
31.05.2011, 18:50 | #29 |
Участник
|
...Ну так просто: в XML будет прописана кодировка ANSI, хотя сам XML будет в UTF-16; в принципе, мелочь. Однако, применительно к 2009-й у вывода в Excel большого куска данных в XML обнаружился еще один "побочный эффект": в ядре реализовано ограничение на максимальный размер памяти, который может быть выделен одной сессией под переменные кода Х++. Если код попытается собрать слишком длинную строку, больше примерно 4-5 Мб, то вылетит ошибка времени выполнения "недостаточно памяти для выполнения скрипта". Можно настроить тот же AOS, чтобы у него не было такого ограничения, но это не спасет, если с AOS'а попытается передать такую длинную строку на клиента - вылетит точно такое же исключение. Соотв., в общем случае надо настраивать и AOS, и клиента, однако, засада в том, что клиентов может быть много, и настройку они могут читать из HKCU, так что надо по идее на каждом хостев каждом профиле прописывать в реестре настройку, снимающую ограничение на максимальный размер буфера (что именно прописывать, рассказывается в заметке Error executing code: Insufficient memory to run script в блоге EMEA DAX Support). Если клиенты запускается с определенным конфигом, да еще и лежащим где-нить на сетевой шаре, тогда проще - можно просто подправить этот конфиг и все. Но факт тот, что оперирование большими текстовыми буферами требует "тонкой настройки" сервера и клиента.
|
|
|
За это сообщение автора поблагодарили: Logger (7). |
10.06.2011, 13:18 | #30 |
MCTS
|
Цитата:
Сообщение от gl00mie
...Ну так просто: в XML будет прописана кодировка ANSI, хотя сам XML будет в UTF-16; в принципе, мелочь. Однако, применительно к 2009-й у вывода в Excel большого куска данных в XML обнаружился еще один "побочный эффект": в ядре реализовано ограничение на максимальный размер памяти, который может быть выделен одной сессией под переменные кода Х++. Если код попытается собрать слишком длинную строку, больше примерно 4-5 Мб, то вылетит ошибка времени выполнения "недостаточно памяти для выполнения скрипта". Можно настроить тот же AOS, чтобы у него не было такого ограничения, но это не спасет, если с AOS'а попытается передать такую длинную строку на клиента - вылетит точно такое же исключение. Соотв., в общем случае надо настраивать и AOS, и клиента, однако, засада в том, что клиентов может быть много, и настройку они могут читать из HKCU, так что надо по идее на каждом хостев каждом профиле прописывать в реестре настройку, снимающую ограничение на максимальный размер буфера (что именно прописывать, рассказывается в заметке Error executing code: Insufficient memory to run script в блоге EMEA DAX Support). Если клиенты запускается с определенным конфигом, да еще и лежащим где-нить на сетевой шаре, тогда проще - можно просто подправить этот конфиг и все. Но факт тот, что оперирование большими текстовыми буферами требует "тонкой настройки" сервера и клиента.
Классы для генерации отчетов в Excel Цитата:
1) Добавлена возможность контролировать (без перегрузки метода) предельный размер буфера до выгрузки (swapQty). по умолчанию выставлено в 1000;
X++: report.swapQty(1000); 2) Добавлена возможность контролировать размеры буфера во избежание его переполнения: задается командой X++: report.autoSwap(true); по умолчанию выключено макимальный размер буфера (по умолчанию выставлен 1000000) задается командой X++: report.maxStr(1000000); Это гарантирует работу при любом размере отчета, но несколько замедляет его вывод, поэтому при большом числе колонок лучше регулировать swapQty. Последний раз редактировалось Eldar9x; 10.06.2011 в 13:26. |
|