Пример создания HTTP-сервиса в 1С:Предприятие 8.3. Часть 1
Компания «1С» активно развивает платформу «1С:Предприятие» и с каждым релизом добавляет новые возможности. После старта развития ветки 8.3 новинок стало появляться особенно много и из-за постоянной занятости не успеваешь их все опробовать в деле. Не так давно я рассказывал и показывал как разработать полноценное мобильное приложение (да-да, на «1С:Предприятие»), а сегодня мне хотелось бы поговорить о создании HTTP-сервисов средствами платформы.
Возможность разработки HTTP-сервисов в составе конфигурации появилась еще в версии 8.3.5. За это время компонента несколько раз обновлялась, и сегодня ей вполне можно пользоваться, не опасаясь за наличие «детских» ошибок. Мне еще не доводилось применять функционал платформы «1С:Предприятие» для создания http-сервисов в реальных условиях, поэтому пока опыт ограничивается учебными проектами. Однако, я вижу перспективы применения механизма http-сервисов в одном из текущих рабочих проектов. В этом цикле небольших заметок попробую показать типовые примеры использования http-сервисов в конфигурациях для платформы «1С:Предприятие».
Создание простейшего http-сервиса в 1С:Предприятие 8.3
Сегодня мы рассмотрим пример самого простейшего http-сервиса, а затем будем его улучшать и усложнять. Цель урока – понять и прочувствовать простоту создания http-сервисов на базе платформы «1С:Предприятие 8.3».
Начнем, с формулировки задачи. Создаваемый в рамках заметки сервис должен уметь всего лишь две вещи: принимать GET запрос и отдавать ответ в формате JSON. Задача банальная и сделать что-то подобное на PHP/ASP .NET дело нескольких строчек кода. Забегая вперед, скажу, что в «1С:Предприятие» нам потребуется примерно столько же (ладно вам, не надо смеяться над странностями платформы 1С).
Про кейсы применения http-сервисов мы поговорим в отдельной заметке, а пока просто создадим новый http-сервис. Для удобства создадим новую информационную базу с пустой конфигурацией. Добавим в нее одну подсистему, которую назовем «ТестированиеHTTPСервисов». Теперь откроем в дереве конфигурации раздел «Общие», найдем в нем группу «HTTP-сервисы» и добавим первый веб сервис. В окне создания нового сервиса заполним поля:
- Имя — ПервыйВебСервис;
- Синоним — Первый веб сервис;
- Корневой URL — our-services;
Обратите внимание на поле «Корневой URL». Указанное здесь наименование будет использоваться при обращении к сервису. Здесь не должно быть пробелов и желательно не использовать кириллицу. С этим разобрались, дальше переходим на закладку «Подсистемы» и добавляем http-сервис в единственную доступную подсистему.
Следующим шагом будет описание шаблона URL. Перейдем на соответствующую закладку и добавим шаблон с именем «ВывестиСписокУслуг». В инспекторе свойств найдем свойство «Шаблон» и напишем в нем «/list». Этим самым мы зададим путь, по которому будет происходить взаимодействие с http-сервисом. Шаблон может содержать специальные символы, позволяющие определить передаваемые параметры (как обязательные, так и нет), но для первого примера мы ограничимся простым «/list». При переходе по этому пути будет срабатывать наш единственный метод, и отдавать клиенту набор данных.
Отлично, шаблон есть, теперь дело за методом. Добавим для нашего шаблона, который назовем getServicesList. В инспекторе свойств нам необходимо указать HTTP-метод. Указанное значение определяет, на какие типы запросов будет реагировать наш метод. Текущая задача вполне позволяет обойтись методом “GET”.
Наш сервис почти готов, остается только прописать обработчик события для сконструированного метода getServicesList. Создать обработчик события можно через инспектор свойств. В теле обработчика пишем:
Разберем приведенный код чуть подробней. В самом начале я описываю массив, состоящий из структур. Этот массив нам нужен сугубо для демонстрации. Все его содержимое мы переведем в JSON и отдадим клиенту. Инициализируем объект типа ЗаписьJSON. Обязательно вызываем метод УстановитьСтроку(), т.к. нам необходимо получить текст JSON в строковую переменную. Далее вызываем глобальный метод ЗаписатьJSON(), которому передаем объект типа ЗаписьJSON и массив, который необходимо конвертнуть. Дальше получаем результат в переменную «СтрокаДляОтвета» и готовим HTTP-ответ.
В ответ мы добавляем (см. метод «УстановитьТелоИзСтроки») получившийся JSON. Все, код демонстрационного примера готов и можно переходить к тестам.
Публикация HTTP-сервиса в 1С:Предприятие 8.3
Опубликуем созданный HTTP-сервис для тестирования результатов проделанной работы. Для простейшего теста в вашей систем должен быть установлен веб-сервер. У меня роль веб-сервиса выполняет Apache. Шаги, необходимые для установки/настройки веб-сервера мы пропустим, а перейдем к вопросу публикации HTTP-сервиса.
Для публикации необходимо перейти в меню «Администрирование» и выбрать пункт «Публикация на веб-сервере». В появившемся окне заполняем:
- Имя – имя нашего решения. Оно будет использоваться в URL при доступе к опубликованной ИБ. Например, если указать здесь test, то ваша ИБ будет доступна по адресу http://localhost/test. Меня устраивает вариант test.
- Веб-сервер — Заполняется автоматически. У меня в качестве веб-сервера используется Apache 2.2;
- Каталог – путь к директории, в которую будет помещен конфигурационный файл публикуемой ИБ;
- Снимаем флажки «Публиковать тонкий клиент и веб-клиент», «Публиковать стандартный интерфейс OData», «Публиковать WEB-сервисы по умолчанию»;
- На вкладке HTTP-сервисы отмечаем флаг «Публиковать HTTP-сервисы по умолчанию» и в табличной части отмечаем созданный сервис.
Нажимаем кнопку «Опубликовать», платформа предложит перезапустить веб-сервер – соглашаемся.
Тестируем HTTP-сервис
Для тестирования созданного http-сервиса запустим какой-нибудь браузер и попробуем обратиться к нему. Если вы повторяли все мои действия, то путь должен получиться таким:
Стоит обратить внимание на порт 9090, который указан через двоеточие после имени хоста. Если вы ставили Apache с настройками по умолчанию, то у вас он будет слушать 80-й порт, следовательно, ничего указывать не нужно. В итоге URL будет таким:
Попробуйте перейти по нему, и если все работает корректно, вы получите страницу с данными в JSON формате:
На этом рассмотрение демонстрационного примера можно заканчивать, но мне хотелось бы напоследок разобрать URL на составляющие элементы, чтобы было понятно почему мы получили именно такую ссылку.
Итак, первая часть должна быть понятна – localhost. Это имя хоста, на котором установлен веб-сервер. Дальше указывается ссылка (services) на опубликованную ИБ. Следом идет hs, этот элемент пути указывает, что нас интересует взаимодействие с http-сервисом. Последние два элемента – корневой URL нашего сервиса и шаблон URL.
Вместо заключения
«1С:Предприятие 8.3» позволяет создавать простые HTTP-сервисы с минимум трудозатрат в чем вы и должны были убедиться после прочтения этой небольшой заметки. Функциональная возможность существенно расширяет варианты применения платформы. В следующих заметках мы поговорим о практических кейсах применения технологии и рассмотрим реализацию различных решений на практике.
Введение
Логика работы веб-сервера довольно проста: он прослушивает обращения по сети по определенному порту и при запросах пытается ответить. В случае публикации 1С на веб-сервере мы получаем возможность передать запрос с клиента по http-протоколу и получить на это какую-то реакцию. Причем, клиентами могут быть самые обычные браузеры, которыми мы пользуемся в обычной жизни, а реакция веб-сервера на наши запросы полностью будет определяться тем функционалом, который будет заложен и описан языком 1С. Проще говоря, обращаясь к веб-серверу, мы набираем в браузере некоторую ссылку и получаем ответ от базы 1С.
Для выполнения публикации базы данных вам потребуются: установленная программа 1с (файловый или клиент-серверный вариант базы — не важно), дистрибутив установки 1С, установить web-сервер (IIS, Apache), иметь права администратора компьютера на текущем пользователе для того чтобы устанавливать программное обеспечение и назначать права на папки.
В данной статье, мы будем использовать файловую базу данных и веб-сервер IIS. Настройку веб-сервера будем рассматривать в минимально необходимом варианте для целей публикации 1с.
Вне зависимости, какой веб-сервер вы предпочли, публикация базы будет состоять их нескольких подобных шагов:
1. Установка из дистрибутива 1с-предприятия компоненты «Модули расширения веб-сервера»
Запускаем из дистрибутива программы файл 1CEnterprise 8.msi. В появившемся окне выбираем «Изменить»
Теперь щелкаем «Далее >»
Выбираем для установки «Модули расширения веб-сервера» и, щелкнув «Далее >», устанавливаем выбранный компонент.
2. Установка Web-сервера (IIS)
Теперь нам надо получить работающий веб-сервер. Как уже отмечалось, для демонстрации был выбран IIS. Качать ничего ниоткуда не надо, он уже есть в Windows, и сейчас мы его установим.
Для того чтобы добраться до установки дополнительных компоненты Windows нам потребуются некоторые права. Интерфейс системы может быть настроен у всех по разному, поэтому воспользуемся командной строкой чтобы вызвать «Панель управления»
Нажимаем кнопки Win+R чтобы вызвать командную строку, вводим «Control» и нажимаем OK
После этого у нас должна открыться «Панель управления»
Для удобства выбираем просмотр «Мелкие значки» и выбираем «Программы и компоненты». Далее нам необходим выбрать пункт «Включение или отключение компонентов Windows»
Для того, чтобы web-сервер работал в локальной сети нам необходимо найти каталог со службами IIS и проставить следующие галочки:
Расширения ISAPI, Контроль управления IIS, Служба управления IIS, Сценарии и средства управления IIS.
После этого нажимаем OK и применяем наши изменения.
Сейчас нам надо вновь вернуться в Панель управления и перейти в этот раз по ссылке «Администрирование». После подключения дополнительных компонентов Windows здесь появится оснастка «Диспетчер служб IIS»
Запускаем ее, выбираем «Пулы приложений» >» Default App Pool», щелкаем правой кнопкой мыши и в появившемся меню выбираем пункт «Дополнительные параметры», устанавливаем параметр «Разрешены 32-разрядные приложения» в True.
Дополнительно настроим Default Web Site и пропишем ему IP-адрес нашего компьютера в сети. Щелкаем правой кнопкой мыши на «Default Web Site» , выбираем «Изменить привязки», указываем IP адрес машин с Web-сервером и сохраняем. Порт по умолчанию 80.
На этом настройку Web-сервера можно считать законченной. Осталось добавить в базу данных, к примеру HTTP-сервис и опубликовать. В этой статье мы рассматривали работу с Http-сервисом, вот им и воспользуемся в целях демонстрации.
3. Публикация базы 1с на Web-сервере
Запускаем базу в конфигураторе под правами администратора локального компьютера. HTTP-сервис используем отсюда.
Создаем папку для обмена. В нашем случае она будет расположена на диске D, назовем ее Exchange.
Добавляем пользователю IUSR необходимые права на чтение на каталог Bin текущего релиза конфигурации и права на изменение каталога базы, если база файловая. (Правая кнопка мыши на папке, Свойства-Безопасность). Вот выдержка из ИТС, думаю, тут можно без комментариев оставить:
Далее, проводим публикацию в конфигураторе. Для этого надо войти в меню «Администрирование — Публикация на веб-сервере». Отключаем все галочки, оставляем только Http-сервис «Передача данных». Он нам не особо нужен, но без него при публикации нам сообщат, что нечего публиковать. Для того, чтобы публиковать сервисы из расширения, 1с рекомендует ставить галочку «Публиковать Http-сервисы по умолчанию». Можно ее поставить и все будет работать. Но я предлагаю отредактировать файл и внести туда настройки базы вручную. Поэтому, галку можно не ставить.
В нашем каталоге обмена создано два файла, оба можно прочитать обычным блокнотом. Интересовать нас будет default.vrd
Открываем и пролистываем до секции HTTP-сервисов, они в конце. Тут сейчас один-единственный http-сервис, который называется «Передача данных». Копируем его:
Меняем у нового блока соответствующие поля на названия нашего http-сервиса из расширения. Name = «HS_Price», rootUrl = «hs_price», reuseSessions = «autouse» (почему то с значением use у меня работать на захотел). Сохраняем.
Пытаемся вызвать наш сервис. Все заработало, но надоедает окно авторизации. Данные в него вводить не очень удобно, для авторизации нужно указать данные учетной записи 1с.
Все прекрасно, http-сервис работает и возвращает то, что от него ожидается. Прайс-лист заданного в ссылке наименования вида цен со штрих-кодами.
HTTP Services URL: обмен между базами 1с с помощью сервиса интерграции — создание и настройка
На платформе 1C начиная от версии 8.3.5 и выше появилась новая возможность создания сервисов с уникальными HTTP services URL. Подобные системы позволяют не только осуществлять штатные задачи, как отправку, прием и корректировку данных, но и обладают куда более глубокими возможностями. Например, формирование простых, но действенных клиентских приложений. Плюс, что примечательно, общая нагрузка на сам сервер снижается, благодаря уменьшению объема сведений, а также их оптимизации.
В результате мы получаем отличный инструмент, позволяющих реализовывать самые непростые задания даже на смартфонах, ведь вычислительная мощность потребуется относительно небольшая.
Шаблон создания HTTP сервиса 1С
В первую очередь нам понадобится сам веб-сервер. Отличным вариантом считается Apache, подходящий версией от 2.2 и выше. Конкретнее про установку мы поговорим дальше в представленным обзоре, пока же по вводным факторам.
Для начала создаем сам serves. Вводим произвольное название, фактически роли это не играет.
А вот сам URL – это куда более важная часть. Именно по этому адресу будет доступен корневой каталог, поэтому заранее определите корректное наименование.
Свойств у только что нами созданного URL немного, а именно одно – шаблон. Это запись, по которой будет доступен путь до serves.
Вы можете задавать параметры для сегментирования. То есть, градировать на неопределенное количество внутренних разделов. Выполняется это с помощью следующих настроек.
А вот у методов уже есть возможность присвоения множества свойств. Таких, как движение, удаление, блокирование, соединение, получение, путь и так далее.
При обращении к системе автоматически будет сопоставлен введенный адрес с имеющимся шаблоном. И если они соответствуют, то в ответ выдается выбранный вами метод. Если же соответствия не произошло, то ответная реакция от HTTP сервиса 1С будет 404, что является кодом ошибки.
Публикация и проверка
Завершающим шагом будет отправка нашего созданного шаблона в работу. Но на многих версиях этого не получится сделать, если сама программа не была запущена от имени администратора. Если не получилось опубликовать ваш вариант, просто закройте конфигуратор и откройте снова через щелчок правой кнопки мыши и выбор соответствующей опции.
Итак, если мы все сделали верно, то в случае этого примера, он будет доступен по адресу – localhost/HTTPTest/hs/Obmen/test-parametr/Test/GetInfo?param=value.
Разберем каждый сегмент этого пути:
- Localhost – соответственно, сам адрес изначального сервера.
- HTTPTest – как вы можете наблюдать из скрина, именно такой набор символов мы ввели в названии нашей тестовой публикации.
- Hs – а вот это важнейшая часть. Это указатель, который дает понятие о том, что происходит именно обращение к 1С HTTP сервису.
- Obmen – это название корневого каталога, который мы задавали ранее.
- test-parametr – соответственно, указанный нами изначально метод определения, а точнее, его путь.
- GetInfo – это уже наименование.
- param=value – нестрогий вариант параметров.
При выполнении процедуры произойдет следующее.
Здесь мы обратились к методу, получили соответствующий ответ. При этом для работы нам в любом случае понадобится авторизация. И решить возникшее затруднение в принципе несложно. Потребуется просто задать новый логин и пароль. А после авторизоваться по введенным опциям. Но есть и другая методика реализации этой функции, если обратиться к 1С HTTP сервис vrd. Мы напрямую можем изменить файл default, добавив в блокнот следующую запись – Usr=Логин; Pwd=Пароль. В результате надобности в авторизации как таковой не будет. И наша публикация будет доступна свободно.
Готовые решения для всех направлений
Ускорьте работу сотрудников склада при помощи мобильной автоматизации. Навсегда устраните ошибки при приёмке, отгрузке, инвентаризации и перемещении товара.
Мобильность, точность и скорость пересчёта товара в торговом зале и на складе, позволят вам не потерять дни продаж во время проведения инвентаризации и при приёмке товара.
Обязательная маркировка товаров — это возможность для каждой организации на 100% исключить приёмку на свой склад контрафактного товара и отследить цепочку поставок от производителя
Скорость, точность приёмки и отгрузки товаров на складе — краеугольный камень в E-commerce бизнесе. Начни использовать современные, более эффективные мобильные инструменты.
Повысьте точность учета имущества организации, уровень контроля сохранности и перемещения каждой единицы. Мобильный учет снизит вероятность краж и естественных потерь.
Повысьте эффективность деятельности производственного предприятия за счет внедрения мобильной автоматизации для учёта товарно-материальных ценностей.
Первое в России готовое решение для учёта товара по RFID-меткам на каждом из этапов цепочки поставок.
Исключи ошибки сопоставления и считывания акцизных марок алкогольной продукции при помощи мобильных инструментов учёта.
Получение сертифицированного статуса партнёра «Клеверенс» позволит вашей компании выйти на новый уровень решения задач на предприятиях ваших клиентов..
Используй современные мобильные инструменты для проведения инвентаризации товара. Повысь скорость и точность бизнес-процесса.
Отладка
Итак, чтобы в принципе была возможность корректировки, нам в изначальном файле нужно прописать некоторые параметры. А точнее – в режиме отладчика поставить опцию «Разрешена по IP/TCP». А также указать адрес сервера в соответствующем пункте.
Далее зайдем в режим чуть глубже, выберем в настройках – автоматическое подключение. Перед нами раскроется новая вкладка, где мы определим исходные факторы. Галочку необходимо поставить лишь одну, напротив соответствующего типа авто-коннекта. Поскольку мы говорим про методы обмена данными через веб HTTP сервис 1С между базами, нам и понадобится эта настройка.
А теперь перезапускаем сам сервер. Внесенные изменения должны ведь еще и сохраниться перед началом работы. После этого публикация станет доступной. Помните, что в принципе тестирование и оптимизацию можно провести не только внутренними силами программы, но и сторонними утилитами отладчиками. Fiddler2 может стать неплохим способом.
Не будем путать эти дополнительные инструменты с теми, которые помогают внедрить саму платформу в текущую программную экосистему на предприятии. Они носят совершенно иное название. А именно – 1С сервисы интеграции, что это легко понять, представив помощника, который просто связывает всю текущую систему 1C, ее задачи и нужды и ПО. Получается, переносит все требования в настройки конфигуратора.
Помните, что, если у вас не выходит самостоятельно произвести все обозначенные действия, вы всегда можете обратиться к поставщику программного обеспечения. Да, не все из них готовы взять на себя подобного рода деятельность. Но, заказывая ПО у «Клеверенс», вы получаете:
- полноценное внедрение систем;
- адаптацию для различных предприятий;
- по желанию полное техническое сопровождение;
- отладку;
- сервисы интеграции 1С.
Требование к инструментам
Теперь пойдем более подробно по всем возможностям. Чтобы у наших читателей не осталось вопросов. Раздел для тех, кто решил действовать самостоятельно. Первое, что понадобится, платформа/компьютер и доступ в интернет. Далее, как уже упоминалось, установленный сервер. И само программное обеспечение. И если первый пункт пояснений не требует, то с остальным давайте разбираться подробнее.
Веб-сервер Apache
Для начала зайдем на официальный сайт разработчика. И найдем здесь только голые исходники. Да, конкретно дистрибутива на платформе в наличии нет, это не компетенция проекта. А лежит она в плоскости деятельности различных партнеров. Благо, на самом виртуальном ресурсе есть соответствующие ссылки. Воспользуемся одной из них.
Действия такие – открываем скаченный exe-шник, но обязательно производим запуск от имени администратора. Иначе часть функций останется недоступными, а значит, установка пройдет некорректным образом.
Начальные параметры скорее стоит оставить по умолчанию, в основном они выбраны правильно для новичков. Единственное «но» заключается в выборе дополнительных компонентов. Вот здесь настолько огромный массив нам точно не понадобится. Поэтому снимаем галочки с лишних окон.
Если все прошло удачно, суммы файлов совпали, то после завершения процедуры у нас автоматически активируется приложение XAMPP.
Это правильно, но именно так оно будет отображаться, только если это ваша первая установка подобного программного обеспечения. Дело в том, что для подключения утилита занимает 80-ый порт. А значит, его не должны использовать другие программы. Если подобное случится, то вы получите совершенно иное сообщение. А выглядеть оно будет так.
Ничего страшного не случится даже в этом случае. Все, что нам нужно – это открыть конфигурации, чтобы внести некоторые корректировки. Для этого находим строчку Listen, и в ее числовом значении на конце после точки стираем написанное, вручную добавляем цифры 8080. Такие же манипуляции проводим и с именем сервера в том же раскрывшемся файле. Проблема решена.
Но осталась другая – нужно присвоить серверу свойство службы нашего Windows. Зачем это делать? Дело в том, что в противном случае параметры запроса к HTTP сервису 1С (httpсервисзапрос) будут не учитывать сам Apache. Соответственно, мы не сможем выбрать его в качестве источника публикации, после того как создадим наш проект.
Нам нужно найти установочный файл сервера с разрешением .bat. А после изменить в нем путь, дописав вот это – HTTPd.exe. Сохраните внесенные изменения. А теперь просто попробуйте его запустить, но опять же, обязательно от имени администратора. Вас должно ожидать подобное.
Устанавливаем платформу
Чтобы использовать возможности ПО, нужно его установить, логично. И процедура еще легче, чем предыдущая. Также запускаем exe-шник, оставляем все настройки на своих местах. Только добавляем модули расширения.
Рекомендуется после установки здесь же запустить новую базу. Для отладки некоторых моментов. А именно, заходим в конфигурации и активируем режим модульного использования.
Пара слов о протоколе
Давайте уделим немного внимания самому HyperText Transfer Protocol. Копнем слегка в его структуру, чтобы понимать, с чем имеем дело. А ее схематично можно представить вот таким образом.
Название структурного элемента
Поясняется сам метод, с помощью которого будет происходить обмен информацией. Соответственно, это и версия, и сам URL
Короткое описание, которое обычно содержит ключевые по значению параметры
Содержание информационного пакета. Примечательно, что фактически он вполне может быть незаполненным, но обозначенные выше сегменты все равно должны присутствовать
Как работает обмен данными
Немного поняв принципы самого протокола, переходим к тому, как обратиться к HTTP сервису 1C (1С:8), пример запроса выглядит так.
Рассмотрим более подробно.
Запрос
Эта функция позволяет нам с помощью объектного программирования составить текстовую составляющую адреса и заголовки. Первый момент отвечает за путь, которой направляет нас на объект, второй – содержит параметр соответствия. Примечательно, что вручную заполнять ничего не придется.
Соединение
Функция для передачи информации по протоколу. Может использовать различные типы защиты, например, TLS 1.2. При этом снабжается мерами аутентификации, то есть, необходимо введение логина и пароля.
Для обработки используются различные методы, как получить, отправить, отказать и так далее. Допустимо построение некоторых форм, как вариант:
Одним из распространенных способов является также 1C HTTP сервисы post-метода.
Далее мы рассмотрим, как происходит работа связки этих двух параметров на практике.
Создание соединения
Если рассматривать все на примере кода, то в самой первой строке нам нужно указать тип обмена данными, а также название нашего нового фрагмента. Допустим, «Закупка товаров» или любое иное, по вашему усмотрению.
Заголовок
Далее нам необходимо задать соответствие. В принципе, здесь есть только два основополагающих параметра. Первый – accept. Команда предназначена для определения типа сведений, а также файлов, которые будут приняты на сервере. Это картинки в обозначенных форматах, видеофайлы, текстовые и так далее.
Второй – user-agent. Это наименование инструмента, с помощью которого мы и осуществляем коннект.
Создаем запрос
Теперь по аналогии мы и запрашиваем исполнение файла. Сама форма состоит из двух частей. Первая — включает в себя путь до этого объекта, а вторая – ее тип соответствия. Если это изображение в .jpg, то так и прописывается. Для понимания – /wp-content/uploads/2021/11/sait.ru-logo-200wide-65high-2021-12-04-v12.png, примерно так будет выглядеть наш запрос.
Отправка
Для передачи нам понадобится лишь указать наименование объекта. Правда, полностью и с точностью. А также присвоить параметр получения, звучит он в программе, как Get.
Обработка
Обращаем внимание на код, который идентифицирует состояние процесса. Нас устраивает только успешная пересылка, а она обозначается как 200.
Работа с базами
Общие принципы мы уже успели уяснить. Теперь закрепим на конкретном прикладном кейсе. Итак, мы создаем новый проект с рандомным наименованием. Давайте, возьмем объект – клиенты (контрагенты).
В общих параметрах мы создаем соответствующий клиентский лист.
А также задаем метод обработки входящих данных, чтобы сервер распознавал, что от него вообще требуется.
Далее пойдем по коду.
Создание перечня customers
Для начала присваиваем значение для все базы, потом для каждого конкретного человека из общего перечня. Берем для идентификации следующие данные: имя, идентификатор, номер его мобильного телефона, а также адрес электронной почты. В общем-то, полностью готовый лид.
Сериализуем данные
То есть, мы переводим их из первоначальной формы в программную. Чтобы свободно передавать в качестве информационного потока.
Составляем ответ
Теперь же нам нужно указать, что именно даст обратно сервис, если к нему обратятся с соответствующим запросом.
Как мы помним, 200 – значение положительного результата нашей функции. Опубликованный запрос принимает следующий вид.
А в самом конфигураторе поиск выглядит так.
Забив же адрес в браузере, мы проследим ответ в форме сериализованных сведений.
Запрос на CustomerCode
Теперь разберем код, который позволит по идентификатору найти искомое лицо. Выполняется это также несложно.
Сначала сформируем сам запрос, который направим через 1С веб-сервис rest. Выглядит так.
Функция понятна. Если данных не найдено, то после параметра then у нас сработает следующая строка.
Как видим, в этом случае ответ не выдается. Очевидно, ведь его просто нет, по указанному идентификатору в базе никаких контрагентов не находится. Что же следует после else.
Правильно, при найденном номере автоматически заполняется карточка. Вносятся сведения по имени, номеру смартфона и электронной почте. Соответственно, итоговое искомое лицо и вся его характеристика найдена.
И не забываем про сериализацию, в противном случае отправку совершить будет невозможно.
Это тоже своего рода защита, как S в протоколе. То есть, 1С HTTP сервисы и HTTPS отличаются только степенью защищенности пользовательских данных.
Формируем ответ
Мы нашли нужного человека. Теперь нам необходимо, чтобы программа выдала данные в приемлемой форме. Вот в такой.
Касательно post – алгоритм такой же.
И выдача приобретает такой вид.
Заключение
Как вы понимаете, для человека, который не прошел специальное обучение, освоение этой техники с нуля будет довольно проблематичным. Придется потратить значительное время, чтобы освоиться. Поэтому созданием и настройкой обычно занимаются профессионалы. Если же на вашем предприятии такого сотрудника нет, то логично будет пройти обучение. Ведь если не работает HTTP сервис 1С и обмен данными через 1C, настройка – в 90% и является причиной случившегося. Просто неверны базовые параметры. Соответственно, чтобы не парализовать производство всего отдела, к работе стоит допускать только компетентного человека, прошедшего соответствующий курс.
HTTP-сервисы в 1С 8.3 с примерами
В данной статье мы рассмотрим основные сценарии создания своих HTTP-сервисов в 1С. На нескольких примерах мы разберем устройство HTTP-сервисов в 1С – как их настраивать в конфигураторе, какие объекты и методы языка используются. Также познакомимся с некоторыми нюансами разработки HTTP-сервисов, и слегка коснемся способов их тестирования и отладки.
Содержание
Немного теории о http-сервисах в 1С 8.3
HTTP -сервисы – это объекты конфигурации, которые позволяют обрабатывать входящие HTTP запросы, и по сути “превращают” 1С в бэкенд-движок. В их основе лежит использование протокола HTTP и его методов, таких как GET, POST, UPDATE и других. Программные средства платформы позволяют анализировать URL-адрес запрошенного ресурса, параметры HTTP запроса, его заголовки и тело, и в зависимости от этого возвращать тот или иной HTTP-ответ.
Входящий HTTP запрос включает в себя URI-адрес, имя метода, заголовки, параметры URL(обязательные части адресной строки) и параметры запроса(необязательные части адресной строки), а также может содержать тело запроса.
После обработки входящего запроса HTTP сервис должен вернуть ответ, который состоит из заголовков, кода ответа и тела ответа. Телом может быть простой текст, двоичные данные, файл, HTML-документ и т.д.
Жестких требований к структуре адреса URI и к обработке методов нет, но существуют распространенные соглашения. Например, будет дурным тоном использовать метод DELETE для создания элементов, или метод GET для удаления.
Одним из подходов к архитектуре http-сервисов является REST API, но далеко не всегда при разработке http-сервисов целесообразно во всем следовать методологии REST.
В отличие от SOAP сервисов, HTTP сервисы гораздо менее формализованные и более гибкие, что одновременно является и достоинством и недостатком.
За дополнительной теоретической информацией можно проследовать по ссылкам:
Список заголовков HTTP
Список кодов состояния HTTP
Еще больше про протокол HTTP от Mozilla
Пример простого http-сервиса
Как водится, любую теорию лучше закреплять на практике. Создадим простой http сервис, который будет возвращать текст “Hello world”.
Для этого перейдем в конфигуратор и откроем ветку метаданных Общие / HTTP-сервисы. Имя сервиса как нравится, например, “HelloWorld”. Важным свойством является корневой URL – это та часть адреса, которая будет стоять перед URL для конкретных шаблонов.
Следующее, что необходимо сделать – добавить шаблон на вкладке Шаблоны URL. По этому шаблону платформа будет осуществлять диспетчеризацию входящих запросов – если текст URL будет соответствовать какому-то шаблону, будет вызван обработчик соответствующего метода. Если же ни один шаблон не подошел, будет возвращен ответ с кодом ошибки.
Добавим шаблон “/say”. В итоге получим следующий URL 127.0.0.1/demohttp/hs/helloworld/say. По частям он выглядит так: /hs/ . hs в адресе, как не трудно догадаться, означает “HTTP сервисы”.
Каждый шаблон URL может принимать запросы с разными методами. Для простого примера HTTP-сервиса добавим метод GET, и укажем имя события обработчика. Если не указать, платформа сгенерирует имя самостоятельно.
Платформа автоматически создаст заготовку процедуры-обработчика, и нам останется только дополнить ее своим кодом.
Чтобы сервис что-то возвращал, кроме кода ответа, нам понадобится установить тело ответа. Нам доступно три варианта – установить тело из файла, из потока либо из строки. Последнее мы и используем.
Чем хорош метод GET – так это тем, что он прекрасно вызывается из адресной строки браузера – достаточно указать нужный URL, и браузер отправит HTTP запрос, и отобразит ответ в текущем окне или вкладке.
Но для того, чтобы внешний мир “увидел” ваш сервис, необходимо опубликовать информационную базу на веб-сервере. Это может быть Apache либо Microsoft IIS – выбирайте что вам проще и удобнее. Важно – для публикации на веб-сервере конфигуратор необходимо запустить от имени администратора ОС!
В настройках публикации необходимо отметить флажком нужный HTTP-сервис и проставить также флажок “Публиковать HTTP сервисы по умолчанию “.
Для проверки наберем адрес нужного нам сервиса в браузере.
ПараметрыURL
Теперь давайте немного усложним наш сервис, а заодно познакомимся с передачей параметров.
При создании шаблона мы можем указывать не только фиксированные части, но и так называемые именованные секции. Они представляют собой часть адреса, указанную в фигурных скобках. Например, мы можем указать шаблон “/say/
В этом случае при обработке входящего запроса нужный параметр будет содержаться в коллекции ПараметрыURL. Ключ коллекции – это сама именованная секция, а значение – то что было фактически указано в адресе URL. Например, если мы укажем /say/admin, то в коллекции у нас будет один элемент – с ключом “name” и значением “admin”.
Обратите внимание, что указание значения для именованных секций является обязательным. Т.е. если есть секция name, ее обязательно придется заполнить, чтобы сработал корректный шаблон. Либо нужно предусматривать несколько шаблонов – например один с именованной секцией, другой – без нее. В противном случае мы получим ошибку 404.
Немного изменим код нашего сервиса, чтобы он выводил в ответном сообщении все значения параметров URL. Здесь для того, чтобы браузер корректно отобразил кириллические символы, мы указываем заголовок Content-Type, в котором “говорим” браузеру, что в ответе – обычный текст в нужной нам кодировке utf-8.
Так как ПараметрыURL – это обычное фиксированное соответствие, то и работать мы с ним будем как с фиксированным соответствием, и для доступа к значениям можем использовать метод Получить(), либо же перебрать коллекцию в цикле.