1с и api запросы как реализовать
У кого-нибудь есть или кто-нибудь знает где можно посмотреть простые наглядные примеры интеграции 1С с API, чтобы понять логику как это работает для начинающего или для дебила.
какое именно апи? рест апи? или соап?
Срочно дайте человеку какой-нибудь API
например soap
(0) API — Application Programming Interface, программный интерфейс приложения. Поэтому для каждого приложения будет свой API. Тебе пример интеграции 1С и чего именно надо?
(4) Да, я понимаю что у каждого приложения свой API. Мне нужен пример чего угодно, где можно увидеть и понять как это работает и с чего начинать.
Вот тут написано про всякие API http://v8.1c.ru/metod/books/book.jsp?id=288
хочешь потренироваться — пиши клиента для реддит
https://www.reddit.com/dev/api/
(8) спасибо) теперь нужно понять с чего начинать в 1с
Ироды окаянные :))
https://wonderland.v8.1c.ru/search/index.php?tags=OData
Начни с онлайн-сервиса «морфер» и использования его АПИ в 1С
Хотя эти всякие WS могут показаться сложными. Лучше начни с какого-нибудь АПИ на хттп-сервисах. Например, Манго.
(0) Классический пример
https://habr.com/post/148658/
Ну или можно взять сервис проверки контрагента по ИНН/КПП.
Еще с геокодером Яндекса побаловаться интересно:
https://tech.yandex.ru/maps/geocoder/
(14) а есть чего нибудь примерного в 1с8 по этой темке?
(15) С каких то движков 8.3 (а может и раньше, я не следил) в структуре конфигурации появились http сервисы.
Можно сделать базу с вебсервисом, который будет допустим принимать текст запроса и в xml результат возрвращать. Опубликуй её на вебсервере вот тебе и вебсервис, который будет отвечать, api правда будет целиком на 1с, но нам же надо чтобы все было на 1с.
(16) Это и в 8.1 было
А вообще полезная штука Яндекс диск, попробуй реализовать, там не сложно, единственно нужно генерировать ключ + права дать.
Очень хорошая тема тоже интересно)
(10), (11), (12) спасибо
(13) отлично, спасибо))
(14) благодарю
попробую еще книженцию (6) по 1с приобрести
кто-нибудь учился по учебникам, есть в них толк?
(19) Я учился. Хорошо превращают неосознанное незнание в осознанное незнание. Не более того.
(20) вот и мне изучение теории всегда казалось сомнительным занятием. эффективней всего разбирать конкретные решенные примеры на практике, но не всегда получается найти то, что нужно или более менее доступно для моего понимания
(21) делай интеграцию HTTP . интеграция по api что в ней нового ? выплюнет набор текстовых полей которые нужно разобрать
> Это и в 8.1 было
http появилось только в 8.3, и даже не с начала 8.3
(16) так оно может стучаться к веб сайтам, можно с любого веб сайта стучаться к 1С и получать rest ответ и распознавать как массив.
(23) спасибо за ссылку
//Ответ = Новый HTTPСервисОтвет(200);
//Ответ.УстановитьТелоИзСтроки(«Hello»);
//Возврат Ответ;
УстановитьПривилегированныйРежим(Истина);
date1 = Запрос.ПараметрыURL[«date1»];
date2 = Запрос.ПараметрыURL[«date2»];
guid = Запрос.ПараметрыURL[«guid»];
inn = Запрос.ПараметрыURL[«inn»];
kpp = Запрос.ПараметрыURL[«kpp»];
NameProcedure = Запрос.ПараметрыURL[«NameProcedure»];
NumberAccount = Запрос.ПараметрыURL[«NumberAccount»];
UIDaccount = Запрос.ПараметрыURL[«UIDaccount»];
Текст64 = XMLСтрока(Новый ХранилищеЗначения(ТаблицаЗначений, Новый СжатиеДанных(9)));
HTTPОтвет = Новый HTTPСервисОтвет(200);
HTTPОтвет.Заголовки.Вставить(«Content-Type»,»text/html; charset=utf-8″);
HTTPОтвет.УстановитьТелоИзСтроки(Текст64);
Это база куда подключаемся
АдресСтраницы = «имя базы/hs/bank/»+ДатаНачалаСтрокой+»/»+ ДатаОкончанияСтрокой + «/» + Организация.УникальныйИдентификатор()
+ «/» + Организация.ИНН + «/» + Организация.КПП + «/» + ИмяДокумента + «/» + РасчетныйСчет.НомерСчета + «/» + РасчетныйСчет.УникальныйИдентификатор();
Хост = «имя хоста»;
HTTPСоединение = новый HTTPСоединение(Хост);
HTTPЗапрос = Новый HTTPЗапрос(АдресСтраницы);
HTTPЗапрос.Заголовки.Вставить(«Authorization», «Basic » + ЗакодироватьЛогинПароль(«имя пользователя в базе подключения», «пароль»));
КодСостояния = «код состояния — » + Результат.КодСостояния;
ОтветHTTPСтрока = Результат.ПолучитьТелоКакСтроку();
Функция ЗакодироватьЛогинПароль(Логин, Пароль)
Запись = Новый ЗаписьТекста(ВременныйФайл);
Запись.Записать(Логин + «:» + Пароль);
Запись.Закрыть();
ДвДанные = Новый ДвоичныеДанные(ВременныйФайл);
Результат = Base64Строка(ДвДанные);
Возврат Сред(Результат, 5);
получил ТЗ закодировал в строку и обратно раскодировал в ТЗ
(6) Cпасибо за ссылку! Заказал.
(15) Есть несложный кусок кода, что-то посложнее не нашел сходу. Под 8.2, на 8.3 можно без WinHttp, вроде.
WinHttp = Новый COMОбъект(«WinHttp.WinHttpRequest.5.1»);
WinHttp.Option(2, «utf-8»);
WinHttp.Open(«POST», «https://geocode-maps.yandex.ru/1.x/»,0);
WinHttp.setRequestHeader(«Content-Language», «ru»);
WinHttp.setRequestHeader(«Content-Charset», «utf-8»);
WinHttp.setRequestHeader(«Content-type», «application/x-www-form-urlencoded; charset=utf-8»);
ПараметрыПОСТ = «geocode=» + КодированнаяСтрокаАдреса + «&key=» + ЯндексAPI;
ИспользоватьПрокси = ПараметрыСеанса.новаТекущийПользователь.ИспользоватьПрокси;
Если ИспользоватьПрокси Тогда
WinHttp.SetProxy(2, ПараметрыСеанса.новаТекущийПользователь.ПроксиАдрес);
WinHttp.SetCredentials(ПараметрыСеанса.новаТекущийПользователь.ПроксиПользователь, ПараметрыСеанса.новаТекущийПользователь.ПроксиПароль, 1);
КонецЕсли;
WinHttp.Send(ПараметрыПОСТ);
Текст = Новый ТекстовыйДокумент;
Текст.УстановитьТипФайла(КодировкаТекста.UTF8);
Текст.УстановитьТекст(WinHttp.ResponseText());
Текст.Записать(КаталогВременныхФайлов()+ВременныйФайл);
Как сделатьPOST запрос из 1С к API сайта?
Добрый день! Не могу понять где ошибся. Задача: API позволяет выложить любой файл, и в случае успеха возвращается ответ с кодом 200 и данными ‘OK’.
В противном случае возвращается ответ с кодом 404.
Пробую сделать текстовый файл, с содержимым 123. И затем отправить его на сервер, при помощи этого API.
Запрос должен отправляться методом POST на URL 95.68.246.86:7000/api/v1 и помимо файла, необходимо отправлять поле:
Название поля: req
Значение поля: test
Попытка решения:
мяФайлаДляПередачи = «d:\temp\tmp\request.txt»;
Соединение = Новый HTTPСоединение(«95.68.246.86:7000»);
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить(«Content-Type», «application/x-www-form-urlencoded»);
ЗаголовокHTTP.Вставить(«Content-Disposition: form-data; filename /api/v1/»,ЗаголовокHTTP);
Запрос.УстановитьТелоИзСтроки(«&req=test»);
Сообщить(«Ответ: » + ОтветВВидеСтроки);
Сообщить(«Ответ1: » + Ответ.КодСостояния);
Сообщить(«Ответ2: » + Ответ.ПолучитьТелоКакДвоичныеДанные());
Сообщить(«Hello Pleace. — 1»);
// Получаем ответ веб-сервера на POST-запрос
// в виде текста
ТекстовыйФайлОтвет = Новый ТекстовыйДокумент;
ТекстовыйФайлОтвет.Прочитать(ФайлРезультата,КодировкаТекста.UTF8);
СтрокаОтветСервера = ТекстовыйФайлОтвет.ПолучитьТекст();
Результат выполнения
Ответ:
Ответ1: 404
Ответ2:
Hello Pleace. — 1
Ответ3:
- Вопрос задан более трёх лет назад
- 9293 просмотра
2 комментария
Средний 2 комментария
Реализация REST API в обработке 1C
Функции для обмена данными и HTTP-методы, которые выполняются в следующих функциях:
- для номенклатуры — «Products/BeginUploadProducts»
- для ячеек — «Cells/BeginUpdate»
- для прочих сравочников — «Tables/»+ИмяТаблицыENG+
- «/BeginOverwrite»
- для номенклатуры — «Products/AddProductsToUpload»
- для ячеек — «Cells»
- для прочих справочников — «Tables/»+ИмяТаблицыENG
- для номенклатуры — «Products/ResetUploadProducts»
- для ячеек — «Cells/ResetUpdate»
- для прочих справочников — «Tables/»+ИмяТаблицыENG+
- «/ResetOverwrite»
- для номенклатуры — «Products/EndUploadProducts»
- для ячеек — «Cells/EndUpdate»
- для прочих справочников — «Tables/»+ИмяТаблицыENG+»/EndOverwrite»
- для номенклатуры — «Products/BeginUploadProducts»
- для ячеек — «Cells/BeginUpdate»
- для прочих сравочников — «Tables/»+ИмяТаблицыENG+
- «/BeginOverwrite»
- для номенклатуры — «Products/EndUploadProducts»
- для ячеек — «Cells/EndUpdate»
- для прочих справочников — «Tables/»+ИмяТаблицыENG+
- «/EndOverwrite»
- Получение реквизитов шапки документа — «DocTypes (‘» +
- СтруктураДокумента.uni + «’)?$expand=fields»
- Получение реквизитов табличной части документа — «DocTypes (‘» +
- СтруктураДокумента.uni + «’)?$expand=columns»
- Получение списка доп.таблиц, которые не определены в метаданных
- документа, но существуют у самого экземпляра документа — «DocTypes (‘» + СтруктураДокумента.uni + «’)?$expand=tables ($expand=fields)»
- Редактировать/добавить документ — «Docs» + данные документа
- Выгрузить табличную часть, например, declaredItems — «Docs (‘»+idДокумента+»‘)/declaredItems»
- Принудительное сохранение документа, когда
все строки уже загружены — «Docs (‘»+idДокумента+»‘)/EndUpdate»
Примеры запросов и ответов, используемые при обмене между 1С и Mobile SMARTS:
| 10.0.0.29 | — пример IP-адреса сервера Mobile SMARTS |
| e1fc20aa-ff42-47df-9e5b-a94ba38b8935 | — пример ID базы Mobile SMARTS |
REST_API_ПодключитьсяКБазеSMARTS
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «@odata.context» | «http://localhost:18686/MobileSMARTS/api/v1/$metadata»; | |
| «value» | Массив | Метаданные базы Mobile SMARTS |
REST_API_ПолучитьТокенSMARTS
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «Expires_in» | 86 400 | Срок действия токена в секундах |
| «Access_token» | «8ee184cb1eb7b4b945a69bbc5bd198a5» | Токен доступа |
| «Token_type» | «bearer» | Тип токена |
| «Refresh_token» | «b8140b77fa61fa5399735ab60f7a9f16» | Токен обновления |
REST_API_ПолучитьОписаниеБазы
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «folder» | «C:\ProgramData\Cleverence\Базы Mobile SMARTS\Склад 15, Полный с Кировкой» | |
| «@odata.context» | «http://localhost:18686/MobileSMARTS/api/v1/$metadata#BaseInfo»; | |
| «id» | «e1fc20aa-ff42-47df-9e5b-a94ba38b8935» | |
| «name» | «Склад 15, Полный с Кировкой» | |
| «connectionQRCode» | «http://10.0.0.29:10501/e1fc20aa-ff42-47df-9e5b-a94ba38b8935?altip=VM-WIN10-USR-12″; | |
| «appId» | «212E5362-5969-40DC-9781-CB7B8AB811DB» | |
| «appName» | «Склад 15, Полный с Кировкой» | |
| «allConnectionStrings» | Массив | Все возможные варианты строки соединения с базой |
| «comment» | ||
| «appDescription» | Соответствие | Информация о продукте: наименование, ID приложения, версия платформы, ссылки на интернет-ресурсы, комментарий |
| «appInstanceSettings» | Соответствие | Информация о настройках сервера |
REST_API_ПолучитьЗначениеНастройкиБазыSMARTS
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение |
| «@odata.context» | «http://localhost:18686/MobileSMARTS/api/v1/$metadata#CustomSettings/$entity»; |
| «value» | «ИнтеграционнаяОбработка_УТ_11_4.epf» |
| «name» | «ИмяИнтеграционнойОбработкиКонфигурации1С» |
REST_API_ЗаполнитьНастройкиSMARTS
http://10.0.0.29:10501/e1fc20aa-ff42-47df-9e5b-a94ba38b8935/api/v1/CustomSettings?$filter=name eq ‘ИспользоватьШаблоныВесовогоТовара’ or name eq ‘ПрефиксКодаВесовогоТовара’ or name eq ‘ДлинаКодаВесовогоТовара’ or name eq ‘ЧислоЗнаковПослеЗапятойВесТовара’ or name eq ‘ПрефиксВключенВКодВесовогоТовара’ or name eq ‘РазмерПорцииНоменклатуры’ or name eq ‘ВыгружатьНоменклатуруДокументаПередВыгрузкойДокумента’ or name eq ‘УстановитьПоискПоНаименованиюИАртикулу’ or name eq ‘ВыгружатьНоменклатуруСразу’ or name eq ‘ВыгружатьКонтрагентовСразу’
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «@odata.context» | «http://localhost:18686/MobileSMARTS/api/v1/$metadata#CustomSettings»; | |
| «value» | Массив | Массив значений запрашиваемых настроек |
REST_API_ЗаписатьНастройкиSMARTS
< "value": true, "name": "РаботаБезАлкоголя" >HTTP-метод: POST Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «@odata.context» | «http://localhost:18686/MobileSMARTS/api/v1/$metadata#CustomSettings/$entity»; | |
| «value» | Истина | Значение настройки |
| «name» | «РаботаБезАлкоголя» | Ключ настройки |
REST_API_УдалитьНастройкиSMARTS
нет HTTP-метод: DELETE Код состояния: 204 Ответ сервера: нет
REST_API_ВыгрузитьТаблицуНаСерверSMARTS
Будут выполнены 3 запроса: начать выгрузку, выгрузка, завершить выгрузку (или прервать выгрузку, в случае ошибки), пример дан для выгрузки номенклатуры. В случае выгрузки ячеек или дополнительных таблиц будут изменяться только наименования методов (см. таблицу выше), все остальное выполняется по тому же алгоритму
Запрос 1 — Начать выгрузку
< "lschema": [ "Product.Name", "Product.Barcode", "Product.ЭтоГруппа", "Product.Marking", "Product.Весовой", "Product.Маркировка", "Packing.Barcode", "Packing.ИмяХарактеристики", "Packing.Name", "Packing.UnitsQuantity", "Product.Алко", "Packing.АлкоКод", "Packing.АлкоОбъем", "Packing.АлкоКрепость", "Product.АлкоМарк", "Packing.АлкоПроизводитель", "Packing.АлкоПроизвИНН", "Packing.АлкоПроизвКПП", "Packing.ТНВЭД", "Packing.Бренд", "Packing.Верх", "Packing.Вид", "Packing.Импортер", "Packing.Размер", "Packing.ИНН", "Packing.ИсходныйGTIN", "Packing.Низ", "Packing.Подкладка", "Packing.Производитель", "Packing.СтранаПроизводства", "Packing.Цвет", "Packing.price", "Packing.qty", "Product.ПоХарактеристикам", "Product.ПоСериям", "Product.ПоСН", "Product.Id", "Product.BasePackingId", "Packing.ИдХарактеристики", "Packing.Id", "Packing.ИдЕдиницыИзмерения", "Product.КлючХарактеристик", "Product.КлючСерий", "Packing.ИдСерии" ], "rewriteProductsBook": true, "useFullTextSearch": true >HTTP-метод: POST Код состояния: 204 Ответ сервера: нет
Запрос 2 — Начать выгрузку
< "flds": [ "Х-77890 Стинол Завод бытовой техники", "000000094", "false", "Х-77890", "false", "", "2000000058078", "", "шт", "1", "false", "", "0", "0", "false", "", "", "", "", "Стинол", "", "", "", "", "", "2000000058078", "", "", "Завод бытовой техники", "", "", "0", "8", "false", "false", "false", "cbcf4934-55bc-11d9-848a-00112f43529a", "bd72d926-55bc-11d9-848a-00112f43529a", "", "bd72d926-55bc-11d9-848a-00112f43529a", "bd72d926-55bc-11d9-848a-00112f43529a", "", "9c556d55-720f-11df-b436-0015e92f2802", "" ] >HTTP-метод: POST Код состояния: 204 Ответ сервера: нет
Запрос 3 — Завершить выгрузку / прервать выгрузку
нет HTTP-метод: POST Код состояния: 204 Ответ сервера: нет
REST_API_ОчиститьТаблицуНаСервереSMARTS
Аналогично процессу выгрузки, только без запроса 2, т. е., фактически, не выгружаем в таблицу никаких данных:
REST_API_ПолучитьМетаданныеДокументовMS — состоит из 7 запросов
Запрос1 — Получение списка типов документов
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «@odata.context» | «http://localhost:18686/MobileSMARTS/api/v1/$metadata#DocTypes»; | |
| «value» | Массив | Массив метаданных документов Mobile SMARTS |
Запрос 2 — Получение метаданных и реквизитов шапки документа на примере документа «Агрегация»
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «@odata.context» | «http://localhost:18686/MobileSMARTS/api/v1/$metadata#DocTypes/$entity»; | |
| «fields» | Массив | Массив реквизитов шапки документа |
| «uni» | «Agregaciya» | Транслитерация имени документа |
| «name» | «Агрегация» | Имя документа |
| «allowRemoveDocuments» | Истина | Разрешить удаление документа с ТСД |
| «removeAfterFinish» | Ложь | Удалять после завершения с ТСД |
| … | … | и т. д. |
Запрос 3 — Получение метаданных и реквизитов табличной части документа на примере документа «Агрегация»
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «@odata.context» | «http://localhost:18686/MobileSMARTS/api/v1/$metadata#DocTypes/$entity»; | |
| «columns» | Массив | Массив реквизитов табличной части документа |
| «uni» | «Agregaciya» | Транслитерация имени документа |
| «name» | «Агрегация» | Имя документа |
| «allowRemoveDocuments» | Истина | Разрешить удаление документа с ТСД |
| «removeAfterFinish» | Ложь | Удалять после завершения с ТСД |
| … | … | и т. д. |
Запрос 4 — Получение списка доп.таблиц, которые не определены в метаданных документа, но существуют у самого экземпляра документа на примере документа »Агрегация»
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «@odata.context» | «http://localhost:18686/MobileSMARTS/api/v1/$metadata#DocTypes/$entity»; | |
| «columns» | Массив | Массив табличных частей документа и их реквизитов |
| «uni» | «Agregaciya» | Транслитерация имени документа |
| «name» | «Агрегация» | Имя документа |
| «allowRemoveDocuments» | Истина | Разрешить удаление документа с ТСД |
| «removeAfterFinish» | Ложь | Удалять после завершения с ТСД |
| … | … | и т. д. |
Запрос 5 — Получение списка дополнительных таблиц
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «@odata.context» | «http://localhost:18686/MobileSMARTS/api/v1/$metadata#TablesInfo»; | |
| «value» | Массив | Массив метаданных дополнительных таблиц Mobile SMARTS |
Запрос 6 -— Получение списка пользователей — «Users»
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «@odata.context» | «http://localhost:18686/MobileSMARTS/api/v1/$metadata#Users»; | |
| «value» | Массив | Массив метаданных пользователей Mobile SMARTS |
Запрос 7 — Получение списка устройств — «Devices»
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «@odata.context» | «http://localhost:18686/MobileSMARTS/api/v1/$metadata#Devices»; | |
| «value» | Массив | Массив метаданных устройств Mobile SMARTS |
REST_API_ПолучитьСписокДокументовНаСервереSMARTS
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «@odata.context» | «http://localhost:18686/MobileSMARTS/api/v1/$metadata#Devices»; | |
| «value» | Массив | Массив данных документов Mobile SMARTS |
REST_API_ПолучитьДанныеДокументаНаСервереSMARTS
нет HTTP-метод: GET Код состояния: 200 Ответ сервера:
| Ключ | Значение | Комментарий |
| «id» | «7e38bff7-8faf-11ea-a40c-00155d03e00e» | GUID документа |
| «name» | «Приобретение товаров и услуг ТД00-000026 от 06.05.2020 18:37:37» | Имя документа 1С |
| «nastrojkaBiznesProcessa» | «BPe8d6ec5a-7a78-41ba-8b01-820f78b31cdb» | GUID бизнес-процесса, по которому был выгружен документ |
| «imyaBP» | «Приобретение товаров и услуг (проверка документа на ТСД)» | Имя бизнес-процесса |
| «states» | Массив | Состояние документа — Выгружен, В работе, Завершен |
| «declaredItems» | Массив | Табличная часть СтрокиПлан |
| «currentItems» | Массив | Табличная часть СтрокиФакт |
| «combinedItems» | Массив | Табличная часть Совмещенные |
| «extendedFields» | Структура | Дополнительные реквизиты шапки |
| «tables» | Массив | Дополнительные табличные части |
| … | … | И т.д. |
REST_API_ЗаписатьДокументВБазуSMARTS
Запрос 1 — Выгрузка шапки документа
< "id": "7e38bff7-8faf-11ea-a40c-00155d03e00e", "warehouseId": "1", "ИдКонтрагента": "cbcf497b-55bc-11d9-848a-00112f43529a", "ИдСклада1С": "03ce4b6f-3ff7-11e0-af05-0015e9b8c48d", "ИмяСклада": "Продуктовая база", "ИмяКонтрагента": "База "Продукты"", "DistributeByBarcode": true, "barcode": "167777389647035791856893807099027644430", "РежимУпаковок": "БезУпаковок", "Name": "Приобретение товаров и услуг ТД00-000026 от 06.05.2020 18:37:37", "documentTypeName": "ПриходНаСклад", "НастройкаБизнесПроцесса": "BPe8d6ec5a-7a78-41ba-8b01-820f78b31cdb", "ИмяБП": "Приобретение товаров и услуг (проверка документа на ТСД)", "КонтрольКолва": true >HTTP-метод: POST Код состояния: 201 Ответ сервера:
| Ключ | Значение | Комментарий |
| «id» | «7e38bff7-8faf-11ea-a40c-00155d03e00e» | GUID документа |
| «name» | «Приобретение товаров и услуг ТД00-000026 от 06.05.2020 18:37:37» | Имя документа в 1С |
| «createdOnPDA» | Ложь | Создан на ТСД |
| «documentTypeName» | «ПриходНаСклад» | Тип документа Mobile SMARTS |
| «modified» | Ложь | Изменен |
| «inProcess» | Ложь | В работе |
| «finished» | Ложь | Завершен |
| «barcode» | «167777389647035791856893807099027644430» | Штрихкод документа |
| «serverHosted» | Ложь | Коллективная работа |
| «idKontragenta» | «cbcf497b-55bc-11d9-848a-00112f43529a» | |
| «idSklada1S» | «03ce4b6f-3ff7-11e0-af05-0015e9b8c48d» | |
| «imyaSklada» | «Продуктовая база» | |
| «imyaKontragenta» | «База «Продукты»» | |
| «rezhimUpakovok» | «БезУпаковок» | |
| «nastrojkaBiznesProcessa» | «BPe8d6ec5a-7a78-41ba-8b01-820f78b31cdb» | |
| «imyaBP» | «Приобретение товаров и услуг (проверка документа на ТСД)» | |
| «kontrolKolva» | Истина | Контроль количества |
| … | … | и т. д. |
Запрос 2 — Выгрузка табличных частей документа, например, declaredItems
< "value": [ < "packingId": "bd72d8fb-55bc-11d9-848a-00112f43529a", "productId": "e8a71fa5-55bc-11d9-848a-00112f43529a", "ИдЕдиницыИзмерения": "bd72d8fb-55bc-11d9-848a-00112f43529a", "Цена": 41, "declaredQuantity": 5 >] > HTTP-метод: POST Код состояния: 200 Ответ сервера: нет
Запрос 3 — Принудительное сохранение документа, когда все строки уже загружены
нет HTTP-метод: POST Код состояния: 204 Ответ сервера: нет
REST_API_УдалитьДокументНаСервереSMARTS
нет HTTP-метод: DELETE Код состояния: 204 Ответ сервера: нет
REST_API_УстановитьСтатусДокументаНаСервереSMARTS
< "Status": "ОшибкаЗаписи" >HTTP-метод: PATCH Код состояния: 204 Ответ сервера: нет
Была ли статья полезна?
Спасибо за ваш отзыв!
Уточните, почему:
- содержание статьи не соответствует заголовку
- текст трудно понять
- нет ответа на мой вопрос
- мне не нравится, как отрабатывает функционал
- рекомендации не помогли в настройке
- рекомендации не помогли в исправлении ошибок
- другая причина
Заполните, пожалуйста, данную форму, что конкретно вы не нашли, оставьте свои комментарии о работе сайта / полезности / сложности с навигацией
Основные принципы взаимодействия с REST API (пример работы)
Сегодня поговорим о связи баз данных 1С с RESTAPI.
Что же это такое, и какие основные принципы взаимодействия нужно знать? RESTAPI — это не более чем обычный веб интерфейс со своим набором команд. То есть мы можем взаимодействовать с ним посредством 1С http-запросов. Давайте посмотрим, как это происходит.
Главной особенностью архитектуры RESTAPI является то, что при каждом обращении сервер, принимающий запрос, думает, что принял это соединение впервые! То есть при каждом запросе передается уникальный ключ авторизации, который идентифицирует сессию.
Есть несколько основных типов запросов архитектуры REST:
— GETзапрос (получает данные);
— PUTзапрос (передает данные);
— POSTзапрос (меняет данные);
Все эти типы используются в RESTAPI.
Сервер, получая запросы RESTAPI, определяет их тип и понимает, что будет происходить с переданными ему данными. Для того чтобы взаимодействовать с определенным API необходимо зайти на его страницу и изучить документацию. В ней обычно указывается, какие методы доступны для взаимодействия, какие данные и как принимает сервер, пример ответа на функции.
2. Подключение к серверу 1С
На реальном примере это выглядит так: для начала мы создаем подключение к серверу 1С, используя параметры, хранимые, скажем, в константе (адрес сервера, ключ подключения).

Используя функцию добавления параметров к запросу, добавляем необходимые значения. Лично я всегда использую эту функцию для удобства формирования строки запроса. С ее помощью можно легко добавить большое количество разных параметров. Но строку с параметрами можно и вручную написать.
3. Формат данных json
Строка с параметрами в итоге выглядит вот так: &FactoryId=123&hashkey=0000
В строке запроса мы можем передать, например, hashkey и factoryId.
Передавая параметры на определенный сервер, мы в ответ получаем нужные данные (для get запроса) или подтверждение, что наши данные получены (когда мы, например, передаем информацию для записи на сервере). Обычно для передачи запроса/ответа в теле запроса используется формат данных json. В нашем случае так и есть.
Json – это формат текста. Мне очень напоминает xml формат онлайн. Он часто используется при взаимодействии с вебом и происходит от JavaScript, но при этом считается независимым от языка.
Пример формата данных json:Итак, получаем ответ от сервера:
Обрабатываем json, который содержится в теле ответа. Структура предполагаемых данных хранится, конечно же, в документации к api. Поэтому при чтении json мы точно знаем, к какому полю обратится.
Ответ сервера как массив данных (прочитанный json) мы передаем в функцию, которая записывает результат в базу данных 1С:Предприятие. В нашем примере структура данных 1С (метаданные) почти полностью совпадает по именам с названием формата данных json. По имени метода определяем справочник, в который будет происходить загрузка. И по id, переданному из сервиса, по реквизиту пытаемся найти элемент справочника.
В итоге мы имеем связь, которую обеспечивает шина данных api сервера. На сервер мы передаем параметры подключения, которые идентифицируют сессию и параметры запроса, а в ответ получаем необходимые данные, которые обрабатываем в процессе синхронизации любым удобным для нас способом.
Полученные данные мы записываем в нужный объект данных. В нашем случае - «Справочник» или «Регистр сведений».
Таким образом, restapi – пример описанного набора команд на стороне архитектуры сервера с базой данных. Передавая имя метода и параметры, мы вызываем определенную функцию, которая может обработать переданные в параметрах данные (например, записать их в базу данных сервера) или вернуть нам запрошенные данные из своей базы. Вот так просто.
Специалист компании ООО «Кодерлайн» Вадим Хоменко.



