diff --git a/src/cf/Catalogs/узГруппыТекущихДел/Ext/Predefined.xml b/src/cf/Catalogs/узГруппыТекущихДел/Ext/Predefined.xml
index df80355dc..37d386f2b 100644
--- a/src/cf/Catalogs/узГруппыТекущихДел/Ext/Predefined.xml
+++ b/src/cf/Catalogs/узГруппыТекущихДел/Ext/Predefined.xml
@@ -12,6 +12,12 @@
Позже
false
+ -
+ Регламентное
+
000000004
+ Регламентное
+ false
+
-
Сегодня
000000001
diff --git a/src/cf/Catalogs/узКонстанты/Ext/Predefined.xml b/src/cf/Catalogs/узКонстанты/Ext/Predefined.xml
index a937f7591..cf0d81766 100644
--- a/src/cf/Catalogs/узКонстанты/Ext/Predefined.xml
+++ b/src/cf/Catalogs/узКонстанты/Ext/Predefined.xml
@@ -12,6 +12,12 @@
Дата последней выгрузки файла листа задач
false
+ -
+ ОтключитьВозможностьСозданиеРегламентныхТекущихДел
+
000000007
+ Отключить возможность создание регламентных текущих дел
+ false
+
-
СписокПользователейКомуОтправлятьСистемныеУведомления
000000001
diff --git a/src/cf/Catalogs/узТекущиеДела.xml b/src/cf/Catalogs/узТекущиеДела.xml
index a41c15fc3..b202aecc2 100644
--- a/src/cf/Catalogs/узТекущиеДела.xml
+++ b/src/cf/Catalogs/узТекущиеДела.xml
@@ -558,6 +558,135 @@
Use
+
+
+ ВключеноРегламентноеТекущееДело
+
+
+ ru
+ Включено регламентное текущее дело
+
+
+
+
+ xs:boolean
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+ DontIndex
+ Use
+
+
+
+
+ ИдентификаторРасписаниеРегламента
+
+
+ ru
+ Идентификатор расписание регламента
+
+
+
+
+ v8:UUID
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+ DontIndex
+ DontUse
+
+
+
+
+ ТекстСодержанияСтарое
+
+
+ ru
+ Cодержания старое
+
+
+ en
+ Content
+
+
+ ro
+ Content
+
+
+
+
+ xs:string
+
+ 0
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+ DontIndex
+ Use
+
+
diff --git a/src/cf/Catalogs/узТекущиеДела/Ext/ManagerModule.bsl b/src/cf/Catalogs/узТекущиеДела/Ext/ManagerModule.bsl
index 39589be7e..be5338f9e 100644
--- a/src/cf/Catalogs/узТекущиеДела/Ext/ManagerModule.bsl
+++ b/src/cf/Catalogs/узТекущиеДела/Ext/ManagerModule.bsl
@@ -70,4 +70,58 @@
// Конецесли;
//Конецесли;
//Возврат пПорядокДоп;
+КонецФункции
+
+Процедура СоздатьТекущееДелоПоРегламентномуДелу(ТекРегламентноеДело) Экспорт
+
+ Если НЕ ЗначениеЗаполнено(ТекРегламентноеДело) Тогда
+ Сообщение = Новый СообщениеПользователю;
+ Сообщение.Текст = "Ошибка! не заполнено ТекРегламентноеДело";
+ Сообщение.Сообщить();
+ Возврат;
+ Конецесли;
+
+ СпрОбъект = Справочники.узТекущиеДела.СоздатьЭлемент();
+ СпрОбъект.ТекстСодержания = ТекРегламентноеДело.ТекстСодержания;
+ СпрОбъект.Автор = ТекРегламентноеДело.Автор;
+ СпрОбъект.Задача = ТекРегламентноеДело.Задача;
+ СпрОбъект.Вопрос = ТекРегламентноеДело.Вопрос;
+
+ СпрОбъект.ВключеноРегламентноеТекущееДело = Ложь;
+ СпрОбъект.ИдентификаторРасписаниеРегламента = Неопределено;
+ СпрОбъект.ТекстСодержанияСтарое = "Создано регламентным заданием";
+ СпрОбъект.ГруппаТекущегоДела = Неопределено;
+ СпрОбъект.Выполнено = Ложь;
+ СпрОбъект.ДатаВыполнения = Неопределено;
+ СпрОбъект.ДатаСоздания = ТекущаяДата();
+ СпрОбъект.ДатаТекущегоДела = СпрОбъект.ДатаСоздания;
+ СпрОбъект.Порядок = 1000;
+ СпрОбъект.Записать();
+
+ пТекстСообщения = узОбщийМодульСервер.ПолучитьТекстСообщения("Добавлено дело",80);
+ пТекстСообщения = пТекстСообщения + " "+ СпрОбъект.ТекстСодержания;
+
+ Сообщить(пТекстСообщения);
+
+ ТекстСообщения = "Добавлено новое текущее дело " + СпрОбъект.Ссылка;
+ ЗаписьЖурналаРегистрации("log_DeloReglament", УровеньЖурналаРегистрации.Информация,,, ТекстСообщения);
+
+КонецПроцедуры
+
+Функция ПолучитьРасписаниеРегламентногоЗадания(ДопПараметры) Экспорт
+ Перем пРасписаниеРегламентногоЗадания;
+
+ пИдентификаторРасписаниеРегламента = ДопПараметры.ИдентификаторРасписаниеРегламента;
+ //пИдентификаторРасписаниеРегламента = ПолучитьИдентификаторРасписаниеРегламента(ДопПараметры);
+
+ РеглЗаданиеОбъект = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(пИдентификаторРасписаниеРегламента);
+ Если РеглЗаданиеОбъект <> Неопределено Тогда
+ пРасписаниеРегламентногоЗадания = РеглЗаданиеОбъект.Расписание;
+ Конецесли;
+
+ РезультатФункции = Новый Структура();
+ РезультатФункции.Вставить("ИдентификаторРасписаниеРегламента",пИдентификаторРасписаниеРегламента);
+ РезультатФункции.Вставить("РасписаниеРегламентногоЗадания",пРасписаниеРегламентногоЗадания);
+
+ Возврат РезультатФункции;
КонецФункции
\ No newline at end of file
diff --git a/src/cf/CommonModules/узОбщийМодульСервер/Ext/Module.bsl b/src/cf/CommonModules/узОбщийМодульСервер/Ext/Module.bsl
index 9f0e8d7a6..c5940a238 100644
--- a/src/cf/CommonModules/узОбщийМодульСервер/Ext/Module.bsl
+++ b/src/cf/CommonModules/узОбщийМодульСервер/Ext/Module.bsl
@@ -967,4 +967,21 @@
Возврат ТЗПользователей;
КонецФункции // --- 79Vlad 06.02.2019
+Процедура узСозданиеТекущихДелПоРегламенту(ТекРегламентноеДело = Неопределено) Экспорт
+
+ Если НЕ ЗначениеЗаполнено(ТекРегламентноеДело) Тогда
+ ТекстСообщения = "Ошибка! Не заполнен параметр ТекРегламентноеДело в узСозданиеТекущихДелПоРегламенту";
+ ЗаписьЖурналаРегистрации("log_DeloReglament", УровеньЖурналаРегистрации.Ошибка,,, ТекстСообщения);
+ Возврат;
+ Конецесли;
+
+ //ТекстСообщения = "ТипЗначения " + ТипЗнч(МассивТекРегламентныхДел)
+ // + " ТекРегламентноеДело ["+ МассивТекРегламентныхДел +"]"
+ // ;
+ //ЗаписьЖурналаРегистрации("log_DeloReglament", УровеньЖурналаРегистрации.Ошибка,,, ТекстСообщения);
+
+ Справочники.узТекущиеДела.СоздатьТекущееДелоПоРегламентномуДелу(ТекРегламентноеДело);
+
+КонецПроцедуры
+
diff --git a/src/cf/DataProcessors/узТекущиеДела.xml b/src/cf/DataProcessors/узТекущиеДела.xml
index 2e1b7e4c5..00533b115 100644
--- a/src/cf/DataProcessors/узТекущиеДела.xml
+++ b/src/cf/DataProcessors/узТекущиеДела.xml
@@ -238,6 +238,40 @@
Auto
+
+
+ ПоказыватьРегламентные
+
+
+ ru
+ Регламентные
+
+
+
+
+ xs:boolean
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
@@ -843,6 +877,166 @@
Auto
+
+
+ ВключеноРегламентноеТекущееДело
+
+
+ ru
+ Включено регламентное текущее дело
+
+
+
+
+ xs:boolean
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ИдентификаторРасписаниеРегламента
+
+
+ ru
+ Идентификатор расписание регламента
+
+
+
+
+ v8:UUID
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ТекстСодержанияСтарое
+
+
+ ru
+ Cодержания старое
+
+
+ en
+ Content
+
+
+ ro
+ Content
+
+
+
+
+ xs:string
+
+ 0
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ РасписаниеРегламентногоЗаданияПредставление
+
+
+ ru
+ Расписание регламентного задания представление
+
+
+
+
+ xs:string
+
+ 0
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
diff --git a/src/cf/DataProcessors/узТекущиеДела/Ext/ObjectModule.bsl b/src/cf/DataProcessors/узТекущиеДела/Ext/ObjectModule.bsl
index b61c802c5..13bd3dae9 100644
--- a/src/cf/DataProcessors/узТекущиеДела/Ext/ObjectModule.bsl
+++ b/src/cf/DataProcessors/узТекущиеДела/Ext/ObjectModule.bsl
@@ -14,11 +14,15 @@
| узТекущиеДела.ДатаВыполнения,
| узТекущиеДела.Задача,
| узТекущиеДела.Вопрос,
+ | узТекущиеДела.ВключеноРегламентноеТекущееДело,
+ | узТекущиеДела.ИдентификаторРасписаниеРегламента,
+ | узТекущиеДела.ТекстСодержанияСтарое,
| узТекущиеДела.Порядок КАК Порядок
|ИЗ
| Справочник.узТекущиеДела КАК узТекущиеДела
|ГДЕ
| узТекущиеДела.Автор = &Автор
+ | И НЕ узТекущиеДела.ПометкаУдаления
| И узТекущиеДела.ГруппаТекущегоДела В(&МассивГруппыТекущихДел)
| И ВЫБОР
| КОГДА узТекущиеДела.ДатаВыполнения = ДАТАВРЕМЯ(1, 1, 1)
@@ -51,6 +55,10 @@
Если ПоказыватьПозже Тогда
МассивГруппыТекущихДел.Добавить(ПредопределенноеЗначение("Справочник.узГруппыТекущихДел.Позже"));
Конецесли;
+ Если ПоказыватьРегламентные Тогда
+ МассивГруппыТекущихДел.Добавить(ПредопределенноеЗначение("Справочник.узГруппыТекущихДел.Регламентное"));
+ Конецесли;
+
Запрос.УстановитьПараметр("МассивГруппыТекущихДел", МассивГруппыТекущихДел);
Запрос.УстановитьПараметр("Автор", ПараметрыСеанса.ТекущийПользователь);
@@ -67,13 +75,48 @@
//
//ТЗРезультат.Сортировать("ПорядокДоп,Порядок");
+ ГруппаТекДел_Регламентное = ПредопределенноеЗначение("Справочник.узГруппыТекущихДел.Регламентное");
+
Для каждого СтрокаТЗРезультат из ТЗРезультат цикл
СтрокаТЧТекущиеДела = ТЧТекущиеДела.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧТекущиеДела,СтрокаТЗРезультат);
СтрокаТЧТекущиеДела.НомерСтрокиОбработка = СтрокаТЧТекущиеДела.НомерСтроки;
+
+ ЗаполнитьРасписаниеРегламентногоЗадания(СтрокаТЧТекущиеДела,ГруппаТекДел_Регламентное);
+
КонецЦикла;
КонецПроцедуры
+Процедура ЗаполнитьРасписаниеРегламентногоЗадания(СтрокаТЧТекущиеДела,ГруппаТекДел_Регламентное)
+ пГруппаТекущегоДела = СтрокаТЧТекущиеДела.ГруппаТекущегоДела;
+
+ пРасписаниеРегламентногоЗаданияПредставление = "<Расписание не задано>";
+
+ СтрокаТЧТекущиеДела.РасписаниеРегламентногоЗаданияПредставление = пРасписаниеРегламентногоЗаданияПредставление;
+
+ Если пГруппаТекущегоДела <> ГруппаТекДел_Регламентное Тогда
+ Возврат;
+ Конецесли;
+
+ пИдентификаторРасписаниеРегламента = СтрокаТЧТекущиеДела.ИдентификаторРасписаниеРегламента;
+
+ Если НЕ ЗначениеЗаполнено(пИдентификаторРасписаниеРегламента) Тогда
+ СтрокаТЧТекущиеДела.РасписаниеРегламентногоЗаданияПредставление = пРасписаниеРегламентногоЗаданияПредставление;
+ Возврат;
+ Конецесли;
+
+ ВТДопПараметры = Новый Структура();
+ ВТДопПараметры.Вставить("ИдентификаторРасписаниеРегламента",пИдентификаторРасписаниеРегламента);
+ РезультатФункции = Справочники.узТекущиеДела.ПолучитьРасписаниеРегламентногоЗадания(ВТДопПараметры);
+ РасписаниеРегламентногоЗадания = РезультатФункции.РасписаниеРегламентногоЗадания;
+ Если РасписаниеРегламентногоЗадания <> Неопределено Тогда
+ пРасписаниеРегламентногоЗаданияПредставление = "" + РасписаниеРегламентногоЗадания;
+ Конецесли;
+
+ СтрокаТЧТекущиеДела.РасписаниеРегламентногоЗаданияПредставление = пРасписаниеРегламентногоЗаданияПредставление;
+
+КонецПроцедуры
+
Функция ПолучитьПорядоДоп(пВыполнено,пДатаВыполнения,пНаДату) Экспорт
Возврат Справочники.узТекущиеДела.ПолучитьПорядоДоп(пВыполнено,пДатаВыполнения,пНаДату);
////Такая же функция есть в форме обработки
@@ -106,7 +149,21 @@
Конецесли;
ТекущееДелоОбъект = ПолучитьТекущееДелоОбъект(СтрокаТЧТекущиеДела);
+
+ Если НЕ ТекущееДелоОбъект.Ссылка.Пустая()
+ И СокрЛП(ТекущееДелоОбъект.ТекстСодержания) <> СокрЛП(СтрокаТЧТекущиеДела.ТекстСодержания) Тогда
+ пТекстСодержанияСтарое =
+ "----------------------РАНЕЕ-----"+ТекущаяДата()+"--------------------"
+ + Символы.ПС
+ + ТекущееДелоОбъект.ТекстСодержания
+ + Символы.ПС
+ + ТекущееДелоОбъект.ТекстСодержанияСтарое
+ ;
+ Конецесли;
+
ЗаполнитьЗначенияСвойств(ТекущееДелоОбъект,СтрокаТЧТекущиеДела,,"Автор,ДатаСоздания,Порядок");
+
+ ТекущееДелоОбъект.ТекстСодержанияСтарое = пТекстСодержанияСтарое;
ТекущееДелоОбъект.Наименование = ТекущееДелоОбъект.ТекстСодержания;
//Если ЭтоСегодня Тогда
ТекущееДелоОбъект.Порядок = СтрокаТЧТекущиеДела.НомерСтроки;
@@ -150,18 +207,101 @@
Процедура УбратьТекущееДело(МассивТекущихДел) Экспорт
СохранитьТекущиеДела();
+ ГруппаТекДел_Регламентное = ПредопределенноеЗначение("Справочник.узГруппыТекущихДел.Регламентное");
+
Для каждого пТекущееДело из МассивТекущихДел цикл
Если НЕ ЗначениеЗаполнено(пТекущееДело) Тогда
Продолжить;
Конецесли;
+
+ ОтключитьРегламентныеТекущееДело(пТекущееДело,ГруппаТекДел_Регламентное);
+
ТекущееДелоОбъект = пТекущееДело.ПолучитьОбъект();
- ТекущееДелоОбъект.Удалить();
+ ТекущееДелоОбъект.ПометкаУдаления = Истина;
+ ТекущееДелоОбъект.Записать();
+ //ТекущееДелоОбъект.Удалить();
Конеццикла;
ЗаполнитьТекущиеДела();
КонецПроцедуры
+Процедура ОтключитьРегламентныеТекущееДело(пТекущееДело,ГруппаТекДел_Регламентное)
+
+ Если пТекущееДело.ГруппаТекущегоДела <> ГруппаТекДел_Регламентное Тогда
+ Возврат;
+ Конецесли;
+
+ ДопПараметры = Новый Структура();
+ ДопПараметры.Вставить("ИдентификаторРасписаниеРегламента",пТекущееДело.ИдентификаторРасписаниеРегламента);
+ ДопПараметры.Вставить("ВключеноРегламентноеТекущееДело",Ложь);
+ ДопПараметры.Вставить("ТекущееДело",пТекущееДело);
+ ДопПараметры.Вставить("РасписаниеРегламентногоЗадания",Новый РасписаниеРегламентногоЗадания);
+
+ РезультатФункции = СоздатьОбновитьРегламентноеЗадание(ДопПараметры);
+
+КонецПроцедуры
+
Процедура ОбновитьНаСервере() Экспорт
СохранитьТекущиеДела();
ЗаполнитьТекущиеДела();
КонецПроцедуры
+
+Функция СоздатьОбновитьРегламентноеЗадание(ДопПараметры) Экспорт
+
+ пВключеноРегламентноеТекущееДело = ДопПараметры.ВключеноРегламентноеТекущееДело;
+ пРасписаниеРегламентногоЗадания = ДопПараметры.РасписаниеРегламентногоЗадания;
+ пТекущееДело = ДопПараметры.ТекущееДело;
+
+ РеглЗаданиеОбъект = ПолучитьРеглЗаданиеОбъект(ДопПараметры);
+
+ РеглЗаданиеОбъект.Использование = пВключеноРегламентноеТекущееДело;
+ РеглЗаданиеОбъект.Наименование = "Создание текущего дела: " + пТекущееДело;
+ РеглЗаданиеОбъект.Расписание = пРасписаниеРегламентногоЗадания;
+
+ РеглЗаданиеОбъект.Записать();
+
+ пИдентификаторРасписаниеРегламента = РеглЗаданиеОбъект.УникальныйИдентификатор;
+
+ РезультатФункции = Новый Структура();
+ РезультатФункции.Вставить("ИдентификаторРасписаниеРегламента",пИдентификаторРасписаниеРегламента);
+ РезультатФункции.Вставить("РасписаниеРегламентногоЗаданияПредставление",""+пРасписаниеРегламентногоЗадания);
+
+ Возврат РезультатФункции;
+КонецФункции
+
+Функция ПолучитьРеглЗаданиеОбъект(ДопПараметры)
+ Перем РеглЗаданиеОбъект;
+
+ пИдентификаторРасписаниеРегламента = ДопПараметры.ИдентификаторРасписаниеРегламента;
+ Если НЕ ЗначениеЗаполнено(пИдентификаторРасписаниеРегламента) Тогда
+ пИдентификаторРасписаниеРегламента = Новый УникальныйИдентификатор();
+ Конецесли;
+
+ РеглЗаданиеОбъект = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(пИдентификаторРасписаниеРегламента);
+
+ Если РеглЗаданиеОбъект = Неопределено Тогда
+ РеглЗаданиеОбъект = СоздатьРегламентоеЗадание(ДопПараметры);
+ Конецесли;
+
+ Возврат РеглЗаданиеОбъект;
+КонецФункции
+
+Функция СоздатьРегламентоеЗадание(ДопПараметры)
+
+ //пИдентификаторРасписаниеРегламента = ДопПараметры.ИдентификаторРасписаниеРегламента;
+ //Если НЕ ЗначениеЗаполнено(пИдентификаторРасписаниеРегламента) Тогда
+ // пИдентификаторРасписаниеРегламента = Новый УникальныйИдентификатор();
+ //Конецесли;
+
+ пТекущееДело = ДопПараметры.ТекущееДело;
+
+ //МассивТекРегламентныхДел = Новый Массив();
+ //МассивТекРегламентныхДел.Добавить(пТекущееДело);
+
+ РеглЗаданиеОбъект = РегламентныеЗадания.СоздатьРегламентноеЗадание(Метаданные.РегламентныеЗадания.узСозданиеТекущихДелПоРегламенту);
+ //РеглЗаданиеОбъект.Ключ = пИдентификаторРасписаниеРегламента;
+ РеглЗаданиеОбъект.Параметры.Добавить(пТекущееДело);
+
+ Возврат РеглЗаданиеОбъект;
+
+КонецФункции
diff --git a/src/cf/DataProcessors/узТекущиеДела/Forms/Форма/Ext/Form.xml b/src/cf/DataProcessors/узТекущиеДела/Forms/Форма/Ext/Form.xml
index 3cba67832..8618f8397 100644
--- a/src/cf/DataProcessors/узТекущиеДела/Forms/Форма/Ext/Form.xml
+++ b/src/cf/DataProcessors/узТекущиеДела/Forms/Форма/Ext/Form.xml
@@ -120,7 +120,10 @@
+ ТЧТекущиеДелаВыборЗначения
+ ТЧТекущиеДелаВыбор
ТЧТекущиеДелаПередУдалением
+ ТЧТекущиеДелаПриАктивизацииСтроки
ТЧТекущиеДелаПриНачалеРедактирования
ТЧТекущиеДелаПриИзменении
@@ -244,6 +247,71 @@
false
+
+
+
+ ru
+ Настройка регламента
+
+
+
+
+ ru
+ Группа настройка регламента
+
+
+ Vertical
+ Collapsible
+
+
+ ru
+ Настройка регламента
+
+
+ None
+
+
+
+ Horizontal
+ None
+ false
+
+
+
+
+
+
+
+ Items.ТЧТекущиеДела.CurrentData.ВключеноРегламентноеТекущееДело
+ Tumbler
+
+
+ ru
+ БЛ=Нет; БИ=Да
+
+
+
+
+
+ ТЧТекущиеДелаВключеноРегламентноеТекущееДелоПриИзменении
+
+
+
+
Items.ТЧТекущиеДела.CurrentData.ТекстСодержания
Top
@@ -392,18 +460,45 @@
+
+
+
+ ru
+ Старое содержание
+
+
+
+
+ ru
+ Группа старое содержание
+
+
+ Collapsible
+
+
+ ru
+ Старое содержание
+
+
+ true
+ None
+
+
+
+ Items.ТЧТекущиеДела.CurrentData.ТекстСодержанияСтарое
+ None
+ false
+ false
+ true
+ true
+ true
+
+
+
+
+
-
- None
- false
-
-
-
- None
- false
-
-
@@ -441,6 +536,15 @@
ПоказыватьПозжеПриИзменении
+
+ Объект.ПоказыватьРегламентные
+ Auto
+
+
+
+ ПоказыватьРегламентныеПриИзменении
+
+
@@ -462,6 +566,48 @@
xs:boolean
+
+
+
+ ru
+ Расписание регламентного задания
+
+
+
+
+
+
+
+ ru
+ Строка ТЧТекущие дела текущее дело
+
+
+
+ cfg:CatalogRef.узТекущиеДела
+
+
+
+
+
+ ru
+ Модифицированность текущего дела
+
+
+
+ xs:boolean
+
+
+
+
+
+ ru
+ Отключить возможность создание регламентных текущих дел
+
+
+
+ xs:boolean
+
+
@@ -670,5 +816,40 @@
КомандаНастройки
+
+
+
+ ru
+ Расписание
+
+
+
+
+ ru
+ Команда настроить расписание
+
+
+ КомандаНастроитьРасписание
+
+
+
+
+ ru
+ Сохранить
+
+
+
+
+ ru
+ Сохранить регламентное текущее дело
+
+
+
+ StdPicture.SaveFile
+ 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 fa80a6f46..8554668c5 100644
--- a/src/cf/DataProcessors/узТекущиеДела/Forms/Форма/Ext/Form/Module.bsl
+++ b/src/cf/DataProcessors/узТекущиеДела/Forms/Форма/Ext/Form/Module.bsl
@@ -23,23 +23,59 @@
Объект.ПоказыватьСегодня = Истина;
Объект.ПоказыватьНаНеделе = Истина;
Объект.ПоказыватьПозже = Истина;
+
+ ОтключитьВозможностьСозданиеРегламентныхТекущихДел = Справочники.узКонстанты.ПолучитьЗначениеКонстанты(
+ "ОтключитьВозможностьСозданиеРегламентныхТекущихДел",Тип("Булево"),Отказ,Истина,Истина);
+
ЗаполнитьТекущиеДелаНаСервере();
УстановитьВидимостьДоступность();
КонецПроцедуры
&НаСервере
-Процедура УстановитьВидимостьДоступность()
+Процедура УстановитьВидимостьДоступность(ДопПараметры = Неопределено)
Элементы.ГруппаДопСведения.Видимость = Ложь;
- Элементы.ТЧТекущиеДелаГруппаЗадачаНомерЗадачи.Видимость = Ложь;
- Элементы.ТЧТекущиеДелаВопрос.Видимость = Ложь;
+ //Элементы.ТЧТекущиеДелаГруппаЗадачаНомерЗадачи.Видимость = Ложь;
+ //Элементы.ТЧТекущиеДелаВопрос.Видимость = Ложь;
+ Элементы.ТЧТекущиеДелаВыполнено.Видимость = Ложь;
+ Элементы.ТЧТекущиеДелаДатаВыполнения.Видимость = Ложь;
+ Элементы.ГруппаНастройкаРегламента.Видимость = Ложь;
+ Элементы.КомандаСохранитьРегламентноеТекущееДело.Видимость = Ложь;
+ Элементы.ПоказыватьРегламентные.Видимость = Ложь;
Если ПоказыватьДопСведения Тогда
Элементы.ГруппаДопСведения.Видимость = Истина;
Иначе
- Элементы.ТЧТекущиеДелаГруппаЗадачаНомерЗадачи.Видимость = Истина;
- Элементы.ТЧТекущиеДелаВопрос.Видимость = Истина;
+ //Элементы.ТЧТекущиеДелаГруппаЗадачаНомерЗадачи.Видимость = Истина;
+ //Элементы.ТЧТекущиеДелаВопрос.Видимость = Истина;
КонецЕсли;
+ ГруппаТекДел_Регламентное = ПредопределенноеЗначение("Справочник.узГруппыТекущихДел.Регламентное");
+ пГруппаТекущегоДела = Неопределено;
+ СтрокаТЧТекущиеДела = Неопределено;
+
+ Если ДопПараметры <> Неопределено Тогда
+ СтрокаТЧТекущиеДела = ДопПараметры.СтрокаТЧТекущиеДела;
+ Конецесли;
+ Если СтрокаТЧТекущиеДела = Неопределено тогда
+ Элементы.ТЧТекущиеДелаВыполнено.Видимость = Истина;
+ Элементы.ТЧТекущиеДелаДатаВыполнения.Видимость = Истина;
+ Иначе
+ пГруппаТекущегоДела = СтрокаТЧТекущиеДела.ГруппаТекущегоДела;
+ Конецесли;
+
+ Если пГруппаТекущегоДела = ГруппаТекДел_Регламентное Тогда
+ Элементы.ГруппаНастройкаРегламента.Видимость = Истина;
+ Если МодифицированностьТекущегоДела Тогда
+ Элементы.КомандаСохранитьРегламентноеТекущееДело.Видимость = Истина
+ Конецесли;
+ Иначе
+ Элементы.ТЧТекущиеДелаВыполнено.Видимость = Истина;
+ Элементы.ТЧТекущиеДелаДатаВыполнения.Видимость = Истина;
+ Конецесли;
+
+ Если НЕ ОтключитьВозможностьСозданиеРегламентныхТекущихДел Тогда
+ Элементы.ПоказыватьРегламентные.Видимость = Истина;
+ Конецесли;
КонецПроцедуры
&НаСервере
@@ -325,3 +361,301 @@
ОтключитьОбработчикОжидания("СохранитьТекущиеДелаНаКлиенте");
Конецесли;
КонецПроцедуры
+
+&НаКлиенте
+Процедура ТЧТекущиеДелаПриАктивизацииСтроки(Элемент)
+
+ УстановитьВидимостьДоступностьДляТекущегоДелаНаКлиенте(Истина);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗаполнитьРасписаниеРегламентногоЗадания()
+
+ СтрокаТЧТекущиеДела = Элементы.ТЧТекущиеДела.ТекущиеДанные;
+ Если СтрокаТЧТекущиеДела = Неопределено тогда
+ Возврат;
+ Конецесли;
+
+ Если НЕ ПоказыватьДопСведения Тогда
+ Возврат;
+ Конецесли;
+
+ Если ЗначениеЗаполнено(РасписаниеРегламентногоЗадания) Тогда
+ Возврат;
+ Конецесли;
+
+ пГруппаТекущегоДела = СтрокаТЧТекущиеДела.ГруппаТекущегоДела;
+ ГруппаТекДел_Регламентное = ПредопределенноеЗначение("Справочник.узГруппыТекущихДел.Регламентное");
+
+ Если пГруппаТекущегоДела <> ГруппаТекДел_Регламентное Тогда
+ Возврат;
+ Конецесли;
+
+ пТекущееДело = СтрокаТЧТекущиеДела.ТекущееДело;
+
+ СтрокаТЧТекущиеДелаТекущееДело = пТекущееДело;
+
+ ВТДопПараметры = Новый Структура();
+ ВТДопПараметры.Вставить("ИдентификаторРасписаниеРегламента",СтрокаТЧТекущиеДела.ИдентификаторРасписаниеРегламента);
+
+ РезультатФункции = ПолучитьРасписаниеРегламентногоЗаданияНаСервере(ВТДопПараметры);
+
+ РасписаниеРегламентногоЗадания = РезультатФункции.РасписаниеРегламентногоЗадания;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура УстановитьВидимостьДоступностьДляТекущегоДелаНаКлиенте(ЭтоАктивизацияСтроки = Ложь)
+
+ СтрокаТЧТекущиеДела = Элементы.ТЧТекущиеДела.ТекущиеДанные;
+ Если СтрокаТЧТекущиеДела = Неопределено тогда
+ Возврат;
+ Конецесли;
+
+ Если НЕ ПоказыватьДопСведения Тогда
+ Возврат;
+ Конецесли;
+
+ пТекущееДело = СтрокаТЧТекущиеДела.ТекущееДело;
+
+ Если ЭтоАктивизацияСтроки Тогда
+
+ Если СтрокаТЧТекущиеДелаТекущееДело = пТекущееДело Тогда
+ Возврат;
+ Конецесли;
+
+ //Элементы.КомандаНастроитьРасписание.Заголовок = "<Расписание не задано>";
+ МодифицированностьТекущегоДела = Ложь;
+ Конецесли;
+
+ Элементы.КомандаНастроитьРасписание.Заголовок = "" + СтрокаТЧТекущиеДела.РасписаниеРегламентногоЗаданияПредставление;
+
+ //ЗаполнитьДанныеПоРегламентномуЗаданию(Истина);
+
+ СтрокаТЧТекущиеДелаТекущееДело = пТекущееДело;
+
+ СтруктураСтрокаТЧТекущиеДела = Новый Структура();
+ СтруктураСтрокаТЧТекущиеДела.Вставить("ГруппаТекущегоДела",СтрокаТЧТекущиеДела.ГруппаТекущегоДела);
+
+ ВТДопПараметры = Новый Структура();
+ ВТДопПараметры.Вставить("СтрокаТЧТекущиеДела",СтруктураСтрокаТЧТекущиеДела);
+
+ УстановитьВидимостьДоступность(ВТДопПараметры);
+
+КонецПроцедуры
+
+
+&НаКлиенте
+Процедура ТЧТекущиеДелаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
+ // Вставить содержимое обработчика.
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ТЧТекущиеДелаВыборЗначения(Элемент, Значение, СтандартнаяОбработка)
+ // Вставить содержимое обработчика.
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПоказыватьРегламентныеПриИзменении(Элемент)
+ ОбновитьТекущиеДелаНаСервере();
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПредставлениеРасписанияРегламентногоЗаданияНажатие(Элемент, СтандартнаяОбработка)
+
+
+КонецПроцедуры
+
+
+&НаСервереБезКонтекста
+Функция ПолучитьРасписаниеРегламентногоЗаданияНаСервере(ДопПараметры)
+
+ Возврат Справочники.узТекущиеДела.ПолучитьРасписаниеРегламентногоЗадания(ДопПараметры);
+
+КонецФункции
+
+&НаКлиенте
+Процедура ТЧТекущиеДелаВключеноРегламентноеТекущееДелоПриИзменении(Элемент)
+
+ МодифицированностьТекущегоДела = Истина;
+
+ УстановитьВидимостьДоступностьДляТекущегоДелаНаКлиенте(Ложь);
+
+КонецПроцедуры
+
+&НаСервере
+Функция Удалить_ПолучитьИдентификаторРасписаниеРегламента(ДопПараметры)
+
+ ИдентификаторРасписаниеРегламента = ДопПараметры.ИдентификаторРасписаниеРегламента;
+
+ Если НЕ ЗначениеЗаполнено(ИдентификаторРасписаниеРегламента) Тогда
+ ИдентификаторРасписаниеРегламента = Новый УникальныйИдентификатор;
+ Конецесли;
+
+ Возврат ИдентификаторРасписаниеРегламента;
+КонецФункции
+
+&НаСервере
+Функция СоздатьОбновитьРегламентноеЗаданиеНаСервере(ДопПараметры)
+
+ пОбъект = РеквизитФормыВЗначение("Объект");
+ РезультатФункции = пОбъект.СоздатьОбновитьРегламентноеЗадание(ДопПараметры);
+ ЗначениеВРеквизитФормы(пОбъект,"Объект");
+
+ МодифицированностьТекущегоДела = Ложь;
+ УстановитьВидимостьДоступность();
+
+ Возврат РезультатФункции;
+КонецФункции
+
+&НаКлиенте
+Процедура ПредставлениеРасписанияРегламентногоЗаданияПриИзменении(Элемент)
+ // Вставить содержимое обработчика.
+КонецПроцедуры
+
+&НаКлиенте
+Процедура КомандаНастроитьРасписание(Команда)
+ СтрокаТЧТекущиеДела = Элементы.ТЧТекущиеДела.ТекущиеДанные;
+
+ Если СтрокаТЧТекущиеДела = Неопределено тогда
+ Возврат;
+ Конецесли;
+
+ ВТДопПараметры = Новый Структура();
+ ВТДопПараметры.Вставить("ИдентификаторРасписаниеРегламента",СтрокаТЧТекущиеДела.ИдентификаторРасписаниеРегламента);
+
+ РезультатФункции = ПолучитьРасписаниеРегламентногоЗаданияНаСервере(ВТДопПараметры);
+
+ //СтрокаТЧТекущиеДела.ИдентификаторРасписаниеРегламента = РезультатФункции.ИдентификаторРасписаниеРегламента;
+
+ РасписаниеРегламентногоЗадания = РезультатФункции.РасписаниеРегламентногоЗадания;
+ Если РасписаниеРегламентногоЗадания = Неопределено Тогда
+ РасписаниеРегламентногоЗадания = Новый РасписаниеРегламентногоЗадания;
+ Конецесли;
+
+ ДиалогРасписания = Новый ДиалогРасписанияРегламентногоЗадания(РасписаниеРегламентногоЗадания);
+
+ ВТДопПараметрыЗакрытия = Новый Структура();
+ ВТДопПараметрыЗакрытия.Вставить("СтрокаТЧТекущиеДела",СтрокаТЧТекущиеДела);
+
+ //ДопПараметры.Вставить("",);
+
+ ОповещениеОЗакрытии = Новый ОписаниеОповещения("ОбработатьДиалогРасписанияПриВыборе", ЭтаФорма, ВТДопПараметрыЗакрытия);
+
+ ДиалогРасписания.Показать(ОповещениеОЗакрытии);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ОбработатьДиалогРасписанияПриВыборе(РезультатЗакрытия, ДопПараметры) Экспорт
+ Если РезультатЗакрытия = Неопределено Тогда
+ Возврат;
+ Конецесли;
+
+ СтрокаТЧТекущиеДела = ДопПараметры.СтрокаТЧТекущиеДела;
+ МодифицированностьТекущегоДела = Истина;
+
+ РасписаниеРегламентногоЗадания = РезультатЗакрытия;
+
+ пРасписаниеРегламентногоЗаданияПредставление = "" + РасписаниеРегламентногоЗадания;
+
+ Элементы.КомандаНастроитьРасписание.Заголовок = пРасписаниеРегламентногоЗаданияПредставление;
+
+ СтрокаТЧТекущиеДела.РасписаниеРегламентногоЗаданияПредставление = пРасписаниеРегламентногоЗаданияПредставление;
+
+ УстановитьВидимостьДоступностьДляТекущегоДелаНаКлиенте(Ложь);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура СохранитьТекущееДелоРегламентноеНаКлиенте()
+ СтрокаТЧТекущиеДела = Элементы.ТЧТекущиеДела.ТекущиеДанные;
+ Если СтрокаТЧТекущиеДела = Неопределено тогда
+ Возврат;
+ Конецесли;
+
+ пТекущееДело = СтрокаТЧТекущиеДела.ТекущееДело;
+ Если НЕ ЗначениеЗаполнено(пТекущееДело) Тогда
+ Сообщение = Новый СообщениеПользователю;
+ Сообщение.Текст = "Сохраните текущие дела прежде чем настраивать регламентое текущее дело";
+ Сообщение.Сообщить();
+
+ СтрокаТЧТекущиеДела.ВключеноРегламентноеТекущееДело = Ложь;
+ Возврат;
+ Конецесли;
+
+ ЗаполнитьРасписаниеРегламентногоЗадания();
+
+ Если НЕ УказаноРасписаниеРегламентногоЗадания() Тогда
+ Сообщение = Новый СообщениеПользователю;
+ Сообщение.Текст = "Укажите расписание текущего дела, перед тем как его включать";
+ Сообщение.Сообщить();
+
+ СтрокаТЧТекущиеДела.ВключеноРегламентноеТекущееДело = Ложь;
+
+ Возврат;
+ Конецесли;
+
+ СтрокаТЧТекущиеДелаТекущееДело = Неопределено;
+
+ ДопПараметры = Новый Структура();
+ ДопПараметры.Вставить("ИдентификаторРасписаниеРегламента",СтрокаТЧТекущиеДела.ИдентификаторРасписаниеРегламента);
+ ДопПараметры.Вставить("ВключеноРегламентноеТекущееДело",СтрокаТЧТекущиеДела.ВключеноРегламентноеТекущееДело);
+ ДопПараметры.Вставить("ТекущееДело",пТекущееДело);
+ ДопПараметры.Вставить("РасписаниеРегламентногоЗадания",РасписаниеРегламентногоЗадания);
+
+ РезультатФункции = СоздатьОбновитьРегламентноеЗаданиеНаСервере(ДопПараметры);
+
+ СтрокаТЧТекущиеДела.ИдентификаторРасписаниеРегламента = РезультатФункции.ИдентификаторРасписаниеРегламента;
+ СтрокаТЧТекущиеДела.РасписаниеРегламентногоЗаданияПредставление = РезультатФункции.РасписаниеРегламентногоЗаданияПредставление;
+
+
+ СохранитьТекущиеДелаНаКлиенте();
+КонецПроцедуры
+
+&НаКлиенте
+Функция УказаноРасписаниеРегламентногоЗадания()
+ пУказаноРасписаниеРегламентногоЗадания = Ложь;
+
+ МассивСвойств = Новый Массив();
+ МассивСвойств.Добавить("ВремяЗавершения");
+ МассивСвойств.Добавить("ВремяКонца");
+ МассивСвойств.Добавить("ВремяНачала");
+ МассивСвойств.Добавить("ДатаКонца");
+ МассивСвойств.Добавить("ДатаНачала");
+ МассивСвойств.Добавить("ДеньВМесяце");
+ МассивСвойств.Добавить("ДеньНеделиВМесяце");
+ МассивСвойств.Добавить("ИнтервалЗавершения");
+ МассивСвойств.Добавить("ПаузаПовтора");
+ МассивСвойств.Добавить("ПериодНедель");
+ МассивСвойств.Добавить("ПериодПовтораВТечениеДня");
+ МассивСвойств.Добавить("ПериодПовтораДней");
+
+ МассивСвойствСПроверкойКоличества = Новый Массив();
+ МассивСвойствСПроверкойКоличества.Добавить("ДетальныеРасписанияДня");
+ МассивСвойствСПроверкойКоличества.Добавить("ДниНедели");
+ МассивСвойствСПроверкойКоличества.Добавить("Месяцы");
+
+ Для каждого ИмяСвойства из МассивСвойств Цикл
+ ЗначениеСвойства = РасписаниеРегламентногоЗадания[ИмяСвойства];
+ Если ЗначениеЗаполнено(ЗначениеСвойства) Тогда
+ пУказаноРасписаниеРегламентногоЗадания = Истина;
+ Возврат пУказаноРасписаниеРегламентногоЗадания;
+ Конецесли;
+ КонецЦикла;
+
+ Для каждого ИмяСвойстваСПроверкойКоличества из МассивСвойствСПроверкойКоличества Цикл
+ МассивЗначенияСвойства = РасписаниеРегламентногоЗадания[ИмяСвойстваСПроверкойКоличества];
+ Если МассивЗначенияСвойства.Количество() > 0 Тогда
+ пУказаноРасписаниеРегламентногоЗадания = Истина;
+ Возврат пУказаноРасписаниеРегламентногоЗадания;
+ Конецесли;
+ КонецЦикла;
+
+ Возврат пУказаноРасписаниеРегламентногоЗадания;
+КонецФункции
+
+&НаКлиенте
+Процедура КомандаСохранитьРегламентноеТекущееДело(Команда)
+ СохранитьТекущееДелоРегламентноеНаКлиенте();
+КонецПроцедуры
diff --git a/src/cf/ScheduledJobs/узСозданиеТекущихДелПоРегламенту.xml b/src/cf/ScheduledJobs/узСозданиеТекущихДелПоРегламенту.xml
new file mode 100644
index 000000000..43477c57a
--- /dev/null
+++ b/src/cf/ScheduledJobs/узСозданиеТекущихДелПоРегламенту.xml
@@ -0,0 +1,22 @@
+
+
+
+
+ узСозданиеТекущихДелПоРегламенту
+
+
+ ru
+ Создание текущих дел по регламенту
+
+
+
+ CommonModule.узОбщийМодульСервер.узСозданиеТекущихДелПоРегламенту
+
+
+
+ true
+ 3
+ 10
+
+
+
\ No newline at end of file