Как изменять имя файла в отчёте(rtf)?

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
ENB83
Новичок
Сообщения: 23
Зарегистрирован: 19 мар 2008, 11:57
Откуда: Новосибирск

Как изменять имя файла в отчёте(rtf)?

Сообщение ENB83 »

Компилирую vip-ом в Галактике schet.rtf.
Нужно чтобы у этого отчёта изменялось имя в зависимости по какому счёту делаем этот отчёт.
например если сделаем ончёт по номеру документа 23432/2024, то файлик должен открываться как 23432_2024schet.rtf

отчёт открываем через Окно =Выберите отчет= или можно ctrl + P
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

в экселе можно макросами сделать, а вот в ворде... разве что "сохранить как" ? :)
ENB83
Новичок
Сообщения: 23
Зарегистрирован: 19 мар 2008, 11:57
Откуда: Новосибирск

Сообщение ENB83 »

Дело в том что у меня пользователи отправляют эти файлы клиентам, и хорошо было бы если клиенты сразу видели номер счёта по имени файла.
Кстати, в ворде тоже макросы есть, только вот как это всё применить к моей ситуации.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

в экселе макросы можно запускать из галактики.
а вот в ворде, я не знаю как это сделать.

Что мешает юзеру сохранить файл как он хочет? да чуть дольше, но если ему надо, пусть жмет "Сохранить как" и наслаждается результатом.
ENB83
Новичок
Сообщения: 23
Зарегистрирован: 19 мар 2008, 11:57
Откуда: Новосибирск

Сообщение ENB83 »

Мешает то, что у меня пользователи сразу жмут меню Файл->Отправить->Сообщение(как вложение) и открывается сразу письмо с вложенным файлом, где остаётся только указать адрес клиента.

Впринципи я уже нашёл:
.f 'имя_файла.rtf'

осталось только найти как подставлять туда номер документа
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

ENB83 писал(а): Впринципи я уже нашёл:
.f 'имя_файла.rtf'

осталось только найти как подставлять туда номер документа
Никак ты его не подставишь..Не имея исходника, кто поток формирует (vip/паскаль) не подменить имя файла так просто. Пока .endform не окончится - файл занят.
ENB83
Новичок
Сообщения: 23
Зарегистрирован: 19 мар 2008, 11:57
Откуда: Новосибирск

Сообщение ENB83 »

А название хотябы как установить у вордовского документа
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Попробуй после формирования отчета вызвать
function CopyMoveFile (From,To : String; IsDel : Boolean) : Boolean
Шансов конечно мало, но может даст скопировать занятый файл?
ENB83
Новичок
Сообщения: 23
Зарегистрирован: 19 мар 2008, 11:57
Откуда: Новосибирск

Сообщение ENB83 »

команда .f 'schet.rtf'
меня впринципи устраивает и она работает.

Например пользователь сформировал rtf отчёт, далее в MS Word меню Файл->Отправить->Сообщение(как вложение) и открывается сразу письмо с вложенным файлом, где остаётся только указать адрес клиента.

Хотелось бы чтобы имя файла во вложении The Bat было не schet.rtf,
а например с префиксом номер документа : 10012_shet.rtf

Имя документа у меня в отчёте есть, его не получается допустим записать в строковую переменную(strSchet := НомерДок) а потом использовать .f strSchet

Может я что то не так делаю?
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Как тебя это в принципе может устраивать, если .f не поможет задать тебе нужную строку....

Тут тока вордячий макрос писать нада, сохранять шаблоном, наверное...при формировании нужно тебе rtf он там будет. Нужно сразу его будет тока выполнить после формирования документа.

Макрос в теле должен искать, по всей видимости, 'Счет-фактура', далее брать нужные символы номера и подставлять в имя файла ActiveDocument :
ActiveDocument.SaveAs FileName:="c:\debug\123456.doc"

Вообщем надо рисовать нужный макрос и все :-)
Без исходников vip исходников счетов-фактур другого пути я не вижу как это можно сделать, имею тока один линк
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

А можно и без макросов. Не забываем про VBScript.
Перед .endform добавляем
.begin
LogStrToFile('sendfile.vbs', 'Dim Word');
LogStrToFile('sendfile.vbs', 'Set Word=CreateObject("WordApplication")');
LogStrToFile('sendfile.vbs', 'Dim Doc');
...................
Дальше на VBS пишем процедуру поиска нашего документа, делаем Doc.SaveAs. И по желанию автоматом вызываем Файл->Отправить->Сообщение(как вложение). Вообщем творим что хотим.
....................
LogStrToFile('sendfile.vbs', 'Word.Quit');
ExecProgram(наш vbs);
end.
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

У нас тоже была аналогичная задача. Нужно было книгу покупок-продаж вывести в определенном виде.
Так я брал поток и записывал его в Excel, используя OExcel. Ну а там возможностей много.
Ответить