Не заполняется номер сертификата при оплате сертификатом
У клиента почему-то в некоторых чеках не заполняется номер подарочного сертификата.
Сделал контроль в модуле чека:
&Перед("ПередЗаписью") Процедура дппс_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) //Перед записью, иначе отказа не будет, после использовать нельзя //Сообщить("Контроль ПС"); Для Каждого Строка ИЗ ЭтотОбъект.БезналичнаяОплата Цикл //Сообщить("ПС: " + Строка.ПодарочныйСертификат + " номер: " + Строка.НомерСертификата); Если ЗначениеЗаполнено(Строка.ПодарочныйСертификат) И не ЗначениеЗаполнено(Строка.НомерСертификата) Тогда Отказ = истина; Сообщить("Не указан номер подарочного сертификата!", СтатусСообщения.Важное); КонецЕсли; КонецЦикла; КонецПроцедуры
Но после этого через некоторое время столкнулись с сертификатом, которым нельзя было оплатить чек.
Пришлось расследовать.
В модуле ОбщегоНазначенияРМКУНФ.ДанныеЧекаПоСистемеНалогообложения вызывается процедура:

Код конечно, кривой, ссылка на серию теряется и ищется заново, но что поделать.
Запрос хитрый, объединяет несколько таблиц, начинается так:

Ключевое тут — отбираются только те сертификаты, которые проданы.

И вот тут у сертификата не стояла галочка «Продан», которую можно поставить администратору.
Проведение ОРП не помогло — галочка не встала.
Галочка продан устанавливается из модуля набора записей регистра накопления ДвиженияСерииНоменклатуры:

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

Среда: УНФ 3.0.6.200 Объем: 1.8 час.




Свежие комментарии