HOWTO: создание и отладка HTTP-сервиса в 1С:Предприятие

Публикация № 538808

Разработка - Практика программирования

HTTP-сервис RESTful

Статья о том, как можно быстро создать HTTP-сервис в 1С:Предприятие и как выполнять его отладку.

Начнем с конца: что в итоге должно получиться...

Создание HTTP-сервиса.

Предположим, что нам нужен HTTP-сервис, который по запросу вернет список пользователей.

Выглядеть он должен следующим образом: http://localhost/base/hs/info?action=getusers

Возвращать должен строку JSON (массив объектов JSON со свойствами: имя пользователя, id пользователя):

[
 { "name": "Администратор", "id": "563e7509-83bb-11e5-80c3-00505601174a" },
 { "name": "Гость", "id": "423a9d3d-88fc-11e5-80c3-00505601174a" } 
]

Чтобы это реализовать, создадим в конфигурации (или в расширении) объект HTTP-сервис. Как он будет называться – неважно, для простоты назовем его «Инфо». Корневой URL должен быть равен «info».

HTTP-service creation

Далее добавим к нему шаблон URL, для простоты назовем его «Основной». Значение шаблона должно быть равно «/*».

Шаблоны URL

К шаблону мы добавим метод GET: имя = «GET», HTTP-метод = «GET».

Method adding

Примечание. Имя метода рекомендуется назначать по имени HTTP-метода.

Создадим обработчик HTTP-метода GET.

Handle setting

По умолчанию процедура обработчика метода заполнена кодом, возвращающим стандартный успешный HTTP ответ (код 200).

Функция ОсновнойGET(Запрос)
	Ответ = Новый HTTPСервисОтвет(200);
	Возврат Ответ;
КонецФункции

Скорректируем его так, чтобы он возвращал нам список пользователей.

Функция ОсновнойGET(Запрос)
	Ответ = Новый HTTPСервисОтвет(200);
	Если НРЕГ(Запрос.ПараметрыЗапроса.Получить("action")) = "getusers" Тогда
		Ответ.УстановитьТелоИзСтроки(ВернутьСписокПользователей());
	КонецЕсли;
	Возврат Ответ;
КонецФункции 

Функция ВернутьСписокПользователей()
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Пользователи.Ссылка
	|ИЗ
	|	Справочник.Пользователи КАК Пользователи
	|ГДЕ
	|	Пользователи.Недействителен = ЛОЖЬ";
	Выборка = Запрос.Выполнить().Выбрать();
	ОтветМассив = Новый Массив;
	Пока Выборка.Следующий() Цикл
		ОтветМассив.Добавить(Новый Структура("name,id",Выборка.Ссылка.Наименование,""+Выборка.Ссылка.УникальныйИдентификатор()));
	КонецЦикла;
	
	Ответ = Новый ЗаписьJSON;
	Ответ.УстановитьСтроку();
	ЗаписатьJSON(Ответ,ОтветМассив); // сериализует ОтветМассив в формат JSON
	Возврат Ответ.Закрыть();
КонецФункции

Проверяем результат:

Result

Отладка HTTP-сервиса.

Настройка подключения отладчика.

Для отладки HTTP-сервиса нужно включить (или убедиться в том, что включено) следующие флажки.

  1. Разрешить отладку HTTP-сервисов в меню публикации 1С:Предприятие (Конфигуратор / Администрирование / Публикация на веб сервере…).
    Включение отладки
    Адрес отладчика – адрес компьютера, где мы будем запускать конфигуратор (обратите внимание на синтаксис: «tcp://<адрес отладчика>»).
  2. Включить автоматическое подключение к HTTP-сервисам на сервере (Конфигуратор / Отладка / Подключение…).
    Set up autoconnection
    Set up autoconnection 2

Проверим, как это все работает.

Поставим точку останова в начале функции метода GET:

Breakpoint

Обновляем страничку с вызовом нашего сервиса.

Site open

Убеждаемся, что наш отладчик успешно подключился к сеансу HTTP-сервиса:

Check breakpoint catch

Check value of variables

Заключение.

В этой статье рассмотрен простейший пример для быстрого создания HTTP-сервиса с целью освоения механизмов работы с ним.

В заключении хотелось бы упомянуть про возможность создания HTTP-сервисов с параметрами URL, например:

Parts of link description 

Эта возможность настраивается в ШаблонеURL HTTP-сервиса.

Для вышеуказанного примера шаблон мог бы выглядеть так: «/users/{idПользователя}/*» или так «/{Раздел}/{id}/*».

Another template example

В функции обработчика метода этого шаблона параметры URL можно получить через свойство Запрос.ПараметрыURL, например так:

Запрос.ПараметрыURL[«idПользователя»]

Example for template params

Обратите внимание на последовательность обработки шаблонов HTTP­-сервиса.

В нашем примере использованы 2 шаблона:

  1. /*
  2. /users/{idПользователя}/*

При вызове метода http://10.211.55.3/base/hs/info/users/0b3dcecf-104e-11e6-9bdd-001c42ecfab6?action=disable сработает шаблон 1, т.к. параметры URL ему также соответствуют, а обрабатывается он первым. Чтобы этого не происходило, первый шаблон рекомендуется изменить на «/i/*» для однозначного соответствия URL шаблону.

Вызывать первый метод соответственно также придется с новым URL:

Check new template 

Специальные предложения

Лучшие комментарии
17. unpete 539 07.09.16 19:45 Сейчас в теме
(16)
btoa(escape('Администратор') + ":" + 'password')
Наверное, имелось в виду btoa(unescape(encodeURIComponent(('Администратор') + ":" + 'password')))

Вариант btoa(escape... сделает негодную строку для символов с кодами > 127
tanegorova; zarucheisky; serg_infostart; +3 Ответить
Остальные комментарии
Избранное Подписка Сортировка: Древо
1. ZOMI 424 26.07.16 00:11 Сейчас в теме
Значительная часть статьи украдена отсюда

Интересно почему нет никаких указаний что это не оригинал, а сперто. Даже если это коллеги делятся - как-то не принято выдавать за свой труд чужие статьи.


JohnyDeath; Rustig; +2 Ответить
2. Makushimo 154 26.07.16 05:41 Сейчас в теме
(1) ZOMI,
чуть было не плюсанул ))
3. baracuda 2 26.07.16 08:48 Сейчас в теме
4. awk 695 26.07.16 10:23 Сейчас в теме
(1) ZOMI, Прочитал - статьи разные. Список источников конечно указывать хорошо, но это на усмотрении модераторов - плюсанул...
5. ZOMI 424 26.07.16 10:32 Сейчас в теме
(4) awk, конечно, разные. Но речь о том что большая часть из другой статьи. И видимо чужой. Так что плюсанули вы плагиатору.
6. starik-2005 2012 26.07.16 11:57 Сейчас в теме
(5) ZOMI, с учетом того, что скопипастена только часть "Заключение", а сама статья весьма уникальна, Ваше мнение несколько странно смотрится.
7. ZOMI 424 26.07.16 12:30 Сейчас в теме
(6) starik-2005,

скопипастена только часть

нет, смотрите внимательнее.

Обычный плагиат.

а сама статья весьма уникальна


да, ну?

http://its.1c.ru/db/metod8dev/content/5756/hdoc
9. starik-2005 2012 26.07.16 20:11 Сейчас в теме
(7) ZOMI, здесь Вы противоречите своему первому посту, где сказали, что значительная часть статьи на кодерлайне, и якобы автор ее скопипастил оттуда, а на то, что с кодерлайна только заключение, Вы сцылку на 1С-ный сайт даете...

А с другой стороны, чем больше о веб-сервисах напишут, тем лучше жить, а то меня убивают люди, которые увидев код создания объявления и прокси, начинают грызть ногти и выдавать реплики о том, что первый раз такое видят.
Irwin; Gendelf; TreeDogNight; h00k; serg_infostart; awk; +6 Ответить
13. tormozit 5681 28.07.16 09:33 Сейчас в теме
(9) На кодерлайне 3 статьи, которые склеены здесь в одну. В сумме скопировано на вскидку около 80%.
14. serg_infostart 321 28.07.16 14:06 Сейчас в теме
(13) если б она была первоисточником, то указал бы... А поскольку первоисточником является именно эта статья, правда опубликованная несколько позже той, то указывать не буду. Да по факту, это одна и та же статья, только в разных форматах - там она разбита на несколько частей, может чуть порезана. Мне кажется, что там она не удобна для чтения и переваривания. Тут лучше. Имхо.

(all) а по существу нет никаких замечаний, пожеланий, дополнений?
11. Zhilyakovdr 93 27.07.16 09:14 Сейчас в теме
(7) ZOMI, Не у всех и не везде есть доступ к ИТС, поэтому даже тупой копипаст бывает полезен.
8. serg_infostart 321 26.07.16 17:05 Сейчас в теме
(1) ZOMI,
это оригинал... можете не сомневаться. Надеюсь, что автор статьи по ссылке это подтвердит. Так что плюсуйте, не стесняйтесь.
Так получилось, что он разместил ее там, слегка разбив на разделы. А я разместил ее здесь (как есть).
Gendelf; JohnyDeath; ZOMI; +3 Ответить
10. ZOMI 424 26.07.16 22:50 Сейчас в теме
(8)
Надеюсь, что автор статьи по ссылке это подтвердит.


Да, это необходимо для таких скептиков как я.

(9) starik-2005,

ссылку на статью с ИТС я даю к замечанию об "уникальности" статьи. По мне так итс-ная статья более годная.
12. tormozit 5681 27.07.16 22:23 Сейчас в теме
Согласен с мнением, что высок уровень копирования другой статьи. Поэтому тоже считаю, что стоит указать на нее ссылку.
15. serko8547 95 26.08.16 17:17 Сейчас в теме
Ув. Автор, прошу Вас поделиться опытом:
Я начал использовать http-сервисами недавно, и напоролся на такую проблему: Если в 1с завести пользователя - то мне ответ на любой Get или post запрос приходит Ошибка 401 (не авторизован). Как быть?
Был бы Вам очень благодарен, если Вы подскажете, как решить сию проблему )

авторизация в смысле запросом логина-пароли - программно, т.е. я не ручками ввожу логин-пароль, а как мне авторизоваться программно.
16. serg_infostart 321 28.08.16 23:06 Сейчас в теме
(15) serko8547, нужно передать авторизацию.
xhr.setRequestHeader('Authorization',"Basic " + btoa(escape('Администратор') + ":" + 'password'));
17. unpete 539 07.09.16 19:45 Сейчас в теме
(16)
btoa(escape('Администратор') + ":" + 'password')
Наверное, имелось в виду btoa(unescape(encodeURIComponent(('Администратор') + ":" + 'password')))

Вариант btoa(escape... сделает негодную строку для символов с кодами > 127
tanegorova; zarucheisky; serg_infostart; +3 Ответить
18. serg_infostart 321 08.09.16 11:33 Сейчас в теме
Оставьте свое сообщение

См. также

Программная работа с настройками СКД

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    4928    ids79    25       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

[СКД] Программное создание схемы компоновки данных

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    6931    John_d    20       

Базовый курс по управлению ИТ-проектами. Курс проходит с 26 февраля по 22 апреля 2020 года. Промо

Отличительная черта курса - органичное сочетание трех вещей: 1.Теория проектного управления (PMI®+Agile Alliance+Российские ГОСТ+Методологии от 1С); 2. Опыт внедрения продуктов 1С (опыт франчайзи и успешных компаний + тренды Infostart Event и Agile Days); 3. Разбор реальных проблем и рекомендации экспертов по проектам слушателей. Мы будем фиксироваться на тех инструментах, которые реально оказываются полезными в практике руководителей проектов внедрения. Ведущая курса - Мария Темчина.

от 11000 рублей

Самый примитивный HTTP-сервис в мире

Статья Программист Нет файла v8 Бесплатно (free) WEB

Пошаговый пример создания простейшего HTTP-сервиса, который генерирует HTML-страницу для поиска товара, а также реализует асинхронное получение данных из базы.

12.09.2019    11794    YPermitin    26       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Агрегатные функции СКД, о которых мало кто знает

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    23520    ids79    45       

Отслеживание выполнения фонового задания

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции Разработка

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    17908    ids79    16       

INFOSTART MEETUP Kazan. 13 марта 2020 г. Промо

Инфостарт продолжает путешествие по России. Следующая остановка - Казань. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Ждем всех: докладчиков и участников! Стоимость участия - 5 500 рублей. Цена действительна до 30.01.2020

5 500

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    32150    ids79    36       

Фоновое выполнение кода в 1С - это просто

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования

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

02.08.2019    17998    avalakh    21       

Сдача регламентированной отчетности из программ 1С Промо

Сдача регламентированной отчетности из программ "1С" во все контролирующие органы без выгрузок и загрузок в другие программы. Для групп компаний действуют специальные предложения.

от 1500 руб.

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    26379    ids79    9       

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Инструментарий разработчика Практика программирования

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    19184    ids79    27       

Управление ИТ-проектами. Модуль 2: продвинутый онлайн-курс по классическим методам управления проектами. Вебинары проходят с 12 марта по 11 июня 2020 года. Промо

Продвинутый онлайн-курс по классическому управлению ИТ-проектами позволит слушателям освоить инструменты из PMBoK® и 1С:Технологии корпоративного внедрения и научиться их применять для проектов любого масштаба. Курс включает в себя 12 вебинаров и 12 видеолекции, разбор кейсов и рекомендации экспертов по проектам слушателей. Ведущая курса - Мария Темчина.

от 13000 рублей

Регистры сведений. За кулисами

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    14589    YPermitin    12       

"Меньше копипаста!", или как Вася универсальную процедуру писал

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    11973    SeiOkami    49       

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

CorelDRAW – пакет профессиональных инструментов для редактирования фотографий, разработки дизайна, создания макетов страниц и векторных иллюстраций

Создание отчетов с помощью СКД - основные понятия и элементы

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Математика и алгоритмы

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    31276    ids79    17       

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Статья Программист Нет файла v8 v8::Запросы Бесплатно (free) Практика программирования Разработка

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    16740    dmurk    144       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, обеспечивающих обмен данными между различными прикладными 1С-решениями и взаимодействие с другими информационными системами. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”.

5500 рублей

Регистры накопления. Структура хранения в базе данных

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    26823    YPermitin    27       

Выполнение внешней обработки в фоновом задании

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    17016    Eret1k    23       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Выгрузка документа по условию

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Разработка

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    9198    m-rv    2       

HTML-клиент у конфигурации 1С

Статья Программист Нет файла v8 Бесплатно (free) WEB

Приветствую. В этой публикации опишу свой опыт создания html-клиента для конфигурации 1С с помощью http-сервисов. HTML-клиент в этом случае - это frontend (html + css+ js), который генерирует и выдает пользователю конфигурация + backend, который тоже реализован в этой же конфигурации.

17.04.2019    13677    Smaylukk    119       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

Данный онлайн-курс предусматривает углубленное изучение языка запросов и возможностей системы компоновки данных, которые понадобятся при разработке отчетов, работающих на платформе “1С:Предприятие” в рамках различных прикладных решений. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей различных прикладных решений, которые используют в своей работе отчеты разного назначения.

6500 рублей

Как прикрутить ГУИД к регистру сведений

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8 Разработка

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

16.04.2019    12308    m-rv    16       

О расширениях замолвите слово...

Статья Программист Стажер Нет файла v8 Бесплатно (free) Практика программирования Разработка

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    23099    ellavs    125       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Статья Программист Стажер Нет файла v8 Windows Бесплатно (free) Практика программирования Разработка

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    18342    ellavs    83       

Трюки с внешними источниками данных

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    20176    YPermitin    53       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Статья Программист Нет файла v8 v8::Права Бесплатно (free) Практика программирования БСП (Библиотека стандартных подсистем) Роли и права

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    24220    ids79    9