Вопрос к мозгу)

1. Antel 4 06.05.15 16:21 Сейчас в теме
Добрый день.
Кто может помочь с запросом, а то у самого не настолько много опыта.
Есть исходная информация, таблица:

Период Ребенок Актуальность
01.06.2015 0:00:00 Иванов Да
02.06.2015 0:00:00 Иванов Нет
10.06.2015 0:00:00 Иванов Да

Нужно получить, таблицу:

НачалоПериода КонецПериода Ребенок Актуальность
01.06.2015 0:00:00 02.06.2015 23:59:59 Иванов Да
10.06.2015 0:00:00 30.06.2015 23:59:59 Иванов Да
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 35 06.05.15 16:28 Сейчас в теме
(1) Antel, и зачем вам запросы? Отсортируйте исходную таблицу по ребенку и периоду. И при обходе исходной таблице заполняйте новую.
3. Antel 4 06.05.15 16:33 Сейчас в теме
(2) Sashares, Это часть кода СКД, так что не могу вытащить таблицу она в промежуточных расчетах
4. necropunk 9 06.05.15 16:49 Сейчас в теме
Примерно похожая структура была в регистре,
Период Инфобаза Доступность.

Разбил на нужные периоды вот таким запросом:

	"ВЫБРАТЬ
	|	РСведений.ИнформационнаяБаза,
	|	РСведений.Период КАК Дата,
	|	РСведений.Доступность
	|ПОМЕСТИТЬ Ч
	|ИЗ
	|	РегистрСведений.ДоступностьИнформационныхБаз КАК РСведений
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	Ч.ИнформационнаяБаза,
	|	Ч.Дата КАК ДатаНачала,
	|	МИНИМУМ(Ч1.Дата) КАК ДатаОкончания
	|ИЗ
	|	Ч КАК Ч
	|		ЛЕВОЕ СОЕДИНЕНИЕ Ч КАК Ч1
	|		ПО Ч.ИнформационнаяБаза = Ч1.ИнформационнаяБаза
	|			И Ч.Дата < Ч1.Дата
	|ГДЕ
	|	Ч.Доступность = 0
	|	И Ч1.Доступность = 1
	|	И Ч.Дата > &ДатаОграничения
	|
	|СГРУППИРОВАТЬ ПО
	|	Ч.Дата,
	|	Ч.ИнформационнаяБаза,
	|	Ч.Доступность,
	|	Ч1.Доступность
	|
	|УПОРЯДОЧИТЬ ПО
	|	ДатаНачала";
	Запрос.УстановитьПараметр("ДатаОграничения",  ДобавитьМесяц(ТекущаяДата(), -1));
	
	ТЗ.Загрузить(Запрос.Выполнить().Выгрузить());
Показать
5. KAPACEB.AA 466 06.05.15 17:08 Сейчас в теме
Как-то так (навскидку):

ВЫБРАТЬ
	ДАТАВРЕМЯ(2015, 6, 1) КАК Период,
	"Иванов" КАК Ребенок,
	ИСТИНА КАК Актуальность
ПОМЕСТИТЬ ВТИсходнаяТаблица

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	ДАТАВРЕМЯ(2015, 6, 2),
	"Иванов",
	ЛОЖЬ

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	ДАТАВРЕМЯ(2015, 6, 10),
	"Иванов",
	ИСТИНА
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Т1.Период КАК НачалоПериода,
	МИНИМУМ(ЕСТЬNULL(Т2.Период, &ТекущаяДата)) КАК КонецПериода,
	Т1.Ребенок,
	Т1.Актуальность
ПОМЕСТИТЬ ВТТаблицаПоПериодам
ИЗ
	ВТИсходнаяТаблица КАК Т1
		ЛЕВОЕ СОЕДИНЕНИЕ ВТИсходнаяТаблица КАК Т2
		ПО (Т2.Ребенок = Т1.Ребенок)
			И (Т2.Период > Т1.Период)
			И (Т2.Актуальность <> Т1.Актуальность)

СГРУППИРОВАТЬ ПО
	Т1.Период,
	Т1.Ребенок,
	Т1.Актуальность
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	МИНИМУМ(ВТТаблицаПоПериодам.НачалоПериода) КАК НачалоПериода,
	ВТТаблицаПоПериодам.КонецПериода,
	ВТТаблицаПоПериодам.Ребенок,
	ВТТаблицаПоПериодам.Актуальность
ИЗ
	ВТТаблицаПоПериодам КАК ВТТаблицаПоПериодам

СГРУППИРОВАТЬ ПО
	ВТТаблицаПоПериодам.КонецПериода,
	ВТТаблицаПоПериодам.Ребенок,
	ВТТаблицаПоПериодам.Актуальность

УПОРЯДОЧИТЬ ПО
	НачалоПериода
Показать




* &ТекущаяДата = 30.06.2015
6. Antel 4 06.05.15 18:04 Сейчас в теме
(5) KAPACEB.AA, Вообще красава) все работает, даже лучше чем у фирмы 1с) респект!!!

Спасибо большое!!!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот