"Система взаимодействия 1С" Установка локально. Развертывание S3 хранилища на своих мощностях. Перехват сообщений пользователей и не только.

19.03.24

Интеграция - Внешние источники данных

В далеком 2022 году хотел выступить на осеннем Инфостарте. Весь материал я подготовил, все по сто раз перепроверил и уже на финальной стадии, где-то в конце сентября, что-то пошло не так. На Инфостарт я не попал. И материал "лег в стол". Но вот я вспомнил о нем и решил выложить, вдруг кому пригодится. Тут и про то, как самому установить СВ на своем железе, и о том, как интегрироваться с не 1С системами. Короче, не зря же я все это дела. Может, кто воспользуется. Тут описано: 1. Установка сервера системы взаимодействия локально. 2. Установка хранилища S3 локально (для сервера взаимодействия) 3. Программный перехват сообщений пользователей 4. Интеграции по средствам WS и HTPP с не 1С системами (применительно к системе взаимодействия)
Система взаимодействия 1С (Установка и настройка)
Сервер системы взаимодействия
Скачиваем дистрибутив (не забываем про версии!)
Внезапно… Запускаем установку J
Установка завершена. J
 
Установим JDK
Its.ru
Liberica 11 Full JDK
11.0.15+10
Liberica 11 Full JDK (64-bit) для Windows
Короче, ставим последнюю версию JDK
Запускаем установку. Попытка номер 2,3,4… J)
В итоге мы получаем… папку с дистрибутивом J
Инициализация
Теперь необходимо инициализировать инстансы сервер взаимодействия (cs), hazelcast и elasticsearch. Для этого запускаем командную строку и в ней поочередно выполняем
ring cs instance create --dir "C:\Program Files\1C\1CE\components\1c-cs1"
ring hazelcast instance create --dir "C:\Program Files\1C\1CE\components\1c-hc1"
ring elasticsearch instance create --dir "C:\Program Files\1C\1CE\components\1c-es1"
после чего у нас в папке C:\Program Files\1C\1CE\components появятся новые папки с конфигурационными файлами cs, hazelcast и elasticsearch
Запускаем службы
Теперь необходимо запустить службы cs, hazelcast и elasticsearch. Для этого в командной строке выполняем:
ring hazelcast --instance 1c-hc1 service create
ring elasticsearch --instance 1c-es1 service create
ring cs --instance 1c-cs1 service create
Устанавливаем PG SQL
Настраиваем PG SQL
Запускаем pgAdmin
Создаем пользователя cs_user с правами создания БД
Создаем новую БД cs_db владельцем указываем cs_user
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Пользователь
БД
Установка расширения
Регистрируем БД PG SQL на сервере взаимодействия
Здесь я воспользовался ISE
ring cs --instance <cs_instance> jdbc pools --name common set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
ring cs --instance <cs_instance> jdbc pools --name common set-params --username <db_user>
ring cs --instance <cs_instance> jdbc pools --name common set-params --password <db_user_pwd>
ring cs --instance <cs_instance> jdbc pools --name privileged set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
ring cs --instance <cs_instance> jdbc pools --name privileged set-params --username <db_user>
ring cs --instance <cs_instance> jdbc pools --name privileged set-params --password <db_user_pwd>
<cs_instance> R09; название экземпляра сервера взаимодействия.
`db_user- имя пользователя, от имени которого сервер взаимодействия подключается к СУБД.
`db_user_pwd - пароль этого пользователя.
Настройка WebSocket
Здесь я воспользовался ISE
ring cs --instance <cs_instance> websocket set-params --hostname <cs_host>
ring cs --instance <cs_instance> websocket set-params --port <cs_port>
<cs_host> - имя или IP-адрес компьютера, на котором установлен сервер взаимодействия и к которому будет подключаться клиентское приложение системы взаимодействия (система «1С:Предприятие»).
<cs_port> - сетевой порт, который будет использован для подключения к серверу взаимодействия клиентского приложения системы взаимодействия (системы «1С:Предприятие»).
Создание структур для СВ
Выполняем curl запрос через командную строку для окончательной регистрации
curl -Sf -X POST -H "Content-Type: application/json" -d "{ \"url\" : \"jdbc:postgresql://localhost:5432/cs_db\", \"username\" : \«cs_user\", \"password\" : \"1256\", \"enabled\" : true }" -u user:1111 http://localhost:8087/admin/bucket_server
Все готово!!!
Все готово
Сервер настроен, можно регистрировать БД
Подключим S3 хранилище
Скачиваем minio и Nssm
https://min.io скачиваем версию для windows x64
После чего выполняем в командной строке:
nssm install MINIO
Поднимаем службу и настраиваем
Поднимаем службу
И далее устанавливаем переменные через командную строку
setx MINIO_ROOT_USER minio
setx MINIO_ROOT_PASSWORD ******
Подключаем СВ к minio
Необходимо выполнить curl запрос в Windows PowerShell
ВООБЩЕ СОВСЕМ ВСЕ ГОТОВО!!!
Ура, ура, ура!!!
1С-ная часть
Регистрация приложения на сервере взаимодействия
Совместное использование приложений (только для внеконтекстных обсуждений или если вы обмен настроили по ссылке)
Программа «1С:Предприятие – оповещение о запуске» (только ручная установка) Ошибка 10234654
Регистрация на сервере взаимодействия
Для этого необходимо скачать с сайта its.1c.ru обработку CollaborationSystemRegister.epf
Совместное использование приложений
Открываем «Управление системой взаимодействия»
Жмем «Совместное использование приложений»
Отмечаем галочками нужные БД
Выбираем, как сопоставлять пользователей
Если нужно, отмечаем «Сопоставление предметных  обсуждений» (синхронизация только по ссылке объекта – так что подойдет не каждому)
Столкнувшись с этой проблемой, я решил напилить обмен ws с использованием расширения
«1С:Предприятие – оповещение о запуске»
Заходим в настройки
Устанавливаем «1С:Предприятие – оповещения и запуск»
Перезапускаемся и, вот уже при закрытой 1С, вы получаете оповещения о новом сообщении
Проблема тут в том, что пакетно этот дистрибутив установить нельзя.
Система взаимодействия 1С (Использование для нужд проекта)
Общение внутри 1С
Первая поставленная задача -  автозамена некоего прокси пользователя на конкретных людей
Есть бизнес-роли «Менеджер ВЭД» и «сотрудник ФУ». В каждом контракте это некий конкретный человек (люди)
Пользователь вводит сообщение и в качестве адресата указывает роль МенеджерВЭД (ManagerIM) или ФУ (FinancialDepartment), а сообщение направляется конкретным людям. Каким – вычислим по контракту.
Перехват сообщения
В модуле приложения в ПриНачалеРаботыСистемы() подключаем обработчик
ПодключитьОбработчикПослеОтправкиСообщения()
Эта единственная точка, где мы можем внедриться в процесс отправки сообщения.
Собираем структуру из отправленного сообщения
Собираем в структуру всю информацию об отправленном сообщении
Отдельным массивом складываем получателей
Передаем управление на сервер
Определяем, что нужно сделать
Ищем прокси пользователей и, в зависимости от того, что нашли, выполняем те или иные действия
Проверяем, участвует ли этот вид объекта в обмене
Если нашли прокси пользователя, то переотправляем сообщение
Переотправка сообщения
Создаем новое сообщение в той же беседе и заполняем его полностью данными из структуры, за исключением получателей - они у нас теперь реальные
Исходное сообщение мы при этом удаляем
Если нам не удалось выполнить задуманное
Если что-то пошло не так, и нам не удалось переадресовать сообщение, то информируем об этом пользователя
Общение между двумя ИС на 1С
Выложу отдельной маленькой статьей. Нашел изящное решение, хоть и не универсальное.
Добавление не1С-системы. SOAP сервис
Менеджеры ВЭД работают в 1С. Сотрудники логистики в самописном приложении не на 1C. Хотят коммуницировать. Причем, в привязке к конкретным объектам (элементы конкретного справочника и конкретные документы). Возникла потребность в интеграции. У коллег была возможность интеграции только через SOAP
Пользователь 1С отправляет сообщение
Используя структуру, собранную из нашего сообщения, заполняем параметры WS и отправляем сообщение
Автор сообщения и объект контекста передаются, как ИД, о которых знают обе стороны
Если сообщение не ушло по каким-то причинам, то информируем об этом пользователя
Пользователь не 1С отправляет сообщение
Разбираем XDTO
Получаем реальный объект
По объекту получаем его обсуждение
Пользователя в данном случае не конкретизируем - ставим прокси
Если по какой-то причине не удалось создать сообщение - возвращаем ошибку
Добавление не1С-системы. REST сервис
Далее возникла потребность контекстной коммуникации с поставщиками (люди за пределами компании).  У поставщиков есть доступ к нашему порталу.  Придется с ним интегрироваться. Разработчики изъявили желание общаться по REST API.
Пользователь 1С отправляет сообщение
Используя структуру, собранную из нашего сообщения, формируем JSON и вызываем REST API
Автора сообщения передаем в виде почты, объекты контекста передаются, как ИД, о котором знают обе стороны
Если сообщение не ушло по каким-то причинам, то информируем об этом пользователя
Пользователь не 1С отправляет сообщение
Разбираем JSON
Получаем реальный объект
По объекту получаем его обсуждение
Пользователя в данном случае ставим прокси, а в тексте сообщения конкретизируем, приводя его email
Если по какой-то причине не удалось создать сообщение - возвращаем ошибку
Добавление возможности обмена файлами
Выбор варианта реализации
Реализация хранения «все в одном месте»
Реализация на стороне 1С
Реализация на стороне внешней системы
Выбор варианта реализации
Каждый хранит файлы у себя и передаем файлы в виде двоичных данных. Жрем диски. L
Каждый хранит файлы у себя и обмениваемся ссылками на место хранения. Хаос и бардак. L
Храним все в одном месте на стороне Сервера взаимодействия в S3 хранилище. Наш выбор.                 
Реализация хранения «все в одном месте». Отправка из 1С.
Пользователь прикрепляет файл
Файл средствами СВ сохраняется в S3, а информация фиксируется в PG SQL
1С выполняет HTTP запрос к сайту, прикладывая ссылки на файлы в S3 хранилище
Внешняя ИС фиксирует информацию у себя и, при необходимости, читает напрямую из S3
Реализация на стороне 1C
Запрос к PG SQL для получения имен прикреплений
Разбор запроса
conversation_message – Обращаемся к таблице сообщений и находим наше по идентификатору беседы и сообщения
Далее производим внутреннее соединение с таблицей attachment – прикрепления, для получения ID файлов и реальных имен файлов
Далее производим внутреннее соединение с stored_file – описание файлов, для получения имени и каталога хранения прикреплений в S3 хранилище
Реализация на стороне ПП
Магия не на 1С.
Определяем статус сообщения (прикрепления во временном хранилище или уже в s3)
После чего переходим к скачиванию файла.
Магия не на 1С. ч.2.
Сервисный слой обращения к клиенту minio для скачивания файла
Магия не на 1С. ч.3
Обращение к клиенту minio для скачивания файла из файлового хранилища
Реализация хранения «все в одном месте». Отправка из «не1С-системы»
Пользователь портала начинает прикреплять файл
Портал делает HTTP запрос к Web серверу 1С и передает сообщение и имена и расширения файлов, которые планирует прикрепить пользователь.
Сервер 1С создает новое сообщение в СВ и добавляет к нему пустые прикрепления. После чего прямым запросом считывает адреса пустых прикреплений и возвращает их с ответом на сайт
Сайт производит прямую запись в S3 хранилище, замещая пустые файлы файлами пользователя
Реализация на стороне 1C
Создаем сообщение с прикреплениями-пустышками
Получаем их имена и месторасположение, как и в первом случае
Сообщение с прикреплениями-пустышками
Получение ссылок на файлы и помещение в ответ
Реализация на стороне ПП
Фрагмент 1
Сохранение сообщения в БД VP
Отправка сообщения в ИС 1С с получением имен пустых файлов
Запись в файлы пустышки реальных файлов
Удаление временных файлов
Фрагмент 2
Перебор временных файлов сообщения и копирование их на место пустышек
Изменение статуса сообщения на файлы отправлены
Фрагмент 3
Перебор временных файлов и их удаление
Спасибо!

Установка сервера системы взаимодействия локально. Установка хранилища S3 локально (для сервера взаимодействия) Программный перехват сообщений пользователей

См. также

Экстрактор данных 1С в BI - выгрузка данных из 1С в BI-аналитику

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

15.11.2022    15025    12    SQV0    47    

31

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22931    19    1    

22

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9465    9    8    

11

Перенос данных из Парус 7.хх в ЗГУ ред.3

Внешние источники данных Зарплата Бюджетный учет Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

24000 руб.

24.04.2017    49121    97    163    

87

Перенос начальных остатков из Парус 7.71 в БГУ

Внешние источники данных Взаиморасчеты Учет ОС и НМА Логистика, склад и ТМЦ Бюджетный учет Программист Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 2.0 1С:Бухгалтерия государственного учреждения Государственные, бюджетные структуры Россия Бюджетный учет Абонемент ($m)

Перенос словарей и начальных остатков из ПП Парус-Бухгалтерия Бюджет 7.71 в 1Сv8 БГУ2. Заполнение словарей и документов по вводу начальных остатков. Не требуется установка ПП Парус7. Возможна дозагрузка. Позволит автоматически ввести основные данные в программу для начала работы. 

10 стартмани

08.12.2011    81914    4    Skaredov    124    

147

Загрузка в БГУ из УРМ "Криста"

Внешние источники данных Банковские операции Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия государственного учреждения Россия Бухгалтерский учет Платные (руб)

Обработки для загрузки данных из УРМ "Криста" в бухгалтерию государственного учреждения редакция 2.0. Есть Демо доступ на вкладке Бесплатные файлы на 1 месяц со дня получения демонстрационного ключа регистрации. Поддерживает ПО "Web-исполнение" от НПО "Криста".

4800 руб.

19.06.2013    38887    136    102    

30
Оставьте свое сообщение