1
0
mirror of https://github.com/BlizD/Tasks.git synced 2025-01-14 03:20:16 +02:00

Регистрация активности пользователей

This commit is contained in:
Anton Ivanov 2017-03-18 08:33:49 +03:00
parent e2bf764dfa
commit daca5a93e6
14 changed files with 729 additions and 10 deletions

View File

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

View File

@ -773,10 +773,19 @@
Конецесли;
СобытияВИстории = ДополнительныеСвойства.СобытияВИстории;
РегистрацияАктивностиПользователя(СобытияВИстории,Отказ);
ОтправитьУведомлениеНаПочту(СобытияВИстории);
ДополнительныеСвойства.Удалить("СобытияВИстории");
КонецПроцедуры
Процедура РегистрацияАктивностиПользователя(СобытияВИстории,Отказ)
ВТДопПараметры = Новый Структура();
ВТДопПараметры.Вставить("СобытияВИстории",СобытияВИстории);
РегистрыСведений.узАктивностиПользователей.ДобавитьАктивностьПользователя(ЭтотОбъект,ВТДопПараметры,Отказ);
КонецПроцедуры
Процедура ИзменитьОсновнуюЗадачуДляВсехПодчиненныхЗадач()
Если ЭтоНовый() Тогда
Возврат;

View File

@ -480,6 +480,45 @@
<FullTextSearch>Use</FullTextSearch>
</Properties>
</Attribute>
<Attribute uuid="09f5913f-a5dd-4f00-9345-4912ffaa414e">
<Properties>
<Name>Пользователь</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пользователь</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>cfg:CatalogRef.Пользователи</v8:Type>
</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:nil="true"/>
<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>
<Attribute uuid="3830b523-e95c-4b27-b254-650259588c8f">
<Properties>
<Name>Комментарий</Name>

View File

@ -82,6 +82,11 @@
<ContextMenu name="ПользовательХранилищаКонтекстноеМеню" id="17"/>
<ExtendedTooltip name="ПользовательХранилищаРасширеннаяПодсказка" id="18"/>
</InputField>
<InputField name="Пользователь" id="75">
<DataPath>Объект.Пользователь</DataPath>
<ContextMenu name="ПользовательКонтекстноеМеню" id="76"/>
<ExtendedTooltip name="ПользовательРасширеннаяПодсказка" id="77"/>
</InputField>
<InputField name="Комментарий" id="19">
<DataPath>Объект.Комментарий</DataPath>
<EditMode>EnterOnInput</EditMode>

View File

@ -1448,6 +1448,7 @@
<InformationRegister>узЗаписиИсторииКонфигурации</InformationRegister>
<InformationRegister>узНаблюдателиЗаЗадачами</InformationRegister>
<InformationRegister>узНаличиеЗаметокПоПредмету</InformationRegister>
<InformationRegister>узАктивностиПользователей</InformationRegister>
<ChartOfCharacteristicTypes>ДополнительныеРеквизитыИСведения</ChartOfCharacteristicTypes>
<ChartOfCharacteristicTypes>ОбъектыАдресацииЗадач</ChartOfCharacteristicTypes>
<ChartOfCharacteristicTypes>РазделыДатЗапретаИзменения</ChartOfCharacteristicTypes>

View File

@ -24,6 +24,7 @@
ЗаполнитьмТЗСвойстваМетаданных();
Для каждого СтрокаТЗИсторияХранилища из ТЗИсторияХранилища цикл
СтрокаТЗИсторияХранилища.Пользователь = ПолучитьПользователя(СтрокаТЗИсторияХранилища);
СтрокаТЗИсторияХранилища.Задача = ПолучитьЗадачу(СтрокаТЗИсторияХранилища);
Для каждого СтрокаТЗИзмененныеОбъекты из СтрокаТЗИсторияХранилища.ТЗИзмененныеОбъекты цикл
СтрокаТЗИзмененныеОбъекты.ИдентификаторОбъектаМетаданных = ПолучитьИдентификаторОбъектаМетаданныхПоСтроке(СтрокаТЗИзмененныеОбъекты.ТекстИдентификатораОбъектаМетаданных);
@ -68,6 +69,7 @@
мТЗПоискКэш.Колонки.Добавить("Ссылка");
мТЗПоискКэш.Колонки.Добавить("Владелец");
мТЗПоискКэш.Колонки.Добавить("Родитель");
мТЗПоискКэш.Колонки.Добавить("ПользовательХранилища");
мТЗПоискКэш.Индексы.Добавить("МетаданныеИмя");
КонецПроцедуры //Получить
@ -118,15 +120,20 @@
// Возврат пСсылкаНаОбъект;
//Конецесли;
Запрос = Новый Запрос;
Запрос.Текст = ПолучитьТекстЗапросаДляПоиска(МетаданныеИмя);
Для каждого ЭлПараметрыПоиска из ПараметрыПоиска цикл
Запрос.УстановитьПараметр(ЭлПараметрыПоиска.Ключ, ЭлПараметрыПоиска.Значение);
Конеццикла;
РезультатЗапроса = Запрос.Выполнить();
Если МетаданныеИмя = "Пользователи" Тогда
пСсылкаНаОбъект = узОбщийМодульСервер.ПолучитьПользователяПоПользователюХранилища(ПараметрыПоиска.ПользовательХранилища);
ДобавитьЗначениеВКэш(пСсылкаНаОбъект,МетаданныеИмя,ПараметрыПоиска);
Иначе
Запрос = Новый Запрос;
Запрос.Текст = ПолучитьТекстЗапросаДляПоиска(МетаданныеИмя);
Для каждого ЭлПараметрыПоиска из ПараметрыПоиска цикл
Запрос.УстановитьПараметр(ЭлПараметрыПоиска.Ключ, ЭлПараметрыПоиска.Значение);
Конеццикла;
РезультатЗапроса = Запрос.Выполнить();
пСсылкаНаОбъект = ПолучитьЗначениеИзЗапроса(РезультатЗапроса,МетаданныеИмя,ПараметрыПоиска);
пСсылкаНаОбъект = ПолучитьЗначениеИзЗапроса(РезультатЗапроса,МетаданныеИмя,ПараметрыПоиска);
Конецесли;
Возврат пСсылкаНаОбъект;
КонецФункции //ПолучитьСсылкуНаОбъект()
@ -329,6 +336,7 @@
ТЗИсторияХранилища.Колонки.Добавить("Версия", Новый ОписаниеТипов("Число"));
ТЗИсторияХранилища.Колонки.Добавить("ДатаВерсии", Новый ОписаниеТипов("Дата"));
ТЗИсторияХранилища.Колонки.Добавить("ПользовательХранилища", Новый ОписаниеТипов("Строка"));
ТЗИсторияХранилища.Колонки.Добавить("Пользователь", Новый ОписаниеТипов("СправочникСсылка.Пользователи"));
ТЗИсторияХранилища.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка"));
ТЗИсторияХранилища.Колонки.Добавить("Задача", Новый ОписаниеТипов("СправочникСсылка.узЗадачи"));
ТЗИсторияХранилища.Колонки.Добавить("ТЗИзмененныеОбъекты");
@ -417,6 +425,24 @@
Возврат ТЗИсторияХранилища;
КонецФункции
Функция ПолучитьПользователя(СтрокаТЗИсторияХранилища)
Перем пПользователь;
пПользовательХранилища = СокрЛП(СтрокаТЗИсторияХранилища.ПользовательХранилища);
Если НЕ ЗначениеЗаполнено(пПользовательХранилища) Тогда
ТекстОшибки = "Ошибка! Не заполнен пользователь в хранилище";
Возврат пПользователь;
Конецесли;
ПараметрыПоиска = Новый Структура();
ПараметрыПоиска.Вставить("ПользовательХранилища",пПользовательХранилища);
пПользователь = ПолучитьСсылкуНаОбъект("Пользователи",ПараметрыПоиска);
Возврат пПользователь;
КонецФункции
Функция ПолучитьЗадачу(СтрокаТЗИсторияХранилища)
Перем пЗадача;
пКомментарий = СокрЛП(СтрокаТЗИсторияХранилища.Комментарий);
@ -470,7 +496,10 @@
Процедура ОтправитьУведомлениеОшибкаВКомментарииХранилища(ТекстОшибки,СтрокаТЗИсторияХранилища)
пПользовательКому = узОбщийМодульСервер.ПолучитьПользователяПоПользователюХранилища(СтрокаТЗИсторияХранилища.ПользовательХранилища);
пПользовательКому = СтрокаТЗИсторияХранилища.Пользователь;
Если НЕ ЗначениеЗаполнено(пПользовательКому) Тогда
пПользовательКому = узОбщийМодульСервер.ПолучитьПользователяПоПользователюХранилища(СтрокаТЗИсторияХранилища.ПользовательХранилища);
Конецесли;
МассивПользователейКому = Новый Массив();
Если ЗначениеЗаполнено(пПользовательКому) Тогда

View File

@ -2,6 +2,10 @@
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
ОчиститьСвязанныеТЧ();
СформироватьСписокЗадач();
ТЗСобытия = ПолучитьТЗСобытия(РежимЗаписи);
ДополнительныеСвойства.Вставить("ТЗСобытия",ТЗСобытия);
КонецПроцедуры
Процедура СформироватьСписокЗадач() Экспорт
@ -36,3 +40,38 @@
Конеццикла;
Конеццикла;
КонецПроцедуры
Функция ПолучитьТЗСобытия(РежимЗаписи)
ТЗСобытия = Новый ТаблицаЗначений();
ТЗСобытия.Колонки.Добавить("ВидСобытия",Новый ОписаниеТипов("ПеречислениеСсылка.узВидыСобытий"));
Если ЭтоНовый() Тогда
СтрокаТЗСобытия = ТЗСобытия.Добавить();
СтрокаТЗСобытия.ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.СозданДокументВыпускРелиза");
Возврат ТЗСобытия;
Конецесли;
Если НЕ Ссылка.Проведен
И РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
СтрокаТЗСобытия = ТЗСобытия.Добавить();
СтрокаТЗСобытия.ВидСобытия = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ПроведенДокументВыпускРелиза");
Конецесли;
Возврат ТЗСобытия;
КонецФункции
Процедура ПриЗаписи(Отказ)
Если ДополнительныеСвойства.Свойство("узЭтоОбработка") Тогда
Возврат;
Конецесли;
РегистрацияАктивностиПользователя(ДополнительныеСвойства.ТЗСобытия,Отказ);
ДополнительныеСвойства.Удалить("ТЗСобытия");
КонецПроцедуры
Процедура РегистрацияАктивностиПользователя(ТЗСобытия,Отказ)
ВТДопПараметры = Новый Структура();
ВТДопПараметры.Вставить("ТЗСобытия",ТЗСобытия);
РегистрыСведений.узАктивностиПользователей.ДобавитьАктивностьПользователя(ЭтотОбъект,ВТДопПараметры,Отказ);
КонецПроцедуры

View File

@ -110,6 +110,66 @@
<Comment/>
</Properties>
</EnumValue>
<EnumValue uuid="ea600587-2713-4d6c-a2a1-3e3a5f9c8714">
<Properties>
<Name>ДобавленВопрос</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Добавлен вопрос</v8:content>
</v8:item>
</Synonym>
<Comment/>
</Properties>
</EnumValue>
<EnumValue uuid="322570eb-67b5-46f9-a797-9b1a9843bab7">
<Properties>
<Name>ЗакрытВопрос</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Закрыт вопрос</v8:content>
</v8:item>
</Synonym>
<Comment/>
</Properties>
</EnumValue>
<EnumValue uuid="b9004b12-74f2-4ece-bb51-0336f09862ac">
<Properties>
<Name>СозданДокументВыпускРелиза</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Создан документ выпуск релиза</v8:content>
</v8:item>
</Synonym>
<Comment/>
</Properties>
</EnumValue>
<EnumValue uuid="d15b512c-3bab-43f0-bd16-7975fbbf1a84">
<Properties>
<Name>ПроведенДокументВыпускРелиза</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Проведен документ выпуск релиза</v8:content>
</v8:item>
</Synonym>
<Comment/>
</Properties>
</EnumValue>
<EnumValue uuid="5b6c98f0-284a-461b-84fa-4efc8a2b0e0f">
<Properties>
<Name>ИзмененаКонфигурация</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Изменена конфигурация</v8:content>
</v8:item>
</Synonym>
<Comment/>
</Properties>
</EnumValue>
</ChildObjects>
</Enum>
</MetaDataObject>

View File

@ -0,0 +1,319 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.2">
<InformationRegister uuid="8e58de56-3697-48a9-83a5-5e4f1e5af45f">
<InternalInfo>
<xr:GeneratedType name="InformationRegisterRecord.узАктивностиПользователей" category="Record">
<xr:TypeId>1aa3ec8b-2be0-4d23-b16d-af0113df600f</xr:TypeId>
<xr:ValueId>78c1c1e9-92c8-4db3-a5c3-7409b6a5cfcf</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="InformationRegisterManager.узАктивностиПользователей" category="Manager">
<xr:TypeId>4371bd6d-a090-48a5-b184-30df74aef1b6</xr:TypeId>
<xr:ValueId>64a9c953-941a-426f-8469-d81b102ee3ec</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="InformationRegisterSelection.узАктивностиПользователей" category="Selection">
<xr:TypeId>6444aa34-2447-46fd-8aa8-f17aa194f67b</xr:TypeId>
<xr:ValueId>a74673b3-b7c2-40e5-94bb-ca84dce6d891</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="InformationRegisterList.узАктивностиПользователей" category="List">
<xr:TypeId>79355709-1239-4bff-9b0d-e6b981b002c7</xr:TypeId>
<xr:ValueId>989391a9-8480-411f-879b-dc19da635b8a</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="InformationRegisterRecordSet.узАктивностиПользователей" category="RecordSet">
<xr:TypeId>80546c86-9469-4fbf-bca9-ee54d225e431</xr:TypeId>
<xr:ValueId>871ad183-55de-4aa1-97ce-3772b8636633</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="InformationRegisterRecordKey.узАктивностиПользователей" category="RecordKey">
<xr:TypeId>04474754-55f2-4ba2-a19c-2a093a53c50c</xr:TypeId>
<xr:ValueId>2eed5baf-1156-4afd-a8dd-d1d9f200b7c8</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="InformationRegisterRecordManager.узАктивностиПользователей" category="RecordManager">
<xr:TypeId>ce0eea50-c4ec-4712-bddd-92742d938384</xr:TypeId>
<xr:ValueId>a34d575b-f9d0-4594-b41c-7eb77d963b29</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>узАктивностиПользователей</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Активности пользователей</v8:content>
</v8:item>
</Synonym>
<Comment/>
<UseStandardCommands>true</UseStandardCommands>
<EditType>InDialog</EditType>
<DefaultRecordForm/>
<DefaultListForm/>
<AuxiliaryRecordForm/>
<AuxiliaryListForm/>
<InformationRegisterPeriodicity>Nonperiodical</InformationRegisterPeriodicity>
<WriteMode>Independent</WriteMode>
<MainFilterOnPeriod>false</MainFilterOnPeriod>
<IncludeHelpInContents>false</IncludeHelpInContents>
<DataLockControlMode>Managed</DataLockControlMode>
<FullTextSearch>DontUse</FullTextSearch>
<EnableTotalsSliceFirst>false</EnableTotalsSliceFirst>
<EnableTotalsSliceLast>false</EnableTotalsSliceLast>
<RecordPresentation/>
<ExtendedRecordPresentation/>
<ListPresentation/>
<ExtendedListPresentation/>
<Explanation/>
</Properties>
<ChildObjects>
<Resource uuid="ab462521-0aea-428e-a8b7-37282cf50c70">
<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>0</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>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
</Properties>
</Resource>
<Resource uuid="3c154f95-a542-415a-9074-0515c5b329a6">
<Properties>
<Name>ДеньАктивности</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>День активности</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</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:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
</Properties>
</Resource>
<Dimension uuid="f045e2d6-8909-4852-a3eb-29b83b2b70eb">
<Properties>
<Name>ДатаАктивности</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Дата активности</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>DateTime</v8:DateFractions>
</v8:DateQualifiers>
</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:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Master>false</Master>
<MainFilter>true</MainFilter>
<DenyIncompleteValues>false</DenyIncompleteValues>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
</Properties>
</Dimension>
<Dimension uuid="5ed1d8a9-1d8d-4110-b2e0-95d4d1e4d071">
<Properties>
<Name>СсылкаНаОбъект</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Ссылка на объект</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>cfg:CatalogRef.узИсторияКонфигураций</v8:Type>
<v8:Type>cfg:DocumentRef.узВыпускРелиза</v8:Type>
<v8:Type>cfg:CatalogRef.узЗадачи</v8:Type>
<v8:Type>cfg:CatalogRef.узВопросыОтветы</v8:Type>
</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>true</FillFromFillingValue>
<FillValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Master>false</Master>
<MainFilter>true</MainFilter>
<DenyIncompleteValues>false</DenyIncompleteValues>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
</Properties>
</Dimension>
<Dimension uuid="4f1536c8-abd0-47ba-8fa3-b9c1f934160c">
<Properties>
<Name>Пользователь</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пользователь</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>cfg:CatalogRef.Пользователи</v8:Type>
</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:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Master>false</Master>
<MainFilter>true</MainFilter>
<DenyIncompleteValues>false</DenyIncompleteValues>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
</Properties>
</Dimension>
<Dimension uuid="feb078eb-71c7-4184-8243-cff92119aafc">
<Properties>
<Name>ВидСобытия</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Вид события</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>cfg:EnumRef.узВидыСобытий</v8:Type>
</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:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Master>false</Master>
<MainFilter>true</MainFilter>
<DenyIncompleteValues>false</DenyIncompleteValues>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
</Properties>
</Dimension>
</ChildObjects>
</InformationRegister>
</MetaDataObject>

View File

@ -0,0 +1,137 @@
Процедура ДобавитьАктивностьПользователя(Источник, ДопПараметры,Отказ) Экспорт
Если Отказ Тогда
Возврат;
Конецесли;
ТипЗнчИсточник = ТипЗнч(Источник);
Если ТипЗнчИсточник = Тип("СправочникОбъект.узЗадачи") Тогда
ДобавитьАктивностьПользователя_Задачи(Источник, ДопПараметры,Отказ);
ИначеЕсли ТипЗнчИсточник = Тип("СправочникОбъект.узВопросыОтветы") Тогда
ДобавитьАктивностьПользователя_ВопросыОтветы(Источник, ДопПараметры,Отказ);
ИначеЕсли ТипЗнчИсточник = Тип("ДокументОбъект.узВыпускРелиза") Тогда
ДобавитьАктивностьПользователя_ВыпускРелиза(Источник, ДопПараметры,Отказ);
Иначе
ВызватьИсключение "Ошибка! нет алгоритма для регистрации активности пользователя";
Конецесли;
КонецПроцедуры
Процедура ДобавитьАктивностьПользователя_ВыпускРелиза(Источник, ДопПараметры,Отказ)
#Если Тромбон тогда
Источник = Документы.узВыпускРелиза.СоздатьДокумент();
#Конецесли
ТЗСобытия = ДопПараметры.ТЗСобытия;
НомерРелиза = "" + Источник.НомерРелиза;
ВидыСобытий_СозданДокументВыпускРелиза = ПредопределенноеЗначение("Перечисление.узВидыСобытий.СозданДокументВыпускРелиза");
ВидыСобытий_ПроведенДокументВыпускРелиза = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ПроведенДокументВыпускРелиза");
МассивВидовСобытияДляРегистрацииАктивности = Новый Массив();
МассивВидовСобытияДляРегистрацииАктивности.Добавить(ВидыСобытий_СозданДокументВыпускРелиза);
МассивВидовСобытияДляРегистрацииАктивности.Добавить(ВидыСобытий_ПроведенДокументВыпускРелиза);
Для каждого СтрокаТЗСобытия из ТЗСобытия цикл
пВидСобытия = СтрокаТЗСобытия.ВидСобытия;
Если МассивВидовСобытияДляРегистрацииАктивности.Найти(пВидСобытия) = Неопределено Тогда
Продолжить;
Конецесли;
МенеджерЗаписи = РегистрыСведений.узАктивностиПользователей.СоздатьМенеджерЗаписи();
МенеджерЗаписи.ДатаАктивности = ТекущаяДата();
МенеджерЗаписи.ДеньАктивности = НачалоДня(МенеджерЗаписи.ДатаАктивности);
МенеджерЗаписи.Пользователь = ПараметрыСеанса.ТекущийПользователь;
МенеджерЗаписи.СсылкаНаОбъект = Источник.Ссылка;
МенеджерЗаписи.ВидСобытия = пВидСобытия;
МенеджерЗаписи.Описание = "" + пВидСобытия + " НомерРелиза " + НомерРелиза;
МенеджерЗаписи.Записать();
Конеццикла;
КонецПроцедуры
Процедура ДобавитьАктивностьПользователя_ВопросыОтветы(Источник, ДопПараметры,Отказ)
#Если Тромбон тогда
Источник = Справочники.узВопросыОтветы.СоздатьЭлемент();
#Конецесли
ТЗСобытия = ДопПараметры.ТЗСобытия;
ПредставлениеЗадачи = "";
пЗадача = Источник.Задача;
Если ЗначениеЗаполнено(пЗадача) Тогда
ПредставлениеЗадачи = "#" + пЗадача.Код + " " + пЗадача;
Конецесли;
ВидыСобытий_ДобавленВопрос = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленВопрос");
ВидыСобытий_ЗакрытВопрос = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ЗакрытВопрос");
МассивВидовСобытияДляРегистрацииАктивности = Новый Массив();
МассивВидовСобытияДляРегистрацииАктивности.Добавить(ВидыСобытий_ДобавленВопрос);
МассивВидовСобытияДляРегистрацииАктивности.Добавить(ВидыСобытий_ЗакрытВопрос);
Для каждого СтрокаТЗСобытия из ТЗСобытия цикл
пВидСобытия = СтрокаТЗСобытия.ВидСобытия;
Если МассивВидовСобытияДляРегистрацииАктивности.Найти(пВидСобытия) = Неопределено Тогда
Продолжить;
Конецесли;
МенеджерЗаписи = РегистрыСведений.узАктивностиПользователей.СоздатьМенеджерЗаписи();
МенеджерЗаписи.ДатаАктивности = ТекущаяДата();
МенеджерЗаписи.ДеньАктивности = НачалоДня(МенеджерЗаписи.ДатаАктивности);
МенеджерЗаписи.Пользователь = ПараметрыСеанса.ТекущийПользователь;
МенеджерЗаписи.СсылкаНаОбъект = Источник.Ссылка;
МенеджерЗаписи.ВидСобытия = пВидСобытия;
Если ЗначениеЗаполнено(пЗадача) Тогда
МенеджерЗаписи.Описание = "" + пВидСобытия + " к задаче " + ПредставлениеЗадачи;
Если пВидСобытия = ВидыСобытий_ЗакрытВопрос Тогда
МенеджерЗаписи.Описание = "" + пВидСобытия + " по задаче " + ПредставлениеЗадачи;
Конецесли;
Иначе
МенеджерЗаписи.Описание = "" + пВидСобытия;
Конецесли;
МенеджерЗаписи.Записать();
Конеццикла;
КонецПроцедуры
Процедура ДобавитьАктивностьПользователя_Задачи(Источник, ДопПараметры,Отказ)
#Если Тромбон тогда
Источник = Справочники.узЗадачи.СоздатьЭлемент();
#Конецесли
СобытияВИстории = ДопПараметры.СобытияВИстории;
ТЗСобытияВИсторииДляУведомлений = СобытияВИстории.ТЗСобытияВИсторииДляУведомлений;
ВидыСобытий_ДобавленаЗадача = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленаЗадача");
ВидыСобытий_ДобавленКомментарий = ПредопределенноеЗначение("Перечисление.узВидыСобытий.ДобавленКомментарий");
МассивВидовСобытияДляРегистрацииАктивности = Новый Массив();
МассивВидовСобытияДляРегистрацииАктивности.Добавить(ВидыСобытий_ДобавленаЗадача);
МассивВидовСобытияДляРегистрацииАктивности.Добавить(ВидыСобытий_ДобавленКомментарий);
Для каждого СтрокаТЗСобытияВИсторииДляУведомлений из ТЗСобытияВИсторииДляУведомлений цикл
пВидСобытия = СтрокаТЗСобытияВИсторииДляУведомлений.ВидСобытия;
Если МассивВидовСобытияДляРегистрацииАктивности.Найти(пВидСобытия) = Неопределено Тогда
Продолжить;
Конецесли;
МенеджерЗаписи = РегистрыСведений.узАктивностиПользователей.СоздатьМенеджерЗаписи();
МенеджерЗаписи.ДатаАктивности = ТекущаяДата();
МенеджерЗаписи.ДеньАктивности = НачалоДня(МенеджерЗаписи.ДатаАктивности);
МенеджерЗаписи.Пользователь = ПараметрыСеанса.ТекущийПользователь;
МенеджерЗаписи.СсылкаНаОбъект = Источник.Ссылка;
МенеджерЗаписи.ВидСобытия = пВидСобытия;
ПредставлениеЗадачи = "#" + Источник.Код + " " + МенеджерЗаписи.СсылкаНаОбъект;
МенеджерЗаписи.Описание = "" + пВидСобытия + " " + ПредставлениеЗадачи;
Если пВидСобытия = ВидыСобытий_ДобавленКомментарий Тогда
МенеджерЗаписи.Описание = "" + пВидСобытия + " к задаче " + ПредставлениеЗадачи;
Конецесли;
МенеджерЗаписи.Записать();
Конеццикла;
КонецПроцедуры

View File

@ -2332,6 +2332,17 @@
<value>false</value>
</right>
</object>
<object>
<name>InformationRegister.узАктивностиПользователей</name>
<right>
<name>Edit</name>
<value>false</value>
</right>
<right>
<name>TotalsControl</name>
<value>false</value>
</right>
</object>
<object>
<name>InformationRegister.узЗаписиИсторииКонфигурации.Resource.ЗаписьИсторииХранилища</name>
<right>

View File

@ -4797,6 +4797,21 @@
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.узАктивностиПользователей</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.УведомленияОПрочтении</name>
<right>

View File

@ -3084,6 +3084,21 @@
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.узАктивностиПользователей</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.УведомленияОПрочтении</name>
<right>

View File

@ -75,6 +75,7 @@
<xr:Item xsi:type="xr:MDObjectRef">Document.узВыпускРелиза</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Catalog.узВыпускРелизаПрисоединенныеФайлы</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">EventSubscription.узУстановитьПометкуУдаленияПрисоединенныхФайловДокументов</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">InformationRegister.узАктивностиПользователей</xr:Item>
</Content>
</Properties>
<ChildObjects/>