diff --git a/src/cf/Catalogs/Пользователи.xml b/src/cf/Catalogs/Пользователи.xml
index bb38283f8..9bdfd44d9 100644
--- a/src/cf/Catalogs/Пользователи.xml
+++ b/src/cf/Catalogs/Пользователи.xml
@@ -1074,6 +1074,49 @@
Use
+
+
+ узКаталогПользователя
+
+
+ ru
+ Каталог пользователя
+
+
+
+
+ xs:string
+
+ 255
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+ DontIndex
+ Use
+
+
diff --git a/src/cf/Catalogs/Пользователи/Forms/ФормаЭлемента/Ext/Form.xml b/src/cf/Catalogs/Пользователи/Forms/ФормаЭлемента/Ext/Form.xml
index a6b22f793..1135f8c85 100644
--- a/src/cf/Catalogs/Пользователи/Forms/ФормаЭлемента/Ext/Form.xml
+++ b/src/cf/Catalogs/Пользователи/Forms/ФормаЭлемента/Ext/Form.xml
@@ -350,6 +350,11 @@ Click "Write" to sort out the problem and not to show the warning message.
+
+ Объект.узКаталогПользователя
+
+
+
diff --git a/src/cf/Catalogs/узЗадачи.xml b/src/cf/Catalogs/узЗадачи.xml
index 6b91c848b..eed6c3b03 100644
--- a/src/cf/Catalogs/узЗадачи.xml
+++ b/src/cf/Catalogs/узЗадачи.xml
@@ -3141,6 +3141,31 @@
+
+
+ КомандаСоздатьИерархиюЗадачНаДиске
+
+
+ ru
+ Создать иерархию задач на диске
+
+
+
+ CommandGroup.узДействияЗадачи
+
+ cfg:CatalogRef.узЗадачи
+
+ Multiple
+ false
+ PictureAndText
+
+
+ CommonPicture.Структура
+ true
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/Catalogs/узЗадачи/Commands/КомандаСоздатьИерархиюЗадачНаДиске/Ext/CommandModule.bsl b/src/cf/Catalogs/узЗадачи/Commands/КомандаСоздатьИерархиюЗадачНаДиске/Ext/CommandModule.bsl
new file mode 100644
index 000000000..439d5a7a7
--- /dev/null
+++ b/src/cf/Catalogs/узЗадачи/Commands/КомандаСоздатьИерархиюЗадачНаДиске/Ext/CommandModule.bsl
@@ -0,0 +1,14 @@
+
+&НаКлиенте
+Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
+
+ Если ТипЗнч(ПараметрКоманды) = Тип("СправочникСсылка.узЗадачи") Тогда
+ Массив = Новый Массив;
+ Массив.Добавить(ПараметрКоманды);
+ ИначеЕсли ТипЗнч(ПараметрКоманды) = Тип("Массив") Тогда
+ Массив = ПараметрКоманды;
+ КонецЕсли;
+
+ узОбщийМодульКлиент.СоздатьИерархиюЗадачНаДиске(Массив);
+
+КонецПроцедуры
diff --git a/src/cf/Catalogs/узЗадачи/Ext/ManagerModule.bsl b/src/cf/Catalogs/узЗадачи/Ext/ManagerModule.bsl
index 6f1c143a2..3899cf41b 100644
--- a/src/cf/Catalogs/узЗадачи/Ext/ManagerModule.bsl
+++ b/src/cf/Catalogs/узЗадачи/Ext/ManagerModule.bsl
@@ -50,41 +50,3 @@
Возврат пКомментарииВКоде;
КонецФункции
-
-Функция ПолучитьПолныйПутьЗадачи(Задача) Экспорт
-
- Массив = Новый Массив;
-
- ЗаполнитьМассивИерархии(Задача, Массив);
-
- Разделитель = ПолучитьРазделительПутиКлиента();
- Путь = "";
-
- Для Каждого СтрокаМассива ИЗ Массив Цикл
- Путь = СтрокаМассива + Разделитель + Путь;
- КонецЦикла;
-
- Возврат Путь;
-
-КонецФункции
-
-Процедура ЗаполнитьМассивИерархии(Задача, Массив)
-
- НазваниеДляПапки = СобратьНазваниеДляПапки(Задача.Наименование, Задача.Код);
- Массив.Добавить(НазваниеДляПапки);
-
- Если ЗначениеЗаполнено(Задача.Родитель) Тогда
- ЗаполнитьМассивИерархии(Задача.Родитель, Массив);
- КонецЕсли;
-
-КонецПроцедуры
-
-Функция СобратьНазваниеДляПапки(Наименование, Код)
-
- Шаблон = "#%1 %2";
- СокращенноеНаименование = Лев(Наименование, 30);
- Результат = СтрШаблон(Шаблон, Код, СокращенноеНаименование);
-
- Возврат Результат;
-
-КонецФункции
\ No newline at end of file
diff --git a/src/cf/Catalogs/узЗадачи/Forms/ФормаСписка/Ext/Form.xml b/src/cf/Catalogs/узЗадачи/Forms/ФормаСписка/Ext/Form.xml
index 279202317..c6a06ad7d 100644
--- a/src/cf/Catalogs/узЗадачи/Forms/ФормаСписка/Ext/Form.xml
+++ b/src/cf/Catalogs/узЗадачи/Forms/ФормаСписка/Ext/Form.xml
@@ -41,12 +41,6 @@
Form.Command.КомандаПоказатьСкрытьЗадачи
-
diff --git a/src/cf/Catalogs/узЗадачи/Forms/ФормаСписка/Ext/Form/Module.bsl b/src/cf/Catalogs/узЗадачи/Forms/ФормаСписка/Ext/Form/Module.bsl
index 5b5aa1a9b..920d559cd 100644
--- a/src/cf/Catalogs/узЗадачи/Forms/ФормаСписка/Ext/Form/Module.bsl
+++ b/src/cf/Catalogs/узЗадачи/Forms/ФормаСписка/Ext/Form/Module.bsl
@@ -67,53 +67,3 @@
ПараметрКомпоновки = Список_Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("СкрыватьЗадачиСОпределеннымСтатусом"));
Список_Параметры.УстановитьЗначениеПараметра("СкрыватьЗадачиСОпределеннымСтатусом",НЕ ПараметрКомпоновки.Значение);
КонецПроцедуры
-
-&НаСервере
-Функция ПолучитьПолныйПутьЗадачи(ЗадачаСсылка)
-
- ПолныйПутьЗадачи = Справочники.узЗадачи.ПолучитьПолныйПутьЗадачи(ЗадачаСсылка);
- Возврат ПолныйПутьЗадачи;
-
-КонецФункции
-
-&НаКлиенте
-Процедура СоздатьИерархиюЗадачНаДиске(Команда)
-
- Каталог = ВыбратьКаталог(РежимДиалогаВыбораФайла.ВыборКаталога, "Выберите каталог");
-
- Если Каталог = Неопределено тогда
- Возврат;
- КонецЕсли;
-
- ПолныйПутьЗадачи = ПолучитьПолныйПутьЗадачи(Элементы.Список.ТекущиеДанные.Ссылка);
-
- Если НЕ ЗначениеЗаполнено(ПолныйПутьЗадачи) Тогда
- Сообщить("Не удалось получить путь для задачи");
- Возврат;
- КонецЕсли;
-
- ОбъедененныйПуть = Каталог + ПолучитьРазделительПутиКлиента() + ПолныйПутьЗадачи;
-
- ОписаниеОповещения = Новый ОписаниеОповещения("СоздатьИерархиюЗадачНаДиске_Продолжение", ЭтотОбъект);
- НачатьСозданиеКаталога(ОписаниеОповещения, ОбъедененныйПуть);
-
-КонецПроцедуры
-
-Процедура СоздатьИерархиюЗадачНаДиске_Продолжение(ИмяКаталога, ДополнительныеПараметры) Экспорт
-
- Сообщить("Создан каталог "+ИмяКаталога);
-
-КонецПроцедуры
-
-&НаКлиенте
-Функция ВыбратьКаталог(Режим, Заголовок)
-
- Диалог = Новый ДиалогВыбораФайла(Режим);
- Диалог.Заголовок = Заголовок;
- Диалог.ПредварительныйПросмотр = Ложь;
-
- Если Диалог.Выбрать() Тогда
- Возврат Диалог.Каталог;
- КонецЕсли;
-
-КонецФункции
diff --git a/src/cf/CommonModules/узОбщийМодульКлиент/Ext/Module.bsl b/src/cf/CommonModules/узОбщийМодульКлиент/Ext/Module.bsl
index a439f3ba5..5e2696cbe 100644
--- a/src/cf/CommonModules/узОбщийМодульКлиент/Ext/Module.bsl
+++ b/src/cf/CommonModules/узОбщийМодульКлиент/Ext/Module.bsl
@@ -15,4 +15,58 @@
ПоказатьОповещениеПользователя(пТекстСообщения);
Возврат ТекстДляКопирования;
-КонецФункции
\ No newline at end of file
+КонецФункции
+
+Процедура СоздатьИерархиюЗадачНаДиске(Массив) Экспорт
+
+ Пользователь = ПользователиКлиентСервер.ТекущийПользователь();
+ Каталог = узОбщийМодульСервер.ЗначениеРеквизитаОбъекта(Пользователь, "узКаталогПользователя");
+
+ Если НЕ ЗначениеЗаполнено(Каталог) Тогда
+ Каталог = ВыбратьКаталог(РежимДиалогаВыбораФайла.ВыборКаталога, "Выберите каталог");
+
+ Если Каталог = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+ КонецЕсли;
+
+ Для Каждого СтрокаМассива Из Массив Цикл
+
+ ПолныйПутьЗадачи = узОбщийМодульСервер.ПолучитьПолныйПутьЗадачи(СтрокаМассива);
+
+ Если НЕ ЗначениеЗаполнено(ПолныйПутьЗадачи) Тогда
+ Сообщить("Не удалось получить путь для задачи "+СтрокаМассива);
+ Возврат;
+ КонецЕсли;
+
+ ОбъедененныйПуть = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Каталог) + ПолныйПутьЗадачи;
+
+ ОписаниеОповещения = Новый ОписаниеОповещения("СоздатьИерархиюЗадачНаДиске_Продолжение", ЭтотОбъект);
+ НачатьСозданиеКаталога(ОписаниеОповещения, ОбъедененныйПуть);
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура СоздатьИерархиюЗадачНаДиске_Продолжение(ИмяКаталога, ДополнительныеПараметры) Экспорт
+
+ КаталогНаДиске = Новый Файл(ИмяКаталога);
+ Если КаталогНаДиске.Существует() Тогда
+ Сообщить("Создан каталог "+ИмяКаталога);
+ Иначе
+ Сообщить("Не удалось создать каталог "+ИмяКаталога);
+ КонецЕсли;
+
+КонецПроцедуры
+
+Функция ВыбратьКаталог(Режим, Заголовок)
+
+ Диалог = Новый ДиалогВыбораФайла(Режим);
+ Диалог.Заголовок = Заголовок;
+ Диалог.ПредварительныйПросмотр = Ложь;
+
+ Если Диалог.Выбрать() Тогда
+ Возврат Диалог.Каталог;
+ КонецЕсли;
+
+КонецФункции
diff --git a/src/cf/CommonModules/узОбщийМодульСервер/Ext/Module.bsl b/src/cf/CommonModules/узОбщийМодульСервер/Ext/Module.bsl
index a1d37e6a5..cdea6e768 100644
--- a/src/cf/CommonModules/узОбщийМодульСервер/Ext/Module.bsl
+++ b/src/cf/CommonModules/узОбщийМодульСервер/Ext/Module.bsl
@@ -240,3 +240,45 @@
Возврат РегистрыСведений.узСловарь.ПолучитьСтруктуруСообщений(МассивКодовСообщений);
КонецФункции
+Функция ПолучитьПолныйПутьЗадачи(Задача) Экспорт
+
+ Массив = Новый Массив;
+
+ ЗаполнитьМассивИерархии(Задача, Массив);
+
+ Разделитель = ПолучитьРазделительПутиКлиента();
+ Путь = "";
+
+ Для Каждого СтрокаМассива ИЗ Массив Цикл
+ Путь = СтрокаМассива + Разделитель + Путь;
+ КонецЦикла;
+
+ Возврат Путь;
+
+КонецФункции
+
+Процедура ЗаполнитьМассивИерархии(Задача, Массив)
+
+ НазваниеДляПапки = СобратьНазваниеДляПапки(Задача.Наименование, Задача.Код);
+ Массив.Добавить(НазваниеДляПапки);
+
+ Если ЗначениеЗаполнено(Задача.Родитель) Тогда
+ ЗаполнитьМассивИерархии(Задача.Родитель, Массив);
+ КонецЕсли;
+
+КонецПроцедуры
+
+Функция СобратьНазваниеДляПапки(Наименование, Код)
+
+ Шаблон = "#%1 %2";
+ СокращенноеНаименование = Лев(Наименование, 30);
+ ОбработанноеНаименование = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(СокращенноеНаименование, "");
+ Результат = СтрШаблон(Шаблон, Код, ОбработанноеНаименование);
+
+ Возврат Результат;
+
+КонецФункции
+
+Функция ЗначениеРеквизитаОбъекта(Ссылка, Реквизит) Экспорт
+ Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, Реквизит);
+КонецФункции
\ No newline at end of file
diff --git a/src/cf/CommonTemplates/узСловарьПоУмолчанию/Ext/Template.xml b/src/cf/CommonTemplates/узСловарьПоУмолчанию/Ext/Template.xml
index cd5b408a0..838671632 100644
--- a/src/cf/CommonTemplates/узСловарьПоУмолчанию/Ext/Template.xml
+++ b/src/cf/CommonTemplates/узСловарьПоУмолчанию/Ext/Template.xml
@@ -5526,10 +5526,69 @@
+
+ 89
+
+
+
+ 16
+
+
+ ru
+ 89
+
+
+
+
+
+
+ 13
+
+
+
+
+ 15
+
+
+ ru
+ Обработка.узКанбанДоска.ФормаДинамическая
+
+
+
+
+
+
+ 14
+
+
+ ru
+ Создать иерархию задач на диске
+
+
+
+
+
+
+ 11
+
+
+ ru
+ Create a hierarchy of tasks on the disk
+
+
+
+
+
+
+ 17
+
+
+
+
true
18
- 89
- 89
+ 90
+ 90
Solid
diff --git a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml
index 6f1abc1b3..97eeb58a2 100644
--- a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml
+++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml
@@ -518,5 +518,25 @@
Ctrl+Shift+C
КомандаСкопироватьКомментарийВКоде
+
+
+
+ ru
+ Создать иерархию задач на диске
+
+
+
+
+ ru
+ Создать иерархию задач на диске
+
+
+
+ CommonPicture.Структура
+ true
+
+ КомандаСоздатьИерархиюЗадачНаДиске
+ TextPicture
+
\ 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 61880c234..c352d331b 100644
--- a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl
+++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl
@@ -225,6 +225,7 @@
МассивКодовСообщений.Добавить(74);//Не следить за задачей
МассивКодовСообщений.Добавить(81);//Добавить в текущие дела
МассивКодовСообщений.Добавить(83);//Скопировать комментарий в коде Copy the comment in the code
+ МассивКодовСообщений.Добавить(89);//Создать иерархию задач на диске
СтруктураСообщений = РегистрыСведений.узСловарь.ПолучитьСтруктуруСообщений(МассивКодовСообщений);
@@ -256,7 +257,12 @@
пКомандаНеСледитьЗаЗадачей = пЭлементыФормы.Добавить(ИменаЭлементов.ИмяКомандыНеСледитьЗаЗадачей, Тип("КнопкаФормы"), пЭлементТЧЗадачи.КонтекстноеМеню);
пКомандаНеСледитьЗаЗадачей.Заголовок=СтруктураСообщений.Текст74;
пКомандаНеСледитьЗаЗадачей.ИмяКоманды="КомандаНеСледитьЗаЗадачей";
- пКомандаНеСледитьЗаЗадачей.Отображение = ОтображениеКнопки.КартинкаИТекст;
+ пКомандаНеСледитьЗаЗадачей.Отображение = ОтображениеКнопки.КартинкаИТекст;
+
+ пКомандаНеСледитьЗаЗадачей = пЭлементыФормы.Добавить(ИменаЭлементов.ИмяКомандыСоздатьИерархиюЗадачНаДиске, Тип("КнопкаФормы"), пЭлементТЧЗадачи.КонтекстноеМеню);
+ пКомандаНеСледитьЗаЗадачей.Заголовок=СтруктураСообщений.Текст89;
+ пКомандаНеСледитьЗаЗадачей.ИмяКоманды="КомандаСоздатьИерархиюЗадачНаДиске";
+ пКомандаНеСледитьЗаЗадачей.Отображение = ОтображениеКнопки.КартинкаИТекст;
// ****** Группа формы "Карточка задачи" ***********
@@ -335,6 +341,7 @@
ИмяКомандыНеСледитьЗаЗадачей = ИмяКолонки + "_ТЧЗадачи_КомандаНеСледитьЗаЗадачей";
ИмяКомандыДобавитьВТекущиеДела = ИмяКолонки + "_ТЧЗадачи_КомандаДобавитьВТекущиеДела";
ИмяКомандыСкопироватьКомментарийВКоде = ИмяКолонки + "_ТЧЗадачи_КомандаСкопироватьКомментарийВКоде";
+ ИмяКомандыСоздатьИерархиюЗадачНаДиске = ИмяКолонки + "_ТЧЗадачи_КомандаСоздатьИерархиюЗадачНаДиске";
ИмяКарточкаЗадачи = ИмяКолонки + "_ТЧЗадачиКарточкаЗадачи";
ИмяКарточкаЗадачи_НижняяЧасть = ИмяКолонки + "_ТЧЗадачиКарточкаЗадачи_НижняяЧасть";
@@ -354,6 +361,7 @@
РезультатФункции.Вставить("ИмяКомандыНеСледитьЗаЗадачей",ИмяКомандыНеСледитьЗаЗадачей);
РезультатФункции.Вставить("ИмяКомандыДобавитьВТекущиеДела",ИмяКомандыДобавитьВТекущиеДела);
РезультатФункции.Вставить("ИмяКомандыСкопироватьКомментарийВКоде",ИмяКомандыСкопироватьКомментарийВКоде);
+ РезультатФункции.Вставить("ИмяКомандыСоздатьИерархиюЗадачНаДиске",ИмяКомандыСоздатьИерархиюЗадачНаДиске);
РезультатФункции.Вставить("ИмяКарточкаЗадачи",ИмяКарточкаЗадачи);
РезультатФункции.Вставить("ИмяКарточкаЗадачи_НижняяЧасть",ИмяКарточкаЗадачи_НижняяЧасть);
@@ -972,6 +980,22 @@
Возврат пКомментарииВКоде;
КонецФункции
+&НаКлиенте
+Процедура КомандаСоздатьИерархиюЗадачНаДиске(Команда)
+ СтрокаТЧ = Элементы[ИмяАктивнойТЧ].ТекущиеДанные;
+ Если СтрокаТЧ = Неопределено тогда
+ узОбщийМодульСервер.узСообщить("Выберите задачи, для которых хотите создать иерархию задач на диске",82);
+ Возврат;
+ Конецесли;
+ МассивВыделенныхСтрок = Элементы[ИмяАктивнойТЧ].ВыделенныеСтроки;
+ Если МассивВыделенныхСтрок.Количество() = 0 Тогда
+ узОбщийМодульСервер.узСообщить("Выберите задачи, для которых хотите создать иерархию задач на диске",82);
+ Возврат;
+ Конецесли;
+ Массив = ПолучитьМассивЗадачПоВыделеннымСтрокам(МассивВыделенныхСтрок);
+ узОбщийМодульКлиент.СоздатьИерархиюЗадачНаДиске(Массив);
+ Оповестить("КомандаСоздатьИерархиюЗадачНаДиске");
+КонецПроцедуры
#КонецОбласти