Как убрать статус «Пробит» у розничного чека в 1С:Бухгалтерия 8.3

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

В практике работы с программой «1С:Бухгалтерия 8.3» нередко возникают ситуации, когда розничный чек ошибочно получает статус «Пробит». Это может произойти из-за технического сбоя при связи с онлайн-кассой, когда данные в информационную базу записались, а физической печати чека на ККТ не произошло. В таких случаях пользователь сталкивается с проблемой: документ заблокирован для редактирования, а на форме красуется надпись о том, что чек уже фискализирован. Простое удаление или пометка на удаление здесь не помогут, так как логика программы жестко привязывает статус к определенным реквизитам и записям в регистрах.

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

Разберем механизм формирования статуса «Пробит»

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


Элементы.ГруппаБаннерПробитЧек.Видимость = ЗначениеЗаполнено(Объект.НомерЧекаККМ) 
И НЕ ЭтоВозврат 
И Форма.ЕстьПравоВводаЧекаКоррекции 
И НЕ Форма.ЭтоЧекКоррекции 
И ПечатьФискальныхДокументовВызовСервера.ЕстьФискальныеОперацииПоДокументу(Объект.Ссылка, Истина);

Из этого фрагмента кода мы можем сделать важные выводы. Для того чтобы статус «Пробит» исчез, должны быть соблюдены (или, точнее, нарушены) следующие условия:

  1. Реквизит НомерЧекаККМ: Если это поле заполнено, система считает, что документу уже присвоен номер в фискальном накопителе.
  2. Наличие фискальных операций: Функция ЕстьФискальныеОперацииПоДокументу проверяет наличие записей в специальном регистре сведений. Если там есть активная запись, связанная с вашим документом, баннер будет отображаться в любом случае, даже если вы очистите номер чека.

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

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

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

Зайдем в раздел Администрирование — Обслуживание — Корректировка данных — Групповое изменение реквизитов. В поле «Изменять» выберем тип документа «Розничный чек» (или «Приходный кассовый ордер», если чек пробивался из него). Прежде чем искать нужные поля, выполним критически важную настройку:

  1. Нажмем кнопку «Дополнительные параметры».
  2. В открывшемся окне в разделе «Специальные возможности» установим флажки «Показывать служебные реквизиты» и «Записывать объекты без проверок». Это позволит нам редактировать системные поля, которые обычно скрыты от глаз пользователя.

Теперь в списке реквизитов найдем и изменим следующие значения:

После внесения изменений нажмем «Изменить реквизиты». Однако, как показывает практика, одного этого действия часто бывает недостаточно из-за работы функций вызова сервера, которые проверяют физическое наличие связей с кассой.

Способ 2: Работа с регистром «Фискальные операции»

Выясним причину, по которой даже после очистки номера чека статус может сохраняться. Как мы уже выяснили выше, программа обращается к функции ПечатьФискальныхДокументовВызовСервера.ЕстьФискальныеОперацииПоДокументу. Эта функция анализирует регистр сведений «Фискальные операции».

Проанализируем ситуацию: в этом регистре хранится полная информация о транзакции, отправленной на ККТ, включая XML-пакет данных и ответ от кассы. Чтобы окончательно убрать статус «Пробит», нам нужно удалить связь документа с этим регистром.

Для этого выполним следующие действия:

  1. Перейдем в меню «Функции для технического специалиста» (в старых версиях — «Все функции»).
  2. Найдем раздел «Регистры сведений» и выберем «Фискальные операции».
  3. В открывшемся списке установим отбор по полю «Документ», выбрав наш проблемный чек.
  4. Удалим найденную запись. Внимание: это действие необратимо, поэтому рекомендуется предварительно сделать резервную копию базы данных.

После удаления записи из этого регистра и очистки реквизитов НомерЧекаККМ, система перестанет видеть документ как фискализированный.

Способ 3: Программная очистка через консоль кода

Если вы программист, то быстрее всего будет воспользоваться внешней обработкой «Консоль кода» или создать небольшую временную обработку. Рассмотрим пример кода, который выполняет комплексную очистку документа:


ОбъектДок = ДокументСсылка.ПолучитьОбъект();
ОбъектДок.НомерЧекаККМ = 0;
ОбъектДок.ДатаЧекаККМ = '00010101';
// Если есть реквизит СтатусЧекаККМ
// ОбъектДок.СтатусЧекаККМ = Перечисления.СтатусыЧековККМ.ПустаяСсылка();
ОбъектДок.ОбменДанными.Загрузка = Истина;
ОбъектДок.Записать();

// Очистка регистра
НаборЗаписей = РегистрыСведений.ФискальныеОперации.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Документ.Установить(ДокументСсылка);
НаборЗаписей.Записать(); // Записываем пустой набор, тем самым удаляя старые записи

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

Важные предупреждения и риски

Проанализируем последствия данных манипуляций. Важно понимать разницу между исправлением ошибки в учетной системе и отменой операции на фискальном накопителе:

Подводя итог, можно сказать, что статус «Пробит» в 1С:Бухгалтерии 8.3 — это динамическая величина, зависящая от комбинации реквизитов документа и данных в регистре «Фискальные операции». Последовательная очистка этих данных гарантированно возвращает документу исходное состояние.

← На главную