Рассмотрим, как можно использовать технологии распределённого реестра для работы с конфигурациями 1С.
И так, приступим. Для начала выберем платформу, это будет open-source проект HYPERLEDGER от некоммерческого консорциума Linux Foundation. Разворачиваем все по мануалу, конечно не за 10 минут заявленные разработчиками , но потратив денек другой задача решается :) Платформу будем использовать под управление цепочками поставок, т.е. нам понадобится модуль для передачи электронных формализованных сообщений и может попробуем "поиграть" и с цифровыми активами.
Разбираем платформу, из предложенных вариантов берем наиболее удобный, это среда контейнеров Docker на платформе Windows 10, но с "оговоркой", что Docker будет работать все же с Ubuntu через WSL (подсистему Windows для Linux). Подробно на развертывании такой виртуалки останавливаться не будем, т.к. инструкций и видосов уже достаточно много, как это сделать. Если все проделано верно то получаем ответ по telnet на дефолтовый порт 50051. Что же дальше, а причем тут 1С? У нас есть установленный приватный реестр, но пока он не распределенный, а локальный и его достаточно для тестирования его API узла по gRPC протоколу и через консоль платформы. В качестве примера выгрузим из 1С документ УПД подготовив его в виде сериализованных данных JSON формата. Через gRPC или консоль зададим платформе двух юзеров, и осуществим запись передачи файла УПД от user1 к user2, проверяем реестр и блок успешно записан в цепочку.
Что нужно для того, чтобы реестр стал распределенным и осуществить реальную отправку сообщения. Логично, что каждый участник реестра должен быть подключен к одноранговой сети. Но каждая организация совершенно точно не сможет сделать такую процедуру, и по большей части ее и так устраивает текущий документооборот через ЭДО или EDI пусть и платно (едим кактус дальше). Но, что будет если корпорации все же согласятся настроить сеть из нод, а для небольших организаций будут реализованы сообществом веб-сервисы и для них все будет привычно, как и при работе с провайдерами ЭДО? Идея кажется вполне осуществимой, так давайте попробуем :)
И так, приступим. Для начала выберем платформу, это будет open-source проект HYPERLEDGER от некоммерческого консорциума Linux Foundation. Разворачиваем все по мануалу, конечно не за 10 минут заявленные разработчиками , но потратив денек другой задача решается :) Платформу будем использовать под управление цепочками поставок, т.е. нам понадобится модуль для передачи электронных формализованных сообщений и может попробуем "поиграть" и с цифровыми активами.
Разбираем платформу, из предложенных вариантов берем наиболее удобный, это среда контейнеров Docker на платформе Windows 10, но с "оговоркой", что Docker будет работать все же с Ubuntu через WSL (подсистему Windows для Linux). Подробно на развертывании такой виртуалки останавливаться не будем, т.к. инструкций и видосов уже достаточно много, как это сделать. Если все проделано верно то получаем ответ по telnet на дефолтовый порт 50051. Что же дальше, а причем тут 1С? У нас есть установленный приватный реестр, но пока он не распределенный, а локальный и его достаточно для тестирования его API узла по gRPC протоколу и через консоль платформы. В качестве примера выгрузим из 1С документ УПД подготовив его в виде сериализованных данных JSON формата. Через gRPC или консоль зададим платформе двух юзеров, и осуществим запись передачи файла УПД от user1 к user2, проверяем реестр и блок успешно записан в цепочку.
Что нужно для того, чтобы реестр стал распределенным и осуществить реальную отправку сообщения. Логично, что каждый участник реестра должен быть подключен к одноранговой сети. Но каждая организация совершенно точно не сможет сделать такую процедуру, и по большей части ее и так устраивает текущий документооборот через ЭДО или EDI пусть и платно (едим кактус дальше). Но, что будет если корпорации все же согласятся настроить сеть из нод, а для небольших организаций будут реализованы сообществом веб-сервисы и для них все будет привычно, как и при работе с провайдерами ЭДО? Идея кажется вполне осуществимой, так давайте попробуем :)
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Внимание! Вознаграждение получает тот, кто первый подготовит пример соединения по протоколу gRPC средствами 1С.
(35) пример кода библиотеки Jav * aScript:
установка $ npm i iroha-helpers
установка $ npm i iroha-helpers
import grpc from 'grpc'
import {
QueryService_v1Client,
CommandService_v1Client
} from '../iroha-helpers/lib/proto/endpoint_grpc_pb'
import { commands, queries } from 'iroha-helpers'
const IROHA_ADDRESS = 'localhost:50051'
const adminPriv =
'f101537e319568c765b2cc89698325604991dca57b9716b58016b253506 cab70'
const commandService = new CommandService_v1Client(
IROHA_ADDRESS,
grpc.credentials.createInsecure()
)
const queryService = new QueryService_v1Client(
IROHA_ADDRESS,
grpc.credentials.createInsecure()
)
Promise.all([
commands.setAccountDetail({
privateKeys: [adminPriv],
creatorAccountId: 'admin@test',
quorum: 1,
commandService
}, {
accountId: 'admin@test',
key: 'jason',
value: 'statham'
}),
queries.getAccountDetail({
privateKey: adminPriv,
creatorAccountId: 'admin@test',
queryService
}, {
accountId: 'admin@test'
})
])
.then(a => console.log(a))
.catch(e => console.error(e))
Показать
(5) Евгений, "классический" блокчейн - генерирует постоянно блоки по таймингу, от этого он растет независимо от наличия данных. приватный же блокчейн может работать иначе, нет данных нет блоков и второй момент, это отсутствие подключения ноды без процедуры аутентификации, т.е. реестр имеет ограниченный круг пользователей. так же есть технологии "форка" архив можно отрезать, зачем тянуть "хвост" 3-5 летней давности.
(8) ...да, поиск по ключевым на эту статью не вывел. спасибо за ссылочку. В действительности образ блокчейн сейчас в 99 % это про криптовалюты, работа приватных реестров ориентирована для Enterprise решений, где используется только "чистый" блокчейн и в некоторых случаях есть даже уход от смарт-контрактов, чтобы не иметь проблем с государством. Мы имеем дело просто с более новым форматом СУБД и ни чего сложного в этом нет, тот же MS SQL имеет репликацию, что дает возможность делать базу распределенной в какой то мере. Отечественный проект Waves Enterprise (резидент Сколково) кстате использует комбинированный тип приватного с публичным.
(7)
сам смысл блокчейна в общедоступности и распределенности
Смысл в цепочке блоков - все. Энтерпрайз блокчейн на базе гиперледжера мы как-то делали для корпоративного чата, я об этом как-то писал даже:
(15) 1С-ка в этом случае инфраструктура заказчика наиболее используемая на практике, ее и пробуем интегрировать с реестром. Цель показать простое решение взаимодействия с платформой, за него и объявлено вознаграждение данной темы. Мануал разработчиков содержит конечно инструменты для клиентской части на Java, Python и т.п., но это уже подсказка для решения. Еще цель статьи это по сути проведение CastDevа для подтверждения идеи (гипотезы).
(45) в 1C безопасное соединение это и есть http/1.1 ?
В документации docs.microsoft.com http это соответствие http/1.1,
тогда логично было бы, что https это http/2 раз оно защищенное и безопасное.
так может надо просто поверить практику , а не теорию)
БезопасноеСоединение = Новый HTTPСоединение(URI.ИмяСервера,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
В документации docs.microsoft.com http это соответствие http/1.1,
тогда логично было бы, что https это http/2 раз оно защищенное и безопасное.
так может надо просто поверить практику , а не теорию)
(46)
А HTTP/2 - :
Может, хватит уже "сиськи мять"? :-D
P.S. Совет бесплатный, на доп. вознаграждение не претендую. ;-)
может надо просто поверить практику , а не теорию)
Для начала надо еще проще - открыть хотя бы :
HTTPS (аббр. от англ. HyperText Transfer Protocol Secure) — расширение протокола HTTP для поддержки шифрования в целях повышения безопасности.
...
HTTPS не является отдельным протоколом. Это обычный HTTP, работающий через шифрованные транспортные механизмы SSL и TLS.
...
HTTPS не является отдельным протоколом. Это обычный HTTP, работающий через шифрованные транспортные механизмы SSL и TLS.
А HTTP/2 - :
Отличия от HTTP/1.1
Протокол HTTP/2 является бинарным. По сравнению с предыдущим стандартом изменены способы разбиения данных на фрагменты и транспортирования их между сервером и клиентом.
Протокол HTTP/2 является бинарным. По сравнению с предыдущим стандартом изменены способы разбиения данных на фрагменты и транспортирования их между сервером и клиентом.
Может, хватит уже "сиськи мять"? :-D
P.S. Совет бесплатный, на доп. вознаграждение не претендую. ;-)
(46)
что https это http/2
Это вообще ни при чем:Протокол HTTP/2 является бинарным[13][14]. По сравнению с предыдущим стандартом изменены способы разбиения данных на фрагменты и транспортирования их между сервером и клиентом.
В HTTP/2 сервер имеет право послать то содержимое, которое ещё не было запрошено клиентом. Это позволит серверу сразу выслать дополнительные файлы, которые потребуются браузеру для отображения страниц, без необходимости анализа браузером основной страницы и запрашивания необходимых дополнений.
В HTTP/2 сервер имеет право послать то содержимое, которое ещё не было запрошено клиентом. Это позволит серверу сразу выслать дополнительные файлы, которые потребуются браузеру для отображения страниц, без необходимости анализа браузером основной страницы и запрашивания необходимых дополнений.
HTTP/2 определён как для HTTP URI (то есть без шифрования), так и для HTTPS URI (поверх TLS 1.2 и выше).
Хотя стандарт определяет шифрование как необязательное[15], для большинства клиентских реализаций (Firefox[16], Chrome, Safari, Opera, IE, Edge) возможно использование HTTP/2 только поверх TLS.
Хотя стандарт определяет шифрование как необязательное[15], для большинства клиентских реализаций (Firefox[16], Chrome, Safari, Opera, IE, Edge) возможно использование HTTP/2 только поверх TLS.
(47)(48) про это читал, на счет практически попробовать конечно шутка) что странно есть проекты где используются WSDL и SOAP, так в них есть упаковка в бинарные файлы для отправки на сервер. SOAP же использует RPC, и внешняя его библиотека работает даже в 7.7 релизе 1С.
(49)
бинарные
Месье не понимает, что значит "бинарные" в контексте HTTP/2? Рассказываю. В стародревние времена (1999 год - тоже стародревен) модемы умели только 7 бит (ну не совсем все, но еще встречались, т.к. для стародревних времен это было достаточно), поэтому все пакеты посылались в виде ASCII-символов. Т.е. "не бинарных" данных - укладывались в 5 бит. Времена поменялись, архаичные подходы много где выпиливаются, не обошло это и HTTP.
(50) Сергей, привет. так в нашем примере канал TCP шире не стал, мы же не говорим, что давайте передачу сделаем через квантовое шифрование. в этом случае все проделывается на localhost
и выглядит все это как "игра" форматами, я вот про это. Ну а вообще надо 1С пинать за отставание, в их адрес уже написал "бандероль". Они же в свою очередь, вот прямо сейчас только СЭД свой рекламируют.
и выглядит все это как "игра" форматами, я вот про это. Ну а вообще надо 1С пинать за отставание, в их адрес уже написал "бандероль". Они же в свою очередь, вот прямо сейчас только СЭД свой рекламируют.
(51)
так в нашем примере канал TCP шире не стал
Еще как стал. Раньше модем, теперь сетевая карта. Пропускная способность выросла в тысячи раз, пинг упал в сотни раз, ... Новые технологии перестали "юючить" пакеты, передавая свои ПЯТЬ бит, а стали передавать бинарник., как есть, обычно еще и сильно так запакованный.
(52) ....и так, получается следующее, запуск в 1C через:
Из наиболее удачного пример работы gRPC на JS.
Отредактируйте examples/protos/helloworld.proto и обновите его с помощью нового SayHelloAgain метода с теми же типами запросов и ответов:
Не забудьте сохранить файл!
Обновите и запустите приложение
Теперь у нас есть новое определение службы, но нам все еще нужно реализовать и вызвать новый метод в написанных человеком частях нашего примерного приложения.
Обновите сервер
В том же каталоге откройте greeter_server.js. Реализуйте новый метод следующим образом:
Обновите клиент
В том же каталоге откройте greeter_client.js. Вызовите новый метод следующим образом:
ссылка на материал
Скрипт = Новый ТекстовыйДокумент();
Скрипт.УстановитьТекст
(
"....какой то код на JS;"
);
Скрипт.Записать(КаталогВременныхФайлов()+"script.js", КодировкаТекста.ANSI);
WshShell = Новый COMОбъект("wscript.shell");
WshShell.Run("wscript.exe """+КаталогВременныхФайлов()+"script.js"" );
УдалитьФайлы(КаталогВременныхФайлов()+"script.js");
ПоказатьИз наиболее удачного пример работы gRPC на JS.
Отредактируйте examples/protos/helloworld.proto и обновите его с помощью нового SayHelloAgain метода с теми же типами запросов и ответов:
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
// Sends another greeting
rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
ПоказатьНе забудьте сохранить файл!
Обновите и запустите приложение
Теперь у нас есть новое определение службы, но нам все еще нужно реализовать и вызвать новый метод в написанных человеком частях нашего примерного приложения.
Обновите сервер
В том же каталоге откройте greeter_server.js. Реализуйте новый метод следующим образом:
function sayHello(call, callback) {
callback(null, {message: 'Hello ' + call.request.name});
}
function sayHelloAgain(call, callback) {
callback(null, {message: 'Hello again, ' + call.request.name});
}
function main() {
var server = new grpc.Server();
server.addService(hello_proto.Greeter.service,
{sayHello: sayHello, sayHelloAgain: sayHelloAgain});
server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), () => {
server.start();
});
}
ПоказатьОбновите клиент
В том же каталоге откройте greeter_client.js. Вызовите новый метод следующим образом:
function main() {
var client = new hello_proto.Greeter('localhost:50051',
grpc.credentials.createInsecure());
client.sayHello({name: 'you'}, function(err, response) {
console.log('Greeting:', response.message);
});
client.sayHelloAgain({name: 'you'}, function(err, response) {
console.log('Greeting:', response.message);
});
} Показатьссылка на материал
(54) рано)) пока еще разбираюсь с установкой gRPC на клиентской машине с ERP 1C под win10 и проверяю есть ли уже установка в ubuntu на стороне сервера. для этого понадобилось на винде установить для того чтобы PowerShell отработал команду npm install grpc ну и видимо еще запустить нужно запчасти от фреймверка гиперледжа npm i iroha-helpers.
(60) gRPС межсервисная штука, на любом из предложенных языков. т.е в нашем примере сервер на С++ лежит в ubunte которая в контейнере Docker (в настройках докер указан WSL2), а клиент на JS под Win10 и это варьировать можно как угодно в рамках допустимых языков. Hello_proto пример проверял на клиент и сервере с обоих сторон использован JS, все ок. сейчас вот затык не могу разобрать ошибка при указании "import" в скрипте, может кто знает что это за баг "SyntaxError: Cannot use import statement outside a module", без import скрипт норм работает и конектится в порт 50051.
(61) баг пофиксен обновлением ближайшего родительского файла package.json следующей записью:
Так же есть и другие варианты решения проблемы при использовании *.ts файлов в проекте ориентированном на Linux и поэтому при использовании в winwows возникают сложности.
{
"type": "module"}Так же есть и другие варианты решения проблемы при использовании *.ts файлов в проекте ориентированном на Linux и поэтому при использовании в winwows возникают сложности.
(22)
Спасибо за неожиданно высокую оценку моего скромного вклада, как и обещал - делюсь маленьким (но официальным!) лайфхаком Гугля: если строка поиска содержит (к примеру) "site:infostart.ru", то это ограничит выдачу результатов только этим сайтом.
То есть, эта ссылка была найдена по запросу: "gRPC site:infostart.ru", есть в результатах и другие упоминания gRPC, но решения вашего вопроса я среди них не нашел.
Удачи!
а хотя вот позже в платформах уже есть и про HTTP/2
Но gRPC - только в пожеланиях, причем довольно свежих:
Ребята из 1С сделайте поддержку GRPC протокола в платформе . В крупном интерпрайзе это уже почти стандарт, а платформа 1С не поддерживает протокол и непонятно когда будет поддерживать.
Спасибо за неожиданно высокую оценку моего скромного вклада, как и обещал - делюсь маленьким (но официальным!) лайфхаком Гугля: если строка поиска содержит (к примеру) "site:infostart.ru", то это ограничит выдачу результатов только этим сайтом.
То есть, эта ссылка была найдена по запросу: "gRPC site:infostart.ru", есть в результатах и другие упоминания gRPC, но решения вашего вопроса я среди них не нашел.
Удачи!
(10) блокчейн решает изначально две проблемы, это искажение данных умышленно или вследствие технических ошибок, второе это вынужденная передача данных через третьих лиц, это скорее из сферы информационной безопасности. ЭЦП явно не решает этих проблем, в данном случае мы можем использовать ключ подписи только для аутентификации. эцп не может решить задачу транспортировки документа из А в Б. Если разобрать глубже то цепочка поставок предполагает не только передачу документов, но и отслеживание вашего товара от производителя до потребителя. приведу пример текущего состояния провайдеров испытывающих DDOS атаки EDI сервисов, это существенно отражается на пользователях они сидят и ждут когда же документ придет к ним.
(26)
Зачем бизнес может хотеть прикрутить себе блокчейн, я знаю, правда смотрел другие источники с обоснованием.
Я спрашивал, именно, зачем он в приведённом в топике случае?
- Ты что, хочешь сказать? что я стрелять не умею?
- Нет, Томми. Я не говорил, что ты стрелять не умеешь. Я знаю, что ты стрелять не умеешь. А сказать я хотел то, что от этого куска ***на, что ты носишь в штанах, ...никакого толку нет.
- Нет, Томми. Я не говорил, что ты стрелять не умеешь. Я знаю, что ты стрелять не умеешь. А сказать я хотел то, что от этого куска ***на, что ты носишь в штанах, ...никакого толку нет.
Зачем бизнес может хотеть прикрутить себе блокчейн, я знаю, правда смотрел другие источники с обоснованием.
Я спрашивал, именно, зачем он в приведённом в топике случае?
(28) Для этого достаточно отправлять по электронной почте подписанные ЭЦП документы :) .
P.S. а необходимость роуминга между провайдерами ЭДО (отсутствие автоматического прозрачного прохождения ЭД к адресату) это явная недоработка начальной школы, медицинских учреждений, антикоррупционных органов и спорлото.
P.S. а необходимость роуминга между провайдерами ЭДО (отсутствие автоматического прозрачного прохождения ЭД к адресату) это явная недоработка начальной школы, медицинских учреждений, антикоррупционных органов и спорлото.
(29)хм. так, а почтовый сервер тоже и есть третье лицо, он же хранит сообщение пусть и бесплатно, наличие третьего узла всегда будет вызывать проблему безопасности. мало того так еще и два разных почтовых сервера может быть в этой схеме.
(31) свой равно централизованная система управления базой, которая будет подвержена атакам, сбоям, прочими отключениями света и так далее. внимательно смотрим на схему реестра, падение одной ноды ни как не отразится на работе всей системы, чего не скажешь про почтовый сервер который относится еще и к централизованному управлению без возможности реализовать этот процесс под управлением консенсуса. В общем в этом случае принимается только вариант, если почтовый сервер будет построен на распределенном реестре :)
(32) Не равно. Документы хранятся у источника документа и получателя документа. Почтовый сервер только транспорт, его падение делает временно недоступным ТОЛЬКО доставку документов.
Вот это и будет децентрализованная, независимая от внешних источников система.
Такая схема аналогична отображению реальной оффлайновой жизни в электронную форму.
Вот это и будет децентрализованная, независимая от внешних источников система.
Такая схема аналогична отображению реальной оффлайновой жизни в электронную форму.
(33) так эту проблему временной недоступности мы и у провайдеров сейчас наблюдаем, только это временно уже доходило до суток, а это равно срыву поставки товара и штрафу для дистрибьютера/производителя. систему с почтой мы применяем у ряда заказчиков но только где сроки доставки не имеют значения, это рассылка деклараций например и прочей "лабуды". появились боли ищем решения, все просто...
(37) для "обычных" организаций предполагается web api по схеме и им не нужна локальная нода, валидаторы сети корпорации их ресурсов достаточно, валидаторами могут выступить и текущие провайдеры, но судя по их заработку на роуминге им это вряд ли интересно, проблему может только решить сообщество заинтересованное. в чате телеги международного сообщества одного из фреймверков (Fabric) сейчас ~18к участников, и в более новой версии которую представляем ~ 500 участников.
(39) это в интересах корпораций, они же экономят на тарифах провайдеров, средний дистр. тратит в год 150-200 тр., у корпораций эта сумма значительно выше. да и стоит задуматься, что когда запускали всю эту кухню с электронными документами то обещали дешевле чем на бумаге, а теперь пакет документов стоит уже 15 р. в среднем, так дешевле вернутся обратно на доставку через экспедитора в бумажном виде.
- пользуйся! Прям на эфире, который тоже можно сделать "приватным" в "тестовом" контуре и ограничить приватных "майнеров" 1% CPU.
(40) отличительная особенность нового фреймверка в нем нет смарт-контрактов для управления активами, но управлять ими можно и значительно легко и просто. так же есть управление ролями участников, еще не мало важно новый консенсус в котором можно установить для каждого бизнес-процесса свои правила, т.е это все уже готовое нежели писать сложный и громоздкий смарт-контракт на solidity. про транзакции можно еще отметить, что они атомарные, т.е сразу выполняется пакет который по TPS переваливает за 1 млн./сек.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
