3_1_8_276
This commit is contained in:
1 parent
1929c5637b
commit
bf143472d7
1664 files changed
+135734
-75376
No files matched your search
@@ -14,6 +14,10 @@
|
||||
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске.
|
||||
Процедура ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры) Экспорт
|
||||
|
||||
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ИспользоватьНапоминания = ПолучитьНастройкиНапоминаний().ИспользоватьНапоминания;
|
||||
СписокТекущихНапоминаний = ?(ИспользоватьНапоминания,
|
||||
СписокТекущихНапоминанийПользователя(), Новый Массив);
|
||||
@@ -567,6 +571,7 @@
|
||||
Для Каждого СтрокаТаблицы Из ТаблицаРезультата Цикл
|
||||
ДатаПредмета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаТаблицы.Источник, СтрокаТаблицы.ИмяРеквизитаИсточника);
|
||||
Если (ДатаПредмета - СтрокаТаблицы.ИнтервалВремениНапоминания) <> СтрокаТаблицы.ВремяСобытия Тогда
|
||||
// @skip-check query-in-loop - запись данных набором с чтением в цикле.
|
||||
ОтключитьНапоминание(СтрокаТаблицы, Ложь);
|
||||
СтрокаТаблицы.СрокНапоминания = ДатаПредмета - СтрокаТаблицы.ИнтервалВремениНапоминания;
|
||||
СтрокаТаблицы.ВремяСобытия = ДатаПредмета;
|
||||
@@ -576,6 +581,7 @@
|
||||
|
||||
ПараметрыНапоминания = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(СтрокаТаблицы);
|
||||
ПараметрыНапоминания.Расписание = СтрокаТаблицы.Расписание.Получить();
|
||||
// @skip-check query-in-loop - запись данных набором с чтением в цикле.
|
||||
Напоминание = СоздатьНапоминание(ПараметрыНапоминания);
|
||||
ПодключитьНапоминание(Напоминание);
|
||||
КонецЕсли;
|
||||
@@ -936,7 +942,9 @@
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
// @skip-check query-in-loop - нет обращения к данным ИБ в запросе.
|
||||
ГрафикСобытияНаГод = ГрафикСобытия(Расписание, Напоминание.ВремяСобытия, ДобавитьМесяц(Напоминание.ВремяСобытия, 12) - 1);
|
||||
// @skip-check query-in-loop - нет обращения к данным ИБ в запросе.
|
||||
ПодошедшееВремяСобытия = ГрафикСобытия(Расписание, Напоминание.ВремяСобытия + 1, ТекущаяДатаСеанса());
|
||||
|
||||
// - подошло следующее время события по расписанию;
|
||||
@@ -950,22 +958,25 @@
|
||||
НачатьТранзакцию();
|
||||
Попытка
|
||||
Если ПодошедшееВремяСобытия.Количество() > 0 Тогда
|
||||
// @skip-check query-in-loop - запись данных набором с чтением в цикле.
|
||||
ОтключитьНапоминание(Напоминание, Ложь, ПриЗапуске);
|
||||
|
||||
ПараметрыНапоминания = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(Напоминание);
|
||||
ПараметрыНапоминания.Расписание = Напоминание.Расписание.Получить();
|
||||
// @skip-check query-in-loop - запись данных набором с чтением в цикле.
|
||||
Напоминание = СоздатьНапоминание(ПараметрыНапоминания);
|
||||
Напоминание.ВремяСобытия = ПодошедшееВремяСобытия[ПодошедшееВремяСобытия.ВГраница()];
|
||||
Напоминание.СрокНапоминания = Напоминание.ВремяСобытия - Напоминание.ИнтервалВремениНапоминания;
|
||||
|
||||
ПодключитьНапоминание(Напоминание,, ПриЗапуске);
|
||||
КонецЕсли;
|
||||
// @skip-check query-in-loop - запись данных набором с чтением в цикле.
|
||||
ОтключитьНапоминание(Напоминание, Истина, ПриЗапуске);
|
||||
ЗафиксироватьТранзакцию();
|
||||
Исключение
|
||||
ОтменитьТранзакцию();
|
||||
ЗаписьЖурналаРегистрации(НСтр("ru = 'Напоминания пользователя'", ОбщегоНазначения.КодОсновногоЯзыка()),
|
||||
УровеньЖурналаРегистрации.Ошибка, Метаданные.РегистрыСведений.НапоминанияПользователя, , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
УровеньЖурналаРегистрации.Ошибка, Метаданные.РегистрыСведений.НапоминанияПользователя, , ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
@@ -1025,4 +1036,285 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// См. НапоминанияПользователя.ПриЧтенииНаСервере
|
||||
Процедура ПриСозданииНаСервере(Форма, ПараметрыРазмещения) Экспорт
|
||||
|
||||
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНапоминанияПользователя") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ПравоДоступа("Редактирование", Метаданные.РегистрыСведений.НапоминанияПользователя) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(ПараметрыРазмещения.ИмяРеквизитаСДатойСобытия) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Объект = Неопределено;
|
||||
Для Каждого Реквизит Из Форма.ПолучитьРеквизиты() Цикл
|
||||
Если ТипЗнч(Форма[Реквизит.Имя]) = Тип("ДанныеФормыСтруктура") Тогда
|
||||
Объект = Форма[Реквизит.Имя];
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если Объект = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяРеквизитаСДатойСобытия = ПараметрыРазмещения.ИмяРеквизитаСДатойСобытия;
|
||||
|
||||
Предмет = Объект.Ссылка;
|
||||
ОбъектМетаданных = Предмет.Метаданные();
|
||||
|
||||
РеквизитСДатой = ОбъектМетаданных.Реквизиты.Найти(ИмяРеквизитаСДатойСобытия);
|
||||
Если РеквизитСДатой = Неопределено Тогда
|
||||
ЗначенияСвойств = Новый Структура("ИмяРеквизитаСДатойСобытия");
|
||||
ЗаполнитьЗначенияСвойств(ЗначенияСвойств, ОбъектМетаданных.СтандартныеРеквизиты);
|
||||
РеквизитСДатой = ЗначенияСвойств.ИмяРеквизитаСДатойСобытия;
|
||||
КонецЕсли;
|
||||
|
||||
Если РеквизитСДатой = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ВыводитьКороткиеИнтервалы = Истина;
|
||||
ОписаниеТипаДата = РеквизитСДатой.Тип; // ОписаниеТипов
|
||||
Если ОписаниеТипаДата.КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Дата Тогда
|
||||
ВыводитьКороткиеИнтервалы = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяПоляНастройкиНапоминания = НапоминанияПользователяКлиентСервер.ИмяПоляНастройкиНапоминания();
|
||||
ИмяГруппыЭлементов = "НастройкаНапоминания";
|
||||
ИмяПоляИнтервалВремениНапоминания = НапоминанияПользователяКлиентСервер.ИмяПоляИнтервалВремениНапоминания();
|
||||
ИмяПоляНапоминатьОСобытии = ИмяПоляНапоминатьОСобытии();
|
||||
|
||||
НастройкиНапоминания = ПараметрыРазмещения();
|
||||
НастройкиНапоминания.Удалить("Группа");
|
||||
|
||||
ЗаполнитьЗначенияСвойств(НастройкиНапоминания, ПараметрыРазмещения);
|
||||
|
||||
НастройкиНапоминания.Вставить("Предмет", Предмет);
|
||||
|
||||
Если Форма.Элементы.Найти(ИмяГруппыЭлементов) = Неопределено Тогда
|
||||
ДобавляемыеРеквизиты = Новый Массив;
|
||||
|
||||
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяПоляНастройкиНапоминания, Новый ОписаниеТипов));
|
||||
|
||||
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяПоляНапоминатьОСобытии,
|
||||
Новый ОписаниеТипов("Булево"), , НСтр("ru = 'Напомнить'"), Истина));
|
||||
|
||||
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяПоляИнтервалВремениНапоминания,
|
||||
Новый ОписаниеТипов("Строка"), , НСтр("ru = 'Интервал времени напоминания'"), Истина));
|
||||
|
||||
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
|
||||
|
||||
Группа = Форма.Элементы.Добавить(ИмяГруппыЭлементов, Тип("ГруппаФормы"), ПараметрыРазмещения.Группа);
|
||||
Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
|
||||
Группа.ОтображатьЗаголовок = Ложь;
|
||||
Группа.Заголовок = НСтр("ru = 'Настройка напоминания'");
|
||||
|
||||
Если НастройкиНапоминания.ДобавлятьФлажок Тогда
|
||||
Флажок = Форма.Элементы.Добавить(ИмяПоляНапоминатьОСобытии, Тип("ПолеФормы"), Группа);
|
||||
Флажок.ПутьКДанным = ИмяПоляНапоминатьОСобытии;
|
||||
Флажок.Вид = ВидПоляФормы.ПолеФлажка;
|
||||
Флажок.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
|
||||
Флажок.Заголовок = НСтр("ru = 'Напомнить:'");
|
||||
КонецЕсли;
|
||||
|
||||
ПолеВвода = Форма.Элементы.Добавить(ИмяПоляИнтервалВремениНапоминания, Тип("ПолеФормы"), Группа);
|
||||
ПолеВвода.ПутьКДанным = ИмяПоляИнтервалВремениНапоминания;
|
||||
ПолеВвода.Вид = ВидПоляФормы.ПолеВвода;
|
||||
ПолеВвода.Подсказка = НСтр("ru = 'Время, за которое необходимо напомнить о событии'");
|
||||
Если НастройкиНапоминания.ДобавлятьФлажок Тогда
|
||||
ПолеВвода.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
|
||||
Иначе
|
||||
ПолеВвода.Заголовок = НСтр("ru = 'Напомнить'");
|
||||
КонецЕсли;
|
||||
ПолеВвода.УстановитьДействие("ПриИзменении", "Подключаемый_ПриИзмененииНастройкиНапоминания");
|
||||
ПолеВвода.ОбновлениеТекстаРедактирования = ОбновлениеТекстаРедактирования.ПриИзмененииЗначения;
|
||||
ПолеВвода.КнопкаВыпадающегоСписка = Истина;
|
||||
ПолеВвода.Ширина = 12;
|
||||
ПолеВвода.РастягиватьПоГоризонтали = Ложь;
|
||||
|
||||
НастройкиПодсистемы = НастройкиПодсистемы();
|
||||
ИнтервалыВремени = НастройкиПодсистемы.СтандартныеИнтервалы;
|
||||
|
||||
ПолеВвода.СписокВыбора.Очистить();
|
||||
Если Не НастройкиНапоминания.ДобавлятьФлажок Тогда
|
||||
ПолеВвода.СписокВыбора.Добавить(НапоминанияПользователяКлиентСервер.ПредставлениеПеречисленияНеНапоминать());
|
||||
КонецЕсли;
|
||||
ПолеВвода.СписокВыбора.Добавить(НапоминанияПользователяКлиентСервер.ПредставлениеПеречисленияПриНаступлении());
|
||||
|
||||
Для Каждого Интервал Из ИнтервалыВремени Цикл
|
||||
Если Не ВыводитьКороткиеИнтервалы И ИнтервалВремениИзСтроки(Интервал) < 24*60*60 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ПолеВвода.СписокВыбора.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'за %1'"), Интервал));
|
||||
КонецЦикла;
|
||||
|
||||
Если НастройкиНапоминания.ИнтервалВремениНапоминания = Неопределено Тогда
|
||||
ИнтервалВремениНапоминания = НапоминанияПользователяКлиентСервер.ПредставлениеПеречисленияПриНаступлении();
|
||||
НастройкиНапоминания.ИнтервалВремениНапоминания = 0;
|
||||
КонецЕсли;
|
||||
|
||||
Если НастройкиНапоминания.ДобавлятьФлажок Тогда
|
||||
Если НастройкиНапоминания.ИнтервалВремениНапоминания = 0 Тогда
|
||||
Форма[ИмяПоляИнтервалВремениНапоминания] = НапоминанияПользователяКлиентСервер.ПредставлениеПеречисленияПриНаступлении();
|
||||
Иначе
|
||||
Форма[ИмяПоляИнтервалВремениНапоминания] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'за %1'"), ПредставлениеВремени(НастройкиНапоминания.ИнтервалВремениНапоминания, , Ложь));
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Форма[ИмяПоляИнтервалВремениНапоминания] = НапоминанияПользователяКлиентСервер.ПредставлениеПеречисленияНеНапоминать();
|
||||
КонецЕсли;
|
||||
|
||||
Форма[ИмяПоляНастройкиНапоминания] = НастройкиНапоминания;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Предмет) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПрочитатьНастройкиНапоминанияПоПредмету(Форма, Предмет);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// См. НапоминанияПользователя.ПриЧтенииНаСервере
|
||||
Процедура ПриЧтенииНаСервере(Форма, ТекущийОбъект) Экспорт
|
||||
|
||||
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНапоминанияПользователя") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ПравоДоступа("Редактирование", Метаданные.РегистрыСведений.НапоминанияПользователя) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
НастройкиНапоминания = НапоминанияПользователяКлиентСервер.НастройкиНапоминанияВФорме(Форма);
|
||||
Если НастройкиНапоминания = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяПоляИнтервалВремениНапоминания = НапоминанияПользователяКлиентСервер.ИмяПоляИнтервалВремениНапоминания();
|
||||
ИмяПоляНапоминатьОСобытии = ИмяПоляНапоминатьОСобытии();
|
||||
Предмет = ТекущийОбъект.Ссылка;
|
||||
|
||||
ПрочитатьНастройкиНапоминанияПоПредмету(Форма, Предмет);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПриЗаписиНаСервере(Форма, Отказ, ТекущийОбъект, ПараметрыЗаписи, Знач ТекстНапоминания) Экспорт
|
||||
|
||||
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНапоминанияПользователя") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ПравоДоступа("Редактирование", Метаданные.РегистрыСведений.НапоминанияПользователя) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
НастройкиНапоминания = НапоминанияПользователяКлиентСервер.НастройкиНапоминанияВФорме(Форма);
|
||||
НапоминаниеВключено = Форма[ИмяПоляНапоминатьОСобытии()];
|
||||
Предмет = ТекущийОбъект.Ссылка;
|
||||
НастройкиНапоминания.Вставить("Предмет", Предмет);
|
||||
|
||||
ИмяРеквизитаСДатойСобытия = НастройкиНапоминания.ИмяРеквизитаСДатойСобытия;
|
||||
ИнтервалВремениНапоминания = НастройкиНапоминания.ИнтервалВремениНапоминания;
|
||||
Текст = ТекстНапоминания;
|
||||
Если Не ЗначениеЗаполнено(Текст) Тогда
|
||||
Текст = ОбщегоНазначения.ПредметСтрокой(Предмет);
|
||||
КонецЕсли;
|
||||
|
||||
Если НапоминаниеВключено Тогда
|
||||
ПереустановитьНапоминаниеПоПредмету(Предмет, ИмяРеквизитаСДатойСобытия, ИнтервалВремениНапоминания, Текст);
|
||||
Иначе
|
||||
УдалитьНапоминанияПоПредмету(Предмет, ИмяРеквизитаСДатойСобытия)
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// См. НапоминанияПользователя.ПараметрыРазмещения
|
||||
Функция ПараметрыРазмещения() Экспорт
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("Группа");
|
||||
Результат.Вставить("ИмяРеквизитаСДатойСобытия");
|
||||
Результат.Вставить("ИнтервалВремениНапоминания");
|
||||
Результат.Вставить("ДобавлятьФлажок", Ложь);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// См. НапоминанияПользователяКлиентСервер.ПредставлениеВремени
|
||||
Функция ПредставлениеВремени(Знач Время, ПолноеПредставление = Истина, ВыводитьСекунды = Истина)
|
||||
|
||||
Возврат НапоминанияПользователяКлиентСервер.ПредставлениеВремени(Время, ПолноеПредставление, ВыводитьСекунды);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УдалитьНапоминанияПоПредмету(Предмет, ИмяРеквизита)
|
||||
|
||||
НапоминанияПоПредмету = НапоминанияПользователя.НайтиНапоминания(Предмет);
|
||||
Для Каждого Напоминание Из НапоминанияПоПредмету Цикл
|
||||
Если НРег(Напоминание.ИмяРеквизитаИсточника) = НРег(ИмяРеквизита) Тогда
|
||||
// @skip-check query-in-loop - запись данных набором с чтением в цикле.
|
||||
ОтключитьНапоминание(Напоминание, Ложь);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПереустановитьНапоминаниеПоПредмету(Предмет, ИмяРеквизита, ИнтервалВремениНапоминания, Текст)
|
||||
|
||||
УдалитьНапоминанияПоПредмету(Предмет, ИмяРеквизита);
|
||||
ПодключитьПроизвольноеНапоминание(Текст, ИмяРеквизита, ИнтервалВремениНапоминания, Предмет);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// См. НапоминанияПользователяКлиентСервер.ИнтервалВремениИзСтроки
|
||||
Функция ИнтервалВремениИзСтроки(Знач СтрокаСоВременем) Экспорт
|
||||
|
||||
Возврат НапоминанияПользователяКлиентСервер.ИнтервалВремениИзСтроки(СтрокаСоВременем);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ИмяПоляНапоминатьОСобытии() Экспорт
|
||||
|
||||
Возврат НапоминанияПользователяКлиентСервер.ИмяПоляНапоминатьОСобытии();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПрочитатьНастройкиНапоминанияПоПредмету(Форма, Предмет)
|
||||
|
||||
НастройкиНапоминания = НапоминанияПользователяКлиентСервер.НастройкиНапоминанияВФорме(Форма);
|
||||
Если НастройкиНапоминания = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
НастройкиНапоминания.Вставить("Предмет", Предмет);
|
||||
|
||||
НапоминанияПоПредмету = НапоминанияПользователя.НайтиНапоминания(Предмет);
|
||||
Для Каждого Напоминание Из НапоминанияПоПредмету Цикл
|
||||
Если НРег(Напоминание.ИмяРеквизитаИсточника) = НРег(НастройкиНапоминания.ИмяРеквизитаСДатойСобытия) Тогда
|
||||
ИмяПоляНапоминатьОСобытии = ИмяПоляНапоминатьОСобытии();
|
||||
ИмяПоляИнтервалВремениНапоминания = НапоминанияПользователяКлиентСервер.ИмяПоляИнтервалВремениНапоминания();
|
||||
|
||||
Форма[ИмяПоляНапоминатьОСобытии] = Истина;
|
||||
Если Напоминание.ИнтервалВремениНапоминания = 0 Тогда
|
||||
Форма[ИмяПоляИнтервалВремениНапоминания] = НапоминанияПользователяКлиентСервер.ПредставлениеПеречисленияПриНаступлении();
|
||||
Иначе
|
||||
Форма[ИмяПоляИнтервалВремениНапоминания] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'за %1'"), ПредставлениеВремени(Напоминание.ИнтервалВремениНапоминания, , Ложь));
|
||||
КонецЕсли;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
Reference in new issue
Block a user