Работа с хранилищем из другой версии конфигуратора

23.05.22

Разработка - Групповая разработка (Git, хранилище)

Хранилище и конфигуратор на разных версиях платформы. Как быть?

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
repo_1c_broker.js
.js 2,42Kb
4
4 Скачать (2 SM) Купить за 2 150 руб.

Требовалось организовать доступ к внутреннему хранилищу с сервера заказчика. Завернули tcp в http и выкинули наружу. Но при попытке подключиться поняли, что версии у нас и у них разные, а разработчики платформы 1С решили не заморачиваться с версиями и просто запретили подключаться к хранилищу с любой другой версии, кроме той, что у хранилища.

Проведя анализ трафика через WireShark, я заметил, что главное отличие в пакетах на разных платформах, это передача в xml версии платформы конфигуратора в запросе и версии платформы хранилища в ответе:

<?xml version="1.0" encoding="UTF-8"?>
<crs:call xmlns:crs="http://v8.1c.ru/8.2/crs" alias="repo/test.cfe" name="DevDepotAdmin_openDevDepot" version="8.3.18.1334">
	<crs:params>
		<crs:alias value="repo/test.cfe"/>
		<crs:convert value="false"/>
	</crs:params>
</crs:call>

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

В итоге я смог подключить конфигурацию ERP/УХ к серверу хранилища (версия 8.3.20.1789) через конфигуратор (версия 8.3.21.1302), т.е. от нового к старому. Время подключения если и поменялось, то незаметно (замеры не делал).

Также тестировал и от старого (версия 8.3.18.1334) к новому (версия 8.3.20.1789), всё прошло гладко.

Захват объектов, помещение, получение и даже администрирование работает без проблем.

Преобразование и пересылка пакетов происходит "на лету" и не жрёт ОЗУ.

Для трансформации пакетов требуется запустить сервис, написанный на Node.js.

Шаги:

1. В файле repo_1c_broker.js требуется указать настройки сервиса:

const service_port = 8000 // порт сервиса трансформации пакетов
const repo_host = 'my.server.ru' // сервер хранилища конфигурации (может быть IP)
const repo_port = '8880' // порт хранилища конфигурации
const repo_version = '8.3.20.1789' // версия хранилища конфигурации

2. Запустить сервис:

node.exe repo_1c_broker.js

* node.exe - это исполняемый файл интерпретатора Node.js. Установить можно отсюда.

3. При подключении к хранилищу подменить адрес на http://localhost:8000/, если вы запустили сервис транформации на компьютере с конфигуратором, либо http://адрес_машины_с_сервисом:8000/ если в другом месте.

Например:

Если раньше вы подключались к хранилищу по адресу:

http://192.168.100.2/repo/repo.1ccr/proj01

то теперь надо так:

http://localhost:8000/repo/repo.1ccr/proj01

 

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

хранилище платформа node.js конфигуратор разные версии особенность платформы совместная разработка удалённый доступ

См. также

1С-программирование DevOps и автоматизация разработки Групповая разработка (Git, хранилище) DevOps для 1С Программист Стажер Платформа 1С v8.3 Платные (руб)

Использования систем контроля версий — стандарт современной разработки. На курсе научимся использованию Хранилища 1С и GIT при разработке на 1С:Предприятие 8. Разберем подходы и приемы коллективной разработки, научимся самостоятельно настраивать системы и ориентироваться в них.

4900 руб.

29.06.2022    11405    93    4    

124

Групповая разработка (Git, хранилище) Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Когда в хранилище одновременно разрабатывают несколько команд, сортировка сделанного и несделанного при формировании релиза и проведение code review по задачам превращаются в непроходимый квест. В таких случаях нужен бранчинг. Расскажем об опыте перехода на новую схему хранения кода для ИТ-департамента.

23.09.2024    1940    kraynev-navi    2    

23

Групповая разработка (Git, хранилище) Программист Бесплатно (free)

Называть Git новой технологией – уже смешно, но для многих 1С-ников это действительно «новое и неизведанное». Расскажем о плюсах и минусах двух главных систем контроля версий в мире 1С: Git и хранилища.

17.09.2024    5432    Golovanoff    66    

24

Групповая разработка (Git, хранилище) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Во многих командах незаслуженно забывают о том, что в базе меняются расширения (как от вендора, так и собственные) и внешние отчеты и обработки. Вплоть до того, что релиз происходит каждый день – меняются печатные формы, отчеты, обработки. Расскажем о том, как выгружать в Git не только изменения конфигурации рабочего контура, но и файлы внешних обработок и расширений.

05.09.2024    1658    ardn    12    

14

EDT Групповая разработка (Git, хранилище) Программист Платформа 1С v8.3 Бесплатно (free)

Заказчики любят EDT+Git за прозрачность и контроль качества. А у разработчиков есть две основные причины не любить EDT – это тормоза и глюки. Расскажем о том, что нужно учесть команде при переходе на EDT+Git.

14.08.2024    6937    lekot    30    

7

Групповая разработка (Git, хранилище) Программист Платформа 1С v8.3 Бесплатно (free)

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

05.08.2024    3335    sinichenko_alex    16    

24

Групповая разработка (Git, хранилище) Программист Руководитель проекта Стажер Бесплатно (free)

Про изменения и новинки в агрегаторе открытых проектов OpenYellow, которые появились с момента его создания: про портал, Github и Telegram

15.07.2024    2817    bayselonarrend    8    

24

Групповая разработка (Git, хранилище) Программист Стажер Бесплатно (free)

О проблемах новых 1С-проектов в общем океане открытого программного обеспечения.

07.07.2024    3481    bayselonarrend    57    

37
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 794 23.05.22 18:16 Сейчас в теме
За исследование +
А вот про надежность данного подхода можно только гадать. Т. к. файл хранилища по своей сути аналогичен файловой базе. И какая стрктура будет соответствовать своей платформе - знает только 1с.
2. curdate 52 01.11.22 18:34 Сейчас в теме
Похоже, что метод работает только для http доступа к хранилищу.
А мне понадобился прокси к tcp хранилищу, и обработка не взлетела. А как работает js скрипт и как его перепилить для tcp - пока не понял.
3. frutty 123 02.11.22 10:30 Сейчас в теме
(2)
Похоже, что метод работает только для http доступа к хранилищу.
А мне понадобился прокси к tcp хранилищу, и обработка не взлетела. А как работает js скрипт и как его перепилить для tcp - пока не понял.

а почему нельзя "параллельно" сделать и http версию хранилища? по факту это просто "надстройка" над tcp. Но вы правы, скрипт работает только с http протоколом.
4. Garykom 17 08.05.23 03:57 Сейчас в теме
1. Берем OpenResty (nginx + lua) и
https://github.com/ovcharenko-di/crserver-filter

2. Добавляем
-- замена версии
if req then
req = ngx.re.gsub(req, 'version="8.3.23.1688"', 'version="8.3.22.1709"')
end
ngx.req.set_body_data(req)

3. Увеличиваем таймауты и буфер чтобы даже ERP УХ влезла

Профит!
Оставьте свое сообщение