В 1С на обычный формах функционал розничной торговли построен таким образом, что при закрытии кассовой смены из базы данных удаляются чеки ККМ, а вместо них создается новый документ - Отчет о розничных продажах. 

ЗАКРЫТЬ СМЕНУ НО НЕ УДАЛЯТЬ ЧЕКИ

Задача заключается в следующем: при закрытии кассовой смены оставлять в журнале документов чеки ККМ с пометкой на удаление. Таким образом обнуляются движения по регистрам, которые создавал чек ККМ и одновременно в базе данных остается непроведенный документ, на случай если:

- нужно найти номер чека, по которому была совершена покупка

- нужно провести возврат, с указанием ссылки на чек

Дело в том что возврат от покупателя по розничной торговле оформляется достаточно неудобно. Поясним. Если возврат по чеку оформляется день в день, то пользователь должен оформить чек ККМ с видом операции "чек на возврат" и возвращаемый товар вернется обратно на остаток, а сумма выручки в кассе уменьшится на сумму возврата. Если же возврат по чеку оформляется на следующий день (дни), после того как произведено закрытие кассовой смены, то процедура возврата иная. Чтобы оформить возврат по чеку, который закрыт, необходимо:

- оформить Возврат от покупателя

- выдать деньги из кассы предприятия (не из кассы ККМ, которая указывается в чеках)

В связи с этим действий совершается больше, и деньги кассир не может выдать покупателю за возврат прямо из своей кассы ККМ. Хотя по факту именно из кассы ККМ покупателю отдаются деньги.

Поэтому, чтобы провести операцию "чек на возврат" по упрощенной процедуре пользователю необходима ссылка на чек ККМ, по которому была продажа.

Шаблон кода:

Находим обработку "ЗакрытиеКассовойСмены", в ней процедуру "ОбработкаЧековККМ", в процедуре строчку кода:

УдалитьОбъекты(РезультатЗапросаПоЧекам.Выгрузить().ВыгрузитьКолонку("Ссылка"), Ложь);

Производим замену кода:

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

Меняем на:

// Удаляем чеки.
Для Каждого Чек ИЗ РезультатЗапросаПоЧекам.Выгрузить ().ВыгрузитьКолонку("Ссылка") Цикл
Чек.ПолучитьОбъект().УстановитьПометкуУдаления(Истина); //Пометка на удаление вместо удаления из базы
КонецЦикла;
Предупреждение("Чеки помечены на удаление без удаления из журнала");

Скришот кода:

Наши проекты | Купить 1С | Услуги по 1С | ПрограммированиеАренда сервера | Блог 

Сопровождение, доработка, консультация, обучение, по программе 1С. Информационно-технический консалтинг, почасовая и сдельная оплата. Запуск новых проектов, реализация решений под ключ.

© 2021 1С ПРОЕКТЫ И РЕШЕНИЯ /1С СЕРВИС 24/7