| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		jamil Участник - экстремал
 
  Вступление в Клуб: 11.08.2014
  | 
		
			
				 Чт Май 26, 2016 07:50   Вывод данных в нескольких txt файлах | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Задача стоит такая: пользователь задает промежуток дат. Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах.
 
Как это реализовать? | 
			 
		  | 
	
	
		  | 
	
	
		Эмиралька Эксперт
 
  Вступление в Клуб: 09.11.2015
  | 
		
			
				 Чт Май 26, 2016 08:48   Re: Вывод данных в нескольких txt файлах | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | jamil пишет: | 	 		  Задача стоит такая: пользователь задает промежуток дат. Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах.
 
Как это реализовать? | 	  
 
*проведённых
 
 	  | Код: | 	 		  var procedure ProcessDay(p_day date) is
 
begin
 
   ::[REPS_DATA].[LIB_FILE].CreateFile('./'||to_char(p_day,'yyyymmdd.txt'));
 
   for(
 
      select doc(
 
         doc%id:id
 
      ) in ::[MAIN_DOCUM] all
 
      where
 
            upper(x%state) = 'PROV'
 
         and x.[DATE_PROV] >= p_day
 
         and x.[DATE_PROV] <  p_day + 1
 
 
   ) loop
 
      ::[REPS_DATA].[LIB_FILE].AppendFileStr('./'||to_char(p_day,'yyyymmdd.txt'), doc.id);
 
   end loop;
 
end;
 
 
   for i in 0 .. d_End - d_Beg loop
 
      ProcessDay( d_Beg + i );
 
   end loop;
 
 | 	 
  | 
			 
		  | 
	
	
		  | 
	
	
		jamil Участник - экстремал
 
  Вступление в Клуб: 11.08.2014
  | 
		
			
				 Чт Май 26, 2016 09:18   Re: Вывод данных в нескольких txt файлах | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Эмиралька пишет: | 	 		   	  | jamil пишет: | 	 		  Задача стоит такая: пользователь задает промежуток дат. Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах.
 
Как это реализовать? | 	  
 
*проведённых
 
 	  | Код: | 	 		  var procedure ProcessDay(p_day date) is
 
begin
 
   ::[REPS_DATA].[LIB_FILE].CreateFile('./'||to_char(p_day,'yyyymmdd.txt'));
 
   for(
 
      select doc(
 
         doc%id:id
 
      ) in ::[MAIN_DOCUM] all
 
      where
 
            upper(x%state) = 'PROV'
 
         and x.[DATE_PROV] >= p_day
 
         and x.[DATE_PROV] <  p_day + 1
 
 
   ) loop
 
      ::[REPS_DATA].[LIB_FILE].AppendFileStr('./'||to_char(p_day,'yyyymmdd.txt'), doc.id);
 
   end loop;
 
end;
 
 
   for i in 0 .. d_End - d_Beg loop
 
      ProcessDay( d_Beg + i );
 
   end loop;
 
 | 	 
  | 	  
 
 
Не нашел библиотеку [LIB_FILE]
 
 
Администратор словаря данных
 
Версия 6.332.0.40
 
Версия ТЯ 7.1.1.6
 
Версия рабочего места Администратора 6.33.10 | 
			 
		  | 
	
	
		  | 
	
	
		jamil Участник - экстремал
 
  Вступление в Клуб: 11.08.2014
  | 
		
			
				 Чт Май 26, 2016 09:19   Re: Вывод данных в нескольких txt файлах | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Эмиралька пишет: | 	 		   	  | jamil пишет: | 	 		  Задача стоит такая: пользователь задает промежуток дат. Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах.
 
Как это реализовать? | 	  
 
*проведённых
 
 	  | Код: | 	 		  var procedure ProcessDay(p_day date) is
 
begin
 
   ::[REPS_DATA].[LIB_FILE].CreateFile('./'||to_char(p_day,'yyyymmdd.txt'));
 
   for(
 
      select doc(
 
         doc%id:id
 
      ) in ::[MAIN_DOCUM] all
 
      where
 
            upper(x%state) = 'PROV'
 
         and x.[DATE_PROV] >= p_day
 
         and x.[DATE_PROV] <  p_day + 1
 
 
   ) loop
 
      ::[REPS_DATA].[LIB_FILE].AppendFileStr('./'||to_char(p_day,'yyyymmdd.txt'), doc.id);
 
   end loop;
 
end;
 
 
   for i in 0 .. d_End - d_Beg loop
 
      ProcessDay( d_Beg + i );
 
   end loop;
 
 | 	 
  | 	  
 
 
Не нашел библиотеку [LIB_FILE]
 
 
Администратор словаря данных
 
Версия 6.332.0.40
 
Версия ТЯ 7.1.1.6
 
Версия рабочего места Администратора 6.33.10 | 
			 
		  | 
	
	
		  | 
	
	
		Volod Эксперт
 
  Вступление в Клуб: 19.09.2007
  | 
		
			
				 Чт Май 26, 2016 09:54    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Цитата: | 	 		  Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах. 
 
Как это реализовать? | 	  
 
 
Интересно, а для одной даты реализовано? | 
			 
		  | 
	
	
		  | 
	
	
		yaffil Профи
 
  Вступление в Клуб: 18.08.2011
  | 
		
			
				 Чт Май 26, 2016 10:01   Re: Вывод данных в нескольких txt файлах | 
				     | 
			 
			
				Полезность: 1 
  | 
			 
			
				 	  | jamil пишет: | 	 		  Задача стоит такая: пользователь задает промежуток дат. Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах.
 
Как это реализовать? | 	  
 
 
Как то так. Ну и в цикл это всё, к названию файла можете добавлять день например. (file_name:=to_char(sysdate,'DDMMYYYY')||'_'||file_name)
 
 
file_path	[FILE$PATH] :='./file';
 
file_name	[FILE$PATH] :='DOKI.txt'; --Имя файла
 
file		integer;
 
v_res integer;
 
 
begin
 
 
file_app := stdio.open(file_path,file_name, 'w');
 
rezult := 'ваш текст';
 
v_res := stdio.write_str(file, rezult, null, stdio.WINTEXT, false);
 
if v_res < 0 then
 
			pragma error ('Ошибка при записи в файл =' || file_path || file_name);
 
		end if;
 
stdio.close(file);
 
 
end; | 
			 
		  | 
	
	
		  | 
	
	
		jamil Участник - экстремал
 
  Вступление в Клуб: 11.08.2014
  | 
		
			
				 Чт Май 26, 2016 12:38   Re: Вывод данных в нескольких txt файлах | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | yaffil пишет: | 	 		   	  | jamil пишет: | 	 		  Задача стоит такая: пользователь задает промежуток дат. Нужно чтобы для каждого числа в этом промежутке создавался отдельный txt файл с данными о платежных документах.
 
Как это реализовать? | 	  
 
 
Как то так. Ну и в цикл это всё, к названию файла можете добавлять день например. (file_name:=to_char(sysdate,'DDMMYYYY')||'_'||file_name)
 
 
file_path	[FILE$PATH] :='./file';
 
file_name	[FILE$PATH] :='DOKI.txt'; --Имя файла
 
file		integer;
 
v_res integer;
 
 
begin
 
 
file_app := stdio.open(file_path,file_name, 'w');
 
rezult := 'ваш текст';
 
v_res := stdio.write_str(file, rezult, null, stdio.WINTEXT, false);
 
if v_res < 0 then
 
			pragma error ('Ошибка при записи в файл =' || file_path || file_name);
 
		end if;
 
stdio.close(file);
 
 
end; | 	  
 
 
Как я понял в данном случаи файлы сохраняются на стороне сервера. А возможно ли чтобы они сохранялись на компе пользователя? | 
			 
		  | 
	
	
		  | 
	
	
		yaffil Профи
 
  Вступление в Клуб: 18.08.2011
  | 
		
			
				 Чт Май 26, 2016 12:49   Re: Вывод данных в нескольких txt файлах | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | jamil пишет: | 	 		  
 
Как я понял в данном случаи файлы сохраняются на стороне сервера. А возможно ли чтобы они сохранялись на компе пользователя? | 	  
 
 
Можете тут же после stdio.close(file) копировать на клиенте, примеров предостаточно в ЦФТ такого копирования. Единственное что надо или операцию тогда ограничить (не более 1й запущенной) или в названия файлов добавлять ИД сессии, чтобы не перезатирались.
 
Вероятность, конечно, маленькая, но она есть. | 
			 
		  | 
	
	
		  | 
	
	
		jamil Участник - экстремал
 
  Вступление в Клуб: 11.08.2014
  | 
		
			
				 Пт Май 27, 2016 08:03   Re: Вывод данных в нескольких txt файлах | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | yaffil пишет: | 	 		   	  | jamil пишет: | 	 		  
 
Как я понял в данном случаи файлы сохраняются на стороне сервера. А возможно ли чтобы они сохранялись на компе пользователя? | 	  
 
 
Можете тут же после stdio.close(file) копировать на клиенте, примеров предостаточно в ЦФТ такого копирования. Единственное что надо или операцию тогда ограничить (не более 1й запущенной) или в названия файлов добавлять ИД сессии, чтобы не перезатирались.
 
Вероятность, конечно, маленькая, но она есть. | 	  
 
 
Как быт с созданными файлами txt на стороне сервера? Они же будут захламлять папку сервера. | 
			 
		  | 
	
	
		  | 
	
	
		yaffil Профи
 
  Вступление в Клуб: 18.08.2011
  | 
		
			
				 Пт Май 27, 2016 09:27    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Удалять их вам тоже никто не запрещает в этом же цикле, после копирования на клиента   
 
 
Ну или удалять всё из папки (побыстрее будет, но думаю разницы не заметите) при запуске операшки, ну это если вариант с запуском только 1й операции поставите. | 
			 
		  | 
	
	
		  | 
	
	
		Эмиралька Эксперт
 
  Вступление в Клуб: 09.11.2015
  | 
		
			
				 Пт Май 27, 2016 13:17    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | yaffil пишет: | 	 		  Удалять их вам тоже никто не запрещает в этом же цикле, после копирования на клиента   
 
 
Ну или удалять всё из папки (побыстрее будет, но думаю разницы не заметите) при запуске операшки, ну это если вариант с запуском только 1й операции поставите. | 	  
 
только не в этом же!
 
для того, чтобы операция копирования на клиента произошла, серверу следует послать сигнал АРМ Навигатор для запуска копирования, и к этому моменту надо, чтобы файлы были.
 
 
 	  | jamil пишет: | 	 		  Не нашел библиотеку [LIB_FILE]
 
 
Администратор словаря данных
 
Версия 6.332.0.40
 
Версия ТЯ 7.1.1.6
 
Версия рабочего места Администратора 6.33.10 | 	  
 
Я извиняюсь, а где ищете?
 
Это прикладной функционал.
 
Существует с 2009 года. Ну ладно, в РБО с 2010. | 
			 
		  | 
	
	
		  | 
	
	
		vtar Эксперт
 
  Вступление в Клуб: 20.03.2009
  | 
		
			
				 Пн Июн 06, 2016 11:53    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				| В одном из банков так делали выписки для клиентов. На сервере генерировались 100500 файлов, жались там же  архиватором и потом 1 файл архива передавался на клиента. | 
			 
		  | 
	
	
		  | 
	
	
		 |