Рассчитать пройденное расстояние по дням
Беру пройденное расстояние из соединяемой базы.
получил "пройденное расстояние" из соединяемой базы. Теперь нужно сделать так,чтобы пройденное расстояние показывала пройденное км по дням. В СКД сделал группировку по водителю и по дате.Например:
Иванов
21 мая-20 км
Иванов
21 мая-50 км
Иванов
21 мая-30км
Иванов(итого по 21 мая)-100 км
сейчас "пройденное расстояние выводит все данные не считая период.И на каждый день показывает один и тот же показатель
Как сделать так, чтобы пройденное расстояние выводила сумму по каждому водителю и выводила правильную информацию по дням?
Беру данные из соединяемой базы:
Запрос в СКД:
получил "пройденное расстояние" из соединяемой базы. Теперь нужно сделать так,чтобы пройденное расстояние показывала пройденное км по дням. В СКД сделал группировку по водителю и по дате.Например:
Иванов
21 мая-20 км
Иванов
21 мая-50 км
Иванов
21 мая-30км
Иванов(итого по 21 мая)-100 км
сейчас "пройденное расстояние выводит все данные не считая период.И на каждый день показывает один и тот же показатель
Как сделать так, чтобы пройденное расстояние выводила сумму по каждому водителю и выводила правильную информацию по дням?
Беру данные из соединяемой базы:
Запрос = Соединение;
Запрос = Соединение.NewObject("Запрос");
Запрос.Текст ="ВЫБРАТЬ
|СУММА(уатПутевойЛист.СпидометрВозвращения - уатПутевойЛист.СпидометрВыезда) КАК ПройденноеРасстояние,
|уатПутевойЛист.Водитель1 КАК Водитель1,
|уатПутевойЛист.Водитель1.Наименование,
|уатПутевойЛист.Дата
|ИЗ
|Документ.уатПутевойЛист КАК уатПутевойЛист
|СГРУППИРОВАТЬ ПО
|уатПутевойЛист.Водитель1,
|уатПутевойЛист.Водитель1.Наименование,
|уатПутевойЛист.Дата";
Результат =Запрос.Выполнить();
Выборка=Результат.Выбрать();
ТЗ=Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("ПройденноеРасстояние");
ТЗ.Колонки.Добавить("Водитель1");
Тз.Колонки.Добавить("Наименование");
Тз.Колонки.Добавить("Дата");
Пока Выборка.Следующий() Цикл;
Строка=ТЗ.Добавить();
Строка.ПройденноеРасстояние=Выборка.ПройденноеРасстояние;
Строка.Водитель1=Выборка.Водитель1Description;
Строка.Наименование=Выборка.Водитель1Description;
Строка.Наименование=Выборка.Date;
КонецЦикла;
ПоказатьЗапрос в СКД:
ВЫБРАТЬ
МаршрутноеЗаданиеДокументыРеализации.СуммаЗаявки,
НАЧАЛОПЕРИОДА(МаршрутноеЗаданиеДокументыРеализации.Ссылка.Дата, ДЕНЬ) КАК Дата,
МаршрутноеЗаданиеДокументыРеализации.Ссылка.Водитель,
МаршрутноеЗаданиеДокументыРеализации.Ссылка.ВесГруза КАК Вес,
МаршрутноеЗаданиеДокументыРеализации.Ссылка.Подразделение,
МаршрутноеЗаданиеДокументыРеализации.Заявка.ТорговаяТочка.Код КАК КоличествоТочек,
МаршрутноеЗаданиеДокументыРеализации.Ссылка.ДатаДоставки,
МаршрутноеЗаданиеДокументыРеализации.Ссылка.Дата КАК Дата1,
РАЗНОСТЬДАТ(МаршрутноеЗаданиеДокументыРеализации.Ссылка.Дата, МаршрутноеЗаданиеДокументыРеализации.Ссылка.ДатаДоставки, ДЕНЬ) КАК ОтработаноДней,
МаршрутноеЗаданиеДокументыРеализации.Заявка.МаршрутноеЗадание.Район,
МаршрутноеЗаданиеДокументыРеализации.Реализация КАК КоличествоНакладных,
МаршрутноеЗаданиеДокументыРеализации.Район КАК Район,
МаршрутноеЗаданиеДокументыРеализации.Реализация,
РеализацияТоваровУслуг.Товары.(
МАКСИМУМ(ВЫБОР
КОГДА МаршрутноеЗаданиеДокументыРеализации.Реализация.ТорговаяТочка.ТипТоргТочки = ЗНАЧЕНИЕ(Перечисление.ТипТоргТочки.Супермаркет)
ТОГДА РеализацияТоваровУслуг.Товары.НомерСтроки
КОНЕЦ) КАК КоличествоПозиций
),
МаршрутноеЗаданиеДокументыРеализации.Заявка.МаршрутноеЗадание КАК МаршрутноеЗадание,
МаршрутноеЗаданиеДокументыРеализации.Ссылка.Водитель.Наименование,
МаршрутноеЗаданиеДокументыРеализации.Заявка.ТорговаяТочка.Код
ИЗ
Документ.МаршрутноеЗадание.ДокументыРеализации КАК МаршрутноеЗаданиеДокументыРеализации
ПОЛНОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ПО МаршрутноеЗаданиеДокументыРеализации.Реализация = РеализацияТоваровУслуг.Ссылка
ГДЕ
МаршрутноеЗаданиеДокументыРеализации.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И МаршрутноеЗаданиеДокументыРеализации.Ссылка.Проведен
ПоказатьПрикрепленные файлы:
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)нет. Я получил "пройденное расстояние" из соединяемой базы. Теперь нужно сделать так,чтобы пройденное расстояние показывала пройденное км по дням. В СКД сделал группировку по водителю и по дате.Например:
Иванов
21 мая-20 км
Иванов
21 мая-50 км
Иванов
21 мая-30км
Иванов(итого по 21 мая)-100 км
Иванов
21 мая-20 км
Иванов
21 мая-50 км
Иванов
21 мая-30км
Иванов(итого по 21 мая)-100 км
(4)
ТЗ=Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("ПройденноеРасстояние");
ТЗ.Колонки.Добавить("Водитель1");
Тз.Колонки.Добавить("Наименование");
Тз.Колонки.Добавить("Дата", новый ОписаниеТипов("Дата"));
Пока Выборка.Следующий() Цикл;
Строка=ТЗ.Добавить();
Строка.ПройденноеРасстояние=Выборка.ПройденноеРасстояние;
Строка.Водитель1=Выборка.Водитель1Description;
Строка.Наименование=Выборка.Водитель1Description;
Строка.Дата=НачалоДня(Выборка.Date);
КонецЦикла;
И связь по дате
ТЗ=Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("ПройденноеРасстояние");
ТЗ.Колонки.Добавить("Водитель1");
Тз.Колонки.Добавить("Наименование");
Тз.Колонки.Добавить("Дата", новый ОписаниеТипов("Дата"));
Пока Выборка.Следующий() Цикл;
Строка=ТЗ.Добавить();
Строка.ПройденноеРасстояние=Выборка.ПройденноеРасстояние;
Строка.Водитель1=Выборка.Водитель1Description;
Строка.Наименование=Выборка.Водитель1Description;
Строка.Дата=НачалоДня(Выборка.Date);
КонецЦикла;
И связь по дате
(10)Неправильную логику отчета. Вы пишите запрос к Дате документа(и его не приводите к началу дня), а он ездил 2 дня. Все расстояние пойдет на дату документа, во второй день Водила курил бамбук. В этом случае может быть как то пропорционально расстояние разбить
(13)От простого к сложному.
Дробим УАТ запрос на две части. Простую и сложную и Объединяем Объединить ВСЕ
С второй частью, где рейс более одного дня по сложнее. В УАТ есть регистр сведений уатРегламентированныйПроизводственныйКалендарь.
У Меня УАТ нет, только Конфа и разумеется без ключа. помочь не смогу
Дробим УАТ запрос на две части. Простую и сложную и Объединяем Объединить ВСЕ
ВЫБРАТЬ
СУММА(уатПутевойЛист.СпидометрВозвращения - уатПутевойЛист.СпидометрВыезда) КАК ПройденноеРасстояние,
уатПутевойЛист.Водитель1 КАК Водитель1,
уатПутевойЛист.Водитель1.Наименование,
НАЧАЛОПЕРИОДА(Документ.уатПутевойЛист.ДатаВыезда,День) КАК Дата
ИЗ
Документ.уатПутевойЛист КАК уатПутевойЛис
ГДЕ
Документ.уатПутевойЛист.ДатаВыезда Между &ДатаНачала и &ДатаОкончания //У Вас в запросе нет этого условия
И НАЧАЛОПЕРИОДА(Документ.уатПутевойЛист.ДатаВыезда,День) = НАЧАЛОПЕРИОДА(уатПутевойЛист.ДатаВозвращения,День)
СГРУППИРОВАТЬ ПО
уатПутевойЛист.Водитель1,
уатПутевойЛист.Водитель1.Наименование,
НАЧАЛОПЕРИОДА(Документ.уатПутевойЛист.ДатаВыезда,День)
ПоказатьС второй частью, где рейс более одного дня по сложнее. В УАТ есть регистр сведений уатРегламентированныйПроизводственныйКалендарь.
У Меня УАТ нет, только Конфа и разумеется без ключа. помочь не смогу
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот