Имя: Пароль:
1C
1С v8
Запрос на меньшую дату
0 Иван-1C
 
28.02.19
16:35
Добрый день!

Есть таблица ЧасыРаботы:
Сотрудники  Дата             ЧасыРаботы
Иванов      01.01.2019         8
Иванов      02.01.2019         4
Иванов      03.01.2019         8
Иванов      04.01.2019         8
Иванов      05.01.2019         8

И есть таблица Начисления:
Сотрудники   Начисление    ДатаОкончания
Иванов       Оклад          03.01.2019
Иванов       Тариф          31.12.3999

Нужно запросом получить таблицу Результат:
Сотрудники    Дата        ЧасыРаботы     Начисление
Иванов      01.01.2019         8         Оклад
Иванов      02.01.2019         4         Оклад
Иванов      03.01.2019         8         Оклад
Иванов      04.01.2019         8         Тариф
Иванов      05.01.2019         8         Тариф

Никак не получается
1 sqr4
 
28.02.19
16:38
в соединение условие на дату >=
2 sqr4
 
28.02.19
16:39
Выбираешь минимальные даты
3 sqr4
 
28.02.19
16:39
И затем соединяешь еще раз по ним
4 sqr4
 
28.02.19
16:39
Я не знаю зачем я так пишу. Исправлюсь
5 palsergeich
 
28.02.19
16:40
Где то в недавних темах я очень похожую по стилю задачу видел.
Напиши хоть куда собеседуешься
6 palsergeich
 
28.02.19
16:41
Зуб даю из письма или Ворда копипастишь
7 Вафель
 
28.02.19
16:47
нужно из таблицы сделать таблицу
Сотрудники   Начисление    ДатаОкончания ДатаНачала
Иванов       Оклад          03.01.2019
Иванов       Тариф          31.12.3999   03.01.2019
8 Иван-1C
 
28.02.19
16:55
(7) А как добавить и заполнить колонку ДатаНачала?  
Таблица Начисления может и так выглядеть:


Сотрудники   Начисление    ДатаОкончания
Иванов       Оклад          03.01.2019
Иванов       Тариф          06.01.2019
Иванов       Оклад          31.12.3999
9 Вафель
 
28.02.19
16:55
(8) задача аналогична написания срезпослдених вручную
10 Иван-1C
 
28.02.19
17:05
(9) и как она решается?
11 Alexandr_U1982
 
28.02.19
17:06
(10) См. (1)
12 Иван-1C
 
28.02.19
17:35
(11)
ВЫБРАТЬ
    ЧасыРаботы.Сотрудники КАК Сотрудники,
    ЧасыРаботы.Дата КАК Дата,
    ЧасыРаботы.Часы КАК Часы,
    Начисления.Начисление КАК Начисление,
    Начисления.ДатаОкончания КАК НачислениеДатаОкончания
ПОМЕСТИТЬ ВТЧасыРаботыНачисления
ИЗ
    ЧасыРаботы КАК ЧасыРаботы
    ЛЕВОЕ СОЕДИНЕНИЕ Начисления КАК Начисления
    ПО ЧасыРаботы.Сотрудник = Начисления.Сотрудник
    И ЧасыРаботы.Дата >= Начисления.ДатаОкончания


Получаю ВТЧасыРаботыНачисления

Сотрудники   Дата          Часы    Начисление    ДатаОкончания
Иванов         01.01.2019       8
Иванов         02.01.2019       4
Иванов         03.01.2019       8      Оклад         03.01.2019
Иванов         04.01.2019       8      Оклад         03.01.2019
Иванов         05.01.2019       8      Оклад         03.01.2019


Как-то не очень смотрится..
И как выглядит следующее действие "Выбираешь минимальные даты". Из чего выбирать?
13 Alexandr_U1982
 
28.02.19
17:36
(120 Сгруппируй
14 Иван-1C
 
28.02.19
17:41
(13) Что сгруппировать?  ВТЧасыРаботыНачисления ???
по чем группировать?
15 sqr4
 
28.02.19
17:44
(12) Наоборот все, тогда Меньше или равно
16 Alexandr_U1982
 
28.02.19
17:47
ВЫБРАТЬ
    ЧасыРаботы.Сотрудники КАК Сотрудники,
    ЧасыРаботы.Дата КАК Дата,
    ЧасыРаботы.Часы КАК Часы,
    МАКСИМУМ(Начисления.ДатаОкончания) КАК ДатаАктуальности
ПОМЕСТИТЬ ВТЧасыРаботыНачисления
ИЗ
    ЧасыРаботы КАК ЧасыРаботы
        ЛЕВОЕ СОЕДИНЕНИЕ Начисления КАК Начисления
        ПО ЧасыРаботы.Сотрудник = Начисления.Сотрудник
            И ЧасыРаботы.Дата <= Начисления.ДатаОкончания

СГРУППИРОВАТЬ ПО
    ЧасыРаботы.Сотрудники,
    ЧасыРаботы.Дата,
    ЧасыРаботы.Часы
;

ВЫБРАТЬ
    ВТЧасыРаботыНачисленияКАК Сотрудники,
    ВТЧасыРаботыНачисленияКАК Дата,
    ВТЧасыРаботыНачисленияКАК Часы,
    Начисления.Начисление КАК Начисление
ИЗ
    ВТЧасыРаботыНачисления КАК ВТЧасыРаботыНачисления
        ЛЕВОЕ СОЕДИНЕНЕ Начисления  КАК Начисления
        ПО ВТЧасыРаботыНачисления.Сотрудники = Начисления.Сотрудники
            И ВТЧасыРаботыНачисления.ДатаАктуальности = Начисления.ДатаОкончания
17 sqr4
 
28.02.19
17:56
(16) не выдержал да?)
18 Alexandr_U1982
 
28.02.19
17:58
(17) Ага
19 Иван-1C
 
28.02.19
18:00
(16)  В этом случае ВТЧасыРаботыНачисления выглядит так:

Сотрудники   Дата          Часы       ДатаОкончания
Иванов         01.01.2019       8      31.12.3999
Иванов         02.01.2019       4      31.12.3999
Иванов         03.01.2019       8      31.12.3999
Иванов         04.01.2019       8      31.12.3999
Иванов         05.01.2019       8      31.12.3999
20 Alexandr_U1982
 
28.02.19
18:02
(19) Максимум замени на Минимум
21 Вафель
 
28.02.19
18:04
(16) не верно же.
должно быть условие на дата между датанач и датакон
22 Иван-1C
 
28.02.19
18:07
(20) Да, похоже на правду! Бинго!!!
23 Alexandr_U1982
 
28.02.19
18:11
(21)Ошибка только в "Максимум" вместо "Минимум".
24 Alexandr_U1982
 
28.02.19
18:12
(22) Откуда взял эту задачу? Собеседование?
25 Иван-1C
 
28.02.19
18:14
(24) Нет, отчет по переработкам ваяю.  Часы работы сотрудника с регистром плановых начислений соединяю
Независимо от того, куда вы едете — это в гору и против ветра!