Как удалить или пометить на удаление пробитый чек ККМ в 1С:Управление торговлей 11

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При тестировании кассового оборудования, переходе с тестовой базы на рабочую или возникновении сбоев в торговой точке часто возникает ситуация, когда в системе оказывается проведенный документ Чек ККМ или Чек ККМ на возврат со статусом «Пробит». В типовой конфигурации 1С:Управление торговлей 11 на уровне модуля документа заблокирована возможность вручную отменить проведение, отредактировать или непосредственно пометить такой документ на удаление через пользовательский интерфейс. Это сделано разработчиками для обеспечения целостности фискальных данных и предотвращения расхождений с фискальным накопителем.

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

Причины блокировки и структура кассового учета

Проанализируем логику работы конфигурации. При попытке интерактивного изменения или пометки на удаление пробитого чека срабатывают проверки в модуле объекта документа (в процедурах ПередЗаписью и ОбработкаПроверкиЗаполнения). Система проверяет реквизит СтатусЧекаККМ: если он имеет значение «Пробит» или «Архивный», платформа выдает отказ в выполнении операции.

Кроме того, важно учитывать состояние кассовой смены:

  1. Смена еще не закрыта: все движения по деньгам в операционной кассе и списанию/возврату товаров формируются непосредственно самим документом Чек ККМ. В этом случае достаточно отменить проведение чека и удалить его.
  2. Смена уже закрыта: при закрытии смены создается и проводится сводный документ Отчет о розничных продажах. Движения по регистрам накопления переходят на этот отчет, а сами чеки переводятся в статус «Архивный». Простое удаление чека в таком случае не скорректирует остатки в регистрах — потребуется также скорректировать соответствующий отчет о розничных продажах.

Способ 1. Использование обработки «Групповое изменение реквизитов»

Рассмотрим наиболее удобный способ снятия блокировки без необходимости доработки конфигурации в режиме Конфигуратора. Для этого воспользуемся встроенной сервисной обработкой.

Разберем порядок действий по шагам:

  1. Перейдем в раздел НСИ и администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов.
  2. В нижнем правом углу нажмем кнопку Дополнительные параметры, установим флаг Показывать служебные реквизиты и включим Режим разработчика. Это позволит редактировать скрытые поля документа.
  3. В поле «Выбирать элементы» укажем документ Чек ККМ (или Чек ККМ на возврат, в зависимости от проблемного документа).
  4. Обязательно настроим точный отбор по номеру, дате или ссылке документа, чтобы случайно не затронуть реальные рабочие чеки.
  5. В списке доступных реквизитов найдем поле Статус чека ККМ и очистим его значение либо заменим на статус «Отложен» или «Не пробит».
  6. Нажмем кнопку Изменить реквизиты.
  7. После смены статуса найдем документ в общем списке, снимем его с проведения и установим стандартную пометку на удаление.
  8. Запустим операцию Удаление помеченных объектов (в разделе «Администрирование») для окончательной очистки базы.

Способ 2. Программное снятие с проведения и удаление через «ОбменДанными.Загрузка»

Если требуется написать внешнюю обработку или выполнить очистку через внешнюю обработку произвольного кода, воспользуемся стандартным свойством ОбменДанными.Загрузка. Установка данного флага в значение Истина отключает типовые проверки в процедурах модуля объекта и позволяет выполнить отмену проведения и пометку на удаление без ошибок.

Посмотрим на пример программного кода:


// Получаем объект документа по ссылке
ЧекОбъект = СсылкаНаЧек.ПолучитьОбъект();

// Включаем режим обмена данными для обхода встроенных проверок модуля
ЧекОбъект.ОбменДанными.Загрузка = Истина;

// Отменяем проведение документа, чтобы очистить движения по регистрам
ЧекОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);

// Устанавливаем пометку на удаление
ЧекОбъект.УстановитьПометкуУдаления(Истина);

Если требуется выполнить непосредственное удаление объекта из информационной базы программным методом (без использования корзины помеченных объектов), код будет выглядеть следующим образом:


ЧекОбъект = СсылкаНаЧек.ПолучитьОбъект();
ЧекОбъект.ОбменДанными.Загрузка = Истина;

// Непосредственное удаление объекта из базы
ЧекОбъект.Удалить();

Обратим внимание: прямое применение метода Удалить() без предварительной отмены проведения может оставить незакрытые записи в регистрах, если логика записи не отработала до конца. Поэтому рекомендуется сначала выполнить отмену проведения через РежимЗаписиДокумента.ОтменаПроведения, а затем пометить объект на удаление или удалить его.

Способ 3. Использование универсальных обработок с ИТС

Для пользователей и администраторов баз данных доступен вариант с использованием внешней обработки Универсальные подбор и обработка объектов. Для работы с ней запустим базу в режиме обычного или управляемого приложения (в зависимости от редакции обработки), выполним отбор нужного документа и выберем действие Удалить или Пометить на удаление с отключением проверок модулей.

Корректировка движений при закрытой кассовой смене

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

  1. Откроем список документов Отчеты о розничных продажах в подсистеме продаж.
  2. Найдем отчет за дату оформления ошибочного чека и откроем его.
  3. Снимем документ с проведения.
  4. В табличной части Товары удалим строку с позицией, которая фигурировала в ошибочном чеке возврата/продажи, либо скорректируем количество и сумму.
  5. В табличной части Оплата платежными картами (при безналичном расчете) или в данных по наличной выручке уберем соответствующую сумму.
  6. Проведем Отчет о розничных продажах повторно.
  7. После исправления отчета выполним удаление самого чека ККМ одним из рассмотренных выше способов.

Контрольная проверка после удаления

После завершения процедур удаления обязательно проконтролируем корректность учета в регистрах:

  1. Касса ККМ: сформируем отчет по движениям денежных средств в кассах ККМ (регистр накопления ДенежныеСредстваВКассахККМ) и убедимся, что фиктивный остаток денег списан.
  2. Складские остатки: проверим отчеты по остаткам номенклатуры (регистры ТоварыНаСкладах и СвободныеОстатки), чтобы удостовериться, что товарный остаток вернулся к актуальным фактическим значениям.
← На главную