Модератор
Всего сообщений: 235
Дата регистрации: 05.11.2008
|
Создано:
20.04.2009 15:45:48
|
Уже было три обращения от пользователей, связанных с тем, что по какой-то непонятной причине в версии 6666 начинают задваиваться проводки с двойной аналитикой (аналитикой по кредиту) в случае просмотра ЖХО через отчеты (в частности, журнал расчетов с партнерами). К сожалению мы у себя глюк воспроизвести не можем, но предполагаем, что это связано с ошибочным FK на таблице jdog.
Всем рекомендую выполнить лечилку:
ALTER TABLE "DBA"."jdog"
DELETE FOREIGN KEY "JDOG__ID";
ее нужно выполнять в однопользовательском режиме через интерактивный SQL.
Вроде бы после выполнения этой команды ошибка перестает проявляться.
|
Модератор
Всего сообщений: 235
Дата регистрации: 05.11.2008
|
Создано:
21.04.2009 17:51:34
|
К сожалению указанная в предыдущем сообщении лечилка не до конца исправляет ситуацию. Поэтому всем тем, у кого установлены версии 9.0.5 или 9.0.6 (6867) нельзя редактировать связанные проводки (с двойной аналитикой) в ЖХО, который открывается из отчетов по кнопке ЖХО. Иначе после редактирования будет возникать еще одна паразитная проводка. Связанные проводки можно редактировать только в ЖХО, который открыт по пункту меню "Журнал хозяйственных операций". Завтра-послезавтра на сайте будет новая версия, где указанной проблемы не будет и тогда я напишу лечилку, как удалить уже сформированные паразитные проводки.
К сожадению эта проблема нашей платформы и уследить за этой ошибкой мы не смогли.
Извиняюсь за причиненные неудобства.
|
Модератор
Всего сообщений: 235
Дата регистрации: 05.11.2008
|
Создано:
22.04.2009 16:35:33
|
|
Удалось исправить эту непрятную ошибку. Релиз выйдет сегодня-завтра. Для удаления образоваашихся лишних проводок с двойной аналитикой необходимо выполнить запрос:
Drop trigger xoz."Del_combined";
Delete xoz
FROM xoz
left outer join (SELECT min(id) a FROM xoz WHERE id_combined_trans > 0 group by id_combined_trans, whos_analit
having whos_analit = 'C') as cred on (xoz.id = cred.a)
left outer join (SELECT min(id) b FROM xoz WHERE id_combined_trans > 0 group by id_combined_trans, whos_analit
having whos_analit = 'D') as deb on (xoz.id = deb.b)
WHERE id_combined_trans > 0 and
whos_analit in ('C', 'D') and
(cred.a is null and deb.b is null);
CREATE TRIGGER "Del_combined".Del_combined after delete order 1 on DBA.xoz
referencing old as old_name
for each row
when(IsNull(old_name.id_combined_trans,0) <> 0)
begin
delete from xoz where id_combined_trans = old_name.id_combined_trans
end
Выполнять запрос желательно в однопользовательском режиме. Мы вставили эту лечилку в процедуру обновления, так что все, кто обновится на новый релиз лишние проводки почистятся автоматом.
Еще раз приношу наши извинения за ошибку.
|