diff --git a/FlowerShopBusinessLogic/FlowerShopBusinessLogic.csproj b/FlowerShopBusinessLogic/FlowerShopBusinessLogic.csproj
index e3db8e7..2d181f3 100644
--- a/FlowerShopBusinessLogic/FlowerShopBusinessLogic.csproj
+++ b/FlowerShopBusinessLogic/FlowerShopBusinessLogic.csproj
@@ -7,7 +7,9 @@
   </PropertyGroup>
 
   <ItemGroup>
+    <PackageReference Include="DocumentFormat.OpenXml" Version="3.0.2" />
     <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
+    <PackageReference Include="PdfSharp.MigraDoc.Standard" Version="1.51.15" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToExcel.cs b/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToExcel.cs
new file mode 100644
index 0000000..1f6abe9
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToExcel.cs
@@ -0,0 +1,103 @@
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+using FlowerShopBusinessLogic.OfficePackage.HelperModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage
+{
+    public abstract class AbstractSaveToExcel
+    {
+        /// <summary>
+        /// Создание отчета
+        /// </summary>
+        /// <param name="info"></param>
+        public void CreateReport(ExcelInfo info)
+        {
+            CreateExcel(info);
+            InsertCellInWorksheet(new ExcelCellParameters
+            {
+                ColumnName = "A",
+                RowIndex = 1,
+                Text = info.Title,
+                StyleInfo = ExcelStyleInfoType.Title
+            });
+            MergeCells(new ExcelMergeParameters
+            {
+                CellFromName = "A1",
+                CellToName = "C1"
+            });
+            uint rowIndex = 2;
+            foreach (var pc in info.FlowerComponents)
+            {
+                InsertCellInWorksheet(new ExcelCellParameters
+                {
+                    ColumnName = "A",
+                    RowIndex = rowIndex,
+                    Text = pc.FlowerName,
+                    StyleInfo = ExcelStyleInfoType.Text
+                });
+                rowIndex++;
+                foreach (var component in pc.Components)                
+                {
+                    InsertCellInWorksheet(new ExcelCellParameters
+                    {
+                        ColumnName = "B",
+                        RowIndex = rowIndex,
+                        Text = component.Item1,
+                        StyleInfo =
+                    ExcelStyleInfoType.TextWithBroder
+                    });
+                    InsertCellInWorksheet(new ExcelCellParameters
+                    {
+                        ColumnName = "C",
+                        RowIndex = rowIndex,
+                        Text = component.Item2.ToString(),
+                        StyleInfo =
+                    ExcelStyleInfoType.TextWithBroder
+                    });
+                    rowIndex++;
+                }
+                InsertCellInWorksheet(new ExcelCellParameters
+                {
+                    ColumnName = "A",
+                    RowIndex = rowIndex,
+                    Text = "Итого",
+                    StyleInfo = ExcelStyleInfoType.Text
+                });
+                InsertCellInWorksheet(new ExcelCellParameters
+                {
+                    ColumnName = "C",
+                    RowIndex = rowIndex,
+                    Text = pc.TotalCount.ToString(),
+                    StyleInfo = ExcelStyleInfoType.Text
+                });
+                rowIndex++;
+            }
+            SaveExcel(info);
+        }
+        /// <summary>
+        /// Создание excel-файла
+        /// </summary>
+        /// <param name="info"></param>
+        protected abstract void CreateExcel(ExcelInfo info);
+        /// <summary>
+        /// Добавляем новую ячейку в лист
+        /// </summary>
+        /// <param name="cellParameters"></param>
+        protected abstract void InsertCellInWorksheet(ExcelCellParameters excelParams);
+        /// <summary>
+        /// Объединение ячеек
+        /// </summary>
+        /// <param name="mergeParameters"></param>
+        protected abstract void MergeCells(ExcelMergeParameters excelParams);
+        /// <summary>
+        /// Сохранение файла
+        /// </summary>
+        /// <param name="info"></param>
+        protected abstract void SaveExcel(ExcelInfo info);
+    }
+
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToPdf.cs b/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToPdf.cs
new file mode 100644
index 0000000..abb41fd
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToPdf.cs
@@ -0,0 +1,80 @@
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+using FlowerShopBusinessLogic.OfficePackage.HelperModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage
+{
+    public abstract class AbstractSaveToPdf
+    {
+        public void CreateDoc(PdfInfo info)
+        {
+            CreatePdf(info);
+            CreateParagraph(new PdfParagraph
+            {
+                Text = info.Title,
+                Style ="NormalTitle",
+                ParagraphAlignment = PdfParagraphAlignmentType.Center
+            });
+            CreateParagraph(new PdfParagraph
+            {
+                Text = $"с { info.DateFrom.ToShortDateString() } по { info.DateTo.ToShortDateString() }", Style = "Normal",
+                ParagraphAlignment = PdfParagraphAlignmentType.Center
+            });
+            CreateTable(new List<string> { "2cm", "3cm", "6cm", "3cm", "4cm" });
+            CreateRow(new PdfRowParameters
+            {
+                Texts = new List<string> { "Номер", "Дата заказа", "Изделие","Сумма", "Статус" },
+                Style = "NormalTitle",
+                ParagraphAlignment = PdfParagraphAlignmentType.Center
+            });
+            foreach (var order in info.Orders)
+            {
+                CreateRow(new PdfRowParameters
+                {
+                    Texts = new List<string> { order.Id.ToString(), order.DateCreate.ToShortDateString(), order.FlowerName, order.Sum.ToString(), order.OrderStatus.ToString() },
+                    Style = "Normal",
+                    ParagraphAlignment = PdfParagraphAlignmentType.Left
+                });
+            }
+            CreateParagraph(new PdfParagraph
+            {
+                Text = $"Итого: {info.Orders.Sum(x=> x.Sum)}\t",
+                Style = "Normal",
+                ParagraphAlignment = PdfParagraphAlignmentType.Right
+            });
+            SavePdf(info);
+        }
+        /// <summary>
+        /// Создание doc-файла
+        /// </summary>
+        /// <param name="info"></param>
+        protected abstract void CreatePdf(PdfInfo info);
+        /// <summary>
+        /// Создание параграфа с текстом
+        /// </summary>
+        /// <param name="title"></param>
+        /// <param name="style"></param>
+        protected abstract void CreateParagraph(PdfParagraph paragraph);
+        /// <summary>
+        /// Создание таблицы
+        /// </summary>
+        /// <param name="title"></param>
+        /// <param name="style"></param>
+        protected abstract void CreateTable(List<string> columns);
+        /// <summary>
+        /// Создание и заполнение строки
+        /// </summary>
+        /// <param name="rowParameters"></param>
+        protected abstract void CreateRow(PdfRowParameters rowParameters);
+        /// <summary>
+        /// Сохранение файла
+        /// </summary>
+        /// <param name="info"></param>
+        protected abstract void SavePdf(PdfInfo info);
+    }
+
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToWord.cs b/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToWord.cs
new file mode 100644
index 0000000..619115a
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToWord.cs
@@ -0,0 +1,57 @@
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+using FlowerShopBusinessLogic.OfficePackage.HelperModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage
+{
+    public abstract class AbstractSaveToWord
+    {
+        public void CreateDoc(WordInfo info)
+        {
+            CreateWord(info);
+            CreateParagraph(new WordParagraph
+            {
+                Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24", }) },
+                TextProperties = new WordTextProperties
+                {
+                    Size = "24",
+                    JustificationType = WordJustificationType.Center
+                }
+            });
+            foreach (var flower in info.Flowers)
+            {
+                CreateParagraph(new WordParagraph
+                {
+                    Texts = new List<(string, WordTextProperties)> { (flower.FlowerName, new WordTextProperties { Size = "24", Bold = true }),
+                        (" - цена " + flower.Price.ToString(), new WordTextProperties { Size = "24" }) },
+                    TextProperties = new WordTextProperties
+                    {
+                        Size = "24",
+                        JustificationType = WordJustificationType.Both
+                    }
+                });
+            }
+            SaveWord(info);
+        }
+        /// <summary>
+        /// Создание doc-файла
+        /// </summary>
+        /// <param name="info"></param>
+        protected abstract void CreateWord(WordInfo info);
+        /// <summary>
+        /// Создание абзаца с текстом
+        /// </summary>
+        /// <param name="paragraph"></param>
+        /// <returns></returns>
+        protected abstract void CreateParagraph(WordParagraph paragraph);
+        /// <summary>
+        /// Сохранение файла
+        /// </summary>
+        /// <param name="info"></param>
+        protected abstract void SaveWord(WordInfo info);
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperEnums/ExcelStyleInfoType.cs b/FlowerShopBusinessLogic/OfficePackage/HelperEnums/ExcelStyleInfoType.cs
new file mode 100644
index 0000000..0a91444
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperEnums/ExcelStyleInfoType.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperEnums
+{
+    public enum ExcelStyleInfoType
+    {
+        Title,
+        Text,
+        TextWithBroder
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperEnums/PdfParagraphAlignmentType.cs b/FlowerShopBusinessLogic/OfficePackage/HelperEnums/PdfParagraphAlignmentType.cs
new file mode 100644
index 0000000..8125cf3
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperEnums/PdfParagraphAlignmentType.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperEnums
+{
+    public enum PdfParagraphAlignmentType
+    {
+        Center,
+        Left,
+
+        Right
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperEnums/WordJustificationType.cs b/FlowerShopBusinessLogic/OfficePackage/HelperEnums/WordJustificationType.cs
new file mode 100644
index 0000000..ba1ea71
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperEnums/WordJustificationType.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperEnums
+{
+    public enum WordJustificationType
+    {
+        Center,
+        Both
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelCellParametres.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelCellParametres.cs
new file mode 100644
index 0000000..ca0d84c
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelCellParametres.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+    public class ExcelCellParameters
+    {
+        public string ColumnName { get; set; } = string.Empty;
+        public uint RowIndex { get; set; }
+        public string Text { get; set; } = string.Empty;
+        public string CellReference => $"{ColumnName}{RowIndex}";
+        public ExcelStyleInfoType StyleInfo { get; set; }
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelInfo.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelInfo.cs
new file mode 100644
index 0000000..378f150
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelInfo.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using FlowerShopContracts.ViewModels;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+    public class ExcelInfo
+    {
+        public string FileName { get; set; } = string.Empty;
+        public string Title { get; set; } = string.Empty;
+        public List<ReportFlowerComponentViewModel> FlowerComponents { get; set; } = new();
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelMergeParametres.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelMergeParametres.cs
new file mode 100644
index 0000000..2658b1f
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelMergeParametres.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+    public class ExcelMergeParameters
+    {
+        public string CellFromName { get; set; } = string.Empty;
+        public string CellToName { get; set; } = string.Empty;
+        public string Merge => $"{CellFromName}:{CellToName}";
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfInfo.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfInfo.cs
new file mode 100644
index 0000000..bd8b32f
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfInfo.cs
@@ -0,0 +1,18 @@
+using FlowerShopContracts.ViewModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+    public class PdfInfo
+    {
+        public string FileName { get; set; } = string.Empty;
+        public string Title { get; set; } = string.Empty;
+        public DateTime DateFrom { get; set; }
+        public DateTime DateTo { get; set; }
+        public List<ReportOrdersViewModel> Orders { get; set; } = new();
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfParagraph.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfParagraph.cs
new file mode 100644
index 0000000..a8a47bc
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfParagraph.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+    public class PdfParagraph
+    {
+        public string Text { get; set; } = string.Empty;
+        public string Style { get; set; } = string.Empty;
+        public PdfParagraphAlignmentType ParagraphAlignment { get; set; }
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfRowParametres.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfRowParametres.cs
new file mode 100644
index 0000000..be5e5e9
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfRowParametres.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+    public class PdfRowParameters
+    {
+        public List<string> Texts { get; set; } = new();
+        public string Style { get; set; } = string.Empty;
+        public PdfParagraphAlignmentType ParagraphAlignment { get; set; }
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordInfo.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordInfo.cs
new file mode 100644
index 0000000..6d8fc83
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordInfo.cs
@@ -0,0 +1,16 @@
+using FlowerShopContracts.ViewModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+    public class WordInfo
+    {
+        public string FileName { get; set; } = string.Empty;
+        public string Title { get; set; } = string.Empty;
+        public List<FlowerViewModel> Flowers { get; set; } = new();
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordParagraph.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordParagraph.cs
new file mode 100644
index 0000000..6c594c5
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordParagraph.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+    public class WordParagraph
+    {
+        public List<(string, WordTextProperties)> Texts { get; set; } = new();
+        public WordTextProperties? TextProperties { get; set; }
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordTextProperties.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordTextProperties.cs
new file mode 100644
index 0000000..fbaecb4
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordTextProperties.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+    public class WordTextProperties
+    {
+        public string Size { get; set; } = string.Empty;
+        public bool Bold { get; set; }
+        public WordJustificationType JustificationType { get; set; }
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToExcel.cs b/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToExcel.cs
new file mode 100644
index 0000000..d7e53fa
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToExcel.cs
@@ -0,0 +1,346 @@
+using DocumentFormat.OpenXml.Office2010.Excel;
+using DocumentFormat.OpenXml.Office2013.Excel;
+using DocumentFormat.OpenXml.Office2016.Excel;
+using DocumentFormat.OpenXml.Packaging;
+using DocumentFormat.OpenXml.Spreadsheet;
+using DocumentFormat.OpenXml;
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+using FlowerShopBusinessLogic.OfficePackage.HelperModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.Implements
+{
+    public class SaveToExcel : AbstractSaveToExcel
+    {
+        private SpreadsheetDocument? _spreadsheetDocument;
+        private SharedStringTablePart? _shareStringPart;
+        private Worksheet? _worksheet;
+        /// <summary>
+        /// Настройка стилей для файла
+        /// </summary>
+        /// <param name="workbookpart"></param>
+        private static void CreateStyles(WorkbookPart workbookpart)
+        {
+            var sp = workbookpart.AddNewPart<WorkbookStylesPart>();
+            sp.Stylesheet = new Stylesheet();
+            var fonts = new Fonts() { Count = 2U, KnownFonts = true };
+            var fontUsual = new Font();
+            fontUsual.Append(new FontSize() { Val = 12D });
+            fontUsual.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color()
+            { Theme = 1U });
+            fontUsual.Append(new FontName() { Val = "Times New Roman" });
+            fontUsual.Append(new FontFamilyNumbering() { Val = 2 });
+            fontUsual.Append(new FontScheme() { Val = FontSchemeValues.Minor });
+            var fontTitle = new Font();
+            fontTitle.Append(new Bold());
+            fontTitle.Append(new FontSize() { Val = 14D });
+            fontTitle.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color()
+            { Theme = 1U });
+            fontTitle.Append(new FontName() { Val = "Times New Roman" });
+            fontTitle.Append(new FontFamilyNumbering() { Val = 2 });
+            fontTitle.Append(new FontScheme() { Val = FontSchemeValues.Minor });
+            fonts.Append(fontUsual);
+            fonts.Append(fontTitle);
+            var fills = new Fills() { Count = 2U };
+            var fill1 = new Fill();
+            fill1.Append(new PatternFill() { PatternType = PatternValues.None });
+            var fill2 = new Fill();
+            fill2.Append(new PatternFill()
+            {
+                PatternType = PatternValues.Gray125
+            });
+            fills.Append(fill1);
+            fills.Append(fill2);
+            var borders = new Borders() { Count = 2U };
+            var borderNoBorder = new Border();
+            borderNoBorder.Append(new LeftBorder());
+            borderNoBorder.Append(new RightBorder());
+            borderNoBorder.Append(new TopBorder());
+            borderNoBorder.Append(new BottomBorder());
+            borderNoBorder.Append(new DiagonalBorder());
+            var borderThin = new Border();
+            var leftBorder = new LeftBorder() { Style = BorderStyleValues.Thin };
+            leftBorder.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color()
+            { Indexed = 64U });
+            var rightBorder = new RightBorder()
+            {
+                Style = BorderStyleValues.Thin
+            };
+            rightBorder.Append(new
+           DocumentFormat.OpenXml.Office2010.Excel.Color()
+            { Indexed = 64U });
+            var topBorder = new TopBorder() { Style = BorderStyleValues.Thin };
+            topBorder.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color()
+            { Indexed = 64U });
+            var bottomBorder = new BottomBorder()
+            {
+                Style =
+           BorderStyleValues.Thin
+            };
+            bottomBorder.Append(new
+           DocumentFormat.OpenXml.Office2010.Excel.Color()
+            { Indexed = 64U });
+            borderThin.Append(leftBorder);
+            borderThin.Append(rightBorder);
+            borderThin.Append(topBorder);
+            borderThin.Append(bottomBorder);
+            borderThin.Append(new DiagonalBorder());
+            borders.Append(borderNoBorder);
+            borders.Append(borderThin);
+            var cellStyleFormats = new CellStyleFormats() { Count = 1U };
+            var cellFormatStyle = new CellFormat()
+            {
+                NumberFormatId = 0U,
+                FontId
+           = 0U,
+                FillId = 0U,
+                BorderId = 0U
+            };
+            cellStyleFormats.Append(cellFormatStyle);
+            var cellFormats = new CellFormats() { Count = 3U };
+            var cellFormatFont = new CellFormat()
+            {
+                NumberFormatId = 0U,
+                FontId =
+           0U,
+                FillId = 0U,
+                BorderId = 0U,
+                FormatId = 0U,
+                ApplyFont = true
+            };
+            var cellFormatFontAndBorder = new CellFormat()
+            {
+                NumberFormatId = 0U,
+                FontId = 0U,
+                FillId = 0U,
+                BorderId = 1U,
+                FormatId = 0U,
+                ApplyFont = true,
+                ApplyBorder = true
+            };
+            var cellFormatTitle = new CellFormat()
+            {
+                NumberFormatId = 0U,
+                FontId
+           = 1U,
+                FillId = 0U,
+                BorderId = 0U,
+                FormatId = 0U,
+                Alignment = new Alignment()
+                {
+                    Vertical = VerticalAlignmentValues.Center,
+                    WrapText = true,
+                    Horizontal =
+           HorizontalAlignmentValues.Center
+                },
+                ApplyFont = true
+            };
+            cellFormats.Append(cellFormatFont);
+            cellFormats.Append(cellFormatFontAndBorder);
+            cellFormats.Append(cellFormatTitle);
+            var cellStyles = new CellStyles() { Count = 1U };
+            cellStyles.Append(new CellStyle()
+            {
+                Name = "Normal",
+                FormatId = 0U,
+                BuiltinId = 0U
+            });
+            var differentialFormats = new
+           DocumentFormat.OpenXml.Office2013.Excel.DifferentialFormats()
+            { Count = 0U };
+
+            var tableStyles = new TableStyles()
+            {
+                Count = 0U,
+                DefaultTableStyle ="TableStyleMedium2",
+                DefaultPivotStyle = "PivotStyleLight16"
+            };
+            var stylesheetExtensionList = new StylesheetExtensionList();
+            var stylesheetExtension1 = new StylesheetExtension()
+            {
+                Uri ="{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}"
+            };
+            stylesheetExtension1.AddNamespaceDeclaration("x14", "http://schemas.microsoft.com/office/spreadsheetml/2009/9/main");
+            stylesheetExtension1.Append(new SlicerStyles()
+            {
+                DefaultSlicerStyle = "SlicerStyleLight1"
+            });
+            var stylesheetExtension2 = new StylesheetExtension()
+            {
+                Uri = "{9260A510-F301-46a8-8635-F512D64BE5F5}"
+            };
+            stylesheetExtension2.AddNamespaceDeclaration("x15", "http://schemas.microsoft.com/office/spreadsheetml/2010/11/main");
+            stylesheetExtension2.Append(new TimelineStyles()
+            {
+                DefaultTimelineStyle = "TimeSlicerStyleLight1"
+            });
+            stylesheetExtensionList.Append(stylesheetExtension1);
+            stylesheetExtensionList.Append(stylesheetExtension2);
+            sp.Stylesheet.Append(fonts);
+            sp.Stylesheet.Append(fills);
+            sp.Stylesheet.Append(borders);
+            sp.Stylesheet.Append(cellStyleFormats);
+            sp.Stylesheet.Append(cellFormats);
+            sp.Stylesheet.Append(cellStyles);
+            sp.Stylesheet.Append(differentialFormats);
+            sp.Stylesheet.Append(tableStyles);
+            sp.Stylesheet.Append(stylesheetExtensionList);
+        }
+        /// <summary>
+        /// Получение номера стиля из типа
+        /// </summary>
+        /// <param name="styleInfo"></param>
+        /// <returns></returns>
+        private static uint GetStyleValue(ExcelStyleInfoType styleInfo)
+        {
+            return styleInfo switch
+            {
+                ExcelStyleInfoType.Title => 2U,
+                ExcelStyleInfoType.TextWithBroder => 1U,
+                ExcelStyleInfoType.Text => 0U,
+                _ => 0U,
+            };
+        }
+
+        // создаем книгу, добавляем туда листы
+        protected override void CreateExcel(ExcelInfo info)
+        {
+            _spreadsheetDocument = SpreadsheetDocument.Create(info.FileName,
+           SpreadsheetDocumentType.Workbook);
+            // Создаем книгу (в ней хранятся листы)
+            var workbookpart = _spreadsheetDocument.AddWorkbookPart();
+            workbookpart.Workbook = new Workbook();
+            CreateStyles(workbookpart);
+            // Получаем/создаем хранилище текстов для книги
+            _shareStringPart =
+           _spreadsheetDocument.WorkbookPart!.GetPartsOfType<SharedStringTablePart>().Any()
+            ?
+           _spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First()
+            :
+           _spreadsheetDocument.WorkbookPart.AddNewPart<SharedStringTablePart>();
+            // Создаем SharedStringTable, если его нет
+            if (_shareStringPart.SharedStringTable == null)
+            {
+                _shareStringPart.SharedStringTable = new SharedStringTable();
+            }
+            // Создаем лист в книгу
+            var worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
+            worksheetPart.Worksheet = new Worksheet(new SheetData());
+            // Добавляем лист в книгу
+            var sheets = _spreadsheetDocument.WorkbookPart.Workbook.AppendChild(new Sheets());
+            var sheet = new Sheet()
+            {
+                Id =
+           _spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart),
+                SheetId = 1,
+                Name = "Лист"
+            };
+            sheets.Append(sheet);
+            _worksheet = worksheetPart.Worksheet;
+        }
+
+        protected override void InsertCellInWorksheet(ExcelCellParameters excelParams)
+        {
+            if (_worksheet == null || _shareStringPart == null)
+            {
+                return;
+            }
+            var sheetData = _worksheet.GetFirstChild<SheetData>();
+            if (sheetData == null)
+            {
+                return;
+            }
+            // Ищем строку, либо добавляем ее
+            Row row;
+            if (sheetData.Elements<Row>().Where(r => r.RowIndex! == excelParams.RowIndex).Any())
+            {
+                row = sheetData.Elements<Row>().Where(r => r.RowIndex! ==
+               excelParams.RowIndex).First();
+            }
+            else
+            {
+                row = new Row() { RowIndex = excelParams.RowIndex };
+                sheetData.Append(row);
+            }
+            // Ищем нужную ячейку
+            Cell cell;
+            if (row.Elements<Cell>().Where(c => c.CellReference!.Value == excelParams.CellReference).Any())
+            {
+                cell = row.Elements<Cell>().Where(c => c.CellReference!.Value == excelParams.CellReference).First();
+            }
+            else
+            {
+                // Все ячейки должны быть последовательно друг за другом расположены
+                // нужно определить, после какой вставлять
+                 Cell? refCell = null;
+                foreach (Cell rowCell in row.Elements<Cell>())
+                {
+                    if (string.Compare(rowCell.CellReference!.Value,
+                   excelParams.CellReference, true) > 0)
+                    {
+                        refCell = rowCell;
+                        break;
+                    }
+                }
+                var newCell = new Cell()
+                {
+                    CellReference =
+               excelParams.CellReference
+                };
+                row.InsertBefore(newCell, refCell);
+                cell = newCell;
+            }
+            // вставляем новый текст
+            _shareStringPart.SharedStringTable.AppendChild(new SharedStringItem(new Text(excelParams.Text)));
+            _shareStringPart.SharedStringTable.Save();
+            cell.CellValue = new CellValue((_shareStringPart.SharedStringTable.Elements<SharedStringItem>().Count() - 1).ToString());
+            cell.DataType = new EnumValue<CellValues>(CellValues.SharedString);
+            cell.StyleIndex = GetStyleValue(excelParams.StyleInfo);
+        }
+        // объединение ячеек
+        protected override void MergeCells(ExcelMergeParameters excelParams)
+        {
+            if (_worksheet == null)
+            {
+                return;
+            }
+            MergeCells mergeCells;
+            if (_worksheet.Elements<MergeCells>().Any())
+            {
+                mergeCells = _worksheet.Elements<MergeCells>().First();
+            }
+            else
+            {
+                mergeCells = new MergeCells();
+                if (_worksheet.Elements<CustomSheetView>().Any())
+                {
+                    _worksheet.InsertAfter(mergeCells,
+                   _worksheet.Elements<CustomSheetView>().First());
+                }
+                else
+                {
+                    _worksheet.InsertAfter(mergeCells,
+                   _worksheet.Elements<SheetData>().First());
+                }
+            }
+            var mergeCell = new MergeCell()
+            {
+                Reference = new StringValue(excelParams.Merge)
+            };
+            mergeCells.Append(mergeCell);
+        }
+        protected override void SaveExcel(ExcelInfo info)
+        {
+            if (_spreadsheetDocument == null)
+            {
+                return;
+            }
+            _spreadsheetDocument.WorkbookPart!.Workbook.Save();
+            _spreadsheetDocument.Dispose();
+        }
+    }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToPdf.cs b/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToPdf.cs
new file mode 100644
index 0000000..7a95b63
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToPdf.cs
@@ -0,0 +1,106 @@
+
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+using FlowerShopBusinessLogic.OfficePackage.HelperModels;
+using MigraDoc.DocumentObjectModel;
+using MigraDoc.DocumentObjectModel.Tables;
+using MigraDoc.Rendering;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.Implements
+{
+    public class SaveToPdf : AbstractSaveToPdf
+    {
+        private Document? _document;
+        private Section? _section;
+        private Table? _table;
+        private static ParagraphAlignment
+       GetParagraphAlignment(PdfParagraphAlignmentType type)
+        {
+            return type switch
+            {
+                PdfParagraphAlignmentType.Center => ParagraphAlignment.Center,
+                PdfParagraphAlignmentType.Left => ParagraphAlignment.Left,
+                PdfParagraphAlignmentType.Right => ParagraphAlignment.Right,
+                _ => ParagraphAlignment.Justify,
+            };
+        }
+        /// <summary>
+        /// Создание стилей для документа
+        /// </summary>
+        /// <param name="document"></param>
+        private static void DefineStyles(Document document)
+        {
+            var style = document.Styles["Normal"];
+            style.Font.Name = "Times New Roman";
+            style.Font.Size = 14;
+            style = document.Styles.AddStyle("NormalTitle", "Normal");
+            style.Font.Bold = true;
+        }
+        protected override void CreatePdf(PdfInfo info)
+        {
+            _document = new Document();
+            DefineStyles(_document);
+            _section = _document.AddSection();
+        }
+        protected override void CreateParagraph(PdfParagraph pdfParagraph)
+        {
+            if (_section == null)
+            {
+                return;
+            }
+            var paragraph = _section.AddParagraph(pdfParagraph.Text);
+            paragraph.Format.SpaceAfter = "1cm";
+            paragraph.Format.Alignment = GetParagraphAlignment(pdfParagraph.ParagraphAlignment);
+            paragraph.Style = pdfParagraph.Style;
+        }
+        protected override void CreateTable(List<string> columns)
+        {
+            if (_document == null)
+            {
+                return;
+            }
+            _table = _document.LastSection.AddTable();
+            foreach (var elem in columns)
+            {
+                _table.AddColumn(elem);
+            }
+        }
+        protected override void CreateRow(PdfRowParameters rowParameters)
+        {
+            if (_table == null)
+            {
+                return;
+            }
+            var row = _table.AddRow();
+            for (int i = 0; i < rowParameters.Texts.Count; ++i)
+            {
+                row.Cells[i].AddParagraph(rowParameters.Texts[i]);
+                if (!string.IsNullOrEmpty(rowParameters.Style))
+                {
+                    row.Cells[i].Style = rowParameters.Style;
+                }
+                Unit borderWidth = 0.5;
+                row.Cells[i].Borders.Left.Width = borderWidth;
+                row.Cells[i].Borders.Right.Width = borderWidth;
+                row.Cells[i].Borders.Top.Width = borderWidth;
+                row.Cells[i].Borders.Bottom.Width = borderWidth;
+                row.Cells[i].Format.Alignment = GetParagraphAlignment(rowParameters.ParagraphAlignment);
+                row.Cells[i].VerticalAlignment = VerticalAlignment.Center;
+            }
+        }
+        protected override void SavePdf(PdfInfo info)
+        {
+            var renderer = new PdfDocumentRenderer(true)
+            {
+                Document = _document
+            };
+            renderer.RenderDocument();
+            renderer.PdfDocument.Save(info.FileName);
+        }
+    }
+
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToWord.cs b/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToWord.cs
new file mode 100644
index 0000000..df65399
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToWord.cs
@@ -0,0 +1,121 @@
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+using FlowerShopBusinessLogic.OfficePackage.HelperModels;
+using DocumentFormat.OpenXml;
+using DocumentFormat.OpenXml.Packaging;
+using DocumentFormat.OpenXml.Wordprocessing;
+
+
+namespace FlowerShopBusinessLogic.OfficePackage.Implements
+{
+    public class SaveToWord : AbstractSaveToWord
+    {
+        private WordprocessingDocument? _wordDocument;
+        private Body? _docBody;
+        /// <summary>
+        /// Получение типа выравнивания
+        /// </summary>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        private static JustificationValues GetJustificationValues(WordJustificationType type)
+        {
+            return type switch
+            {
+                WordJustificationType.Both => JustificationValues.Both,
+                WordJustificationType.Center => JustificationValues.Center,
+                _ => JustificationValues.Left,
+            };
+        }
+        /// <summary>
+        /// Настройки страницы
+        /// </summary>
+        /// <returns></returns>
+        private static SectionProperties CreateSectionProperties()
+        {
+            var properties = new SectionProperties();
+            var pageSize = new PageSize
+            {
+                Orient = PageOrientationValues.Portrait
+            };
+            properties.AppendChild(pageSize);
+            return properties;
+        }
+        /// <summary>
+        /// Задание форматирования для абзаца
+        /// </summary>
+        /// <param name="paragraphProperties"></param>
+        /// <returns></returns>
+        private static ParagraphProperties? CreateParagraphProperties(WordTextProperties? paragraphProperties)
+        {
+            if (paragraphProperties == null)
+            {
+                return null;
+            }
+            var properties = new ParagraphProperties();
+            properties.AppendChild(new Justification()
+            {
+                Val = GetJustificationValues(paragraphProperties.JustificationType)
+            });
+            properties.AppendChild(new SpacingBetweenLines
+            {
+                LineRule = LineSpacingRuleValues.Auto
+            });
+            properties.AppendChild(new Indentation());
+            var paragraphMarkRunProperties = new ParagraphMarkRunProperties();
+            if (!string.IsNullOrEmpty(paragraphProperties.Size))
+            {
+                paragraphMarkRunProperties.AppendChild(new FontSize
+                {
+                    Val = paragraphProperties.Size
+                });
+            }
+            properties.AppendChild(paragraphMarkRunProperties);
+            return properties;
+        }
+        protected override void CreateWord(WordInfo info)
+        {
+            _wordDocument = WordprocessingDocument.Create(info.FileName, WordprocessingDocumentType.Document);
+            MainDocumentPart mainPart = _wordDocument.AddMainDocumentPart();
+            mainPart.Document = new Document();
+            _docBody = mainPart.Document.AppendChild(new Body());
+        }
+        protected override void CreateParagraph(WordParagraph paragraph)
+        {
+            if (_docBody == null || paragraph == null)
+            {
+                return;
+            }
+            var docParagraph = new Paragraph();
+
+            docParagraph.AppendChild(CreateParagraphProperties(paragraph.TextProperties));
+            foreach (var run in paragraph.Texts)
+            {
+                var docRun = new Run();
+                var properties = new RunProperties();
+                properties.AppendChild(new FontSize { Val = run.Item2.Size });
+                if (run.Item2.Bold)
+                {
+                    properties.AppendChild(new Bold());
+                }
+                docRun.AppendChild(properties);
+                docRun.AppendChild(new Text
+                {
+                    Text = run.Item1,
+                    Space = SpaceProcessingModeValues.Preserve
+                });
+                docParagraph.AppendChild(docRun);
+            }
+            _docBody.AppendChild(docParagraph);
+        }
+        protected override void SaveWord(WordInfo info)
+        {
+            if (_docBody == null || _wordDocument == null)
+            {
+                return;
+            }
+            _docBody.AppendChild(CreateSectionProperties());
+            _wordDocument.MainDocumentPart!.Document.Save();
+            _wordDocument.Dispose();
+        }
+
+    }
+}
diff --git a/FlowerShopBusinessLogic/ReportLogic.cs b/FlowerShopBusinessLogic/ReportLogic.cs
new file mode 100644
index 0000000..68be034
--- /dev/null
+++ b/FlowerShopBusinessLogic/ReportLogic.cs
@@ -0,0 +1,128 @@
+using FlowerShopBusinessLogic.OfficePackage.HelperModels;
+using FlowerShopBusinessLogic.OfficePackage;
+using FlowerShopContracts.BindingModels;
+using FlowerShopContracts.BusinessLogicsContracts;
+using FlowerShopContracts.SearchModels;
+using FlowerShopContracts.StoragesContracts;
+using FlowerShopContracts.ViewModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic
+{
+    public class ReportLogic : IReportLogic
+    {
+        private readonly IComponentStorage _componentStorage;
+        private readonly IFlowerStorage _flowerStorage;
+        private readonly IOrderStorage _orderStorage;
+        private readonly AbstractSaveToExcel _saveToExcel;
+        private readonly AbstractSaveToWord _saveToWord;
+        private readonly AbstractSaveToPdf _saveToPdf;
+        public ReportLogic(IFlowerStorage flowerStorage, IComponentStorage
+       componentStorage, IOrderStorage orderStorage,
+        AbstractSaveToExcel saveToExcel, AbstractSaveToWord saveToWord,
+       AbstractSaveToPdf saveToPdf)
+        {
+            _flowerStorage = flowerStorage;
+            _componentStorage = componentStorage;
+            _orderStorage = orderStorage;
+            _saveToExcel = saveToExcel;
+            _saveToWord = saveToWord;
+            _saveToPdf = saveToPdf;
+        }
+        /// <summary>
+        /// Получение списка компонент с указанием, в каких изделиях используются
+        /// </summary>
+        /// <returns></returns>
+        public List<ReportFlowerComponentViewModel> GetFlowerComponent()
+        {
+            var flowers = _flowerStorage.GetFullList();
+            var list = new List<ReportFlowerComponentViewModel>();
+            foreach (var flower in flowers)
+            {
+                var record = new ReportFlowerComponentViewModel
+                {
+                    FlowerName = flower.FlowerName,
+                    Components = new List<Tuple<string, int>>(),
+                    TotalCount = 0
+                };
+                foreach (var component in flower.FlowerComponents)
+                {
+                    record.Components.Add(new Tuple<string,
+                       int>(component.Value.Item1.ComponentName, component.Value.Item2));
+                    record.TotalCount +=
+                   component.Value.Item2;
+                }
+                list.Add(record);
+            }
+            return list;
+        }
+        /// <summary>
+        /// Получение списка заказов за определенный период
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        public List<ReportOrdersViewModel> GetOrders(ReportBindingModel model)
+        {
+            return _orderStorage.GetFilteredList(new OrderSearchModel
+            {
+                DateFrom
+                = model.DateFrom,
+                DateTo = model.DateTo
+            })
+            .Select(x => new ReportOrdersViewModel
+            {
+                Id = x.Id,
+                DateCreate = x.DateCreate,
+                FlowerName = x.FlowerName,
+                OrderStatus = x.Status.ToString(),
+                Sum = x.Sum
+            })
+           .ToList();
+        }
+        /// <summary>
+        /// Сохранение компонент в файл-Word
+        /// </summary>
+        /// <param name="model"></param>
+        public void SaveComponentsToWordFile(ReportBindingModel model)
+        {
+            _saveToWord.CreateDoc(new WordInfo
+            {
+                FileName = model.FileName,
+                Title = "Список цветов",
+                Flowers = _flowerStorage.GetFullList()
+            });
+        }
+        /// <summary>
+        /// Сохранение компонент с указаеним продуктов в файл-Excel
+        /// </summary>
+        /// <param name="model"></param>
+        public void SaveFlowerComponentToExcelFile(ReportBindingModel model)
+        {
+            _saveToExcel.CreateReport(new ExcelInfo
+            {
+                FileName = model.FileName,
+                Title = "Список компонентов",
+                FlowerComponents = GetFlowerComponent()
+            });
+        }
+        /// <summary>
+        /// Сохранение заказов в файл-Pdf
+        /// </summary>
+        /// <param name="model"></param>
+        public void SaveOrdersToPdfFile(ReportBindingModel model)
+        {
+            _saveToPdf.CreateDoc(new PdfInfo
+            {
+                FileName = model.FileName,
+                Title = "Список заказов",
+                DateFrom = model.DateFrom!.Value,
+                DateTo = model.DateTo!.Value,
+                Orders = GetOrders(model)
+            });
+        }
+    }
+}
diff --git a/FlowerShopContracts/BindingModels/ReportBindingModel.cs b/FlowerShopContracts/BindingModels/ReportBindingModel.cs
new file mode 100644
index 0000000..b0f9795
--- /dev/null
+++ b/FlowerShopContracts/BindingModels/ReportBindingModel.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopContracts.BindingModels
+{
+    public class ReportBindingModel
+    {
+        public string FileName { get; set; } = string.Empty;
+        public DateTime? DateFrom { get; set; }
+        public DateTime? DateTo { get; set; }
+    }
+}
diff --git a/FlowerShopContracts/BusinessLogicsContracts/IReportLogic.cs b/FlowerShopContracts/BusinessLogicsContracts/IReportLogic.cs
new file mode 100644
index 0000000..0b68630
--- /dev/null
+++ b/FlowerShopContracts/BusinessLogicsContracts/IReportLogic.cs
@@ -0,0 +1,40 @@
+using FlowerShopContracts.BindingModels;
+using FlowerShopContracts.ViewModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopContracts.BusinessLogicsContracts
+{
+    public interface IReportLogic
+    {
+        /// <summary>
+        /// Получение списка компонент с указанием, в каких изделиях используются
+        /// </summary>
+        /// <returns></returns>
+        List<ReportFlowerComponentViewModel> GetFlowerComponent();
+        /// <summary>
+        /// Получение списка заказов за определенный период
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        List<ReportOrdersViewModel> GetOrders(ReportBindingModel model);
+        /// <summary>
+        /// Сохранение компонент в файл-Word
+        /// </summary>
+        /// <param name="model"></param>
+        void SaveComponentsToWordFile(ReportBindingModel model);
+        /// <summary>
+        /// Сохранение компонент с указаеним продуктов в файл-Excel
+        /// </summary>
+        /// <param name="model"></param>
+        void SaveFlowerComponentToExcelFile(ReportBindingModel model);
+        /// <summary>
+        /// Сохранение заказов в файл-Pdf
+        /// </summary>
+        /// <param name="model"></param>
+        void SaveOrdersToPdfFile(ReportBindingModel model);
+    }
+}
diff --git a/FlowerShopContracts/SearchModels/OrderSearchModel.cs b/FlowerShopContracts/SearchModels/OrderSearchModel.cs
index 5b569de..c8cd5d3 100644
--- a/FlowerShopContracts/SearchModels/OrderSearchModel.cs
+++ b/FlowerShopContracts/SearchModels/OrderSearchModel.cs
@@ -9,5 +9,7 @@ namespace FlowerShopContracts.SearchModels
     public class OrderSearchModel
     {
         public int? Id { get; set; }
+        public DateTime? DateFrom { get; set; }
+        public DateTime? DateTo { get; set; }
     }
 }
diff --git a/FlowerShopContracts/ViewModels/ReportFlowerComponentViewModel.cs b/FlowerShopContracts/ViewModels/ReportFlowerComponentViewModel.cs
new file mode 100644
index 0000000..895e6e3
--- /dev/null
+++ b/FlowerShopContracts/ViewModels/ReportFlowerComponentViewModel.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopContracts.ViewModels
+{
+    public class ReportFlowerComponentViewModel
+    {
+        public string FlowerName { get; set; } = string.Empty;
+        public int TotalCount { get; set; }
+        public List<Tuple<string, int>> Components { get; set; } = new();
+    }
+}
diff --git a/FlowerShopContracts/ViewModels/ReportOrdersViewModel.cs b/FlowerShopContracts/ViewModels/ReportOrdersViewModel.cs
new file mode 100644
index 0000000..02ce353
--- /dev/null
+++ b/FlowerShopContracts/ViewModels/ReportOrdersViewModel.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopContracts.ViewModels
+{
+    public class ReportOrdersViewModel
+    {
+        public int Id { get; set; }
+        public DateTime DateCreate { get; set; }
+        public string FlowerName { get; set; } = string.Empty;
+        public string OrderStatus { get; set; } = string.Empty;
+        public double Sum { get; set; }
+    }
+
+}
diff --git a/FlowerShopDatabaseImplement/Order.cs b/FlowerShopDatabaseImplement/Order.cs
index 66b3063..dc5f0b8 100644
--- a/FlowerShopDatabaseImplement/Order.cs
+++ b/FlowerShopDatabaseImplement/Order.cs
@@ -11,7 +11,7 @@ using System.Text;
 using System.Threading.Tasks;
 using FlowerShopDataModels.Enums;
 
-namespace FlowerShopDatabaseImplement
+namespace FlowerShopDatabaseImplement.Models
 {
     public class Order : IOrderModel
     {
@@ -27,7 +27,7 @@ namespace FlowerShopDatabaseImplement
         public DateTime? DateImplement { get; private set; }
         [Required]
         public int FlowerId { get; private set; }
-
+        public virtual Flower? Flower { get; set; }
         public static Order? Create(OrderBindingModel model)
         {
             if (model == null)
@@ -64,6 +64,7 @@ namespace FlowerShopDatabaseImplement
             Status = Status,
             DateCreate = DateCreate,
             DateImplement = DateImplement,
+            FlowerName = Flower?.FlowerName ?? String.Empty,
             Id = Id,
         };
 
diff --git a/FlowerShopDatabaseImplement/OrderStorage.cs b/FlowerShopDatabaseImplement/OrderStorage.cs
index 6e7996b..e510260 100644
--- a/FlowerShopDatabaseImplement/OrderStorage.cs
+++ b/FlowerShopDatabaseImplement/OrderStorage.cs
@@ -18,20 +18,20 @@ namespace FlowerShopDatabaseImplement.Implements
         public List<OrderViewModel> GetFullList()
         {
             using var context = new FlowerShopDataBase();
-            return context.Orders
-            .Select(x => AccessFlowerStorage(x.GetViewModel))
+            return context.Orders.Include(x => x.Flower)
+            .Select(x => x.GetViewModel)
            .ToList();
         }
         public List<OrderViewModel> GetFilteredList(OrderSearchModel model)
         {
-            if (!model.Id.HasValue)
-            {
-                return new();
-            }
+         
+  
             using var context = new FlowerShopDataBase();
-            return context.Orders
-            .Where(x => x.Id == model.Id)
-           .Select(x => AccessFlowerStorage(x.GetViewModel))
+            return context.Orders.Include(x => x.Flower)
+            .Where(x => ((!model.Id.HasValue || x.Id == model.Id) &&
+                        (!model.DateFrom.HasValue || x.DateCreate >= model.DateFrom) &&
+                        (!model.DateTo.HasValue || x.DateCreate <= model.DateTo)))
+           .Select(x => x.GetViewModel)
            .ToList();
         }
         public OrderViewModel? GetElement(OrderSearchModel model)
@@ -41,7 +41,7 @@ namespace FlowerShopDatabaseImplement.Implements
                 return null;
             }
             using var context = new FlowerShopDataBase();
-            return AccessFlowerStorage(context.Orders.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel);
+            return context.Orders.Include(x => x.Flower).FirstOrDefault(x => x.Id == model.Id)?.GetViewModel;
         }
         public OrderViewModel? Insert(OrderBindingModel model)
         {
@@ -53,12 +53,12 @@ namespace FlowerShopDatabaseImplement.Implements
             using var context = new FlowerShopDataBase();
             context.Orders.Add(newOrder);
             context.SaveChanges();
-            return AccessFlowerStorage(newOrder.GetViewModel);
+            return newOrder.GetViewModel;
         }
         public OrderViewModel? Update(OrderBindingModel model)
         {
             using var context = new FlowerShopDataBase();
-            var order = context.Orders.FirstOrDefault(x => x.Id ==
+            var order = context.Orders.Include(x => x.Flower).FirstOrDefault(x => x.Id ==
            model.Id);
             if (order == null)
             {
@@ -66,36 +66,20 @@ namespace FlowerShopDatabaseImplement.Implements
             }
             order.Update(model);
             context.SaveChanges();
-            return AccessFlowerStorage(order.GetViewModel);
+            return order.GetViewModel;
         }
         public OrderViewModel? Delete(OrderBindingModel model)
         {
             using var context = new FlowerShopDataBase();
-            var element = context.Orders.FirstOrDefault(rec => rec.Id ==
+            var element = context.Orders.Include(x => x.Flower).FirstOrDefault(rec => rec.Id ==
            model.Id);
             if (element != null)
             {
                 context.Orders.Remove(element);
                 context.SaveChanges();
-                return AccessFlowerStorage(element.GetViewModel);
+                return element.GetViewModel;
             }
             return null;
         }
-
-        public static OrderViewModel AccessFlowerStorage(OrderViewModel model)
-        {
-            if (model == null)
-                return null;
-            using var context = new FlowerShopDataBase();
-            foreach (var flower in context.Flowers)
-            {
-                if (flower.Id == model.FlowerId)
-                {
-                    model.FlowerName = flower.FlowerName;
-                    break;
-                }
-            }
-            return model;
-        }
     }
 }
diff --git a/FlowerShopFileImplement/OrderStorage.cs b/FlowerShopFileImplement/OrderStorage.cs
index 65a5196..3419e98 100644
--- a/FlowerShopFileImplement/OrderStorage.cs
+++ b/FlowerShopFileImplement/OrderStorage.cs
@@ -34,7 +34,9 @@ namespace FlowerShopFileImplement.Implements
                 return new();
             }
             return source.Orders
-               .Where(x => x.Id == model.Id)
+               .Where(x => ((!model.Id.HasValue || x.Id == model.Id) &&
+                        (!model.DateFrom.HasValue || x.DateCreate >= model.DateFrom) &&
+                        (!model.DateTo.HasValue || x.DateCreate <= model.DateTo)))
                .Select(x => AccessFlowerStorage(x.GetViewModel))
                .ToList();
         }
diff --git a/FlowerShopListImplement/OrderStorage.cs b/FlowerShopListImplement/OrderStorage.cs
index 4e2d6e7..8a06835 100644
--- a/FlowerShopListImplement/OrderStorage.cs
+++ b/FlowerShopListImplement/OrderStorage.cs
@@ -37,7 +37,7 @@ namespace FlowerShopListImplement.Implements
             }
             foreach (var order in _source.Orders)
             {
-                if (order.Id == model.Id)
+                if (order.Id == model.Id && model.DateFrom <= order.DateCreate && model.DateTo >= order.DateCreate)
                 {
                     result.Add(AccessFlowerStorage(order.GetViewModel));
                 }
diff --git a/ProjectFlowerShop/FormReportFlowerComponent.Designer.cs b/ProjectFlowerShop/FormReportFlowerComponent.Designer.cs
new file mode 100644
index 0000000..72886e0
--- /dev/null
+++ b/ProjectFlowerShop/FormReportFlowerComponent.Designer.cs
@@ -0,0 +1,103 @@
+namespace ProjectFlowerShop
+{
+    partial class FormReportFlowerComponent
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            buttonSaveToExcel = new Button();
+            dataGridView = new DataGridView();
+            Flowerr = new DataGridViewTextBoxColumn();
+            Component = new DataGridViewTextBoxColumn();
+            Count = new DataGridViewTextBoxColumn();
+            ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
+            SuspendLayout();
+            // 
+            // buttonSaveToExcel
+            // 
+            buttonSaveToExcel.Location = new Point(12, 21);
+            buttonSaveToExcel.Name = "buttonSaveToExcel";
+            buttonSaveToExcel.Size = new Size(207, 29);
+            buttonSaveToExcel.TabIndex = 0;
+            buttonSaveToExcel.Text = "Сохранить в Excel";
+            buttonSaveToExcel.UseVisualStyleBackColor = true;
+            buttonSaveToExcel.Click += buttonSaveToExcel_Click;
+            // 
+            // dataGridView
+            // 
+            dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            dataGridView.Columns.AddRange(new DataGridViewColumn[] { Flowerr, Component, Count });
+            dataGridView.Location = new Point(12, 65);
+            dataGridView.Name = "dataGridView";
+            dataGridView.RowHeadersWidth = 51;
+            dataGridView.RowTemplate.Height = 29;
+            dataGridView.Size = new Size(812, 359);
+            dataGridView.TabIndex = 1;
+            // 
+            // Flowerr
+            // 
+            Flowerr.HeaderText = "Цветок";
+            Flowerr.MinimumWidth = 6;
+            Flowerr.Name = "Flowerr";
+            Flowerr.Width = 250;
+            // 
+            // Component
+            // 
+            Component.HeaderText = "Компонент";
+            Component.MinimumWidth = 6;
+            Component.Name = "Component";
+            Component.Width = 250;
+            // 
+            // Count
+            // 
+            Count.HeaderText = "Количество";
+            Count.MinimumWidth = 6;
+            Count.Name = "Count";
+            Count.Width = 250;
+            // 
+            // FormReportFlowerComponent
+            // 
+            AutoScaleDimensions = new SizeF(8F, 20F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(836, 450);
+            Controls.Add(dataGridView);
+            Controls.Add(buttonSaveToExcel);
+            Name = "FormReportFlowerComponent";
+            Text = "Компоненты цветов";
+            Load += FormReportFlowerComponent_Load;
+            ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit();
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private Button buttonSaveToExcel;
+        private DataGridView dataGridView;
+        private DataGridViewTextBoxColumn Flowerr;
+        private DataGridViewTextBoxColumn Component;
+        private DataGridViewTextBoxColumn Count;
+    }
+}
\ No newline at end of file
diff --git a/ProjectFlowerShop/FormReportFlowerComponent.cs b/ProjectFlowerShop/FormReportFlowerComponent.cs
new file mode 100644
index 0000000..b00888c
--- /dev/null
+++ b/ProjectFlowerShop/FormReportFlowerComponent.cs
@@ -0,0 +1,88 @@
+using FlowerShopContracts.BusinessLogicsContracts;
+using FlowerShopContracts.BindingModels;
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Microsoft.Extensions.Logging;
+
+
+namespace ProjectFlowerShop
+{
+    public partial class FormReportFlowerComponent : Form
+    {
+        private readonly ILogger _logger;
+        private readonly IReportLogic _logic;
+
+        public FormReportFlowerComponent(ILogger<FormReportFlowerComponent> logger, IReportLogic logic)
+        {
+            InitializeComponent();
+            _logger = logger;
+            _logic = logic;
+        }
+
+        private void buttonSaveToExcel_Click(object sender, EventArgs e)
+        {
+            using var dialog = new SaveFileDialog
+            {
+                Filter = "xlsx|*.xlsx"
+            };
+            if (dialog.ShowDialog() == DialogResult.OK)
+            {
+                try
+                {
+                    _logic.SaveFlowerComponentToExcelFile(new ReportBindingModel
+                    {
+                        FileName = dialog.FileName
+                    });
+                    _logger.LogInformation("Сохранение списка изделий по компонентам");
+
+                    MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK,
+                   MessageBoxIcon.Information);
+                }
+                catch (Exception ex)
+                {
+                    _logger.LogError(ex, "Ошибка сохранения списка изделий по компонентам");
+
+                    MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
+                   MessageBoxIcon.Error);
+                }
+            }
+        }
+
+        private void FormReportFlowerComponent_Load(object sender, EventArgs e)
+        {
+            try
+            {
+                var dict = _logic.GetFlowerComponent();
+                if (dict != null)
+                {
+                    dataGridView.Rows.Clear();
+                    foreach (var elem in dict)
+                    {
+                        dataGridView.Rows.Add(new object[] { elem.FlowerName, "", "" });
+                        foreach (var listElem in elem.Components)
+                        {
+                            dataGridView.Rows.Add(new object[] { "", listElem.Item1, listElem.Item2 });
+                        }
+                        dataGridView.Rows.Add(new object[] { "Итого", "", elem.TotalCount });
+                        dataGridView.Rows.Add(Array.Empty<object>());
+                    }
+                }
+                _logger.LogInformation("Загрузка списка изделий по компонентам");
+            }
+            catch (Exception ex)
+            {
+                _logger.LogError(ex, "Ошибка загрузки списка изделий по компонентам");
+                MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
+                MessageBoxIcon.Error);
+            }
+        }
+    }
+}
diff --git a/ProjectFlowerShop/FormReportFlowerComponent.resx b/ProjectFlowerShop/FormReportFlowerComponent.resx
new file mode 100644
index 0000000..75ff82b
--- /dev/null
+++ b/ProjectFlowerShop/FormReportFlowerComponent.resx
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="Flowerr.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Component.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Count.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+</root>
\ No newline at end of file
diff --git a/ProjectFlowerShop/FormReportOrders.Designer.cs b/ProjectFlowerShop/FormReportOrders.Designer.cs
new file mode 100644
index 0000000..79ddb6f
--- /dev/null
+++ b/ProjectFlowerShop/FormReportOrders.Designer.cs
@@ -0,0 +1,139 @@
+namespace ProjectFlowerShop
+{
+    partial class FormReportOrders
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            dateTimePickerFrom = new DateTimePicker();
+            dateTimePickerTo = new DateTimePicker();
+            labelS = new Label();
+            labelPo = new Label();
+            buttonMake = new Button();
+            buttonToPdf = new Button();
+            panel = new Panel();
+            panel1 = new Panel();
+            panel.SuspendLayout();
+            SuspendLayout();
+            // 
+            // dateTimePickerFrom
+            // 
+            dateTimePickerFrom.Location = new Point(48, 15);
+            dateTimePickerFrom.Name = "dateTimePickerFrom";
+            dateTimePickerFrom.Size = new Size(250, 27);
+            dateTimePickerFrom.TabIndex = 0;
+            // 
+            // dateTimePickerTo
+            // 
+            dateTimePickerTo.Location = new Point(359, 15);
+            dateTimePickerTo.Name = "dateTimePickerTo";
+            dateTimePickerTo.Size = new Size(250, 27);
+            dateTimePickerTo.TabIndex = 1;
+            // 
+            // labelS
+            // 
+            labelS.AutoSize = true;
+            labelS.Location = new Point(8, 20);
+            labelS.Name = "labelS";
+            labelS.Size = new Size(18, 20);
+            labelS.TabIndex = 2;
+            labelS.Text = "С";
+            // 
+            // labelPo
+            // 
+            labelPo.AutoSize = true;
+            labelPo.Location = new Point(315, 22);
+            labelPo.Name = "labelPo";
+            labelPo.Size = new Size(29, 20);
+            labelPo.TabIndex = 3;
+            labelPo.Text = "По";
+            // 
+            // buttonMake
+            // 
+            buttonMake.Location = new Point(637, 13);
+            buttonMake.Name = "buttonMake";
+            buttonMake.Size = new Size(139, 29);
+            buttonMake.TabIndex = 4;
+            buttonMake.Text = "Сформировать";
+            buttonMake.UseVisualStyleBackColor = true;
+            buttonMake.Click += buttonMake_Click;
+            // 
+            // buttonToPdf
+            // 
+            buttonToPdf.Location = new Point(1050, 11);
+            buttonToPdf.Name = "buttonToPdf";
+            buttonToPdf.Size = new Size(94, 29);
+            buttonToPdf.TabIndex = 5;
+            buttonToPdf.Text = "В ПДФ";
+            buttonToPdf.UseVisualStyleBackColor = true;
+            buttonToPdf.Click += buttonToPdf_Click;
+            // 
+            // panel
+            // 
+            panel.Controls.Add(dateTimePickerFrom);
+            panel.Controls.Add(buttonToPdf);
+            panel.Controls.Add(labelS);
+            panel.Controls.Add(buttonMake);
+            panel.Controls.Add(dateTimePickerTo);
+            panel.Controls.Add(labelPo);
+            panel.Location = new Point(12, 2);
+            panel.Name = "panel";
+            panel.Size = new Size(1160, 56);
+            panel.TabIndex = 6;
+            // 
+            // panel1
+            // 
+            panel1.Location = new Point(15, 69);
+            panel1.Name = "panel1";
+            panel1.Size = new Size(1158, 479);
+            panel1.TabIndex = 7;
+            // 
+            // FormReportOrders
+            // 
+            AutoScaleDimensions = new SizeF(8F, 20F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(1184, 567);
+            Controls.Add(panel1);
+            Controls.Add(panel);
+            Name = "FormReportOrders";
+            Text = "Отчет по заказам";
+            panel.ResumeLayout(false);
+            panel.PerformLayout();
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private DateTimePicker dateTimePickerFrom;
+        private DateTimePicker dateTimePickerTo;
+        private Label labelS;
+        private Label labelPo;
+        private Button buttonMake;
+        private Button buttonToPdf;
+        private Panel panel;
+        private Panel panel1;
+    }
+}
\ No newline at end of file
diff --git a/ProjectFlowerShop/FormReportOrders.cs b/ProjectFlowerShop/FormReportOrders.cs
new file mode 100644
index 0000000..d04d75f
--- /dev/null
+++ b/ProjectFlowerShop/FormReportOrders.cs
@@ -0,0 +1,103 @@
+using FlowerShopContracts.BindingModels;
+using FlowerShopContracts.BusinessLogicsContracts;
+using Microsoft.Extensions.Logging;
+using Microsoft.Reporting.WinForms;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ProjectFlowerShop
+{
+    public partial class FormReportOrders : Form
+    {
+        private readonly ReportViewer reportViewer;
+        private readonly ILogger _logger;
+        private readonly IReportLogic _logic;
+        public FormReportOrders(ILogger<FormReportOrders> logger, IReportLogic logic)
+        {
+            InitializeComponent();
+            _logger = logger;
+            _logic = logic;
+            reportViewer = new ReportViewer
+            {
+                Dock = DockStyle.Fill
+            };
+            panel1.Controls.Add(reportViewer);
+            reportViewer.LocalReport.LoadReportDefinition(new FileStream("ReportOrders.rdlc", FileMode.Open));
+
+        }
+
+        private void buttonMake_Click(object sender, EventArgs e)
+        {
+            if (dateTimePickerFrom.Value.Date >= dateTimePickerTo.Value.Date)
+            {
+                MessageBox.Show("Дата начала должна быть меньше даты окончания",
+               "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                return;
+            }
+            try
+            {
+                var dataSource = _logic.GetOrders(new ReportBindingModel
+                {
+                    DateFrom = dateTimePickerFrom.Value,
+                    DateTo = dateTimePickerTo.Value
+                });
+                var source = new ReportDataSource("DataSetOrders", dataSource);
+                reportViewer.LocalReport.DataSources.Clear();
+                reportViewer.LocalReport.DataSources.Add(source);
+                var parameters = new[] { new ReportParameter("ReportParameterPeriod", $"c {dateTimePickerFrom.Value.ToShortDateString()} по {dateTimePickerTo.Value.ToShortDateString()}") }; reportViewer.LocalReport.SetParameters(parameters);
+                reportViewer.RefreshReport();
+                _logger.LogInformation("Загрузка списка заказов на период {From}-{ To}", dateTimePickerFrom.Value.ToShortDateString(),
+           dateTimePickerTo.Value.ToShortDateString());
+            }
+            catch (Exception ex)
+            {
+                _logger.LogError(ex, "Ошибка загрузки списка заказов на период");
+                MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
+               MessageBoxIcon.Error);
+            }
+        }
+
+        private void buttonToPdf_Click(object sender, EventArgs e)
+        {
+            if (dateTimePickerFrom.Value.Date >= dateTimePickerTo.Value.Date)
+            {
+                MessageBox.Show("Дата начала должна быть меньше даты окончания",
+               "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                return;
+            }
+            using var dialog = new SaveFileDialog
+            {
+                Filter = "pdf|*.pdf"
+            };
+            if (dialog.ShowDialog() == DialogResult.OK)
+            {
+                try
+                {
+                    _logic.SaveOrdersToPdfFile(new ReportBindingModel
+                    {
+                        FileName = dialog.FileName,
+                        DateFrom = dateTimePickerFrom.Value,
+                        DateTo = dateTimePickerTo.Value
+                    });
+                    _logger.LogInformation("Сохранение списка заказов на период { From} -{ To}", dateTimePickerFrom.Value.ToShortDateString(), dateTimePickerTo.Value.ToShortDateString());
+                    MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK,
+                   MessageBoxIcon.Information);
+                }
+                catch (Exception ex)
+                {
+                    _logger.LogError(ex, "Ошибка сохранения списка заказов на период");
+
+                    MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
+                   MessageBoxIcon.Error);
+                }
+            }
+        }
+    }
+}
diff --git a/ProjectFlowerShop/FormReportOrders.resx b/ProjectFlowerShop/FormReportOrders.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/ProjectFlowerShop/FormReportOrders.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/ProjectFlowerShop/MainForm.Designer.cs b/ProjectFlowerShop/MainForm.Designer.cs
index 2b21f90..0a9dee0 100644
--- a/ProjectFlowerShop/MainForm.Designer.cs
+++ b/ProjectFlowerShop/MainForm.Designer.cs
@@ -32,6 +32,10 @@
             ToolStripMenu = new ToolStripMenuItem();
             КомпонентыStripMenuItem = new ToolStripMenuItem();
             ЦветыStripMenuItem = new ToolStripMenuItem();
+            отчетыToolStripMenuItem = new ToolStripMenuItem();
+            списокКомпонентовToolStripMenuItem = new ToolStripMenuItem();
+            компонентыToolStripMenuItem = new ToolStripMenuItem();
+            списокЗаказовToolStripMenuItem = new ToolStripMenuItem();
             DataGridView = new DataGridView();
             CreateOrderButton = new Button();
             TakeInWorkButton = new Button();
@@ -45,7 +49,7 @@
             // menuStrip1
             // 
             menuStrip1.ImageScalingSize = new Size(20, 20);
-            menuStrip1.Items.AddRange(new ToolStripItem[] { ToolStripMenu });
+            menuStrip1.Items.AddRange(new ToolStripItem[] { ToolStripMenu, отчетыToolStripMenuItem });
             menuStrip1.Location = new Point(0, 0);
             menuStrip1.Name = "menuStrip1";
             menuStrip1.Size = new Size(1296, 28);
@@ -73,6 +77,34 @@
             ЦветыStripMenuItem.Text = "Цветы";
             ЦветыStripMenuItem.Click += ЦветыStripMenuItem_Click;
             // 
+            // отчетыToolStripMenuItem
+            // 
+            отчетыToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { списокКомпонентовToolStripMenuItem, компонентыToolStripMenuItem, списокЗаказовToolStripMenuItem });
+            отчетыToolStripMenuItem.Name = "отчетыToolStripMenuItem";
+            отчетыToolStripMenuItem.Size = new Size(73, 24);
+            отчетыToolStripMenuItem.Text = "Отчеты";
+            // 
+            // списокКомпонентовToolStripMenuItem
+            // 
+            списокКомпонентовToolStripMenuItem.Name = "списокКомпонентовToolStripMenuItem";
+            списокКомпонентовToolStripMenuItem.Size = new Size(280, 26);
+            списокКомпонентовToolStripMenuItem.Text = "Список компонентов";
+            списокКомпонентовToolStripMenuItem.Click += списокКомпонентовToolStripMenuItem_Click;
+            // 
+            // компонентыToolStripMenuItem
+            // 
+            компонентыToolStripMenuItem.Name = "компонентыToolStripMenuItem";
+            компонентыToolStripMenuItem.Size = new Size(280, 26);
+            компонентыToolStripMenuItem.Text = "Компоненты по изделиям ";
+            компонентыToolStripMenuItem.Click += компонентыToolStripMenuItem_Click;
+            // 
+            // списокЗаказовToolStripMenuItem
+            // 
+            списокЗаказовToolStripMenuItem.Name = "списокЗаказовToolStripMenuItem";
+            списокЗаказовToolStripMenuItem.Size = new Size(280, 26);
+            списокЗаказовToolStripMenuItem.Text = "Список заказов";
+            списокЗаказовToolStripMenuItem.Click += списокЗаказовToolStripMenuItem_Click;
+            // 
             // DataGridView
             // 
             DataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
@@ -167,5 +199,9 @@
         private Button ReadyButton;
         private Button IssuedButton;
         private Button RefreshButton;
+        private ToolStripMenuItem отчетыToolStripMenuItem;
+        private ToolStripMenuItem списокКомпонентовToolStripMenuItem;
+        private ToolStripMenuItem компонентыToolStripMenuItem;
+        private ToolStripMenuItem списокЗаказовToolStripMenuItem;
     }
 }
\ No newline at end of file
diff --git a/ProjectFlowerShop/MainForm.cs b/ProjectFlowerShop/MainForm.cs
index 13fab38..f7f2661 100644
--- a/ProjectFlowerShop/MainForm.cs
+++ b/ProjectFlowerShop/MainForm.cs
@@ -1,4 +1,5 @@
-using FlowerShopContracts.BindingModels;
+using FlowerShopBusinessLogic;
+using FlowerShopContracts.BindingModels;
 using FlowerShopContracts.BusinessLogicsContracts;
 using FlowerShopDataModels;
 using FlowerShopDataModels.Enums;
@@ -20,11 +21,13 @@ namespace ProjectFlowerShop
     {
         private readonly ILogger _logger;
         private readonly IOrderLogic _orderLogic;
-        public MainForm(ILogger<MainForm> logger, IOrderLogic orderLogic)
+        private readonly IReportLogic _reportLogic;
+        public MainForm(ILogger<MainForm> logger, IOrderLogic orderLogic, IReportLogic reportLogic)
         {
             InitializeComponent();
             _logger = logger;
             _orderLogic = orderLogic;
+            _reportLogic = reportLogic;
         }
 
         private void КомпонентыStripMenuItem_Click(object sender, EventArgs e)
@@ -179,5 +182,38 @@ namespace ProjectFlowerShop
         {
             LoadData();
         }
+
+        private void списокКомпонентовToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            using var dialog = new SaveFileDialog { Filter = "docx|*.docx" };
+            if (dialog.ShowDialog() == DialogResult.OK)
+            {
+                _reportLogic.SaveComponentsToWordFile(new ReportBindingModel
+                {
+                    FileName = dialog.FileName
+                });
+                MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK,
+               MessageBoxIcon.Information);
+            }
+        }
+
+        private void компонентыToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            var service = Program.ServiceProvider?.GetService(typeof(FormReportFlowerComponent));
+            if (service is FormReportFlowerComponent form)
+            {
+                form.ShowDialog();
+            }
+
+        }
+
+        private void списокЗаказовToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            var service = Program.ServiceProvider?.GetService(typeof(FormReportOrders));
+            if (service is FormReportOrders form)
+            {
+                form.ShowDialog();
+            }
+        }
     }
 }
diff --git a/ProjectFlowerShop/Program.cs b/ProjectFlowerShop/Program.cs
index 8ed9b73..cbca06d 100644
--- a/ProjectFlowerShop/Program.cs
+++ b/ProjectFlowerShop/Program.cs
@@ -8,6 +8,9 @@ using Microsoft.Extensions.Logging;
 using NLog.Extensions.Logging;
 using System;
 using System.Drawing;
+using FlowerShopBusinessLogic;
+using FlowerShopBusinessLogic.OfficePackage.Implements;
+using FlowerShopBusinessLogic.OfficePackage;
 
 namespace ProjectFlowerShop
 {
@@ -40,6 +43,7 @@ namespace ProjectFlowerShop
             services.AddTransient<IComponentLogic, ComponentLogic>();
             services.AddTransient<IOrderLogic, OrderLogic>();
             services.AddTransient<IFlowerLogic, FlowerLogic>();
+            services.AddTransient<IReportLogic, ReportLogic>();
             services.AddTransient<MainForm>();
             services.AddTransient<ComponentForm>();
             services.AddTransient<FormComponents>();
@@ -47,6 +51,11 @@ namespace ProjectFlowerShop
             services.AddTransient<FormFlower>();
             services.AddTransient<FormFlowerComponent>();
             services.AddTransient<FormFlowers>();
+            services.AddTransient<FormReportFlowerComponent>();
+            services.AddTransient<FormReportOrders>();
+            services.AddTransient<AbstractSaveToExcel, SaveToExcel>();
+            services.AddTransient<AbstractSaveToWord, SaveToWord>();
+            services.AddTransient<AbstractSaveToPdf, SaveToPdf>();
         }
 
     }
diff --git a/ProjectFlowerShop/ProjectFlowerShop.csproj b/ProjectFlowerShop/ProjectFlowerShop.csproj
index 5116ff2..2d7d1c5 100644
--- a/ProjectFlowerShop/ProjectFlowerShop.csproj
+++ b/ProjectFlowerShop/ProjectFlowerShop.csproj
@@ -9,12 +9,15 @@
   </PropertyGroup>
 
   <ItemGroup>
+    <PackageReference Include="DocumentFormat.OpenXml" Version="3.0.2" />
     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.0">
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
     </PackageReference>
     <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
     <PackageReference Include="NLog.Extensions.Logging" Version="5.3.8" />
+    <PackageReference Include="PdfSharp.MigraDoc.Standard" Version="1.51.15" />
+    <PackageReference Include="ReportViewerCore.WinForms" Version="15.1.19" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/ProjectFlowerShop/ReportOrders.rdlc b/ProjectFlowerShop/ReportOrders.rdlc
new file mode 100644
index 0000000..967bf8c
--- /dev/null
+++ b/ProjectFlowerShop/ReportOrders.rdlc
@@ -0,0 +1,599 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
+  <AutoRefresh>0</AutoRefresh>
+  <DataSources>
+    <DataSource Name="FlowerShopContractsViewModels">
+      <ConnectionProperties>
+        <DataProvider>System.Data.DataSet</DataProvider>
+        <ConnectString>/* Local Connection */</ConnectString>
+      </ConnectionProperties>
+      <rd:DataSourceID>47cb53f0-7dde-4717-ba03-866a0bc4f4dd</rd:DataSourceID>
+    </DataSource>
+  </DataSources>
+  <DataSets>
+    <DataSet Name="DataSetOrders">
+      <Query>
+        <DataSourceName>FlowerShopContractsViewModels</DataSourceName>
+        <CommandText>/* Local Query */</CommandText>
+      </Query>
+      <Fields>
+        <Field Name="Id">
+          <DataField>Id</DataField>
+          <rd:TypeName>System.Int32</rd:TypeName>
+        </Field>
+        <Field Name="DateCreate">
+          <DataField>DateCreate</DataField>
+          <rd:TypeName>System.DateTime</rd:TypeName>
+        </Field>
+        <Field Name="FlowerName">
+          <DataField>FlowerName</DataField>
+          <rd:TypeName>System.String</rd:TypeName>
+        </Field>
+        <Field Name="Sum">
+          <DataField>Sum</DataField>
+          <rd:TypeName>System.Decimal</rd:TypeName>
+        </Field>
+        <Field Name="OrderStatus">
+          <DataField>OrderStatus</DataField>
+          <rd:TypeName>FlowerShopDataModels.OrderStatus</rd:TypeName>
+        </Field>
+      </Fields>
+      <rd:DataSetInfo>
+        <rd:DataSetName>FlowerShopContracts.ViewModels</rd:DataSetName>
+        <rd:TableName>ReportOrderViewModel</rd:TableName>
+        <rd:ObjectDataSourceType>FlowerShopContracts.ViewModels.ReportOrderViewModel, FlowerShopContracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</rd:ObjectDataSourceType>
+      </rd:DataSetInfo>
+    </DataSet>
+  </DataSets>
+  <ReportSections>
+    <ReportSection>
+      <Body>
+        <ReportItems>
+          <Textbox Name="ReportParameterPeriod">
+            <CanGrow>true</CanGrow>
+            <KeepTogether>true</KeepTogether>
+            <Paragraphs>
+              <Paragraph>
+                <TextRuns>
+                  <TextRun>
+                    <Value>=Parameters!ReportParameterPeriod.Value</Value>
+                    <Style>
+                      <FontSize>14pt</FontSize>
+                      <FontWeight>Bold</FontWeight>
+                    </Style>
+                  </TextRun>
+                </TextRuns>
+                <Style>
+                  <TextAlign>Center</TextAlign>
+                </Style>
+              </Paragraph>
+            </Paragraphs>
+            <rd:DefaultName>ReportParameterPeriod</rd:DefaultName>
+            <Top>1cm</Top>
+            <Height>1cm</Height>
+            <Width>21cm</Width>
+            <Style>
+              <Border>
+                <Style>None</Style>
+              </Border>
+              <VerticalAlign>Middle</VerticalAlign>
+              <PaddingLeft>2pt</PaddingLeft>
+              <PaddingRight>2pt</PaddingRight>
+              <PaddingTop>2pt</PaddingTop>
+              <PaddingBottom>2pt</PaddingBottom>
+            </Style>
+          </Textbox>
+          <Textbox Name="TextboxTitle">
+            <CanGrow>true</CanGrow>
+            <KeepTogether>true</KeepTogether>
+            <Paragraphs>
+              <Paragraph>
+                <TextRuns>
+                  <TextRun>
+                    <Value>Заказы</Value>
+                    <Style>
+                      <FontSize>16pt</FontSize>
+                      <FontWeight>Bold</FontWeight>
+                    </Style>
+                  </TextRun>
+                </TextRuns>
+                <Style>
+                  <TextAlign>Center</TextAlign>
+                </Style>
+              </Paragraph>
+            </Paragraphs>
+            <Height>1cm</Height>
+            <Width>21cm</Width>
+            <ZIndex>1</ZIndex>
+            <Style>
+              <Border>
+                <Style>None</Style>
+              </Border>
+              <VerticalAlign>Middle</VerticalAlign>
+              <PaddingLeft>2pt</PaddingLeft>
+              <PaddingRight>2pt</PaddingRight>
+              <PaddingTop>2pt</PaddingTop>
+              <PaddingBottom>2pt</PaddingBottom>
+            </Style>
+          </Textbox>
+          <Tablix Name="Tablix1">
+            <TablixBody>
+              <TablixColumns>
+                <TablixColumn>
+                  <Width>2.5cm</Width>
+                </TablixColumn>
+                <TablixColumn>
+                  <Width>3.21438cm</Width>
+                </TablixColumn>
+                <TablixColumn>
+                  <Width>8.23317cm</Width>
+                </TablixColumn>
+                <TablixColumn>
+                  <Width>2.5cm</Width>
+                </TablixColumn>
+                <TablixColumn>
+                  <Width>2.5cm</Width>
+                </TablixColumn>
+              </TablixColumns>
+              <TablixRows>
+                <TablixRow>
+                  <Height>0.6cm</Height>
+                  <TablixCells>
+                    <TablixCell>
+                      <CellContents>
+                        <Textbox Name="Textbox5">
+                          <CanGrow>true</CanGrow>
+                          <KeepTogether>true</KeepTogether>
+                          <Paragraphs>
+                            <Paragraph>
+                              <TextRuns>
+                                <TextRun>
+                                  <Value>Номер</Value>
+                                  <Style>
+                                    <FontWeight>Bold</FontWeight>
+                                  </Style>
+                                </TextRun>
+                              </TextRuns>
+                              <Style />
+                            </Paragraph>
+                          </Paragraphs>
+                          <rd:DefaultName>Textbox5</rd:DefaultName>
+                          <Style>
+                            <Border>
+                              <Color>LightGrey</Color>
+                              <Style>Solid</Style>
+                            </Border>
+                            <PaddingLeft>2pt</PaddingLeft>
+                            <PaddingRight>2pt</PaddingRight>
+                            <PaddingTop>2pt</PaddingTop>
+                            <PaddingBottom>2pt</PaddingBottom>
+                          </Style>
+                        </Textbox>
+                      </CellContents>
+                    </TablixCell>
+                    <TablixCell>
+                      <CellContents>
+                        <Textbox Name="Textbox1">
+                          <CanGrow>true</CanGrow>
+                          <KeepTogether>true</KeepTogether>
+                          <Paragraphs>
+                            <Paragraph>
+                              <TextRuns>
+                                <TextRun>
+                                  <Value>Дата создания</Value>
+                                  <Style>
+                                    <FontWeight>Bold</FontWeight>
+                                  </Style>
+                                </TextRun>
+                              </TextRuns>
+                              <Style />
+                            </Paragraph>
+                          </Paragraphs>
+                          <rd:DefaultName>Textbox1</rd:DefaultName>
+                          <Style>
+                            <Border>
+                              <Color>LightGrey</Color>
+                              <Style>Solid</Style>
+                            </Border>
+                            <PaddingLeft>2pt</PaddingLeft>
+                            <PaddingRight>2pt</PaddingRight>
+                            <PaddingTop>2pt</PaddingTop>
+                            <PaddingBottom>2pt</PaddingBottom>
+                          </Style>
+                        </Textbox>
+                      </CellContents>
+                    </TablixCell>
+                    <TablixCell>
+                      <CellContents>
+                        <Textbox Name="Textbox3">
+                          <CanGrow>true</CanGrow>
+                          <KeepTogether>true</KeepTogether>
+                          <Paragraphs>
+                            <Paragraph>
+                              <TextRuns>
+                                <TextRun>
+                                  <Value>Цветы</Value>
+                                  <Style>
+                                    <FontWeight>Bold</FontWeight>
+                                  </Style>
+                                </TextRun>
+                              </TextRuns>
+                              <Style />
+                            </Paragraph>
+                          </Paragraphs>
+                          <rd:DefaultName>Textbox3</rd:DefaultName>
+                          <Style>
+                            <Border>
+                              <Color>LightGrey</Color>
+                              <Style>Solid</Style>
+                            </Border>
+                            <PaddingLeft>2pt</PaddingLeft>
+                            <PaddingRight>2pt</PaddingRight>
+                            <PaddingTop>2pt</PaddingTop>
+                            <PaddingBottom>2pt</PaddingBottom>
+                          </Style>
+                        </Textbox>
+                      </CellContents>
+                    </TablixCell>
+                    <TablixCell>
+                      <CellContents>
+                        <Textbox Name="Textbox2">
+                          <CanGrow>true</CanGrow>
+                          <KeepTogether>true</KeepTogether>
+                          <Paragraphs>
+                            <Paragraph>
+                              <TextRuns>
+                                <TextRun>
+                                  <Value>Статус Заказа</Value>
+                                  <Style>
+                                    <FontWeight>Bold</FontWeight>
+                                  </Style>
+                                </TextRun>
+                              </TextRuns>
+                              <Style />
+                            </Paragraph>
+                          </Paragraphs>
+                          <rd:DefaultName>Textbox2</rd:DefaultName>
+                          <Style>
+                            <Border>
+                              <Color>LightGrey</Color>
+                              <Style>Solid</Style>
+                            </Border>
+                            <PaddingLeft>2pt</PaddingLeft>
+                            <PaddingRight>2pt</PaddingRight>
+                            <PaddingTop>2pt</PaddingTop>
+                            <PaddingBottom>2pt</PaddingBottom>
+                          </Style>
+                        </Textbox>
+                      </CellContents>
+                    </TablixCell>
+                    <TablixCell>
+                      <CellContents>
+                        <Textbox Name="Textbox7">
+                          <CanGrow>true</CanGrow>
+                          <KeepTogether>true</KeepTogether>
+                          <Paragraphs>
+                            <Paragraph>
+                              <TextRuns>
+                                <TextRun>
+                                  <Value>Сумма</Value>
+                                  <Style>
+                                    <FontWeight>Bold</FontWeight>
+                                  </Style>
+                                </TextRun>
+                              </TextRuns>
+                              <Style />
+                            </Paragraph>
+                          </Paragraphs>
+                          <rd:DefaultName>Textbox7</rd:DefaultName>
+                          <Style>
+                            <Border>
+                              <Color>LightGrey</Color>
+                              <Style>Solid</Style>
+                            </Border>
+                            <PaddingLeft>2pt</PaddingLeft>
+                            <PaddingRight>2pt</PaddingRight>
+                            <PaddingTop>2pt</PaddingTop>
+                            <PaddingBottom>2pt</PaddingBottom>
+                          </Style>
+                        </Textbox>
+                      </CellContents>
+                    </TablixCell>
+                  </TablixCells>
+                </TablixRow>
+                <TablixRow>
+                  <Height>0.6cm</Height>
+                  <TablixCells>
+                    <TablixCell>
+                      <CellContents>
+                        <Textbox Name="Id">
+                          <CanGrow>true</CanGrow>
+                          <KeepTogether>true</KeepTogether>
+                          <Paragraphs>
+                            <Paragraph>
+                              <TextRuns>
+                                <TextRun>
+                                  <Value>=Fields!Id.Value</Value>
+                                  <Style />
+                                </TextRun>
+                              </TextRuns>
+                              <Style />
+                            </Paragraph>
+                          </Paragraphs>
+                          <rd:DefaultName>Id</rd:DefaultName>
+                          <Style>
+                            <Border>
+                              <Color>LightGrey</Color>
+                              <Style>Solid</Style>
+                            </Border>
+                            <PaddingLeft>2pt</PaddingLeft>
+                            <PaddingRight>2pt</PaddingRight>
+                            <PaddingTop>2pt</PaddingTop>
+                            <PaddingBottom>2pt</PaddingBottom>
+                          </Style>
+                        </Textbox>
+                      </CellContents>
+                    </TablixCell>
+                    <TablixCell>
+                      <CellContents>
+                        <Textbox Name="DateCreate">
+                          <CanGrow>true</CanGrow>
+                          <KeepTogether>true</KeepTogether>
+                          <Paragraphs>
+                            <Paragraph>
+                              <TextRuns>
+                                <TextRun>
+                                  <Value>=Fields!DateCreate.Value</Value>
+                                  <Style>
+                                    <Format>d</Format>
+                                  </Style>
+                                </TextRun>
+                              </TextRuns>
+                              <Style />
+                            </Paragraph>
+                          </Paragraphs>
+                          <rd:DefaultName>DateCreate</rd:DefaultName>
+                          <Style>
+                            <Border>
+                              <Color>LightGrey</Color>
+                              <Style>Solid</Style>
+                            </Border>
+                            <PaddingLeft>2pt</PaddingLeft>
+                            <PaddingRight>2pt</PaddingRight>
+                            <PaddingTop>2pt</PaddingTop>
+                            <PaddingBottom>2pt</PaddingBottom>
+                          </Style>
+                        </Textbox>
+                      </CellContents>
+                    </TablixCell>
+                    <TablixCell>
+                      <CellContents>
+                        <Textbox Name="FlowerName">
+                          <CanGrow>true</CanGrow>
+                          <KeepTogether>true</KeepTogether>
+                          <Paragraphs>
+                            <Paragraph>
+                              <TextRuns>
+                                <TextRun>
+                                  <Value>=Fields!FlowerName.Value</Value>
+                                  <Style />
+                                </TextRun>
+                              </TextRuns>
+                              <Style />
+                            </Paragraph>
+                          </Paragraphs>
+                          <rd:DefaultName>FlowerName</rd:DefaultName>
+                          <Style>
+                            <Border>
+                              <Color>LightGrey</Color>
+                              <Style>Solid</Style>
+                            </Border>
+                            <PaddingLeft>2pt</PaddingLeft>
+                            <PaddingRight>2pt</PaddingRight>
+                            <PaddingTop>2pt</PaddingTop>
+                            <PaddingBottom>2pt</PaddingBottom>
+                          </Style>
+                        </Textbox>
+                      </CellContents>
+                    </TablixCell>
+                    <TablixCell>
+                      <CellContents>
+                        <Textbox Name="OrderStatus">
+                          <CanGrow>true</CanGrow>
+                          <KeepTogether>true</KeepTogether>
+                          <Paragraphs>
+                            <Paragraph>
+                              <TextRuns>
+                                <TextRun>
+                                  <Value>=Fields!OrderStatus.Value</Value>
+                                  <Style />
+                                </TextRun>
+                              </TextRuns>
+                              <Style />
+                            </Paragraph>
+                          </Paragraphs>
+                          <rd:DefaultName>OrderStatus</rd:DefaultName>
+                          <Style>
+                            <Border>
+                              <Color>LightGrey</Color>
+                              <Style>Solid</Style>
+                            </Border>
+                            <PaddingLeft>2pt</PaddingLeft>
+                            <PaddingRight>2pt</PaddingRight>
+                            <PaddingTop>2pt</PaddingTop>
+                            <PaddingBottom>2pt</PaddingBottom>
+                          </Style>
+                        </Textbox>
+                      </CellContents>
+                    </TablixCell>
+                    <TablixCell>
+                      <CellContents>
+                        <Textbox Name="Sum">
+                          <CanGrow>true</CanGrow>
+                          <KeepTogether>true</KeepTogether>
+                          <Paragraphs>
+                            <Paragraph>
+                              <TextRuns>
+                                <TextRun>
+                                  <Value>=Fields!Sum.Value</Value>
+                                  <Style />
+                                </TextRun>
+                              </TextRuns>
+                              <Style />
+                            </Paragraph>
+                          </Paragraphs>
+                          <rd:DefaultName>Sum</rd:DefaultName>
+                          <Style>
+                            <Border>
+                              <Color>LightGrey</Color>
+                              <Style>Solid</Style>
+                            </Border>
+                            <PaddingLeft>2pt</PaddingLeft>
+                            <PaddingRight>2pt</PaddingRight>
+                            <PaddingTop>2pt</PaddingTop>
+                            <PaddingBottom>2pt</PaddingBottom>
+                          </Style>
+                        </Textbox>
+                      </CellContents>
+                    </TablixCell>
+                  </TablixCells>
+                </TablixRow>
+              </TablixRows>
+            </TablixBody>
+            <TablixColumnHierarchy>
+              <TablixMembers>
+                <TablixMember />
+                <TablixMember />
+                <TablixMember />
+                <TablixMember />
+                <TablixMember />
+              </TablixMembers>
+            </TablixColumnHierarchy>
+            <TablixRowHierarchy>
+              <TablixMembers>
+                <TablixMember>
+                  <KeepWithGroup>After</KeepWithGroup>
+                </TablixMember>
+                <TablixMember>
+                  <Group Name="Подробности" />
+                </TablixMember>
+              </TablixMembers>
+            </TablixRowHierarchy>
+            <DataSetName>DataSetOrders</DataSetName>
+            <Top>2.48391cm</Top>
+            <Left>0.55245cm</Left>
+            <Height>1.2cm</Height>
+            <Width>18.94755cm</Width>
+            <ZIndex>2</ZIndex>
+            <Style>
+              <Border>
+                <Style>Double</Style>
+              </Border>
+            </Style>
+          </Tablix>
+          <Textbox Name="TextboxTotalSum">
+            <CanGrow>true</CanGrow>
+            <KeepTogether>true</KeepTogether>
+            <Paragraphs>
+              <Paragraph>
+                <TextRuns>
+                  <TextRun>
+                    <Value>Итого:</Value>
+                    <Style>
+                      <FontWeight>Bold</FontWeight>
+                    </Style>
+                  </TextRun>
+                </TextRuns>
+                <Style>
+                  <TextAlign>Right</TextAlign>
+                </Style>
+              </Paragraph>
+            </Paragraphs>
+            <Top>4cm</Top>
+            <Left>12cm</Left>
+            <Height>0.6cm</Height>
+            <Width>2.5cm</Width>
+            <ZIndex>3</ZIndex>
+            <Style>
+              <Border>
+                <Style>None</Style>
+              </Border>
+              <PaddingLeft>2pt</PaddingLeft>
+              <PaddingRight>2pt</PaddingRight>
+              <PaddingTop>2pt</PaddingTop>
+              <PaddingBottom>2pt</PaddingBottom>
+            </Style>
+          </Textbox>
+          <Textbox Name="SumTotal">
+            <CanGrow>true</CanGrow>
+            <KeepTogether>true</KeepTogether>
+            <Paragraphs>
+              <Paragraph>
+                <TextRuns>
+                  <TextRun>
+                    <Value>=Sum(Fields!Sum.Value, "DataSetOrders")</Value>
+                    <Style>
+                      <FontWeight>Bold</FontWeight>
+                    </Style>
+                  </TextRun>
+                </TextRuns>
+                <Style>
+                  <TextAlign>Right</TextAlign>
+                </Style>
+              </Paragraph>
+            </Paragraphs>
+            <Top>4cm</Top>
+            <Left>14.5cm</Left>
+            <Height>0.6cm</Height>
+            <Width>2.5cm</Width>
+            <ZIndex>4</ZIndex>
+            <Style>
+              <Border>
+                <Style>None</Style>
+              </Border>
+              <PaddingLeft>2pt</PaddingLeft>
+              <PaddingRight>2pt</PaddingRight>
+              <PaddingTop>2pt</PaddingTop>
+              <PaddingBottom>2pt</PaddingBottom>
+            </Style>
+          </Textbox>
+        </ReportItems>
+        <Height>5.72875cm</Height>
+        <Style />
+      </Body>
+      <Width>21cm</Width>
+      <Page>
+        <PageHeight>29.7cm</PageHeight>
+        <PageWidth>21cm</PageWidth>
+        <LeftMargin>2cm</LeftMargin>
+        <RightMargin>2cm</RightMargin>
+        <TopMargin>2cm</TopMargin>
+        <BottomMargin>2cm</BottomMargin>
+        <ColumnSpacing>0.13cm</ColumnSpacing>
+        <Style />
+      </Page>
+    </ReportSection>
+  </ReportSections>
+  <ReportParameters>
+    <ReportParameter Name="ReportParameterPeriod">
+      <DataType>String</DataType>
+      <Nullable>true</Nullable>
+      <Prompt>ReportParameter1</Prompt>
+    </ReportParameter>
+  </ReportParameters>
+  <ReportParametersLayout>
+    <GridLayoutDefinition>
+      <NumberOfColumns>5</NumberOfColumns>
+      <NumberOfRows>2</NumberOfRows>
+      <CellDefinitions>
+        <CellDefinition>
+          <ColumnIndex>0</ColumnIndex>
+          <RowIndex>0</RowIndex>
+          <ParameterName>ReportParameterPeriod</ParameterName>
+        </CellDefinition>
+      </CellDefinitions>
+    </GridLayoutDefinition>
+  </ReportParametersLayout>
+  <rd:ReportUnitType>Cm</rd:ReportUnitType>
+  <rd:ReportID>1c0c12af-b9e8-41db-8d1f-26d1acbf91cc</rd:ReportID>
+</Report>
\ No newline at end of file