Сохранение печатной формы в файл с переменным именем

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

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

Ответить
Serg7907
Постоянный обитатель
Сообщения: 127
Зарегистрирован: 06 июл 2007, 18:25
Контактная информация:

Сохранение печатной формы в файл с переменным именем

Сообщение Serg7907 »

Добрый день.
Можно ли сделать так, чтобы при формировании печатной формы в Галактике (допустим накладной на отпуск) одновременно производилась запись данной формы в файл (желательно rtf)? Причем имя данного файла должно формироваться по опеределнному алгоритму (сейчас имя файла соответствует названию прототипа), туда должна попадать информация по дате и номеру документа.

В конце формы стандартной накладной при компиляции использую такую конструкцию:

.f "w:\other\!vit\GAL8.10\myfile2.out"
.begin
CopyMoveFile('W:\Other\!VIT\GAL8.10\myfile2.out','out\'+UserName + ¬номер + DateToStr(Cur_Date,'DDMM')+'.out', false)
end.
.endform

Файл myfile2.out создается при печати нормально, форма в нем есть.
Файл '+UserName + ¬номер + DateToStr(Cur_Date,'DDMM')+'.out' тоже создается, название файла формируется как надо. Однако данные туда не копируются и файл остается пустым.
По-видимому это связано с тем, что файл myfile2.out в момент копирования занят. Так как если использовать

.f "w:\other\!vit\GAL8.10\myfile2.out"
.begin
CopyMoveFile('W:\Other\!VIT\GAL8.10\myfile3.out','out\'+UserName + ¬номер + DateToStr(Cur_Date,'DDMM')+'.out', false)
end.
.endform
И файл myfile3.out по указанному пути есть, копирование происходит правильно.

Как можно освободить файл, создаваемый при печати, для того чтобы была возможность его скопировать?
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Re: Сохранение печатной формы в файл с переменным именем

Сообщение ecasoft »

Думаю никак освободить, как Вы выражаетесь нельзя.

Но если файл rtf, то автоматически загрузится ворд. В ворде можно написать макрос на событие открытия файла и определить если имя файла как у прототипа то записать файл под динамически сформированным именем. Само имя можно вывести из Галактики прямо в форму, в первую строку файла, взять ее в макросе в качестве имени файла, перед сохранением удалить эту строку.
Последний раз редактировалось ecasoft 04 апр 2012, 13:18, всего редактировалось 1 раз.
oiko
Местный житель
Сообщения: 419
Зарегистрирован: 29 мар 2005, 17:49

Re: Сохранение печатной формы в файл с переменным именем

Сообщение oiko »

Если это паранойя с текущими данными документа то не проще в ваш файл грузить именно их а не копию печатной формы?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Сохранение печатной формы в файл с переменным именем

Сообщение edward_K »

Либо excel либо сразу пишите в нужный файл
Serg7907
Постоянный обитатель
Сообщения: 127
Зарегистрирован: 06 июл 2007, 18:25
Контактная информация:

Re: Сохранение печатной формы в файл с переменным именем

Сообщение Serg7907 »

Всем спасибо за ответы! Предложение ecasoft-а показалось дельным. Вот только правильно ли я понял: мы, например, в первую строку файла записываем динамически сформированное имя, а затем этим значением подменяем имя файла. Вот только в макросах я не силен (как открыть или переименовать файл - это я еще смогу, а как вытащить строку с динамически сформированным именем и по ней назвать файл - это для меня загадка :-? ). Буду признателен за помощь.
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Re: Сохранение печатной формы в файл с переменным именем

Сообщение ecasoft »

Давненько не программировал на visual basic, и сразу не напишу правильный код. :oops:
Изниняюсь, может найдете спеца там у себя по программированию на этом языке? Сам последний раз писал года два назад - сами понимаете, навскидку не напишу. Размер текста на самом деле не более 10-15 строк.
Serg7907
Постоянный обитатель
Сообщения: 127
Зарегистрирован: 06 июл 2007, 18:25
Контактная информация:

Re: Сохранение печатной формы в файл с переменным именем

Сообщение Serg7907 »

ecasoft, спасибо за отзыв! У нас программист в командировке, поэтому VB осваиваю сам, и вроде бы что-то получается. Есть несколько косяков, которые пока не могу обойти. Если у вас будет свободное время, можете ли вы набросать идейки или часть кода в VB, а к тому времени может у меня что-то получится. Спасибо за понимание.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Сохранение печатной формы в файл с переменным именем

Сообщение Masygreen »

не нужен вам ни какой VB ... тем более я как то не вижу решения вашей проблемы в рамках VB - файл то все равно будет открыт :)
Пишите отчет в excel без открытия файла, после чего и випа переименовываете его и открывайте ..
либо если бизнес текст обрубайте основной вывод .f "NUL" пишите в свой файл .. уж как называть его ваше дело
Время ведет!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Сохранение печатной формы в файл с переменным именем

Сообщение edward_K »

В принципе можно писать и в rtf как в текстовый файл - там не очень сложно. Но в Excel самый короткий и простой путь.
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Re: Сохранение печатной формы в файл с переменным именем

Сообщение ecasoft »

я имел ввиду функцию автозапуска WORDа
Последний раз редактировалось ecasoft 06 апр 2012, 10:42, всего редактировалось 1 раз.
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Re: Сохранение печатной формы в файл с переменным именем

Сообщение ecasoft »

P S функцию, нужно записать в окне программ VBA - в Worde нажимаете Alt-F11 - и дереве Normal.dot - ThisDocument в окно справа записываете код. Программа вызывается каждый раз при открытии любого файла в Ворде. Чтобы программа не портила другие файлы придумайте сложное имя файла присоединенной формы!
Последний раз редактировалось ecasoft 06 апр 2012, 10:43, всего редактировалось 2 раза.
Serg7907
Постоянный обитатель
Сообщения: 127
Зарегистрирован: 06 июл 2007, 18:25
Контактная информация:

Re: Сохранение печатной формы в файл с переменным именем

Сообщение Serg7907 »

Большое спасибо!!! :grin:
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Решение: Сохранение печатной формы в файл с переменным имене

Сообщение ecasoft »

Вспомнил, что можно же просто записать макрос. Все же голова начинает чего-то там поднимать из глубин :lol:
В результате дописал и проверил - все работает отлично. Кстати, полезная вещь может и самому когда пригодится, а то вечно забываешь закрывать Ворд и Галактика ругается, что файл занят. На досуге допишу для себя, чтобы она сама находила по тексту, что это за документ (накладная или счет фактура или еще что, брала номер и дату и под таким именем формировала сразу после входа сохраняла файл. Тогда его получается не надо будет закрывать и можно сразу еще другой отчет формировать.
Последний раз редактировалось ecasoft 06 апр 2012, 10:44, всего редактировалось 1 раз.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Решение: Сохранение печатной формы в файл с переменным и

Сообщение Masygreen »

ecasoft писал(а):Вспомнил, что можно же просто записать макрос. Все же голова начинает чего-то там поднимать из глубин
не проверял, но если работает Человечище :)
Время ведет!
Ответить