View previous topic :: View next topic |
Author |
Message |
Плешивцев Евгений
Joined: 03 Apr 2007 Posts: 95 Location: Плешивцев Евгений
Interests: Волгоград
|
Posted: 13 Sep 2007 15:42 Post subject: Остатки по складам при партионном учете |
|
|
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 |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 13 Sep 2007 16:35 Post subject: |
|
|
Женя за текст спасибо но в картотеке для этого есть ALT_I |
|
Back to top |
|
|
Behemoth
Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
|
Posted: 13 Sep 2007 16:39 Post subject: |
|
|
Странно, я всегда считал, что Alt-I - это иерархия. _________________ С уважением, Новиков Алексей. |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 13 Sep 2007 16:43 Post subject: |
|
|
Виноват CTRL-I |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 13 Sep 2007 16:44 Post subject: |
|
|
Кстати в номенклатурном справочнике не подписано но CTRL-I тоже
показывает суммарный остаток по номенклату |
|
Back to top |
|
|
Плешивцев Евгений
Joined: 03 Apr 2007 Posts: 95 Location: Плешивцев Евгений
Interests: Волгоград
|
Posted: 13 Sep 2007 16:47 Post subject: |
|
|
Костя, наверное [Ctrl-I] остаток по суммарной карточке, кстати работает и из номенклатурного справочника. Однако показывает остатки одного склада.
Тут же задача такая - сеть розничных магазинов, т.е. склад 1, 2,3,4,5,6... Пришел ходовой товар на центральный склад - нужно быстро посмотреть у кого сколько на остатке, сравнить. Т.е. нужна общая картина. А [Ctrl-I] работает так:
|
|
Back to top |
|
|
Плешивцев Евгений
Joined: 03 Apr 2007 Posts: 95 Location: Плешивцев Евгений
Interests: Волгоград
|
Posted: 13 Sep 2007 16:49 Post subject: |
|
|
блин, ну и долго же я пишу ответы, даже смешно
... я не тормоз.... |
|
Back to top |
|
|
Behemoth
Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
|
Posted: 13 Sep 2007 16:55 Post subject: |
|
|
nordk wrote: | Кстати в номенклатурном справочнике не подписано но CTRL-I тоже показывает суммарный остаток по номенклатуре |
Если, конечно, удастся заставить его работать. У меня не получилось.
Получается диалог, из которого можно выйти только по ESC. _________________ С уважением, Новиков Алексей. |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 13 Sep 2007 17:05 Post subject: |
|
|
Ну тогда отчет по номенклатуре по остатка и не указывать код скла |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 13 Sep 2007 17:09 Post subject: |
|
|
Вообще я что-то подобное делал для крупной розничной сети, тока остатки по фирме (т.е. по всем базам данных)
А вообще в розничной сети раскидывать так остатки это наверно
начало автоматизации. Надо учитывать местоположение магаина,
скорость продажи в каждом магазине (коэффициент обораичваемости
своя норма запаса), наличие аналогов, необходимость перебрасывать остаток с одного магазина на другой.
У меня для этого огромная система написана....
А хозяин мелкой розничной сети просил такую информацию, согласен
программка может кому-то пригодить |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 13 Sep 2007 17:12 Post subject: |
|
|
Женя не сочти вредным - сделай расчет по MDOCM.
Рассчитает быстро и точно. По картотеке бывает остаток "плывет".
Опасно доверять текущим остаткам картотеки.
По F10 в картотеке он имеет свойство пересчитывать |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 13 Sep 2007 17:14 Post subject: |
|
|
И еще рекомендации.
Пользуйся SETSCOPE()
Это рекомендация Сан Саныча.
В любой момент могут перестать поддерживать скоб в DBPUSH()
Т.е. поддерживать эту возможность никто не обещал и не
документировал |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 13 Sep 2007 17:16 Post subject: |
|
|
Behemoth wrote: | nordk wrote: | Кстати в номенклатурном справочнике не подписано но CTRL-I тоже показывает суммарный остаток по номенклатуре |
Если, конечно, удастся заставить его работать. У меня не получилось.
Получается диалог, из которого можно выйти только по ESC. |
У меня работает. SP 36 |
|
Back to top |
|
|
Плешивцев Евгений
Joined: 03 Apr 2007 Posts: 95 Location: Плешивцев Евгений
Interests: Волгоград
|
Posted: 13 Sep 2007 17:19 Post subject: |
|
|
Quote: | В любой момент могут перестать поддерживать скоб в DBPUSH() |
этот день я обведу чОрным фламастером в календаре, придется переделывать дофига работающих утилит. По моему мнению конструкция
довольно удобна и очень наглядна в исходном коде.
Более того, фрагмент моей программы (в самом конце):
Quote: | UsDataBase->(dbCloseArea()) |
наотрез не работает если не поставить эти операторные скобки. |
|
Back to top |
|
|
Титов Александр
Joined: 26 Jul 2002 Posts: 975 Location: Титов Александр Александрович Occupation: Компания БЭСТ Interests: Москва
|
Posted: 13 Sep 2007 17:35 Post subject: |
|
|
Плешивцев Евгений wrote: | Quote: | В любой момент могут перестать поддерживать скоб в DBPUSH() |
этот день я обведу чОрным фламастером в календаре, придется переделывать дофига работающих утилит. По моему мнению конструкция
довольно удобна и очень наглядна в исходном коде.
|
Эту проблему мы решили, поддержим Scope в DbPush. _________________ С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо |
|
Back to top |
|
|
|