Описание общих таблиц 1С V77
Общее описание
хранения данных
1С.
Данная статья не является полным
описанием и не
претендует на оригинальность. Цель - облегчить понимание
работы
1С, а также способствовать написанию прямых запросов к таблицам 1С.
Статья написанная автором на основе личного опыта, а также той
немногочисленной информации, которую можно раздобыть в Internet в
свободном (и не очень) доступе. Возможно некоторые поля или таблицы
могут измениться с выходом последующих релизов, но пока (до 27 релиза
включительно) таких изменений не было замечено.
1С использует для своей работы стандартные типы данных для таблиц.
Все типы с точки зрения 1С можно
раздеить на 2 категории: базовые типы, внутренние типы 1С. К
базовым типам относятся:
К внутренним типам 1С относятся все обьекты, которые создаются при описании метаданных.
Следует отметить, что базовые типы данных сохраняются в том формате, который они представляют.
- Число - Numeric
- Строка - Char
- Дата - DateTime.
Внутренние типы 1С храняться в 3-х
общих форматах. Все данные в представлены в выиде так званого ID. Этот
ID может иметь 3 размерности. Размерность ID зависит от того, как были
произведены настройки при конфигурировании. Так в 1С все объекты имеют
3-х уровневую структуру. Это значит, что для каждого объекта
определяется его ТИП, его ВИД и его конкретное значение. Т.е. другими
словами, ID может состоять из ТИП+ВИД+Значение. Но, поскольку на этапе
конфигурирования есть возможность задать какой тип и какой вид объектов
будет иметь тот или иной реквизит - то соответсвенно хранение типа или
вида необязательно (что и делает 1С).
1.
Хранение ID объекта
ID может иметь 3 представления (уровня)
в зависимости от длины
(количества значащих символов):
- 9
символов – определен тип и вид объекта (например
«Справочник.Клиенты»), в ID включается только
порядковый номер в 36-ричной системе исчисления. Под порядковый номер
отводятся первые 6 символов, последние 3 символа зарезервированы под
код базы УРБД.
- 13 символов –
определен только тип объекта, вид не задан
(например «Справочник»). Первые 4 символа
– идентификатор вида (как он задан в метаданных), последующие
9 символов – по аналогии с предыдущим пунктом.
- 23 символа – не
определен тип и вид объекта. В таком случае в первых 2 символах
храниться тип объекта (будет рассмотрен ниже), следующие 13 символов
формируются аналогично предыдущему пункту.
Следует отметить, что 1С не
поддерживает значения NULL, поэтому пустые ID (те, которые не имеют
ссылок) всегда равны 0. Но поскольку ID это не число, а строка, причем
определенной длины, то и ID включает в себя пустые значения для строки,
а именно пробелы. Вот как выглядят пустые значения ID для каждого из
представлений (уровней):
-
' 0 ' - 5 пробелов+0+3 пробела.
-
' 0 0 ' - 3 пробела+0+5пробелов+0+3пробела
-
'U
' - неопределен тип и вид (символ U + 22 пробела).
-
'B1 0
0 ' - 2
символа - тип+4 символа вид+9символов элемент.
Значения 2х символов слева могут быть:
-
B1 - Справочник.
-
O1 - Документ.
-
E1 - Перечисление.
-
T1 - Счет
В некоторых случаях, при указании
неопределенного типа объекта (длина
ID кода 23 символа) создается дополнительное поле с символом
«T» вначале (например, если в справочнике задан
реквизит SP235 как неопределенный, то в таблице справочника будет
создано еще одно поле TSP235), рассмотрим поподробнее значения этого
поля. Это поле по умолчанию заполняется пустой
строкой (3 пробела).
- Для
невыбранного типа
(заполняется по умолчанию):
TSP235
= ' '
(3
пробела), при этом
связанное неопределенное поле SP235
заполняется значением
'U
' (символ U и 22 пробела), что скорее всего означает
«Undefined»,
т.е. неопределенный.
- Для
типов
«Число»:
связанное поле SP235 заполняется
строковым значением числа, но с символом «N»
вначале строки
(например 'N
2' для целого числа 2). Возможные значения TSP235:
'F30' - число с
плавающей запятой (float);
'320' - число,
состоящее только из десятичных (0.99, т.е. Число(3,2)).
'A00' - целое число
(int);
- Для
типов
«Строка»:
связанное поле SP235
заполняется
строкой, но с символом 'S' слева (например
'SАбвгдежзклимно
'). Возможные значения TSP235 в
этом случае:
количество знаков, определенных для
строкового значения,
например, '14' -
количество
знаков в строке, в 36-ричном формате (_IDToStr). Следует
отметить, хотя
1С и назначает длину строки больше 22 символов, но фактически в этом
поле можно хранить только 22 символа (1 разряд приходиться на
обозначение типа поля 'S').
- Для
типов
«Дата»:
связанное поле SP235 заполняется
строкой, но с символом 'D'
слева (например
'D20050303
'). TSP235
- '
' (3 пробела), т.е. поле пустое.
- Для
типов 1С (Справочник,
Документ, Перечисление, Счет, и т.д.):
связанное поле SP235 заполняется
строкой включающий полный идентификатор
объекта (его тип, вид, внутренний ИД код). Следует отметить, что для
типов «Перечисление» нельзя не назначать вид, так
как не назначение вида приведет к несовпадению типов и не
заполнению неопределенного поля. Возможные значения TSP235:
'0 ' -
был
назначен только тип объекта, вид не назначен (например
«НазначитьТип(«Справочник»)»)
'1 '
- был
назначен как тип объекта, так и его вид (например
«НазначитьТип(«Справочник.Клиенты»)»)
Примечание
Поскольку для неопределенных реквизитов
(полей) длина поля всегда равна
23 символам, то соответственно в такое поле можно записать значение
максимум с 22 символьным значением (1 отводится под определение типа, в
случае базовых типов, таких как число, строка, дата).
2.
Хранение даты:
- Дата
может храниться как в виде строки, так и в виде типа
«Дата».
- В случае хранения даты в
стандартном формате (тип Дата), при добавлении такого поля в таблицу
для базы в
формате SQL - поле заполняется значением «1753-01-01
00:00:00.000».
- В случае хранения даты в
виде строки, дата сохраняется в формате «ГГГГММДД»,
т.е. 4 символа – год (0000-9999), 2 – месяц
(01-12), 3 – день (01-31). Т.е. для даты 29.07.2005 поле
будет равным '20050729'.
3.
Хранение времени:
- Время
может храниться в двух
форматах: Числовое представление, Строковое представление.
- В случае числового хранения
времени отсчитывается от начала суток в десятиcячных долях секунды.
Т.е.
фактически будет получено число: (Часы*3600+Минуты*60+секунды)*10000.
Т.е. Для времени 19:05:36 – 687360000 (1С умеет учитывать
время до 1000 долей секунды, как в случае с документами).
- В случае числовго хранения
времени время с числового значения (Часы*3600+Минуты*60+секунды)*10000
переводиться в 36-ричный формат. Так для времени 19:05:36 - BD8IDC.
Описание
таблиц 1С
1.
Таблица
_1SCONNECT - Сессии (соединения)
Краткое
описание:
Таблица
предназначена для хранения уникального
идентификатора сессии первого присоединившегося к базе данных
пользователя в
режиме предприятия (поэтому в таблице всегда только одна запись. Судя
по всему,
именно по наличию записи в этой таблицы и происходит верификация
процедур при
первом запуске в SQL.
Табл.1
Описание полей таблицы _1SCONNECT
| Название
поля |
Описание |
| CONNECTUUID |
GUID
(уникальный идентификатор) первого сеанса,
соединившегося с 1С в режиме предприятия. Тип - Строка(36) |
2. Таблица _1SCONST - Константы
Краткое
описание:
Таблица
предназначена для хранения значений констант
и периодических реквизитов справочников.
Табл.2
Описание полей
таблицы _1SCONST
| Название
поля |
Описание |
| ROW_ID |
Порядковый
номер записи
в таблице.
Тип - Число(int) |
| OBJID |
ID
объекта периодического реквизита (справочника)
или периодической константы, для непериодических констант это поле
равно
‘
0 ’. Тип - Строка(9) |
| ID |
ID
(идентификатор)
константы или периодического
реквизита справочника. Тип представлен в виде десятичного числа
(_StrToID()). Тип - Число(int) |
| DATE |
Дата
установки периодического реквизита. Для базы в
формте SQL и для непериодического реквизита (или константы) поле
заполняется
значением '1753-01-01 00:00:00.000'. Тип - Дата (datetime для SQL) |
| VALUE |
Значение
константы или периодического реквизита.
Для неопределенных типов по умолчанию заполняется
«U». Тип- Строка(255) |
| DOCID |
ID
(идентификатор) документа (поле, связанное с
полем IDDOC таблицы журналов (_1SJOURN)). Для значений установленных
вручную
или непереиодических заполняется
' 0 ' |
| TIME |
Время
установки значения в десятичном формате
((Часы*3600+Минуты*60+секунды)*10000). Тип - Число(int) |
| ACTNO |
Номер
движения документа (включая каждое движения
по регистрам и запись периодических реквизитов за исключением
проводок). В
случае непериодического значения заполняется нулем. Тип - Число(int) |
| LINENO_ |
Номер
строки документа (заполняется при вызове
метода ПривязыватьСтроку(), если привязка не выполнена или
непериодическое
значение - заполняется нулем). Тип - Число(tinyint) |
| TVALUE |
Заполняется
только для неопределенных реквизитов,
для типов данных 1С (когда длина ID равна 23 символам). Тип - Строка(3) |
3. Таблица
_1SCRDOC - Ссылки документов
Краткое
описание:
Таблица предназначена для
хранения
ссылок подчиненных документов и граф отборов реквизитов документов,
которые не есть общими реквизитами. Для хранения ссылок документов в
подчиненном документе должен быть реквизит (поле) в котором будет
ссылка на документ-родитель. Без такой ссылки документ не считается
подчиненным.
Табл.3
Описание полей таблицы _1SCRDOC
| Название
поля |
Описание |
| ROW_ID |
Порядковый
номер записи
в таблице.
Номер проставляется автоматически при вводе новой строки. При изменении
даты документа, введенного на основании, это поле
«переприсваивается». Тип - Число(int) |
| MDID |
Номер
графы отбора
подчиненного
документа. Тип - Число(int) |
| PARENTVAL |
Полный
идентификатор
документа
родителя. Тип – Строка(23) |
| CHILD_DATE_TIME_IDDOC |
Дата
+ Время(в 36-ричном
формате)
+ ИД подчиненного документа. Тип – Строка(23) |
| CHILDID |
ИД
подчиненного
документа. Тип
– Строка(9) |
| FLAGS |
???
Тип –
Число(1) |
4.
Таблица _1SJOURN - Журналы
Краткое
описание:
Таблица предназначена для
хранения
списка всех документов. Именно эта таблица является узким местом при
работе большого числа пользователей (так как она блокируется полностью
каждым пользователем в момент проведения документов).
Табл.4
Описание полей таблицы _1SJOURN
| Название
поля |
Описание |
| ROW_ID |
Порядковый
номер записи
в таблице.
Номер присваивается в порядке ввода документов. При изменении даты или
времени – не изменяется. Тип - Число(4) |
| IDJOURNAL |
ID
журнала документов,
которому
принадлежит документ (из метаданных). Тип -
Число(4) |
| IDDOC |
ID
документа в 36-ричной
системе
исчеслений. Тип - Строка(9) |
| IDDOCDEF |
ID
вида документа. Номер
документа
из метаданных (номер, а не 36-ричное представление). Тип - Число(4) |
| APPCODE |
Число,
отражающее
принадлежность
документа к компонентам.
Возможные значения:
0 - не принадлежит никакому учету,
(1) 000001 - опер учет.
(2) 000010 - расчет.
(4) 000100 - бух учет.
(8) 001000 - движения периодических реквизитов
(16) 010000 - существует документ операция у документа (Документ может
быть непроведен, но тогда должно быть выбрано Создавать операцию -
Всегда в окне свойства докумнета)
(32) 100000 - Выполнен метод Операция.Записать(); в документе, принадлежащем бух. учету.
(20) 010100 - Это документ "Операция".
Возможна их комбинация, например 6 =
2+4 (бух. учет + расчет), 7 = все три компоненты.
Тип - Число(2) |
| DATE_TIME_IDDOC |
Составное
поле
обозначающее
позицию документа во времени + ID документа.
8 первых символов - дата документа в виде «ГГГММДД».
6 следующих символов время документа в 36-ричной системе
исчисления, причем время рассчитывается от начала дня в сотых частях
милисекунды (10-5), т.е. время 00:00:01 будет равно 10000, или же в
36-ричной системе «7PS».
9 последних символа - ID документа. Этот ID также составной, 6 символов
- порядковый номер введенного документа в сситему в 36-ричной системе
(причем считаются не только сохраненные документы, а также те, которые
не были сохранены), последние 3 символа - идентификатор базы УРИБ (если
данные вводятся в распределенной ИБ).
Тип - Строка(23) |
| DNPREFIX |
Префикс
номера
документа. Тип -
Строка(18). Для документов, у которых код числовой это поле равно
десятичному ID вида документа. Если нумерация в пределах преиода - то
также храниться и период в виде ГГГГММДД (например 2006 для нумерации в
пределах года). |
| DOCNO |
Номер
документа. Длина
определяется максимальным номером всех документов. Тип - Строка
(максимальное значение - 20) |
| CLOSED |
Флаг проведения документа.
Для каждого набора компонент свое значение (аналогично полю APPCODE).
Значение последнего байта отвечате за флаг проведения документа. Тип -
Число(1) |
| ISMARK |
Флаг
пометки на
удаление. 0 - не
помечен, 1 - помечен. Тип - Число(1,0) (бинарное значение) |
| ACTCNT |
Счетчик
действий
(движения) для
документа (один документ может вызывать несколько движений регистра).
Фактически хранит информацию о количестве движений по всем регистрам +
записи периодических реквизитов (без учета проводок по бух.
учету) Тип – Число(4) |
| VERSTAMP |
Количество
изменений
записи
таблицы. Изменением считается любое действие "Изменить (открыть)" +
действия при изменении структуры. Тип - Число(4) |
| RFxxx |
Флаг
наличия движений по
регистру
"xxx". Тип - Число(1,0) |
| SPyyy |
Значение
общих
реквизитов
документов, в которых установлено свойство «отбор».
Если свойство «отбор» не установлено, то общие
реквизиты хранятся в таблицах документов (DHxxx). Тип - Число, Строка,
Дата |
| TSPyyy |
Дополнение
к общим
реквизитам,
заполняется только для неопределенных типов значений реквизитов отбора
(используется совместно с полем «SPyyy»). Тип -
Строка(3) |
| DSzzz |
Флаг
принадлежности последовательности. ZZZ - десятичный ID
последовательности. Принимает 3 значения: 0 - документ не
принадлежит последовательности, 1 - документы находятся на границе или
за границей последовательнсоти (тлт находился на ней), 2 - документы
находятся перед границей последовательности (устанавливается в момент
проведения).
|
5.
Таблица _1SDNLOCK - Номеров документов
Краткое
описание:
Таблица предназначена для
хранения
информации о зарезервированных номерах документов, т.е. тех. номерах
документов, которые вводятся в данный момент в систему, но еще не
сохранены (не записаны в таблицу журналов _1SJOURN)
Табл.5
Описание
полей таблицы _1SDNLOCK
| Название поля |
Описание |
| DNPREFIX |
Идентификатор
вида
документа или
справочника. Для документа также включает время (всегда 0 0). Тип
– Строка(28) |
| DOCNO |
Зарезервированный
номер.
Тип
– Строка(10) (определяется максимальным номером в системе,
максимальное значение - 20) |
6.
Таблица _1SSTREAM - Последовательность документов
Краткое
описание:
Таблица
предназначена для хранения
информации о последовательностях.
Табл.6
Описание
полей таблицы _1SSTREAM
| Название
поля |
Описание |
| ID |
Идентификатор
последовательности
(числовое представление). Тип –
Число(4) |
| DATE_TIME_DOCID |
Дата+Время+идентификатор
документа, на котором установлена последовательность. Это поле
аналогично полю DATE_TIME_IDDOC таблицы _1SJOURN. Тип –
Строка(23) |
7.
Таблица _1SSYSTEM - Системная
Краткое
описание:
Таблица предназначена для хранения
информации о датах точки
актуальности и рассчитанного периода бухгалтерских итогов, также в
таблице храниться информация о параметрах УРБД.
Табл.7
Описание полей таблицы _1SSYSTEM
| Название
поля |
Описание |
| CURDATE |
Дата
точки актуальности.
Тип -
Дата (для SQL DateTime) |
| CURTIME |
Время
точки
актуальности. Время
храниться в десятичном виде: (Часы*3600+Минуты*60+секунды)*10000.
Преобразовав этого поля в 36-ричное значение получим вторую подгруппу
значений поля DATE_TIME_IDDOC (сред(DATE_TIME_IDDOC ,9,6)) таблицы
1SJOURN. Тип - Число(4) |
| EVENTIDTA |
ID
документа, на котором
установлена ТА. Тип - Строка(9) |
| DBSIGN |
Код
базы УРИБ
(ТекущаяИБКод()).
Тип - Строка(3) |
| DBSETUUID |
GUID
базы УРИБ.
Тип-Строка(36) |
| SNAPSHPER |
Периодичность
итогов
регистров
остатков (устанавливается в меню Операции - Управление оперативными
тогами-Периодичность сохранения остатков). F – 5 дней. C
– Декада (10 дней). T – 15 дней. M –
месяц. Тип-Строка(1) |
| ACCDATE |
Дата
актуальности
бухгалтерских
итогов. Тип - Дата (для SQL DateTime) |
| FLAGS |
???
Тип -
Число(4) |
Периодичность
итогов регистров оборотов. «D» -
День, «W» - Неделя,
«C» - Декада, «M» - Месяц,
«Q» - Квартал, «Y» - Год.
8.
Таблица _1SUIDCTL - Уникальности
Краткое
описание:
Таблица предназначена для хранения
информации о последнем ID коде
документов и справочников.
Табл.8
Описание полей таблицы _1SUIDCTL
| Название
поля |
Описание |
| TYPEID |
Идентификатор
вида
справочника,
или же 0 для всех документов (у всех документов сквозная нумерация ID)
. Тип – Число(4) |
| MAXID |
Максимальный
используемый идентификатор
(ID) |
9. Таблица
_1SUSERS - Соединений
Краткое
описание:
Таблица предназначена для
хранения
информации о подключенных
пользователях. В Таблице всегда одна строка. Именно па наличию строки в
этой таблице 1С судит об аварийном завершении программы и предлагает
переиндексировать ИБ в случае dbf-версии.
Табл.9
Описание полей таблицы _1SUSERS
| Название
поля |
Описание |
| USRSCNT |
Количество
подключенных
пользователей к 1С в режиме 1С
предприятия |
| NETCHGCN |
Счетчик
действий
пользователей,
которые привели к изменению в базе данных (записи в таблицы). Счетчик
учитывает количество записей в таблицы (т.е. в случае проведения
документа с несколькими движениями учитывается каждое
движение) |
|