03.09.2010, 10:21 | #1 |
Участник
|
Имя файла при сохранении
Привет! Никак не соображу: сформирован отчет на базе шаблона Excel и имя файла при сохранении как обычно получается = "имя шаблона" + "1"...
Как в момент нажатия пользователем кнопки "Сохранить" подставлять свое сгенерированное имя файла?
__________________
"Угадайте подряд три раза, и заработаете репутацию эксперта" (с) Законы Мерфи. Рекомендация Питерса |
|
03.09.2010, 12:50 | #2 |
Moderator
|
Цитата:
Но можно предложить пользователю сохранить файл под другим именем сразу после его формирования, подставив новое имя в поле диалога. Примерно так: 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 |
Участник
|
Цитата:
cv = application.GetSaveAsFileName('NewName');
А если не Excel, если Word, есть ли в нем аналог GetSaveAsFileName()?
__________________
"Угадайте подряд три раза, и заработаете репутацию эксперта" (с) Законы Мерфи. Рекомендация Питерса |
|
03.09.2010, 14:53 | #4 |
MCP
|
Попробуйте написать такой метод в классе ComWordDocument_RU:
X++: void SaveAs(FileName _fileName) { if (m_comDocument) m_comDocument.SaveAs(_FileName); else throw error("...."); }
__________________
AXIOMA |
|
03.09.2010, 15:00 | #5 |
Участник
|
однако мне нужно чтобы и в Word аналогично вызывался диалог сохранения как это происходит при GetSaveAsFileName('NewName') в Excel...
ЗЫ и потом, там уже есть documentSaveAs() Ax3.0 sp6
__________________
"Угадайте подряд три раза, и заработаете репутацию эксперта" (с) Законы Мерфи. Рекомендация Питерса Последний раз редактировалось fur-lined; 03.09.2010 в 15:30. |
|
03.09.2010, 15:39 | #6 |
Axapta
|
Аналогичной функции не нашел. Можно, например, макрос. Проверил, работает.
Цитата:
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 |
Moderator
|
Раз уж задачка подвинулась в сторону принуждения пользователя сохранить файл под предлагаемым именем, то почему бы это имя вообще не запросить в Аксапте через диалог? A visible = true приложению (Excel, Word) сделать после ответа пользователя (иначе фокус уйдет из Аксапты в приложение и пользователь не увидит вопрос).
|
|
03.09.2010, 16:12 | #8 |
MCP
|
Тоже пошел этим путем, а запустить макрос можно так:
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 |
Участник
|
а параметры (имя файла напр.) этому макросу как передать?
__________________
"Угадайте подряд три раза, и заработаете репутацию эксперта" (с) Законы Мерфи. Рекомендация Питерса |
|
03.09.2010, 16:48 | #10 |
Moderator
|
Дык через 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 |
Axapta
|
В Макросе:
Цитата:
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). |