| 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 |  | 
	
		|  | 
	
		|  |