Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/41: Рейтинг темы: голосов - 41, средняя оценка - 4.85
1 / 1 / 3
Регистрация: 21.05.2012
Сообщений: 246

Fastreport: Распечатать простенький документ типа счёта или накладной

17.02.2019, 11:59. Показов 9424. Ответов 66
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые.

Пришла необходимость освоить fastreport. И пришло понимание, что без помощи не обойтись )
Поиск в Яндексе даёт мало, так как я не профессионал и многие термины для меня - пустой звук.
---
Я сформулирую задачу и буду надеяться получить от вас пошаговую инструкцию (в самом-самом общем виде, пока без подробностей). А там - видно будет.

Итак, задача:
Распечатать простенький документ типа счёта или накладной.
Источник информации - компоненты на форме.
Предпросмотр документа не нужен.
Установки принтера - по умолчанию.
Использую Delphi 7 и fastreport 5.4.6

Большое спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2019, 11:59
Ответы с готовыми решениями:

Подбор позиций для накладной (счета)
Здравствуйте. Если при создании накладной (счета) воспользоваться кнопкой "Подбор", то появляется окно подбора номенклатуры ...

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

В требовании-накладной в 1С 8.3 нет счета учета затрат
вот нет и всё тут. и галочки нет ( которую если ставишь/уюираешь, то можно вводить счета, ном группы и что-то ещё ) ставили роль и бух и...

66
1 / 1 / 3
Регистрация: 21.05.2012
Сообщений: 246
11.03.2019, 10:49  [ТС]
Студворк — интернет-сервис помощи студентам
Добрый день,
Очень полезно. Я продвинулся в понимании происходящего.

Однако, отчет начинает бесконечно воспроизводить первую строку Memo1.
Насколько я понял, procedure TForm1.StringDSNext не выполняется, хотя цвет контрольной точки говорит о том, что доступ к этой процедуре всё-таки есть. Я так понимаю, что это из-за StringDS.RangeEndCount := sl.Count;


Вообще, вроде бы, sl больше не нужна вообще, но при попытке заменить sl на L получается ошибка.
Вложения
Тип файла: rar EX_FastReport.rar (691.6 Кб, 1 просмотров)
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
11.03.2019, 12:39
Цитата Сообщение от hsimpson Посмотреть сообщение
это из-за StringDS.RangeEndCount := sl.Count;
верно. верните как было что-то там про End

Цитата Сообщение от hsimpson Посмотреть сообщение
получается ошибка.
ну ошибку приводите же. что нам, гадать?
Delphi
1
2
3
4
procedure TForm1.frxReport1GetValue(const VarName: String; var Value: Variant);
begin
if CompareText(VarName, 'element') = 0 then Value := sl[StringDS.RecNo];
end;
вообще StringDS.RecNo это так себе решение
а учитывая, что SL - пустой, обращение к любому элементу SL даст AV
мое мнение - этот метод вообще лишний

ну и пользуйтесь же отладчиком
смотрите, заходит ли программа в CheckEOF
https://habrahabr.ru/post/178007/
1
1 / 1 / 3
Регистрация: 21.05.2012
Сообщений: 246
13.03.2019, 09:02  [ТС]
Добрый день.

Сегодня с утра разобрался что к чему (проект на всякий случай прилагаю).
Если можно, теперь следующий вопрос: как после таблицы вывести заголовок и следующую таблицу? (картинка прилагается).

Спасибо.
Вложения
Тип файла: pdf Fast Report Document.pdf (129.7 Кб, 7 просмотров)
Тип файла: rar EX_FastReport.rar (106.8 Кб, 1 просмотров)
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
13.03.2019, 21:22
другие параметры как-нибудь связаны с первыми или вообще отдельно ?

поясню, если одни доп параметры привязаны к первой строке, другие ко второй и т.д., то можно воспользоваться принципом Master-Detail
https://www.youtube.com/watch?v=e_WgO35lZbw
0
1 / 1 / 3
Регистрация: 21.05.2012
Сообщений: 246
14.03.2019, 16:20  [ТС]
Добрый день,

"Другие параметры" никак не связаны с "основными параметрами."
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
14.03.2019, 20:37
тогда заводите дополнительную страницу и делайте там ровно то же что на первой
0
1 / 1 / 3
Регистрация: 21.05.2012
Сообщений: 246
15.03.2019, 14:26  [ТС]
Добрый день,
К сожалению принудительно разбивать отчёт на страницы в подобных случаях для меня не вариант: иногда будет получаться, что полное описание заказа будет занимать целую брошюру

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

Или это невозможно?
0
1 / 1 / 3
Регистрация: 21.05.2012
Сообщений: 246
15.03.2019, 17:58  [ТС]
Я подключил второй источник данных. Всё получилось (проект прилагаю).
Вложения
Тип файла: rar EX_FastReport.rar (122.2 Кб, 3 просмотров)
0
1 / 1 / 3
Регистрация: 21.05.2012
Сообщений: 246
15.03.2019, 18:10  [ТС]
Всегда есть следующий вопрос... )

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

И, собственно, вопрос:
как распечатать только выбранные пользователем разделы отчёта (ну, например, только "описание изделия")? От разделов, которые НЕ выбраны в отчёте не должно быть и следа.

Спасибо.
Миниатюры
Fastreport: Распечатать простенький документ типа счёта или накладной  
Вложения
Тип файла: pdf Fast Report Document.pdf (28.0 Кб, 2 просмотров)
0
62 / 48 / 20
Регистрация: 01.09.2017
Сообщений: 381
15.03.2019, 18:27
Задание было Fastreport: Распечатать простенький документ типа счёта или накладной. Ничего себе простенький. Уже постов 50 написали.И ещё продолжение наверно есть?
0
1 / 1 / 3
Регистрация: 21.05.2012
Сообщений: 246
15.03.2019, 18:40  [ТС]
Ну...
1. "Простенький" это из области маркетинга. А иначе - кто "клюнет"? ))
2. Постов, конечно, многовато, но это говорит о моей глупости, а не о реальной сложности задачи.
3. "Продолжения" не планирую. Разберусь с текущим вопросом и начну молча применять полученные знания на практике.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
15.03.2019, 19:30
страницы насколько я помню имеют свойство печататься на предыдущей странице
т.е. результат тот же что с двумя MasterData

а как НЕ печатать что-то по значению какой-то переменной, мы разобрали еще на первой странице топика
в чем проблема-то, я не понимаю
Заводите переменные, перед показом отчета их устанавливаете в соответствии с вашими чекбоксами
а в скрипте отчета перед печатью бэнда или страницы задаете ей .visible по этой переменной
1
1 / 1 / 3
Регистрация: 21.05.2012
Сообщений: 246
15.03.2019, 20:02  [ТС]
Проблема, думаю, в том, что мне ещё не совсем понятна архитектура FR.
Полиграфический верстальщик с многолетним стажем во мне шепчет, что если что-то становится невидимым, то на его месте остаётся пустое место. И страницы просто НЕ МОГУТ печататься на предыдущих страницах.
Мне нужно пройти весь цикл. А потом я сам буду удивляться "в чём проблема-то ?"

Я благодарен за время и силы, которые здесь на меня расходуются.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
15.03.2019, 21:09
верстальщику нужно прийти к концепции шаблона и генератора

для каждой строки данных по шаблону генератор СОЗДАЕТ некий объект (обычно строку таблицы)
и помещает на страницу, т.е. ВЫПОЛНЯЕТ работу верстальщика )
но делает это потоком, заполняя страницу сверху вниз
и переходя на следующую, когда место заканчивается

поэтому если что-то невидимо, оно просто не включается в процесс, на его месте - что-то другое
режим страниц отчета может работать как для того, чтобы реально начать кусок с новой страницы, так и для того, чтобы просто не валить все в одну кучу
0
1 / 1 / 3
Регистрация: 21.05.2012
Сообщений: 246
15.03.2019, 21:26  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
верстальщику нужно прийти к концепции шаблона и генератора
Я вот конкретно сейчас сижу верстаю коробки. Ой, господа, я бы хотел увидеть вас в своём рабочем кресле, вооружённых концепциями шаблонов и генераторов.
Предлагаю остаться каждому при своих профессиональных деформациях.
Мы тут поржали...

На всякий случай: это я не со зла. Это я веселюсь.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
15.03.2019, 21:35

Не по теме:

верю. у меня жена в полиграфии работает


но есть еще веб-верстальщики
им эта концепция как родная
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
16.03.2019, 02:47
Цитата Сообщение от hsimpson Посмотреть сообщение
Ну...
1. "Простенький" это из области маркетинга. А иначе - кто "клюнет"? ))
2. Постов, конечно, многовато, но это говорит о моей глупости, а не о реальной сложности задачи.
Цитата Сообщение от hsimpson Посмотреть сообщение
Я вот конкретно сейчас сижу верстаю коробки. Ой, господа, я бы хотел увидеть вас в своём рабочем кресле, вооружённых концепциями шаблонов и генераторов.
Предлагаю остаться каждому при своих профессиональных деформациях.
Мы тут поржали...
Я тут тоже поржал.
Вспоминая что такое профессиональный верстальщик в прошлом веке. Уж извините, не удержался.
0
1 / 1 / 3
Регистрация: 21.05.2012
Сообщений: 246
17.03.2019, 12:09  [ТС]
Как в старом еврейском анекдоте: "Ну всё-таки..."
0
1 / 1 / 3
Регистрация: 21.05.2012
Сообщений: 246
18.03.2019, 15:12  [ТС]
Добрый день,

Неожиданно оказалось, что при обработке TStringList делимитером является не только указанный в коде ";", но и пробел. Для меня это недопустимо.

Интернет подсказывает, что решением является " sl.StrictDelimiter := True; ".
Но в Delphi 7 StrictDelimiter отсутствует.

Подскажите, как подступить (конечно, кроме повышения версии Delphi )
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure TForm1.StringDSGetValue(const VarName: String;
  var Value: Variant);
var
  L: TStringList;
begin
  L := TStringList.Create;
  L.Delimiter := ';';
 
  L.DelimitedText := memo1.Lines[CurMemoLine];
  try
    if AnsiSameText(VarName, 'F1') then
    begin
      Value := L[0];
    end
    else if AnsiSameText(VarName, 'F2') then
    begin
      Value := L[1];
    end
    else if AnsiSameText(VarName, 'F3') then
    begin
      Value := L[2];
    end;
  finally
    L.Free;
  end;
end;
Спасибо.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
19.03.2019, 11:54
для D7 за 5 минут пишется собственный код, который бежит по строке и рубит ее на части по любому символу или чему угодно

Delphi
1
2
3
4
5
6
7
8
n:=pos(DelimiterString, SourceString);
while N>0 do
begin
  StringList.Add(copy(SourceString, 1, n-1));
  delete(SourceString,1,n-1+length(DelimiterString));
  n:=pos(DelimiterString, SourceString);
end;
StringList.Add(SourceString);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.03.2019, 11:54

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

Распечатать документ
Всем привет. Программа типа интернет магазина. Человек выбрал товар, добавил в корзину. А как теперь распечатать инфу с товаром? Извиняюсь...

Как распечатать документ?
Создал вордовский файл через CreateOleObject('Word.Application');Надо его распечатать. Как? Вызывать диалог для печати не хочется, а...

Скидка по заказу покупателя или накладной
Доброго времени суток. Помогите разобраться. Есть 1С8.2 конфигурация Управление торговым предприятием для Украины 1.1.8.3 В ней есть...

Заполнить и распечатать документ Word
Нужно разместить на странице картинку и текст, затем вывести на печать. С помощью каких библиотек и функций это можно реализовать ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru