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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.07.2014, 12:31   #1  
MedBrat777 is offline
MedBrat777
Участник
 
9 / 10 (1) +
Регистрация: 28.11.2012
Добрый день, имею NAV V.5 sp1.

Сразу предупреждаю, что вопрос может показаться глупым, т.к. опыта у меня в этой сфере не очень много.
Сделал отчет, который выгружает информацию из таблицы. Сейчас мне требуется отправить полученные данные из отчета в эксель.
Для этого у нас используется соответсующий CU, но мне не понятно как из выгруженного отчета отправить данные в него...

Заранее спасибо за подсказку.
Старый 23.07.2014, 12:47   #2  
zuzka is offline
zuzka
Участник
Аватар для zuzka
 
131 / 10 (1) +
Регистрация: 29.07.2013
ExcelMgt.OpenBook(FileName);
ExcelMgt.OpenSheetByNumber(1);
RowID := '8';
....

ExcelMgt.FillCell('G2',FORMAT(UPPERCASE(Driver.Name) + ' ' + "Licence Plate"));
ExcelMgt.FillCell('K2',FORMAT(TODAY));
SetFontSizeBold('K2', 11, FALSE);
...
ExcelMgt.Save(PathForSave, FileName);

где
ExcelMgt - кодеюнит содержащий функции работы с Excell
FileName - имя файла (у нас тянется из шаблонов)
RowID - номер строки (отлично инкрементится для перехода на сл строку при помощи INCSTR(RowID))
FillCell - функция вставки значения в ячейку
Save - сохранение файла по пути PathForSave с именем FileName

остальное можно дописать самому) (новые функции легко создаются при помощи самого Excell - записываете в макрос действия и глядя на его код пишете свои функции)...
__________________
Как только вы проиграете, все ваши прошлые победы забудут.
Старый 23.07.2014, 14:39   #3  
MedBrat777 is offline
MedBrat777
Участник
 
9 / 10 (1) +
Регистрация: 28.11.2012
Цитата:
Сообщение от zuzka Посмотреть сообщение
ExcelMgt.OpenBook(FileName);
ExcelMgt.OpenSheetByNumber(1);
RowID := '8';
....

ExcelMgt.FillCell('G2',FORMAT(UPPERCASE(Driver.Name) + ' ' + "Licence Plate"));
ExcelMgt.FillCell('K2',FORMAT(TODAY));
SetFontSizeBold('K2', 11, FALSE);
...
ExcelMgt.Save(PathForSave, FileName);

где
ExcelMgt - кодеюнит содержащий функции работы с Excell
FileName - имя файла (у нас тянется из шаблонов)
RowID - номер строки (отлично инкрементится для перехода на сл строку при помощи INCSTR(RowID))
FillCell - функция вставки значения в ячейку
Save - сохранение файла по пути PathForSave с именем FileName

остальное можно дописать самому) (новые функции легко создаются при помощи самого Excell - записываете в макрос действия и глядя на его код пишете свои функции)...
Я только не понимаю где тут данные из отчета. Как получить доступ к ним. Туплю по неопытности, простите.
Старый 23.07.2014, 14:46   #4  
zuzka is offline
zuzka
Участник
Аватар для zuzka
 
131 / 10 (1) +
Регистрация: 29.07.2013
Цитата:
Сообщение от MedBrat777 Посмотреть сообщение
Я только не понимаю где тут данные из отчета. Как получить доступ к ним. Туплю по неопытности, простите.
можно немного просвятиться прочитая здесь:
Разработка отчета для классического клиента NAV 2009 - с этого начинать и читать обязательно! для понимания работы отчетов.

Про выгрузку отчетов в MS Excel
Экспорт в Excel: простой и в шаблон

ну и google.ru никто не отменял) у меня нет простых отчетов... нечего прикрутить ради примера...
__________________
Как только вы проиграете, все ваши прошлые победы забудут.
Старый 23.07.2014, 15:37   #5  
zuzka is offline
zuzka
Участник
Аватар для zuzka
 
131 / 10 (1) +
Регистрация: 29.07.2013
Процитирую кого-то с этого же форума: "при работе репорта с Excell перед глазами встают километры кода" ))
__________________
Как только вы проиграете, все ваши прошлые победы забудут.
Старый 05.08.2014, 08:38   #6  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Мне кажется топикастер спрашивал не об этом.
Из ВЫГРУЖЕННОГО отчета данные в ексель отправить можно только если вы в процессе формирования заполняли временную таблицу. Но это лишнее действие, обычно данные в ексель отправляются в процессе формирования отчета, т.е. во время его работы примерно так, как написал zuzka (способов много).
Старый 12.08.2015, 18:19   #7  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
http://www.archerpoint.com/blog/Posts/beloved-report
codeunit от всех болезней роликом засмотрелся
Старый 13.08.2015, 13:51   #8  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Бредовый кодеюнит. Повторение объектной модели Экселя под свои узкоспециализированные задачи. Нужно что-то новое полез опять править этот кодеюнит. А разнообразие параметров и их кол-во в зависимости от ф-ции еще больше удручают.
Старый 18.08.2015, 09:59   #9  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Выводить отчеты нужно в готовые размеченные шаблоны, а не рисовать через объектную модель. Извращения вроде использования приснопамятного кодеюнит Excel от одной известной компании напоминают попытку использования команд PLOT(X1,Y1, X2,Y2), CIRCLE... Draw вместо хотя бы Paint
Старый 13.11.2015, 16:48   #10  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
У меня на (200К+ записей * 84 поля) при использовании РекордРеф, запись в текст в формате csv уходит минут 30. Выполняется на серваке.
Если рекорд реф убрать,то думаю минут 10 можно скинуть.
Это если не нужно фоматирование.

средствами SQL тоже быстро получается, но этим кунгфу я не владею.
Старый 17.11.2015, 09:54   #11  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Цитата:
роликом засмотрелся
Я в том плане, что красиво презентовано, объяснено и разжевано, несмотря на то, что функционально это не торт. У нас принято как-то наоборот: сделать хорошую вещь и похоронить её, оставив народ с нею наедине.
Старый 17.11.2015, 10:07   #12  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Идиотский кодеюнит, все равно что Нав для рисования в Паинте использовать
У пользую размеченные мной или ключевыми пользователями шаблоны (можно брать хоть регламентные формы из Консультанта) и спец. кодеюнит.
Соглашение с пользователями только о названиях меток для макроподстановок и названиях секций отчета. Дизайн отчета целиком на их совести

Код для вывода листов просчета для инвентаризации:

Header - OnAfterGetRecord()
TemplateMgt.CreateNewSheet("Document No.");
TemplateMgt.CopyPageSetupFromTemplate();
TemplateMgt.CopyNamedRange('HEADER');
TemplateMgt.xlReplaceRange1('#=DocumentNo', "Document No.");
TemplateMgt.xlReplaceRange1('#=DT', FORMAT(CURRENTDATETIME));
TemplateMgt.xlReplaceRange1('#=USERID', USERID);
window.UPDATE(1, "Document No.");


Line - OnPreDataItem()
TemplateMgt.CopyNamedRange('LINE_HEADER');


Line - OnAfterGetRecord()
CALCFIELDS(Barcode, Article);
TemplateMgt.CopyNamedRange('LINE');
TemplateMgt.xlReplaceRange1('#=LineNumber', FORMAT("Line Number"));
TemplateMgt.xlReplaceRange1('#=BinCode', "Bin Code");
TemplateMgt.xlReplaceRange1('#=PSN', "Parent Serial No.");
TemplateMgt.xlReplaceRange1('#=Barcode', Barcode);
TemplateMgt.xlReplaceRange1('#=Description', Description);
TemplateMgt.xlReplaceRange1('#=Article', Article);
TemplateMgt.xlReplaceRange1('#=LotNo', "Lot No.");
TemplateMgt.xlReplaceRange1('#=Project', Project);
TemplateMgt.xlReplaceRange1('#=UOM', UOM);

IF "Qty Per UOM"<>0 THEN
TemplateMgt.xlReplaceRange1('#=QtyPerUOM', FORMAT("Qty Per UOM"))
ELSE
TemplateMgt.xlReplaceRange1('#=QtyPerUOM', '');


Header - OnPostDataItem()
SheetsForDelete.INIT;
SheetsForDelete.Key := 1;
SheetsForDelete.tFld03 := 'ШАБЛОН';
SheetsForDelete.INSERT;
TemplateMgt.DeleteTemplateSheets(SheetsForDelete);
TemplateMgt.FinishBook;
 


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

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

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