Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.03.2019

Просмотров: 48142

Скачиваний: 8323

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

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

ПРИМЕЧАНИЕ

Поле 

Товар

 в таблице регистра на самом деле хранит ссылку на запись справочника

Товары

, но для большей ясности на рис. 1.9 в этом поле отражено представление ссылки в

виде наименования.

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

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

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

Исходные таблицы для запросов

Прежде чем переходить к конкретным примерам использования языка запросов,
остановимся также на составе таблиц базы данных, являющихся источниками запросов.
Состав таблиц, доступных для запроса, и их описание мы можем увидеть в синтакс-
помощнике в разделе Работа с запросами > Таблицы запросов.

Важно понимать, что прямого доступа к физическим таблицам, в которых хранится
информация в базе данных, из «1С:Предприятия» получить нельзя. Это связано с тем,
что в прикладном решении могут использоваться разные СУБД, имеющие свою
специфику, а текст запроса должен быть универсальным и одинаково работать на любой
используемой СУБД. Поэтому при выполнении запроса платформа автоматически
транслирует текст запроса в набор инструкций, которые «понимает» конкретная СУБД.
Кроме того, физические таблицы и поля в них имеют техногенные имена, из которых
непонятно, что именно хранится в данном поле.

Поэтому с помощью запросов мы обращаемся к данным не напрямую, а через
специальную «прослойку» в виде таблиц языка запросов. Этот процесс можно
представить на следующей схеме (рис. 1.10).


background image

Рис. 1.10. Доступ к данным в «1С:Предприятии»

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

Реальные таблицы

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

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

Таблица 1.2. Реальная и физическая таблица справочника «Клиенты»

Реальная таблица

Физическая таблица


background image

Справочник.Клиенты

_Reference<n>

Ссылка

_Id<suff>

ВерсияДанных

_Version

ПометкаУдаления

_Marked

Предопределенный

_IsMetadata

Родитель

_ParentId<suff>

Владелец

_OwnerId<suff>

ЭтоГруппа

_Folder

Код

_Code

Наименование

_Description

<Имя реквизита>

_Fld<n><suff>

<Имя общего реквизита>

_Fld<n><suff>

Представление

<Имя табличной части>

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

подробнее

О поле 

Представление

 рассказано в разделе «

Как получить текстовое представление

ссылочного поля

».

О поле 

Имя табличной части

 рассказано в разделе «

Как получить данные из табличной

части документа в качестве вложенной таблицы

».

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

Реальные таблицы подразделяются на объектные (ссылочные) и необъектные
(нессылочные).

В объектных (ссылочных) таблицах представлена информация ссылочных типов данных
(справочники, документы, планы видов характеристик и т. д.). А в необъектных
(нессылочных) – всех остальных типов данных (константы, регистры и т. д.).

Отличительной особенностью объектных (ссылочных) таблиц является то, что они
включают в себя стандартное поле Ссылка, которое позволяет однозначно


background image

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

Виртуальные таблицы

Виртуальные таблицы формируются в момент выполнения запроса на основе реальных
таблиц базы данных. Например, виртуальная таблица
РегистрСведений.Цены.СрезПоследних формируется на основе таблицы регистра
сведений Цены, рис. 1.11.

Рис. 1.11. Физическая и виртуальная таблица регистра сведений

ПРИМЕЧАНИЕ

Поле 

Товар

 в таблице регистра на самом деле хранит ссылку на запись справочника

Товары

, но для большей ясности на рис. 1.11 в этом поле отражено представление ссылки в

виде наименования.

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


background image

Мы уже рассказывали выше про периодический регистр сведений (см. рис. 1.9).
Благодаря стандартному полю Период регистр может хранить изменяющуюся во времени
информацию для одних и тех же измерений, но для различных периодов.

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

Таким образом, виртуальные таблицы мало похожи на какую-то физическую таблицу и
содержат совсем иной состав записей, чем реальные таблицы.

Язык запросов «1С:Предприятия»

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

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

Общая схема выполнения запросов

Запрос формируется и выполняется разработчиком из встроенного языка. Для этого
предназначены следующие программные объекты:

Запрос,
РезультатЗапроса,
ВыборкаИзРезультатаЗапроса.

Не углубляясь в детали, рассмотрим самую распространенную и простейшую схему
выполнения запроса.

подробнее

Другие варианты выполнения запросов и обработки их результатов будут рассмотрены
позднее в разделе «

Выполнение запросов из встроенного языка

».

1.  Сначала во встроенном языке создается объект Запрос (листинг 1.1).

Листинг 1.1. Создание запроса