Word
отчет
шаблон
Отчёты
Разработка

Добрый день.
Проблема с созданием отчета Word, прошу помощи
Заключается проблема:
При создании пользовательского отчета Word, создаю запрос с полями, добавляю отчет, создаю шаблон, шаблон связываю с отчетом, добавляю нужные поля, сохраняю его и тут начинаются проблемы:
при сохранении шаблона в Terrasoft выдает табличку загрузки шаблона и зависает (скрин прикреплен)
При попытке просмотра отчета из раздела Инструменты - отчеты - все виснет. Так же он не появляется в нужном разделе документы. После перезагрузки сохраненный отчет пропадает из списка. При повторном создании все повторяется....
Заранее благодарен за помощь

Нравится

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

Укажите используемую Вами версию Terrasoft и MS Office.
Также проследите, чтобы перед формированием шаблонов в MS Word и в момент формирования самого отчета не была запущена копия Word
Также не лишним будет очистить Cache и Profile (C:\Documents and Settings\[Имя пользователя]\Application Data\Terrasoft\[Версия Terrasoft])

Terrasoft 3.2.0.34
Office 2007 (12.0.4518.1014)
win 7

Проведите обновление до более новой версии 3.2.0.76
Обратитесь в службу технической поддержки для предоставления обновления.

При создании шаблона отчета world или выгрузки в
world отчета появляются окна прикрепил скрин, которые не убираються и не
реагируют на кнопки закрыть

Terrasoft 3.2.0.34
Office 2007 (12.0.4518.1014)
win 7

Данная проблема решена в более поздних версиях Terrasoft. Для ее решения на Вашей текущей версии необходимо провести обновление.

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

Показать все комментарии
Fast Report
группа
отчет
стикер
3.x

Добрый день!

Есть следующая задача:
Распечатать стикеры, на которых будет ФИО, название компании, телефон и адрес контактов, входящих в определенную группу.

По ней у меня есть два вопроса:
1) Как сделать так, чтобы отчет формировался только по данным из определенной группы?
2) Для моего случая неплохо подходит стандартный отчет fastreport "Стикеры для контактов (Украина, СНГ)", однако мне необходимо изменить в нем кое-что. Главное - добавить номер телефона. Также хорошо бы убрать часть адреса (страну, город, индекс), т.к. в данном случае она не нужна. Я попытался сделать это в дизайнере отчетов, однако не понял, как это делается. Не могли бы вы подскзаать?

Буду очень благодарен за быстрый ответ, особенно на первый вопрос!

Нравится

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

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

Для того, чтобы добавить в отчёт номер телефона, нужно сначала вынести соответствующую колонку в запрос и датасет отчёта (в Вашем случае - sq_ContactSticker и ds_ContactSticker). Только после этого её можно будет использовать в компонентах отчёта. Для удаления ненужных полей из отчёта откройте его в дизайнере, выберите поле, в котором отображаются данные, откройте его двойным кликом мыши, и в появившемся окне текстового редактора удалите ненужные строки. После этого сохраните изменения. Чтобы в запросах по прежнему не выбирались удалённые из отчёта поля, можно их удалить из датасета и запроса. Но перед этим необходимо проверить, не используются ли эти поля в других отчётах.

Показать все комментарии
Word 2007
отчет
Отчет в MS Word

Столкнулся с проблемой работы отчетов Word 2007 в Terrasoft. Если в качестве шаблона отчета использовать файл *.docx, то при изменении или формировании этот файл сохраняется во временную папку с расширением *.doc, а открытие файла *.doc (который реально является *.docx) ведет к ошибке “Приложению Word не удалось запустить конвертер mswrd632” “Приложению Word не удалось запустить конвертер mswrd632”.
Эта ошибка появляется после установки обновления KB973904 (Обновление для системы безопасности Windows XP, Windows 2000 и Windows Server 2003, 8 декабря 2009 г). Для решения проблемы можно либо использовать шаблон, который сохранен как *.doc, или же Microsoft предлагает свое решение этой проблемы http://support.microsoft.com/kb/973904/ru

Нравится

Поделиться

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

Добрый день!
Создали новый отчет, в новом разделе.
Но почему-то его видит только администратор.
Обычные пользователи не видят его, хотя права на отчеты у них установлены.
Что это может быть?
Версия 3.1.0.23 MS SQL 2005
Заранее спасибо!

Нравится

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

"Serega" написал:Обычные пользователи не видят его, хотя права на отчеты у них установлены.

Имеются в виду права на раздел "Отчёты", или права на конкретные записи в разделе "Отчёты", которые регулируются на закладке "Доступ" этого раздела? Проверьте, пожалуйста, второй вариант.

Нашел недочет: при создании раздела для таблиц не были установлены галочки "Администрируется по полям и по записям".
Галочки поставил, но всплыла другая ошибка:
При попытке поставить существующим записям в этом разделе права на доступ вываливается лог с ошибкой в функции скрипта scr_Access

function GetItemRightDataset(TableRightUSI, Dataset)

в строке

var TableRight = Services.GetSingleItemByUSI(TableRightUSI);

"Информация по сервису не найдена".
Вопрос: существующим записям который были созданы без прав уже нельзя проставить права на доступ?

Вы очистили папку Cache? Проверьте, создались ли для таблицы раздела таблица прав и соответствующее представление.

Уточните также, что с отчётом. Администрирование таблицы раздела по записям и полям никак не повлияют на права отчёта. Доступ на отчёт необходимо устанавливать в детали "Доступ" раздела "Отчёты".

"Лабьяк Олег Игоревич" написал:Доступ на отчёт необходимо устанавливать в детали "Доступ" раздела "Отчёты".

Поставил, отчет появился.
"Лабьяк Олег Игоревич" написал:Вы очистили папку Cache? Проверьте, создались ли для таблицы раздела таблица прав и соответствующее представление.

Кеш почистил, не помогает ((
Таблица прав создалась, затем я в пользовательской части в администрировании добавил группу моего раздела(дал ей имя), затем в администраторе для таблицы раздела указал её в качестве родительской таблицы групп.
Ошибка прежняя.

Не создался только tg_MyRazdel - как его создать?

Можете посмотреть в отладчике значение переменной TableRightUSI? Возможно, эта переменная не определена. Каким образом происходит инициализация раздела и в частности детали "Доступ"?

"Лабьяк Олег Игоревич" написал:Можете посмотреть в отладчике значение переменной TableRightUSI?

undifined

Значит, при инициализации детали "Доступ" у Вас не указывается название таблицы прав. Посмотрите, как инициализируется эта деталь в базовых разделах, и сделайте по аналогии.

Да, спасибо, проблема была именно в инициализации.

Этот сервис необходимо создавать вручную.

Насколько я помню, при добавлении группы таблиц через раздел "Администрирование" на Вашем сервере должна создаться роль с таким же названием. Проверьте, создалась ли эта роль.

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

Уже поправил, предыдущий пост насчет инициализации , спасибо ))
А TableGroup так и не создался, вручную не получалось(ругался на лицензии колцентра чего-то???? ) Но вроде для версий начиная с 3.1.Х он не нужен уже(нашел на вашем форуме)

Да, из следующих версий эти сервисы убрали. Начиная с версии 3.1, права доступа на таблицы регулируются средствами СУБД (как я писал выше, создаются отдельные роли для чтения, вставки, редактирования, удаления).

Показать все комментарии
export
Fast Report
отчет
экспорт
Отчёты
Разработка

Вопрос такой: нужно автоматически выполнить экспорт после открытия формы отчета в 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:

Показать все комментарии
автоматическая раздача прав
отчет
Технические вопросы
Разработка

Возникла потребность раздавать на отчеты запреты сохранения, копирования

Возникла необходимость реализовать в рамках проекта отчеты. Часть отчетов должна быть сделана в Excel, часть - в FastReport, часть с помощью OLAP-ов. Однако столкнулись с необходимостью специфических прав доступа на данные отчеты: часть пользователей должна иметь право только на просмотр отчетов (ни копировать, ни сохранять на компьютер нельзя), а часть пользователей может делать с этими же отчетами все, что душа пожелает.
Есть ли идеи по реализации стоящей перед нами задачи? А также, как массово раздать такие права доступа на отчеты, невзирая формат реализации?

Нравится

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

Добрый день, Катерина.
Строго говоря, если пользователь увидел на экране своего рабочего компьютера некий отчёт, то дальнейшие попытки запретить ему что-то сделать с этим отчётом уже предпринимать поздно - пользователь легко может сделать снимок экрана, сохранить его в файл и затем использовать по своему усмотрению. Попытки вмешиваться в работу других приложений (Excel) также чреваты большим количеством трудностей, неудобств для пользователя и непредвиденных трудозатрат.
В данной ситуации наиболее рациональный путь - ограничивать доступность отчётов с помощью детали Доступ в разделе Отчеты. Только в случае, если пользователь не может построить отчёт, он не сможет сохранить результат, а иначе сможет и ничто ему не помешает. Для случаев с разными типами отчетов задача запретить сохранить построенный отчёт еще более сложная, т.к. пользователю ничто не помешает копировать текст из документов или делать снимки экрана.
Насчет массовой раздачи прав (для детали Доступ) в любом разделе можно выделить несколько записей и добавить права сразу для всех выделенных записей.

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

Для отчетов FastReport можно теоретически блокировать кнопки сохранения и печати, а насчет отчетов Word и Excel вопрос открыт, как реализовать такое требование пока не представляю.

"Катерина Левченко" написал:ни один пользователь не может сделать снимок экрана

А как же старый добрый фотоаппарат?

"Гамора Дмитрий" написал:
если пользователь увидел на экране своего рабочего компьютера некий отчёт, то дальнейшие попытки запретить ему что-то сделать с этим отчётом уже предпринимать поздно

Согласен с Дмитрием.

Показать все комментарии
FastReport
график
отчет
Отчёты
Разработка

И еще раз здравствуйте.

Вот еще возникла проблема: надо построить график в fastreport.
У меня в отчет в текстовом виде данные выводятся, т.е. sq и db для отчета у меня созданы и работают. Там среди прочего есть "Название", "дата завершения", "крайний срок". Надо эти данные отразить на графике - не важно горизонтальном или вертикальном. Н
Например, так: по оси Y - название элемента, а по оси Х - две даты для этого элемента.
Я пробывала сначала отразить хотя бы одну дату. Что из этого получилось, можно посмотреть в прикрепленном файле. Что сделано не верно? какие правильные параметры надо указать в отчете для диаграммы?

Нравится

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

Виктория, попробуйте поле "Название" установить по оси Х (Label), а поле типа "Дата" по оси Y. После этого в свойствах YValues установите признак DateTime и порядок сортировки:

Спасибо, получилось. Но параметры заполнила немного по-другому.

Показать все комментарии
Word
отчет
сумма прописью
Отчёты
Разработка

Есть в TS замечательная функция - сумма прописью. А как ее результат вставить в Word-отчет? Создавать много лишних полей в таблице не хотелось бы.

Спасибо за идеи!

Нравится

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

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

Насчет суммы прописью в Word - согласен.
Насчет склонения должностей - не согласен, гораздо проще в справочнике должностей завести новое поле. Насчет склонения фамилий - попытки реализовать были, но не прижились, т.к. пользователи просто ленятся вручную вводить фамилии с падежами, а система самостоятельно склонять фамилии не может.

Добрый день!

Мне кажется, оба приведённых примера несколько выходят за рамки основного предназначения механизма пользовательских запросов и отчётов. В первую очередь они выполняют задачу создания отчёта на основании имеющихся в таблицах БД данных без каких-либо навыков программирования (простым перетаскиванием колонок таблицы). В Ваших же примерах без программирования не обойтись в любом случае.

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

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

И тогда уже дело программиста написать функцию перевода числа в сумму прописью, а пользователь в своем запросе выберет, что для данной колонки нужно использовать такую-то функцию над значением поля

Подскажите пожалуйста, как вывести число прописью (без копеек, гривен и прочего) а просто число к примеру 26 как (двадцать шесть)
ValueStrRUR = AmountToStr(ValueStr, 'ru', 'RUB');
только изменяя функцию Convert_utils и добавляя в нее нужное ???

Попробуйте так:

  var s = new String(AmountToStr(ValueStr, 'ru', 'RUB'));
  s = s.substr(0, s.indexOf(' руб'));

Спасибо огромное, то что нужно!

а как оставить сумму с рублями, без копеек?

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

Попробуйте сделать так:

if (Str.indexOf('руб') != -1) {
	var StrTemp = Str.substr(Str.indexOf('руб'),Str.length);
	if (StrTemp.indexOf(' ') !=-1){  
	   var Kop = StrTemp.substr(StrTemp.indexOf(' '),StrTemp.length);
	   Str = Str.substr(0, Str.indexOf(Kop));
    }
}
else Str = "";

Инна Безверхняя,
II линия службы поддержки Terrasoft.

Показать все комментарии
отчет
фильтр
Отчёты
Разработка

Добрый день!
Для того чтобы выключить фильтр в запросе для отчета использую следующую комбинацию:

var MyDS = Services.GetNewItemByUSI('ds_MyDataset');
MyDS.SelectQuery.Items(0).Filters.ItemsByCode('MyFilter').IsEnabled = false;

В этом запросе еще есть подзапросы в которых тоже есть фильтры.
Вопрос как ими управлять(включать/выключать)?
Заранее спасибо!

Нравится

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

Сергей, в scr_DB много функций, посмотрите их.

"Осауленко Александр" написал:Сергей, в scr_DB много функций, посмотрите их.

Эээ, спасибо, а при чем тут функции?
Я не могу составить объектную цепочку чтоб достучаться до подзапросов. Должно быть что-то вроде:

MyDS.SelectQuery.Items(0).SubItems(1).Filters.ItemsByCode('MyFilter').IsEnabled = false;

Я обшарил весь объект датасета в студии но так и не нашел путь ((

Ну так функции на то и нужны, что в них выносят ту логику, которая чаще всего используется и чтобы не искать по иерархии фильтров самому, разработчики вынесли в scr_DB для этого рекурсивные функции по включению/выключению фильтров и еще много чего.

Сергей, у Вас колонки с подзапросами или фильтры с подзапросами?

"Осауленко Александр" написал:Сергей, у Вас колонки с подзапросами или фильтры с подзапросами?

Колонки

Сергей, к ним так так же применимы функции из scr_DB, но сначала Вам необходимо найти нужную колонку, а в ней SelectQuery

Показать все комментарии
отчет
Скрипты
Отчёты
Разработка

На данный момент занимаюсь построением отчета в Terrasoft CRM 3.3.1 и FastReport. Все работает замечательно, но камень предкновения в следующем. Необходимо через фильтры Terrasoft задовать данные о периоде даты, а затем отображать этот период единожды в FastReport'е, как можно достать данные переданные из Terrasoft'а в скрипте FastReport'а (или иным способом)?
Зарание благодарю.

Нравится

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

Можно в SelectQuey перебрать активные фильтры сравнения первого уровня и поискать нужные поля и перенести значения фильтров.

Дело в том что фильтрах создаваемых в SelectQuery не имеется этой фильтрации, дата переиода задается в фильтрах вызываемых в окне перед просмотром отчета в клиентской части, а они ставятся отдельно от выборки данных.

1. Создаете переменную в отчете, например Period и выводите ее например в заголовке отчета.
2. У отчета вешаетесь на событие onPrepare
3. В обработчике пишите такой код
ReportPreviewer.Report.Attributes('Period') = ...

несовсем понял как это реализовать в коде.
Допустим начинаем выполнять программу.

1 запускаем, у нас возникает событие подготовки, где есть ReportPreviewer и CanPreviewer.
2 появляетса окно с фильтрами, где 2 строчки - максимальная и минимальная дата.
3 после этого возникает событие onPrepare, где существует только ReportPreviewer из получаемых данных
4 запускается само окно просмотра

вопрост в том как достать данные из строки Date и в какой момент это сделать.

Вот тут тема раскрыта
http://community.terrasoft.ua/forum/topic/4405
а вот здесь об этом идея на рассмотрении http://community.terrasoft.ua/ideas/4751 как раз можно проголосовать:wink:

 

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