10.01.2020, 12:07 | #281 |
Участник
|
Все-таки есть какая-то несогласованность в коде валидации в зависимости от места вызова.
Выполняю проверку находясь в конструкторе форматов ни ошибок, ни предупреждений. Поднимаюсь выше и выполняю проверку того же формата, но из формы списка конфигураций получаю предупреждения - заменить все WHERE на FILTER. Возвращаюсь в конструктор форматов, меняю функции и проверяю получаю ошибки - FILTER в данной формуле использоваться не может. |
|
10.01.2020, 17:45 | #282 |
Участник
|
Столкнулся с такой проблемой: нужно выводить значение в ячейку xls-отчет по условию - если журнал разнесен, то выводится значение из транзакции, если не разнесен - ячейка должна оставаться пустой.
Т.к. IF требует, чтобы оба параметра были одного типа, пишу выражение IF('$СomingJournals'.'$JournalHeader'.Posted=NoYes.Yes, @.'$InventLine'.Qty, VALUE("")) валидация проходит, но при выполнении возникает ошибка. Меняю выражение на IF('$СomingJournals'.'$JournalHeader'.Posted=NoYes.Yes, @.'$InventLine'.Qty, VALUE("0")) но тогда в ячейку выводится значение 0,00 (у ячейки установлен числовой формат) - это не устраивает заказчика; он хочет, чтобы ячейка была именно пустой. Единственное до чего додумался - оба параметра конвертировать в строковый тип IF('$СomingJournals'.'$JournalHeader'.Posted=NoYes.Yes, NUMBERFORMAT(@.'$InventLine'.Qty, "F2", "ru"), "") но (когда журнал разнесен) вывод значения в строковом представлении и трактуется Экселем как строка, т.е. не суммируется и т.п. Может кто-то уже решал такую задачу и может что-то подсказать? Т.е. в общем случае: по условию выводить значение в ячейку или вообще ничего не выводить. null в качестве второго параметра IF не воспринял. |
|
10.01.2020, 20:03 | #283 |
Banned
|
Да, конвертировать в строку.
Я в главе Date formatting: Show an empty date in Excel as blank аналогичный прием для дат описал: http://erconsult.eu/blog/electronic-...te-formatting/ |
|
10.01.2020, 21:59 | #284 |
Участник
|
Проще с видимостью ячейки поиграться имхо.
Зы DATEVALUE("31-12-2154","dd-MM-yyyy")) функция не всегда удобна: жёсткое формирование формата даты. А если на машине формат другой? Последний раз редактировалось axm2017; 10.01.2020 в 22:31. |
|
13.01.2020, 14:19 | #285 |
Участник
|
Цитата:
Сообщение от EVGL
Да, конвертировать в строку.
Я в главе Date formatting: Show an empty date in Excel as blank аналогичный прием для дат описал: http://erconsult.eu/blog/electronic-...te-formatting/ Если в колонке 5 число - это число, то в колонке 6 хоть и выглядит как число, но для Экселя это строка. И если бы в этой форме нужно было просчитать сумму по колонке таблицы, то по колонке 5 результат бы сформировался, а по колонке 6 - нет. Поэтому, ИМХО, преобразование в строку может быть решением в частном, но не общем случае. |
|
13.01.2020, 14:35 | #286 |
Участник
|
Цитата:
Сообщение от EVGL
Да, конвертировать в строку.
Я в главе Date formatting: Show an empty date in Excel as blank аналогичный прием для дат описал: http://erconsult.eu/blog/electronic-...te-formatting/ Но какие источники данных можно использовать в этом выражении? Ведь форма ввода параметров открывается ДО вычисления значений. Или я все не правильно понимаю? Где-то можно что-то почитать об этом? |
|
13.01.2020, 14:58 | #287 |
Участник
|
И в продолжение к предыдущему вопросу: какой смысл во Входном параметре пользователя в модели, если он не отображается при выполнении формата, построенного на этой модели?
На мой взгляд, "выполнение" модели - это чисто отладочный процесс, а конечный пользователь "выполняет" именно формат. И если не "протащить" эти параметры из модели в формат, The solution was to bind $ToDate directly to an unused field in the model. то пользователь не сможет их задать. И зачем тогда они нужны в модели? |
|
13.01.2020, 15:28 | #288 |
Участник
|
> The solution was to bind $ToDate directly to an unused field in the model.
Это воркжраунд для ошибки. Обычно ER сам детектит что UIP из модели используется в формате и показывает в этом случае. Обяснение было выше. |
|
14.01.2020, 07:57 | #289 |
Участник
|
Цитата:
Сообщение от Libovs
Столкнулся с такой проблемой: нужно выводить значение в ячейку xls-отчет по условию - если журнал разнесен, то выводится значение из транзакции, если не разнесен - ячейка должна оставаться пустой.
Т.к. IF требует, чтобы оба параметра были одного типа, пишу выражение IF('$СomingJournals'.'$JournalHeader'.Posted=NoYes.Yes, @.'$InventLine'.Qty, VALUE("")) валидация проходит, но при выполнении возникает ошибка. Меняю выражение на IF('$СomingJournals'.'$JournalHeader'.Posted=NoYes.Yes, @.'$InventLine'.Qty, VALUE("0")) но тогда в ячейку выводится значение 0,00 (у ячейки установлен числовой формат) - это не устраивает заказчика; он хочет, чтобы ячейка была именно пустой. Единственное до чего додумался - оба параметра конвертировать в строковый тип IF('$СomingJournals'.'$JournalHeader'.Posted=NoYes.Yes, NUMBERFORMAT(@.'$InventLine'.Qty, "F2", "ru"), "") но (когда журнал разнесен) вывод значения в строковом представлении и трактуется Экселем как строка, т.е. не суммируется и т.п. Может кто-то уже решал такую задачу и может что-то подсказать? Т.е. в общем случае: по условию выводить значение в ячейку или вообще ничего не выводить. null в качестве второго параметра IF не воспринял. |
|
14.01.2020, 11:42 | #290 |
Участник
|
|
|
14.01.2020, 11:49 | #291 |
Участник
|
Цитата:
1 картинка, правый блок, внизу есть поле "Включено". |
|
14.01.2020, 12:33 | #292 |
Участник
|
Цитата:
Сообщение от sparco
В Вашем сообщении Вебинар по функциональности Электронной отчетности (Electronic reporting) и Электронных сообщений (Electronic messages)
1 картинка, правый блок, внизу есть поле "Включено". Ячейку безусловно связал с узлом модели Ячейка<LineQtyFact>? = @.'$InventLine'.Qty а проверку разнесен ли журнал перенес в это свойство IF('$СomingJournals'.'$JournalHeader'.Posted=NoYes.Yes, истина, ложь) |
|
14.01.2020, 12:42 | #293 |
Участник
|
Практически вся функциональность ER по сути является "недокументированной" (кроме функций) и далеко не всегда очевидной в интерфейсе, вот и приходится обращаться и отвлекать знающих людей.
Может хотя бы парой слов подскажете функциональное назначение "Изменить видимость" для Входного параметра пользователя? Задавал это вопрос выше Вебинар по функциональности Электронной отчетности (Electronic reporting) и Электронных сообщений (Electronic messages) |
|
14.01.2020, 13:38 | #294 |
Участник
|
Согласен с вами, с документацией беда.
Как я понимаю, какие-либо вычисления происходят в момент вызова функции, которые связанны с вычислением. При редактировании visible входящего параметра ничего не мешает использовать что-нибудь из Data source. Например можно настроить связь с каким-нибудь параметр из настроечной таблицы, который будет в DS. При запуске отчета, произойдет вызов проверки visible на входящем параметре, следовательно по связке и произойдет запрос к БД. Но не уверен что в формате можно использовать таблицу напрямую. |
|
14.01.2020, 15:49 | #295 |
Участник
|
Т.е. уже при открытии диалогового окна параметров отчета, если для "Входного параметра пользователя" задана формула, использующая данные из БД, будет выполнятся запрос для анализа того, надо ли этот параметр отображать в диалоговом окне?
|
|
14.01.2020, 16:05 | #296 |
Участник
|
Сейчас, к сожалению, нет аксапты под рукой, где можно было бы это проверить точно, но вы правильно поняли мою мысль.
Однако это противоречит с идеологией, что в формат не должно быть аксаптовых объектов. Я думаю, что это можно легко проверить и связать с модельным атрибутом, который в свою очередь в модель меппинге связан с БД. |
|
14.01.2020, 16:40 | #297 |
Участник
|
Спасибо, поэкспериментирую на досуге.
|
|
14.01.2020, 16:44 | #298 |
Участник
|
У метода тип параметра date, а у поля записи тип datetime; нужно вызвать метод со значением этого поля.
Функция DATETODATETIME есть, а "обратной" нет? |
|
15.01.2020, 01:55 | #299 |
Banned
|
|
|
15.01.2020, 12:47 | #300 |
Участник
|
Я внимательно его прочитал и видел это решение, так же как и Ваш комментарий:
The solution was dumb, but it worked Но исходя из такой логики (с двойным преобразованием через строковое представление) можно обойтись и без функции DATETODATETIME DATETIMEVALUE(CONCATENATE(DATEFORMAT(@.’Created date’, “dd.MM.yyyy”), “ 00:00:00”), “dd.MM.yyyy hh:mm:ss”) Но разработчики ER эту функцию все-таки реализовали. |
|
Теги |
generic electronic reporting, ger |
|
|