СКД - выражение на основе вычисляемых или пользовательских полей
Добрый день!
В отчёте на СКД требуется многократно использовать одни поля в выражениях для вычисления других. Например, вычислить из имени файла период, затем найти дельту между 2 такими периодами, затем разность между 2 таким дельтами, вычисляемыми по различным алгоритмам. Поскольку в вычисляемом поле использовать другое вычисляемое поле нельзя, решил выкрутиться через пользовательские поля, но и там ругается на знак "-" в выражении (см. рис. 1-3).
Можно ли как-то выкрутиться или только как в запросе выражения громоздить?
В отчёте на СКД требуется многократно использовать одни поля в выражениях для вычисления других. Например, вычислить из имени файла период, затем найти дельту между 2 такими периодами, затем разность между 2 таким дельтами, вычисляемыми по различным алгоритмам. Поскольку в вычисляемом поле использовать другое вычисляемое поле нельзя, решил выкрутиться через пользовательские поля, но и там ругается на знак "-" в выражении (см. рис. 1-3).
Можно ли как-то выкрутиться или только как в запросе выражения громоздить?
Прикрепленные файлы:
По теме из базы знаний
- Универсальный конструктор отчетов (Новейший отчет) для 1C 7.7
- 115 полезностей по курсу СКД Евгения Гилёва
- Создание простого отчета на СКД
- 1C:Предприятие для программистов: Запросы и отчеты. Онлайн-интенсив с 13 ноября по 16 декабря 2019 г.
- 1C:Предприятие для программистов: Запросы и отчеты. Онлайн-интенсив.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) типы данных получаемых в выражениях это же тип ДатаВремя?
Для пользовательских полей действуют такие же правила, как и для вычисляемых полей. Даты нельзя математически вычитать. Используйте РазностьДат
Имена периодов подставить так, как они указаны в Заголовок.
Для пользовательских полей действуют такие же правила, как и для вычисляемых полей. Даты нельзя математически вычитать. Используйте РазностьДат
РАЗНОСТЬДАТ([Имя минимального периода], [Имя максимального периода], "ДЕНЬ")
Имена периодов подставить так, как они указаны в Заголовок.
(11)
А, вот оно что! А то у меня то видит, то не видит. Вообще система чудес. Добавил пользовательское поле на одноименной закладке, иду на закладку "Выбранные поля", разворачиваю папку "Пользовательские поля", а его там нет! Ещё раз переключился туда-сюда - появилось. На минус ругалось, сделал через ВычислитьВыражение() - работает. Попробовал по совету с квадратными скобками - прямо в диалоговом окне ругается, что не видит поля. Чёрт меня дёрнул использовать имена полей без ВычислитьВыражение() заработало, но с тормозами, вернул ВычислитьВыражение() - по-прежнему тормозит. Чудеса!
То есть организовать цепочку вычислений через пользовательские поля совсем-совсем никак?
если оно добавлено в выбранные поля отчета
А, вот оно что! А то у меня то видит, то не видит. Вообще система чудес. Добавил пользовательское поле на одноименной закладке, иду на закладку "Выбранные поля", разворачиваю папку "Пользовательские поля", а его там нет! Ещё раз переключился туда-сюда - появилось. На минус ругалось, сделал через ВычислитьВыражение() - работает. Попробовал по совету с квадратными скобками - прямо в диалоговом окне ругается, что не видит поля. Чёрт меня дёрнул использовать имена полей без ВычислитьВыражение() заработало, но с тормозами, вернул ВычислитьВыражение() - по-прежнему тормозит. Чудеса!
То есть организовать цепочку вычислений через пользовательские поля совсем-совсем никак?
(12)
Идем на закладку Поля (рядом с пользовательские поля) и смотрим как называется интересуемое поле. Копируем его. В выражение пользовательского поля вставляем скопированное значение и окружаем его квадратными скобками.
Попробовал по совету с квадратными скобками - прямо в диалоговом окне ругается, что не видит поля.
Идем на закладку Поля (рядом с пользовательские поля) и смотрим как называется интересуемое поле. Копируем его. В выражение пользовательского поля вставляем скопированное значение и окружаем его квадратными скобками.
(22) Есть три вычисляемых поля, грубо Длина1, Длина2, Длина3. Требуется вычислить
Дельта1=Длина2-Длина1,
Дельта2=Длина3-Длина1
Процент1=Дельта1/Длина1*100
Процент2=Дельта2/Длина1*100
Можно ли как-то сделать, чтобы одно пользовательское поле использовалось в выражении для другого?
Дельта1=Длина2-Длина1,
Дельта2=Длина3-Длина1
Процент1=Дельта1/Длина1*100
Процент2=Дельта2/Длина1*100
Можно ли как-то сделать, чтобы одно пользовательское поле использовалось в выражении для другого?
(27) Максимализм - это когда наоборот из-за невозможности использовать промежуточные переменные получаются монстры вида
но ту хотя бы через временные таблицы можно разжевать.
ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ТВ_Программа.Период, ЧАС, -6), МЕСЯЦ), ЧАС, ЧАС(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ТВ_Программа.Период, ЧАС, -6), МЕСЯЦ), ЧАС, ДЕНЬ(ДОБАВИТЬКДАТЕ(ТВ_Программа.Период, ЧАС, -6)) + ЧАС(ДОБАВИТЬКДАТЕ(ТВ_Программа.Период, ЧАС, -6)) - 1))), ЧАС, 6), МИНУТА, 47) КАК ЭталонныйПериод
но ту хотя бы через временные таблицы можно разжевать.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот