Отложенный чек без движений в УТ 11
Клиент обратился с заданием отключить движения отложенных чеков (как с резервированием товара, так и без). Они ему мешают в отчете по продажам.
Я открыл УТ и обнаружил, что чек невозможно провести или отменить проведение:
Я немного озадачился — разработку веду на рабочей базе, как проверить работу чека, ведь нельзя же его провести даже.
Однако вспомнил про универсальный редактор объектов — обработку «1cAdmin». В ней открыл пробитый чек и провел.
Сначала я хотел отключить вызов всей процедуры «Обработка проведения» для таких чеков, но мне кажется, это было бы слишком чрезмерно задаче.
Поэтому вмешался только в типовую процедуры записи набора записей:
Сначала я решил установить признак Записывать у всех наборов записей в Ложь:
В коде расширения я ошибся и вместо ПродолжитьВызов использовал вызов процедуры по имени, в результате чего 1С вылетала по переполнению стека:
Потом поправил ошибку, сначала провел чек в обычном статусе Пробит, получил такие движения:
Но когда поменял статус чека на «Отложенный», у меня все равно остались движения:
Да, это 1С, детка. Тут всё не очень просто и логично. Поэтому я отказался от очистки флага Записывать и вместо этого очищал все наборы записей в коллекции Движения. Это дало ожидаемый результат:
В итоге код расширения для модуля ПроведениеСерверУТ получился таким:
&Вместо("ЗаписатьНаборыЗаписей") Процедура дор_ЗаписатьНаборыЗаписей(Объект) //Для чека отложенного выключаем все Записывать Если Метаданные.НайтиПоТипу(ТипЗнч(Объект)) = Метаданные.Документы.ЧекККМ И (Объект.Статус = Перечисления.СтатусыЧековККМ.Отложен ИЛИ Объект.Статус = Перечисления.СтатусыЧековККМ.ТоварЗарезервирован) И Объект.Проведен Тогда Для Каждого Движение Из Объект.Движения Цикл //Движение.Записывать = ложь; //Так не работает Движение.Очистить(); КонецЦикла; КонецЕсли; ПродолжитьВызов(Объект); КонецПроцедуры
Время план: 0.7 час. Среда: 11.4.13.46.
Сегдня смотрю, 2 сегодняшних чека имеют статус Отложено с резервирование.
НомерЧека пустой . Надо чтобы эти чеки пробились, но никак не получается.
В тч ОплатаПК строка заполнена.
Похоже, дело было так. Сначала кассир подключилась к базе напрямую и пробила 2 чека.
А затем вышла, зашла в терминальный сервер и снова открыла базу. ККТ настроен на работу через терминал.
В номерах чеков образовалась дырка в 2 номера.
провести. становится доступна кнопка Пробить если открыть чек из списка чеков (не в РМК). Нажать пробить. Если мы ведем речь об УТ
Хотя если они уже пробились, зачем их пробивать еще раз? или они не пробились?