diff --git a/src/cf/Catalogs/узЗадачи/Ext/ManagerModule.bsl b/src/cf/Catalogs/узЗадачи/Ext/ManagerModule.bsl
index 8a0ed05f2..89ade85a5 100644
--- a/src/cf/Catalogs/узЗадачи/Ext/ManagerModule.bsl
+++ b/src/cf/Catalogs/узЗадачи/Ext/ManagerModule.bsl
@@ -181,3 +181,83 @@
Возврат РезультатФункции;
КонецФункции
+
+Функция ЕстьЗаписиВРССвязанныеЗадачи(пЗадача, ОтбиратьЗаписиИПоСвязаннойЗадачи = Ложь) Экспорт
+
+ пЕстьЗаписиВРССвязанныеЗадачи = Ложь;
+
+ Если НЕ ЗначениеЗаполнено(пЗадача) Тогда
+ Возврат пЕстьЗаписиВРССвязанныеЗадачи;
+ Конецесли;
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
+ | узСвязанныеЗадачи.Задача,
+ | узСвязанныеЗадачи.СвязаннаяЗадача
+ |ИЗ
+ | РегистрСведений.узСвязанныеЗадачи КАК узСвязанныеЗадачи
+ |ГДЕ
+ | ВЫБОР
+ | КОГДА &ОтбиратьЗаписиИПоСвязаннойЗадачи
+ | ТОГДА узСвязанныеЗадачи.Задача = &Задача
+ | ИЛИ узСвязанныеЗадачи.СвязаннаяЗадача = &Задача
+ | ИНАЧЕ узСвязанныеЗадачи.Задача = &Задача
+ | КОНЕЦ";
+
+ Запрос.УстановитьПараметр("Задача",пЗадача);
+ РезультатЗапроса = Запрос.Выполнить();
+
+ Если НЕ РезультатЗапроса.Пустой() Тогда
+ пЕстьЗаписиВРССвязанныеЗадачи = Истина;
+ Конецесли;
+
+ Возврат пЕстьЗаписиВРССвязанныеЗадачи;
+КонецФункции
+
+Функция ПолучитьМассивНомеровСвязанныхЗадач(пЗадача) Экспорт
+
+ МассивНомеровСвязанныхЗадач = Новый Массив;
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | узСвязанныеЗадачи.СвязаннаяЗадача
+ |ПОМЕСТИТЬ ВТРезультат
+ |ИЗ
+ | РегистрСведений.узСвязанныеЗадачи КАК узСвязанныеЗадачи
+ |ГДЕ
+ | узСвязанныеЗадачи.Задача = &Задача
+ |
+ |ОБЪЕДИНИТЬ
+ |
+ |ВЫБРАТЬ
+ | узСвязанныеЗадачи.Задача
+ |ИЗ
+ | РегистрСведений.узСвязанныеЗадачи КАК узСвязанныеЗадачи
+ |ГДЕ
+ | узСвязанныеЗадачи.СвязаннаяЗадача = &Задача
+ |;
+ |
+ |////////////////////////////////////////////////////////////////////////////////
+ |ВЫБРАТЬ
+ | ВТРезультат.СвязаннаяЗадача.Код КАК НомерЗадачи
+ |ИЗ
+ | ВТРезультат КАК ВТРезультат
+ |ГДЕ
+ | ВТРезультат.СвязаннаяЗадача <> &Задача";
+
+ Запрос.УстановитьПараметр("Задача",пЗадача);
+
+ РезультатЗапроса = Запрос.Выполнить();
+
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат МассивНомеровСвязанныхЗадач;
+ Конецесли;
+
+ Выборка = РезультатЗапроса.Выбрать();
+
+ Пока Выборка.Следующий() Цикл
+ МассивНомеровСвязанныхЗадач.Добавить(Выборка.НомерЗадачи);
+ КонецЦикла;
+
+ Возврат МассивНомеровСвязанныхЗадач;
+КонецФункции
\ No newline at end of file
diff --git a/src/cf/Catalogs/узЗадачи/Ext/ObjectModule.bsl b/src/cf/Catalogs/узЗадачи/Ext/ObjectModule.bsl
index 24e92203e..6f47f7362 100644
--- a/src/cf/Catalogs/узЗадачи/Ext/ObjectModule.bsl
+++ b/src/cf/Catalogs/узЗадачи/Ext/ObjectModule.bsl
@@ -1068,8 +1068,69 @@
ОтправитьУведомлениеНаПочту(СобытияВИстории);
ДополнительныеСвойства.Удалить("СобытияВИстории");
+
+ СформироватьЗаписиВРССвязанныеЗадачи(Отказ);
КонецПроцедуры
+Процедура СформироватьЗаписиВРССвязанныеЗадачи(Отказ) Экспорт
+ Если Отказ Тогда
+ Возврат;
+ Конецесли;
+
+ пЗадача = Ссылка;
+ УдалитьЗаписиИзРССвязанныеЗадачи(пЗадача, Отказ);
+
+ МассивЗадач = узОбщийМодульСервер.ПолучитьМассивЗадачИзТекста(ТекстСодержания);
+ Если МассивЗадач.Количество() = 0 Тогда
+ Возврат;
+ Конецесли;
+
+ Для каждого СвязаннаяЗадача из МассивЗадач цикл
+
+ МенеджерЗаписи = РегистрыСведений.узСвязанныеЗадачи.СоздатьМенеджерЗаписи();
+ МенеджерЗаписи.Задача = пЗадача;
+ МенеджерЗаписи.СвязаннаяЗадача = СвязаннаяЗадача;
+ МенеджерЗаписи.Записать();
+
+ Конеццикла;
+
+КонецПроцедуры
+
+Процедура УдалитьЗаписиИзРССвязанныеЗадачи(пЗадача,Отказ) Экспорт
+
+ Если Отказ Тогда
+ Возврат;
+ Конецесли;
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | узСвязанныеЗадачи.Задача,
+ | узСвязанныеЗадачи.СвязаннаяЗадача
+ |ИЗ
+ | РегистрСведений.узСвязанныеЗадачи КАК узСвязанныеЗадачи
+ |ГДЕ
+ | узСвязанныеЗадачи.Задача = &Задача";
+
+ Запрос.УстановитьПараметр("Задача",пЗадача);
+ РезультатЗапроса = Запрос.Выполнить();
+
+ Если РезультатЗапроса.Пустой() Тогда
+ Возврат;
+ Конецесли;
+
+ Выборка = РезультатЗапроса.Выбрать();
+
+ Пока Выборка.Следующий() Цикл
+
+ МенеджерЗаписи = РегистрыСведений.узСвязанныеЗадачи.СоздатьМенеджерЗаписи();
+ МенеджерЗаписи.Задача = Выборка.Задача;
+ МенеджерЗаписи.СвязаннаяЗадача = Выборка.СвязаннаяЗадача;
+ МенеджерЗаписи.Удалить();
+
+ КонецЦикла;
+
+КонецПроцедуры
+
Процедура РегистрацияАктивностиПользователя(СобытияВИстории,Отказ)
ВТДопПараметры = Новый Структура();
ВТДопПараметры.Вставить("СобытияВИстории",СобытияВИстории);
diff --git a/src/cf/Catalogs/узЗадачи/Forms/ФормаЭлемента/Ext/Form.xml b/src/cf/Catalogs/узЗадачи/Forms/ФормаЭлемента/Ext/Form.xml
index 74ddf37e9..b3bbd8709 100644
--- a/src/cf/Catalogs/узЗадачи/Forms/ФормаЭлемента/Ext/Form.xml
+++ b/src/cf/Catalogs/узЗадачи/Forms/ФормаЭлемента/Ext/Form.xml
@@ -242,6 +242,24 @@
ОформлениеТекстаПриИзменении
+
+
+
+ ru
+ Группа связанные задачи
+
+
+
+
+ ru
+ Группа связанные задачи
+
+
+ Horizontal
+ None
+ false
+
+
diff --git a/src/cf/Catalogs/узЗадачи/Forms/ФормаЭлемента/Ext/Form/Module.bsl b/src/cf/Catalogs/узЗадачи/Forms/ФормаЭлемента/Ext/Form/Module.bsl
index aae4ba52f..9d596a6b4 100644
--- a/src/cf/Catalogs/узЗадачи/Forms/ФормаЭлемента/Ext/Form/Module.bsl
+++ b/src/cf/Catalogs/узЗадачи/Forms/ФормаЭлемента/Ext/Form/Module.bsl
@@ -37,6 +37,8 @@
Конецесли;
Конецесли;
+ ДобавитьСсылкиНаСвязанныеЗадачиНаСервере();
+
ВыполнитьЛокализацию();
Элементы.КомандаПоказатьСкрытьКомментарии.Пометка = КомментарииПометка;
УстановитьВидимостьДоступность();
@@ -157,6 +159,7 @@
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УстановитьВидимостьДоступность();
+ ДобавитьСсылкиНаСвязанныеЗадачиНаСервере();
КонецПроцедуры
@@ -741,6 +744,77 @@
пОбъект = РеквизитФормыВЗначение("Объект");
ЗначениеВРеквизитФормы(пОбъект,"Объект");
КонецПроцедуры
+
+&НаСервере
+Процедура ДобавитьСсылкиНаСвязанныеЗадачиНаСервере()
+ МассивНомеровСвязанныхЗадач = ПолучитьМассивНомеровСвязанныхЗадачНаСервере(Объект.Ссылка);
+ Если МассивНомеровСвязанныхЗадач.Количество() = 0 Тогда
+ УбратьЭлементыСвязанныеЗадачи();
+ Возврат;
+ Конецесли;
+
+ МассивЭлементовСвязанныхЗадач = Новый Массив();
+ Для каждого НомерСвязаннойЗадачи из МассивНомеровСвязанныхЗадач цикл
+ ИмяЭлемента = "СвязаннаяЗадача"+НомерСвязаннойЗадачи;
+
+ пЭлементСвязаннаяЗадача = Элементы.Найти(ИмяЭлемента);
+ Если пЭлементСвязаннаяЗадача <> Неопределено Тогда
+ МассивЭлементовСвязанныхЗадач.Добавить(пЭлементСвязаннаяЗадача);
+ Продолжить;
+ Конецесли;
+
+ пЭлементСвязаннаяЗадача = Элементы.Вставить(
+ ИмяЭлемента,
+ Тип("ДекорацияФормы"),Элементы.ГруппаСвязанныеЗадачи);
+
+ пЭлементСвязаннаяЗадача.Заголовок = "#"+Формат(НомерСвязаннойЗадачи,"ЧГ=0");
+ пЭлементСвязаннаяЗадача.Гиперссылка = Истина;
+ пЭлементСвязаннаяЗадача.УстановитьДействие("Нажатие","ДекорацияСвязаннаяЗадачаНажатие");
+
+ МассивЭлементовСвязанныхЗадач.Добавить(пЭлементСвязаннаяЗадача);
+ Конеццикла;
+
+ УбратьЭлементыСвязанныеЗадачи(МассивЭлементовСвязанныхЗадач);
+КонецПроцедуры
+
+&НаСервере
+Процедура УбратьЭлементыСвязанныеЗадачи(МассивЭлементовСвязанныхЗадач = Неопределено)
+
+ Для каждого пЭлементСвязаннаяЗадача из Элементы.ГруппаСвязанныеЗадачи.ПодчиненныеЭлементы цикл
+
+ Если МассивЭлементовСвязанныхЗадач <> Неопределено
+ И МассивЭлементовСвязанныхЗадач.Найти(пЭлементСвязаннаяЗадача) <> Неопределено Тогда
+ Продолжить;
+ Конецесли;
+
+ Элементы.Удалить(пЭлементСвязаннаяЗадача);
+ Конеццикла;
+
+КонецПроцедуры
+
+&НаСервереБезКонтекста
+Функция ПолучитьМассивНомеровСвязанныхЗадачНаСервере(пЗадача)
+ Возврат Справочники.узЗадачи.ПолучитьМассивНомеровСвязанныхЗадач(пЗадача);
+КонецФункции
+
+&НаКлиенте
+Процедура ДекорацияСвязаннаяЗадачаНажатие(Элемент)
+ НомерЗадачи = Сред(Элемент.Заголовок,2);
+ СсылкаНаЗадачу = ПолучитьЗадачуПоНомеруНаСервере(НомерЗадачи);
+
+ ПараметрыФормы = Новый Структура();
+ ПараметрыФормы.Вставить("Ключ",СсылкаНаЗадачу);
+ ОткрытьФорму("Справочник.узЗадачи.Форма.ФормаЭлемента",ПараметрыФормы);
+КонецПроцедуры
+
+
+&НаСервереБезКонтекста
+Функция ПолучитьЗадачуПоНомеруНаСервере(НомерЗадачи)
+
+ СсылкаНаЗадачу = Справочники.узЗадачи.НайтиПоКоду(НомерЗадачи);
+
+ Возврат СсылкаНаЗадачу;
+КонецФункции
#КонецОбласти
#Область Учет_времени
diff --git a/src/cf/InformationRegisters/узСвязанныеЗадачи.xml b/src/cf/InformationRegisters/узСвязанныеЗадачи.xml
new file mode 100644
index 000000000..9dc8b7f2a
--- /dev/null
+++ b/src/cf/InformationRegisters/узСвязанныеЗадачи.xml
@@ -0,0 +1,251 @@
+
+
+
+
+
+ 5213a3f6-8f7a-4149-b9bc-1925aa94e729
+ 26a618b3-d456-4b5c-86ef-69923b1889fb
+
+
+ c32ecb1c-7a49-4623-b86b-5b3667629b4f
+ daac7294-32c4-43d5-a0b1-b93d62803a9c
+
+
+ bced9650-097a-4b66-90a0-790789d31b0f
+ 63ff8a42-1671-4a6d-b2f9-f0eac420de1a
+
+
+ cb29e657-2509-43cc-98ec-4318893cf185
+ b9c14efd-bf4b-4035-abe3-a380d9b66687
+
+
+ ec157e55-5ade-4d85-b675-1c8cfb051baf
+ 54bbb33a-84c1-4588-8933-5546265dc307
+
+
+ d096164f-9ef1-438f-9d3f-c622dee85a71
+ db8dcc74-4915-469e-9939-4c32fa61f349
+
+
+ a4a7beb7-f844-4589-9e6c-f941c48e11b4
+ 6a6d6b8a-6926-4e1e-9896-c032fef45383
+
+
+
+ узСвязанныеЗадачи
+
+
+ ru
+ Cвязанные задачи
+
+
+
+ true
+ InDialog
+
+ InformationRegister.узСвязанныеЗадачи.Form.ФормаСписка
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ ShowError
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ false
+
+
+
+ Use
+
+
+
+
+
+
+ Nonperiodical
+ Independent
+ false
+ false
+ Managed
+ DontUse
+ false
+ false
+
+
+
+
+
+
+
+
+
+ Задача
+
+
+ ru
+ Задача
+
+
+
+
+ cfg:CatalogRef.узЗадачи
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ false
+ true
+ false
+ DontIndex
+ Use
+
+
+
+
+ СвязаннаяЗадача
+
+
+ ru
+ Связанная задача
+
+
+
+
+ cfg:CatalogRef.узЗадачи
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ false
+ true
+ false
+ DontIndex
+ Use
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/InformationRegisters/узСвязанныеЗадачи/Forms/ФормаСписка.xml b/src/cf/InformationRegisters/узСвязанныеЗадачи/Forms/ФормаСписка.xml
new file mode 100644
index 000000000..e2279a727
--- /dev/null
+++ b/src/cf/InformationRegisters/узСвязанныеЗадачи/Forms/ФормаСписка.xml
@@ -0,0 +1,21 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/InformationRegisters/узСвязанныеЗадачи/Forms/ФормаСписка/Ext/Form.xml b/src/cf/InformationRegisters/узСвязанныеЗадачи/Forms/ФормаСписка/Ext/Form.xml
new file mode 100644
index 000000000..9b55d92a1
--- /dev/null
+++ b/src/cf/InformationRegisters/узСвязанныеЗадачи/Forms/ФормаСписка/Ext/Form.xml
@@ -0,0 +1,148 @@
+
+
\ No newline at end of file
diff --git a/src/cf/Roles/узПользователь/Ext/Rights.xml b/src/cf/Roles/узПользователь/Ext/Rights.xml
index 7f13ff8ea..79df7bee4 100644
--- a/src/cf/Roles/узПользователь/Ext/Rights.xml
+++ b/src/cf/Roles/узПользователь/Ext/Rights.xml
@@ -4400,6 +4400,21 @@
true
+