В процессе работы розничной точки пользователи и администраторы могут столкнуться с ситуацией, когда в журнале регистрации за определенный период все документы Чек ККМ переходят в состояние Транзакция отменена, а продажи за полдня или смену исчезают из базы данных. Проанализируем ситуацию, выясним основные причины такого поведения платформы и MS SQL Server, а также рассмотрим варианты восстановления утраченной информации.
Разберем по шагам, почему записи о продажах могут массово отменяться или пропадать из базы данных:
ОтчетОРозничныхПродажах. При этом сами чеки ККМ по умолчанию помечаются на удаление или архивируются, а исходные транзакции чеков могут очищаться. Если сводный документ ОтчетОРозничныхПродажах был сформирован, но не проведен, продажи временно «исчезают» из учета до момента проведения отчета.НачатьТранзакцию(), а во внутреннем вызове произошла ошибка или был вызван отказ, платформа помечает всю внешнюю транзакцию как ошибочную. В момент попытки вызова ЗафиксироватьТранзакцию() платформа автоматически откатывает абсолютно все изменения, внесенные с момента начала самой первой транзакции. Если транзакция удерживалась открытой длительное время, откат затронет все документы, созданные за этот период.rphost, перезапуск службы или обрыв сети) приводит к тому, что MS SQL Server выполняет команду ROLLBACK TRAN для всех незафиксированных данных.Рассмотрим пример правильного оформления транзакций при проведении торговых документов, предотвращающий зависание и массовый откат данных при ошибках:
НачатьТранзакцию();
Попытка
// Запись и проведение документа Чек ККМ
ДокументОбъект = СсылкаНаЧек.ПолучитьОбъект();
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ЗаписьЖурналаРегистрации("Ошибка проведения чека",
УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
ВызватьИсключение;
КонецПопытки;
Для предотвращения проблем с пропажей чеков рекомендуется отказаться от их физического удаления при закрытии смены и переключить настройки системы на архивацию чеков ККМ. Это позволит сохранить историю каждого пробитого чека без рисков потери данных при формировании сменного отчета.
Если транзакции чеков были отменены и продажи не попали в базу, проанализируем доступные методы восстановления информации:
ОприходованиеТоваров или списания расхождений.