Как настроить обмен 1С:Розница с кассой Смартпос по FTP и исправить ошибку «Недопустимое имя папки»?

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

При интеграции товароучетных систем с современными смарт-терминалами (например, кассами на базе операционной системы Android) технические специалисты часто сталкиваются с необходимостью настройки обмена файлами. Одним из наиболее популярных протоколов для обмена в локальной сети является FTP. Однако при попытке указать FTP-путь в стандартных настройках ККМ Офлайн в конфигурации 1С:Розница пользователи получают ошибку: «Недопустимое имя папки».

В этой статье мы подробно разберем, почему возникает данное системное ограничение, проанализируем архитектуру работы БПО (Библиотеки подключаемого оборудования) и рассмотрим 4 практических способа обхода этой проблемы, которые помогут вам успешно связать вашу кассу и базу 1С.

Выясняем причину: почему 1С ругается на FTP-путь?

Для начала разберем природу возникновения ошибки. Механизм обмена с ККМ Офлайн в типовых конфигурациях 1С:Розница ред. 2.2 / 2.3 / 3.0 изначально проектировался под классические кассовые решения, работающие в среде Windows (например, АТОЛ или Штрих-М). Стандартная логика платформы предполагает работу исключительно с локальной файловой системой или сетевыми ресурсами по протоколу SMB (общие папки Windows).

Когда вы открываете форму настройки обмена и пытаетесь прописать путь вида ftp://192.168.0.100/, система реагирует ошибкой по следующим причинам:

  1. Отсутствие поддержки FTP-протокола в модуле обмена БПО: Стандартный обработчик обмена физически не умеет авторизовываться на FTP-сервере. В форме настройки попросту отсутствуют поля для ввода логина, пароля, порта, а также переключателя активного/пассивного режима соединения.
  2. Жесткая валидация пути: При сохранении настройки срабатывает встроенная функция проверки корректности пути. Она ожидает строку формата локального диска (например, C:\Exchange) или UNC-путь локальной сети (например, \\192.168.0.100\Exchange). Любые префиксы, отличные от стандартных разметчиков ОС Windows, блокируются встроенной валидацией платформы.

Попытки поиграть с прямыми и обратными слэшами (/ и \) не принесут результата, так как сама платформа 1С на уровне операционной системы не сможет выполнить запись файлов по этому адресу без предварительно поднятой сессии. Перейдем к рассмотрению решений данной проблемы.

---

Решение 1. Монтирование FTP-ресурса как локального диска в Windows (утилита RaiDrive)

Поскольку 1С отказывается принимать сетевые пути FTP напрямую, мы можем обмануть операционную систему и саму платформу. Для этого мы смонтируем удаленную папку FTP-сервера смартпоса в Windows в качестве полноценного виртуального жесткого диска, которому будет присвоена своя буква (например, Z:\).

Ранее для этих целей часто использовалась утилита NetDrive, однако сегодня она стала платной и нестабильной на современных версиях Windows 10/11. Мы рекомендуем использовать современный, надежный и бесплатный для базового использования аналог — RaiDrive. Разберем этот процесс по шагам:

  1. Скачайте и установите программу RaiDrive на тот компьютер, где установлена 1С и откуда будет инициироваться обмен.
  2. Запустите программу и нажмите кнопку «Добавить» (Add) на верхней панели управления.
  3. В появившемся окне выберите вкладку «НД» (NAS), а затем тип подключения «FTP».
  4. Настройте параметры подключения к вашей кассе Смартпос:
    • Буква диска: выберите свободную букву в системе, например, Z:.
    • Адрес (Host): укажите IP-адрес кассы в локальной сети (например, 192.168.0.100).
    • Порт: укажите порт FTP-сервера кассы (по умолчанию 21, но на Android часто используются нестандартные порты, например, 2121 или 1024).
    • Учетные данные: введите логин и пароль для доступа к FTP-серверу на кассе.
  5. Убедитесь, что установлена галочка «Подключать при загрузке» (Reconnect at sign-in), чтобы диск автоматически монтировался после перезагрузки компьютера.
  6. Нажмите кнопку «ОК». В проводнике Windows появится новый локальный диск Z:\.

Теперь возвращаемся в 1С:Розницу. В настройках каталога обмена ККМ Офлайн укажите путь к созданной директории на диске Z: (например, Z:\exchange\). Платформа без проблем примет этот путь, так как для нее это обычная локальная папка, а RaiDrive будет «на лету» перенаправлять все операции чтения и записи файлов на кассу по протоколу FTP.

---

Решение 2. Использование SMB-сервера на Android-кассе

Если вы не хотите устанавливать на рабочий компьютер с 1С сторонние утилиты монтирования дисков, мы можем пойти другим путем. Вместо того чтобы поднимать на смартпосе FTP-сервер, мы можем запустить на нем полноценный SMB-сервер (Samba). Это позволит сделать внутреннюю папку кассы видимой в локальной сети как обычную общую папку Windows.

Рассмотрим, как настроить этот вариант:

  1. На смартпос (кассу под управлением ОС Android) необходимо установить приложение для развертывания SMB-сервера. Хорошо себя зарекомендовали приложения: LAN Drive - SAMBA Server, Samba Server или встроенные средства администрирования кассового аппарата (у некоторых производителей, например, Дримкас, папка EXCHANGE уже расшарена по умолчанию).
  2. В настройках приложения на кассе укажите папку на внутреннем накопителе, которая будет использоваться для обмена, задайте имя сетевого ресурса (например, Exchange), а также логин и пароль для авторизации.
  3. Запустите SMB-сервер в приложении на кассе.
  4. На компьютере с 1С проверьте доступность папки через проводник Windows. Нажмите сочетание клавиш Win + R и введите сетевой путь кассы: \\192.168.0.100\Exchange. Операционная система должна запросить логин и пароль, после чего откроется папка кассы.

После успешной проверки сетевого доступа откройте 1С:Розницу и в поле «Каталог обмена» пропишите UNC-путь: \\192.168.0.100\Exchange\. Поскольку данный путь является абсолютно легитимным для Windows и платформы 1С, настройка сохранится без каких-либо ошибок, и обмен заработает напрямую без промежуточного софта на компьютере.

---

Решение 3. Синхронизация через промежуточную папку с помощью скриптов (WinSCP)

Этот способ отлично подойдет в ситуациях, когда касса работает нестабильно, периодически отключается от Wi-Fi сети или вам требуется дополнительный контроль над версиями файлов обмена. Мы настроим обмен «в два шага» через локальный буфер на компьютере.

Разберем логику настройки данного метода:

  1. На жестком диске компьютера с 1С создаем обычную локальную папку, например: C:\Smartpos_Exchange\.
  2. В настройках 1С:Розницы для ККМ Офлайн указываем этот локальный путь. Программа будет выгружать файлы товаров и загружать отчеты о продажах именно из этой папки.
  3. Для отправки файлов на кассу воспользуемся консольной версией популярного FTP-клиента WinSCP. Создадим в папке с программой текстовый файл сценария с именем 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С работает со сверхбыстрой локальной папкой без зависаний интерфейса, а скрипт в фоновом режиме осуществляет надежную доставку пакетов данных на кассу и обратно.

---

Решение 4. Использование механизмов платформы (для программистов)

Если вы хотите решить задачу на уровне кода 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. Выбирайте наиболее подходящий для вашей инфраструктуры метод и настраивайте стабильный обмен!

← На главную