Веб-сервисы 1С и PHP

12 Comments

  1. starik-2005

    https://infostart.ru/public/440532/ — тут даже код есть.

    Reply
  2. serg1234

    да, в этом примере есть код php в котором есть вызов метода сервиса и передача параметров

    1. но нет примера на 1С, где можно увидеть как эти параметры получить

    2. параметры передаются стандартных типов (http://www.w3.org/2001/XMLSchema), а в моих примерах используются типы XDTO пакета описанного в 1с

    3. у меня приводится пример использования пагинации в 1с запросах

    Reply
  3. starik-2005

    1. Как получить? Глупость спросили. Эти параметры указываются у функции веб-сервиса в качестве входящих. Правой кнопкой на функции и «добавить параметр».

    2. Никто не мешает передать параметры «любых типов», ибо в любом случае это строка. SOAP для полноценного веб-приложения уже мало кто использует — все давно живут в эпоху REST-API, oData и прочего, когда параметры передаются в виде json, а в последнее время и в виде чистого бинарника. Все эти выкрутасы с XDTO идут лесом.

    3. У Вас вообще примеров никаких не приводится — одни названия функций и чуть-чуть слов о том, что они делают. Пользу сообществу статья не несет (на мой сугубо личный взгляд).

    Reply
  4. serg1234

    Возможно мы говорим о разных вещах, приведите пример использования REST API и 1С.

    Reply
  5. starik-2005

    (5) REST-API — это базовый функционал 1С. При публикации его на вебсервере внешние приложения получают доступ к объектам 1С без дополнительного кода со стороны 1С. Нужно просто вызвать функцию веб-сервера «GET http://myserver.com/1cbase/odata/standard.odata/Catalog_Контрагенты HTTP/1.1″, чтобы получить на выходе список контрагентов. Это работает даже в Excel, т.е. можно получить список объектов 1С без программирования на 1С.

    По поводу реализации собственного REST-API, то есть объект HTTPСервис в 1С (рядом с WEBСерсисами). Создаете сервис, создаете для него шаблон URL, дальше указываете метод (GET/PUT/POST/…. — стопиццот вариантов, включая «любой»), пишите функцию, на входе которой будет объект HTTPСервисЗапрос, а в качестве ответа будет возвращен объект HTTPСервисОтвет. Устанавливаете код ответа, тело ответа и возвращаете. Все входящие параметры в теле запроса (хоть json, хоть двоичные данные). Профит!

    Reply
  6. serg1234

    ну как я понял, все претензии сводятся к тому, что я привел пример, так скажем, слегка устаревший…..

    >> все давно живут в эпоху REST-API, oData и прочего, когда параметры передаются в виде json, а в последнее время и в виде чистого бинарника.

    >>Все эти выкрутасы с XDTO идут лесом.

    https://infostart.ru/public/565435/ — это ссылка на статью где детально описывается про REST API, и конечно в комментариях можно прочитать о недостатках использования такого решения…

    Я ничего не имею против использования REST-API, oData, я просто привел свой пример использования веб сервисов 1С.

    Reply
  7. olo_lo4

    (0) вот лови хороший пример

    http://1с-интеграция.рф/useful_links/49/375/

    я на этом примере учился когда то из под PHP обмениваться

    Reply
  8. starik-2005

    (8)

    на этом примере

    И такой PHP-г-но-код на сайте 1С! Представляю, что там в исходниках…

    Reply
  9. olo_lo4

    (9) Sergey Andreev тут важен пример и пинок на старте. А сам код вы сможете и адаптировать и оптимизировать.

    Reply
  10. starik-2005

    (10)

    важен пример

    Пример важен. Поэтому такой пример недопустим, ибо одно это чего стоит!

    // 1. Получим строковые данные из входящего файла
    $json_filedata = file_get_contents(‘php://input’);
    // 2. Отрежем все лишнее (добавляются 2 служебных символа), что // мешает преобразованию из JSON
    $jsData = trim(ltrim($json_filedata));
    $dlinaStr = strlen($jsData);
    $_jsData = »;
    $i=1;
    while ($i<$dlinaStr) {
    if ($i>2) {
    $_jsData = $_jsData.substr($jsData, $i, 1);
    }
    $i++;
    }
    // 3. Преобразуем данные из JSON в объект (структуру)
    $mData = json_decode($_jsData); 

    Показать

    Ну нахрена так извращаться??? Достаточно ltrim (т.е. все это г-но заменяется на одну строку).

    Reply
  11. serg1234

    (6)

    Я так понимаю у тебя уже есть опыт использования REST-API на практике.

    У меня есть вопрос:

    К примеру, я опубликовал базу, дал доступ к справочнику «Номенклатура», в котором 100 тыс. записей. Могу ли я, как нибудь отловить ситуацию когда выполняется запрос на выдачу сервером всех записей справочника, и заблокировать отдачу такого объема информации?

    Если это возможно, напиши как это сделать, если не трудно.

    Reply
  12. Rustig

    (12) не могу отправить вам сообщение в личку, не знаете почему?

    Reply

Leave a Comment

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