2_3_5_52
This commit is contained in:
1 parent
b458757a20
commit
2ee27ea267
1717 files changed
+159617
-464719
No files matched your search
@@ -27,7 +27,7 @@
|
||||
// Процедура ПриЗаполненииСпискаРеквизитовИсточникаСДатамиДляНапоминания(Источник, МассивРеквизитов) Экспорт
|
||||
//
|
||||
// (То же, что
|
||||
// НапоминанияПользователяКлиентСерверПереопределяемый.ПриЗаполненииСпискаРеквизитовИсточникаСДатамиДляНапоминания).
|
||||
// НапоминанияПользователяПереопределяемый.ПриЗаполненииСпискаРеквизитовИсточникаСДатамиДляНапоминания).
|
||||
//
|
||||
СерверныеСобытия.Добавить("СтандартныеПодсистемы.НапоминанияПользователя\ПриЗаполненииСпискаРеквизитовИсточникаСДатамиДляНапоминания");
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
КлиентскиеОбработчики[
|
||||
"СтандартныеПодсистемы.БазоваяФункциональность\ПослеНачалаРаботыСистемы"].Добавить(
|
||||
"НапоминанияПользователяКлиент");
|
||||
"НапоминанияПользователяКлиент");
|
||||
|
||||
// СЕРВЕРНЫЕ ОБРАБОТЧИКИ.
|
||||
|
||||
@@ -52,14 +52,74 @@
|
||||
"СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииПараметровРаботыКлиента"].Добавить(
|
||||
"НапоминанияПользователяСлужебный");
|
||||
|
||||
СерверныеОбработчики[
|
||||
"СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииПереименованийОбъектовМетаданных"].Добавить(
|
||||
"НапоминанияПользователяСлужебный");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Заполняет структуру параметров, необходимых для работы клиентского кода
|
||||
// при запуске конфигурации.
|
||||
//
|
||||
// Параметры:
|
||||
// Параметры - Структура - структура параметров запуска.
|
||||
//
|
||||
Процедура ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры) Экспорт
|
||||
|
||||
Параметры.Вставить("НастройкиНапоминаний",
|
||||
Новый ФиксированнаяСтруктура("ИспользоватьНапоминания", ПолучитьНастройкиНапоминаний().ИспользоватьНапоминания));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Заполняет структуру параметров, необходимых для работы клиентского кода
|
||||
// конфигурации.
|
||||
//
|
||||
// Параметры:
|
||||
// Параметры - Структура - структура параметров.
|
||||
//
|
||||
Процедура ПриДобавленииПараметровРаботыКлиента(Параметры) Экспорт
|
||||
|
||||
Параметры.Вставить("НастройкиНапоминаний",
|
||||
Новый ФиксированнаяСтруктура(ПолучитьНастройкиНапоминаний()));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Заполняет переименования тех объектов метаданных, которые невозможно
|
||||
// автоматически найти по типу, но ссылки на которые требуется сохранять
|
||||
// в базе данных (например: подсистемы, роли).
|
||||
//
|
||||
// См. также:
|
||||
// ОбщегоНазначения.ДобавитьПереименование().
|
||||
//
|
||||
Процедура ПриДобавленииПереименованийОбъектовМетаданных(Итог) Экспорт
|
||||
|
||||
Библиотека = "СтандартныеПодсистемы";
|
||||
|
||||
СтароеИмя = "Роль.ИспользованиеНапоминаний";
|
||||
НовоеИмя = "Роль.ДобавлениеИзменениеНапоминаний";
|
||||
ОбщегоНазначения.ДобавитьПереименование(Итог, "2.3.3.11", СтароеИмя, НовоеИмя, Библиотека);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция НастройкиПодсистемы() Экспорт
|
||||
Настройки = Новый Структура;
|
||||
Настройки.Вставить("Расписания", ПолучитьСтандартныеРасписанияДляНапоминания());
|
||||
Настройки.Вставить("СтандартныеИнтервалы", НапоминанияПользователяКлиентСервер.ПолучитьСтандартныеИнтервалыОповещения());
|
||||
НапоминанияПользователяПереопределяемый.ПриОпределенииНастроек(Настройки);
|
||||
|
||||
// Поддержка обратной совместимости.
|
||||
НапоминанияПользователяКлиентСерверПереопределяемый.ПриПолученииСтандартныхРасписанийДляНапоминания(Настройки.Расписания);
|
||||
НапоминанияПользователяКлиентСерверПереопределяемый.ПриПолученииСтандартныхИнтерваловОповещения(Настройки.СтандартныеИнтервалы);
|
||||
|
||||
Возврат Настройки;
|
||||
КонецФункции
|
||||
|
||||
// Возвращает стандартные расписания для периодических напоминаний.
|
||||
Функция ПолучитьСтандартныеРасписанияДляНапоминания() Экспорт
|
||||
Функция ПолучитьСтандартныеРасписанияДляНапоминания()
|
||||
|
||||
Результат = Новый Соответствие;
|
||||
|
||||
@@ -90,9 +150,6 @@
|
||||
Расписание.ВремяНачала = '00010101090000';
|
||||
Результат.Вставить(НСтр("ru = 'каждый день, в 9:00'"), Расписание);
|
||||
|
||||
// для изменения списка
|
||||
НапоминанияПользователяКлиентСерверПереопределяемый.ПриПолученииСтандартныхРасписанийДляНапоминания(Результат);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
@@ -128,12 +185,14 @@
|
||||
Функция ПолучитьБлижайшуюДатуСобытияПоРасписанию(Расписание, ПредыдущаяДата = '000101010000') Экспорт
|
||||
|
||||
Результат = Неопределено;
|
||||
ТекущаяДатаСеанса = ТекущаяДатаСеанса();
|
||||
|
||||
ДатаОтсчета = ПредыдущаяДата;
|
||||
Если Не ЗначениеЗаполнено(ДатаОтсчета) Тогда
|
||||
ДатаОтсчета = ТекущаяДатаСеанса();
|
||||
ДатаОтсчета = ТекущаяДатаСеанса;
|
||||
КонецЕсли;
|
||||
|
||||
ДатаОтсчета = Макс(ДатаОтсчета, ТекущаяДатаСеанса);
|
||||
|
||||
Календарь = ПолучитьКалендарьНаБудущее(365*4+1, ДатаОтсчета, Расписание.ДатаНачала, Расписание.ПериодПовтораДней, Расписание.ПериодНедель);
|
||||
|
||||
ДниНедели = Расписание.ДниНедели;
|
||||
@@ -219,10 +278,9 @@
|
||||
|
||||
Если Выборка.Следующий() Тогда
|
||||
БлижайшаяДата = Выборка.Дата;
|
||||
|
||||
ВремяОтсчета = '00010101';
|
||||
Если НачалоДня(БлижайшаяДата) = НачалоДня(ТекущаяДатаСеанса()) Тогда
|
||||
ВремяОтсчета = ВремяОтсчета + (ТекущаяДатаСеанса()-НачалоДня(ТекущаяДатаСеанса()));
|
||||
Если НачалоДня(БлижайшаяДата) = НачалоДня(ДатаОтсчета) Тогда
|
||||
ВремяОтсчета = ВремяОтсчета + (ДатаОтсчета-НачалоДня(ДатаОтсчета));
|
||||
КонецЕсли;
|
||||
|
||||
БлижайшееВремя = ПолучитьБлижайшееВремяИзРасписания(Расписание, ВремяОтсчета);
|
||||
@@ -438,7 +496,8 @@
|
||||
| Напоминания.СпособУстановкиВремениНапоминания,
|
||||
| Напоминания.ИнтервалВремениНапоминания,
|
||||
| Напоминания.ИмяРеквизитаИсточника,
|
||||
| Напоминания.Расписание
|
||||
| Напоминания.Расписание,
|
||||
| ЛОЖЬ КАК ПовторятьЕжегодно
|
||||
|ИЗ
|
||||
| РегистрСведений.НапоминанияПользователя КАК Напоминания
|
||||
|ГДЕ
|
||||
@@ -452,10 +511,17 @@
|
||||
Для Каждого СтрокаТаблицы Из ТаблицаРезультата Цикл
|
||||
ДатаПредмета = ПолучитьЗначениеРеквизитаПредмета(СтрокаТаблицы.Источник, СтрокаТаблицы.ИмяРеквизитаИсточника);
|
||||
Если (ДатаПредмета - СтрокаТаблицы.ИнтервалВремениНапоминания) <> СтрокаТаблицы.ВремяСобытия Тогда
|
||||
ОтключитьНапоминание(СтрокаТаблицы);
|
||||
ОтключитьНапоминание(СтрокаТаблицы, Ложь);
|
||||
СтрокаТаблицы.СрокНапоминания = ДатаПредмета - СтрокаТаблицы.ИнтервалВремениНапоминания;
|
||||
СтрокаТаблицы.ВремяСобытия = ДатаПредмета;
|
||||
ПодключитьНапоминание(СтрокаТаблицы);
|
||||
Если СтрокаТаблицы.Расписание.Получить() <> Неопределено Тогда
|
||||
СтрокаТаблицы.ПовторятьЕжегодно = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыНапоминания = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(СтрокаТаблицы);
|
||||
ПараметрыНапоминания.Расписание = СтрокаТаблицы.Расписание.Получить();
|
||||
Напоминание = СоздатьНапоминание(ПараметрыНапоминания);
|
||||
ПодключитьНапоминание(Напоминание);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецПроцедуры
|
||||
@@ -483,19 +549,26 @@
|
||||
НаборЗаписей = РегистрыСведений.НапоминанияПользователя.СоздатьНаборЗаписей();
|
||||
НаборЗаписей.Отбор.Пользователь.Установить(ПараметрыНапоминания.Пользователь);
|
||||
НаборЗаписей.Отбор.Источник.Установить(ПараметрыНапоминания.Источник);
|
||||
НаборЗаписей.Отбор.ВремяСобытия.Установить(ПараметрыНапоминания.ВремяСобытия);
|
||||
|
||||
НаборЗаписей.Прочитать();
|
||||
|
||||
Если НаборЗаписей.Количество() = 0 Тогда
|
||||
Если Не ОбновитьСрокНапоминания Тогда
|
||||
НоваяЗапись = НаборЗаписей.Добавить();
|
||||
ЗаполнитьЗначенияСвойств(НоваяЗапись, ПараметрыНапоминания);
|
||||
Если ОбновитьСрокНапоминания Тогда
|
||||
НаборЗаписей.Отбор.ВремяСобытия.Установить(ПараметрыНапоминания.ВремяСобытия);
|
||||
НаборЗаписей.Прочитать();
|
||||
Если НаборЗаписей.Количество() = 0 Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Для Каждого Запись Из НаборЗаписей Цикл
|
||||
ЗаполнитьЗначенияСвойств(Запись, ПараметрыНапоминания,,?(ОбновитьСрокНапоминания,"","СрокНапоминания"));
|
||||
ЗаполнитьЗначенияСвойств(Запись, ПараметрыНапоминания);
|
||||
КонецЦикла;
|
||||
Иначе
|
||||
НаборЗаписей.Прочитать();
|
||||
Если НаборЗаписей.Количество() > 0 Тогда
|
||||
ЗанятоеВремя = НаборЗаписей.Выгрузить(,"ВремяСобытия").ВыгрузитьКолонку("ВремяСобытия");
|
||||
Пока ЗанятоеВремя.Найти(ПараметрыНапоминания.ВремяСобытия) <> Неопределено Цикл
|
||||
ПараметрыНапоминания.ВремяСобытия = ПараметрыНапоминания.ВремяСобытия + 1;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
НоваяЗапись = НаборЗаписей.Добавить();
|
||||
ЗаполнитьЗначенияСвойств(НоваяЗапись, ПараметрыНапоминания);
|
||||
КонецЕсли;
|
||||
|
||||
НаборЗаписей.Записать();
|
||||
@@ -516,7 +589,9 @@
|
||||
| НапоминанияПользователя.СрокНапоминания,
|
||||
| НапоминанияПользователя.Описание,
|
||||
| НапоминанияПользователя.СпособУстановкиВремениНапоминания,
|
||||
| НапоминанияПользователя.Расписание
|
||||
| НапоминанияПользователя.Расписание,
|
||||
| НапоминанияПользователя.ИнтервалВремениНапоминания,
|
||||
| НапоминанияПользователя.ИмяРеквизитаИсточника
|
||||
|ИЗ
|
||||
| РегистрСведений.НапоминанияПользователя КАК НапоминанияПользователя
|
||||
|ГДЕ
|
||||
@@ -549,28 +624,32 @@
|
||||
|
||||
// Подключаем следующее напоминание по расписанию.
|
||||
Если ПодключатьПоРасписанию И Напоминание <> Неопределено Тогда
|
||||
Если Напоминание.СпособУстановкиВремениНапоминания = ПредопределенноеЗначение("Перечисление.СпособыУстановкиВремениНапоминания.Периодически") Тогда
|
||||
Расписание = Напоминание.Расписание.Получить();
|
||||
Расписание = Напоминание.Расписание.Получить();
|
||||
Если Расписание <> Неопределено Тогда
|
||||
Если Расписание.ПериодПовтораДней > 0 Тогда
|
||||
СледующаяДатаПоРасписанию = ПолучитьБлижайшуюДатуСобытияПоРасписанию(Расписание);
|
||||
СледующаяДатаПоРасписанию = ПолучитьБлижайшуюДатуСобытияПоРасписанию(Расписание, ПараметрыНапоминания.ВремяСобытия + 1);
|
||||
КонецЕсли;
|
||||
ОпределенаСледующаяДатаПоРасписанию = СледующаяДатаПоРасписанию <> Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Если ОпределенаСледующаяДатаПоРасписанию Тогда
|
||||
Напоминание.ВремяСобытия = СледующаяДатаПоРасписанию;
|
||||
Напоминание.СрокНапоминания = Напоминание.ВремяСобытия;
|
||||
Напоминание.СрокНапоминания = Напоминание.ВремяСобытия - Напоминание.ИнтервалВремениНапоминания;
|
||||
ПодключитьНапоминание(Напоминание);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Создает новое напоминание на указанное время.
|
||||
Функция ПодключитьНапоминаниеВУказанноеВремя(Текст, Время, Предмет = Неопределено) Экспорт
|
||||
Функция ПодключитьПроизвольноеНапоминание(Текст, ВремяСобытия = Неопределено, ИнтервалДоСобытия = 0, Предмет = Неопределено) Экспорт
|
||||
ПараметрыНапоминания = Новый Структура;
|
||||
ПараметрыНапоминания.Вставить("Описание", Текст);
|
||||
ПараметрыНапоминания.Вставить("ВремяСобытия", Время);
|
||||
Если ТипЗнч(ВремяСобытия) = Тип("РасписаниеРегламентногоЗадания") Тогда
|
||||
ПараметрыНапоминания.Вставить("Расписание", ВремяСобытия);
|
||||
Иначе
|
||||
ПараметрыНапоминания.Вставить("ВремяСобытия", ВремяСобытия);
|
||||
КонецЕсли;
|
||||
ПараметрыНапоминания.Вставить("ИнтервалВремениНапоминания", ИнтервалДоСобытия);
|
||||
ПараметрыНапоминания.Вставить("Источник", Предмет);
|
||||
|
||||
Напоминание = СоздатьНапоминание(ПараметрыНапоминания);
|
||||
@@ -579,13 +658,13 @@
|
||||
Возврат Напоминание;
|
||||
КонецФункции
|
||||
|
||||
// Создает новое напоминание на время, рассчитанное относительно времени в предмете.
|
||||
Функция ПодключитьНапоминаниеДоВремениПредмета(Текст, Интервал, Предмет, ИмяРеквизита) Экспорт
|
||||
Функция ПодключитьНапоминаниеДоВремениПредмета(Текст, Интервал, Предмет, ИмяРеквизита, ПовторятьЕжегодно = Ложь) Экспорт
|
||||
ПараметрыНапоминания = Новый Структура;
|
||||
ПараметрыНапоминания.Вставить("Описание", Текст);
|
||||
ПараметрыНапоминания.Вставить("Источник", Предмет);
|
||||
ПараметрыНапоминания.Вставить("ИмяРеквизитаИсточника", ИмяРеквизита);
|
||||
ПараметрыНапоминания.Вставить("ИнтервалВремениНапоминания", Интервал);
|
||||
ПараметрыНапоминания.Вставить("ПовторятьЕжегодно", ПовторятьЕжегодно);
|
||||
|
||||
Напоминание = СоздатьНапоминание(ПараметрыНапоминания);
|
||||
ПодключитьНапоминание(Напоминание);
|
||||
@@ -593,10 +672,25 @@
|
||||
Возврат Напоминание;
|
||||
КонецФункции
|
||||
|
||||
Функция ЕжегодноеРасписание(ДатаСобытия)
|
||||
Месяцы = Новый Массив;
|
||||
Месяцы.Добавить(Месяц(ДатаСобытия));
|
||||
ДеньВМесяце = День(ДатаСобытия);
|
||||
|
||||
Расписание = Новый РасписаниеРегламентногоЗадания;
|
||||
Расписание.ПериодПовтораДней = 1;
|
||||
Расписание.ПериодНедель = 1;
|
||||
Расписание.Месяцы = Месяцы;
|
||||
Расписание.ДеньВМесяце = ДеньВМесяце;
|
||||
Расписание.ВремяНачала = '000101010000' + (ДатаСобытия - НачалоДня(ДатаСобытия));
|
||||
|
||||
Возврат Расписание;
|
||||
КонецФункции
|
||||
|
||||
// Возвращает структуру нового напоминания для последующего подключения.
|
||||
Функция СоздатьНапоминание(ПараметрыНапоминания)
|
||||
|
||||
Напоминание = НапоминанияПользователяКлиентСервер.ПолучитьСтруктуруНапоминания(ПараметрыНапоминания, Истина);
|
||||
Напоминание = НапоминанияПользователяКлиентСервер.ОписаниеНапоминания(ПараметрыНапоминания, Истина);
|
||||
|
||||
Если Не ЗначениеЗаполнено(Напоминание.Пользователь) Тогда
|
||||
Напоминание.Пользователь = ПользователиКлиентСервер.ТекущийПользователь();
|
||||
@@ -605,6 +699,10 @@
|
||||
Если Не ЗначениеЗаполнено(Напоминание.СпособУстановкиВремениНапоминания) Тогда
|
||||
Если ЗначениеЗаполнено(Напоминание.Источник) И Не ПустаяСтрока(Напоминание.ИмяРеквизитаИсточника) Тогда
|
||||
Напоминание.СпособУстановкиВремениНапоминания = Перечисления.СпособыУстановкиВремениНапоминания.ОтносительноВремениПредмета;
|
||||
ИначеЕсли Напоминание.Расписание <> Неопределено Тогда
|
||||
Напоминание.СпособУстановкиВремениНапоминания = Перечисления.СпособыУстановкиВремениНапоминания.Периодически;
|
||||
ИначеЕсли Не ЗначениеЗаполнено(Напоминание.ВремяСобытия) Тогда
|
||||
Напоминание.СпособУстановкиВремениНапоминания = Перечисления.СпособыУстановкиВремениНапоминания.ОтносительноТекущегоВремени;
|
||||
Иначе
|
||||
Напоминание.СпособУстановкиВремениНапоминания = Перечисления.СпособыУстановкиВремениНапоминания.ВУказанноеВремя;
|
||||
КонецЕсли;
|
||||
@@ -616,43 +714,29 @@
|
||||
ИначеЕсли Напоминание.СпособУстановкиВремениНапоминания = Перечисления.СпособыУстановкиВремениНапоминания.ОтносительноТекущегоВремени Тогда
|
||||
Напоминание.СпособУстановкиВремениНапоминания = Перечисления.СпособыУстановкиВремениНапоминания.ВУказанноеВремя;
|
||||
Напоминание.ВремяСобытия = ТекущаяДатаСеанса() + Напоминание.ИнтервалВремениНапоминания;
|
||||
ИначеЕсли Напоминание.СпособУстановкиВремениНапоминания = Перечисления.СпособыУстановкиВремениНапоминания.ВУказанноеВремя Тогда
|
||||
Напоминание.СрокНапоминания = Напоминание.ВремяСобытия - Напоминание.ИнтервалВремениНапоминания;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Напоминание.СрокНапоминания) Тогда
|
||||
Напоминание.СрокНапоминания = Напоминание.ВремяСобытия;
|
||||
КонецЕсли;
|
||||
|
||||
Если Напоминание.ПовторятьЕжегодно Тогда
|
||||
Если ЗначениеЗаполнено(Напоминание.ВремяСобытия) Тогда
|
||||
Напоминание.Расписание = ЕжегодноеРасписание(Напоминание.ВремяСобытия);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если Напоминание.Расписание <> Неопределено Тогда
|
||||
Напоминание.ВремяСобытия = ПолучитьБлижайшуюДатуСобытияПоРасписанию(Напоминание.Расписание);
|
||||
Напоминание.СрокНапоминания = Напоминание.ВремяСобытия - Напоминание.ИнтервалВремениНапоминания;
|
||||
КонецЕсли;
|
||||
|
||||
Напоминание.Расписание = Новый ХранилищеЗначения(Напоминание.Расписание, Новый СжатиеДанных(9));
|
||||
|
||||
Возврат Напоминание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Обработчики служебных событий подсистем БСП.
|
||||
|
||||
// Заполняет структуру параметров, необходимых для работы клиентского кода
|
||||
// при запуске конфигурации.
|
||||
//
|
||||
// Параметры:
|
||||
// Параметры - Структура - структура параметров запуска.
|
||||
//
|
||||
Процедура ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры) Экспорт
|
||||
|
||||
Параметры.Вставить("НастройкиНапоминаний",
|
||||
Новый ФиксированнаяСтруктура("ИспользоватьНапоминания", ПолучитьНастройкиНапоминаний().ИспользоватьНапоминания));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Заполняет структуру параметров, необходимых для работы клиентского кода
|
||||
// конфигурации.
|
||||
//
|
||||
// Параметры:
|
||||
// Параметры - Структура - структура параметров.
|
||||
//
|
||||
Процедура ПриДобавленииПараметровРаботыКлиента(Параметры) Экспорт
|
||||
|
||||
Параметры.Вставить("НастройкиНапоминаний",
|
||||
Новый ФиксированнаяСтруктура(ПолучитьНастройкиНапоминаний()));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
Reference in new issue
Block a user