Задача по выборке из регистра сведений только различных данных
Всем добрый день! Классическая задача, но что-то никак не получается её решить: нужно в отчёт вывести только изменённую информацию по каждой должности и подсветить цветом конкретное изменение. Как вариант, сделать двумя строками: как было до изменения, как стало в день изменения. Конф ЗуП 3.1, отчёт на СКД, делаю по регистру ИсторияИспользованияШтатногоРасписания, вот сам отчёт (что-то тут уже сам перемудрил, сейчас уже ничего не выбирает), помогите разобраться
ВЫБРАТЬ
ИсторияИспользованияШтатногоРасписания.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ИсторияИспользованияШтатногоРасписания.Дата КАК Дата,
ИсторияИспользованияШтатногоРасписания.Используется КАК Используется,
ИсторияИспользованияШтатногоРасписания.КоличествоСтавок КАК КоличествоСтавок,
ИсторияИспользованияШтатногоРасписания.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников,
ИсторияИспользованияШтатногоРасписания.ФОТ КАК ФОТ,
ИсторияИспользованияШтатногоРасписания.ОкладТариф КАК ОкладТариф,
ИсторияИспользованияШтатногоРасписания.ТарифнаяСетка КАК ТарифнаяСетка
ПОМЕСТИТЬ ВТ_ТекПериод
ИЗ
РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК ИсторияИспользованияШтатногоРасписания
ГДЕ
ИсторияИспользованияШтатногоРасписания.Дата МЕЖДУ &НачалоПериода И &КонецПериода
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ИсторияИспользованияШтатногоРасписания.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ИсторияИспользованияШтатногоРасписания.Дата КАК Дата,
ИсторияИспользованияШтатногоРасписания.Используется КАК Используется,
ИсторияИспользованияШтатногоРасписания.КоличествоСтавок КАК КоличествоСтавок,
ИсторияИспользованияШтатногоРасписания.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников,
ИсторияИспользованияШтатногоРасписания.ФОТ КАК ФОТ,
ИсторияИспользованияШтатногоРасписания.ОкладТариф КАК ОкладТариф,
ИсторияИспользованияШтатногоРасписания.ТарифнаяСетка КАК ТарифнаяСетка,
ИсторияИспользованияШтатногоРасписания.РазрядКатегория КАК РазрядКатегория,
ВложенныйЗапрос.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания1
ПОМЕСТИТЬ ВТ_ВесьПериод
ИЗ
РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК ИсторияИспользованияШтатногоРасписания
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
ВТ_ТекПериод.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания
ИЗ
ВТ_ТекПериод КАК ВТ_ТекПериод) КАК ВложенныйЗапрос
ПО ИсторияИспользованияШтатногоРасписания.ПозицияШтатногоРасписания = ВложенныйЗапрос.ПозицияШтатногоРасписания
ГДЕ
ИсторияИспользованияШтатногоРасписания.Дата <= &КонецПериода
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_ТекПериод.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ВТ_ТекПериод.Дата КАК Дата,
ВТ_ТекПериод.Используется КАК Используется,
ВТ_ТекПериод.КоличествоСтавок КАК КоличествоСтавок,
ВТ_ТекПериод.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников,
ВТ_ТекПериод.ФОТ КАК ФОТ,
ВТ_ТекПериод.ОкладТариф КАК ОкладТариф,
ВТ_ТекПериод.ТарифнаяСетка КАК ТарифнаяСетка,
ВТ_ВесьПериод.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписанияПрошлый,
ВТ_ВесьПериод.Дата КАК ДатаПрошлый,
ВТ_ВесьПериод.Используется КАК ИспользуетсяПрошлый,
ВТ_ВесьПериод.КоличествоСтавок КАК КоличествоСтавокПрошлый,
ВТ_ВесьПериод.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудниковПрошлый,
ВТ_ВесьПериод.ФОТ КАК ФОТПрошлый,
ВТ_ВесьПериод.ОкладТариф КАК ОкладТарифПрошлый,
ВТ_ВесьПериод.РазрядКатегория КАК РазрядКатегорияПрошлый
ПОМЕСТИТЬ ВТ_ВсеИзменения
ИЗ
ВТ_ТекПериод КАК ВТ_ТекПериод
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ВесьПериод КАК ВТ_ВесьПериод
ПО ВТ_ТекПериод.ПозицияШтатногоРасписания = ВТ_ВесьПериод.ПозицияШтатногоРасписания
ГДЕ
ВТ_ВесьПериод.Дата < ВТ_ТекПериод.Дата
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_ВсеИзменения.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
МАКСИМУМ(ВТ_ВсеИзменения.ДатаПрошлый) КАК ДатаПрошлыйКрайний
ПОМЕСТИТЬ ВТ_КрайниеИзменения
ИЗ
ВТ_ВсеИзменения КАК ВТ_ВсеИзменения
СГРУППИРОВАТЬ ПО
ВТ_ВсеИзменения.ПозицияШтатногоРасписания
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_ВсеИзменения.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ВТ_ВсеИзменения.Дата КАК Дата,
ВТ_ВсеИзменения.Используется КАК Используется,
ВТ_ВсеИзменения.КоличествоСтавок КАК КоличествоСтавок,
ВТ_ВсеИзменения.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников,
ВТ_ВсеИзменения.ФОТ КАК ФОТ,
ВТ_ВсеИзменения.ОкладТариф КАК ОкладТариф,
ВТ_ВсеИзменения.ТарифнаяСетка КАК ТарифнаяСетка,
ВТ_ВсеИзменения.ПозицияШтатногоРасписанияПрошлый КАК ПозицияШтатногоРасписанияПрошлый,
ВТ_ВсеИзменения.ДатаПрошлый КАК ДатаПрошлый,
ВТ_ВсеИзменения.ИспользуетсяПрошлый КАК ИспользуетсяПрошлый,
ВТ_ВсеИзменения.КоличествоСтавокПрошлый КАК КоличествоСтавокПрошлый,
ВТ_ВсеИзменения.ГрафикРаботыСотрудниковПрошлый КАК ГрафикРаботыСотрудниковПрошлый,
ВТ_ВсеИзменения.ФОТПрошлый КАК ФОТПрошлый,
ВТ_ВсеИзменения.ОкладТарифПрошлый КАК ОкладТарифПрошлый
ИЗ
ВТ_ВсеИзменения КАК ВТ_ВсеИзменения
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_КрайниеИзменения КАК ВТ_КрайниеИзменения
ПО ВТ_ВсеИзменения.ПозицияШтатногоРасписания = ВТ_КрайниеИзменения.ПозицияШтатногоРасписания
И ВТ_ВсеИзменения.ДатаПрошлый = ВТ_КрайниеИзменения.ДатаПрошлыйКрайний
ВЫБРАТЬ
ИсторияИспользованияШтатногоРасписания.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ИсторияИспользованияШтатногоРасписания.Дата КАК Дата,
ИсторияИспользованияШтатногоРасписания.Используется КАК Используется,
ИсторияИспользованияШтатногоРасписания.КоличествоСтавок КАК КоличествоСтавок,
ИсторияИспользованияШтатногоРасписания.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников,
ИсторияИспользованияШтатногоРасписания.ФОТ КАК ФОТ,
ИсторияИспользованияШтатногоРасписания.ОкладТариф КАК ОкладТариф,
ИсторияИспользованияШтатногоРасписания.ТарифнаяСетка КАК ТарифнаяСетка
ПОМЕСТИТЬ ВТ_ТекПериод
ИЗ
РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК ИсторияИспользованияШтатногоРасписания
ГДЕ
ИсторияИспользованияШтатногоРасписания.Дата МЕЖДУ &НачалоПериода И &КонецПериода
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ИсторияИспользованияШтатногоРасписания.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ИсторияИспользованияШтатногоРасписания.Дата КАК Дата,
ИсторияИспользованияШтатногоРасписания.Используется КАК Используется,
ИсторияИспользованияШтатногоРасписания.КоличествоСтавок КАК КоличествоСтавок,
ИсторияИспользованияШтатногоРасписания.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников,
ИсторияИспользованияШтатногоРасписания.ФОТ КАК ФОТ,
ИсторияИспользованияШтатногоРасписания.ОкладТариф КАК ОкладТариф,
ИсторияИспользованияШтатногоРасписания.ТарифнаяСетка КАК ТарифнаяСетка,
ИсторияИспользованияШтатногоРасписания.РазрядКатегория КАК РазрядКатегория,
ВложенныйЗапрос.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания1
ПОМЕСТИТЬ ВТ_ВесьПериод
ИЗ
РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК ИсторияИспользованияШтатногоРасписания
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
ВТ_ТекПериод.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания
ИЗ
ВТ_ТекПериод КАК ВТ_ТекПериод) КАК ВложенныйЗапрос
ПО ИсторияИспользованияШтатногоРасписания.ПозицияШтатногоРасписания = ВложенныйЗапрос.ПозицияШтатногоРасписания
ГДЕ
ИсторияИспользованияШтатногоРасписания.Дата <= &КонецПериода
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ТекПериод.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ВТ_ТекПериод.Дата КАК Дата,
ВТ_ТекПериод.Используется КАК Используется,
ВТ_ТекПериод.КоличествоСтавок КАК КоличествоСтавок,
ВТ_ТекПериод.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников,
ВТ_ТекПериод.ФОТ КАК ФОТ,
ВТ_ТекПериод.ОкладТариф КАК ОкладТариф,
ВТ_ТекПериод.ТарифнаяСетка КАК ТарифнаяСетка,
ВТ_ВесьПериод.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписанияПрошлый,
ВТ_ВесьПериод.Дата КАК ДатаПрошлый,
ВТ_ВесьПериод.Используется КАК ИспользуетсяПрошлый,
ВТ_ВесьПериод.КоличествоСтавок КАК КоличествоСтавокПрошлый,
ВТ_ВесьПериод.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудниковПрошлый,
ВТ_ВесьПериод.ФОТ КАК ФОТПрошлый,
ВТ_ВесьПериод.ОкладТариф КАК ОкладТарифПрошлый,
ВТ_ВесьПериод.РазрядКатегория КАК РазрядКатегорияПрошлый
ПОМЕСТИТЬ ВТ_ВсеИзменения
ИЗ
ВТ_ТекПериод КАК ВТ_ТекПериод
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ВесьПериод КАК ВТ_ВесьПериод
ПО ВТ_ТекПериод.ПозицияШтатногоРасписания = ВТ_ВесьПериод.ПозицияШтатногоРасписания
ГДЕ
ВТ_ВесьПериод.Дата < ВТ_ТекПериод.Дата
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ВсеИзменения.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
МАКСИМУМ(ВТ_ВсеИзменения.ДатаПрошлый) КАК ДатаПрошлыйКрайний
ПОМЕСТИТЬ ВТ_КрайниеИзменения
ИЗ
ВТ_ВсеИзменения КАК ВТ_ВсеИзменения
СГРУППИРОВАТЬ ПО
ВТ_ВсеИзменения.ПозицияШтатногоРасписания
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ВсеИзменения.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ВТ_ВсеИзменения.Дата КАК Дата,
ВТ_ВсеИзменения.Используется КАК Используется,
ВТ_ВсеИзменения.КоличествоСтавок КАК КоличествоСтавок,
ВТ_ВсеИзменения.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников,
ВТ_ВсеИзменения.ФОТ КАК ФОТ,
ВТ_ВсеИзменения.ОкладТариф КАК ОкладТариф,
ВТ_ВсеИзменения.ТарифнаяСетка КАК ТарифнаяСетка,
ВТ_ВсеИзменения.ПозицияШтатногоРасписанияПрошлый КАК ПозицияШтатногоРасписанияПрошлый,
ВТ_ВсеИзменения.ДатаПрошлый КАК ДатаПрошлый,
ВТ_ВсеИзменения.ИспользуетсяПрошлый КАК ИспользуетсяПрошлый,
ВТ_ВсеИзменения.КоличествоСтавокПрошлый КАК КоличествоСтавокПрошлый,
ВТ_ВсеИзменения.ГрафикРаботыСотрудниковПрошлый КАК ГрафикРаботыСотрудниковПрошлый,
ВТ_ВсеИзменения.ФОТПрошлый КАК ФОТПрошлый,
ВТ_ВсеИзменения.ОкладТарифПрошлый КАК ОкладТарифПрошлый
ИЗ
ВТ_ВсеИзменения КАК ВТ_ВсеИзменения
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_КрайниеИзменения КАК ВТ_КрайниеИзменения
ПО ВТ_ВсеИзменения.ПозицияШтатногоРасписания = ВТ_КрайниеИзменения.ПозицияШтатногоРасписания
И ВТ_ВсеИзменения.ДатаПрошлый = ВТ_КрайниеИзменения.ДатаПрошлыйКрайний
По теме из базы знаний
Найденные решения
ВЫБРАТЬ
Т1.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
МАКСИМУМ(Т1.Дата) КАК Дата,
МАКСИМУМ(Т2.Дата) КАК ДатаПоследнегоИзменения
ПОМЕСТИТЬ ВТ
ИЗ
РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
ПО (Т1.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
И (Т1.Дата > Т2.Дата)
ГДЕ
Т1.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
Т1.ПозицияШтатногоРасписания
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ВТ.Дата КАК Дата,
ВТ.ДатаПоследнегоИзменения КАК ДатаПоследнегоИзменения,
Т1.Используется КАК Используется,
Т2.Используется КАК ИспользуетсяПрошлый
// и т.д.
ИЗ
ВТ КАК ВТ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
ПО (ВТ.ПозицияШтатногоРасписания = Т1.ПозицияШтатногоРасписания)
И (ВТ.Дата = Т1.Дата)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
ПО (ВТ.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
И (ВТ.ДатаПоследнегоИзменения = Т2.Дата)
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ВЫБРАТЬ
Т1.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
МАКСИМУМ(Т1.Дата) КАК Дата,
МАКСИМУМ(Т2.Дата) КАК ДатаПоследнегоИзменения
ПОМЕСТИТЬ ВТ
ИЗ
РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
ПО (Т1.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
И (Т1.Дата > Т2.Дата)
ГДЕ
Т1.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
Т1.ПозицияШтатногоРасписания
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ВТ.Дата КАК Дата,
ВТ.ДатаПоследнегоИзменения КАК ДатаПоследнегоИзменения,
Т1.Используется КАК Используется,
Т2.Используется КАК ИспользуетсяПрошлый
// и т.д.
ИЗ
ВТ КАК ВТ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
ПО (ВТ.ПозицияШтатногоРасписания = Т1.ПозицияШтатногоРасписания)
И (ВТ.Дата = Т1.Дата)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
ПО (ВТ.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
И (ВТ.ДатаПоследнегоИзменения = Т2.Дата)
Показать
(3)
Спасибо за помощь! Немного его изменил - получилось то, что нужно!
ВЫБРАТЬ
Т1.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
МАКСИМУМ(Т1.Дата) КАК Дата,
МАКСИМУМ(Т2.Дата) КАК ДатаПоследнегоИзменения
ПОМЕСТИТЬ ВТ
ИЗ
РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
ПО (Т1.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
И (Т1.Дата > Т2.Дата)
ГДЕ
Т1.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
Т1.ПозицияШтатногоРасписания
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ВТ.Дата КАК Дата,
ВТ.ДатаПоследнегоИзменения КАК ДатаПоследнегоИзменения,
Т1.Используется КАК Используется,
Т2.Используется КАК ИспользуетсяПрошлый
// и т.д.
ИЗ
ВТ КАК ВТ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
ПО (ВТ.ПозицияШтатногоРасписания = Т1.ПозицияШтатногоРасписания)
И (ВТ.Дата = Т1.Дата)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
ПО (ВТ.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
И (ВТ.ДатаПоследнегоИзменения = Т2.Дата)
ПоказатьТ1.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
МАКСИМУМ(Т1.Дата) КАК Дата,
МАКСИМУМ(Т2.Дата) КАК ДатаПоследнегоИзменения
ПОМЕСТИТЬ ВТ
ИЗ
РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
ПО (Т1.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
И (Т1.Дата > Т2.Дата)
ГДЕ
Т1.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
Т1.ПозицияШтатногоРасписания
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
ВТ.Дата КАК Дата,
ВТ.ДатаПоследнегоИзменения КАК ДатаПоследнегоИзменения,
Т1.Используется КАК Используется,
Т2.Используется КАК ИспользуетсяПрошлый
// и т.д.
ИЗ
ВТ КАК ВТ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т1
ПО (ВТ.ПозицияШтатногоРасписания = Т1.ПозицияШтатногоРасписания)
И (ВТ.Дата = Т1.Дата)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК Т2
ПО (ВТ.ПозицияШтатногоРасписания = Т2.ПозицияШтатногоРасписания)
И (ВТ.ДатаПоследнегоИзменения = Т2.Дата)
Спасибо за помощь! Немного его изменил - получилось то, что нужно!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот