Главная
Новый форум
 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
Плешивцев Евгений



Joined: 03 Apr 2007
Posts: 95
Location: Плешивцев Евгений

Interests: Волгоград

PostPosted: 21 May 2007 10:31    Post subject: функция расчета остатков по складу товаров на дату Reply with quote

1. добрый день, коллеги. Существует ли в БЭСТ-4+ оформленная в виде функции процедура расчета остатка по складу на дату.
Для патионного учета? Для сортового учета?
Нужно получить количество указанного товара на указанном складе на выбранную дату.
2. Может быть кто то писал сам? Поделитесь пожалуйста...
Back to top
View user's profile Send private message
Behemoth



Joined: 15 Mar 2002
Posts: 155
Location: Новиков Алексей Юрьевич
Occupation: ПБОЮЛ
Interests: Пермь

PostPosted: 21 May 2007 10:52    Post subject: Reply with quote

Добрый день.

Сама по себе процедура расчёта проста как 2 копейки.
Требуется только определить граничные условия применения подобной процедуры. То есть, какие входные параметры этой процедуры, и каким образом, будут влиять на выборку данных.
Хотя, можно, конечно, вырезать кусок из "формирования отчётов", но, сдаётся мне, проще написать заново.
_________________
С уважением, Новиков Алексей.
Back to top
View user's profile Send private message Send e-mail
nordk



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

PostPosted: 21 May 2007 11:55    Post subject: Reply with quote

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



Joined: 03 Apr 2007
Posts: 95
Location: Плешивцев Евгений

Interests: Волгоград

PostPosted: 24 May 2007 16:11    Post subject: Reply with quote

может кому понадобится:
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
View user's profile Send private message
nordk



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

PostPosted: 24 May 2007 20:54    Post subject: Reply with quote

Женя спасибо что делишься текстом с народом !!!!
А теперь немножко поворчу....
Не увлекайтесь установкой скопа в DBPUSH() это не мой совет,
это рекомендация Саныча - они это дело не обещают поддерживать.

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

А на самом деле спасибо что написал сюда !!!
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