|


Приклади до статті "Прямий доступ до 1С"
Автор: Рудюк С.О.
Internet: rudjuk.kiev.ua
У цій статті я наведу приклади прямого доступу до різних таблиць бази даних 1С: Підприємство.
Для доступу до файлів dbf використовуємо компоненти DegisyData. Їх Ви можете взяти на сайті http://www.degisy.com.
Текст програмної реалізації та фргменту бази даних Ви можете скачати тут (131 Кб).
У каталозі 1S_Base міститься фрагмент бази даних 1С, який використовується в програмах.
Перегляд плану рахунків
Інформацію про структуру таблиці планів рахунків дивимося у файлі 1С7.DD бачимо:
....
#==TABLE no 148 : Рахунки
# Name |Descr |Type[A/S/U]|DBTableName|ReUsable
T=1SACCS |Рахунки |A |1SACCS |1
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=ID |Account Id |C |9 |0
F=PLANID |Plan Id |C |4 |0
F=SCHKOD |Account code(number)|C |7 |0
F=SCHIM |Account description |C |128 |0
F=SCHV |Flag Currency enable|N |1 |0
F=SCHKOL |Flag Amount enable |N |1 |0
F=SCHSINGLE |Flag no need corresp|N |1 |0
F=ISFOLDER |Flag Have child acco|N |1 |0
F=ISMARK |Flag Object is Marke|C |1 |0
F=LEVEL |Level of Account |N |3 |0
F=MDID |Metadata Id |C |4 |0
F=ACTIVE |Flag Active |N |1 |0
F=VERSTAMP |Version stamp |C |6 |0
F=SC0 | |C |4 |0
F=OSC0 | |N |1 |0
F=FSC0 | |N |1 |0
F=SC1 | |C |4 |0
F=OSC1 | |N |1 |0
F=FSC1 | |N |1 |0
F=SC2 | |C |4 |0
F=OSC2 | |N |1 |0
F=FSC2 | |N |1 |0
#----Indexes------
# Name |Descr |Unique|Indexed fields |DBName
I=ID1 |of ID |0 |ID |ID1
I=CODE |of CODE |0 |PLANID,SCHKOD |CODE
I=SUBACC |of SubAcc |0 |LEVEL,PLANID,SCHKOD |SUBACC ....
|
Призначення полів бачимо із скрипту.
ID - ID рахунку.
PlanID – ID плану рахунків. Можна створювати кілька різних планів рахунків.
SchKod – Код плану рахунків.
SchIm – Опис плану рахунків.
IsFolder - вказує запис каталогом або елементом. Якщо 1 - каталог, 2 означає елемент.
Level – рівень рахунку.
Metadata ID - ID рахунку в метаданих.
Приклад програмної реалізації Ви можете знайти у каталозі Schet.
Перегляд ТМЦ
У файлі 1С7.DD бачимо:
....
#=============
#==TABLE no 27 : Довідник ТМЦ
# Name |Descr |Type[A/S/U]|DBTableName|ReUsable
T=SC92 |Довідник ТМЦ |A |SC92 |1
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=ID |ID object |C |9 |0
F=PARENTID |ID parent obj |C |9 |0
F=CODE |object code |C |5 |0
F=DESCR |object description |C |25 |0
F=ISFOLDER |Flag - Is Line - Fol|N |1 |0
F=ISMARK |Flag Object is Marke|C |1 |0
F=VERSTAMP |Version stamp |C |6 |0
F = SP93 | (P) Повн Найменування | C | 64 | 0
F = SP94 | (P) ШтрихКод | C | 12 | 0
F = SP96 | (P) Вигляд | C | 9 | 0
F = SP97 | (P) Валюта_Прод | C | 9 | 0
F = SP98 | (P) Цена1 | N | 13 | 2
F = SP99 | (P) Цена2 | N | 13 | 2
F = SP100 | (P) Цена3 | N | 13 | 2
F = SP101 | (P) Валюта_Прих | C | 9 | 0
F=SP102 |(P)Ціна_Прих |N |13 |2
F = SP103 | (P) Ставка ПДВ | C | 9 | 0
F = SP104 | (P) База | C | 9 | 0
F = SP105 | (P) Старий Повний Код | C | 20 | 0
F = SP106 | (P) Транспорт | C | 9 | 0
F = SP1123 | (P) Вид витрат | C | 9 | 0
F = SP1124 | (P) Рахунок Витрат | C | 13 | 0
F = SP1142 | (P) Рахунок | C | 13 | 0
#----Indexes------
# Name |Descr |Unique|Indexed fields |DBName
I=IDD |of ID |0 |ID |IDD
I=PCODE |of PARENT and |0 |PARENTID,ISFOLDER,CODE(UPPER) |PCODE
I=PDESCR |of PARENT and |0 |PARENTID,ISFOLDER,DESCR(UPPER) |PDESCR
I=CODE |of CODE |0 |CODE(UPPER) |CODE
I=DESCR |of DESCR |0 |DESCR(UPPER) |DESCR
I=VI94 |VI94 |0 |SP94(UPPER=128) |VI94
I=VIP94 |VIP94 |0 |PARENTID,ISFOLDER,SP94(UPPER=128) |VIP94
I=VI105 |VI105 |0 |SP105(UPPER=128) |VI105
I=VIP105 |VIP105 |0 |PARENTID,ISFOLDER,SP105(UPPER=128) |VIP105
#
....
|
Інформація про ТМЦ зберігається у таблиці SC92.
Значення полів:
ID – ID об'єкта ТМЦ.
ParentID – предок запису. Якщо 0 - запис знаходиться в корені.
Code – код об'єкта.
Descr – опис позиції ТМЦ.
IsFolder - вказує чи є рядок об'єктом. Якщо 1 - каталог, 2 означає елемент.
SP93 – Назва ТМЦ.
SP94 - Штрих-код.
SP96 - Вид ТМЦ.
SP97 – Валюта продажу.
SP98 - 1-ша ціна.
SP99 - 2-а ціна.
SP100 - 3-та ціна.
SP101 – Валюта приходу.
SP102 – Ціна приходу.
SP103 – Ставка ПДВ.
SP104 – Базова одиниця виміру.
SP1124 - Рахунок витрат.
SP1142 - Рахунок.
Програмну реалізацію доступу Ви можете переглянути в каталозі TMC.
Перегляд довідника фірм
Інформація про фірми записана у двох таблицях: про внутрішню фірму - у таблиці SC2325, про клієнтів - у SC72. Переглянемо файл 1С7.DD з інформацією про ці таблиці:
....
#==TABLE no 29 : Довідник Фірми
# Name |Descr |Type[A/S/U]|DBTableName|ReUsable
T=SC2325 |Довідник Фірми |A |SC2325 |1
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=ID |ID object |C |9 |0
F=CODE |object code |C |3 |0
F=DESCR |object description |C |25 |0
F=ISMARK |Flag Object is Marke|C |1 |0
F=VERSTAMP |Version stamp |C |6 |0
F = SP2326 | (P) Повн Найменування | C | 70 | 0
F = SP2329 | (P) ПрефіксНомера | C | 2 | 0
F = SP2330 | (P) Каси | C | 9 | 0
F = SP2331 | (P) Телефони | C | 30 | 0
F=SP2332 |(P)ОКПО |C |10 |0
F = SP2333 | (P) ІПН | C | 12 | 0
F = SP2334 | (P) Номер Свідоцтв | C | 12 | 0
F=SP2335 |(P)РС |C |9 |0
F = SP2336 | (P) Адреса | C | 64 | 0
F = SP2337 | (P) ВС | C | 9 | 0
F = SP2338 | (P) Дата реєстрації | D | 8 | 0
F = SP2339 | (P) Номер Реєстрації | C | 40 | 0
F = SP2340 | (P) Кем Зареєстрована | C | 80 | 0
F = SP2352 | (P) Код Податкової Інспе | C | 32 | 0
F = SP2353 | (P) Відділ Податкової Інс | C | 64 | 0
...
|
Зі скрипту бачимо, призначення полів:
ID – ID фірми,
SP2326 - Повне найменування фірми,
Descr - Опис фірми,
SP2331 - Телефони,
SP2332 - ОКПО,
SP2333 - ІПН,
SP2334 - Номер свідоцтва,
SP2335 - Розрахунковий рахунок,
SP2336 - Адреса,
SP2338 - Дата реєстрації,
SP2339 - Номер реєстрації,
SP2340 - Ким зареєстрована,
SP2352 - Код податкової інспекції,
SP2353 – Відділ податкової інспекції.
....
#==TABLE no 13 : Довідник Клієнти
# Name |Descr |Type[A/S/U]|DBTableName|ReUsable
T=SC72 |Довідник Клієнти |A |SC72 |1
#-----Fields-------
# Name |Descr |Type|Length|Precision
F=ID |ID object |C |9 |0
F=PARENTID |ID parent obj |C |9 |0
F=CODE |object code |C |5 |0
F=DESCR |object description |C |32 |0
F=ISFOLDER |Flag - Is Line - Fol|N |1 |0
F=ISMARK |Flag Object is Marke|C |1 |0
F=VERSTAMP |Version stamp |C |6 |0
F = SP73 | (P) Повн Найменування | C | 64 | 0
F = SP74 | (P) Адреса | C | 64 | 0
F = SP2930 | (P) ФізАдреса | C | 64 | 0
F = SP75 | (P) Телефони | C | 30 | 0
F = SP76 | (P) Директор | C | 40 | 0
F=SP77 |(P)ОКПО |C |10 |0
F = SP78 | (P) ІПН | C | 12 | 0
F = SP79 | (P) Номер Свідоцтв | C | 12 | 0
F=SP83 |(P)ВалютаВзаиморасче|C |9 |0
F = SP88 | (P) ТипЦен | C | 9 | 0
F = SP89 | (P) Старий Повний Код | C | 20 | 0
F = SP90 | (P) ВидТоргівлі | C | 9 | 0
F = SP2924 | (P) Менеджер | C | 9 | 0
#----Indexes------
# Name |Descr |Unique|Indexed fields |DBName
I=IDD |of ID |0 |ID |IDD
I=PCODE |of PARENT and |0 |PARENTID,ISFOLDER,CODE(UPPER) |PCODE
I=PDESCR |of PARENT and |0 |PARENTID,ISFOLDER,DESCR(UPPER) |PDESCR
I=CODE |of CODE |0 |CODE(UPPER) |CODE
I=DESCR |of DESCR |0 |DESCR(UPPER) |DESCR
I=VI77 |VI77 |0 |SP77(UPPER=128) |VI77
I=VIP77 |VIP77 |0 |PARENTID,ISFOLDER,SP77(UPPER=128) |VIP77
I=VI89 |VI89 |0 |SP89(UPPER=128) |VI89
I=VIP89 |VIP89 |0 |PARENTID,ISFOLDER,SP89(UPPER=128) |VIP89
...
|
Зі скрипту бачимо призначення полів:
ID – ID клієнта.
ParentID – ID попередньої гілки. Якщо 0, то фірма докорінно.
IsFolder - вказує чи є запис каталогом. Якщо 1 - каталог, 2 означає елемент.
Descr – Опис клієнта.
SP73 - Повне найменування клієнта.
SP74 – Адреса.
SP2930 - Фізична адреса.
SP75 – Телефони.
SP76 – Директор.
SP78 - ІПН.
SP79 – Номер свідоцтва.
SP83 - Валюта взаєморозрахунків.
SP2929 – Менеджер.
Програмну реалізацію доступу до довідників Ви можете побачити у каталозі Firms.
Висновок
Як бачите, доступ до бази даних значно простіше і більш інформативний, ніж доступ до бази даних через OLE. У цьому швидкість доступу до базі значно вище, надійніше, т.к. виключається зайвий прошарок програмних засобів у вигляді 1С, доступ до бази більш стандартизований і менше потрібно писати програмного коду (часто взагалі не потрібно:)).
Анонс
У наступній статті за 1С я опишу як реалізувати експорт/імпорт між 1С і базою даних Interbase (Firebird).
Обговорити на форумі

|