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 + ForItem + 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 КомандаСкопироватьКомментарийВКоде + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Создать иерархию задач на диске</v8:content> + </v8:item> + + + + 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); + Возврат; + Конецесли; + Массив = ПолучитьМассивЗадачПоВыделеннымСтрокам(МассивВыделенныхСтрок); + узОбщийМодульКлиент.СоздатьИерархиюЗадачНаДиске(Массив); + Оповестить("КомандаСоздатьИерархиюЗадачНаДиске"); +КонецПроцедуры #КонецОбласти