| View previous topic :: View next topic   | 
	
	
	
		| Author | 
		Message | 
	
	
		mrs_2005
 
 
  Joined: 22 Jun 2005 Posts: 105 Location: Михайлов Р.С. Occupation: ООО "Предприятие "Виктория-Юг" Interests: г. Краснодар
  | 
		
			
				 Posted: 07 Sep 2005 14:50    Post subject: Экспорт - Импорт | 
				     | 
			 
			
				
  | 
			 
			
				Здравствуйте.
 
Стоит такая задача:
 
1. Есть две базы: Общая и Правильная (Модуль Материалы).
 
2. Документы первоначально заводятся в Общей базе материалов.
 
2. Из Общей базы материалов нужно отобрать только те документы, которые соответствуют некоторому условию и импортировать в Правильную базу.
 
 
Для решения данной задачи пока использую выгрузку в режиме работы с удаленными складами через ВРЕМЕННУЮ базу для удаления ненужных документов (есть соответствующий HFileEval).
 
Т.е. схема документооборота следующая:
 
1. Общая база - Выгрузка в файл ВСЕХ документов за период 
 
2. Временная база - а) загрузка ВСЕХ документов  б) удаление всех документов, не удовлетворяющих условию правильности. в) исправление ошибок при импорте г) выгрузка правильных документов.
 
3. Правильная база - загрузка правильных документов и снова исправлени ошибок при импорте.
 
 
Хочу избавиться от Временной базы и импортировать нужные документы напрямую из Общей базы во временную.
 
 
Как можно решить эту проблему?
  Last edited by mrs_2005 on 08 Sep 2005 14:37; edited 1 time in total | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		mrs_2005
 
 
  Joined: 22 Jun 2005 Posts: 105 Location: Михайлов Р.С. Occupation: ООО "Предприятие "Виктория-Юг" Interests: г. Краснодар
  | 
		
			
				 Posted: 07 Sep 2005 15:42    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Посмотрел программу БЭСТ-Утиль Интеллект-Сервис-Самара.
 
То что надо, но - для товаров. А нужно для материало | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 07 Sep 2005 16:25    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Ну Вы же понимаете что обмен документами между базами писать самоятотельно это очень даже чревато, абсолютно правильно что через возможности удаленного склада - кстати они (эти возможности) позволяют при записи документа его удалять и корректировать автоматически.
 
В 12-й версии есть функция через HFILEEVAL позволяющая выполнять процедуру загрузки с удаленного склада применительно к конкретной БД, я ее еще на практике не пробовал применять но думать бы начал по Вашему вопросу в этом направлении.
 
Еще можно задуматься над использованием XML, но в этом направлении работы по решению Вашего вопроса мне думается значительно больше будет.
 
А в принципе писали и полностью создание накладных в БЭСТе на HFIleEval - а значит их можно корректировать и удалять, тут главное определиться в своих навыках, сроках которые стоят и целесообразност | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		mrs_2005
 
 
  Joined: 22 Jun 2005 Posts: 105 Location: Михайлов Р.С. Occupation: ООО "Предприятие "Виктория-Юг" Interests: г. Краснодар
  | 
		
			
				 Posted: 08 Sep 2005 14:52    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Здравствуйте, Константин. Спасибо за участие.
 
 
 	  | nordk wrote: | 	 		   позволяют при записи документа его удалять и корректировать автоматически.
 
 | 	  
 
А можно ли при записи документа его автоматически удалять по условию и как?
 
 
 	  | Quote: | 	 		  
 
В 12-й версии есть функция через HFILEEVAL позволяющая выполнять процедуру загрузки с удаленного склада применительно к конкретной БД, я ее еще на практике не пробовал применять но думать бы начал по Вашему вопросу в этом направлении.
 
 | 	  
 
 
Сроки достаточно короткие, таких навыков пока не очень много. Но есть необходимость и желание. 
 
В принципе я тут надумал еще один вариант. 
 
1. Выгружаем из Общей базы ВСЕ документы.  - получаем файл. 
 
2. Разархивируем этот файл. 
 
3. В таблицах вида _doc.dbf, _docm.dbf удаляем лишние документы по необходимому условию 
 
4. Архивируем назад в файл.
 
5. Принимаем его в Правильную базу.
 
 
И похоже, что он самый быстрый для реализации. Поэтому вопрос: можно ли это реализовать через HFileEval? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Олег Смирнов
 
 
  Joined: 06 Sep 2004 Posts: 821 Location: Олег Смирнов Occupation: Раут (поганист-сисадмин) Interests: Новосибирск
  | 
		
			
				 Posted: 08 Sep 2005 15:52    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | mrs_2005 wrote: | 	 		  | А можно ли при записи документа его автоматически удалять по условию и как? | 	  
 
Ну, наверное, в Вашем-то случае лучше документ по условию просто не принимать
 
 	  | mrs_2005 wrote: | 	 		  | В принципе я тут надумал еще один вариант.  | 	  
 
Так этот вариант ничем не лучше того, что у Вас уже работает...
 
И реализовывать его вовсе даже не обязательно через HFileEval или вообще какие-нить плагины, а можно просто написать на FoxPro, или даже (страшно подумать...   ) на Access-е...
 
А у моих клиентов с 1998 года работает отдельная программулька на FoxPro для прямого переноса товарных документов из одной базы в другую (почти такую же...   )...
 
А году так в 1999-2000 я забацал программку для Новолита, которая переносила ещё и материалы - по тому же принципу (а там и разницы никакой нет - только каталоги отличаются - SCLAD\ и ZAPAS\). _________________ С уважением, Олег Р. Смирн | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		ВАЛЕРИ БОНДАРЧУК
 
 
  Joined: 24 Jul 2002 Posts: 20 Location: БОНДАРЧУК ВАЛЕРИЙ ИВАНОВИЧ
 
 
  | 
		
			
				 Posted: 08 Sep 2005 19:01    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Добрый день всем.
 
Один фильтр в удаленном складе - это период выгрузки.
 
Нужные документы передачи перебиваем на дату вперед или выходные.
 
Передаем документы и принимаем в нужной базе. 
 
Это в том случае, когда даты не имеют критичного значения.
 
Если имеют, то перебить даты на нужные.
 
Второй вариант - отдельный склад. Остатки по всему предприятию сходятся, а по нужному складу нет.
 
Искренне с вами, Валери Бондарч | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 09 Sep 2005 10:50    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Олег Смирнов
 
 	  | Quote: | 	 		  И реализовывать его вовсе даже не обязательно через HFileEval или вообще какие-нить плагины, а можно просто написать на FoxPro, или даже (страшно подумать...   ) на Access-е...
 
А у моих клиентов с 1998 года работает отдельная программулька на FoxPro для прямого переноса товарных документов из одной базы в другую (почти такую же...   )...
 
 | 	  
 
 
Я нисколько не сомневаюсь в Ваших способностях, но пользоваться access сейчас когда есть харбор - здесь извините но я считаю это неправильно изначально. Зачем делать какие-то сторонние окна-разработки когда все можно сделать изнутри БЭСТа да еще и на индексах dbfcdx........ Вы можете писать на фоксе - я все понимаю, в свете 98 года согласен, в свете счаз - нет, когда вы напрямую из БЭСТа через переменные памяти можете сразу с SQL таблицами работать... МЫ ОТКРЫЛИ ЭТОТ САЙТ ДЛЯ ТОГО ЧТОБЫ УЧИТЬ ЛЮДЕЙ ПРОГРАММИРОВАТЬ В HARBOUR потому что теперь ЕГО ВОЗМОЖНОСТИ ШИРОКИ ИЗНУТРИ БЭСТА а не СНАРУЖИ
 
А в остальном если Вы привыкли делать по-своему - это Ваше пра | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 09 Sep 2005 11:01    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				mrs_2005 	  | Quote: | 	 		  |  А можно ли при записи документа его автоматически удалять по условию и как? | 	  
 
 
 
Дело в том что если при приемке документов через базы удаленного склада вы положите в БД deleted.dbf Ваш документ - он будет удален
 
в процессе выполнения обработки документов с удаленного склада
 
 
 	  | Quote: | 	 		  Сроки достаточно короткие, таких навыков пока не очень много. Но есть необходимость и желание. 
 
В принципе я тут надумал еще один вариант. 
 
1. Выгружаем из Общей базы ВСЕ документы.  - получаем файл. 
 
2. Разархивируем этот файл. 
 
3. В таблицах вида _doc.dbf, _docm.dbf удаляем лишние документы по необходимому условию 
 
4. Архивируем назад в файл.
 
5. Принимаем его в Правильную базу.
 
 
И похоже, что он самый быстрый для реализации. Поэтому вопрос: можно ли это реализовать через HFileEval? | 	  
 
 
Да разумеется можно. Это полноценный язык программирования, а значит имеющий все необходимые возможности для этого...
 
Моя рекомендация будет такой чтобы в процессе реализации данной задачи в короткий срок Вы заранее продумали и заложили дальнейшие возможности - такие как определять БД с какими выполнять данную функцию, возможность дать свой экран на котором Вы могли бы в дальнейшем по всей цепочке документов источник-копия- копия в другой БД и т.п. иметь возможность их корректировки, настройка процентов изменения цен внутри документа - тут много чего в механизм заложить - на это нужно время и желание. Подсказывать и направлять - это моя задача. Но в короткий срок нужно делать так как Вы сможете сделать это сч | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 09 Sep 2005 11:05    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| А вообще я счаз работаю над "скользким" вопросом записи документа сразу в любую БД и т.п. Но об этом пока развивать тему не буду - слишком рано | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		mrs_2005
 
 
  Joined: 22 Jun 2005 Posts: 105 Location: Михайлов Р.С. Occupation: ООО "Предприятие "Виктория-Юг" Interests: г. Краснодар
  | 
		
			
				 Posted: 14 Sep 2005 16:04    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | nordk wrote: | 	 		  
 
Дело в том что если при приемке документов через базы удаленного склада вы положите в БД deleted.dbf Ваш документ - он будет удален
 
в процессе выполнения обработки документов с удаленного склада
 
 | 	  
 
 
Странно, но не удаляет. 
 
1. Положил ненужные документы в deleted.dbf в ОБЩЕЙ базе
 
 
  	  | Code: | 	 		  
 
Private cscr
 
//altd()
 
DBPUSH()
 
 
  cscr:='  Выполняется подготовка к перемещению документов...   '
 
  SayAndWait (cscr)
 
//*************************************************************
 
  dbpush("MDOC","MDOC_R","",{})
 
  MDOC->(dbgotop())
 
  do while (mdoc->(!eof()))
 
 
 IF (MDOC->VID="2".and.MDOC->TYPE="1".and.MDOC->Sclad="000010".and.MDOC->CODEOPER="0001").or.(MDOC->VID="2".and.MDOC->TYPE="1".and.MDOC->Sclad="000010".and.MDOC->CODEOPER="0002")
 
 
 else
 
    // добавляем, запись по ненужному документу в deleted.dbf
 
    deleted->(Addrec())
 
    deleted->Vid:=mdoc->Vid
 
    deleted->Type:=mdoc->Type
 
    deleted->Sclad:=mdoc->Sclad
 
    deleted->CodeDoc:=mdoc->CodeDoc
 
    deleted->NumDoc:=mdoc->NumDoc
 
    deleted->Date:=mdoc->Date
 
    deleted->AgentName:=mdoc->AgentName
 
    deleted->Summa:=mdoc->Summa
 
    deleted->AgentCode:=mdoc->AgentCode
 
    deleted->CodeDoc1:=mdoc->CodeDoc1
 
    deleted->NumDoc1:=mdoc->NumDoc1
 
    deleted->Input:=mdoc->Input
 
 
    deleted->(F_dbunlock())
 
 
 endif
 
 
     mdoc->(dbskip())
 
enddo
 
 
  cscr:='  Подготовка к перемещению документов завершена!   '
 
  SayAndWait (cscr)
 
 
dbpop()
 
 | 	  
 
 
? что здесь нехорошо и как исправить?
 
 
2. Выгрузил документы через удаленный склад из ОБЩЕЙ базы. В протоколе на выдачу получил список выгруженных документов и список удаленных документов.
 
3. При приеме через удаленный склад в ПРАВИЛЬНОЙ базе принимает ВСЕ     документы. Если пытаться загрузить второй раз, то удаляет, но не все. Говорит, что нет смежных документов по внутреннему перемещению. И при удалении на каждом документе спрашивает об удалении, а мне удалять нужно больше, чем принимать. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 14 Sep 2005 19:05    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Честно говоря я видел себе это несколько иначе.
 
А именно - создал бы допустим удаленный склад и на нем бы создал файл архива для приема данных...
 
Далее бы этот файл открыл, посмотрел какие внутри таблицы, нашел бы среди них таблицу DELETED (чуть по другому звучит по-моему с подчеркиванием впереди) и просто бы из плагина воспроизвел бы сразу создание этих файлов и их упаковку в файл, чтобы осталось только запустить функцию приема этого файла. Т.е. поставил бы целью создание файла по которому производится прием с удаленного склада непосредственно.
 
 
И еще что сразу бросилось в глаза в Вашем примере - нигде не вижу DBCOMMIT()
 
Т.е. после завершения цикла просится deleted->( DBCOMMIT() )
 
Вы само содержимое БД deleted анализировали после выполнения Вашего плагина ? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		 |