Имя: Пароль:
1C
 
Как в запросе просуммировать данные между периодами
0 Паспарту
 
25.01.21
15:22
Есть 2 таблицы.
В одной - данный по дням - дата и пробег авто за день.
В другой - заданный маршрут для авто - задается несколько раз в месяц.
Как проссумировать пробег между датами изменения?

Т.е. с 01 по 12 января маршрут А проехал 1260 км.
12 января утановлен новый маршрут "В" - по нему проехали 1680 км.
28 января установлен новый маршрут "С" - по нему до конца месяца проехали 310 км.

Как проссумировать данные первой таблицы по промежуткам?
Задача идентична задаче суммирования работы сотрудников за месяц по разным штаткам.
1 Beduin
 
25.01.21
15:25
Если маршруты в виде дат заданы, то левым соединением к нему цепляешь данные по дням а потом группируешь по маршрутам суммируя что надо
2 Ненавижу 1С
 
гуру
25.01.21
15:26
(0) если в один день два маршрута?
3 Паспарту
 
25.01.21
15:29
(2)группировка идет по маршрутам, в 1 день возможны 2 и более документов на 1 маршрут. например машина доставляла товар на базу 4 раза.
В этом случае - суммируем
4 vicof
 
25.01.21
15:31
Регистры расчета в помощь
5 fisher
 
25.01.21
15:31
1. Сначала получить таблицу с промежутками (можно приемом, аналогичным "срезу последних на каждый день") - т.е. где кроме даты начала действия маршрута будет и дата окончания действия.
2. В соединении таблицы пробега с полученной таблицей одно из условий соединения - условие на вхождение даты пробега в период действия маршрута.
6 Паспарту
 
25.01.21
15:33
(5)а нет ли примера ? Или где посмотреть ? А то туплю
7 fisher
 
25.01.21
15:55
(6) По первому пункту навскидку что-то типа такого, но за правильность не ручаюсь:

ВЫБРАТЬ
    ДатыНачалМаршрутов.Автомобиль,
    ДатыНачалМаршрутов.Маршрут,
    ВЫБОР
        КОГДА ДатыНачалМаршрутов.Период < &НачалоПериода
        ТОГДА &НачалоПериода
        ИНАЧЕ ДатыНачалМаршрутов.Период
    КОНЕЦ КАК ДатаНачала,
    ЕСТЬNULL(МИНИМУМ(ДатыОкончанийМаршрутов.Период), &КонецПериода) КАК ДатаОкончания
ИЗ
    МаршрутыАвтомобилей КАК ДатыНачалМаршрутов
    ЛЕВОЕ СОЕДИНЕНИЕ МаршрутыАвтомобилей КАК ДатыОкончанийМаршрутов
    ПО ДатыНачалМаршрутов.Автомобиль = ДатыОкончанийМаршрутов.Автомобиль
      И ДатыОкончанийМаршрутов.Период > ДатыНачалМаршрутов.Период
ГДЕ
    ДатыНачалМаршрутов.Период МЕЖДУ &НачалоПериода И &КонецПериода
    ИЛИ ДатыОкончанийМаршрутов.Период МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
    ДатыНачалМаршрутов.Автомобиль,
    ДатыНачалМаршрутов.Маршрут,
    ВЫБОР
        КОГДА ДатыНачалМаршрутов.Период < &НачалоПериода
        ТОГДА &НачалоПериода
        ИНАЧЕ ДатыНачалМаршрутов.Период
    КОНЕЦ
8 fisher
 
25.01.21
16:02
Так я и знал. Как минимум в вышеприведенный запрос нужно добавить еще проверку на выход даты окончания за период отчета и замену ее в этом случае на дату конца периода отчета.
Может и еще где ошибся.
9 Паспарту
 
25.01.21
16:21
(8)да, верно
10 Паспарту
 
25.01.21
16:28
(7)вроде похож на верный...на первый взгляд. Спасибо.
Думаю в сумме с (8) должен работать