From 3cd6d56c34c3ade1019a6151346cfcaa9934c78c Mon Sep 17 00:00:00 2001 From: Anton Ivanov Date: Thu, 9 May 2019 10:39:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6?= =?UTF-8?q?=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=B2=D1=82=D0=BE=D1=80=D1=8F?= =?UTF-8?q?=D1=8E=D1=89=D0=B8=D1=85=D1=81=D1=8F=20(=D1=80=D0=B5=D0=B3?= =?UTF-8?q?=D0=BB=D0=B0=D0=BC=D0=B5=D0=BD=D1=82=D0=BD=D1=8B=D1=85)=20?= =?UTF-8?q?=D1=82=D0=B5=D0=BA=D1=83=D1=89=D0=B8=D1=85=20=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=20=D0=BF=D0=BE=20=D0=BF=D1=80=D0=BE=D0=B8=D0=B7=D0=B2=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D0=BE=D0=BC=D1=83=20=D1=80=D0=B0=D1=81=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D1=8E.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../узГруппыТекущихДел/Ext/Predefined.xml | 6 + .../Catalogs/узКонстанты/Ext/Predefined.xml | 6 + src/cf/Catalogs/узТекущиеДела.xml | 129 +++++++ .../узТекущиеДела/Ext/ManagerModule.bsl | 54 +++ .../узОбщийМодульСервер/Ext/Module.bsl | 17 + src/cf/DataProcessors/узТекущиеДела.xml | 194 ++++++++++ .../узТекущиеДела/Ext/ObjectModule.bsl | 142 +++++++- .../узТекущиеДела/Forms/Форма/Ext/Form.xml | 201 +++++++++- .../Forms/Форма/Ext/Form/Module.bsl | 344 +++++++++++++++++- .../узСозданиеТекущихДелПоРегламенту.xml | 22 ++ 10 files changed, 1099 insertions(+), 16 deletions(-) create mode 100644 src/cf/ScheduledJobs/узСозданиеТекущихДелПоРегламенту.xml 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 + ForItem + DontIndex + Use + + + + + ИдентификаторРасписаниеРегламента + + + ru + Идентификатор расписание регламента + + + + + v8:UUID + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + DontUse + + + + + ТекстСодержанияСтарое + + + ru + Cодержания старое + + + en + Content + + + ro + Content + + + + + xs:string + + 0 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + 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 + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройка регламента</v8:content> + </v8:item> + + + + ru + Группа настройка регламента + + + Vertical + Collapsible + + + ru + Настройка регламента + + + None + + + + Horizontal + None + false + + + + + + + + Items.ТЧТекущиеДела.CurrentData.ВключеноРегламентноеТекущееДело + Tumbler + + + ru + БЛ=Нет; БИ=Да + + + + + + ТЧТекущиеДелаВключеноРегламентноеТекущееДелоПриИзменении + + + + Items.ТЧТекущиеДела.CurrentData.ТекстСодержания Top @@ -392,18 +460,45 @@ + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Старое содержание</v8:content> + </v8:item> + + + + 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 + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Расписание регламентного задания</v8:content> + </v8:item> + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Строка ТЧТекущие дела текущее дело</v8:content> + </v8:item> + + + cfg:CatalogRef.узТекущиеДела + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Модифицированность текущего дела</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Отключить возможность создание регламентных текущих дел</v8:content> + </v8:item> + + + xs:boolean + + @@ -670,5 +816,40 @@ КомандаНастройки + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Расписание</v8:content> + </v8:item> + + + + ru + Команда настроить расписание + + + КомандаНастроитьРасписание + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Сохранить</v8:content> + </v8:item> + + + + 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 + true + 3 + 10 + + + \ No newline at end of file