|
29.03.2011, 12:53 | #1 |
Участник
|
Ax и внешние отчетники
Доброго дня!
Подскажите пожалуйста, есть ли у кого опыт РЕАЛЬНОГО использования внешних отчетников для печати из Аксапты первичных документов - накладная, с/ф? Причем, как вы понимаете, корректными являются решения, где программным образом реализована логика правильного расчета и переноса на 2-ю и последуюшие страницы табличной части (например - хоть одна строка таблицы д.б. была напечатана на последней странице документа). Очень интересует сталкивался ли кто-нибудь с подобными решениями на OpenOffice. А то ведь он у нас вроде как в качестве госта утвержден для электронного обмена. Ну или просто в Экселе, кто-нибудь что-то подобное далал? |
|
29.03.2011, 13:27 | #2 |
Модератор
|
Смотрели RS. Не понравилось - очень тяжело рисовать формы, если требуется подгонка по миллиметрам. Следовательно, отрисовка форм потребовала бы огромного количества трудозатрат. Плюс непонятно, кто, когда и сколько напечатал - для контроля пришлось бы дописывать механизм. Разумеется, возникли вопросы с доступом, потому что RS запускался с системной учетной записью и полным доступом к данным. я не говорю про RLS... В итоге отказались. Это было на DAX 3.0.
Сейчас механизмы доступа и контроля доступа к данным изменились и позволяют использовать все стандартные ограничения и РЛС. Однако трудоемкость отрисовки шаблонов и контроля напечатанных экземпляров осталась. С Уважением, Георгий |
|
29.03.2011, 14:14 | #3 |
Участник
|
Из документов не в аксаптовском формате выводим только:
- в Excel товарно-транспортную накладную - в Word Акт о расхождении при приемке ТМЦ Обязательность строки на последнем листе в этих формах не реализовывалась. Да, согласен, это большой геморрой. |
|
29.03.2011, 14:47 | #4 |
Участник
|
|
|
29.03.2011, 16:46 | #5 |
Модератор
|
C Excel. Есть же стандартные шаблоны. Например РК - Настрока - Формы - Настройка форм, можно выбрать "Формат Российских Отчетов". А в Ёхеле все можно до миллиметров нарисовать, и логирование вести - кто когда какой отчет запустил, и РЛС работает, и доступ... Красота. Только формируются иногда долго, если генератором пользоваться, но тоже решаемо все, при наличии рук.
Георгий |
|
29.03.2011, 19:26 | #6 |
Участник
|
Цитата:
Цитата:
, и логирование вести - кто когда какой отчет запустил
|
|
|
За это сообщение автора поблагодарили: George Nordic (1). |
30.03.2011, 13:43 | #7 |
MCT
|
Очень не хватает возможности авто позиционирования в группе наподобие дизайна аксовской формы, а так технология мощная. И не нашел выравнивания одних контролов относительно других.
__________________
Axapta book for developer |
|
29.03.2011, 14:58 | #8 |
Участник
|
|
|
29.03.2011, 15:20 | #9 |
Участник
|
Загвоздка в корректной печати табличной части - чтобы не получилось : таблица и сумма на одной странице , а подписи на другой.
Такие документы подписывать побаиваются. У вас такой проблемы с Экселем нет ? |
|
29.03.2011, 15:48 | #10 |
Участник
|
Такой проблемы с екслем нету. Печать же идет программно, соответственно, разработчик сам управляет процессом разбивки на страницы.
|
|
29.03.2011, 15:50 | #11 |
Участник
|
Точнее будет так, ексель используется для отображения на экран, вывод на принтер, а ему на вход передается уже целиком готовый файл, с полностью готовой разбивкой на страницы, шапками на каждой странице, колонтитулами и прочее.
|
|
29.03.2011, 16:17 | #12 |
Участник
|
Интересно все-таки а с OpenOffice такая фишка пройдет?
|
|
29.03.2011, 16:24 | #13 |
Участник
|
Смотря как вы будете с ним работать. В частности в ексель передается хмл файл, в екселевском формате, думаю OpenOffice тоже умеет проделать подобные штуки. В любом случае, тем или иным способом есть возможность управлять OpenOffice, есть возможность сформировать файл в удобном формате, остается только открывать готовые файлы. В любом случае нужно будет писать соответствующую обертку.
|
|
29.03.2011, 19:20 | #14 |
Участник
|
Для этого вам нужен шаблон в формате xml для ексель.
Создаете новый документ и сохраните его в формате "таблица xml 2003 (*.xml)". При работе с шаблоном можно выделить 2 типа данных, требующих заполнения6 статические (дата отчета, номер документа и т.д.) и динамические (табличная часть, подписи, итоги). Для статичных данных нам требуется сама ячейка, для динамических - формат оформления (преимущественно). В обоих случаях используются именованные ячейки екселя (Формулы\Диспетчер имен\Присвоить имя). Сам формат екселя предполагает только работу с базовыми возможностями екселя, т.е всякие графики, сводные таблицы формат не поддерживает. Доступ к этим возможностям осуществляется при помощи объекта COM, после того, как файл с данными. Для работы вам нужно реализовать обертку, при помощи которой будет открываться файл, осуществляться поиск узлов, добавление новых узлов, их атрибутов и свойств. Ну, а дальше, используя обертку, открываете файл, находите нужные "статичные именованные ячейки", заполняете значениями, используя формат элементов табличной части, создаете стоки таблицы, самостоятельно определяя по некоторому алгоритму, когда нужно вставить итоги по странице, которые вы накапливаете, вставить разрыв страницы, скопировать шапку для нового листа, сохраняете изменения в новом файле, передаете объекту СОМ екселя и отображаете, или печатаете. Для вставки разрыва страницы, вам нужно в *.xml файлы вставить соответствующие узлы. Какой именно? Вставьте в екселе разрыв страницы, сохраните изменения и посмотрите при помощи какого-либо редактора, что изменилось. Для работы с хмл использую семейство классов XMLElement, XMLDocument (см. форум, "гугл" - статей достаточно). Использовать СОМ екселя для создание документа - не рекомендую, очень медленно. Можете использовать для вызова дополнительных функций (например, графиков). Есть вариант работы с екселем через DDE. Думаю, что проблем с прямым доступом к OpenOffice не должно быть. В любом случае всегда можно реализовать обертку через стороннее приложение, dll-ку. |
|
|
За это сообщение автора поблагодарили: vr (1). |
30.03.2011, 11:57 | #15 |
Участник
|
Спасибо огромное! Сейчас буду пробовать.
Вопрос: При работе с шаблоном Exel в формате xml непонятно каким образом рассчитать места длдя вставки разрыва страницы, ведь высота строк табличной части меняется в зависимости от длины наименования Последний раз редактировалось vr; 30.03.2011 в 12:05. |
|
30.03.2011, 16:30 | #16 |
Участник
|
Цитата:
ведь высота строк табличной части меняется в зависимости от длины наименования
System.Windows.Forms.TextRenderer::MeasureText с флагами WordBreak, TextBoxControl. |
|
|
|