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 3 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 3 11.06.19 10:56 Сейчас в теме
(4)

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

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

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

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

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

Вот здесь точно ошибка...
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Бобров
зарплата от 100 000 руб. до 150 000 руб.
Временный (на проект)

Студент (стажер) 1С
Нижний Новгород
зарплата от 25 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 100 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 80 000 руб.
Полный день