Следующая запись РегистраСведений

1. Zhest 21 20.04.17 12:05 Сейчас в теме
Добрый день! Есть Запрос по РегиструСведений.СостояниеРаботниковОрганизаций
Результат получаю такой:

ДатаНачала ДатаЗавершения Состояние
27.12.2016 23.01.2017 В ежегодном отпуске
01.02.2017 Отсутствует по невыясненной причине
27.02.2017 Работает
03.03.2017 09.03.2017 В отпуске без сохранения зарплаты

Каким образом Для второй строки в колонке "ДатаЗавершения" получить дату "ДатаНачала" из следующей строки?
+
По теме из базы знаний
Найденные решения
3. WasiliyMay 8 20.04.17 16:25 Сейчас в теме
Добавьте в запрос еще такую же таблицу, сделайте левое соединение этих таблиц с условием Таблица1.ДатаНачала < Таблица2.ДатаНачала и далее по примеру (Первые два запроса просто строят две одинаковые таблицы. У вас они будут браться из регистров). Числа нудно заменить на даты и в условии проверка не на "0", а на пустую дату:

ВЫБРАТЬ
	1 КАК ДатаНачала,
	2 КАК ДатаОкончания,
	"Событие1" КАК Событие
ПОМЕСТИТЬ ВременнаяТаблица1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	3,
	0,
	"Событие2"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	4,
	0,
	"Событие3"
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	1 КАК ДатаНачала,
	2 КАК ДатаОкончания,
	"Событие1" КАК Событие
ПОМЕСТИТЬ ВременнаяТаблица2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	3,
	0,
	"Событие2"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	4,
	0,
	"Событие3"
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВременнаяТаблица1.ДатаНачала КАК ДатаНачала,
	МИНИМУМ(ВременнаяТаблица1.ДатаОкончания) КАК ДатаОкончания,
	ВременнаяТаблица1.Событие КАК Событие,
	МИНИМУМ(ВременнаяТаблица2.ДатаНачала) КАК ДатаНачала2
ПОМЕСТИТЬ ВременнаяТаблица3
ИЗ
	ВременнаяТаблица1 КАК ВременнаяТаблица1
		ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблица2 КАК ВременнаяТаблица2
		ПО (ВременнаяТаблица1.ДатаНачала < ВременнаяТаблица2.ДатаНачала)

СГРУППИРОВАТЬ ПО
	ВременнаяТаблица1.ДатаНачала,
	ВременнаяТаблица1.Событие
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВременнаяТаблица3.ДатаНачала КАК ДатаНачала,
	ВЫБОР
		КОГДА ВременнаяТаблица3.ДатаОкончания = 0
			ТОГДА ВременнаяТаблица3.ДатаНачала2
		ИНАЧЕ ВременнаяТаблица3.ДатаОкончания
	КОНЕЦ КАК ДатаОкончания,
	ВременнаяТаблица3.Событие
ИЗ
	ВременнаяТаблица3 КАК ВременнаяТаблица3
Показать
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ImHunter 315 20.04.17 16:17 Сейчас в теме
Через вычисляемое поле с выражением ВЫЧИСЛИТЬВЫРАЖЕНИЕ(...) - см. помощь/примеры по СКД.
Там только нюанс вроде такой будет. Для последней строки Дата завершения возьмется, как Дата начала из первой строки.
+
3. WasiliyMay 8 20.04.17 16:25 Сейчас в теме
Добавьте в запрос еще такую же таблицу, сделайте левое соединение этих таблиц с условием Таблица1.ДатаНачала < Таблица2.ДатаНачала и далее по примеру (Первые два запроса просто строят две одинаковые таблицы. У вас они будут браться из регистров). Числа нудно заменить на даты и в условии проверка не на "0", а на пустую дату:

ВЫБРАТЬ
	1 КАК ДатаНачала,
	2 КАК ДатаОкончания,
	"Событие1" КАК Событие
ПОМЕСТИТЬ ВременнаяТаблица1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	3,
	0,
	"Событие2"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	4,
	0,
	"Событие3"
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	1 КАК ДатаНачала,
	2 КАК ДатаОкончания,
	"Событие1" КАК Событие
ПОМЕСТИТЬ ВременнаяТаблица2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	3,
	0,
	"Событие2"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	4,
	0,
	"Событие3"
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВременнаяТаблица1.ДатаНачала КАК ДатаНачала,
	МИНИМУМ(ВременнаяТаблица1.ДатаОкончания) КАК ДатаОкончания,
	ВременнаяТаблица1.Событие КАК Событие,
	МИНИМУМ(ВременнаяТаблица2.ДатаНачала) КАК ДатаНачала2
ПОМЕСТИТЬ ВременнаяТаблица3
ИЗ
	ВременнаяТаблица1 КАК ВременнаяТаблица1
		ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблица2 КАК ВременнаяТаблица2
		ПО (ВременнаяТаблица1.ДатаНачала < ВременнаяТаблица2.ДатаНачала)

СГРУППИРОВАТЬ ПО
	ВременнаяТаблица1.ДатаНачала,
	ВременнаяТаблица1.Событие
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВременнаяТаблица3.ДатаНачала КАК ДатаНачала,
	ВЫБОР
		КОГДА ВременнаяТаблица3.ДатаОкончания = 0
			ТОГДА ВременнаяТаблица3.ДатаНачала2
		ИНАЧЕ ВременнаяТаблица3.ДатаОкончания
	КОНЕЦ КАК ДатаОкончания,
	ВременнаяТаблица3.Событие
ИЗ
	ВременнаяТаблица3 КАК ВременнаяТаблица3
Показать
+
4. Zhest 21 21.04.17 09:40 Сейчас в теме
5. Zhest 21 21.04.17 09:43 Сейчас в теме
Я пошла более простым путем: добавила еще регистр сведений по срезу последних и прописала условие для поля "ДатаЗавершения":
ВЫБОР
	КОГДА СостояниеРаботниковОрганизаций.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
			И НЕ СостояниеРаботниковОрганизаций.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Работает)
		ТОГДА ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизацийСрезПоследних.Период, СЕКУНДА, -1)
	ИНАЧЕ ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизаций.ПериодЗавершения, СЕКУНДА, -1)
КОНЕЦ
+
Внимание! Тема сдана в архив

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