From 021f7f65718c6d0c9e222a87c875e9c3b5fbdf40 Mon Sep 17 00:00:00 2001
From: Anton Ivanov <iab@bk.ru>
Date: Sun, 5 Jul 2020 15:13:28 +0300
Subject: [PATCH] =?UTF-8?q?#228=20@GenVP=20=D0=9A=D0=B0=D0=BD=D0=B1=D0=B0?=
 =?UTF-8?q?=D0=BD=20=D0=B4=D0=BE=D1=81=D0=BA=D0=B0:=20=D0=B3=D1=80=D1=83?=
 =?UTF-8?q?=D0=BF=D0=BF=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=81=D1=82?=
 =?UTF-8?q?=D0=B0=D1=82=D1=83=D1=81=D0=BE=D0=B2=20=D0=B2=20=D0=BA=D0=BE?=
 =?UTF-8?q?=D0=BB=D0=BE=D0=BD=D0=BA=D0=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/cf/DataProcessors/узКанбанДоска.xml       | 41 +++++++++++++
 .../Forms/ФормаДинамическая/Ext/Form.xml      |  6 ++
 .../Forms/ФормаДинамическая/Ext/Form/Module.bsl | 61 +++++++++++++++++--
 3 files changed, 104 insertions(+), 4 deletions(-)

diff --git a/src/cf/DataProcessors/узКанбанДоска.xml b/src/cf/DataProcessors/узКанбанДоска.xml
index 284d6eef5..9225d5569 100644
--- a/src/cf/DataProcessors/узКанбанДоска.xml
+++ b/src/cf/DataProcessors/узКанбанДоска.xml
@@ -1281,6 +1281,47 @@
 							<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
 						</Properties>
 					</Attribute>
+					<Attribute uuid="d9d70bdf-4d2b-4117-8130-6e7460db309f">
+						<Properties>
+							<Name>Группа</Name>
+							<Synonym>
+								<v8:item>
+									<v8:lang>ru</v8:lang>
+									<v8:content>Группа</v8:content>
+								</v8:item>
+							</Synonym>
+							<Comment/>
+							<Type>
+								<v8:Type>xs:decimal</v8:Type>
+								<v8:NumberQualifiers>
+									<v8:Digits>2</v8:Digits>
+									<v8:FractionDigits>0</v8:FractionDigits>
+									<v8:AllowedSign>Nonnegative</v8:AllowedSign>
+								</v8:NumberQualifiers>
+							</Type>
+							<PasswordMode>false</PasswordMode>
+							<Format/>
+							<EditFormat/>
+							<ToolTip/>
+							<MarkNegatives>false</MarkNegatives>
+							<Mask/>
+							<MultiLine>false</MultiLine>
+							<ExtendedEdit>false</ExtendedEdit>
+							<MinValue xsi:nil="true"/>
+							<MaxValue xsi:nil="true"/>
+							<FillFromFillingValue>false</FillFromFillingValue>
+							<FillValue xsi:nil="true"/>
+							<FillChecking>DontCheck</FillChecking>
+							<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
+							<ChoiceParameterLinks/>
+							<ChoiceParameters/>
+							<QuickChoice>Auto</QuickChoice>
+							<CreateOnInput>Auto</CreateOnInput>
+							<ChoiceForm/>
+							<LinkByType/>
+							<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
+						</Properties>
+					</Attribute>
 				</ChildObjects>
 			</TabularSection>
 			<Form>Удалить_Форма</Form>
diff --git a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml
index 9c3ed3a69..948de4460 100644
--- a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml
+++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml
@@ -290,6 +290,12 @@
 													<ContextMenu name="ТЧНастройкиКолонокСтатусКонтекстноеМеню" id="502"/>
 													<ExtendedTooltip name="ТЧНастройкиКолонокСтатусРасширеннаяПодсказка" id="503"/>
 												</InputField>
+												<InputField name="ТЧНастройкиКолонокГруппа" id="553">
+													<DataPath>Объект.ТЧНастройкиКолонок.Группа</DataPath>
+													<EditMode>EnterOnInput</EditMode>
+													<ContextMenu name="ТЧНастройкиКолонокГруппаКонтекстноеМеню" id="554"/>
+													<ExtendedTooltip name="ТЧНастройкиКолонокГруппаРасширеннаяПодсказка" id="555"/>
+												</InputField>
 												<CheckBoxField name="ТЧНастройкиКолонокВидимость" id="504">
 													<DataPath>Объект.ТЧНастройкиКолонок.Видимость</DataPath>
 													<EditMode>EnterOnInput</EditMode>
diff --git a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl
index 8b3ca277f..135ed2b81 100644
--- a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl
+++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl
@@ -112,13 +112,41 @@
 	ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
 	/////   КОМАНДЫ   //////////
 
+	// + #228 Пиганов Г.В. 2020.07.02
+	/////   ГРУППЫ   //////////
+	ЭлементыГрупп = Новый Соответствие;
+	ПрефиксДляИмениЭлементовГрупп = ПолучитьПрефиксДляИмениЭлементовГрупп();
+	
+	ОтборВидимыхСтрок = Новый Структура();
+	ТаблицаГрупп = Объект.ТЧНастройкиКолонок.Выгрузить(ОтборВидимыхСтрок, "Группа");
+	ТаблицаГрупп.Свернуть("Группа", "");
+	ТаблицаГрупп.Сортировать("Группа");
+	Для Каждого СтрокаГруппы Из ТаблицаГрупп Цикл
+		НомерГруппы = СтрокаГруппы.Группа;
+		ИмяГруппы = ПрефиксДляИмениЭлементовГрупп + СтрокаГруппы.Группа;
+		ЭлементГруппаГруппа = Элементы.Вставить(ИмяГруппы, Тип("ГруппаФормы"), Элементы.ГруппаКанбанДоска);
+		ЭлементГруппаГруппа.Вид         = ВидГруппыФормы.ОбычнаяГруппа;
+		ЭлементГруппаГруппа.Отображение = ОтображениеОбычнойГруппы.Нет;
+		Если НомерГруппы = 0 Тогда
+			ЭлементГруппаГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда;
+		Иначе
+			ЭлементГруппаГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
+		КонецЕсли;
+		ЭлементыГрупп.Вставить(НомерГруппы, ЭлементГруппаГруппа);
+	КонецЦикла;
+	// - #228 Пиганов Г.В. 2020.07.02
+	
 	/////   ЭЛЕМЕНТЫ   //////////
 	Для каждого СтрокаТЧНастройкиКолонок из Объект.ТЧНастройкиКолонок цикл
 		Если НЕ СтрокаТЧНастройкиКолонок.Видимость Тогда
 			Продолжить;
 		Конецесли;
 		пСтатус = СтрокаТЧНастройкиКолонок.Статус;
-		ДобавитьНаКанбанДоскуКолонку(пСтатус);
+		// + #228 Пиганов Г.В. 2020.07.02
+		//ДобавитьНаКанбанДоскуКолонку(пСтатус);
+		пГруппаЭлемент = ЭлементыГрупп[СтрокаТЧНастройкиКолонок.Группа];
+		ДобавитьНаКанбанДоскуКолонку(пСтатус, пГруппаЭлемент);
+		// - #228 Пиганов Г.В. 2020.07.02
 	Конеццикла;
 		
 КонецПроцедуры 
@@ -126,7 +154,10 @@
 &НаСервере
 Процедура УдалитьДинамическиеЭлементы()
 	пЭлементыФормы = Этаформа.Элементы;
-	ПрефиксДляИмениЭлементовКолонок = ПолучитьПрефиксДляИмениЭлементовКолонок();
+	// + #228 Пиганов Г.В. 2020.07.02
+	//ПрефиксДляИмениЭлементовКолонок = ПолучитьПрефиксДляИмениЭлементовКолонок();
+	ПрефиксДляИмениЭлементовКолонок = ПолучитьПрефиксДляИмениЭлементовГрупп();
+	// - #228 Пиганов Г.В. 2020.07.02
 	ЭлементыКУдалению = Новый Массив();
 	Для каждого пЭлементФормы из пЭлементыФормы цикл
 		Если СтрНайти(пЭлементФормы.Имя,ПрефиксДляИмениЭлементовКолонок) = 0 Тогда
@@ -142,6 +173,13 @@
 	Конеццикла;
 КонецПроцедуры
 
+// + #228 Пиганов Г.В. 2020.07.02
+&НаСервере
+Функция ПолучитьПрефиксДляИмениЭлементовГрупп()
+	Возврат "_Группа_";
+КонецФункции 
+// - #228 Пиганов Г.В. 2020.07.02
+
 &НаСервере
 Функция ПолучитьПрефиксДляИмениЭлементовКолонок() 
 	Возврат "_Колонка_";	
@@ -191,7 +229,10 @@
 КонецФункции 
 
 &НаСервере
-Процедура ДобавитьНаКанбанДоскуКолонку(пСтатус)
+// + #228 Пиганов Г.В. 2020.07.02
+//Процедура ДобавитьНаКанбанДоскуКолонку(пСтатус)
+Процедура ДобавитьНаКанбанДоскуКолонку(пСтатус, пЭлементГруппаГруппа)
+// - #228 Пиганов Г.В. 2020.07.02
 	//ПредставлениеКолонки = пСтатус.Наименование;
 	ПредставлениеКолонки = ПолучитьПредставлениеКолонки(пСтатус);
 	
@@ -201,7 +242,11 @@
 	
 	ИменаЭлементов = ПолучитьИменаЭлементовДляКолонки(пСтатус);
 	
-	пЭлементГруппаКолонка = пЭлементыФормы.Вставить(ИменаЭлементов.ИмяГруппыКолонки,Тип("ГруппаФормы"),пЭлементыФормы.ГруппаКанбанДоска);
+	// + #228 Пиганов Г.В. 2020.07.02
+	//пЭлементГруппаКолонка = пЭлементыФормы.Вставить(ИменаЭлементов.ИмяГруппыКолонки,Тип("ГруппаФормы"),пЭлементыФормы.ГруппаКанбанДоска);
+	пЭлементГруппаКолонка = пЭлементыФормы.Вставить(ИменаЭлементов.ИмяГруппыКолонки,
+		Тип("ГруппаФормы"), пЭлементГруппаГруппа);
+	// - #228 Пиганов Г.В. 2020.07.02
 	пЭлементГруппаКолонка.Вид = ВидГруппыФормы.ОбычнаяГруппа;
 	пЭлементГруппаКолонка.Заголовок = ПредставлениеКолонки;
 	пЭлементГруппаКолонка.Подсказка = ПредставлениеКолонки;
@@ -691,12 +736,20 @@
 		Если СохраненныеНастройки.Свойство("ТЧНастройкиКолонок") Тогда
 			ЗаполнитьТЧНастройкиКолонокНаСервере();
 			ТЧНастройкиКолонок = СохраненныеНастройки.ТЧНастройкиКолонок;
+			// + #228 Пиганов Г.В. 2020.07.02
+			Если ТЧНастройкиКолонок.Колонки.Найти("Группа") = Неопределено Тогда
+				ТЧНастройкиКолонок.Колонки.Добавить("Группа");
+			КонецЕсли;
+			// - #228 Пиганов Г.В. 2020.07.02
 			Для каждого СтрокаТЧНастройкиКолонок из Объект.ТЧНастройкиКолонок цикл
 				ПараметрыОтбора=Новый Структура();
 				ПараметрыОтбора.Вставить("Статус",СтрокаТЧНастройкиКолонок.Статус);
 				НайденныеСтрокиСохраненныеНастройки = ТЧНастройкиКолонок.НайтиСтроки(ПараметрыОтбора);
 				Для каждого СтрокаНайденныеСтроки из НайденныеСтрокиСохраненныеНастройки цикл
 					СтрокаТЧНастройкиКолонок.Видимость = СтрокаНайденныеСтроки.Видимость;		
+					// + #228 Пиганов Г.В. 2020.07.02
+					СтрокаТЧНастройкиКолонок.Группа    = СтрокаНайденныеСтроки.Группа;
+					// - #228 Пиганов Г.В. 2020.07.02
 				Конеццикла;				
 			Конеццикла;
 		Иначе