Использование REST web-сервисов в "1C:Предприятии 8". Личный опыт.

Публикация № 565435 04.12.16

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

веб-сервисы REST обмен данными odata

Часть 1. Чтение данных

Использование REST web-сервисов в "1C:Предприятии 8". Личный опыт.

Когда мне понадобилось использовать REST сервисы в 1С, я столкнулся с "лаконичностью" имеющейся документации и минимумом реальных примеров. Данная статья основана, в первую очередь, на материалах фирмы 1С (http://its.1c.ru/db/metod8dev/content/3790/hdoc/_top/post и http://v8.1c.ru/o7/201312rest/ и https://wonderland.v8.1c.ru/blog/rasshirenie-podderzhki-protokola-odata/) и собственном опыте и призвана немного прояснить тему.

Итак, начнем сначала.

Что такое REST  и зачем он нужен

REST (REpresentation State Transfer) подход является одним из наиболее популярных подходов, использующихся для реализации web-сервисов в Интернете. REST web-сервисы являются более легковесными альтернативами SOAP веб-сервисам.

REST с технической точки зрения не является ни технологией, ни стандартом. Это всего лишь подход, если можно так сказать, набор принципов, которые помогают реализовать "правильный" web-сервис. Под "правильным" здесь понимается масштабируемый, безопасный, надежный, легкий в использовании и т. д.

REST определяет следующие принципы построения web-сервисов:

  • Функциональность приложения делится на набор ресурсов. Каждый ресурс может выполнять определенное действие (REST ресурс является аналогом SOAP операции). Например, ресурс получения новостей выдает список заголовков текущих новостей;
  • Каждый ресурс имеет уникальный идентификатор (URL), по которому к нему можно обратиться как из программного кода, так и из Web-браузера;
  • Все ресурсы используют унифицированный интерфейс для передачи данных между клиентом и ресурсом. Интерфейс имеет ограниченный набор операций и типов данных для передачи. Как правило, в качестве транспорта используется инфраструктура HTTP, а набор операций, которые можно выполнить над ресурсом, определяется HTTP стандартом. Наиболее используемыми операциями могут быть: HTTP GET - получение данных от ресурса и HTTP POST отправка данных в ресурс. Также могут использоваться HTTP PUT, HTTP DELETE и т. д.;
  • REST протокол взаимодействия (RESTful) должен быть клиент-серверным и не иметь состояния.

Преимуществами REST подхода являются:

  1. Возможность работы на уже существующей HTTP инфраструктуре - Web-серверах, Web-браузерах и др. 
  2. Простота использования и высокая совместимость между реализациями за счет того, что кодирование данных сведено к минимуму. Кодируются только прикладные данные (т. е. то, что нужно передать), вспомогательная маркировка данных (например, такая как soap:Envelope) не используется.
  3. Хорошая масштабируемость, т. к. REST протоколы не поддерживают состояния между вызовами.
  4. Хорошая безопасность, которая опять-таки основана на HTTP инфраструктуре.

Недостатки REST'а являются продолжением его достоинств:

  1. Сложно использовать вне HTTP, т. к. нет ни соответствующих стандартов, ни существующих реализаций.
  2. Сложно использовать в Entreprise решениях, где требуется поддержка достаточно сложного состояния (например, наличия сессий и др.).
  3. Полная зависимость от транспорта в таких вопросах, как безопасность, маршрутизация сообщений и пр., что может негативно сказаться на работе такого сервиса в гетерогенной среде.

Протокол, который основывается на принципах REST, является RESTful протоколом. Два наиболее популярных типа RESTful протоколов  - это JSON (JavaScript Object Notation) и POX (Plain Old XML). JSON использует для кодирования данных JavaScript и в основном применяется в Ajax (Asynchronous JavaScript and XML) клиентах для обмена данными с сервером. Поскольку Ajax клиенты работают в браузере, который понимает JavaScript, то использование JavaScript  позволяет сэкономить как на объеме передаваемых данных, так и на времени разбора данных. Однако использование JSON в других клиентах проблематично, т. к. клиенты, как правило, не поддерживают JavaScript.

POX использует для кодирования данных XML и поэтому может использоваться практически везде.

REST в 1С

Начиная с версии 8.3.5.1068.  платформа может автоматически формировать REST интерфейс для всего прикладного решения. REST интерфейс позволяет читать данные 1С:Предприятия, изменять их, создавать новые объекты данных и удалять существующие. В качестве протокола доступа платформа использует протокол OData версии 3.0. Это открытый веб-протокол для запроса и обновления данных. Он позволяет оперировать данными, используя в качестве запросов HTTP-команды. Получать ответы можно в различных форматах, но пока платформа поддерживает только работу с данными в формате Atom/XML.

Использовать стандартный интерфейс OData прикладного решения просто:

  • В конфигураторе вы публикуете REST интерфейс - флажок Публиковать стандартный интерфейс OData;
  • После этого объекты прикладного решения становятся доступны через этот интерфейс;
  • Способы аутентификации OData клиентов полностью совпадают со способами, используемыми для веб-сервисов;
  • OData клиенты могут запросить через HTTP документ метаданных, описывающий доступные объекты прикладного решения;
  • OData клиенты выполняют операции создания, чтения, модификации и удаления данных прикладного решения.

По умолчанию после публикации объекты конфигурации не доступны. Прежде чем обращаться к ним, необходимо разрешить доступ, например с помощью типовой обработки "Настройка автоматического REST сервиса". В обработке можно задать отдельного пользователя REST сервиса:

и указать доступные объекты конфигурации:

Чтение данных через REST

Чтение данных выполняется GET-запросом. Сначала устанавливаем HTTPСоединение с базой. Потом формируем текст запроса. Например, получение списка УИДов элементов справочника Контрагенты выглядит так:

/Base1C/odata/standard.odata/Catalog_Контрагенты?$select=Ref_Key&$format=json;odata=nometadata

Что означает это заклинание?

"Base1C" - имя базы, как оно опубликовано на веб-сервере,

"odata/standard.odata" - "магическое" слово, означающее доступ через odata интерфейс

"Catalog_Контрагенты" - состоит из указания на тип объекта "Catalog" - справочник и типа справочника

"select" - оператор чтения данных, после него через "=" идет описание считываемых данных, в данном случае это "Ref_Key" - уникальный идентификатор

"format=json" - задает формат представления считываемых данных JSON

"odata=nometadata" - заклинание, указывающее не передавать в ответе описание метаданных.

Из текста запроса создаем объект HTTPЗапрос:

Запрос = Новый HTTPЗапрос(СтрокаЗапроса);

и отправляем его:

Ответ = HTTPсоединение.Получить(Запрос);

Полученный объект HTTPОтвет надо разобрать, удобнее анализировать строку:

ОтветСтрокой = Ответ.ПолучитьТелоКакСтроку();

Если все хорошо, в ОтветСтрокой находится что-то вроде:

{

"value": [{

"Ref_Key": "a913b5c7-9594-4680-8013-e6a8ff2ef33e"

},{

"Ref_Key": "e29427d9-9cbb-421d-8089-e9859b2427c3"

},{

}

Разобрать ответ можно например так:

		Если Ответ.КодСостояния > 299 Тогда
			ТекстОшибки = "Error, код ошибки: " + Ответ.КодСостояния + "
						|" + ОтветСтрокой;
			
		Иначе
			
			КолСтрок = СтрЧислоСтрок(ОтветСтрокой);
			
			Для НомерСтроки=1 По КолСтрок Цикл
				
				СтрокаАнализа = СтрПолучитьСтроку(ОтветСтрокой, НомерСтроки);
				Если СтрНайти(СтрокаАнализа,"Ref_Key") > 0 Тогда
					ПозицияДо = СтрНайти(СтрокаАнализа, """",НаправлениеПоиска.СКонца);
					ПозицияС = СтрНайти(СтрокаАнализа, """Ref_Key"": """);
					Если (ПозицияС > 0) И (ПозицияДо = (ПозицияС + 48))  Тогда
						НачалоID = ПозицияС + 12;
						GUID = Сред(СтрокаАнализа, НачалоID, 36);
						РезультатМассив.Добавить(GUID);
					КонецЕсли;
					
				КонецЕсли;
				
			КонецЦикла;
			
			БулевРезФун = Истина;
			ТекстОшибки = "OK. Считано элементов: " + Формат(РезультатМассив.Количество(), "ЧН=0; ЧГ=");
			
		КонецЕсли;


Если нужно получить не один реквизит, текст запроса выглядит так:

/Base1C/odata/standard.odata/Catalog_Контрагенты?$select=Ref_Key,Description &$format=json;odata=nometadata

нужные поля добавляются через запятую в select.

Как правило все записи справочника читать не требуется, используем оператор filter:

СтрокаЗапроса = СтрокаЗапроса + "&$filter=Ref_Key eq guid'" + KeyID + "'";

где в KeyID строковое представление УИД

Наименование реквизитов как видите порой неочевидно. Необходимо запомнить:

Code - код,

DeletionMark - пометка удаления,

IsFolder - признак группы,

Parent_Key - родитель.

Если реквизит ссылочного типа, к его имени следует добавить суффикс _Key, например Организация_Key.

Для документов используется схожий синтаксис:

/Base1C/odata/standard.odata/Document_СчетНаОплатуПокупателю?$select=Ref_Key, Number, Date&$format=json;odata=nometadata

 Для документов:

Number - номер документа,

Date - дата документа.

Создание и изменения объектов через REST будет в следующей части.

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. pbazeliuk 1930 04.12.16 17:54 Сейчас в теме
Еще, как недостаток, крайняя нестабильность при использовании в системах бизнес-аналитики. Может положить весь кластер "1С:Предприятие" (конфигурация, что падала: 40 Core\192GB RAM\RAID SSD DB\2xSSD tempdb).
5. Dorosh 172 05.12.16 09:26 Сейчас в теме
(1) Не советую использовать REST в бизнес-аналитике. REST в 1с использует оптимистическую блокировку данных. С одной стороны такой подход повышает скорость работы, с другой можно получить не корректные цифры в отчете. Положить кластер у меня пока не получалось, хотя глюков наловил не мало.
11. VasilVtoroy 05.12.16 18:15 Сейчас в теме
(1) А вы дампы в 1С посылали?
12. DitriX 2065 06.12.16 01:08 Сейчас в теме
(1) я надеюсь у вас стоит нескоько апачей и используется слабосвязанная система тикетов?
21. pfilyk 07.12.16 14:03 Сейчас в теме
(1) какую BI используете если не секрет, и чем заменили REST?
2. kiv1c 779 04.12.16 20:38 Сейчас в теме
тема пересекается с моей статьей про web-сервисы!
http://infostart.ru/public/537861/
насколько я понял, преимущество REST в том, что можно получить какие-то данные и манипулировать объектами сразу, не прописывая код отдельно, как в модулях веб-сервисов?
6. Dorosh 172 05.12.16 09:29 Сейчас в теме
(2) Хорошая статья, жаль что я не прочитал ее раньше, когда только осваивал работу с веб-сервисами. Основное достоинство REST - производительность. После "прогрева" системы REST сервис работал в 3-10 раз быстрее чем аналогичные по функционалу SOUP сервис. Такая разница стоит мучений.
22. pfilyk 07.12.16 14:07 Сейчас в теме
(6)
(6)
После "прогрева" системы REST

что вы имеете ввиду?
23. SGordon1 07.12.16 15:11 Сейчас в теме
24. Serginio 916 07.12.16 16:16 Сейчас в теме
(23) http://www.forum.mista.ru/topic.php?id=679547#4
Объект конфигурации Web-сервис содержит модуль, в котором создаются процедуры на встроенном языке, выполняемые при вызове тех или иных операций Web-сервиса. Типы параметров операций Web-сервиса описываются с помощью типов XDTO и могут представлять собой либо значения XDTO, либо объекты XDTO.

Вызов Web-сервиса происходит следующим образом:

? из пула соединений выбирается подходящее соединение с информационной базой; при отсутствии необходимого соединения соединение создается;

? создается новый сеанс и для созданного сеанса вызывается событие УстановкаПараметровСеанса (в модуле сеанса);

? выполняется вызов затребованного метода Web-сервиса, при этом происходит вызов обработчика УстановкаПараметровСеанса() (в модуле сеанса) каждый раз, когда происходит обращение к неинициализированному параметру сеанса.


Если в пуле нет соединений, то создается новое соединение с загрузкой метаданных, что аналогично запуску 1С с нужной конфигурацией.

Ну и нужно учитывать, что при каждом вызове метода создается новый сеанс и УстановкаПараметровСеанса для web и HTTP сервисов (в том числе и ODATA Rest ) должны быть минимальными по времени.

В новых версиях, программа может выбирать нужный сеанс из пула при этом УстановкаПараметровСеанса производиться не будет.

Повышение производительности веб-сервисов

В версии 8.3.9 мы доработали механизм веб-сервисов (SOAP-сервисы, HTTP-сервисы, сервисы OData). В результате их производительность увеличилась примерно в 10 раз.
Мы проводили тесты на типовой конфигурации Бухгалтерия предприятия. В неё мы добавили HTTP-сервисы, выполняющие выборку из справочника Контрагенты. Тест заключался в том, что клиент выполнял последовательно 100 обращений к сервису. В старом режиме работы для этого потребовалось 29,9 с. В новых режимах работы в среднем 3 с.
Этих результатов удалось достичь за счёт того, что мы реализовали две различные стратегии, обеспечивающие переиспользование сеансов:
Автоматическое переиспользование сеансов из пула;
Управление сеансами с помощью HTTP-заголовков.
При автоматическом переиспользовании сеансов клиент не имеет возможности влиять на количество сеансов и время их жизни. Ему просто автоматически выделяется сеанс из существующего пула сеансов. Такая стратегия подходит для высоконагруженных публичных сервисов, к которым обращаются клиенты, выполняющие шаблонные операции, и обладающие унифицированными привилегиями.
Например, это может быть автоматизация торговой деятельности удаленных торговых точек, предусматривающая периоды пиковой нагрузки на сервер. Для обработки будет выделено нужное количество сеансов. Они будут завершены по мере падения нагрузки.
Другой пример это получение/помещение файлов в конфигурации Документооборот посредством http-сервисов. Для таких операций можно использовать одного и того же специального пользователя.
Стратегия ручного управления сеансами подразумевает, что клиент самостоятельно управляет количеством сеансов и временем их жизни. Эта стратегия лучше подходит для высокоинтегрированных систем в рамках одной организации. Вы можете реализовать собственный алгоритм, который будет управлять временем жизни сеансов и их количеством
NikeeNik; +1 Ответить
25. Dorosh 172 07.12.16 20:09 Сейчас в теме
(22) В (24) подробно описано. Первое обращение к сервису вызывает загрузку и инициализацию используемых библиотек. Оно всегда долгое и учитывать его в замере производительности неверно.
3. tormozit 6798 04.12.16 22:44 Сейчас в теме
Скриншоты за что так ужал? Не видно же текст.
gucci76; 2ncom; Риник; kolya85; Strannik777; Gendelf; Elvina; Drivingblind; binex; purgin; bow; +11 Ответить
4. Alien_job 183 05.12.16 06:26 Сейчас в теме
Эх, не дошли до самого интересного - до записи. Будете продолжать? Почему-то когда я читаю из базы документ, меняю в ответе один реквизит и пытаюсь записать, то в ответ возвращается всякая ерунда (обычно что не заполнена дата).
7. Dorosh 172 05.12.16 09:30 Сейчас в теме
(4) Запись будет в продолжении статьи.
8. vitaliy1911 37 05.12.16 12:29 Сейчас в теме
Для обработки ответов в JSON удобнее использовать метод ПрочитатьJSON объекта ФабрикаXDTO.
Интересно, каким должен быть HTTP-сервис, чтобы он НЕ удовлетворял принципам REST? Можете привести пример?
Не понятна формулировка "Должен быть клиент-серверным и не иметь состояния". А бывают веб-сервисы не клиент-серверные? Что значит "не иметь состояния"? Например, для выполнения длительных операций сервер сначала возвращает клиенту id операции, чтобы клиент мог периодически опрашивать сервис на факт выполнения этой операции — это можно считать состоянием?
9. Dorosh 172 05.12.16 12:53 Сейчас в теме
(8) Я скорее практик чем теоретик. Состояние реализуется элементарно, на глобальных переменных или РС. Если выполнение кода сервиса зависит от значения глобальной переменной, эта переменная хранит состояние сервиса.
15. Darklight 30 06.12.16 14:27 Сейчас в теме
(9)Глобальные переменные не подойдут - при работе с REST-Сервисом их нет. А хранение состояния в регистре сведений возможно - указано мной в (14), но это не то состояние, которое закладывается в определении REST-Сервиса
10. Darklight 30 05.12.16 17:20 Сейчас в теме
(8)HTTP-Сервис - это чуть более широкое понятие, чем HTTP REST-сервис, который имеет обязательное условие унификации форматов запросов и ответов для всего решения. А самое главное, REST-сервис по определению не должен хранить состояния ( и, т.к. за его исполнение отвечает сама платформа 1С, то она не хранит эти состояния) - нельзя начать какую-либо сессию и потом выполнять REST-запросы в рамках её состояния (а HTTP-сервис такое, в общем-то, может позволить). Тут вся главная фишка именно в том, что REST-сервисы создаёт сама платформа, подчиняя их встроенному в платформу унифицированному формату. И не нужно ничего кодить в источнике REST-сервиса, чтобы обращаться к нему. REST-сервисы это как-бы язык запросов: так же как Вы обращаетесь к СУБД за получением каких-либо данных (или их изменения), так же через происходит взаимодействие через REST - и там и там платформа/СУБД универсально обрабатывает поступившие запросы и возвращает результаты. Один запрос - один результат/действие (пакетных REST обращений не бывает). Соответственно REST-сервис никак не может запустить длительную операцию, а потом её опрашивать. Запустили, получили данные, вернули, завершились.

До не давних пор WEB-Сервисы в 1С не имели возможности хранить состояния сеанса (теперь могут) + необходимость их предварительно кодить на 1С, чтобы использовать - это их главное отличи от REST-Сервисов (но зато WEB-Сервисы более универсальны (ведь в их реализации можно написать любой алгоритм); а области данных, доступ к которым можно получить в ИБ через REST-сейчас очень ограничены, например управлять пользователями нельзя).

REST-Безусловно найдёт своё "место под солнцем" в 1С, скорее у HTTP-сервисов в 1С не так уж много перспектив. Впрочем, сейчас сони вполне могут дополнять REST-сервисы, там, где они ограничены.
13. vitaliy1911 37 06.12.16 09:27 Сейчас в теме
(10) можете раскрыть смысл термина "состояние"? что вы в него вкладываете?
14. Darklight 30 06.12.16 14:18 Сейчас в теме
(13)В простейшем виде. Состояние - любая управляемая (на которую клиент может целенаправленно влиять) информация, которая сохраняется на сервере после выполнения последней команды, и может быть получена (учтена) при выполнении следующей команды (при этом, при параллельном выполнении множества команд, в т.ч. от разных клиентов) нужная информация (созданная первой командой) будет автоматически (не важно как) сопоставляться со второй командой и соотноситься с исходным клиентом (когда это требуется).
За исключением тривиального примера: когда целем выполнения первой команды есть ТОЛЬКО создание этой информации. А второй команды - только её получение!
Путь будет так, простите, коли запутанно или не точно раскрыл термин. Я не профессор. Понятн, что за уши к этму определению можно приникнуть многое, но делать это не стоит.

(8)Дополнительно поясняю: описанный вам пример является требует наличия состояния на сервере, но не соответствует определению REST-сервиса. Насколько я понимаю, REST-Сервисы вообще не предназначены для запуска выполнения таких фоновых процессов. Но если они уже запущены, или запускаются косвенно после внесения изменений в данные, то формально, можно организовтаь что вы хотите, например так (как уже было предложено в (9)):
1. Допустим на сервере 1С есть регл. задание - которое выполняет какую-либо фоновую обработку (возможно через запуск отдельных фоновых заданий - это не принципиально).
2. Это регл задание, например, мониторит рег. сведений - на наличе записи с запросом на выполнение регл задачи (например произвольного алгоритма из строкового ресурса)
3. Тогда REST запросом - можно внести в этот регистр эту запись + некий ключ
4. Регл. задание это увидит и запусит фоновое выполнение этой задачи, передав ей этот ключ
5. Фоновое задание выполнит переданный алгоритм, например, некоторую часть (как это определяется к сути данного вопроса не относится) и запишет в тот же или другой рег. сведений по имеющемуся ключу результат (окончательный или промежуточный)
6. Внешний процесс через REST-Сервис будет опрашивать этот регистр по тому же ключу на наличие результата.
7. При необходимости через REST-сервис можно внести запись в регистр сведений, что выполнение нужно прервать (или внести изменения)
8. Эту запись то же регл задание может увидеть и прервать выполнение фонового задания с соответствующим ключём (или это может сделать само фоновое задание, тогда оно может внести любое изменения в ход своего выполнения).

Формально говоря, REST-Сервисы можно использовать и для выполнения каких-то фоновых процессов и опроса их результатов. И даже состояние в этом случае сохраняется в информационной базе. Но это лишь обходные уловки, реализация которых требует внесения изменений в конфигурацию. А сами данные состояния клиента, просто хранятся в базе данных. Но тем не менее, описанный мной выше алгоритм взаимодействия вполне может быть использован в рабочих системах.
По-другому запустить выполнение алгоритма через REST-Сервис в 1С (это ограничение текущей реализации 1С 8.3.9) пока нельзя. Но, думаю, со временем это изменится. И тогда, запустить, скажем фоновое выполнение задания можно будет и через REST. Но хранить состояния всё равно нужно будет в ИБ во вспомогательных хранилищах. И это не будет текущим состоянием сеанса. Это буду данные в базе данных.

Варианты хранения такого состояния ограничены лишь тем, что можно сохранить в БД. Например, не удастся так хранить состояние COM -Соединения, или иного сетевого соединения с другим ресурсом (в сети, интернете, или файлом); или оборудованием (подключенном через компоненту). Для многих задач хавтит и описанного способа, но не для всех.
16. Darklight 30 06.12.16 17:12 Сейчас в теме
(14) Вспомнил, что у ряда объектов метаданных (связанных с хранением данных) есть события изменения данных (в самих объектах и в приписках на события). В описании REST-Сервисов про них не сказано, но надо полагать они буду срабатывать, при изменении данных через REST. Соответственно, в предложенном мной примере запуска фонового процесса через REST-сервис регл. задании лишнее - если, скажем в модуле набора записей указанного в (14) регистра сведений в событии "ПриЗаписи" разместить алгоритм, который сам будет запускать фоновые задания, то фоновый процесс будет сразу же запускаться после окончания записи в регистр сведений через REST-вызов. Далее достаточно лишь опрашивать через REST регистр сведений с результатом (по тому же ключу).
Формально, состояние клиента есть, и оно хранится в базе данных (получается по ключу, который сформировал клиент в первом обращении), как и есть возможность периодически опрашивать сервер, для получения промежуточных или итоговых данных.
17. Serginio 916 06.12.16 17:42 Сейчас в теме
(16) Вот здесь решали http://www.forum.mista.ru/topic.php?id=785017

Там не только подписки, но и выполнение на сервере итд.
И делать проверку модулей с галками внешнее соединение, сервер
18. Darklight 30 07.12.16 10:20 Сейчас в теме
(17) Там один какой-то срач от неправильного применения REST, до неправильно написанных конфигураций 1С.
А вот стыбзенная мистой (или Вами переложенная на мисту) Ваша публикация LINQ to oDATA интересна, хоть и очень коротка (но это уже немного о другом)!
19. Serginio 916 07.12.16 12:09 Сейчас в теме
(18) Ну я постарался описать возможность использования и дал ссылочки на использовании компонент .Net.
Сам я её не использую. Но смотрю многие стали интересоваться.
У меня есть еще одна статья про .Net Core .Net Core, WCF и ODATA клиенты
33. Dementor 938 03.12.17 20:49 Сейчас в теме
(10)
До не давних пор WEB-Сервисы в 1С не имели возможности хранить состояния сеанса (теперь могут)

Видимо я что-то пропустил. О каких состояниях сеанса, которые хранятся на сервере между клиентскими вызовами, вы говорили? Если о возможности реализовать собственные состояния на базе РС, то такая возможность была в платформе изначально. А про возможность устанавливать значения параметрам сеанса или создавать глобальные переменные, значения которых не будут пропадать между вызовами, я что-то не слышал.
34. Darklight 30 04.12.17 11:25 Сейчас в теме
(33)Вот тут была инфа.
Там всё очень расплывчато. Хотите - поищите ещё, т.к. это ещё год назад появилось, может есть более толковые статьи на эту тему. Лично сам не проверял :-(
35. Dementor 938 04.12.17 14:16 Сейчас в теме
(34) спасибо. Разобрался с заголовком IBSession. Не для массового использования, но некоторые задачки интеграции закрыть можно. В принципе все понятно, нужно бы только на каком-то тестовом примере опробовать, прежде чем брать в реальную работу...
36. Darklight 30 04.12.17 14:22 Сейчас в теме
(35)Когда окончательно разберётесь и опробуете на практике - напишите на инфостарте статью - будет Вам плюсик в карму.
20. Region102 07.12.16 13:33 Сейчас в теме
Вообще использование web сервисов для меня это массовость, т.е. ты пишешь какой-то проект на web, а базу 1с используешь как backend. И тут вырисовывается проблема, при этом очень большая, каждое соединение через REST сервис съедает одну лицензию, если не ошибаюсь. Поэтому хорошие люди пишут свои костыли типа metadata.js, реализуя фактически легкий web клиент для высоко нагруженных сервисов обходя проблему лицензирования и не совсем web интерфейса тонкого клиента.
26. premierex 202 10.12.16 12:55 Сейчас в теме
(0) Автор, а почему код ответа больше 299 Вы считаете кодом ошибки?
Вот, например описание кодов ответов более 299:
3xx: Redirection (перенаправление):
300 Multiple Choices («множество выборов»)[2][6].
301 Moved Permanently («перемещено навсегда»)[2][6].
302 Moved Temporarily («перемещено временно»)[2][6].
302 Found («найдено»)[6].
303 See Other (смотреть другое)[2][6].
304 Not Modified (не изменялось)[2][6].
305 Use Proxy («использовать прокси»)[2][6].
306 — зарезервировано (код использовался только в ранних спецификациях)[6].
307 Temporary Redirect («временное перенаправление»)[6].
Эти коды вполне можно тоже обрабатывать. Если сервер сделал redirection, это не значит, что он ваш запрос не обработал или выдал предупреждение об ошибке. В HTTPОтвете, с таким кодом ответа в параметре location, если я не ошибаюсь, должен содержаться URL перенаправления.
27. sansys 75 07.01.17 12:08 Сейчас в теме
Очень познавательная статья, пошёл экспериментировать. +1
28. nodalt 8 18.01.17 17:09 Сейчас в теме
Спасибо за статью.
В тексте:
Получать ответы можно в различных форматах, но пока платформа поддерживает только работу с данными в формате Atom/XML
- вот тут не понял. Ответ же можно получить в формате JSON. Собственно, это далее и демонстрируется ...
29. Alex1Cnic 146 24.01.17 08:18 Сейчас в теме
Мне понравилось, написано просто и ясно, ждем продолжения....
30. DoctorRoza 26.01.17 12:11 Сейчас в теме
31. kiruha 388 07.02.17 14:57 Сейчас в теме
А где посмотреть полную справку по запросам Rest в 1С ? Во встроенной справке не вижу.
32. kiruha 388 07.02.17 15:05 Сейчас в теме
+ интересует скорость такого обмена по сравнению с аналогичными веб сервисами
37. user1522511 13.01.21 16:42 Сейчас в теме
"Создание и изменения объектов через REST будет в следующей части."

А когда будет следующая часть ???

Очень надо !
38. cdiamond 223 21.01.22 20:26 Сейчас в теме
(37) Статья эта мутная, только запутывает и уводит от сути вопроса, особенно касательно работы 1С.
Для тех кто дочитал комменты разъясняю на пальцах:
В 1С есть два объекта конфигурации: web-сервисы и http-сервисы. Первый - это реализация сильно устаревшего протокола SOAP, которая наглухо привязана к устаревшему формату обмена XML, довольно избыточна и трудоёмка в реализации. Забудьте уже про него.
Второй (http-сервисы) это и есть современная основа для реализации REST API протокола, которая вообще не привязана к формату данных, можно использовать хоть простой текст, хоть XML, но лучше всего сериализовать данные в JSON. Этот протокол можно использовать для связи с любой другой системой, даже с проектом на Kubernetes.
Далее. Одна сторона вызывает по http, а вторая этот запрос принимает. Неважно какая сторона сервер, данные можно передавать в любом направлении в одном вызове. Просто когда хочешь предать данные на сервер кладешь свой JSON в тело запроса, а написанный тобой код на сервере примет его, распарсит обратно например в массив структур и создаст объекты если надо. А если хочешь получать от сервера, то кидаешь пустой запрос по адресу REST API, сервер примет его, код в модуле сервиса сделает запрос к базе данных и сформирует ответ в JSON, который ты получишь на клиенте как ответ от сервера. Вот тебе и двусторонний обмен, никаких ограничений нет ни по формату ни по направлению, никаких там блокировок про которые тут кто-то писал, всё поведение зависит полностью от тебя, как напишешь так и полетит.
И наконец про методы GET, POST, DELETE. Это все наследие протокола HTTP, для работы REST API достаточно всего двух методов GET и POST, сами эти названия никакой смысловой нагрузки не несут, их конкретное действие зависит от реализации протокола на стороне сервера. Можете на метод DELETE повесить создание объекта, а методом GET чистить таблицы. С технической точки зрения вообще достаточно одного метода POST на все случаи жизни.
gucci76; fxmike; 24rus; user834072; smirnovserg.s@gmail.com; +5 Ответить
Оставьте свое сообщение

См. также

Публикация сборки сайта через 1С

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Демонстрация возможного сценария развертывания сайта через 1С HTTP сервис на примере сборки react-app.

03.03.2023    1923    van_za    7    

26

Пагинация в 1С

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

Те, кому приходилось делать REST API на базе HTTP-сервисов 1С, могли в какой-то момент столкнуться с необходимостью разработки методов, которые позволяли бы возвращать данные с пагинацией, т.е. последовательными порциями. В языках общего назначения пагинация реализуется простым использованием операторов OFFSET и LIMIT в SQL-запросе к базе данных. В языке запросов 1С оператора OFFSET нет, поэтому всем приходится решать эту задачу обходными способами. Один из таких обходных способов представлен в этой статье.

09.01.2023    1920    aleksei_adamov    36    

21

1С бакэнд (каталог товаров)

WEB-интеграция Платформа 1С v8.3 1С:Розница Россия Бесплатно (free)

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

01.01.2023    1368    aldar    5    

20

Возможности доработки выгрузки из 1С в Битрикс

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

В статье собраны некоторые полезные и интересные примеры доработок выгрузки из 1С на сайты на платформе Битрикс (Возможно, что-то подойдёт и для WordPress и других платформ, принимающих типовую выгрузку на сайт из 1С). Доработки рассмотрены без привязки к конкретным конфигурациям, примеры кода взяты в основном из доработок УТ 10 и 11. Некоторые доработки требуют изменений на стороне Битрикса, некоторые укладываются в типовой функционал. Примеры взяты из личного опыта, возможно, описание где-то не полное, т.к. доработки делались в разное время. Если материал будет интересен или будут аналогичные актуальные задачи, буду стараться дополнять статью более подробным описанием и примерами.

01.11.2022    1179    de0nis    2    

12

Реализация нестандартных (для 1С) интерфейсных решений в Web-клиенте

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

Онлайн-сервисы, построенные на 1С, могут использовать все многообразие веб-технологий. О том, как спроектировать, реализовать и красиво оформить интерфейс продукта 1С, в докладе на конференции Infostart Event 2021 Post-Apocalypse рассказал CTO компании WiseAdvice Олег Филиппов.

21.10.2022    6498    comol    15    

69

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

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

3 500 рублей

Rest API от чайника для чайников

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

На написание статьи побудило чтение книги "Технологии интеграции "1С:Предприятия 8.3"" Хрусталевой Е.Ю. В первой главе там постоянно чередуются слова REST, REST-интерфейс, архитектура REST и т.д. Мне стало интересно, я начал копать, что это такое, и тема оказалась достаточно интересной.

06.06.2022    12322    zeltyr    2    

11

Загрузка выпусков подкаста Радио 1С Энтерпрайз

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

Код для загрузки всех выпусков подкаста Радио 1С Энтерпрайз для оффлайн-прослушивания.

29.04.2022    1142    q_i    9    

16

УПП: Ошибка при взаимодействии с ФСС

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

При обновлении релиза УПП до 1.3.178.2 пользователи начали жаловаться, что не отправляются в ФСС документы "Ответ на запрос ФСС для расчета пособия" и "Сведения о застрахованных лицах, ФСС". В статье предложен вариант обхода данной ошибки, возможно, это кому-то поможет.

28.04.2022    1429    alex_bob    8    

3

Методика интеграции HTML редакторов в поле HTML документа базы 1С

WEB-интеграция Платформа 1С v8.3 Платформа 1C v8.2 Бесплатно (free)

В статье описаны критерии WYSIWYG HTML редакторов и общая картина интеграции с платформенными механизмами. На момент платформы 1С 8.3 и возможно для будущих релизов описание будет скорее всего актуально. Апробировано на 1С 8.3.20 и 8.2.12, а также на мобильной платформе 8.3.19.59.

12.04.2022    1791    user1206119    2    

13

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

Создание кодогенератора для Postman

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

Опишу порядок разработки кодогенератора для Postman c использованием OneScript и HTTPКоннектор.

13.03.2022    1389    malikov_pro    2    

9

Как из 1С отдать миллионы строк в BI и успеть это сделать быстро

Консолидация данных Анализ и проектирование ИТ-систем WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

На онлайн-митапе «Бизнес-анализ по данным базы 1С. Интеграция c платформами BI» выступил ведущий разработчик WiseAdvice.tech Дмитрий Фурцев. Дмитрий рассказал о том, как отдать миллионы строк из 1С в платформу бизнес-аналитики и не потратить на это сутки.

14.02.2022    5082    Fudj1k    11    

22

Передача сообщений из 1С в MS Teams

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример организации уведомлений в канал MS Teams.

09.02.2022    2167    Alex_YAM    4    

24

Работа с 1С через протокол OData

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В данной статье мы будем рассматривать работу с данными информационной базы через протокол OData (далее OData).

17.12.2021    30073    ProgrammingStore    26    

86

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Подключение к HTTP-сервису с авторизацией посредством передачи клиентского SSL-сертификата

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

В статье хочу поделиться опытом настройки подключения 1С к стороннему HTTP-сервису, использующему авторизацию посредством передачи клиентского SSL-сертификата.

07.12.2021    10461    kholkin    12    

105

Тонкости и подводные камни работы типового модуля интеграции Битрикс24 и 1С (Часть 2)

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Это вторая часть цикла статей, посвящённых типовому модулю интеграции 1С Предприятия и Битрикс24. Цель данной части: рассмотреть тонкости, связанные с обменом товарами и сопутствующими сущностями (спойлер - единицы измерения и свойства товаров). Также затронем некоторые нюансы связи сущностей 1С и Б24 (относящиеся не только к товарам) и их побочное влияние при переносе данных из модуля в модуль (при смене конфигурации, переустановки или обновлении модуля).

27.11.2021    8060    freegman74    16    

18

Web консоль управления сеансами 1С

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Мы дали ему название adm1c, он позволяет посредством веб доступа удалять или смотреть на сеансы в 1С базах и при необходимости удалять их. Да и что тут такого, сказали бы, есть же консоль на win, с нее же это можно делать, и все верно, но есть пара но.

26.11.2021    3077    4ernuy    16    

28

Реализация перевода текста средствами Azure

WEB-интеграция Локализация решений Платформа 1С v8.3 Россия Бесплатно (free)

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

19.11.2021    710    user1559835    2    

4

Тонкости и подводные камни работы типового модуля интеграции Битрикс24 и 1С

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Цель статьи - указать на подводные камни и нюансы, о которых “не пишут на заборах” и которые встретились мне за время внедрения типового модуля интеграции 1С и Битрикс24. Будет интересна для людей, кто подумывает о том, чтобы настроить интеграцию, и хотят понять, с чем столкнутся. А также для тех, кто уже работает с подобным обменом, столкнулся с какими-то из описанных ситуаций и хочет понять, что пошло не так и “как жить дальше”. Постараюсь все описать “человеческим” языком с минимальной долей терминов, так как статья, надеюсь, будет полезна не только программистам.

07.11.2021    11393    freegman74    13    

35

Работа с 1С:Аналитика Промо

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

4500 рублей

Окей, Google

WEB-интеграция Платформа 1С v8.3 Россия Бесплатно (free)

Пример интеграции Google Ассистента с 1С. В основе которого лежит платформа Dialogflow CX для понимания естественного языка.

28.10.2021    2101    Soloist    6    

29

Повышение производительности веб-сервисов. Переиспользование сеансов

WEB-интеграция HighLoad оптимизация Платформа 1С v8.3 Бесплатно (free)

Повышение производительности веб-сервисов. Переиспользование сеансов. Практическая реализация.

20.10.2021    4589    sorter1    3    

47

WEB/HTTP сервисы. Базовые отличия и применение на практике

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

Рассказываем о WEB и HTTP сервисах, их практическом применении, о шишках, которые мы набили, и о выводах, которые сделали. Спойлер: тех, кто дочитает статью до конца, ждет бонус от автора.

04.10.2021    27090    Neti    23    

112

Интеграция 1С с ГИИС ДМДК

WEB-интеграция Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 Ювелирная промышленность и торговля Россия Бесплатно (free)

ГИИС ДМДК - единая информационная платформа для взаимодействия участников рынка драгоценных металлов и драгоценных камней. с 01.09.21 стартовал обязательный обмен данными с Федеральной пробирной палатой (ФПП) исключительно через ГИИС. А постепенно - с 01.01.2022 и с 01.03.2022 - все данные о продаже драгоценных металлов и камней должны быть интегрированы с ГИИС. У многих пользователей возникает вопрос как автоматизировать обмен между программой 1С и ГИИС ДМДК. В настоящей статье ВЦ Раздолье поделится своим опытом о реализации такого обмена. Автор статьи - Мордовин Антон - архитектор систем на базе 1С Внедренческого центра "Раздолье".

30.09.2021    36138    1СERP    159    

30

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

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

Быстрое чтение составных http сообщений multipart/form-data

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

Алгоритм быстрого разбора составного http сообщения multipart/form-data.

26.09.2021    2980    cherkasovvitalik    4    

56

Интеграция 1С с Битрикс24 через вебхуки

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Пример получения токена и http запрос к API битрикса.

15.09.2021    8919    TyurinArt    11    

31

Обмен с HTTP сервисом файлами по формату multipart/form-data

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

07.09.2021    10404    ix5s    25    

67

Разработка гибридного web-приложения на 1С, возможности и ограничения

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

Все чаще разработчики склоняются к использованию 1C в качестве бэкенда при разработке веб-приложений. Но благодаря встраиванию веб-клиента 1С в сайт можно получить еще больше готовой функциональности. О том, как реализовать гибридное приложение за счет связки 1С с другими веб-технологиями, рассказал разработчик компании Neti Эльдар Мингалиев.

06.09.2021    5038    Бэнни    12    

51

Работа с WEB-сервисами под HTTPS на примере прямого обмена между базами (1С – 1С) 

WEB-интеграция Платформа 1С v8.3 Россия Бесплатно (free)

Использование веб-сервисов 1С при обмене 1С – 1С позволяет быстро передавать достаточно большие объемы данных из базы-источника в базу-приемник в объектах языка 1С. Данный метод обмена может применяться при бесшовной интеграции между двумя базами 1С, но требует определенной серверной инфраструктуры (установленного и настроенного WEB-сервера).

03.09.2021    11544    UltraUnion2005    9    

35

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

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

Глава 2. Как я написал (собрал с инфостарта) свой парсер сайта 1С Releases

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Россия Бесплатно (free)

Путешествие начинающего программиста 1С. Глава вторая. Призываем экспертов в комментарии, оптимизируем код, ругаемся на кривые руки автора. Автор же, в свою очередь, делится своим опытом, читает умные комментарии, стремится дать те знания, за которыми он сидел ночами тем, кто их хочет найти.

31.08.2021    2804    ldmonster    9    

12

Взаимодействие с api Честный знак (Молочная продукция)

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

Обзор основных примеров взаимодействия с Честным знаком по api для нетиповых конфигураций.

30.08.2021    13762    user5300    68    

55

Умная маршрутизация: о сложностях интеграции с 1С (часть 2)

WEB-интеграция Платформа 1С v8.3 1С:Управление торговлей 11 Бесплатно (free)

В статье будет много примеров кода с комментариями работы расширения для обмена данными УТ11.4 с Яндекс.Маршрутизацией через выгрузку/загрузку EXCEL файла.

27.08.2021    2733    greencactus    7    

18

Встраивание форм 1С на страницы сайта

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В платформе 8.3.16 появилась возможность выводить на страницах сайта информацию из веб-клиента 1С так, что пользователь даже не заметит, что работает с платформой. Руководитель компании Айтон Михаил Пинягин на онлайн-митапе «Web-клиенты для 1С» рассказал о том, какие особенности нужно учесть при настройке встраиваемого веб-клиента, и какие возможности он дает.

27.08.2021    7917    mikepin    10    

62

Гарри Поттер и подкапотное пространство веб-клиента

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

При разработке сайтов, интегрированных с 1С через HTTP-сервисы, приходится бороться с кодировками, искать производительные интерфейсные решения и задумываться над безопасностью. В ходе онлайн-митапа «Web-клиенты для 1С» Юрий Лазаренко показал на практике, как работает магия самодельного веб-клиента и как решать проблемы, возникающие при интеграции.

20.08.2021    5530    TitanLuchs    19    

41

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

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

Умная маршрутизация: кейс интеграции с 1С (часть 1)

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

Как мы решали проблемы с доставкой в нашем интернет-магазине, внедрили новый бизнес-процесс за 3 месяца и научились меньшим количеством машин привозить больше заказов клиентам.

18.08.2021    6439    greencactus    42    

61

Сравнительный анализ вариантов интеграции между системами

Файловый обмен (TXT, XML, DBF), FTP WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

На Infostart Meetup «Интеграционные решения для 1С» выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами кейсами из собственной практики: какие интеграционные решения остаются актуальными до сих пор, а каких приемов стоит избегать – даже в безвыходных ситуациях.

30.07.2021    4274    SergeyN    1    

10

Примеры вызова в 1С методов API до реестров открытой части Электронного кабинета налогоплательщика (Украина)

WEB-интеграция Платформа 1С v8.3 Украина Бесплатно (free)

Примеры вызова в 1С методов API до реестров открытой части Электронного кабинета налогоплательщика, Украина. Тестирование проводил на 1С:Предприятие 8.3 (8.3.10.2561).

28.07.2021    3206    Pervuy    5    

5

Пример организации HTTP сервиса на 1С: Документооборот. Источник 1С: ЕРП => Приемник 1С: Документооборот

WEB-интеграция Платформа 1С v8.3 1С:Документооборот Бесплатно (free)

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

13.05.2021    4372    Flover    4    

23

Настраиваем авторизацию пользователей 1С через Okta

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

Чем больше в компании различных конфигураций и сервисов, тем актуальнее становится проблема единой системы авторизации single Sign-On. Его лидером практически безоговорочно считается Okta. Но на просторах интернета очень мало информации про интеграцию 1С с Okta через протокол OpenID Connect. Что ж, настало время восполнить недостающие пробелы и перевернуть эту печальную страницу в вашей истории

30.04.2021    6326    ripreal1    16    

40