[ОТВЕТИТЬ]
Опции темы
09.11.2015 11:53  
DMaslov
Обнаружил такое.

Очевидная причина - кривизна рук программиста. Чего-то полез править, и недоправил.

Но, может, кто подскажет какие-то штатные (без залезания в БД руками) ситуации, когда такое получается.

SQL код:
select rest_doc.articlerest_doc.quantitysmgoods.quantity
  from 
(
select spc.articlenvl(sum(
                               
decode(head.doctype,
                                      
'WI'spc.quantity,
                                      
'CR'spc.quantity,
                                      
'CS', -spc.quantity,
                                      
'WO', -spc.quantity,
                                      
0
                                     
)
                           ), 
0
                       
quantity
 
  from smdocuments head
smspec spc
 where head
.doctype spc.doctype
   
and head.id spc.docid
   
and (head.location or head.locationfrom or head.locationto 6)
 
group by spc.article
       
rest_docsmgoods
 where rest_doc
.article smgoods.article
   
and smgoods.storeloc 6
   
and rest_doc.quantity != smgoods.quantity 
 
09.11.2015 11:58  
Mtirt
А вы уверены, что все документы движения товара учли?
Нет перемещений? Нет производства?
 
09.11.2015 17:05  
DMaslov
Просто так я проверять не взялся бы, разумеется. Заметили по некоторым артикулам такое расхождение, и мне сообщили.

SQL код:
select head.doctypeap.appnamecount(1)
  
from smdocuments headssdoctypes dtsmclientapps ap
 where head
.doctype dt.doctype
   
and dt.appmodule ap.id
 group by head
.doctypeap.appname 
 
09.11.2015 17:11  
Mtirt
Штатно, увы, уже много лет остатки не разбегаются...
Кстати, в исходном запросе статусы документов учитываются? Неужели нет заблокированных или в черновике приходов/расходов?
Штатная процедура наведения порядка находится в адм.модуле и называется "Перерасчет остатков".
 
"Спасибо" Mtirt от:
09.11.2015 17:13  
OlegON
"Не смешно, зато про войну" :)
Вопрос-то был, что в первом запросе учитываются, например, не все документы товародвижения. Сравнивать теплое с мягким нет смысла.
Для начала прогоните перерасчет остатков в этом месте хранения, чтобы не ломать голову, что, кто и где там напортачил.
А потом сядьте узким кругом принимающих решение лиц и определитесь, зачем вам такой геморрой с ручной заменой шестеренок на ходу.
 
09.11.2015 17:29  
DMaslov
> Неужели нет заблокированных или в черновике приходов/расходов?

Это забыл учесть, спасибо.

> Вопрос-то был, что в первом запросе учитываются, например, не все документы товародвижения.

И на него был дан ответ вторым запросом. Если я что-то упустил - укажите, что.

> прогоните перерасчет остатков в этом месте хранения, чтобы не ломать голову, что, кто и где там напортачил.

По сути, мой запрос, с напильником, решает ту же задачу.

> Штатно, увы, уже много лет остатки не разбегаются...

Ясно.
 
09.11.2015 17:38  
Mtirt
Цитата:
Сообщение от DMaslov

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

С изменениями скриптами smgoods я бы поступала поосторожнее.
Там еще ожидаемое количество есть, которое меняется заказами и приходами. Еще и его можно "порушить". А еще, что будет, если кто-то во время изменения остаток надумает исправить документ?

Штатный перерасчет остатков избавляет от проблем в smgoods в основном потому, что делается при монопольном доступе к базе.

Ну и хорошо бы сделать ревизию всего собственного кода на предмет выявления источника расхождения остатков.
 
09.11.2015 17:39  
Mtirt
Цитата:
Сообщение от OlegON
"Не смешно, зато про войну" :)
Вопрос-то был, что в первом запросе учитываются, например, не все документы товародвижения.
Судя по второму запросу и перчисленным типам документов учитываются все имеющиеся в базе.
 
09.11.2015 18:31  
DMaslov
Цитата:
Сообщение от Mtirt
Не решает, так как статусы документов не учитывает.
С напильником, head.docstate = 3, и блокировки.

Цитата:
делается при монопольном доступе к базе.
Да, я уже понял, что у СуперМАГа - это решение всех проблем.
 
09.11.2015 19:03  
OlegON
Цитата:
Сообщение от DMaslov
Да, я уже понял, что у СуперМАГа - это решение всех проблем.
Надо отметить, что проблема в большинстве случаев только одна - кривые руки, полагающие, что если что-то крутится, то это обязательно надо покрутить :)
 
 


Опции темы



Часовой пояс GMT +3, время: 17:38.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.