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

20.10.17

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

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

Скачать исходный код

Наименование Файл Версия Размер
Примеры на PHP
.rar 5,29Kb
41
.rar 5,29Kb 41 Скачать
Тестовая база
.dt 63,43Mb
43
.dt 63,43Mb 43 Скачать

Как мне кажется, очень актуальная тема, на сегодняшний день. В последнее время часто приходится сталкиваться с задачами, в которых нужно использовать базу 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    16427    15    18    

15

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

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

5040 руб.

04.05.2021    18676    10    15    

16

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

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

22656 руб.

25.05.2021    13187    35    8    

14

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

25200 руб.

28.05.2015    86404    26    51    

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

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

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

Если это возможно, напиши как это сделать, если не трудно.
13. RustIG 1688 30.11.18 17:31 Сейчас в теме
(12) не могу отправить вам сообщение в личку, не знаете почему?
7. serg1234 93 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 3051 22.10.17 19:36 Сейчас в теме
(8)
на этом примере
И такой PHP-г-но-код на сайте 1С! Представляю, что там в исходниках...
10. olo_lo4 22.10.17 19:42 Сейчас в теме
(9) Sergey Andreev тут важен пример и пинок на старте. А сам код вы сможете и адаптировать и оптимизировать.
11. starik-2005 3051 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 (т.е. все это г-но заменяется на одну строку).
Оставьте свое сообщение