Страница 3 из 3

Добавлено: 02 фев 2009, 12:14
ecasoft
Мы много внедряли для корпораций (несколько баз), но все на штатной галактике и на Первасиве. Там все проще - делаете общие таблицы МЦ для всех филиалов и т.д. в самом начале внедрения и никаких проблем с синхронизацией. ну это Вам не подходит.

На ВИПе нужно написать цикл, который использует функции по работе с DBF-файлами (типа ореnDBF - см. доку по функциям). В цикле можете все проанализировать при импорте - это удобнее, чем
LOT конечно.

Добавлено: 02 фев 2009, 13:27
hope
Просто уже набралось 35 таблиц для обмена, не хочется для каждой все поля прописывать.
Проще написать просто запрос типа:
IMPORT KatOrg FROM DBF D:\Galaxy\1\katorg.dbf f s n r d;

Но вот можно ли составить строку запроса (как в 1С)? и как выполнить этот запрос в своем интерфейсе?

Может кто-нибудь подсказать?

Добавлено: 02 фев 2009, 13:38
Алексей
что значит "составить строку запроса" ?
можно написать лоты для выгурзки/загрузки и запускать их vip.exe батником по расписанию

Добавлено: 02 фев 2009, 13:51
Den
hope писал(а):Просто уже набралось 35 таблиц для обмена, не хочется для каждой все поля прописывать.
Проще написать просто запрос типа:
IMPORT KatOrg FROM DBF D:\Galaxy\1\katorg.dbf f s n r d;

Но вот можно ли составить строку запроса (как в 1С)? и как выполнить этот запрос в своем интерфейсе?

Может кто-нибудь подсказать?
В принципе можно попробовать через DSQL(по идее долно получится...) ,если у Вас 8,1 Галактика.
Вообщем то там строка запроса как раз и собирается и отдается на выполнение sql-серверу

Добавлено: 02 фев 2009, 16:57
hope
Галактика у нас 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-файлов, к сожалению.

Есть какие-нибудь идеи?

Спасибо, всем откликнувшимся!!!

Re: PutTableToDBF и тип Date 10 (DD/MM/YYYY)

Добавлено: 25 май 2011, 17:02
lStep
Галактика 8.10
функцией PutTableToDBF поля типа Date выгружаются в dbf в тип Date 10 (DD/MM/YYYY).
нужен Date 8 (YYYYMMDD).

Есть какие-нибудь идеи?

Re: Обмен данными между базами Галактики.

Добавлено: 26 май 2011, 06:41
Алексей
а если выгружать datetostr(date,'YYYYMMDD') ?

Re: Обмен данными между базами Галактики.

Добавлено: 26 май 2011, 13:52
lStep
Структура таблицы определена.
Там где дата, там 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);

Re: Обмен данными между базами Галактики.

Добавлено: 30 май 2011, 15:55
Vik
lStep писал(а):недокументированной PutTableToDBF
Почему недокументированной? Вполне документированный метод логической таблицы