Настройка обмена данными между базами 1С (например, между 1С:Управление торговлей и 1С:Розница или в рамках распределенной информационной базы — РИБ) через облачные каталоги является популярным решением для малого и среднего бизнеса — для этого подойдёт универсальная подсистема настройки регулярного обмена между любыми конфигурациями. Это позволяет отказаться от развертывания дорогостоящих серверов и сложных VPN-каналов. Однако на практике администраторы часто сталкиваются с техническими препятствиями: сторонние утилиты монтирования (такие как Диск-О) требуют платной подписки, а стандартные облачные клиенты «из коробки» отказываются синхронизировать файлы напрямую между компьютерами, оставляя их в виртуальном облаке.
В этой статье мы подробно разберем, как правильно настроить бесплатный обмен 1С через облачные каталоги, устраним проблему «невидимости» файлов на разных компьютерах, рассмотрим критические изменения в работе популярных облачных сервисов и разберем современные альтернативные инструменты автоматической синхронизации.
При использовании стандартного приложения Яндекс.Диск (или аналогичных облачных клиентов) часто возникает ситуация, когда на Компьютере №1 файл выгрузки 1С создается, но на Компьютере №2 он не появляется (поможет универсальная обработка выгрузки и загрузки данных через HTTP или COM), хотя в веб-версии облака в браузере файл присутствует. Это происходит из-за включенной по умолчанию технологии умного хранения (или виртуальных файлов).
Современные облачные клиенты экономят место на жестком диске пользователя. Они не скачивают файлы физически, а лишь показывают их «ярлыки» (метаданные). Когда платформа 1С пытается обратиться к такому файлу по локальному пути (например, C:\YandexDisk\Exchange\Message_ЦБ_СД.xml), она не может его прочитать, так как физически файла на диске нет — он находится в облаке и скачивается только при ручном открытии пользователем через проводник.
Чтобы решить эту проблему и заставить облако работать как полноценный локальный каталог для 1С, выполним следующие шаги:
1C_Exchange).После этого облачный клиент принудительно скачает все файлы из этой папки на жесткий диск. Как только одна база 1С запишет файл выгрузки в этот каталог, клиент мгновенно отправит его в облако, а клиент на втором компьютере тут же скачает его в физическом виде. Обмен начнет работать стабильно и в автоматическом режиме — есть решение для автоматической настройки и регулярного запуска обмена 1С.
Разработчикам и администраторам необходимо учитывать критическое изменение в лицензионной политике облачных провайдеров. Десктопное приложение Яндекс.Диск для Windows и macOS в рамках платформы Яндекс 360 ограничивает возможности бесплатной синхронизации папок на ПК. Без активной платной подписки программа может блокировать автоматическую фоновую синхронизацию локальных каталогов, делая невозможным классический обмен 1С без участия пользователя.
В связи с этим рассмотрим альтернативные, полностью бесплатные и более профессиональные инструменты для организации обмена файлами 1С.
Если вам необходимо связать два или более компьютеров для обмена 1С (РИБ) напрямую, лучшим решением является использование бесплатной утилиты с открытым исходным кодом Syncthing — для этого пригодится управление регистрацией объектов в планах обмена. Это решение полностью решает проблему зависимости от сторонних облачных серверов, лимитов на объем и платных подписок.
Проанализируем ключевые преимущества Syncthing для задач 1С:
Для настройки достаточно установить Syncthing на обоих узлах, связать устройства по уникальному ID и предоставить общий доступ к локальной папке обмена 1С.
Если для бизнес-процессов все же необходимо использовать именно облачное хранилище (Яндекс.Диск, Облако Mail.ru, Google Drive или S3-совместимые хранилища), но вы не хотите использовать официальные тяжелые приложения, рекомендуется применить консольную утилиту Rclone.
Rclone — это мощный инструмент, позволяющий монтировать облачные хранилища как локальные диски или синхронизировать папки через командную строку. Он абсолютно бесплатен и может быть настроен как стандартная служба Windows (через планировщик задач), выполняя синхронизацию файлов обмена 1С незаметно для пользователя и без лишней нагрузки на систему.
При обмене файлами через любые облачные каталоги или утилиты синхронизации существует серьезный риск «асинхронного чтения». Рассмотрим подробнее этот механизм.
Когда база-отправитель 1С начинает выгрузку данных, она постепенно записывает файл обмена (например, большой XML-файл) в целевую папку. Облачный клиент или программа синхронизации видит изменение в каталоге и мгновенно начинает передавать файл на другой компьютер. База-получатель 1С, запущенная по расписанию, видит появление файла на втором компьютере и пытается начать загрузку. Но так как файл еще не успел передаться до конца, 1С выдаст критическую ошибку («Ошибка чтения XML: непредвиденный конец файла») и процесс обмена аварийно завершится.
Для предотвращения этой проблемы рекомендуется использовать метод временного файла. Разберем по шагам правильный алгоритм выгрузки в 1С:
Проанализируем пример кода на языке 1С, реализующий безопасную выгрузку:
// Определяем пути к файлам
ИмяФайлаОбмена = "Message_ЦБ_СД.xml";
КаталогСинхронизации = "C:\CloudExchange\";
ВременныйКаталог = КаталогВременныхФайлов();
ПутьКВременномуФайлу = ВременныйКаталог + ИмяФайлаОбмена;
ПутьКФинальномуФайлу = КаталогСинхронизации + ИмяФайлаОбмена;
// Шаг 1: Записываем данные во временный файл
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ПутьКВременномуФайлу, "UTF-8");
// Здесь происходит сериализация данных и запись структуры обмена
// ...
ЗаписьXML.Закрыть();
// Шаг 2: Атомарно перемещаем готовый файл в каталог синхронизации облака
ФайлНаДиске = Новый Файл(ПутьКВременномуФайлу);
Если ФайлНаДиске.Существует() Тогда
// Если старый файл обмена в облаке существует, удаляем его перед копированием
СтарыйФайл = Новый Файл(ПутьКФинальномуФайлу);
Если СтарыйФайл.Существует() Тогда
УдалитьФайлы(ПутьКФинальномуФайлу);
КонецЕсли;
// Перемещаем файл
ПереместитьФайл(ПутьКВременномуФайлу, ПутьКФинальномуФайлу);
КонецЕсли;
Если вы хотите полностью отказаться от установки утилит синхронизации на компьютерах пользователей, вы можете реализовать отправку и получение файлов обмена напрямую из кода 1С, используя HTTP-соединение и REST API облачного провайдера — для этого подойдёт инструмент настройки обмена между базами через REST API. Данный способ работает абсолютно бесплатно и не зависит от ограничений десктопных приложений.
Рассмотрим пример функции отправки файла на Яндекс.Диск с использованием REST API по протоколу HTTPS:
Функция ОтправитьФайлВОблако(ЛокальныйПутьКФайлу, ПутьВОблаке, ТокенАвторизации) Экспорт
// Шаг 1: Получаем URL для загрузки файла у API Яндекс.Диска
ИмяФайла = Новый Файл(ЛокальныйПутьКФайлу).Имя;
АдресЗапроса = "/v1/disk/resources/upload?path=" + КодироватьСтроку(ПутьВОблаке + "/" + ИмяФайла, СпособКодированияСтроки.URLПреобразование);
SSL = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый HTTPСоединение("cloud-api.yandex.net", 443,,,,, SSL);
ЗаголовокHTTP = Новый Соответствие;
ЗаголовокHTTP.Вставить("Authorization", "OAuth " + ТокенАвторизации);
Запрос = Новый HTTPЗапрос(АдресЗапроса, ЗаголовокHTTP);
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния <> 200 Тогда
ВызватьИсключение "Ошибка получения URL для загрузки: " + Ответ.ПолучитьТелоКакСтроку();
КонецЕсли;
// Читаем JSON ответ и получаем URL загрузки
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
ДанныеОтвета = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
URLЗагрузки = ДанныеОтвета.href; // Прямая ссылка для PUT-запроса
// Шаг 2: Отправляем файл непосредственно на полученный URL
// Парсим полученный URL для создания нового HTTP-соединения
СтруктураURL = РазобратьАдресЗагрузки(URLЗагрузки);
СоединениеЗагрузки = Новый HTTPСоединение(СтруктураURL.Хост, 443,,,,, SSL);
ЗапросЗагрузки = Новый HTTPЗапрос(СтруктураURL.Путь);
ЗапросЗагрузки.УстановитьИмяФайлаТела(ЛокальныйПутьКФайлу);
ОтветЗагрузки = СоединениеЗагрузки.Записать(ЗапросЗагрузки);
Возврат (ОтветЗагрузки.КодСостояния = 201); // 201 Created означает успешную загрузку
КонецФункции
Использование REST API — наиболее надежный метод интеграции 1С с облачными сервисами, так как он исключает влияние системных утилит, конфликты блокировки файлов операционной системой и не требует администрирования стороннего софта на рабочих станциях пользователей.