Общий принцип работы
Взаимодействие 1С и jar - это клиент-серверное взаимодействие по протоколу HTTP. В качестве клиента выступает 1С, а в качестве сервера выступает jar.
На стороне 1С вы храните двоичные данные вашего jar, и в момент икс(когда вам необходимо взаимодействие с Java), используя библиотека JКоннектор, передаете эти двоичные данные, библиотека все делает и вы начинаете обращаться к методам своего jar.
ПОНЯТИЯ:
(которые используются в описании и которые необходимо понимать ;-) )
- jc1c - это библиотека используя которую необходимо писать ваш скрипт на Java(jar), о том как это сделать читайте на GitHub.
- JКоннектор - это библиотека которую необходимо использовать на стороне 1С, для взаимодействия c вашим скриптом написанным на Java.
ВАЖНО.
Библиотека JКоннектор - это просто удобная обертка для выполнения HTTP запросов к вашему jar, можете делать это и сами, но не стоит...
Написание jar
О том, как писать свой скрипт на Java для того, чтобы было успешное взаимодействие 1С и Java, читайте на Github, там я описал принцип работы работы и взаимодействия со стороны Java.
Ссылка, для ознакомления с проектом - https://github.com/kaliuzhnyi/jc1c
А вот и простой пример как использовать этот проект на стороне Java - https://github.com/kaliuzhnyi/jc1c-examples
Компоненты:
Это компоненты написанные при использовании jc1c для работы через JКоннектор.
Данные компоненты также можно использовать как полноценный и рабочий пример, для написания своих скриптов.
Данные компоненты включены в поставку. Также в поставке присутствуют внешние обработки с примерами использования и работы с данными компонентами.
- jc1c-qr - компонента на основе jc1c для создания и чтения qr кодов;
- jc1c-barcode - компонента на основе jc1c для создания и чтения штрихкодов;
- jc1c-pdf - компонента на основе jc1c для работы с PDF документами, компонента позволяет: преобразовать PDF документа в изображения(одна страница - одно изображение), извлечь текст из PDF документа, преобразовать PDF документ в HTML документ;
Описание использования методов JКоннектор, на стороне 1С
Порядок ваших действий:
- Следуя инструкции создаете и скомпилируете jar файл с вашей программой;
- Добавляете в 1С двоичные данные этого jar файла, например в макет.
- В 1С вызываем метод из библиотеки JКоннектор, и инициализируйте коннектор, вызовете необходимый метод, и остановите работу коннектора.
Пример использования (генерация QR-кода):
// Инициализируем сам объект коннектора
ОбъектКоннектора = JКоннектор.Инициализировать(Обработки.JКоннекторQR.ПолучитьМакет("jc1c_qr"));
// Обратите внимание на этот метод. В нем мы указываем путь к
// SDK которая должна быть установлена на сервере.
// Чтобы не указывать этот параметр и не вызывать этот метод, на сервере необходимо настроить Java,
// это очень просто. Просто загуглите "настроить JAVA_HOME", вот например первый попавший сайт
// который вам в этом поможет - https://coderoad.ru/52511778/%D0%9A%D0%B0%D0%BA-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-OpenJDK-11-%D0%BD%D0%B0-Windows
JКоннектор.УстановитьSDK(ОбъектКоннектора, "C:\Java\jdk-17\bin\java.exe");
// Запускаем коннектор, в этот момент происходит создание файла и т.д.
JКоннектор.Запустить(ОбъектКоннектора);
Если Не ОбъектКоннектора.РезультатЗапуска.Успешно Тогда
ВызватьИсключение "JКоннектор: не удалось запустить.";
КонецЕсли;
// Вызываем нужный нам метод, который мы описали в нашем jar.
ДанныеДляКодированияQR = "https://github.com/kaliuzhnyi/jc1c";
ФорматQR= "png";
ШиринаQR= 500;
РезультатМетода = JКоннектор.ВызватьМетод(ОбъектКоннектора, "create", ДанныеДляКодированияQR, ФорматQR, ШиринаQR);
// Если не удалось выполнить метод то прерываемся и если мы прерываемся
// значит дальше ничего не будем делать с коннектором,
// а если ничего не будем делать с коннектором значит ОБЯЗАТЕЛЬНО останавливаем коннектор.
Если РезультатМетода = Неопределено Тогда
JКоннектор.Остановить(ОбъектКоннектора);
ВызватьИсключение "JКоннектор: не удалось выполнить метод.";
КонецЕсли;
// Полачаем и выводим изображение нашего QR-кода
ИзображениеQR = ПоместитьВоВременноеХранилище(Base64Значение(РезультатМетода));
// ОБЯЗАТЕЛЬНО! Останавливаем работу коннектора,
// З.Ы. Останавливать работу коннектора необязательно после каждого вызова вашего метода в jar.
// Например - тут вы можете еще вызвать еще 100 раз тот же метода или другие методы, если вы их описывали в jar.
// И вот только потом завершать работу коннектора.
//
// Если вы не хотите сами останавливать коннектор, тогда при инициализации можно задать параметр,
// например 60 секунд и тогда коннектор сам выключится при бездействии 60 и более секунду,
// таким образом, чтобы не вызывать тут метод - JКоннектор.Остановить(), необходимо в самом начале делать
// инициализацию коннектора следующим образам:
// ОбъектКоннектора = JКоннектор.Инициализировать(Обработки.JКоннекторQR.ПолучитьМакет("jc1c_qr"),,,, 60)
//
JКоннектор.Остановить(ОбъектКоннектора);
Видео
Для большего понимания того как это все работает настоятельно рекомендую посмотреть несколько коротких видео-уроков.
- JКоннектор(jc1c), создание компоненты на стороне JAVA
- JКоннектор(jc1c), взаимодействие с компонентой на стороне 1С
Поставка
В комплект поставки входит конфигурация, в которой есть одна подсистема JКоннектор, собственно эту подсистему вам и нужно внедрять в свою информационную бузу.
Совместимость
Платформа:
- должна работать на всех релизах 8.3
- тестировалась на релизах:
- 8.3.16.1224
Конфигурации:
- Не имеет значения