1
0
mirror of https://github.com/BlizD/Tasks.git synced 2025-01-28 03:57:18 +02:00

#38 доработка по задаче, исправление ошибки

This commit is contained in:
pallid 2017-08-15 01:07:44 +03:00
parent 3161dbd29a
commit abe23d791d
12 changed files with 290 additions and 98 deletions

View File

@ -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">

View File

@ -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">

View File

@ -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>

View File

@ -0,0 +1,14 @@

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Если ТипЗнч(ПараметрКоманды) = Тип("СправочникСсылка.узЗадачи") Тогда
Массив = Новый Массив;
Массив.Добавить(ПараметрКоманды);
ИначеЕсли ТипЗнч(ПараметрКоманды) = Тип("Массив") Тогда
Массив = ПараметрКоманды;
КонецЕсли;
узОбщийМодульКлиент.СоздатьИерархиюЗадачНаДиске(Массив);
КонецПроцедуры

View File

@ -50,41 +50,3 @@
Возврат пКомментарииВКоде;
КонецФункции
Функция ПолучитьПолныйПутьЗадачи(Задача) Экспорт
Массив = Новый Массив;
ЗаполнитьМассивИерархии(Задача, Массив);
Разделитель = ПолучитьРазделительПутиКлиента();
Путь = "";
Для Каждого СтрокаМассива ИЗ Массив Цикл
Путь = СтрокаМассива + Разделитель + Путь;
КонецЦикла;
Возврат Путь;
КонецФункции
Процедура ЗаполнитьМассивИерархии(Задача, Массив)
НазваниеДляПапки = СобратьНазваниеДляПапки(Задача.Наименование, Задача.Код);
Массив.Добавить(НазваниеДляПапки);
Если ЗначениеЗаполнено(Задача.Родитель) Тогда
ЗаполнитьМассивИерархии(Задача.Родитель, Массив);
КонецЕсли;
КонецПроцедуры
Функция СобратьНазваниеДляПапки(Наименование, Код)
Шаблон = "#%1 %2";
СокращенноеНаименование = Лев(Наименование, 30);
Результат = СтрШаблон(Шаблон, Код, СокращенноеНаименование);
Возврат Результат;
КонецФункции

View File

@ -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>

View File

@ -67,53 +67,3 @@
ПараметрКомпоновки = Список_Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("СкрыватьЗадачиСОпределеннымСтатусом"));
Список_Параметры.УстановитьЗначениеПараметра("СкрыватьЗадачиСОпределеннымСтатусом",НЕ ПараметрКомпоновки.Значение);
КонецПроцедуры
&НаСервере
Функция ПолучитьПолныйПутьЗадачи(ЗадачаСсылка)
ПолныйПутьЗадачи = Справочники.узЗадачи.ПолучитьПолныйПутьЗадачи(ЗадачаСсылка);
Возврат ПолныйПутьЗадачи;
КонецФункции
&НаКлиенте
Процедура СоздатьИерархиюЗадачНаДиске(Команда)
Каталог = ВыбратьКаталог(РежимДиалогаВыбораФайла.ВыборКаталога, "Выберите каталог");
Если Каталог = Неопределено тогда
Возврат;
КонецЕсли;
ПолныйПутьЗадачи = ПолучитьПолныйПутьЗадачи(Элементы.Список.ТекущиеДанные.Ссылка);
Если НЕ ЗначениеЗаполнено(ПолныйПутьЗадачи) Тогда
Сообщить("Не удалось получить путь для задачи");
Возврат;
КонецЕсли;
ОбъедененныйПуть = Каталог + ПолучитьРазделительПутиКлиента() + ПолныйПутьЗадачи;
ОписаниеОповещения = Новый ОписаниеОповещения("СоздатьИерархиюЗадачНаДиске_Продолжение", ЭтотОбъект);
НачатьСозданиеКаталога(ОписаниеОповещения, ОбъедененныйПуть);
КонецПроцедуры
Процедура СоздатьИерархиюЗадачНаДиске_Продолжение(ИмяКаталога, ДополнительныеПараметры) Экспорт
Сообщить("Создан каталог "+ИмяКаталога);
КонецПроцедуры
&НаКлиенте
Функция ВыбратьКаталог(Режим, Заголовок)
Диалог = Новый ДиалогВыбораФайла(Режим);
Диалог.Заголовок = Заголовок;
Диалог.ПредварительныйПросмотр = Ложь;
Если Диалог.Выбрать() Тогда
Возврат Диалог.Каталог;
КонецЕсли;
КонецФункции

View File

@ -15,4 +15,58 @@
ПоказатьОповещениеПользователя(пТекстСообщения);
Возврат ТекстДляКопирования;
КонецФункции
КонецФункции
Процедура СоздатьИерархиюЗадачНаДиске(Массив) Экспорт
Пользователь = ПользователиКлиентСервер.ТекущийПользователь();
Каталог = узОбщийМодульСервер.ЗначениеРеквизитаОбъекта(Пользователь, "узКаталогПользователя");
Если НЕ ЗначениеЗаполнено(Каталог) Тогда
Каталог = ВыбратьКаталог(РежимДиалогаВыбораФайла.ВыборКаталога, "Выберите каталог");
Если Каталог = Неопределено Тогда
Возврат;
КонецЕсли;
КонецЕсли;
Для Каждого СтрокаМассива Из Массив Цикл
ПолныйПутьЗадачи = узОбщийМодульСервер.ПолучитьПолныйПутьЗадачи(СтрокаМассива);
Если НЕ ЗначениеЗаполнено(ПолныйПутьЗадачи) Тогда
Сообщить("Не удалось получить путь для задачи "+СтрокаМассива);
Возврат;
КонецЕсли;
ОбъедененныйПуть = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Каталог) + ПолныйПутьЗадачи;
ОписаниеОповещения = Новый ОписаниеОповещения("СоздатьИерархиюЗадачНаДиске_Продолжение", ЭтотОбъект);
НачатьСозданиеКаталога(ОписаниеОповещения, ОбъедененныйПуть);
КонецЦикла;
КонецПроцедуры
Процедура СоздатьИерархиюЗадачНаДиске_Продолжение(ИмяКаталога, ДополнительныеПараметры) Экспорт
КаталогНаДиске = Новый Файл(ИмяКаталога);
Если КаталогНаДиске.Существует() Тогда
Сообщить("Создан каталог "+ИмяКаталога);
Иначе
Сообщить("Не удалось создать каталог "+ИмяКаталога);
КонецЕсли;
КонецПроцедуры
Функция ВыбратьКаталог(Режим, Заголовок)
Диалог = Новый ДиалогВыбораФайла(Режим);
Диалог.Заголовок = Заголовок;
Диалог.ПредварительныйПросмотр = Ложь;
Если Диалог.Выбрать() Тогда
Возврат Диалог.Каталог;
КонецЕсли;
КонецФункции

View File

@ -240,3 +240,45 @@
Возврат РегистрыСведений.узСловарь.ПолучитьСтруктуруСообщений(МассивКодовСообщений);
КонецФункции
Функция ПолучитьПолныйПутьЗадачи(Задача) Экспорт
Массив = Новый Массив;
ЗаполнитьМассивИерархии(Задача, Массив);
Разделитель = ПолучитьРазделительПутиКлиента();
Путь = "";
Для Каждого СтрокаМассива ИЗ Массив Цикл
Путь = СтрокаМассива + Разделитель + Путь;
КонецЦикла;
Возврат Путь;
КонецФункции
Процедура ЗаполнитьМассивИерархии(Задача, Массив)
НазваниеДляПапки = СобратьНазваниеДляПапки(Задача.Наименование, Задача.Код);
Массив.Добавить(НазваниеДляПапки);
Если ЗначениеЗаполнено(Задача.Родитель) Тогда
ЗаполнитьМассивИерархии(Задача.Родитель, Массив);
КонецЕсли;
КонецПроцедуры
Функция СобратьНазваниеДляПапки(Наименование, Код)
Шаблон = "#%1 %2";
СокращенноеНаименование = Лев(Наименование, 30);
ОбработанноеНаименование = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(СокращенноеНаименование, "");
Результат = СтрШаблон(Шаблон, Код, ОбработанноеНаименование);
Возврат Результат;
КонецФункции
Функция ЗначениеРеквизитаОбъекта(Ссылка, Реквизит) Экспорт
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, Реквизит);
КонецФункции

View File

@ -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>

View File

@ -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>

View File

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