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

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

Разработка - Системная интеграция - Интеграция с WEB

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

102
Часть 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 будет в следующей части.

102

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

Комментарии
Избранное Подписка Сортировка: Древо
1. pbazeliuk 1700 04.12.16 17:54 Сейчас в теме
Еще, как недостаток, крайняя нестабильность при использовании в системах бизнес-аналитики. Может положить весь кластер "1С:Предприятие" (конфигурация, что падала: 40 Core\192GB RAM\RAID SSD DB\2xSSD tempdb).
5. Dorosh 136 05.12.16 09:26 Сейчас в теме
(1) Не советую использовать REST в бизнес-аналитике. REST в 1с использует оптимистическую блокировку данных. С одной стороны такой подход повышает скорость работы, с другой можно получить не корректные цифры в отчете. Положить кластер у меня пока не получалось, хотя глюков наловил не мало.
11. VasilVtoroy 05.12.16 18:15 Сейчас в теме
(1) А вы дампы в 1С посылали?
12. DitriX 1713 06.12.16 01:08 Сейчас в теме
(1) я надеюсь у вас стоит нескоько апачей и используется слабосвязанная система тикетов?
21. pfilyk 07.12.16 14:03 Сейчас в теме
(1) какую BI используете если не секрет, и чем заменили REST?
2. kiv1c 519 04.12.16 20:38 Сейчас в теме
тема пересекается с моей статьей про web-сервисы!
http://infostart.ru/public/537861/
насколько я понял, преимущество REST в том, что можно получить какие-то данные и манипулировать объектами сразу, не прописывая код отдельно, как в модулях веб-сервисов?
6. Dorosh 136 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 797 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-сервисов. Для таких операций можно использовать одного и того же специального пользователя.
Стратегия ручного управления сеансами подразумевает, что клиент самостоятельно управляет количеством сеансов и временем их жизни. Эта стратегия лучше подходит для высокоинтегрированных систем в рамках одной организации. Вы можете реализовать собственный алгоритм, который будет управлять временем жизни сеансов и их количеством
Smallrat; +1 Ответить
25. Dorosh 136 07.12.16 20:09 Сейчас в теме
(22) В (24) подробно описано. Первое обращение к сервису вызывает загрузку и инициализацию используемых библиотек. Оно всегда долгое и учитывать его в замере производительности неверно.
3. tormozit 5594 04.12.16 22:44 Сейчас в теме
Скриншоты за что так ужал? Не видно же текст.
Elvina; Drivingblind; binex; purgin; bow; +5 Ответить
4. Alien_job 164 05.12.16 06:26 Сейчас в теме
Эх, не дошли до самого интересного - до записи. Будете продолжать? Почему-то когда я читаю из базы документ, меняю в ответе один реквизит и пытаюсь записать, то в ответ возвращается всякая ерунда (обычно что не заполнена дата).
7. Dorosh 136 05.12.16 09:30 Сейчас в теме
(4) Запись будет в продолжении статьи.
8. vitaliy1911 29 05.12.16 12:29 Сейчас в теме
Для обработки ответов в JSON удобнее использовать метод ПрочитатьJSON объекта ФабрикаXDTO.
Интересно, каким должен быть HTTP-сервис, чтобы он НЕ удовлетворял принципам REST? Можете привести пример?
Не понятна формулировка "Должен быть клиент-серверным и не иметь состояния". А бывают веб-сервисы не клиент-серверные? Что значит "не иметь состояния"? Например, для выполнения длительных операций сервер сначала возвращает клиенту id операции, чтобы клиент мог периодически опрашивать сервис на факт выполнения этой операции — это можно считать состоянием?
9. Dorosh 136 05.12.16 12:53 Сейчас в теме
(8) Я скорее практик чем теоретик. Состояние реализуется элементарно, на глобальных переменных или РС. Если выполнение кода сервиса зависит от значения глобальной переменной, эта переменная хранит состояние сервиса.
15. Darklight 19 06.12.16 14:27 Сейчас в теме
(9)Глобальные переменные не подойдут - при работе с REST-Сервисом их нет. А хранение состояния в регистре сведений возможно - указано мной в (14), но это не то состояние, которое закладывается в определении REST-Сервиса
10. Darklight 19 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 29 06.12.16 09:27 Сейчас в теме
(10) можете раскрыть смысл термина "состояние"? что вы в него вкладываете?
14. Darklight 19 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 19 06.12.16 17:12 Сейчас в теме
(14) Вспомнил, что у ряда объектов метаданных (связанных с хранением данных) есть события изменения данных (в самих объектах и в приписках на события). В описании REST-Сервисов про них не сказано, но надо полагать они буду срабатывать, при изменении данных через REST. Соответственно, в предложенном мной примере запуска фонового процесса через REST-сервис регл. задании лишнее - если, скажем в модуле набора записей указанного в (14) регистра сведений в событии "ПриЗаписи" разместить алгоритм, который сам будет запускать фоновые задания, то фоновый процесс будет сразу же запускаться после окончания записи в регистр сведений через REST-вызов. Далее достаточно лишь опрашивать через REST регистр сведений с результатом (по тому же ключу).
Формально, состояние клиента есть, и оно хранится в базе данных (получается по ключу, который сформировал клиент в первом обращении), как и есть возможность периодически опрашивать сервер, для получения промежуточных или итоговых данных.
17. Serginio 797 06.12.16 17:42 Сейчас в теме
(16) Вот здесь решали http://www.forum.mista.ru/topic.php?id=785017

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

Видимо я что-то пропустил. О каких состояниях сеанса, которые хранятся на сервере между клиентскими вызовами, вы говорили? Если о возможности реализовать собственные состояния на базе РС, то такая возможность была в платформе изначально. А про возможность устанавливать значения параметрам сеанса или создавать глобальные переменные, значения которых не будут пропадать между вызовами, я что-то не слышал.
34. Darklight 19 04.12.17 11:25 Сейчас в теме
(33)Вот тут была инфа.
Там всё очень расплывчато. Хотите - поищите ещё, т.к. это ещё год назад появилось, может есть более толковые статьи на эту тему. Лично сам не проверял :-(
35. Dementor 585 04.12.17 14:16 Сейчас в теме
(34) спасибо. Разобрался с заголовком IBSession. Не для массового использования, но некоторые задачки интеграции закрыть можно. В принципе все понятно, нужно бы только на каком-то тестовом примере опробовать, прежде чем брать в реальную работу...
36. Darklight 19 04.12.17 14:22 Сейчас в теме
(35)Когда окончательно разберётесь и опробуете на практике - напишите на инфостарте статью - будет Вам плюсик в карму.
20. Region102 07.12.16 13:33 Сейчас в теме
Вообще использование web сервисов для меня это массовость, т.е. ты пишешь какой-то проект на web, а базу 1с используешь как backend. И тут вырисовывается проблема, при этом очень большая, каждое соединение через REST сервис съедает одну лицензию, если не ошибаюсь. Поэтому хорошие люди пишут свои костыли типа metadata.js, реализуя фактически легкий web клиент для высоко нагруженных сервисов обходя проблему лицензирования и не совсем web интерфейса тонкого клиента.
26. premierex 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 55 07.01.17 12:08 Сейчас в теме
Очень познавательная статья, пошёл экспериментировать. +1
28. nodalt 4 18.01.17 17:09 Сейчас в теме
Спасибо за статью.
В тексте:
Получать ответы можно в различных форматах, но пока платформа поддерживает только работу с данными в формате Atom/XML
- вот тут не понял. Ответ же можно получить в формате JSON. Собственно, это далее и демонстрируется ...
29. Alex1Cnic 124 24.01.17 08:18 Сейчас в теме
Мне понравилось, написано просто и ясно, ждем продолжения....
30. DoctorRoza 26.01.17 12:11 Сейчас в теме
31. kiruha 380 07.02.17 14:57 Сейчас в теме
А где посмотреть полную справку по запросам Rest в 1С ? Во встроенной справке не вижу.
32. kiruha 380 07.02.17 15:05 Сейчас в теме
+ интересует скорость такого обмена по сравнению с аналогичными веб сервисами
Оставьте свое сообщение

См. также

Простой способ опубликовать базу 1C из дома в интернет, когда Ваш провайдер этого не обеспечивает (3G, 4G модем и т.п.) 34

Статья Системный администратор Нет файла v8 1cv8.cf Бесплатно (free) WEB Облачные сервисы, хостинг

Если у Вас возникла потребность опубликовать из дома во всемирную паутину базу 1С (например, для тестирования), в т.ч. интерфейс OData, HTTP или Web-сервисы, а интернет-провайдер (например, 3G Мегафон) не предоставляет возможности инициировать соединения извне, то в конце статьи Вы найдете простой, быстрый и условно-бесплатный способ это сделать.

14.10.2019    1894    uno-c    16       

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

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

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

12.09.2019    6124    YPermitin    25       

Свой веб интерфейс к 1С: побеждаем CORS на IIS, сохраняя авторизацию 56

Статья Системный администратор Программист Нет файла v8 Windows Бесплатно (free) WEB Администрирование данных 1С

Если "веб морда" расположена не по тому же адресу, что и публикация 1С (что часто бывает, например, при разработке, публикация 1С на http://localhost/1c, а разрабатываемое веб-приложение на http://localhost:8080) или, например, мы заходим на веб приложение то по ip адресу, то по имени сервера, или просто веб сервер и сервер, на котором опубликована 1С - это разные сервера, то для большинства запросов от браузера к 1С срабатывает политика CORS, которая заключается в том, что браузер сначала посылает запрос OPTIONS, на который сервер должен ответить определенным образом, заголовками, содержащими разрешения, а потом уже (если разрешение есть), браузер посылает основной запрос. В случае, когда в публикации 1С (default.vrd) жестко прописан логин и пароль, разрулить ситуацию можно средствами 1С. В случае же, когда нужно сохранить авторизацию (или используется стандартный интерфейс odata), начинаются проблемы.

20.08.2019    3150    Fragster    7       

Вывод отчетов из Штрих-М Торговое предприятие 5 на кассовое ПО Кассир 5 через веб-сервис 3

Статья Системный администратор Программист Нет файла v8 1cv8.cf Розничная и сетевая торговля (FMCG) Россия УУ Windows Розничная торговля Бесплатно (free) WEB

Универсальный механизм вывода отчетов товароучетной системы Штрих-М Торговое предприятие в кассовое ПО Кассир 5 посредством веб-сервиса.

14.08.2019    937    Van2507    1       

Совсем простой обмен HTTP, 2 функции 60

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

Функция для вызова рест-сервиса и функция для разбора результата. Быстро, просто, универсально.

12.08.2019    3606    Yashazz    15       

Использование HTTP-сервиса для создания "фронтенда" HTML/CSS/jQuery. Продолжение 51

Статья Программист Расширение (cfe) v8 1cv8.cf Бесплатно (free) WEB

Получение изображений из информационной базы и отправка файлов через "фронт" на HTML/CSS/JS.

08.08.2019    3263    Sedaiko    1       

1Script.Web. Интернет-приложения на языке 1С 119

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

Запросы рынка таковы, что любое современное клиент-серверное приложение должно иметь веб-интерфейс. Почему бы не писать такие приложения на языке 1С? Андрей Овсянкин расскажет о возможностях разработки веб-приложений на базе 1Script, рассмотрит перспективы этого направления и в качестве демонстрации покажет «боевое» веб-приложение на новом движке – кроссплатформенную консоль администрирования парка кластеров 1С.

20.05.2019    11663    Evil Beaver    32       

Неверные остатки на сайте битрикс 2

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

Исправление процедуры выгрузки остатков на сайт битрикс из УТ 11

25.04.2019    1799    distorshion    4       

Отправка файлов через SOAP. SOAP with attachments, MTOM 38

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

В продолжение «своеобразной» поддержки 1С протокола SOAP, описанной в https://infostart.ru/public/965259/, опишу еще одну особенность. 1С не поддерживает возможность отправки файлов-вложений. Для решения этой проблемы пришлось самостоятельно писать формирование пакетов SOAP и разбор ответов сервера.

18.04.2019    2784    mysm    2       

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

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

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

17.04.2019    10916    Smaylukk    119       

Парсинг сайтов из 1С на примере ломбарды.рф с помощью XPATH для ДокументDOM 67

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

На всякую хитрую гайку всегда найдется болт с резьбой (с)

01.04.2019    7180    starik-2005    33       

Логируй больше! 1С + UPD + GELF + Graylog 28

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

Наличие производительной платформы управления логами - это жизненно важный элемент в ландшафте систем с высокой активностью. Рассмотрим один из подходов логирования активности систем на платформе 1С в Graylog.

26.02.2019    5223    Lars Ulrich    15       

Создание телеграм бота с гугл авторизацией, обратными вызовами и уведомлениями об обновлении через сервер-маршрутизатор 157

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

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

07.11.2018    17246    🅵🅾️🆇    40       

Мой опыт небольшого проекта с веб-сервисами (Часть 2) 20

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

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

05.10.2018    4250    alex_bitti    0       

Как запустить работу Google Maps в поле HTML формы 1С? 25

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

Как справиться с передачей события в поле HTML, если надо передать данные. Переход на новую версию Google Maps.

26.09.2018    6367    Green2    10       

Мой опыт небольшого проекта с веб-сервисами (Часть 1) 22

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

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

08.08.2018    6446    alex_bitti    33       

Создание web-площадки на технологиях 1С, или как Водоканал сделал "Личный кабинет потребителя" 54

Статья Программист Нет файла v8 Энергетика и ЖКХ УУ Управление взаимоотношениями с клиентами (СRM) Дебиторская и кредиторская задолженность Бесплатно (free) WEB

Гончаров Максим делится опытом создания «Личного кабинета потребителя» на сайте водоканала. Он описывает архитектуру системы и объясняет, какую роль в ней играют технологии: «Битрикс», OData, веб-сервисы, «1С:БСП». Также в статье раскрываются возможности использования подсистемы «Анкетирование» в «1С:БСП» как конструктора документов.

25.06.2018    10432    maxx    31       

На что действительно способны HTTP-сервисы 171

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

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

14.06.2018    22666    dalgaso2010    44       

Подготовка тестового контура с помощью gitlab-ci и Яндекс.Диска 18

Статья Системный администратор Нет файла v8 1cv8.cf Бесплатно (free) WEB

В статье описан пример использования gitlab-ci для копирования продуктовой базы в Яндекс.Диск и разворачивания на другом контуре.

04.05.2018    7192    pallid    0       

Запуск Apache 2.4 с модулем 1С внутри Docker контейнера 87

Статья Системный администратор Программист Нет файла v8 Linux Бесплатно (free) Администрирование данных 1С WEB docker Apache

Про Apache и про Linux слышали, наверное, все. А вот про Docker пока нет, но он сильно набирает популярность последнее время и не зря. Поделюсь своим опытом и дам пошаговую инструкцию настройки веб-сервера Apache с модулем 1С внутри Docker контейнера на Linux хосте. При этом сам сервер 1С может находиться совсем на другой машине и на другой операционной системе. Это не важно, главное чтобы Apache смог достучаться до сервера 1С по TCP. В статье дам подробное пояснение по каждой используемой команде со ссылками на документацию по Docker, чтобы не создавалось ощущение непонятной магии. Также прилагаю git репозиторий с описанием всей конфигурации, можете попробовать развернуть у себя буквально за 10 минут.

04.04.2018    17808    petr.myazin    35       

Практикум по созданию обменов данными через протокол oData «за полдня» 98

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Практика программирования Внешние источники данных

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

1 стартмани

20.03.2018    17999    11    timm00    64       

1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом (не Битрикс) ч.6 2

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

Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу. PHP-Скрипт публикации выборки данных сайта работающего на WordPress.

19.03.2018    5889    osivv    0       

Интеграция 1С УТ 11.2 и Битрикс. Настройка выгрузки старой цены для интернет-магазина 8

Статья Программист Нет файла v8 УТ11 Россия УУ Розничная торговля Бесплатно (free) WEB

Настройки позволят вытащить информацию о старой цене из 1С и передать её в CMS Битрикс.

24.01.2018    7890    Consultant_1C    2       

1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом (не Битрикс) ч.3 3

Статья Программист Нет файла v8 1cv8.cf Автомобили, автосервисы УУ Windows Бесплатно (free) WEB

Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу. PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

09.01.2018    6773    osivv    0       

Готовим Soap для Web-сервисов. Рецепты 130

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

В статье описаны различные варианты обмена данными с web-сервисами по протоколу Soap, основанные на личном опыте.

28.12.2017    28640    987ww765    27       

УкрПочта - групповая проверка трек-номеров 9

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

Необходимо в течение относительно небольшого промежутка времени получить актуальное состояние по трек номеру в системе УкрПочта большого количества сообщений? Тогда во второй раз воспользуемся неофициальным парсингом страницы сервиса УкрПочты.

23.10.2017    6141    abavas    2       

1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом (не Битрикс) 5

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

Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.

16.10.2017    8682    osivv    3       

1С, oauth2, Google API и Google Merchant. Сбор данных и парсинг 18

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

Всем привет. Стала задача, собрать данные с Google Merchants и внести их в 1С, для более детального анализа того, что сейчас показывается, что нет и какие проблемы при этом есть. Если кому это интересно, прошу под кат.

14.09.2017    13143    Mi11er    8       

Отслеживание почтовых сообщений парсингом страницы (УкрПочта) 5

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

Когда официальное API есть, но по факту не работает. Возвращаемся к старому способу - парсинг страниц.

17.07.2017    7739    abavas    2       

XPath и пространства имен на примере разбора файла ответа сервиса геокодирования Яндекс 34

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

Есть некоторые нюансы разбора с помощью Xpath xml-файла, в котором используются несколько пространств имен. Приведен разбор такого файла на примере файла ответа сервиса геокодирования Яндекс.

14.04.2017    9808    brr    6       

PHP OData драйвер 17

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

Удобный доступ к OData данным через SQL синтаксис

03.04.2017    8169    virtex3    4       

Online телефонный справочник из 1С: Зарплата и управление персоналом 33

Статья Системный администратор Программист Нет файла v8 ЗУП3.x Россия Управление персоналом (HRM) Бесплатно (free) WEB

В интернете представлено много реализаций online телефонных справочников организаций. Есть справочники, которые использует для хранения информации базу Active Directory (LDAP), есть справочники, которые реализованы с использованием СУБД (например, MySQL). Но я не нашел справочника, который использует информацию из базы 1С. Далее я рассмотрю данную разработку.

10.03.2017    19046    ruha    14       

Веб-сервисы и 1С: «Здравствуй, Name», время-деньги и «Жизнь» 75

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

Несколько статей о создании веб-сервисов на платформе 1С

09.03.2017    21024    hayroff    11       

Интерактивный ввод капчи 26

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

Краткое описание того, что делать, если нужно получить некоторые данные с определенного сайта, требующего от пользователя ввода текстовой капчи.

17.02.2017    8483    gaabora    3       

Отправка PUT запроса средствами 1С 8.3 65

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

HTTP запрос с использованием метода PUT средствами 1С 8.3 на практике - проблема и решение

16.02.2017    20334    hspeed79    16       

Нагрузочное тестирование сервера 1С при использовании WEB сервисов 51

Статья Системный администратор Программист Нет файла v8 ИТ-компания Бесплатно (free) Производительность и оптимизация (HighLoad) Внешние источники данных WEB

Проведение нагрузочного тестирования WEB-сервисов, развернутых на платформе 1С. Целью тестирования является ознакомление с возможностями платформы 1С при работе с большим количеством запросов через опубликованные WEB сервисы на IIS 7.5

01.02.2017    22978    BraunAlex    34       

Еще немного об обмене на web-сервисах 18

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

Расскажу о собственном опыте по передаче данных через web-сервисы

26.08.2016    10519    savostin.alex    8       

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

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

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

25.07.2016    39438    serg_infostart    19       

SOAP-сервисы с предварительной Cookie-аутентификацией 16

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

Платформа 1С не позволяет использовать cookie при работе со статичной WS-ссылкой или WS-прокси. Вследствие этого работа со многими веб-сервисами крупных поставщиков (например, DHL) напрямую невозможна.

05.06.2016    9041    blackschool    1       

Google Analytics API, Oauth2.0 и 1c8 51

Статья Системный администратор Нет файла v8 1С:Франчайзи, автоматизация бизнеса Windows Бесплатно (free) Практика программирования WEB

Обращение к Google Analytics API, Протокол Oauth 2.0 и запросы от 1С:8 без авторизации пользователя

02.05.2016    21728    Ольга_tmp    18       

HTTP-сервисы для тех, кто ничего не понимает в WEB 426

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

Если вы ничего не понимаете в WEB технологиях и такие слова, как json, get, post и прочее для вас ничего не значат и вы просто заядлый 1С-ник до мозга костей, но вам кровь из носу надо подружить 1С со сторонними приложениями или сайтом, то эта статья для вас

21.04.2016    100651    YAGolova    55       

Дай дернуть-2! Обращение к веб-сервисам с помощью подручных средств 97

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

Как показала практика, о веб-сервисах знает почти каждый программист, но о том, как их готовить, - весьма ограниченный круг. Давайте интереса ради замутим сервис и дернем его с помощью простого подручного средства - "Бумеранг"!

21.04.2016    29951    starik-2005    32       

Отладка обмена с web-сайтом на Битрикс 71

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

Часто возникает необходимость отладки обмена между 1С и web-сайтом на Битрикс. Разберемся, какие инструменты есть для этого...

04.04.2016    14964    vital1c    6       

.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция 111

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

Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.

10.03.2016    48321    Serginio    33       

.Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д. 37

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

Очень часто нужно при работе с HTTP сервисами или сайтами использовать Асинхронные HTTP запросы, отправку на сервер нескольких файлов, использование сжатия трафика. Эта статья про то, как этого легко добиться.

09.03.2016    25346    Serginio    22       

Управление магазином ECWID из 1С 11

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

Вероятно многие (в том числе и я) используют для поддержки интернет-магазина стороннего поставщика, выплачивая ему энную сумму денег в месяц. Я выбрал ECWID. Не реклама, но не жалуюсь. Услуги вполне качественные. В этой статье пойдет речь об инструментах, с помощью которых можно из 1С через API Эквида общаться с их движком.

01.02.2016    9672    Sardukar    3