Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Документ'
Работа выполнена в Государственном образовательном учреждении высшего профессионального образования «Санкт-Петербургский государственный университет ...полностью>>
'Реферат'
Глибоке і справді дивне збагнення суті поведінки особистості і взаємовідносин в суспільстві досягається за допомогою економічної теорії. У науковому п...полностью>>
'Доклад'
Информация «Об эффективном и целевом использовании субсидии из федерального и республиканского бюджетов на поддержку экономического и социального раз...полностью>>
'Документ'
1.1. Студенческие и магистерские работы относятся к текстовым документам, содержащим сплошной текст, унифицированный текст (текст, разбитый на графы-...полностью>>

QuickReport 2

Главная > Документ
Сохрани ссылку в одной из сетей:

QuickReport 2.0

Copyright 1997 QuSoft AS

For updates please go to http://www.qusoft.no

Обновления доступны на сервере: http://www.qusoft.no

QuSoft AS

Fred Olsensgt. 1

N-0152 Oslo

Norway

Fax +47 22 41 74 91

Doc rev 1.2

Copyright 1997 NPS, перевод на русский язык

1. Введение 6

1.1. Предистория 6

1.2. Насчет QuickReport 7

2. Использование QuickReport 9

2.1. Первый отчет 9

2.1.1. Простой отчет 9

2.1.2. Другие типы секций 10

2.1.3. Получение данных 10

2.1.4. Фильтрация и сортировка данных 11

2.1.5. Добавление текста и полей данных 11

2.2. Создание отчетов 12

2.2.1. Разметка, единицы измерения и масштаб 12

2.2.2. Размер бумаги и границы 13

2.2.3. Выбор шрифта 14

2.2.4. Заголовок отчета и описание 14

2.2.5. Добавление секций 15

2.2.6. Размеры секций 17

2.2.7. Порядок печати секций 18

2.2.8. Выключение секций 18

2.2.9. Добавление печатных компонент к отчету 20

2.2.10. Насчет текстовых компонент 21

2.2.10.1. Автоматический размер 21

2.2.10.2. Перенос слов 21

2.2.10.3. Авто расширение 21

2.2.10.4. Размер 21

2.2.10.5. Стиль шрифта и цвет текста 21

2.2.10.6. Выравнивание 22

2.2.10.7. Выравнивание по секции 22

2.2.10.8. Цвет фона и прозрачность 22

2.2.10.9. Рамки 22

2.2.10.10. Разрешение и запрет 23

2.2.10.11. Печать статического текста 23

2.2.11. Печать из полей базы данных 23

2.2.11.1. Форматирование вывода 24

2.2.11.2. Печать мемо полей 24

2.2.11.3. Печать простых графических фигур 24

2.2.12. Печать графики 25

2.2.12.1. Статические изображения 25

2.2.12.2. Загрузка изображений в Runtime 25

2.2.12.3. Изображения, хранящие в таблицах 26

2.2.13. Печать RichText полей 26

2.3. Использование выражений 26

2.3.1. Создание выражений 27

2.3.1.1. Использование полей базы данных в выражениях 28

2.3.1.2. Использование строк в выражениях 28

2.3.1.3. Примеры выражений 29

2.3.2. Использование выражений 30

2.3.3. Размер стека 30

2.4. Создание групп 30

3. Расширенная техника 34

3.1. Создание отчетов из кода 34

3.1.1. Классы построителя отчетов (Report Builder) 34

3.1.2. Использование шаблонов с Report Builder 36

3.1.3. Нижний уровень 36

3.2. Использование QRPrinter 37

3.2.1. Пример создания задания на печать 37

4. Расширение QuickReport 38

4.1. Насчет дополнений к QuickReport 38

4.1.1. Печатные компоненты 38

4.1.2. Фильтры экспорта 38

4.1.3. Библиотеки функций 38

4.1.4. Редакторы отчетов 38

4.2. Написание печатных компонент 39

4.2.1. Пример компонента CheckBox 39

4.2.2. Компоненты, работающие с базами данных 40

4.3. Расширение интерпретатора выражений 41

4.3.1. Простые функции 41

5. Справочник по QuickReport 43

5.1. метод AddPrintable 43

5.2. Событие AfterPreview для TQuickRep 44

5.3. Событие AfterPrint для TQuickRep 44

5.4. Событие AfterPrint для секций 44

5.5. Свойство Alignment 45

5.6. Свойство AlignToBand 45

5.7. Свойство AlignToBottom 45

5.8. Свойство AllDataSets 46

5.9. Метод ApplySettings 46

5.10. Свойство AutoSize 47

5.11. Свойство AutoStretch 48

5.12. Свойство Available 49

5.13. Свойство BandList 49

5.14. Свойство Bands для TQRSubDetail 50

5.15. Свойство Bands 50

5.16. Свойство BandType 51

5.17. Событие BeforePrint для TQuickRep 52

5.18. Событие BeforePrint для Bands 52

5.19. Свойство Brush 53

5.20. Свойство Caption 53

5.21. Свойство Center 53

5.22. Свойство ChildBand 53

5.23. Свойство Color 54

5.24. Свойство ColumnTopPosition 54

5.25. Свойство Copies 54

5.26. Свойство CurrentColumn 55

5.27. Свойство CurrentX 55

5.28. Свойство CurrentY 55

5.29. Свойство Data 56

5.30. Свойство DataField 56

5.31. Свойство DataSet 56

5.32. Свойство DataSet для TQRDBText 57

5.33. Свойство Description 57

5.34. Свойство Designer 58

5.35. Свойство Device 58

5.36. Свойство Driver 58

5.37. Свойство Enabled 59

5.38. Свойство ExportFilter 60

5.39. Свойство Exporting 60

5.40. Метод ExportToFilter 61

5.41. Свойство Expression для TQRExpr 61

5.42. Свойство Expression для TQRGroup 61

5.43. Свойство Font 62

5.44. Свойство FooterBand 62

5.45. Свойство ForceNewColumn 62

5.46. Свойство ForceNewPage 63

5.47. Свойство HeaderBand 63

5.48. Свойство LeftOffset 63

5.49. Свойство Lines 64

5.50. Свойство Mask 64

5.51. Свойство Master для TQRChildBand 64

5.52. Свойство Master для TQRExpr 65

5.53. Метод NewColumn 65

5.54. Метод NewPage 66

5.55. Событие OnEndPage 66

5.56. Событие OnNeedData 67

5.57. Событие OnPreview 68

5.58. Событие OnStartPage 68

5.59. Свойство Options 68

5.60. Свойство Orientation 69

5.61. Свойство OutputBin 70

5.62. Свойство Page 70

5.63. Свойство PageNumber 71

5.64. Свойство PaperLength 71

5.65. Свойство PaperSize 72

5.66. Свойство PaperSizeSupported 72

5.67. Свойство PaperWidth 73

5.68. Свойство ParentFont 74

5.69. Свойство PixelsPerX 74

5.70. Свойство PixelsPerY 75

5.71. Метод Prepare 75

5.72. Метод Preview 76

5.73. Метод Print 76

5.74. Свойство Printer 76

5.75. Свойство PrinterSettings 76

5.76. Метод PrinterSetup 77

5.77. Метод PrintBackground 77

5.78. Свойство PrintIfEmpty 77

5.79. Свойство QRPrinter 78

5.80. Свойство RecordCount 78

5.81. Свойство RecordNumber 79

5.82. Свойство ReportTitle 79

5.83. Свойство ResetAfterPrint 80

5.84. Метод ResetPageFooterSize 80

5.85. Свойство ShowProgress 81

5.86. Свойство Stretch 81

5.87. Свойство Text 81

5.88. Класс TPrinterSettings 82

5.89. Класс TQRAboutBox 83

5.90. Компонент TQRBand 84

5.91. Компонент TQRChildBand 85

5.92. Компонент TQRDBImage 85

5.93. Компонент TQRDBText 87

5.94. Компонент TQRExpr 87

5.95. Компонент TQRImage 89

5.96. Компонент TQRLabel 90

5.97. Компонент TQRMemo 91

5.98. Компонент TQRShape 92

5.99. Тип TQRShapeType 92

5.100. Компонент TQRSubDetail 93

5.101. Компонент TQRSysData 93

5.102. Компонент TQuickRep 94

5.103. Свойство Transparent 96

5.104. Свойство Shape 97

5.105. Свойство Size для Bands 97

5.106. Свойство Units 98

5.107. Свойство WordWrap 98

5.108. Свойство Zoom 98

Приложения 100

A – Иерархия классов QuickReport 100

B – Описание файлов 102

C – Конвертирование из QuickReport 1 103

Заказ QuickReport 2.0 Professional 104

1. Введение

История создания и общая информация об QuickReport и его документации.

1.1. Предистория

Первоначально QuickReport был создан, как редактор отчета для небольшого проекта написанного на Delphi.

Когда я сначала начал писать QuickReport, то целью было создание минимального редактора отчетов для небольшого проекта, написанного в Delphi. Но это скоро развилось в отдельный проект, предназначенный непосредственно для изучения Delphi VCL, написания собственных компонент, а также общее программирование Windows. По размышлению, что, возможно, это окажется полезным не только мне, я опубликовал очень раннюю версию на Интернете в июне 1995, как Freeware.

По откликам от других Delphi разработчиков, я оказался не единственным, кто нуждался в подобном инструменте и так как в это время еще не было ничего аналогичного, то Я решил расширить его и выпустить как shareware.

Красота QuickReport 1 в его простоте. Способность создавать почти любой тип отчет с помощью генератора отчета, состоящим менее чем 5.000 строк кода действительно показывает силу основного инструмента. QuickReport использует редактор форм Delphi, и доступ до баз данных Delphi для получения данные и даже позволяет Вам использовать код Delphi, чтобы непосредственно управлять отчетом во время его подготовки.

Данный продукт понравился разработчикам из Borland, и они его включили в Delphi 2.0, как составную часть Delphi-32. Это привело к резкому увеличению количества пользователей, и QuickReport быстро достиг своих пределов. Вспомним, что он первоначально был разработан для выполнения простых задач и теперь почти перерос внутренний проект и структуру. Скоро стало ясно, что следующее поколение QuickReport требует полной переработки, но должен сохранить вложенные в него идеи, как QuickReport должен работать.

Результат - то, что Вы имеете теперь, QuickReport 2.0. Это состоит из приблизительно 15.000 строк кода, но не добавляет намного больше к тому что делала версия 1. Это работает быстрее и имеет более мощные возможности, чем прежде и может быть далее расширено многими способами. Этот выпуск - только первый шаг по продвижению к еще более мощному, гибкому и удобному инструменту создания отчетов. Идеи и особенности следующего поколения QuickReport уже определены, так что будьте готовы к некоторым сюрпризам!

Даже притом, что QuickReport был главным образом создан одним человеком, все имеются некоторые люди, кто заслуживает особую благодарность. Borland International оказал наибольшую помощь, специальная благодарность Диане, Дэнни и Чаку. Дэвиду Бернеда, автору TeeChart и Магне Нильсен из Vega Software, оказавшие огромную помощь в создании.

Наконец благодарю все Delphi пользователей, кто поддержал QuickReport, присылая сообщения об ошибках и ободрительные слова.

Алан Локерт

1.2. Насчет QuickReport

QuickReport 2.0 включает следующие свойства:

  • Основанный на группах генератор отчетов;

  • Визуальное создание отчета;

  • Подлинный Delphi VCL компонент, 100% написанный на Object Pascal;

  • Чрезвычайно точное позиционирование данных в отчете;

  • Совместимость с Delphi 1.0, 2.0 и 3.0;

  • От 100 до 350 Кбайт памяти для производства печати, в зависимости от использованных свойств;

  • Много поточность;

  • Встроенный просмотр;

  • Неограниченный размер отчета;

  • Неограниченный размер для memo полей;

  • Поддержка RichText формата;

  • Отчет через любой BDE совместимый источник данных, включая ODBC;

  • Печать любых данных, используя события;

  • Неограниченное количество источников данных для master-Detail отчетов;

  • Неограниченное количество групп;

  • Составные отчеты;

  • Создание дополнительных компонент для отчетов;

  • Собственные процедуры просмотра;

  • Расширяемость с помощью новых компонент подобных: Деловая графика, Штрих коды, дополнительные графические форматы и многое другое;

  • Расширенный интерпретатор и генератор выражений;

  • Мастер отчетов;

  • Классы для создания отчетов;

  • Полное управление принтером;

  • Просмотры полностью совместимые с MDI и SDI, просмотр неограниченного количества отчетов одновременно;

  • Экспорт отчетов в ASCII текст, comma delimited или HTML. Написание собственных дополнений и фильтров экспорта;

  • Полный исходный текст;

  • Используется Borland international и имеет поддержку от группы технической поддержки Borland.

2. Использование QuickReport

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

2.1. Первый отчет

В данной главе краткое описание по созданию простого отчета. Большинство основных компонент QuickReport будут кратко рассмотрены в процессе создания отчета.

2.1.1. Простой отчет

QuickReport это генератор отчетов, основанный на секциях (band). Ваш отчет состоит из секций с текстом и графическими компонентами внутри секции. Данные секции размножаются в процессе создания окончательного отчета, в зависимости от исходных данных. Простой отчет должен следующие компоненты, помещенные на форму.

  • DataSet (TTable) ;

  • QuickReport компонент подсоединенный к DataSet;

  • Секцию Detail;

  • Компонент TQRDBText в секции Detail.

Для создания отчета выполните следующие шаги:

  • Создайте новый проект;

  • Поместите TTable компонент на форму. Выберите алиас DBDemos, как DatabaseName, Customer как TableName и установите Active в True;

  • Поместите TQuickRep компонент на форму и установите свойство DataSet в Table1;

  • Раскройте свойство Bands;

  • Установите HasDetail в True. Эти Вы создали секцию Detail в отчете;

  • Поместите TQRDBText компонент на секцию Detail, установите DataSet в Table1 и DataField в Company.

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

Для просмотра отчета Вы можете щелкнуть правой кнопкой по компоненту TQuickRep и выбрать пункт Preview. Если вы все выполнили правильно, то вы увидите в окне просмотра готовый отчет.

Сейчас вы имеете отчет, работающий в режиме проектирования (Design Time), для того, чтобы данный отчет работал в режиме runtime, выполните следующие шаги:

  • Добавьте кнопку на вашу главную форму и установите ее свойство Caption в ‘Preview’;

  • В обработчике события OnClick наберите следующий текст:

QuickRep1.Preview;

Запустите ваше приложение и нажмите кнопку Preview для просмотра отчета. Для печати отчета вместо метода Preview используйте метод Print.

Так мы создали простой отчет. В следующих главах мы рассмотрим создание остальных типов отчетов.

2.1.2. Другие типы секций

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

Секции могут быть добавлены путем выбора из палитры компонент и помещением их на компонент TQuickRep. Вы должны позаботиться за установкой свойства BandType в необходимое значение. Так же хорошим тоном является задания значимого имени компоненту, например PageHeaderBand, DetailBand и так далее. Это выполняется автоматически, если вы добавляете секции с использованием свойства TQuickRep.Bands.

В дополнение для создания групп и Master-Detail отчетов используются те же самые секции.

2.1.3. Получение данных

QuickReport может получать данные от различных источников. Обычно вы присоединяете ваш отчет к Delphi компоненту DataSet, такому как TTable или TQuery. DataSet может находиться на той же самой форме, что и отчет, на другой форме или в модуле данных. Если DataSet не находится в форме отчета, то требуется добавить в раздел uses модуль формы или данных. Затем следует установить свойство DataSet компонента TQuickRep для связи с DataSet.

DataSet должен быть активным во время печати отчета, в противном случае отчет не генерируется.

2.1.4. Фильтрация и сортировка данных

QuickReport не имеет своих собственных средств для сортировки данных. Данные всегда печатаются в том порядке, в каком они поступают от источника данных. Для изменения порядка печати данных укажите индекс в компоненте TTable присоединенном к отчету. Если такого индекса не существует, то добавьте нужный или используйте компонент TQuery.

При печати отчета с помощью компонента TQuery задайте порядок сортировки в запросе. Смотрите соответствующую документацию по написанию SQL запроса.

Фильтрация данных может быть выполнена несколькими различными путями. Если вы печатаете с помощью компонента TTable и используете Delphi 2.0 или выше, то вы можете использовать свойство TTable.Filter для создания условий фильтрации. Не забудьте также становить свойство TTable.Filtered.

Другое возможное решение – это использовать компонент TQuery и указать условие Where для выбора условий фильтрации. Delphi позволяет создавать параметризированные запросы, которые позволяют просто управлять данным процессом. Смотрите документацию Delphi по данному вопросу.

Третий возможный путь – это использовать событие BeforePrint вашей Detail секции для включения или выключения печати данной секции. Пример ниже показывает использования обработчика данного события.

procedure TrepList.ReportDetailPrintEvent(Sender:TComponent;

PrintBand : Boolean);

begin

PrintBand := CustomerTableCompany.Value > ‘H’;

end;

2.1.5. Добавление текста и полей данных

Для печати текста в отчете вы должны добавить печатные компоненты в ваш отчет. Имеется два основных компонента TQRLabel и TQRDBText.

Компонент TQRLabel используется для печати статического текста, текста и чисел рассчитываемых во время генерации отчета. Для печати статического текста просто разместите компонент TQRLabel на соответствующей секции и укажите текст в свойстве Caption. Текст появится в соответствующей позиции секции и будет печататься всякий раз, как печатается данная секция.

Вы можете изменить шрифт и цвет шрифта путем задания соответствующих свойств Fonts. QuickReport поддерживает любые TrueType или PostScript шрифты.

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

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

Вы можете также использовать компонент TQRExpr для печати статических или динамических данных и полей базы данных.

2.2. Создание отчетов

Первым шагом в создание отчета, является создание формы для размещения вашего компонента TQuickRep. Мы назовем данную форму, как «Форма отчета», так как это является просто контейнером для вашего отчета и никогда не показывается как форма для конечного пользователя. Данная форма будет фигурировать в менеджере проекта Delphi и поэтому требуется дать имя, которое однозначно идентифицирует данный отчет.

Именуйте все подобные формы, начиная с букв «rep». Возможно, вы примените данное правило и для именования модуля.

Второй шаг – это поместить компонент печати на форму. Так как вы уже имеете именованную форму, то хорошим тоном дать всем компонентам на форме имена аналогичные имени формы. Например, называть компонент TQuickRep везде как Report и тогда вы можете ссылаться repCustomerListing.Report, repSalesListing.Report и так далее.

2.2.1. Разметка, единицы измерения и масштаб

После размещения компонента TQuickRep на форме вы увидите разметку, позволяющую вам позиционировать ваша компоненты. Сетка показывается в текущих единицах TQuickRep. Это помогает позиционировать и устанавливать размеры очень с точностью 1/100 дюйма или 1/100 миллиметра. Вы можете выбрать единицы отображения, изменив свойство TQuickRep.Units. Разметка обновляется при изменении свойства.

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

2.2.2. Размер бумаги и границы

Вы можете точно настаивать ваши страницы путем определения свойства Page компонента TQuickRep. Двойной щелчок по данному свойству разворачивает список подсвойств. Вы увидите все возможные свойства, которые управляют страницей. Все значения даются в выбранных единицах отображения. Выбранные границы показываются линиями из синих точек на компоненте TQuickRep. Ваши секции изменяются с учетом границ. Вы можете выбирать между portrait и landscape печатью (обычная и альбомная) и также можно включить/выключить показ разметки или линейки. Свойство PaperSize (размер бумаги) позволяет выбрать некоторые типовые размеры из следующего списка Letter, LetterSmall, Tabloid, Ledger, Legal, Statement, Executive, A3, A4, A4Small, A5, B4, B5, Folio, Quarto, qr10X14, qr11X17, Note, Env9, Env10, Env11, Env12, Env14, CSheet, DSheet, и Esheet

Это значения определенные в Windows. Выбор размера бумаги автоматически отображается в свойствах PaperLength и PaperWidth. Вы также можете установить PaperSize в Custom и установить свойства PaperLength и PaperWidth в необходимое значение.

Примечание: не все принтеры поддерживают все указанные размеры. Также многие принтеры не поддерживают тип Custom (пользовательский) или позволяют изменять размеры только в определенных границах.

Если вы выбираете размер, не поддерживаемый принтером, то QuickReport автоматически переключается на размер по умолчанию, во время подготовки отчета. Размер по умолчанию устанавливается в настройках принтера.

Некоторые принтеры имеют дополнительные размеры бумаги. Эти размеры не могут быть определенны в данной версии QuickReport, но вы можете создать пользовательский тип с теми же самыми размерами.

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

2.2.3. Выбор шрифта

Шрифт по умолчанию для отчета устанавливается в свойстве TQuickRep.Font. Двойной щелчок по свойству раскрывает список подсвойств, где вы можете выбрать шрифт, размер, атрибуты и цвет. Все шрифты, указанные здесь – это шрифты установленные в Windows (True Туре шрифты и некоторые PostScript шрифты, если установлена программа Adobe TypeManager).

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

Некоторые игольчатые принтеры печатаю быстрее, если вы выбираете шрифт, который встроен в принтер, обычно называется принтерный шрифт. Эти шрифты не показываются в свойстве font, но могут быть использованы в runtime путем установки в программе соответствующего свойства.

:= 'CG TIMES';

По умолчанию все компоненты отчета наследуют установки шрифта из отчета. Для некоторых компонент, у которых шрифт указывается явно или его свойство ParentFont установлено в False, не наследуют установки из отчета.

Примечание: вы также можете переписать шрифт для любой секции.

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

2.2.4. Заголовок отчета и описание

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

Заголовок отчета также можно напечатать с помощью компонента TQRSysData.



Скачать документ

Похожие документы:

  1. Первый отчет 7 Компоненты 11 Создание отчетов 19 Обзор печатных (printable) компонент 35

    Публичный отчет
    QuickReport 3 это набор компонент для Delphi позволяющий вам построить отчет из базы данных быстро и просто. Позволяет не только отпечатать отчет, но и просмотреть его на экране, что позволяет пользователю проверить результат без порчи
  2. Анализ существующей программы 62 Выбор платформы и программных средств 64 Разработка структуры новой бд 78 (1)

    Литература
    Настоящая работа посвящена переносу базы данных на новую технологию с созданием клиентских частей под современные операционные системы Windows’95 и Windows NT для SQL базы данных.
  3. Анализ существующей программы 62 Выбор платформы и программных средств 64 Разработка структуры новой бд 78 (2)

    Литература
    Настоящая работа посвящена переносу базы данных на новую технологию с созданием клиентских частей под современные операционные системы Windows’95 и Windows NT для SQL базы данных.
  4. Директор коледжу (1)

    Документ
    Відповідно до стандарту вищої освіти для підготовки техніків програмістів за спеціальністю 5.080405 "Програмування для електронно-обчислювальної техніки та автоматизованих систем" формою державної атестації студентів є комплексний
  5. Задание на дипломное проектирование по специальности: «Менеджмент» Студента группы: п 411

    Диплом
    Организовать ввод количества пропущенных часов за каждый день по уважительным (болезнь, отпускные) и неуважительным причинам по каждой специальности, группе,

Другие похожие документы..