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

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

57600 руб.

26.11.2024    1535    1    1    

4

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

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

36000 руб.

03.08.2020    18565    20    22    

18

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

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20710    13    19    

18

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    474    2    0    

5

Обмен с ГосИС 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

2400 руб.

28.04.2016    92184    184    217    

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