Добрый день! При экспорте процесса в .png или .svg пропадает текст в аннотациях.

 

Вот скриншот из Studio Free:

И вот то, что получилось после экспорта в png-файле:

 

 

ps.

Кстати, под "end" видны артефакты, возможно это следы съехавшего текста аннотации.

Нравится

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

Попробуйте несколько раз подряд экспортировать. У меня иногда вообще без какого-либо текста выгружает, а на N-ой попытке срабатывает нормально.

Напишите по данному вопросу в службу поддержки, возможно, это уже известная проблема и есть её решение.

Здравствуйте, Роман!

Сейчас должно быть уже исправленно.

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

Вопрос такой: нужно автоматически выполнить экспорт после открытия формы отчета в FastReport. У меня не получается отловить событие по которому я могу это сделать, пробовал на событии OnShow базового окна отчета, но не получилось. Пока получился только вариант на OnClose, но это не красиво, т.к. пользователю надо нажимать кнопку закрытия окна отчета.
Как быть ?

Нравится

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

Отчет по выделенным записям или с использованием окна фильтрации?

По выделенной записи.

Решение "в лоб"
находим function ShowSelectedRecordsReport(...) в скрипте scr_ReportUtils
модифицируем ее примерно так

ReportPreviewer.Build(); // из оригинальной фунции
var frpMain = ReportPreviewer.ComponentsByName('frpMain');
frpMain.Report = Report;
if (frpMain.Report.Caption == 'Заголовок нужного отчета'){  // любой идентификатор нужного отчета
    frpMain.PrepareReport();
    frpMain.IsVisible = false;
    ReportPreviewerComponent.DatasetByUSI(FilteredDatasetCode) = ReportDataset;
    frpMain.PreviewReport();
    var TempFileName = System.CreateObject('TSObjectLibrary.Value');
    var FileNames = System.CreateObject('TSObjectLibrary.StringsList');
    if ((System.PromptForFileNames(FileNames, '*.rtf', '', "Выберите файл", ''))) {
	TempFileName.Value = ExtractFileNameWithoutExtension(FileNames.Text.substr(0, FileNames.Text.length-2)) + '.rtf';
	try {
    	   frpMain.Export(retRTF, TempFileName, false);
	} catch (e){
	} 	
     }	
     return;	
} else {
   ReportPreviewer.Prepare(); // из оригинальной функции
}

Без претензии на "красоту", основное - идея:smile: Творческая переработка и оптимизация рекомендуются.
Производится экспорт в rtf без показа отчета, в какой файл - выбираем в диалоговом окне.

Александр, спасибо. Идея как раз то что надо.
Я немного переработал ее для своих нужд, сделал в гриде документов отдельную кнопку для этой обработки, кроме того мне не нужно выбирать файл, надо просто сохранить во временный и после этого автоматически открыть его в MS Word, получилось так:

function btnRTFletterOnClick(Control) {
	//по кнопке сформировать файл формата RTF в соответствии с шаблоном FastReport
	var ReportCode = 'fr_ReportLetterPrintForm';
	var FilteredDatasetCode = 'ds_ReportLetterPrintForm';
	var Report = Services.GetNewItemByUSI(ReportCode);
	var ReportPreviewer = Services.GetNewItemByUSI('wnd_BaseFastReportPreview');
	var ReportPreviewerComponent = ReportPreviewer.Attributes('ReportPreviewer');
	var ReportDataset = Services.GetNewItemByUSI(FilteredDatasetCode);	
	SetAttribute(ReportPreviewer, 'Report', Report);
	ApplyDatasetFilter(ReportDataset, 'ID', dlData.Dataset.Values('ID'), true);		
	ReportPreviewer.Build();
 
	var frpMain = ReportPreviewer.ComponentsByName('frpMain');
	frpMain.Report = Report;
    frpMain.PrepareReport();
    frpMain.IsVisible = false;
    ReportPreviewerComponent.DatasetByUSI(FilteredDatasetCode) = ReportDataset;
    frpMain.PreviewReport();
 
    ScriptUtils.BeginProcessing(); //задержка для стабильного формирования RTF файла
	ScriptUtils.Sleep(100);	
	ScriptUtils.EndProcessing();
 
    var TempFileName = System.CreateObject('TSObjectLibrary.Value');
		try {
           	var FileNameStr = 'letter';
			var Extension = '.rtf';
			TempFileName.Value = GetTemporaryFileName(FileNameStr + Extension);
			frpMain.Export(retRTF, TempFileName, false);
			var WShell = System.CreateObject('WScript.Shell');
			var File = TempFileName.Value;
			WShell.Run('winword.exe ' + File, 1);
        	} 
			catch (e){
        			}      
}

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

"Тюрин Юрий" написал:В ходе отладки выявился один странный момент если непосредственно перед формированием временного файла вызывать отладчик, то все отлично, а если без него, то файл формируется пустым. Помогло введение в код небольшой задержки.

а вот это интересный момент:smile:

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

если нужно експортировать поле описание в формате rtf нужно только
создать action в окне воркспейса из которого планируэться импорт
и вызвать фн

function amiMyActionOnExecute(Control) {
  ExportFromWnd(Self);
}

+ добавить в используэмые скрипти scr_ExportUtils из атача
все остальное зделает фн

+ простота в использовании
- если в описании есть перевод строки в Excele описание будет разбито на несколько ячеек поетому я задаю смещение на ячейку
но если Вы уверены что у вас нет ентера в описании можете закоментировать строчку 96 DescIndex++;
- нельзя выбрать куда сохранять временные файли
- не удаляються временные файлы

Но ето все временно если решение заинтересуэт продолжу разработку :)

Нравится

Поделиться

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

Добрый день!

При экспорте отчета в PDF все символы языка, не установленного как 'language for non-unicode program', отображаются некорректно.
Экспорт в RFT проходит нормально.
Тестируем на 3.2.0.11, Windows Server 2003 "R2" Server

Спасибо!

Нравится

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

Terrasoft Support Team
Владимир, наиболее вероятной причиной возникновения подобной проблемы является особенность версии FastReport, с которой интегрирован программный продукт Terrasoft CRM для генерации отчетов. Данная проблема не воспроизводится на новой версии генератора отчета FastReport, интеграция с которой используется при разработке программного продукта Terrasoft CRM 3.3, официальный выход которого запланирован на ближайшее будущее. О выходе нового программного продукта с исправленной проблемой FastReport Вы сможете узнать на сайте Terrasoft.

Продолжая тему Unicode (а конкретно, русских букв на машине с другим языком по умолчанию), заметил еще 2 вещи (в той же 3.2.0.11):

1. При создании письма из шаблона, поле Subject в MS Outlook показывается знаками вопроса вместо русского названия
2. В Rich Text (например Контрагенты-Описание) невозможно ввести русский текст.

Это можно исправить настройками?

Спасибо!

Добрый день, Владимир!

К сожалению, поле Subject в теме создаваемого письма не является юникодным, и повлиять на это из TerrasoftCRM не удается, т.к. это элемент MS Outlook.
Насчет RichText - из конфигурации также повлиять не удастся, компонент реализован в ядре. В качестве варианта можно попробовать изменять шрифт.
Видимо, единственный путь - установить в "Пуск - Панель управления - Язык и региональные настройки" Русский язык.

Спасибо!

Попробую для себя прояснить ситуацию:
1. Ведь мы задаем кодировку в шаблоне сообщения. Допускаю, что можно перекодировать из Unicode (которые в TS) в формат, понятный для Subject MS Outlook. Ведь, написать вручную в Subject русскими буквами потом можно

2. Смена шрифтов не помогла. Но зато при копировании из Word'a, например, текст виден нормально. Насколько я знаю, RichText умеет отображать Unicode, но не умеет его воспринимать при вводе. Было бы здорово добавить какой-то другой контрол для ввода Unicode-описаний.

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

Для RichText помогло менять раскладку клавиатуры на нужную перед копированием текста в буфер

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