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

20.10.17

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

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

Файлы

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

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Как мне кажется, очень актуальная тема, на сегодняшний день. В последнее время часто приходится сталкиваться с задачами, в которых нужно использовать базу 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С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

57600 руб.

26.11.2024    6259    4    3    

7

WEB-интеграция Программист Бизнес-аналитик 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    3572    17    2    

19

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

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

36000 руб.

03.08.2020    21358    29    24    

24

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

В расширении реализован механизм интеграции между системой поставщика и Личным кабинетом СДТ. Реализован обмен заказами и реализациями (накладными), предусмотрено отслеживание статусов документов. Расширение предназначено для 1С:УТ 11.4.

35856 руб.

27.11.2024    1935    1    0    

1

WEB-интеграция Программист 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разработана для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

12000 руб.

02.02.2021    20377    58    52    

36

Обмен с ГосИС WEB-интеграция Бухгалтер Пользователь 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

5196 руб.

28.04.2016    97562    110    218    

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

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

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

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