Методологический вопрос (возможно по FastReport)

Приемы и подходы, обмен опытом

Модераторы: Screw, larin

Ответить
Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Методологический вопрос (возможно по FastReport)

Сообщение Max_Ural »

Добрый день!
Есть следующая задача
На основе договоров необходимо формировать несколько документов.
Общая картина:
Есть договор, у него установлен атрибут Объект строительства.
При печати мне необходимо взять этот договор и все остальные с таким же объектом строительства.
По каждому договору надо сформировать, допустим, один документ.

Теперь о самих документах:
Есть шаблон
В нем 17 полей для заполнения.
Из них 7 полей я могу заполнить из Галактики (названия контрагентов, адреса и т.д.)
Остальные 10 будут различны (например, указывается место проведения собрания, ответственные и т.д.)
То есть получается, что необходимо сначала дать пользователю возможность дозаполнить шаблон, после этого у нас будет готовый шаблон для тиражирования.
И после этого - сформировать документ по каждому договору.

Я пока смотрю в сторону Fast Report`a
Можно ли дать пользователю дозаполнить шаблон, чтобы он его сохранил, и после этого - сформировать на его основе готовый отчет
При этом возникают вопросы эргономики:
1. можно ли оставить пользователю для заполнения только часть поля?
2. или, например, чтобы пользователь заполнил в отдельном окне FastReport переменные, и они подставились в текст?

Может быть вы знаете решение похожей задачи в стандартном галактическом функционале?
Аватара пользователя
larin
топ-софт
Сообщения: 228
Зарегистрирован: Пн, 10/09/2007 12:13
Имя Фамилия: Михаил Ларин
Откуда: ТопCофт
Контактная информация:

Сообщение larin »

Способ первый: В стандартном окне выбора отчета FastReport есть кнопка F4 редактировать отчет в дизайнере. Доступна если у пользователя есть лицензия. С ее помощью пользователь может отредактировать форму отчета и сохранить ее под новым именем. Форма сохраняется в текущий рабочий ресурс пользователя (имя файла ресурса задается параметром Compilers.OutputResourceName в galnet.cfg, также форму можно сохранить в файл на диске). После закрытия дизайнера пользователь может использовать модифицированную форму для печати. Можно также защитить выбранные элементы отчета от случайных модификаций в дизайнере, см. свойство Restrictions у элементов отчета. Этот способ подойдет если обилие кнопочек в дизайнере FR не напугает пользователя :)

Второй способ: FastReport позволяет программировать не только печатные страницы, но и простейшие окна для вода данных (см функцию "Новая форма"). Вы можете запрограммировать для договора такой отчет с формой и полями для ввода. Форма ввода будет автоматически открываться перед печатью. Значения введенные в форму можно использовать при печати. Форму можно запрограммировать на FastScript таким образом, чтобы однажды введенные пользователем значения сохранялись куда ни будь в файл и или в реестр Windows и использовались при повторной печати. (см. методы LoadFromFile, SaveToFile и др. объектов TStringList, TIniFile, TMemIniFile)
kroxa
топ-софт
Сообщения: 65
Зарегистрирован: Пт, 07/09/2007 11:57
Имя Фамилия: Александр Крахотко
Откуда: ТопСофт
Контактная информация:

Сообщение kroxa »

Третий способ: Добавить в договор несколько внешних атрибутов - в них пользователь и будет заполнять эти дополнительные 10 полей. вывести с помощью конфигуратора их на анкетную форму договора. в этом случае Вам понадобится всего один шаблон. Наверное это все же удобнее чем связывать расширенные поля договора с самим договором через шаблон отчета:)
ilshat
заказчик партнера
Сообщения: 63
Зарегистрирован: Чт, 05/06/2008 11:09
Имя Фамилия: Ильшат Фахрисламов
Откуда: Каустик

Сообщение ilshat »

чтобы однажды введенные пользователем значения сохранялись куда ни будь в файл и или в реестр Windows и использовались при повторной печати
Ой, не гуд метод :(

Вот третий метод самое того!
Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Сообщение Max_Ural »

Спасибо за ответы.
Я пока склоняюсь ко второму способу
Кратко о причинах:
1. Маловероятно, что данные, введенные при подготовке шаблона будут использоваться повторно
2. У нас уже внешних атрибутов и так немало
3. Не хотелось бы давать пользователю доступ к шаблону фаст-репорт, сломает что-нибудь

Нашел файл FRuser.chm
Там вроде что-то есть про создание диалоговых окон.
Аватара пользователя
larin
топ-софт
Сообщения: 228
Зарегистрирован: Пн, 10/09/2007 12:13
Имя Фамилия: Михаил Ларин
Откуда: ТопCофт
Контактная информация:

Сообщение larin »

Просьба, когда реализуете поделитесь опытом :) Опишите смысл того что получилось в итоге. Нам тоже будет интересно узнать о проверке практикой тех или иных методов.
ilshat
заказчик партнера
Сообщения: 63
Зарегистрирован: Чт, 05/06/2008 11:09
Имя Фамилия: Ильшат Фахрисламов
Откуда: Каустик

Сообщение ilshat »

А вообще по Фасту ходите на их официальный сайт. Там много чего интересного.
Диалоговые окна в фасте создаются проще просто.
Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Сообщение Max_Ural »

Всем спасибо за помощь
Получилось очень даже неплохо
Я сделал интерфейс, формирующий два потока (в зависимости от того, нужно печатать документы по всем договорам объекта строительства или только по одному договору)
И сделал по тестовой форме для каждого потока.
Теперь мы можем передать их АСУ, чтобы они утрясали вопросы с полями.
Если поле из Галактики - добавим его в поток
Если должно вводится - в форме фаст-репорт АСУ добавляет его в диалог для данной формы.
Ответить