Необходимо через web-сервис перекинуть из базы1 в базу2 документ. Перекидываться он должен при проведении документа в базе 1. Сделал веб сервис в базе2, вроде работает, но создавал все в расширении. При публикации на веб-сервер, не отображается операция созданная в расширении. Было бы здорово если бы была инструкция какая-то как в расширении это все реализовать.
---
Ругаться прекращай - ты становишься только тупее, когда используешь мат...
Просто поверь - это истина...

Вот обработка, которая отправляет документ, упакованный в XML WEB сервису...
А уж сервис распаковывает присланное и пытается создавать документ.
Последнее я прислал тебе в личку
---
При публикации то что сделано в расширении не видно в окне публикации. Достаточно поставить галку публиковать из расширения
---
Эту проблему уже решил. Как теперь с расширения первой базы перекинуть документ при проведении в расширение другой базы
---
Из базы 1 обращаетесь к сервису базы 2 в нужный момент и все вобщем-то
---
Как обращаться? Есть какие-то видео уроки может быть?
---
да здесь же и поищите, полно статей
---
к сервису другой базы или серверу? Т.е. и другую базу нужно закинуть на вебсервер?
---
нет. В базе приемнике у вас есть сервис. Он опубликован. Вам нужно из базы источника обратиться к этому сервису
https://infostart.ru/public/all/?st=t&sort=postsd&public-filter%5Bsearch%5D=web-%F1%E5%F0%E2%E8%F1
---
Короче я как-то не так создал походу веб сервис ибо он не работает
---
В базе приёмнике должен быть сервис, при публикации его, написаны все данные для обращения к нему, типа
"/mybase/hs/serv_exchange/MyService/"
Создаёте http-соединение с этой базой (из базы источника), засовываете строку запроса в это соединение, например так

СтрокаЗапроса = "/mybase/hs/serv_exchange/MyService/";
HTTPЗапрос = Новый HTTPЗапрос(СтрокаЗапроса);
Попытка
HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ДвоичДанные);
Результат = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
КодСостояния = Результат.КодСостояния; //какой-то код, что успех
СообщениеОтСервиса = Результат.ПолучитьТелоКакСтроку();
Исключение
// исключение здесь говорит о том, что всё плохо
КонецПопытки;
Где ДвоичДанные - это собранная xml например, структуру которой вы согласовали сами (данные для шапки и тч товары например), и всё, дергаете сервис, получаете ответ.
---
Ну и соответственно, в том же приёмнике у вас должен быть код, который разбирает к примеру эту xml, проверяет крит. данные и создаёт документ.
---
Жестко, вроде понятно, но ниче не понятно)
---
Что в итоге интересует? Или что не получается?
---
Ну я сделал веб сервис, проверил его работу, передал туда слово "привет", получил "Привет". Вот как документ передать вообще не догоняю прям вот от слова совсем
---
в сервисе нужно прописать алгоритм обработки полученных данных. Для тестирования можно использовать программу SOAP UI
---
как эти данные туда передать?
---
https://infostart.ru/public/537861/ как работать с SOAP
---
с чем проблема сейчас? как из базы источника подключиться и передать в базу приемник?
---
(21) как из базы источника подключиться и передать в базу приемник? Да, именно!
---
подключиться скорее как передать, подключиться я уже подключился через ws-ссылку
---
код сервиса можете показать из базы приемника?
(26) код можно взять за основу. Посмотреть понять как реализовывать.
---
```1c
    Функция AddCustomerFL(Customer)
    Если Customer = "Привет" Тогда
    Ответ = "Привет"
    Иначе
    Ответ = "Не привет"
    конецЕсли;
    Возврат(Ответ);
    КонецФункции
```
---
Вот так я ее вызывал

```1c
    Ответ = Сервис.AddCustomerFL(Привет);
```
---
Т.е. теоретически мне можно так же передать ТаблицуЗначений или еще чего а там получить просто и все, но у меня пишет шо не похожие типы данных
---
Формируй xml, по какому принципу тебе удобнее, пакуй её в двоичные данные, засовывай в тело запроса. Она к тебе и прилетит, так же как и привет прилетел, потом читай её и подготавливай данные для записи.
---
как-то так xml формировать? https://www.vdgb.ru/kompaniya/tehpodderzhka-1s/faq/kak-iz-odnoj-bazy-perenesti-dokument-v-druguyu-bazu-cherez-xml-fajl/
---
Можно и так, можно конкретные поля, какие тебе нравятся или нужны , типа так

```1c
    Запись = Новый ЗаписьXML;
    Запись.ОткрытьФайл(ИмяФайла,"UTF-8");
    Запись.ЗаписатьОбъявлениеXML();
    Запись.ЗаписатьНачалоЭлемента("number");
    Запись.ЗаписатьТекст(НомерДокумента);
    Запись.ЗаписатьКонецЭлемента();//number
    Запись.ЗаписатьНачалоЭлемента("date");
    Запись.ЗаписатьТекст(Формат(ДатаДокумента, "ггггММддЧЧммсс"));
    Запись.ЗаписатьКонецЭлемента();//date
```

И так далее, товары например, суммы, контрагентов (инн\кпп или что тебя интересует). Потом в двоич данные, и отсылай к себе на приёмник и разбирай потом чтением xml
---
А как в двоичные переделать? Это я получается на компе где-то файл xml создам?
---
Формируешь имя файла, получаешь его временную болванку. Это как пример просто.

```1c
    ИмяФайла= КаталогВременныхФайлов() + ИмяВремXML;
    Открываешь его и пишешь.
    Запись.ОткрытьФайл(ИмяФайла,"UTF-8");
    Заканчиваешь писать
    Запись.Закрыть();
    Упаковываешь
    ДвоичДанные= Новый ДвоичныеДанные(ИмяФайла);
```
---
Заканчиваешь писать в этом месте можно просто ссылку на документ дать чтобы он все поля взял?
---
```1c
    Запись = Новый ЗаписьXML;
    Запись.ОткрытьФайл(ИмяФайла,"UTF-8");
    Запись.ЗаписатьОбъявлениеXML();
    Запись.ЗаписатьНачалоЭлемента("number");
    Запись.ЗаписатьТекст(НомерДокумента);
    Запись.ЗаписатьКонецЭлемента();//number
    Запись.ЗаписатьНачалоЭлемента("date");
    Запись.ЗаписатьТекст(Формат(ДатаДокумента, "ггггММддЧЧммсс"));
    Запись.ЗаписатьКонецЭлемента();//date
    . . . . . . . . . . .
```

Записал всё что тебе нужно тут и закрыл писанину.

Запись.Закрыть();
---
Я не знаю, скорее всего можно. Чтобы уменьшить объём передаваемых данных, я сам её формирую, то есть конкретно только то, что меня интересует на приёмнике для создания того же документа
---
```1c
    Срвис = WSСсылки.МТД_WSСсылка1.СоздатьWSПрокси("http://localhost/Metod/","MTD_WebService","MTD_WebServiceSoap");

    // Выгрузить в файл xml.
    ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.ОткрытьФайл("C:\Users\Server1C\Desktop\savedoc.xml");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Root");
    // Получить объект по ссылке.
    ВыгружаемыйОбъект = Объект.ВыборДокумента; //Документ.ПолучитьОбъект();
    // С помощью средств сериализации записать объект в файл.
    ЗаписатьXML(ЗаписьXML,ВыгружаемыйОбъект);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.Закрыть();

    ДвоичДанные= Новый ДвоичныеДанные("C:\Users\Server1C\Desktop\savedoc.xml");

    Ответ = Сервис.AddCustomerFL(ДвоичДанные); //Передача на веб сервис
    Сообщить(Ответ);
```

Так как-то?
---
Да
Только по поводу передачи не знаю, не видно, что именно ты там делал

Обратись сюда (10)
---
Окей, только ошибка будет, т.к. параметр который я передаю тут

```1c
    Ответ = Сервис.AddCustomerFL(ДвоичДанные);
```

Не совпадает по параметру который тут

```1c
    Функция AddCustomerFL(Customer)
```

Customer это параметр куда передадутся двоичные данные.... Какой тип надо поставить параметру?
---
Перед посылом тебе надо устанавливать тело из двоичных данных, как писалось в (10)
А на приёмнике например ты ожидаешь чтото

```1c
    Функция ИмяМоегоСервиса(ЗапросЧтоПрилетел)

    XMLФайл = ЗапросЧтоПрилетел.ПолучитьТелоКакСтроку();

    //пишу в болванку
    ВФ = ПолучитьИмяВременногоФайла("XML");
    Файл = Новый ЗаписьТекста(ВФ , КодировкаТекста.UTF8);
    Файл.ЗаписатьСтроку(XMLФайл);
    Файл.Закрыть();
```

итд.
И вот у меня есть xml, которую я могу читать и конвертировать.
---
Короче, сервис плохой, нужно переписать нормально.
Не понял, что переписать?
---
проехали
---
Что за ошибка? Через отладчик не могу глянуть, появляется в модуле веб сервиса
---
тип параметра у веб-сервиса какой?
---
string (http://www.w3.org/2001/XMLSchema)
---
попробуйте изменить на base64Binary или hexBinary
---
Тоже самое
---
Отбой, нет ошибки, вроде как передает все, ибо ответ с той базы пришел
---
что мне теперь делать с полученными там двоичными данными?
---
А получать документ принципиально нужно через WEB сервис?
Может попробовать сначала COM...
---
Ну, вообще, да, я просто уже так начал да и сказали через веб сервис это делать. Да и не зря же я день потел чтобы его сделать :)))))))))))))
---
https://infostart.ru/public/312707/ вот еще вроде простой пример
---
мне кажется это не то вообще, там что-то с сайтами связано
---
ссылки не пытаетесь передать случайно? через web-сервисы можно только примитивные типы передавать
---
Ну я посмотрел в отладке передаю таблицу значений, но в веб сервисе тоже должен быть правильный тип указан ведь?
---
ТЗ передавайте через ЗначениеВСтрокуВнутр
(34) сначала попробуйте просто передать ТЗ с одной-двумя колонками строковыми и одной строкой
---
Сообщение было скрыто модератором.
---
Ругаться прекращай - ты становишься только тупее, когда используешь мат...
Просто поверь - это истина...

Вот обработка, которая отправляет документ, упакованный в XML WEB сервису...
А уж сервис распаковывает присланное и пытается создавать документ.
Последнее я прислал тебе в личку
---
я уже скачивал это, у меня не работает. Там он как-то экспорт базы делал или что-то вроде, я не понимаю зачем??? И веб сервис он там не использует
---
ты ЭТО скачивать не мог!!!
Это моя обработка писанная на коленке в течение последнего часа...
---
https://infostart.ru/public/1051370/
---
Очень похоже, наверное
---
Ты отладкой пользуешься?
Вот и смотри что и КАК упаковывает обработка...
В отладке увидишь упакованный в XML твой выбранный документ.
Что тебе еще нужно то?
---
Ты отладкой пользуешься?
Это же внешняя обработка, как ее отладкой проверить?
---
И в чем проблема то???
Открываешь обработку в конфе , ставишь точки , запускаешь из конфы 1C Предприятие.
Запускаешь ту же обработку - все...
Должна остановиться в точках...

Про отладку самого WEB сервиса потом расскажу...
---
НаборСхемXML = Новый НаборСхемXML;
 Файл = Новый Файл("D:\heaven\Desktop\Projects\XDTO\export-2.xsd");
 НаборСхемXML.Добавить(ПолучитьСхемуXML(Файл.ПолноеИмя));
 Файл = Новый Файл("D:\heaven\Desktop\Projects\XDTO\export.xsd");
 НаборСхемXML.Добавить(ПолучитьСхемуXML(Файл.ПолноеИмя));
 МояФабрика = Новый ФабрикаXDTO(НаборСхемXML);

Тут из двух файлов создается, а должно ведь из документа
---
Вот это ты вообще про что ?
Какие файлы? зачем они тебе?
У тебя проводится документ в базе? - после проведения пиши процедуру, которая напрямую отправит этот документ WEB сервису, без всяких файлов
---
Для того чтобы отправить документ его надо сформировать в XDTO пакет. А для этого в той обработке используются 2 файла

```1c
    НаборСхемXML = Новый НаборСхемXML;
    Файл = Новый Файл("D:\heaven\Desktop\Projects\XDTO\export-2.xsd");
    НаборСхемXML.Добавить(ПолучитьСхемуXML(Файл.ПолноеИмя));
    Файл = Новый Файл("D:\heaven\Desktop\Projects\XDTO\export.xsd");
    НаборСхемXML.Добавить(ПолучитьСхемуXML(Файл.ПолноеИмя));
    МояФабрика = Новый ФабрикаXDTO(НаборСхемXML);
```

Ну либо я чего-то не понимаю как сформировать этот пакет
---
открывали вообще мою обработку? запускали?
что она вам сформировала?
---
Она ошибки выводить будет, потому что файлов нет

```1c
    Файл = Новый Файл("D:\heaven\Desktop\Projects\XDTO\export-2.xsd");
```
---
Почему вы вообще используете ЭТИ файлы?
У вас что стандартная Фабрика не работает?
---
Я не использую, эти файлы у Вас прописаны в обработке
---
Мне нужно лишь из документа просто взять и сформировать XDTO пакет отправив его на веб сервис и все, ничего более, но как это сделать, ума не приложу
---
Я тебе обработку послал?

Может все-таки запустишь и посмотришь ЧТО она сформирует?
---
Там какой-то кадровый перевод, это что, документ туда вставлять?
---
ну если есть у тебя такой документ - вставь...
Если нет - исправь тип этого реквизита на тот который тебе нужен ...
Иам же главное посмотреть КАК оно упаковывается
---
Оно ж не связано никак с твоим вэб сервисом и без отладки - просто выдаст бредююююю
---
со своим сервисом вроде связал уже
---
ДокОбъект=Объект.ЗаданиеПрокраммисту.ПолучитьОбъект(); тут должна быть ссылка на документ?
---
А, стоп, не то смотрел, емае, аххахаха
---
вот вот ))))))))
---
Поле кадровый перевод это что должно быть?
---
То есть пакет создается на основании файлов схемы, а не документа
---
у вас типовые базы?
---
УНФ и КА2
---
Не пойму ошибку
---
Вы отладку включили?
Я уже в 10 раз наверное спрашиваю
---
Это ошибка в вебе, как там смотреть отладку?
---
разобрался
---
ХМЛ= РаспаковатьРезультатXML(para); пишет что объект не найден
---
Покажи весь текст того места, где у тебя выдает ошибку...
Видимо para - ты не определил - он же русским по белому пишет!
---
para пишет что это строка, все верно, это передается параметр
---
Речь была не про para явно, а про РаспаковатьРезультатXML скорее всего ты забыл его прописать , а потом уж прописал...
а para - ясно строка - это же пришедший XML, а он и есть строка... длиииинная, но строка
---
Я просто где ты писал ПолучитьОбъект() я этого не написал и получал ссылку. Теперь эта ошибка что на скрине, ща в отладке разбираю, пока не пойму в чем дело
---
ну а на каком основании ты взял и убрал ПолучитьОбъект() ??????????????
---
Дурачок:)
---
Но я уже вернул, все норм, теперь ошибка, на скрине выше вылетает
---
СтрПараметров = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);

ЧитатьXML не хочет
---
То есть тебе пишешь, пишешь как будет работать.... а ты фантазируешь, вносишь извини уж дурацкие коррективы и потом жалуешься, что вот совсем не работает...
Сначала нужно построить рабочий скелет, то есть чтобы хоть КАК-ТО ракботало, пусть не так как тебе нужно, но работало без ошибок, а потом уж вносить доработки до нужной кондиции.
---
Я изменял потому что ошибки выдавало, а потом перестало выдавать.

СтрПараметров = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);

Тут я ничего не менял, оно само не читает
---
почему так?
---
Начнем с того, у тебя в обеих базах есть тот тип документов , который ты передаешь?
Во вторых посмотри отладкой - что у тебя вот так выглядит процедура распаковки
```1c
    Функция РаспаковатьРезультатXML(ЧтоРаспаковываем)

    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(ЧтоРаспаковываем);
    СтрПараметров = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);

    Возврат СтрПараметров;

    КонецФункции
```

В третьих поставь точку останова на СтрПараметров = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
И посмотри что у тебя в ЧтоРаспаковываем и в ЧтениеXML
---
В чтораспаковываем у меня тоже самое что и в para

В ЧтенииXML у меня все пусто вроде как