diff --git a/src/cf/Catalogs/узЗадачи.xml b/src/cf/Catalogs/узЗадачи.xml index d4d87846d..024aad4b4 100644 --- a/src/cf/Catalogs/узЗадачи.xml +++ b/src/cf/Catalogs/узЗадачи.xml @@ -3221,6 +3221,39 @@ <Shortcut>Ctrl+Shift+F</Shortcut> </Properties> </Command> + <Command uuid="055e7596-bb91-4c07-8a20-cb27e6375617"> + <Properties> + <Name>КомандаОткрытьПапкуЗадачиНаДиске</Name> + <Synonym> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Открыть папку задачи на диске</v8:content> + </v8:item> + <v8:item> + <v8:lang>en</v8:lang> + <v8:content>Create a file for the task on disk</v8:content> + </v8:item> + <v8:item> + <v8:lang>ro</v8:lang> + <v8:content>Create a file for the task on disk</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>Ctrl+Shift+O</Shortcut> + </Properties> + </Command> </ChildObjects> </Catalog> -</MetaDataObject> \ No newline at end of file +</MetaDataObject> diff --git a/src/cf/Catalogs/узЗадачи/Commands/КомандаОткрытьПапкуЗадачиНаДиске/Ext/CommandModule.bsl b/src/cf/Catalogs/узЗадачи/Commands/КомандаОткрытьПапкуЗадачиНаДиске/Ext/CommandModule.bsl new file mode 100644 index 000000000..90e2f0209 --- /dev/null +++ b/src/cf/Catalogs/узЗадачи/Commands/КомандаОткрытьПапкуЗадачиНаДиске/Ext/CommandModule.bsl @@ -0,0 +1,14 @@ + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + Если ТипЗнч(ПараметрКоманды) = Тип("СправочникСсылка.узЗадачи") Тогда + Массив = Новый Массив; + Массив.Добавить(ПараметрКоманды); + ИначеЕсли ТипЗнч(ПараметрКоманды) = Тип("Массив") Тогда + Массив = ПараметрКоманды; + КонецЕсли; + + узОбщийМодульКлиент.ОткрытьПапкуЗадачиНаДиске(Массив); + +КонецПроцедуры diff --git a/src/cf/CommonModules/узОбщийМодульКлиент/Ext/Module.bsl b/src/cf/CommonModules/узОбщийМодульКлиент/Ext/Module.bsl index 8bb35d11d..b90f9b155 100644 --- a/src/cf/CommonModules/узОбщийМодульКлиент/Ext/Module.bsl +++ b/src/cf/CommonModules/узОбщийМодульКлиент/Ext/Module.bsl @@ -20,7 +20,7 @@ Процедура СоздатьФайлДляЗадачиНаДиске(Массив) Экспорт Пользователь = ПользователиКлиентСервер.ТекущийПользователь(); - Каталог = узОбщийМодульСервер.ЗначениеРеквизитаОбъекта(Пользователь, "узКаталогПользователя"); + Каталог = ПолучитьКаталогПользователя(Пользователь); Если НЕ ЗначениеЗаполнено(Каталог) Тогда Каталог = ВыбратьКаталог(РежимДиалогаВыбораФайла.ВыборКаталога, "Выберите каталог"); @@ -90,3 +90,65 @@ КонецЕсли; КонецФункции + +Процедура ОткрытьПапкуЗадачиНаДиске(Массив) Экспорт + + Пользователь = ПользователиКлиентСервер.ТекущийПользователь(); + Каталог = ПолучитьКаталогПользователя(Пользователь); + + Если НЕ ЗначениеЗаполнено(Каталог) Тогда + + пТекстСообщения = узОбщийМодульСервер.ПолучитьТекстСообщения("ВНИМАНИЕ! Для открытия задачи на диске " + +"не указан реквизит [Каталог пользователя] в справочнике пользователи",97); + Сообщить(пТекстСообщения); + + Возврат; + КонецЕсли; + + Для Каждого СтрокаМассива Из Массив Цикл + + КодЗадачи = узОбщийМодульСервер.ЗначениеРеквизитаОбъекта(СтрокаМассива, "Код"); + Код = ""+Формат(КодЗадачи,"ЧГ=0"); + + Разделитель = ПолучитьРазделительПути(); + + Если НЕ СтрЗаканчиваетсяНа(Каталог, Разделитель) Тогда + Каталог = Каталог + Разделитель; + КонецЕсли; + + МаскаПоиска = "*#"+Код+"*"; + МассивФайлов = НайтиФайлы(Каталог, МаскаПоиска); + + Если МассивФайлов.Количество() = 0 Тогда + пТекстСообщения = узОбщийМодульСервер.ПолучитьТекстСообщения("Не найдена папка с задачей #%1 в каталоге %2",98); + пТекстСообщения = СтрШаблон(пТекстСообщения, Код, Каталог); + Сообщить(пТекстСообщения); + + Продолжить; + КонецЕсли; + + Если МассивФайлов.Количество() > 1 Тогда + пТекстСообщения = узОбщийМодульСервер.ПолучитьТекстСообщения("Найдено более одной папки для задачи #%1 в каталоге %2",99); + пТекстСообщения = СтрШаблон(пТекстСообщения, Код, Каталог); + Сообщить(пТекстСообщения); + Продолжить; + КонецЕсли; + + ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьПапкуЗадачиНаДиске_Продолжение", ЭтотОбъект); + ВыполнитьОбработкуОповещения(ОписаниеОповещения, МассивФайлов[0].ПолноеИмя); + + КонецЦикла; + +КонецПроцедуры + +Процедура ОткрытьПапкуЗадачиНаДиске_Продолжение(Результат, ДополнительныеПараметры) Экспорт + + ЗапуститьПриложение(Результат); + +КонецПроцедуры + +Функция ПолучитьКаталогПользователя(Пользователь) + + Возврат узОбщийМодульСервер.ЗначениеРеквизитаОбъекта(Пользователь, "узКаталогПользователя"); + +КонецФункции \ 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 cada9e292..792d21092 100644 --- a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml +++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form.xml @@ -539,5 +539,25 @@ <Action>КомандаСоздатьФайлДляЗадачиНаДиске</Action> <Representation>TextPicture</Representation> </Command> + <Command name="КомандаОткрытьПапкуЗадачиНаДиске" id="10"> + <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> + <Shortcut>Ctrl+Shift+O</Shortcut> + <Picture> + <xr:Ref>CommonPicture.Папка</xr:Ref> + <xr:LoadTransparent>true</xr:LoadTransparent> + </Picture> + <Action>КомандаОткрытьПапкуЗадачиНаДиске</Action> + </Command> </Commands> -</Form> \ No newline at end of file +</Form> diff --git a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl index 446438c2d..fabd691a4 100644 --- a/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl +++ b/src/cf/DataProcessors/узКанбанДоска/Forms/ФормаДинамическая/Ext/Form/Module.bsl @@ -226,6 +226,8 @@ МассивКодовСообщений.Добавить(81);//Добавить в текущие дела МассивКодовСообщений.Добавить(83);//Скопировать комментарий в коде Copy the comment in the code МассивКодовСообщений.Добавить(96);//Создать файл для задачи на диске + МассивКодовСообщений.Добавить(101);//Открыть папку задачи на диске + СтруктураСообщений = РегистрыСведений.узСловарь.ПолучитьСтруктуруСообщений(МассивКодовСообщений); @@ -242,7 +244,12 @@ пКомандаСоздатьФайлДляЗадачиНаДиске = пЭлементыФормы.Добавить(ИменаЭлементов.ИмяКомандыСоздатьФайлДляЗадачиНаДиске, Тип("КнопкаФормы"), пЭлементТЧЗадачи.КонтекстноеМеню); пКомандаСоздатьФайлДляЗадачиНаДиске.Заголовок=СтруктураСообщений.Текст96; пКомандаСоздатьФайлДляЗадачиНаДиске.ИмяКоманды="КомандаСоздатьФайлДляЗадачиНаДиске"; - пКомандаСоздатьФайлДляЗадачиНаДиске.Отображение = ОтображениеКнопки.КартинкаИТекст; + пКомандаСоздатьФайлДляЗадачиНаДиске.Отображение = ОтображениеКнопки.КартинкаИТекст; + + пКомандаОткрытьПапкуЗадачиНаДиске = пЭлементыФормы.Добавить(ИменаЭлементов.ИмяКомандыОткрытьПапкуЗадачиНаДиске, Тип("КнопкаФормы"), пЭлементТЧЗадачи.КонтекстноеМеню); + пКомандаОткрытьПапкуЗадачиНаДиске.Заголовок=СтруктураСообщений.Текст101; + пКомандаОткрытьПапкуЗадачиНаДиске.ИмяКоманды="КомандаОткрытьПапкуЗадачиНаДиске"; + пКомандаОткрытьПапкуЗадачиНаДиске.Отображение = ОтображениеКнопки.КартинкаИТекст; пКомандаДобавитьВСпринт = пЭлементыФормы.Добавить(ИменаЭлементов.ИмяКомандыДобавитьВСпринт, Тип("КнопкаФормы"), пЭлементТЧЗадачи.КонтекстноеМеню); пКомандаДобавитьВСпринт.Заголовок=СтруктураСообщений.Текст71; @@ -342,6 +349,7 @@ ИмяКомандыДобавитьВТекущиеДела = ИмяКолонки + "_ТЧЗадачи_КомандаДобавитьВТекущиеДела"; ИмяКомандыСкопироватьКомментарийВКоде = ИмяКолонки + "_ТЧЗадачи_КомандаСкопироватьКомментарийВКоде"; ИмяКомандыСоздатьФайлДляЗадачиНаДиске = ИмяКолонки + "_ТЧЗадачи_СоздатьФайлДляЗадачиНаДиске"; + ИмяКомандыОткрытьПапкуЗадачиНаДиске = ИмяКолонки + "_ТЧЗадачи_ОткрытьПапкуЗадачиНаДиске"; ИмяКарточкаЗадачи = ИмяКолонки + "_ТЧЗадачиКарточкаЗадачи"; ИмяКарточкаЗадачи_НижняяЧасть = ИмяКолонки + "_ТЧЗадачиКарточкаЗадачи_НижняяЧасть"; @@ -362,6 +370,7 @@ РезультатФункции.Вставить("ИмяКомандыДобавитьВТекущиеДела",ИмяКомандыДобавитьВТекущиеДела); РезультатФункции.Вставить("ИмяКомандыСкопироватьКомментарийВКоде",ИмяКомандыСкопироватьКомментарийВКоде); РезультатФункции.Вставить("ИмяКомандыСоздатьФайлДляЗадачиНаДиске",ИмяКомандыСоздатьФайлДляЗадачиНаДиске); + РезультатФункции.Вставить("ИмяКомандыОткрытьПапкуЗадачиНаДиске",ИмяКомандыОткрытьПапкуЗадачиНаДиске); РезультатФункции.Вставить("ИмяКарточкаЗадачи",ИмяКарточкаЗадачи); РезультатФункции.Вставить("ИмяКарточкаЗадачи_НижняяЧасть",ИмяКарточкаЗадачи_НижняяЧасть); @@ -997,6 +1006,23 @@ Оповестить("КомандаСоздатьИерархиюЗадачНаДиске"); КонецПроцедуры +&НаКлиенте +Процедура КомандаОткрытьПапкуЗадачиНаДиске(Команда) + СтрокаТЧ = Элементы[ИмяАктивнойТЧ].ТекущиеДанные; + Если СтрокаТЧ = Неопределено тогда + узОбщийМодульСервер.узСообщить("Выберите задачи, для которых хотите открыть папки на диске",100); + Возврат; + Конецесли; + МассивВыделенныхСтрок = Элементы[ИмяАктивнойТЧ].ВыделенныеСтроки; + Если МассивВыделенныхСтрок.Количество() = 0 Тогда + узОбщийМодульСервер.узСообщить("Выберите задачи, для которых хотите открыть папки на диске",100); + Возврат; + Конецесли; + Массив = ПолучитьМассивЗадачПоВыделеннымСтрокам(МассивВыделенныхСтрок); + узОбщийМодульКлиент.ОткрытьПапкуЗадачиНаДиске(Массив); + Оповестить("КомандаОткрытьПапкуЗадачиНаДиске"); +КонецПроцедуры + #КонецОбласти #Область ОформлениеКанбанДоски diff --git a/src/cf/Roles/узПользователь/Ext/Rights.xml b/src/cf/Roles/узПользователь/Ext/Rights.xml index 1448c3279..435f89b64 100644 --- a/src/cf/Roles/узПользователь/Ext/Rights.xml +++ b/src/cf/Roles/узПользователь/Ext/Rights.xml @@ -84,6 +84,13 @@ <value>true</value> </right> </object> + <object> + <name>Catalog.узЗадачи.Command.КомандаОткрытьПапкуЗадачиНаДиске</name> + <right> + <name>View</name> + <value>true</value> + </right> + </object> <object> <name>InformationRegister.НаличиеПрисоединенныхФайлов</name> <right> @@ -6177,4 +6184,4 @@ <value>true</value> </right> </object> -</Rights> \ No newline at end of file +</Rights>