Добрый день!

Есть два сервиса отчета. Как программно эти два отчета объединить в один? Не по очереди вывести их, а именно чтобы один отчет в итоге получился (можно на разных страницах). Проблема такая: есть форма счета, а к ней, в зависимости от условий, может крепиться одно из приложений. Создать отдельные страницы в одном отчете вариант, но сильно много заново рисовать прийдётся. Можно проще что-то сделать, на основании уже готовых сервисов?

Нравится

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

если речь о фастрепорт - там есть свойство "Выберите родительский отчет"

Либо добавить компонент SubReport.

Да, извините, я не указал, речь действительно идет о фастрепорте.

Дмитрий, а что дает мне Родительский отчет? Я так понимаю это возможность сделать новый отчет на основании готового, чтобы не переносить все руками. Выполнил, загрузилась форма указанного отчета. Все поля почему-то с замочками. Но мне надо не заменить мой, а добавить в мой отчет еще одну страницу. Может я чего-то недопонял?

Повторю вопрос: меня больше интересует программно в один превьювер засунуть два отчета. Есть такая возможность?

Дмитрий, а на SubReport перенести мою готовую форму можно? Как?

Андрей - в другой ветке тут только дмитрии )
Родительский отчет - это как родительское окно - добавляется все и нечего нельзя редактировать.

Если Вы хотите не теряя настроек вставить другой отчет - придется разбираться с SubReport, как указал Дмитрий.
Честно говоря, я за 10 минут не понял как это сделать)

Ой, извините, Дмитрий, за невнимательность! Исправил.

Я тоже не понял, решил спросить может у кого-то есть опыт. Но чувствую, что проще заново руками нарисовать.

Чтобы не перерисовывать, как вариант, можно нажать правой кнопкой на страницу (которую надо скопировать) второго отчёта и нажать "Select All", дальше нажать ещё раз правой кнопкий по любому объекту фастрепорта "Copy", а в родительском просто добавить страницу и нажать правой кнопкой "Paste"

Спасибо, Сергей! Не с первого раза, но получилось. Действительно работает копирование, но только через контекстное меню, а горячие клавиши почему-то не работают.

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

Думал, что можно из отчета вызвать другой отчет. В документации вариантов решения не нашел. Если нельзя, жаль. Можно, конечно, запомнить работника, дату. Перейти в террасофт, ввести эти параметры и вызвать другой отчет. Но по нажатию на ячейку отчета было бы лучше.
Можно, вообще, хоть какой-то террасофтовский скрипт как-то запустить из кода фастрепорт? Например, открыть окошко с инструкцией. JScript работает вроде бы в фастрепорт. Но import "scr_DB.js" не работает, import "scr_DB" тоже. Эти файлы где-то под оболочкой и достать их невозможно? Можно ли хотя бы в кросс-репорт менять высоту полей и перерисовывать отчет, используя refresh?

Нравится

4 комментария

"Зеннюков В.Ю." написал:Думал, что можно из отчета вызвать другой отчет. В документации вариантов решения не нашел. Если нельзя, жаль. Можно, конечно, запомнить работника, дату. Перейти в террасофт, ввести эти параметры и вызвать другой отчет. Но по нажатию на ячейку отчета было бы лучше.

Попробуйте создать свое окно фильтрации с несколькими кнопками для вызова отдельного отчета.

"Зеннюков В.Ю." написал:Можно, вообще, хоть какой-то террасофтовский скрипт как-то запустить из кода фастрепорт?

Посмотрите пример вызова во вложенном файле.

Спасибо за ответ. Правда, до цели я не добрался. В Pascal script не проходит даже первую строчку

procedure DBCross1Corner1OnPreviewClick(Sender: TfrxView; Button: TMouseButton; Shift: Integer; var Modified: Boolean);
var Connector: Variant;
var Window: Variant;

begin
Connector := ds_SocSor2.GetConnector();
// Window := Connector.Services.GetNewItemByUSI('wnd_myTestWindow');
// DBCross1Corner2.Text := Window.ScriptControl.Run('AmountToStr',
// FloatToStr(StrToFloat(DBCross1Cell22)), 'ua', 'UAH', true);
end;

Выдает на the OnBeforePrint - following error(s) have occured: script error at 58:23 Undeclared identifier: 'ds_SozSor2'
Думал, что-то не так с моим датасетом, заменил его на везде используемый ds_Call - та же ошибка.
На OnPreviewClick другая ошибка на первой строчке Invalid variant type (детали ошибки в прикрепленном файле)

Заменил тип скрипта на JScript.

var ii = "RUB";

function DBCross1CellHeader0OnPreviewClick(Sender, Button, Shift, &Modified)
{
var Connector = ds_SocSor2.GetConnector();
var Window = Connector.Services.GetNewItemByUSI("wnd_myTestWindow");
DBCross1Corner2.Text = Window.ScriptControl.Run("AmountToStr", FloatToStr(StrToFloat(DBCross1Cell22)),

"ua", "UAH", true);

}

function DBCross1Corner1OnPreviewClick(Sender, Button, Shift, &Modified)
{
var Connector = ds_SocSor2.GetConnector();
var Window = Connector.Services.GetNewItemByUSI("wnd_myTestWindow");
var ii = Window.ScriptControl.Run("AmountToStr", FloatToStr(StrToFloat("1.27")), "ua", "UAH", true);
}

function DBCross1Corner1OnBeforePrint(Sender)
{
var Connector = ds_SocSor2.GetConnector();
var Window = Connector.Services.GetNewItemByUSI("wnd_myTestWindow");
var ii = Window.ScriptControl.Run("AmountToStr", FloatToStr(StrToFloat("1.27")), "ua", "UAH", true);
}

function DBCross1OnPrintCell(Memo, RowIndex, ColumnIndex, CellIndex, RowValues, ColumnValues, Value)
{
if (CellIndex == 1)
if (ii == "RUB")
Memo.Color = clCream;
else
Memo.Color = clSilver;
}

Если присваиваю значение вызываемой функции ii, ошибок не выскакивает, но поставив debugger; в функцию, вижу, что программа туда не попадает. Если присваиваю значение вызываемой функции DBCross1Corner2.Text, выдает ошибку Could not convert variant of type (Null) into type (OleStr), что подтверждает предположение, что в функции программа не побывала. Подумал, что пятый параметр лишний, убрал его, но не помогло.

Как-то грустно, а этот механизм точно работает?

Сейчас проверил на простом отчете - работает, может быть, только на кросс-отчетах не работает.
Это уже легче, буду проверять дальше.

Все получилось. Спасибо!

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

Добрый день.

Столкнулись во с такой проблемой: при создание отчета в поле "Отображать отчет в разделе" не весь список разделов, нет новых созданных разделов. Как их туда добавить?

Нравится

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

Анастасия, чтобы добавить созданные разделы в перечень разделов, отображающихся в списке поля «Отображать отчет в разделе», необходимо:
1. Открыть сервис scr_ReportUtils (Common\Library\scr_ReportUtils).
2. Найти функцию function GetWorkspaceCodeEnum(). Добавить в нее строку кода, подобную

WorkspaceCodes("Accounts") = 'wnd_AccountsWorkspace';

Где Accounts – название раздела, wnd_AccountsWorkspace – сервис рабочего пространства раздела.

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

Прочел sozdat_svoe_okno_filtracii_dlya_otcheta.doc (указано в https://community.terrasoft.ua/forum/topic/6590 ). Создал собственное окно фильтрации. Дошел успешно до "После этого переменная будет доступна в отчете и Вы ее сможете вытянуть в отчет."
Переменная доступна, в отчете могу ее разместить, но мне нужно из этого окна часть переменных выводить на страницах отчета, а часть использовать как параметры при фильтрации в запросе.

wnd_ReportScoreboard - собственное окно фильтрации
wnd_ReportScoreboardScript - скрипты к нему
sq_ReportScorecard - запрос к отчету
в нем :Parameters
:OrderStartDate
:OrderFinishDate
Мне надо присвоить OrderStartDate значение из edtDateStart (IDataTimeControl в окне wnd_ReportScoreboard) и OrderFinishDate присвоить значение из edtDateАштшыр (IDataTimeControl в окне wnd_ReportScoreboard)
Как это можно сделать для отчета на fastreport?

Нравится

2 комментария

Возьмите как пример лучше отчет Прайс-лист (Offerings\Reports\Offering Price\fr_ReportOfferingsPrice). Для этого отчета есть свое окно фильтрации wnd_FilterOfferingPrice. В этом окне применение фильтров реализовано более корректно, чем в указанном Вами документе. Обязательно обратите внимание на параметры регистрации отчета.
Если не разберетесь с примером - пишите.

Спасибо за совет. Разобрался. Работает.

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

Подскажите есть ли возможность выгрузить в ворд форматированный текст из Документа из поля "Описание"?

Нравится

4 комментария

В базовой версии экспорт детали описание в MS Word не предусмотрен.
Вы можете воспользоваться стандартным буфером обмена операционной системы, Word поддерживает вставку с форматированием. Настроить параметры вставки Вы можете вызвав окно настроек Файл->Параметры->Дополнительно->Вырезание, копирование и вставка.

Ринат, посмотрите тему http://www.community.terrasoft.ua/forum/topic/7981

значит только копипаст..
спасибо за ответ!

Ринат, по ссылке выше - описана реализация нужного Вам функционала. (не только копи-паст)

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

Здравствуйте. При формировании отчета в Word дата и время отображается в формате 28.12.2012 10:00:00.
Как сделать так, чтобы секунды не выводились в отчет?

Нравится

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

Здравствуйте, Александр!
Не могли бы Вы более детально описать используемые макросы в отчете?

При настройке отчета используется <#Деталь 3.Дата начала>

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

Спасибо, Сергей, это помогло. Единственное, что при таком решении часы и минуты, если их значение меньше 10, выводятся в таком виде, например, 8:5. Хотелось бы, конечно, в формате 08:05. Наверное, здесь ничего нельзя сделать

Вы правы, тут уже ничего.
как вариант, можете писать 8 часов 10 минут

Да, этот вариант я тоже уже рассмотрел) Спасибо)

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

Коллеги, интересует реализация следующего функционала:
есть несколько видов договоров (например, договор продажи, договор аренды), для каждого из видов есть печатная форма (возможно будет несколько разных для одного и того же вида). Требуется, чтобы при нажатии на кнопку печать, отображался список печатных форм соответствующих только виду договора, выделенному в реестре (сейчас отображается список всех печатных форм, добавленных для рабочего места "Договоры").

Нравится

4 комментария

Здравствуйте!
К сожалению, в данный момент это не реализовано, для реализации необходимо существенно переработать базовую логику. Данная возможность рассматривается и, возможно, появится в более свежих версиях.
Спасибо за вопрос!

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

"Соколов Илья Андреевич" написал:

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


А можете описать подробнее реализацию такого механизма?
И это возможно только сделав кнопку на карточке договора или можно сделать некий дублер стандартной кнопки печати?

В принципе, из конфигурации можно реализовать как тот, так и другой вариант.

Нажатие на кнопки печатных форм обрабатывается в процессе карточки базового реестра (BaseGridPage)

PrintReport

Рекомендуем проанализировать формирование списка и переопределить обработчик. Либо же добавить в дочерний реестр обработку переключения по записям реестра, и в зависимости от этого включать/выключать пункты меню действия.

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

Добрый день.

Кто подскажет, каким образом можно вызвать собственную форму фильтрации (пред подготовки отчета) перед вызовом отчет в Excel, на подобие отчетов FastReport.

Нравится

4 комментария

Евгений, подобную задачу не реализовывали, но можно попробовать так:
1. Создать собственное действие для вызова отчета (базовые свойства отчета Excel не позволяют задавать собственное окно фильтрации).
2. В теле функции обработки события нажатия на кнопку окна фильтрации реализовать логику, подобную ProcessPrepareExcelReport. Где учесть включение фильтров и т.д.

У пользовательских запросов присутствует возможность отображать окно фильтрации. Соответственно, при построении отчета данное окно фильтрации будет выведено перед пользователем. Может быть, Вам подойдет данный вариант без создания дополнительной логики.

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

"Бондарь Наталия" написал:

Евгений, подобную задачу не реализовывали, но можно попробовать так:

1. Создать собственное действие для вызова отчета (базовые свойства отчета Excel не позволяют задавать собственное окно фильтрации).

2. В теле функции обработки события нажатия на кнопку окна фильтрации реализовать логику, подобную ProcessPrepareExcelReport. Где учесть включение фильтров и т.д.

У пользовательских запросов присутствует возможность отображать окно фильтрации. Соответственно, при построении отчета данное окно фильтрации будет выведено перед пользователем. Может быть, Вам подойдет данный вариант без создания дополнительной логики.

Спасибо Наталья, я так и сделал, но это не удобно, т.к. надо помнить что для части отчетов есть отдельные формы фильтра.

Похоже что придется делать сборную солянку из пользовательских запросов и отчетов в FastReport.

Евгений, а не проще ли в этом случае доработать окно создания отчета таким образом, чтобы в нем можно было указывать путь к окну фильтрации отчета?

Одно из решений по доработке отчетов Excel есть по следующей ссылке http://www.community.terrasoft.ua/forum/topic/7662
В данном случае там добавлена форма загрузки шаблона отчета

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

Буду краток.

Если при создании Excel-отчёта содержимое ячейки выглядит так:

текст текст текст▫
текст текст текст текст▫
текст текст текст▫

А надо так:

текст текст текст
текст текст текст текст
текст текст текст

При выводе значения в ячейку строку нужно обрабатывать.
Из:

Excel.ActiveSheet.Cells(1,1).Value =
        IsNull(StringFieldValue,'');

Делаем:
Excel.ActiveSheet.Cells(1,1).Value =
        IsNull((StringFieldValue.replace(/\r\n/gi, '\n')),'');

Нравится

Поделиться

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

Как вставить дату контракта в формате "7 июля 2012 года" в Word-отчет?
Ну, или другой формат другой даты. Иногда необходимо немного видоизменять данные пользовательского запроса для отчета Word

Нравится

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

Здравствуйте.
Изменить формат отображения даты в отчете можно открыв с помощью карточки редактирования запрос, который используется в отчете. Далее, Вам необходимо кликнуть правой кнопкой в области данных, и выбрать меню изменить колонку/нужная Вам колонка с датой. В открывшемся окне в поле "Формат даты" можно изменить формат отображения даты.
Если конкретно в таком варианте как Вы указали (месяц прописью, число и год - цифрами) - то только изменив региональные настройки в панели управления, а именно формат "короткой" даты, к примеру на такой:

1

Однако, обратите внимание, что после изменений везде, где используется поля типа "Дата/время" дата будет отображена в данном формате.

А если конкретно в одном отчете?

Здравствуйте, Владимир.

В конкретном отчете формат даты можно изменить только изменив свойства колонки с датой в запросе для данного отчета. Список всех доступных форматов:

1

Может, в Word'е можно вставить какую-то формулу соотстветствия номера месяца и его названия?

Попробуйте следующим образом:

Создайте новую закладку Word с именем, к примеру, Test. (Вставка - Закладка)

Далее, поместите курсор в начало документа и нажмите Alt+F9, потом Ctrl+F9.
Между фигурных скобок вставьте следующий текст:

SET test #макрос с датой из террасофт  \* MERGEFORMAT

в том месте где нужно вывести дату в нужном Вам формате - нажмите Alt+F9, потом Ctrl+F9 и между фигурных скобок вставьте следующий текст:

\@ "dd MMMM yyyy"  \* MERGEFORMAT

далее, между отрывающейся фигурной скобкой и символом \@ нажмите еще раз Ctrl+F9 и между фигурных скобок вставьте текст:

 REF  test

В итоге у меня вышло следующее:

1

Файл Word во вложении.

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