Плохой контроль остатков серий в УНФ 3.0
Столкнулся с тем, что несмотря на включенный контроль остатков и контроль остатков по сериями, при продаже чеков ККМ допускается продажа в минус.
Серии у клиента используются для подарочных сертификатов, отсутствие контроля привело к тому, что один сертификат продавался по нескольку раз.
База у клиента клиент-серверная и находится на SCLOUD, где отладка на сервере не доступна. Там могут переместить базу на другой сервер с отладкой, а потом обратно, если требуется отладка. Но это приводит к изменению путей доступа к базе у пользователей.
Можно было бы поработать с файловой копией, но все это вопрос времени.
Поэтому было решено написать небольшое расширение, контролирующее наличие остатков только по сериям.
Вот его код в модуле проведения чека:
&После("ОбработкаПроведения") Процедура копсд_ОбработкаПроведения(Отказ, РежимПроведения) Если Отказ Тогда Возврат; КонецЕсли; З = Новый Запрос(); З.Текст = "ВЫБРАТЬ | ТН.Серия.Владелец КАК Номенклатура, | ТН.Серия КАК Серия, | ТН.Количество КАК Количество, | ЕСТЬNULL(Т.КоличествоОстаток, 0) КАК Остаток |ИЗ | Документ.ЧекККМ.СерииНоменклатуры КАК ТН | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СерииНоменклатуры.Остатки(&Дата, ) КАК Т | ПО ТН.Серия.Владелец = Т.Номенклатура | И ТН.Серия = Т.Серия | И (&ОрганизацияДляПроведения = Т.Организация) | И ТН.Ссылка.СтруктурнаяЕдиница = Т.СтруктурнаяЕдиница |ГДЕ | ТН.Ссылка = &Ссылка"; Граница = Новый Граница(ЭтотОбъект.МоментВремени(), ВидГраницы.Исключая); ОрганизацияДляПроведения = Константы.УчетПоКомпании.Компания(ЭтотОбъект.Ссылка.Организация); З.УстановитьПараметр("Дата", Граница); З.УстановитьПараметр("ОрганизацияДляПроведения", ОрганизацияДляПроведения); З.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка); Выборка = З.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Остаток < Выборка.Количество Тогда Сообщить("По серии " + Выборка.Серия + " номенклатуры: " + Выборка.Номенклатура + " остаток: " + Выборка.Остаток + " меньше, чем требуется списать: " + Выборка.Количество + " по организации: " +ОрганизацияДляПроведения , СтатусСообщения.Важное); Отказ = истина; КонецЕсли; КонецЦикла; КонецПроцедуры
Обратите внимание, как определяется организация — у клиента включен режим общей организации для компании, поэтому просто брать организацию из шапки чека нельзя.
Среда: УНФ 3.0.6.200 Объем: 1 час
