Рассчитать пройденное расстояние по дням

1. user1202776 11.06.19 09:27 Сейчас в теме
Беру пройденное расстояние из соединяемой базы.
получил "пройденное расстояние" из соединяемой базы. Теперь нужно сделать так,чтобы пройденное расстояние показывала пройденное км по дням. В СКД сделал группировку по водителю и по дате.Например:
Иванов
21 мая-20 км
Иванов
21 мая-50 км
Иванов
21 мая-30км
Иванов(итого по 21 мая)-100 км
сейчас "пройденное расстояние выводит все данные не считая период.И на каждый день показывает один и тот же показатель
Как сделать так, чтобы пройденное расстояние выводила сумму по каждому водителю и выводила правильную информацию по дням?
Беру данные из соединяемой базы:
Запрос = Соединение;
	Запрос = Соединение.NewObject("Запрос"); 
	Запрос.Текст ="ВЫБРАТЬ
	|СУММА(уатПутевойЛист.СпидометрВозвращения - уатПутевойЛист.СпидометрВыезда) КАК ПройденноеРасстояние,
	|уатПутевойЛист.Водитель1 КАК Водитель1,
	|уатПутевойЛист.Водитель1.Наименование,
	|уатПутевойЛист.Дата
    |ИЗ
	|Документ.уатПутевойЛист КАК уатПутевойЛист

    |СГРУППИРОВАТЬ ПО
	|уатПутевойЛист.Водитель1,
	|уатПутевойЛист.Водитель1.Наименование,
	|уатПутевойЛист.Дата";
	Результат =Запрос.Выполнить();
	Выборка=Результат.Выбрать();


	
	ТЗ=Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("ПройденноеРасстояние");
	ТЗ.Колонки.Добавить("Водитель1");
	Тз.Колонки.Добавить("Наименование");
	Тз.Колонки.Добавить("Дата");
	
	Пока  Выборка.Следующий() Цикл;
		Строка=ТЗ.Добавить();
		Строка.ПройденноеРасстояние=Выборка.ПройденноеРасстояние;
		Строка.Водитель1=Выборка.Водитель1Description;
		Строка.Наименование=Выборка.Водитель1Description;
		Строка.Наименование=Выборка.Date;
	КонецЦикла;
Показать


Запрос в СКД:
ВЫБРАТЬ
	МаршрутноеЗаданиеДокументыРеализации.СуммаЗаявки,
	НАЧАЛОПЕРИОДА(МаршрутноеЗаданиеДокументыРеализации.Ссылка.Дата, ДЕНЬ) КАК Дата,
	МаршрутноеЗаданиеДокументыРеализации.Ссылка.Водитель,
	МаршрутноеЗаданиеДокументыРеализации.Ссылка.ВесГруза КАК Вес,
	МаршрутноеЗаданиеДокументыРеализации.Ссылка.Подразделение,
	МаршрутноеЗаданиеДокументыРеализации.Заявка.ТорговаяТочка.Код КАК КоличествоТочек,
	МаршрутноеЗаданиеДокументыРеализации.Ссылка.ДатаДоставки,
	МаршрутноеЗаданиеДокументыРеализации.Ссылка.Дата КАК Дата1,
	РАЗНОСТЬДАТ(МаршрутноеЗаданиеДокументыРеализации.Ссылка.Дата, МаршрутноеЗаданиеДокументыРеализации.Ссылка.ДатаДоставки, ДЕНЬ) КАК ОтработаноДней,
	МаршрутноеЗаданиеДокументыРеализации.Заявка.МаршрутноеЗадание.Район,
	МаршрутноеЗаданиеДокументыРеализации.Реализация КАК КоличествоНакладных,
	МаршрутноеЗаданиеДокументыРеализации.Район КАК Район,
	МаршрутноеЗаданиеДокументыРеализации.Реализация,
	РеализацияТоваровУслуг.Товары.(
		МАКСИМУМ(ВЫБОР
				КОГДА МаршрутноеЗаданиеДокументыРеализации.Реализация.ТорговаяТочка.ТипТоргТочки = ЗНАЧЕНИЕ(Перечисление.ТипТоргТочки.Супермаркет)
					ТОГДА РеализацияТоваровУслуг.Товары.НомерСтроки
			КОНЕЦ) КАК КоличествоПозиций
	),
	МаршрутноеЗаданиеДокументыРеализации.Заявка.МаршрутноеЗадание КАК МаршрутноеЗадание,
	МаршрутноеЗаданиеДокументыРеализации.Ссылка.Водитель.Наименование,
	МаршрутноеЗаданиеДокументыРеализации.Заявка.ТорговаяТочка.Код
ИЗ
	Документ.МаршрутноеЗадание.ДокументыРеализации КАК МаршрутноеЗаданиеДокументыРеализации
		ПОЛНОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		ПО МаршрутноеЗаданиеДокументыРеализации.Реализация = РеализацияТоваровУслуг.Ссылка
ГДЕ
	МаршрутноеЗаданиеДокументыРеализации.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
	И МаршрутноеЗаданиеДокументыРеализации.Ссылка.Проведен
Показать
Прикрепленные файлы:
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dandykry 9 11.06.19 09:52 Сейчас в теме
(1) Ничего не понятно

Нужно получить из соединяемой базы ровно такую же таблицу, как и в СКД?
3. user1202776 11.06.19 09:58 Сейчас в теме
(2)нет. Я получил "пройденное расстояние" из соединяемой базы. Теперь нужно сделать так,чтобы пройденное расстояние показывала пройденное км по дням. В СКД сделал группировку по водителю и по дате.Например:
Иванов
21 мая-20 км
Иванов
21 мая-50 км
Иванов
21 мая-30км
Иванов(итого по 21 мая)-100 км
4. user1202776 11.06.19 09:59 Сейчас в теме
(2)сейчас "пройденное расстояние выводит все данные не считая период.И на каждый день показывает один и тот же показатель
14. dandykry 9 11.06.19 10:56 Сейчас в теме
(4)

ТЗ=Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("ПройденноеРасстояние");
ТЗ.Колонки.Добавить("Водитель1");
Тз.Колонки.Добавить("Наименование");
Тз.Колонки.Добавить("Дата", новый ОписаниеТипов("Дата"));

Пока Выборка.Следующий() Цикл;
Строка=ТЗ.Добавить();
Строка.ПройденноеРасстояние=Выборка.ПройденноеРасстояние;
Строка.Водитель1=Выборка.Водитель1Description;
Строка.Наименование=Выборка.Водитель1Description;
Строка.Дата=НачалоДня(Выборка.Date);
КонецЦикла;

И связь по дате
15. user1202776 11.06.19 11:32 Сейчас в теме
(14)спасибо. Как сделать так, чтобы в итоге сумму различных выводил?
5. tusv 211 11.06.19 10:14 Сейчас в теме
(1) А где в связях наборов данных вторая связь по дате? Вот вам декартово соединение и выводит
6. user1202776 11.06.19 10:20 Сейчас в теме
я делал связь по дате. Тогда ничего вообще не выводит
7. tusv 211 11.06.19 10:23 Сейчас в теме
(6)Так дату из УАТ тоже надо привести НачалоПериода
11. user1202776 11.06.19 10:38 Сейчас в теме
(7)привел к НачалоПериода и все равно ничего не выводит
8. tusv 211 11.06.19 10:27 Сейчас в теме
И ваще в УАТ есть ДатаВыезда и ДатаВозвращения, Состав даты Дата и Время, а если они не равны, то есть рейс больше одного дня?
9. user1202776 11.06.19 10:30 Сейчас в теме
10. user1202776 11.06.19 10:38 Сейчас в теме
12. tusv 211 11.06.19 10:44 Сейчас в теме
(10)Неправильную логику отчета. Вы пишите запрос к Дате документа(и его не приводите к началу дня), а он ездил 2 дня. Все расстояние пойдет на дату документа, во второй день Водила курил бамбук. В этом случае может быть как то пропорционально расстояние разбить
13. user1202776 11.06.19 10:49 Сейчас в теме
(12)как сделать так, чтобы правильно считал?)
16. tusv 211 11.06.19 11:33 Сейчас в теме
(13)От простого к сложному.
Дробим УАТ запрос на две части. Простую и сложную и Объединяем Объединить ВСЕ
ВЫБРАТЬ
   СУММА(уатПутевойЛист.СпидометрВозвращения - уатПутевойЛист.СпидометрВыезда) КАК ПройденноеРасстояние,
   уатПутевойЛист.Водитель1 КАК Водитель1,
   уатПутевойЛист.Водитель1.Наименование,
  НАЧАЛОПЕРИОДА(Документ.уатПутевойЛист.ДатаВыезда,День)  КАК Дата
 ИЗ
    Документ.уатПутевойЛист КАК уатПутевойЛис
ГДЕ
   Документ.уатПутевойЛист.ДатаВыезда Между &ДатаНачала и &ДатаОкончания //У Вас в запросе нет этого условия
  И  НАЧАЛОПЕРИОДА(Документ.уатПутевойЛист.ДатаВыезда,День) = НАЧАЛОПЕРИОДА(уатПутевойЛист.ДатаВозвращения,День)
 СГРУППИРОВАТЬ ПО
    уатПутевойЛист.Водитель1,
    уатПутевойЛист.Водитель1.Наименование,
    НАЧАЛОПЕРИОДА(Документ.уатПутевойЛист.ДатаВыезда,День)
Показать

С второй частью, где рейс более одного дня по сложнее. В УАТ есть регистр сведений уатРегламентированныйПроизводственныйКалендарь.
У Меня УАТ нет, только Конфа и разумеется без ключа. помочь не смогу
17. user1202776 11.06.19 11:35 Сейчас в теме
(16)спасибо. Как сделать так, чтобы в итоге сумму различных выводил?
18. margo2007 15 13.06.19 08:00 Сейчас в теме
У Вас в коде:

Строка.Наименование=Выборка.Date;

Вот здесь точно ошибка...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот