BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Перенос части справочников
 
Периодически надо из основной базы перенесть часть справочников в дополнительную базу. В дополнительную базу эти справочники могут попасть, только при переносе. Ручного ввода и исправления нет, переноса из других баз нет.

Надо из основной базы перенести аналитику со счетов 612, 622 и связанных с аналитикой партнеров.

Напрашивается примерно такой алгоритм: Пробегаемся по аналитике счета 612, проверяем есть ли аналитика с таким кодом в доп. базе, если нет, то переносим сточку (с помощью какой команды это лучше сделать?). Определяем связанного партнера и т.д.

Можно ли как-то оптимизировать этот процесс? С помощью какой команды лучше добавлять целую строчку? Стоит ли здесь применять команду append from?

P.S. Б4+12.01 СП40
 
По всей видимости перенос счетов увязан с переносом документов.
Может на какое-то событие в документе сделать плагин: если партнера нет, то добавить и взять вот отсюда ?

Для переноса в описании HELPа к программированию в БЭСТ-4 есть описание функций Gather и Scatter - рекомендую.
 
Цитата
nordk пишет:
Для переноса в описании HELPа к программированию в БЭСТ-4 есть описание функций Gather и Scatter - рекомендую


Спасибо. Пробую их.
 
Я делаю наоборот.
Сначала формирую буфер из всей первой базы, потом в этом буфере удаляю все уже присутствующие во второй базе записи, потом добавляю этот буфер во вторую базу.
Как умею, так и делаю :funny:
 
Получился примерно такой код:
Код
Function Main()
  Local aSetKey
  Local aBases, cFile, cDir
  Local cCode
  Local aAnalit
  Local cSchet, nNNoper

  aSetKey:=SaveSetKey()
  DBPUSH() 

  cDir := 'C:\Bests\B4P1201\demo\' 
  NetUse("F_Analit", LoadPath() + "analit.dbf")
    F_Analit->(ORDSETFOCUS("Code"))
  NetUse("F_AnalitI", cDir + "analit.dbf")
    F_AnalitI->(ORDSETFOCUS("Code"))
  NetUse("F_NAnalit", LoadPath() + "nanalit.dbf")
    F_NAnalit->(ORDSETFOCUS("Key"))
  NetUse("F_NAnalitI", cDir + "nanalit.dbf")
    F_NAnalitI->(ORDSETFOCUS("Key"))
  NetUse("F_Partner", LoadPath() + "partner.dbf")
    F_Partner->(ORDSETFOCUS("FullCode"))
  NetUse("F_PartnerI", cDir + "partner.dbf")
    F_PartnerI->(ORDSETFOCUS("FullCode"))
  cSchet := "6022      "
  While (!F_AnalitI -> (EOF()))

    If F_AnalitI->Schet == cSchet
      cCode := F_AnalitI->Code
      nNNoper := F_AnalitI->NNoper
      IF !F_Analit->(DBSEEK(UPPER(cSchet + cCode))) 
  altd()
        F_Analit->(AddRec()) 
        F_Analit->(Gather(F_AnalitI->(Scatter()))) 
        F_Analit->(DbUnLock())
      EndIf
      IF !F_NAnalit->(DBSEEK(Str(nNNoper,17) + '1')) 
        IF F_NAnalitI->(DBSEEK(Str(nNNoper,17) + '1')) 
          F_NAnalit->(AddRec()) 
          F_NAnalit->(Gather(F_NAnalitI->(Scatter()))) 
          F_NAnalit->(DbUnLock())
        EndIf
      EndIf
      IF !F_Partner->(DBSEEK(UPPER(cCode))) 
        IF F_PartnerI->(DBSEEK(UPPER(cCode))) 
          F_Partner->(AddRec()) 
          F_Partner->(Gather(F_PartnerI->(Scatter()))) 
          F_Partner->(DbUnLock())
        EndIf
      EndIf
    EndIf
    F_AnalitI->(DBSKIP())
  End

  F_Analit->(DBCLOSEAREA())
  F_NAnalit->(DBCLOSEAREA())
  F_Partner->(DBCLOSEAREA())
  DbPop() 
  RestSetKey(aSetkey)
Return



Если в основной базе произойдут какие-то изменения с аналитикой или с партнерами (удаление, изменение), то эти изменения не отобразятся в доп. базе.
 
Цитата
nordk пишет:
По всей видимости перенос счетов увязан с переносом документов.Может на какое-то событие в документе сделать плагин: если партнера нет, то добавить и взять вот отсюда ?


В данный момент ограничились проводками. Экспорт сделали по Shift-F5.
Страницы: 1
Читают тему (гостей: 1)