Моя интеграция 1С с Sharepoint 365

В статье речь пойдет о том, как я загружал файлы на портал Sharepoint и какие подводные камни встретил там.

Загрузка файлов, как и в целом интеграция с Sharepoint оказалась не такой уж и сложной. Всего лишь десяток подходов к этому вопросу и профит.

Вводная часть

Sharepoint умеет обрабатывать soap запросы и выдавать результат в xml естественно. Более подробно о веб-сервисах Sharepoint можно почитать тут: http://msdn.microsoft.com/en-us/library/dd878586%28v=office.12%29.aspx

С помощью soap запросов можно сделать очень многое (добавлять, редактировать, удалять списки и элементы списков, загружать файлы и многое другое).

Что такое soap? Это протокол для обмена чего-либо с чем-либо (в моем случае 1С с Sharepoint) в формате xml.

Моя реализация

XMLHTTP=Новый COMОбъект(«Msxml2.XMLHTTP»);

Почему именно «Msxml2.XMLHTTP», а не «WinHttp.WinHttpRequest.5.1» и не Новый WSОпределения вы сможете прочитать в подводных камнях.

Формирую строку в xml виде, использую шпаргалку по веб-сервису «copy.asmx». Шпаргалку ищем тут: http://sharepoint.microsoft.com/_vti_bin/copy.asmx.

Далее post запрос к веб-сервису Sharepoint со строкой в xml виде. Полный список веб-сервисов тут: http://msdn.microsoft.com/en-us/library/bb862916%28v=office.12%29.aspx.

Полученный ответ с помощью XMLHTTP.ResponseText() записываю в файл.

Для разбора xml использую Новый COMОбъект(«MSXML2.DOMDocument»).

Профит

Если кому-то нужно больше исходного кода — прикрепляю готовую обработку для загрузки файлов

Подводные камни

Авторизация. Чтобы это заработало нужно сначала авторизироваться на login.microsoftonline.com (Это же офис 365) и поставить галочку «Запомнить меня»

Авторизация на login.microsoftonline.com с помощью Com объектов у меня так и не получилась. Если кто умеет — отзовитесь пож-та.

Использование WinHttp.WinHttpRequest.5.1 не подходит, т.к. не умеет работать с куками. А куки нам нужны, чтобы знать, что авторизация пройдена.

Новый WSОпределения не умеет работать с сертификатами ssl по слухам, но я свои ощущения могу описать лишь так: Выдает ошибку при обращении к функции. Ошибка похожа на что-то такое: cannot resolve host name.

Авторизация с помощью веб-сервиса «Authentication.asmx» — отключена в Sharepoint 365. А я так на нее надеялся.

Заключение

Есть еще надежда, что прикрутив доменную аутентификацию к Sharepoint 365 не будет проблем с авторизацией, но наши админы пока этого не сделали и сказать, что это выгорит я не могу.

Поставленную задачу выполнил, чего и вам желаю.

22 Comments

  1. opx

    Если у кого будут вопросы — задавайте. Помогу по возможности, т.к. я эту тему неплохо прокачал и получил level up

    Reply
  2. tango

    (1) расскажите лучше, почему — шерепойнт? т.е. какие резоны использовать именно это в связи с вашей задачей

    Reply
  3. sikuda

    (1) А почему реализация через COMОбъект. Было бы интереснее узнать подводные камни реализации через 1С WebService и ЧтениеXML. Не думали об этом?

    Reply
  4. opx

    (2)Sharepoint — корпоративный портал. Решение об его приобретении принимал не я.

    Мне нужно было вести документы (скан-копии) по номенклатуре и решили, что эти документы должны быть еще и в Sharapoint. Таким образом документы прикрепляются только в 1С, а отображаются в 1С и Sharepoint

    Reply
  5. opx

    (3)ЧтениеXML — ранее работал… непонравилось… не помню почему. Про 1С WebService я написал в статье, что получал ошибку. В интернете пишут, что нет поддержки ssl. Сам я так и не понял что с ним.

    Reply
  6. Spacer

    А что такое «офис 365» и как туда коннектиться?

    Это какой-то тестовый сервис майкрософта или это имеет отношение к вашей организации?

    Reply
  7. opx

    (6)Это офис 2013 в облаке. Очень удобная штука. Ежемесячная плата около 700 р. с пользователя в месяц, и при этом все сервера на стороне Майкрософт: Exchange, Lync, SharePoint. У пользователя же получаем офис пакет (до 5 устройств на пользователя). Подробно можно в гугле найти. Наберите офис 365

    Reply
  8. Pooh77

    Добрый день, меня интересует вопрос интеграции 1С с SharePoint, но не 365, это возможно с помощью Вашей обработки?

    Reply
  9. opx

    (8)Должно взлететь, если 2013. По сути 365 office добавляет сложностей. Вы для авторизации можете использовать soap сервис (365 запрещает это делать)

    Reply
  10. Pooh77

    Извините, может глупый вопрос, я не силен в настройке sharepoint, но где мне взять ссылку для авторизации soap сервиса на моем портале или как это настроить в sharepoint

    Спасибо

    Reply
  11. ivanov660

    Если стандартные методы не подходят, то можно создать/ написать свой сервис asmx, что позволит реализовать кастомную авторизацию, доступы к спискам и др.

    Reply
  12. nSpirit2

    Вопрос вы пишите что доступ через SOAP а почему использовали COM объект а не стандартный функционал 1с для работы с WS ссылками?

    Reply
  13. Ivon

    (8) Pooh77, Sharepoint при добавлении библиотеки документов создает сетевую шару. В дальнейшем забрасывать файлы в Sharepoint можно тупым копированием файла с локального диска на сетевую папку.

    Reply
  14. pvase

    Файл можно открыть по сети, подключив его как ссылку на ресурс Sharepoint (не уверен что для 365 версии такое сработает, для 2010 SP работает). Чтобы получить ссылку на файл необходимо сделать на портале Sharepoint следующие действия в выбранной библиотеке: Закладка «Работа с библиотекой» — «Библиотека» — «Открыть в проводнике». Так получите ссылку на папку, с которой можно читать и при достаточных правах и писать в нее.

    Reply
  15. user_2010

    Есть такой вопрос: сделала веб-сервис в 1С, опубликовала, он работает в SoapUI, еще проверяли из других программ — работает… Но нужно его использовать в программе, которая работает на платформе SharePoint. Так вот у них мой веб-сервис не работает. Как они объясняют: не тот синтаксис веб-сервиса.

    Вот такой синтаксис делает 1С:

    xs:schema targetNamespace=

    xs:element name=

    А вот так надо SharePoint:

    s:schema elementFormDefault=

    s:element name=

    Почему 1С делает «xs», а не «s»?

    Т.е. вместо «<xs:…» должно быть «<s:…».

    Как это сделать в 1С? Как изменить синтаксис опубликованного веб-сервиса?

    Reply
  16. ANARCHY1987

    Подскажите плз.

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

    У меня как раз такая проблема: не могу подключиться к порталу sharepoint ни через WS ссылку, ни через MSXML2.DOMDocument, как раз потому что сервер в домене находится.(отключена plain аутентификация)

    и мои доменные логин и пароль нифига не проходят.

    Метод XMLHTTP.Send(врТекст) возвращает ошибку 401(ошибка аутентификации)

    Я как-нибудь могу обойти это?

    Вообще подскажите что делают обычно в таких случаях, а то я в веб программировании не силен.

    Должны же как-то запускаться веб сервисы, если сервер в домене??

    Заранее спасибо.

    Reply
  17. nanik

    Спасибо за обработку, использовал как пример.

    Реализовал заполнения списка «отсутствующие» на корпоративном портале на основании данных ЗУП

    Reply
  18. KIBerUK

    Имел позитивный опыт интеграции 1С с Sharepoint 365, используя исключительно только возможности 1С.

    Для чтения с Sharepoint получилось использовать как Soap так и Rest.

    Добавления/редактирования записей в таблицах Sharepoint получилось используя Soap.

    Для этого нужно получать куки-безопасности и передавать их в заголовках HTTP запросов к Sharepoint.

    Потратил неделю на танцы с бубном но результата достиг.

    Reply
  19. maksyandra

    (18) Сергей, а не подскажете как вы авторизовались???

    Reply
  20. mironenkods

    Как Вам удалось получить куки?

    Reply
  21. KIBerUK
  22. Azzkijhacker

    Сделал запись файла через HTTPСоединение. Авторизация успешна, отклик сервера 200, отправка файла успешна, сообщение сервер вернул даже с названием папки на Шарике, ответ 200. А печаль в том, что файл физически не появился в нужном месте. Грешу на то, что неправильною строку адреса передаю. Может есть какие нюансы в написании адреса?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *