gifts2017

J1C - Java API для 1С:Предприятие 7.7

Опубликовал gildebrand (gildebrand) в раздел Обмен - Обмен с другими системами

J1C - это реализация программного API на JAVA к данным на платформе 1C:Предприятие v7.7. J1C позволяет, как прочитать данные из системы, так и изменять (создавать, удалять и изменять объекты, проводить документы и т.п.). Использование J1C возможно одновременно с 1С:Предприятием, так как J1C не нарушает работу 1С:Предприятия (используются те же механизмы работы с данными, что и само 1С:Предприятие).

С точки зрения реализации, J1C - это JAVA классы, реализующие функциональность 1C:Предприятия:

  • J1C работает с данными, так же как и само 1С:Предприятие: создает номера объектов согласно настройкам в метаданных, манипуляция с данными сопровождается по такому же алгоритму блокировок, что и у самой 1С и это позволяет корректно работать J1C одновременно с клиентами использующими 1С:Предприятие
  • Да, J1C может проводить документы. Алгоритм проведения отрабатывает особенности этого процесса: блокировка в нужной последовательности необходимых таблиц, создание по родному алгоритму внутренних идентификаторов, учитываются все особенности при проведении - изменение данных графов отбора, подчиненных документов и т.п. Так же, как и в 1С, программисту необходим только реализовать логику проведения (модуля проведения), всю же техническую работу по записи данных J1C берет на себя
  • Доступ к метаданным конфигурации, что позволяет создавать универсальный код, работающий на любой конфигурации
  • Для того, что бы программистам 1С было легче ориентироваться в API, было решено сделать классы максимально "похожими" на объекты самой платформы (справочники, документы, константы и т.д.)

Кроме того, J1C реализует дополнительный функционал:

  • прямой доступ, в нотации 1CPP, к данным
  • объекты J1C представлены тремя сущностями (аналогично 1С:8*): ссылки, объекты и менеджеры. Смысл такого разделения такой же что и в 8-ке.
  • Более полный доступ к метаданным конфигурации - теперь разработчику доступна информация, которая в самой платформе скрыта. Это касается внутренних идентификаторов, предопределенных объектов и др. Т.о. теперь доступна возможность реализовывать собственную логику работы с 1С, отличной от J1C
  • Теперь J1C можно использовать, как сервер приложения. Это можно реализовать, к примеру, через WebServices, где запускается один экземпляр сервиса обрабатывающий запросы клиентов. Т.о., в отличие от технологии доступа через OLE, на одной машине (сервере) можно обрабатывать существенно большее количество запросов, чем через OLE, при которой можно запустить максимум 3-5 процессов 1С:Предприятия на одной машине

API работает на любой конфигурации. Для подключения J1C достаточно указать каталог базы данных. Есть возможность подключение к базе данных, как через учетную запись SQL сервера, которой пользуется 1С:Предприятие, так и подключение через настраиваемые учетные записи. Причем первый вариант подключения не требует дополнительных настроек API - J1C сама может "понять" необходимую информацию.
В настоящее время не реализован функционал компоненты расчет, а так же некоторые функциональности компонент бухгалтерии и оперативного учета (проект развивается и еще не все реализовано.)

Скачать файлы

Наименование Файл Версия Размер
j1c-0.0.79.jar 239
.jar 2,31Mb
18.09.11
239
.jar 2,31Mb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Константин Исиченко (IsiKosta) 07.07.10 04:21
У семерки открылось второе дыхание ;)
2. blackoperator (fastwriter) 07.07.10 08:52
Вещь полезная, так как у 7.7 и 8.х разные рыночные ниши.

Правда, боюсь, что агрессивный маркетинг самой 1С приведет к тому что 7.7 окончательно потеряет популярность, что скажется на популярности данной разработки. Но будем надеяться, что этого не произойдет.
3. Вячеслав Кадацкий (marsohod) 07.07.10 09:17
4. Трактор Трактор (Трактор) 07.07.10 10:39
Это бы да лет 5 назад. Была бы бомба.
5. bulpi bulpi (bulpi) 07.07.10 16:03
Умные люди! ( В частности, автор) А объясните не настолько умным людям, ЗАЧЕМ это? Где, к примеру, применить?
6. gildebrand (gildebrand) 07.07.10 16:06
(5) http://j1c.ru/j1c/node/1 Там же есть и пример доступа через Web
7. bulpi bulpi (bulpi) 07.07.10 17:45
(6)
Спасибо Крутизну проета оценил :D Потрясен масштабами и бесплатностью :D
8. Антон Дилёв (Antoska) 08.07.10 12:45
Не смотрел пока, но... Правильно ли я понял, что используя J1C можно реализовать логику проведения документа отличную от указанной в конфигурации? Если так, то об этом надо предупреждать и я бы рекомендовал пользоватся встроенными функциями проведения документов. А то ведь можно и ошибиться реализовывая алгоритм проведения отличный от описанного в модуле проведения документа и к чему это может привести пока не ясно...
Желаю успехов ;) и жду версию для фаловой базы.
9. gildebrand (gildebrand) 08.07.10 13:14
(8)
Правильно ли я понял, что используя J1C можно реализовать логику проведения документа отличную от указанной в конфигурации? Если так, то об этом надо предупреждать

В документации и на сайте об этом рассказано. Замечу только, что "просто так", случайно провести документ не получится. Необходимо создать класс наследник от базового класса j1c V.DocumentObject и затем реализовать его метод close() (это аналог процедуры проведения в 1с).
и я бы рекомендовал пользоваться встроенными функциями проведения документов.

Если вы под функциями имели в виду хранимые процедуры самой 1С - то да, они используются. Это процедуры главным образом отвечают за пересчет итогов (как бух. так и регистров). Так что в этом смысле используется родной механизм 1С.
10. Антон Дилёв (Antoska) 08.07.10 14:47
Но ведь можно и "просто так", случайно "создать класс наследник от базового класса j1c V.DocumentObject и затем реализовать его метод close()" ;)

Значит реализовать альтернативный алгоритм проведения таки нельзя..? Вы правы надо всё же почитать документацию :)

Под функциями я имел ввиду вызов процедур Провести(), Записать(), Удалить() и далее в таком духе... Именно они и должны обеспечить выполнение хранимых процедур. Ну, да вы в курсе :)

А процедуры обработки проведения документа могут делать, что угодно... Это уже от задач зависит. Частенько, кстати, делают записи в истории периодических реквизитов :)

Вот ещё вопрос (пока не почитал документацию :oops: ) - есить ли возможность получить данные из таблиц формируемых отчётами и обработками? Ну... Мало ли ;) ?

З.Ы. Ушёл читать документацию...
11. gildebrand (gildebrand) 08.07.10 15:52

Значит реализовать альтернативный алгоритм проведения таки нельзя..?

Почему же нельзя - наследуете и реализовываете protected методы :)
Под функциями я имел ввиду вызов процедур Провести(), Записать(), Удалить() и далее в таком духе

В j1c они представлены методами: close(), write(), delete() соответственно
При кроме того, так же как и для close(), есть protected методы аналоги ПриЗаписи(), ПриОтменеПроведения и т.п.
Частенько, кстати, делают записи в истории периодических реквизитов

У класса V7.CatalogObject есть метод:
void j1c.ru.V7.CatalogObject.setAttribute(String name, Object value, Date date, DocumentReference document)
Установить значение периодического реквизитого справочника в контексте документа.

Parameters:
name Имя атрибута
value значение атрибута
date Дата значения атрибута
document Документ, в контексте которого будет установлено значение
...Показать Скрыть

в реализации метода close() вызывайте его - все очень похоже как в 1С :)
есить ли возможность получить данные из таблиц формируемых отчётами и обработками?

нет, такой возможности нет - как вы себе это представляете? j1c работает вне 1с, но с ее базой. Клиент 1с для j1c не нужен и не используется никак.
12. Доржи Цыденов (support) 09.07.10 12:38
А можно где-то посмотреть, как выводиться справочник в веб?
И можно ли сделать вывод журнала, документа и его проведение?
13. gildebrand (gildebrand) 09.07.10 13:20
(12)
А можно где-то посмотреть, как выводиться справочник в веб

Вот здесь статья-пример создания сервлета с помощью сервлета http://j1c.ru/j1c/node/23
В прикрепленных файлах картинки, как выглядит стартер, для сервера приложения j1c (из примера) и соответственно справочник контрагенты типовой комплексной. Вы именно это хотели посмотреть?
И можно ли сделать вывод журнала, документа и его проведение?

Конечно можно (как я понял вы про веб спрашиваете). Конечно, для документов нужно не забыть реализовать модуль проведения.
Прикрепленные файлы:
14. Доржи Цыденов (support) 09.07.10 16:23
(13) не локальный сервер, а публичный сервер есть?
15. gildebrand (gildebrand) 09.07.10 17:08
(14) Нет, нету такого. А что вам это даст? Ну увидите вы вебе хтмл странички с показом списка. Откуда вы можете "быть уверенным" что данные берутся из 1С?
Я вам рекомендую скачать http://j1c.ru/files/download/DemoWebService.zip отсюда демопример, положить это вебприложение в каталог контейнера сервлетов (например Tomcat) - и самиму посмотреть одним глазом в 1С, а другим в браузер.
16. Доржи Цыденов (support) 09.07.10 19:41
(15) Тогда сделайте такой демосервер, чтобы можно было документ создать, подобрать номенклатуру, провести.
17. Евгений Стоянов (quick) 12.07.10 08:40
Жесть! Как давно об этом я мечтал :))) Красавчеги!
18. Сергей Василенко (Winston Kent) 12.07.10 16:22
Я правильно понимаю, что можно создать базу в 1С, а запускать и работать с базой при помощи J1C?
19. gildebrand (gildebrand) 12.07.10 16:31
(18) Правильно. J1C это программное апи к данным. При этом можно работать одновременно, как клиентом 1С так и j1c (база должна быть sql формата).
20. Сергей Василенко (Winston Kent) 12.07.10 16:35
(19) Круто! Надо попробывать. А как установить ее?
21. gildebrand (gildebrand) 12.07.10 16:41
(20) Скачиваете апи (jar Файл), указываете javac путь к нему (подключаете то бишь библиотеку). Создаете свои классы используя классы апи. Примеры можно найти здесь: http://j1c.ru
kozorez; Winston Kent; +2 Ответить 1
22. Сергей Василенко (Winston Kent) 13.07.10 08:36
23. Олег Пономаренко (O-Planet) 13.07.10 13:36
24. Makdir (Makdir) 24.08.10 23:49
Хорошая вещь. Желаю успешного развития этому проекту!
+
25. gildebrand (gildebrand) 23.02.11 20:49
Выложил обновление. Альфа - 0.0.70
Изменения с момента первой публикации:
1. Реализована поддержка DBF формата.
2. Существенно изменена (переработана) объектная модель (дрейф к 8-ке).
3. Доработана модель запросов к данным - поддержка нотации 1CPP
4. Переработка модели запуска класса V7.
26. gildebrand (gildebrand) 22.05.11 01:24
Выложил 0.0.72 версию.
В версии:
1. Развитие поддержки DBF формата ИБ.
Принципиальное изменение к подходу анализа текста запросов. Для анализа и разбора текста запросов был реализован jsqlparser с использованием JavaCC.
Это позволит в дальнейшем легко развивать язык запросов. В следующих релизах будет доработан функционал языка запросов в нотации 1CPP.
2. Реализация виртуальных таблиц:

$РегистрОстатки.<ИмяРегистра>([<ГраницаРасчета>][,
<Соединение>][,
<Условие>][,
<Измерение>][,<Ресурс>]
) [as <Алиас>]


$РегистрОбороты.<ИмяРегистра>([<НачалоПериода>][, <КонецПериода>][,<Периодичность>][,
<Соединение>][,
<Условие>][,
<Измерение>][,<Ресурс>]
) [as <Алиас>]

$РегистрОстаткиОбороты.<ИмяРегистра>([<НачалоПериода>][, <КонецПериода>][, <Периодичность>][,<МетодДополнения>][,
<Соединение>][,
<Условие>][,
<Измерение>][,<Ресурс>]
) [as <Алиас>]

Подробное описание работы следует. Пока можно попробовать работу с помощью консоли запросов. Консоль запросов Консоль
27. gildebrand (gildebrand) 15.06.11 21:21
28. Здрасте (здрасте) 25.10.11 11:24
Сайт j1C недоступен. Уже неделю. Надеюсь что временно и тема будет развиваться. Задумал пошшупать, а тут такая засада.
29. gildebrand (gildebrand) 30.10.11 11:34
28 Сайт заработал, можно смотреть.
30. Виктор Новожилов (compil7) 25.10.12 21:29
А что с сайтом j1C? Сейчас не доступен?
31. Vit Bell (vit_ms) 27.01.13 18:20
Хотел купить эту разработку, но сайт j1C недоступен с 2011 года... так проект закрыт или нет?
И система покупки какая-то сложная, скажите, сколько я должен за нее заплатить и все, не нужны мне в нагрузку другие разработки. Советский Союз какой-то - хотите купить хорошую книгу, купите еще 2 ненужных.
Аватар еще пришлось какой-то искать обязательно, что за усложнения жизни?!
32. Василий Казьмин (awk) 02.02.13 00:13
33. andrey P (andrey314) 25.11.14 10:39
(29) gildebrand, А можно как то заполучить потестировать вашу разработку? А то сайт не работает...
34. Tindir Mindir (tindir) 21.01.15 10:06
Судя по последним комментариям загнулась тема...а жаль...было бы очень полезно использвать такую библиотеку для веба и разработки мелких фронтов для разездных товарищей. Хотя, есть же 8.3...проснулись, отряхнулись...
35. f13 f13 (f13) 26.03.15 14:46
(33) andrey314, если уж так интересно, можно покопаться в http://web.archive.org/web/20100704020117/http://j1c.ru/j1c/
36. Alakbar Azizov (Alakbar33) 15.10.15 08:51
f13. К сожалению Ваша ссылка не работает "Page cannot be crawled or displayed due to robots.txt.". Очевидно авторы сайта ставили ограничение на архивирование сайта. Можно ли как-то в другом месте покопаться ? Тема не умерла - возможна реставрация 1С7.7 с помощью новых технологий, так бизнес-процессы, бизнес-логика, сами пользователи-бухгалтеры в компаниях остались те же. Буду признателен за ответ.
37. yurok kozorez (kozorez) 01.03.16 01:17
38. yurok kozorez (kozorez) 01.03.16 15:32
Документация и примеры находятся на сайте которого нет... наверное разработку можно удалять..
39. Alister (Alister) 01.03.16 16:21
Вообще печально с 7.7, столько разного интересного было придумано (1cpp, formex, openconf и т.п.), а теперь 7.7 это исключение, везде уже 8-ка.
40. Антон Дилёв (Antoska) 23.03.16 14:56
(39) Alister, Не везде! Очень много специализированных конфигураций на 7.7 написано. У меня на предприятии до сих пор такая конфа работает. И я её поддерживаю :) Вот только, конкретно эта разработка, мне не пригодилась.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа