Проект J1C

Проект 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, где запускается один экземпляр сервиса обрабатывающий запросы клиентов или через rmi. В отличие от технологии доступа через OLE, J1C позволяет на одной машине (сервере) обрабатывать существенно большее количество запросов, чем через OLE, при которой можно запустить максимум 3-5 процессов 1С:Предприятия на одной машине

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

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

  • Интеграция 1С:Предприятия 7.7 с другими системами, которые поддерживают JAVA
  • Реализация WEB доступа к данным 1С:Предприятия, без наличия издержек производительности и безопасности (как это имеет место с существующими технологиями типа WEB-расширения или com-объекта)
  • Интеграция с 1С:Предприятие 7.7. с использованием JAVA технологий, например WEB-service
  • Доступ к данным на SQL сервере напрямую, используя псевдонимы таблиц и и виртуальные таблицы в нотации 1CPP

Список можно продолжать, но понятно что имея доступ 1С:Предприятию на JAVA и работая с данными на JAVA - возможности интеграции с 1С существенно расширяются.

Кому это нужно?
Во-первых, известно, что программисты 1С занимающиеся разработкой прикладных решений рано или поздно приходят к пониманию, что функционал самой платформы 1С:Предприятия 7.7 ограничен и не позволяет решать эффективно поставленные задачи.
Во-вторых, программисты, которым посчастливилось не работать с 1С:Предприятием, но по некоторым обстоятельствам столкнувшиеся с необходимостью взаимодействия с данными 1С, имеют проблемы связанные с незнанием встроенного языка 1С, незнанием архитектуры платформы, не понимания смысла тех или иных таблиц из-за их не читаемых названий и полей или же с функциональными ограничениями доступа к данным (только посредством самой платформы в режиме com-объекта).
Проект J1C это попытка:

  • Предоставить программистам 1С возможность реализовать себя в предметной области, но на технологически более высоком уровне используя в качестве языка программирования JAVA
  • Предоставить НЕ программистам 1С понятный интерфейс взаимодействия с данными 1С, не заставляя их изучать все парадигму и особенности 1С

Комментарии

Зачем это нужно?

Зачем мучать умирающую платформу? Зачем тратить на это время?

1. Цена вопроса для конечного

1. Цена вопроса для конечного пользователя. Система лицензирования "умирающей" платформы позволяет безгранично расширять локальную сеть и учетную систему без дополнительных затрат. При том, что локальные и VPN-сети покрывают уже не только города, но и целые регионы. 2. Высокая стабильность и как следствие значительно больший жизненный цикл приложений. Приложения на 8.0 уже безнадежно умерли... не прошло и 3-х лет...на 7.7- живут уже более 10 лет. 3. Внешние компоненты "сторонних" разработчиков. Их очень много и они расширяют функционал 7.7. Если Вы здесь, значит Вам это нужно.

а 1С8.х ?

Это конечно интересно - ведь пользователей 1С7.7 намного больше чем пользователей "шестерки". Но еще больше пользователей восьмерек. Планируете ли писать библиотеку классов для работы с линейкой решений 1С8?

откуда такие данные о том,

откуда такие данные о том, что пользователей восьмерок больше? ;)

Для восьмерки уже столько

Для восьмерки уже столько паниписано

невижу проблемы чтобы

невижу проблемы чтобы получить данные через OLE. тож и сзаписью

по OLE работать с семеркой

по OLE работать с семеркой крайне не надежно и очень медленно

интересно в чем ето

интересно в чем ето выражается??? посути нет никаких посредников кроме самой платформы

а кроме того, через OLE можно

а кроме того, через OLE можно запустить 3-5 процессов - далее крушение. Т.е. никакой многопользовательности.
А с j1c можно создать сервер приложений - он один раз стартует (по времени примерно столько же сколько и сама 1с) зато потом может обрабатывать запросы от большого числа пользователей.
Под сервером приложения я имею в виду в первую очередь web-приложение. Демо пример, web доступа к 1с сейчас готовится.

При работе через OLE

При работе через OLE приходится выделять кучу памяти и тратить много времени под маленькие задачи. Например дёрнуть справочник номенклатуры занимает секунд 20-30, и памяти съест метров 60, да ещё OLE объект 1С грешит тем, что может падать без особой на то причины, после чего нудно переиндексировать таблицы. OLE реально использовать для задач запускаемых вручную, перекачать из одной базы в другую, подключится и что то взять из базы, но только под контролем человека. Когда нужно регулярно и автоматически работать с базой, то OLE становится головной болью. А ещё OLE объект 1С не регистрируется в таблице Running Object Table, как следствие нет возможности: • Подключиться к уже запущенной 1С • Работать с несколькими базами в рамках одного OLE объекта

а если вам так невезет с оле

а если вам так невезет с оле или не нравится работать с одной базой, то вам поможет ODBC, если и это для вас не вариант тогда ставте kak сервер приложений J1C. Да и сам перебор записей в DBF иногда помогает лучше. Другими словами вариантов мажно найти куча, от одной крайности да другой.

все это огрехи 1с а не OLE 10

все это огрехи 1с а не OLE 10 лет работает и не каких проблем

Как зарегистрировать V77.Application?

Пытаюсь получить данные из 1C 7.7 только на javascript. Потихоньку начинает работать. Но столкнулся с проблемой: на другом компьютере не зарегистрирован com-сервер V77.Application. Как его можно зарегистрировать не переустанавливая 1С? Спасибо

V77.Application

Вообще этому вопросу здесь не место - здесь обсуждается J1C и все что с этим связано. Но на ваш вопрос могу предположить ответ такой - нужно воспользоваться regsvr32 (хотя могу быть не прав). Какую задачу вы пытаетесь решить?

Простите, что не в тему.

Простите, что не в тему. regsvr32 непонятно к чему применять. Нет функций, которые использует regsvr32 ни в одной dll из 1С. А нужно все тоже самое: подключится внешним приложением к com-серверу 1С

уфффф. учи мат часть.

уфффф. учи мат часть. regsvr32 <путь до библиотеки> где библиотека, это dll реализующая com объект для доступа к 1с. В данном случае нет под рукой 1с 7.7 точного названия сказать не смогу

а в чем проблемы

а в чем проблемы переустановить 1С?