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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.01.2007, 10:43   #1  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Размножение таблицы Word
Помогите, пожалуйста, размножить обычную word таблицу в шаблоне *.dot. Наверняка кто-нибудь сталкивался с проблемой отгружать данные в отчет word, причем количество этих данных не было известно, и данные эти должны находится в разных таблицах в Word документе... На данный момент есть два решения:
1) выделение необходимой таблицы в шаблоне, а затем обычное копирование и вставка через буфер обмена.
НЕ ГОДИТСЯ - поскольку затирается буфер обмена.
2) сделать шаблон с n-м количеством этих самых таблиц, а затем после подсчета количества данных удалить с конца ненужное количество.
НЕ ГОДИТСЯ - поскольку количество данных во многих случаях остается неизвестным и может превысить количество уже созданных в шаблоне. К тому же черезчур громоздко...

Вообщем, помогите найти более изящный способ
Старый 15.01.2007, 11:08   #2  
Ashir is offline
Ashir
Участник
 
45 / 22 (1) +++
Регистрация: 27.10.2005
можно сделать макрос в шаблоне, который будет создавать нужную таблицу с нужным форматированием в нужном месте, ну и вызывать его по мере необходимости
Старый 15.01.2007, 11:50   #4  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
так в том и дело, что ничего создавать не нужно, просто напросто необходимо копирнуть существующую таблицу (будет вернее сказать некоторый Range, в который входит она, еще 2 таблицы и некоторые другие элементы) после нее самой несколько раз, и насчет макроса, ведь можно его же написать в коде X++... К тому же создавать ту самую таблицу по элементарным кирпичикам - это гора работы: невидимые линии, и т.п., и еще копировать нужно не одну таблицу а целых три поэтому такое решение усложняется трижды, кроме таблиц, там еще и линия с надписью ниже...
2 Belugin честно говоря даже не знаю, помоему это даже более громоздко чем куча таблиц, с последующим удалением...
Старый 15.01.2007, 12:11   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Я в-общем так, для обозначения возможности.

С точки зрения "громоздко" есть 2 аспекта:
*Разработка: можно позльзоваться XSLT внутри ворда, при этом использовать ворд как визуальный редактор - в некоторых случаях так может
*при генерации отчета ворд вообще не нужен - только XSLT процессор. Таким образом, всё пролисходит очень быстро и может осуществляться вообще без наличия ворда - например, на сервере

Но недостатков тоже полно
Старый 15.01.2007, 12:27   #6  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
А как насчет варианта сохранить нужные данные из буфера обмена, покопировать таблички, восстановить данные в буфер обмена?
Старый 15.01.2007, 12:58   #7  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
2 E@gle: То есть, что то типа Buffer.Push() и Buffer.Pop()? Была такая идея, если в курсе как реализовать, то подскажите пожалуйста
2 Belugin: спасибо, обязательно попробую эту штуку...

таким образом, если это возможно (сохр/вост) буфера, то выходит, это единственное простейшее решение...

Последний раз редактировалось Eldar9x; 15.01.2007 в 13:10.
Старый 15.01.2007, 13:25   #8  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
Тогда вопрос: вам надо сохранить весь буфер обмена или какой-нибудь определенный тип (формат) буфера?
Как выпонимаете сохранить весь будет сложнее.
За это сообщение автора поблагодарили: Eldar9x (1).
Старый 15.01.2007, 13:39   #9  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
в буфере обмена может быть все что угодно, отсюда вывод: либо сохранить весь, либо сделать так Сохранение/восстановление буфера обмена думаю это и есть решение
Старый 15.01.2007, 13:51   #10  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
только что вспомнил, буфер обмена - опасная вещица, представляете что будет, если во время формирования отчета пользователь нажмет Copy в другом приложении...
Старый 15.01.2007, 14:17   #11  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
Наша компания достаточно широко использует буфер обмена при формировании отчетов (кстати и вашу задачу решали именно таким способом). Многими такими отчетами пользуются уже больше года. Нареканий пока нет.
Если найдете решение в обход буфера обмена - напишите.
Старый 15.01.2007, 14:41   #12  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
решили оставить метод с удалением лишних таблиц, + применение эвристики Судя по всему, если не учитывать поэлементное рисование необходимого интервала (что весьма муторно), то это наиболее оптимальное решение. Хотя, конечно, и не очень красивое, но что поделаешь...
Старый 16.01.2007, 10:13   #13  
Ashir is offline
Ashir
Участник
 
45 / 22 (1) +++
Регистрация: 27.10.2005
Вот именно для того, чтоб не было "так муторно" предлагаю делать именно макрос в шаблоне. Так попроще создать новую таблицу по образу и подобию уже существующей.
Старый 16.01.2007, 10:20   #14  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Я на форуме уже говорил как мы решали эту проблемму:
Надо просто создать файл Word из шаблона, и просто этот же шаблин вставлять в этот файл столько раз сколько нужно экземпляров...

но придется доработать методы работы с таблицами Word на предмет навигации с использованием параметров: таблица, строка, столбец
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 16.01.2007, 10:51   #15  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
2 Ashir: а таким образом можно копировать целые интервалы в документе?, если да, то, пожалуйста напишите как (или дайте ссылку)
2 blokva: а поподробней насчет этого способа, как реализовать?
Старый 16.01.2007, 12:19   #16  
Ashir is offline
Ashir
Участник
 
45 / 22 (1) +++
Регистрация: 27.10.2005
Я имею в виду не копирование а создание (ведь любое копирование будет осуществляться через буфер) новой таблички по заранее определённому формату. Этот подхед не универсален, но в данном слечае может подойти.
Начните запись макроса и создайте таблицу с требуемым форматированием. Потом этот макрос просто надо будет вызвать из AxЫ.

Последний раз редактировалось Ashir; 16.01.2007 в 12:27.
Старый 16.01.2007, 13:44   #17  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
2 Ashir: а таким образом можно копировать целые интервалы в документе?, если да, то, пожалуйста напишите как (или дайте ссылку)
2 blokva: а поподробней насчет этого способа, как реализовать?
1. Имеем шаблон с таблицей
2. создаем на его основе файл, получаем таблицу 1, которую заполняем данными
3 вставляем в данный файл тот же файл шаблона функцией ComWordDocument_RU.insertDocFile
4. в результате получаем таблицу 2 в этом же файле, которую тоже заполняем.
5. и т.д. с п.3
5. для заполнения каждой таблицы необходима правильная навигация, т.к. букмарки не подходят из-за того, что они всегда будут ссылаться на 1-ую таблицу.
6. для этого надо создать свои методы вставления данных в ячейки таблицы (для того, чтобы понять как, посмотрите методы getPosEndOfTable и tableInsertValue того же класса)

зы: я просто не могу найти код, который мы делали в 2.5
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/

Последний раз редактировалось blokva; 16.01.2007 в 13:51.
За это сообщение автора поблагодарили: Eldar9x (1).
Старый 16.01.2007, 15:29   #18  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
и (или)
Б.
















(ежегодный дополнительный оплачиваемый отпуск, учебный, без сохранения заработной платы и другие (указать))

На
календарных дней


с


по

Старый 16.01.2007, 15:36   #19  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
вообщем вот такой интервал должен копироваться, причем Б меняется, кроме того над строкой должна быть линия и еще 3 таблицы со сложным форматированием (здесь не удалось отобразить). Как все это создавать по формату и как вообще создать такой формат даже не представляю...
2 blokva: действительно, решение лишено перегруженности, но есть один минус: придется таскать два шаблона для одного документа. По-поводу навигации нет проблем, ведь достаточно знать порядковый номер первой таблицы...
Старый 16.01.2007, 16:16   #20  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
вообщем вот такой интервал должен копироваться, причем Б меняется, кроме того над строкой должна быть линия и еще 3 таблицы со сложным форматированием (здесь не удалось отобразить). Как все это создавать по формату и как вообще создать такой формат даже не представляю...
2 blokva: действительно, решение лишено перегруженности, но есть один минус: придется таскать два шаблона для одного документа. По-поводу навигации нет проблем, ведь достаточно знать порядковый номер первой таблицы...
2 шаблона, т.е. документ еще имеет общую шапку? Так я думаю, что это совсем не проблемма, даже наоборот, документ создается по одному шаблону, а табличка по другому... Если несколько разных табличек, то для каждой свой шаблон, очень логично получается!
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Управление форматом строки таблицы в Word формируемой в АХ 4.0 pwp DAX: Программирование 6 17.11.2009 11:28
Пересоздание таблицы при синхронизации Serg16 DAX: Администрирование 1 26.08.2009 13:55
Вставка строк в таблицы Аксапты сторонними средствами Андре DAX: База знаний и проекты 1 07.05.2009 16:49
Получение из поля Map кода поля реальной таблицы, к ней привязанной (Mappings) vey DAX: Функционал 5 16.03.2005 11:16
Как импортировать из Word chuf DAX: Программирование 4 21.06.2003 15:33

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:46.