diff --git a/VERSIONS.md b/VERSIONS.md
index e9249b575..ab90ea1d0 100644
--- a/VERSIONS.md
+++ b/VERSIONS.md
@@ -2,6 +2,15 @@
Что сделать дополнительно:
* Обновить в файле настроек сонара новую версию релиза sonar.projectVersion=1.0.5.ххх
+**Выпущена версия 1.0.5.ххх (Обновление от хх.хх.ххх)**
+
+**Изменения**
+
+* #283 Добавить возможность сохранять настройки канбан доски как отдельный вариант. Спасибо @hawkxtreme (Максим Мальков)
+
+
+
+
**Выпущена версия 1.0.5.016 (Обновление от 03.01.2022)**
**Изменения**
diff --git a/src/cf/DataProcessors/узКанбанДоска.xml b/src/cf/DataProcessors/узКанбанДоска.xml
index 3ccd01a0f..5499e3071 100644
--- a/src/cf/DataProcessors/узКанбанДоска.xml
+++ b/src/cf/DataProcessors/узКанбанДоска.xml
@@ -1346,6 +1346,8 @@
+
+
СхемаКомпоновкиДанных
diff --git a/src/cf/DataProcessors/узКанбанДоска/Ext/ManagerModule.bsl b/src/cf/DataProcessors/узКанбанДоска/Ext/ManagerModule.bsl
index 2c5e27230..67a6b11af 100644
--- a/src/cf/DataProcessors/узКанбанДоска/Ext/ManagerModule.bsl
+++ b/src/cf/DataProcessors/узКанбанДоска/Ext/ManagerModule.bsl
@@ -99,6 +99,37 @@
КонецФункции
+// [+] #283 Мальков М.В. 2023-01-30
+Функция ПолучитьСписокВариантов(ОсновнойКлючВарианта) Экспорт
+
+ СписокЗначений = Новый СписокЗначений;
+
+ Если ЗначениеЗаполнено(ОсновнойКлючВарианта) Тогда
+
+ ТекущийПользовательСтрока = "" + СтандартныеПодсистемыСервер.ТекущийПользователь();
+
+ Отбор = Новый Структура();
+ Отбор.Вставить("Пользователь", ТекущийПользовательСтрока);
+
+ Выборка = ХранилищеОбщихНастроек.Выбрать(Отбор);
+
+ Пока Выборка.Следующий() Цикл
+
+ Если СтрНайти(Выборка.КлючНастроек, ОсновнойКлючВарианта) > 0 Тогда
+ Если Выборка.КлючНастроек = ОсновнойКлючВарианта Тогда
+ СписокЗначений.Добавить(Выборка.КлючНастроек, "Основной");
+ Иначе
+ СписокЗначений.Добавить(Выборка.КлючНастроек, СтрЗаменить(Выборка.КлючНастроек, ОсновнойКлючВарианта + ".", ""));
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+ Возврат СписокЗначений
+
+КонецФункции
+// [-] #283 Мальков М.В. 2023-01-30
+
#КонецОбласти
-#КонецЕсли
\ No newline at end of file
+#КонецЕсли
\ No newline at end of file
diff --git a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml
index d2a66c86c..c0826f6de 100644
--- a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml
+++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml
@@ -92,34 +92,78 @@
true
-
+
+
+
+ ru
+ Группа варинаты
+
+
ru
- Группа2
+ Группа варинаты
-
+
-
-
-
- false
- true
- true
-
- Form
-
-
+
+
+
+ ru
+ Сохранение (выбор) варианта отчета
+
+
+
+
+ ru
+ Выбрать другой вариант канбан доски или сохранить новый
+
+
+
+ CommonPicture.ВыбратьВариантОтчета
+ true
+
+ Picture
+
+
+
+
+
+
+
+
+
@@ -623,6 +667,24 @@
+
+
+
+ ru
+ Текущий ключ настроек
+
+
+
+ xs:string
+
+ 0
+ Variable
+
+
+
+ ТекущийКлючНастроек
+
+
@@ -847,5 +909,83 @@
КомандаОтобразитьДополнительныеНастройки
DontUse
+
+
+
+ ru
+ Сохранить вариант как
+
+
+
+
+ ru
+ Сохранить вариант как
+
+
+
+ StdPicture.SaveValues
+ true
+
+ СохранитьВариантКакКомандаПеред
+
+
+
+
+ ru
+ Выбрать вариант
+
+
+
+
+ ru
+ Загрузить вариант
+
+
+
+ StdPicture.RestoreValues
+ true
+
+ ЗагрузитьВариантКомандаПеред
+ TextPicture
+
+
+
+
+ ru
+ Сохранить вариант
+
+
+
+
+ ru
+ Сохранить вариант
+
+
+
+ StdPicture.SaveValues
+ true
+
+ СохранитьВариантКомандаПеред
+ TextPicture
+
+
+
+
+ ru
+ Сохранить вариант всем пользователям
+
+
+
+
+ ru
+ Загрузить текущую настройку всем
+
+
+
+ StdPicture.SaveValues
+ true
+
+ СохранитьТекущийВариантВсемКоманда
+
\ No newline at end of file
diff --git a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl
index c87f025a8..0157a3222 100644
--- a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl
+++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl
@@ -7,8 +7,12 @@
СгенирироватьФормуЗаново = Истина;
пНастройкиКомпоновщика = Неопределено;
-
- ЗагрузитьСохраненныеНастройки(пНастройкиКомпоновщика);
+
+ // [+] #283 Мальков М.В. 2023-01-30
+ //ЗагрузитьСохраненныеНастройки(пНастройкиКомпоновщика);
+ ТекущийКлючНастроек = ПолучитьТекущийКлючНастроек();
+ ЗагрузитьСохраненныеНастройки(ТекущийКлючНастроек, пНастройкиКомпоновщика);
+ // [-] #283 Мальков М.В. 2023-01-30
СтруктураТЧДляСнятияФокусаСЗадач = Новый Структура();
@@ -24,7 +28,8 @@
УстановитьВидимостьДоступность();
- ВыполнитьЛокализацию();
+ ВыполнитьЛокализацию();
+
КонецПроцедуры
&НаСервере
@@ -70,7 +75,10 @@
КонецПроцедуры
&НаКлиенте
-Процедура ПриЗакрытии()
+Процедура ПриЗакрытии()
+
+ //СохранитьВариантНаКлиенте();
+
КонецПроцедуры
&НаКлиенте
@@ -85,7 +93,13 @@
&НаСервере
Процедура ПриЗакрытииНаСервере()
- СохранитьНастройки();
+ // [+] #283 Мальков М.В. 2023-01-30
+ //СохранитьНастройки();
+
+ СохранитьТекущийКлючНастроек();
+
+ СохранитьНастройки(ТекущийКлючНастроек);
+ // [-] #283 Мальков М.В. 2023-01-30
КонецПроцедуры
&НаКлиенте
@@ -93,7 +107,11 @@
ПодключитьОбработчикОжидания("ЗаполнитьЗадачиНаКлиенте", 180);
УбратьИзКонтекстногоМенюЛишниеКнопкиНаСервере();
-
+
+ // [+] #283 Мальков М.В. 2023-01-30
+ ОбновитьЗаголовокФормыНаКлиенте(ТекущийКлючНастроек);
+ // [-] #283 Мальков М.В. 2023-01-30
+
КонецПроцедуры
#КонецОбласти
@@ -109,7 +127,7 @@
МассивДобавляемыхРеквизитов = Новый Массив;
- ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
+ ЭтотОбъект.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
///// КОМАНДЫ //////////
// + #228 Пиганов Г.В. 2020.07.02
@@ -721,7 +739,10 @@
КлючНастроек = ПолучитьКлючНастроек();
ХранилищеОбщихНастроек.Сохранить(КлючНастроек,КлючНастроек,Неопределено);
пНастройкиКомпоновщика = Неопределено;
- ЗагрузитьСохраненныеНастройки(пНастройкиКомпоновщика);
+ // [+] #283 Мальков М.В. 2023-01-30
+ //ЗагрузитьСохраненныеНастройки(пНастройкиКомпоновщика);
+ ЗагрузитьСохраненныеНастройки(КлючНастроек, пНастройкиКомпоновщика);
+ // [-] #283 Мальков М.В. 2023-01-30
ОпределитьОтборНаСервере(пНастройкиКомпоновщика);
КонецПроцедуры
@@ -729,7 +750,29 @@
Функция ПолучитьКлючНастроек()
КлючНастроек = "Обработка.узКанбанДоска";
Возврат КлючНастроек;
-КонецФункции
+КонецФункции
+
+&НаСервере
+Функция ПолучитьТекущийКлючНастроек()
+
+ ТекущийКлючНастроекХранилище = "Обработка.узКД_ТекущийКлючНастроек";
+
+ Возврат ХранилищеОбщихНастроек.Загрузить(
+ ТекущийКлючНастроекХранилище, ТекущийКлючНастроекХранилище);
+
+КонецФункции
+
+&НаСервере
+Процедура СохранитьТекущийКлючНастроек()
+
+ ТекущийКлючНастроекХранилище = "Обработка.узКД_ТекущийКлючНастроек";
+
+ ХранилищеОбщихНастроек.Сохранить(
+ ТекущийКлючНастроекХранилище,
+ ТекущийКлючНастроекХранилище,
+ ТекущийКлючНастроек);
+
+КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗадачиНаСервере()
@@ -747,8 +790,11 @@
ОформлениеЦветаЗадачНаСервере();
КонецПроцедуры
-&НаСервере
-Процедура ЗагрузитьСохраненныеНастройки(пНастройкиКомпоновщика)
+&НаСервере
+// [+] #283 Мальков М.В. 2023-01-30
+//Процедура ЗагрузитьСохраненныеНастройки(пНастройкиКомпоновщика)
+Процедура ЗагрузитьСохраненныеНастройки(КлючНастроек, пНастройкиКомпоновщика)
+// [-] #283 Мальков М.В. 2023-01-30
// + #225 Урянский Д. 2020-07-06: настройки по умолчанию
Объект.ОтображениеФайловЗадач = Перечисления.узОтображениеФайловЗадачНаДоске.Отсутствует;
@@ -756,7 +802,10 @@
Объект.ОтображениеЧеклистаЗадач = Перечисления.узОтображениеЧеклистаЗадачНаДоске.Отсутствует;
// - #225 Урянский Д. 2020-07-06
- КлючНастроек = ПолучитьКлючНастроек();
+ // [+] #283 Мальков М.В. 2023-01-30
+ //КлючНастроек = ПолучитьКлючНастроек();
+ // [-] #283 Мальков М.В. 2023-01-30
+
СохраненныеНастройки = ХранилищеОбщихНастроек.Загрузить(КлючНастроек,КлючНастроек);
Если СохраненныеНастройки <> Неопределено Тогда
@@ -820,7 +869,7 @@
КонецПроцедуры
&НаСервере
-Процедура ОпределитьОтборНаСервере(пНастройкиКомпоновщика = Неопределено)
+Процедура ОпределитьОтборНаСервере(пНастройкиКомпоновщика = Неопределено) Экспорт
пОбъект = РеквизитФормыВЗначение("Объект");
МакетСКД = пОбъект.ПолучитьМакет("СхемаКомпоновкиДанных");
@@ -931,10 +980,15 @@
КонецФункции
&НаСервере
-Процедура СохранитьНастройки()
- НастройкиКомпоновщикаХранилище = Новый ХранилищеЗначения(КомпоновщикНастроекКомпоновкиДанных.Настройки);
+// [+] #283 Мальков М.В. 2023-01-30
+//Процедура СохранитьНастройки()
+Процедура СохранитьНастройки(КлючНастроек, Пользователь = Неопределено)
+// [-] #283 Мальков М.В. 2023-01-30
- КлючНастроек = ПолучитьКлючНастроек();
+ НастройкиКомпоновщикаХранилище = Новый ХранилищеЗначения(КомпоновщикНастроекКомпоновкиДанных.Настройки);
+ // [+] #283 Мальков М.В. 2023-01-30
+ //КлючНастроек = ПолучитьКлючНастроек();
+ // [-] #283 Мальков М.В. 2023-01-30
ДопПараметры = Новый Структура();
ДопПараметры.Вставить("ТЧНастройкиКолонок",Объект.ТЧНастройкиКолонок.Выгрузить());
ДопПараметры.Вставить("НастройкиКомпоновщикаХранилище",НастройкиКомпоновщикаХранилище);
@@ -945,7 +999,16 @@
ДопПараметры.Вставить("ОтображениеЧеклистаЗадач", Объект.ОтображениеЧеклистаЗадач);
ДопПараметры.Вставить("ПоказыватьЗаказчика",Объект.ПоказыватьЗаказчика);
// - #225 Урянский Д. 2020-07-06
- ХранилищеОбщихНастроек.Сохранить(КлючНастроек,КлючНастроек,ДопПараметры);
+
+ // [+] #283 Мальков М.В. 2023-01-30
+ //ХранилищеОбщихНастроек.Сохранить(КлючНастроек,КлючНастроек,ДопПараметры);
+ Если Пользователь = Неопределено Тогда
+ ХранилищеОбщихНастроек.Сохранить(КлючНастроек, КлючНастроек, ДопПараметры);
+ Иначе
+ ХранилищеОбщихНастроек.Сохранить(КлючНастроек, КлючНастроек, ДопПараметры, , "" + Пользователь);
+ КонецЕсли;
+ // [-] #283 Мальков М.В. 2023-01-30
+
КонецПроцедуры
#КонецОбласти
@@ -977,7 +1040,37 @@
&НаКлиенте
Процедура КомандаУстановитьСтандартныеНастройки(Команда)
- УстановитьСтандартныеНастройкиНаСервере();
+
+ УстановитьСтандартныеНастройкиНаСервере();
+
+ ТекущийКлючНастроек = ПолучитьКлючНастроек();
+
+ ОбновитьЗаголовокФормыНаКлиенте(ТекущийКлючНастроек);
+
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура ЗагрузитьВариантКомандаПеред(Команда)
+ ЗагрузитьВариантНаКлиенте();
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура СохранитьВариантКакКомандаПеред(Команда)
+ СохранитьВариантКакНаКлиенте();
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура СохранитьВариантКомандаПеред(Команда)
+ СохранитьВариантНаКлиенте();
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура СохранитьТекущийВариантВсемКоманда(Команда)
+ СохранитьТекущийВариантВсемНаСервере();
КонецПроцедуры
#КонецОбласти
@@ -1086,7 +1179,7 @@
Если РезультатФункции.Свойство("НеобходимоВыбратьСпринт") Тогда
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("МассивВыделенныхСтрок",МассивВыделенныхСтрок);
- ОповещениеОЗакрытии = Новый ОписаниеОповещения("ОбработатьВыборСпринта", ЭтаФорма, ДополнительныеПараметры);
+ ОповещениеОЗакрытии = Новый ОписаниеОповещения("ОбработатьВыборСпринта", ЭтотОбъект, ДополнительныеПараметры);
пОтбор = Новый Структура("СпринтЗавершен", Ложь);
ПараметрыОткрытияФормы = Новый Структура("Отбор", пОтбор);
@@ -1652,6 +1745,170 @@
//- #108 Дзеса Ігор (capitoshko) 04.10.2018
#КонецОбласти
+#Область Варианты
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура ЗагрузитьВариантНаКлиенте()
+
+ ПараметрыОткрытия = Новый Структура;
+ ПараметрыОткрытия.Вставить("ОсновнойКлючВарианта", ПолучитьКлючНастроек());
+ ПараметрыОткрытия.Вставить("ТекущийКлючВарианта", ТекущийКлючНастроек);
+
+ ОткрытьФорму("Обработка.узКанбанДоска.Форма.ФормаЗагрузкиВарианта",
+ ПараметрыОткрытия, ЭтотОбъект, , , ,
+ Новый ОписаниеОповещения("ЗагрузитьВариантНаКлиентеЗавершение", ЭтотОбъект),
+ РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
+
+КонецПроцедуры
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура ЗагрузитьВариантНаКлиентеЗавершение(Результат, ДополнительныеПараметры) Экспорт
+
+ Если Результат <> Неопределено Тогда
+
+ пНастройкиКомпоновщика = Неопределено;
+ СгенирироватьФормуЗаново = Истина;
+ ТекущийКлючНастроек = Результат;
+
+ ЗагрузитьСохраненныеНастройки(Результат, пНастройкиКомпоновщика);
+
+ ОбновитьЗаголовокФормыНаКлиенте(Результат);
+ ОпределитьОтборНаСервере(пНастройкиКомпоновщика);
+ КомандаОбновить(Неопределено);
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура СохранитьВариантКакНаКлиенте()
+
+ ПараметрыОткрытия = Новый Структура;
+ ПараметрыОткрытия.Вставить("ОсновнойКлючВарианта", ПолучитьКлючНастроек());
+ ПараметрыОткрытия.Вставить("ТекущийКлючВарианта", ТекущийКлючНастроек);
+
+ ОткрытьФорму("Обработка.узКанбанДоска.Форма.ФормаСохраненияВарианта",
+ ПараметрыОткрытия, ЭтотОбъект, , , ,
+ Новый ОписаниеОповещения("СохранитьВариантКакНаКлиентеЗавершение", ЭтотОбъект),
+ РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
+
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура СохранитьВариантКакНаКлиентеЗавершение(Результат, ДополнительныеПараметры) Экспорт
+
+ Если Результат <> Неопределено Тогда
+
+ ОсновнойКлюч = ПолучитьКлючНастроек();
+
+ Ключ = "";
+
+ Если Результат.Ключ = ОсновнойКлюч Тогда
+ Ключ = Результат.Ключ;
+ Иначе
+ Ключ = ОсновнойКлюч + "." + Результат.Представление;
+ КонецЕсли;
+
+ ТекущийКлючНастроек = Ключ;
+ СохранитьНастройки(Ключ);
+ ОбновитьЗаголовокФормыНаКлиенте(Ключ);
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура СохранитьВариантНаКлиенте()
+
+ Если Не ЗначениеЗаполнено(ТекущийКлючНастроек) Тогда
+ СохранитьВариантКакНаКлиенте();
+ Иначе
+ СохранитьНастройки(ТекущийКлючНастроек);
+ КонецЕсли;
+
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаСервере
+Процедура СохранитьТекущийВариантВсемНаСервере()
+
+ Отказ = Ложь;
+
+ Если ТекущийКлючНастроек = ПолучитьКлючНастроек() Тогда
+ Отказ = Истина;
+ Сообщить("Выбрана основная настройка");
+ КонецЕсли;
+
+ Если Не Отказ Тогда
+
+ МассивПользователей = ПолучитьМассивАктивныхПользователей();
+
+ Для Каждого Пользователь Из МассивПользователей Цикл
+ СохранитьНастройки(ТекущийКлючНастроек, Пользователь);
+ КонецЦикла;
+ КонецЕсли;
+
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура ОбновитьЗаголовокФормыНаКлиенте(Вариант)
+
+ ИмяВарианта = ПолучитьИмяВариантаНаКлиенте(Вариант);
+
+ АвтоЗаголовок = Ложь;
+ Заголовок = СтрШаблон("Канбан доска: %2", Заголовок, ИмяВарианта);
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область Общее
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаСервере
+Функция ПолучитьМассивАктивныхПользователей()
+
+ Массив = Новый Массив;
+
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | Пользователи.Ссылка КАК Ссылка
+ |ИЗ
+ | Справочник.Пользователи КАК Пользователи
+ |ГДЕ
+ | НЕ Пользователи.ПометкаУдаления";
+
+ РезультатЗапроса = Запрос.Выполнить();
+
+ ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
+
+ Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
+ Массив.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
+ КонецЦикла;
+
+ Возврат Массив
+
+КонецФункции
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Функция ПолучитьИмяВариантаНаКлиенте(Вариант)
+
+ ИмяВарианта = СтрЗаменить(Вариант, "Обработка.узКанбанДоска", "");
+ ИмяВарианта = СтрЗаменить(ИмяВарианта, ".", "");
+ ИмяВарианта = ?(ИмяВарианта = "", "Основной", ИмяВарианта);
+
+ Возврат ИмяВарианта
+
+КонецФункции
+
+#КонецОбласти
+// [-] #283 Мальков М.В. 2023-01-30
diff --git a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаЗагрузкиВарианта.xml b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаЗагрузкиВарианта.xml
new file mode 100644
index 000000000..1ccff1bd2
--- /dev/null
+++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаЗагрузкиВарианта.xml
@@ -0,0 +1,22 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаЗагрузкиВарианта/Ext/Form.xml b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаЗагрузкиВарианта/Ext/Form.xml
new file mode 100644
index 000000000..459fe3ab1
--- /dev/null
+++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаЗагрузкиВарианта/Ext/Form.xml
@@ -0,0 +1,200 @@
+
+
\ No newline at end of file
diff --git a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаЗагрузкиВарианта/Ext/Form/Module.bsl b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаЗагрузкиВарианта/Ext/Form/Module.bsl
new file mode 100644
index 000000000..5d45914bc
--- /dev/null
+++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаЗагрузкиВарианта/Ext/Form/Module.bsl
@@ -0,0 +1,93 @@
+
+#Область ОбработчикиСобытийФормы
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+ ИнициализироватьФормуНаСервере(Отказ, СтандартнаяОбработка);
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовШапкиФормы
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура СписокВариантовПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
+ Отказ = Истина;
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура СписокВариантовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
+ ЗагрузитьНаКлиенте();
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура УдалитьВариантКоманда(Команда)
+
+ ТекущиеДанные = Элементы.СписокВариантов.ТекущиеДанные;
+
+ Если ТекущиеДанные <> Неопределено Тогда
+ УдалитьВариантНаСервере(ТекущиеДанные);
+ КонецЕсли;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиКомандФормы
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура ЗагрузитьКоманда(Команда)
+ ЗагрузитьНаКлиенте();
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаСервере
+Процедура ИнициализироватьФормуНаСервере(Отказ, СтандартнаяОбработка)
+
+ Параметры.Свойство("ОсновнойКлючВарианта", ОсновнойКлючВарианта);
+
+ СписокВариантов = Обработки.узКанбанДоска.ПолучитьСписокВариантов(ОсновнойКлючВарианта);
+
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура ЗагрузитьНаКлиенте()
+
+ ТекущиеДанные = Элементы.СписокВариантов.ТекущиеДанные;
+ Вариант = "";
+
+ Если ТекущиеДанные <> Неопределено Тогда
+ Вариант = ТекущиеДанные.Значение;
+ КонецЕсли;
+
+ Закрыть(Вариант);
+
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаСервере
+Процедура УдалитьВариантНаСервере(ТекущиеДанные)
+
+ Пользователь = Пользователи.ТекущийПользователь();
+
+ ХранилищеОбщихНастроек.Удалить(ТекущиеДанные.Значение, ТекущиеДанные.Значение, "" + Пользователь);
+ СписокВариантов = Обработки.узКанбанДоска.ПолучитьСписокВариантов(ОсновнойКлючВарианта);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура КомандаЗакрыть(Команда)
+ Закрыть();
+КонецПроцедуры
+
+#КонецОбласти
\ No newline at end of file
diff --git a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаСохраненияВарианта.xml b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаСохраненияВарианта.xml
new file mode 100644
index 000000000..5446e61a2
--- /dev/null
+++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаСохраненияВарианта.xml
@@ -0,0 +1,22 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаСохраненияВарианта/Ext/Form.xml b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаСохраненияВарианта/Ext/Form.xml
new file mode 100644
index 000000000..9f73fe2ed
--- /dev/null
+++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаСохраненияВарианта/Ext/Form.xml
@@ -0,0 +1,209 @@
+
+
\ No newline at end of file
diff --git a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаСохраненияВарианта/Ext/Form/Module.bsl b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаСохраненияВарианта/Ext/Form/Module.bsl
new file mode 100644
index 000000000..2052367e6
--- /dev/null
+++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаСохраненияВарианта/Ext/Form/Module.bsl
@@ -0,0 +1,119 @@
+
+#Область ОбработчикиСобытийФормы
+
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+ ИнициализироватьФормуНаСервере(Отказ, СтандартнаяОбработка);
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовШапкиФормы
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура СписокВариантовПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
+ Отказ = Истина;
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура СписокВариантовПриАктивизацииСтроки(Элемент)
+
+ ТекущиеДанные = Элементы.СписокВариантов.ТекущиеДанные;
+
+ Если ТекущиеДанные <> Неопределено Тогда
+
+ Вариант = ТекущиеДанные.Представление;
+ Ключ = ТекущиеДанные.Значение;
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура ВариантПриИзменении(Элемент)
+
+ КлючПоиска = "";
+
+ Если ЗначениеЗаполнено(Вариант) Тогда
+ Для Каждого Строка Из СписокВариантов Цикл
+
+ Если Не ЗначениеЗаполнено(КлючПоиска)
+ И Строка.Представление = Вариант Тогда
+ КлючПоиска = Строка.Значение;
+ КонецЕсли;
+
+ КонецЦикла;
+ КонецЕсли;
+
+ Если Не ЗначениеЗаполнено(КлючПоиска) Тогда
+ КлючПоиска = ОсновнойКлючВарианта + "." + Вариант;
+ КонецЕсли;
+
+ Ключ = КлючПоиска;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиКомандФормы
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура СохранитьКоманда(Команда)
+
+ Если Не ЗначениеЗаполнено(Вариант) Тогда
+ ПоказатьПредупреждение(, "Не заполнено значение варианта",, "Внимание");
+ ИначеЕсли СписокВариантов.НайтиПоЗначению(Ключ) <> Неопределено Тогда
+
+ Оповещение = Новый ОписаниеОповещения("СохранитьКомандаЗавершение", ЭтаФорма);
+ ПоказатьВопрос(Оповещение, "Вы хотите перезаписать вариант?", РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Да, "Внимание");
+
+ Иначе
+
+ Данные = Новый Структура("Ключ, Представление", Ключ, Вариант);
+ Закрыть(Данные);
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаКлиенте
+Процедура СохранитьКомандаЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
+
+ Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
+ Данные = Новый Структура("Ключ, Представление", Ключ, Вариант);
+ Закрыть(Данные);
+ КонецЕсли;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+// [+] #283 Мальков М.В. 2023-01-30
+&НаСервере
+Процедура ИнициализироватьФормуНаСервере(Отказ, СтандартнаяОбработка)
+
+ Параметры.Свойство("ОсновнойКлючВарианта", ОсновнойКлючВарианта);
+ Параметры.Свойство("ТекущийКлючВарианта", ТекущийКлючВарианта);
+
+ СписокВариантов = Обработки.узКанбанДоска.ПолучитьСписокВариантов(ОсновнойКлючВарианта);
+
+ Если СписокВариантов.Количество() > 0
+ И СписокВариантов.НайтиПоЗначению(ТекущийКлючВарианта) <> Неопределено Тогда
+
+ Строка = СписокВариантов.НайтиПоЗначению(ТекущийКлючВарианта);
+ Вариант = Строка.Представление;
+ Ключ = ТекущийКлючВарианта;
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+#КонецОбласти
+