Задача по выборке из регистра сведений только различных данных

1. Stivi2014 17.07.20 23:57 Сейчас в теме
Всем добрый день! Классическая задача, но что-то никак не получается её решить: нужно в отчёт вывести только изменённую информацию по каждой должности и подсветить цветом конкретное изменение. Как вариант, сделать двумя строками: как было до изменения, как стало в день изменения. Конф ЗуП 3.1, отчёт на СКД, делаю по регистру ИсторияИспользованияШтатногоРасписания, вот сам отчёт (что-то тут уже сам перемудрил, сейчас уже ничего не выбирает), помогите разобраться

ВЫБРАТЬ
ИсторияИспользованияШтатногоРасписания.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ИсторияИспользованияШтатногоРасписания.Дата КАК Дата,
ИсторияИспользованияШтатногоРасписания.Используется КАК Используется,
ИсторияИспользованияШтатногоРасписания.КоличествоСтавок КАК КоличествоСтавок,
ИсторияИспользованияШтатногоРасписания.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников,
ИсторияИспользованияШтатногоРасписания.ФОТ КАК ФОТ,
ИсторияИспользованияШтатногоРасписания.ОкладТариф КАК ОкладТариф,
ИсторияИспользованияШтатногоРасписания.ТарифнаяСетка КАК ТарифнаяСетка
ПОМЕСТИТЬ ВТ_ТекПериод
ИЗ
РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК ИсторияИспользованияШтатногоРасписания
ГДЕ
ИсторияИспользованияШтатногоРасписания.Дата МЕЖДУ &НачалоПериода И &КонецПериода
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
ИсторияИспользованияШтатногоРасписания.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ИсторияИспользованияШтатногоРасписания.Дата КАК Дата,
ИсторияИспользованияШтатногоРасписания.Используется КАК Используется,
ИсторияИспользованияШтатногоРасписания.КоличествоСтавок КАК КоличествоСтавок,
ИсторияИспользованияШтатногоРасписания.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников,
ИсторияИспользованияШтатногоРасписания.ФОТ КАК ФОТ,
ИсторияИспользованияШтатногоРасписания.ОкладТариф КАК ОкладТариф,
ИсторияИспользованияШтатногоРасписания.ТарифнаяСетка КАК ТарифнаяСетка,
ИсторияИспользованияШтатногоРасписания.РазрядКатегория КАК РазрядКатегория,
ВложенныйЗапрос.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания1
ПОМЕСТИТЬ ВТ_ВесьПериод
ИЗ
РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК ИсторияИспользованияШтатногоРасписания
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
ВТ_ТекПериод.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания
ИЗ
ВТ_ТекПериод КАК ВТ_ТекПериод) КАК ВложенныйЗапрос
ПО ИсторияИспользованияШтатногоРасписания.ПозицияШтатногоРасписания = ВложенныйЗапрос.ПозицияШтатногоРасписания
ГДЕ
ИсторияИспользованияШтатногоРасписания.Дата <= &КонецПериода
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
ВТ_ТекПериод.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ВТ_ТекПериод.Дата КАК Дата,
ВТ_ТекПериод.Используется КАК Используется,
ВТ_ТекПериод.КоличествоСтавок КАК КоличествоСтавок,
ВТ_ТекПериод.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников,
ВТ_ТекПериод.ФОТ КАК ФОТ,
ВТ_ТекПериод.ОкладТариф КАК ОкладТариф,
ВТ_ТекПериод.ТарифнаяСетка КАК ТарифнаяСетка,
ВТ_ВесьПериод.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписанияПрошлый,
ВТ_ВесьПериод.Дата КАК ДатаПрошлый,
ВТ_ВесьПериод.Используется КАК ИспользуетсяПрошлый,
ВТ_ВесьПериод.КоличествоСтавок КАК КоличествоСтавокПрошлый,
ВТ_ВесьПериод.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудниковПрошлый,
ВТ_ВесьПериод.ФОТ КАК ФОТПрошлый,
ВТ_ВесьПериод.ОкладТариф КАК ОкладТарифПрошлый,
ВТ_ВесьПериод.РазрядКатегория КАК РазрядКатегорияПрошлый
ПОМЕСТИТЬ ВТ_ВсеИзменения
ИЗ
ВТ_ТекПериод КАК ВТ_ТекПериод
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ВесьПериод КАК ВТ_ВесьПериод
ПО ВТ_ТекПериод.ПозицияШтатногоРасписания = ВТ_ВесьПериод.ПозицияШтатногоРасписания
ГДЕ
ВТ_ВесьПериод.Дата < ВТ_ТекПериод.Дата
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
ВТ_ВсеИзменения.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
МАКСИМУМ(ВТ_ВсеИзменения.ДатаПрошлый) КАК ДатаПрошлыйКрайний
ПОМЕСТИТЬ ВТ_КрайниеИзменения
ИЗ
ВТ_ВсеИзменения КАК ВТ_ВсеИзменения

СГРУППИРОВАТЬ ПО
ВТ_ВсеИзменения.ПозицияШтатногоРасписания
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
ВТ_ВсеИзменения.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ВТ_ВсеИзменения.Дата КАК Дата,
ВТ_ВсеИзменения.Используется КАК Используется,
ВТ_ВсеИзменения.КоличествоСтавок КАК КоличествоСтавок,
ВТ_ВсеИзменения.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников,
ВТ_ВсеИзменения.ФОТ КАК ФОТ,
ВТ_ВсеИзменения.ОкладТариф КАК ОкладТариф,
ВТ_ВсеИзменения.ТарифнаяСетка КАК ТарифнаяСетка,
ВТ_ВсеИзменения.ПозицияШтатногоРасписанияПрошлый КАК ПозицияШтатногоРасписанияПрошлый,
ВТ_ВсеИзменения.ДатаПрошлый КАК ДатаПрошлый,
ВТ_ВсеИзменения.ИспользуетсяПрошлый КАК ИспользуетсяПрошлый,
ВТ_ВсеИзменения.КоличествоСтавокПрошлый КАК КоличествоСтавокПрошлый,
ВТ_ВсеИзменения.ГрафикРаботыСотрудниковПрошлый КАК ГрафикРаботыСотрудниковПрошлый,
ВТ_ВсеИзменения.ФОТПрошлый КАК ФОТПрошлый,
ВТ_ВсеИзменения.ОкладТарифПрошлый КАК ОкладТарифПрошлый
ИЗ
ВТ_ВсеИзменения КАК ВТ_ВсеИзменения
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_КрайниеИзменения КАК ВТ_КрайниеИзменения
ПО ВТ_ВсеИзменения.ПозицияШтатногоРасписания = ВТ_КрайниеИзменения.ПозицияШтатногоРасписания
И ВТ_ВсеИзменения.ДатаПрошлый = ВТ_КрайниеИзменения.ДатаПрошлыйКрайний
По теме из базы знаний
Найденные решения
3. SlavaKron 18.07.20 20:30 Сейчас в теме
ВЫБРАТЬ
	Т1.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
	МАКСИМУМ(Т1.Дата) КАК Дата,
	МАКСИМУМ(Т2.Дата) КАК ДатаПоследнегоИзменения
ПОМЕСТИТЬ ВТ
ИЗ
	РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
		ПО (Т1.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
			И (Т1.Дата > Т2.Дата)
ГДЕ
	Т1.Дата МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
	Т1.ПозицияШтатногоРасписания
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
	ВТ.Дата КАК Дата,
	ВТ.ДатаПоследнегоИзменения КАК ДатаПоследнегоИзменения,
	Т1.Используется КАК Используется,
	Т2.Используется КАК ИспользуетсяПрошлый
	// и т.д.
ИЗ
	ВТ КАК ВТ
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
		ПО (ВТ.ПозицияШтатногоРасписания = Т1.ПозицияШтатногоРасписания)
			И (ВТ.Дата = Т1.Дата)
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
		ПО (ВТ.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
			И (ВТ.ДатаПоследнегоИзменения = Т2.Дата)
Показать
Stivi2014; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 18.07.20 20:18 Сейчас в теме
Возможно, данных нет — увеличте период. Запрос можно оптимизировать
3. SlavaKron 18.07.20 20:30 Сейчас в теме
ВЫБРАТЬ
	Т1.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
	МАКСИМУМ(Т1.Дата) КАК Дата,
	МАКСИМУМ(Т2.Дата) КАК ДатаПоследнегоИзменения
ПОМЕСТИТЬ ВТ
ИЗ
	РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
		ПО (Т1.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
			И (Т1.Дата > Т2.Дата)
ГДЕ
	Т1.Дата МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
	Т1.ПозицияШтатногоРасписания
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
	ВТ.Дата КАК Дата,
	ВТ.ДатаПоследнегоИзменения КАК ДатаПоследнегоИзменения,
	Т1.Используется КАК Используется,
	Т2.Используется КАК ИспользуетсяПрошлый
	// и т.д.
ИЗ
	ВТ КАК ВТ
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
		ПО (ВТ.ПозицияШтатногоРасписания = Т1.ПозицияШтатногоРасписания)
			И (ВТ.Дата = Т1.Дата)
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
		ПО (ВТ.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
			И (ВТ.ДатаПоследнегоИзменения = Т2.Дата)
Показать
Stivi2014; +1 Ответить
4. Stivi2014 22.07.20 10:37 Сейчас в теме
(3)
ВЫБРАТЬ
Т1.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
МАКСИМУМ(Т1.Дата) КАК Дата,
МАКСИМУМ(Т2.Дата) КАК ДатаПоследнегоИзменения
ПОМЕСТИТЬ ВТ
ИЗ
РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
ПО (Т1.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
И (Т1.Дата > Т2.Дата)
ГДЕ
Т1.Дата МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
Т1.ПозицияШтатногоРасписания
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
ВТ.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ВТ.Дата КАК Дата,
ВТ.ДатаПоследнегоИзменения КАК ДатаПоследнегоИзменения,
Т1.Используется КАК Используется,
Т2.Используется КАК ИспользуетсяПрошлый
// и т.д.
ИЗ
ВТ КАК ВТ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
ПО (ВТ.ПозицияШтатногоРасписания = Т1.ПозицияШтатногоРасписания)
И (ВТ.Дата = Т1.Дата)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
ПО (ВТ.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
И (ВТ.ДатаПоследнегоИзменения = Т2.Дата)
Показать


Спасибо за помощь! Немного его изменил - получилось то, что нужно!
Оставьте свое сообщение

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