Подключение современных контрольно-кассовых аппаратов с поддержкой 54-ФЗ к классической платформе «1С:Предприятие 7.7» нередко вызывает сложности. В конфигурации «1С:Бухгалтерский учет 7.7» изначально отсутствовали готовые механизмы прямого взаимодействия с онлайн-кассами нового образца. Попытка скопировать файлы обслуживания из типовой конфигурации «Торговля и склад 7.7» приводит к синтаксическим ошибкам при запуске обработки. Разберем по шагам, почему возникает эта проблема и как настроить совместную работу конфигурации и фискального регистратора Атол 30Ф.
Рассмотрим стандартные параметры, которые требуются для инициализации фискального регистратора при работе через специализированную внешнюю компоненту АТОЛ. В настройках торгового оборудования (меню «Сервис» — «Настройка торгового оборудования» — вкладка «Фискальный регистратор») указываются следующие значения:
frATOL54_comm.ert (традиционно располагается в подкаталоге базы ExtForms\Equip\).FprnM1C82_54FZ.dll.ATOL_KKM_1C82_54FZ.Для корректного сопряжения компонентов операционной системы и 1С важно соблюдать требования к драйверу ККТ. Для работы связки FprnM1C82_54FZ.dll требуется установка пакета ДТО версии 8 (не ниже 8.14.02.02). Поскольку платформа «1С:Предприятие 7.7» является строго 32-разрядным приложением, драйверы торгового оборудования и внешние компоненты необходимо регистрировать в 32-битном пространстве. В 64-разрядных операционных системах Windows регистрация выполняется через системную утилиту из каталога SysWOW64:
C:\Windows\SysWOW64\regsvr32.exe "полный_путь_к_библиотеке\FprnM1C82_54FZ.dll"
При попытке запустить перенесенную обработку frATOL54_comm.ert система формирует поток критических ошибок компиляции модуля:
{FRATOL54_COMM.ERT(56)}: Переменная не определена (глФРИДУстройства)
{FRATOL54_COMM.ERT(60)}: Переменная не определена (глФРPortNumber)
{FRATOL54_COMM.ERT(63)}: Переменная не определена (глФРBaudRate)
{FRATOL54_COMM.ERT(66)}: Переменная не определена (глФРModel)
Выясним причину такого поведения. Обработка frATOL54_comm.ert была создана фирмой «1С» для конфигурации «Торговля и склад 7.7». Вся подсистема торгового оборудования в этой конфигурации опирается на сквозные глобальные переменные и процедуры, объявленные в Глобальном модуле конфигурации (файле метаданных 1Cv7.MD). В типовой конфигурации «Бухгалтерский учет 7.7» архитектура торгового оборудования устроена иначе: там нет поддержки протоколов 54-ФЗ и отсутствуют эти глобальные переменные. Простое копирование файлов .ert в каталог базы не обеспечивает их связь с контекстом конфигурации.
Если конфигурация снята с типовой поддержки и доступна для изменения в Конфигураторе, проанализируем возможность переноса недостающих переменных и процедур.
Перем глФРИДУстройства Экспорт;
Перем глФРPortNumber Экспорт;
Перем глФРBaudRate Экспорт;
Перем глФРModel Экспорт;
Если типовую конфигурацию «Бухгалтерии 7.7» требуется оставить без изменения файла метаданных, решим задачу путем изоляции самой обработки обслуживания. Для этого внесем изменения непосредственно в файл frATOL54_comm.ert:
frATOL54_comm.ert через Конфигуратор («Файл» — «Открыть»).
Перем глФРИДУстройства;
Перем глФРPortNumber;
Перем глФРBaudRate;
Перем глФРModel;
ВосстановитьЗначение() / СохранитьЗначение() или внешний текстовый конфигурационный файл (INI):
// Пример прямой инициализации параметров внутри модуля обработки
глФРPortNumber = 3; // Номер виртуального COM-порта кассы
глФРBaudRate = 115200; // Скорость обмена
глФРModel = 67; // Код модели Атол 30Ф
Благодаря этому обработка перестанет обращаться к Глобальному модулю конфигурации и сможет корректно компилироваться внутри бухгалтерской базы.
Рассмотрим наиболее современный и надежный вариант сопряжения. Драйверы 8-й версии (DTO 8) устарели, сняты с технической поддержки и не поддерживают актуальные форматы фискальных данных (ФФД 1.2) и прошивки касс на Платформе 5.0. Чтобы касса Атол 30Ф работала стабильно, подключение выполняют напрямую через современный драйвер АТОЛ ДТО 10 (x86) в обход устаревшей штатной подсистемы 1С 7.7.
Посмотрим на пример прямой инициализации объекта драйвера из внешней обработки или печатной формы документа «Приходный кассовый ордер»:
Попытка
Касса = СоздатьОбъект("AddIn.Fptr10");
Исключение
Предупреждение("Не удалось загрузить компоненту AddIn.Fptr10! Проверьте регистрацию драйвера.");
Возврат;
КонецПопытки;
// Настройка связи с ККТ
Касса.setSingleSetting(Касса.LIBFPTR_SETTING_MODEL, Строка(Касса.LIBFPTR_MODEL_ATOL_30F));
Касса.setSingleSetting(Касса.LIBFPTR_SETTING_PORT, Строка(Касса.LIBFPTR_PORT_COM));
Касса.setSingleSetting(Касса.LIBFPTR_SETTING_COM_FILE, "COM3");
Касса.setSingleSetting(Касса.LIBFPTR_SETTING_BAUDRATE, Строка(Касса.LIBFPTR_PORT_BR_115200));
Касса.applySingleSettings();
// Открытие соединения
Касса.open();
Если Касса.isOpened() = 0 Тогда
Предупреждение("Ошибка подключения к кассе: " + Касса.errorDescription());
Возврат;
КонецЕсли;
// Открытие чека на приход
Касса.setParam(Касса.LIBFPTR_PARAM_RECEIPT_TYPE, Касса.LIBFPTR_RT_SELL);
Касса.openReceipt();
// Регистрация позиции
Касса.setParam(Касса.LIBFPTR_PARAM_COMMODITY_NAME, "Оплата по договору");
Касса.setParam(Касса.LIBFPTR_PARAM_PRICE, ИтогСумма);
Касса.setParam(Касса.LIBFPTR_PARAM_QUANTITY, 1);
Касса.setParam(Касса.LIBFPTR_PARAM_TAX_TYPE, Касса.LIBFPTR_TAX_NO);
Касса.registration();
// Закрытие чека с типом оплаты наличными
Касса.setParam(Касса.LIBFPTR_PARAM_PAYMENT_TYPE, Касса.LIBFPTR_PT_CASH);
Касса.setParam(Касса.LIBFPTR_PARAM_PAYMENT_SUM, ИтогСумма);
Касса.receiptPayment();
Касса.closeReceipt();
// Завершение сеанса связи
Касса.close();
Проанализируем методические ограничения, с которыми приходится сталкиваться при пробитии чеков из бухгалтерской базы:
FprnM1C82_54FZ.dll физически невозможна — кассовый аппарат будет возвращать ошибку связи. В этом случае единственным рабочим решением является интеграция через драйвер ДТО 10 или использование промежуточного кассового сервера фискализации.