Всем доброго дня!

Есть пользовательский отчет в формате word. Основа этого документа - договор.
Данные берутся из реестра "Контакты", но мне также необходимо посылать туда дополнительные данные из детали "Договоры".

Т.е. для начала мне нужно выделить контакт, затем выделить определенный договор и только потом вызвать построение отчета.

Как это можно реализовать?

Нравится

1 комментарий

Александр Сергеевич, базовая логика предусматривает построение отчета только по выделенным записям реестра. Выделенные записи детали в рассмотрение не берутся.
Реализация описанной Вами задачи достаточно сложная.
Алгоритм такой:
1. В момент вызова отчета помимо получения записей реестра раздела (см.функцию ReportMenuItemExecute сервиса scr_ReportUtils) нужно реализовать получение выделенных записей активной детали.
Если Вы будете реализовывать не универсальный механизм, следует учесть проверку на вызываемый отчет.
2. При построении отчета накладывать фильтр на детали пользовательского запроса.
Изменения нужно вносить в функцию ProcessWordReportDataFill сервиса scr_UserReportCommon

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

Добрый день.
Возникли следующие вопросы
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.

Например:

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;
    }
}

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

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

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

INSERT INTO <DB1>..[tbl_Query]
SELECT * FROM <DB2>..[tbl_Query]
WHERE <DB2>..[tbl_Query].[CreatedOn] > ...

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

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