View previous topic :: View next topic |
Author |
Message |
Плешивцев Евгений
Joined: 03 Apr 2007 Posts: 95 Location: Плешивцев Евгений
Interests: Волгоград
|
Posted: 21 May 2007 10:31 Post subject: функция расчета остатков по складу товаров на дату |
|
|
1. добрый день, коллеги. Существует ли в БЭСТ-4+ оформленная в виде функции процедура расчета остатка по складу на дату.
Для патионного учета? Для сортового учета?
Нужно получить количество указанного товара на указанном складе на выбранную дату.
2. Может быть кто то писал сам? Поделитесь пожалуйста... |
|
Back to top |
|
|
Behemoth
Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
|
Posted: 21 May 2007 10:52 Post subject: |
|
|
Добрый день.
Сама по себе процедура расчёта проста как 2 копейки.
Требуется только определить граничные условия применения подобной процедуры. То есть, какие входные параметры этой процедуры, и каким образом, будут влиять на выборку данных.
Хотя, можно, конечно, вырезать кусок из "формирования отчётов", но, сдаётся мне, проще написать заново. _________________ С уважением, Новиков Алексей. |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 21 May 2007 11:55 Post subject: |
|
|
Сколько писал таких задач - написанные самостоятельно работали быстрее готовых. Дело в том что в БЭСТ-4 не просто функция, а
механизм расчета с учетом кучи вариантов выбора пользователем
значений во множестве различных параметров.
Вам же нужна узкая задача, под которую Вы можете подобрать
наиболее благоприятные для решения оной индексы или вообще их
отключить для сборки данных....
А само по себе решение действительно очень не сложное |
|
Back to top |
|
|
Плешивцев Евгений
Joined: 03 Apr 2007 Posts: 95 Location: Плешивцев Евгений
Interests: Волгоград
|
Posted: 24 May 2007 16:11 Post subject: |
|
|
может кому понадобится:
Code: | Function OstTov(cSclad, cGrup, cNNum, dDat)
// остаток товара на складе товара на указанную дату
// без учета партий
// в основных ед. измерения
// -> вход:
// cSclad - код склада
// cGrup - код группы товара
// cNNum - номенклатурный номер
// dDat - дата на которую расчитывается остаток
// <- выход
// nOst - количество товара на дату
Local nOst:=0
Local nBegin:=0
Local nPrih:=0
Local nRash:=0
Local dDat0:=ctod(' / / ')
NetUse("Umdocm",loadpath()+"sclad\mdocm.dbf")
// начало расчетного периода
dbPush('user','user','',{'UPPER(USER+FORM+IDENT)', upper(' '+'MAIN'+'SCL_BEG ')})
user->(dbgotop())
if user->(!eof())
dDat0:=ctod(alltrim(user->(xVal)))
endif
dbPop()
// остаток товара на начало
dbPush('mkart','mkart_sn','',{'UPPER(STATUS+SCLAD+GRUP+NNUM)',upper(' '+cSclad+cGrup+cNNum)})
mkart->(dbGoTop())
if mkart->(!Eof())
nBegin:=mkart->kol0
endif
dbPop()
// поступление / выбытие товара
dbPush('umdocm','mdocm_k','',{'UPPER(SCLAD+GRUP+NNUM+PARTIA+DTOS(DATE))', upper(cSclad+cGrup+cNNum+' '+dtos(dDat0)), upper(cSclad+cGrup+cNNum+' '+dtos(dDat))})
umdocm->(dbgotop())
if umdocm->(!Eof())
do while umdocm->(!eof())
nPrih += iif(umdocm->vid='1', umdocm->kol, 0)
nRash += iif(umdocm->vid='2', umdocm->kol, 0)
umdocm->(dbSkip())
enddo
endif()
dbPop()
umdocm->(dbclosearea())
// итого
nOst:= nBegin + nPrih - nRash
Return nOst |
|
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 24 May 2007 20:54 Post subject: |
|
|
Женя спасибо что делишься текстом с народом !!!!
А теперь немножко поворчу....
Не увлекайтесь установкой скопа в DBPUSH() это не мой совет,
это рекомендация Саныча - они это дело не обещают поддерживать.
И еще цикл это хорошо но DBEVAL() лучше и шустрее.
В данном случае смысла нет - по одной позиции, а так лучше
DBEVAL()
И в принципе Ваше решение пойдет для партионного учета если
по номенклатуре остаток считать. Тока в остатках начальных чуть подправить а так в принципе тоже самое будет.
А на самом деле спасибо что написал сюда !!! |
|
Back to top |
|
|
|