Описание встроенного языка системы 1С Предприятие


         

Период С


Установить временной интервал дат формирования запроса.

Синтаксис:

[[Период] С <Дата>|<ВнешняяПерем> [ПО <Дата>|<ВнешПеременная>];]

Англоязычный синоним:

[[Period] From <Дата>|<ВнешПеременная> [Till <Дата> | <ВнешПеременная>];]

Параметры:



<Дата>

Константа типа «Дата», «Документ» или . позиция документа.

<ВнешПеременная>

Внешняя переменная типа «Дата», «Доку­мент» или позиция документа. Если указан документ, то за момент времени принима­ется дата и время документа.

По

Добавочное ключевое слово для связки первой части команды со второй, необяза­тельной частью.

Описание:

Оператор Период С устанавливает интервал дат формирования запроса. Если в описании запроса оператор Период С опущен, то интервал дат форми­рования запроса устанавливается в точку актуальности

итогов (ТА) (или на РабочуюДату, если не установлена компонента «Оперативный учет»), запрос формируется только на этот момент времени.

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

Параметрами оператора Период С являются значения момента времени («Дата», «Документ» или позиция документа) начала и конца временного ин­тервала. Следует особо обратить внимание, что если интервал задается с точно­стью до даты, то интервал времени считается от начала даты нижней границы интервала до конца даты верхней границы интервала. Если вторая часть опера­тора после ключевого слова По пропущена или значение второго параметра команды равно нулю, то интервал времени применяется от начального момента времени до ТА (или по РабочуюДату, если не установлена компонента «Опе­ративный учет»). Это особенно важно при формировании запросов по регист­рам, т. к. запрос по регистрам может строиться от любой даты в прошлом до ТА. Поэтому, если вы укажете в запросе верхнюю границу интервала большей или равной дате ТА, то программа скорее всего сообщит «Не могу рассчитать регистры за ТА» (поскольку время ТА лежит где то в пределах даты, а запрос пыта­ется учесть всю дату в целом). Поэтому при формировании текста запроса следует вставлять дополнительную проверку типа той, что приведена в следу ющем примере:




Пример:

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"Счет = Регистр.Cash.Счет;

|Статья = Регистр.Cash.Статья;

|СуммаЭквивалента2 = Регистр.Cash.СуммаЭквивалента2;

|СуммаЭквивалента1 = Регистр.Cash.СуммаЭквивалента1;

......

Если ДатаКонца >= ПолучитьДатуТА() Тогда

   ТекстЗапроса = ТекстЗапроса + "Период с ДатаНачала;";

Иначе

   ТекстЗапроса = ТекстЗапроса + "Период с ДатаНачала по ДатаКонца;";

КонецЕсли;

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;

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

Применение конструкции "С ... По ..." приводит к тому, что выборка записей из журнала расчетов проводится по времени действия записей журнала расчетов, определяемых реквизитами журнала расчетов "ДатаНачала" и "ДатаОкончания", а не временем их ввода в журнал. Более подробно о двойст­венности временного представления журналов расчетов см. выше, в главе «Ра­бота с Журналами расчетов».

Замечание. Работа запроса с журналами расчетов, с использованием конст­рукции "Период С ... По ...", аналогична выборке записей в журна­ле расчетов, организуемой при помощи метода журнала расчетов ВыбратьПериод. С другой стороны, запрос, использующий конструк­цию "С ... По ...", аналогичен выборке, организуемой при помощи метода журнала расчетов ВыбратьЗаписи.

Пример:

*

Процедура РасчЛистки()

   Перем Запрос, Флаг;

   Перем ДатаНач, ДатаКон;

   ЖР = СоздатьОбъект{"ЖурналРасчетов.Зарплата");

   Нач = ЖР.НачалоТекущегоПериода();

   Кон = ЖР.КонецТекущегоПериода();

   //Создание объекта типа Запрос

   Запрос = СоздатьОбъект("Запрос");



   Флаг = Запрос.Выполнить(

   "//{{ЗАПРОС(РасчЛистки)

   |Период С ДатаНач По ДатаКон; // выборка по расчетным периодам!

   |Рез = ЖурналРасчетов.Зарплата.Результат;

   |Расч = ЖурналРасчетов.Зарплата.ВидРасч;

   |Дни = ЖурналРасчетов.Зарплата.Дни;

   |Сотр = ЖурналРасчетов.Зарплата.Объект;

   |Группировка Сотр без групп;

   |Группировка Расч;

   |функция Сум = Сумма(Рез);

   |функция Дней = Сумма(Дни);

   |Условие(Рез о 0);

   |"//}}ЗАПРОС

   );

   // ...

КонецПроцедуры;

*

//Создание объекта типа Запрос

Запрос = СоздатьОбъект("Запрос");

// ниже формируется текст запроса с выборкой по времени

// действия записей журнала расчетов, а не по расчетным периодам!

ТекстЗапроса =

"//{{ЗАПРОС(Сформировать)

|С ДатаНач По ДатаКон;

|Рез = ЖурналРасчетов.Зарплата.Результат;

|Сотр = ЖурналРасчетов.Зарплата.Объект;

|ПЖ = ЖурналРасчетов.Зарплата.ПериодРегистрации;

|Группировка Сотр без групп;

|Группировка ПЖ;

|Функция Сум = Сумма(Рез);

"//}}ЗАПРОС

;

Флаг = Запрос.Выполнить(ТекстЗапроса);

// ...


Содержание раздела