0. Alexander.Shvets 207 03.03.16 12:13 Сейчас в теме

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом

При реализации периодического авто-заполнения маршрутных листов по графику (недельному) необходимо было просчитать стоимость всего периода, с условием выездов только по определенным дням. Заморачиваться с обходом результата не хотелось. Пришлось написать "Небольшой" запрос.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. ildarovich 6721 03.03.16 20:43 Сейчас в теме
Тот же результат дает гораздо более простой запрос
ВЫБРАТЬ
	Дни.ДеньНедели,
	РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, НЕДЕЛЯ), НАЧАЛОПЕРИОДА(&КонецПериода, НЕДЕЛЯ), ДЕНЬ) / 7 + ВЫБОР
		КОГДА ДЕНЬНЕДЕЛИ(&НачалоПериода) <= Дни.ДеньНедели
			ТОГДА 1
		ИНАЧЕ 0
	КОНЕЦ + ВЫБОР
		КОГДА Дни.ДеньНедели <= ДЕНЬНЕДЕЛИ(&КонецПериода)
			ТОГДА 1
		ИНАЧЕ 0
	КОНЕЦ - 1 КАК КоличествоДней
ИЗ
	(ВЫБРАТЬ
		1 КАК ДеньНедели
	
	ОБЪЕДИНИТЬ
	
	ВЫБРАТЬ
		2
	
	ОБЪЕДИНИТЬ
	
	ВЫБРАТЬ
		3
	
	ОБЪЕДИНИТЬ
	
	ВЫБРАТЬ
		4
	
	ОБЪЕДИНИТЬ
	
	ВЫБРАТЬ
		5
	
	ОБЪЕДИНИТЬ
	
	ВЫБРАТЬ
		6
	
	ОБЪЕДИНИТЬ
	
	ВЫБРАТЬ
		7) КАК Дни
Показать

или еще короче
ВЫБРАТЬ
	Дни.ДеньНедели,
	РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, -Дни.ДеньНедели), НЕДЕЛЯ)
, НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, 1 - Дни.ДеньНедели), НЕДЕЛЯ), ДЕНЬ) / 7 КАК КоличествоДней
ИЗ
	(ВЫБРАТЬ 1 КАК ДеньНедели ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5
	ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7) КАК Дни
sergey.novikov; user600603_v.soldatova; DoctorRoza; bforce; BigB; Alexander.Shvets; NeviD; the1; qwed557; +9 Ответить
2. lrs 27 04.03.16 15:30 Сейчас в теме
В способностях ildarovich'а писать запросы мы не сомневаемся.
Но не стоило удалять первоначальный вариант, иначе теряется смысл твоих стараний. А так же нам теперь трудно оценить степень оптимизации, предложенную ildarovich'ем...
user600603_v.soldatova; igormiro; alest; dj_serega; +4 Ответить
3. Alexander.Shvets 207 04.03.16 15:41 Сейчас в теме
(2) lrs, Можете не сомневаться :Уровень оптимизации - бог =)

А старый запрос потерялся, я его засунул в спойлер, а инфостарт просто взбесился от конструкции div class="spoil". На предосмотре было все ок, а когда сохранил - он удалил все что было в спойлере + добавил пол страницы инфостарта в мою публикацию =))

Если в двух словах - мой метод - это левое соединение к таблицам дней периодов (две строки - Начало и конец) по условию >= <= и группировка результата, этот метод - расчета относительно дня недели. Изи. На многие вещи посмотрел по другому в принципе.
dj_serega; +1 Ответить
4. JohnGalt 41 21.11.16 16:16 Сейчас в теме
Можно также использовать РС "РегламентированныйПроизводственныйКалендарь"
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Бизнес-архитектор 1С, ведущий консультант
Санкт-Петербург
Полный день

Руководитель проектов 1С
Санкт-Петербург
Полный день

Программист 1С
Краснодар
зарплата от 80 000 руб. до 160 000 руб.
Полный день

Консультант 1 С
Краснодар
зарплата от 50 000 руб. до 150 000 руб.
Полный день

Консультант-методолог 1С
Краснодар
зарплата от 110 000 руб.
Полный день