Почему чек пробивается и уходит в ОФД, но не регистрируется в 1С:Розница 2.3?

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

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

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

В чем заключается проблема: симптомы и последствия

Основной симптом, на который указывают пользователи, — это несоответствие между фактической фискализацией чека (печать на ККТ и отправка в ОФД) и его статусом в 1С. Кассиры выполняют свои стандартные операции, но система не фиксирует чек как завершенный. Как правило, мы видим следующие проявления:

  1. Из кассового аппарата выходит фискальный чек.
  2. Если оплата была по банковской карте, то эквайринговый терминал печатает слип, и оплата проходит по банку.
  3. Данные о чеке уходят в ОФД и доступны там для просмотра.
  4. Однако в 1С документ ЧекККМ остается в статусе "Не пробит" или "Не проведен".
  5. При попытке закрыть смену, 1С сообщает кассиру об "обнаружении непробитого чека".
  6. После повторного пробития такого чека в 1С, он отображается как проведенный, но фактически создает дублирующую запись о продаже за тот же день, поскольку первый чек уже был фискализирован и отправлен в ОФД.

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

Анализ возможных причин сбоев и потери связи

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

Давайте рассмотрим подробнее, какие факторы могут способствовать возникновению этой проблемы:

1. Ограничения работы файловой базы данных через веб-сервер

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

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

В условиях высокой нагрузки или даже незначительной нестабильности сети такая архитектура может приводить к "потере" состояния между клиентским приложением (РМК) и базой данных в критически важные моменты, например, в процессе окончательной фиксации пробитого чека. Если в момент подтверждения статуса чека происходит кратковременный разрыв соединения или таймаут, то чек может быть успешно пробит на ККТ, но статус его проведения в 1С не будет обновлен.

2. Настройки и драйверы ККТ

Нередко причиной подобных сбоев становятся некорректные настройки оборудования или программного обеспечения контрольно-кассовой техники:

3. Внешние факторы и нестабильность инфраструктуры

Работа торгового оборудования критически зависит от общей стабильности IT-инфраструктуры. Мы можем выделить следующие внешние факторы:

Способы исправления "не пробитого" чека в 1С

Когда мы сталкиваемся с непробитым чеком в 1С, но при этом уверенны, что он фискализирован и ушел в ОФД, нам необходимо скорректировать его статус в базе данных. Рассмотрим несколько подходов:

1. Ручное проведение и пробитие чека

Этот метод подходит, если кассир обнаружил ошибку сразу или покупатель еще не ушел, и есть возможность повторно воздействовать на документ в 1С. Мы разберем по шагам, как это сделать:

  1. Откройте документ ЧекККМ из "Журнала чеков ККМ" в 1С:Розница.
  2. Убедитесь, что вся информация об оплате (наличные, банковская карта) заполнена корректно и соответствует данным на физическом чеке/слипе.
  3. Вручную проведите документ ЧекККМ. Для этого обычно достаточно нажать кнопку "Провести" или "Записать и провести". Если документ не был проведен, это могло быть причиной его некорректного статуса.
  4. После успешного проведения документа, воспользуйтесь кнопкой "Пробить чек" (или аналогичной, которая инициирует фискализацию). Поскольку чек уже был пробит на ККТ и ушел в ОФД, этот шаг в данном случае выполнит лишь обновление статуса в 1С, не отправляя повторно данные на ККТ (при условии корректной настройки драйверов и обработки ситуации). В некоторых случаях это действие может вызывать ошибку или предупреждение о повторной фискализации, но цель здесь — лишь актуализировать статус в 1С.

Важно: этот метод эффективен, если 1С еще не считает чек "пробитым" и готов его обработать. Однако, если система уже "зафиксировала" некую ошибку и не позволяет просто так "пробить" его, или если повторное нажатие кнопки приводит к созданию дубликата (как в описанной проблеме с закрытием смены), то нам потребуются другие методы.

2. Групповое изменение реквизитов для корректировки статуса

Для исправления статуса уже проведенных, но ошибочно "не пробитых" чеков, мы можем использовать стандартную обработку 1С "Групповое изменение реквизитов". Этот метод позволяет напрямую влиять на служебные поля документа ЧекККМ. Разберем шаги:

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

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

3. Использование Чека коррекции (для налоговой отчетности)

В случае, когда чек был фактически пробит по кассе и отправлен в ОФД (или оплата прошла, а чек не вышел), но в 1С он не зарегистрирован как пробитый, и покупатель уже ушел (то есть невозможно выполнить ручное пробитие или получить дополнительные данные от покупателя), для соблюдения законодательства и исключения штрафов за неприменение ККТ рекомендуется использовать документ Чек коррекции. Для автоматизации массового оформления таких документов подойдёт обработка для пробития чеков коррекции за период в 1С:Розница 2.3.

  1. Создайте документ Чек коррекции в 1С:Розница.
  2. Укажите тип коррекции (самостоятельная или по предписанию), дату и сумму корректируемого чека.
  3. Пробейте Чек коррекции. Этот документ отправится в ОФД и будет зарегистрирован в ФНС.

Критически важно понимать ограничения Чека коррекции:

4. Разработка собственной обработки или расширения

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

Принцип работы такой обработки:

  1. Обработка должна периодически (или по запросу) сканировать документы Документ.ЧекККМ в 1С, которые находятся в статусе "Не пробит", но при этом содержат данные, указывающие на попытку фискализации (например, заполненные реквизиты, которые обычно заполняются после отправки на ККТ, но до подтверждения статуса).
  2. Для каждого такого "подозрительного" чека обработка должна попытаться получить фискальные данные из внешнего источника. Это может быть:
    • Прямое взаимодействие с драйвером ККТ для получения статуса последнего чека.
    • Запрос к ОФД по номеру чека, дате и сумме (если такой API доступен или если есть промежуточная шина обмена).
    • Проверка на наличие специфических полей в документе ЧекККМ, которые заполняются только после успешной фискализации (например, НомерЧекаККМ, ДатаЧекаККМ, ФискальныйПризнак).
  3. Если фискальные данные подтверждают, что чек был успешно пробит на ККТ и ушел в ОФД, обработка должна программно изменить статус документа ЧекККМ в 1С.
    
    // Пример концепции кода для обработки
    Функция ИсправитьСтатусЧека(СсылкаНаЧек)
        // Получаем объект документа ЧекККМ
        ОбъектЧек = СсылкаНаЧек.ПолучитьОбъект();
    
        // Проверяем, если чек не проведен и его статус "Не пробит"
        Если НЕ ОбъектЧек.Проведен И ОбъектЧек.Статус = Перечисления.СтатусыЧековККМ.НеПробит Тогда
            // Здесь должна быть логика получения подтверждения фискализации.
            // Например, через API ОФД или проверку определенных полей документа
            // (если они заполняются драйвером ККТ, но 1С не успевает их обработать).
                    
            // Пример: если у чека уже есть фискальный признак, но он не проведен
            Если ЗначениеЗаполнено(ОбъектЧек.ФискальныйПризнак) Тогда
                ОбъектЧек.Проведен = Истина;
                ОбъектЧек.Статус = Перечисления.СтатусыЧековККМ.Пробит;
                Попытка
                    ОбъектЧек.Записать(РежимЗаписиДокумента.Проведение);
                    Возврат Истина; // Успешно исправлено
                Исключение
                    Сообщить("Ошибка при проведении чека " + СсылкаНаЧек + ": " + ОписаниеОшибки());
                    Возврат Ложь;
                КонецПопытки;
            КонецЕсли;
        КонецЕсли;
        Возврат Ложь;
    КонецФункции
    
    // Пример использования в цикле по 'подозрительным' чекам
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ЧекККМ.Ссылка
        |ИЗ
        |    Документ.ЧекККМ КАК ЧекККМ
        |ГДЕ
        |    НЕ ЧекККМ.Проведен
        |    И ЧекККМ.Статус = &СтатусНеПробит
        |    И ЧекККМ.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания"; // Добавьте свои условия отбора
    
    Запрос.УстановитьПараметр("СтатусНеПробит", Перечисления.СтатусыЧековККМ.НеПробит);
    // ... установить параметры дат
            
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        ИсправитьСтатусЧека(Выборка.Ссылка);
    КонецЦикла;
    

    Для поля Статус следует использовать значения из перечисления Перечисления.СтатусыЧековККМ.

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

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

Дополнительные инструменты для контроля (в новых версиях 2.3)

В более свежих версиях 1С:Розница 2.3 (начиная с 2.3.18) были добавлены полезные инструменты, которые могут помочь в диагностике и контроле подобных проблем:

  1. Журнал действий кассиров: Этот журнал позволяет более детально отслеживать операции, выполняемые кассирами, и фиксировать события, связанные с пробитием чеков. Анализируя его, мы можем выявить точный момент сбоя и понять, что предшествовало проблеме.
  2. Отчет Незавершенные действия с чеком: Этот отчет предназначен для выявления документов ЧекККМ, по которым произошли какие-либо незавершенные операции. Он может стать отправной точкой для поиска "потерянных" чеков, которые требуют ручного вмешательства или программной корректировки.

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

Превентивные меры и рекомендации

Чтобы минимизировать возникновение подобных проблем в будущем, мы можем предпринять ряд превентивных мер:

  1. Пересмотрите архитектуру: Если возможно, рассмотрите переход с файловой базы через веб-сервер на клиент-серверный вариант работы. Это обеспечит значительно большую стабильность, производительность и надежность, особенно при росте количества пользователей и операций.
  2. Поддерживайте актуальность ПО: Регулярно обновляйте платформу 1С:Предприятие, конфигурацию 1С:Розница, драйверы ККТ и прошивку кассовых аппаратов. Производители постоянно выпускают исправления ошибок и улучшения.
  3. Обеспечьте стабильность сети и электропитания: Проверьте качество сетевых кабелей, стабильность работы сетевого оборудования. Используйте источники бесперебойного питания для ККТ и рабочих мест кассиров.
  4. Настройте операционную систему: Убедитесь, что параметры электропитания USB-портов не настроены на их отключение для экономии энергии. Проверьте настройки брандмауэра и антивирусного ПО на предмет возможных блокировок или задержек взаимодействия.
  5. Оптимизируйте работу 1С: Регулярно очищайте кэш 1С, контролируйте размер журнала регистрации.
  6. Обучайте персонал: Проинструктируйте кассиров о порядке действий при возникновении ошибок с пробитием чеков и о том, куда обращаться за помощью, чтобы избежать создания дубликатов.

Заключение

Проблема, когда чек пробивается и уходит в ОФД, но не регистрируется в 1С:Розница 2.3, является сложной и многогранной, часто коренящейся в нестабильности инфраструктуры и особенностях взаимодействия между компонентами системы. Мы рассмотрели, что это известная недоработка, особенно проявляющаяся при работе файловой базы через веб-сервер. Для ее решения доступны как ручные методы корректировки статусов через стандартные обработки 1С (Групповое изменение реквизитов), так и более сложные, но эффективные подходы, требующие программной доработки (создание собственной обработки/расширения).

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

Выбрав подходящий способ решения и применив профилактические меры, мы сможем добиться стабильной работы РМК и корректного отражения всех операций в 1С:Розница.

← На главную