Переход с классического COM-соединения на обмен данными через веб-сервисы — это важный шаг в развитии ИТ-инфраструктуры любого предприятия. Технология COM (Component Object Model) постепенно уходит в прошлое из-за сложностей с разрядностью систем (32/64 бит), необходимости регистрации библиотек comcntcfg и низкой стабильности в облачных средах. Веб-сервисы, напротив, работают через стандартные протоколы HTTP/HTTPS, что делает их универсальным инструментом для синхронизации между конфигурациями 1С:Бухгалтерия 3.0 и 1С:Зарплата и управление персоналом 3.0.
В этой статье мы подробно разберем, почему при простой смене способа подключения возникает ошибка «Неправильное имя файла», и как пошагово настроить стабильный обмен данными через интернет-соединение.
Разберем ситуацию: у вас уже настроена синхронизация через прямое подключение (COM). Вы заходите в существующий узел обмена и просто меняете «COM-соединение» на «Синхронизация через интернет». В этот момент система выдает ошибку. Выясним причину этого поведения.
Дело в том, что при создании настройки синхронизации 1С жестко прописывает параметры транспорта в регистры сведений, такие как РегистрСведений.ПараметрыШлюзаИнформационныхБаз или настройки в плане обмена. В этих записях сохраняются пути к локальным каталогам и имена файлов (например, Message_БП_ЗУП.xml). При смене типа транспорта на веб-сервис система пытается инициализировать старые объекты метаданных, которые больше не актуальны, но продолжают фигурировать в программном коде инициализации обмена.
Рекомендация: Никогда не пытайтесь «переключить» существующую настройку с COM на веб-сервис «на лету». Это приведет к конфликту параметров в базе данных. Правильный путь — создание новой настройки синхронизации с нуля, предварительно удалив или деактивировав старую.
Прежде чем настраивать что-то в самой 1С, мы должны убедиться, что база-приемник доступна извне. Проанализируем процесс публикации на примере IIS (Internet Information Services):
EnterpriseDataExchange. Именно этот сервис отвечает за современную синхронизацию в формате Enterprise Data (КД 3.0).Exchange, но для БП 3.0 и ЗУП 3.0 приоритетным является именно EnterpriseDataExchange.Проверим работоспособность публикации. Введем в браузере адрес вида: http://имя_сервера/имя_базы/ws/EnterpriseDataExchange?wsdl. Если система запросила логин/пароль и выдала XML-код, значит, публикация прошла успешно.
Для работы веб-сервиса нам понадобится технический пользователь. Не рекомендуется использовать учетную запись администратора с полными правами. Проанализируем необходимые роли:
ExchangeUser.Теперь рассмотрим алгоритм создания подключения в интерфейсе 1С. Мы будем использовать механизм Enterprise Data, так как именно он лучше всего адаптирован под веб-протоколы.
В первой базе (например, ЗУП):
Во второй базе (БП) система должна автоматически определить входящее подключение. Если этого не произошло, в БП также нужно запустить мастер настройки и выбрать «Синхронизация через интернет», указав, что настройка будет выполняться для уже существующей базы.
Часто при первой выгрузке данных (например, всей номенклатуры или кадровой истории) пользователи сталкиваются с обрывом соединения. Разберем, как этого избежать, подкрутив настройки IIS.
По умолчанию IIS ограничивает размер передаваемого контента и время выполнения скриптов. Нам нужно изменить файл web.config, который находится в папке с публикацией базы. Добавим или изменим следующие параметры:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="104857600" />
</requestFiltering>
</security>
</system.webServer>
Здесь значение 104857600 соответствует 100 МБ. Если ваши пакеты данных больше, увеличьте это число. Также проанализируем тайм-ауты. В настройках Application Pool (Пул приложений) в IIS увеличьте значение Idle Time-out и CGI Timeout, чтобы сервер не закрывал соединение раньше, чем 1С успеет подготовить XML-пакет.
Если вы все же решили попытаться реанимировать старую настройку, можно попробовать программно очистить параметры транспорта. Посмотрим на пример кода, который очищает пути к файлам в узле обмена:
ВыборкаУзлов = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.Выбрать();
Пока ВыборкаУзлов.Следующий() Цикл
Если ВыборкаУзлов.Пустая() Тогда Продолжить; КонецЕсли;
ОбъектУзла = ВыборкаУзлов.ПолучитьОбъект();
// Очищаем старые параметры обмена через файлы
ОбъектУзла.ИмяФайлаСообщенияОбмена = "";
ОбъектУзла.Записать();
КонецЦикла;
После выполнения такого кода в консоли запросов или обработке, система перестанет искать локальный файл и будет использовать параметры, заданные для веб-сервиса в регистре ПараметрыШлюзаИнформационныхБаз.
Подведем итоги. Для успешного перехода на веб-сервисы необходимо:
EnterpriseDataExchange на корректно настроенном веб-сервере.Использование веб-сервисов делает обмен данными более гибким, позволяя синхронизировать базы, находящиеся в разных локальных сетях или в облаке, без необходимости настройки сложных VPN-каналов или проброса портов для COM-соединений.