1 (edited by kovalenko 2017-04-11 08:21:43)

Topic: Остаток по складу

Всем здравствуйте. Не подскажите, что не так. Взял из примера "Клиент-Мастер" подсчёт остатка по складу, но что-то не хочет выводить остаток. Заранее всем благодарен.

Post's attachments

Attachment icon 1.zip 507.64 kb, 374 downloads since 2017-04-11 

надо идти вперёд....

Re: Остаток по складу

kovalenko wrote:

Всем здравствуйте. Не подскажите, что не так. Взял из примера "Клиент-Мастер" подсчёт остатка по складу, но что-то не хочет выводить остаток. Заранее всем благодарен.

Если быть точным, наименование присутствует, а вот остаток-нэту. Остаток вычисляется по SQL запросу.

надо идти вперёд....

Re: Остаток по складу

kovalenko wrote:

Всем здравствуйте. Не подскажите, что не так. Взял из примера "Клиент-Мастер" подсчёт остатка по складу, но что-то не хочет выводить остаток. Заранее всем благодарен.

Люди ДОБРЫЕ АУ!!! Подскажите пожалуйста!

надо идти вперёд....

Re: Остаток по складу

kovalenko wrote:
kovalenko wrote:

Всем здравствуйте. Не подскажите, что не так. Взял из примера "Клиент-Мастер" подсчёт остатка по складу, но что-то не хочет выводить остаток. Заранее всем благодарен.

Если быть точным, наименование присутствует, а вот остаток-нэту. Остаток вычисляется по SQL запросу.

Вот сам запрос:
SELECT
parts.partName

,((SUM(quanity*(id_skladOperation=1))-SUM(quanity*(id_skladOperation=2)))  - 

ifnull((SELECT
SUM(partsApp.quanty) as result
FROM partsApp
LEFT OUTER JOIN parts ON partsApp.id_parts=parts.id
WHERE partsApp.id_parts = sklad.id_parts),0)
)


FROM sklad

LEFT OUTER JOIN parts ON sklad.id_parts=parts.id

GROUP BY parts.partName;

надо идти вперёд....

Re: Остаток по складу

Попробуйте такой запрос

SELECT 
parts.partName
  
,(                             

TOTAL( sklad.quanity * (CASE WHEN sklad.id_skladOperation = 4 THEN -1 ELSE 1 END) )

-                                   
                                        
ifnull((SELECT 
SUM(partsApp.quanty) as result 
FROM partsApp                                                 
LEFT OUTER JOIN parts ON partsApp.id_parts=parts.id       
WHERE partsApp.id_parts = sklad.id_parts),0)
)                       


FROM sklad

LEFT OUTER JOIN parts ON sklad.id_parts=parts.id
                                                               
GROUP BY parts.partName; 

обратите внимание на

id_skladOperation = 4

запись "Расход" в справочнике имеет id = 4

Dmitry.

Re: Остаток по складу

DriveSoft wrote:

Попробуйте такой запрос

SELECT 
parts.partName
  
,(                             

TOTAL( sklad.quanity * (CASE WHEN sklad.id_skladOperation = 4 THEN -1 ELSE 1 END) )

-                                   
                                        
ifnull((SELECT 
SUM(partsApp.quanty) as result 
FROM partsApp                                                 
LEFT OUTER JOIN parts ON partsApp.id_parts=parts.id       
WHERE partsApp.id_parts = sklad.id_parts),0)
)                       


FROM sklad

LEFT OUTER JOIN parts ON sklad.id_parts=parts.id
                                                               
GROUP BY parts.partName; 

обратите внимание на

id_skladOperation = 4

запись "Расход" в справочнике имеет id = 4

Уххх, спасибо. Т.е если у меня две записи приход и расход, то ID ставить 2?

надо идти вперёд....

Re: Остаток по складу

kovalenko
Достаточно знать только id записи, которая обозначает расход, т.к. только в этом случае необходимо умножать количество на -1, чтобы получилось отрицательное число при подсчете расхода.

Dmitry.

8 (edited by kovalenko 2017-04-11 13:24:30)

Re: Остаток по складу

DriveSoft wrote:

kovalenko
Достаточно знать только id записи, которая обозначает расход, т.к. только в этом случае необходимо умножать количество на -1, чтобы получилось отрицательное число при подсчете расхода.

А вы можете подсказать в моей базе? А то у меня что-то не получается. Я файл прикладывал.

надо идти вперёд....

Re: Остаток по складу

kovalenko
Что именно не получается? В вашей базе запись "Расход" в словаре skladOperation имеет id=4, просто добавьте данное поле в грид, чтобы видеть его значение.

Dmitry.

Re: Остаток по складу

DriveSoft wrote:

kovalenko
Что именно не получается? В вашей базе запись "Расход" в словаре skladOperation имеет id=4, просто добавьте данное поле в грид, чтобы видеть его значение.

Теперь понятненько))) Спасибо за помощь!

надо идти вперёд....