spacehelp на twitterRSSspacehelp на Facebook

Подсистема справочников и констант

Что являют собой
справочники? В понимании 1С это объекты для хранения условной
постоянной информации (константы - для хранения постоянной или очень
редко изменяющейся информации).

С токи зрения же теории баз данных, справочники являются типичными
таблицами (по одной на каждый справочник). А вот с константами -
гораздо сложнее. Точнее с первого взгляда проще, но это только с
первого взгляда. Так, все константы хранятся в одной таблице
_1SCONST, но, также в этой таблице хранятся и значения всех
периодических реквизитов справочников.

Все таблицы справочников имеют почти одинаковые имена, эти таблицы
именуются первыми 2 символами SC, далее следует десятичное
представление справочника. Это десятичное представление - сквозная
нумерация всех объектов внутри конфигурации (включая реквизиты и т.д.).
В наших примерах таблица справочника будет иметь имя таблицы SC19,
т.е. этот справочник был создан 19 по номеру в конфигурации среди
всех объектов.

 

Описание полей таблиц справочников



 

Табл.1
Описание полей таблиц справочников SCxxx


 
Название поля  Описание  
ROW_ID Порядковый номер
записи в таблице. Тип - Число(int)
ID ID элемента, тип «строка»,
по этому полю осуществляется связь с таблицами, где в
качестве реквизита выбирается справочник, а также с таблицей
констант (для периодических реквизитов). Нумерация сквозная,
именно этот код должен быть уникальный в пределах таблицы.
Тип - Char(9)
CODE Номер элемента (Код)
справочника. Тип - Char(n), где n - длина номера справочника.
Если длина кода = 0, это поле отсутствует.
DESCR Наименование
элемента. Тип - Char(n), где n - длина номера справочника.
Если длина кода = 0, это поле отсутствует.
ISMARK Флаг пометки на
удаление элемента. Тип - bit. 0 - не помечен, 1 - помечен.
VERSTAMP Количество
изменений записи таблицы. Изменением считается любое
действие "Изменить (открыть)" + действия при изменении
структуры. Тип - Integer.
SPххx Реквизит
справочника(типы: Numeric, DateTime, Char(n), n=1:999)
TSPххx Дополнение к
реквизиту, заполняется только для неопределенных типов
значений (используется совместно с полем «SPххx»). Тип -
Char(3)
PARENTID ID элемента
являющимся родителем (группой) для текущей записи (элемента).
Поле связано с полем ID или же если родителя нет - заполнено
пустым ID '     0   '. Тип - Сhar(9). Это поле появляется в
таблице справочника, лишь тогда, когда справочник имеет
больше 1 уровня.
ISFOLDER Флаг того, запись
является элементом или группой. Для групп это поле равно 1,
для элементов - 2. Тип - tinyint (0-255).
PARENTEXT  ID элемента
являющимся владельцем (этот элемент подчинен владельцу с
этим ID).Тип - Сhar(9). Это поле появляется в таблице
справочника, лишь тогда, когда справочнику установлено
значение "Подчинен" одному из справочников системы.

 

    Особое внимание надо уделить полям «TSP». Это поле создается
лишь тогда, когда реквизит (измерение, реквизит) имеет
неопределенный тип (длина ID кода 23 символа). Опытным путем было
установлено:

это поле по умолчанию заполняется пустой строкой (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  ' - был назначен
как тип объекта, так и его вид (например «НазначитьТип(«Справочник.Клиенты»)»)

 



 

Описание полей таблицы констант и периодических реквизитов справочников

Необходимо только учесть, что значения периодических реквизитов
элементов справочников хранятся в таблице
_1SCONST
с заполненным полем
OBJID,
которое равно полю
ID
таблицы справочника. Для констант же, значение поля
OBJID
всегда равно '     0   '.
Также необходимо учесть, что выбрать все периодические значения всех
реквизитов одного элемента (одной записи) невозможно. Дело в том,
что в поле
OBJID
хранится краткий (строка 9 символов) ID,
а такое значение
ID не
подразумевает определения вида справочника. Соответственно чтобы
получить значение конкретного периодического реквизита надо знать
десятичное значение реквизита (_StrToID).
Т.е., выбрав только с условием по OBJID
получим периодические реквизиты всех справочников, с таким
ID, а не
только одного. Но, поскольку нумерация всех
ID
объектов конфигурации (включая и все реквизиты) сквозная, то не
может быть в двух разных справочников реквизитов с одинаковым
ID
реквизита. Соответственно, необходимым условием для получения
значений периодических реквизитов является как условие по полю OBJID
(ID
элемента справочника), так и по полю
ID (десятичное
значение ID
реквизита справочника).

0
No votes yet
Your rating: Нет

Distributed by themes4free.ru