Главная
Новый форум
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Экспорт - Импорт

 
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4
View previous topic :: View next topic  
Author Message
mrs_2005



Joined: 22 Jun 2005
Posts: 105
Location: Михайлов Р.С.
Occupation: ООО "Предприятие "Виктория-Юг"
Interests: г. Краснодар

PostPosted: 07 Sep 2005 14:50    Post subject: Экспорт - Импорт Reply with quote

Здравствуйте.
Стоит такая задача:
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
View user's profile Send private message Send e-mail Visit poster's website
mrs_2005



Joined: 22 Jun 2005
Posts: 105
Location: Михайлов Р.С.
Occupation: ООО "Предприятие "Виктория-Юг"
Interests: г. Краснодар

PostPosted: 07 Sep 2005 15:42    Post subject: Reply with quote

Посмотрел программу БЭСТ-Утиль Интеллект-Сервис-Самара.
То что надо, но - для товаров. А нужно для материало
Back to top
View user's profile Send private message Send e-mail Visit poster's website
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 07 Sep 2005 16:25    Post subject: Reply with quote

Ну Вы же понимаете что обмен документами между базами писать самоятотельно это очень даже чревато, абсолютно правильно что через возможности удаленного склада - кстати они (эти возможности) позволяют при записи документа его удалять и корректировать автоматически.
В 12-й версии есть функция через HFILEEVAL позволяющая выполнять процедуру загрузки с удаленного склада применительно к конкретной БД, я ее еще на практике не пробовал применять но думать бы начал по Вашему вопросу в этом направлении.
Еще можно задуматься над использованием XML, но в этом направлении работы по решению Вашего вопроса мне думается значительно больше будет.
А в принципе писали и полностью создание накладных в БЭСТе на HFIleEval - а значит их можно корректировать и удалять, тут главное определиться в своих навыках, сроках которые стоят и целесообразност
Back to top
View user's profile Send private message Send e-mail
mrs_2005



Joined: 22 Jun 2005
Posts: 105
Location: Михайлов Р.С.
Occupation: ООО "Предприятие "Виктория-Юг"
Interests: г. Краснодар

PostPosted: 08 Sep 2005 14:52    Post subject: Reply with quote

Здравствуйте, Константин. Спасибо за участие.

nordk wrote:
позволяют при записи документа его удалять и корректировать автоматически.

А можно ли при записи документа его автоматически удалять по условию и как?

Quote:

В 12-й версии есть функция через HFILEEVAL позволяющая выполнять процедуру загрузки с удаленного склада применительно к конкретной БД, я ее еще на практике не пробовал применять но думать бы начал по Вашему вопросу в этом направлении.


Сроки достаточно короткие, таких навыков пока не очень много. Но есть необходимость и желание.
В принципе я тут надумал еще один вариант.
1. Выгружаем из Общей базы ВСЕ документы. - получаем файл.
2. Разархивируем этот файл.
3. В таблицах вида _doc.dbf, _docm.dbf удаляем лишние документы по необходимому условию
4. Архивируем назад в файл.
5. Принимаем его в Правильную базу.

И похоже, что он самый быстрый для реализации. Поэтому вопрос: можно ли это реализовать через HFileEval?
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Олег Смирнов



Joined: 06 Sep 2004
Posts: 821
Location: Олег Смирнов
Occupation: Раут (поганист-сисадмин)
Interests: Новосибирск

PostPosted: 08 Sep 2005 15:52    Post subject: Reply with quote

mrs_2005 wrote:
А можно ли при записи документа его автоматически удалять по условию и как?

Ну, наверное, в Вашем-то случае лучше документ по условию просто не принимать
mrs_2005 wrote:
В принципе я тут надумал еще один вариант.

Так этот вариант ничем не лучше того, что у Вас уже работает...
И реализовывать его вовсе даже не обязательно через HFileEval или вообще какие-нить плагины, а можно просто написать на FoxPro, или даже (страшно подумать... ) на Access-е...
А у моих клиентов с 1998 года работает отдельная программулька на FoxPro для прямого переноса товарных документов из одной базы в другую (почти такую же... )...
А году так в 1999-2000 я забацал программку для Новолита, которая переносила ещё и материалы - по тому же принципу (а там и разницы никакой нет - только каталоги отличаются - SCLAD\ и ZAPAS\).
_________________
С уважением, Олег Р. Смирн
Back to top
View user's profile Send private message
ВАЛЕРИ БОНДАРЧУК



Joined: 24 Jul 2002
Posts: 20
Location: БОНДАРЧУК ВАЛЕРИЙ ИВАНОВИЧ


PostPosted: 08 Sep 2005 19:01    Post subject: Reply with quote

Добрый день всем.
Один фильтр в удаленном складе - это период выгрузки.
Нужные документы передачи перебиваем на дату вперед или выходные.
Передаем документы и принимаем в нужной базе.
Это в том случае, когда даты не имеют критичного значения.
Если имеют, то перебить даты на нужные.
Второй вариант - отдельный склад. Остатки по всему предприятию сходятся, а по нужному складу нет.
Искренне с вами, Валери Бондарч
Back to top
View user's profile Send private message Send e-mail
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 09 Sep 2005 10:50    Post subject: Reply with quote

Олег Смирнов
Quote:
И реализовывать его вовсе даже не обязательно через HFileEval или вообще какие-нить плагины, а можно просто написать на FoxPro, или даже (страшно подумать... ) на Access-е...
А у моих клиентов с 1998 года работает отдельная программулька на FoxPro для прямого переноса товарных документов из одной базы в другую (почти такую же... )...


Я нисколько не сомневаюсь в Ваших способностях, но пользоваться access сейчас когда есть харбор - здесь извините но я считаю это неправильно изначально. Зачем делать какие-то сторонние окна-разработки когда все можно сделать изнутри БЭСТа да еще и на индексах dbfcdx........ Вы можете писать на фоксе - я все понимаю, в свете 98 года согласен, в свете счаз - нет, когда вы напрямую из БЭСТа через переменные памяти можете сразу с SQL таблицами работать... МЫ ОТКРЫЛИ ЭТОТ САЙТ ДЛЯ ТОГО ЧТОБЫ УЧИТЬ ЛЮДЕЙ ПРОГРАММИРОВАТЬ В HARBOUR потому что теперь ЕГО ВОЗМОЖНОСТИ ШИРОКИ ИЗНУТРИ БЭСТА а не СНАРУЖИ
А в остальном если Вы привыкли делать по-своему - это Ваше пра
Back to top
View user's profile Send private message Send e-mail
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 09 Sep 2005 11:01    Post subject: Reply with quote

mrs_2005
Quote:
А можно ли при записи документа его автоматически удалять по условию и как?



Дело в том что если при приемке документов через базы удаленного склада вы положите в БД deleted.dbf Ваш документ - он будет удален
в процессе выполнения обработки документов с удаленного склада

Quote:
Сроки достаточно короткие, таких навыков пока не очень много. Но есть необходимость и желание.
В принципе я тут надумал еще один вариант.
1. Выгружаем из Общей базы ВСЕ документы. - получаем файл.
2. Разархивируем этот файл.
3. В таблицах вида _doc.dbf, _docm.dbf удаляем лишние документы по необходимому условию
4. Архивируем назад в файл.
5. Принимаем его в Правильную базу.

И похоже, что он самый быстрый для реализации. Поэтому вопрос: можно ли это реализовать через HFileEval?


Да разумеется можно. Это полноценный язык программирования, а значит имеющий все необходимые возможности для этого...
Моя рекомендация будет такой чтобы в процессе реализации данной задачи в короткий срок Вы заранее продумали и заложили дальнейшие возможности - такие как определять БД с какими выполнять данную функцию, возможность дать свой экран на котором Вы могли бы в дальнейшем по всей цепочке документов источник-копия- копия в другой БД и т.п. иметь возможность их корректировки, настройка процентов изменения цен внутри документа - тут много чего в механизм заложить - на это нужно время и желание. Подсказывать и направлять - это моя задача. Но в короткий срок нужно делать так как Вы сможете сделать это сч
Back to top
View user's profile Send private message Send e-mail
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 09 Sep 2005 11:05    Post subject: Reply with quote

А вообще я счаз работаю над "скользким" вопросом записи документа сразу в любую БД и т.п. Но об этом пока развивать тему не буду - слишком рано
Back to top
View user's profile Send private message Send e-mail
mrs_2005



Joined: 22 Jun 2005
Posts: 105
Location: Михайлов Р.С.
Occupation: ООО "Предприятие "Виктория-Юг"
Interests: г. Краснодар

PostPosted: 14 Sep 2005 16:04    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail Visit poster's website
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 14 Sep 2005 19:05    Post subject: Reply with quote

Честно говоря я видел себе это несколько иначе.
А именно - создал бы допустим удаленный склад и на нем бы создал файл архива для приема данных...
Далее бы этот файл открыл, посмотрел какие внутри таблицы, нашел бы среди них таблицу DELETED (чуть по другому звучит по-моему с подчеркиванием впереди) и просто бы из плагина воспроизвел бы сразу создание этих файлов и их упаковку в файл, чтобы осталось только запустить функцию приема этого файла. Т.е. поставил бы целью создание файла по которому производится прием с удаленного склада непосредственно.

И еще что сразу бросилось в глаза в Вашем примере - нигде не вижу DBCOMMIT()
Т.е. после завершения цикла просится deleted->( DBCOMMIT() )
Вы само содержимое БД deleted анализировали после выполнения Вашего плагина ?
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4 All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © phpBB Group

Rambler
Rambler's Top100 Рейтинг@Mail.ru