Операторы языка запросов
Период С
Установить временной интервал дат формирования запроса.
Синтаксис:
[[Период] С <Дата>|<ВнешняяПерем> [ПО <Дата>|<ВнешПеременная>];]
Англоязычный синоним:
[[Period] From <Дата>|<ВнешПеременная> [Till <Дата> | <ВнешПеременная>];]
Параметры:
<Дата> | Константа типа "Дата", "Документ" или. позиция документа. |
<ВнешПеременная> | Внешняя переменная типа "Дата", "Документ" или позиция документа. Если указан документ, то за момент времени принимается дата и время документа. |
По | Добавочное ключевое слово для связки первой части команды со второй, необязательной частью. |
Описание:
Оператор Период С устанавливает интервал дат формирования запроса. Если в описании запроса оператор Период С опущен, то интервал дат формирования запроса устанавливается в точку актуальности итогов (ТА) (или на РабочуюДату, если не установлена компонента "Оперативный учет"), запрос формируется только на этот момент времени.
Использование данного оператора актуально только в том случае, если запрос строится для выборки данных по регистрам, журналам расчетов и/или документам. Здесь указывается, в каком интервале выбирать движения регистров и/или подборку документов. При выполнении запроса только по справочникам эта секция не играет никакой роли.
Параметрами оператора Период С являются значения момента времени ("Дата", "Документ" или позиция документа) начала и конца временного интервала. Следует особо обратить внимание, что если интервал задается с точностью до даты, то интервал времени считается от начала даты нижней границы интервала до конца даты верхней границы интервала. Если вторая часть оператора после ключевого слова По пропущена или значение второго параметра команды равно нулю, то интервал времени применяется от начального момента времени до ТА (или по РабочуюДату, если не установлена компонента "Оперативный учет"). Это особенно важно при формировании запросов по регистрам, т. к. запрос по регистрам может строиться от любой даты в прошлом до ТА. Поэтому, если вы укажете в запросе верхнюю границу интервала большей или равной дате ТА, то программа скорее всего сообщит "Не могу рассчитать регистры за ТА" (поскольку время ТА лежит где то в пределах даты, а запрос пытается учесть всю дату в целом). Поэтому при формировании текста запроса следует вставлять дополнительную проверку типа той, что приведена в следу ющем примере:
Пример:
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "Счет = Регистр.Cash.Счет; |Статья = Регистр.Cash.Статья; |СуммаЭквивалента2 = Регистр.Cash.СуммаЭквивалента2; |СуммаЭквивалента1 = Регистр.Cash.СуммаЭквивалента1; ...... Если ДатаКонца >= ПолучитьДатуТА() Тогда ТекстЗапроса = ТекстЗапроса + "Период с ДатаНачала;"; Иначе ТекстЗапроса = ТекстЗапроса + "Период с ДатаНачала по ДатаКонца;"; КонецЕсли; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
Работа команды при формировании запросов к журналам расчетов зависит от того, используется ключевое слово "Период" или нет. Применение конструкции "Период С … По…" приводит к тому, что выборка записей из журнала расчетов осуществляется в разрезе расчетных периодов конкретного журнала, фактически, по времени ввода строк журнала расчетов в систему.