Проведенные чеки без движений в УНФ
В УНФ обнаружились проведенные чеки без движений, за период в два года таких набралось 81 штука. Если такие чеки перепровести, движения появляются.
Нашел все такие чеки запросом:
ВЫБРАТЬ РАЗЛИЧНЫЕ
Т.Ссылка КАК Ссылка, Т.Организация, Т.СуммаДокумента
ИЗ
Документ.ЧекККМ КАК Т
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи КАК Продажи
ПО (Продажи.Регистратор = Т.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыНаСкладах КАК ЗапасыНаСкладах
ПО (ЗапасыНаСкладах.Регистратор = Т.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСПокупателями КАК РасчетыСПокупателями
ПО (РасчетыСПокупателями.Регистратор = Т.Ссылка)
ГДЕ
Т.Проведен
И Т.Дата МЕЖДУ &Дата1 И &Дата2
И Продажи.Регистратор ЕСТЬ NULL И ЗапасыНаСкладах.Регистратор ЕСТЬ NULL И РасчетыСПокупателями.Регистратор ЕСТЬ NULL
УПОРЯДОЧИТЬ ПО Т.Организация, Т.Дата
Но хотелось бы, чтобы УНФ их автоматом проводила.
Поэтому написал код перепроведения:
Процедура ОбработатьНеПроведенныеЧеки() Экспорт //Отладка: дор_С.ОбработатьНеПроведенныеЧеки() ДнейПроверки = 100; //Насколько глубоко внутрь обрабатываем чеки Дата2 = КонецДня(ТекущаяДата()); Дата1 = началоДня(Дата2) - 3600*24*ДнейПроверки; З = Новый Запрос(); З.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Т.Ссылка КАК Ссылка, | Продажи.Регистратор КАК Регистратор |ИЗ | Документ.ЧекККМ КАК Т | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи КАК Продажи | ПО (Продажи.Регистратор = Т.Ссылка) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыНаСкладах КАК ЗапасыНаСкладах | ПО (ЗапасыНаСкладах.Регистратор = Т.Ссылка) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСПокупателями КАК РасчетыСПокупателями | ПО (РасчетыСПокупателями.Регистратор = Т.Ссылка) |ГДЕ | Т.Проведен | И Т.Дата МЕЖДУ &Дата1 И &Дата2 | И Продажи.Регистратор ЕСТЬ NULL | И ЗапасыНаСкладах.Регистратор ЕСТЬ NULL | И РасчетыСПокупателями.Регистратор ЕСТЬ NULL"; З.УстановитьПараметр("Дата1", Дата1); З.УстановитьПараметр("Дата2", Дата2); Выборка = З.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Попытка ДО = Выборка.Ссылка.ПолучитьОбъект(); ДО.Записать(РежимЗаписиДокумента.Проведение); Исключение ЗаписьЖурналаРегистрации("Отладка.ПроведениеЧековБезДвижения",,, Выборка.Ссылка, "Не удалось провести: " + ОписаниеОшибки()); КонецПопытки; КонецЦикла; КонецПроцедуры
И добавил его в регламентное задание, выполняющееся редко, раз в 2 часа. Теперь таких чеков не должно быть.
Среда: 3.0.13.238 Объем: 0.8 час.




«Теперь таких чеков не должно быть» — смелый вывод для решения, которое причину не устраняет. Перепроведение каждые 2 часа механизм не чинит, а превращает базу в самовосстанавливающуюся помойку: что-то сломалось, само перепровелось, следов нет, причина неизвестна, зато вроде красиво.
вы живете в идеальном мире, а в реальном проблемы решают по мере наличия бюджета и поступления.
Зачем клиенту оплачивать 5 часов (это минимум) на поиск причины проблемы если можно оплатить 1 час на устранение последствий?
Специалист бы за час выявил и устранил причину, а не наколхозил костыль.
нет. специалист знает, что за час такие причины не выявляются.
Я пользуюсь УНФ. Такие чеки появляются, если чек полностью оплачивали бонусами по дисконтной карте. Правлю перепроводками
спасибо.