AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 03.09.2010, 10:21   #1  
fur-lined ist offline
fur-lined
Участник
Benutzerbild von fur-lined
1C
 
52 / 14 (1) ++
Registriert seit: 08.11.2006
Имя файла при сохранении
Привет! Никак не соображу: сформирован отчет на базе шаблона Excel и имя файла при сохранении как обычно получается = "имя шаблона" + "1"...
Как в момент нажатия пользователем кнопки "Сохранить" подставлять свое сгенерированное имя файла?
__________________
"Угадайте подряд три раза, и заработаете репутацию эксперта" (с) Законы Мерфи. Рекомендация Питерса
Alt 03.09.2010, 12:50   #2  
Gustav ist offline
Gustav
Moderator
Benutzerbild von Gustav
SAP
Лучший по профессии 2009
 
1.858 / 1152 (42) ++++++++
Registriert seit: 24.01.2006
Ort: Санкт-Петербург
Blog-Einträge: 19
Zitat:
Zitat von fur-lined Beitrag anzeigen
Как в момент нажатия пользователем кнопки "Сохранить" подставлять свое сгенерированное имя файла?
Никак. У объекта Workbook свойство Name - read-only. И событие "Сохранить" вы так просто из Аксапты не перехватите.
Но можно предложить пользователю сохранить файл под другим именем сразу после его формирования, подставив новое имя в поле диалога. Примерно так:
X++:
    ComExcelDocument_RU doc = new ComExcelDocument_RU();
    COM application, workbook;
    COMVariant cv;
    str newFileName;
    ;
    doc.newFile(@'C:\OldName.xls');
    workbook = doc.getComDocument();
    application = workbook.Parent();
    cv = application.GetSaveAsFileName('NewName');
    newFileName = cv.bStr(); // уже содержит путь и точку на конце
    if (newFileName)
        workbook.SaveAs(strFmt('%1xls',newFileName));

Geändert von Gustav (03.09.2010 um 13:31 Uhr) Grund: не до конца дотянул джоб
This post has been rated by: fur-lined (1).
Alt 03.09.2010, 14:42   #3  
fur-lined ist offline
fur-lined
Участник
Benutzerbild von fur-lined
1C
 
52 / 14 (1) ++
Registriert seit: 08.11.2006
Zitat:
cv = application.GetSaveAsFileName('NewName');
Еще вопрос.
А если не Excel, если Word, есть ли в нем аналог GetSaveAsFileName()?
__________________
"Угадайте подряд три раза, и заработаете репутацию эксперта" (с) Законы Мерфи. Рекомендация Питерса
Alt 03.09.2010, 14:53   #4  
kornix ist offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Registriert seit: 24.02.2009
Ort: Санкт-Петербург
Попробуйте написать такой метод в классе ComWordDocument_RU:

X++:
void SaveAs(FileName _fileName)
{
    if (m_comDocument)
            m_comDocument.SaveAs(_FileName);
    else
            throw error("....");
}
__________________
AXIOMA
Alt 03.09.2010, 15:00   #5  
fur-lined ist offline
fur-lined
Участник
Benutzerbild von fur-lined
1C
 
52 / 14 (1) ++
Registriert seit: 08.11.2006
Zitat:
Zitat von kornix Beitrag anzeigen
Попробуйте написать такой метод в классе ComWordDocument_RU:
однако мне нужно чтобы и в Word аналогично вызывался диалог сохранения как это происходит при GetSaveAsFileName('NewName') в Excel...

ЗЫ
и потом, там уже есть documentSaveAs()

Ax3.0 sp6
__________________
"Угадайте подряд три раза, и заработаете репутацию эксперта" (с) Законы Мерфи. Рекомендация Питерса

Geändert von fur-lined (03.09.2010 um 15:30 Uhr)
Alt 03.09.2010, 15:39   #6  
oip ist offline
oip
Axapta
Лучший по профессии 2014
 
2.564 / 1416 (53) ++++++++
Registriert seit: 28.11.2005
Blog-Einträge: 1
Аналогичной функции не нашел. Можно, например, макрос. Проверил, работает.

Zitat:
Sub SaveAsDialog()

Dim fd As FileDialog

Set fd = Application.FileDialog(msoFileDialogSaveAs)
With fd
.InitialFileName = "FileName"
If .Show = 0 Then
Else
.Execute
End If
End With
Set fd = Nothing
End Sub
This post has been rated by: Gustav (3).
Alt 03.09.2010, 15:51   #7  
Gustav ist offline
Gustav
Moderator
Benutzerbild von Gustav
SAP
Лучший по профессии 2009
 
1.858 / 1152 (42) ++++++++
Registriert seit: 24.01.2006
Ort: Санкт-Петербург
Blog-Einträge: 19
Zitat:
Zitat von fur-lined Beitrag anzeigen
однако мне нужно чтобы и в Word аналогично вызывался диалог сохранения как это происходит при GetSaveAsFileName('NewName') в Excel...
Раз уж задачка подвинулась в сторону принуждения пользователя сохранить файл под предлагаемым именем, то почему бы это имя вообще не запросить в Аксапте через диалог? A visible = true приложению (Excel, Word) сделать после ответа пользователя (иначе фокус уйдет из Аксапты в приложение и пользователь не увидит вопрос).
Alt 03.09.2010, 16:12   #8  
kornix ist offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Registriert seit: 24.02.2009
Ort: Санкт-Петербург
Zitat:
Zitat von oip Beitrag anzeigen
Аналогичной функции не нашел. Можно, например, макрос. Проверил, работает.
Тоже пошел этим путем, а запустить макрос можно так:

X++:
public void runMacro(str _name)
{
    COM comAppl;
    ;


    if (m_comDocument)
    {
        try
        {
            comAppl = m_comDocument.Application();
            comAppl.Run(_name);
        }
        catch (Exception::Error)
        {
            throw error("Произошла ошибка!");
        }
    }
}
__________________
AXIOMA
This post has been rated by: fur-lined (1).
Alt 03.09.2010, 16:29   #9  
fur-lined ist offline
fur-lined
Участник
Benutzerbild von fur-lined
1C
 
52 / 14 (1) ++
Registriert seit: 08.11.2006
Zitat:
Zitat von kornix Beitrag anzeigen
Тоже пошел этим путем, а запустить макрос можно так:
а параметры (имя файла напр.) этому макросу как передать?
__________________
"Угадайте подряд три раза, и заработаете репутацию эксперта" (с) Законы Мерфи. Рекомендация Питерса
Alt 03.09.2010, 16:48   #10  
Gustav ist offline
Gustav
Moderator
Benutzerbild von Gustav
SAP
Лучший по профессии 2009
 
1.858 / 1152 (42) ++++++++
Registriert seit: 24.01.2006
Ort: Санкт-Петербург
Blog-Einträge: 19
Zitat:
Zitat von fur-lined Beitrag anzeigen
а параметры (имя файла напр.) этому макросу как передать?
Дык через Application.Run(...)
Zitat:
Application.Run(MacroName, varg1, varg2, varg3, varg4, varg5, varg6, varg7, varg8, varg9, varg10, varg11, varg12, varg13, varg14, varg15, varg16, varg17, varg18, varg19, varg20, varg21, varg22, varg23, varg24, varg25, varg26, varg27, varg28, varg29, varg30)
Alt 03.09.2010, 16:56   #11  
oip ist offline
oip
Axapta
Лучший по профессии 2014
 
2.564 / 1416 (53) ++++++++
Registriert seit: 28.11.2005
Blog-Einträge: 1
Zitat:
Zitat von fur-lined Beitrag anzeigen
а параметры (имя файла напр.) этому макросу как передать?
В Макросе:
Zitat:
Sub SaveAsDialog(FileName As String)

Dim fd As FileDialog

Set fd = Application.FileDialog(msoFileDialogSaveAs)
With fd
.InitialFileName = FileName
If .Show = 0 Then
Else
.Execute
End If
End With
Set fd = Nothing

End Sub
А вызвать:
X++:
application.run('SaveAsDialog', 'FileName');
This post has been rated by: fur-lined (1).
Stichworte
excel

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Диалог выбора файла PavelSR DAX: Программирование 7 11.09.2009 13:41
HRM,склонение ФИО и все все все OmenSore DAX: Функционал 22 09.02.2009 17:08
как узнать имя открываемый формы???? Daido DAX: Программирование 9 02.08.2007 17:20
Возникла проблема с получением имени файла при создании своего канала вывода отчетов. oleg_kap DAX: Программирование 3 06.06.2006 14:12
Сохранение файла в таблице Andrew Besedin DAX: Программирование 2 10.06.2003 06:48

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 21:56 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.