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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Сообщение ecasoft »

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

На ВИПе нужно написать цикл, который использует функции по работе с DBF-файлами (типа ореnDBF - см. доку по функциям). В цикле можете все проанализировать при импорте - это удобнее, чем
LOT конечно.
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

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

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

Может кто-нибудь подсказать?
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

что значит "составить строку запроса" ?
можно написать лоты для выгурзки/загрузки и запускать их vip.exe батником по расписанию
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

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

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

Может кто-нибудь подсказать?
В принципе можно попробовать через DSQL(по идее долно получится...) ,если у Вас 8,1 Галактика.
Вообщем то там строка запроса как раз и собирается и отдается на выполнение sql-серверу
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение 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-файлов, к сожалению.

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

Спасибо, всем откликнувшимся!!!
lStep
Новичок
Сообщения: 28
Зарегистрирован: 27 июл 2006, 16:49

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

Сообщение lStep »

Галактика 8.10
функцией PutTableToDBF поля типа Date выгружаются в dbf в тип Date 10 (DD/MM/YYYY).
нужен Date 8 (YYYYMMDD).

Есть какие-нибудь идеи?
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Сообщение Алексей »

а если выгружать datetostr(date,'YYYYMMDD') ?
lStep
Новичок
Сообщения: 28
Зарегистрирован: 27 июл 2006, 16:49

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

Сообщение 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);
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

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

Сообщение Vik »

lStep писал(а):недокументированной PutTableToDBF
Почему недокументированной? Вполне документированный метод логической таблицы
Ответить