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

Остатки по складам при партионном учете
Goto page 1, 2  Next
 
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: 13 Sep 2007 15:42    Post subject: Остатки по складам при партионном учете Reply with quote

1. добрый день коллеги, в номенклатурном справочнике товаров есть замечательная кнопка [F10] - остатки товара по складам и в случае партионного учета, по партиям. Примерно так:

но вот, если партий много, то вычислить остаток товара на складе уже затруднение, нужно партии суммировать вручную.

Для облегчения разработана функция пользователя:
Code:
//-------------------------------------------------------
// Расчет и вывод на печать остатков по складам
// из номенклатурного справочника.
// Аналог [F10] в номенклатурном справочнике.
// свернуто по партиям

// вер. 1.0 от 12/09/07
// разработано для Б-4+ 12.01 harbour

// вызывается из номенклатурного справочника

Function user_ostat_nomspr()
Local cGrup:=''
Local cNNum:=''
Local cSclad:=''
Local aStru:={}
Local aBuf:={'',0}
Local cDataBase:=''
Local aMsg:={}
Local cName:=''
Local nSum_Kol:=0

Altd()

dbPush()
cGrup:=mlabel->Grup
cNNum:=mlabel->NNum
cName:=Alltrim(Mlabel->Name)+'; '+alltrim(mlabel->Marka)+'; '+alltrim(mlabel->Razmer)


// таблица UsDataBase для группировки кол-ва по складам
aAdd(aStru,{"Sclad","C",6,0})
aAdd(aStru,{"Kol"  ,"N",9,3})

  cDataBase:=TEMPFILE(GlobalTmpPath,"dbf")
  DBCreate(cDataBase,aStru)
  NetUse("UsDataBase",cDataBase)

// заполним таблицу UsDataBase
dbPush('mkart','mkart','Empty(mkart->partia)=.t.',{'Upper(Grup+NNum)', Upper(cGrup+cNNum)})
  mkart->(dbGoTop())
  if mkart->(!Eof())
    do while mkart->(!Eof())
          aBuf[1]:= mkart->Sclad
          aBuf[2]:= mkart->KolTek
          UsDataBase->(AddRec())
           UsDataBase->(Gather(aBuf))
          UsDataBase->(dbUnLock())
      mkart->(dbSkip())
    enddo
  endif
dbPop()

Sum UsDataBase->Kol to nSum_kol
// вывод на печать
aAdd(aMsg, 'Остатки товара '+cName)
aAdd(aMsg, '----------------------')
aAdd(aMsg, '| Склад  | Количество|')
aAdd(aMsg, '----------------------')
UsDataBase->(dbEval({|| aAdd(aMsg,'| '+UsDataBase->Sclad+' | '+str(UsDataBase->Kol,9,3)+' |')}))
aADD(aMsg, '----------------------')
aAdd(aMsg, '|Итого   | '+str(nSum_Kol,9,3)+' |')

View(aMsg)

UsDataBase->(dbCloseArea())
dbPop()

return nil


а вот результат работы:


а вызов функции я повесил на [Ctrl-F7]:


Last edited by Плешивцев Евгений on 13 Sep 2007 17:10; edited 1 time in total
Back to top
View user's profile Send private message
nordk



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

PostPosted: 13 Sep 2007 16:35    Post subject: Reply with quote

Женя за текст спасибо но в картотеке для этого есть ALT_I
Back to top
View user's profile Send private message Send e-mail
Behemoth



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

PostPosted: 13 Sep 2007 16:39    Post subject: Reply with quote

Странно, я всегда считал, что Alt-I - это иерархия.
_________________
С уважением, Новиков Алексей.
Back to top
View user's profile Send private message Send e-mail
nordk



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

PostPosted: 13 Sep 2007 16:43    Post subject: Reply with quote

Виноват CTRL-I
Back to top
View user's profile Send private message Send e-mail
nordk



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

PostPosted: 13 Sep 2007 16:44    Post subject: Reply with quote

Кстати в номенклатурном справочнике не подписано но CTRL-I тоже
показывает суммарный остаток по номенклату
Back to top
View user's profile Send private message Send e-mail
Плешивцев Евгений



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

Interests: Волгоград

PostPosted: 13 Sep 2007 16:47    Post subject: Reply with quote

Костя, наверное [Ctrl-I] остаток по суммарной карточке, кстати работает и из номенклатурного справочника. Однако показывает остатки одного склада.
Тут же задача такая - сеть розничных магазинов, т.е. склад 1, 2,3,4,5,6... Пришел ходовой товар на центральный склад - нужно быстро посмотреть у кого сколько на остатке, сравнить. Т.е. нужна общая картина. А [Ctrl-I] работает так:
Back to top
View user's profile Send private message
Плешивцев Евгений



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

Interests: Волгоград

PostPosted: 13 Sep 2007 16:49    Post subject: Reply with quote

блин, ну и долго же я пишу ответы, даже смешно
... я не тормоз....
Back to top
View user's profile Send private message
Behemoth



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

PostPosted: 13 Sep 2007 16:55    Post subject: Reply with quote

nordk wrote:
Кстати в номенклатурном справочнике не подписано но CTRL-I тоже показывает суммарный остаток по номенклатуре

Если, конечно, удастся заставить его работать. У меня не получилось.
Получается диалог, из которого можно выйти только по ESC.
_________________
С уважением, Новиков Алексей.
Back to top
View user's profile Send private message Send e-mail
nordk



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

PostPosted: 13 Sep 2007 17:05    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: 13 Sep 2007 17:09    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: 13 Sep 2007 17:12    Post subject: Reply with quote

Женя не сочти вредным - сделай расчет по MDOCM.
Рассчитает быстро и точно. По картотеке бывает остаток "плывет".
Опасно доверять текущим остаткам картотеки.
По F10 в картотеке он имеет свойство пересчитывать
Back to top
View user's profile Send private message Send e-mail
nordk



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

PostPosted: 13 Sep 2007 17:14    Post subject: Reply with quote

И еще рекомендации.
Пользуйся SETSCOPE()
Это рекомендация Сан Саныча.
В любой момент могут перестать поддерживать скоб в DBPUSH()
Т.е. поддерживать эту возможность никто не обещал и не
документировал
Back to top
View user's profile Send private message Send e-mail
nordk



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

PostPosted: 13 Sep 2007 17:16    Post subject: Reply with quote

Behemoth wrote:
nordk wrote:
Кстати в номенклатурном справочнике не подписано но CTRL-I тоже показывает суммарный остаток по номенклатуре

Если, конечно, удастся заставить его работать. У меня не получилось.
Получается диалог, из которого можно выйти только по ESC.


У меня работает. SP 36
Back to top
View user's profile Send private message Send e-mail
Плешивцев Евгений



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

Interests: Волгоград

PostPosted: 13 Sep 2007 17:19    Post subject: Reply with quote

Quote:
В любой момент могут перестать поддерживать скоб в DBPUSH()


этот день я обведу чОрным фламастером в календаре, придется переделывать дофига работающих утилит. По моему мнению конструкция
Quote:
dbPush()
dbPop()

довольно удобна и очень наглядна в исходном коде.

Более того, фрагмент моей программы (в самом конце):
Quote:
UsDataBase->(dbCloseArea())


наотрез не работает если не поставить эти операторные скобки.
Back to top
View user's profile Send private message
Титов Александр



Joined: 26 Jul 2002
Posts: 975
Location: Титов Александр Александрович
Occupation: Компания БЭСТ
Interests: Москва

PostPosted: 13 Sep 2007 17:35    Post subject: Reply with quote

Плешивцев Евгений wrote:
Quote:
В любой момент могут перестать поддерживать скоб в DBPUSH()


этот день я обведу чОрным фламастером в календаре, придется переделывать дофига работающих утилит. По моему мнению конструкция
Quote:
dbPush()
dbPop()

довольно удобна и очень наглядна в исходном коде.

Эту проблему мы решили, поддержим Scope в DbPush.
_________________
С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4 All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
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