• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

К 1С через драйвер jdbc

  • Автор темы HITMAN-NN
  • Дата начала
H

HITMAN-NN

Народ срочно нужна ваша помощь.... Сам я программирую в лотусе и сейчас передомной стоит задача интеграции с 1С. И тут у мя появился вопрос, а через jdbc-драйвер можно подсоединиться и работать с 1С. В инете искал че-то вообще глухо...
Посоветуйте что-нито, скиньте какую-нито инфу....
 
V

vitfil

1С хранит данные либо в ДБФ, либо в SQL - понятно куда копать?
 
H

HITMAN-NN

ээээээ, а инфа есть какя-нито, ну или примерчик какой-нито...
 
V

vitfil

инфаааааааа. есть! море инфы в интернете, как используя ODBC-провайдеры подключаться к базам данных и работать с ними. Структуру базы 1С можно узнать из файла 1cv7.dd (для ДБФ версии) или 1cv7.dds (для сиквельной версии).
НО! Если вам необходимо не только читать из базы, но и писать в нее, лучше связываться с 1С по OLE и использовать внутренние процедуры 1С для создания и модификации объектов. Хотя, в принципе, это касается только создания объектов.
 
H

HITMAN-NN

Понятно.... Да мне нужно дергать данные из 1С, писать в 1С и синхронизировать данные 1С с данными из Lotus
Я тут проанализировал техническую платформу для интеграции(http://www.v8.1c.ru/overview/integration.htm) и насколько я понимаю самы лучший способ интегрироваться с 1С:предприятие через Com-соединение. Ваши мнения как опытных 1С?

И еще, а как в 1С можно отселиживать изменения в документах?
 
V

vitfil

И еще, а как в 1С можно отселиживать изменения в документах?
Если настроить распределенную базу, 1С будет сама отслеживать и записывать изменения в любых объектах. Вам надо будет только прочитать эти данные...
 
H

HITMAN-NN

А не подскажите где эти настройки провести, что бы 1С сама отслеживала изменения....
 
M

Mirage

Если 8.1 то сдается мне что лучше всего через веб сервисы, можно и по оле, из лотуса это достаточно просто,
но всетаки, если в вашей 1с один раз определить нормально хмл интерфейсы, и через них работаь, то это даже
смахивает на хай теч и универсальность решения :blink:
 
H

HITMAN-NN

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

Mirage

Тогда создавай план обмена, он и будет заниматься тем что будет следить за твоей базой, и через интерфейсы вебсервисов будешь получать данные что изменилось, а потом и то что само изменилось получишь
 
H

HITMAN-NN

эээээ, а можно поподробнее о плане обмена, а то с 1С я тока начинаю работать....
 
M

Mirage

Тут поподробнее сложно, надо брать книгу и смотреть, или лезть в документацию что сложно, если нужна дока, могу поделиться, пиши на мыло что нибуть подберем
adeptsystem[at]gmail.com
 
N

nkultashev

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

Есть такой драйвер.

Наша команда написала драйвер JDBC для 1С v8. Сейчас поддерживается спецификация JDBC v1.5. Драйвер работает через 1С API и сам в данные не лезет. Соединение с 1С производится через DCOM. Модификаций в конфигурации 1С не требуется.

Драйвер работает только на чтение, но под драйвером лежит наше Java API, которое практически повторяет 1С API и позволяет производить модификацию данных из внешних программ Java.

Драйвер и API мы писали в первую очередь для себя. Сейчас есть описание двух примеров использования JDBC:

Статья «Использование JDBC драйвера для доступа к информации 1С»:

Статья «Использование 1С JDBC в Java Compute node при написании потоков обработки сообщений IBM WebSphere Message Broker»:

Screenshot с подключенным к eclipse драйвером:

Мы можем дать бесплатно текущую версию драйвера, чтобы кто-то попробовал с ним работать и рассказал нам о результатах и проблемах.

Если интересно - пишите.
 
V

vitfil

Если найдутся страждущие и тема получит продолжение, выделю в отдельный топик JDBC для 1С. Возможно даже закрепим. Мне всегда были интересны темы интеграции. У самого, к сожалению, не хватает времени провести оценку проделанной вами работы. Тем не менее, являясь давним поклонником Java и работ в сфере интеграции и расширения возможностей программного обеспечения, с большим уважением отношусь к вашей работе.
Вот только ссылки на первые 2 статьи нерабочие.
 
N

nkultashev

Извините, что не сразу ответил. Из-за процедурных вопросов мы пока не можем пакет в открытый доступ. Мы пришлём вам драйвер/ссылку.
 

oshmianski

Достойный программист
Lotus Team
25.04.2012
711
59
BIT
2
Есть еще j1с.

Это java библиотека, которая позволяет соединяться с базами 1С и выполнять запросы.
- сейчас сайт почему-то недоступен, попробуйте поискать.

У меня это было приблизительно <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">так</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>package pkg1c;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import ru.j1c.V7;
import ru.j1c.ManagerV7;
import ru.j1c.Metadatas.Catalog;
import ru.j1c.RecordSet;

public class Main {
private static V7 v7;

public static void main(String[] args) throws SQLException {
v7 = ManagerV7.getConnection(\"//ip_машины/папка_бд\");

Catalog catalog = (Catalog) v7.getMetaData().selectTypes(\"Справочник.Города\").get(0);

RecordSet r = v7.getRecordSet();
ResultSet rs = r.executeQuery(\"select * from $Справочник.\" + catalog.getName() + \" where Code=1\");
ResultSetMetaData rsmd = rs.getMetaData();
while (rs.next()) {
for (int c = 0; c < rsmd.getColumnCount(); c++) {
System.out.println (rsmd.getColumnLabel(c+1) + \": \" + rs.getObject(c + 1));
}
}
}

}[/CODE]
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!