При интеграции товароучетных систем с современными смарт-терминалами (например, кассами на базе операционной системы Android) технические специалисты часто сталкиваются с необходимостью настройки обмена файлами. Одним из наиболее популярных протоколов для обмена в локальной сети является FTP. Однако при попытке указать FTP-путь в стандартных настройках ККМ Офлайн в конфигурации 1С:Розница пользователи получают ошибку: «Недопустимое имя папки».
В этой статье мы подробно разберем, почему возникает данное системное ограничение, проанализируем архитектуру работы БПО (Библиотеки подключаемого оборудования) и рассмотрим 4 практических способа обхода этой проблемы, которые помогут вам успешно связать вашу кассу и базу 1С.
Для начала разберем природу возникновения ошибки. Механизм обмена с ККМ Офлайн в типовых конфигурациях 1С:Розница ред. 2.2 / 2.3 / 3.0 изначально проектировался под классические кассовые решения, работающие в среде Windows (например, АТОЛ или Штрих-М). Стандартная логика платформы предполагает работу исключительно с локальной файловой системой или сетевыми ресурсами по протоколу SMB (общие папки Windows).
Когда вы открываете форму настройки обмена и пытаетесь прописать путь вида ftp://192.168.0.100/, система реагирует ошибкой по следующим причинам:
C:\Exchange) или UNC-путь локальной сети (например, \\192.168.0.100\Exchange). Любые префиксы, отличные от стандартных разметчиков ОС Windows, блокируются встроенной валидацией платформы.Попытки поиграть с прямыми и обратными слэшами (/ и \) не принесут результата, так как сама платформа 1С на уровне операционной системы не сможет выполнить запись файлов по этому адресу без предварительно поднятой сессии. Перейдем к рассмотрению решений данной проблемы.
---
Поскольку 1С отказывается принимать сетевые пути FTP напрямую, мы можем обмануть операционную систему и саму платформу. Для этого мы смонтируем удаленную папку FTP-сервера смартпоса в Windows в качестве полноценного виртуального жесткого диска, которому будет присвоена своя буква (например, Z:\).
Ранее для этих целей часто использовалась утилита NetDrive, однако сегодня она стала платной и нестабильной на современных версиях Windows 10/11. Мы рекомендуем использовать современный, надежный и бесплатный для базового использования аналог — RaiDrive. Разберем этот процесс по шагам:
Z:.192.168.0.100).Z:\.Теперь возвращаемся в 1С:Розницу. В настройках каталога обмена ККМ Офлайн укажите путь к созданной директории на диске Z: (например, Z:\exchange\). Платформа без проблем примет этот путь, так как для нее это обычная локальная папка, а RaiDrive будет «на лету» перенаправлять все операции чтения и записи файлов на кассу по протоколу FTP.
---
Если вы не хотите устанавливать на рабочий компьютер с 1С сторонние утилиты монтирования дисков, мы можем пойти другим путем. Вместо того чтобы поднимать на смартпосе FTP-сервер, мы можем запустить на нем полноценный SMB-сервер (Samba). Это позволит сделать внутреннюю папку кассы видимой в локальной сети как обычную общую папку Windows.
Рассмотрим, как настроить этот вариант:
EXCHANGE уже расшарена по умолчанию).Exchange), а также логин и пароль для авторизации.Win + R и введите сетевой путь кассы: \\192.168.0.100\Exchange. Операционная система должна запросить логин и пароль, после чего откроется папка кассы.После успешной проверки сетевого доступа откройте 1С:Розницу и в поле «Каталог обмена» пропишите UNC-путь: \\192.168.0.100\Exchange\. Поскольку данный путь является абсолютно легитимным для Windows и платформы 1С, настройка сохранится без каких-либо ошибок, и обмен заработает напрямую без промежуточного софта на компьютере.
---
Этот способ отлично подойдет в ситуациях, когда касса работает нестабильно, периодически отключается от Wi-Fi сети или вам требуется дополнительный контроль над версиями файлов обмена. Мы настроим обмен «в два шага» через локальный буфер на компьютере.
Разберем логику настройки данного метода:
C:\Smartpos_Exchange\.script.txt и следующим содержимым:
option batch on
option confirm off
open ftp://user:password@192.168.0.100:2121/
# Копируем файлы товаров из локальной папки на FTP-сервер кассы
put C:\Smartpos_Exchange\goods.txt /Exchange/goods.txt
# Забираем файлы отчетов о продажах с кассы в локальную папку 1С
get /Exchange/report.txt C:\Smartpos_Exchange\report.txt
# Удаляем обработанный отчет на кассе, чтобы избежать повторной загрузки
rm /Exchange/report.txt
exit
Затем создаем обычный исполняемый файл автоматизации sync.bat, который будет запускать WinSCP с нашим сценарием:
@echo off
"C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /script="C:\Smartpos_Exchange\script.txt"
Добавьте запуск файла sync.bat в стандартный Планировщик задач Windows с интервалом запуска каждые 5-10 минут. Теперь 1С работает со сверхбыстрой локальной папкой без зависаний интерфейса, а скрипт в фоновом режиме осуществляет надежную доставку пакетов данных на кассу и обратно.
---
Если вы хотите решить задачу на уровне кода 1С, избегая установки внешних программ и скриптов, можно доработать механизм выгрузки ККМ Офлайн с помощью создания расширения конфигурации. Платформа 1С:Предприятие обладает мощным встроенным объектом FTPСоединение, который позволяет программно отправлять и принимать файлы без использования файловой системы ОС.
Проанализируем пример кода, который перехватывает процедуру отправки файла обмена и осуществляет его прямую выгрузку на FTP-сервер кассы:
&НаСервере
Процедура ВыгрузитьФайлНаКассуПоFTP(ИмяЛокальногоФайла, ИмяУдаленногоФайла)
// Задаем параметры подключения к FTP смартпоса
СерверАдрес = "192.168.0.100";
ПортFTP = 2121;
ЛогинFTP = "admin";
ПарольFTP = "password";
Пассивный = Истина;
Попытка
// Инициализируем встроенный объект платформы 1С
FTPСоединение = Новый FTPСоединение(СерверАдрес, ПортFTP, ЛогинFTP, ПарольFTP,, Пассивный);
// Отправляем файл обмена непосредственно в каталог кассы
FTPСоединение.Записать(ИмяЛокальногоФайла, ИмяУдаленногоФайла);
ЗаписьЖурналаРегистрации("Обмен_ККМ_FTP", УровеньЖурналаРегистрации.Информация,,,
"Файл успешно выгружен на FTP кассы: " + ИмяУдаленногоФайла);
Исключение
ЗаписьЖурналаРегистрации("Обмен_ККМ_FTP", УровеньЖурналаРегистрации.Ошибка,,,
"Не удалось отправить файл по FTP. Причина: " + ОписаниеОшибки());
ВызватьИсключение "Ошибка обмена с кассой по FTP: " + ОписаниеОшибки();
КонецПопытки;
КонецПроцедуры
Создав небольшое расширение, переопределяющее стандартные процедуры модуля обмена ККМ Офлайн (такие как вызов функций записи файлов), вы получите полностью автономное решение внутри 1С, которое не зависит от внешнего системного окружения и работает на любых операционных системах.
Мы подробно разобрали системную проблему интеграции 1С с Android-устройствами по протоколу FTP и предложили несколько надежных вариантов решения. Для быстрого запуска без доработки конфигурации оптимально использовать программу RaiDrive или настроить SMB-сервер на самой кассе. Если вам важна отказоустойчивость при нестабильном Wi-Fi соединении, реализуйте схему с промежуточной папкой и скриптами WinSCP. Выбирайте наиболее подходящий для вашей инфраструктуры метод и настраивайте стабильный обмен!