02.04.2016

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

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

Ниже видео данного урока



Финальный текст запроса выглядит следующим образом:

  

ВЫБРАТЬ
	ДанныеПроизводственногоКалендаря.Дата КАК Дата,
	ВЫБОР
		КОГДА ДанныеПроизводственногоКалендаря.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
			ТОГДА 1
		ИНАЧЕ 0
	КОНЕЦ КАК РабочиеДни
ПОМЕСТИТЬ ДанныеКалендаря
ИЗ
	РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
ГДЕ
	ДанныеПроизводственногоКалендаря.Дата >= &ТекущаяДата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДанныеКалендаря.Дата КАК Дата,
	СУММА(ДанныеКалендаря1.РабочиеДни) КАК КоличествоРабочихДней
ПОМЕСТИТЬ РабочиеДни
ИЗ
	ДанныеКалендаря КАК ДанныеКалендаря
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеКалендаря КАК ДанныеКалендаря1
		ПО ДанныеКалендаря.Дата >= ДанныеКалендаря1.Дата

СГРУППИРОВАТЬ ПО
	ДанныеКалендаря.Дата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДополнительныеСведения.Объект,
	ДополнительныеСведения.Свойство,
	ДополнительныеСведения.Значение КАК КалендарныеДни,
	ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, ВЫРАЗИТЬ(ДополнительныеСведения.Значение КАК ЧИСЛО(15, 0))) КАК КалендарнаяДата
ПОМЕСТИТЬ ДанныеНоменклатуры
ИЗ
	РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДанныеНоменклатуры.Объект,
	ДанныеНоменклатуры.Свойство,
	ДанныеНоменклатуры.КалендарныеДни,
	ДанныеНоменклатуры.КалендарнаяДата,
	РабочиеДни.КоличествоРабочихДней
ПОМЕСТИТЬ КалендарныеИРабочиеДни
ИЗ
	ДанныеНоменклатуры КАК ДанныеНоменклатуры
		ЛЕВОЕ СОЕДИНЕНИЕ РабочиеДни КАК РабочиеДни
		ПО ДанныеНоменклатуры.КалендарнаяДата = РабочиеДни.Дата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДанныеКалендаря.Дата КАК Дата,
	ДанныеКалендаря.РабочиеДни
ПОМЕСТИТЬ ТолькоРабочиеДни
ИЗ
	ДанныеКалендаря КАК ДанныеКалендаря
ГДЕ
	ДанныеКалендаря.РабочиеДни = 1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ТолькоРабочиеДни.Дата КАК Дата,
	СУММА(ТолькоРабочиеДни1.РабочиеДни) КАК РабочиеДни
ПОМЕСТИТЬ ГотоваяТолькоРабочиеДни
ИЗ
	ТолькоРабочиеДни КАК ТолькоРабочиеДни
		ЛЕВОЕ СОЕДИНЕНИЕ ТолькоРабочиеДни КАК ТолькоРабочиеДни1
		ПО ТолькоРабочиеДни.Дата >= ТолькоРабочиеДни1.Дата

СГРУППИРОВАТЬ ПО
	ТолькоРабочиеДни.Дата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	КалендарныеИРабочиеДни.Объект,
	КалендарныеИРабочиеДни.Свойство,
	КалендарныеИРабочиеДни.КалендарныеДни,
	КалендарныеИРабочиеДни.КалендарнаяДата,
	КалендарныеИРабочиеДни.КоличествоРабочихДней,
	ГотоваяТолькоРабочиеДни.Дата КАК ДатаРабочегоДня,
	ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, КалендарныеИРабочиеДни.КоличествоРабочихДней) КАК КалендарнаяДатаПоРабочимДням
ИЗ
	КалендарныеИРабочиеДни КАК КалендарныеИРабочиеДни
		ЛЕВОЕ СОЕДИНЕНИЕ ГотоваяТолькоРабочиеДни КАК ГотоваяТолькоРабочиеДни
		ПО КалендарныеИРабочиеДни.КоличествоРабочихДней = ГотоваяТолькоРабочиеДни.РабочиеДни

 

Возврат к списку

  • Facebook
  • Вконтакте