Как выполнить внесение денег в ККТ и где находятся обработки обслуживания в 1С:Бухгалтерия 3.0?

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

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

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

Архитектура работы с торговым оборудованием в 1С:Бухгалтерия 3.0

В конфигурациях предыдущих поколений на обычных формах взаимодействие с кассовыми аппаратами реализовывалось через внешние обработки обслуживания (файлы с расширением .epf). В современных конфигурациях на базе Библиотеки стандартных подсистем (БСП) и Библиотеки подключаемого оборудования (БПО) архитектура изменилась:

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

Почему в 1С:Бухгалтерии 3.0 нет стандартного документа внесения денег

В отличие от специализированных торговых конфигураций (например, 1С:Розница, 1С:Управление торговлей или 1С:УНФ), в 1С:Бухгалтерия 3.0 типовой пользовательский интерфейс для регистрации операций внесения и выемки наличности не предусмотрен. Это связано со следующими факторами:

  1. Операции внесения разменного фонда и выемки денег из ящика ККТ являются исключительно служебными, они не фискализируются, не передаются в ОФД и не формируют бухгалтерских проводок.
  2. Учет наличных средств в бухгалтерии ведется на счете 50.01 («Касса организации») на основании первичных документов ПриходныйКассовыйОрдер и РасходныйКассовыйОрдер.

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

Способ 1. Программное внесение средств через методы БПО

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

Рассмотрим структуру вызова асинхронного метода МенеджерОборудованияКлиент.НачатьИнкассациюНаФискальномУстройстве. Для инициализации параметров операции используется служебная функция-конструктор.

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


&НаКлиенте
Процедура ВыполнитьВнесение(Команда)
    
    // Подготовим параметры операции инкассации/внесения
    ПараметрыОперации = МенеджерОборудованияКлиентСервер.ПараметрыИнкассации();
    ПараметрыОперации.Сумма = 5000; // Сумма операции
    ПараметрыОперации.ТипОперации = 1; // 1 - Внесение, 0 - Выемка
    
    // Блокируем форму на время выполнения операции
    ЭтаФорма.Доступность = Ложь;
    
    ОповещениеПриЗавершении = Новый ОписаниеОповещения("ВыполнитьВнесениеЗавершение", ЭтотОбъект);
    
    // Вызываем метод БПО для работы с фискальным регистратором
    МенеджерОборудованияКлиент.НачатьИнкассациюНаФискальномУстройстве(
        ОповещениеПриЗавершении,
        УникальныйИдентификатор,
        ПараметрыОперации,
        ИдентификаторУстройства
    );

КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьВнесениеЗавершение(РезультатВыполнения, Параметры) Экспорт

    ЭтаФорма.Доступность = Истина;
    
    Если НЕ РезультатВыполнения.Результат Тогда
        ТекстСообщения = НСтр("ru = 'При выполнении операции произошла ошибка: ""%ОписаниеОшибки%"".'");
        ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%", РезультатВыполнения.ОписаниеОшибки);
        ПоказатьОшибку(ТекстСообщения);
    Иначе
        ПоказатьОповещениеПользователя("Успешно", , "Внесение наличности в ККТ выполнено.");
    КонецЕсли;

КонецПроцедуры

Разберем параметры, передаваемые в вызов:

  1. ОповещениеПриЗавершении — объект ОписаниеОповещения, указывающий на процедуру обратного вызова, которая сработает после ответа драйвера ККТ.
  2. УникальныйИдентификатор — идентификатор формы или обработчика для управления контекстом выполнения.
  3. ПараметрыОперации — структура, полученная через МенеджерОборудованияКлиентСервер.ПараметрыИнкассации(), содержащая поля Сумма и ТипОперации.
  4. ИдентификаторУстройства — ссылка на элемент справочника ПодключаемоеОборудование, соответствующий используемой кассе.

Способ 2. Настройка параметров драйвера ККТ

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

  1. Отключение контроля наличности при выплатах. Через утилиту «Тест драйвера» (производителя ККТ: АТОЛ, Штрих-М и др.) в таблицах настроек или свойствах ККТ можно отключить проверку наличия денег в ящике при пробитии чеков расхода и возврата. Касса перестанет блокировать операции возврата при нулевом регистре наличности.
  2. Отключение автоматического обнуления наличности при Z-отчете. По умолчанию при закрытии смены счетчик наличности обнуляется (происходит автоинкассация). Если эту опцию отключить в параметрах оборудования, остаток предыдущего рабочего дня перейдет на следующую смену.
  3. Ручное внесение через сервисный драйвер. При необходимости срочно пробить возврат кассир может открыть сервисную утилиту драйвера ККТ и выполнить служебную команду «Внесение» на нужную сумму.

Таким образом, для выполнения служебных операций с наличностью в 1С:Бухгалтерии 3.0 наиболее удобным путем для программиста является создание компактной внешней обработки на базе методов БПО, а для администратора — корректировка настроек контроля наличности в драйвере кассового аппарата.

← На главную