Практическое применение механизма WEB-сервисов в системе 1С:Предприятие

05.02.15

Разработка - Математика и алгоритмы

В предыдущей статье мы рассмотрели общие понятия использования механизма «Web-сервисов». Данная статья будет посвящена только практическим вопросам: мы рассмотрим несколько конкретных примеров. Итак, что предлагается Вам в данной публикации: I. Раздел 1 – Пример реализации web-сервиса в системе «1С:Предприятие». II. Раздел 2 – Пример обращения к web-сервису системы «1С:Предприятие» из стороннего приложения (разработка приложения в Delphi) III. Раздел 3 – Пример обращения к web-сервису в системе «1С:Предприятие» IV. Раздел 4 – Отладка web-сервисов в системе «1С:Предприятие»

  В предыдущей статье мы рассмотрели общие понятия использования механизма «Web-сервисов».  Освежим некоторые знания.

Web-сервисы применяются для обмена данными между сервером и клиентом; формат XML используется для «упаковывания» данных в целях взаимопонимания между обоими участниками общения.

РАЗДЕЛ I

ПРИМЕР РЕАЛИЗАЦИИ WEB-СЕРВИСА В СИСТЕМЕ «1С:ПРЕДПРИЯТИЕ»

ЗАДАЧА: Необходимо создать web-сервис, обращаясь к которому клиенты могут определить всю необходимую информацию по своим заявкам.

Задача является демонстрационной и служит только примером для понимания и обучения механизму web-сервисов.

РЕШЕНИЕ:

  Шаг 1.  Создадим новую информационную базу без конфигурации для разработки новой конфигурации.

  Шаг 2.   Добавим в конфигурацию несколько новых объектов

  -  справочник «Клиенты»;

  -  документ «Заявка»;

  -  перечисление «СтатусыЗаявок».

 

  Шаг 3.   Создадим новый XDTO-пакет.

  Почему и для чего мы создаем XDTO-пакет? Подробнее об использовании механизма XDTO можно прочитать в «Глава 16. Руководство разработчика» и здесь.

  Коротко отметим лишь только то, что механизм XDTO является универсальным способом представления данных для взаимодействия с различными внешними источниками данных и программными системами.

  В нашем случае пакет XDTO создается для описания возвращаемого значения web-сервиса.

  Раскроем ветку «Общие» → «XDTO-пакеты» → Добавить…

  Укажем имя XDTO-пакета  «DocumentsData» и  его пространство имен http://localhost/request или  http://192.168.1.76/request (для облегчения понимания и процесса обучения, мы указываем локальный IP-адрес компьютера, где установлен web-сервер (поддерживаемые web-сервера: IIS или Apache)). Каждый Web-сервис может быть однозначно идентифицирован по своему имени и URI пространству имен, которому он принадлежит.

 

 

  Наш пакет содержит два типа объектов XDTO:

1) Сustomer – для передачи данных элемента справочника «Клиенты».

Этот тип объекта XDTO будет содержать следующие свойства:

  -  Name – тип string из пространства имен http://www.w3.org/2001/XMLSchema;

2)  Document – для передачи данных документа «Заявки»

Этот тип объекта XDTO будет содержать следующие свойства:

-  Сustomer – тип Сustomer из пространства имен http://192.168.1.76/request; представляет собой ссылку на объект XDTO, который мы определили выше;

-  Status - тип string из пространства имен http://www.w3.org/2001/XMLSchema;

-  Numder - тип string из пространства имен http://www.w3.org/2001/XMLSchema.

 

  Шаг 4.  Добавим в конфигурацию новый Web-сервис

  Раскроем ветку «Общие» → «Web-сервисы» → Добавить…

  Для Web-сервиса укажем следующими значения свойств:

  - Имя - DocumentsData

  - URI Пространства имен – http://192.168.1.76/request

  - Пакеты XDTO – DocumentsData или http://192.168.1.76/request

  - Имя файла публикации – request.1cws

 

  Шаг 5.  У созданного Web-сервиса определим операцию «GetData»

 

  Значения свойств операции:

  - Тип возвращаемого значения – Document (http://192.168.1.76/request)

  - Возможно пустое значение – Истина

  - Имя процедуры – GetData.

 

  Шаг 6.  У операции GetData определим параметр Сustomer со следующими значениями свойств:

  Тип значения – тип string из пространства имен http://www.w3.org/2001/XMLSchema;

  Направление передачи – входной.

 

  Шаг 7.  Откроем модуль созданного Web-сервиса и поместить в него функцию Получить(), которая будет выполняться при вызове данного Web-сервиса.

 

Функция GetData(Сustomer)      
    
    // Получить типы объектов XDTO
    КлиентТип = ФабрикаXDTO.Тип("http://192.168.1.76/request", "Сustomer");
    ЗаявкаТип = ФабрикаXDTO.Тип("http://192.168.1.76/request", "Document"); 
            
    // Получаем клиента
    КлиентСсылка = Справочники.Клиенты.НайтиПоНаименованию(Сustomer);       
    Если Не ЗначениеЗаполнено(КлиентСсылка) Тогда
         Возврат Неопределено;
    КонецЕсли;
  
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |           Заявка.Ссылка,
        |           ПРЕДСТАВЛЕНИЕ(Заявка.Статус) КАК Статус,
        |           Заявка.Номер
        |ИЗ
        |           Документ.Заявка КАК Заявка
        |ГДЕ
        |           Заявка.Клиент = &Клиент";
           
     Запрос.УстановитьПараметр("Клиент", КлиентСсылка);         
     РезультатЗапроса = Запрос.Выполнить();
     Если РезультатЗапроса.Пустой() Тогда
         Возврат Неопределено;
     КонецЕсли;  
            
     Выборка = РезультатЗапроса.Выбрать();
     Выборка.Следующий();     
     Документ = Выборка.Ссылка.ПолучитьОбъект();         
            
     // Создать объект XDTO заявки
     Заявка = ФабрикаXDTO.Создать(ЗаявкаТип);
     Заявка.Numder = Выборка.Номер;
     Клиент = ФабрикаXDTO.Создать(КлиентТип);
     Клиент.Name = КлиентСсылка.Наименование;
     Заявка.Сustomer = Клиент;
     Заявка.Status = Выборка.Статус;
     
     // Вернуть заявку
     Возврат Заявка;
КонецФункции

  Шаг 8.  Опубликуем созданный Web-сервис на веб-сервере.

  Пункт меню Конфигуратор: «Администрирование» → «Публикация на Web-сервере».

  На вкладке «Web-сервисы» устанавливаем признак «Публиковать Web-сервисы» и напротив нашего нового Web-сервиса также ставим «галочку».

 

 

РАЗДЕЛ II

ПРИМЕР ОБРАЩЕНИЯ К WEB-СЕРВИСУ СИСТЕМЫ «1С:ПРЕДПРИЯТИЕ» ИЗ СТОРОННЕГО ПРИЛОЖЕНИЯ

  Основное назначение механизма Web-сервисов в системе «1С:Предприятие» - это передача необходимых данных сторонним приложениям.

Рассмотрим пример разработки приложения на Delphi обращения к нашему web-сервису из первого раздела данной статьи.

  Шаг 1.   Создадим новый проект и на форме разместим несколько элементов управления

  -  текстовое поле – используется для вывода полученной от web-сервиса информации;

  -  две кнопки – очистка текстового поля и обращение к web-сервису;

  -  поле ввода – передаваемый в web-сервис параметр.

 

  Шаг 2.  Выполняем импорт WSDL-файла

 

 

В результате мы получаем новый модуль request (такое наименование мы определили непосредственно в 1С). В данном модуле имеется все необходимая информация по web-сервису.


 

  Шаг 3.   Напишем обработчик вызова web-сервиса

Переменная DocumentDataPortType уже определена в модуле request

 

  Шаг 4.   Запустить приложение и выполнить проверку.

 

 РАЗДЕЛ III 

ПРИМЕР ОБРАЩЕНИЯ К WEB-СЕРВИСУ В СИСТЕМЕ «1С:ПРЕДПРИЯТИЕ»

  Шаг 1.  Создадим новую внешнюю обработку с именем «WEB_Service»

  Шаг 2.   Для обработки определим новую форму

  Шаг 3.   У формы укажем несколько реквизитов

  Клиент – тип «Строка»

  КлиентВозврат - тип «Строка»

  НомерВозврат - тип «Строка»

  СтатусВозврат - тип «Строка».

  Выведем реквизиты на форму.

 

  Шаг 4.  Добавим команду формы «ПолучитьДанные»

  Укажем обработчик команды

&НаКлиенте
Процедура ПолучитьДанные(Команда)
    ПолучитьДанныеНаСервере(Клиент);
КонецПроцедуры
 
Процедура ПолучитьДанныеНаСервере(Клиент)
    // Создать WS-прокси на основании ссылки и выполнить операцию Получить()
    Определение = Новый WSОпределения("http://192.168.1.76/WEB_Service/ws/request.1cws?wsdl");
    
    Прокси = Новый WSПрокси(Определение, "http://192.168.1.76/request", "DocumentsData", "DocumentsDataSoap");       
            
    ДанныеЗаявки = Прокси.GetData(Клиент);
    Если ДанныеЗаявки = Неопределено Тогда
         КлиентВозврат = "Неопределено";
         СтатусВозврат = "Неопределено";
         НомерВозврат  = "Неопределено";
         Возврат;
    КонецЕсли;
            
    КлиентВозврат = ДанныеЗаявки.Сustomer.Name;
    СтатусВозврат = ДанныеЗаявки.Status;
    НомерВозврат  = ДанныеЗаявки.Numder;

КонецПроцедуры

  Система «1С:Предприятие» может использовать веб-сервисы, предоставляемые другими поставщиками, двумя способами:

  -   с помощью статических ссылок, создаваемых в дереве конфигурации;

  «плюс»: большая скорость работы;

  «минус»: повторный импорт WSDL-описания средствами конфигуратора и сохранение измененной конфигурации.

  -  с помощью динамических ссылок, создаваемых средствами встроенного языка

(соответственно «минусы» статических для динамических – «плюсы»)

 

РАЗДЕЛ IV

ОТЛАДКА WEB-СЕРВИСОВ В СИСТЕМЕ «1С:ПРЕДПРИЯТИЕ»

Для локального web-сервиса необходимо:

  Шаг 1.  Положить на клиент, где запускается система 1С файлик webservicecfg.xml со следующим содержимом

<config xmlns="http://v8.1c.ru/v8/webservicecfg">
     <debugconfig debug="true">
</config> 

  Шаг 2.   В файл default.vrd публикации конфигурации добавить строку

<debug enable= «true» url=»tcp://localhost» />

  Шаг 3.   В конфигураторе выбрать пункт меню

«Отладка» → «Подключение» → «Автоматическое подключение» → «Web-сервисы на сервере»

  Шаг 4.    Нажать на кнопку «OK»

Для серверного варианта надо еще сервер 1с запускать в режим отладки с ключом /debug

smart1C web-сервисы

См. также

Метод Дугласа-Пойкера для эффективного хранения метрик

Математика и алгоритмы Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    1754    stopa85    12    

33

Алгоритм симплекс-метода для решения задачи раскроя

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    4423    user1959478    50    

34

Регулярные выражения на 1С

Математика и алгоритмы Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    7464    4    SpaceOfMyHead    17    

56

Модель распределения суммы по базе

Математика и алгоритмы Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    7855    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4446    fishca    13    

36

Интересная задача на Yandex cup 2021

Математика и алгоритмы Бесплатно (free)

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    8840    John_d    73    

46

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

Подробный разбор, с примером использования, встроенного механизма кластеризации 1С.

31.08.2021    7806    dusha0020    8    

70
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. jobkostya1c_ERP 100 06.02.15 06:20 Сейчас в теме
Веб-сервисы как средство интерграции 1С со сторонними АИС, фактически API двусторонний доступ очень полезная технология. Начинает применяться довольно широко. Поставлю плюс.
Скоро поди ее в 1С прикрутят на некоторые "справочные" обмены с сайтами. Как-то делал обработку для загрузки курсов валют с сайта Сбербанка чтоб проверить данный механизм.
2. serge_focus 4 08.02.15 14:40 Сейчас в теме
Статья понравилась. Сейчас в 1С Веб-сервисы реально позволяют очень много - начиная от отслеживания курсов , движения посылок , состояний заказов, обменов с интернет-магазином и заканчивая мобильной платформой. Автору плюс.
3. VarLone 11.02.15 17:54 Сейчас в теме
Хотелось бы поподробнее почитать про "ПРИМЕР ОБРАЩЕНИЯ К WEB-СЕРВИСУ В СИСТЕМЕ «1С:ПРЕДПРИЯТИЕ»" если веб-сервис использует проверку подлинности на основе сертификатов. И может ли вообще 1С работать с веб-сервисами с аутентификацией по сертификаиам.
4. dyak84 17.02.15 06:12 Сейчас в теме
Автор на мой скромный взляд прогресивно так что просто не слов. Ето все равно что связать не связуемое. Побольше бы таких статей.Ето приводит к размышлению и развитию.Спасибо так держать.
ТвояСовесть; +1 Ответить
5. jobkostya1c_ERP 100 17.02.15 08:41 Сейчас в теме
(4) dyak84, верно говорите. Стоит большое внимание на веб-сервисы обратить. Жаль только что обращаешь "усердное" внимание когда уже есть реальная задача :)
6. DitriX 2091 09.04.15 11:56 Сейчас в теме
Веб--сервисы - это уже прошлый век, всем пора переходить на http-сервисы, вот где круто, а веб-сервисы были актуальны лет 5 назад, так что давайте еще одну статью по http сервисам :)
UnNamsa; for_sale; jobkostya1c_ERP; +3 Ответить
35. UnNamsa 21.01.22 22:46 Сейчас в теме
(6) да, как видно, мой комментарий устарел на кучу лет уже
7. Dach 372 15.04.15 13:59 Сейчас в теме
Статья понравилась, очень подробно и доходчиво.

Только непонятно, а где мы берем WSDL-файл для его загрузки в Delphi?
26. almihaylov 18.06.20 22:53 Сейчас в теме
(7) Файл берется в браузере по ссылке

http://localhost/ИМЯБАЗЫ/ws/request.1cws?wsdl
user858846; +1 Ответить
8. ira778899 30.04.15 13:58 Сейчас в теме
Вы какую версию Delphi использовали ?
9. SMART1C 767 06.05.15 10:05 Сейчас в теме
10. Гость 10.07.15 14:34
Большое спасибо за статью, предоставлена полная информация для "попробовать". Попробовал и почему-то не заработало. Сервис опубликовал на локальном Apache 2.2. При попытке обратиться к нему из 1С доходит до создания WSПрокси, но вылетает в исключение при попытке обратиться к методу. Пробовал добавить ws-ссылку, метод виден, но вызвать его все равно нет возможности. В какую сторону копать?
11. jills2001 13.08.15 11:43 Сейчас в теме
Спасибо за статью.
Мы начали первые шаги в этом направлении:
1)создали свой веб-сервис как в статье с одной операцией (тестовая) пока простая без параметров
Функция proc_oper_try_4()
Возврат Истина;
КонецФункции
2)успешно выполнили публикацию,
3) разработала тестового простого клиента в Delphi 7, выполнив все как в статье, выполнила импорт WSDL-файла, все отлично создался модуль, далее прописала вызов метода.
Но при проверки работы клиентского приложения при вызове функции сервиса получаю ошибку вида "Received content of invalid Content-Type setting: text/html- SOAP expects "text/xml"
Подскажите пожалуйста, что необходимо подправить для успешного вызова метода? в каком направлении копать?
12. maguga 19 04.05.16 12:44 Сейчас в теме
Ребята, а не опишите ситуацию когда 1с использует внешний веб сервис по HTTPS с сертификатам безопасности. Как такой сертификат использовать?
Т.е. необходима обработка, которую можно было отослать внешнему клиенту бухгалтеру(у которого нет админских прав), и чтоб обработка работала именно по защищенному каналу.
13. IgorXml 724 23.05.16 17:34 Сейчас в теме
Спасибо! В WSОпределении немного изменил и тогда заработало:
Процедура ПолучитьДанныеНаСервере(Клиент)
    Определение = Новый WSОпределения("http://localhost/Ist/ws/DocumentsData?wsdl","Admin","");
    Прокси = Новый WSПрокси(Определение, "http://localhost/request", "DocumentsData", "DocumentsDataSoap");       
    Прокси.Пользователь = "Admin";  	Прокси.Пароль = "";

И в В default.vrd ничего не надо добавлять если при публикации указать. 1С 8.3.8.1652:
Прикрепленные файлы:
Gendelf; yurso; HIVvich; EMelihoff; msergeev79; +5 Ответить
14. rwn_driver 8 09.08.16 16:11 Сейчас в теме
Статья полезная, особенно при начале работы с Web-сервисами. Есть один вопрос - как задать для вызова свойство Web-сервиса с несколькими параметрами, если описывается тип только одного параметра?
15. anco27 15.08.16 07:44 Сейчас в теме
(14) rwn_driver, Указываешь при описание несколько параметров и вперед, а лучше указываешь только один параметр, но тип структура и все
16. pashamix 05.09.16 18:05 Сейчас в теме
А как заполнить список в WS? Например есть документ (заявка) и в нем ТЧ товары.
17. Vanch90 19.02.17 13:14 Сейчас в теме
А можно ли выкладывать не через локальный?
Допустим есть домен и виртуальный сервер от хостера.
18. alex_4x 85 13.06.17 13:29 Сейчас в теме
Очень полезный материал!
Один вопрос.
Шаг 8. Опубликуем созданный Web-сервис на веб-сервере.
А как опубликовать, если на сервере нет графического интерфейса (linux) ? Сама база опубликована и в команде публикации базы - нет параметра про публикацию сервиса.
С другого компьютера, когда в конфигураторе - не публикует, пишет "Веб-серверы не обнаружены".
19. alex_4x 85 13.06.17 15:53 Сейчас в теме
А что это может значить?
Если имя совсем неправильное написать - то пишет Сервис не найден.
А так вроде что-то отвечает, но пустая страница. При просмотре - вот такое:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="/redirect.php?url=aHR0cDovLzFjLWxpbnV4L0Jhc2ExL2UxY3N5cy92cnNjb3JlL2V4Y2VwdGlvbi54c2x0P3N5c3Zlcj04LjMuMTAuMjI5OQ=="?><exception xmlns="http://v8.1c.ru/8.2/virtual-resource-system" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Exception" clsid="580392e6-ba49-4280-ac67-fcd6f2180121" reason="400"><descr xmlns="http://v8.1c.ru/8.1/data/core">Не указан заголовок управления сеансами или куки с идентификатором сеанса.</descr></exception>
20. Artem1C 10.07.17 17:39 Сейчас в теме
Подскажите пожалуйста,
При создании описания сервиса произошла ошибка. URL сервиса: http://localhost/zerkal/ws/***.1cws?wsdl
Код ответа сервера: 301

ошибка возникает в коде
Определение = Новый WSОпределения("http://localhost/zerkal/ws/***.1cws?wsdl")
21. ИИИ 18.09.17 07:51 Сейчас в теме
(20)Удалось решить проблему? Я никак не пойму что делать. День потерял и ничего.
22. anco27 21.09.17 10:39 Сейчас в теме
(20) Для начала вставьте wsdl-ссылку в браузер и посмотрите, что у Вас выдает
23. alex0402 28 10.10.17 15:52 Сейчас в теме
Шаг 1. Положить на клиент, где запускается система 1С файлик webservicecfg.xml со следующим содержимом

Куда именно?
24. BigBoss 2 26.12.17 10:45 Сейчас в теме
Очень интересно!
Dima123456; +1 Ответить
25. ybatiaev 58 29.11.18 16:21 Сейчас в теме
Мне показалось, что использование HTTP-сервисов намного проще. Подскажите преимущества WS.
Ещё. Понимаю, что SOAP - это некий универсальный протокол, однако JSON намного проще. В 1С с ним работать тоже проще. Трафик меньше, наглядности в просмотре тоже больше из-за отсутствия "лишнего".
27. DoReMi 05.08.20 08:23 Сейчас в теме
Что-то картинки не отображаются, пишет инвалид сертификат...
LeraTishkina; Мах; Gendelf; leosoft; asupsam; +5 Ответить
28. user1486438 01.11.20 12:37 Сейчас в теме
Веб сервис лежит на апаче 2.2.
в браузере ссылка открывается, но при попытке отладить через сам 1с выдает ошибку сервера 400 и пишет, что ошибка при вызове конструктора WSОпределения. При созданиии описания сервиса произошла ошибка.
Саму попытку подключения к веб-сервису прилагаю ниже. Кто то знает в чем проблема?


ВСОпределение = Новый WSОпределения("http://localhost/day3_ws/ws/ОбменДанными.1cws?wsdl");
ВСервис = ВСОпределение.Сервисы.Получить("DataChange","ОбменДанными");
ВТочкаВхода = ВСервис.ТочкиПодключения.Получить("ОбменДаннымиSoap");
ВОперация = ВТочкаВхода.Интерфейс.Операции.Получить("Синхронизация");

Данные = Новый ХранилищеЗначения("Некие данные", Новый СжатиеДанных(9));

ДанныеXDTO = ВСОпределение.ФабрикаXDTO.Создать(ВОперация.Параметры.Получить("Данные").Тип,Данные);

ВСПрокси = Новый WSПрокси(ВСОпределение,"DataChange","ОбменДанными","ОбменДаннымиSoap") ;
Ответ = ВСПрокси.Синхронизация(ДанныеXDTO);
29. ResAndDev 22.06.21 14:41 Сейчас в теме
А что с картинками в статье ? Не загружаются. Пробовал менять точку доступа и компы - все равно.
user1600097; OrcaMax; +2 Ответить
30. SMART1C 767 29.07.21 17:33 Сейчас в теме
(29) ссылки на изображения обновили
31. user1600097 25.08.21 22:41 Сейчас в теме
Та же история - не загружаются картинки
32. SMART1C 767 26.08.21 09:22 Сейчас в теме
(31) Попробовали открыть публикацию на разных браузерах - картинки отображаются корректно. Модераторы подтвердили.
33. frkbvfnjh 785 17.09.21 11:26 Сейчас в теме
Статью нашел совершенно случайно и теперь умею работать с WSDL на Delphi! Спасибо большое! Напишите еще какую нибудь публикацию в связке 1С и Delphi.
34. UnNamsa 21.01.22 22:44 Сейчас в теме
Господи, спасибо, что сейчас все это в прошлом. Спасибо цивилизации за REST и HTTP сервисы.
Arxxximed; +1 Ответить
Оставьте свое сообщение