Добрый день!
Столкнулся со следующей проблемой:
1. Создаю пользовательский запрос для отчета Word, содержащий на основной детали поле-перечисление, в построителе запросов отображается, как и надо, значение данного перечисления
2. Создаю отчет с использованием вышеупомянутого запроса, вставляю то самое поле-перечисление, при отображении отчета вместо значения перечисления отображается его id
Встречался ли кто с данной проблемой?
Спасибо!
TS X25 3.3.0.42 Firebird
Нравится
Добрый день, Павел.
Действительно, есть такая проблема.
Попробуйте заменить текст ф-ии GetFieldValueByCaption в scr_UserReportCommon на следующий:
function GetFieldValueByCaption(Dataset, FieldCaption) { var DataField = GetDataFieldByCaption(Dataset, FieldCaption); if (!Assigned(DataField)) { return; } if (!DataField.IsEnabled) { return; }; if (DataField.FieldType == dftEnum) { return DataField.DisplayValue; } else { return DataField.Value; }; }
Добрый день. Опять возникла такая же проблема. Функция GetFieldValueByCaption такая же как и выше. Только теперь поле-перечисление на основной детали выбирается не из основной таблицы а из обратных связей.
Павел, добрый день.
К сожалению, не получается воспроизвести проблему на версии, аналогичной Вашей. Уточните, пожалуйста, какие таблицы Вы используете в запросе и какие поля отображаете в отчёте.
Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.
Добрый день, Олег.
Основная деталь - tbl_Contract, помимо полей таблицы на основной детали также присутствуют поля из таблиц "обратных связей", одно из которых перечисление (поля созданы мной)
Павел, всё-таки не удаётся воспроизвести проблему. Попробуйте добавить в отчёт какое-либо стандартное поле типа "Перечисление" из обратных связей (например, поле "Пол" таблицы контактов). Если это поле будет отображаться корректно, а Ваше поле - нет, проверьте, не отличаются ли его свойства от других перечислений.
Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.
Олег, как ни странно, но я на своей машине также не смог воспроизвести проблему, но на машине заказчика проблема осталась. Может стоит почистить Cache? Буду проверять.
Да, Cashe почистить стоит.
Проверьте, на всякий случай, ещё раз функцию в конфигурации клиента. Может, загружали сервисы из базовой версии и функция перезатёрлась...
Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.
Добрый день. Вышеописанная проблема так и не разрешилась. Удалось проблему локализировать. Если поле - перечисление находится на основной детали запроса, то, действительно, функция EvaluateRootExpression(Selection) возвращает нужный результат Result = GetFieldValueByCaption(RootDataset, ExpressionObject.FieldName). Но если поле - перечисление находится не на основной детали, то, как я понимаю, используется другая функция EvaluateDetailExpression. Пробовал также редактировать GetDataFieldValueByFieldType(DataField){
...
case dftEnum:
Result = DataField.DisplayValue;
break;
...
}
результат тотже.
Павел, добрый день.
Вы всё сделали абсолютно верно. Единственное - нужно заменить условие в switch: вместо DataField.DataType вставить DataField.FieldType.
function GetDataFieldValueByFieldType(DataField) { var Result = ''; switch (DataField.FieldType) { case dftInteger: Result = DataField.ValAsInt; break; case dftFloat: Result = DataField.ValAsFloat; break; case dftEnum: Result = DataField.DisplayValue; break; default: Result = DataField.Value; break; } return Result; }
Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.