Почему фоновый обмен 1С по FTP выдает ошибку «Каталог не обнаружен», хотя вручную всё работает?

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

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

Анализ механизма выполнения фоновых заданий в файловой базе

Для начала проанализируем, чем отличается нажатие кнопки «Синхронизировать» от работы регламентного задания. В файловом варианте 1С фоновые задания выполняются не на сервере (которого нет), а в контексте одного из запущенных клиентских сеансов. Если запущено несколько копий программы, одно из них берет на себя роль «планировщика».

Основная сложность заключается в том, что фоновый процесс может использовать иные механизмы обращения к кэшу и метаданным, чем активное окно пользователя. Рассмотрим ситуацию, когда при смене оборудования или обновлении платформы 1cv8.exe начинает некорректно интерпретировать настройки транспорта. Программа «думает», что ей нужно искать локальный каталог (тип обмена FILE), хотя в настройках четко прописан FTP. Это происходит из-за рассинхронизации данных в кэше метаданных и реальных записей в базе данных.

Шаг 1: Очистка локального и серверного кэша 1С

Как показывает практика, первой и самой эффективной мерой является полная очистка кэша. Кэш 1С хранит временные копии структур конфигурации и настроек пользователей. При переносе базы на новый ноутбук старые идентификаторы объектов могут конфликтовать с новыми.

Выполним очистку по следующему алгоритму:

  1. Завершим все сеансы работы с базой данных, включая фоновые задания и консоль администрирования.
  2. Перейдем в каталог временных файлов пользователя. Обычно это пути:
    • %AppData%\Local\1C\1Cv8
    • %AppData%\Roaming\1C\1Cv8
  3. Удалим все папки с буквенно-цифровыми названиями (длинные GUID).
  4. Перезапустим программу.

Важный нюанс: если база используется в клиент-серверном варианте, не забудем также про очистку серверного кэша и перезапуск службы 1C:Enterprise 8.3 Server Agent.

Шаг 2: Принудительное обновление настроек транспорта обмена

Даже если в визуальном интерфейсе «Настройки синхронизации данных» вы видите выбранный способ «Через FTP-ресурс», во внутренних регистрах системы может сохраняться старый признак. Проанализируем состояние данных в регистрах сведений Библиотеки стандартных подсистем (БСП).

Разберем процесс перезаписи настроек:

  1. Откроем справочник «Настройки синхронизации данных».
  2. Перейдем в раздел «Параметры подключения».
  3. Выберем текущий узел РИБ и временно изменим настройки. Например, переключим тип транспорта с FTP на «Локальный каталог», запишем объект, а затем вернем настройку FTP обратно.
  4. Проверим корректность заполнения полей: адрес сервера, порт, логин и, что критически важно, признак «Пассивный режим».

Перезапись заставляет систему обновить записи в регистре сведений НастройкиТранспортаОбмена. Если этого не сделать, фоновое задание может продолжать считывать устаревшие параметры напрямую из старой версии записи регистра, игнорируя интерфейсные изменения.

Шаг 3: Проверка пассивного режима и брандмауэра

При использовании новых ноутбуков с актуальными версиями Windows брандмауэр часто блокирует входящие соединения, которые инициирует FTP-сервер в активном режиме. В интерактивном режиме 1С может использовать системные разрешения текущего пользователя, а фоновое задание, работающее как «системный» процесс, натыкается на блокировку.

Рассмотрим, как гарантированно включить пассивный режим программно или через настройки. В настройках транспорта обмена обязательно должна стоять галочка Использовать пассивный режим. Это заставляет клиентское приложение (1С) само открывать порты для передачи данных, что значительно «прозрачнее» для сетевых экранов.

Шаг 4: Анализ программного кода инициализации соединения

Если проблема сохраняется, проанализируем ситуацию с помощью отладчика. Нам нужно найти место, где инициализируется объект FTPСоединение. В типовых конфигурациях типа «Розница 2.2» это происходит в модулях обмена данными БСП. Посмотрим на пример кода, который вызывается при попытке подключения:


// Пример инициализации соединения в фоновом задании
ПараметрыПодключения = ОбменДаннымиСервер.ПолучитьПараметрыТранспорта(УзелИнформационнойБазы);
Если ПараметрыПодключения.ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.FTP Тогда
    Попытка
        FTPСоединение = Новый FTPСоединение(
            ПараметрыПодключения.FTPАдрес,
            ПараметрыПодключения.FTPПорт,
            ПараметрыПодключения.FTPПользователь,
            ПараметрыПодключения.FTPПароль,
            ПараметрыПодключения.FTPПрокси,
            ПараметрыПодключения.FTPПассивныйРежим
        );
    Исключение
        ЗаписатьЛогСобытий("Ошибка при подключении к FTP: " + ОписаниеОшибки());
    КонецПопытки;
КонецЕсли;

При отладке фонового задания (не забудьте включить «Отладку фоновых заданий» в параметрах конфигуратора) мы можем обнаружить, что условие ВидТранспорта = FTP попросту не выполняется, так как переменная содержит значение FILE. Это прямое следствие «залипшего» кэша или некорректных данных в регистре настроек транспорта.

Шаг 5: Проверка прав доступа и временных каталогов

Выясним еще одну возможную причину ошибки «Каталог не обнаружен». Перед отправкой файла на FTP 1С создает временный файл выгрузки в локальной папке. Если фоновое задание запущено от имени пользователя, у которого нет прав на запись в каталог Temp, или если путь к этому каталогу содержит кириллицу, которую FTP-клиент 1С иногда обрабатывает некорректно, возникнет ошибка.

Проанализируем права доступа к папкам:

Итоги и рекомендации

Подводя итог, можно сказать, что проблема «невидимости» FTP-каталога в фоне обычно кроется в кэшировании неверного типа транспорта. Пройдемся по контрольному списку еще раз:

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

Соблюдение этих шагов позволяет устранить большинство проблем с фоновым обменом без необходимости переписывания типового кода конфигурации.

← На главную