Отложенный чек без движений в УТ 11

Клиент обратился с заданием отключить движения отложенных чеков (как с резервированием товара, так и без). Они ему мешают в отчете по продажам.

Я открыл УТ и обнаружил, что чек невозможно провести или отменить проведение:

Я немного озадачился — разработку веду на рабочей базе, как проверить работу чека, ведь нельзя же его провести даже.

Однако вспомнил про универсальный редактор объектов — обработку «1cAdmin». В ней открыл пробитый чек и провел.

Сначала я хотел отключить вызов всей процедуры «Обработка проведения» для таких чеков, но мне кажется, это было бы слишком чрезмерно задаче.

Поэтому вмешался только в типовую процедуры записи набора записей:

Сначала я решил установить признак Записывать у всех наборов записей в Ложь:

В коде расширения я ошибся и вместо ПродолжитьВызов использовал вызов процедуры по имени, в результате чего 1С вылетала по переполнению стека:

Потом поправил ошибку, сначала провел чек в обычном статусе Пробит, получил такие движения:


Но когда поменял статус чека на «Отложенный», у меня все равно остались движения:

Да, это 1С, детка. Тут всё не очень просто и логично. Поэтому я отказался от очистки флага Записывать и вместо этого очищал все наборы записей в коллекции Движения. Это дало ожидаемый результат:

В итоге код расширения для модуля ПроведениеСерверУТ получился таким:

&Вместо("ЗаписатьНаборыЗаписей")
Процедура дор_ЗаписатьНаборыЗаписей(Объект)
	//Для чека отложенного выключаем все Записывать
	Если Метаданные.НайтиПоТипу(ТипЗнч(Объект)) = Метаданные.Документы.ЧекККМ 
		И (Объект.Статус = Перечисления.СтатусыЧековККМ.Отложен ИЛИ 
		Объект.Статус = Перечисления.СтатусыЧековККМ.ТоварЗарезервирован) 
		И Объект.Проведен
		Тогда
		Для Каждого Движение Из Объект.Движения Цикл
			//Движение.Записывать = ложь; //Так не работает
			Движение.Очистить();
		КонецЦикла;                            
	КонецЕсли;                             
	
	ПродолжитьВызов(Объект);
КонецПроцедуры

Время план: 0.7 час. Среда: 11.4.13.46.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментария 2

  1. Сергей:

    Сегдня смотрю, 2 сегодняшних чека имеют статус Отложено с резервирование.
    НомерЧека пустой . Надо чтобы эти чеки пробились, но никак не получается.

    В тч ОплатаПК строка заполнена.

    Похоже, дело было так. Сначала кассир подключилась к базе напрямую и пробила 2 чека.
    А затем вышла, зашла в терминальный сервер и снова открыла базу. ККТ настроен на работу через терминал.

    В номерах чеков образовалась дырка в 2 номера.

    • провести. становится доступна кнопка Пробить если открыть чек из списка чеков (не в РМК). Нажать пробить. Если мы ведем речь об УТ
      Хотя если они уже пробились, зачем их пробивать еще раз? или они не пробились?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *