diff --git a/Confectionery/FormComponents.cs b/Confectionery/FormComponents.cs
index c93c9ed..b869d81 100644
--- a/Confectionery/FormComponents.cs
+++ b/Confectionery/FormComponents.cs
@@ -1,15 +1,6 @@
 using ConfectioneryContracts.BindingModels;
 using ConfectioneryContracts.BusinessLogicsContracts;
 using Microsoft.Extensions.Logging;
-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 ConfectioneryView
 {
@@ -36,14 +27,14 @@ namespace ConfectioneryView
                 {
                     dataGridView.DataSource = list;
                     dataGridView.Columns["Id"].Visible = false;
-                    dataGridView.Columns["ComponentName"].AutoSizeMode =
+                    dataGridView.Columns["Name"].AutoSizeMode =
                     DataGridViewAutoSizeColumnMode.Fill;
                 }
-                _logger.LogInformation("Загрузка компонентов");
+                _logger.LogInformation("Загрузка магазинов");
             }
             catch (Exception ex)
             {
-                _logger.LogError(ex, "Ошибка загрузки компонентов");
+                _logger.LogError(ex, "Ошибка загрузки магазинов");
                 MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
                 MessageBoxIcon.Error);
             }
@@ -87,7 +78,7 @@ namespace ConfectioneryView
                 {
                     int id =
                     Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
-                    _logger.LogInformation("Удаление компонента");
+                    _logger.LogInformation("Удаление магазина");
                     try
                     {
                         if (!_logic.Delete(new ComponentBindingModel
@@ -101,7 +92,7 @@ namespace ConfectioneryView
                     }
                     catch (Exception ex)
                     {
-                        _logger.LogError(ex, "Ошибка удаления компонента");
+                        _logger.LogError(ex, "Ошибка удаления магазина");
                         MessageBox.Show(ex.Message, "Ошибка",
                         MessageBoxButtons.OK, MessageBoxIcon.Error);
                     }
diff --git a/Confectionery/FormViewShops.Designer.cs b/Confectionery/FormViewShops.Designer.cs
new file mode 100644
index 0000000..82f254a
--- /dev/null
+++ b/Confectionery/FormViewShops.Designer.cs
@@ -0,0 +1,120 @@
+namespace ConfectioneryView
+{
+    partial class FormViewShops
+    {
+        /// <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()
+        {
+            this.buttonRef = new System.Windows.Forms.Button();
+            this.buttonDel = new System.Windows.Forms.Button();
+            this.buttonUpd = new System.Windows.Forms.Button();
+            this.buttonAdd = new System.Windows.Forms.Button();
+            this.dataGridView = new System.Windows.Forms.DataGridView();
+            ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // buttonRef
+            // 
+            this.buttonRef.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.buttonRef.Location = new System.Drawing.Point(685, 202);
+            this.buttonRef.Name = "buttonRef";
+            this.buttonRef.Size = new System.Drawing.Size(90, 37);
+            this.buttonRef.TabIndex = 14;
+            this.buttonRef.Text = "Обновить";
+            this.buttonRef.UseVisualStyleBackColor = true;
+            this.buttonRef.Click += new System.EventHandler(this.ButtonRef_Click);
+            // 
+            // buttonDel
+            // 
+            this.buttonDel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.buttonDel.Location = new System.Drawing.Point(685, 151);
+            this.buttonDel.Name = "buttonDel";
+            this.buttonDel.Size = new System.Drawing.Size(90, 33);
+            this.buttonDel.TabIndex = 13;
+            this.buttonDel.Text = "Удалить";
+            this.buttonDel.UseVisualStyleBackColor = true;
+            this.buttonDel.Click += new System.EventHandler(this.ButtonDel_Click);
+            // 
+            // buttonUpd
+            // 
+            this.buttonUpd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.buttonUpd.Location = new System.Drawing.Point(685, 102);
+            this.buttonUpd.Name = "buttonUpd";
+            this.buttonUpd.Size = new System.Drawing.Size(90, 34);
+            this.buttonUpd.TabIndex = 12;
+            this.buttonUpd.Text = "Изменить";
+            this.buttonUpd.UseVisualStyleBackColor = true;
+            this.buttonUpd.Click += new System.EventHandler(this.ButtonUpd_Click);
+            // 
+            // buttonAdd
+            // 
+            this.buttonAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.buttonAdd.Location = new System.Drawing.Point(685, 57);
+            this.buttonAdd.Name = "buttonAdd";
+            this.buttonAdd.Size = new System.Drawing.Size(90, 30);
+            this.buttonAdd.TabIndex = 11;
+            this.buttonAdd.Text = "Добавить";
+            this.buttonAdd.UseVisualStyleBackColor = true;
+            this.buttonAdd.Click += new System.EventHandler(this.ButtonAdd_Click);
+            // 
+            // dataGridView
+            // 
+            this.dataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.dataGridView.Location = new System.Drawing.Point(12, 12);
+            this.dataGridView.Name = "dataGridView";
+            this.dataGridView.RowTemplate.Height = 25;
+            this.dataGridView.Size = new System.Drawing.Size(540, 379);
+            this.dataGridView.TabIndex = 10;
+            // 
+            // FormViewShops
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(787, 403);
+            this.Controls.Add(this.buttonRef);
+            this.Controls.Add(this.buttonDel);
+            this.Controls.Add(this.buttonUpd);
+            this.Controls.Add(this.buttonAdd);
+            this.Controls.Add(this.dataGridView);
+            this.Name = "FormViewShops";
+            this.Text = "Просмотр магазинов";
+            ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private Button buttonRef;
+        private Button buttonDel;
+        private Button buttonUpd;
+        private Button buttonAdd;
+        private DataGridView dataGridView;
+    }
+}
\ No newline at end of file
diff --git a/Confectionery/FormViewShops.cs b/Confectionery/FormViewShops.cs
new file mode 100644
index 0000000..6c443d2
--- /dev/null
+++ b/Confectionery/FormViewShops.cs
@@ -0,0 +1,116 @@
+using ConfectioneryContracts.BindingModels;
+using ConfectioneryContracts.BusinessLogicsContracts;
+using Microsoft.Extensions.Logging;
+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 ConfectioneryView
+{
+    public partial class FormViewShops : Form
+    {
+        private readonly ILogger _logger;
+        private readonly IShopLogic _logic;
+        public FormViewShops(ILogger<FormViewShops> logger, IShopLogic logic)
+        {
+            InitializeComponent();
+            _logger = logger;
+            _logic = logic;
+        }
+        private void FormShops_Load(object sender, EventArgs e)
+        {
+            LoadData();
+        }
+        private void LoadData()
+        {
+            try
+            {
+                var list = _logic.ReadList(null);
+                if (list != null)
+                {
+                    dataGridView.DataSource = list;
+                    dataGridView.Columns["Id"].Visible = false;
+                    dataGridView.Columns["Name"].AutoSizeMode =
+                    DataGridViewAutoSizeColumnMode.Fill;
+                }
+                _logger.LogInformation("Загрузка компонентов");
+            }
+            catch (Exception ex)
+            {
+                _logger.LogError(ex, "Ошибка загрузки компонентов");
+                MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
+                MessageBoxIcon.Error);
+            }
+        }
+        private void ButtonAdd_Click(object sender, EventArgs e)
+        {
+            var service =
+            Program.ServiceProvider?.GetService(typeof(FormComponent));
+            if (service is FormComponent form)
+            {
+                if (form.ShowDialog() == DialogResult.OK)
+                {
+                    LoadData();
+                }
+            }
+        }
+        private void ButtonUpd_Click(object sender, EventArgs e)
+        {
+            if (dataGridView.SelectedRows.Count == 1)
+            {
+                var service =
+                Program.ServiceProvider?.GetService(typeof(FormComponent));
+                if (service is FormComponent form)
+                {
+                    form.Id =
+                    Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
+                    if (form.ShowDialog() == DialogResult.OK)
+                    {
+
+                    }
+                }
+                LoadData();
+            }
+        }
+        private void ButtonDel_Click(object sender, EventArgs e)
+        {
+            if (dataGridView.SelectedRows.Count == 1)
+            {
+                if (MessageBox.Show("Удалить запись?", "Вопрос",
+                MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
+                {
+                    int id =
+                    Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
+                    _logger.LogInformation("Удаление компонента");
+                    try
+                    {
+                        if (!_logic.Delete(new ShopBindingModel
+                        {
+                            Id = id
+                        }))
+                        {
+                            throw new Exception("Ошибка при удалении. Дополнительная информация в логах.");
+                        }
+                        LoadData();
+                    }
+                    catch (Exception ex)
+                    {
+                        _logger.LogError(ex, "Ошибка удаления компонента");
+                        MessageBox.Show(ex.Message, "Ошибка",
+                        MessageBoxButtons.OK, MessageBoxIcon.Error);
+                    }
+                }
+            }
+        }
+        private void ButtonRef_Click(object sender, EventArgs e)
+        {
+            LoadData();
+        }
+    }
+}
diff --git a/Confectionery/FormViewShops.resx b/Confectionery/FormViewShops.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/Confectionery/FormViewShops.resx
@@ -0,0 +1,60 @@
+<root>
+  <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