Имя: Пароль:
1C
1C 7.7
v7: Битые записи регистра
,
0 Bagirius
 
05.12.13
12:07
Есть удаленный документ, по которому остались движения регистра. Понимаю, что нетипичная ситуация, но вот заставил я 1С глючить.
Ситуация такая:
1. Документ помечен на удаление, но движения в регистре остались
2. Принудительно удалил документ из базы, движения где-то остались. (Запросами дает данные, что есть резерв. Регистр.РезервыТоваров)
3. Если запускать тестирование и исправление, то все исправляется, но тестирование продолжается ОЧЕНЬ долго.
База на SQL2K, конфигурация самописная.

Как можно удалить битые записи в регистре не использую конфигуратор (тестирование и исправление)
1 mikecool
 
05.12.13
12:08
найти записи по ид документа, удалить
2 КонецЦикла
 
05.12.13
12:09
delete from raxxxx where ...
Потом от той точки итоги пересчитать
3 КонецЦикла
 
05.12.13
12:09
еще в журнале почистить если есть признаки проведенности
4 Bagirius
 
05.12.13
12:10
(1) вот как найти, и где найти? :-(. Может есть готовые решения?
5 Bagirius
 
05.12.13
12:11
(1) По идее, надо удалить все из движения регистра + из итогов регистра
6 ДенисЧ
 
05.12.13
12:11
(4) select iddoc
from ra**** r
left join _1sjourn j
on r.iddoc = j.iddoc
where j.iddoc IS NULL
7 Bagirius
 
05.12.13
12:12
что-бы база совсем не легла после таких манипуляций
8 Bagirius
 
05.12.13
12:12
(6) к сожалению далек я от SQL
9 mikecool
 
05.12.13
12:13
(8) тогда делай ТиИ и не парь мозг
10 Bagirius
 
05.12.13
12:13
Хотя есть у меня 1с++
может прямым запросам чикнуть все косяки
11 AeDen
 
05.12.13
12:14
(10) А в (6) что написано?
12 AeDen
 
05.12.13
12:15
И, кстати, надо выяснить причину такого поведения базы, иначе рискуешь с каждым документом потом такое получить.
13 КонецЦикла
 
05.12.13
12:23
(10) Так у тебя SQL
Не обязательно 1С++, можно это в QA сделать
Для начала найти документ типа как в (6)

Попробуй на копии если боишься
14 Bagirius
 
05.12.13
12:45
Какой иддок? если он удален
как его определить?
15 КонецЦикла
 
05.12.13
12:48
Док помечен на удаление, значит в журнале он есть

select iddoc from _1sjourn where docno = '45454' and ismark = 1 and date_time_iddoc between '20131205' and '20131205Z'

Если даст несколько записей - посмотреть и выбрать
16 Bagirius
 
05.12.13
12:49
Такой вопрос?
Если я:
1. расформирую все резервы
2. зайду в таблицу raxxxx, и удалю от туда все записи (они по идее и есть битые)
3. удалю все записи в rgxxxx

По идее все исправится.

ЗЫ: Движений по регистру в прошлых периодах не бывает. При открытии периода все резервы переносятся в новый период.

Глюк в регистре остатков "РезервыТоваров"
17 Bagirius
 
05.12.13
12:49
(15) Я принудительно Удалить(1) удалил док, в надежде что поможет :-)
18 КонецЦикла
 
05.12.13
12:52
(17)
delete from raxxx
where iddoc not in (select iddoc from _1sjourn (nolock))

потом пересчет итогов
19 МихаилМ
 
05.12.13
12:54
(18)
проще пересчитать итоги при удалении запросом.
20 КонецЦикла
 
05.12.13
12:55
(19) Да, но... принимая во внимание (8)
21 Bagirius
 
05.12.13
13:08
в (18) Сделал, удалилось 390 записей. СПАСИБО!!!
Пересчитать итоги не из конфигуратора, конкретно по 1 регистру можно?
22 ADirks
 
05.12.13
13:17
(21) есть такая штука - УстановкаТА
http://www.1cpp.ru/forum/YaBB.pl?num=1200398366
23 КонецЦикла
 
05.12.13
13:18
(22) да, даже немонопольно можно
24 Z1
 
05.12.13
14:26
(0,4) на инфостарте есть моя обработка
"Поиск Ошибок в Регистрах"
прогони через обработку базу.
25 Bagirius
 
05.12.13
20:14
(18) - так и сделал, все ОК!!!

Спасибо
26 Z1
 
05.12.13
22:20
(0) Проверь не должно быть также строк
select *  from _1sjourn
where rfxxx = 1
and  iddoc not in (select iddoc from  raxxx )