cro-logo      
Добро пожаловать, Гость. Пожалуйста, выберите Вход

 
 
  ГлавнаяСправкаПоискВход  
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать
Выгрузка .doc файлов из CronosPro (Прочитано 1 447 раз)
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Выгрузка .doc файлов из CronosPro
27.09.2022 :: 20:01:27
 
Существует Банк Данных, в котором имеются базы Лицо (ЛЦ), Организация (РГ) и т.д.
В этих базах имеются поля типа Файл, которые содержат документы типа .doc.
Так вот, существует ли возможность путем запроса «вытащить» все эти документы в отдельную папку, желательно с указанием Системных номеров тех баз данных, где они находятся.
Наверх
 
 
IP записан
 
dron_ffk
Опытный пользователь
***
Вне Форума



Сообщений: 61
Re: Выгрузка .doc файлов из CronosPro
Ответ #1 - 28.09.2022 :: 13:52:42
 
Код:
@sn:=@sysnomer
 writefile("c:\Doc\"<<GETFILENAME(ПОЛЕ БАЗЫ С ДОКУМЕНТОМ)<<@sn<<"."<<GETEXT(ПОЛЕ БАЗЫ С ДОКУМЕНТОМ), GETTEXT(ПОЛЕ БАЗЫ С ДОКУМЕНТОМ)) 


будет выглядеть примерно так.
Наверх
 
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Выгрузка .doc файлов из CronosPro
Ответ #2 - 28.09.2022 :: 16:47:57
 
И куда мне вписать эту формулу? Добавить ее в базу Лицо, затем в Проектирование выходных форм. После задать запрос на наличие непустого значения в этом поле типа Файл и после поиска нескольких Лиц выбрать нужную Выходную форму? Или как?
Наверх
 
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Выгрузка .doc файлов из CronosPro
Ответ #3 - 28.09.2022 :: 17:04:34
 
Фу, наконец получил эти файлы .doc в нужной папке.
Большое Вам спасибо. Вот мои коллеги обрадуются.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 050
Санкт-Петербург
Re: Выгрузка .doc файлов из CronosPro
Ответ #4 - 29.09.2022 :: 00:49:46
 
Варианты выгрузки файлов:
клик
Наверх
 
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Выгрузка .doc файлов из CronosPro
Ответ #5 - 29.09.2022 :: 10:58:22
 
Спасибо за ссылку Zuluss. Буду разбираться. Хотя мне больше нравится эта формула.

Тут я для множественного значения поля ЛЦ15 типа Файл набросал формулу вывода этих файлов в нужный каталог. Все бы ничего, но при этом программа также выгружает пустые файлы (размером 0) под названием: sn_ (для примера 37_ Демо-банка Primer).

@sn:=@sysnomer;
@count:=valcount(ЛЦ15);   /* множественное поле типа Файл */
@I:=0;
A:
@I:=@I+1;
writefile("c:\Doc\"<<@sn<<"_"<<GETFILENAME(ЛЦ15(@I))<<"."<<GETEXT(ЛЦ15(@I)), GETTEXT(ЛЦ15(@I)));
if (@I<@count) then (goto A)

Может кто-то подскажет, где нужно подредактировать?
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 050
Санкт-Петербург
Re: Выгрузка .doc файлов из CronosPro
Ответ #6 - 29.09.2022 :: 12:46:43
 
Видимо у Вас записи содержат пустые значения в кратном поле. Можно провести ревизию и их ликвидировать.
Еще один нюанс. Множественные значения могут содержать одинаковые имена файлов, поэтому лучше именовать файлы по другому:
Код:
writefile("c:\Doc\"<<@sn<<"_"<<@I<<"_"<<GETFILENAME(ЛЦ15(@I))<<"."<<GETEXT(ЛЦ15(@I)), GETTEXT(ЛЦ15(@I))); 

Наверх
 
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Выгрузка .doc файлов из CronosPro
Ответ #7 - 29.09.2022 :: 13:12:43
 
Да вроде все нормально: провел Оптимизацию, Ревизию. Ошибок не было.
На затворках Интернета нашл программку (.bat-файлик), которая позволяет удалять файлы, имеющие нулевой размер. Другой программой сделал из нее .exe-файл. Чистит нормально.
Кстати, подумал также о том, что названия файлов-документов могут совпадать: для этого несколько видоизменил программу, добовив в конце названия каждого файла последовательную цифру. Однако при этом количество этих нулевых файлов значительно возросло по непонятным причинам.

writefile("c:\Doc\"<<@sn<<"_"<<GETFILENAME(ЛЦ15(@I))<<@I<<"."<<GETEXT(ЛЦ15(@I)),
GETTEXT(ЛЦ15(@I)));
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 050
Санкт-Петербург
Re: Выгрузка .doc файлов из CronosPro
Ответ #8 - 29.09.2022 :: 14:35:33
 
Перед записью файла следует получить значение GETTEXT(ЛЦ15(@I) и если оно имеет нулевую длину не записывать.
Наверх
 
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Выгрузка .doc файлов из CronosPro
Ответ #9 - 29.09.2022 :: 15:27:06
 
Ну что же, вроде получилось. Окончательный вид формулы следующий:

@sn:=@sysnomer;
@count:=valcount(ЛЦ15);   /* множественное поле типа Файл */
@I:=0;
A:
@I:=@I+1;
IF(GETTEXT(ЛЦ15(@I)) = "") THEN(GOTO C)ELSE(GOTO B);
B:
writefile("c:\Doc\"<<@sn<<"_"<<GETFILENAME(ЛЦ15(@I))<<"_"<<@I<<"."<<GETEXT(ЛЦ15(
@I)), GETTEXT(ЛЦ15(@I)));
if (@I<@count) then (goto A) ELSE (GOTO C);
C:

Спасибо за подсказку, Zuluss.  Улыбка
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 050
Санкт-Петербург
Re: Выгрузка .doc файлов из CronosPro
Ответ #10 - 29.09.2022 :: 17:00:38
 
Можно немного проще
Код:
@I:=1; @CNT:=VALCOUNT(ЛЦ1);
WHILE(@I<=@CNT) DO
[	@cont:=GETTEXT(ЛЦ1(@I));
	if @cont then (WRITEFILE("c:\temp\"<<@SYSNOMER<<"_"<<@I<<"_"<<GETFILENAME(ЛЦ1(@I))<<"."<<GETEXT(ЛЦ1(@I)),@cont));
	@I:=@I+1
] 

Наверх
 
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Выгрузка .doc файлов из CronosPro
Ответ #11 - 30.09.2022 :: 09:24:40
 
Да, действительно работает аналогичным образом.
Так намного лучше, на ней и остановлюсь, предварительно кое-что изменив в ней.
Еще раз спасибо.
Наверх
 
 
IP записан
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать