В табличной модели данных сущности и связи между ними представляются таблицами и отношениями между ними. Таблица состоит из строк и столбцов и имеет имя, уникальное внутри базы данных. Таблица отражает тип объекта реального мира (сущность), каждая ее строка - конкретный объект, каждый столбец - атрибут. Сущности, атрибуты и связи хранятся в таблицах как данные определенного типа.
К достоинствам табличной модели можно отнести тот факт, что построение модели предметной области по существу совпадает с проектированием структуры БД.
К недостаткам табличной модели можно отнести известную сложность корректного моделирования, которое требует наличия опыта и хорошего понимания сути отношений между таблицами (сущностями).
Инструментом отбора и анализа данных является язык запросов SQL. В «1С: Предприятии» табличная модель данных используется явно только при создании и редактировании запросов. В инструменте Конструктор запроса разработчик может использовать иерархический список объектов табличной модели данных.
Для каждой моделируемой разработчиком сущности создается как минимум одна таблица БД. Архитектура платформы и инструментарий не позволяют обращаться к таблицам и их полям непосредственно по именам, подобно традиционным СУБД. Разработчик 1С не знает имен таблиц и полей, как они представлены в БД. Вместо этого он использует наименования, соответствующие моделируемым объектам. Тем не менее, на уровне БД им соответствуют таблицы.
В «1С: Предприятии» различают два типа таблиц.
Реальные таблицы соответствуют моделируемым объектам (сущностям) и хранятся в базе данных. Реквизиты объектов соответствуют полям таблиц.
Виртуальные таблицы соответствуют некоторым промежуточным данным, предназначенным для использования в конфигурации. В базе данных не хранятся. Являются непрямым аналогом просмотров.
Поля таблиц могут иметь простой или составной тип данных. Составной тип данных позволяет хранить для разных записей значения различных типов.
Поле таблицы может иметь тип вложенная таблица. Как правило, это табличные части объектов или результаты запросов. В любом случае тип данных поля вложенной таблицы – результат запроса, который представляет собой набор колонок и записей.
Таблица констант – реальная таблица, имеет название «Константы». Для новых констант автоматически создаются новые поля, так как константы могут иметь различные типы данных, а отобразить это в таблице БД можно только при помощи новых полей. Эта таблица имеет только одну запись – значения констант.
Таблицы справочников – реальные таблицы. Каждый справочник представляется отдельной таблицей. Имя таблицы соответствует имени справочника «Справочник.ИмяСправочника». На примере таблицы справочника рассмотрим примерную структуру таблицы:
Код (строка, число) – уникальный код элемента справочника и записи в таблице;
Наименование (строка) – наименование элемента справочника;
Родитель (СправочникСсылка) – ссылка на родительский элемент справочника;
Владелец (СправочникСсылка) – ссылка на элемент справочника-владельца, который является главным по отношению к этому элементу подчиненного справочника;
Реквизиты (тип реквизита) – переменный список полей реквизитов элемента справочника;
ТабличныеЧасти (РезультатЗапроса)
Для реквизитов и табличных частей создаются поля по их числу и типам, представленным в дереве конфигурации.
Таблицы документов – реальные таблицы. Каждый документ представляется отдельной таблицей. Имя таблицы соответствует имени документа «Документ.ИмяДокумента».
Таблицы журналов документов – виртуальные таблицы. Каждый журнал представлен отдельной таблицей. Имя таблицы соответствует имени журнала. В состав полей таблиц входят поля документов и поля граф журнала.
Таблицы регистров сведений – реальные таблицы. Каждый регистр представляется отдельной таблицей. Имя таблицы соответствует имени регистра «РегистрСведений.ИмяРегистра».
Регистры сведений имеют две виртуальные таблицы.
Таблица среза последних записей. Предназначена для получения наиболее близких в прошлом записей регистра на указанную дату включительно. Содержит только активные записи. Эта таблица имеет следующую структуру:
Период (дата)
Регистратор (ДокументСсылка)
НомерСтроки (число)
Активность (булево)
Измерения (тип измерения)
Ресурсы (тип ресурса)
Реквизиты (тип реквизита)
Для получения данных из этой таблицы необходимо задать дату среза последних и можно задать дополнительные условия для поиска конкретных записей по измерениям регистра.
Таблица среза первых записей. Предназначена для получения наиболее близких в будущем записей регистра на указанную дату включительно. Содержит только активные записи. Имеет структуру, аналогичную таблице среза последних записей.
Таблицы регистров накоплений – реальные таблицы. Каждый регистр представляется отдельной таблицей. Имя таблицы соответствует имени регистра «РегистрНакоплений.ИмяРегистра».
Регистры накопления имеют три виртуальные таблицы.
Таблица остатков хранит сведения об остатках регистра. Содержит только активные записи. Существует только для регистров остатков. Структура:
Измерения (тип измерения)
РесурсОстаток (число)
Для получения данных из этой таблицы необходимо обязательно задать период вычисления остатков.
Таблица оборотов хранит сведения об оборотах регистра за период. Содержит только активные записи. Существует для регистров оборотов. Структура:
Период (дата)
Регистратор (ДокументСсылка)
Измерения (тип измерения)
РесурсОборот (число)
РесурсПриход (число)
РесурсРасход (число)
Для получения данных из этой таблицы необходимо задать период и периодичность: регистратор, день, неделя, месяц, квартал, год.
Таблица остатков и оборотов хранит сведения об остатках и оборотах регистра одновременно. Содержит только активные записи. Существует для обоих видов регистра (остатков и оборотов). Структура:
Период (дата)
Регистратор (документссылка)
Номерстроки (число)
Измерения (тип измерения)
РесурсОборот (число)
РесурсПриход (число)
РесурсРасход (число)
РесурсНачальныйОстаток (число)
РесурсКонечныйОстаток (число)
Для получения данных из этой таблицы необходимо задать период, периодичность и дополнение: движения (периоды в которых были движения), движения и границы периода (периоды в которых были движения и были остатки на начало и конец),
Таблицы регистров бухгалтерии – реальные таблицы. Каждый регистр представляется отдельной таблицей. Имя таблицы соответствует имени регистра «РегистрБухгалтерии.ИмяРегистра». Вместе с регистрами бухгалтерии используются таблицы значений субконто – реальные таблицы. Также для регистров бухгалтерии существуют следующие виртуальные таблицы:
Таблицы движений с субконто. Содержит сведения о записях регистра вместе с значениями субконто.
Таблица остатков. Содержит сведения об остатках на произвольную дату в разрезе счета, измерений, субконто.
Таблица оборотов. Содержит сведения об оборотах на произвольную дату в разрезе счета, корсчета, измерений, субконто, корсубконто.
Таблица остатков и оборотов. Содержит сведения об остатках и оборотах с заданной периодичностью в разрезе счета, субсчета, измерений.
Таблицы регистров расчета – реальные таблицы. Каждый регистр представляется отдельной таблицей. Имя таблицы соответствует имени регистра «РегистрРасчета.ИмяРегистра».
Аналогом SQL в «1С:Предприятии» является язык запросов. Синтаксис и основные конструкции языка почти идентичны стандарту ANSI SQL 92. Возможна запись в русскоязычной и англоязычной нотациях.
Назначение запросов – извлечение данных, структура которых отличается от структуры таблиц и анализ данных. Для того, чтобы использовать запрос, необходимо выполнить следующие действия:
1. Создать объект запроса.
2. Разработать запрос. (Это можно делать вручную в редакторе кода или при помощи специального инструмента – Конструктора запросов)
3. Задать параметры запроса
4. Исполнить запрос
5. Обработать результаты запроса
6. Отобразить результаты запроса
Рис.2.21. Алгоритм выполнения запроса
Для использования запросов имеется объект встроенного языка:
НекоторыйЗапрос = Новый Запрос(текст);
Текст запроса также можно задавать не в конструкторе, но и при помощи свойства
Запрос.Текст = “ВЫБРАТЬ …..”;
Параметры запроса задаются методом
Запрос.УстановитьПараметр(Имя, Значение);
Выполнение запроса осуществляется методом
Запрос.Выполнить();
Результаты запроса необходимо представить пользователю или использовать в программном коде для дальнейшей работы. Метод Выполнить() возвращает коллекцию РезультатЗапроса, которая содержит набор записей запроса. Структура записей определяется свойством Колонки
Обращаться к коллекции можно так:
РезультатЗапроса[1][1]
РезультатЗапроса.Колонки[1]
Также возможно обращение по именам колонок. При этом согласование типа данных ложится на разработчика.
Перебор записей результата запроса осуществляется при помощи объекта Выборка: