Запросы . Терминология и обозначения
- "Запрос" - объект метаданных типа "Запрос";
- Текст запроса - текстовое описание запроса к ИБ на специализированном языке запросов;
- Выборка - набор данных, полученных в результате выполнения запроса;
- Группировка данных - накопление различных значений одного и того же типа данных.
- Отчёт - совокупность текста запроса, процедуры его выполнения и интерпретации выбранных данных.
Введение
С чего начать
Начнем с начала
Для начала, прежде чем проектировать запрос, необходимо задаться вопросом: "Что же я хочу в результате получить?". Да, да, именно так все и начинается, с тривиальной "постановки задачи".
Постановка задачи
Предположим, я хочу получить "Данные об оборотах и остатках товаров на складах за какой-то период времени" в виде вот такой таблицы:
Формирование текста запроса
Уже изначально, в постановке задачи прозвучали все необходимые данные для построения запроса, такие как: обороты, остатки, товары, склады и период времени . Начнем по порядку:
1. "... за какой-то период времени". Значит, мы можем описать период времени, за который запрос будет извлекать информацию. Отразим это:
Период с '98' по '98'
Правды ради, следует отметить, что задание конкретных дат интервала запроса не слишком удобно в большинстве случаев, поэтому создадим в модуле отчета две внешние переменные, определяющие дату начала и конца запроса - ДатаС и ДатаПо :
Период с ДатаС по ДатаПо;
2. "Данные об оборотах и остатках товаров ...". Значит, мы хотим видеть перечень товаров. Ну что ж, давайте так и сделаем - объявим переменную запроса - Товар
Товар =
3. "Данные об оборотах и остатках товаров на складах ...". Для каждого товара хотим отобразить склад, на котором он хранится. Для этого объявляем переменную Склад :
Склад =
4. "Данные об оборотах ". Во-первых, необходимо определиться, какие конкретные обороты мы хотим отразить: денежные, количественные. Давайте определим
Количество =
Поскольку нам нужны данные об оборотах, то следует объявить и сами функции накопления:
Приход = Функция Приход(Количество);
Расход = Функция Расход(Количество);
Данные об оборотах можно получить различными способами – из документов, обходя все или определенные виды документов за конкретный период времени, и из регистров.
5. "Данные об остатках ". Объявим функции остатков:
НачОст = Функция НачОст(Количество);
КонОст = Функция КонОст(Количество);
Данные об остатках из документов уже не получишь, для этой цели предназначены регистры остатков. Следовательно, в работе запроса мы будем использовать регистры. Этот вывод существенно помогает в проектировании запроса, так как мы теперь в состоянии корректно описать переменные, зная, что учет оборотов и остатков ведется по регистру "Товарные запасы":
Товар = Регистр.ТовЗап.Товар;
Склад = Регистр.ТовЗап.Склад;
Количество = Регистр.ОстаткиТоваров.ОстатокТовара;
6. Если мы хотим получить перечень товаров, то нам необходимо эти товары группировать, то есть отображать различные виды товаров. Для чего мы заводим группировку по переменной Товар :
Группировка Товар;
7. Те же самые резоны приводят нас к созданию группировки по переменной Склад :
Группировка Склад;
8. Теперь соберем полный текст запроса, который можно присвоить какой-нибудь переменной модуля отчёта, скажем, ТекстЗапроса:
ТекстЗапроса =
"Период с ДатаС по ДатаПо
|Товар = Регистр.ТовЗап.Товар;
|Количество = Регистр.ТовЗап.ОстатокТовара;
|Приход = Функция Приход(Количество);
|Расход = Функция Расход(Количество);
|НачОст = Функция НачОст(Количество);
|КонОст = Функция КонОст(Количество);
|Группировка Товар;
|Группировка Склад;
|"//}}ЗАПРОС
;
Получившийся текст запроса - это только часть необходимой работы для получения отчёта, но это как раз та часть, которой мы посвятили эту главу методических рекомендаций.
Что происходит внутри
Как текст запроса превращается в выборку?
После того, как создан агрегатный объект типа "Запрос":
Запрос = СоздатьОбъект("Запрос");
сформулирован текст запроса и присвоен переменной ТекстЗапроса , запрос запускается на выполнение:
Запрос.Выполнить(ТекстЗапроса);
Что же происходит внутри этого метода? Как же там всё устроено?
Попадая в метод Выполнить , текст запроса превращается в выборку путём следующих метаморфоз:
- проверка синтаксиса;
- создание таблицы выборки;
- накопление данных.
Проверка синтаксиса
Правильность написания текста
Сначала проверяется правильность написания самого текста запросов - синтаксическая проверка запроса. Может быть пропущен символ ";", может быть неверно указан путь переменной запроса, в любом случае ошибки должны быть обнаружены и исправлены.
Для выявления синтаксических ошибок на стадии разработки (ещё при работе в конфигураторе) воспользуйтесь пунктом меню " Действи
Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.