Снятие с поддержки старых драйверов Атол (версий 8 и 9) поставило перед пользователями и разработчиками 1С 7.7 серьезную задачу: переход на новую версию ДТО 10. Несмотря на почтенный возраст платформы 7.7, она сохраняет гибкость интеграции, позволяя работать с современным торговым оборудованием. В этой статье мы подробно разберем, как подружить «семерку» с десятым драйвером, рассмотрим программные методы и архитектурные особенности этого процесса.
Прежде чем переходить к коду, проанализируем принципиальное отличие новой модели драйвера. Если в ДТО 8 мы использовали огромное количество методов для каждого действия (отдельно для установки цены, отдельно для количества, отдельно для налога), то в ДТО 10 подход изменился. Программная модель стала более лаконичной по количеству функций, но более сложной по количеству параметров.
Теперь для выполнения операции нам необходимо сначала установить множество свойств (параметров) объекта драйвера, а затем вызвать один метод, который эти параметры обработает. Рассмотрим подробнее, как это выглядит на практике.
Это классический способ, наиболее привычный разработчикам 1С 7.7. Для начала работы нам необходимо зарегистрировать в системе библиотеку fptr10.dll (обязательно 32-битную версию, так как 1С 7.7 — это 32-разрядное приложение).
Разберем по шагам процесс инициализации драйвера в коде 1С 7.7:
Попытка
ОбъектДрайвер = СоздатьОбъект("AddIn.Fptr10");
Сообщить("Драйвер Атол 10 успешно загружен.");
Исключение
Сообщить("Ошибка загрузки драйвера: " + ОписаниеОшибки(), "!");
Возврат;
КонецПопытки;
После успешного создания объекта необходимо установить параметры связи с кассой. В десятой версии это делается через установку свойств и вызов метода setSettings() или через передачу параметров в методы открытия соединения.
Важный нюанс: при работе в среде 64-битных Windows убедитесь, что вы устанавливаете драйвер разрядности x86. Платформа 1С 7.7 не увидит 64-битную компоненту, даже если сама ОС поддерживает ее.
Одним из самых мощных нововведений ДТО 10 является возможность работы через JSON. Вместо того чтобы вызывать последовательность из 50 методов для пробития сложного чека, мы можем сформировать один текстовый блок в формате JSON и передать его драйверу. Это значительно повышает стабильность работы, особенно в условиях нестабильной связи или при работе через терминальные сессии.
Рассмотрим пример формирования структуры задания (условно):
ЗаданиеJSON = "{
| ""type"": ""sell"",
| ""taxationType"": ""osn"",
| ""items"": [
| {
| ""type"": ""position"",
| ""name"": ""Товар тестовый"",
| ""price"": 100.00,
| ""quantity"": 1,
| ""amount"": 100.00,
| ""tax"": { ""type"": ""vat18"" }
| }
| ],
| ""payments"": [
| { ""type"": ""cash"", ""sum"": 100.00 }
| ]
|}";
ОбъектДрайвер.setParam(ОбъектДрайвер.LIBFPTR_PARAM_JSON_DATA, ЗаданиеJSON);
ОбъектДрайвер.processJson();
Этот метод позволяет избежать "чехарды" с параметрами и делает код более читаемым. Для реализации этого в 1С 7.7 удобно использовать внешние компоненты для работы с текстом или просто формировать строку JSON вручную (или через шаблоны).
В восьмой версии драйвера была замечательная служба FDSVC, которая позволяла легко пробрасывать кассу по сети. В ДТО 10 на замену пришел Web-сервер Атол. Рассмотрим ситуацию, когда база 1С находится на сервере, а касса подключена к локальному компьютеру пользователя.
Для реализации HTTP-запросов в 1С 7.7 мы рекомендуем использовать стандартную библиотеку v7plus.dll или объект MSXML2.XMLHTTP. Это избавляет от проблем с пробросом COM-портов через RDP, которые часто работают нестабильно и приводят к задержкам печати.
Современные требования законодательства обязуют передавать коды маркировки (DataMatrix). В ДТО 10 это реализовано через специальные параметры. Выясним причину, по которой многие старые обработки не работают с маркировкой: они просто не передают тег 1162 (или 1262 для нового ФФД).
В ДТО 10 для передачи кода маркировки используется установка параметра LIBFPTR_PARAM_MARKING_CODE. Проанализируем пример передачи кода:
КодМаркировки = "01046...[ваш код]";
ОбъектДрайвер.setParam(ОбъектДрайвер.LIBFPTR_PARAM_MARKING_CODE, КодМаркировки);
// Далее добавление позиции...
Обратите внимание: для корректной работы с ФФД 1.2 касса должна иметь актуальную прошивку, а драйвер должен быть версии не ниже 10.9. При этом использование 1С 7.7 никак не ограничивает вас в работе с маркировкой, если вы правильно используете методы ДТО 10.
Если ваша конфигурация 1С 7.7 сильно переписана и содержит тысячи строк кода взаимодействия с ДТО 8, быстрый переход на ДТО 10 может быть болезненным. В таких случаях программисты часто используют «обертки» — специальные внешние компоненты, написанные на Delphi или C#.
Принцип работы обертки:
Этот путь позволяет перевести предприятие на новые рельсы буквально за один вечер, однако он требует наличия надежной сторонней компоненты или времени на написание собственной.
Подводя итог нашему анализу, можно уверенно сказать: 1С 7.7 и Атол ДТО 10 полностью совместимы. Основные сложности заключаются в изменении парадигмы программирования (переход на свойства-параметры или JSON) и необходимости учета разрядности системы.
Рекомендации по внедрению:
processJson — это задел на будущее, который позволит легче мигрировать на другие платформы.Visual C++ Redistributable на клиентских машинах, без них ДТО 10 не запустится.Рассмотренные нами методы позволяют сохранить работоспособность проверенных временем систем на базе 1С 7.7, обеспечивая их полное соответствие текущему законодательству и требованиям по маркировке товаров.