Статьи
Меню сайта


Категории каталога
Описание общих таблиц 1С (вер. 7.7) [4]
Краткое описание общих таблиц: _1SCONNECT, _1SCONST, _1SSYSTEM, _1SUIDCTL, _1SUSERS и пр.
Общая информация [1]
Общая информация касающаяся структуры хранения, особенностей форматов полей и пр.


Форма входа


Поиск


Друзья сайта



Приветствую Вас, Гость · RSS 30.10.2024, 11:25
Главная » Статьи » Структура данных 1С (вер. 7.7) » Общая информация

Общее описание хранения данных 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

Источник: http://www.metaprog.co.ua/secrprog/
Категория: Общая информация | Добавил: vandalsvq (07.03.2009) | Автор: pvase
Просмотров: 11160 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
Сделать бесплатный сайт с uCoz