View previous topic :: View next topic |
Author |
Message |
mrs_2005
Joined: 22 Jun 2005 Posts: 105 Location: Михайлов Р.С. Occupation: ООО "Предприятие "Виктория-Юг" Interests: г. Краснодар
|
Posted: 07 Sep 2005 14:50 Post subject: Экспорт - Импорт |
|
|
Здравствуйте.
Стоит такая задача:
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 |
|
|
mrs_2005
Joined: 22 Jun 2005 Posts: 105 Location: Михайлов Р.С. Occupation: ООО "Предприятие "Виктория-Юг" Interests: г. Краснодар
|
Posted: 07 Sep 2005 15:42 Post subject: |
|
|
Посмотрел программу БЭСТ-Утиль Интеллект-Сервис-Самара.
То что надо, но - для товаров. А нужно для материало |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 07 Sep 2005 16:25 Post subject: |
|
|
Ну Вы же понимаете что обмен документами между базами писать самоятотельно это очень даже чревато, абсолютно правильно что через возможности удаленного склада - кстати они (эти возможности) позволяют при записи документа его удалять и корректировать автоматически.
В 12-й версии есть функция через HFILEEVAL позволяющая выполнять процедуру загрузки с удаленного склада применительно к конкретной БД, я ее еще на практике не пробовал применять но думать бы начал по Вашему вопросу в этом направлении.
Еще можно задуматься над использованием XML, но в этом направлении работы по решению Вашего вопроса мне думается значительно больше будет.
А в принципе писали и полностью создание накладных в БЭСТе на HFIleEval - а значит их можно корректировать и удалять, тут главное определиться в своих навыках, сроках которые стоят и целесообразност |
|
Back to top |
|
|
mrs_2005
Joined: 22 Jun 2005 Posts: 105 Location: Михайлов Р.С. Occupation: ООО "Предприятие "Виктория-Юг" Interests: г. Краснодар
|
Posted: 08 Sep 2005 14:52 Post subject: |
|
|
Здравствуйте, Константин. Спасибо за участие.
nordk wrote: | позволяют при записи документа его удалять и корректировать автоматически.
|
А можно ли при записи документа его автоматически удалять по условию и как?
Quote: |
В 12-й версии есть функция через HFILEEVAL позволяющая выполнять процедуру загрузки с удаленного склада применительно к конкретной БД, я ее еще на практике не пробовал применять но думать бы начал по Вашему вопросу в этом направлении.
|
Сроки достаточно короткие, таких навыков пока не очень много. Но есть необходимость и желание.
В принципе я тут надумал еще один вариант.
1. Выгружаем из Общей базы ВСЕ документы. - получаем файл.
2. Разархивируем этот файл.
3. В таблицах вида _doc.dbf, _docm.dbf удаляем лишние документы по необходимому условию
4. Архивируем назад в файл.
5. Принимаем его в Правильную базу.
И похоже, что он самый быстрый для реализации. Поэтому вопрос: можно ли это реализовать через HFileEval? |
|
Back to top |
|
|
Олег Смирнов
Joined: 06 Sep 2004 Posts: 821 Location: Олег Смирнов Occupation: Раут (поганист-сисадмин) Interests: Новосибирск
|
Posted: 08 Sep 2005 15:52 Post subject: |
|
|
mrs_2005 wrote: | А можно ли при записи документа его автоматически удалять по условию и как? |
Ну, наверное, в Вашем-то случае лучше документ по условию просто не принимать
mrs_2005 wrote: | В принципе я тут надумал еще один вариант. |
Так этот вариант ничем не лучше того, что у Вас уже работает...
И реализовывать его вовсе даже не обязательно через HFileEval или вообще какие-нить плагины, а можно просто написать на FoxPro, или даже (страшно подумать... ) на Access-е...
А у моих клиентов с 1998 года работает отдельная программулька на FoxPro для прямого переноса товарных документов из одной базы в другую (почти такую же... )...
А году так в 1999-2000 я забацал программку для Новолита, которая переносила ещё и материалы - по тому же принципу (а там и разницы никакой нет - только каталоги отличаются - SCLAD\ и ZAPAS\). _________________ С уважением, Олег Р. Смирн |
|
Back to top |
|
|
ВАЛЕРИ БОНДАРЧУК
Joined: 24 Jul 2002 Posts: 20 Location: БОНДАРЧУК ВАЛЕРИЙ ИВАНОВИЧ
|
Posted: 08 Sep 2005 19:01 Post subject: |
|
|
Добрый день всем.
Один фильтр в удаленном складе - это период выгрузки.
Нужные документы передачи перебиваем на дату вперед или выходные.
Передаем документы и принимаем в нужной базе.
Это в том случае, когда даты не имеют критичного значения.
Если имеют, то перебить даты на нужные.
Второй вариант - отдельный склад. Остатки по всему предприятию сходятся, а по нужному складу нет.
Искренне с вами, Валери Бондарч |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 09 Sep 2005 10:50 Post subject: |
|
|
Олег Смирнов
Quote: | И реализовывать его вовсе даже не обязательно через HFileEval или вообще какие-нить плагины, а можно просто написать на FoxPro, или даже (страшно подумать... ) на Access-е...
А у моих клиентов с 1998 года работает отдельная программулька на FoxPro для прямого переноса товарных документов из одной базы в другую (почти такую же... )...
|
Я нисколько не сомневаюсь в Ваших способностях, но пользоваться access сейчас когда есть харбор - здесь извините но я считаю это неправильно изначально. Зачем делать какие-то сторонние окна-разработки когда все можно сделать изнутри БЭСТа да еще и на индексах dbfcdx........ Вы можете писать на фоксе - я все понимаю, в свете 98 года согласен, в свете счаз - нет, когда вы напрямую из БЭСТа через переменные памяти можете сразу с SQL таблицами работать... МЫ ОТКРЫЛИ ЭТОТ САЙТ ДЛЯ ТОГО ЧТОБЫ УЧИТЬ ЛЮДЕЙ ПРОГРАММИРОВАТЬ В HARBOUR потому что теперь ЕГО ВОЗМОЖНОСТИ ШИРОКИ ИЗНУТРИ БЭСТА а не СНАРУЖИ
А в остальном если Вы привыкли делать по-своему - это Ваше пра |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 09 Sep 2005 11:01 Post subject: |
|
|
mrs_2005 Quote: | А можно ли при записи документа его автоматически удалять по условию и как? |
Дело в том что если при приемке документов через базы удаленного склада вы положите в БД deleted.dbf Ваш документ - он будет удален
в процессе выполнения обработки документов с удаленного склада
Quote: | Сроки достаточно короткие, таких навыков пока не очень много. Но есть необходимость и желание.
В принципе я тут надумал еще один вариант.
1. Выгружаем из Общей базы ВСЕ документы. - получаем файл.
2. Разархивируем этот файл.
3. В таблицах вида _doc.dbf, _docm.dbf удаляем лишние документы по необходимому условию
4. Архивируем назад в файл.
5. Принимаем его в Правильную базу.
И похоже, что он самый быстрый для реализации. Поэтому вопрос: можно ли это реализовать через HFileEval? |
Да разумеется можно. Это полноценный язык программирования, а значит имеющий все необходимые возможности для этого...
Моя рекомендация будет такой чтобы в процессе реализации данной задачи в короткий срок Вы заранее продумали и заложили дальнейшие возможности - такие как определять БД с какими выполнять данную функцию, возможность дать свой экран на котором Вы могли бы в дальнейшем по всей цепочке документов источник-копия- копия в другой БД и т.п. иметь возможность их корректировки, настройка процентов изменения цен внутри документа - тут много чего в механизм заложить - на это нужно время и желание. Подсказывать и направлять - это моя задача. Но в короткий срок нужно делать так как Вы сможете сделать это сч |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 09 Sep 2005 11:05 Post subject: |
|
|
А вообще я счаз работаю над "скользким" вопросом записи документа сразу в любую БД и т.п. Но об этом пока развивать тему не буду - слишком рано |
|
Back to top |
|
|
mrs_2005
Joined: 22 Jun 2005 Posts: 105 Location: Михайлов Р.С. Occupation: ООО "Предприятие "Виктория-Юг" Interests: г. Краснодар
|
Posted: 14 Sep 2005 16:04 Post subject: |
|
|
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 |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 14 Sep 2005 19:05 Post subject: |
|
|
Честно говоря я видел себе это несколько иначе.
А именно - создал бы допустим удаленный склад и на нем бы создал файл архива для приема данных...
Далее бы этот файл открыл, посмотрел какие внутри таблицы, нашел бы среди них таблицу DELETED (чуть по другому звучит по-моему с подчеркиванием впереди) и просто бы из плагина воспроизвел бы сразу создание этих файлов и их упаковку в файл, чтобы осталось только запустить функцию приема этого файла. Т.е. поставил бы целью создание файла по которому производится прием с удаленного склада непосредственно.
И еще что сразу бросилось в глаза в Вашем примере - нигде не вижу DBCOMMIT()
Т.е. после завершения цикла просится deleted->( DBCOMMIT() )
Вы само содержимое БД deleted анализировали после выполнения Вашего плагина ? |
|
Back to top |
|
|
|