Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Прямой доступ к базе данных 1С

Автор: Рудюк С.А.
http://rudjuk.kiev.ua/

Для обмена данными моей системы Корпорация с 1С я разработал шлюз. Вначале, я пытался организовать обмен данными с помощью механизма OLE, вооружившись рядом статей, опубликованных на сайте http://delphiplus.org и документацией 1С.

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

В завершение всего, данные, получаемые посредством OLE не очень полезны - часто показываются только те данные, которые действительны на данное время. Так, например, курс валют будет показываться на дату системы, а не выводиться таблица изменений курсов валют.

Поэтому, изрядно повозившись с OLE-механизмом я всё таки решил реализовать прямой доступ к 1С.

В данной статье я описываю где и как получить информацию из таблиц 1С.

Прямой доступ к таблицам в формате dbf-файлов

Прежде всего, необходимо было выбрать компоненты для доступа к таблицам 1С. К dbf-файлам можно получить доступ с помощью BDE, ODBC или компонент прямого доступа. Первые два способа я сразу же отмёл, остался - третий.

Я начал искать бесплатные компоненты для прямого доступа к dbf-файлам. И нашёл превосходную компоненту DegisyData на сайте http://www.degisy.com. С помощью этой компоненты, Вы можете просматривать dbf-файлы, добавлять, изменять и удалять информацию в них.

Хранение информации в 1С

Теперь рассмотрим где же взять информацию о таблицах 1С.

1С для каждого справочника создаёт отдельную таблицу. Таких таблиц получается достаточно большое количество и догадаться о назначении каждой из них довольно тяжело.

Прежде всего следует отметить, что 1С создаёт пары файлов: .DBF-файл (данные) и одноимённый .CDX-файл (индексный файл).

Мы можем CDX файлы удалить - потери информации не будет, так как это индексные файлы. При запуске 1С в монопольном режиме автоматически создадутся необходимые индексные файлы.

Информацию о любом файле базы данных и любом поле Вы можете почерпнуть из текстового файла 1Сv7.DD.

#AccWare Data Dictionary
D=DDV7120|AccWare Data Dictionary (DDCP=1251UKR)|
#
#
#===================================
#==TABLE no 0 : Соединений
# Name |Descr |Type[A/S/U]|DBTableName|ReUsable 
T=1SUSERS |Соединений |A |1SUSERS |1 
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=USRSCNT |Number of users |N |4 |0 
F=NETCHGCN |Count of changes |N |10 |0 
#
#====================================
#==TABLE no 1 : Системная
# Name |Descr |Type[A/S/U]|DBTableName|ReUsable 
T=1SSYSTEM|Системная |A |1SSYSTEM |1 
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=CURDATE |Date of TM |D |8 |0 
F=CURTIME |Time of TM |C |6 |0 
F=EVENTIDTA |ID Event On TA |C |9 |0 
F=DBSIGN |DB Sign |C |3 |0 
F=DBSETUUID |UUID of DB set |C |36 |0 
F=SNAPSHPER |Snap Shot Period |C |1 |0 
F=ACCDATE |Date of Account Tota|D |8 |0 
F=FLAGS |FLAGS |N |10 |0 
#
#====================================
#==TABLE no 2 : Константы
# Name |Descr |Type[A/S/U]|DBTableName|ReUsable 
T=1SCONST |Константы |A |1SCONST |1 
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=OBJID |ID obj(0-cons ) |C |9 |0 
F=ID |ID parameter |C |4 |0 
F=DATE |Fix date |D |8 |0 
F=PARTNO |no of part |N |3 |0 
F=VALUE |valume |C |23 |0 
F=DOCID |ID Document |C |9 |0 
F=TIME |Time |C |6 |0 
F=ACTNO |Action No |N |6 |0 
F=LINENO |LineNo |N |4 |0 
F=TVALUE | |C |3 |0 
.......

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

Пароли пользователей хранятся в папке usrdef. Если удалить этот каталог, то можно входить в систему 1С без пароля с наибольшими правами.

Последнее, что необходимо для шлюза - это история изменений данных пользователями. Эту информацию Вы можете найти в текстовом файле каталога SYSLOG.

20040924;08:49:40;Федоров;E;Docs;DocWriteNew;2;;O/2196/410;
Приходный кассовый ордер СТ00000001 24.09.2004 08:49:40
20040924;08:49:43;Федоров;E;Docs;DocNotPassed;2;;O/2196/410;
Приходный кассовый ордер СТ00000001 24.09.2004 08:49:40
20040924;08:49:46;Федоров;E;Docs;DocOpen;3;;O/2196/410;
Приходный кассовый ордер СТ00000001 24.09.2004 08:49:40
20040924;08:50:15;Федоров;E;Docs;DocWrite;2;;O/2196/410;
Приходный кассовый ордер СТ00000001 24.09.2004 08:49:40
20040924;08:50:18;Федоров;E;Docs;DocPassed;2;;O/2196/410;
Приходный кассовый ордер СТ00000001 24.09.2004 08:49:40
20040924;08:50:20;Федоров;E;Docs;DocOpen;3;;O/2196/410;
Приходный кассовый ордер СТ00000001 24.09.2004 08:49:40
20040924;08:50:22;Федоров;E;Docs;DocNew;3;;O/2051/0;
Счет-фактура выданный 0000000001 24.09.2004
20040924;08:50:59;Федоров;E;Docs;DocWriteNew;2;;O/2051/411;
Счет-фактура выданный СТ00000001 24.09.2004 08:50:59

Заключение

Если Вы собираетесь делать шлюз, то предусматривайте в программе возможность программирования, т.к. многие поля придётся декодировать и адаптировать под данные Вашей системы. Но это уже тема отдельной статьи.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
97K
25 февраля 2016 года
Валя Никулина
0 / / 25.02.2016
Мне нравитсяМне не нравится
2 марта 2016, 10:49:58
Мы недавно автоматизированы эту часть работы с помощью http://www.docsvision.com/
2.
94K
05 июля 2014 года
Микола Ерстенюк
0 / / 05.07.2014
Мне нравитсяМне не нравится
5 июля 2014, 14:43:19
Хорошо, что сделали шлюз для 1с. Теперь будет немножко сложно, но надежно перепрограмировать свой 1с. Ето как раз то, чего мне не хватало в даной программе. Спасибо, что сделали подробное описание етой функции! И еще отдельное спасибо разработчикам 1с! Досвидания!)
3.
36K
21 февраля 2008 года
AMDX4
3 / / 21.02.2008
+1 / -0
Мне нравитсяМне не нравится
10 марта 2008, 02:10:16
И хорошо что со всем этим делать?
Зачем нам это - может примерчик приведете - так яснее будет
4.
Аноним
Мне нравитсяМне не нравится
9 августа 2005, 13:11:42
Может немного запоздавший коментарий, но есть ещё несколько компонентов: я предпочитаю Apollo.(Кстати по результатом тестов она работает быстрее Advantage)
5.
Аноним
Мне нравитсяМне не нравится
8 мая 2005, 00:46:01
DegisyData на сайте http://www.degisy.com. - небесплатная.
Нисколько не хуже с 1С у меня работает компонент от Advantage - бесплатная
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог