Рушим стереотипы о HTTP и XML. (XMLHTTP и MSXML2) На примере API "Новая Почта"

Публикация № 249741

Разработка - Системная интеграция - Обмен через XML

HTTP XML XMLHTTP MSXML2 API Новая почта

За последние 2 года встречалось много конфигураций, с морально-устаревшими механизмами, написанные гуру старой закалки. В свое время подобные методы были шагом вперед, за что и "респект" их творцам, но время не стоит на месте... Более всего меня угнетает "копи-паст" кода. У большинства 1с-ников со стажем есть целые библиотеки нужных вещиц... Но за 2-3 года все устаревает, а вот библиотечки то остаются без прогресса... Но это еще пол беды... Самое неприятное - это когда "молодые творцы", тем же "копи-пастом", строят целые схемы обменов, наращивая код до полной не читабельности. Решил поделится одним из подобных "атавизмов"... В данной статье подробно опишу схему работы с API посредством XMLHTTP и MSXML2, самым оптимальным (из моего опыта) способом.

UPD 11.2017

Статье больше 2-х лет. Лично я сейчас практически для всего уже использую ElisyNetBridge, гружу ассамблею и ни в чем себе не отказываю. Да и встроенные механизмы 8.3 внушают доверие, касательно кроссплатформенности. Статья на момент написания уже немного уступала прогрессу, а сейчас и подавно. Но кто использует старые платформы с той или иной причины - будет все равно полезно, поэтому публикацию не скрываю. Стандартными механизмами пост запросы иногда без бубна не взлетают, с телом запроса постоянно нужно тыкаться, даже в 838, таки юзал хмлхттп недавно. А в целом - статья морально устаревшая. Да и АПИ Новой Почты уже перешагнуло отметку беты и увидела мир вторая версия.

С чего бы начать... Наверное с самой сути общения 1с и АПИ.

Википедия говорит, что АПИ это  "набор готовых классовпроцедурфункцийструктур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений."

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

Значит суть весьма проста: По HTTP-протоколу отправить POST-запрос и дождатся ответа.

Теперь время немного углубиться... 
Зачастую я встречал такой принцип в большинстве конфигураций: 

1. Генерим XML с помощью Новый ЗаписьXML, сохраняем во временную папку.
2. Открываем НовыйHTTPСоединение() и "пихаем" в него нашу XML.

ОтправитьДляОбработки(ФайлXML, РесурсНаСервере, ФайлРезультата)

3. Получаем XML ответ. 
4. В рекурсии обходим сие багатство с помощью  Новый ЧтениеXML() и складываем все в дерево значений.
5. Опять в рекурсии обходим дерево для получения определенных данных...

 

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

Теперь в кратце, что мы будем оптимизировать на примере апи новой почты:
1. Общение с сервисом переводим на более стабильные xmlhttp
2. Для быстрого получения списка отделений - уходим от универсальности и "рекурсии на все случаи жизни", используем свой парсер msxml2.
4. Так же уйдем от сохранения временных файлов. будем использовать тип "строка" для чтения и передачи XML.
5. Научимся использовать синхронные запросы xmlhttp.

 1. Функция отправки запроса. Весьма легкая на подъем на WIN-осях (Совсем забыл уточнить, о никсах сегодня речь идти не будет)

Функция ОтправитьЗапрос(ТекстXML)
   Адрес = "http://orders.novaposhta.ua/xml.php";
   Попытка 
      XMLHTTP = GetCOMObject("", "Microsoft.XMLHTTP");
      XMLHTTP.Open("POST", Адрес, Ложь);
      XMLHTTP.SetRequestHeader("Content-Type", "text/xml");
      XMLHTTP.Send(ТекстXML);
      Возврат XMLHTTP.ResponseText;
   Исключение 
      Возврат Неопределено
   КонецПопытки;
КонецФункции


Функция вернет ResponseText, в нашем случае, это такой же текст XML, как мы отправляли, который нам необходимо прочитать и обработать. И тут начинается настоящая магия =)

Что бы не отвалиться на пустом ответе - проверим код ответа.

Функция ПрочитатьResponseTextXML(ResponseText)
   xmlParser= новый COMОбъект("msxml2.domdocument.6.0"); //Подняли ком 
   xmlParser.loadXML(ResponseText); // Сказали прочитать текст XML
   responseCode = xmlParser.selectSingleNode("//response/responseCode").text;//Нашли представление узла по абсолютному пути
   Возврат responseCode; // Вернули полученное значение
КонецФункции

xmlParser ведет себя весьма дружелюбно при чтении пустой строки или некорректного ответа. И на инглише отвечает нам исключением, если что... Но подстраховатся не помешает, темболее это лишит нас лишних дальнейших"телодвижений"

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

Функция ПолучитьТаблицуОтделений(АПИКлюч,Город) Экспорт
   
   ОтветXMLHTTP = ОтправитьЗапрос(ТекстXML);
   Если ОтветXMLHTTP = Неопределено Тогда 
      Возврат Неопределено;
   КонецЕсли;
   ТаблицаРезультат = ПрочитатьXMLПодразделений(ОтветXMLHTTP, Город);
   Возврат ТаблицаРезультат;
КонецФункции

ОтветXMLHTTP, при успешном соединении, содержит в себе текст XML, над которым будем танцевать с бубном, что бы пропарсить как можно быстрее. 

Функция ПрочитатьXMLПодразделений(XMLString, Город)
   ТаблицаРезультат = Новый ТаблицаЗначений; // Инициализируем ТЗ
   ТаблицаРезультат.Колонки.Добавить("Город");
   ТаблицаРезультат.Колонки.Добавить("Адрес");
   ТаблицаРезультат.Колонки.Добавить("НомерОтделения");

   xmlParser= новый COMОбъект("msxml2.domdocument.6.0"); // Поднимем КОМ
   xmlParser.loadXML(XMLString);

   responseCode = xmlParser.selectSingleNode("//response/responseCode").text; // Получим значение узла responseCode
   Если responseCode = "200" Тогда
      colNodes = xmlParser.selectNodes("//response/result/whs/warenhouse[cityRu='"+Город+"']");
      // конструкция [cityRu='"+Город+"'] вернет мне массив узлов уровня warenhouse, где cityRu равен Город
      Если colNodes.length = 0 Тогда
         // если совпадений на ру - нет, то ищем названия на укр.
         colNodes = xmlParser.selectNodes("//response/result/whs/warenhouse[city='"+Город+"']"); 
      КонецЕсли;
      Для Каждого ElementNodes из colNodes Цикл
         НоваяСтрока = ТаблицаРезультат.Добавить();
         НоваяСтрока.Город = ElementNodes.childNodes.item(3).text;
         НоваяСтрока.Адрес = ElementNodes.childNodes.item(6).text;
         НоваяСтрока.НомерОтделения = ElementNodes.childNodes.item(7).text;
      КонецЦикла;
   КонецЕсли;

   Возврат ТаблицаРезультат;

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

И напоследок призент =)

Состояние заказа... Видел я как-то 3-х этажную функцию по получению статуса... Вот думаю, поделюсь более свежей. 

 

Функция ПолучитьСостояниеЗаказа(НомерЗаказа, АПИКлюч) Экспорт

   
   ОтветXMLHTTP = ОтправитьЗапрос(ТекстXML);
   Если ОтветXMLHTTP = Неопределено Тогда 
      Возврат "";
   КонецЕсли;

   xmlParser= новый COMОбъект("msxml2.domdocument.6.0");
   xmlParser.loadXML(ОтветXMLHTTP);

   responseCode = xmlParser.selectSingleNode("//file/document");

   Если responseCode <> Неопределено Тогда
      Статус = responseCode.getAttribute("status");
      Если Статус <> Неопределено Тогда
         Возврат Статус;
      КонецЕсли;
   КонецЕсли;

   Возврат "";
КонецФункции

Надеюсь потратил не зря время на написание сего труда и пару советов все же почерпнуть можно =)))
Лично в моем случае прирост быстродействия, в последней измененной конфигурации, в среднем составил 400-500 % 

З.Ы. Прошу прощение за скрины с xml, при сохранении все тэги удалялись... Не знаю с чем связано... 

Специальные предложения

Лучшие комментарии
29. Alexander.Shvets 218 30.08.16 13:38 Сейчас в теме
(27) CagoBHuK, Статье больше 2-х лет. Лично я сейчас практически для всего использую ElisyNetBridge, гружу ассамблею и ни в чем себе не отказываю. Да и встроенные механизмы 8.3.8 внушают доверие, касательно кроссплатформенности. Статья на момент написания уже немного уступала прогрессу, а сейчас и подавно. Но кто использует старые платформы с той или иной причины - будет все равно полезно, поэтому публикацию не скрываю. Стандартными механизмами пост запросы иногда без бубна не взлетают, с телом запроса постоянно нужно тыкаться, даже в 838, таки юзал хмлхттп недавно. А в целом - статья морально устаревшая. Да и АПИ Новой Почты уже перешагнуло отметку беты и увидела мир вторая версия.
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Rothschild 09.01.14 19:38 Сейчас в теме
Быстродействие - это наше все!
***
правда многие добиваются этого за счет относительно дешевых сейчас аппаратных ресурсов.

Больше камней, больше памяти (всякой)...вместо оптимизации програмного кода
2. B2B 267 09.01.14 21:10 Сейчас в теме
(0) А ничего, что Ваш код стал платформозависимым?
u_n_k_n_o_w_n; Magister; корум; Трактор; vlad.frost; slavik27; Vlasenko.Oleg; bulpi; German; awk; baton_pk; +11 1 Ответить
3. cool.vlad4 45 10.01.14 01:05 Сейчас в теме
вранье какое-то...как раз наоборот раньше использовали XMLHTTP и MSXML2 (по моим ответам на форуме 2-3 годичной давности посмотрите, да что уж там, поиском любым воспользуйтесь) вовсю, в 8-ке (в типовых даже), и особенно в 7-ке. сейчас же стараются использовать встроенные методы, поскольку их поддержка конечному 1С-нику обходится куда дешевле, - оно работает на разных платформах, заявленных 1С-ом.
ЗЫ и чего-то сомневаюсь, что msxml2.domdocument.6.0 такое "легкое на подъем на вин-осях", это если на данной винде установлен msxml нужной версии, что не всегда так.
вот статья http://infostart.ru/public/60330/ 2009-года, но "время не стоит на месте"...и за почти 5 лет особо ничего не изменилось выходит))))
lamelioss; veretennikoff; корум; p1l1gr1m; vano-ekt; Трактор; ZOMI; vlad.frost; Irwin; slavik27; bulpi; ugroblin; DitriX; Yashazz; German; Anselm; awk; baton_pk; +18 Ответить
10. Yashazz 3755 14.01.14 18:16 Сейчас в теме
(3) (4) Согласен.
Я так и не уразумел, что мешало разобрать xml-ответ средствами платформы, удобнее которых мало где встречал. Насчёт асинхрона ещё туда-сюда, хотя можно выкрутиться через HTTPRequest, но всё остальное - мрак.
(8) Кстати, да. Впрочем, XPath из 1С-ников юзают немногие, да и в интернетах говорят, что этот способ не особенно "взлетел".

И, автор, учи русский язык, пожалуйста.
SiAl; Трактор; +2 Ответить
4. Поручик 4491 10.01.14 08:02 Сейчас в теме
Вот как раз API посредством XMLHTTP или MSXML2 я буду использовать в последнюю очередь, и не из-за окостенелости мозга.
vano-ekt; Трактор; vlad.frost; slavik27; CratosX; Yashazz; Anselm; awk; baton_pk; +9 Ответить
5. Alexander.Shvets 218 10.01.14 12:06 Сейчас в теме
(4) Поручик,
А чего же? Что ище в 1с вам поможет добиться асинхронности на тонком клиенте?
Могли бы уточнить, чем будете пользоваться? Стандартным 1с-совским чтением хмл? Он вообще не работает с множествами...

(2) B2B,
Ну вы же спорить не будете, если я скажу, что любое решение в 1с "пилится" под конкретную организацию... И зачем мультиплатформиность в пределах 1-го бизнес-проекта???
Оптимизация работы в пределах одной системы координат намного точнее, чем оптимизация множеств...
Мы говорим о разных вещах.


(3) cool.vlad4,
Я не про методы, я про конфигурации. Может я на столько невезуч, что мне встречается только не качественный код...
По поводу типовых конфигураций - на то они и типовые, что бы продавать, а не для того, что бы на них работать. И для более дешевой разработки используются мультиплатформенные методы, а никак не с целью улучшения продукта.
6. sikuda 649 10.01.14 14:24 Сейчас в теме
7. Alexander.Shvets 218 10.01.14 17:04 Сейчас в теме
(6) sikuda,
На счет версий, не понял. использую последнюю, 6.0

В общем на упр. формах надо бы еще поиграться.
Если читать статью в контексте упр. форм - действительно ересь =)) Тут речь идет об обычном приложении...
8. German 874 11.01.14 09:54 Сейчас в теме
xmlParser лучше поменять на ВычислитьВыражениеXPath

И

Соединение = Новый HTTPСоединение("http://myTestServer", 8080);

Заголовки = Новый Соответсвие();
Заголовки.Вставить("host", "http://myTestServer:8080");  

Запрос = Новый HTTPЗапрос("/order/500", Заголовки);
Запрос.УстановитьТелоИзСтроки("<order>My new order</order>");
Соединение.Записать(Запрос);

Danil.Potapov; vlad.frost; +2 Ответить
9. Alexander.Shvets 218 12.01.14 00:54 Сейчас в теме
(8) German,

Спасибо. Надо будет попробовать. Но с HTTPСоединение у меня постоянно возникали проблемы... Когда сетевой экран задерживает передачу для проверки - то 1с падает с записью дампа памяти. При том, что хмлхттп - дожидался ответа...

В любом случае все коменты подтолкнули более глубже ознакомится с вопросом... Жаль, что конструктивом веет лишь от пары человек, которым отдельное спасибо.
11. DitriX 1851 15.01.14 04:04 Сейчас в теме
Первая мысль, после прочтения статьи, а особенно после такого громкого заголовка была такая - "и?".
Т.е. потом почитав камменты я уже понял в чем приколы.
Я в этом плане полный приверженец СОАПа, ибо он легче на подъем, та и вскоре 1С к тем же методам прикрутят хттп реквесты и прочую лабуду. Так что данную статью можно уже в тот самый архив, о котором писал автор. Дабы младшие - не учились старью :)

А вообще - я когда делал чат для одной фирмы, на обычных формах, я использовал поле хтмл для ввода сообщения, но так как 1С туда пихало свой мусор, в частности версию - ie и прочих приблуд - я обнаружил, что из 200компов - распределение версий всякой фигни настолько значительное, что я потом даже чат переписал на управляемые формы, что бы юзать форматированный документ.

Это я к чему - "msxml2.domdocument.6.0" и ежи с ними - это просто грех юзать. Вы уже или получайте их через настройки системы, или так и говорите - что ваше решение не только вин зависимое, но и указывайте ряд необходимого софта :)
Трактор; slavik27; Vlasenko.Oleg; ugroblin; +4 Ответить
13. awk 727 17.01.14 22:52 Сейчас в теме
(11) DitriX, Уже вот-вот. http://v8.1c.ru/o7/201312http/index.htm. И еще легче чем соап будет. Будет РЕСТ.
Трактор; +1 Ответить
12. nafa 654 15.01.14 10:00 Сейчас в теме
Нормальная статья, нормальное решение.
Чего Вы к этой зависимости от Windows прицепились, большинству народа дргуие системы не интересны. Кроме того парсеры они везде почти одинаковые (названия методов немного отличаются), так что изменить под другую системы не проблема, и перенести код с 1С в другую систему тоже не проблема. Главное - алгоритм, а не его реализация.
Зависимость от 1С же не напрягает почему-то.
Да и еще не известно что дольше проживет как - 1С или windows.
Причин использовать парсер от MS может быть достаточно много, например в версии 8.2 нет возможности штатными средствами проверить файл на соответствие схеме.
14. awk 727 17.01.14 22:53 Сейчас в теме
(12) nafa, Читаей внимательней документацию. Еще как можно.
15. vano-ekt 848 20.01.14 15:52 Сейчас в теме
(0) а щас засунь сей прогрессивный код на не-мс-сервер :)
17. Alexander.Shvets 218 21.01.14 22:35 Сейчас в теме
(15) vano-ekt, Эмм... Как бы... Использование не мс и не рассматривается... Об этом писал в самой статье.

(16) diver.sun, это не для организаций "космос", а для ребят, которые автоматизируют "хотелки" руководителей. Самой же автоматизации нет предела.
На счет хмл файла в 200 мб - это надо быть очень "креативным", что бы писать подобные веб-сервисы, выплёвывающие столько текста. Хм... А 200 мб обходить в цикле - это нормально? Не легче ли "отсеять" только то, что надо, пока объект еще "множество", чем дождатся линейности и ПОСЛЕДОВАТЕЛЬНО обходить такие объемы?

И что-то сомневаюсь, что loadXML "положит любую" базу. На досуге по эксперементирую...
16. diver.sun 21 21.01.14 17:49 Сейчас в теме
Мдя, эко вы далеко загнули. На 80% организаций сама возможность забирать из web какие то данные рассматриваются как космос. А вы устаревшая технология, анархизм...
А вот эта строка "xmlParser.loadXML(XMLString);" если xml файл будет под 200 мб. положит любую машину. Не зря же чтениеXML предоставляет ПОСЛЕДОВАТЕЛЬНЫЙ доступ. Да и ставить дополнительно MSXML 6 который навернет выгрузку регл отчетности в 7-ке проблематично, не надо крушить стереотипы....они кровью писаны.
MsDjuice; knight; +2 Ответить
18. Alexander.Shvets 218 21.01.14 22:39 Сейчас в теме
(16) diver.sun, Совсем забыл.
Да и ставить дополнительно MSXML 6
. MSXML входит в поставку оси. Ни разу не приходилось "регать" какие либо длл для MSXML руками...
19. Трактор 1210 27.01.14 11:57 Сейчас в теме
Метод ОтправитьДляОбработки изменился в версии 8.2. Теперь не обязательно дёргать файловую систему. Ненужно писать запрос и ответ в файлы. Работа встроенными средствами 1С проще и универсальнее.

HTTPСоединение (HTTPConnection)
ОтправитьДляОбработки (Post)
Синтаксис:

ОтправитьДляОбработки(<HTTPЗапрос>, <ИмяВыходногоФайла>)
Параметры:

<HTTPЗапрос> (обязательный)

Тип: HTTPЗапрос.
HTTP-запрос.
<ИмяВыходногоФайла> (необязательный)

Тип: Строка.
Имя выходного файла, в который записываются полученные с сервера данные.
Если не указан или содержит пустую строку, то тело ответа может быть получено из объекта HTTPОтвет.
Возвращаемое значение:

Тип: HTTPОтвет.
Показать
20. Поручик 4491 27.01.14 13:51 Сейчас в теме
(19) Изменился в версии 8.2.18 и позднее. Работать без с файлов отправки можно, если отправляется простой post-запрос, без файлов.
23. Трактор 1210 17.02.14 12:23 Сейчас в теме
Работать без с файлов отправки можно, если отправляется простой post-запрос, без файлов.

(20) Поручик, прикольно сказал:-)
Действительно трудно обойтись без работы с файлами, если надо отправить файл. :-)
Думаю все поняли что ты хотел сказать, но фраза от этого менее смешной не стала.
28. CagoBHuK 32 29.08.16 13:20 Сейчас в теме
(20) Поручик, прекрасно работает "ОтправитьДляОбработки" и с файлами. У меня весь обмен с ЕГАИС на этом построен, а уж какие ТАМ файлы прилагаются мультипартовые - вообще жуть!
21. opx 682 27.01.14 18:07 Сейчас в теме
В принципе через HTTPСоединение можно сделать все, кроме:
1. Переадрезации (в ответ просто выдает 302 ответ). Хотя может у меня просто недостаточно знаний, чтобы организовать переадресацию вручную. Зато вот MSXML делает ее автоматически.
2. Это даже больше уже к построителю DOM: Иногда не хватает функции innerHTML и outerHTML, которые есть у DOMDocument.
22. borrman 28.01.14 20:16 Сейчас в теме
еще HTTPСоединение очень плохо работает (работало - на последних версиях не использовал его уже) с https
24. Поручик 4491 26.02.14 10:54 Сейчас в теме
25. WKBAPKA 225 06.10.14 13:32 Сейчас в теме
Мне статья понравилась. Может реализация кому то и не нравиться, но найти реально живой пример для работы с "Новой Почтой" трудно. А тут сразу скопипастил и проверил. Перестанет работать, перепишу по другому ;)
У меня как раз та ситуация, о которой пишет автор статьи. Клиент которому нужно решить задачу с обменом данными с НП.
Автору респект.
26. Land1966 14.07.15 17:36 Сейчас в теме
Также спасибо автору. Статья помогла реализовать обмен с "Новой почтой" на 7.7 (работают люди еще и на этой платформе). Может кому пригодится, работающий код для 7.7:
Процедура ПолучитьФайлГородов()
	Адрес = "https://api.novaposhta.ua/v2.0/xml/";

	WinHttp = СоздатьОбъект("Msxml2.ServerXMLHTTP.6.0");	
	WinHttp.Open("POST", Адрес, 0);
	
	XMLДокументОтпр = "<?xml version=""1.0"" encoding=""windows-1251""?>
					|	<file>
					|	<apiKey>" + КлючАПИ + "</apiKey>
					|	<calledMethod>getCities</calledMethod>
					|	<methodProperties />
					|	<modelName>Address</modelName>
					|	</file>";	
	
        WinHttp.Send(XMLДокументОтпр); 	// Параметром передаем POST-данные для страницы

	XMLДокументПолуч = Анализатор.СоздатьДокумент();
	XMLДокументПолуч.ЗагрузитьИзСтроки(WinHttp.ResponseText());
	XMLДокументПолуч.Кодировка = "UTF-8";
	
	XMLДокументПолуч.Записать(ИмяФайла1);
		
	WinHttp = 0;
КонецПроцедуры
Показать
27. CagoBHuK 32 29.08.16 13:18 Сейчас в теме
Прочитал по диагонали. Если честно, мне вообще непонятно, зачем программисты используют ЧтениеXML и им подобные, когда есть XSLT. Преобразуйте документ в нативный объект XML 1С, прочитайте его фабрикой и используйте наздоровье, как объект 1С нужного Вам типа (например, Структура).
29. Alexander.Shvets 218 30.08.16 13:38 Сейчас в теме
(27) CagoBHuK, Статье больше 2-х лет. Лично я сейчас практически для всего использую ElisyNetBridge, гружу ассамблею и ни в чем себе не отказываю. Да и встроенные механизмы 8.3.8 внушают доверие, касательно кроссплатформенности. Статья на момент написания уже немного уступала прогрессу, а сейчас и подавно. Но кто использует старые платформы с той или иной причины - будет все равно полезно, поэтому публикацию не скрываю. Стандартными механизмами пост запросы иногда без бубна не взлетают, с телом запроса постоянно нужно тыкаться, даже в 838, таки юзал хмлхттп недавно. А в целом - статья морально устаревшая. Да и АПИ Новой Почты уже перешагнуло отметку беты и увидела мир вторая версия.
30. legzzi 30.05.17 20:11 Сейчас в теме
Друзья подскажите пожалуйста по готовым решениям есть для для рассчета почты РФ и контроль трекинг кода - местонахождения посылки?
32. karapuzzzz 63 17.11.17 16:43 Сейчас в теме
Почему не JSON? По моему это наиболее прогрессивный формат обмена с HTTP API. А если учесть что LiqPay и Viber вообще не предлагают альтернативы кроме как JSON, то и с НП не вижу смысла заворачиваться. ФабрикаXDTO с легкостью пишет/читает JSON используя для этого вполне понятный объект как "структура". Т.е. даём на вход структуру, а на выходе получаем json и наоборот. А сам файл легче
33. Alexander.Shvets 218 19.11.17 15:55 Сейчас в теме
(32) ответ давно здесь (29). =)
34. karapuzzzz 63 20.11.17 10:43 Сейчас в теме
(33)А, ну да. JSON в платформе появился только в 2015г. Спасибо
Оставьте свое сообщение

См. также

.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция Промо

Практика программирования WEB v7.7 v8 Бесплатно (free)

Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.

10.03.2016    57059    Serginio    33    

FastAPI (python) - инструмент для быстрого создания Веб сервиса (WSGI) с REST api

WEB Бесплатно (free)

Ознакомительная статья по FastAPI (python) - инструменту быстрого создания Веб сервиса (WSGI) с REST api.

19.04.2021    1994    Идальго    19    

Wildberries. Заполнение карточек товаров. Как получить значение справочников?

WEB Бесплатно (free)

Wildberries. Заполнение карточек товаров. Как получить значение справочников? в документации это описано очень скромно, пытаюсь рассказать на основании своего опыта.

31.03.2021    540    sergeyisa    0    

Как получить ключ поставщика Wildberries (uuID), supplierID, Идентификатор поставщика

WEB Бесплатно (free)

Как получить ключ поставщика Wildberries (uuID), supplierID, Идентификатор поставщика, для работы с карточками товара.

18.03.2021    712    sergeyisa    7    

Регулярные выражения без внешних компонент? Легко! Промо

Практика программирования Обмен через XML v8 Бесплатно (free)

Сложный способ организовать проверку строки с помощью регулярного выражения в 1С. При этом ни одна внешняя компонента не пострадала. Ну и от платформы (Linux, MustDie) - не зависит.

04.03.2016    67044    starik-2005    108    

Правила обмена больше не нужны

Внешние источники данных Обмен через XML Перенос данных из 1C8 в 1C8 Распределенная БД (УРИБ, УРБД) WEB v8 Бесплатно (free)

Есть несколько общепринятых подходов к написанию обмена между 1С-системами, каждый из которых упирается в длительное изучение технологии, мучительную отладку правил конвертации и написание большого количества сервисного кода, в котором потом тяжело разобраться. О принципах работы универсального фреймворка liteExchange, который реализует быстрые обмены между 1С и внешними системами, и берет на себя всю техническую обвязку по стандартному преобразованию данных, на INFOSTART MEETUP Saint Petersburg.Online рассказал Николай Крылов.

17.03.2021    6882    Nikola23    35    

Интеграция "1С:Управление торговлей 10.3" с Yandex SpeechKit для распознавания телефонных звонков

WEB Интеграция Телефония, SIP Бесплатно (free)

Распознавание телефонных звонков позволяет контролировать работу менеджеров, организовать для них дополнительный KPI, помогает разбирать конфликты и категоризировать звонки по вхождению слов. О своем опыте интеграции «1С:Управления торговлей 10.3» и сервиса Yandex SpeechKit на INFOSTART MEETUP Saint Petersburg.Online рассказал ИТ-директор компании «Умный дом» Федор Рыжков.

12.03.2021    709    zzhiraf_    0    

Как отправить сообщение Telegram в группу?

WEB v8 Россия Бесплатно (free)

Отправка сообщения в группу Telegram.

01.03.2021    894    kite2    2    

Online телефонный справочник из 1С: Зарплата и управление персоналом Промо

WEB Управление персоналом (HRM) Управление персоналом (HRM) v8 ЗУП3.x Россия Бесплатно (free)

В интернете представлено много реализаций online телефонных справочников организаций. Есть справочники, которые использует для хранения информации базу Active Directory (LDAP), есть справочники, которые реализованы с использованием СУБД (например, MySQL). Но я не нашел справочника, который использует информацию из базы 1С. Далее я рассмотрю данную разработку.

10.03.2017    26623    ruha    21    

R.I.P. РИБ

Обмен через XML Распределенная БД (УРИБ, УРБД) v8 1cv8.cf Бесплатно (free)

РИБ, спасибо и до свидания.

19.02.2021    7164    1c-intelligence    132    

Бот Telegram и HTTP сервис в 1С

WEB 8.3.8 Бесплатно (free)

Настройка рабочего вебхука telegram для 1С используя IIS (Internet Information Services - встроенный в windows веб-сервер). Мой опыт.

26.01.2021    5654    solidsun    10    

Интеграция с API WB (Wildberries). Создание карточки товара (спецификации)

WEB v8 1cv8.cf ИТ-компания Россия Бесплатно (free)

Опыт интеграции с API WB (Wildberries), опыт создания карточки товара, получение токенов API WB.

18.01.2021    10790    jenyavp    43    

Информер для сайта , актуальные релизы 1С + Проверка подписки ИТС. Промо

WEB Администрирование данных 1С Сервисные утилиты Бесплатно (free)

Небольшой код который встраивается на сайт и выводит информацию о последних релизах конфигураций 1С

12.09.2014    40997    Malfarion    34    

1С и Умный Дом. Управление голосом

WEB Интернет вещей (IIoT) 8.3.6 Бесплатно (free)

Возможно ли управление устройствами умного дома из 1С, да ещё и голосом? Можно ли без умных колонок Google Home, Alexa, Алиса и иных платформ, а также без приложений от Google, Amazon и других управлять этими устройствами? Мой ответ – ДА, можно, нужно просто иметь умное устройство, имеющее возможность работы в DIY, 1С и программу распознавания голоса и взаимодействия с 1С.

04.01.2021    2075    osivv    15    

HTML редактор/editor (Wysiwyg) для WebKit 1С (CMS, B2B), альтернатива TinyMCE и стандартному ФорматированныйДокумент

WEB Интеграция v8 v8::УФ 1cv8.cf Бесплатно (free)

Suneditor - отличная замена HTML редактору TinyMCE (бесплатному), в публикации с открытым кодом подключим его в 1С с WebKit, скачать HTMLeditor обработку можно бесплатно.

28.12.2020    2260    SizovE    23    

1С и Умный дом

WEB Интернет вещей (IIoT) 8.3.8 Бесплатно (free)

Возможно ли управление устройствами умного дома из 1С? Можно ли, минуя сложные настройки ZigBee, Z-Wave и иных платформ, а также без приложений от Google, Amazon и других управлять этими устройства? Мой ответ – ДА, можно, нужно просто иметь умное устройство, имеющее возможность работы в DIY, ну и, естественно, 1С.

21.12.2020    1592    osivv    8    

Загрузка из EXCEL в 1С. Чтение файла XLSX средствами 1С. ПостроительDOM Промо

Универсальные обработки Загрузка и выгрузка в Excel Обмен через XML v8 1cv8.cf Бесплатно (free)

ПРАКТИЧЕСКОЕ ПОСОБИЕ РАЗРАБОТЧИКА: Метод "NativeXLSX" (ПостроительDOM). Обрабатываются данные EXCEL типов: "Строка", "Число", "Дата" ("Время"), "Булево", "Процент", а также изображения.

11.09.2014    76796    StepByStep    27    

[TinyMCE] - редактор HTML WYSIWYG. Интеграция во все виды управляемого и обычного приложения

WEB 8.3.14 Бесплатно (free)

В статье рассмотрены вопросы использования во всех режимах работы 1С Предприятие 8.3 редактора TinyMCE в поле HTML дополнительного функционала.

14.12.2020    945    user1206119    0    

Как сделать интеграцию (обмен) с интернет-магазином? Пошаговый план действий (Часть 1)

WEB v8 1cv8.cf УУ Бесплатно (free)

C 2011 года я занимаюсь интеграцией с интернет-магазинами и за это время, наверное, повидал все. Делал интеграцию как «культурными», так и «экзотическими» способами. Количество магазинов исчисляется сотнями. В этой серии статей я буду делиться своим опытом, а также выкладывать какие-то полезные наработки.

19.11.2020    4724    markbraer    11    

Чтение вложенных свойств Структур Структуры, Соответствий, свойства через точку, разбор JSON

Практика программирования WEB Интеграция Универсальные функции v8 Бесплатно (free)

JSON: {user.device.type} - как получить значение {type}? А если вложенность значительно глубже? Как проверить, что оно заполнено или удалить его - всё это в публикации с открытым кодом и даже без рекурсии. Бонусом разбор дерева значений - ДанныеФормыЭлементДерева, СтрокаДереваЗначений.

17.11.2020    1810    SizovE    2    

Отладка правил обмена 7.7, 8 Промо

Перенос данных из 1С7.7 в 1C8.X Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Отладка правил обмена всегда была для меня больной темой, пока наконец-то не разобрался. В интернете мало тем, посвященных этому, поэтому решил написать небольшую инструкцию по этому поводу. Очень надеюсь, что она будет кому-то полезна. С радостью выслушаю недочеты.

29.10.2013    52163    pyrkin_vanya    70    

Как я бесплатно пишу чат-ботов WhatsApp на 1С

WEB Бесплатно (free)

На разработку чат-бота требуется время. Как правило, время уходит на ознакомление с API, отладку, приемку. Как сэкономить и не платить за использование API на время разработки? Делюсь своим опытом.

02.11.2020    2419    andrew_shamin    10    

Отладка модуля ДиадокПро

WEB v8 1cv8.cf Бесплатно (free)

В обработке ДиадокПро все дополнительные модули встроены во внешние обработки, которые хранятся в макетах. Это усложняет процесс самостоятельной интеграции, так как теряется возможность попасть в них в режиме отладки. Но не всё так страшно, поэтому ниже инструкция)

30.10.2020    2304    Максим-777    14    

Обмен с сайтом посредством Post-запроса, json

WEB v8 1cv8.cf Бесплатно (free)

Задача - передавать на сайт объекты с наименованием и уникальным идентификатором (УИ), которые изменяются в 1С. Также нужно сохранять историю отправленных пакетов.

29.10.2020    4482    John_d    26    

Кэширование COM-соединения. Три способа Промо

Практика программирования Перенос данных из 1С7.7 в 1C8.X Внешние источники данных WEB v8 Россия Бесплатно (free)

Статья о трех способах кэширования COM-соединения в 1С:Предприятии 8.x.

11.04.2013    42368    YPermitin    41    

Организация HTTP публикации каталога товаров используя PostgREST

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу порядок установки настройки и использования PostgREST на примере организации каталога товаров.

05.10.2020    1172    malikov_pro    2    

Использование HTTP REST обертки xmysql для работы с MySQL на примере OpenCart

WEB Бесплатно (free)

В статье опишу вариант работы с MySQL базой используя HTTP.

28.09.2020    1997    malikov_pro    2    

Интеграционная прослойка(middleware) на Golang. Часть 5 - Обмен с 1С через HTTP-сервисы платформы

WEB v8 Бесплатно (free)

В этой статье научим прослойку отправлять данные в 1С, для этого используем HTTP-сервисы платформы. Обменяемся данными с новым справочником Клиенты. Но главное создадим HTTP-сервис для получения сообщений из очереди RabbitMQ.

28.09.2020    1887    dmitry-irk38    4    

Обмен по расписанию типовыми средствами. Промо

Распределенная БД (УРИБ, УРБД) Обмен через XML Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Бесплатно (free)

Часто перед интеграторами стоит задача организовать автообмен (по расписанию или при наступлении какого-либо события) данными между различными конфигурациями. В этой статье я попробую изложить простую инструкцию, как это можно сделать средствами, заложенными в типовые конфигурации 1С (ЗУП, БП, УПП и т.д.). Для обмена используется подсистема "Обмен данными" из БСП

20.06.2012    104532    kser87    52    

Отладка http сервиса

WEB v8 Бесплатно (free)

При разработке http сервиса возникает ситуация, а как протестировать http сервис? Создали мы сервис, настроили шаблоны, передали, если нужно параметры, открываем браузер заполняем строку подключения и БАХ, ошибка. Что делать?

23.09.2020    3102    hpi    10    

Учимся создавать http сервисы (часть вторая). Передача параметра в http сервис

WEB v8 1cv8.cf Бесплатно (free)

Пошаговое руководство по созданию http-сервиса (часть вторая). Передача параметра в http сервис.

22.09.2020    6254    hpi    7    

Формирование списка документов и скачивание печатной формы документа через веб-сайт с использованием HTTP-сервиса, плюс особенности авторизации

Практика программирования Обмен данными 1С WEB v8 1cv8.cf Бесплатно (free)

В статье показан пример, как реализовать формирование списка документов клиента/пользователя по коду, а затем скачать его (документа) печатную форму по ссылке

18.09.2020    1194    R_o_n_n_y    3    

Заготовка для загрузки файлов по ftp Промо

WEB Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

3 процедуры и 1 макет

03.06.2013    30922    anig99    6    

Формирование HTTP запроса формата multipart/form-data с двоичными данными, используя ПотокВПамяти

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу вариант формирования запроса

11.09.2020    3661    malikov_pro    11    

Дневник боли и страданий. Как я переходил от The Bat! к MS Outlook

WEB Бесплатно (free)

Мой опыт перехода от The Bat! к MS Outlook. Сравнение двух программ, киллер-фичи, лайфхаки и рецепты из интернета. Все в одном месте и проверено автором на актуальных релизах сентября 2020 года.

02.09.2020    2042    gubanoff    15    

Формирование документа Goggle Docs из шаблона используя Google Apps Script

WEB Бесплатно (free)

В статье опишу работу скрипта для формирования документа с публикацией по HTTP.

25.08.2020    1860    malikov_pro    0    

Организация удаленного доступа к корпоративной информационной системе — это просто ! Промо

Внешние источники данных Монитор заказов WEB Монитор заказов Бесплатно (free)

Хочу поделиться своим опытом создания web морды к корпоративной информационной системе на базе 1С. Необходимо организовать сбор заказов от удаленных пользователей. - Каждый пользователь видит свой набор данных, и работает со своими документами. - Доступ по логину/паролю, работа в основном с планшетов (iPad) или с десктопа. - Сервер должен находиться за пределами организации. - Себестоимость 1 пользователя не более 10$ за месяц. - Использование в основном мобильного канала связи GPRS (~100 КБ/с).

31.08.2012    28935    avhrst    13    

Использование шаблонного процессора для формирования HTML страниц

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу использование шаблонного процессора Handlebars запущенного на Node.js

24.08.2020    1758    malikov_pro    26    

Использование скриптов при формировании запросов используя Postman

WEB Бесплатно (free)

В статье опишу применение JS скриптов а postman при работе с API.

22.08.2020    3157    malikov_pro    8    

Загрузка или обновление файла на яндекс диске через rest-api

Практика программирования Файловые протоколы обмена, FTP WEB v8 Бесплатно (free)

Коллеги, в данной публикации я хочу поделиться кодом, с помощью которого можно загрузить файл на яндекс диск или обновить существующий.

12.08.2020    3027    pavelpribytkin96    10    

Альтернативные способы работы с XML. Часть 2: Введение в xPath или запросы к XML Промо

Обмен через XML Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

В предыдущей статье "Введение в DOM или объектная модель документа" было описано понятие объектной модели документа (DOM), раскрыты плюсы и минусы использования модели при разборе файлов XML, приведено сравнение с построчным последовательным разбором. Были представлены варианты выборки данных с помощью объекта 1С ДокументDOM. Теперь настало время познакомить читателей с самым, на мой взгляд, интересным способом извлечения данных из XML - при помощи языка запросов xPath.

09.08.2012    42864    1cspecialist    13    

Самый простой парсинг и обработка веб-страниц в 1С

WEB Универсальные функции v8 1cv8.cf Бесплатно (free)

Рассмотрим самый простой парсинг веб-страниц средствами платформы 1С и еще некоторые полезные приемы работы с веб-страницами.

07.08.2020    7985    YPermitin    22    

Загрузка или обновление файла на гугл диске

Практика программирования Файловые протоколы обмена, FTP WEB v8 1cv8.cf Бесплатно (free)

Коллеги, в данной публикации я хочу поделиться кодом, с помощью которого можно загрузить файл на гугл диск или обновить существующий.

06.08.2020    2124    pavelpribytkin96    6    

Использование Yandex Translate (Яндекс.Переводчик)

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу вариант подключения и использования Yandex Translate.

08.07.2020    5134    malikov_pro    8    

Ограничение доступа к HTTP публикациям 1С сервера используя NGINX

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу вариант ограничения доступа к HTTP публикациям 1С сервера используя NGINX.

02.07.2020    7848    malikov_pro    7    

Приемы описания документации API используя нотацию RAML

WEB Россия Бесплатно (free)

В статье опишу приемы, которые использую в своей работе, и которые позволяют быстро реализовать описание.

24.06.2020    1851    malikov_pro    2    

Работа с AliExpress через API

WEB v8 Бесплатно (free)

В публикации опишу подход работы с API AliExpress и примеры кода.

23.06.2020    6878    malikov_pro    24    

Конвертация данных 2. Использование подключаемых обработок в правилах обмена. Конвертация дерева значений

Обмен данными 1С Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Разработка правил обмена с использованием подключаемых обработок. В качестве примера рассмотрена реальная задача конвертации дерева значений.

15.06.2020    4719    Drivingblind    8    

Не программируй - вставляй и копируй. OAuth 2.0 авторизация API Google, получение токенов доступа (refresh и access token)

WEB Облачные сервисы, хостинг Бесплатно (free)

Без программирования, в несколько кликов - простой и быстрый способ трехногой авторизации по протоколу OAuth 2.0 в Google APIs. Получение refresh и первого access token для использования в HTTP-запросах из 1С к API Google. Для приложений типа "Компьютеры".

09.06.2020    6621    uno-c    1    

История создания успешной системы чат-ботов на 1С

WEB v8 Бесплатно (free)

Использование чат-ботов в мессенджерах позволяет автоматизировать многие сложные бизнес-процессы путем диалога с системой через виртуального собеседника. О том, как создать универсальную систему ботов с бэкендом на 1С, работающую в Telegram, Viber и Facebook Messenger одновременно, на конференции Infostart Event 2019 Inception рассказал программист-фрилансер Константин Гейнрих.

21.05.2020    8721    CyberCerber    15    

Парсинг html страниц с выводом информации через JavaScript с использованием Selenium

WEB v8 1cv8.cf Бесплатно (free)

Есть девочки как девочки, есть мальчики как мальчики, есть сайтики как сайтики, но странички их обманщики. В целях сохранить информацию, от автоматизированного сбора, многие ресурсы пытаются защитить ее. Один из таких способов - вывод информации на странице через JavaScript. При получении такой страницы в 1С, JavaScript не успевает вывести необходимые данные, и в 1с получаем практически пустую страницу. В статье приведу пример разработки, для парсинга таких страниц, без регистрации и смс.

20.05.2020    6727    platonov.e    25