СКД. Данные строки с мин/макс датой в группировке отобразить в ресурсе
СКД. Платформа 8.3. Конфа Управление Автотранспортом. По результату запроса получается набор данных:
Авто | ПутевойЛист | ОдометрВыезда | ДатаВыезда
Группировка: Авто.
Задача:
Поле ОдометрВыезда сделать ресурсными.
В группировке Авто значение ресурса ОдометрВыезда должно быть взято из путевого листа с минимальной ДатаВыезда. Значение ДатаВыезда уникальна.
В выражении ресурса ОдометрВыезда пишу :
Минимум(ВычислитьВыражениеСГруппировкойМассив("ДатаВыезда", "Авто")), тем самым получаю мин ДатаВыезда по Группировке Авто. А вот как получить значение ОдометрВыезда из детальной записи с вычисленной датой я ни как не могу понять.
По моей логике должно быть:
Выбор Когда ДатаВыезда = Минимум(ВычислитьВыражениеСГруппировкойМассив("ДатаВыезда", "Авто")) Тогда ОдометрВыезда Иначе NULL Конец. Помогите додумать как сделать.
Оффтоп: Т.к. с увеличением ДатаВыезда значения Одометров также увеличивается (или не меняется) то в конкретно этой ситуаци в выражении ресурса ОдометрВыезда можно поставить Минимум(ОдометрВыезда). Но при обнулении одометра :(
Авто | ПутевойЛист | ОдометрВыезда | ДатаВыезда
Группировка: Авто.
Задача:
Поле ОдометрВыезда сделать ресурсными.
В группировке Авто значение ресурса ОдометрВыезда должно быть взято из путевого листа с минимальной ДатаВыезда. Значение ДатаВыезда уникальна.
В выражении ресурса ОдометрВыезда пишу :
Минимум(ВычислитьВыражениеСГруппировкойМассив("ДатаВыезда", "Авто")), тем самым получаю мин ДатаВыезда по Группировке Авто. А вот как получить значение ОдометрВыезда из детальной записи с вычисленной датой я ни как не могу понять.
По моей логике должно быть:
Выбор Когда ДатаВыезда = Минимум(ВычислитьВыражениеСГруппировкойМассив("ДатаВыезда", "Авто")) Тогда ОдометрВыезда Иначе NULL Конец. Помогите додумать как сделать.
Оффтоп: Т.к. с увеличением ДатаВыезда значения Одометров также увеличивается (или не меняется) то в конкретно этой ситуаци в выражении ресурса ОдометрВыезда можно поставить Минимум(ОдометрВыезда). Но при обнулении одометра :(
По теме из базы знаний
Найденные решения
(25) Xershi, спасибо за помошь, я уже вычислил мин/мак показания счетчика на уровне запроса и вывел в набор данных несколько полей. В ресурсе "рассчитаных по" "ТС" в выражение записал функцию Среднее() по вычисленным полям. Топик уже можно наверное закрывать, наврятли найдётся решение, основанное исключитльно на функция СКД.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Я достаточно давно смотрел эти курсы. Про вычисляемые поля знаю. Сейчас пересмотрел все новые выражения в языка компоновки в 8.3, все относительно понятно. Минимальную дату в группировке получил.
У меня только один вопрос, который я не могу решить: через какие дополнительные вычисляемые поля, какими функциями или хотя бы по какому алгоритму? Что или как нужно сравнивать в полученной датой, что бы получить значения поля из детальной записи.
У меня только один вопрос, который я не могу решить: через какие дополнительные вычисляемые поля, какими функциями или хотя бы по какому алгоритму? Что или как нужно сравнивать в полученной датой, что бы получить значения поля из детальной записи.
(7) Glebis, вот у тебя есть 2 строки ПЛ 100 и ПЛ 200, и ты хош чтобы в иерархии было ТС1 100, то делай вычисляемое поле с нахождением минимального(алгоритм ты уже сам написал я так понял) затем на вкладке ресурс вставляй это поле и в группировке выбери только галкой ТС, в макете настрой автоматом все должно работать.
(8) Xershi, Мне нужно в иерархии ТС1 что бы было 200 из ПутЛист3, т.к. у ПутЛист3 наименьшая дата выезда. Пока что я могу найти только наименьшую дату 01.01.2014 из ПутЛист3. Вопрос: как получить 200 (из строки набора данных 3го путевого листа).
Я не пойму какое вычисляемое поле нужно добавлять?
Я не пойму какое вычисляемое поле нужно добавлять?
Я, наверняка, мега тупень, но я в упор не понимаю даже на пальцах, что должно вычислять это вычисляемое поле?
Если добавлю вычисляемое поле МинДатаВыезда с выражением: , то получу минимальную дату для каждой строки набора данных. Затем добавлю это поле в ресурсы, а дальше то что? Что мне писать в поле выражения ресурса, по какому алгоритму искать внутри группировки значение ОдометрВыезда по этой дате?
Был бы перебор типа я бы им воспользовался, но такого в языке выражений СКД нету.
и подобное тоже не подходят.
Если добавлю вычисляемое поле МинДатаВыезда с выражением:
ВЫЧИСЛИТЬВЫРАЖЕНИЕ(Минимум(ДатаВыезда),,, "Первая", "Последняя")
Был бы перебор типа
Для каджого СтрГруппировки Из СтрокГруппировки Цикл
Выбор Когда МинДатаВызда = ДатаВызда Тогда ОдометрВыезда Иначе 0 Конец
Макет я не настраивал, поэтому применяется стандартный.
Конфа "РАРУС: Управление автотранспортом проф".
В группировке с названием "ТС" нужно в ресурсах "ЗначениеСчетчикаПриВыезде" и "ОстатокНаНачалоПЛ" поставить значение из путевого листа с наименьшей "ДатаВыезда". Сейчас расчет ресурсов включен только на уровне группировки "ПЛ" со стандатртной агрегатной функцией Сумма().
Конфа "РАРУС: Управление автотранспортом проф".
В группировке с названием "ТС" нужно в ресурсах "ЗначениеСчетчикаПриВыезде" и "ОстатокНаНачалоПЛ" поставить значение из путевого листа с наименьшей "ДатаВыезда". Сейчас расчет ресурсов включен только на уровне группировки "ПЛ" со стандатртной агрегатной функцией Сумма().
Прикрепленные файлы:
РеестрПутевыхЛистов.erf
(14) Xershi,Совет Ваш так и не понял. Если я просто поставлю в выражение ресурса "ЗначениеСчетчикаПриВыезде" и "рассчитывать по" = группировка "ТС", то в группировке ТС будет выводится первое попавшее значение из набора данных, которое подходит под группировку ТС.
А мне нужно чтобы "ЗначениеСчетчикаПриВыезде" по группировке ТС стояло показание из ПЛ с мин ДатойВыезда, а в "ЗначениеСчетчикаПриВозвращении" из ПЛа с макс "ДатойВозвращения".
Оффтоп: Конструктор выведет детальную запись, а мне нужно что бы пользователь видил вместо детальной записи данные группировки по ПЛу, чтобы в одной строке отчета отображалось несколько возможных строк набора данных. Т.е. если в наборе данных для одного ПЛ есть несколько задания, то в итоговом отчете должна выводиться не несполько строк, а только одна, а в ресурсном поле "Заказчик задания" должно выводится многострочная таблица значений, сформированная компановщиком.
А мне нужно чтобы "ЗначениеСчетчикаПриВыезде" по группировке ТС стояло показание из ПЛ с мин ДатойВыезда, а в "ЗначениеСчетчикаПриВозвращении" из ПЛа с макс "ДатойВозвращения".
Оффтоп: Конструктор выведет детальную запись, а мне нужно что бы пользователь видил вместо детальной записи данные группировки по ПЛу, чтобы в одной строке отчета отображалось несколько возможных строк набора данных. Т.е. если в наборе данных для одного ПЛ есть несколько задания, то в итоговом отчете должна выводиться не несполько строк, а только одна, а в ресурсном поле "Заказчик задания" должно выводится многострочная таблица значений, сформированная компановщиком.
Прикрепленные файлы:
![](/upload/forum/210/210d5a2fda771feb93ed61ccb9a80f70.jpg)
![](/upload/forum/80f/80fb6ef53491228a3d8f9c843c441ddd.jpg)
Это в данном конкретном случае мин значением счетчика и мин дата выезда находятся в одной строке. А в случае если счетчик будет заменён или обнулён в середине месяца, то по выражению "Минимум(ЗначениеСчетчикаПриВыезде)" ресурса по группировке ТС попадёт не значение счетчика на мин дату выезда, а значение обнулённого в середине месяца счётчика = 0, что не соответствует моему заданию.
Ещё раз попытаюсь объяснить, что мне нужно отобразить в ресурсной колонке ЗначениеСчетчикаПриВыезде в группировке по ТС значение этой колонки из строки с минимальным значением из другой колонки ДатаВыезда. Задача элементарно простая, но решение мне не понятно не на уровне кода (его я более-менее знаю), а на уровне алгоритма: что где вычислять...
Ещё раз попытаюсь объяснить, что мне нужно отобразить в ресурсной колонке ЗначениеСчетчикаПриВыезде в группировке по ТС значение этой колонки из строки с минимальным значением из другой колонки ДатаВыезда. Задача элементарно простая, но решение мне не понятно не на уровне кода (его я более-менее знаю), а на уровне алгоритма: что где вычислять...
Мне нужно будет в группировке по ТС в 3х ресурсах показывать значения из строки с мин датой, и ещё в 3х ресурсах из строки с макс датой. Если на уровне запроса делать, то придётся в набор данных добавлять ещё 6 полей, это ещё как минимум 2 левых соединения и ещё минуту ко времени формирования отчёта. Хотя судя по всему так и придётся делать :(.
А у тебя при выводе строки отсортированы по дате выезда?
если отсортированы, то попробуй использовать такие выражения:
UPD:
сорри, я код в своем комментарии несколько раз исправлял.
Даже не обязательно чтобы было отсортировано. У функции есть параметр для определения порядки сортировки:
если отсортированы, то попробуй использовать такие выражения:
ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ОдометрВыезда",,, "Первая", "Первая")
ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ОдометрВыезда",,, "Последняя", "Последняя")
UPD:
сорри, я код в своем комментарии несколько раз исправлял.
Даже не обязательно чтобы было отсортировано. У функции есть параметр для определения порядки сортировки:
ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ОдометрВыезда",,, "Первая", "Первая","ДатаВыезда",)
ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ОдометрВыезда",,, "Последняя", "Последняя","ДатаВыезда")
(20) rzabolotin, в выражение ресурса "ЗначениеСчетчикаПриВыезде" поставил
, "рассчитывать по..." оставил пустым. Получается что в каждой строке ПЛ отображается Мин и Макс значения счетчика по группировке ТС. Числа конешно правильные, но отображаться они должны не на уровне группировки ПЛ, а на уровне группировки ТС :(. Сижу научнотыкаю...
rzabolotin, спасиб за совет.
ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ЗначениеСчетчикаПриВыезде", , ,"Первая", "Первая", "ДатаВыезда")
rzabolotin, спасиб за совет.
Прикрепленные файлы:
![](/upload/forum/upload/9e1/9e13bdf1565d9656bece520eee5b294a.jpg)
На уровне группировки вычислить не получается, потому что если делать сортировку по "ДатаВыезда", то значения по группировке "ТС" не выводится, т.к. поля "ДатаВыезда" на уровне группировки ещё нету. Если же в ВычислитьВыражение сортировку не указывать, то в группировке ТС выводится первое произвольное значение из набора данным, что не есть правильно. Сортировка на уровне запроса тоже не всегда правильно формирует набора данных :(
(25) Xershi, спасибо за помошь, я уже вычислил мин/мак показания счетчика на уровне запроса и вывел в набор данных несколько полей. В ресурсе "рассчитаных по" "ТС" в выражение записал функцию Среднее() по вычисленным полям. Топик уже можно наверное закрывать, наврятли найдётся решение, основанное исключитльно на функция СКД.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот