Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 12:42

Отбор по максимальной дате

Автор G13ma, 01 окт 2014, 17:29

0 Пользователей и 1 гость просматривают эту тему.

G13ma

Добрый день.
Есть таблица вида
Сотрудник,Вид начисления,Сумма,Дата,КадровыйДокумент

соответственно в таблицу попадают все кадровые документы по сотруднику.

Как в запросе можно сделать так чтобы в результате оставался только документ с максимальной датой

Пример результата во вложении

Текст Запроса

ВЫБРАТЬ
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Сотрудник КАК Сотрудник,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.ВидРасчета,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Показатель1 КАК Сумма,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Ссылка.Дата КАК Дата,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Ссылка КАК Документ
ИЗ
    Документ.ПриемНаРаботуВОрганизацию.ОсновныеНачисления КАК ПриемНаРаботуВОрганизациюОсновныеНачисления
ГДЕ
    (ПриемНаРаботуВОрганизациюОсновныеНачисления.Сотрудник.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
            ИЛИ ПриемНаРаботуВОрганизациюОсновныеНачисления.Сотрудник.ДатаУвольнения > &Дата)

СГРУППИРОВАТЬ ПО
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Сотрудник,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.ВидРасчета,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Показатель1,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Ссылка,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Ссылка.Дата

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

ВЫБРАТЬ
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Сотрудник,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.ВидРасчета,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Показатель1,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Ссылка.Дата,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Ссылка
ИЗ
    Документ.КадровоеПеремещениеОрганизаций.ОсновныеНачисления КАК КадровоеПеремещениеОрганизацийОсновныеНачисления
ГДЕ
    (КадровоеПеремещениеОрганизацийОсновныеНачисления.Сотрудник.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
            ИЛИ КадровоеПеремещениеОрганизацийОсновныеНачисления.Сотрудник.ДатаУвольнения > &Дата)

СГРУППИРОВАТЬ ПО
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Сотрудник,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.ВидРасчета,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Показатель1,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Ссылка.Дата,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Ссылка

УПОРЯДОЧИТЬ ПО
    Сотрудник,
    Дата УБЫВ

pavl_vs

G13ma, используйте в запросе функцию МАКСИМУМ по дате;
примеров этого в интернете предостаточно - по-моему Вы поленились.

cska-fanat-kz

должен оставаться последний из всех документов или только из документов одного вида?

просто те же данные (по идее, не утверждаю) можно получить из регистра ПлановыхНачислений.
а если взять СрезПоследних, то и получите последние документы...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

kolil

Доброго дня. Попробуйте так:

ВЫБРАТЬ ПЕРВЫЕ 1 * ИЗ (
// Ваш запрос:
ВЫБРАТЬ
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Сотрудник КАК Сотрудник,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.ВидРасчета,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Показатель1 КАК Сумма,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Ссылка.Дата КАК Дата,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Ссылка КАК Документ
ИЗ
    Документ.ПриемНаРаботуВОрганизацию.ОсновныеНачисления КАК ПриемНаРаботуВОрганизациюОсновныеНачисления
ГДЕ
    (ПриемНаРаботуВОрганизациюОсновныеНачисления.Сотрудник.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
            ИЛИ ПриемНаРаботуВОрганизациюОсновныеНачисления.Сотрудник.ДатаУвольнения > &Дата)

СГРУППИРОВАТЬ ПО
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Сотрудник,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.ВидРасчета,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Показатель1,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Ссылка,
    ПриемНаРаботуВОрганизациюОсновныеНачисления.Ссылка.Дата

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

ВЫБРАТЬ
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Сотрудник,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.ВидРасчета,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Показатель1,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Ссылка.Дата,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Ссылка
ИЗ
    Документ.КадровоеПеремещениеОрганизаций.ОсновныеНачисления КАК КадровоеПеремещениеОрганизацийОсновныеНачисления
ГДЕ
    (КадровоеПеремещениеОрганизацийОсновныеНачисления.Сотрудник.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
            ИЛИ КадровоеПеремещениеОрганизацийОсновныеНачисления.Сотрудник.ДатаУвольнения > &Дата)

СГРУППИРОВАТЬ ПО
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Сотрудник,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.ВидРасчета,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Показатель1,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Ссылка.Дата,
    КадровоеПеремещениеОрганизацийОсновныеНачисления.Ссылка

УПОРЯДОЧИТЬ ПО
    Сотрудник,
    Дата УБЫВ
) КАК ПоследнееПеремещение


Можно еще посмотреть решение с использованием функции РАЗНОСТЬДАТ() в запросе.

cska-fanat-kz

kolil, так вы получите только 1 самый последний из всех документ!
а ему надо по каждому сотруднику последний документ...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

G13ma

Из регистров сведений данные не получить, т.к. был перенос и не перенесли основные начисления по работникам, собственно для этого все и затевается, нужно взять последний кадровый документ по сотруднику и посмотреть вид и сумму начисления по сотруднику после чего добавить его в документ ВводПостоянныхНачисленийУдержанийРаботникаОрганизации.

Вышел из ситуации следующим образом создал таблицу со столбцами Сотрудник, МАКСИМУМ(Дата), и левое соединение по сотруднику и дате с первоначальной таблицей.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск