v 7.7 sql. как починить периодические реквизиты? #160997


#0 by beginner80
релиз 21. самописная конфигурация. вопрос касается периодических реквизитов и журнала расчетов.проблема проявляется в том, что запросы к журналу расчета с группировкой по периодическому реквизиту объекта ЖР возвращают результат, больший правильного в Н раз. т.е. если у человечка есть вид расчета ПоОкладу с результатом 100р и 22 дня, то запрос с отбором даже по этому единственному человечку и группировкой по периодическому реквизиту человечка возвращает 200р, 44 дня, или 300р и 66 дней. причем на дбф все считается правильно.в таблице журнала расчета все в порядке. анализ трассы sql сервера и изучение текста запросов показывает, что проблема в периодических реквизитах.если посмотреть истоию периодических реквизитов по человечку, то видно, что изменения от некоторого документа дублируются. в дбф первая строка от документа идет без времени. вторая - со временем. в sql - несколько строк со временем документа.штатное тестирование-исправление проблему не лечит. выгрузка загрузка - тоже.проявление проблемы чинится временно путем удаления из таблицы типа _1cconst лишних записей. но после проведения некоторых документов опять дублируется результат :(еще один способ лечения - перепроведение документа. при этом история периодических реквизитов становится правильной. засада в том, что документы делали записи в журнал расчетов в закрытых периодах. и при перепроведении появляются сторнировочные записи в текущем периоде, поэтому перепроводить документы не хочется.поэтому вопрос: как починить базу?
#1 by БЖ
может поможет такое:сохранить где-нибудь константы, грохнуть таблицу _1sconst, запустить тестирование.попробовать на копии!
#2 by beginner80
попробую. у кого-нить еще идеи будут?
#3 by beginner80
грохнуть таблицу _1sconst - просто ацкий совет :) есть мнение, что тестирование не восстанавливает ее содержимое.правильное лечение - удалять только явно дублирующиеся записи. например через EM. например запросом вродеFROM _1SCONST WITH (NOLOCK INDEX = IDD)ORDER BY [TIME]мы получим все движения периодических реквизитов документа с DOCID = ' xxxx 'находим явно дублирующиеся и удаляем их.ЗЫ возможно грабли есть где-то еще.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям