Добрый день. Есть 2 базы, одна типовая БП 30, вторая немного доработанная БП 30, обмениваются через план обмена по правилам. Ранее использовался транспорт для обмена - ftp.
Сейчас решили переделать транспорт на web сервис. Опубликовали стандартные web сервисы: exchange_2_0_1_6.1cws,exchange.1cws,InterfaceVersion.1cws. Подключение проходит, ошибок не выдает, но когда запускаю обмен, вылетает с ошибкой:
Ошибка SOAP сервера: Неизвестная ошибка. {ОбщийМодуль.ОбменДаннымиСервер.Модуль(2702)}: {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(5717)}: Не указано имя файла для загрузки данных (Имя файла для загрузки)
Может кто сталкивался с подобной ошибкой, подскажите, что может быть?
Спасибо.
(1) markela, Можешь рассказать общий ход настройки такого обмена ?
Для чего веб сервисы ?
exchange_2_0_1_6.1cws
exchange.1cws
InterfaceVersion.1cws.
Может на какую нибудь документацию сошлешься ?
У меня такая ошибка была по невнимательности.
В настройках подключения настроил обмен по web. Запускаю вручную - все работает.
Но обмен по расписанию не проходит - валится эта ошибка. Уже позже заметил, что в настройках обмена по расписанию (сценарий синхронизации) в строках получения/отправки данных был установлен неверный тип подключения.
Сталкивался с такой проблемой, лечилось грохоньем настроек параметров обмена и созданием настроек, через конструктор с вариантом обмен через (сервис), до этого было настроено через прямой обмен, потом менял на веб сервис и получал такую ошибку, в принципе можно и в коде три строчки кода добавить сохранить сообщение обмена как файл и в параметр записать путь до файла, ошибка говорит, что ожидается файл, вот и даешь ей файл.
Стоит обратить внимание, что при гроханье настроек параметров обмена, затрется регистр соответствия объектов инф.баз, если там у вас есть не автоматически созданные соответствия, то нужно выгрузить данные регистра перед этим, а потом вернуть назад и заполнить в записях узел инф.базы, указать вновь созданный.
Проблема в том, что в БСП я не увидел, как она собирается обрабатывать Сообщение в виде текста и при этом хочет обрабатывать файл. Нашел два пути решения:
- проставлять WSИспользоватьПередачуБольшогоОбъемаДанных = Истина - скрытый параметр в Настройке транспорта, и тогда обрабатывается уже файл.
- В начале процедуры ОбменДаннымиСервер.ПрочитатьСообщениеСИзменениямиДляУзла сохранять Сообщение в файл следующим кодом:
Если Не ПустаяСтрока(СообщениеОбмена) И НЕ ЗначениеЗаполнено(ИмяФайлаСообщенияОбмена) Тогда
ВремКат = КаталогВременныхФайлов();
ИмяФайлаСообщенияОбмена = ВремКат + "ОбменКостыль.xml";
Файл = Новый ЗаписьТекста(ИмяФайлаСообщенияОбмена, );
Файл.Записать(СообщениеОбмена);
Файл.Закрыть();0
КонецЕсли;
У меня проблема была в базе отправителе, были некорректные данные, поэтому файл не формировался и в базе получателе выходила ошибка - Не указано имя файла для загрузки данных. По логу в базе отправителе ошибки поправил и обмен заработал.
Принято считать, что гении опережают свое время. А тут - наоборот, генитальный ответ на вопрос из прошлого, заданный семь лет назад! И ничего, что уже на следующий день было дано решение - это же был совет обычного человека!
Наверняка автор все семь лет мучился этой проблемой, но теперь, наконец-то, он может вздохнуть спокойно! Слава Гению! ;-)