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

20.10.17

Интеграция - WEB-интеграция

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Примеры на PHP
.rar 5,29Kb
41
41 Скачать (1 SM) Купить за 1 850 руб.
Тестовая база
.dt 63,43Mb
43
43 Скачать (1 SM) Купить за 1 850 руб.

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

Итак, инструменты:

Apache 2.4, php 7, Платформа 1С 8.3.10.2252, База 1С режим совместимости 8.2.13

Как установить Apache 2.4 и php 7, я описывать не буду (много примеров в инете).

А вот, после публикации веб сервиса 1С, я отредактировал .vrd файл, добавил в него данные о имени пользователя и пароля, для того, чтобы при подключении к веб сервису не требовалось авторизации.

Описание модуля ExchangeData:

  1. Метод TestWS() – возвращает информацию о версии модуля.
  2. Метод GetGoods() – возвращает список товаров с ценами, как вариант для примера
  3. Метод GetConstantList() – возвращает список констант и их значения
  4. Метод GetCatalogItems(Param1) - возвращает список элементов справочника, с поддержкой пагинации

Параметры(Param1[].Key):

        Обязательные:

                       CatalogName - Название справочника

        Предопределенные:

                       IsDelete - помеченные на удаление (устанавливает отбор)

                       IsGroup  - это группа (устанавливает отбор)

                       Parent   - родитель (устанавливает отбор)

                       Owner    - владелец, если справочник подчинённый (устанавливает отбор)

                       SizePart - кол-во возвращаемых записей <> 0

                       PartNumb - номер возвращаемой порции <> 0

  1. Метод GetItem(Param1) - Возвращает все поля объекта с их значениями, в.ч. и табличные части. Используется для получения информации об элементе справочника или документе.

Параметры(Param1):

        Обязательные:

                       GUID - универсальный идентификатор

                       TypeValue - описание типа ссылки

  1. Метод GetDocumentItems(Param1) - Возвращает список документов, с поддержкой пагинации

 Параметры(Param1[].Key):

        Обязательные:

                       DocumentName - Название документа

                       DateStart - начало периода (дд.мм.гггг чч.мм.сс)

                       DateEnd - конец периода (дд.мм.гггг чч.мм.сс)

        Предопределенные:

                       IsDelete - помеченные на удаление (устанавливает отбор)

                       Posted   - проведен (устанавливает отбор)

                       SizePart - кол-во возвращаемых записей <> 0

                       PartNumb - номер возвращаемой порции <> 0

 

  1. Метод GetInformationRegisterItems(Param1) - Возвращает данные из регистра сведений

Параметры(Param1[].Key):

        Обязательные:

                       RegisterName - Название регистра сведений

                       Date - только для периодических (дд.мм.гггг чч.мм.сс)

        Предопределенные:

                       Slice    - (0 - выборка данных, 1 - срез первых, 2 - срез последних)

                                                                      значение по умолчанию = 0

<ИмяИзмерения> - (устанавливает отбор)

  1. Метод PrintDocument(Param1) - Возвращает печатную форму документа

Параметры(Param1[].Key):

        Обязательные:

                       DocumentRef - ссылка на документ

                       BlankName - название печатного бланка

Для реализации метода PrintDocument(Param1), пришлось немного корректировать модуль документа. Реализовано только для расходных накладных.

Кроме тестовой конфигурации, к статье прилагаются php файлы, с примерами использования данных методов. В этих файлах, я не ставил задачу красиво отобразить данные из базы 1С.

Веб сервис php web service

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    17827    19    22    

17

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    19930    13    17    

17

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    14451    42    8    

18

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    1292    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 3088 20.10.17 14:22 Сейчас в теме
2. serg1234 97 20.10.17 14:50 Сейчас в теме
да, в этом примере есть код php в котором есть вызов метода сервиса и передача параметров

1. но нет примера на 1С, где можно увидеть как эти параметры получить
2. параметры передаются стандартных типов (http://www.w3.org/2001/XMLSchema), а в моих примерах используются типы XDTO пакета описанного в 1с
3. у меня приводится пример использования пагинации в 1с запросах
3. starik-2005 3088 21.10.17 22:57 Сейчас в теме
1. Как получить? Глупость спросили. Эти параметры указываются у функции веб-сервиса в качестве входящих. Правой кнопкой на функции и "добавить параметр".
2. Никто не мешает передать параметры "любых типов", ибо в любом случае это строка. SOAP для полноценного веб-приложения уже мало кто использует - все давно живут в эпоху REST-API, oData и прочего, когда параметры передаются в виде json, а в последнее время и в виде чистого бинарника. Все эти выкрутасы с XDTO идут лесом.
3. У Вас вообще примеров никаких не приводится - одни названия функций и чуть-чуть слов о том, что они делают. Пользу сообществу статья не несет (на мой сугубо личный взгляд).
4. пользователь 21.10.17 23:24
Сообщение было скрыто модератором.
...
5. serg1234 97 22.10.17 11:08 Сейчас в теме
Возможно мы говорим о разных вещах, приведите пример использования REST API и 1С.
6. starik-2005 3088 22.10.17 13:11 Сейчас в теме
(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, хоть двоичные данные). Профит!
AlbinaAAA; cleaner_it; +2 Ответить
12. serg1234 97 23.10.17 10:07 Сейчас в теме
(6)

Я так понимаю у тебя уже есть опыт использования REST-API на практике.
У меня есть вопрос:
К примеру, я опубликовал базу, дал доступ к справочнику "Номенклатура", в котором 100 тыс. записей. Могу ли я, как нибудь отловить ситуацию когда выполняется запрос на выдачу сервером всех записей справочника, и заблокировать отдачу такого объема информации?

Если это возможно, напиши как это сделать, если не трудно.
13. RustIG 1748 30.11.18 17:31 Сейчас в теме
(12) не могу отправить вам сообщение в личку, не знаете почему?
7. serg1234 97 22.10.17 16:53 Сейчас в теме
ну как я понял, все претензии сводятся к тому, что я привел пример, так скажем, слегка устаревший.....

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

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

Я ничего не имею против использования REST-API, oData, я просто привел свой пример использования веб сервисов 1С.
8. olo_lo4 22.10.17 17:35 Сейчас в теме
(0) вот лови хороший пример

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

я на этом примере учился когда то из под PHP обмениваться
V.Nikonov; +1 Ответить
9. starik-2005 3088 22.10.17 19:36 Сейчас в теме
(8)
на этом примере
И такой PHP-г-но-код на сайте 1С! Представляю, что там в исходниках...
10. olo_lo4 22.10.17 19:42 Сейчас в теме
(9) Sergey Andreev тут важен пример и пинок на старте. А сам код вы сможете и адаптировать и оптимизировать.
11. starik-2005 3088 22.10.17 19:44 Сейчас в теме
(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 (т.е. все это г-но заменяется на одну строку).
Оставьте свое сообщение