Страница 1 из 1

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

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

отчёт открываем через Окно =Выберите отчет= или можно ctrl + P

Добавлено: 04 сен 2008, 13:03
Алексей
в экселе можно макросами сделать, а вот в ворде... разве что "сохранить как" ? :)

Добавлено: 04 сен 2008, 13:12
ENB83
Дело в том что у меня пользователи отправляют эти файлы клиентам, и хорошо было бы если клиенты сразу видели номер счёта по имени файла.
Кстати, в ворде тоже макросы есть, только вот как это всё применить к моей ситуации.

Добавлено: 04 сен 2008, 13:14
Алексей
в экселе макросы можно запускать из галактики.
а вот в ворде, я не знаю как это сделать.

Что мешает юзеру сохранить файл как он хочет? да чуть дольше, но если ему надо, пусть жмет "Сохранить как" и наслаждается результатом.

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

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

осталось только найти как подставлять туда номер документа

Добавлено: 04 сен 2008, 13:54
Den
ENB83 писал(а): Впринципи я уже нашёл:
.f 'имя_файла.rtf'

осталось только найти как подставлять туда номер документа
Никак ты его не подставишь..Не имея исходника, кто поток формирует (vip/паскаль) не подменить имя файла так просто. Пока .endform не окончится - файл занят.

Добавлено: 04 сен 2008, 14:27
ENB83
А название хотябы как установить у вордовского документа

Добавлено: 04 сен 2008, 14:55
m0p3e
Попробуй после формирования отчета вызвать
function CopyMoveFile (From,To : String; IsDel : Boolean) : Boolean
Шансов конечно мало, но может даст скопировать занятый файл?

Добавлено: 04 сен 2008, 15:26
ENB83
команда .f 'schet.rtf'
меня впринципи устраивает и она работает.

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

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

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

Может я что то не так делаю?

Добавлено: 04 сен 2008, 16:46
Den
Как тебя это в принципе может устраивать, если .f не поможет задать тебе нужную строку....

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

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

Вообщем надо рисовать нужный макрос и все :-)
Без исходников vip исходников счетов-фактур другого пути я не вижу как это можно сделать, имею тока один линк

Добавлено: 04 сен 2008, 17:14
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.

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