diff --git a/VolkovLabs/InternetShopOrdersAppPlugins/FormMain.Designer.cs b/VolkovLabs/InternetShopOrdersAppPlugins/FormMain.Designer.cs
new file mode 100644
index 0000000..be5aded
--- /dev/null
+++ b/VolkovLabs/InternetShopOrdersAppPlugins/FormMain.Designer.cs
@@ -0,0 +1,39 @@
+namespace InternetShopOrdersAppPlugins
+{
+ partial class FormMain
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(800, 450);
+ this.Text = "FormMain";
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/VolkovLabs/InternetShopOrdersAppPlugins/FormMain.cs b/VolkovLabs/InternetShopOrdersAppPlugins/FormMain.cs
new file mode 100644
index 0000000..1f26c46
--- /dev/null
+++ b/VolkovLabs/InternetShopOrdersAppPlugins/FormMain.cs
@@ -0,0 +1,20 @@
+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 InternetShopOrdersAppPlugins
+{
+ public partial class FormMain : Form
+ {
+ public FormMain()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/VolkovLabs/InternetShopOrdersAppPlugins/FormMain.resx b/VolkovLabs/InternetShopOrdersAppPlugins/FormMain.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/VolkovLabs/InternetShopOrdersAppPlugins/FormMain.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/VolkovLabs/InternetShopOrdersAppPlugins/InternetShopOrdersAppPlugins.csproj b/VolkovLabs/InternetShopOrdersAppPlugins/InternetShopOrdersAppPlugins.csproj
new file mode 100644
index 0000000..c8fa3d5
--- /dev/null
+++ b/VolkovLabs/InternetShopOrdersAppPlugins/InternetShopOrdersAppPlugins.csproj
@@ -0,0 +1,15 @@
+
+
+
+ WinExe
+ net8.0-windows
+ enable
+ true
+ enable
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VolkovLabs/InternetShopOrdersAppPlugins/Program.cs b/VolkovLabs/InternetShopOrdersAppPlugins/Program.cs
new file mode 100644
index 0000000..3c38c7d
--- /dev/null
+++ b/VolkovLabs/InternetShopOrdersAppPlugins/Program.cs
@@ -0,0 +1,17 @@
+namespace InternetShopOrdersAppPlugins
+{
+ internal static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ // To customize application configuration such as set high DPI settings or default font,
+ // see https://aka.ms/applicationconfiguration.
+ ApplicationConfiguration.Initialize();
+ Application.Run(new FormMain());
+ }
+ }
+}
\ No newline at end of file
diff --git a/VolkovLabs/PluginsConventionLibrary/IPluginsConvention.cs b/VolkovLabs/PluginsConventionLibrary/IPluginsConvention.cs
new file mode 100644
index 0000000..4230487
--- /dev/null
+++ b/VolkovLabs/PluginsConventionLibrary/IPluginsConvention.cs
@@ -0,0 +1,58 @@
+namespace PluginsConventionLibrary
+{
+ public interface IPluginsConvention
+ {
+ ///
+ /// Название плагина
+ ///
+ string PluginName { get; }
+ ///
+ /// Получение контрола для вывода набора данных
+ ///
+ UserControl GetControl { get; }
+ ///
+ /// Получение элемента, выбранного в контроле
+ ///
+ PluginsConventionElement GetElement { get; }
+ ///
+ /// Получение формы для создания/редактирования объекта
+ ///
+ ///
+ ///
+ Form GetForm(PluginsConventionElement element);
+ ///
+ /// Получение формы для работы со справочником
+ ///
+ ///
+ Form GetThesaurus();
+ ///
+ /// Удаление элемента
+ ///
+ ///
+ ///
+ bool DeleteElement(PluginsConventionElement element);
+ ///
+ /// Обновление набора данных в контроле
+ ///
+ void ReloadData();
+ ///
+ /// Создание простого документа
+ ///
+ ///
+ ///
+ bool CreateSimpleDocument(PluginsConventionSaveDocument
+ saveDocument);
+ ///
+ /// Создание простого документа
+ ///
+ ///
+ ///
+ bool CreateTableDocument(PluginsConventionSaveDocument saveDocument);
+ ///
+ /// Создание документа с диаграммой
+ ///
+ ///
+ ///
+ bool CreateChartDocument(PluginsConventionSaveDocument saveDocument);
+ }
+}
diff --git a/VolkovLabs/PluginsConventionLibrary/PluginsConventionElement.cs b/VolkovLabs/PluginsConventionLibrary/PluginsConventionElement.cs
new file mode 100644
index 0000000..775c74a
--- /dev/null
+++ b/VolkovLabs/PluginsConventionLibrary/PluginsConventionElement.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PluginsConventionLibrary
+{
+ public class PluginsConventionElement
+ {
+ public Guid Id { get; set; }
+ }
+}
diff --git a/VolkovLabs/PluginsConventionLibrary/PluginsConventionLibrary.csproj b/VolkovLabs/PluginsConventionLibrary/PluginsConventionLibrary.csproj
new file mode 100644
index 0000000..3e210aa
--- /dev/null
+++ b/VolkovLabs/PluginsConventionLibrary/PluginsConventionLibrary.csproj
@@ -0,0 +1,10 @@
+
+
+
+ net8.0-windows
+ enable
+ true
+ enable
+
+
+
diff --git a/VolkovLabs/PluginsConventionLibrary/PluginsConventionSaveDocument.cs b/VolkovLabs/PluginsConventionLibrary/PluginsConventionSaveDocument.cs
new file mode 100644
index 0000000..f902bc6
--- /dev/null
+++ b/VolkovLabs/PluginsConventionLibrary/PluginsConventionSaveDocument.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PluginsConventionLibrary
+{
+ public class PluginsConventionSaveDocument
+ {
+ public string FileName { get; set; }
+ }
+}
diff --git a/VolkovLabs/VolkovLabs.sln b/VolkovLabs/VolkovLabs.sln
index c6e6d49..ee8df05 100644
--- a/VolkovLabs/VolkovLabs.sln
+++ b/VolkovLabs/VolkovLabs.sln
@@ -15,7 +15,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InternetShopOrdersDatabaseI
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InternetShopDataModels", "InternetShopDataModels\InternetShopDataModels.csproj", "{1CEB87FB-BA72-491C-9125-0B3527EF612E}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InternetShopOrdersApp", "InternetShopOrdersApp\InternetShopOrdersApp.csproj", "{13A6EC26-C739-4891-964C-4A0E5E8D43C3}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InternetShopOrdersApp", "InternetShopOrdersApp\InternetShopOrdersApp.csproj", "{13A6EC26-C739-4891-964C-4A0E5E8D43C3}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InternetShopOrdersAppPlugins", "InternetShopOrdersAppPlugins\InternetShopOrdersAppPlugins.csproj", "{765C2C20-1415-4D42-8053-4914D7AD4E75}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginsConventionLibrary", "PluginsConventionLibrary\PluginsConventionLibrary.csproj", "{B0E17F90-929D-4AA7-8FA5-5F5E037140BE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -51,6 +55,14 @@ Global
{13A6EC26-C739-4891-964C-4A0E5E8D43C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{13A6EC26-C739-4891-964C-4A0E5E8D43C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{13A6EC26-C739-4891-964C-4A0E5E8D43C3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {765C2C20-1415-4D42-8053-4914D7AD4E75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {765C2C20-1415-4D42-8053-4914D7AD4E75}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {765C2C20-1415-4D42-8053-4914D7AD4E75}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {765C2C20-1415-4D42-8053-4914D7AD4E75}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B0E17F90-929D-4AA7-8FA5-5F5E037140BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B0E17F90-929D-4AA7-8FA5-5F5E037140BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B0E17F90-929D-4AA7-8FA5-5F5E037140BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B0E17F90-929D-4AA7-8FA5-5F5E037140BE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE