[ОТВЕТИТЬ]
25.04.2016 21:00
DMaslov
 
Друзья, что делать с данным крайне информативным сообщением?



В C:\SM2000\Data ничо полезного не прочитал.
25.04.2016 21:12
bob
 
Цитата:
DMaslov Друзья, что делать с данным крайне информативным сообщением?



В C:\SM2000\Data ничо полезного не прочитал.
Ну первый самый глупый вопрос - а они есть по факту в этой ведомости? А по другим ведомостям создавались?
25.04.2016 21:26
OlegON
 
Да, полагаю, что лучше было бы заскринить не ряд нулей справа, а какие-то числа в этой колонке...
25.04.2016 21:56
DMaslov
 
Цитата:
bob Ну первый самый глупый вопрос - а они есть по факту в этой ведомости? А по другим ведомостям создавались?
Токо хотел спросить "а кто это ОНИ", и меня озарило :).

Тем не менее, с разработчиков СуперМАГ ответственности это не снимает - могли бы и пояснить, что ПН/РН уже есть.

Но проблемы это не снимает. ПН/РН удалил, а сообщение все то же.
25.04.2016 22:02
bob
 
Цитата:
DMaslov Токо хотел спросить "а кто это ОНИ", и меня озарило :).

Тем не менее, с разработчиков СуперМАГ ответственности это не снимает - могли бы и пояснить, что ПН/РН уже есть.

Но проблемы это не снимает. ПН/РН удалил, а сообщение все то же.
Ну когда я имел ввиду - "ОНИ" - я хотел спросить - есть ли вообще отклонения в ведомости. Если есть, то второй вопрос - связанные документы, созданные на основании данного документа ПН и РН есть? Если нет - третий вопрос - тестово создать сличилку создать ПН и РН - создаются или нет?
25.04.2016 22:37
DMaslov
 
Цитата:
bob есть ли вообще отклонения в ведомости
В точку.

"Забыл" сообщить, что эта ведомость - выравнивание остатков в магазинной и в центральной БД. Изымаем ПН/РН, пришедшие из магазинной БД, делаем расчет остатков по данной сличилке в центральной БД, создаем по ней ПН/РН. Еще завтра какие-нить отличия Центр/магазин выявлю, не вошедшие в сличилку. И вуаля - остатки в центре и магазине сходятся. Такова задача. О возникших проблемах поговорим.
12.05.2016 15:01
DMaslov
 
К сожалению, обнаружил, что остаток на дату в СуперМАГе считается иногда неверно. Что по кнопке "остатки" в сличительной ведомости, что в отчете "остатки на дату".
Печально, что программе уже много лет, а такая элементарная арифметика страдает. Если что-то не заметил я сам, подскажите.

Поэтому уравнивать остатки в базах буду текущие, в SMGOODS, и далее - периодическая сверка баз.
12.05.2016 16:08
-Den-
 
Цитата:
DMaslov ... [URL="https://storage.olegon.ru/supermag/upload/2016/restsss1.png"]...
По двум верхним вложениям каким таким образом при отборе всего и вся вдруг появляется сличительная ведомость от 21,04,2015, фотки ЦО и МХ?
Что тогда на вкладках остатки и там и там?
12.05.2016 19:57
DMaslov
 
Начинал работать со сличилкой.:
SQL код:
------- перенос остатков в центр из магазинной БД
------- различие остатков произошло вследствие различия документов
------- выкапывать все различия документов рехнешьсяпоэтому переносим остатки

---- отменяем ПН и РНпришедшие из магазинной БД вслед за сличилкой

---- в сличилку надо добавить товарыне входящие в нее (значитв магазинной БД они по нулям), но имеющие остаток в центре
--select from smlocprices where locid 46
delete from smspec where doctype 
'RL' and docid 'СВЮГ00003' and specitem 8961


insert into smspec
select 
'RL',  'СВЮГ00003'8961+rownum8961+rownumarticle0supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0nullnull0,
       
supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), null,nullnull
from 
(
select article
  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.createdat <= to_date('25.04.2016''dd.mm.yyyy')
       and 
head.docstate in(23)
       and 
spc.article '003769'
       
and (head.location 46 or head.locationfrom 46 or head.locationto 46)
     
group by spc.article
)
where quantity != 0
minus
select article from smspec where doctype 
'RL' and docid 'СВЮГ00003'
)

insert into smspecrl
select 
'RL',  'СВЮГ00003'specitem0000
from smspec
where doctype 
'RL' and docid 'СВЮГ00003' and specitem 8961


---- затем рассчитываем остатки в сличилкесоздаем ПН и РН в центре
---- ониконечнобудут отличаться от ПН и РН в магазинной БДно по их итогам остатки должны совпасть

-- не совпадаютразбираемся
-- создаем таблицы в обеих БД

create table rest 
as
    
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.createdat <= to_date('25.04.2016''dd.mm.yyyy')
       and 
head.docstate in(23)
       and (
head.location 46 or head.locationfrom 46 or head.locationto 46)
     
group by spc.article


select rest
.articlerest.quantityrest1.quantity
from rest
rest@DBNOHT18 rest1
where rest
.article rest1.article
and rest.quantity != rest1.quantity

---- К сожалениювыяснилосьчто остаток на дату в СуперМАГе считается иногда неверноЧто по кнопке "остатки" в сличительной ведомостичто в отчете "остатки на дату".
---- 
Поэтому уравнивать остатки в базах будем текущиев SMGOODSи далее периодическая сверка баз


Далее решил с остатками на дату не работать, работать с текущими, SMGOODS. Создаем ПН и РН, в них отбираем различия.

SQL:
SQL код:
delete from smspec where doctype 'WO' and docid 'РНПЮ0000000008'
insert into smspec(doctypedocidspecitemdisplayitemarticlequantity,
                   
itemprice,
                   
totalprice,
                   
itempricenotax,
                   
totalpricenotaxitempricecurtotalpricecurcausetypecauseidcausespecitem)
select 'WO',  'РНПЮ0000000008'rownumrownumarticleabs(diff),
       
nvl(supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
nvl(abs(diff) * supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
nullnull
       
nvl(supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
nvl(abs(diff) * supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
null,nullnull

from 
(
select r2.articler1.quantityr2.quantitynvl(r2.quantity0) - nvl(r1.quantity0diff
  from smgoods r1
,
   
smgoods@DBNOHT18 r2 
   where r1
.article(+) = r2.article
   
and r1.storeloc (+) = 46
   
and r2.storeloc 46
   
and nvl(r1.quantity0) != nvl(r2.quantity0)
      )
where diff 0      
 
delete from smspec where doctype 
'WI' and docid 'ПНЮГ02810'
insert into smspec(doctypedocidspecitemdisplayitemarticlequantity,
                   
itemprice,
                   
totalprice,
                   
itempricenotax,
                   
totalpricenotaxitempricecurtotalpricecurcausetypecauseidcausespecitem)
select 'WI',  'ПНЮГ02810'rownumrownumarticleabs(diff),
       
nvl(supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
nvl(abs(diff) * supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
nullnull
       
nvl(supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
nvl(abs(diff) * supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
null,nullnull

from 
(
select r2.articler1.quantityr2.quantitynvl(r2.quantity0) - nvl(r1.quantity0diff
  from smgoods r1
,
   
smgoods@DBNOHT18 r2 
   where r1
.article(+) = r2.article
   
and r1.storeloc (+) = 46
   
and r2.storeloc 46
   
and nvl(r1.quantity0) != nvl(r2.quantity0)
      )
where diff 0      

update smdocuments set
totalsum 
= (select sum(totalpricefrom smspec where docid 'ПНЮГ02810' and doctype 'WI'),
totalsumcur = (select sum(totalpricefrom smspec where docid 'ПНЮГ02810' and doctype 'WI')
where id 'ПНЮГ02810' and doctype 'WI'

update smdocuments set
totalsum 
= (select sum(totalpricefrom smspec where docid 'РНПЮ0000000008' and doctype 'WO'),
totalsumcur = (select sum(totalpricefrom smspec where docid 'РНПЮ0000000008' and doctype 'WO')
where id 'РНПЮ0000000008' and doctype 'WO' 



Отличия цен уже скопировал прямо в SMPRICES, поскольку устал копать.

SQL:
SQL код:
insert into smprices(storelocarticlepricetypeprice)
select p2.storelocp2.article43p2.price
  from smprices p1
,
   
smprices@DBNOHT18 p2,
   
smgoods@DBNOHT18 r2
   where p1
.article (+) = p2.article
   
and p1.storeloc (+) = p2.storeloc
   
and p1.pricetype (+) = p2.pricetype
   
and p2.storeloc 46
   
and p2.pricetype 43
   
and p2.article r2.article
   
and p2.storeloc r2.storeloc
   
and r2.quantity != 0
   
and nvl(p1.price0) != nvl(p2.price0


Итого - остатки перенесены из магазина в центр.
12.05.2016 20:07
OlegON
 
Горе от ума... Вы такими идеями доломаете себе базу вконец. Где заполнение истории документов (smdoclog), где таблица налогов (smspectax)? Это навскидку.
12.05.2016 20:19
DMaslov
 
Цитата:
OlegON Где заполнение истории документов (smdoclog), где таблица налогов (smspectax)? Это навскидку.
Будет нужно - заполним.

Вы тоже далеко не первый год замужем и понимаете, что используется только часть функционала.
12.05.2016 20:21
DMaslov
 
Цитата:
-Den- По двум верхним вложениям каким таким образом при отборе всего и вся вдруг появляется сличительная ведомость от 21,04,2015, фотки ЦО и МХ?
Да, это магазин и центр. Документы отличаются. Сличилка от 21.04 подтвердила остаток, как и сличилка 25.04.

Цитата:
-Den- Что тогда на вкладках остатки и там и там?
Ключевое - по итогам документов в магазине и центре должно быть 2. А кнопка "остатки" в сличилке в центре дает 3.
12.05.2016 20:23
OlegON
 
Цитата:
DMaslov Будет нужно - заполним.
такое допустимо, если с базой работает только один человек... А так и глазом не моргнете, как отчетность не та уедет...
12.05.2016 20:37
Dim
 
Цитата:
DMaslov К сожалению, обнаружил, что остаток на дату в СуперМАГе считается иногда неверно. Что по кнопке "остатки" в сличительной ведомости, что в отчете "остатки на дату".
Печально, что программе уже много лет, а такая элементарная арифметика страдает. Если что-то не заметил я сам, подскажите.

Поэтому уравнивать остатки в базах буду текущие, в SMGOODS, и далее - периодическая сверка баз.
я бы еще сделал пересчет остатков в админском модуле
13.05.2016 08:56
-Den-
 
Цитата:
DMaslov Ключевое - по итогам документов в магазине и центре должно быть 2. А кнопка "остатки" в сличилке в центре дает 3.
"Стандартный режим работы" в программе полностью реализуем интерфейсом программы, вы, извиняюсь за выражение начинаете выпендриваться SQL (возможно вам это выгодно с точки зрения работы), но еще раз, программа считает правильно, возможно до вас уже кто то тоже "наэскюэлил", но скорее всего все еще банальней.

пс перед "махинацией наперстками", не поленитесь, воспользуйтесь хотя бы советом Dim
13.05.2016 12:12
zagmag
 
Цитата:
DMaslov К сожалению, обнаружил, что остаток на дату в СуперМАГе считается иногда неверно. Что по кнопке "остатки" в сличительной ведомости, что в отчете "остатки на дату".
Печально, что программе уже много лет, а такая элементарная арифметика страдает. Если что-то не заметил я сам, подскажите.

Поэтому уравнивать остатки в базах буду текущие, в SMGOODS, и далее - периодическая сверка баз.
Если мне не изменяет память, арифметика в отчете " остатки на дату " не страдает, а рассчитывается иным способом, почему и отличаются от циферек в "остатки".
14.05.2016 09:22
DMaslov
 
Цитата:
Dim пересчет остатков в админском модуле
Что он делает?

Как повлияет на две указанные ситуации?

Верно ли я понял, что кроме текущих остатков SMGOODS, в СуперМАГ нет других регистров остатков, и расчет на дату должен идти по документам?
14.05.2016 12:55
vdm
 
Пересчет остатков пройдет по всем документам товародвижения, запишет остатки на их основании. Полезно если кто-то мимо супермага правил спецификацию или smgoods.

Если в адм. модуле включено задание "Ежемесячный расчет остатков", то в FSREMAINS считаются остатки на конец каждого месяца. Встроенные супермаговские процедуры учитывают наличие данных в этой таблице.
14.05.2016 13:20
DMaslov
 
> Пересчет остатков пройдет по всем документам товародвижения, запишет остатки на их основании

Запишет только в SMGOODS? Или еще куда?

Если только в SMGOODS, как это повлияет на две указанные ситуации?
14.05.2016 13:24
DMaslov
 
>>> Если в адм. модуле включено задание "Ежемесячный расчет остатков", то в FSREMAINS считаются остатки на конец каждого месяца.

Нет.

select count(1) from fsremains = 0
Опции темы


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

 

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