Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Исправление "вручную" в таблице "остатки" регистра остатков. (число прочтений - 3883 )
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Исправление "вручную" в таблице "остатки" регистра остатков.
15. Ноября 2010 :: 06:38
Печать  
Имею кривой остаток в регистре ОстаткиТМЦ:
Код
Выбрать все
 НачОст | Приход | Расход | КонОст
     0	|     1	|	1     |    1
 

(MS SQL2000, распределённая ТиС, база весит около 15Г).
Раньше в таких ситуациях помогал пересчет итогов с последующей индексацией.
Но у этого способа есть минус - огромные выгрузки в распределённые базы.
Чем чревато ручное изменение этого значения в таблице регистра? Какие могут быть последствия?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Исправление "вручную" в таблице "остатки" регистра остатков.
Ответ #1 - 15. Ноября 2010 :: 06:45
Печать  
al_zzz писал(а) 15. Ноября 2010 :: 06:38:
Чем чревато ручное изменение этого значения в таблице регистра? Какие могут быть последствия?

Созданием аналогичной кривости в других местах, ибо само наличие кривости говорит о глобальном нарушении данных, что исправлять надо централизовано, а не локально.
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Исправление "вручную" в таблице "остатки" регистра остатков.
Ответ #2 - 15. Ноября 2010 :: 07:15
Печать  
Dmitry The Wing писал(а) 15. Ноября 2010 :: 06:45:
...созданием аналогичной кривости в других местах...

Вот в этом месте можно поподробнее. А точнее, какие кривости могут создаться, если я это значение поправлю?
Практика показала, что такая локальная кривость, как у меня, может висеть очень долго до выявления других таких же не состыковок. Делать каждый раз пересчет не могу(объяснил уже почему).
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Исправление "вручную" в таблице "остатки" регистра остатков.
Ответ #3 - 15. Ноября 2010 :: 07:21
Печать  
al_zzz писал(а) 15. Ноября 2010 :: 07:15:
Dmitry The Wing писал(а) 15. Ноября 2010 :: 06:45:
...созданием аналогичной кривости в других местах...

Вот в этом месте можно поподробнее. А точнее, какие кривости могут создаться, если я это значение поправлю?
Практика показала, что такая локальная кривость, как у меня, может висеть очень долго до выявления других таких же не состыковок. Делать каждый раз пересчет не могу(объяснил уже почему).  

Если ты считаешь себя гением, способным обнаружить абсолютно все кривости в итогах, то вперед! Но по собственному опыту знаю, что итоги никогда не слетают локально в одном каком-то месте. Если они слетели - то это задевает обычно процентов 90 итоговых таблиц, если не все 100.
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Исправление "вручную" в таблице "остатки" регистра оста
Ответ #4 - 15. Ноября 2010 :: 08:03
Печать  
Кривости целенаправленно не ищу. Их приносят пользователи, ищу другие кривости целенаправленно только после этого.
На счет 90-100% кривостей в итогах ничего не могу ответить, так как с такими вещами за пять лет никогда не сталкивался...
Обычно возникали 1 раз в полгода или того реже. Пересчитывал регистры только если кривость была критична(например, по кассе). Остальные (например, остаток не очень ликвидного товара в одном из магазинов) так и висели до следующей критичной.
Интересно, на чем вы, Dmitry The Wing работаете и как часто пересчитываете?
Я, наверное, неправильно сформулировал вопрос.
Какие последствия могут быть от ручного изменения в таблице остатки регистра остатков?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Исправление "вручную" в таблице "остатки" регистра остатков.
Ответ #5 - 15. Ноября 2010 :: 08:19
Печать  
(0) не мог ошибтться в самом отчете ?

Если и правда ошибка в итоговых таблицах исправь ее и все.
Тем более если исправить только количество ( значение реквизита ) то от этого точно хуже не станет.
Только я бы советовал проверить по конкретно
выявленной комбинации измерений
проверить все для всех
периодов ( начиная с самых ранних ) соответсвие ra и rg
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Исправление "вручную" в таблице "остатки" регистра оста
Ответ #6 - 15. Ноября 2010 :: 09:25
Печать  
На самом деле ошибки подобные встречаются нечасто, но ... если такая проблема возникла - то она очень редко задевает лишь одну-две записи. Обычно получается массовый сбой по всей таблице итогов, закономерности которого понять не удалось (цифру получить смог, но понять, как она сформировалась - нет {последний раз специально пытался посчитать - в движениях были только списания, но в итоги попала сумма всех списаний за минусом одного из них}).
У меня такая ошибка возникла только 1 раз за полтора года, но за две недели, пока она не была обнаружена, - успело провестись немало документов, которые просто не смогли бы этого сделать, будь итоги верными.
Производство круглосуточное... движения совершаются часто...
  
Наверх
 
IP записан
 
Leierkastenmann
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 114
Зарегистрирован: 30. Марта 2007
Re: Исправление "вручную" в таблице "остатки" регистра остатков.
Ответ #7 - 15. Ноября 2010 :: 10:00
Печать  
Мне кажется необязательно исправлять централизованно, по моему опыту бывало такое, что в одной базе регистр "искривлен", тогда как в другой все хорошо.
Это можно делать без всяких выгонов пользователей, длительных и муторных пересчетов итогов и автоматизированно. С периодичностью проверяются регистры и выявляются как уже писали выше комбинации измерений, по которым несоответствие итогов и движений. И только по этим комбинациям производится пересчет, производится обычными sql-запросами по типу того как это делает сама 1ска, можно даже ее процедуры использовать _1sp_RA****_ClearRecalcDocActs. Если есть опасения, что кто-то в это же время будет проводить документы, то можно просто в начале пересчета поставить блокировку, по времени такой выборочный пересчет будет работать быстрее, чем пересчитывать все.
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Исправление "вручную" в таблице "остатки" регистра оста
Ответ #8 - 15. Ноября 2010 :: 11:22
Печать  
Leierkastenmann писал(а) 15. Ноября 2010 :: 10:00:
Мне кажется необязательно исправлять централизованно, по моему опыту бывало такое, что в одной базе регистр "искривлен", тогда как в другой все хорошо.
Это можно делать без всяких выгонов пользователей, длительных и муторных пересчетов итогов и автоматизированно. С периодичностью проверяются регистры и выявляются как уже писали выше комбинации измерений, по которым несоответствие итогов и движений. И только по этим комбинациям производится пересчет, производится обычными sql-запросами по типу того как это делает сама 1ска, можно даже ее процедуры использовать _1sp_RA****_ClearRecalcDocActs. Если есть опасения, что кто-то в это же время будет проводить документы, то можно просто в начале пересчета поставить блокировку, по времени такой выборочный пересчет будет работать быстрее, чем пересчитывать все.

Можете поподробнее написать, как это делается. Ато я в SQL не силен. Как я понимаю, нужно когда пользователей не будет хранимую процедуру(_1sp_RA****_ClearRecalcDocActs) в QA запустить и всё? Или ещё что-то?
Как запустить по нужным измерениям?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Исправление "вручную" в таблице "остатки" регистра оста
Ответ #9 - 15. Ноября 2010 :: 11:32
Печать  
al_zzz писал(а) 15. Ноября 2010 :: 11:22:
Leierkastenmann писал(а) 15. Ноября 2010 :: 10:00:
Мне кажется необязательно исправлять централизованно, по моему опыту бывало такое, что в одной базе регистр "искривлен", тогда как в другой все хорошо.
Это можно делать без всяких выгонов пользователей, длительных и муторных пересчетов итогов и автоматизированно. С периодичностью проверяются регистры и выявляются как уже писали выше комбинации измерений, по которым несоответствие итогов и движений. И только по этим комбинациям производится пересчет, производится обычными sql-запросами по типу того как это делает сама 1ска, можно даже ее процедуры использовать _1sp_RA****_ClearRecalcDocActs. Если есть опасения, что кто-то в это же время будет проводить документы, то можно просто в начале пересчета поставить блокировку, по времени такой выборочный пересчет будет работать быстрее, чем пересчитывать все.

Можете поподробнее написать, как это делается. Ато я в SQL не силен. Как я понимаю, нужно когда пользователей не будет хранимую процедуру(_1sp_RA****_ClearRecalcDocActs) в QA запустить и всё? Или ещё что-то?
Как запустить по нужным измерениям?

ну раз не силен в sql  то напиши всю проверку сначала
через Объект("Регистр")
Убедись что то о чем пишешь в subj  ловится через Объект("Регистр")  ( для конкретного набора измерений). после того как это получиться то можно будет давать следующие советы.
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Исправление "вручную" в таблице "остатки" регистра оста
Ответ #10 - 15. Ноября 2010 :: 11:49
Печать  
Z1 писал(а) 15. Ноября 2010 :: 11:32:
ну раз не силен в sql  то напиши всю проверку сначала
через Объект("Регистр")
Убедись что то о чем пишешь в subj  ловится через Объект("Регистр")  ( для конкретного набора измерений). после того как это получиться то можно будет давать следующие советы.

Не на столько уж не силен.  Улыбка Прямыми запросами обороты и остатки я получить могу. Получил уже: (во вложении)
Что с ним дальше делать?
  

________002.rar ( 4 KB | Загрузки )

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Исправление "вручную" в таблице "остатки" регистра оста
Ответ #11 - 15. Ноября 2010 :: 12:08
Печать  
al_zzz писал(а) 15. Ноября 2010 :: 11:49:
Z1 писал(а) 15. Ноября 2010 :: 11:32:
ну раз не силен в sql  то напиши всю проверку сначала
через Объект("Регистр")
Убедись что то о чем пишешь в subj  ловится через Объект("Регистр")  ( для конкретного набора измерений). после того как это получиться то можно будет давать следующие советы.

Не на столько уж не силен.  Улыбка Прямыми запросами обороты и остатки я получить могу. Получил уже: (во вложении)
Что с ним дальше делать?

ну вот Вам нужно найти период с которого это все начинается и
разобраться что именно не так в этом периоде.После этого скоректировать
все периоды от того периода до периода ТА ( Естественно по заданному набору измерений).


  
Наверх
 
IP записан
 
Leierkastenmann
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 114
Зарегистрирован: 30. Марта 2007
Re: Исправление "вручную" в таблице "остатки" регистра оста
Ответ #12 - 15. Ноября 2010 :: 12:29
Печать  
al_zzz писал(а) 15. Ноября 2010 :: 11:22:
Leierkastenmann писал(а) 15. Ноября 2010 :: 10:00:
Мне кажется необязательно исправлять централизованно, по моему опыту бывало такое, что в одной базе регистр "искривлен", тогда как в другой все хорошо.
Это можно делать без всяких выгонов пользователей, длительных и муторных пересчетов итогов и автоматизированно. С периодичностью проверяются регистры и выявляются как уже писали выше комбинации измерений, по которым несоответствие итогов и движений. И только по этим комбинациям производится пересчет, производится обычными sql-запросами по типу того как это делает сама 1ска, можно даже ее процедуры использовать _1sp_RA****_ClearRecalcDocActs. Если есть опасения, что кто-то в это же время будет проводить документы, то можно просто в начале пересчета поставить блокировку, по времени такой выборочный пересчет будет работать быстрее, чем пересчитывать все.

Можете поподробнее написать, как это делается. Ато я в SQL не силен. Как я понимаю, нужно когда пользователей не будет хранимую процедуру(_1sp_RA****_ClearRecalcDocActs) в QA запустить и всё? Или ещё что-то?
Как запустить по нужным измерениям?


Последовательность действий приблизительно такая:
1. Определить самую раннюю дату, по которой начинаются расхождения. Это запрос, который из движений выбирает по всем изменениям с одним знаком, из остатков с противоположным, суммируется и берутся те наборы измерений, где сумма ненулевая.
2. Тут возможны варианты, если пользоваться той процедурой, которую я написал, то это надо для наборов измерений  получить все документы, которые стоят после той самой ранней даты расхождений и последовательно все эти документы пройти этой процедурой. Естественно, что итоги по этим комбинациям измерений должны быть обнулены. По сути это почти то же самое, что сделать весь список этих документов сначала непроведенными, потом провести.
Второй вариант - это написать другую процедуру, которая по набору измерений будет за каждый период получать изменения движений и вписывать их в остатки. Собственно если напишете запрос для п.1, то написать запрос для этого варианта особого труда уже не составит.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать