Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
VSV056 Участник - экстремал
Вступление в Клуб: 25.11.2010
|
Вт Июн 06, 2017 09:54  Дублирование документов в выписке |
|
Полезность: Нет оценки
|
Коллеги, доброго дня!
Сталкивались ли вы с ситуацией, когда в выписке один и тот же документ оказался отраженным несколько раз, либо оказывался непроведенный/ликвидированный документ.
Каковы были причины в вашем случае? |
|
 |
Mourinjo Участник со стажем
Вступление в Клуб: 21.12.2010
|
Вт Июн 06, 2017 10:49   |
|
Полезность: Нет оценки
|
Да, сталкивались с такой проблемой (кассир и зав кассы одновременно проводили один и тот же документ), что в выписке отражается один и тот же документ. Решали проблемой запуском простой операции "Пересчет и восстановление выписки по счету (служебная)" в типе "Финансовые счета" стоя на проблемном счете, только не помню, что мы задавали. Кто может сказать, как надо правильно параметры выставлять ? |
|
 |
VSV056 Участник - экстремал
Вступление в Клуб: 25.11.2010
|
Вт Июн 06, 2017 11:14   |
|
Полезность: Нет оценки
|
В нашем случае сломалось резервирование, по нескольким счетам.
Саму проблему победили служебной операцией. Сначала восстановление выписки, потом пересчет выписки. Но осадочек остался... |
|
 |
IXaNI Участник со стажем
Вступление в Клуб: 27.08.2012
|
Вт Июн 06, 2017 11:16   |
|
Полезность: Нет оценки
|
А что привело к проблеме? Выполнение дистрибутивных операций или локалов? |
|
 |
VSV056 Участник - экстремал
Вступление в Клуб: 25.11.2010
|
Вт Июн 06, 2017 11:37   |
|
Полезность: Нет оценки
|
IXaNI пишет: | А что привело к проблеме? Выполнение дистрибутивных операций или локалов? |
Сложно сказать.
В нашем случае, резервирование - это локальная операция поочередно дергающая дистрибутивные групповые операции.
100 млн. лет работало без подобных происшествий. |
|
 |
IXaNI Участник со стажем
Вступление в Клуб: 27.08.2012
|
Вт Июн 06, 2017 11:46   |
|
Полезность: Нет оценки
|
VSV056 пишет: | IXaNI пишет: | А что привело к проблеме? Выполнение дистрибутивных операций или локалов? |
Сложно сказать.
В нашем случае, резервирование - это локальная операция поочередно дергающая дистрибутивные групповые операции.
100 млн. лет работало без подобных происшествий. |
Просто в локале тоже сталкивался с такой проблемой, вызывая в цикле дистрибутивную [DOC_TO_PROV]. Проводки в выписке двоились по блокируемым счетам, если операции не удавалось заблокировать учетный счет. В этом случае документ не проводился с ошибкой "Архив балансов занят!", но в выписке запись создавалась... Соответственно после того, как документ позже был проведен корректно в выписке оказывалось 2 и более записей по этому док-ту, в зависимости от неудачных попыток |
|
 |
VSV056 Участник - экстремал
Вступление в Клуб: 25.11.2010
|
Вт Июн 06, 2017 12:06   |
|
Полезность: Нет оценки
|
IXaNI пишет: | VSV056 пишет: | IXaNI пишет: | А что привело к проблеме? Выполнение дистрибутивных операций или локалов? |
Сложно сказать.
В нашем случае, резервирование - это локальная операция поочередно дергающая дистрибутивные групповые операции.
100 млн. лет работало без подобных происшествий. |
Просто в локале тоже сталкивался с такой проблемой, вызывая в цикле дистрибутивную [DOC_TO_PROV]. Проводки в выписке двоились по блокируемым счетам, если операции не удавалось заблокировать учетный счет. В этом случае документ не проводился с ошибкой "Архив балансов занят!", но в выписке запись создавалась... Соответственно после того, как документ позже был проведен корректно в выписке оказывалось 2 и более записей по этому док-ту, в зависимости от неудачных попыток |
А вот это дельная мысль, сходится с наблюдаемой картиной. |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Вт Июн 06, 2017 12:38   |
|
Полезность: Нет оценки
|
В локале какой-нибудь exception when others then null? |
|
 |
IXaNI Участник со стажем
Вступление в Клуб: 27.08.2012
|
Вт Июн 06, 2017 13:27   |
|
Полезность: 1
|
Volod пишет: | В локале какой-нибудь exception when others then null? |
Примерно)
Сейчас код выглядит так:
Код: | savepoint CANNOT_LOCK_POINT;
begin
doc.[DOCUMENT]->(MAIN_DOCUM)[SET_INSERT](true, null, P_DATE);
doc.[DOCUMENT].[DOC_TO_PROV](False);
exception
when CANNOT_LOCK then
rollback to CANNOT_LOCK_POINT;
doc.[NOTES] := 'CANNOT_LOCK Документ не проведен: '||sqlerrm;
when OTHERS then
doc.[NOTES] := 'OTHERS Документ не проведен: '||sqlerrm;
end; |
exception when CANNOT_LOCK then и rollback как раз позволяют избежать этой ошибки |
|
 |
|