СКД. Данные строки с мин/макс датой в группировке отобразить в ресурсе

1. Glebis 13 07.10.14 12:38 Сейчас в теме
СКД. Платформа 8.3. Конфа Управление Автотранспортом. По результату запроса получается набор данных:
Авто | ПутевойЛист | ОдометрВыезда | ДатаВыезда
Группировка: Авто.

Задача:
Поле ОдометрВыезда сделать ресурсными.
В группировке Авто значение ресурса ОдометрВыезда должно быть взято из путевого листа с минимальной ДатаВыезда. Значение ДатаВыезда уникальна.

В выражении ресурса ОдометрВыезда пишу :
Минимум(ВычислитьВыражениеСГруппировкойМассив("ДатаВыезда", "Авто")), тем самым получаю мин ДатаВыезда по Группировке Авто. А вот как получить значение ОдометрВыезда из детальной записи с вычисленной датой я ни как не могу понять.
По моей логике должно быть:
Выбор Когда ДатаВыезда = Минимум(ВычислитьВыражениеСГруппировкойМассив("ДатаВыезда", "Авто")) Тогда ОдометрВыезда Иначе NULL Конец. Помогите додумать как сделать.

Оффтоп: Т.к. с увеличением ДатаВыезда значения Одометров также увеличивается (или не меняется) то в конкретно этой ситуаци в выражении ресурса ОдометрВыезда можно поставить Минимум(ОдометрВыезда). Но при обнулении одометра :(
По теме из базы знаний
Найденные решения
26. Glebis 13 10.10.14 15:22 Сейчас в теме
(25) Xershi, спасибо за помошь, я уже вычислил мин/мак показания счетчика на уровне запроса и вывел в набор данных несколько полей. В ресурсе "рассчитаных по" "ТС" в выражение записал функцию Среднее() по вычисленным полям. Топик уже можно наверное закрывать, наврятли найдётся решение, основанное исключитльно на функция СКД.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1520 07.10.14 12:44 Сейчас в теме
(1) Glebis, создай вычисляемое поле там твой код для "ОдометрВыезда " и затем как обычный ресурс добавишь.
Слей 125 уроков гилева по СКД, там примеры!
3. Glebis 13 07.10.14 14:59 Сейчас в теме
Не понял какое поле нужно создавать?
Подскажите, пожалуйста, какое поле добавлять и по какому алгоритму вычислять ресурс.
4. Xershi 1520 07.10.14 15:19 Сейчас в теме
(3) Glebis, алгоритм ты уже сам пиши. В СКд есть вычисляемые поля более подробно в уроках смотри.
5. Glebis 13 07.10.14 15:31 Сейчас в теме
Я достаточно давно смотрел эти курсы. Про вычисляемые поля знаю. Сейчас пересмотрел все новые выражения в языка компоновки в 8.3, все относительно понятно. Минимальную дату в группировке получил.
У меня только один вопрос, который я не могу решить: через какие дополнительные вычисляемые поля, какими функциями или хотя бы по какому алгоритму? Что или как нужно сравнивать в полученной датой, что бы получить значения поля из детальной записи.
6. Xershi 1520 07.10.14 15:49 Сейчас в теме
(5) Glebis,
получить значения поля из детальной записи
покажите что это такое?
7. Glebis 13 07.10.14 16:01 Сейчас в теме
(6) Xershi,
ТС1 200
ПутЛист1| 100 | 02.01.2014
ПутЛист2| 300 | 03.01.2014
ПутЛист3| 200 | 01.01.2014
ТС2 100
ПутЛист4| 100 | 01.01.2014
ПутЛист5| 200 | 02.01.2014

Мне нужно вычислить вот эти числа в группировке ТС.
8. Xershi 1520 07.10.14 16:23 Сейчас в теме
(7) Glebis, вот у тебя есть 2 строки ПЛ 100 и ПЛ 200, и ты хош чтобы в иерархии было ТС1 100, то делай вычисляемое поле с нахождением минимального(алгоритм ты уже сам написал я так понял) затем на вкладке ресурс вставляй это поле и в группировке выбери только галкой ТС, в макете настрой автоматом все должно работать.
9. Glebis 13 08.10.14 07:31 Сейчас в теме
(8) Xershi, Мне нужно в иерархии ТС1 что бы было 200 из ПутЛист3, т.к. у ПутЛист3 наименьшая дата выезда. Пока что я могу найти только наименьшую дату 01.01.2014 из ПутЛист3. Вопрос: как получить 200 (из строки набора данных 3го путевого листа).
Я не пойму какое вычисляемое поле нужно добавлять?
10. Xershi 1520 08.10.14 10:08 Сейчас в теме
(9) Glebis, так в чем проблема? вычисляемое поле считает твое значение? СКД уроки посмотрел по вычисляемым полям?
11. Glebis 13 08.10.14 10:52 Сейчас в теме
Я, наверняка, мега тупень, но я в упор не понимаю даже на пальцах, что должно вычислять это вычисляемое поле?
Если добавлю вычисляемое поле МинДатаВыезда с выражением:
ВЫЧИСЛИТЬВЫРАЖЕНИЕ(Минимум(ДатаВыезда),,, "Первая", "Последняя")
, то получу минимальную дату для каждой строки набора данных. Затем добавлю это поле в ресурсы, а дальше то что? Что мне писать в поле выражения ресурса, по какому алгоритму искать внутри группировки значение ОдометрВыезда по этой дате?
Был бы перебор типа
Для каджого СтрГруппировки Из СтрокГруппировки Цикл 
я бы им воспользовался, но такого в языке выражений СКД нету.
Выбор Когда МинДатаВызда = ДатаВызда Тогда ОдометрВыезда Иначе 0 Конец
и подобное тоже не подходят.
12. Xershi 1520 08.10.14 11:10 Сейчас в теме
(11) Glebis, а макет ты как настроил? Ресурс ты туда впихнул? Плюс в ресурсе "рассчитывать по" укажи только ТС. Скинь свой СКД гляну что ты там натворил))
13. Glebis 13 08.10.14 12:22 Сейчас в теме
Макет я не настраивал, поэтому применяется стандартный.
Конфа "РАРУС: Управление автотранспортом проф".
В группировке с названием "ТС" нужно в ресурсах "ЗначениеСчетчикаПриВыезде" и "ОстатокНаНачалоПЛ" поставить значение из путевого листа с наименьшей "ДатаВыезда". Сейчас расчет ресурсов включен только на уровне группировки "ПЛ" со стандатртной агрегатной функцией Сумма().
Прикрепленные файлы:
РеестрПутевыхЛистов.erf
14. Xershi 1520 08.10.14 14:38 Сейчас в теме
(13) Glebis, на вкладке вычисляемые поля у тебя пусто. Настройка отчета (вот что имел в виду под макетом) ужасна. Сделай конструктором нормальную. И в ресурсе вместо суммы ставь просто: ЗначениеСчетчикаПриВыезде + выводить для ТС только.
15. Glebis 13 08.10.14 15:32 Сейчас в теме
(14) Xershi,Совет Ваш так и не понял. Если я просто поставлю в выражение ресурса "ЗначениеСчетчикаПриВыезде" и "рассчитывать по" = группировка "ТС", то в группировке ТС будет выводится первое попавшее значение из набора данных, которое подходит под группировку ТС.

А мне нужно чтобы "ЗначениеСчетчикаПриВыезде" по группировке ТС стояло показание из ПЛ с мин ДатойВыезда, а в "ЗначениеСчетчикаПриВозвращении" из ПЛа с макс "ДатойВозвращения".

Оффтоп: Конструктор выведет детальную запись, а мне нужно что бы пользователь видил вместо детальной записи данные группировки по ПЛу, чтобы в одной строке отчета отображалось несколько возможных строк набора данных. Т.е. если в наборе данных для одного ПЛ есть несколько задания, то в итоговом отчете должна выводиться не несполько строк, а только одна, а в ресурсном поле "Заказчик задания" должно выводится многострочная таблица значений, сформированная компановщиком.
Прикрепленные файлы:
16. Xershi 1520 08.10.14 16:05 Сейчас в теме
(15) Glebis, как мне кажется все намного проще. Сделай 2 ресурса ЗначениеСчетчикаПриВыезде для ТС значение минимум, для ПЛ без функций. Внимательно перечитай что я тут пишу и уроки Гилева смотри!
17. Glebis 13 08.10.14 20:51 Сейчас в теме
Это в данном конкретном случае мин значением счетчика и мин дата выезда находятся в одной строке. А в случае если счетчик будет заменён или обнулён в середине месяца, то по выражению "Минимум(ЗначениеСчетчикаПриВыезде)" ресурса по группировке ТС попадёт не значение счетчика на мин дату выезда, а значение обнулённого в середине месяца счётчика = 0, что не соответствует моему заданию.
Ещё раз попытаюсь объяснить, что мне нужно отобразить в ресурсной колонке ЗначениеСчетчикаПриВыезде в группировке по ТС значение этой колонки из строки с минимальным значением из другой колонки ДатаВыезда. Задача элементарно простая, но решение мне не понятно не на уровне кода (его я более-менее знаю), а на уровне алгоритма: что где вычислять...
18. dj_serega 393 08.10.14 22:18 Сейчас в теме
А запросом никак не помочь? В запросе создать несколько ВТ для расчета мин и макс даты. Потом объединением и свернуть по ТС. В итоге получим колонку заполненной дублями :) и этот дубль выводить в группировку скд.
19. Glebis 13 08.10.14 22:38 Сейчас в теме
Мне нужно будет в группировке по ТС в 3х ресурсах показывать значения из строки с мин датой, и ещё в 3х ресурсах из строки с макс датой. Если на уровне запроса делать, то придётся в набор данных добавлять ещё 6 полей, это ещё как минимум 2 левых соединения и ещё минуту ко времени формирования отчёта. Хотя судя по всему так и придётся делать :(.
20. rzabolotin 233 08.10.14 23:08 Сейчас в теме
А у тебя при выводе строки отсортированы по дате выезда?
если отсортированы, то попробуй использовать такие выражения:
ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ОдометрВыезда",,, "Первая", "Первая")

ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ОдометрВыезда",,, "Последняя", "Последняя")


UPD:
сорри, я код в своем комментарии несколько раз исправлял.
Даже не обязательно чтобы было отсортировано. У функции есть параметр для определения порядки сортировки:
ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ОдометрВыезда",,, "Первая", "Первая","ДатаВыезда",)

ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ОдометрВыезда",,, "Последняя", "Последняя","ДатаВыезда")
21. Glebis 13 09.10.14 09:20 Сейчас в теме
(20) rzabolotin, в выражение ресурса "ЗначениеСчетчикаПриВыезде" поставил
ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ЗначениеСчетчикаПриВыезде",  ,  ,"Первая", "Первая", "ДатаВыезда")
, "рассчитывать по..." оставил пустым. Получается что в каждой строке ПЛ отображается Мин и Макс значения счетчика по группировке ТС. Числа конешно правильные, но отображаться они должны не на уровне группировки ПЛ, а на уровне группировки ТС :(. Сижу научнотыкаю...
rzabolotin, спасиб за совет.
Прикрепленные файлы:
23. dj_serega 393 09.10.14 14:08 Сейчас в теме
(21) Glebis, а если вычислить выражение в ресурсах вывести только на уровне группировки "кака" получится?
22. Glebis 13 09.10.14 13:46 Сейчас в теме
Ничего не получается. Делаю вычисления на уровне запроса :(
24. Glebis 13 10.10.14 07:11 Сейчас в теме
На уровне группировки вычислить не получается, потому что если делать сортировку по "ДатаВыезда", то значения по группировке "ТС" не выводится, т.к. поля "ДатаВыезда" на уровне группировки ещё нету. Если же в ВычислитьВыражение сортировку не указывать, то в группировке ТС выводится первое произвольное значение из набора данным, что не есть правильно. Сортировка на уровне запроса тоже не всегда правильно формирует набора данных :(
25. Xershi 1520 10.10.14 10:35 Сейчас в теме
(24) Glebis, юзай консоль запросов, результат на лицо. Если мои советы не понятны смотри уроки иначе не сделаешь свой отчет.
26. Glebis 13 10.10.14 15:22 Сейчас в теме
(25) Xershi, спасибо за помошь, я уже вычислил мин/мак показания счетчика на уровне запроса и вывел в набор данных несколько полей. В ресурсе "рассчитаных по" "ТС" в выражение записал функцию Среднее() по вычисленным полям. Топик уже можно наверное закрывать, наврятли найдётся решение, основанное исключитльно на функция СКД.
Оставьте свое сообщение

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