584 документа
← К списку

Как хранятся данные в «1С:Предприятии»

страница

Как хранятся данные в «1С:Предприятии»

Прежде чем начинать осваивать язык запросов, важно понять, как хранятся данные в «1С:Предприятии». Для хранения данных «1С:Предприятие» использует реляционные базы данных.

Реляционная база данных представляет собой совокупность различной информации, представленной в виде двумерных таблиц. Таблица базы данных состоит из набора строк и столбцов. Каждая строка (запись) этой таблицы характеризуется рядом значений, содержащихся в ее столбцах (полях).

Для примера можно привести данные о клиентах компании, хранящиеся в справочнике Клиенты. В самом упрощенном виде данные о клиентах хранятся в одной – основной – таблице, где каждому клиенту соответствует одна запись, имеющая один и тот же набор полей, например: Код, Ф. И. О. и др. (табл. 11.1).

Таблица 11.1. Справочник клиентов в информационной базе (основная таблица)

СсылкаКодНаименование
Ref1000000001Иванов Михаил Юрьевич
Ref2000000002Роман
Ref3000000003Спиридонова Галина

Рассмотрите подробнее, как формируется структура таблицы справочника в информационной базе «1С:Предприятия».

Например, при создании в 1C:EDT справочника Клиентыплатформа автоматически создает в информационной базе основную таблицу этого справочника с полями Ссылка, Код, Наименование, ПометкаУдаления, Предопределенный и ВерсияДанных.

ПРИМЕЧАНИЕ

Имена полей Код, Наименование и т. п. здесь используются для простоты изложения. На самом деле имена полей таблиц в базе данных являются техногенными, например: _Code, _Description и т. п.

Затем пользователь в прикладном решении заполняет справочник данными, которые сохраняются в базе данных (рис. 11.1).

Рис. 11.1. Структура простого справочника в 1C:EDT, в «1С:Предприятии» и в информационной базе

Поле Ссылка является уникальным идентификатором записи о клиенте, поля Код, Наименование, ПометкаУдаления, Предопределенный и ВерсияДанных являются стандартными реквизитами, которые платформа добавляет в любой справочник.

На рис. 11.1 также показаны три понятия, которые важно различать. В 1C:EDT добавляется объект конфигурации – справочникКлиенты. Данные этого объекта конфигурации (все записи справочника) вводятся в прикладном решении, затем эти данные записываются в таблицу справочника Клиенты в информационной базе. В этой таблице объектом базы данных является одна запись (данные одного элемента справочника), однозначно идентифицируемая значением поля Ссылка.

Документы устроены аналогичным образом. У них есть поле Ссылка, которая однозначно идентифицирует каждый документ. Кроме этого у них также есть набор стандартных полей, таких как Дата, Номер, ПометкаУдаления, Проведен и ВерсияДанных.

Кроме стандартных реквизитов каждый элемент справочника или документ, как правило, содержит некоторую дополнительную информацию, которая подробнее описывает этот элемент. Для описания этой информации используются реквизиты справочника или документа, которые вы добавляете в дереве конфигурации в 1C:EDT.

Например, все документы ОказаниеУслуги содержат дополнительную информацию о складе, клиенте и мастере. При добавлении реквизитов документа в 1C:EDT платформа создает поля соответствующего типа в основной таблице документа (рис. 11.2).

Рис. 11.2. Структура документа «ОказаниеУслуги», имеющего реквизиты, в 1C:EDT, в информационной базе и в «1С:Предприятии»

Кроме реквизитов каждый документ обычно содержит табличную часть. В ней хранится набор информации, которая одинакова по своей структуре, но различна по количеству и относится к разным документам. Например, каждый документ ОказаниеУслуги содержит информацию о количестве, цене, сумме и стоимости номенклатуры, которая была использована при оказании услуги.

При добавлении в документ табличной части в информационной базе создается таблица, подчиненная основной таблице документа. Она содержит стандартные поля Ссылка, НомерСтроки и поля, соответствующие реквизитам табличной части, добавленным в 1C:EDT. Таблица, содержащая табличную часть, связана с основной таблицей по полю Ссылка. Благодаря этому можно получить информацию из табличной части, относящуюся к конкретному документу (рис. 11.3).

Рис. 11.3. Документ с табличной частью в 1C:EDT, в информационной базе и в «1С:Предприятии»

В информационной базе создается столько подчиненных таблиц, сколько табличных частей создано у документа.

Таким образом, на примере документа, имеющего табличную часть, вы видите, что одному объекту конфигурации в информационной базе могут соответствовать несколько таблиц: основная и одна или несколько подчиненных ей по полю Ссылка. При этом одному объекту базы данных соответствует одна запись в основной таблице и одна или несколько записей в подчиненных таблицах, содержащих табличные части (рис. 11.3).

Теперь рассмотрите другой пример, когда поле ссылочного типа служит для связи данных двух разных объектов конфигурации. Как вы знаете из занятия по встроенному языку, ссылочные типы данных не существуют изначально в конфигурации, а появляются при создании соответствующих объектов конфигурации. Причем для каждого объекта конфигурации во встроенном языке создается свой тип ссылки. То есть при создании справочника Номенклатура появляется ссылочный тип данных СправочникСсылка.Номенклатура, при создании справочника Клиенты – тип СправочникСсылка.Клиенты, при создании документа ОказаниеУслуги – тип ДокументСсылка.ОказаниеУслуги и т. д. Поля, содержащие данные такого типа, называются ссылочными полями.

Например, документ ОказаниеУслуги имеет поле, ссылающееся на справочник Клиенты (рис. 11.4).

Рис. 11.4. Документ, имеющий поле ссылочного типа, в 1C:EDT, в информационной базе и в «1С:Предприятии»

ПРИМЕЧАНИЕ

Поле Клиент документа ОказаниеУслуги на самом деле хранит ссылку на запись справочника Клиенты, но для большей ясности в таблице на рис. 11.4 в этом поле отражено представление ссылки в виде наименования.

В приведенном примере поле Клиент документа ОказаниеУслуги имеет ссылочный тип СправочникСсылка.Клиенты, а значениями этого поля являются ссылки на конкретные элементы справочника Клиенты. В этом случае, обращаясь к полю Клиент в документе, вы можете получить любые данные о клиенте, на которого ссылается данное поле.

Таким образом, вы рассмотрели некоторые примеры хранения в информационной базе «1С:Предприятия» ссылочных типов данных, таких как справочники, документы, планы видов характеристик и т. д.

В заключение посмотрите, как хранятся в информационной базе «1С:Предприятия» нессылочные данные, доступ к которым нельзя получить через поле Ссылка.

Например, периодический регистр сведений Цены предназначен для хранения данных (ресурс Цена) в разрезе измерений (измерение Номенклатура) с привязкой ко времени. Благодаря стандартному полю Период регистр сведений может хранить не только актуальные значения данных, но и историю их изменения во времени.

На основе объекта конфигурации Регистр сведений платформа создает в информационной базе таблицу, в которой может храниться произвольная информация, «привязанная» к набору измерений и периоду. Например, периодический регистр сведений Цены, имеющий измерение Номенклатура и ресурс Цена, хранит изменяющуюся во времени информацию о ценах на товары (рис. 11.5).

Рис. 11.5. Периодический регистр сведений в 1C:EDT, в «1С:Предприятии» и в информационной базе

ПРИМЕЧАНИЕ

Поле Номенклатура в таблице регистра на самом деле хранит ссылку на запись справочника Номенклатура, но для большей ясности на рис. 11.5 в этом поле отражено представление ссылки в виде наименования.

Как вы видите, в таблице регистра нет поля Ссылка, посредством которого можно сослаться на конкретную запись регистра. Ключом записи, однозначно идентифицирующим запись, является в случае периодического регистра сведений совокупность значений измерений регистра и периода.

В целом для нессылочных данных вы не можете получить какую-то конкретную запись из таблицы. Но можете получить некоторый набор записей по какому-либо условию (например, отобрать данные регистра сведений по периоду) и затем перебирать его в цикле.