Что делать, если при печати чека в 1С возникает ошибка "невозможно записать реквизит агента"?

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

Добрый день! В этой статье мы разберем довольно частую проблему, с которой столкнулись многие пользователи 1С:Управление торговлей (УТ) и Комплексной автоматизации (КА) после обновления на релизы, начиная примерно с 11.5.22.80. При попытке пробить чек на фискальном регистраторе, например, АТОЛ 30Ф, система выдает ошибку: "При печати чека произошла ошибка, чек не напечатан на фискальном устройстве (невозможно записать реквизит агента)". Давайте вместе выясним причины и найдем рабочие решения.

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

Анализ причин возникновения ошибки

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

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

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

Решение 1: Проверка настроек и данных в 1С

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

Шаг 1. Проверьте статус товара.

Убедитесь, что товар, который вы пытаетесь продать, действительно является вашим собственным, а не комиссионным. Проверьте документы поступления и отчеты по остаткам. Если выяснится, что товар числится как принятый на комиссию, то ошибка ККТ правомерна. В этом случае необходимо либо корректно настроить передачу данных комитента, либо исправить учетные данные, если товар на самом деле собственный.

Шаг 2. Отключите настройки передачи товаров между организациями.

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

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

Шаг 3. Проверьте договоры с контрагентами.

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

Решение 2: Программная доработка через расширение (наиболее универсальный способ)

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

Суть метода — найти процедуру, которая добавляет данные о комитенте в чек, и закомментировать ее вызов.

Разберем по шагам, как это сделать:

  1. Создайте новое расширение. Зайдите в конфигуратор, в меню "Конфигурация" -> "Расширения конфигурации". Добавьте новое расширение, например, с именем "ОтключениеРеквизитаАгентаВЧеке".
  2. Найдите проблемную процедуру. С помощью глобального поиска (Ctrl+Shift+F) найдите в конфигурации строку ДополнитьТекстЗапросаДаннымиКомитентаПоТоварам. Вы обнаружите ее вызов в одном из общих модулей, отвечающих за работу с подключаемым оборудованием.
  3. Добавьте объект в расширение. Найдите в дереве конфигурации процедуру или функцию, из которой вызывается ДополнитьТекстЗапросаДаннымиКомитентаПоТоварам. Нажмите на эту родительскую процедуру/функцию правой кнопкой мыши и выберите "Добавить в расширение".
  4. Измените код в расширении. Перейдите в ваше расширение, откройте добавленный модуль и найдите строку с вызовом проблемной процедуры. Поставьте перед ней два слэша `//`, чтобы закомментировать ее.

    Примерно так будет выглядеть измененный код:

    
    // ... какой-то код процедуры ...
    
    // ДополнитьТекстЗапросаДаннымиКомитентаПоТоварам(Параметры); // <- Вот эту строку мы комментируем
    
    // ... дальнейший код процедуры ...
    
  5. Сохраните расширение и перезапустите 1С. Снимите и заново установите все необходимые галочки для расширения в режиме "Предприятие" ("Главное меню" -> "Сервис" -> "Параметры" -> "Расширения"). После этого ошибка должна исчезнуть.

Важно понимать: этот метод полностью отключает передачу данных о комитенте в чек. Если у вас есть реальные комиссионные продажи, которые должны фискализироваться с указанием поставщика, этот способ их "сломает". В таком случае потребуется более сложная доработка: не просто закомментировать строку, а добавить условие, при котором эта процедура будет вызываться только для действительно комиссионных товаров.

Решение 3: Обновление ПО

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

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

← На главную