При работе с контрольно-кассовой техникой (ККТ) и системой 1С часто возникают вопросы по интеграции и передаче данных. Один из таких вопросов касается возможности отправки в ККТ нестандартных, или "своих", типов оплаты, которые не предусмотрены стандартным набором 1С. Рассмотрим эту ситуацию на примере ККТ Атол и программы 1С.
Представим сценарий: в драйвере ККТ Атол (например, в "Тесте драйвера ККТ") мы видим возможность выбора типов оплаты от 0 до 9. При этом тип 0 жестко закреплен за "Наличными". Однако в конфигурации 1С, например, в разделе Секция оплат (Payments), доступны только пять стандартных типов оплаты: Cash, ElectronicPayment, PrePayment, PostPayment и Barter. Возникает закономерный вопрос: как отправить оплату на "Тип оплаты 6" или любой другой нестандартный тип, если 1С предлагает лишь ограниченный набор?
Давайте проанализируем текущую ситуацию. Мы выясняем, что стандартные 1С-совместимые драйверы ККТ обычно поддерживают ограниченный набор типов оплат. Эти типы строго соответствуют внутренним механизмам 1С. Как правило, они отображаются на первые пять типов оплаты в драйвере Атол:
Cash (или 0) – НаличнымиElectronicPayment (или 1) – БезналичнымиPrePayment (или 2) – Предварительная оплата (Аванс)PostPayment (или 3) – Последующая оплата (Кредит)Barter (или 4) – Иная форма оплаты (Встречное предоставление)Если мы попытаемся передать произвольный номер типа оплаты, например, "6", напрямую через стандартный 1С-совместимый драйвер, то столкнемся с ограничением: такая возможность, как правило, не предусмотрена. Синтаксис 1С для записи данных в XML-структуру (например, ЗаписьXML.ЗаписатьАтрибут("Cash", XMLСтрока(СуммаНаличные));) жестко привязан к предопределенным названиям типов ("Cash", "ElectronicPayment" и т.д.), а не к числовым кодам драйвера Атол.
Важно понимать, что существует принципиальная разница между синтаксисом, который ожидает Атоловский драйвер (например, "type": 6 для прямого указания номера типа), и синтаксисом, используемым 1С-совместимыми драйверами. Последние абстрагируются от низкоуровневых команд ККТ и работают с обобщенными понятиями оплат 1С, которые затем транслируются в команды драйвера ККТ. Из-за этой абстракции прямая передача произвольного номера типа оплаты в большинство 1С-совместимых драйверов напрямую невозможна.
Мы видим, что в утилите "Тест драйвера ККТ" от Атол в выпадающем списке "Тип оплаты / Закрытия" действительно может быть до девяти типов (от 0 до 8). Это может ввести в заблуждение, поскольку кажется, что можно использовать любой из них. Однако проблема заключается в уровне интеграции:
Таким образом, если наша цель – добиться, чтобы фискальный регистратор Атол печатал в чеке и учитывал в отчетах "Тип оплаты 6" как отдельный фискальный тип именно через стандартный механизм, то, к сожалению, средствами 1С-совместимого драйвера это невозможно.
Когда прямая передача произвольных фискальных типов оплаты невозможна, самым распространенным и поддерживаемым способом разделения потоков денежных средств при схожих типах оплаты (например, "Наличные 1" и "Наличные 2") является использование "секций" или "торговых отделов" на ККТ. Фискальные регистраторы Атол и другие современные ККТ позволяют вести учет по нескольким секциям (обычно до 4 или 8, в зависимости от модели и прошивки), что находит свое отражение в X-отчетах и Z-отчетах.
Давайте разберем этот подход подробнее:
Секции (или отделы) на ККТ – это встроенный механизм для разделения выручки и продаж по разным категориям. Каждая позиция чека или даже весь чек может быть "приписан" к определенной секции. Это позволяет детализировать отчеты ККТ. Например, мы можем иметь две секции: "Основной отдел" и "Дополнительный отдел". При пробитии чека мы указываем, к какой секции относится каждая товарная позиция или вся сумма оплаты.
Если мы хотим отделить "Наличные 1" от "Наличных 2", мы можем использовать одну фискальную форму оплаты (например, стандартные "Наличные" – тип 0) и при этом распределять их по разным секциям. Например, "Наличные 1" будут пробиваться через Секцию 1, а "Наличные 2" – через Секцию 2. В X-отчете и Z-отчете мы увидим детализацию по секциям: сколько наличных поступило через Секцию 1, и сколько – через Секцию 2. С точки зрения фискализации это будут все те же "Наличные", но на уровне управленческого учета и отчетности ККТ мы получим необходимое разделение.
Для реализации использования секций в 1С нам потребуется доработка кода. Обычно это делается в общих модулях, отвечающих за работу с кассой, например, в функции ПробитьЧекВыполнить или аналогичных в модулях РМК (Рабочего Места Кассира) конфигурации 1С:Розница.
Нам необходимо определить, по какому критерию та или иная оплата (или даже позиция чека) должна быть отнесена к определенной секции. Критериями могут быть:
В коде, перед вызовом метода печати чека на ККТ, нам нужно будет установить номер секции. Конкретный механизм установки секции зависит от используемого драйвера ККТ, но в общем виде это может выглядеть как установка значения определенного параметра объекта, передаваемого в драйвер. Например, в объекте ФискальныеДанныеЧека или НаборПараметровЧека может быть свойство НомерСекции или Department. Мы должны будем присвоить ему соответствующее числовое значение (1, 2, 3 и т.д.).
// Пример схематичного кода в 1С (может отличаться в зависимости от конфигурации и версии драйвера)
// Допустим, у нас есть переменная ТекущийНомерСекции, полученная на основе логики
ПередаваемыеПараметры = Новый Соответствие;
ПередаваемыеПараметры.Вставить("ТипОплаты", "Cash"); // Всегда используем стандартный тип 1С для наличных
ПередаваемыеПараметры.Вставить("Сумма", СуммаНаличные);
// !!! Вот здесь мы устанавливаем номер секции !!!
ПередаваемыеПараметры.Вставить("НомерСекции", ТекущийНомерСекции); // Например, 1 или 2
// ... далее передаем эти параметры в драйвер ККТ
Важно: Перед тем как реализовать этот подход, убедитесь, что ваш фискальный регистратор Атол поддерживает работу с секциями и что в его настройках (через утилиту настройки или веб-интерфейс) эти секции активированы и настроены.
В 1С существует справочник "Виды оплат", который мы активно используем для настройки различных методов оплаты, таких как наличные, платежные карты, подарочные сертификаты, бонусы, авансы и так далее. Каждый "Вид оплаты" в 1С имеет "Способ оплаты" и может быть помечен как "Фискальный". Эти виды оплат используются в документах 1С, например, в "Отчете о розничных продажах", и для удобства кассира в РМК.
Для корректной работы с ККТ необходимо выполнить сопоставление "Видов оплат" 1С с типами оплаты в драйвере ККТ. Это делается в настройках подключаемого оборудования 1С для ККТ. Обычно это выглядит как таблица, где для каждого вида оплаты из справочника 1С мы указываем соответствующий код или тип оплаты ККТ (0-4 для Атол).
Если мы требуем фискализации нестандартного типа оплаты, то:
Именно здесь и проявляется необходимость использовать секции: новый "Вид оплаты" 1С (например, "Наличные по акции") будет связан с фискальным типом "Наличные" (тип 0), но в коде 1С при его выборе будет устанавливаться определенный номер секции для ККТ (например, Секция 3), чтобы разделить отчетность.
В некоторых очень специфических и редких случаях, когда стандартная интеграция 1С абсолютно не позволяет достигнуть требуемого результата, возможны более глубокие кастомизации. Это может включать:
FprnM1C.dll или аналогичной), передавая ей низкоуровневые команды. В этом случае, если драйвер Атол предоставляет такую возможность, можно занять неиспользуемые строчки в таблице типов оплат.Важно: Применение такого метода выходит за рамки стандартных возможностей 1С и ее совместимых драйверов. Это сложный путь, который сопряжен с высокими рисками при обновлении конфигурации 1С и драйверов ККТ. Мы настоятельно не рекомендуем использовать этот подход без крайней необходимости и без тщательного анализа всех рисков.
Для корректной работы с ККТ Атол в 1С необходимо выполнить несколько обязательных шагов, которые обеспечивают базовую интеграцию:
Корректная базовая настройка является фундаментом для любых последующих доработок, включая использование секций ККТ.
Давайте подведем итоги нашего анализа. Если ваша задача состоит в том, чтобы фискальный регистратор Атол печатал в чеке и учитывал в отчетах "Тип оплаты 6" как *отдельный фискальный тип*, который не является одним из пяти стандартных типов 1С, то средствами стандартного 1С-совместимого драйвера это, скорее всего, невозможно. Стандартные механизмы 1С и ее драйверов работают с ограниченным, унифицированным набором типов оплат.
Однако, если бизнес-потребность заключается в разделении учета схожих типов оплат (например, "Наличные 1" и "Наличные 2"), то рекомендуемым и поддерживаемым подходом является использование "секций" (торговых отделов) на ККТ. Этот метод позволяет:
Для реализации этого подхода потребуется доработка кода 1С, в частности, в модулях, отвечающих за формирование и печать чеков. Нам придется определить условия, при которых выбирается та или иная секция, и передавать соответствующий номер секции в драйвер ККТ. Такой подход обеспечивает гибкость и позволяет достигнуть поставленной цели, оставаясь при этом в рамках поддерживаемых механизмов интеграции.
Всегда помните о необходимости использования актуальных драйверов ККТ и тщательной настройки подключаемого оборудования в 1С для обеспечения стабильной и корректной работы всей системы.