Описание общих таблиц 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.

Дполнителуьню ифномарцию можно получить здесь:
http://www.mista.ru/articles1c/hare/article.8.html
http://www.mista.ru/articles1c/hare/article.11.html
http://www.mista.ru/articles1c/hare/article.12.html
http://www.mista.ru/articles1c/hare/article.13.html
http://1csql.ru/materials/articles/develop.html
http://www.gendin.ru/budni/b25.html
http://www.gendin.ru/budni/b26.html
http://gendin.ru/budni/files/1ctables.xls
http://web-team.narod.ru/index.html
http://www.sinor.ru/~my1c/knowhow/fields.html

Описание таблиц 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 Счетчик действий пользователей, которые привели к изменению в базе данных (записи в таблицы). Счетчик учитывает количество записей в таблицы (т.е. в случае проведения документа с несколькими движениями учитывается каждое движение)
© pvase 2006