Обмен данными между базами Галактики.
Модераторы: m0p3e, edward_K, Модераторы
- 
				ecasoft
- Местный житель
- Сообщения: 645
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"
Мы много внедряли для корпораций (несколько баз), но все на штатной галактике и на Первасиве. Там все проще - делаете общие таблицы МЦ для всех филиалов и т.д. в самом начале внедрения и никаких проблем с синхронизацией. ну это Вам не подходит.
На ВИПе нужно написать цикл, который использует функции по работе с DBF-файлами (типа ореnDBF - см. доку по функциям). В цикле можете все проанализировать при импорте - это удобнее, чем
LOT конечно.
			
			
									
						
										
						На ВИПе нужно написать цикл, который использует функции по работе с DBF-файлами (типа ореnDBF - см. доку по функциям). В цикле можете все проанализировать при импорте - это удобнее, чем
LOT конечно.
Просто уже набралось 35 таблиц для обмена, не хочется для каждой все поля прописывать.
Проще написать просто запрос типа:
IMPORT KatOrg FROM DBF D:\Galaxy\1\katorg.dbf f s n r d;
Но вот можно ли составить строку запроса (как в 1С)? и как выполнить этот запрос в своем интерфейсе?
Может кто-нибудь подсказать?
			
			
									
						
										
						Проще написать просто запрос типа:
IMPORT KatOrg FROM DBF D:\Galaxy\1\katorg.dbf f s n r d;
Но вот можно ли составить строку запроса (как в 1С)? и как выполнить этот запрос в своем интерфейсе?
Может кто-нибудь подсказать?
- 
				Den
- Местный житель
- Сообщения: 1847
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
В принципе можно попробовать через DSQL(по идее долно получится...) ,если у Вас 8,1 Галактика.hope писал(а):Просто уже набралось 35 таблиц для обмена, не хочется для каждой все поля прописывать.
Проще написать просто запрос типа:
IMPORT KatOrg FROM DBF D:\Galaxy\1\katorg.dbf f s n r d;
Но вот можно ли составить строку запроса (как в 1С)? и как выполнить этот запрос в своем интерфейсе?
Может кто-нибудь подсказать?
Вообщем то там строка запроса как раз и собирается и отдается на выполнение sql-серверу
Галактика у нас 7.12.
Составить строку запроса - это значит сформировать запрос из нескольких строк типа "IMPORT KatOrg FROM DBF "+путь+"katorg.dbf f s n r d;"
А потом нужно выполнить этот запрос.
И еще столкнулась с такой проблемой: если таблицу выгружать в dbf через Support-SQL запросом:
SELECT *
FROM KatOrg
WHERE ((Date(01,01,2009)<<=KatOrg.ATL_LastDate))
TO DBF
;
то поля типа Date выгружаются в dbf в поле типа Date 8 (YYYYMMDD).
А если выгружаем таблицу в своем интерфейсе функцией PutTableToDBF, то поля типа Date выгружаются в dbf в поле типа Date 10 (DD/MM/YYYY).
В результате, при загрузке с помощью запроса
IMPORT KatOrg FROM DBF D:\Galaxy\1\katorg.dbf f s n r d;
из файлов, выгруженных с помощью функции PutTableToDBF, некорректно загружаются поля с датой.
Есть оператор настройки параметров экспорта/импорта set impex txt, но он только для txt-файлов, к сожалению.
Есть какие-нибудь идеи?
Спасибо, всем откликнувшимся!!!
			
			
									
						
										
						Составить строку запроса - это значит сформировать запрос из нескольких строк типа "IMPORT KatOrg FROM DBF "+путь+"katorg.dbf f s n r d;"
А потом нужно выполнить этот запрос.
И еще столкнулась с такой проблемой: если таблицу выгружать в dbf через Support-SQL запросом:
SELECT *
FROM KatOrg
WHERE ((Date(01,01,2009)<<=KatOrg.ATL_LastDate))
TO DBF
;
то поля типа Date выгружаются в dbf в поле типа Date 8 (YYYYMMDD).
А если выгружаем таблицу в своем интерфейсе функцией PutTableToDBF, то поля типа Date выгружаются в dbf в поле типа Date 10 (DD/MM/YYYY).
В результате, при загрузке с помощью запроса
IMPORT KatOrg FROM DBF D:\Galaxy\1\katorg.dbf f s n r d;
из файлов, выгруженных с помощью функции PutTableToDBF, некорректно загружаются поля с датой.
Есть оператор настройки параметров экспорта/импорта set impex txt, но он только для txt-файлов, к сожалению.
Есть какие-нибудь идеи?
Спасибо, всем откликнувшимся!!!
Re: PutTableToDBF и тип Date 10 (DD/MM/YYYY)
Галактика 8.10
функцией PutTableToDBF поля типа Date выгружаются в dbf в тип Date 10 (DD/MM/YYYY).
нужен Date 8 (YYYYMMDD).
Есть какие-нибудь идеи?
			
			
									
						
										
						функцией PutTableToDBF поля типа Date выгружаются в dbf в тип Date 10 (DD/MM/YYYY).
нужен Date 8 (YYYYMMDD).
Есть какие-нибудь идеи?
- 
				Алексей
- Местный житель
- Сообщения: 2898
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Обмен данными между базами Галактики.
а если выгружать datetostr(date,'YYYYMMDD') ?
			
			
									
						
										
						Re: Обмен данными между базами Галактики.
Структура таблицы определена.
Там где дата, там Date и никак в неё string не лезет.
Извернулся так:
недокументированной PutTableToDBF получаем DBF c DATE10 dd/mm/yyyy
потом DBF-функциями VIPа переводим DATE10 из dd/mm/yyyy в yyyymmdd
(DBFGetFieldValue, DBFPutFieldValue, DBFUpDateRecord )
			
			
									
						
										
						Там где дата, там Date и никак в неё string не лезет.
Извернулся так:
недокументированной PutTableToDBF получаем DBF c DATE10 dd/mm/yyyy
потом DBF-функциями VIPа переводим DATE10 из dd/mm/yyyy в yyyymmdd
(DBFGetFieldValue, DBFPutFieldValue, DBFUpDateRecord )
Код: Выделить всё
function TranslateDate (pDateField:String ): boolean;
{
  Var d_dbf: Date;
  var sDate: string;
       sDate:= DBFGetFieldValue(l_DBFfile, pDateField   ) 
       if inStr('/',sDate) > 1 then 
       {
         TranslateDate := true;
         d_dbf := StrToDate(sDate,'DD/MM/YYYY');
         sDate := DateToStr(d_dbf,'YYYYMMDD');
         DBFPutFieldValue(l_DBFfile, pDateField, sDate);
       } else TranslateDate := false;
}
  l_DBFfile:=DBFOpen2(pStrDBFfile, stOpen); // stOpenWrite
  if l_DBFfile=0 then
  {
      MESSAGE('Ошибка открытия файла тел документов :'+pStrDBFfile);
      stop; exit;
  }
  if DBFGetFirst(l_DBFfile)=tsOK
  {
     do 
     {
       if TranslateDate('RegDate') then  DBFUpDateRecord (l_DBFfile);
     }
     while DBFGetNext(l_DBFfile)=tsOK
  }
DBFClose(l_DBFfile);- 
				Vik
- Местный житель
- Сообщения: 370
- Зарегистрирован: 28 сен 2006, 15:43
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Обмен данными между базами Галактики.
Почему недокументированной? Вполне документированный метод логической таблицыlStep писал(а):недокументированной PutTableToDBF