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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.01.2004, 21:19   #7  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
На самом деле, сколько будет строчек она не знает (по крайней мере, не считает). Больше того, вывод в документ производится по полям, а не по записям (то есть, таблицы выводятся по столбцам, а не по строкам). Чтобы создать видимость разбивки на строки, Axapta вставляет мягкий перенос (soft line break) между различными значениями поля при выводе. Лучше всего это заметно при выводе документов в Word.

С Excel что-то напортачили они немного. Чуть-чуть поправив классы DocuActionCOM_Excel и DocuActionTrans можно добиться такого же поведения при создании документов Excel, как и при создании документов Word. Во-первых, в методе insertField класса DocuActionTrans нужно указать, чтобы перевод строки (soft line break) при переходе к новой записи вставлялся после уже выведенного значения, а не вместо него.
Блок перевода строки в оригинале:
Код:
if (first)
    first = false;
else
    this.insertSoftLineBreak();
Стоит исправить на:
Код:
if (first)
    first = false;
else {
    this.insertSoftLineBreak(curPos);
    curPos++;
}
В принципе, этим можно и ограничиться. Второе несоответствие заключается в том, что при выводе полей без указания закладок, они все выводятся в одно и то же поле. Гораздо логичней было бы выводить их в поля таблицы слева направо. Для этого можно перекрыть метод mainInsertField класса DocuActionCOM_Excel:
Код:
// MAXIM, Move right if no hard break
void mainInsertField(DocuField docuField, DocuRef docuRef)
{
    COM range;
   ;
    super(docuField, docuRef);

    if (!docuField.HardLineBreak) {
        range = sysExcelRange.comObject();
        range = range.offset(0,1);
        range.select();
        sysExcelRange.comObject(range);
    }
}
Приемлемого способа (в смысле, чтобы требовался минимум программирования) выводить данные связанных таблиц в различные строки таблицы я, к сожалению, также не нашел.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
 


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

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

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