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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.09.2010, 10:21   #1  
fur-lined is offline
fur-lined
Участник
Аватар для fur-lined
1C
 
52 / 14 (1) ++
Регистрация: 08.11.2006
Имя файла при сохранении
Привет! Никак не соображу: сформирован отчет на базе шаблона Excel и имя файла при сохранении как обычно получается = "имя шаблона" + "1"...
Как в момент нажатия пользователем кнопки "Сохранить" подставлять свое сгенерированное имя файла?
__________________
"Угадайте подряд три раза, и заработаете репутацию эксперта" (с) Законы Мерфи. Рекомендация Питерса
Старый 03.09.2010, 12:50   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от fur-lined Посмотреть сообщение
Как в момент нажатия пользователем кнопки "Сохранить" подставлять свое сгенерированное имя файла?
Никак. У объекта 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));

Последний раз редактировалось Gustav; 03.09.2010 в 13:31. Причина: не до конца дотянул джоб
За это сообщение автора поблагодарили: fur-lined (1).
Старый 03.09.2010, 14:42   #3  
fur-lined is offline
fur-lined
Участник
Аватар для fur-lined
1C
 
52 / 14 (1) ++
Регистрация: 08.11.2006
Цитата:
cv = application.GetSaveAsFileName('NewName');
Еще вопрос.
А если не Excel, если Word, есть ли в нем аналог GetSaveAsFileName()?
__________________
"Угадайте подряд три раза, и заработаете репутацию эксперта" (с) Законы Мерфи. Рекомендация Питерса
Старый 03.09.2010, 14:53   #4  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Попробуйте написать такой метод в классе ComWordDocument_RU:

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

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

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

Последний раз редактировалось fur-lined; 03.09.2010 в 15:30.
Старый 03.09.2010, 15:39   #6  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Аналогичной функции не нашел. Можно, например, макрос. Проверил, работает.

Цитата:
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
За это сообщение автора поблагодарили: Gustav (3).
Старый 03.09.2010, 15:51   #7  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от fur-lined Посмотреть сообщение
однако мне нужно чтобы и в Word аналогично вызывался диалог сохранения как это происходит при GetSaveAsFileName('NewName') в Excel...
Раз уж задачка подвинулась в сторону принуждения пользователя сохранить файл под предлагаемым именем, то почему бы это имя вообще не запросить в Аксапте через диалог? A visible = true приложению (Excel, Word) сделать после ответа пользователя (иначе фокус уйдет из Аксапты в приложение и пользователь не увидит вопрос).
Старый 03.09.2010, 16:12   #8  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от oip Посмотреть сообщение
Аналогичной функции не нашел. Можно, например, макрос. Проверил, работает.
Тоже пошел этим путем, а запустить макрос можно так:

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
За это сообщение автора поблагодарили: fur-lined (1).
Старый 03.09.2010, 16:29   #9  
fur-lined is offline
fur-lined
Участник
Аватар для fur-lined
1C
 
52 / 14 (1) ++
Регистрация: 08.11.2006
Цитата:
Сообщение от kornix Посмотреть сообщение
Тоже пошел этим путем, а запустить макрос можно так:
а параметры (имя файла напр.) этому макросу как передать?
__________________
"Угадайте подряд три раза, и заработаете репутацию эксперта" (с) Законы Мерфи. Рекомендация Питерса
Старый 03.09.2010, 16:48   #10  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от fur-lined Посмотреть сообщение
а параметры (имя файла напр.) этому макросу как передать?
Дык через Application.Run(...)
Цитата:
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)
Старый 03.09.2010, 16:56   #11  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от fur-lined Посмотреть сообщение
а параметры (имя файла напр.) этому макросу как передать?
В Макросе:
Цитата:
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');
За это сообщение автора поблагодарили: fur-lined (1).
Теги
excel

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Диалог выбора файла 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

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

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

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