diff --git a/src/cf/Catalogs/узКонстанты.xml b/src/cf/Catalogs/узКонстанты.xml
new file mode 100644
index 000000000..5a60e0d0b
--- /dev/null
+++ b/src/cf/Catalogs/узКонстанты.xml
@@ -0,0 +1,156 @@
+
+
+
+
+
+ 00c27174-d8aa-4ec9-bb9a-ae704a9e126b
+ 6ea9c259-2e79-41d7-80e3-57cd52eae43e
+
+
+ ce9815e6-50e4-48fe-98d2-084c98aafe75
+ e1472d55-5d02-4023-ba4a-8a2c0ce069f8
+
+
+ 65c0797d-b6b9-4d70-943a-7656632b0287
+ b94acb32-086d-421c-bb63-1739ff51c1e4
+
+
+ 68258734-4782-4f18-8245-de48e0adb093
+ 3fcf647c-840e-4f49-acb4-b3a6adec8ac9
+
+
+ 981d1e15-759d-410a-ae12-9130abe3bb40
+ cdb5825e-ad96-4fd2-91d0-50191b3e19cd
+
+
+
+ узКонстанты
+
+
+ ru
+ Константы
+
+
+
+ true
+ HierarchyFoldersAndItems
+ false
+ 2
+ true
+ true
+
+ ToItems
+ 9
+ 150
+ String
+ Variable
+ WholeCatalog
+ true
+ true
+ AsDescription
+
+ Auto
+ InDialog
+ false
+ BothWays
+
+ Catalog.узКонстанты.StandardAttribute.Description
+ Catalog.узКонстанты.StandardAttribute.Code
+
+ Begin
+ DontUse
+ Directly
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ Managed
+ Use
+
+
+
+
+
+ Use
+ Auto
+
+
+
+
+
+ 39810dde-56b4-422a-b62b-04b71b83d9f0
+ b36a84c5-e48c-4589-8ff9-cc05f3e67bbe
+
+
+ 71b32f5f-2f24-4d8d-a25d-bca3d87679a8
+ 5d6f1256-b6bd-4c71-b447-8701a093a6f1
+
+
+
+ ТЧЗначения
+
+
+ ru
+ ТЧЗначения
+
+
+
+
+ DontCheck
+
+
+
+
+
+ ЛевоеЗначение
+
+
+ ru
+ Левое значение
+
+
+
+
+ xs:string
+
+ 150
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ DontIndex
+ Use
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/Catalogs/узКонстанты/Ext/ManagerModule.bsl b/src/cf/Catalogs/узКонстанты/Ext/ManagerModule.bsl
new file mode 100644
index 000000000..374d68d97
--- /dev/null
+++ b/src/cf/Catalogs/узКонстанты/Ext/ManagerModule.bsl
@@ -0,0 +1,52 @@
+Функция ПолучитьМассивЗначенийКонстанты(ИмяКонстанты,ТипКонстанты,РеквизитТЧЗначения = "ЛевоеЗначение",Отказ = Ложь, ВыдаватьСообщенияОбОшибках = Истина) Экспорт
+ МассивЗначенийКонстанты = Неопределено;
+
+ пКонстанта = ПредопределенноеЗначение("Справочник.узКонстанты."+ИмяКонстанты);
+
+ Если ТипЗнч(ТипКонстанты) = Тип("Строка") Тогда
+ ТипКонстанты = Тип(ТипКонстанты);
+ Конецесли;
+
+ пТЧЗначения = пКонстанта.ТЧЗначения;
+ Если пТЧЗначения.Количество() = 0 Тогда
+ Если ВыдаватьСообщенияОбОшибках Тогда
+ Сообщить("Ошибка! Не заполнена ТЧЗначения """+ИмяКонстанты+""", в константах");
+ КонецЕсли;
+ Отказ = Истина;
+ Возврат МассивЗначенийКонстанты;
+ Иначе
+ МассивЗначенийКонстанты = Новый Массив();
+ Конецесли;
+
+ МассивОшибок = Новый Массив();
+
+ Для каждого СтрокаТЧЗначения из пТЧЗначения цикл
+ мЗначениеКонстанты = СтрокаТЧЗначения[РеквизитТЧЗначения];
+ Если мЗначениеКонстанты = Неопределено
+ ИЛИ НЕ ЗначениеЗаполнено(мЗначениеКонстанты) Тогда
+ МассивОшибок.Добавить("Ошибка! не заполнен элемент в ТЧЗначения """+ИмяКонстанты+""", в константах");
+ Отказ = Истина;
+ Продолжить;
+ Конецесли;
+ Если ТипЗнч(мЗначениеКонстанты) <> ТипКонстанты Тогда
+ МассивОшибок.Добавить("Ошибка! указан неверный тип для элемента """+ИмяКонстанты+""", в константах"
+ +" должен быть тип ["+ТипКонстанты+"]");
+ Отказ = Истина;
+ Продолжить;
+ Конецесли;
+ МассивЗначенийКонстанты.Добавить(мЗначениеКонстанты);
+ Конеццикла;
+
+ Если НЕ ЗначениеЗаполнено(МассивЗначенийКонстанты) Тогда
+ МассивОшибок.Добавить("Ошибка! Не заполнена ТЧЗначения """+ИмяКонстанты+""", в константах");
+ Отказ = Истина;
+ Конецесли;
+
+ Если ВыдаватьСообщенияОбОшибках Тогда
+ Для каждого ЭлМассиваОшибок из МассивОшибок цикл
+ Сообщить(ЭлМассиваОшибок);
+ Конеццикла;
+ Конецесли;
+
+ Возврат МассивЗначенийКонстанты;
+КонецФункции
diff --git a/src/cf/Catalogs/узКонстанты/Ext/Predefined.xml b/src/cf/Catalogs/узКонстанты/Ext/Predefined.xml
new file mode 100644
index 000000000..fce88d412
--- /dev/null
+++ b/src/cf/Catalogs/узКонстанты/Ext/Predefined.xml
@@ -0,0 +1,9 @@
+
+
+ -
+ СписокАдресовЭлектроннойПочтыДляОтправкиСистемныхУведомлений
+
000000001
+ Список адресов электронной почты для отправки системных уведомлений
+ false
+
+
\ No newline at end of file
diff --git a/src/cf/CommonForms/узНастройкиУправленияЗадачами/Ext/Form.xml b/src/cf/CommonForms/узНастройкиУправленияЗадачами/Ext/Form.xml
index dea03d065..245154303 100644
--- a/src/cf/CommonForms/узНастройкиУправленияЗадачами/Ext/Form.xml
+++ b/src/cf/CommonForms/узНастройкиУправленияЗадачами/Ext/Form.xml
@@ -71,6 +71,72 @@
узИспользоватьСвоиЦветаДляЗадачПриИзменении
+
+ false
+ false
+ true
+ true
+ true
+ узКонстанты
+ узКонстанты.DefaultPicture
+ false
+ 60
+
+ Custom
+ 0001-01-01T00:00:00
+ 0001-01-01T00:00:00
+
+ Items
+ false
+
+ true
+ false
+ Auto
+
+
+ false
+
+
+
+
+ - узКонстанты
+ SearchStringRepresentation
+
+
+
+
+
+
+ - узКонстанты
+ ViewStatusRepresentation
+
+
+
+
+
+
+ - узКонстанты
+ SearchControl
+
+
+
+
+
+ КонстантыПередНачаломДобавления
+
+
+
+ узКонстанты.Description
+
+
+
+
+ узКонстанты.Code
+
+
+
+
+
@@ -106,5 +172,37 @@
xs:boolean
+
+
+
+ ru
+ Константы
+
+
+
+ cfg:DynamicList
+
+
+ false
+ true
+ Catalog.узКонстанты
+
+
+ Normal
+ dfcece9d-5077-440b-b6b3-45a5cb4538eb
+
+
+ Normal
+ 88619765-ccb3-46c6-ac52-38e9c992ebd4
+
+
+ Normal
+ b75fecce-942b-4aed-abc9-e6a02e460fb3
+
+ Normal
+ 911b6018-f537-43e8-a417-da56b22f9aec
+
+
+
\ No newline at end of file
diff --git a/src/cf/CommonForms/узНастройкиУправленияЗадачами/Ext/Form/Module.bsl b/src/cf/CommonForms/узНастройкиУправленияЗадачами/Ext/Form/Module.bsl
index 4a1a78167..fb3ed231c 100644
--- a/src/cf/CommonForms/узНастройкиУправленияЗадачами/Ext/Form/Module.bsl
+++ b/src/cf/CommonForms/узНастройкиУправленияЗадачами/Ext/Form/Module.bsl
@@ -14,12 +14,12 @@
&НаСервере
Процедура узИспользоватьУчетВремениПриИзмененииНаСервере()
- Константы.узИспользоватьУчетВремени.Установить(узИспользоватьУчетВремени);
+ узКонстанты.узИспользоватьУчетВремени.Установить(узИспользоватьУчетВремени);
КонецПроцедуры
&НаСервере
Процедура узИспользоватьВопросыИОтветыПриИзмененииНаСервере()
- Константы.узИспользоватьВопросыИОтветы.Установить(узИспользоватьВопросыИОтветы);
+ узКонстанты.узИспользоватьВопросыИОтветы.Установить(узИспользоватьВопросыИОтветы);
КонецПроцедуры
&НаКлиенте
@@ -37,5 +37,10 @@
&НаСервере
Процедура узИспользоватьСвоиЦветаДляЗадачПриИзмененииНаСервере()
- Константы.узИспользоватьСвоиЦветаДляЗадач.Установить(узИспользоватьСвоиЦветаДляЗадач);
+ узКонстанты.узИспользоватьСвоиЦветаДляЗадач.Установить(узИспользоватьСвоиЦветаДляЗадач);
КонецПроцедуры
+
+&НаКлиенте
+Процедура КонстантыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
+ Отказ = Истина;
+КонецПроцедуры
diff --git a/src/cf/Configuration.xml b/src/cf/Configuration.xml
index 752b2491d..6f785c4e1 100644
--- a/src/cf/Configuration.xml
+++ b/src/cf/Configuration.xml
@@ -1232,6 +1232,7 @@
узСпринты
узИдентификаторыОбъектовМетаданныхКонфигурации
узИсторияКонфигураций
+ узКонстанты
Встреча
ЗапланированноеВзаимодействие
СообщениеSMS
diff --git a/src/cf/DataProcessors/узЗагрузкаИзмененийИзХранилища/Ext/ObjectModule.bsl b/src/cf/DataProcessors/узЗагрузкаИзмененийИзХранилища/Ext/ObjectModule.bsl
index 65c42d924..1655a231b 100644
--- a/src/cf/DataProcessors/узЗагрузкаИзмененийИзХранилища/Ext/ObjectModule.bsl
+++ b/src/cf/DataProcessors/узЗагрузкаИзмененийИзХранилища/Ext/ObjectModule.bsl
@@ -1,5 +1,6 @@
Перем мТЗПоискКэш;
Перем мТЗСвойстваМетаданных;
+Перем мМассивАдресовЭлектроннойПочтыДляОтправкиСистемныхУведомлений;
Функция ЗагрузитьИзмененияИзХранилища(АдресФайлаПолученныйНаКлиенте = Неопределено,ФайлВыгрузкиИзменений = Неопределено) Экспорт
СоздатьСтруктурумТЗПоискКэш();
@@ -420,17 +421,26 @@
Перем пЗадача;
пКомментарий = СокрЛП(СтрокаТЗИсторияХранилища.Комментарий);
- Если НЕ ЗначениеЗаполнено(пКомментарий) Тогда
- ОтправитьУведомлениеОТомЧтоНезаполненКомментарийИлиНетУказанияЗадачи(СтрокаТЗИсторияХранилища);
+ Если НЕ ЗначениеЗаполнено(пКомментарий) Тогда
+ ТекстОшибки = "Ошибка! Не заполнен комментарий в хранилище";
+ ОтправитьУведомлениеОшибкаВКомментарииХранилища(ТекстОшибки,СтрокаТЗИсторияХранилища);
Возврат пЗадача;
Конецесли;
ПозРешетки = СтрНайти(пКомментарий,"#");
Если ПозРешетки = 0 Тогда
- ОтправитьУведомлениеОТомЧтоНезаполненКомментарийИлиНетУказанияЗадачи(СтрокаТЗИсторияХранилища);
+ ТекстОшибки = "Ошибка! В комментарии не указан номер задачи. Необходимо указать #НомерЗадачи";
+ ОтправитьУведомлениеОшибкаВКомментарииХранилища(ТекстОшибки,СтрокаТЗИсторияХранилища);
Возврат пЗадача;
Конецесли;
+ КоличествоУказанныхЗадач = СтрЧислоВхождений(пКомментарий,"#");
+ Если КоличествоУказанныхЗадач > 1 Тогда
+ ТекстОшибки = "Ошибка! В комментарии можно указывать только один номер задачи. В будущем всегда разбивайте помещения объектов в хранилище на отдельные задачи.";
+ ОтправитьУведомлениеОшибкаВКомментарииХранилища(ТекстОшибки,СтрокаТЗИсторияХранилища);
+ Возврат пЗадача;
+ Конецесли;
+
ДлинаСтроки = СтрДлина(пКомментарий);
НомерСимвола = ПозРешетки + 1;
НомерЗадачи = "";
@@ -458,15 +468,24 @@
Возврат пЗадача;
КонецФункции
-Процедура ОтправитьУведомлениеОТомЧтоНезаполненКомментарийИлиНетУказанияЗадачи(СтрокаТЗИсторияХранилища)
+Процедура ОтправитьУведомлениеОшибкаВКомментарииХранилища(ТекстОшибки,СтрокаТЗИсторияХранилища)
пПользовательКому = узОбщийМодульСервер.ПолучитьПользователяПоПользователюХранилища(СтрокаТЗИсторияХранилища.ПользовательХранилища);
- Если НЕ ЗначениеЗаполнено(пПользовательКому) Тогда
+ МассивПользователейКому = Новый Массив();
+ Если ЗначениеЗаполнено(пПользовательКому) Тогда
+ МассивПользователейКому.Добавить(пПользовательКому);
+ Конецесли;
+
+ Для каждого ЭлМассиваАдресовЭлектроннойПочтыДляОтправкиСистемныхУведомлений из мМассивАдресовЭлектроннойПочтыДляОтправкиСистемныхУведомлений цикл
+ МассивПользователейКому.Добавить(ЭлМассиваАдресовЭлектроннойПочтыДляОтправкиСистемныхУведомлений);
+ Конеццикла;
+
+ Если МассивПользователейКому.Количество() = 0 Тогда
Возврат;
Конецесли;
- пТемаПисьма = "Ошибка! Не заполнен номер задачи в комментарии в хранилище";
+ пТемаПисьма = ТекстОшибки;
пТекстПисьма = пТемаПисьма +"
| версия ["+СтрокаТЗИсторияХранилища.Версия+"]
@@ -478,7 +497,7 @@
ДопПараметры.Вставить("ВажностьЗадачи",Перечисления.ВариантыВажностиЗадачи.Высокая);
ДопПараметры.Вставить("ТекстПисьма",пТекстПисьма);
ДопПараметры.Вставить("ТемаПисьма",пТемаПисьма);
- ДопПараметры.Вставить("ПользовательКому",пПользовательКому);
+ ДопПараметры.Вставить("МассивПользователейКому",МассивПользователейКому);
узОбщийМодульСервер.ОтправитьПисьмо(ДопПараметры);
КонецПроцедуры
@@ -603,4 +622,8 @@
Функция ВЗначенииЯчейкиЕстьПодстрока(ЗначениеЯчейки,ПодстрокаПоиска)
Возврат СтрНайти(НРЕГ(ЗначениеЯчейки),НРЕГ(ПодстрокаПоиска))>0;
-КонецФункции
\ No newline at end of file
+КонецФункции
+
+
+мМассивАдресовЭлектроннойПочтыДляОтправкиСистемныхУведомлений = Справочники.узКонстанты.ПолучитьМассивЗначенийКонстанты("СписокАдресовЭлектроннойПочтыДляОтправкиСистемныхУведомлений"
+ ,Тип("Строка"),,Ложь,Ложь);
\ No newline at end of file
diff --git a/src/cf/Roles/ПолныеПрава/Ext/Rights.xml b/src/cf/Roles/ПолныеПрава/Ext/Rights.xml
index a1717058b..1056b6bd5 100644
--- a/src/cf/Roles/ПолныеПрава/Ext/Rights.xml
+++ b/src/cf/Roles/ПолныеПрава/Ext/Rights.xml
@@ -3494,6 +3494,25 @@
false
+
+
+