Доброго времени суток, коллеги.

Имеется TerrasoftCRM 3.3.2.245.

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

 

Нравится

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

См. тут (у вопроса юбилей!cheeky) и тут.

Спасибо.

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

Добрый день, коллеги.

Не нашел явного решения поэтому прошу помощи в решение задачи.

У нашей компании появилось двое платежных реквизитов. Ранее создавал отчет типа fastreport для формирования отчета "Счет" по определенному юр. лицу (у нас два юр. лица). Теперь у юр. лица (буду его называть "одуван") "одуван" появилось двое платежных реквизитов. В деталях контрагента выбрал основной платежный реквизит. При попытке создать отчет "счет" у меня создается отчет на двух листах с основным платежным реквизитом. Такое происходит, когда только два платежных реквизита. И всегда основным выбирается старый основной платежный реквизит, нового как-будто не видит система.
Что пытался сделать и какие мысли были.
Пытался создать фильтр в fastreport - не работает. Выбирал по полю "Банк". Но тут что-то явно делаю не так
Идея: создать доп.поле в карточке счет. в которое из поисковой карточки или выпадающего поля будет выбираться основной платежный реквизит. Это решение плохо тем, что заставляет делать дополнительные манипуляции сотрудников, а им это не нравится.

В идеале хотелось бы реализации такого типа, что при создании отчета появлялось окно фильтра и там можно было бы выбрать основные платежные реквизиты, которое заполнили бы бланк. Такое вообще возможно, а то у меня сомнения, что так можно? И что проще будет?

Нравится

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

Забыл уточнить. софт Terrasoft CRM 3.3.2.127

Павел, самым простым вариантом, как по мне, будет следующее:

1. Добавить в карточку платежного реквизита поле "По умолчанию для печати счета" с типом булево.
2. В сервисе sq, который используется для построения отчета, добавить параметр с типом целое число и значением 1, и в блок WHERE добавить уловие:

tbl_AccountBillingInfo.ПоУмолчаниюДляПечатиСчета = Parameter:.ПоУмолчаниюДляПечатиСчета

Тогда при печати счета, будет браться та строка, которая отмечена галочкой "По умолчанию для печати счета".
Но, если такой галочки ни у одной записи не будет - тогда в отчет не попадет ничего.

Если такой вариант не нравится, можно пункт 2 не делать, а просто в дизайнере отчета добавить фильтр по полю "По умолчанию для печати счета", которое если заполнить - в счет попадет строка с отмеченной галочкой, а если не заполнить - строка с не отмеченной галочкой.

Дмитрий,

Правильно ли я Вас понимаю, что во 2-ом (втором) случае логика будет такая: Сотрудник пытается с формировать отчет "Счет" и в случае если настроен соответствующий фильтр, то появится окно-фильтр, в котором сотрудник либо заполнит соответствующее поле и сформируется счет с данными реквизитами банка либо не заполнит и в таком случае выберется платежные реквизиты, которые имеют значение по умолчанию.

Да, все верно.
Фильтры можно преднастроить в сервисе отчета через TS Administrator.

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

Есть отчет в FastReport выводящий данные по продуктам счетов (название, кол-во ,стоимость) и итоги (общее кол-во, общая стоимость). Отчет работает по выбранным счетам. У продукта есть поле справочника [Вид]. Необходимо добавить к данному отчету вывод названий видов продуктов участвующих в выбранных для отчета счетах и количество продуктов каждого вида.
Сделал доп. датасет, но он выводит все названия видов и считает количество для каждого вида по всем записям продуктов в счетах.
Подскажите, как сделать что бы в отчет шли данные только выбранных счетов? Если добавляю фильтр по ID данные перестают выводится в отчет. Есть ощущение, что не передается значение в параметр ID.

Нравится

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

"Кулак Олег" написал:Есть отчет в FastReport выводящий данные по продуктам счетов (название, кол-во ,стоимость) и итоги (общее кол-во, общая стоимость). Отчет работает по выбранным счетам. У продукта есть поле справочника [Вид]. Необходимо добавить к данному отчету вывод названий видов продуктов участвующих в выбранных для отчета счетах и количество продуктов каждого вида.

Олег, мне кажется Вам лучше использовать Group Header + Group Footer, без создания дополнительного датасета.
Посмотрите пример реализации в базовом отчете, например, fr_ReportOpportunitiesByManager (Opportunities\Reports\Opportunities By Manager\fr_ReportOpportunitiesByManager) либо в теме http://www.community.terrasoft.ru/forum/topic/8512

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

Добрый день!
Возникла такая необходимость, печатать напрямую отчет fast report из скрипта заранее указав кол-во копий и без окошка выбора параметров печати.
Реализация следующая:
1. В скрипте TS передаю аттрибутом в отчет кол-во копий и вызываю print:
ReportPreviewer.ComponentsByName('frpMain').Report.Attributes('Copies') = 5;
ReportPreviewer.ComponentsByName('frpMain').PreviewReport();
ReportPreviewer.ComponentsByName('frpMain').Print();
2. В отчете создал переменную Copies, в скрипте отчета выполняюю след. действия:
function frxReportOnStartReport(Sender)
{
var Copies = ;
Report.EngineOptions.DestroyForms = false;
if (Copies != null) {
Report.PrintOptions.ShowDialog = false;
Report.PrintOptions.Copies = Copies;
}
ShowMessage(Report.PrintOptions.Copies);
}
Из дизайнера отчета эта конструкция с доп. условием (else Report.PrintOptions.Copies = 3) отрабатывает правильно, при ShowDialog = true, по умолчанию стоят 3 копии.
При вызове печати из формы отчета, если заменить в коде Print() на Show() тоже все работает правильно.
Но при печати без показа отчета стоят параметры по умолчанию.
В чем может быть дело? Заранее благодарен..

Нравится

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

Иван, без предварительного показа вероятнее всего не получится распечатать отчет с заданным количеством копий (так как не срабатывают все скрипты отчета).
Попробуйте обходной вариант - показать окно и сразу же закрыть его. Похожий вопрос обсуждался здесь: http://www.community.terrasoft.ua/forum/topic/3389

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

Добрый день!
Отчёт формируется для выделенных записей. Каким образом можно получить ID записи, которая передаётся include-фильтром.
Заранее благодарен!

Нравится

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

попробовал так, но всё равно переменная ID пустая...

var Dataset = ReportPreviewer.DatasetByUSI('ds_questionary');
var ID = GetDatasetFieldValue(Dataset, 'ID');

Сергей, посмотрите тему http://www.community.terrasoft.ru/forum/topic/8097

Спасибо, но есть вопрос. Разработкой занимаюсь очень мало, поэтому вопросы может и глупые:)
Есть функция получения списка ID передаваемых в отчёт

var SelectedIDs = GetArrayByCollection(DataGrid.SelectedIDs);

В ней фигурирует объект DataGrid. Как получить Dataset я разобрался, а как получить DataGrid в событии OnPreview?

function fr_ApprovalForCreditReportOnPreview(ReportPreviewer) {
	var Dataset = ReportPreviewer.DatasetByUSI('ds_questionary');
}

Опишите, пожалуйста, задачу (возможно, Вам и не нужно использовать событие OnPreview)

Да, обошёлся без него :) В функцию ReportMenuItemExecute дописал проверку и всё.
Просто опыта мало, поэтому не всегда всё сразу доходит :) Спасибо большое за помощь! Буду дальше осваиваться

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

Проблема состоит вот в чем: был создан отчет FastReport со своим окном фильтрации, один из используемых Dataset'ов - MemoryDataset. По большому счету ничего необычного. Но дело в том, что если использовать систему и не просматривать этот отчет, все отлично работает, а если хоть раз запускался именно этот отчет, то при выключении клиента появляется сначала одна ошибка, затем вторая
Ошибка

Нравится

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

Добрый день, Константин!

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

Спасибо.

Здравствуйте, Павел! Продукт - Terrasoft XRM, версия 3.4.0.92
Сервисы в архиве. services.zip

Константин, импортировал сервисы, протестировал на коробке, многократно.

Проблем не выявленно. У меня выходит корректно.
Правда, для того, чтобы раскрыть отчет пришшлось удалить связи с сущностями Trip и Requisition в sq_ReportRegisterServices и в mds_ReportRegisterServicesValuesScript. Это что-то кастомное было, чего в моей конфигурации нет.

Обратитесь, пожалуйста, в службу поддержки по телефонам:
+7 (495) 710-86-95 в Москве или
+38 (044) 496-24-50 в Киеве
или отправьте запрос на support@terrasoft.ru с просьбой предоставить Вам обновление бинарных файлов. Текущая сборка 3.4.0.136.

Обновил бинарники до текущей версии, итог остался неизменный. Пытался отыскать связь с каким либо компонентом:

  • Вызываю отчет, в открывшемся окне множественного выбора нажимаю "Отмена" - выход с ошибками
  • Проверял, возможно проблема с Dataset'ом окна - открывал и выводил все его содержимое в лог - выход без ошибок
  • Открывал окошко в различных модулях не связывая с отчетом - выход без ошибок

Добрый день, Константин.
Для решения проблемы полученных данных, к сожалению, недостаточно.
Можете ли предоставить нам бекап своей БД?

При необходимости скрыть конфиденциальную информацию, обратите внимение на статью: скрипт обезличивания

Проблема происходит при вызове отчета "Реестр учета транспортно-экспедиционных услуг" в модуле Документы
БД

Константин, скачал БД и протестировал. У меня отрабатывает корректно.
Создание отчета и выход из приложения после просмотра отчета.

Попробуйте те же действия проделать на другом ПК, пожалуйста.

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

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

"Фильковский Павел" написал:

Возник также вопрос о применении окна фильтрации, оно отличается от классического.

Почему именно так решили сделать? Отфильтровать данные по нему не получилось у меня.


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

Добрый день, Константин!
Я не могу добиться у себя проявления подобной ошибки на том же бекапе БД, что получен от Вас.
Возможно понадобиться удаленное подключение к ПК, где воспроизводится ошибка. С установленным отладчиком из продукта MS VisualStudio.

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

Добрый день. В моем отчете после мастер даты есть Footer:
1
Но при печати данные расползаются по странице (слишком большой интервал)
2
И еще проблема, данные футера затираются на первой странице
3
Помогите пож-ста

Нравится

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

Здравствуйте, Антон.

Для Footera установите свойство AllowSplit в true.
По поводу расползания данных, тут нужно смотреть разметку... Если текст статичен - просто добавьте его в дизайнере и выровняйте прямо в дизайнере.

Свойство AllowSplit установлено в true. Текст не статичен, StretchMode = smActualHeight. А что в разметке смотреть?

Антон, со скриншотов не совсем понятно каким образом у Вас заполняется footer.

Предлагаю провести сеанс удаленного подключения к Вашему рабочему месту. Уточните здесь, либо в личном сообщении, удобное для Вас время и дату.

Ок, пишу в личку!

Вопрос решается в рамках личного общения.

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

Ситуация состоит в следующем. В отчете FastReport задано стандартное окошко с фильтрами. При запуске отчета один из фильтров по умолчанию принимает значение текущего пользователя системы. Проблема в том, чтобы одним пользователям предоставить возможность редактировать это поле и выбирать/добавлять к отчету другие контакты, а другим пользователям блокировать его как поле "для чтения". Каким образом это можно реализовать?

Нравится

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

Здравствуйте, Константин!

Решить эту задачу можно на уровне конфигурации. Сделать поле недоступным для редактирования можно следующим образом: в скрипте окна фильтрации добавить программный код

edtFieldName.IsEnabled = {условие};

где edtFieldName - название поля в карточке редактирования.

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

edtFieldName.IsEnabled = Connector.CurrentUser.IsAdmin;

Спасибо, Анна, за ответ, но как раз в скрипте

edtFieldName.IsEnabled = {условие};

и есть загвоздка. Дело в том что, все фильтры находятся в контейнере IFiltersBuilderControlDataFieldsList, и у элементов этого списка нет такого свойства, как IsEnebled, лишь только Enebled, которое отвечает за активность фильтра (грубо говоря, стоит ли галочка). Возможно, я что-то не так понял и не там смотрю?

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

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

Динамическое окно фильтрации не подерживает возможность делать один из фильтров нередактируемым - это контрол, поведение которого зашито в программном коде.

В данном случае есть два варианта решения:

1. Сделать пользовательское окно фильтрации, и отключать контрол в нем. Эта реализация корректна с точки зрения логики фильтрации;

2. Отлавливать окно выбора ответственного и фильтровать его датасет по текущему пользователю. В этом случае номинально возможность выбрать ответственного будет, однако в окне выбора польователь увидит только собственный контакт.

Спасибо большое

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

Здравствуйте! Перед просмотром FR отчета, когда открываетя уже окно предпросмотра, появляется следующая ошибка:
1

С чем она связана? Подскажите,пож-ста! (версия TS CRM 3.4.0.89)

Нравится

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

Здравствуйте, Антон.

Вам на e-mail были отправлены обновленная версия бинарных файлов системы, а также дополнительная инструкция.

Сообщите нам о результатах!

спасибо, Дмитрий! сообщу, как проверю!

Указанные действия выполнил, результат тот же. Жду помощи!

Здравствуйте, Антон.
Уточните пожалуйста, данная ошибка актуальна только для одного отчета либо для всех? Для одного пользователя или для нескольких? Данная ошибка возникает на одном ПК либо на всех?

Сбой только на этом отчете, и на всех компьютерах (под всеми пользователями).Библиотеки обновил, не помогло...

Проблема была решена в ходе удаленного подключения. Большое спасибо!

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

Добрый день. Мне нужно вывести дату счета в отчет таким образом: 15 травня 2012 р. Как такое реализовать? Есть ли стандартный функционал? Заранее спасибо!

Нравится

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

Здесь описана готовая функция, только перевести названия месяцев.

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