JКоннектор (jc1c), Java

04.10.21

Разработка - Инструментарий разработчика

Приветствую коллеги! Данная библиотека призвана упростить и настроить быстрое и простое взаимодействия 1С и вашего скрипта на Java, далее по тексту просто - jar.

Файлы

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

Наименование Скачано Купить файл
JКоннектор (jc1c)
.cf 7,62Mb ver:1.0.7
6 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Общий принцип работы

Взаимодействие  и 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С

Порядок ваших действий:

  1. Следуя инструкции создаете и скомпилируете jar файл с вашей программой;
  2. Добавляете в 1С двоичные данные этого jar файла, например в макет.
  3. В 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Коннектор.Остановить(ОбъектКоннектора);

 

Видео

Для большего понимания того как это все работает настоятельно рекомендую посмотреть несколько коротких видео-уроков.

  1. JКоннектор(jc1c), создание компоненты на стороне JAVA
  2. JКоннектор(jc1c), взаимодействие с компонентой на стороне 1С

 

Поставка

В комплект поставки входит конфигурация, в которой есть одна подсистема JКоннектор, собственно эту подсистему вам и нужно внедрять в свою информационную бузу.

Совместимость

Платформа:

  • должна работать на всех релизах 8.3
  • тестировалась на релизах:
    • 8.3.16.1224

Конфигурации:

  • Не имеет значения

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    223346    1216    415    

1063

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

14400 руб.

20.08.2024    46081    252    129    

233

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

9900 руб.

25.08.2025    19344    46    7    

54

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Библиотека стандартных подсистем Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    28608    76    30    

101

Инструментарий разработчика Программист 1С v8.3 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9500 руб.

17.05.2024    40650    148    57    

184

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

16000 руб.

10.11.2023    20223    78    39    

92

Инструментарий разработчика Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

6000 руб.

07.02.2018    109124    250    100    

314
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. nbelyaev 838 04.10.21 12:41 Сейчас в теме
Скажите, пожалуйста, зачем Вам кастомные аннотации? Я наверное пропустил место, где Вы работаете с рефлексией, но зато в билдере JServer явно нужно указывать класс хэндлера.

В целом, рекомендую взглянуть на Spring Web, Можно много чего сделать проще с помощью этого фреймворка.

Тем не менее спасибо за то, что расшарили свое решение!
2. kaliuzhnyi 136 04.10.21 12:56 Сейчас в теме
(1) Добрый день. Спасибо за подсказку, Spring потехоньку изучаю.
По поводу аннотаций:
- в видео я не показывал как устроен класс JServer и другие, видео больше для 1С-ников которым интересна Java(но знания пока на минимуме), отчасти и наверное и меня пока можно к таким отнести ;)
- аннотация @JHandlerControllers на данном этапе пока пока не имеет назначения, но есть планы на будущее.
- а вот аннотация @JHandler важна именно по ней и происходит поиск методов, таким образам в классе(помеченным аннотаций @JHandlerControllers) может быть множество методов, но вызвать из 1с можно только методы помеченный аннотацией @JHandler.
- рефлексия происходит в классе JContextHandler
3. nbelyaev 838 04.10.21 13:45 Сейчас в теме
(2) Спасибо за ответ! Удачи в изучении!
4. pashamak 365 05.10.21 09:50 Сейчас в теме
5. masterb 64 12.11.24 04:27 Сейчас в теме
Решил было попробовать, генерация QR-кода. Linux.

При первом вызове, когда проверяется существование java, в функции
ВыполнитьСкрипт
процедура
ЗапуститьПриложение(СтрокаКоманды,, ОжидатьЗавершения, КодВозврата);
не работает, файл не создается но если выполнить команду в консоле:
LANGUAGE=UTF8 java --version > /tmp/v8_Mytabq_9.stdout.tmp

то файл создается нормально.
Убрал этот код:
	
Если ЭтоLinux() Тогда
	СтрокаКоманды = "LANGUAGE=" + КодировкаТекста.UTF8 + " " + СтрокаКоманды;
КонецЕсли;

и заработало. Буду пользоваться.
6. masterb 64 25.12.24 17:04 Сейчас в теме
В процедуре Пауза() общего модуля JКоннектор на linux выполняю команду sleep иначе не работает.
Для отправки сообщения требуется регистрация/авторизация