From abe23d791da34ec6f14c59ff3cf7d45d82385db3 Mon Sep 17 00:00:00 2001
From: pallid <1005220@mail.ru>
Date: Tue, 15 Aug 2017 01:07:44 +0300
Subject: [PATCH] =?UTF-8?q?#38=20=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?=
 =?UTF-8?q?=D1=82=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D0=B7=D0=B0=D0=B4=D0=B0?=
 =?UTF-8?q?=D1=87=D0=B5,=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?=
 =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/cf/Catalogs/Пользователи.xml              | 43 +++++++++++++
 .../Forms/ФормаЭлемента/Ext/Form.xml          |  5 ++
 src/cf/Catalogs/узЗадачи.xml                  | 25 ++++++++
 .../Ext/CommandModule.bsl                     | 14 +++++
 .../Catalogs/узЗадачи/Ext/ManagerModule.bsl   | 38 -----------
 .../узЗадачи/Forms/ФормаСписка/Ext/Form.xml   |  6 --
 .../Forms/ФормаСписка/Ext/Form/Module.bsl     | 50 ---------------
 .../узОбщийМодульКлиент/Ext/Module.bsl        | 56 ++++++++++++++++-
 .../узОбщийМодульСервер/Ext/Module.bsl        | 42 +++++++++++++
 .../узСловарьПоУмолчанию/Ext/Template.xml     | 63 ++++++++++++++++++-
 .../Forms/ФормаДинамическая/Ext/Form.xml      | 20 ++++++
 .../Forms/ФормаДинамическая/Ext/Form/Module.bsl | 26 +++++++-
 12 files changed, 290 insertions(+), 98 deletions(-)
 create mode 100644 src/cf/Catalogs/узЗадачи/Commands/КомандаСоздатьИерархиюЗадачНаДиске/Ext/CommandModule.bsl

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 @@
 					<FullTextSearch>Use</FullTextSearch>
 				</Properties>
 			</Attribute>
+			<Attribute uuid="dc02bbdd-d52b-4eb9-8ff1-a57d4e32cc75">
+				<Properties>
+					<Name>узКаталогПользователя</Name>
+					<Synonym>
+						<v8:item>
+							<v8:lang>ru</v8:lang>
+							<v8:content>Каталог пользователя</v8:content>
+						</v8:item>
+					</Synonym>
+					<Comment/>
+					<Type>
+						<v8:Type>xs:string</v8:Type>
+						<v8:StringQualifiers>
+							<v8:Length>255</v8:Length>
+							<v8:AllowedLength>Variable</v8:AllowedLength>
+						</v8:StringQualifiers>
+					</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:type="xs:string"/>
+					<FillChecking>DontCheck</FillChecking>
+					<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
+					<ChoiceParameterLinks/>
+					<ChoiceParameters/>
+					<QuickChoice>Auto</QuickChoice>
+					<CreateOnInput>Auto</CreateOnInput>
+					<ChoiceForm/>
+					<LinkByType/>
+					<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
+					<Use>ForItem</Use>
+					<Indexing>DontIndex</Indexing>
+					<FullTextSearch>Use</FullTextSearch>
+				</Properties>
+			</Attribute>
 			<TabularSection uuid="245f870e-a53a-4d86-aa0a-c0c7709b8acb">
 				<InternalInfo>
 					<xr:GeneratedType name="CatalogTabularSection.Пользователи.ДополнительныеРеквизиты" category="TabularSection">
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.</v8:c
 							<ContextMenu name="узПользовательХранилищаКонтекстноеМеню" id="355"/>
 							<ExtendedTooltip name="узПользовательХранилищаРасширеннаяПодсказка" id="356"/>
 						</InputField>
+						<InputField name="узКаталогПользователя" id="357">
+							<DataPath>Объект.узКаталогПользователя</DataPath>
+							<ContextMenu name="узКаталогПользователяКонтекстноеМеню" id="358"/>
+							<ExtendedTooltip name="узКаталогПользователяРасширеннаяПодсказка" id="359"/>
+						</InputField>
 					</ChildItems>
 				</UsualGroup>
 				<InputField name="ФизическоеЛицо" id="296">
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 @@
 					<Shortcut/>
 				</Properties>
 			</Command>
+			<Command uuid="95c477f0-c85c-43c0-a11c-68c351f5ceee">
+				<Properties>
+					<Name>КомандаСоздатьИерархиюЗадачНаДиске</Name>
+					<Synonym>
+						<v8:item>
+							<v8:lang>ru</v8:lang>
+							<v8:content>Создать иерархию задач на диске</v8:content>
+						</v8:item>
+					</Synonym>
+					<Comment/>
+					<Group>CommandGroup.узДействияЗадачи</Group>
+					<CommandParameterType>
+						<v8:Type>cfg:CatalogRef.узЗадачи</v8:Type>
+					</CommandParameterType>
+					<ParameterUseMode>Multiple</ParameterUseMode>
+					<ModifiesData>false</ModifiesData>
+					<Representation>PictureAndText</Representation>
+					<ToolTip/>
+					<Picture>
+						<xr:Ref>CommonPicture.Структура</xr:Ref>
+						<xr:LoadTransparent>true</xr:LoadTransparent>
+					</Picture>
+					<Shortcut/>
+				</Properties>
+			</Command>
 		</ChildObjects>
 	</Catalog>
 </MetaDataObject>
\ 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 @@
 				<CommandName>Form.Command.КомандаПоказатьСкрытьЗадачи</CommandName>
 				<ExtendedTooltip name="ФормаКомандаПоказатьСкрытьЗадачиРасширеннаяПодсказка" id="91"/>
 			</Button>
-			<Button name="ФормаСоздатьИерархиюЗадачНаДиске" id="95">
-				<Type>CommandBarButton</Type>
-				<OnlyInAllActions>false</OnlyInAllActions>
-				<CommandName>Form.Command.СоздатьИерархиюЗадачНаДиске</CommandName>
-				<ExtendedTooltip name="ФормаСоздатьИерархиюЗадачНаДискеРасширеннаяПодсказка" id="96"/>
-			</Button>
 		</ChildItems>
 	</AutoCommandBar>
 	<Events>
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 @@
 			</c>
 		</row>
 	</rowsItem>
+	<rowsItem>
+		<index>89</index>
+		<row>
+			<c>
+				<c>
+					<f>16</f>
+					<tl>
+						<v8:item>
+							<v8:lang>ru</v8:lang>
+							<v8:content>89</v8:content>
+						</v8:item>
+					</tl>
+				</c>
+			</c>
+			<c>
+				<c>
+					<f>13</f>
+				</c>
+			</c>
+			<c>
+				<c>
+					<f>15</f>
+					<tl>
+						<v8:item>
+							<v8:lang>ru</v8:lang>
+							<v8:content>Обработка.узКанбанДоска.ФормаДинамическая</v8:content>
+						</v8:item>
+					</tl>
+				</c>
+			</c>
+			<c>
+				<c>
+					<f>14</f>
+					<tl>
+						<v8:item>
+							<v8:lang>ru</v8:lang>
+							<v8:content>Создать иерархию задач на диске</v8:content>
+						</v8:item>
+					</tl>
+				</c>
+			</c>
+			<c>
+				<c>
+					<f>11</f>
+					<tl>
+						<v8:item>
+							<v8:lang>ru</v8:lang>
+							<v8:content>Create a hierarchy of tasks on the disk</v8:content>
+						</v8:item>
+					</tl>
+				</c>
+			</c>
+			<c>
+				<c>
+					<f>17</f>
+				</c>
+			</c>
+		</row>
+	</rowsItem>
 	<templateMode>true</templateMode>
 	<defaultFormatIndex>18</defaultFormatIndex>
-	<height>89</height>
-	<vgRows>89</vgRows>
+	<height>90</height>
+	<vgRows>90</vgRows>
 	<line width="1" gap="false">
 		<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">Solid</v8ui:style>
 	</line>
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 @@
 			<Shortcut>Ctrl+Shift+C</Shortcut>
 			<Action>КомандаСкопироватьКомментарийВКоде</Action>
 		</Command>
+		<Command name="КомандаСоздатьИерархиюЗадачНаДиске" id="9">
+			<Title>
+				<v8:item>
+					<v8:lang>ru</v8:lang>
+					<v8:content>Создать иерархию задач на диске</v8:content>
+				</v8:item>
+			</Title>
+			<ToolTip>
+				<v8:item>
+					<v8:lang>ru</v8:lang>
+					<v8:content>Создать иерархию задач на диске</v8:content>
+				</v8:item>
+			</ToolTip>
+			<Picture>
+				<xr:Ref>CommonPicture.Структура</xr:Ref>
+				<xr:LoadTransparent>true</xr:LoadTransparent>
+			</Picture>
+			<Action>КомандаСоздатьИерархиюЗадачНаДиске</Action>
+			<Representation>TextPicture</Representation>
+		</Command>
 	</Commands>
 </Form>
\ 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);
+		Возврат;
+	Конецесли;		
+	Массив = ПолучитьМассивЗадачПоВыделеннымСтрокам(МассивВыделенныхСтрок);
+	узОбщийМодульКлиент.СоздатьИерархиюЗадачНаДиске(Массив);	
+	Оповестить("КомандаСоздатьИерархиюЗадачНаДиске");
+КонецПроцедуры
 
 #КонецОбласти