Имя: Пароль:
1C
1С v8
1С + Firebase (Firestore)
0 Сниф
 
23.03.18
20:00
Привет. Видел примеры обращения к Firebase из 1С обычными get и post  запросами. Но Firebase это же real-time database. Нету способа использовать эту возможность из 1С?
1 Fram
 
23.03.18
20:07
firebase работает через http?.. я просто не в курсе. мне любопытно
real-time database это какой то технический протокол предоставляющий интерфейс для доступа из других систем?
2 Сниф
 
23.03.18
20:18
(1) Да, firebase работает через http. И из 1С.

[code]

&НаКлиенте
Процедура Загрузить(Команда)
    
    ЗагрузитьНаСервере();
    
КонецПроцедуры

&НаКлиенте
Процедура Выгрузить(Команда)
    
    ВыгрузитьНаСервере();
    
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьНаСервере()
    
    Метод = "GET";                                                  // Все запросы на чтение данных выполняются методом GET
    Ресурс = "items.json";                                          // Адрес ресурса - соответствут имени узла в firebase
    АдресПриложения = "https://ninth-airship-149206.firebase.com/";;        // Адрес вашего приложения firebase
    //АдресПриложения = "https://myapp-a377c.firebaseio.com/";;        // Адрес вашего приложения firebase
    Авторизация = "?auth=***"; // Авторизационный токен вашего firebase приложения. Его можно найти по пути: Project Settings - Project Settings - Service Accounts - Database Secrets - Show)
    Запрос = АдресПриложения + Ресурс + Авторизация;
    WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
    WinHttp.Option(2,"utf-8");                  
    //WinHttp.SetProxy(2,"СЕРВЕР:ПОРТ");                            //если вы работаете через прокси
    WinHttp.Open(Метод, Запрос, 0);
    WinHttp.SetRequestHeader("Accept-Language", "en");
    WinHttp.SetRequestHeader("Accept-Charset","utf-8");
    WinHttp.setRequestHeader("Content-Language", "en");
    WinHttp.setRequestHeader("Content-Charset", "utf-8");
    WinHttp.setRequestHeader("Content-Type","application/json; charset=utf-8");
    WinHttp.Send();    
    Рез = WinHttp.ResponseText();
    Сообщить(Рез);
    WinHttp = "";
    WinHttp = Неопределено;
    
КонецПроцедуры

&НаСервере
Процедура ВыгрузитьНаСервере()
    
    Метод = "PATCH";                                                // Все запросы на отправку данных выполняются методом PATCH
    Ресурс = "goods-groups.json";                                   // Адрес ресурса - соответствут имени узла в firebase
    АдресПриложения = "https://myapp-a377c.firebase.com/";;        // Адрес вашего приложения firebase
    Авторизация = "?auth=****"; // Авторизационный токен вашего firebase приложения. Его можно найти по пути: Project Settings - Project Settings - Service Accounts - Database Secrets - Show)
    Запрос = АдресПриложения + Ресурс + Авторизация;
    WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
    WinHttp.Option(2,"utf-8");                  
    //WinHttp.SetProxy(2,"СЕРВЕР:ПОРТ");                            //если вы работаете через прокси  
    WinHttp.Open(Метод, Запрос, 0);
    WinHttp.SetRequestHeader("Accept-Language", "en");
    WinHttp.SetRequestHeader("Accept-Charset","utf-8");
    WinHttp.setRequestHeader("Content-Language", "en");
    WinHttp.setRequestHeader("Content-Charset", "utf-8");
    WinHttp.setRequestHeader("Content-Type","application/json; charset=utf-8");
    
    Данные = Новый Соответствие();
    Данные.Вставить("abcdef", "Телевизоры");
    
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, Данные);
    ДанныеJson = Запись.Закрыть();
    
    WinHttp.Send(ДанныеJson);    
    Рез = WinHttp.ResponseText();
    Сообщить(Рез);
    WinHttp = "";
    WinHttp = Неопределено;
    
КонецПроцедуры
[/code]
3 Сниф
 
23.03.18
20:19
(1)
A real-time database is a database system which uses real-time processing to handle workloads whose state is constantly changing.[  База данных в режиме реального времени представляет собой систему баз данных, которая использует обработку в реальном времени для обработки рабочих нагрузок, состояние которых постоянно меняется. ]
4 Fram
 
23.03.18
20:28
(2) http сервер идет в комплекте и разворачивается с установкой firebird или, все таки, это какой то сторонний API?
5 Сниф
 
23.03.18
20:28
(1) термин real-time database я встретил у Гугл. Технически это некий бесплатный хостинг от Гугл. 500мегабайт под json базу данных, 5 гиг под файлы. И библиотеки под разные языки. Я использую javascript. Сегодня прочитал статью, что технически Firebase это синтез протоколов websocket и http, но со стороны клиента эти подробности скрыты и ты получаешь поток данных , если на него подписан.
6 Fram
 
23.03.18
20:29
(3) и как этот теоретический термин должен помочь 1С достучаться до firebird ?
7 Сниф
 
23.03.18
20:35
(6) в бесплатный пакет от Google входит:
- техническое доменное имя
- бесплатный хостинг файлов (у меня js-скрипты и html)
- сама база данных Firebase или Firestore

Вот с самой базой данных чтобы обмениваться 1С файликами json пока только тупой опрос со стороны 1С через 5 секунд.
8 Fram
 
23.03.18
20:42
извини, ТС, я попутал firebird и firebase. это совершенно разные вещи. но сервис безусловно интересный
9 Asmody
 
24.03.18
00:19
(0) Нет конечно. 1С же не умеет вебсокеты слушать. Так что обратку по старинке - дергать в обработке ожидания.
10 Garykom
 
гуру
24.03.18
02:31
(9) Не проще обертку поднять для вебсервисов 1С или ВК заюзать?