отчет word
Отчёты
Разработка

Отчеты (World) пользовательские

Добрый день.
Возникли следующие вопросы
1. Как вставить прописью число в отчет Word?
2. Как сделать выборку в отчете по определенному полю (в случае если в таблице указано "1" то вставлять, иначе вставлять другое)

Заранее ОГРОМНОЕ СПАСИБО за помощь ...

Нравится

7 комментариев

1. Обсуждение
2. Может Вам стоит такой отчет реализовать с помощью FastReport?

1. Значит без дополнительного поля не обойтись ? А как перевести просто число в пропись ? (изменять скрипт который преобразует сумму в пропись денежную ?)
2. Там большой договор порядка 10 листов ... И желательно чтобы в Word все было

Если критично формировать отчёт Word, можно поступить следующим образом: при создании запроса в название колонки, которая должна выводиться прописью, добавлять какой-либо признак (например, слово "(прописью)"). Далее на этапе определения значений для подстановки вместо макросов в шаблон отчёта (функции GetDataFieldValueByFieldType и GetFieldValueByCaption) проверять, имеет ли поле тип целое/дробное число, и содержит ли его свойство Caption строку "(прописью)". Если условия выполняются, возвращать в качестве значения сумму прописью, полученную с помощью функции AmountToStr скрипта scr_ConvertUtils.

можете пояснить
"Далее на этапе определения значений для подстановки вместо макросов в шаблон отчёта"

это в пользовательском word отчете ?

Да, это в скрипте scr_UserReportCommon, функции GetDataFieldValueByFieldType и GetFieldValueByCaption. Если нужно выводить прописью итоги, необходимо также внести изменения в функцию GetSummaryValueByDataField.

Например:

[javascript]
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
if (((DataField.FieldType == dftFloat) || (DataField.FieldType == dftInteger)) && (FieldCaption.indexOf("(прописью)") != -1)) {
return AmountToStr(String(DataField.Value), 'ru', 'RUB');
} else {
return DataField.Value;
}
}
[/javascript]

А как перенести в другую конфигурацию все пользовательские отчеты и запросы?

Максим, я уже ответил на Ваш вопрос в этом комментарии. Продублирую ответ здесь:

Что касается пользовательских запросов и отчётов, они не относятся к сервисам системы, а к наполнению базы данных. Так же, как и данные из справочников, разделов, системных настроек, их нужно переносить скриптами. Обычно сложность в том, что настройки пользовательских запросов содержатся в полях типа BLOB, но с помощью примерно такого запроса

[sql]
INSERT INTO ..[tbl_Query]
SELECT * FROM ..[tbl_Query]
WHERE ..[tbl_Query].[CreatedOn] > ...
[/sql]

данные должны нормально перенестись. Естественно, структура и порядок колонок в таблицах обеих баз должны полностью совпадать. Сначала необходимо переносить пользовательские запросы, потом - отчёты, шаблоны сообщений и т.д.

Показать все комментарии