3_1_7_369

This commit is contained in:
Компания 1С committed 2023-03-30 11:52:00 +03:00
1 parent a34535ec0c
commit 74d0550696
152 files changed
+6149 -3035

No files matched your search

@@ -226,6 +226,8 @@
// Параметры:
// УстановленныеРасширенияПриЗапуске - см. УстановленныеРасширенияПриЗапуске
// - Неопределено - получить для текущего сеанса.
// ПроверкаВТекущемСеансе - Булево - указать Истина, если УстановленныеРасширенияПриЗапуске
// получены в текущем сеансе.
//
// Возвращаемое значение:
// Структура:
@@ -236,7 +238,8 @@
// * Добавлено - Число
// * Удалено - Число
//
Функция ДинамическиИзмененныеРасширения(УстановленныеРасширенияПриЗапуске = Неопределено) Экспорт
Функция ДинамическиИзмененныеРасширения(УстановленныеРасширенияПриЗапуске = Неопределено,
ПроверкаВТекущемСеансе = Ложь) Экспорт
Результат = Новый Структура;
Результат.Вставить("Расширения", Неопределено);
@@ -249,8 +252,6 @@
Если УстановленныеРасширенияПриЗапуске = Неопределено Тогда
ПроверкаВТекущемСеансе = Истина;
УстановленныеРасширенияПриЗапуске = УстановленныеРасширенияПриЗапуске();
Иначе
ПроверкаВТекущемСеансе = Ложь;
КонецЕсли;
БезИзменений = УстановленныеРасширенияПриЗапуске.Свойство("РасширенияНедоступны")
@@ -265,7 +265,18 @@
&НаСервере
Процедура ИзменениеПубликации(ВариантПубликации)
ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ВыделенныеСтроки", Элементы.Список.ВыделенныеСтроки);
Запрос.Текст =
"ВЫБРАТЬ
| ДополнительныеОтчетыИОбработки.Ссылка
|ИЗ
| Справочник.ДополнительныеОтчетыИОбработки КАК ДополнительныеОтчетыИОбработки
|ГДЕ
| ДополнительныеОтчетыИОбработки.Ссылка В (&ВыделенныеСтроки)
| И НЕ ДополнительныеОтчетыИОбработки.ЭтоГруппа";
ВыделенныеСтроки = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
НачатьТранзакцию();
Попытка
@@ -582,6 +582,7 @@
<edit>
<common>true</common>
</edit>
<savedData>true</savedData>
</attributes>
<attributes>
<name>ПолныйПуть</name>
@@ -89,6 +89,8 @@
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект)
ТекущийОбъект.ДополнительныеСвойства.Вставить("РабочийКаталог", ЭтотОбъект.РабочийКаталог);
// СтандартныеПодсистемы.Свойства
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами");
@@ -148,24 +150,8 @@
Процедура РабочийКаталогВладельцаОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
РодительСсылка = Объект.Родитель;
РабочийКаталогРодителя = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(РодительСсылка);
РабочийКаталогПапки = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(Объект.Ссылка);
РабочийКаталогПапкиУнаследованный = РабочийКаталогРодителя
+ Объект.Наименование + ПолучитьРазделительПути();
Если ПустаяСтрока(РабочийКаталогРодителя) Тогда
РабочийКаталог = ""; // Новый рабочий каталог папки.
РаботаСФайламиСлужебныйВызовСервера.ОчиститьРабочийКаталог(Объект.Ссылка);
ИначеЕсли РабочийКаталогПапкиУнаследованный <> РабочийКаталогПапки Тогда
РабочийКаталог = РабочийКаталогПапкиУнаследованный; // Новый рабочий каталог папки.
РаботаСФайламиСлужебныйВызовСервера.СохранитьРабочийКаталогПапки(Объект.Ссылка, РабочийКаталог);
КонецЕсли;
РабочийКаталог = РабочийКаталогВладельцаОчисткаНаСервере(Объект.Ссылка, Объект.Родитель, Объект.Наименование);
Модифицированность = Истина;
КонецПроцедуры
@@ -222,12 +208,6 @@
Возврат;
КонецЕсли;
Если Объект.Ссылка.Пустая() Тогда
Если Записать()= Ложь Тогда
Возврат;
КонецЕсли;
КонецЕсли;
ОчиститьСообщения();
Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
@@ -261,8 +241,7 @@
КонецПопытки;
РабочийКаталог = ИмяКаталога;
РаботаСФайламиСлужебныйВызовСервера.СохранитьРабочийКаталогПапки(Объект.Ссылка, РабочийКаталог);
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
@@ -438,4 +417,26 @@
КонецПроцедуры
&НаСервереБезКонтекста
Функция РабочийКаталогВладельцаОчисткаНаСервере(Ссылка, РодительСсылка, Наименование)
РабочийКаталогРодителя = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(РодительСсылка);
РабочийКаталогПапкиУнаследованный = РабочийКаталогРодителя
+ Наименование + ПолучитьРазделительПути();
Если ПустаяСтрока(РабочийКаталогРодителя) Тогда
РабочийКаталог = ""; // Новый рабочий каталог папки.
Иначе
РабочийКаталог = РабочийКаталогПапкиУнаследованный; // Новый рабочий каталог папки.
КонецЕсли;
Возврат РабочийКаталог;
КонецФункции
#КонецОбласти
@@ -145,18 +145,27 @@
Возврат;
КонецЕсли;
Если ДополнительныеСвойства.ПрошлыйЭтоНовый Тогда
РабочийКаталогПапки = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(Родитель);
Если РабочийКаталогПапки <> "" Тогда
// Добавляем слэш в конце, если его нет.
РабочийКаталогПапки = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(
РабочийКаталогПапки);
РабочийКаталогПапки = РабочийКаталогПапки
+ Наименование + ПолучитьРазделительПути();
РаботаСФайламиСлужебныйВызовСервера.СохранитьРабочийКаталогПапки(Ссылка, РабочийКаталогПапки);
РабочийКаталог = Неопределено;
Если ДополнительныеСвойства.Свойство("РабочийКаталог", РабочийКаталог) Или ДополнительныеСвойства.ПрошлыйЭтоНовый Тогда
Если РабочийКаталог = "" Тогда
РаботаСФайламиСлужебныйВызовСервера.ОчиститьРабочийКаталог(Ссылка);
ИначеЕсли РабочийКаталог <> Неопределено Тогда
РаботаСФайламиСлужебныйВызовСервера.СохранитьРабочийКаталогПапки(Ссылка, РабочийКаталог);
Иначе
РабочийКаталогПапки = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(Родитель);
Если РабочийКаталогПапки <> "" Тогда
// Добавляем слэш в конце, если его нет.
РабочийКаталогПапки = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(
РабочийКаталогПапки);
РабочийКаталогПапки = РабочийКаталогПапки
+ Наименование + ПолучитьРазделительПути();
РаботаСФайламиСлужебныйВызовСервера.СохранитьРабочийКаталогПапки(Ссылка, РабочийКаталогПапки);
КонецЕсли;
КонецЕсли;
КонецЕсли;
@@ -819,7 +819,7 @@
<usePurposes>MobileDevice</usePurposes>
</forms>
<templates uuid="5189beb9-b939-4f97-aca0-c2f3492ac8b9">
<name>КомпонентаExtraCryptoAPI_3_0_2_22</name>
<name>КомпонентаExtraCryptoAPI_3_0_2_23</name>
<synonym>
<key>ru</key>
<value>Компонента ExtraCryptoAPI</value>
@@ -658,6 +658,10 @@
<metadata>ScheduledJob.ЗапускДополнительныхОбработок</metadata>
<use>DontUse</use>
</content>
<content>
<metadata>Constant.РегистрироватьПоказателиСерверныхОповещений</metadata>
<use>DontUse</use>
</content>
<content>
<metadata>InformationRegister.ОбщиеПоставляемыеМакетыПечати</metadata>
<use>DontUse</use>
@@ -131,7 +131,8 @@
КонецЕсли;
ОсновнойЯзык = ОбщегоНазначения.КодОсновногоЯзыка();
ЛокализуемыеРеквизитыВШапке = МультиязычностьСервер.НаименованияЛокализуемыхРеквизитовОбъектаВШапке(ОбъектМетаданных);
Если ХранениеВТабличнойЧасти Тогда
Для каждого Представление Из Параметры.Представления Цикл
@@ -147,20 +148,27 @@
КонецЦикла;
ОписаниеЯзыка = ОписаниеЯзыка(ОсновнойЯзык);
Если ЗначениеЗаполнено(СуффиксОсновногоЯзыка) Тогда
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.Объект[Параметры.ИмяРеквизита + СуффиксОсновногоЯзыка];
Если ЛокализуемыеРеквизитыВШапке[Параметры.ИмяРеквизита] <> Неопределено Тогда
ОписаниеЯзыка = ОписаниеЯзыка(ОсновнойЯзык);
Если ЗначениеЗаполнено(СуффиксОсновногоЯзыка) Тогда
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.Объект[Параметры.ИмяРеквизита + СуффиксОсновногоЯзыка];
КонецЕсли;
КонецЕсли;
ИначеЕсли МультиязычныеСтрокиВРеквизитах
КонецЕсли;
Если МультиязычныеСтрокиВРеквизитах
И ЛокализуемыеРеквизитыВШапке[Параметры.ИмяРеквизита] <> Неопределено
И (ИспользуетсяПервыйДополнительныйЯзык
ИЛИ ИспользуетсяВторойДополнительныйЯзык) Тогда
ОписаниеЯзыка = ОписаниеЯзыка(ОсновнойЯзык);
Если ПустаяСтрока(СуффиксОсновногоЯзыка) Тогда
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение;
ИначеЕсли Параметры.ЗначенияРеквизитов <> Неопределено Тогда
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ЗначенияРеквизитов[Параметры.ИмяРеквизита + СуффиксОсновногоЯзыка];
Иначе
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ЗначенияРеквизитов[Параметры.ИмяРеквизита + СуффиксОсновногоЯзыка];
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.Объект[Параметры.ИмяРеквизита + СуффиксОсновногоЯзыка];
КонецЕсли;
Если ИспользуетсяПервыйДополнительныйЯзык Тогда
@@ -169,6 +177,8 @@
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение;
ИначеЕсли Параметры.ЗначенияРеквизитов <> Неопределено Тогда
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ЗначенияРеквизитов[Параметры.ИмяРеквизита + СуффиксДополнительногоЯзыка1];
Иначе
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.Объект[Параметры.ИмяРеквизита + СуффиксДополнительногоЯзыка1];
КонецЕсли;
КонецЕсли;
@@ -178,6 +188,8 @@
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение;
ИначеЕсли Параметры.ЗначенияРеквизитов <> Неопределено Тогда
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ЗначенияРеквизитов[Параметры.ИмяРеквизита + СуффиксДополнительногоЯзыка2];
Иначе
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.Объект[Параметры.ИмяРеквизита + СуффиксДополнительногоЯзыка2];
КонецЕсли;
КонецЕсли;
@@ -217,14 +229,16 @@
Результат.Вставить("Модифицированность", Модифицированность);
Результат.Вставить("ЗначенияНаРазныхЯзыках", Новый Массив);
ТекущийКодЯзыка = ?(ТипЗнч(ТекущийЯзык()) = Тип("Строка"), ТекущийЯзык(), ТекущийЯзык().КодЯзыка);
Для каждого Язык Из Языки Цикл
ТекущийКодЯзыка = ?(ТипЗнч(ТекущийЯзык()) = Тип("Строка"), ТекущийЯзык(), ТекущийЯзык().КодЯзыка);
Если СтрСравнить(Язык.КодЯзыка, ТекущийКодЯзыка) = 0 Тогда
Результат.Вставить("СтрокаНаТекущемЯзыке", ЭтотОбъект[Язык.Имя]);
ИначеЕсли СтрСравнить(Язык.КодЯзыка, ОсновнойЯзык) = 0 И Не Результат.Свойство("СтрокаНаТекущемЯзыке") Тогда
Результат.Вставить("СтрокаНаТекущемЯзыке", ЭтотОбъект[Язык.Имя]);
КонецЕсли;
Если ТекущийКодЯзыка = ОсновнойЯзык И Язык.КодЯзыка = ОсновнойЯзык Тогда
Продолжить;
КонецЕсли;
@@ -8,10 +8,8 @@
</li>
<li>Информирование клиента о событиях: день рождения, дата очередного платежа и прочее;
</li>
<li>Массовое оповещение клиентов о товарах, услугах, акциях и специальных предложениях.</li></ul><p>Для возможности отправки SMS необходимо заключить договор с провайдером на оказание соответствующей услуги. Подробности об услуге можно узнать на сайтах провайдеров:</p>
<ul><li><a href="http://beeline.amega-inform.ru">Описание услуги «Корпоративные SMS-сервисы» (Билайн)</a> или <a href="http://beeline.amega-inform.ru">SMS-сервис Билайн</a>;
</li>
<li><a href="http://www.mtscommunicator.ru/service/">Описание услуги «МТС Коммуникатор» (МТС)</a>.</li></ul><h3>Настройка отправки SMS</h3>
<li>Массовое оповещение клиентов о товарах, услугах, акциях и специальных предложениях.</li></ul><p>Для возможности отправки SMS необходимо заключить договор с провайдером на оказание соответствующей услуги. Подробности об услуге можно узнать на сайтах провайдеров, перейдя по ссылке <b>Нужна помощь?</b> Также по ссылке отображаются рекомендации по подключению услуги.</p>
<h3>Настройка отправки SMS</h3>
<ul><li>В поле <strong>Провайдер</strong> необходимо выбрать поставщика услуги, с которым заключен договор.
</li>
<li>Выберите <b>Способ авторизации</b>, указанный в договоре с провайдером;</li>
@@ -217,11 +217,13 @@
ИначеЕсли (ИмяСобытия = "ОтказОтИзмененияМакета"
Или ИмяСобытия = "ОтменаРедактированияТабличногоДокумента"
И Источник.ВладелецФормы = ЭтотОбъект
И ЗначениеЗаполнено(Параметр.ИмяОбъектаМетаданныхМакета)
И СтрЗаканчиваетсяНа(НастройкаПечатнойФормы.ПутьКМакету, Параметр.ИмяОбъектаМетаданныхМакета)) Тогда
ОтобразитьСостояниеТекущейПечатнойФормы();
ИначеЕсли ИмяСобытия = "Запись_ТабличныйДокумент"
И СтрЗаканчиваетсяНа(НастройкаПечатнойФормы.ПутьКМакету, Параметр.ИмяОбъектаМетаданныхМакета)
И Источник.ВладелецФормы = ЭтотОбъект Тогда
И Источник.ВладелецФормы = ЭтотОбъект
И ЗначениеЗаполнено(Параметр.ИмяОбъектаМетаданныхМакета)
И СтрЗаканчиваетсяНа(НастройкаПечатнойФормы.ПутьКМакету, Параметр.ИмяОбъектаМетаданныхМакета) Тогда
ПодключитьОбработчикОжидания("ОбновитьТекущуюПечатнуюФорму",0.1, Истина);
КонецЕсли;
@@ -51,6 +51,8 @@
&НаКлиенте
Процедура ИзменитьПометкуУдаления(Команда)
ОчиститьСообщения();
ВыбранныеЭлементы = ВыбранныеЭлементы();
Если ВыбранныеЭлементы.Количество() = 0 Тогда
@@ -1399,6 +1401,8 @@
&НаКлиенте
Процедура ИзменитьПроведениеДокументов(Режим)
ОчиститьСообщения();
ВыбранныеДокументы = ВыбранныеЭлементы();
Если ВыбранныеДокументы.Количество() = 0 Тогда
Возврат;
@@ -15,7 +15,7 @@
// - Строка - код региона. Например, 50.
//
// Возвращаемое значение:
// Строка - наименование региона согласно ГАР. Например, "Московская область".
// Строка - наименование региона согласно ГАР. Например, "Московская область" или "Московская обл".
// Неопределено - если регион не существует.
//
Функция НаименованиеРегионаПоКоду(КодСубъектаРФ) Экспорт
@@ -391,17 +391,29 @@
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
| ЕСТЬNULL(ВЫРАЗИТЬ(СлужебныеАдресныеСведения.Идентификатор КАК ЧИСЛО(2, 0)), АдресныеОбъекты.КодСубъектаРФ) КАК КодСубъектаРФ,
| СлужебныеАдресныеСведения.Значение КАК ПолноеНаименование,
| АдресныеОбъекты.КодСубъектаРФ КАК КодСубъектаРФ,
| АдресныеОбъекты.Наименование + "" "" + АдресныеОбъекты.ТипОбъекта КАК Наименование
|ПОМЕСТИТЬ АдресныеОбъекты
|ИЗ
| РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты
|ГДЕ
| АдресныеОбъекты.Уровень = 1
|
|ИНДЕКСИРОВАТЬ ПО
| КодСубъектаРФ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЕСТЬNULL(ВЫРАЗИТЬ(СлужебныеАдресныеСведения.Идентификатор КАК ЧИСЛО(2, 0)), АдресныеОбъекты.КодСубъектаРФ) КАК КодСубъектаРФ,
| СлужебныеАдресныеСведения.Значение КАК ПолноеНаименование,
| АдресныеОбъекты.Наименование КАК Наименование
|ИЗ
| АдресныеОбъекты КАК АдресныеОбъекты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СлужебныеАдресныеСведения КАК СлужебныеАдресныеСведения
| ПО ((ВЫРАЗИТЬ(СлужебныеАдресныеСведения.Идентификатор КАК ЧИСЛО(2, 0))) = АдресныеОбъекты.КодСубъектаРФ)
| И (СлужебныеАдресныеСведения.Тип = &Тип)
|ГДЕ
| АдресныеОбъекты.Уровень = 1";
| И (СлужебныеАдресныеСведения.Тип = &Тип)";
Запрос.УстановитьПараметр("Тип", "СубъектыРФ");
РезультатЗапроса = Запрос.Выполнить().Выбрать();
@@ -563,14 +563,13 @@
Возврат;
КонецЕсли;
ПараметрыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске();
АвторизованныйПользователь = ПользователиКлиент.АвторизованныйПользователь();
ПользователиВарианта = Форма.ПользователиВарианта;
ПользователиВарианта.Очистить();
ПользователиВарианта.Добавить(
ПараметрыКлиента.АвторизованныйПользователь,
АвторизованныйПользователь,
"[ЭтоТекущийПользователь]",,
КартинкаПользователяВариантаОтчета(ПараметрыКлиента.АвторизованныйПользователь));
КартинкаПользователяВариантаОтчета(АвторизованныйПользователь));
КонецПроцедуры
@@ -88,7 +88,7 @@
Продолжить;
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияРежимаСовместимости, "8.3.19.0") >= 0
Если НЕ ОбщегоНазначения.ЭтоМобильныйКлиент() ИЛИ ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияРежимаСовместимости, "8.3.19.0") >= 0
И Форма.ПолучитьТекущийРежимОтображенияРезультата() = РежимОтображенияРезультатаОтчета.Обычный Тогда
Ячейка.ГиперСсылка = Истина;
КонецЕсли;
@@ -1582,7 +1582,7 @@
СвойстваЗаголовка.ОформитьОтрицательные = ЭтоЧисло;
СвойстваЗаголовка.ОформитьПоложительные = ЭтоЧисло;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияРежимаСовместимости, "8.3.19.0") >= 0
Если НЕ ОбщегоНазначения.ЭтоМобильныйКлиент() ИЛИ ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияРежимаСовместимости, "8.3.19.0") >= 0
И Форма.ПолучитьТекущийРежимОтображенияРезультата() = РежимОтображенияРезультатаОтчета.Обычный Тогда
ВставитьИндикаторСортировки(ИндексПоля, СвойстваЗаголовка, РезультатОтчета.Область(Запись.Имя));
КонецЕсли;
@@ -730,10 +730,15 @@
КонецФункции
// Регистрирует информацию о ходе выполнения длительной операции.
// Во избежание избыточного потребления памяти и ее утечек при выполнении одной длительной операции
// Не следует использовать для передачи результата работы длительной операции по частям.
//
// Во избежание избыточного потребления памяти и ее утечек при выполнении одной длительной операции
// не следует сообщать прогресс более 100 раз.
// Если прогресс сообщается менее чем через 3 сек после предыдущего вызова,
// то отправка сообщения пропускается.
//
// Если прогресс сообщается менее чем через 3 сек после предыдущего вызова, то последнее сообщение
// удаляется и заменяется на новое (если используется система взаимодействия, то отправка нового
// сообщения не выполняется, а будет выполнена спустя некоторое время - не быстрее 3 сек).
//
// После отправки прогресса отправляются все сообщения, накопленные в очереди сообщений фонового задания.
//
// Для того чтобы выводить ход выполнения длительной операции для пользователя, следует установить
@@ -762,25 +767,6 @@
ПередаваемоеЗначение.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
УстановитьОтключениеБезопасногоРежима(Истина);
ДатаОтправки = ПараметрыСеанса.ДлительныеОперации.ДатаОтправкиСообщенияПрогресса;
УстановитьОтключениеБезопасногоРежима(Ложь);
УстановитьПривилегированныйРежим(Ложь);
НоваяДатаОтправки = ТекущаяДатаСеанса();
Если НоваяДатаОтправки < ДатаОтправки + 3 Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
УстановитьОтключениеБезопасногоРежима(Истина);
Свойства = Новый Структура(ПараметрыСеанса.ДлительныеОперации);
Свойства.ДатаОтправкиСообщенияПрогресса = НоваяДатаОтправки;
ПараметрыСеанса.ДлительныеОперации = Новый ФиксированнаяСтруктура(Свойства);
УстановитьОтключениеБезопасногоРежима(Ложь);
УстановитьПривилегированныйРежим(Ложь);
ОтправитьОповещениеКлиенту("Прогресс", ПередаваемоеЗначение);
КонецПроцедуры
@@ -1184,7 +1170,6 @@
Свойства = Новый Структура;
Свойства.Вставить("Отмененные", Новый ФиксированныйМассив(Новый Массив));
Свойства.Вставить("ПолученныеОповещения", Новый ФиксированноеСоответствие(Новый Соответствие));
Свойства.Вставить("ДатаОтправкиСообщенияПрогресса", '00010101');
ПараметрыСеанса.ДлительныеОперации = Новый ФиксированнаяСтруктура(Свойства);
УстановленныеПараметры.Добавить("ДлительныеОперации");
КонецЕсли;
@@ -1514,7 +1499,8 @@
ПоследнееОповещение = ПоследниеОповещения[ВидОповещений];
КонецЕсли;
КонецЕсли;
Оповещения = СерверныеОповещения.СерверныеОповещенияДляКлиента(ИдентификаторЗадания, ПоследнееОповещение);
Оповещения = СерверныеОповещения.СерверныеОповещенияДляКлиента(ИдентификаторЗадания,
ИдентификаторВидаОповещения(ВидОповещений), ПоследнееОповещение);
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
@@ -1670,21 +1656,64 @@
КонецЦикла;
КонецЕсли;
ПараметрыОповещения = Новый Структура("ВидОповещения, ИдентификаторЗадания, Результат",
ВидОповещения, ИдентификаторОсновногоЗадания, Результат);
ПараметрыОповещения = Новый Структура;
ПараметрыОповещения.Вставить("ВидОповещения", ВидОповещения);
ПараметрыОповещения.Вставить("ИдентификаторЗадания", ИдентификаторОсновногоЗадания);
ПараметрыОповещения.Вставить("Результат", Результат);
ПараметрыОповещения.Вставить("ВремяОтправки", ТекущаяУниверсальнаяДатаВМиллисекундах());
КлючиСеансов = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(КлючСеансаРодителя);
Адресаты = Новый Соответствие;
Адресаты.Вставить(ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор, КлючиСеансов);
ДополнительныеПараметрыОтправки = СерверныеОповещения.ДополнительныеПараметрыОтправки();
ДополнительныеПараметрыОтправки.ИдентификаторГруппы = ИдентификаторОсновногоЗадания;
ДополнительныеПараметрыОтправки.ВидОповещенияВГруппе = ИдентификаторВидаОповещения(ВидОповещения);
Если ВидОповещения = "Прогресс" Тогда
ДополнительныеПараметрыОтправки.Заменить = Истина;
ДополнительныеПараметрыОтправки.ОтсрочкаДоставки = 3;
ДополнительныеПараметрыОтправки.СобытиеЖурналаПриОтсрочкеДоставки =
НСтр("ru = 'Длительные операция.Отложенная доставка прогресса'",
ОбщегоНазначения.КодОсновногоЯзыка());
Попытка
ВызватьИсключение НСтр("ru = 'Стек вызовов:'");
Исключение
СтекВызовов = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
ДополнительныеПараметрыОтправки.КомментарийЖурналаПриОтсрочкеДоставки =
НСтр("ru = 'Отправка прогресса чаще одного раза в 3 сек.'")
+ Символы.ПС + СтекВызовов;
КонецЕсли;
СерверныеОповещения.ОтправитьСерверноеОповещениеСИдентификаторомГруппы(ИмяОповещения(),
ПараметрыОповещения, Адресаты, Не ЗаписатьСообщенияПользователю, ИдентификаторОсновногоЗадания);
ПараметрыОповещения, Адресаты, Не ЗаписатьСообщенияПользователю, ДополнительныеПараметрыОтправки);
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
КонецПроцедуры
// Для процедуры ОтправитьОповещениеКлиенту и функции ПолучитьИзОповещений.
Функция ИдентификаторВидаОповещения(ВидОповещения)
Если ВидОповещения = "СообщениеПользователю" Или ВидОповещения = "Сообщения" Тогда
Возврат Новый УникальныйИдентификатор("0afef160-bfcb-459e-a890-a4afbb73b7ba");
ИначеЕсли ВидОповещения = "Прогресс" Тогда
Возврат Новый УникальныйИдентификатор("14076bb1-a1f5-4876-975a-3b7f69383f6c");
ИначеЕсли ВидОповещения = "ДлительнаяОперацияЗавершена" Тогда
Возврат Новый УникальныйИдентификатор("28e5ab5c-196b-44be-aab5-8fe7edb5225b");
КонецЕсли;
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Неизвестный вид оповещения длительной операции ""%1"".'"), ВидОповещения);
ВызватьИсключение ТекстОшибки;
КонецФункции
// Запись в очередь еще не записанных сообщений, которые были отправлены
// без использования процедуры ОбщегоНазначения.СообщитьПользователю.
//
@@ -66,6 +66,7 @@
Контекст = Новый Структура;
Контекст.Вставить("Результат");
Контекст.Вставить("ИдентификаторЗадания", РасширенныеПараметры.ИдентификаторЗадания);
Контекст.Вставить("ОповещениеОЗавершении", ОповещениеОЗавершении);
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПриЗакрытииФормыДлительнаяОперация",
ЭтотОбъект, Контекст);
@@ -78,6 +79,7 @@
РасширенныеПараметры.Вставить("ОповещениеОЗавершении", ОповещениеОЗавершении);
РасширенныеПараметры.Вставить("ТекущийИнтервал", ?(РасширенныеПараметры.Интервал <> 0, РасширенныеПараметры.Интервал, 1));
РасширенныеПараметры.Вставить("Контроль", ТекущаяДата() + РасширенныеПараметры.ТекущийИнтервал); // АПК:143 Дата сеанса не используется для проверки интервалов
РасширенныеПараметры.Вставить("ВремяОтправкиПоследнегоПрогресса", 0);
Операции = АктивныеДлительныеОперации();
Операции.Список.Вставить(РасширенныеПараметры.ИдентификаторЗадания, РасширенныеПараметры);
@@ -299,13 +301,16 @@
// Контекст - Структура:
// * Результат - Структура
// - Неопределено
// * ИдентификаторЗадания - УникальныйИдентификатор
// - Неопределено
// * ОповещениеОЗавершении - ОписаниеОповещения
// - Неопределено
//
Процедура ПриЗакрытииФормыДлительнаяОперация(Результат, Контекст) Экспорт
Если Контекст.ОповещениеОЗавершении <> Неопределено Тогда
ВыполнитьОбработкуОповещения(Контекст.ОповещениеОЗавершении, Контекст.Результат);
ОповеститьОЗавершенииДлительнойОперации(Контекст.ОповещениеОЗавершении,
Контекст.Результат, Контекст.ИдентификаторЗадания);
КонецЕсли;
КонецПроцедуры
@@ -439,6 +444,15 @@
Или ДлительнаяОперацияОтменена(Операция) Тогда
Возврат;
КонецЕсли;
Если Результат.ВидОповещения = "Прогресс" Тогда
Если Операция.ВремяОтправкиПоследнегоПрогресса < Результат.ВремяОтправки Тогда
Операция.ВремяОтправкиПоследнегоПрогресса = Результат.ВремяОтправки;
Иначе
Возврат; // Устаревшее сообщение прогресса пропускается.
КонецЕсли;
КонецЕсли;
ОбработатьРезультатОперации(АктивныеДлительныеОперации, Операция, Результат.Результат);
КонецПроцедуры
@@ -472,6 +486,8 @@
// - Неопределено
// * ТекущийИнтервал - Число
// * Контроль - Дата
//
// * ВремяОтправкиПоследнегоПрогресса - Число - универсальная дата в миллисекундах
//
// Результат - см. ДлительныеОперации.НовыйРезультатВыполненияОперации
//
@@ -484,7 +500,22 @@
Прогресс.Вставить("ИдентификаторЗадания", ДлительнаяОперация.ИдентификаторЗадания);
Прогресс.Вставить("Прогресс", Результат.Прогресс);
Прогресс.Вставить("Сообщения", Результат.Сообщения);
ВыполнитьОбработкуОповещения(ДлительнаяОперация.ОповещениеОПрогрессеВыполнения, Прогресс);
Попытка
ВыполнитьОбработкуОповещения(ДлительнаяОперация.ОповещениеОПрогрессеВыполнения, Прогресс);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'При вызове оповещения о прогрессе длительной операции
|%1 возникла ошибка:
|%2'"),
Строка(ДлительнаяОперация.ИдентификаторЗадания),
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
НСтр("ru = 'Длительные операции.Ошибка вызова обработчика события'",
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
"Ошибка",
ТекстОшибки);
КонецПопытки;
ИначеЕсли Результат.Сообщения <> Неопределено Тогда
Для Каждого Сообщение Из Результат.Сообщения Цикл
ДлительнаяОперация.НакопленныеСообщения.Добавить(Сообщение);
@@ -548,8 +579,30 @@
Результат.Вставить("Сообщения", Новый ФиксированныйМассив(ДлительнаяОперация.НакопленныеСообщения));
КонецЕсли;
ВыполнитьОбработкуОповещения(ДлительнаяОперация.ОповещениеОЗавершении, Результат);
ОповеститьОЗавершенииДлительнойОперации(ДлительнаяОперация.ОповещениеОЗавершении,
Результат, ДлительнаяОперация.ИдентификаторЗадания);
КонецПроцедуры
Процедура ОповеститьОЗавершенииДлительнойОперации(ОповещениеОЗавершении, Результат, ИдентификаторЗадания)
Попытка
ВыполнитьОбработкуОповещения(ОповещениеОЗавершении, Результат);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'При вызове оповещения о завершении длительной операции
|%1 возникла ошибка:
|%2'"),
Строка(ИдентификаторЗадания),
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
НСтр("ru = 'Длительные операции.Ошибка вызова обработчика события'",
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
"Ошибка", ТекстОшибки,, Истина);
ПоказатьИнформациюОбОшибке(ИнформацияОбОшибке);
КонецПопытки;
КонецПроцедуры
// Возвращаемое значение:
@@ -69,6 +69,7 @@
// ИнтерфейсOData
События.Вставить("ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузкиOData", Ложь);
События.Вставить("ПриЗаполненииЗависимыхТаблицДляВыгрузкиЗагрузкиOData", Ложь);
// КонтрольВеденияУчета
События.Вставить("ПриОпределенииПроверок", Ложь);
@@ -1942,10 +1943,38 @@
// См. ОбщегоНазначенияПереопределяемый.ПриПериодическомПолученииДанныхКлиентаНаСервере
Процедура ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
МодульЦентрМониторингаСлужебный = ОбщегоНазначения.ОбщийМодуль("ЦентрМониторингаСлужебный");
МодульЦентрМониторингаСлужебный.ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты);
КонецЕсли;
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
СтандартныеПодсистемыСервер.ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты);
Исключение
СерверныеОповещения.ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
СерверныеОповещения.ДобавитьПоказатель(Результаты, МоментНачала,
"СтандартныеПодсистемыСервер.ПриПериодическомПолученииДанныхКлиентаНаСервере");
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОценкаПроизводительности") Тогда
МодульОценкаПроизводительностиСлужебный = ОбщегоНазначения.ОбщийМодуль("ОценкаПроизводительностиСлужебный");
МодульОценкаПроизводительностиСлужебный.ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты);
КонецЕсли;
Исключение
СерверныеОповещения.ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
СерверныеОповещения.ДобавитьПоказатель(Результаты, МоментНачала,
"ОценкаПроизводительностиСлужебный.ПриПериодическомПолученииДанныхКлиентаНаСервере");
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
МодульЦентрМониторингаСлужебный = ОбщегоНазначения.ОбщийМодуль("ЦентрМониторингаСлужебный");
МодульЦентрМониторингаСлужебный.ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты);
КонецЕсли;
Исключение
СерверныеОповещения.ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
СерверныеОповещения.ДобавитьПоказатель(Результаты, МоментНачала,
"ЦентрМониторингаСлужебный.ПриПериодическомПолученииДанныхКлиентаНаСервере");
КонецПроцедуры
@@ -2750,6 +2779,26 @@
КонецПроцедуры
// См. ИнтерфейсODataПереопределяемый.ПриЗаполненииЗависимыхТаблицДляВыгрузкиЗагрузкиOData
Процедура ПриЗаполненииЗависимыхТаблицДляВыгрузкиЗагрузкиOData(Таблицы) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УдалениеПомеченныхОбъектов") Тогда
МодульУдалениеПомеченныхОбъектовСлужебный = ОбщегоНазначения.ОбщийМодуль("УдалениеПомеченныхОбъектовСлужебный");
МодульУдалениеПомеченныхОбъектовСлужебный.ПриЗаполненииЗависимыхТаблицДляВыгрузкиЗагрузкиOData(Таблицы);
КонецЕсли;
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПриЗаполненииЗависимыхТаблицДляВыгрузкиЗагрузкиOData Тогда
МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС");
МодульИнтеграцияПодсистемБТС.ПриЗаполненииЗависимыхТаблицДляВыгрузкиЗагрузкиOData(Таблицы);
КонецЕсли;
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБИП().ПриЗаполненииЗависимыхТаблицДляВыгрузкиЗагрузкиOData Тогда
МодульИнтеграцияПодсистемБИП = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБИП");
МодульИнтеграцияПодсистемБИП.ПриЗаполненииЗависимыхТаблицДляВыгрузкиЗагрузкиOData(Таблицы);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонтрольВеденияУчета
@@ -330,20 +330,64 @@
// См. ОбщегоНазначенияКлиентПереопределяемый.ПередПериодическойОтправкойДанныхКлиентаНаСервер
Процедура ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры) Экспорт
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
МодульЦентрМониторингаКлиентСлужебный = ОбщегоНазначенияКлиент.ОбщийМодуль("ЦентрМониторингаКлиентСлужебный");
МодульЦентрМониторингаКлиентСлужебный.ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры);
КонецЕсли;
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
СтандартныеПодсистемыКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры);
Исключение
СерверныеОповещенияКлиент.ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
СерверныеОповещенияКлиент.ДобавитьПоказатель(МоментНачала,
"СтандартныеПодсистемыКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер");
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ОценкаПроизводительности") Тогда
МодульОценкаПроизводительностиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОценкаПроизводительностиКлиент");
МодульОценкаПроизводительностиКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры);
КонецЕсли;
Исключение
СерверныеОповещенияКлиент.ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
СерверныеОповещенияКлиент.ДобавитьПоказатель(МоментНачала,
"ОценкаПроизводительностиКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер");
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
МодульЦентрМониторингаКлиентСлужебный = ОбщегоНазначенияКлиент.ОбщийМодуль("ЦентрМониторингаКлиентСлужебный");
МодульЦентрМониторингаКлиентСлужебный.ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры);
КонецЕсли;
Исключение
СерверныеОповещенияКлиент.ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
СерверныеОповещенияКлиент.ДобавитьПоказатель(МоментНачала,
"ЦентрМониторингаКлиентСлужебный.ПередПериодическойОтправкойДанныхКлиентаНаСервер");
КонецПроцедуры
// См. ОбщегоНазначенияКлиентПереопределяемый.ПослеПериодическогоПолученияДанныхКлиентаНаСервере
Процедура ПослеПериодическогоПолученияДанныхКлиентаНаСервере(Результаты) Экспорт
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
МодульЦентрМониторингаКлиентСлужебный = ОбщегоНазначенияКлиент.ОбщийМодуль("ЦентрМониторингаКлиентСлужебный");
МодульЦентрМониторингаКлиентСлужебный.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(Результаты);
КонецЕсли;
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
СтандартныеПодсистемыКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(Результаты);
Исключение
СерверныеОповещенияКлиент.ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
СерверныеОповещенияКлиент.ДобавитьПоказатель(МоментНачала,
"СтандартныеПодсистемыКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере");
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
МодульЦентрМониторингаКлиентСлужебный = ОбщегоНазначенияКлиент.ОбщийМодуль("ЦентрМониторингаКлиентСлужебный");
МодульЦентрМониторингаКлиентСлужебный.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(Результаты);
КонецЕсли;
Исключение
СерверныеОповещенияКлиент.ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
СерверныеОповещенияКлиент.ДобавитьПоказатель(МоментНачала,
"ЦентрМониторингаКлиентСлужебный.ПослеПериодическогоПолученияДанныхКлиентаНаСервере");
КонецПроцедуры
@@ -0,0 +1,24 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс
// Список таблиц, которые не входят в выгрузку и загрузку данных Odata, но права на которые
// необходимы для записи таблиц, включенных в интерфейс Odata.
//
// Параметры:
// Таблицы - Массив из Строка - полное имя объекта метаданных.
//
Процедура ПриЗаполненииЗависимыхТаблицДляВыгрузкиЗагрузкиOData(Таблицы) Экспорт
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e8cc4e0f-e9c2-4a24-a50e-f5be5ed21019">
<name>ИнтерфейсODataПереопределяемый</name>
<synonym>
<key>ru</key>
<value>Интерфейс o data переопределяемый</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>
@@ -168,15 +168,15 @@
ОбъектМетаданных = ОбъектМетаданных(ТекущийОбъект);
СуффиксТекущегоЯзыка = СуффиксТекущегоЯзыка();
ИменаМультиязычныхРеквизитов = Новый Соответствие;
ИменаМультиязычныхРеквизитовВШапке = Новый Соответствие;
Если МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных) Тогда
Если Не ОбщегоНазначения.ЭтоРегистр(ОбъектМетаданных) И ТекущийОбъект.ЭтоНовый() Тогда
ИменаМультиязычныхРеквизитов = НаименованияЛокализуемыхРеквизитовОбъектаВШапке(ОбъектМетаданных);
ИменаМультиязычныхРеквизитовВШапке = НаименованияЛокализуемыхРеквизитовОбъектаВШапке(ОбъектМетаданных);
Для Каждого Реквизит Из ИменаМультиязычныхРеквизитов Цикл
Для Каждого Реквизит Из ИменаМультиязычныхРеквизитовВШапке Цикл
ЗначениеРеквизита = ТекущийОбъект[Реквизит.Ключ];
Если ПустаяСтрока(ЗначениеРеквизита) Тогда
@@ -199,9 +199,9 @@
Возврат;
КонецЕсли;
ИменаМультиязычныхРеквизитов = НаименованияЛокализуемыхРеквизитовОбъектаВШапке(ОбъектМетаданных);
ИменаМультиязычныхРеквизитовВШапке = НаименованияЛокализуемыхРеквизитовОбъектаВШапке(ОбъектМетаданных);
Для Каждого Реквизит Из ИменаМультиязычныхРеквизитов Цикл
Для Каждого Реквизит Из ИменаМультиязычныхРеквизитовВШапке Цикл
Значение = ТекущийОбъект[Реквизит.Ключ];
ТекущийОбъект[Реквизит.Ключ] = ТекущийОбъект[Реквизит.Ключ + СуффиксТекущегоЯзыка];
@@ -238,7 +238,7 @@
Для каждого ИмяРеквизита Из Реквизиты Цикл
Если ИменаМультиязычныхРеквизитов[ИмяРеквизита] <> Неопределено Тогда
Если ИменаМультиязычныхРеквизитовВШапке[ИмяРеквизита] <> Неопределено Тогда
ЗначениеНаТекущемЯзыке = ТекущийОбъект[ИмяРеквизита + СуффиксТекущегоЯзыка()];
Если ПустаяСтрока(ЗначениеНаТекущемЯзыке) Тогда
@@ -258,17 +258,19 @@
Отбор.КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
НайденныеСтроки = Представления.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
Для каждого ИмяРеквизита Из Реквизиты Цикл
ТекущийОбъект[ИмяРеквизита] = НайденныеСтроки[0][ИмяРеквизита];
Для каждого ИмяРеквизита Из Реквизиты Цикл
Если ИменаМультиязычныхРеквизитовВШапке[ИмяРеквизита] = Неопределено Тогда
ТекущийОбъект[ИмяРеквизита] = НайденныеСтроки[0][ИмяРеквизита];
КонецЕсли;
КонецЦикла;
Представления.Удалить(НайденныеСтроки[0]);
КонецЕсли;
Представления.Свернуть("КодЯзыка", СтрСоединить(Реквизиты, ","));
Если ИменаМультиязычныхРеквизитов.Количество() > 0 Тогда
СкопироватьМультиязычныеЗначенияВРеквизитыШапки(ТекущийОбъект, ИменаМультиязычныхРеквизитов, КодПервогоДополнительногоЯзыкаИнформационнойБазы());
СкопироватьМультиязычныеЗначенияВРеквизитыШапки(ТекущийОбъект, ИменаМультиязычныхРеквизитов, КодВторогоДополнительногоЯзыкаИнформационнойБазы());
Если ИменаМультиязычныхРеквизитовВШапке.Количество() > 0 Тогда
СкопироватьМультиязычныеЗначенияВРеквизитыШапки(ТекущийОбъект, ИменаМультиязычныхРеквизитовВШапке, КодПервогоДополнительногоЯзыкаИнформационнойБазы());
СкопироватьМультиязычныеЗначенияВРеквизитыШапки(ТекущийОбъект, ИменаМультиязычныхРеквизитовВШапке, КодВторогоДополнительногоЯзыкаИнформационнойБазы());
КонецЕсли;
КонецПроцедуры
@@ -296,10 +298,10 @@
СуффиксТекущегоЯзыка = СуффиксТекущегоЯзыка();
ИменаЛокализуемыхРеквизитов = НаименованияЛокализуемыхРеквизитовОбъектаВШапке(ОбъектМетаданных);
Если МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных) И ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда
ИменаЛокализуемыхРеквизитов = НаименованияЛокализуемыхРеквизитовОбъектаВШапке(ОбъектМетаданных);
Для Каждого Реквизит Из ИменаЛокализуемыхРеквизитов Цикл
Значение = Объект[Реквизит.Ключ];
@@ -312,8 +314,6 @@
КонецЦикла;
Возврат;
КонецЕсли;
Если Не ОбъектСодержитТЧПредставления(ОбъектМетаданных.ПолноеИмя()) Тогда
@@ -1512,7 +1512,7 @@
КонецФункции
Функция НаименованияЛокализуемыхРеквизитовОбъектаВШапке(ОбъектМетаданных, Префикс = "")
Функция НаименованияЛокализуемыхРеквизитовОбъектаВШапке(ОбъектМетаданных, Префикс = "") Экспорт
СписокРеквизитовОбъекта = Новый Соответствие;
Если МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных) Тогда
@@ -2116,9 +2116,10 @@
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта); // ОбъектМетаданныхСправочник, ОбъектМетаданныхДокумент
ИмяИзмеренияДляОтбора = ДополнительныеПараметры.ИмяИзмеренияДляОтбора;
ОтложенноеОбновлениеЗавершеноУспешно = ПолучитьФункциональнуюОпцию("ОтложенноеОбновлениеЗавершеноУспешно");
Если ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(МетаданныеОбъекта) Тогда
Если ПолучитьФункциональнуюОпцию("ОтложенноеОбновлениеЗавершеноУспешно") Тогда
Если ОтложенноеОбновлениеЗавершеноУспешно Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| &ПустоеЗначение КАК Ссылка
@@ -2146,7 +2147,7 @@
ИменаИзмерений = Новый Массив;
ПсевдонимыИзмерений = Новый Массив;
Если ПолучитьФункциональнуюОпцию("ОтложенноеОбновлениеЗавершеноУспешно") Тогда
Если ОтложенноеОбновлениеЗавершеноУспешно Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| &ТекстВыборкиИзмерений
@@ -2205,7 +2206,7 @@
ИначеЕсли ОбщегоНазначения.ЭтоРегистр(МетаданныеОбъекта) Тогда
Если ПолучитьФункциональнуюОпцию("ОтложенноеОбновлениеЗавершеноУспешно") Тогда
Если ОтложенноеОбновлениеЗавершеноУспешно Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| &ПустоеЗначение КАК Регистратор
@@ -2239,7 +2240,7 @@
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если Не ПолучитьФункциональнуюОпцию("ОтложенноеОбновлениеЗавершеноУспешно") Тогда
Если Не ОтложенноеОбновлениеЗавершеноУспешно Тогда
Если Очередь = Неопределено Тогда
УсловиеОтбораУзла = " ТаблицаИзменений.Узел ССЫЛКА ПланОбмена.ОбновлениеИнформационнойБазы ";
@@ -45,7 +45,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.7.357";
Описание.Версия = "3.1.7.369";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -340,36 +340,52 @@
// Пользователь - СправочникСсылка.Пользователи
// - СправочникОбъект.Пользователи
//
// Возвращаемое значение:
// ПользовательСистемыВзаимодействия
// ТолькоИдентификатор - Булево - если указать Истина, то возвращается не пользователь,
// а идентификатор пользователя, что быстрее.
//
Функция ПользовательСистемыВзаимодействия(Пользователь) Экспорт
Результат = Неопределено;
// Возвращаемое значение:
// ПользовательСистемыВзаимодействия - если ТолькоИдентификатор = Ложь.
// ИдентификаторПользователяСистемыВзаимодействия - если ТолькоИдентификатор = Истина.
//
Функция ПользовательСистемыВзаимодействия(Пользователь, ТолькоИдентификатор = Ложь) Экспорт
УстановитьПривилегированныйРежим(Истина);
ИдентификаторПользователяИнформационнойБазы = ?(ТипЗнч(Пользователь) = Тип("СправочникОбъект.Пользователи"),
Пользователь.ИдентификаторПользователяИБ,
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Пользователь, "ИдентификаторПользователяИБ"));
УстановитьПривилегированныйРежим(Ложь);
Если Не ЗначениеЗаполнено(ИдентификаторПользователяИнформационнойБазы) Тогда
Если Пользователь = Пользователи.СсылкаНеуказанногоПользователя() Тогда
ИдентификаторПользователяИнформационнойБазы = ПользователиИнформационнойБазы.НайтиПоИмени("").УникальныйИдентификатор;
Иначе
ШаблонОшибки = НСтр("ru='Не удалось получить идентификатор пользователя (%1)'");
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонОшибки,
Строка(Пользователь));
ВызватьИсключение ОписаниеОшибки;
ЭтоТекущийПользователь = Пользователь = Пользователи.АвторизованныйПользователь();
Если ЭтоТекущийПользователь Тогда
ИдентификаторПользователяИнформационнойБазы = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор;
Иначе
УстановитьПривилегированныйРежим(Истина);
ИдентификаторПользователяИнформационнойБазы = ?(ТипЗнч(Пользователь) = Тип("СправочникОбъект.Пользователи"),
Пользователь.ИдентификаторПользователяИБ,
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Пользователь, "ИдентификаторПользователяИБ"));
УстановитьПривилегированныйРежим(Ложь);
Если Не ЗначениеЗаполнено(ИдентификаторПользователяИнформационнойБазы) Тогда
Если Пользователь = Пользователи.СсылкаНеуказанногоПользователя() Тогда
ИдентификаторПользователяИнформационнойБазы = ПользователиИнформационнойБазы.НайтиПоИмени("").УникальныйИдентификатор;
Иначе
ШаблонОшибки = НСтр("ru='Не удалось получить идентификатор пользователя (%1)'");
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонОшибки,
Строка(Пользователь));
ВызватьИсключение ОписаниеОшибки;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Результат = Неопределено;
ОшибкаПолучениеИдентификатораСВ = "";
Попытка
ИдентификаторПользователяСВ = СистемаВзаимодействия.ПолучитьИдентификаторПользователя(
ИдентификаторПользователяИнформационнойБазы);
Если ЭтоТекущийПользователь Тогда
ИдентификаторПользователяСВ = СистемаВзаимодействия.ИдентификаторТекущегоПользователя();
Иначе
ИдентификаторПользователяСВ = СистемаВзаимодействия.ПолучитьИдентификаторПользователя(
ИдентификаторПользователяИнформационнойБазы);
КонецЕсли;
Если ТолькоИдентификатор Тогда
Возврат ИдентификаторПользователяСВ;
КонецЕсли;
Результат = СистемаВзаимодействия.ПолучитьПользователя(ИдентификаторПользователяСВ);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
@@ -420,7 +436,12 @@
КонецЕсли;
Если ТолькоИдентификатор Тогда
Возврат Результат.Идентификатор;
КонецЕсли;
Возврат Результат;
КонецФункции
// Обновляет дополнительную информацию пользователя системы взаимодействия.
@@ -336,7 +336,7 @@
// "СтандартныеПодсистемы.ЗавершениеРаботыПользователей.БлокировкаСеансов");
// Оповещение.ИмяМодуляОтправки = "СоединенияИБ";
// Оповещение.ИмяМодуляПолучения = "СоединенияИБКлиент";
// Оповещение.ПериодПроверки = 60;
// Оповещение.ПериодПроверки = 300;
//
// Оповещения.Вставить(Оповещение.Имя, Оповещение);
//
@@ -594,7 +594,7 @@
//
Функция ПериодЗаписи() Экспорт
ТекущийПериод = Константы.ОценкаПроизводительностиПериодЗаписи.Получить();
Возврат ?(ТекущийПериод >= 1, ТекущийПериод, 60);
Возврат ?(ТекущийПериод > 60, ТекущийПериод, 60);
КонецФункции
// Процедура записи единичного замера
@@ -11,13 +11,17 @@
// Функция записи массива замеров
//
// Параметры:
// Замеры - Массив из Структура
// Замеры - Структура:
// * ЗамерыЗавершенные - Массив из Структура
// * ИнформацияПрограммыПросмотра - Строка
//
// Возвращаемое значение:
// Число - текущее значение периода записи замеров на сервере в секундах в случае записи замеров.
//
Функция ЗафиксироватьДлительностьКлючевыхОпераций(ЗамерыДляЗаписи) Экспорт
УстановитьПривилегированныйРежим(Истина);
ПериодЗаписи = ОценкаПроизводительности.ПериодЗаписи();
Если МонопольныйРежим() Тогда
@@ -31,8 +35,6 @@
Замеры = ЗамерыДляЗаписи.ЗамерыЗавершенные;
ИнформацияПрограммыПросмотра = ЗамерыДляЗаписи.ИнформацияПрограммыПросмотра;
УстановитьПривилегированныйРежим(Истина);
НаборЗаписей = РегистрыСведений.ЗамерыВремени.СоздатьНаборЗаписей();
НаборЗаписейТехнологический = РегистрыСведений.ЗамерыВремениТехнологические.СоздатьНаборЗаписей();
НомерСеанса = НомерСеансаИнформационнойБазы();
@@ -194,8 +196,7 @@
Параметры.ДатаИВремяНаСервере = ТекущаяУниверсальнаяДатаВМиллисекундах();
УстановитьПривилегированныйРежим(Истина);
ТекущийПериод = Константы.ОценкаПроизводительностиПериодЗаписи.Получить();
Параметры.ПериодЗаписи = ?(ТекущийПериод >= 1, ТекущийПериод, 60);
Параметры.ПериодЗаписи = ОценкаПроизводительности.ПериодЗаписи();
Возврат Параметры;
@@ -433,6 +433,30 @@
КонецПроцедуры
// См. ОбщегоНазначенияКлиентПереопределяемый.ПередПериодическойОтправкойДанныхКлиентаНаСервер
Процедура ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры) Экспорт
ПараметрыКлиента = ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыКлиента"];
Если ПараметрыКлиента = Неопределено
Или Не ПараметрыКлиента.Свойство("ОценкаПроизводительности") Тогда
Возврат;
КонецЕсли;
ПериодЗаписи = ПараметрыКлиента.ОценкаПроизводительности.ПериодЗаписи;
Если Не СерверныеОповещенияКлиент.ЗакончилосьВремяОжидания("СтандартныеПодсистемы.ОценкаПроизводительности", ПериодЗаписи, Истина) Тогда
Возврат;
КонецЕсли;
ЗамерыДляЗаписи = ЗамерыДляЗаписи();
Если ЗамерыДляЗаписи = Неопределено
Или Не ЗначениеЗаполнено(ЗамерыДляЗаписи.ЗамерыЗавершенные) Тогда
Возврат;
КонецЕсли;
Параметры.Вставить("СтандартныеПодсистемы.ОценкаПроизводительности.ЗамерыДляЗаписи", ЗамерыДляЗаписи);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -520,13 +544,12 @@
ДатаИВремяНаКлиенте = ТекущаяУниверсальнаяДатаВМиллисекундах();
ПараметрыПриложения[ИмяПараметра].Вставить("СмещениеДатыКлиента", ДатаИВремяНаСервере - ДатаИВремяНаКлиенте);
Иначе
ТекущийПериодЗаписи = Неопределено; // Смотри ПередПериодическойОтправкойДанныхКлиентаНаСервер.
ПараметрыПриложенияСтандартныеПодсистемы = ПараметрыПриложения[ИмяПараметраСтандартныеПодсистемы];
Если ПараметрыПриложенияСтандартныеПодсистемы.Свойство("ОценкаПроизводительности") Тогда
ТекущийПериодЗаписи = ПараметрыПриложенияСтандартныеПодсистемы["ОценкаПроизводительности"]["ПериодЗаписи"];
ПараметрыПриложения[ИмяПараметра].Вставить("СмещениеДатыКлиента", ПараметрыПриложенияСтандартныеПодсистемы["СмещениеДатыКлиента"]);
Иначе
ПараметрыОценкиПроизводительности = ОценкаПроизводительностиВызовСервера.ПолучитьПараметрыНаСервере();
ТекущийПериодЗаписи = ПараметрыОценкиПроизводительности.ПериодЗаписи;
ДатаИВремяНаСервере = ПараметрыОценкиПроизводительности.ДатаИВремяНаСервере;
// Получаем дату в UTC
@@ -547,8 +570,9 @@
ИнформацияПрограммыПросмотра = ИнфоКлиента.ИнформацияПрограммыПросмотра;
#КонецЕсли
ПараметрыПриложения[ИмяПараметра].Вставить("ИнформацияПрограммыПросмотра", ИнформацияПрограммыПросмотра);
ПодключитьОбработчикОжидания("ЗаписатьРезультатыАвто", ТекущийПериодЗаписи, Истина);
Если ТекущийПериодЗаписи <> Неопределено Тогда
ПодключитьОбработчикОжидания("ЗаписатьРезультатыАвто", ТекущийПериодЗаписи, Истина);
КонецЕсли;
КонецЕсли;
// Фактическое начало замера времени на клиенте.
@@ -683,6 +707,22 @@
//
Процедура ЗаписатьРезультатыАвтоНеГлобальный(ПередЗавершением = Ложь) Экспорт
ЗамерыДляЗаписи = ЗамерыДляЗаписи();
Если ЗамерыДляЗаписи <> Неопределено Тогда
НовыйПериодЗаписи = ОценкаПроизводительностиВызовСервера.ЗафиксироватьДлительностьКлючевыхОпераций(ЗамерыДляЗаписи);
ИмяПараметраСтандартныеПодсистемы = "СтандартныеПодсистемы.ПараметрыКлиента";
Если ПараметрыПриложения[ИмяПараметраСтандартныеПодсистемы] = Неопределено Тогда
// Смотри также ПередПериодическойОтправкойДанныхКлиентаНаСервер.
ПодключитьОбработчикОжидания("ЗаписатьРезультатыАвто", НовыйПериодЗаписи, Истина);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ЗамерыДляЗаписи()
ОценкаПроизводительностиЗамерВремени = ПараметрыПриложения["СтандартныеПодсистемы.ОценкаПроизводительностиЗамерВремени"];
Если ОценкаПроизводительностиЗамерВремени <> Неопределено Тогда
@@ -692,11 +732,12 @@
ЗамерыДляЗаписи = Новый Структура;
ЗамерыДляЗаписи.Вставить("ЗамерыЗавершенные", ЗамерыЗавершенные);
ЗамерыДляЗаписи.Вставить("ИнформацияПрограммыПросмотра", ОценкаПроизводительностиЗамерВремени["ИнформацияПрограммыПросмотра"]);
НовыйПериодЗаписи = ОценкаПроизводительностиВызовСервера.ЗафиксироватьДлительностьКлючевыхОпераций(ЗамерыДляЗаписи);
ПодключитьОбработчикОжидания("ЗаписатьРезультатыАвто", НовыйПериодЗаписи, Истина);
Возврат ЗамерыДляЗаписи;
КонецЕсли;
КонецПроцедуры
Возврат Неопределено;
КонецФункции
#КонецОбласти
@@ -112,8 +112,7 @@
ПараметрыРаботыКлиента = Новый Структура("ПериодЗаписи, ВыполнятьЗамерыПроизводительности");
УстановитьПривилегированныйРежим(Истина);
ТекущийПериод = Константы.ОценкаПроизводительностиПериодЗаписи.Получить();
ПараметрыРаботыКлиента.ПериодЗаписи = ?(ТекущийПериод >= 1, ТекущийПериод, 60);
ПараметрыРаботыКлиента.ПериодЗаписи = ОценкаПроизводительности.ПериодЗаписи();
ПараметрыРаботыКлиента.ВыполнятьЗамерыПроизводительности = Константы.ВыполнятьЗамерыПроизводительности.Получить();
Параметры.Вставить("ОценкаПроизводительности", Новый ФиксированнаяСтруктура(ПараметрыРаботыКлиента));
@@ -126,6 +125,18 @@
МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ОценкаПроизводительности);
КонецПроцедуры
// См. ОбщегоНазначенияПереопределяемый.ПриПериодическомПолученииДанныхКлиентаНаСервере
Процедура ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты) Экспорт
ЗамерыДляЗаписи = Параметры.Получить("СтандартныеПодсистемы.ОценкаПроизводительности.ЗамерыДляЗаписи");
Если ЗамерыДляЗаписи = Неопределено Тогда
Возврат;
КонецЕсли;
ОценкаПроизводительностиВызовСервера.ЗафиксироватьДлительностьКлючевыхОпераций(ЗамерыДляЗаписи);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -359,7 +359,7 @@
КонецЕсли;
Если Адрес.Свойство("Buildings") И Адрес.Buildings.Количество() > 0 Тогда
Если Адрес.Свойство("buildings") И Адрес.Buildings.Количество() > 0 Тогда
Для каждого Строение Из Адрес.Buildings Цикл
Если ЗначениеЗаполнено(Строение.Number) Тогда
@@ -371,7 +371,7 @@
КонецЕсли;
Если Адрес.Свойство("Apartments")
Если Адрес.Свойство("apartments")
И Адрес.Apartments <> Неопределено
И Адрес.Apartments.Количество() > 0 Тогда
@@ -710,8 +710,11 @@
Функция ПредставлениеУровняАдреса(Адрес, ИмяУровня) Экспорт
Если ЭтоИмяУровняРегиона(ИмяУровня) И ЗначениеЗаполнено(Адрес["areaValue"]) Тогда
Возврат Адрес["areaValue"];
Если (ЭтоМуниципальныйАдрес(Адрес.addressType)
Или ЭтоАдминистративноТерриториальныйАдрес(Адрес.addressType))
И ЭтоИмяУровняРегиона(ИмяУровня)
И ЗначениеЗаполнено(Адрес["areaValue"]) Тогда
Возврат Адрес["areaValue"];
КонецЕсли;
Возврат УправлениеКонтактнойИнформациейКлиентСервер.СоединитьНаименованиеИТипАдресногоОбъекта(
@@ -1193,9 +1193,11 @@
// ИмяРабочегоКаталога - Строка - рабочий каталог.
// МассивФайловВРабочемКаталогеДляУдаления - Массив - файлы, которые надо удалить из регистра.
// МассивОтпечатков - Массив - массив отпечатков сертификатов, использованных для шифрования.
// СведенияОФайлеДляЗаписи - см. РаботаСФайламиКлиентСервер.СведенияОФайле, Неопределено - по умолчанию Неопределено,
// структура используется только при синхронизации с облаком.
//
Процедура ЗаписатьИнформациюОШифровании(ФайлСсылка, Зашифровать, МассивДанныхДляЗанесенияВБазу, УникальныйИдентификатор,
ИмяРабочегоКаталога, МассивФайловВРабочемКаталогеДляУдаления, МассивОтпечатков, СведенияОФайле = Неопределено) Экспорт
ИмяРабочегоКаталога, МассивФайловВРабочемКаталогеДляУдаления, МассивОтпечатков, СведенияОФайлеДляЗаписи = Неопределено) Экспорт
НачатьТранзакцию();
Попытка
@@ -1230,19 +1232,25 @@
РаботаСФайламиСлужебныйВызовСервера.УдалитьИзРегистра(ВерсияСсылка);
Если СведенияОФайле = Неопределено Тогда
Если СведенияОФайлеДляЗаписи = Неопределено Тогда
РеквизитыВерсии = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВерсияСсылка, "Наименование, Комментарий,
|Расширение, ДатаСоздания, ДатаМодификацииУниверсальная, Размер");
СведенияОФайле = РаботаСФайламиКлиентСервер.СведенияОФайле("ФайлСВерсией");
СведенияОФайле.ИмяБезРасширения = ВерсияСсылка.Наименование;
СведенияОФайле.Комментарий = ВерсияСсылка.Комментарий;
СведенияОФайле.ИмяБезРасширения = РеквизитыВерсии.Наименование;
СведенияОФайле.Комментарий = РеквизитыВерсии.Комментарий;
СведенияОФайле.АдресВременногоХранилищаФайла = АдресВременногоХранилища;
СведенияОФайле.РасширениеБезТочки = ВерсияСсылка.Расширение;
СведенияОФайле.ВремяИзменения = ВерсияСсылка.ДатаСоздания;
СведенияОФайле.ВремяИзмененияУниверсальное = ВерсияСсылка.ДатаМодификацииУниверсальная;
СведенияОФайле.Размер = ВерсияСсылка.Размер;
СведенияОФайле.ВремяИзмененияУниверсальное = ВерсияСсылка.ДатаМодификацииУниверсальная;
СведенияОФайле.РасширениеБезТочки = РеквизитыВерсии.Расширение;
СведенияОФайле.ВремяИзменения = РеквизитыВерсии.ДатаСоздания;
СведенияОФайле.ВремяИзмененияУниверсальное = РеквизитыВерсии.ДатаМодификацииУниверсальная;
СведенияОФайле.Размер = РеквизитыВерсии.Размер;
СведенияОФайле.ВремяИзмененияУниверсальное = РеквизитыВерсии.ДатаМодификацииУниверсальная;
СведенияОФайле.НовыйСтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.НеИзвлечен;
СведенияОФайле.Зашифрован = Зашифровать;
СведенияОФайле.ХранитьВерсии = Ложь;
Иначе
СведенияОФайле = СведенияОФайлеДляЗаписи;
КонецЕсли;
// @skip-check query-in-loop - По-объектная запись данных.
ОбновитьВерсиюФайла(ФайлСсылка, СведенияОФайле, ВерсияСсылка, УникальныйИдентификатор);
File diff suppressed because it is too large. Load diff
@@ -6,6 +6,126 @@
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс
// Проверка завершения периодического ожидания для обработчиков
// события ПередПериодическойОтправкойДанныхКлиентаНаСервер.
//
// Параметры:
// ИмяСчетчика - Строка - например, "СтандартныеПодсистемы.ЦентрМониторинга".
// ВремяОжидания - Число - количество секунд ожидания до срабатывания счетчика.
// ПервыйРаз - Булево - если Истина, то возвращает Истина после инициализации.
// ДатаСеанса - Дата - возвращаемое значение (если требуется нестандартный счетчик).
//
// Возвращаемое значение:
// Булево - Истина, если закончилось время с последнего отсчета и начат новый отсчет.
//
// Пример:
// ИмяСчетчика = "СтандартныеПодсистемы.ЦентрМониторинга";
// Если Не СерверныеОповещенияКлиент.ЗакончилосьВремяОжидания(ИмяСчетчика) Тогда
// Возврат;
// КонецЕсли;
//
Функция ЗакончилосьВремяОжидания(ИмяСчетчика, ВремяОжидания = 1200, ПервыйРаз = Ложь, ДатаСеанса = '00010101') Экспорт
СостояниеПолучения = СостояниеПолучения();
ДатаСеанса = СостояниеПолучения.ТекущаяДатаСеансаДляПроверкиСчетчиковОжидания;
Если Не ЗначениеЗаполнено(ИмяСчетчика) Тогда
Возврат Ложь;
КонецЕсли;
СчетчикиОжидания = СостояниеПолучения.СчетчикиОжидания;
ПоследняяДата = СчетчикиОжидания.Получить(ИмяСчетчика);
Если ПоследняяДата = Неопределено Тогда
СчетчикиОжидания.Вставить(ИмяСчетчика, ДатаСеанса);
Возврат ПервыйРаз;
КонецЕсли;
Если ПоследняяДата + ВремяОжидания > ДатаСеанса Тогда
Возврат Ложь;
КонецЕсли;
СчетчикиОжидания.Вставить(ИмяСчетчика, ДатаСеанса);
Возврат Истина;
КонецФункции
// Регистрирует ошибку в журнале регистрации, пойманную в обработчиках событий
// ПередПериодическойОтправкойДанныхКлиентаНаСервер и
// ПослеПериодическогоПолученияДанныхКлиентаНаСервере.
//
// Параметры:
// ИнформацияОбОшибке - ИнформацияОбОшибке
//
// Пример:
// МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
// Попытка
// Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
// МодульЦентрМониторингаКлиентСлужебный = ОбщегоНазначенияКлиент.ОбщийМодуль("ЦентрМониторингаКлиентСлужебный");
// МодульЦентрМониторингаКлиентСлужебный.ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры);
// КонецЕсли;
// Исключение
// СерверныеОповещенияКлиент.ОбработатьОшибку(ИнформацияОбОшибке());
// КонецПопытки;
// СерверныеОповещенияКлиент.ДобавитьПоказатель(МоментНачала,
// "ЦентрМониторингаКлиентСлужебный.ПередПериодическойОтправкойДанныхКлиентаНаСервер");
//
Процедура ОбработатьОшибку(ИнформацияОбОшибке) Экспорт
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
НСтр("ru = 'Серверные оповещения.Ошибка получения или обработки оповещений'",
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
"Ошибка",
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
КонецПроцедуры
// Добавляет показатель производительности в обработчиках событий
// ПередПериодическойОтправкойДанныхКлиентаНаСервер и
// ПослеПериодическогоПолученияДанныхКлиентаНаСервере.
//
// Параметры:
// МоментНачала - Число - ТекущаяУниверсальнаяДатаВМиллисекундах перед вызовом процедуры.
// ИмяПроцедуры - Строка - полное имя вызываемой процедуры
//
// Пример:
// МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
// Попытка
// Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
// МодульЦентрМониторингаКлиентСлужебный = ОбщегоНазначенияКлиент.ОбщийМодуль("ЦентрМониторингаКлиентСлужебный");
// МодульЦентрМониторингаКлиентСлужебный.ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры);
// КонецЕсли;
// Исключение
// СерверныеОповещенияКлиент.ОбработатьОшибку(ИнформацияОбОшибке());
// КонецПопытки;
// СерверныеОповещенияКлиент.ДобавитьПоказатель(МоментНачала,
// "ЦентрМониторингаКлиентСлужебный.ПередПериодическойОтправкойДанныхКлиентаНаСервер");
//
Процедура ДобавитьПоказатель(МоментНачала, ИмяПроцедуры) Экспорт
Показатели = ПараметрыПриложения.Получить(ИмяПараметраВложенныхПоказателей());
ДобавитьОсновнойПоказатель(Показатели, МоментНачала, ИмяПроцедуры, , Истина);
КонецПроцедуры
#Область ДляВызоваИзДругихПодсистем
// Возвращает строковый уникальный ключ текущего сеанса,
// полученный из свойств сеанса НачалоСеанса и НомерСеанса.
//
// Возвращаемое значение:
// см. СерверныеОповещения.КлючСеанса
//
Функция КлючСеанса() Экспорт
Возврат СостояниеПолучения().КлючСеанса;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Параметры:
@@ -44,7 +164,9 @@
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
СостояниеПолучения.ДатаОбновленияСостояния = ДатаСеанса;
СостояниеПолучения.ДатаПоследнегоПолученияСообщения = ДатаСеанса;
СостояниеПолучения.ДатаПоследнейПериодическойОтправкиДанных = ДатаСеанса;
СостояниеПолучения.ДатаПоследнегоСерверногоВызова = ДатаСеанса;
СостояниеПолучения.ЧислоСекундВыравниванияДатыСчетчиковОжидания = Секунда(ДатаСеанса);
СостояниеПолучения.ТекущаяДатаСеансаДляПроверкиСчетчиковОжидания = ДатаСеанса;
СостояниеПолучения.ПроверкаРазрешена = Истина;
ПодключитьОбработчикПроверкиПолученияСерверныхОповещений();
@@ -55,11 +177,6 @@
Процедура ПослеНачалаРаботыСистемы() Экспорт
СостояниеПолучения = СостояниеПолучения();
Если СостояниеПолучения.СеансАдминистратораСервиса Тогда
Возврат;
КонецЕсли;
СостояниеПолучения.ПериодическаяОтправкаДанныхРазрешена = Истина;
КонецПроцедуры
@@ -70,40 +187,116 @@
Процедура ПроверитьПолучитьСерверныеОповещения() Экспорт
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
СостояниеПолучения = СостояниеПолучения();
Показатели = ?(СостояниеПолучения.РегистрироватьПоказатели, Новый Массив, Неопределено);
Если Показатели <> Неопределено Тогда
Если ПараметрыПриложения = Неопределено Тогда
ПараметрыПриложения = Новый Соответствие;
КонецЕсли;
ПараметрыПриложения.Вставить(ИмяПараметраВложенныхПоказателей(), Новый Массив);
КонецЕсли;
ПроверитьПолучитьСерверныеОповещенияСПоказателями(СостояниеПолучения, Показатели);
ДобавитьОсновнойПоказатель(Показатели, МоментНачала,
"СерверныеОповещенияКлиент.ПроверитьПолучитьСерверныеОповещения", Истина);
КонецПроцедуры
Процедура ПроверитьПолучитьСерверныеОповещенияСПоказателями(СостояниеПолучения, Показатели);
Если Не СостояниеПолучения.ПроверкаРазрешена Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Соответствие;
ТекущаяДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
СостояниеПолучения.ТекущаяДатаСеансаДляПроверкиСчетчиковОжидания = НачалоМинуты(ТекущаяДатаСеанса)
+ СостояниеПолучения.ЧислоСекундВыравниванияДатыСчетчиковОжидания
- ?(Секунда(ТекущаяДатаСеанса) < СостояниеПолучения.ЧислоСекундВыравниванияДатыСчетчиковОжидания, 60, 0);
Интервал = СостояниеПолучения.МинимальныйПериод;
ОбсужденияАктивны = СостояниеПолучения.СистемаВзаимодействийПодключена
И СостояниеПолучения.ОбработчикНовыхЛичныхСообщенийПодключен
И СостояниеПолучения.ДатаПоследнегоПолученияСообщения + 60 > ОбщегоНазначенияКлиент.ДатаСеанса();
И СостояниеПолучения.ДатаПоследнегоПолученияСообщения + 60 > ТекущаяДатаСеанса;
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
ДлительныеОперацииКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер(ДополнительныеПараметры,
ОбсужденияАктивны, Интервал);
Исключение
ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
ДобавитьОсновнойПоказатель(Показатели, МоментНачала,
"ДлительныеОперацииКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер");
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
ОповещенияПолучены = ОповещенияПолучены(СостояниеПолучения);
ДобавитьОсновнойПоказатель(Показатели, МоментНачала, "СерверныеОповещенияКлиент.ОповещенияПолучены");
ДополнительныеПараметры = Новый Соответствие;
ИмяКлючаПараметровОбсуждений = "СтандартныеПодсистемы.БазоваяФункциональность.ИдентификаторыОбсуждений";
ПериодическаяОтправкаДанных = ЗакончилосьВремяОжидания(
"СтандартныеПодсистемы.БазоваяФункциональность.СерверныеОповещения.ПериодическаяОтправкаДанных",
СостояниеПолучения.МинимальныйИнтервалПериодическойОтправкиДанных * 60);
ДлительныеОперацииКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер(ДополнительныеПараметры,
ОбсужденияАктивны, Интервал);
ТекущаяДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
ПериодическаяОтправкаДанных = Ложь;
Если СостояниеПолучения.ДатаПоследнейПериодическойОтправкиДанных + 60 < ТекущаяДатаСеанса Тогда
Если ПериодическаяОтправкаДанных Тогда
Если СостояниеПолучения.ПериодическаяОтправкаДанныхРазрешена Тогда
ИнтеграцияПодсистемБСПКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер(ДополнительныеПараметры);
ОбщегоНазначенияКлиентПереопределяемый.ПередПериодическойОтправкойДанныхКлиентаНаСервер(ДополнительныеПараметры);
ПериодическаяОтправкаДанных = Истина;
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
ИнтеграцияПодсистемБСПКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер(
ДополнительныеПараметры);
Исключение
ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
ДобавитьОсновнойПоказатель(Показатели, МоментНачала,
"ИнтеграцияПодсистемБСПКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер");
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
ОбщегоНазначенияКлиентПереопределяемый.ПередПериодическойОтправкойДанныхКлиентаНаСервер(
ДополнительныеПараметры);
Исключение
ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
ДобавитьОсновнойПоказатель(Показатели, МоментНачала,
"ОбщегоНазначенияКлиентПереопределяемый.ПередПериодическойОтправкойДанныхКлиентаНаСервер");
КонецЕсли;
СостояниеПолучения.ДатаПоследнейПериодическойОтправкиДанных = ТекущаяДатаСеанса;
СообщенияДляЖурналаРегистрации = ПараметрыПриложения["СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации"];
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда
МодульСоединенияИБКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СоединенияИБКлиент");
МодульСоединенияИБКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер(ДополнительныеПараметры,
ОповещенияПолучены);
КонецЕсли;
Исключение
ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
ДобавитьОсновнойПоказатель(Показатели, МоментНачала,
"СоединенияИБКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер");
ИмяПараметра = "СтандартныеПодсистемы.БазоваяФункциональность.СерверныеОповещения.ОбновлениеАктивностиСеанса";
Если ЗакончилосьВремяОжидания(ИмяПараметра) Тогда
ДополнительныеПараметры.Вставить(ИмяПараметра, Истина);
Если СостояниеПолучения.ИдентификаторЛичногоОбсуждения = Неопределено Тогда
ДополнительныеПараметры.Вставить(ИмяКлючаПараметровОбсуждений, Истина);
КонецЕсли;
КонецЕсли;
Если СостояниеПолучения.ИдентификаторЛичногоОбсуждения = Неопределено
И СистемаВзаимодействия.ИнформационнаяБазаЗарегистрирована() Тогда
ДополнительныеПараметры.Вставить(ИмяКлючаПараметровОбсуждений, Ложь);
И СостояниеПолучения.СистемаВзаимодействийПодключена
И ЗакончилосьВремяОжидания(ИмяКлючаПараметровОбсуждений, 300, Истина) Тогда
ДополнительныеПараметры.Вставить(ИмяКлючаПараметровОбсуждений, Истина);
КонецЕсли;
КонецЕсли;
Если ОповещенияПолучены(СостояниеПолучения)
Если СостояниеПолучения.ДатаПоследнегоСерверногоВызова + 60 < ТекущаяДатаСеанса Тогда
СообщенияДляЖурналаРегистрации = ПараметрыПриложения["СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации"];
КонецЕсли;
Если ОповещенияПолучены
И Не ЗначениеЗаполнено(ДополнительныеПараметры)
И Не ЗначениеЗаполнено(СообщенияДляЖурналаРегистрации) Тогда
@@ -111,57 +304,118 @@
Возврат;
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда
МодульСоединенияИБКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СоединенияИБКлиент");
МодульСоединенияИБКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер(ДополнительныеПараметры);
ПараметрыОбщегоВызова = НовыеПараметрыОбщегоСерверногоВызова();
ПараметрыОбщегоВызова.ДатаПоследнегоОповещения = СостояниеПолучения.ДатаПоследнегоОповещения;
Если ЗначениеЗаполнено(ДополнительныеПараметры) Тогда
ПараметрыОбщегоВызова.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
КонецЕсли;
Если ПериодическаяОтправкаДанных Тогда
ПараметрыОбщегоВызова.Вставить("ПериодическаяОтправкаДанных",
СостояниеПолучения.ПериодическаяОтправкаДанныхРазрешена);
КонецЕсли;
НовыеСообщения = ПараметрыПриложения["СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации"];
Если ЗначениеЗаполнено(НовыеСообщения) Тогда
ПараметрыОбщегоВызова.Вставить("СообщенияДляЖурналаРегистрации", НовыеСообщения);
КонецЕсли;
Если Показатели <> Неопределено Тогда
ПараметрыОбщегоВызова.Вставить("РегистрироватьПоказатели", Истина);
КонецЕсли;
ПараметрыОбщегоВызова = НовыеПараметрыОбщегоСерверногоВызова();
ПараметрыОбщегоВызова.ДатаПоследнегоОповещения = СостояниеПолучения.ДатаПоследнегоОповещения;
ПараметрыОбщегоВызова.МинимальныйПериодПроверки = СостояниеПолучения.МинимальныйПериод;
ПараметрыОбщегоВызова.ДополнительныеПараметры = ДополнительныеПараметры;
ПараметрыОбщегоВызова.ПериодическаяОтправкаДанных = ПериодическаяОтправкаДанных;
ПараметрыОбщегоВызова.СообщенияДляЖурналаРегистрации =
ПараметрыПриложения["СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации"];
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
РезультатОбщегоВызова = СерверныеОповещенияСлужебныйВызовСервера.НедоставленныеСерверныеОповещенияСеанса(
ПараметрыОбщегоВызова);
ДобавитьОсновнойПоказатель(Показатели, МоментНачала,
"СерверныеОповещенияСлужебныйВызовСервера.НедоставленныеСерверныеОповещенияСеанса");
Если ПараметрыОбщегоВызова.СообщенияДляЖурналаРегистрации <> Неопределено Тогда
ПараметрыОбщегоВызова.СообщенияДляЖурналаРегистрации.Очистить();
Если НовыеСообщения <> Неопределено Тогда
НовыеСообщения.Очистить();
КонецЕсли;
ДополнительныеРезультаты = РезультатОбщегоВызова.ДополнительныеРезультаты;
ИдентификаторыОбсуждений = ДополнительныеРезультаты.Получить(ИмяКлючаПараметровОбсуждений);
Если ИдентификаторыОбсуждений <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(СостояниеПолучения, ИдентификаторыОбсуждений);
ПодключитьОбработчикНовыхСообщений(СостояниеПолучения);
Если РезультатОбщегоВызова.Свойство("Показатели") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Показатели, РезультатОбщегоВызова.Показатели);
КонецЕсли;
Для Каждого СерверноеОповещение Из РезультатОбщегоВызова.СерверныеОповещения Цикл
ОбработатьСерверноеОповещениеНаКлиенте(СостояниеПолучения, СерверноеОповещение);
КонецЦикла;
ДлительныеОперацииКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(
ДополнительныеРезультаты, ОбсужденияАктивны, Интервал);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда
МодульСоединенияИБКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СоединенияИБКлиент");
МодульСоединенияИБКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(
ДополнительныеРезультаты);
Если РезультатОбщегоВызова.Свойство("СерверныеОповещения") Тогда
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Для Каждого СерверноеОповещение Из РезультатОбщегоВызова.СерверныеОповещения Цикл
ОбработатьСерверноеОповещениеНаКлиенте(СостояниеПолучения, СерверноеОповещение);
КонецЦикла;
ДобавитьОсновнойПоказатель(Показатели, МоментНачала,
"СерверныеОповещенияКлиент.ОбработатьСерверноеОповещениеНаКлиенте");
КонецЕсли;
ДополнительныеРезультаты = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(РезультатОбщегоВызова,
"ДополнительныеРезультаты", Новый Соответствие);
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
ДлительныеОперацииКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(
ДополнительныеРезультаты, ОбсужденияАктивны, Интервал);
Исключение
ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
ДобавитьОсновнойПоказатель(Показатели, МоментНачала,
"ДлительныеОперацииКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере");
Если ПериодическаяОтправкаДанных Тогда
ИнтеграцияПодсистемБСПКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(
ДополнительныеРезультаты);
ОбщегоНазначенияКлиентПереопределяемый.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(
ДополнительныеРезультаты);
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
ИнтеграцияПодсистемБСПКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(
ДополнительныеРезультаты);
Исключение
ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
ДобавитьОсновнойПоказатель(Показатели, МоментНачала,
"ИнтеграцияПодсистемБСПКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере");
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
ОбщегоНазначенияКлиентПереопределяемый.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(
ДополнительныеРезультаты);
Исключение
ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
ДобавитьОсновнойПоказатель(Показатели, МоментНачала,
"ОбщегоНазначенияКлиентПереопределяемый.ПослеПериодическогоПолученияДанныхКлиентаНаСервере");
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда
МодульСоединенияИБКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СоединенияИБКлиент");
МодульСоединенияИБКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(
ДополнительныеРезультаты);
КонецЕсли;
Исключение
ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
ДобавитьОсновнойПоказатель(Показатели, МоментНачала,
"СоединенияИБКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере");
ИдентификаторыОбсуждений = ДополнительныеРезультаты.Получить(ИмяКлючаПараметровОбсуждений);
Если ИдентификаторыОбсуждений <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(СостояниеПолучения, ИдентификаторыОбсуждений);
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
ПодключитьОбработчикНовыхСообщений(СостояниеПолучения);
ДобавитьОсновнойПоказатель(Показатели, МоментНачала,
"СерверныеОповещенияКлиент.ПодключитьОбработчикНовыхСообщений");
КонецЕсли;
Если РезультатОбщегоВызова.Свойство("РегистрироватьПоказатели") Тогда
СостояниеПолучения.РегистрироватьПоказатели = РезультатОбщегоВызова.РегистрироватьПоказатели;
КонецЕсли;
Если РезультатОбщегоВызова.Свойство("СистемаВзаимодействийПодключена") Тогда
СостояниеПолучения.СистемаВзаимодействийПодключена = РезультатОбщегоВызова.СистемаВзаимодействийПодключена;
КонецЕсли;
КонецЕсли;
СостояниеПолучения.ДатаПоследнегоОповещения = РезультатОбщегоВызова.ДатаПоследнегоОповещения;
СостояниеПолучения.МинимальныйПериод = РезультатОбщегоВызова.МинимальныйПериодПроверки;
СостояниеПолучения.СистемаВзаимодействийПодключена = РезультатОбщегоВызова.СистемаВзаимодействийПодключена;
СостояниеПолучения.ДатаОбновленияСостояния = ОбщегоНазначенияКлиент.ДатаСеанса();
Если РезультатОбщегоВызова.Свойство("ДатаПоследнегоОповещения") Тогда
СостояниеПолучения.ДатаПоследнегоОповещения = РезультатОбщегоВызова.ДатаПоследнегоОповещения;
КонецЕсли;
Если РезультатОбщегоВызова.Свойство("МинимальныйПериодПроверки") Тогда
СостояниеПолучения.МинимальныйПериод = РезультатОбщегоВызова.МинимальныйПериодПроверки;
КонецЕсли;
СостояниеПолучения.ДатаОбновленияСостояния = ОбщегоНазначенияКлиент.ДатаСеанса();
СостояниеПолучения.ДатаПоследнегоСерверногоВызова = СостояниеПолучения.ДатаОбновленияСостояния;
Если Интервал > СостояниеПолучения.МинимальныйПериод Тогда
Интервал = СостояниеПолучения.МинимальныйПериод;
@@ -171,6 +425,58 @@
КонецПроцедуры
Процедура ДобавитьОсновнойПоказатель(Показатели, МоментНачала, ИмяПроцедуры,
Общий = Ложь, Вложенный = Ложь, Длительность = 0)
Если Показатели = Неопределено Тогда
Возврат;
КонецЕсли;
Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - МоментНачала;
Если Не Общий И Не ЗначениеЗаполнено(Длительность) Тогда
Возврат;
КонецЕсли;
Текст = Формат(Длительность / 1000, "ЧЦ=6; ЧДЦ=3; ЧН=000,000; ЧВН=") + " " + ИмяПроцедуры;
Если Общий Тогда
Показатели.Вставить(0, Текст);
ЗаписатьПоказатели(Показатели, Длительность);
Возврат;
Иначе
Показатели.Добавить(" " + Текст);
КонецЕсли;
Если Вложенный Тогда
Возврат;
КонецЕсли;
ВложенныеПоказатели = ПараметрыПриложения.Получить(ИмяПараметраВложенныхПоказателей());
Для Каждого ВложенныйПоказатель Из ВложенныеПоказатели Цикл
Показатели.Добавить(" " + ВложенныйПоказатель);
КонецЦикла;
ВложенныеПоказатели.Очистить();
КонецПроцедуры
Функция ИмяПараметраВложенныхПоказателей()
Возврат "СтандартныеПодсистемы.БазоваяФункциональность.СерверныеОповещения.Показатели";
КонецФункции
Процедура ЗаписатьПоказатели(Показатели, ОбщаяДлительность)
Комментарий = СтрСоединить(Показатели, Символы.ПС);
ИмяМетодаВызоваСервера = "СерверныеОповещенияСлужебныйВызовСервера.НедоставленныеСерверныеОповещенияСеанса";
Если ОбщаяДлительность < 50
И СтрНайти(Комментарий, ИмяМетодаВызоваСервера) = 0 Тогда
Возврат;
КонецЕсли;
СерверныеОповещенияСлужебныйВызовСервера.ЗаписатьПоказателиПроизводительности(Комментарий);
КонецПроцедуры
Процедура ОбработатьСерверноеОповещениеНаКлиенте(СостояниеПолучения, СерверноеОповещение)
Если ОповещениеУжеПолучено(СостояниеПолучения, СерверноеОповещение) Тогда
@@ -180,6 +486,14 @@
ИмяОповещения = СерверноеОповещение.ИмяОповещения;
Результат = СерверноеОповещение.Результат;
Если ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.СерверныеОповещения.РегистрацияПоказателейИзменена" Тогда
СостояниеПолучения.РегистрироватьПоказатели = (Результат = Истина);
Возврат;
ИначеЕсли ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.СерверныеОповещения.ДоставкаБезСистемыВзаимодействияИзменена" Тогда
СостояниеПолучения.СистемаВзаимодействийПодключена = (Результат = Истина);
Возврат;
КонецЕсли;
Оповещение = СостояниеПолучения.Оповещения.Получить(ИмяОповещения);
Если Оповещение = Неопределено Тогда
Возврат;
@@ -237,19 +551,15 @@
// Возвращаемое значение:
// Структура:
// * ДатаПоследнегоОповещения - Дата
// * МинимальныйПериодПроверки - Число
// * ДополнительныеПараметры - Соответствие
// * СообщенияДляЖурналаРегистрации - Неопределено, СписокЗначений
// * ПериодическаяОтправкаДанных - Булево
// * РегистрироватьПоказатели - Булево
//
Функция НовыеПараметрыОбщегоСерверногоВызова() Экспорт
Результат = Новый Структура;
Результат.Вставить("ДатаПоследнегоОповещения", '00010101');
Результат.Вставить("МинимальныйПериодПроверки", 60);
Результат.Вставить("ДополнительныеПараметры", Новый Соответствие);
Результат.Вставить("СообщенияДляЖурналаРегистрации", Неопределено);
Результат.Вставить("ПериодическаяОтправкаДанных", Ложь);
Возврат Результат;
@@ -258,8 +568,10 @@
// Возвращаемое значение:
// Структура:
// * ПроверкаРазрешена - Булево - устанавливается Истина в процедуре ПередНачаломРаботыСистемы.
// * РегистрироватьПоказатели - Булево
// * СеансАдминистратораСервиса - Булево
// * ПериодическаяОтправкаДанныхРазрешена - Булево - устанавливается Истина в процедуре ПослеНачалаРаботыСистемы.
// * МинимальныйИнтервалПериодическойОтправкиДанных - см. СерверныеОповещения.МинимальныйИнтервалПериодическойОтправкиДанных
// * ПроверкаВыполняется - Булево
// * КлючСеанса - см. СерверныеОповещения.КлючСеанса
// * ИдентификаторПользователяИБ - УникальныйИдентификатор
@@ -285,14 +597,21 @@
// * ОбработчикНовыхОбщихСообщенийПодключен - Булево
// * НачатоПодключениеОбработчикаНовыхЛичныхСообщений - Булево
// * НачатоПодключениеОбработчикаНовыхОбщихСообщений - Булево
// * ДатаПоследнейПериодическойОтправкиДанных - Дата
// * ДатаПоследнегоСерверногоВызова - Дата
// * ТекущаяДатаСеансаДляПроверкиСчетчиковОжидания - Дата
// * ЧислоСекундВыравниванияДатыСчетчиковОжидания - Число
// * СчетчикиОжидания - Соответствие из КлючИЗначение:
// ** Ключ - Строка - имя счетчика
// ** Значение - Дата - последнее срабатывание счетчика
//
Функция НовоеСостояниеПолучения()
Состояние = Новый Структура;
Состояние.Вставить("ПроверкаРазрешена", Ложь);
Состояние.Вставить("РегистрироватьПоказатели", Ложь);
Состояние.Вставить("СеансАдминистратораСервиса", Ложь);
Состояние.Вставить("ПериодическаяОтправкаДанныхРазрешена", Ложь);
Состояние.Вставить("МинимальныйИнтервалПериодическойОтправкиДанных", 1);
Состояние.Вставить("ПроверкаВыполняется", Ложь);
Состояние.Вставить("КлючСеанса", "");
Состояние.Вставить("ИдентификаторПользователяИБ",
@@ -310,7 +629,10 @@
Состояние.Вставить("ОбработчикНовыхОбщихСообщенийПодключен", Ложь);
Состояние.Вставить("НачатоПодключениеОбработчикаНовыхЛичныхСообщений", Ложь);
Состояние.Вставить("НачатоПодключениеОбработчикаНовыхОбщихСообщений", Ложь);
Состояние.Вставить("ДатаПоследнейПериодическойОтправкиДанных", '00010101');
Состояние.Вставить("ДатаПоследнегоСерверногоВызова", '00010101');
Состояние.Вставить("ТекущаяДатаСеансаДляПроверкиСчетчиковОжидания", '00010101');
Состояние.Вставить("ЧислоСекундВыравниванияДатыСчетчиковОжидания", 0);
Состояние.Вставить("СчетчикиОжидания", Новый Соответствие);
Возврат Состояние;
@@ -109,4 +109,16 @@
КонецПроцедуры
// Параметры:
// Комментарий - Строка - комментарий для журнала регистрации
//
Процедура ЗаписатьПоказателиПроизводительности(Знач Комментарий) Экспорт
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Серверные оповещения.Показатели производительности'",
ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Информация,,, Комментарий);
КонецПроцедуры
#КонецОбласти
@@ -28,7 +28,7 @@
КонецФункции
// Возвращает сведения последней проверке подключения системы взаимодействия.
// Возвращает сведения о последней проверке подключения системы взаимодействия.
//
// Возвращаемое значение:
// Структура:
@@ -63,6 +63,7 @@
Блокировка.Установлена = Истина;
Блокировка.Начало = ТекущаяДатаСеанса() + ОжиданиеНачалаБлокировки * 60;
Блокировка.КодРазрешения = КодРазрешения;
Блокировка.Параметр = СерверныеОповещения.КлючСеанса();
Блокировка.Сообщение = СформироватьСообщениеБлокировки(ТекстСообщения, КодРазрешения);
Если ДлительностьБлокировки > 0 Тогда
@@ -70,6 +71,10 @@
КонецЕсли;
УстановитьБлокировкуСеансов(Блокировка);
УстановитьПривилегированныйРежим(Истина);
ОтправитьСерверноеОповещениеОбУстановкеБлокировки();
УстановитьПривилегированныйРежим(Ложь);
Возврат Истина;
КонецЕсли;
@@ -142,8 +147,14 @@
ПараметрыБлокировки = ПолучитьБлокировкуСеансов();
Если ПараметрыБлокировки.Установлена Тогда
ПараметрыБлокировки.Установлена = Ложь;
УстановитьБлокировкуСеансов(ПараметрыБлокировки);
УстановитьПривилегированныйРежим(Истина);
ОтправитьСерверноеОповещениеОбУстановкеБлокировки();
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат Истина;
КонецФункции
@@ -315,6 +326,8 @@
ВызватьИсключение;
КонецПопытки;
ОтправитьСерверноеОповещениеОбУстановкеБлокировки();
КонецПроцедуры
// Получить информацию о блокировке сеансов области данных.
@@ -655,7 +668,7 @@
"СтандартныеПодсистемы.ЗавершениеРаботыПользователей.БлокировкаСеансов");
Оповещение.ИмяМодуляОтправки = "СоединенияИБ";
Оповещение.ИмяМодуляПолучения = "СоединенияИБКлиент";
Оповещение.ПериодПроверки = 60;
Оповещение.ПериодПроверки = 300;
Оповещения.Вставить(Оповещение.Имя, Оповещение);
@@ -664,15 +677,7 @@
// См. СтандартныеПодсистемыСервер.ПриОтправкеСерверногоОповещения
Процедура ПриОтправкеСерверногоОповещения(ИмяОповещения, ВариантыПараметров) Экспорт
ПараметрыБлокировкиСеансов = ПараметрыБлокировкиСеансовКогдаУстановлена();
Если ПараметрыБлокировкиСеансов <> Неопределено
И ПараметрыБлокировкиСеансов.Установлена Тогда
СерверныеОповещения.ОтправитьСерверноеОповещение(
"СтандартныеПодсистемы.ЗавершениеРаботыПользователей.БлокировкаСеансов",
ПараметрыБлокировкиСеансов, Неопределено);
КонецЕсли;
ОтправитьСерверноеОповещениеОбУстановкеБлокировки(Истина);
КонецПроцедуры
@@ -698,6 +703,32 @@
#Область СлужебныеПроцедурыИФункции
Процедура ОтправитьСерверноеОповещениеОбУстановкеБлокировки(ПриОтправкеСерверногоОповещения = Ложь) Экспорт
Попытка
ПараметрыБлокировкиСеансов = ПараметрыБлокировкиСеансовКогдаУстановлена();
Если ПараметрыБлокировкиСеансов = Неопределено Тогда
ПараметрыБлокировкиСеансов = Новый Структура("Установлена", Ложь);
КонецЕсли;
Если ПараметрыБлокировкиСеансов.Установлена
Или Не ПриОтправкеСерверногоОповещения Тогда
СерверныеОповещения.ОтправитьСерверноеОповещение(
"СтандартныеПодсистемы.ЗавершениеРаботыПользователей.БлокировкаСеансов",
ПараметрыБлокировкиСеансов, Неопределено, Не ПриОтправкеСерверногоОповещения);
КонецЕсли;
Исключение
Если ПриОтправкеСерверногоОповещения Тогда
ВызватьИсключение;
КонецЕсли;
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Ошибка,,,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Прочее.
@@ -799,7 +830,7 @@
// Структура:
// * УстановленаБлокировкаСоединенийИБНаДату - Булево
// * ТекущийРежимОбластиДанных - см. НовыеПараметрыБлокировкиСоединений
// * ТекущийРежимИБ - см. НовыеПараметрыБлокировкиСоединений
// * ТекущийРежимИБ - БлокировкаСеансов
// * ТекущаяДата - Дата
//
Функция ТекущиеПараметрыБлокировкиСоединений(ВернутьНеопределеноКогдаНеУстановлена = Ложь)
@@ -842,7 +873,12 @@
Возврат Неопределено;
КонецЕсли;
Возврат ПараметрыБлокировкиСеансовРасширенные(Ложь, ПараметрыБлокировки);
Результат = ПараметрыБлокировкиСеансовРасширенные(Ложь, ПараметрыБлокировки);
Если ПараметрыБлокировки.УстановленаБлокировкаСоединенийИБНаДату Тогда
Результат.Вставить("Параметр", ПараметрыБлокировки.ТекущийРежимИБ.Параметр);
КонецЕсли;
Возврат Результат;
КонецФункции
@@ -65,12 +65,7 @@
//
Процедура УстановитьПризнакЗавершитьВсеСеансыКромеТекущего(Значение) Экспорт
ИмяПараметра = "СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей";
Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда
ПараметрыПриложения.Вставить(ИмяПараметра, Новый Структура);
КонецЕсли;
ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"].Вставить("ЗавершитьВсеСеансыКромеТекущего", Значение);
ПараметрыКлиента().ЗавершитьВсеСеансыКромеТекущего = Значение;
КонецПроцедуры
@@ -85,12 +80,7 @@
//
Процедура УстановитьПризнакРаботаПользователейЗавершается(Значение) Экспорт
ИмяПараметра = "СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей";
Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда
ПараметрыПриложения.Вставить(ИмяПараметра, Новый Структура);
КонецЕсли;
ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"].Вставить("РаботаПользователейЗавершается", Значение);
ПараметрыКлиента().РаботаПользователейЗавершается = Значение;
КонецПроцедуры
@@ -221,6 +211,18 @@
// См. СтандартныеПодсистемыКлиент.ПриПолученииСерверногоОповещения
Процедура ПриПолученииСерверногоОповещения(ИмяОповещения, Результат) Экспорт
ТекущаяДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
ПараметрыКлиента = ПараметрыКлиента();
ПараметрыКлиента.ДатаПоследнейПроверкиБлокировки = ТекущаяДатаСеанса;
Если Результат.Установлена Тогда
ПараметрыКлиента.ДатаПоследнегоСообщенияОБлокировке = ТекущаяДатаСеанса;
Иначе
ПараметрыКлиента.ДатаПоследнегоСообщенияОБлокировке = '00010101';
ОчиститьОповещениеПользователя();
Возврат;
КонецЕсли;
Если РаботаПользователейЗавершается() Тогда
Если Не ПроцедураЗавершитьРаботуПользователейУжеВыполняется() Тогда
ТекущийРежим = СоединенияИБВызовСервера.ПараметрыБлокировкиСеансов(Истина);
@@ -233,34 +235,47 @@
КонецПроцедуры
// См. ОбщегоНазначенияКлиентПереопределяемый.ПередПериодическойОтправкойДанныхКлиентаНаСервер
Процедура ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры) Экспорт
// Параметры:
// Параметры - см. ОбщегоНазначенияПереопределяемый.ПередПериодическойОтправкойДанныхКлиентаНаСервер.Параметры
// ОповещенияПолучены - Булево - оповещения за ожидаемый период успешно получены
// (или через систему взаимодействия или общий серверный вызов).
//
Процедура ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры, ОповещенияПолучены) Экспорт
ИмяПараметраПриложения = "СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей";
ПараметрыКлиента = ПараметрыПриложения[ИмяПараметраПриложения];
Если ПараметрыКлиента = Неопределено Тогда
ПараметрыКлиента = Новый Структура;
ПараметрыПриложения.Вставить(ИмяПараметраПриложения, ПараметрыКлиента);
КонецЕсли;
ТекущаяДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
Если Не ПараметрыКлиента.Свойство("ДатаПоследнейПериодическойПроверки") Тогда
ПараметрыКлиента.Вставить("ДатаПоследнейПериодическойПроверки", '00010101');
КонецЕсли;
ТекущаяДатаСеанса = '00010101';
СерверныеОповещенияКлиент.ЗакончилосьВремяОжидания("",,, ТекущаяДатаСеанса);
Если ПараметрыКлиента.ДатаПоследнейПериодическойПроверки + 60 > ТекущаяДатаСеанса Тогда
ПараметрыКлиента = ПараметрыКлиента();
Если Не ЗначениеЗаполнено(ПараметрыКлиента.ДатаПоследнейПроверкиБлокировки) Тогда
ПараметрыКлиента.ДатаПоследнейПроверкиБлокировки = ТекущаяДатаСеанса;
Возврат;
КонецЕсли;
ПараметрыКлиента.ДатаПоследнейПериодическойПроверки = ТекущаяДатаСеанса;
ИмяПараметра = "СтандартныеПодсистемы.ЗавершениеРаботыПользователей.БлокировкаСеансов";
Если РаботаПользователейЗавершается() Тогда
Параметры.Вставить(ИмяПараметра, Истина);
Интервал = 60;
ИначеЕсли ВключенКонтрольЗавершенияРаботыПользователей() Тогда
Параметры.Вставить(ИмяПараметра, Ложь);
Если ПараметрыКлиента.ДатаПоследнегоСообщенияОБлокировке + 300 > ТекущаяДатаСеанса Тогда
Интервал = 60;
ИначеЕсли ОповещенияПолучены Тогда
ПараметрыКлиента.ДатаПоследнейПроверкиБлокировки = ТекущаяДатаСеанса;
Возврат;
Иначе
Интервал = 300;
КонецЕсли;
Иначе
ПараметрыКлиента.ДатаПоследнейПроверкиБлокировки = ТекущаяДатаСеанса;
Возврат;
КонецЕсли;
Если ПараметрыКлиента.ДатаПоследнейПроверкиБлокировки + Интервал > ТекущаяДатаСеанса Тогда
Возврат;
КонецЕсли;
ПараметрыКлиента.ДатаПоследнейПроверкиБлокировки = ТекущаяДатаСеанса;
ИмяПараметра = "СтандартныеПодсистемы.ЗавершениеРаботыПользователей.БлокировкаСеансов";
Параметры.Вставить(ИмяПараметра, Истина);
КонецПроцедуры
// См. ОбщегоНазначенияКлиентПереопределяемый.ПослеПериодическогоПолученияДанныхКлиентаНаСервере
@@ -287,45 +302,59 @@
КонецФункции
Процедура УстановитьКонтрольЗавершенияРаботыПользователей(Значение = Истина)
// Возвращаемое значение:
// Структура:
// * ЗавершитьВсеСеансыКромеТекущего - Булево
// * РаботаПользователейЗавершается - Булево
// * ВыполнятьКонтрольЗавершенияРаботыПользователей - Булево
// * ПараметрыАдминистрирования - см. СтандартныеПодсистемыСервер.ПараметрыАдминистрирования
// * ПроцедураЗавершитьРаботуПользователейУжеВыполняется - Булево
// * ДатаПоследнейПроверкиБлокировки - Дата
// * ДатаПоследнегоСообщенияОБлокировке - Дата
//
Функция ПараметрыКлиента()
ИмяПараметра = "СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей";
Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда
ПараметрыПриложения.Вставить(ИмяПараметра, Новый Структура);
ПараметрыКлиента = ПараметрыПриложения[ИмяПараметра];
Если ПараметрыКлиента <> Неопределено Тогда
Возврат ПараметрыКлиента;
КонецЕсли;
ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"].Вставить("ВыполнятьКонтрольЗавершенияРаботыПользователей", Значение);
ПараметрыКлиента = Новый Структура;
ПараметрыКлиента.Вставить("ЗавершитьВсеСеансыКромеТекущего", Ложь);
ПараметрыКлиента.Вставить("РаботаПользователейЗавершается", Ложь);
ПараметрыКлиента.Вставить("ВыполнятьКонтрольЗавершенияРаботыПользователей", Ложь);
ПараметрыКлиента.Вставить("ПараметрыАдминистрирования", Неопределено);
ПараметрыКлиента.Вставить("ПроцедураЗавершитьРаботуПользователейУжеВыполняется", Ложь);
ПараметрыКлиента.Вставить("ДатаПоследнейПроверкиБлокировки", '00010101');
ПараметрыКлиента.Вставить("ДатаПоследнегоСообщенияОБлокировке", '00010101');
ПараметрыПриложения.Вставить(ИмяПараметра, ПараметрыКлиента);
Возврат ПараметрыКлиента;
КонецФункции
Процедура УстановитьКонтрольЗавершенияРаботыПользователей(Значение = Истина)
ПараметрыКлиента().ВыполнятьКонтрольЗавершенияРаботыПользователей = Значение;
КонецПроцедуры
Функция ВключенКонтрольЗавершенияРаботыПользователей()
ПараметрыЗавершенияРаботыПользователей = ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"];
Возврат ТипЗнч(ПараметрыЗавершенияРаботыПользователей) = Тип("Структура")
И ПараметрыЗавершенияРаботыПользователей.Свойство("ВыполнятьКонтрольЗавершенияРаботыПользователей")
И ПараметрыЗавершенияРаботыПользователей.ВыполнятьКонтрольЗавершенияРаботыПользователей;
Возврат ПараметрыКлиента().ВыполнятьКонтрольЗавершенияРаботыПользователей;
КонецФункции
Процедура УстановитьПроцедураЗавершитьРаботуПользователейУжеВыполняется(Значение = Истина)
ИмяПараметра = "СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей";
Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда
ПараметрыПриложения.Вставить(ИмяПараметра, Новый Структура);
КонецЕсли;
ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"].Вставить("ПроцедураЗавершитьРаботуПользователейУжеВыполняется", Значение);
ПараметрыКлиента().ПроцедураЗавершитьРаботуПользователейУжеВыполняется = Значение;
КонецПроцедуры
Функция ПроцедураЗавершитьРаботуПользователейУжеВыполняется()
ПараметрыЗавершенияРаботыПользователей = ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"];
Возврат ТипЗнч(ПараметрыЗавершенияРаботыПользователей) = Тип("Структура")
И ПараметрыЗавершенияРаботыПользователей.Свойство("ПроцедураЗавершитьРаботуПользователейУжеВыполняется")
И ПараметрыЗавершенияРаботыПользователей.ПроцедураЗавершитьРаботуПользователейУжеВыполняется;
Возврат ПараметрыКлиента().ПроцедураЗавершитьРаботуПользователейУжеВыполняется;
КонецФункции
@@ -336,7 +365,9 @@
БлокировкаУстановлена = ТекущийРежим.Установлена;
Если Не БлокировкаУстановлена Тогда
Если Не БлокировкаУстановлена
Или ТекущийРежим.Свойство("Параметр")
И ТекущийРежим.Параметр = СерверныеОповещенияКлиент.КлючСеанса() Тогда
Возврат;
КонецЕсли;
@@ -398,12 +429,13 @@
ТекущийМомент = ТекущийРежим.ТекущаяДатаСеанса;
КоличествоСеансов = ТекущийРежим.КоличествоСеансов;
ОповещениеНажатия = Новый ОписаниеОповещения("ОбработкаОткрытияФормыБлокировкаРаботыПрограммы", ЭтотОбъект);
Если ТекущийМомент < ВремяНачалаБлокировки Тогда
ТекстСообщения = НСтр("ru = 'Блокировка работы пользователей запланирована на %1.'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ВремяНачалаБлокировки);
ПоказатьОповещениеПользователя(НСтр("ru = 'Завершение работы пользователей'"),
"e1cib/app/Обработка.БлокировкаРаботыПользователей",
ТекстСообщения, БиблиотекаКартинок.Информация32);
ОповещениеНажатия, ТекстСообщения, БиблиотекаКартинок.Информация32);
Оповестить("ЗавершениеРаботыПользователей",
Новый Структура("Статус, КоличествоСеансов", "Обновление", КоличествоСеансов));
Возврат;
@@ -446,7 +478,7 @@
Исключение
УстановитьПризнакРаботаПользователейЗавершается(Ложь);
ПоказатьОповещениеПользователя(НСтр("ru = 'Завершение работы пользователей'"),
"e1cib/app/Обработка.БлокировкаРаботыПользователей",
ОповещениеНажатия,
НСтр("ru = 'Завершение сеансов не выполнено. Подробности см. в Журнале регистрации.'"),
БиблиотекаКартинок.Предупреждение32);
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(),
@@ -458,7 +490,7 @@
УстановитьПризнакРаботаПользователейЗавершается(Ложь);
ПоказатьОповещениеПользователя(НСтр("ru = 'Завершение работы пользователей'"),
"e1cib/app/Обработка.БлокировкаРаботыПользователей",
ОповещениеНажатия,
НСтр("ru = 'Завершение сеансов выполнено успешно'"),
БиблиотекаКартинок.Информация32);
Оповестить("ЗавершениеРаботыПользователей",
@@ -491,54 +523,49 @@
КонецПроцедуры
Процедура ОбработкаОткрытияФормыБлокировкаРаботыПрограммы(Контекст) Экспорт
ПолноеИмяФормы = "Обработка.БлокировкаРаботыПользователей.Форма.БлокировкаСоединенийСИнформационнойБазой";
Окна = ПолучитьОкна();
Для Каждого Окно Из Окна Цикл
Для Каждого Форма Из Окно.Содержимое Цикл
Если Форма.ИмяФормы = ПолноеИмяФормы И Форма.Открыта() Тогда
Форма.Активизировать();
Возврат;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ОткрытьФорму(ПолноеИмяФормы);
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////
// Обработчики событий подсистемы БазоваяФункциональность.
Функция РаботаПользователейЗавершается() Экспорт
ПараметрыЗавершенияРаботыПользователей = ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"];
Возврат ТипЗнч(ПараметрыЗавершенияРаботыПользователей) = Тип("Структура")
И ПараметрыЗавершенияРаботыПользователей.Свойство("РаботаПользователейЗавершается")
И ПараметрыЗавершенияРаботыПользователей.РаботаПользователейЗавершается;
Возврат ПараметрыКлиента().РаботаПользователейЗавершается;
КонецФункции
Функция ЗавершитьВсеСеансыКромеТекущего()
ПараметрыЗавершенияРаботыПользователей = ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"];
Возврат ТипЗнч(ПараметрыЗавершенияРаботыПользователей) = Тип("Структура")
И ПараметрыЗавершенияРаботыПользователей.Свойство("ЗавершитьВсеСеансыКромеТекущего")
И ПараметрыЗавершенияРаботыПользователей.ЗавершитьВсеСеансыКромеТекущего;
Возврат ПараметрыКлиента().ЗавершитьВсеСеансыКромеТекущего;
КонецФункции
Функция СохраненныеПараметрыАдминистрирования()
ПараметрыЗавершенияРаботыПользователей = ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"];
ПараметрыАдминистрирования = Неопределено;
Если ТипЗнч(ПараметрыЗавершенияРаботыПользователей) = Тип("Структура")
И ПараметрыЗавершенияРаботыПользователей.Свойство("ПараметрыАдминистрирования") Тогда
ПараметрыАдминистрирования = ПараметрыЗавершенияРаботыПользователей.ПараметрыАдминистрирования;
КонецЕсли;
Возврат ПараметрыАдминистрирования;
Возврат ПараметрыКлиента().ПараметрыАдминистрирования;
КонецФункции
Процедура СохранитьПараметрыАдминистрирования(Значение) Экспорт
ИмяПараметра = "СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей";
Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда
ПараметрыПриложения.Вставить(ИмяПараметра, Новый Структура);
КонецЕсли;
ПараметрыКлиента().ПараметрыАдминистрирования = Значение;
ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"].Вставить("ПараметрыАдминистрирования", Значение);
КонецПроцедуры
Процедура ЗаполнитьПараметрыАдминистрированияКластера(ПараметрыЗапуска)
@@ -613,7 +640,8 @@
ПараметрыИнформирования = ПараметрыИнформирования(ВремяНачалаБлокировки);
Если Не ПараметрыИнформирования.ОповещениеПоказано Тогда
ПоказатьОповещениеПользователя(НСтр("ru = 'Работа программы будет завершена'"),, ТекстСообщения,,
СтатусОповещенияПользователя.Важное);
СтатусОповещенияПользователя.Важное, "КонтрольЗавершенияРаботыПользователей");
ПараметрыИнформирования.ОповещениеПоказано = Истина;
КонецЕсли;
Если Не ПараметрыИнформирования.ПоказатьПредупреждениеИлиВопрос Тогда
@@ -640,8 +668,6 @@
Свойства.Вставить("ДатаПоследнегоПредупрежденияИлиВопроса", '00010101');
Свойства.Вставить("ВремяНачалаБлокировки", ВремяНачалаБлокировки);
ПараметрыПриложения.Вставить(ИмяПараметра, Свойства);
Иначе
Свойства.ОповещениеПоказано = Истина;
КонецЕсли;
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
@@ -656,12 +682,28 @@
КонецФункции
Процедура ОчиститьОповещениеПользователя()
ИмяПараметра = "СтандартныеПодсистемы.ПоказаноПредупреждениеПередЗавершениемРаботы";
ПараметрыИнформирования = ПараметрыПриложения[ИмяПараметра];
Если ПараметрыИнформирования = Неопределено
Или Не ПараметрыИнформирования.ОповещениеПоказано Тогда
Возврат;
КонецЕсли;
ПараметрыИнформирования.ОповещениеПоказано = Ложь;
ПоказатьОповещениеПользователя(НСтр("ru = 'Завершение работы отменено'"),, ,,
СтатусОповещенияПользователя.Важное, "КонтрольЗавершенияРаботыПользователей");
КонецПроцедуры
Процедура ЗадатьВопросПриЗавершенииРаботы(ТекстСообщения, ВремяНачалаБлокировки)
ПараметрыИнформирования = ПараметрыИнформирования(ВремяНачалаБлокировки);
Если Не ПараметрыИнформирования.ОповещениеПоказано Тогда
ПоказатьОповещениеПользователя(НСтр("ru = 'Работа программы будет завершена'"),, ТекстСообщения,,
СтатусОповещенияПользователя.Важное);
СтатусОповещенияПользователя.Важное, "КонтрольЗавершенияРаботыПользователей");
ПараметрыИнформирования.ОповещениеПоказано = Истина;
КонецЕсли;
Если Не ПараметрыИнформирования.ПоказатьПредупреждениеИлиВопрос Тогда
@@ -573,15 +573,7 @@
//
Процедура ПриПолученииСерверногоОповещения(ИмяОповещения, Результат) Экспорт
Если ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.ИзмененаКонфигурацияИлиРасширения" Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Установлено обновление программы'"),
"e1cib/app/ОбщаяФорма.КонтрольДинамическогоОбновления",
Результат, БиблиотекаКартинок.Предупреждение32,
СтатусОповещенияПользователя.Важное,
"УстановленоОбновлениеПрограммы");
ИначеЕсли ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.ФункциональныеОпцииИзменены" Тогда
Если ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.ФункциональныеОпцииИзменены" Тогда
ОтключитьОбработчикОжидания("ОбновитьИнтерфейсПриИзмененииФункциональныхОпций");
ПодключитьОбработчикОжидания("ОбновитьИнтерфейсПриИзмененииФункциональныхОпций", 5*60, Истина);
@@ -834,6 +826,40 @@
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Обработчики событий подсистем конфигурации.
// См. ИнтеграцияПодсистемБСПКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер
Процедура ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры) Экспорт
ИмяСчетчика = "СтандартныеПодсистемы.БазоваяФункциональность";
Если Не СерверныеОповещенияКлиент.ЗакончилосьВремяОжидания(ИмяСчетчика) Тогда
Возврат;
КонецЕсли;
// ИзмененаКонфигурацияИлиРасширения
Параметры.Вставить("СтандартныеПодсистемы.БазоваяФункциональность", Истина);
КонецПроцедуры
// См. ОбщегоНазначенияКлиентПереопределяемый.ПослеПериодическогоПолученияДанныхКлиентаНаСервере
Процедура ПослеПериодическогоПолученияДанныхКлиентаНаСервере(Результаты) Экспорт
Результат = Результаты.Получить("СтандартныеПодсистемы.БазоваяФункциональность");
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
// ИзмененаКонфигурацияИлиРасширения
ПоказатьОповещениеПользователя(
НСтр("ru = 'Установлено обновление программы'"),
"e1cib/app/ОбщаяФорма.КонтрольДинамическогоОбновления",
Результат, БиблиотекаКартинок.Предупреждение32,
СтатусОповещенияПользователя.Важное,
"УстановленоОбновлениеПрограммы");
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Вывод результата выполнения.
@@ -540,10 +540,7 @@
//
Процедура ПриОтправкеСерверногоОповещения(ИмяОповещения, ВариантыПараметров) Экспорт
Если ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.ИзмененаКонфигурацияИлиРасширения" Тогда
ПриОтправкеСерверногоОповещенияИзмененаКонфигурацияИлиРасширения(ИмяОповещения, ВариантыПараметров);
ИначеЕсли ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.ФункциональныеОпцииИзменены" Тогда
Если ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.ФункциональныеОпцииИзменены" Тогда
ПриОтправкеСерверногоОповещенияФункциональныеОпцииИзменены(ИмяОповещения, ВариантыПараметров);
КонецЕсли;
@@ -1895,16 +1892,6 @@
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений
Процедура ПриДобавленииСерверныхОповещений(Оповещения) Экспорт
// ИзмененаКонфигурацияИлиРасширения
Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(
"СтандартныеПодсистемы.БазоваяФункциональность.ИзмененаКонфигурацияИлиРасширения");
Оповещение.ИмяМодуляОтправки = "СтандартныеПодсистемыСервер";
Оповещение.ИмяМодуляПолучения = "СтандартныеПодсистемыКлиент";
Оповещение.Параметры = ПараметрыПроверкиОповещенияИзмененаКонфигурацияИлиРасширения();
Оповещения.Вставить(Оповещение.Имя, Оповещение);
// ФункциональныеОпцииИзменены
Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(
"СтандартныеПодсистемы.БазоваяФункциональность.ФункциональныеОпцииИзменены");
@@ -1937,6 +1924,8 @@
Типы.Добавить(Метаданные.Константы.АдресПубликацииИнформационнойБазыВИнтернете);
Типы.Добавить(Метаданные.Константы.АдресПубликацииИнформационнойБазыВЛокальнойСети);
Типы.Добавить(Метаданные.Константы.ИдентификаторИнформационнойБазы);
Типы.Добавить(Метаданные.Константы.ДоставлятьСерверныеОповещенияБезСистемыВзаимодействия);
Типы.Добавить(Метаданные.Константы.РегистрироватьПоказателиСерверныхОповещений);
МодульВыгрузкаЗагрузкаДанных = ОбщегоНазначения.ОбщийМодуль("ВыгрузкаЗагрузкаДанных");
МодульВыгрузкаЗагрузкаДанных.ДополнитьТипомИсключаемымИзВыгрузкиЗагрузки(Типы,
Метаданные.Справочники.ВерсииРасширений,
@@ -2112,6 +2101,25 @@
Объекты.Добавить(Метаданные.РегистрыСведений.ИдентификаторыОбъектовВерсийРасширений);
КонецПроцедуры
// См. ОбщегоНазначенияПереопределяемый.ПриПериодическомПолученииДанныхКлиентаНаСервере
Процедура ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты) Экспорт
ПараметрыПроверки = Параметры.Получить("СтандартныеПодсистемы.БазоваяФункциональность");
Если ПараметрыПроверки = Неопределено Тогда
Возврат;
КонецЕсли;
// ИзмененаКонфигурацияИлиРасширения
СообщениеПользователю = Неопределено;
ПриПериодическойПроверкеИзмененаКонфигурацияИлиРасширения(СообщениеПользователю);
Если СообщениеПользователю = Неопределено Тогда
Возврат;
КонецЕсли;
Результаты.Вставить("СтандартныеПодсистемы.БазоваяФункциональность", СообщениеПользователю);
КонецПроцедуры
// См. ПользователиПереопределяемый.ПриПолученииПрочихНастроек.
Процедура ПриПолученииПрочихНастроек(СведенияОПользователе, Настройки) Экспорт
@@ -4060,85 +4068,71 @@
// Проверка и отправка серверных оповещений клиенту.
// Возвращаемое значение:
// Структура:
// * ВерсияКонфигурации - Строка
// * УстановленныеРасширенияПриЗапуске - см. Справочники.ВерсииРасширений.УстановленныеРасширенияПриЗапуске
//
Функция ПараметрыПроверкиОповещенияИзмененаКонфигурацияИлиРасширения()
// См. ПриПериодическомПолученииДанныхКлиентаНаСервере
Процедура ПриПериодическойПроверкеИзмененаКонфигурацияИлиРасширения(СообщениеПользователю)
Результат = Новый Структура;
Результат.Вставить("ВерсияКонфигурации", Метаданные.Версия);
Результат.Вставить("УстановленныеРасширенияПриЗапуске",
Справочники.ВерсииРасширений.УстановленныеРасширенияПриЗапуске());
Возврат Результат;
УстановитьПривилегированныйРежим(Истина);
КонецФункции
// См. ПриОтправкеСерверногоОповещения
Процедура ПриОтправкеСерверногоОповещенияИзмененаКонфигурацияИлиРасширения(ИмяОповещения, ВариантыПараметров)
ИмяПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
Для Каждого ВариантПараметров Из ВариантыПараметров Цикл
ВариантПараметров = ВариантПараметров; // Структура
КонфигурацияБазыДанныхИзмененаДинамически = ВариантПараметров.Параметры.ВерсияКонфигурации <> Метаданные.Версия;
ДинамическиеИзменения = Справочники.ВерсииРасширений.ДинамическиИзмененныеРасширения(
ВариантПараметров.Параметры.УстановленныеРасширенияПриЗапуске);
Если Не КонфигурацияБазыДанныхИзмененаДинамически
И Не ЗначениеЗаполнено(ДинамическиеИзменения.Расширения)
И Не ЗначениеЗаполнено(ДинамическиеИзменения.Исправления) Тогда
Продолжить;
КонецЕсли;
Адресаты = Новый Соответствие;
Для Каждого Адресат Из ВариантПараметров.Адресаты Цикл
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Адресат.Ключ);
Если ПользовательИБ = Неопределено Тогда
Продолжить;
КонецЕсли;
ИмяПользователя = ПользовательИБ.Имя;
МожноОповещать = ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммыДляПользователя(ИмяПользователя);
Если Не МожноОповещать Тогда
Продолжить;
КонецЕсли;
ДатаНапомнитьЗавтра = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(
"КонтрольДинамическогоОбновления", "ДатаНапомнитьЗавтра",,, ИмяПользователя);
Если ТипЗнч(ДатаНапомнитьЗавтра) = Тип("Дата")
И ТекущаяДатаСеанса() < ДатаНапомнитьЗавтра Тогда
Продолжить;
КонецЕсли;
Если ДинамическиеИзменения.Исправления <> Неопределено
И ДинамическиеИзменения.Расширения = Неопределено
И Не КонфигурацияБазыДанныхИзмененаДинамически
// Изменился только состав исправлений, необходимо проверить возможность отображения оповещения.
И ДинамическиеИзменения.Исправления.Добавлено <> 0
И ДинамическиеИзменения.Исправления.Удалено = 0 Тогда
МожноОповещать = ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммыДляПользователя(ИмяПользователя);
Если Не МожноОповещать Тогда
Возврат;
КонецЕсли;
ДатаНапомнитьЗавтра = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(
"КонтрольДинамическогоОбновления", "ДатаНапомнитьЗавтра",,, ИмяПользователя);
Если ТипЗнч(ДатаНапомнитьЗавтра) = Тип("Дата")
И ТекущаяДатаСеанса() < ДатаНапомнитьЗавтра Тогда
Возврат;
КонецЕсли;
КонфигурацияБазыДанныхИзмененаДинамически = КонфигурацияБазыДанныхИзмененаДинамически();
ДинамическиеИзменения = Справочники.ВерсииРасширений.ДинамическиИзмененныеРасширения(
Справочники.ВерсииРасширений.УстановленныеРасширенияПриЗапуске(), Истина);
Если Не КонфигурацияБазыДанныхИзмененаДинамически
И Не ЗначениеЗаполнено(ДинамическиеИзменения.Расширения)
И Не ЗначениеЗаполнено(ДинамическиеИзменения.Исправления) Тогда
Возврат;
КонецЕсли;
Если ДинамическиеИзменения.Исправления <> Неопределено
И ДинамическиеИзменения.Расширения = Неопределено
И Не КонфигурацияБазыДанныхИзмененаДинамически
// Изменился только состав исправлений, необходимо проверить возможность отображения оповещения.
И ДинамическиеИзменения.Исправления.Добавлено <> 0
И ДинамическиеИзменения.Исправления.Удалено = 0 Тогда
РасписаниеОповещения = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(
"КонтрольДинамическогоОбновления", "РасписаниеПроверкиПатчей",,, ИмяПользователя);
Если ТипЗнч(РасписаниеОповещения) = Тип("Структура")
И РасписаниеОповещения.Свойство("Расписание")
И ТипЗнч(РасписаниеОповещения.Расписание) = Тип("РасписаниеРегламентногоЗадания") Тогда
РасписаниеОповещения = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(
"КонтрольДинамическогоОбновления", "РасписаниеПроверкиПатчей",,, ИмяПользователя);
Если ТипЗнч(РасписаниеОповещения) = Тип("Структура")
И РасписаниеОповещения.Свойство("Расписание")
И ТипЗнч(РасписаниеОповещения.Расписание) = Тип("РасписаниеРегламентногоЗадания") Тогда
ТекущаяДатаСеанса = ТекущаяДатаСеанса();
МожноОповещать = РасписаниеОповещения.Расписание.ТребуетсяВыполнение(ТекущаяДатаСеанса, РасписаниеОповещения.ПоследнееОповещение);
Если МожноОповещать Тогда
РасписаниеОповещения.ПоследнееОповещение = ТекущаяДатаСеанса;
ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить("КонтрольДинамическогоОбновления",
"РасписаниеПроверкиПатчей", РасписаниеОповещения,, ИмяПользователя);
КонецЕсли;
КонецЕсли;
ТекущаяДатаСеанса = ТекущаяДатаСеанса();
МожноОповещать = РасписаниеОповещения.Расписание.ТребуетсяВыполнение(ТекущаяДатаСеанса,
РасписаниеОповещения.ПоследнееОповещение);
Если МожноОповещать Тогда
РасписаниеОповещения.ПоследнееОповещение = ТекущаяДатаСеанса;
ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить("КонтрольДинамическогоОбновления",
"РасписаниеПроверкиПатчей", РасписаниеОповещения,, ИмяПользователя);
КонецЕсли;
Если Не МожноОповещать Тогда
Продолжить;
КонецЕсли;
Адресаты.Вставить(Адресат.Ключ, Адресат.Значение);
КонецЦикла;
Если Не ЗначениеЗаполнено(Адресаты) Тогда
Продолжить;
КонецЕсли;
ДинамическиеИзменения.Вставить("КонфигурацияБазыДанныхИзмененаДинамически", КонфигурацияБазыДанныхИзмененаДинамически);
СообщениеПользователю = ТекстСообщенияПриДинамическомОбновлении(ДинамическиеИзменения);
СерверныеОповещения.ОтправитьСерверноеОповещение(ИмяОповещения, СообщениеПользователю, Адресаты);
КонецЦикла;
КонецЕсли;
Если Не МожноОповещать Тогда
Возврат;
КонецЕсли;
ДинамическиеИзменения.Вставить("КонфигурацияБазыДанныхИзмененаДинамически",
КонфигурацияБазыДанныхИзмененаДинамически);
СообщениеПользователю = ТекстСообщенияПриДинамическомОбновлении(ДинамическиеИзменения);
КонецПроцедуры
@@ -205,6 +205,14 @@
КонецПроцедуры
// См. ИнтерфейсODataПереопределяемый.ПриЗаполненииЗависимыхТаблицДляВыгрузкиЗагрузкиOData
Процедура ПриЗаполненииЗависимыхТаблицДляВыгрузкиЗагрузкиOData(Таблицы) Экспорт
Таблицы.Добавить(Метаданные.РегистрыСведений.НеудаленныеОбъекты.ПолноеИмя());
Таблицы.Добавить(Метаданные.РегистрыСведений.УдаляемыеОбъекты.ПолноеИмя());
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиПодписок
@@ -1292,7 +1292,7 @@
Если СтрокаИндекс <> Неопределено Тогда
Адрес.ZipCode = СокрЛП(СтрокаИндекс.Значение);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Адрес;
@@ -11,16 +11,10 @@
// См. ОбщегоНазначенияКлиентПереопределяемый.ПередПериодическойОтправкойДанныхКлиентаНаСервер
Процедура ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры) Экспорт
ТекущаяДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
ИмяПараметра = "СтандартныеПодсистемы.ЦентрМониторинга.ДатаПоследнегоВызова";
ДатаПоследнегоВызова = ПараметрыПриложения.Получить(ИмяПараметра);
Если ТипЗнч(ДатаПоследнегоВызова) <> Тип("Дата") Тогда
ПараметрыПриложения.Вставить(ИмяПараметра, ТекущаяДатаСеанса);
Возврат;
ИначеЕсли ДатаПоследнегоВызова + 20*60 > ТекущаяДатаСеанса Тогда
ИмяСчетчика = "СтандартныеПодсистемы.ЦентрМониторинга";
Если Не СерверныеОповещенияКлиент.ЗакончилосьВремяОжидания(ИмяСчетчика) Тогда
Возврат;
КонецЕсли;
ПараметрыПриложения.Вставить(ИмяПараметра, ТекущаяДатаСеанса);
Окна = ПолучитьОкна();
АктивныхОкон = 0;
@@ -884,14 +884,13 @@
Если ТипЗнч(ОписаниеШтампов) = Тип("Массив") Тогда
ИндексШтампа = 1;
ИндексШтампа = 1;
НомерШтампаВСтроке = 0;
Если Документ.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт Тогда
КоличествоШтамповПоШирине = Мин(3, ОписаниеШтампов.Количество());
Иначе
КоличествоШтамповПоШирине = Мин(2, ОписаниеШтампов.Количество());
КонецЕсли;
ШиринаКолонокШтампа = 3 + Размеры.ЛеваяКолонка + Размеры.ПраваяКолонка;
КоличествоШтамповПоШирине = Неопределено;
ЕстьВертикальныйРазделитель = Ложь;
НомерШтампаВСтроке = 0; ШиринаСтрокиШтампов = 0; ШиринаТаблицы = 0;
Для Каждого Штамп Из ОписаниеШтампов Цикл
ИмяОбласти = "ШтампЭП" + Строка(ИндексШтампа);
@@ -911,7 +910,68 @@
Если НомерШтампаВСтроке = 1 Или НомерШтампаВСтроке > КоличествоШтамповПоШирине Тогда
Если КоличествоШтамповПоШирине = Неопределено Тогда
Для ШиринаТаблицы = 1 По Документ.ШиринаТаблицы Цикл
Область = Документ.Область(, ШиринаТаблицы,, ШиринаТаблицы);
ШиринаСтрокиШтампов = ШиринаСтрокиШтампов + Область.ШиринаКолонки;
Если Область.КонецСтраницы Тогда
ЕстьВертикальныйРазделитель = Истина;
Прервать;
КонецЕсли;
Если ШиринаТаблицы = Документ.ШиринаТаблицы Тогда
ШиринаСтрокиШтампов = 0;
ВысотаТаблицы = Мин(Документ.ВысотаТаблицы, 100);
Для НомерКолонкиСКонца = 1 По ШиринаТаблицы Цикл
НомерКолонки = ШиринаТаблицы - НомерКолонкиСКонца + 1;
Для НомерСтрокиСКонца = 1 По ВысотаТаблицы Цикл
НомерСтроки = Документ.ВысотаТаблицы - НомерСтрокиСКонца + 1;
ОбластьЯчейки = Документ.Область(НомерСтроки, НомерКолонки);
Если ПустаяСтрока(ОбластьЯчейки.Текст)
И ОбластьЯчейки.Лево = ШиринаТаблицы
И ОбластьЯчейки.Верх = НомерСтроки
И ОбластьЯчейки.ГраницаСправа.ТипЛинии = ТипЛинииЯчейкиТабличногоДокумента.НетЛинии
И ОбластьЯчейки.ГраницаСнизу.ТипЛинии = ТипЛинииЯчейкиТабличногоДокумента.НетЛинии
И ОбластьЯчейки.ГраницаСверху.ТипЛинии = ТипЛинииЯчейкиТабличногоДокумента.НетЛинии
Тогда
Продолжить;
КонецЕсли;
ТабличныйДокумент = Новый ТабличныйДокумент;
Область = Документ.ПолучитьОбласть(НомерСтроки, 1, НомерСтроки, НомерКолонки);
ТабличныйДокумент.Вывести(Область);
Для НомерКолонкиТабличногоДокумента = 1 По НомерКолонки Цикл
Область = ТабличныйДокумент.Область(1, НомерКолонкиТабличногоДокумента, 1,
НомерКолонкиТабличногоДокумента);
ШиринаСтрокиШтампов = ШиринаСтрокиШтампов + Область.ШиринаКолонки;
КонецЦикла;
Прервать;
КонецЦикла;
Если ШиринаСтрокиШтампов <> 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Прервать;
КонецЕсли;
КонецЦикла;
КоличествоШтамповПоШирине = Макс(1, Цел(ШиринаСтрокиШтампов/ШиринаКолонокШтампа));
КонецЕсли;
ШиринаНачало = 1; НомерШтампаВСтроке = 1;
ОбластиДляПроверкиПоВысоте = Новый Массив;
ОбластиДляПроверкиПоВысоте.Добавить(Штамп.ПолучитьОбласть("Отступ"));
ОбластиДляПроверкиПоВысоте.Добавить(Штамп.ПолучитьОбласть("ОбластьСтрокШтамп"));
@@ -924,14 +984,12 @@
ВысотаНачало = Документ.ВысотаТаблицы;
ВысотаКонец = Документ.ВысотаТаблицы + ВысотаШтампа;
ШиринаШтамповВСтроке = КоличествоШтамповПоШирине * Штамп.ШиринаТаблицы;
Документ.Область(ВысотаНачало, ШиринаНачало, ВысотаКонец, ШиринаШтамповВСтроке).Разъединить();
Документ.Область(ВысотаНачало, ШиринаНачало, ВысотаКонец, ШиринаТаблицы).Разъединить();
// Формат строк, чтобы изменение ширины колонок не повлияло на остальной документ.
Документ.Область(ВысотаНачало, , ВысотаКонец).СоздатьФорматСтрок();
Если Документ.ШиринаТаблицы > ШиринаШтамповВСтроке Тогда
Документ.Область(ВысотаНачало, ШиринаШтамповВСтроке + 1, ВысотаКонец, Документ.ШиринаТаблицы).ШиринаКолонки = 0;
КонецЕсли;
ОстатокШирины = ШиринаСтрокиШтампов;
КонецЕсли;
ШиринаКонец = ШиринаНачало - 1 + ШиринаШтампа;
@@ -944,13 +1002,22 @@
Документ.Области.ШтампЛеваяКолонка.ШиринаКолонки = Размеры.ЛеваяКолонка;
Документ.Области.ШтампПраваяКолонка.ШиринаКолонки = Размеры.ПраваяКолонка;
Документ.Области.ОтступШтампа.ШиринаКолонки = 3;
ШиринаНачало = ШиринаКонец + 1;
Если ОстатокШирины > ШиринаКолонокШтампа Тогда
ОстатокШирины = ОстатокШирины - ШиринаКолонокШтампа;
Документ.Область(ВысотаНачало, ШиринаНачало, ВысотаКонец, ШиринаТаблицы).ШиринаКолонки = 0;
Если ЕстьВертикальныйРазделитель Тогда
Документ.Область(ВысотаНачало, ШиринаТаблицы, ВысотаКонец, ШиринаТаблицы).ШиринаКолонки = ОстатокШирины;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ИндексШтампа = ИндексШтампа + 1;
КонецЦикла;
КонецЦикла;
Иначе
Для Каждого ОписаниеШтампа Из ОписаниеШтампов Цикл
ИмяОбласти = ОписаниеШтампа.Ключ;
@@ -426,14 +426,21 @@
Возврат Ложь;
КонецПопытки;
Иначе
ПараметрыПодписиКриптографии = Неопределено;
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеПараметрыПодписиКриптографии();
СвойстваПодписиИзДвоичныхДанных = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписиИзДвоичныхДанных(
ДвоичныеДанныеРезультата, ЭлектроннаяПодписьСлужебный.ДобавкаВремени());
ПараметрыПодписиКриптографии.НеподтвержденнаяДатаПодписи = СвойстваПодписиИзДвоичныхДанных.ДатаПодписания;
ПараметрыПодписиКриптографии.ДатаПодписиИзМетки = СвойстваПодписиИзДвоичныхДанных.ДатаШтампаВремени;
ПараметрыПодписиКриптографии.ТипПодписи = СвойстваПодписиИзДвоичныхДанных.ТипПодписи;
КонецЕсли;
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(ДвоичныеДанныеРезультата,
СвойстваСертификата, Параметры.Комментарий, Пользователи.АвторизованныйПользователь(),,ПараметрыПодписиКриптографии);
СвойстваПодписи.ДатаПодписи = ?(ЗначениеЗаполнено(СвойстваПодписи.НеподтвержденнаяДатаПодписи),
СвойстваПодписи.НеподтвержденнаяДатаПодписи, ТекущаяДатаСеанса());
Если Параметры.СертификатВерен <> Неопределено Тогда
СвойстваПодписи.ДатаПодписи = ТекущаяДатаСеанса();
СвойстваПодписи.ДатаПроверкиПодписи = СвойстваПодписи.ДатаПодписи;
СвойстваПодписи.ПодписьВерна = Параметры.СертификатВерен;
КонецЕсли;
@@ -3150,7 +3150,13 @@
Контекст.ИмяФайлаПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ИмяФайлаПодписи(Контекст.СоставИмениФайлаДанных.ИмяБезРасширения,
Строка(Контекст.ОписаниеПодписи.КомуВыданСертификат), Контекст.РасширениеДляФайловПодписи);
Иначе
Контекст.ИмяФайлаПодписи = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(Контекст.ИмяФайлаПодписи);
Если Не ОбщегоНазначенияКлиент.ЭтоWindowsКлиент() И СтрДлина(Контекст.ИмяФайлаПодписи) > 127 Тогда
СоставИмениФайлаПодписи = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Контекст.ИмяФайлаПодписи);
Контекст.ИмяФайлаПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ИмяФайлаПодписи(
СоставИмениФайлаПодписи.ИмяБезРасширения,"", СоставИмениФайлаПодписи.Расширение, Ложь);
Иначе
Контекст.ИмяФайлаПодписи = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(Контекст.ИмяФайлаПодписи);
КонецЕсли;
КонецЕсли;
СоставИмениФайлаПодписи = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Контекст.ИмяФайлаПодписи);
@@ -4456,12 +4462,13 @@
"ВыполнитьНаСторонеЦиклПослеОшибкиПолученияКонтейнераПодписиНаКлиенте", ЭтотОбъект);
Контекст.МенеджерКриптографии.НачатьПолучениеКонтейнераПодписейКриптографии(Оповещение, ДвоичныеДанные);
Возврат;
ИначеЕсли Контекст.Свойство("МенеджерКриптографии") И Контекст.МенеджерКриптографии = "ОблачнаяПодпись"
И ЭлектроннаяПодписьКлиент.ОбщиеНастройки().ДоступнаУсовершенствованнаяПодпись Тогда
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеПараметрыПодписиКриптографии();
ПараметрыПодписиКриптографии.ТипПодписи = Контекст.ОписаниеДанных.ТипПодписи;
Иначе
ПараметрыПодписиКриптографии = Неопределено;
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеПараметрыПодписиКриптографии();
СвойстваПодписиИзДвоичныхДанных = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписиИзДвоичныхДанных(
ДвоичныеДанные, ДобавкаВремени());
ПараметрыПодписиКриптографии.НеподтвержденнаяДатаПодписи = СвойстваПодписиИзДвоичныхДанных.ДатаПодписания;
ПараметрыПодписиКриптографии.ДатаПодписиИзМетки = СвойстваПодписиИзДвоичныхДанных.ДатаШтампаВремени;
ПараметрыПодписиКриптографии.ТипПодписи = СвойстваПодписиИзДвоичныхДанных.ТипПодписи;
КонецЕсли;
СвойстваПодписи = ПолучитьСвойстваПодписиПослеПодписания(ДвоичныеДанные, Контекст, ПараметрыПодписиКриптографии);
@@ -4477,10 +4484,8 @@
Процедура ВыполнитьПослеПолученияКонтейнераПодписи(КонтейнерПодписи, ДополнительныеПараметры) Экспорт
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
ДобавкаВремени = ДатаСеанса - ОбщегоНазначенияКлиент.ДатаУниверсальная();
ПараметрыПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(
КонтейнерПодписи, ДобавкаВремени, ДатаСеанса);
КонтейнерПодписи, ДобавкаВремени(), ОбщегоНазначенияКлиент.ДатаСеанса());
СвойстваПодписи = ПолучитьСвойстваПодписиПослеПодписания(ДополнительныеПараметры.ДвоичныеДанныеПодписи,
ДополнительныеПараметры.Контекст, ПараметрыПодписи);
@@ -4514,9 +4519,11 @@
Контекст.СвойстваСертификата,
Контекст.Форма.Комментарий,
ПользователиКлиент.АвторизованныйПользователь(),, ПараметрыПодписи);
СвойстваПодписи.ДатаПодписи = ?(ЗначениеЗаполнено(СвойстваПодписи.НеподтвержденнаяДатаПодписи),
СвойстваПодписи.НеподтвержденнаяДатаПодписи, ОбщегоНазначенияКлиент.ДатаСеанса());
Если Контекст.СертификатВерен <> Неопределено Тогда
СвойстваПодписи.ДатаПодписи = ОбщегоНазначенияКлиент.ДатаСеанса();
СвойстваПодписи.ДатаПроверкиПодписи = СвойстваПодписи.ДатаПодписи;
СвойстваПодписи.ПодписьВерна = Контекст.СертификатВерен;
КонецЕсли;
@@ -7504,20 +7511,20 @@
Процедура ВыполнитьНаСторонеЦиклПослеПодписанияПакета(МассивПодписей, Контекст)
ОшибкаНаКлиенте = Неопределено;
Если Контекст.Свойство("МенеджерКриптографии") И Контекст.МенеджерКриптографии = "ОблачнаяПодпись"
И ЭлектроннаяПодписьКлиент.ОбщиеНастройки().ДоступнаУсовершенствованнаяПодпись Тогда
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеПараметрыПодписиКриптографии();
ПараметрыПодписиКриптографии.ТипПодписи = Контекст.ОписаниеДанных.ТипПодписи;
Иначе
ПараметрыПодписиКриптографии = Неопределено;
КонецЕсли;
ДобавкаВремени = ДобавкаВремени();
Для Счетчик = 0 По МассивПодписей.Количество() - 1 Цикл
ДвоичныеДанные = МассивПодписей[Счетчик];
СвойстваПодписи = ПолучитьСвойстваПодписиПослеПодписания(ДвоичныеДанные, Контекст);
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеПараметрыПодписиКриптографии();
СвойстваПодписиИзДвоичныхДанных = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписиИзДвоичныхДанных(
ДвоичныеДанные, ДобавкаВремени);
ПараметрыПодписиКриптографии.НеподтвержденнаяДатаПодписи = СвойстваПодписиИзДвоичныхДанных.ДатаПодписания;
ПараметрыПодписиКриптографии.ДатаПодписиИзМетки = СвойстваПодписиИзДвоичныхДанных.ДатаШтампаВремени;
ПараметрыПодписиКриптографии.ТипПодписи = СвойстваПодписиИзДвоичныхДанных.ТипПодписи;
СвойстваПодписи = ПолучитьСвойстваПодписиПослеПодписания(ДвоичныеДанные, Контекст, ПараметрыПодписиКриптографии);
ЭлементДанных = Контекст.ОписаниеДанных.НаборДанных[Счетчик];
ЭлементДанных.Вставить("СвойстваПодписи", СвойстваПодписи);
@@ -17,9 +17,9 @@
ИмяФайлаПодписиБезРасширения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1%2%3",
ИмяБезРасширения, Разделитель, КомуВыданСертификат);
Если СтрДлина(ИмяФайлаПодписиБезРасширения) > 200 Тогда
Если СтрДлина(ИмяФайлаПодписиБезРасширения) > 120 Тогда
ИмяФайлаПодписиБезРасширения = ЭлектроннаяПодписьСлужебныйВызовСервера.СокращенноеИмяФайла(
ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайлаПодписиБезРасширения), 200);
ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайлаПодписиБезРасширения), 120);
КонецЕсли;
ИмяФайлаПодписи = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1.%2",
@@ -38,9 +38,9 @@
ИмяФайлаСертификатаБезРасширения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1%2%3",
ИмяБезРасширения, Разделитель, КомуВыданСертификат);
Если СтрДлина(ИмяФайлаСертификатаБезРасширения) > 200 Тогда
Если СтрДлина(ИмяФайлаСертификатаБезРасширения) > 120 Тогда
ИмяФайлаСертификатаБезРасширения = ЭлектроннаяПодписьСлужебныйВызовСервера.СокращенноеИмяФайла(
ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайлаСертификатаБезРасширения), 200);
ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайлаСертификатаБезРасширения), 120);
КонецЕсли;
ИмяФайлаСертификата = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1.%2",
+12 -9
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="b65b49b4-8951-4e63-b993-c52e30e693de">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="413a6931-3a76-410c-9e58-7f36c600307b">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="ebaa6a0c-3613-4df3-8fa0-d53bbd450168"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="5639de53-6a16-4c43-8333-e6e165a321af"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="78ad8323-c90f-438f-acc4-7afd8b07a533"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="9882b018-3183-4b0e-9581-ab7d41d379be"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="2554759a-ad9d-4ce1-b205-fb4b9e40b1c9"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="5fbbcf9b-e8a1-4c34-84e4-c6c9d657ae4f"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="29da4621-3d03-4c2f-bb03-b5f204b1f396"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="310a3f98-5c73-4be7-ad13-eb0ec91f088b"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="3836cd09-cf50-4201-8b7f-fddd4c21035b"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="adb14448-101a-4e10-bc96-02839346b607"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="18d9a69d-dd15-4b64-9410-792a98dbe1da"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="b5440c52-f637-4e32-8321-38908258b84f"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="020e190d-3aeb-44ab-9d86-d4228c221073"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="d47e2637-8cfd-4ffd-b25b-9035cbee744c"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.7.357</version>
<version>3.1.7.369</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -916,6 +916,7 @@
<commonModules>CommonModule.ИнтеграцияПодсистемБСПКлиент</commonModules>
<commonModules>CommonModule.ИнтеграцияПодсистемБСПКлиентПовтИсп</commonModules>
<commonModules>CommonModule.ИнтеграцияПодсистемБСППовтИсп</commonModules>
<commonModules>CommonModule.ИнтерфейсODataПереопределяемый</commonModules>
<commonModules>CommonModule.ИнтерфейсODataСлужебный</commonModules>
<commonModules>CommonModule.ИнтерфейсODataСлужебныйПовтИсп</commonModules>
<commonModules>CommonModule.ИнформацияПриЗапуске</commonModules>
@@ -1419,6 +1420,7 @@
<eventSubscriptions>EventSubscription.УстановитьПометкуУдаленияЗадач</eventSubscriptions>
<eventSubscriptions>EventSubscription.УстановитьПометкуУдаленияПрисоединенныхФайлов</eventSubscriptions>
<eventSubscriptions>EventSubscription.УстановитьПометкуУдаленияПрисоединенныхФайловДокументовВзаимодействия</eventSubscriptions>
<eventSubscriptions>EventSubscription.УстановитьПрефиксИнформационнойБазыИОрганизацииНомеруДокументаЗащитаПДн</eventSubscriptions>
<eventSubscriptions>EventSubscription.УстановитьСнятьПометкуУдаленияЗаметок</eventSubscriptions>
<eventSubscriptions>EventSubscription.УстановитьСтатусИзмененияПометкиУдаленияПользователя</eventSubscriptions>
<scheduledJobs>ScheduledJob.ЗагрузкаКурсовВалют</scheduledJobs>
@@ -1789,6 +1791,7 @@
<constants>Constant.ПутьКТомуБезУчетаРегиональныхНастроек</constants>
<constants>Constant.РазрешенныеНеаккредитованныеУЦ</constants>
<constants>Constant.РазрешитьВыполнениеДООРегламентнымиЗаданиямиВМоделиСервиса</constants>
<constants>Constant.РегистрироватьПоказателиСерверныхОповещений</constants>
<constants>Constant.РежимОчисткиФайлов</constants>
<constants>Constant.СведенияОБлокируемыхОбъектах</constants>
<constants>Constant.СведенияОбОбновленииИБ</constants>
@@ -1 +1 @@
{6,1,1,dbde9497-7925-4e30-a3c0-609f52c17db7,1,6467f221-c30a-42da-8b2a-7a0f90a23116,"3.1.7.357","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6778,1,0,b65b49b4-8951-4e63-b993-c52e30e693de,b65b49b4-8951-4e63-b993-c52e30e693de,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7Line truncated
{6,1,1,e33bd96d-990a-4c88-8604-cfb09f360db0,1,15e03332-cd57-4966-8f93-62778be64571,"3.1.7.369","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6786,1,0,413a6931-3a76-410c-9e58-7f36c600307b,413a6931-3a76-410c-9e58-7f36c600307b,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7Line truncated
@@ -0,0 +1,45 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОписаниеПеременных
Перем СтароеЗначение;
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
СтароеЗначение = Константы.ДоставлятьСерверныеОповещенияБезСистемыВзаимодействия.Получить();
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если СтароеЗначение <> Значение Тогда
СерверныеОповещения.ПриИзмененииКонстантыДоставлятьСерверныеОповещенияБезСистемыВзаимодействия(Значение);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли
@@ -0,0 +1,45 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОписаниеПеременных
Перем СтароеЗначение;
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
СтароеЗначение = Константы.РегистрироватьПоказателиСерверныхОповещений.Получить();
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если Значение <> СтароеЗначение Тогда
СерверныеОповещения.ПриИзмененииКонстантыРегистрироватьПоказателиСерверныхОповещений(Значение);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Constant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d20739a3-a149-4b64-b9ca-4a76aca06cb8">
<producedTypes>
<managerType typeId="95708129-c6c6-47c7-aac9-4d41bf61babf" valueTypeId="05f90a46-05c1-4b48-be07-71514c3def78"/>
<valueManagerType typeId="7449be8f-339a-4421-97ab-83ef31060e78" valueTypeId="67e39b94-a64a-41ae-8316-b047ae5c24e1"/>
<valueKeyType typeId="fbf68ff5-662e-4084-8037-ee3912a499fb" valueTypeId="da9abf0e-50d5-43b3-9db7-f5ca79549583"/>
</producedTypes>
<name>РегистрироватьПоказателиСерверныхОповещений</name>
<synonym>
<key>ru</key>
<value>Регистрировать показатели серверных оповещений</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<useStandardCommands>true</useStandardCommands>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataLockControlMode>Managed</dataLockControlMode>
</mdclass:Constant>
@@ -132,17 +132,19 @@
Возврат;
КонецПопытки;
ТекущаяДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
ЗаголовокВопроса = НСтр("ru = 'Блокировка работы пользователей'");
Если КоличествоСеансов > 1 И Объект.НачалоДействияБлокировки < ОбщегоНазначенияКлиент.ДатаСеанса() + 5 * 60 Тогда
Если КоличествоСеансов > 1 И Объект.НачалоДействияБлокировки < ТекущаяДатаСеанса + 10 * 60 Тогда
ТекстВопроса = НСтр("ru = 'Указано слишком близкое время начала действия блокировки, к которому пользователи могут не успеть сохранить все свои данные и завершить работу.
|Рекомендуется установить время начала на 5 минут относительно текущего времени.'");
|Рекомендуется установить время начала на 10 минут относительно текущего времени.'");
Кнопки = Новый СписокЗначений;
Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Заблокировать через 5 минут'"));
Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Заблокировать через 10 минут'"));
Кнопки.Добавить(КодВозвратаДиалога.Нет, НСтр("ru = 'Заблокировать сейчас'"));
Кнопки.Добавить(КодВозвратаДиалога.Отмена, НСтр("ru = 'Отмена'"));
Оповещение = Новый ОписаниеОповещения("ПрименитьЗавершение", ЭтотОбъект, "СлишкомБлизкоеВремяБлокировки");
ПоказатьВопрос(Оповещение, ТекстВопроса, Кнопки,,, ЗаголовокВопроса);
ИначеЕсли Объект.НачалоДействияБлокировки > ОбщегоНазначенияКлиент.ДатаСеанса() + 60 * 60 Тогда
ИначеЕсли Объект.НачалоДействияБлокировки > ТекущаяДатаСеанса + 60 * 60 Тогда
ТекстВопроса = НСтр("ru = 'Указано слишком большое время начала действия блокировки (более, чем через час).
|Запланировать блокировку на указанное время?'");
Кнопки = Новый СписокЗначений;
@@ -152,7 +154,7 @@
Оповещение = Новый ОписаниеОповещения("ПрименитьЗавершение", ЭтотОбъект, "СлишкомБольшоеВремяБлокировки");
ПоказатьВопрос(Оповещение, ТекстВопроса, Кнопки,,, ЗаголовокВопроса);
Иначе
Если Объект.НачалоДействияБлокировки - ОбщегоНазначенияКлиент.ДатаСеанса() > 15*60 Тогда
Если Объект.НачалоДействияБлокировки - ТекущаяДатаСеанса > 15*60 Тогда
ТекстВопроса = НСтр("ru = 'Завершение работы всех активных пользователей будет произведено в период с %1 по %2.
|Продолжить?'");
Иначе
@@ -176,15 +178,17 @@
&НаКлиенте
Процедура ПрименитьЗавершение(Ответ, Вариант) Экспорт
ТекущаяДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
Если Вариант = "СлишкомБлизкоеВремяБлокировки" Тогда
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.НачалоДействияБлокировки = ОбщегоНазначенияКлиент.ДатаСеанса() + 5 * 60;
Объект.НачалоДействияБлокировки = ТекущаяДатаСеанса + 10 * 60;
ИначеЕсли Ответ <> КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
ИначеЕсли Вариант = "СлишкомБольшоеВремяБлокировки" Тогда
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.НачалоДействияБлокировки = ОбщегоНазначенияКлиент.ДатаСеанса() + 5 * 60;
Объект.НачалоДействияБлокировки = ТекущаяДатаСеанса + 10 * 60;
ИначеЕсли Ответ <> КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
@@ -508,7 +512,7 @@
КонецЕсли;
ПоказатьОповещениеПользователя(НСтр("ru = 'Блокировка работы пользователей'"),
"e1cib/app/Обработка.БлокировкаРаботыПользователей",
Новый ОписаниеОповещения("ОбработкаОткрытияФормыБлокировкаРаботыПрограммы", СоединенияИБКлиент),
?(Объект.ЗапретитьРаботуПользователей, НСтр("ru = 'Блокировка установлена.'"), НСтр("ru = 'Блокировка снята.'")),
БиблиотекаКартинок.Информация32);
СоединенияИБКлиент.УстановитьРежимЗавершенияРаботыПользователей(Объект.ЗапретитьРаботуПользователей);
@@ -318,7 +318,7 @@
<id>26</id>
<title>
<key>ru</key>
<value>В течение ближайших двух минут работа всех пользователей в программе будет завершена автоматически.
<value>В течение ближайших семи минут работа всех пользователей в программе будет завершена автоматически.
При этом им будет выведено предупреждение, чтобы перед выходом из программы они могли сохранить введенные данные.</value>
</title>
<visible>true</visible>
@@ -191,7 +191,7 @@
Процедура ОжидатьЗавершенияРаботыПользователей()
ПродолжительностьЗавершенияРаботыПользователей = ПродолжительностьЗавершенияРаботыПользователей + 1;
Если ПродолжительностьЗавершенияРаботыПользователей < 3 Тогда
Если ПродолжительностьЗавершенияРаботыПользователей < 8 Тогда
Возврат;
КонецЕсли;
@@ -101,7 +101,7 @@
<li><b>ОжиданиеМин</b> - время отсрочки начала блокировки программы в минутах;</li>
<li><b>ДлительностьМин</b> - длительность блокировки в минутах.</li></ul><p></p>
<p>Например, команда может быть такой: </p>
<ul><li> /C ЗавершитьРаботуПользователей, ИмяАдминистратора=Администратор, ПарольАдминистратора=1, Сообщение=Необходимо завершить работу в программе для внепланового обновления, КодРазрешения=Обновление, ОжиданиеМин=5, ДлительностьМин=30</li></ul><h3>Дополнительные возможности и ограничения</h3>
<ul><li> /C ЗавершитьРаботуПользователей, ИмяАдминистратора=Администратор, ПарольАдминистратора=1, Сообщение=Необходимо завершить работу в программе для внепланового обновления, КодРазрешения=Обновление, ОжиданиеМин=10, ДлительностьМин=30</li></ul><h3>Дополнительные возможности и ограничения</h3>
<ul><li>
<div>В клиент-серверном варианте работы также есть возможность заблокировать выполнение регламентных и фоновых заданий. Для этого может потребоваться ввести дополнительные <a href="CommonForm.ПараметрыАдминистрированияПрограммы/Help">параметры</a> для подключения к кластеру серверов по команде <strong>Параметры администрирования программы</strong>. Кроме того, для выполнения действий установки и снятия блокировки работы пользователей также можно использовать утилиту администрирования кластера серверов 1С:Предприятия. </div>
</li>
@@ -50,7 +50,7 @@
// Если блокировка не установлена, можно предположить, что
// пользователь открыл форму для установки блокировки.
// Поэтому устанавливаем дату блокировки равной текущей дате.
НачалоДействияБлокировки = НачалоМинуты(ТекущаяДатаСеанса() + 5 * 60);
НачалоДействияБлокировки = НачалоМинуты(ТекущаяДатаСеанса() + 15 * 60);
КонецЕсли;
КонецПроцедуры
@@ -60,6 +60,7 @@
Если Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
Блокировка = Новый БлокировкаСеансов;
Блокировка.КодРазрешения = КодДляРазблокировки;
Блокировка.Параметр = СерверныеОповещения.КлючСеанса();
Иначе
Блокировка = СоединенияИБ.НовыеПараметрыБлокировкиСоединений();
КонецЕсли;
@@ -72,6 +73,10 @@
Если Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
УстановитьБлокировкуСеансов(Блокировка);
УстановитьПривилегированныйРежим(Истина);
СоединенияИБ.ОтправитьСерверноеОповещениеОбУстановкеБлокировки();
УстановитьПривилегированныйРежим(Ложь);
Иначе
СоединенияИБ.УстановитьБлокировкуСеансовОбластиДанных(Блокировка);
КонецЕсли;
@@ -45,19 +45,19 @@
Функция ВерсияКалендарей() Экспорт
Возврат 46;
Возврат 47;
КонецФункции
Функция ВерсияОбновленияПроизводственныхКалендарей() Экспорт
Возврат "3.1.3.195";
Возврат "3.1.7.361";
КонецФункции
Функция ВерсияОбновленияДанныхПроизводственныхКалендарей() Экспорт
Возврат "3.1.7.258";
Возврат "3.1.7.361";
КонецФункции
@@ -47,6 +47,9 @@
<Item Calendar="01" Year="2023" DayType="Предпраздничный" Date="20231004" SwapDate=""/>
<Item Calendar="01" Year="2023" DayType="Праздник" Date="20231005" SwapDate=""/>
<Item Calendar="01" Year="2023" DayType="Воскресенье" Date="20231006" SwapDate="20231001"/>
<Item Calendar="01" Year="2024" DayType="Предпраздничный" Date="20241004" SwapDate=""/>
<Item Calendar="01" Year="2024" DayType="Праздник" Date="20241005" SwapDate="20241007"/>
<Item Calendar="01" Year="2024" DayType="Суббота" Date="20241007" SwapDate="20241005"/>
<Item Calendar="02" Year="2014" DayType="Праздник" Date="20140728" SwapDate=""/>
<Item Calendar="02" Year="2014" DayType="Предпраздничный" Date="20141003" SwapDate=""/>
<Item Calendar="02" Year="2014" DayType="Праздник" Date="20141004" SwapDate="20141006"/>
@@ -107,6 +110,8 @@
<Item Calendar="02" Year="2023" DayType="Праздник" Date="20230628" SwapDate=""/>
<Item Calendar="02" Year="2023" DayType="Предпраздничный" Date="20231010" SwapDate=""/>
<Item Calendar="02" Year="2023" DayType="Праздник" Date="20231011" SwapDate=""/>
<Item Calendar="02" Year="2024" DayType="Предпраздничный" Date="20241010" SwapDate=""/>
<Item Calendar="02" Year="2024" DayType="Праздник" Date="20241011" SwapDate=""/>
<Item Calendar="03" Year="2016" DayType="Предпраздничный" Date="20160208" SwapDate=""/>
<Item Calendar="03" Year="2016" DayType="Праздник" Date="20160209" SwapDate=""/>
<Item Calendar="03" Year="2017" DayType="Праздник" Date="20170227" SwapDate=""/>
@@ -122,6 +127,8 @@
<Item Calendar="03" Year="2022" DayType="Праздник" Date="20220202" SwapDate=""/>
<Item Calendar="03" Year="2023" DayType="Предпраздничный" Date="20230220" SwapDate=""/>
<Item Calendar="03" Year="2023" DayType="Праздник" Date="20230221" SwapDate=""/>
<Item Calendar="03" Year="2024" DayType="Праздник" Date="20240211" SwapDate="20240212"/>
<Item Calendar="03" Year="2024" DayType="Воскресенье" Date="20240212" SwapDate="20240211"/>
<Item Calendar="04" Year="2016" DayType="Праздник" Date="20160214" SwapDate="20160215"/>
<Item Calendar="04" Year="2016" DayType="Воскресенье" Date="20160215" SwapDate="20160214"/>
<Item Calendar="04" Year="2017" DayType="Предпраздничный" Date="20170203" SwapDate=""/>
@@ -206,6 +213,10 @@
<Item Calendar="05" Year="2023" DayType="Праздник" Date="20230726" SwapDate=""/>
<Item Calendar="05" Year="2023" DayType="Предпраздничный" Date="20230914" SwapDate=""/>
<Item Calendar="05" Year="2023" DayType="Праздник" Date="20230915" SwapDate=""/>
<Item Calendar="05" Year="2024" DayType="Предпраздничный" Date="20240725" SwapDate=""/>
<Item Calendar="05" Year="2024" DayType="Праздник" Date="20240726" SwapDate=""/>
<Item Calendar="05" Year="2024" DayType="Праздник" Date="20240915" SwapDate="20240916"/>
<Item Calendar="05" Year="2024" DayType="Воскресенье" Date="20240916" SwapDate="20240915"/>
<Item Calendar="06" Year="2016" DayType="Предпраздничный" Date="20160705" SwapDate=""/>
<Item Calendar="06" Year="2016" DayType="Праздник" Date="20160706" SwapDate=""/>
<Item Calendar="06" Year="2016" DayType="Праздник" Date="20160707" SwapDate=""/>
@@ -303,6 +314,11 @@
<Item Calendar="07" Year="2023" DayType="Праздник" Date="20230628" SwapDate=""/>
<Item Calendar="07" Year="2023" DayType="Праздник" Date="20230901" SwapDate=""/>
<Item Calendar="07" Year="2023" DayType="Праздник" Date="20230920" SwapDate=""/>
<Item Calendar="07" Year="2024" DayType="Предпраздничный" Date="20240327" SwapDate=""/>
<Item Calendar="07" Year="2024" DayType="Праздник" Date="20240328" SwapDate=""/>
<Item Calendar="07" Year="2024" DayType="Нерабочий" Date="20240521" SwapDate=""/>
<Item Calendar="07" Year="2024" DayType="Праздник" Date="20240901" SwapDate=""/>
<Item Calendar="07" Year="2024" DayType="Праздник" Date="20240920" SwapDate=""/>
<Item Calendar="08" Year="2016" DayType="Предпраздничный" Date="20160208" SwapDate=""/>
<Item Calendar="08" Year="2016" DayType="Праздник" Date="20160209" SwapDate=""/>
<Item Calendar="08" Year="2016" DayType="Предпраздничный" Date="20160404" SwapDate=""/>
@@ -370,6 +386,11 @@
<Item Calendar="08" Year="2023" DayType="Предпраздничный" Date="20230704" SwapDate=""/>
<Item Calendar="08" Year="2023" DayType="Праздник" Date="20230705" SwapDate=""/>
<Item Calendar="08" Year="2023" DayType="Нерабочий" Date="20231228" SwapDate=""/>
<Item Calendar="08" Year="2024" DayType="Праздник" Date="20240211" SwapDate="20240212"/>
<Item Calendar="08" Year="2024" DayType="Воскресенье" Date="20240212" SwapDate="20240211"/>
<Item Calendar="08" Year="2024" DayType="Предпраздничный" Date="20240704" SwapDate=""/>
<Item Calendar="08" Year="2024" DayType="Праздник" Date="20240705" SwapDate=""/>
<Item Calendar="08" Year="2024" DayType="Нерабочий" Date="20241228" SwapDate=""/>
<Item Calendar="09" Year="2016" DayType="Праздник" Date="20160503" SwapDate="20160504"/>
<Item Calendar="09" Year="2016" DayType="Суббота" Date="20160504" SwapDate="20160503"/>
<Item Calendar="09" Year="2016" DayType="Нерабочий" Date="20160705" SwapDate=""/>
@@ -414,6 +435,11 @@
<Item Calendar="09" Year="2023" DayType="Предпраздничный" Date="20230502" SwapDate=""/>
<Item Calendar="09" Year="2023" DayType="Праздник" Date="20230503" SwapDate=""/>
<Item Calendar="09" Year="2023" DayType="Нерабочий" Date="20230628" SwapDate=""/>
<Item Calendar="09" Year="2024" DayType="Праздник" Date="20240503" SwapDate="20240505"/>
<Item Calendar="09" Year="2024" DayType="Воскресенье" Date="20240505" SwapDate="20240503"/>
<Item Calendar="09" Year="2024" DayType="Предпраздничный" Date="20240906" SwapDate=""/>
<Item Calendar="09" Year="2024" DayType="Праздник" Date="20240907" SwapDate="20240909"/>
<Item Calendar="09" Year="2024" DayType="Суббота" Date="20240909" SwapDate="20240907"/>
<Item Calendar="11" Year="2016" DayType="Праздник" Date="20160822" SwapDate=""/>
<Item Calendar="11" Year="2017" DayType="Предпраздничный" Date="20170821" SwapDate=""/>
<Item Calendar="11" Year="2017" DayType="Праздник" Date="20170822" SwapDate=""/>
@@ -427,6 +453,8 @@
<Item Calendar="11" Year="2022" DayType="Праздник" Date="20220822" SwapDate=""/>
<Item Calendar="11" Year="2023" DayType="Предпраздничный" Date="20230821" SwapDate=""/>
<Item Calendar="11" Year="2023" DayType="Праздник" Date="20230822" SwapDate=""/>
<Item Calendar="11" Year="2024" DayType="Предпраздничный" Date="20240821" SwapDate=""/>
<Item Calendar="11" Year="2024" DayType="Праздник" Date="20240822" SwapDate=""/>
<Item Calendar="14" Year="2016" DayType="Предпраздничный" Date="20160426" SwapDate=""/>
<Item Calendar="14" Year="2016" DayType="Праздник" Date="20160427" SwapDate=""/>
<Item Calendar="14" Year="2016" DayType="Предпраздничный" Date="20160620" SwapDate=""/>
@@ -458,6 +486,11 @@
<Item Calendar="14" Year="2023" DayType="Праздник" Date="20230427" SwapDate=""/>
<Item Calendar="14" Year="2023" DayType="Предпраздничный" Date="20230620" SwapDate=""/>
<Item Calendar="14" Year="2023" DayType="Праздник" Date="20230621" SwapDate=""/>
<Item Calendar="14" Year="2024" DayType="Предпраздничный" Date="20240426" SwapDate=""/>
<Item Calendar="14" Year="2024" DayType="Праздник" Date="20240427" SwapDate="20240429"/>
<Item Calendar="14" Year="2024" DayType="Суббота" Date="20240429" SwapDate="20240427"/>
<Item Calendar="14" Year="2024" DayType="Предпраздничный" Date="20240620" SwapDate=""/>
<Item Calendar="14" Year="2024" DayType="Праздник" Date="20240621" SwapDate=""/>
<Item Calendar="15" Year="2018" DayType="Праздник" Date="20181119" SwapDate=""/>
<Item Calendar="15" Year="2019" DayType="Праздник" Date="20191118" SwapDate=""/>
<Item Calendar="15" Year="2020" DayType="Праздник" Date="20201123" SwapDate=""/>
@@ -515,6 +548,10 @@
<Item Calendar="16" Year="2023" DayType="Предпраздничный" Date="20230829" SwapDate=""/>
<Item Calendar="16" Year="2023" DayType="Праздник" Date="20230830" SwapDate=""/>
<Item Calendar="16" Year="2023" DayType="Праздник" Date="20231106" SwapDate="20231104"/>
<Item Calendar="16" Year="2024" DayType="Предпраздничный" Date="20240829" SwapDate=""/>
<Item Calendar="16" Year="2024" DayType="Праздник" Date="20240830" SwapDate=""/>
<Item Calendar="16" Year="2024" DayType="Предпраздничный" Date="20241105" SwapDate=""/>
<Item Calendar="16" Year="2024" DayType="Праздник" Date="20241106" SwapDate=""/>
<Item Calendar="17" Year="2016" DayType="Предпраздничный" Date="20160208" SwapDate=""/>
<Item Calendar="17" Year="2016" DayType="Праздник" Date="20160209" SwapDate=""/>
<Item Calendar="17" Year="2016" DayType="Предпраздничный" Date="20160505" SwapDate=""/>
@@ -580,6 +617,12 @@
<Item Calendar="17" Year="2023" DayType="Суббота" Date="20230510" SwapDate="20230506"/>
<Item Calendar="17" Year="2023" DayType="Предпраздничный" Date="20230814" SwapDate=""/>
<Item Calendar="17" Year="2023" DayType="Праздник" Date="20230815" SwapDate=""/>
<Item Calendar="17" Year="2024" DayType="Праздник" Date="20240211" SwapDate="20240212"/>
<Item Calendar="17" Year="2024" DayType="Воскресенье" Date="20240212" SwapDate="20240211"/>
<Item Calendar="17" Year="2024" DayType="Предпраздничный" Date="20240505" SwapDate="20240510"/>
<Item Calendar="17" Year="2024" DayType="Праздник" Date="20240506" SwapDate=""/>
<Item Calendar="17" Year="2024" DayType="Предпраздничный" Date="20240814" SwapDate=""/>
<Item Calendar="17" Year="2024" DayType="Праздник" Date="20240815" SwapDate=""/>
<Item Calendar="20" Year="2016" DayType="Предпраздничный" Date="20160322" SwapDate=""/>
<Item Calendar="20" Year="2016" DayType="Праздник" Date="20160323" SwapDate=""/>
<Item Calendar="20" Year="2016" DayType="Предпраздничный" Date="20160415" SwapDate=""/>
@@ -670,6 +713,11 @@
<Item Calendar="20" Year="2023" DayType="Праздник" Date="20230421" SwapDate=""/>
<Item Calendar="20" Year="2023" DayType="Предпраздничный" Date="20230627" SwapDate=""/>
<Item Calendar="20" Year="2023" DayType="Праздник" Date="20230628" SwapDate=""/>
<Item Calendar="20" Year="2024" DayType="Предпраздничный" Date="20240322" SwapDate=""/>
<Item Calendar="20" Year="2024" DayType="Праздник" Date="20240323" SwapDate="20240325"/>
<Item Calendar="20" Year="2024" DayType="Суббота" Date="20240325" SwapDate="20240323"/>
<Item Calendar="20" Year="2024" DayType="Предпраздничный" Date="20240415" SwapDate=""/>
<Item Calendar="20" Year="2024" DayType="Праздник" Date="20240416" SwapDate=""/>
<Item Calendar="21" Year="2016" DayType="Предпраздничный" Date="20160623" SwapDate=""/>
<Item Calendar="21" Year="2016" DayType="Праздник" Date="20160624" SwapDate=""/>
<Item Calendar="21" Year="2017" DayType="Предпраздничный" Date="20170623" SwapDate=""/>
@@ -687,6 +735,7 @@
<Item Calendar="21" Year="2023" DayType="Предпраздничный" Date="20230623" SwapDate=""/>
<Item Calendar="21" Year="2023" DayType="Праздник" Date="20230624" SwapDate="20230626"/>
<Item Calendar="21" Year="2023" DayType="Суббота" Date="20230626" SwapDate="20230624"/>
<Item Calendar="21" Year="2024" DayType="Праздник" Date="20240624" SwapDate=""/>
<Item Calendar="26" Year="2016" DayType="Праздник" Date="20160510" SwapDate=""/>
<Item Calendar="26" Year="2017" DayType="Предпраздничный" Date="20170424" SwapDate=""/>
<Item Calendar="26" Year="2017" DayType="Праздник" Date="20170425" SwapDate=""/>
@@ -700,6 +749,8 @@
<Item Calendar="26" Year="2022" DayType="Праздник" Date="20220503" SwapDate=""/>
<Item Calendar="26" Year="2023" DayType="Предпраздничный" Date="20230424" SwapDate=""/>
<Item Calendar="26" Year="2023" DayType="Праздник" Date="20230425" SwapDate=""/>
<Item Calendar="26" Year="2024" DayType="Предпраздничный" Date="20240513" SwapDate=""/>
<Item Calendar="26" Year="2024" DayType="Праздник" Date="20240514" SwapDate=""/>
<Item Calendar="31" Year="2020" DayType="Праздник" Date="20200712" SwapDate="20200713"/>
<Item Calendar="31" Year="2020" DayType="Воскресенье" Date="20200713" SwapDate="20200712"/>
<Item Calendar="31" Year="2021" DayType="Праздник" Date="20210712" SwapDate=""/>
@@ -707,6 +758,8 @@
<Item Calendar="31" Year="2022" DayType="Праздник" Date="20220712" SwapDate=""/>
<Item Calendar="31" Year="2023" DayType="Предпраздничный" Date="20230711" SwapDate=""/>
<Item Calendar="31" Year="2023" DayType="Праздник" Date="20230712" SwapDate=""/>
<Item Calendar="31" Year="2024" DayType="Предпраздничный" Date="20240711" SwapDate=""/>
<Item Calendar="31" Year="2024" DayType="Праздник" Date="20240712" SwapDate=""/>
<Item Calendar="58" Year="2016" DayType="Праздник" Date="20160510" SwapDate=""/>
<Item Calendar="58" Year="2017" DayType="Предпраздничный" Date="20170424" SwapDate=""/>
<Item Calendar="58" Year="2017" DayType="Праздник" Date="20170425" SwapDate=""/>
@@ -721,6 +774,8 @@
<Item Calendar="58" Year="2022" DayType="Суббота" Date="20220504" SwapDate="20220503"/>
<Item Calendar="58" Year="2023" DayType="Предпраздничный" Date="20230424" SwapDate=""/>
<Item Calendar="58" Year="2023" DayType="Праздник" Date="20230425" SwapDate=""/>
<Item Calendar="58" Year="2024" DayType="Предпраздничный" Date="20240513" SwapDate=""/>
<Item Calendar="58" Year="2024" DayType="Праздник" Date="20240514" SwapDate=""/>
<Item Calendar="64" Year="2016" DayType="Праздник" Date="20160510" SwapDate=""/>
<Item Calendar="64" Year="2017" DayType="Предпраздничный" Date="20170424" SwapDate=""/>
<Item Calendar="64" Year="2017" DayType="Праздник" Date="20170425" SwapDate=""/>
@@ -735,6 +790,8 @@
<Item Calendar="64" Year="2022" DayType="Суббота" Date="20220504" SwapDate="20220503"/>
<Item Calendar="64" Year="2023" DayType="Предпраздничный" Date="20230424" SwapDate=""/>
<Item Calendar="64" Year="2023" DayType="Праздник" Date="20230425" SwapDate=""/>
<Item Calendar="64" Year="2024" DayType="Предпраздничный" Date="20240513" SwapDate=""/>
<Item Calendar="64" Year="2024" DayType="Праздник" Date="20240514" SwapDate=""/>
<Item Calendar="75" Year="2016" DayType="Предпраздничный" Date="20160208" SwapDate=""/>
<Item Calendar="75" Year="2016" DayType="Праздник" Date="20160209" SwapDate=""/>
<Item Calendar="75" Year="2017" DayType="Праздник" Date="20170227" SwapDate=""/>
@@ -750,6 +807,8 @@
<Item Calendar="75" Year="2022" DayType="Праздник" Date="20220202" SwapDate=""/>
<Item Calendar="75" Year="2023" DayType="Предпраздничный" Date="20230220" SwapDate=""/>
<Item Calendar="75" Year="2023" DayType="Праздник" Date="20230221" SwapDate=""/>
<Item Calendar="75" Year="2024" DayType="Праздник" Date="20240211" SwapDate="20240212"/>
<Item Calendar="75" Year="2024" DayType="Воскресенье" Date="20240212" SwapDate="20240211"/>
<Item Calendar="85" Year="2016" DayType="Предпраздничный" Date="20160208" SwapDate=""/>
<Item Calendar="85" Year="2016" DayType="Праздник" Date="20160209" SwapDate=""/>
<Item Calendar="85" Year="2017" DayType="Праздник" Date="20170227" SwapDate=""/>
@@ -765,6 +824,8 @@
<Item Calendar="85" Year="2022" DayType="Праздник" Date="20220202" SwapDate=""/>
<Item Calendar="85" Year="2023" DayType="Предпраздничный" Date="20230220" SwapDate=""/>
<Item Calendar="85" Year="2023" DayType="Праздник" Date="20230221" SwapDate=""/>
<Item Calendar="85" Year="2024" DayType="Праздник" Date="20240211" SwapDate="20240212"/>
<Item Calendar="85" Year="2024" DayType="Воскресенье" Date="20240212" SwapDate="20240211"/>
<Item Calendar="91" Year="2016" DayType="Предпраздничный" Date="20160317" SwapDate=""/>
<Item Calendar="91" Year="2016" DayType="Праздник" Date="20160318" SwapDate=""/>
<Item Calendar="91" Year="2016" DayType="Праздник" Date="20160620" SwapDate=""/>
@@ -818,8 +879,9 @@
<Item Calendar="91" Year="2023" DayType="Предпраздничный" Date="20230420" SwapDate=""/>
<Item Calendar="91" Year="2023" DayType="Праздник" Date="20230421" SwapDate=""/>
<Item Calendar="91" Year="2023" DayType="Праздник" Date="20230605" SwapDate=""/>
<Item Calendar="91" Year="2023" DayType="Предпраздничный" Date="20230627" SwapDate=""/>
<Item Calendar="91" Year="2023" DayType="Праздник" Date="20230628" SwapDate=""/>
<Item Calendar="91" Year="2023" DayType="Предпраздничный" Date="20230629" SwapDate=""/>
<Item Calendar="91" Year="2023" DayType="Праздник" Date="20230630" SwapDate=""/>
<Item Calendar="91" Year="2024" DayType="Праздник" Date="20240318" SwapDate=""/>
<Item Calendar="92" Year="2016" DayType="Предпраздничный" Date="20160317" SwapDate=""/>
<Item Calendar="92" Year="2016" DayType="Праздник" Date="20160318" SwapDate=""/>
<Item Calendar="92" Year="2017" DayType="Предпраздничный" Date="20170317" SwapDate=""/>
@@ -832,6 +894,19 @@
<Item Calendar="92" Year="2023" DayType="Суббота" Date="20230320" SwapDate="20230318"/>
<Item Calendar="92" Year="2023" DayType="Предпраздничный" Date="20230613" SwapDate=""/>
<Item Calendar="92" Year="2023" DayType="Праздник" Date="20230614" SwapDate=""/>
<Item Calendar="92" Year="2024" DayType="Праздник" Date="20240318" SwapDate=""/>
<Item Calendar="92" Year="2024" DayType="Предпраздничный" Date="20240613" SwapDate=""/>
<Item Calendar="92" Year="2024" DayType="Праздник" Date="20240614" SwapDate=""/>
<Item Calendar="93" Year="2023" DayType="Праздник" Date="20230417" SwapDate=""/>
<Item Calendar="93" Year="2023" DayType="Предпраздничный" Date="20230510" SwapDate=""/>
<Item Calendar="93" Year="2023" DayType="Праздник" Date="20230511" SwapDate=""/>
<Item Calendar="93" Year="2023" DayType="Праздник" Date="20230605" SwapDate=""/>
<Item Calendar="93" Year="2023" DayType="Предпраздничный" Date="20230929" SwapDate=""/>
<Item Calendar="93" Year="2023" DayType="Праздник" Date="20230930" SwapDate="20231002"/>
<Item Calendar="93" Year="2023" DayType="Суббота" Date="20231002" SwapDate="20230930"/>
<Item Calendar="93" Year="2024" DayType="Праздник" Date="20240511" SwapDate="20240513"/>
<Item Calendar="93" Year="2024" DayType="Суббота" Date="20240513" SwapDate="20240511"/>
<Item Calendar="93" Year="2024" DayType="Праздник" Date="20240930" SwapDate=""/>
<Item Calendar="РФ" Year="2001" DayType="Праздник" Date="20010101" SwapDate=""/>
<Item Calendar="РФ" Year="2001" DayType="Праздник" Date="20010102" SwapDate=""/>
<Item Calendar="РФ" Year="2001" DayType="Праздник" Date="20010107" SwapDate="20010108"/>
@@ -1369,4 +1444,28 @@
<Item Calendar="РФ" Year="2023" DayType="Предпраздничный" Date="20231103" SwapDate=""/>
<Item Calendar="РФ" Year="2023" DayType="Праздник" Date="20231104" SwapDate="20231106"/>
<Item Calendar="РФ" Year="2023" DayType="Суббота" Date="20231106" SwapDate="20231104"/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20240101" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20240102" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20240103" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20240104" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20240105" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20240106" SwapDate="20240502"/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20240107" SwapDate="20240503"/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20240108" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Предпраздничный" Date="20240222" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20240223" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Предпраздничный" Date="20240307" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20240308" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Предпраздничный" Date="20240430" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20240501" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Суббота" Date="20240502" SwapDate="20240106"/>
<Item Calendar="РФ" Year="2024" DayType="Воскресенье" Date="20240503" SwapDate="20240107"/>
<Item Calendar="РФ" Year="2024" DayType="Рабочий" Date="20240505" SwapDate="20240510"/>
<Item Calendar="РФ" Year="2024" DayType="Предпраздничный" Date="20240508" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20240509" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Воскресенье" Date="20240510" SwapDate="20240505"/>
<Item Calendar="РФ" Year="2024" DayType="Предпраздничный" Date="20240611" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20240612" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Праздник" Date="20241104" SwapDate=""/>
<Item Calendar="РФ" Year="2024" DayType="Предпраздничный" Date="20241231" SwapDate=""/>
</Items>
@@ -24,4 +24,5 @@
<Item Code="85" Description="Усть-Ордынский Бурятский округ Иркутской области" Base="РФ"/>
<Item Code="91" Description="Республика Крым" Base="РФ"/>
<Item Code="92" Description="Севастополь" Base="РФ"/>
<Item Code="93" Description="Донецкая Народная Республика" Base="РФ"/>
</Items>
@@ -1550,7 +1550,7 @@
<valueType>
<types>String</types>
<stringQualifiers>
<length>64</length>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
@@ -1570,7 +1570,7 @@
<valueType>
<types>String</types>
<stringQualifiers>
<length>64</length>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
@@ -1590,7 +1590,7 @@
<valueType>
<types>String</types>
<stringQualifiers>
<length>64</length>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
@@ -1736,7 +1736,7 @@
<valueType>
<types>String</types>
<stringQualifiers>
<length>64</length>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
@@ -1756,7 +1756,7 @@
<valueType>
<types>String</types>
<stringQualifiers>
<length>64</length>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
@@ -1876,7 +1876,7 @@
<valueType>
<types>String</types>
<stringQualifiers>
<length>128</length>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
@@ -287,6 +287,13 @@
КонецЕсли;
КонецЦикла;
Для Каждого ИмяТаблицы Из ЗависимыеТаблицыДляВыгрузкиЗагрузкиOData() Цикл
ВидыПрав = ВидыПравДляСтандартногоИнтерфейсаOData(ИмяТаблицы, Истина, Истина);
Если ВидыПрав.Количество() > 0 Тогда
Результат.Вставить(ИмяТаблицы, ВидыПрав);
КонецЕсли;
КонецЦикла;
Модель = МодельДанныхПредоставляемыхДляСтандартногоИнтерфейсаOData();
Для Каждого ЭлементМодели Из Модель Цикл
@@ -648,6 +655,16 @@
КонецПроцедуры
Функция ЗависимыеТаблицыДляВыгрузкиЗагрузкиOData()
Таблицы = Новый Массив;
ИнтерфейсODataПереопределяемый.ПриЗаполненииЗависимыхТаблицДляВыгрузкиЗагрузкиOData(Таблицы);
ИнтеграцияПодсистемБСП.ПриЗаполненииЗависимыхТаблицДляВыгрузкиЗагрузкиOData(Таблицы);
Возврат Таблицы;
КонецФункции
#Область Метаданные
Функция ДопустимыеПраваДляОбъектаМетаданных(Знач ОбъектМетаданных)
@@ -371,6 +371,9 @@
&НаКлиенте
Процедура КонстантыНаборОценкаПроизводительностиПериодЗаписиПриИзменении(Элемент)
Модифицированность = Истина;
Если КонстантыНабор.ОценкаПроизводительностиПериодЗаписи < 60 Тогда
КонстантыНабор.ОценкаПроизводительностиПериодЗаписи = 60;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -81,7 +81,9 @@ TD {
<li><a href="DataProcessor.РезультатыОбновленияПрограммы.Form.РезультатыОбновленияПрограммы/Help">Результаты обновления и дополнительная обработка данных</a></li></td>
<td>Сведения о ходе обновления версии программы, отложенное выполнение дополнительных процедур обработки данных.</td></tr><tr><td>
<li><strong>Детализировать ход обновления в журнале регистрации</strong></li></td>
<td>При включенном флажке в <a href="DataProcessor.ЖурналРегистрации/Help">журнал регистрации</a> записываются выполняемые обработчики обновления с указанием времени выполнения.</td></tr></tbody></table><h3>Оценка производительности</h3>
<td>При включенном флажке в <a href="DataProcessor.ЖурналРегистрации/Help">журнал регистрации</a> записываются выполняемые обработчики обновления с указанием времени выполнения.</td></tr><tr><td>
<li><a href="DataProcessor.РезультатыОбновленияПрограммы.Form.ОчисткаУстаревшихДанных/Help">Очистка устаревших данных</a></li></td>
<td>Переход к очистке данных вручную, когда при реструктуризации произошла ошибка "Записи регистра стали неуникальными".</td></tr></tbody></table><h3>Оценка производительности</h3>
<p>В программе предусмотрены встроенные средства для сбора и анализа данных о производительности ее работы по APDEX. В подразделе можно настроить параметры:</p>
<p></p>
<table><tbody><tr><td>
@@ -1370,21 +1370,51 @@
СведенияОСтране = СведенияОСтране(Страна);
Если Не УправлениеКонтактнойИнформациейКлиентСервер.ЭтоАдресВСвободнойФорме(НаселенныйПунктДетально.AddressType) Тогда
ТипАдреса = НаселенныйПунктДетально.AddressType;
КоличествоПолейПредыдущийТипАдреса = РаботаСАдресамиКлиентСервер.ИменаУровнейАдреса(НаселенныйПунктДетально.AddressType, Ложь).Количество();
ПереопределитьТипаАдресаПоСтране(Страна, НаселенныйПунктДетально, СведенияОСтране, МеждународныйФорматАдреса);
КоличествоПолейНовыйТипАдреса = РаботаСАдресамиКлиентСервер.ИменаУровнейАдреса(НаселенныйПунктДетально.AddressType, Ложь).Количество();
Если КоличествоПолейПредыдущийТипАдреса > КоличествоПолейНовыйТипАдреса Тогда
ПеренестиЗначенияПолейАдресВПоляНовогоТипа();
ПеренестиЗначенияПолейАдресВПоляНовогоТипа(ТипАдреса);
КонецЕсли;
КонецЕсли;
ОтобразитьПоляПоТипуАдреса();
Если РаботаСАдресамиКлиентСервер.ЭтоОсновнаяСтрана(Страна) И Не МеждународныйФорматАдреса Тогда
Восстановлен = ВосстановитьАдрес(ПредставлениеАдреса, НаселенныйПунктДетально, НаселенныйПунктДетально.AddressType);
Если Восстановлен Тогда
ОбновитьПредставлениеАдреса();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ВосстановитьАдрес(ПредставлениеАдреса, НаселенныйПункт, ТипАдреса)
Результат = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению(ПредставлениеАдреса, Перечисления.ТипыКонтактнойИнформации.Адрес);
ВосстановленныйАдрес = УправлениеКонтактнойИнформациейСлужебный.JSONВКонтактнуюИнформациюПоПолям(Результат, Перечисления.ТипыКонтактнойИнформации.Адрес);
Если УправлениеКонтактнойИнформацией.АдресВведенВСвободнойФорме(ВосстановленныйАдрес) Тогда
Возврат Ложь;
КонецЕсли;
ВосстановленныйАдрес.AddressType = ТипАдреса;
ЗаполнитьЗначенияСвойств(НаселенныйПунктДетально, ВосстановленныйАдрес);
УстановитьЗначениеРеквизитовПоКонтактнойИнформации(НаселенныйПунктДетально);
Возврат Истина;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ПереопределитьТипаАдресаПоСтране(Страна, НаселенныйПунктДетально, СведенияОСтране, МеждународныйФорматАдреса)
@@ -1401,23 +1431,31 @@
КонецПроцедуры
&НаКлиенте
Процедура ПеренестиЗначенияПолейАдресВПоляНовогоТипа()
Процедура ПеренестиЗначенияПолейАдресВПоляНовогоТипа(ТипАдреса)
ИменаВсехУровней = РаботаСАдресамиКлиентСервер.ИменаУровнейАдреса("Все", Ложь);
ИменаУровнейАдреса = РаботаСАдресамиКлиентСервер.ИменаУровнейАдреса(ТипАдреса, Ложь);
СведенияАдреса = Новый Массив;
Для каждого ИмяУровня Из ИменаВсехУровней Цикл
Для каждого ИмяУровня Из ИменаУровнейАдреса Цикл
Если НаселенныйПунктДетально.Свойство(ИмяУровня) И ЗначениеЗаполнено(НаселенныйПунктДетально[ИмяУровня]) Тогда
Сведения = ОписаниеСведенийАдреса();
Сведения.Наименование = НаселенныйПунктДетально[ИмяУровня];
Сведения.Сокращение = НаселенныйПунктДетально[ИмяУровня + "Type"];
Сведения.Представление = СокрЛП(Сведения.Наименование + " " + Сведения.Сокращение);
Сведения.Представление = УправлениеКонтактнойИнформациейКлиентСервер.СоединитьНаименованиеИТипАдресногоОбъекта(
Сведения.Наименование, Сведения.Сокращение, СтрСравнить(ИмяУровня, "area") = 0);
СведенияАдреса.Добавить(Сведения);
НаселенныйПунктДетально[ИмяУровня] = "";
НаселенныйПунктДетально[ИмяУровня + "Type"] = "";
КонецЕсли;
КонецЦикла;
ИменаВсехУровней = РаботаСАдресамиКлиентСервер.ИменаУровнейАдреса("Все", Ложь);
Для каждого ИмяУровня Из ИменаВсехУровней Цикл
НаселенныйПунктДетально[ИмяУровня] = "";
НаселенныйПунктДетально[ИмяУровня + "Type"] = "";
НаселенныйПунктДетально[ИмяУровня + "Id"] = "";
КонецЦикла;
ИменаУровнейНовогоТипа = РаботаСАдресамиКлиентСервер.ИменаУровнейАдреса(НаселенныйПунктДетально.AddressType, Ложь);
ИмяУровня = ИменаУровнейНовогоТипа.Получить(0);
Разделитель = "";
@@ -1444,9 +1482,11 @@
НаселенныйПунктДетально["StreetType"] = ""; // В иностранном адресе нет сокращений.
Если НаселенныйПунктДетально.Свойство("HouseNumber") И ЗначениеЗаполнено(НаселенныйПунктДетально["HouseType"]) Тогда
СписокЭлементовАдреса.Добавить(СокрЛП(НаселенныйПунктДетально["HouseType"] + " №" + НаселенныйПунктДетально["HouseNumber"]));
СписокЭлементовАдреса.Добавить(СокрЛП(НаселенныйПунктДетально["HouseType"] + " " + НаселенныйПунктДетально["HouseNumber"]));
НаселенныйПунктДетально["HouseNumber"] = "";
НаселенныйПунктДетально["HouseType"] = "";
НаселенныйПунктДетально["houseId"] = "";
Дом = "";
КонецЕсли;
Если НаселенныйПунктДетально.Свойство("buildings") И ТипЗнч(НаселенныйПунктДетально["buildings"]) = Тип("Массив") Тогда
@@ -1454,6 +1494,7 @@
СписокЭлементовАдреса.Добавить(СокрЛП(СтроениеВАдресе["Type"] + " " + СтроениеВАдресе["Number"]));
КонецЦикла;
НаселенныйПунктДетально["buildings"] = Новый Массив;
Строение = "";
КонецЕсли;
Если НаселенныйПунктДетально.Свойство("Apartments") И ТипЗнч(НаселенныйПунктДетально["Apartments"]) = Тип("Массив") Тогда
@@ -1461,6 +1502,7 @@
СписокЭлементовАдреса.Добавить(СокрЛП(ПомещениеВАдресе["Type"] + " " + ПомещениеВАдресе["Number"]));
КонецЦикла;
НаселенныйПунктДетально["Apartments"] = Новый Массив;
Помещение = "";
КонецЕсли;
НаселенныйПунктДетально["Street"] = СтрСоединить(СписокЭлементовАдреса, ", ");
@@ -3701,7 +3743,7 @@
Если РаботаСАдресамиКлиентСервер.ЭтоОсновнаяСтрана(Страна) И Не МеждународныйФорматАдреса Тогда
ИменаУровнейАдреса = РаботаСАдресамиКлиентСервер.ИменаУровнейАдреса(НаселенныйПунктДетально.AddressType, Ложь);
АдресВосстановлен = ВосстановитьАдрес(НаселенныйПункт, НаселенныйПунктДетально, ИменаУровнейАдреса);
АдресВосстановлен = ВосстановитьНаселенныйПунктАдреса(НаселенныйПункт, НаселенныйПунктДетально, ИменаУровнейАдреса);
КонецЕсли;
@@ -3716,6 +3758,7 @@
ТипАдреса = УправлениеКонтактнойИнформациейКлиентСервер.ИностранныйАдрес();
ИменаУровнейАдреса = РаботаСАдресамиКлиентСервер.ИменаУровнейАдреса(ТипАдреса, Ложь);
НаселенныйПунктДетально[ИменаУровнейАдреса[0]] = НаселенныйПункт;
ОбновитьСписокУровней(НаселенныйПунктДетально, ИменаУровнейАдреса[0], ЗначениеЗаполнено(НаселенныйПункт));
ОбновитьПредставлениеАдреса();
Возврат;
@@ -3789,7 +3832,7 @@
КонецПроцедуры
&НаСервереБезКонтекста
Функция ВосстановитьАдрес(НаселенныйПункт, НаселенныйПунктДетально, ИменаУровнейАдреса)
Функция ВосстановитьНаселенныйПунктАдреса(НаселенныйПункт, НаселенныйПунктДетально, ИменаУровнейАдреса)
Результат = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению(НаселенныйПункт, Перечисления.ТипыКонтактнойИнформации.Адрес);
@@ -214,7 +214,7 @@
&НаКлиенте
Процедура УстановитьОбработчикОжиданияИстеченияТаймаутаРезервногоКопирования()
ПодключитьОбработчикОжидания("ИстечениеВремениОжидания", 300, Истина);
ПодключитьОбработчикОжидания("ИстечениеВремениОжидания", 600, Истина);
КонецПроцедуры
@@ -415,7 +415,7 @@
&НаКлиенте
Процедура УстановитьОбработчикОжиданияИстеченияТаймаутаРезервногоКопирования()
ПодключитьОбработчикОжидания("ИстечениеВремениОжидания", 300, Истина);
ПодключитьОбработчикОжидания("ИстечениеВремениОжидания", 600, Истина);
КонецПроцедуры
@@ -0,0 +1,24 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link></head><body>
<p>Предназначена для очистки данных вручную, когда при реструктуризации произошла ошибка "Записи регистра стали неуникальными", например:</p><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">
<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjYAAAB6CAIAAAAj0Y5cAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAB9jSURBVHhe7Z0NVFTXtccvit+f0aiIaCKCiUisSWxSsQtfo7YV86IxDW1j82isQpM2Qk2IT4N9rCWJMVY7mLykaGokja2PtH60Cmu9qC2uis+KTUoQE0ExBpCgJn4hRoF5+9xz7p0792PmzjDgFf+/ddZwz77nnrP3uTNnn33uMCfs+vXr4eHhEgAAAOAkTp48GeZ2uw8fPiwEAAAAgDPYtm1bF3EIAAAAOIlBgwbBRQEAAHAocFEAAAAcClwUAAAAhwIXBQAAwKHgG30AAAD8kJaWJo4syMvLE0dmXLly5cCBAw8++GDfvn2FSOby5csHDx6cPHly7969hUhDcXGxjyjqyGZSSsuqPQ3iFAAAAMC4/fbbxZE1JSUlBQUFa9asuXjxohBJEh2ThOR0VogM+IiiyEWt2yclLsqbN15qOLJ5OWWik1csmTZUnAcAAHBrQEGKjzjJ91misbHxV7/6VV1dXWRk5C9+8Yv+/fuTf/r1r3/NJc8//3yfPn1EUQ2+oygtQ8dPTKQ/J+rP8DwIkIY9q1gguvmIyAMAwK0DeaDFixePGDGCfBJFTrW1tS6Xi44jIiLIY5n6J04QUdSZzavW7TshCkUnLnpq3vihdP5tVShkm9PS9nGBDJe+7y1kNT4svb2uQKlPliyZJhfjTXv0qFmXdkLEcVxmqk/yU/OmDT2yZ1Wb6pT2bH67QK1UCD3hI7kb41VRBcuN9c+TtNopUF8smTfedqe9Tc1RRtTN3N1y2TimQsRHbbFUKlhuZj4CZQCAF22MojiXLl2iyIn8U3h4eHNzM/mn5557jiIqcdqAnShq3zo2+5f9Ew2X04bS2L+PRrVFK/LyVixKlE7sW/f2noY98lBLo1veimRFJq5PXLSC8JbSgKlAw+H4aUtEJm9RYrR0osBzsTk0RLPBlHNks9K0aLvgfYpU2landOR95p9EpdFCaIL3VWYo2i3i1ZDlrELqi81HAuw0divkIIyU07i8Nloq8G8IAAC0kX79+i1cuLBbt27kn8hL0bEP/8Tx66I87oTm/TS7rmfD44mCdcu532KZ+jOyMPFhmn0PnTaDDcYnSj/iA2XixPFDiWk+1gkbjuzZvEpeBqNpvGbwFd5RnttrOLPnba8heh6ptmJSKdOngEomLppBsYNlnebo6rSJ2VWmOkdFDB0iDiVp6D2TmLeqqS9j1wbWaeSkNpPTEzmZUFganPkAABAQFEVt2LCB/3Y5eSk6vnDhgjhnQXD/F6UJgwh59SloKJigkCWKhWW6kEW0QrGaB3KONJpSFOdVcqgcSrCojkZxCiOs6zTDWOf4eTwikf2exeBtromZzuSOGs7U88P6hoaPSlmN5La4xCbRyRRUkXn7yEHRsdJoWy0lzA0BAIBQoq7yRUREvPjiiyNGjKivr1+7dq1vLxWwi4pg49i+nXuONDQ0HJG/lr5qT4MibJAa9sjLUNGT7uEjcE39EYoMGvbsZFP/6AhPMKEiR2B0ZigFBHz09kd08lPT1IrkryGsInVEXqaNdcrIVSSv8DnuG6/So/g6EeHsK1jOfF504qJ54wPttHvmLUpOZFCj93BRaCwl/BsCAABB09jYSN6I/FNkZORzzz1HrxkZGfRKXsrlctFZUc5AwC5q2hKabUfTzHv5cs8DKhKKqIMttnEZL84KyqFIdKLFc3hNwMJm835JXORVzbSn6HrRiqqPdZ1eC3GU4Sd1dcoPuPi4baKwiv4qU8bPk58VCU8ngqwlLPAMvNPGT5vH0DbaVktlbBkCAADBcuDAAe03zklCr3RMEpLTWV7MSDv+uoT85TQak9u2DthueL501xH6NfBv4fltrj06rWMtBQB0Qmi+K44soLm3ODIj6F+XuHVdlDNBpwEAAKd9XRQAAAAQNPZ/XQIAAADoaOCiAAAAOBSvhb6JE+7gBwAAAMAN4cOyT/kBFvoAAAA4F7goAAAADgUuCgAAgEOBiwIAAOBQ4KIAAAA4FLgoAAAADgVfOgcAAAdx+dL5Mw2fNTdfE/nOSHh49yFDR/btN1DkvdF+6RwuCgAAnAL5p8/rT94ZfV+37j2FqDNy/drVkyf+OSziTlMvFeD/RdVsSF+woVZkpNotD8/QZAEAAIQKip+4f3K3tnbiRAaSmWSsMNuaQJ9F7X1vbak4BAAAEFKam691696jpflqS0unTs1XycwwYbQvAnNRtVvWVj/6ZJzIgRuNd4DbqejEpgHgk9aWZre7RZLcnTiRgWTmdRvP2wJyUXvf2z3uR0+OFbmaDa4FETMeoPSwq4QJ0ul45V75HLHXRVk+yqglF2RurWHnPKOPOhLZKKNKNIuNe7cKHZS2FJgyIgn1PNTs1WheLVRV08q96QsyLZSp3rrgYZIoWarHqgZdeX2FRntVjGaqErUrardkMgPnLq8o2/Eqa5Sr4VXtIfkKE1vo2PQ2lch1sqTcUEO7PnQzrgArp9ReMlVPucSfaSZNC20psdqUAtZ9HmoDAWgP3O7WgFPT0TP7363RprKj13VlHJdaevTsI2y2JgAXdWjlWmn+6q+LnLQ1e7k0/8D7/6h/3zVu10b5ozvhyVnH1/LhQBtvbc3eMSq7npXMHlucbf4ht1NGULPhVWWxkVp5c8zv2VVbV+hjuwkrNpGcq1esjsiMrdlPSNNlzbculjKe3VrzUAavgV+y9CGp7Cg3bdN8qXguG/6mSjsOMruqT0mzH4zi1dDISx3yWkbCaEnS16Avb6jQv70aM428t/bo1K28xXE/Yk3PljLekKsVN2XT9KPLuB8yNG11m6SE1blUlVxbNb+hVhh1s9RW20tm6hmwMk2gbUi9xf9gb0u/fd4+BgIQYoIMofrdNyzhhyN4uu++Hrqzzkvkpb662ihstsa2i6rZ8O7x2Y8niBwx9636jFG72bQ04+jT2QtHMNnYx+ePe/N3e+XPsyfeKi4rfXOuPHuVp8ZsHClb/mM+nyWJ7TIy1TS4T3UJhzRi1Dh6NR9r1Mszjs6aysZHlWJpxeM/kCVR5Fp2zhUuR8MEspQVGJHwzNQJRz+rkR6cLp06RdPwourp02VLd7y64IldYxbzkdeIvryhQhN7vfAy09gV1RNUTzk2kl6ipo/i1ZJpvKFvzo47fpz1jKFpq9tEWQp3DB1uxFs3hlHC0feSiXq2TZOxaojht8/bwUAA2gP9aG4jcayyjk3+seuiDv5u+ej53A9piFrIpqVbZ4tZKpHwzNPHn0jP3iEtfkaNtyTpyZfFbJeS7BLU+a8n+rFTRqrb8mzx9NfmjhJZ1py0lo1xxkHHc/nsau00PChoSK0u3rC1+OjUb8qjbZk0df7vnz6+Vr+EqKAvb4LBXg16Mw1dMVr1amXH6tjgW32qbNxI70p8YXabXHN3jJr/mq7Djeh1M5MI/PUSIxDTLBuS8dvnoTcQgHbBTTFGwEl3lZw9+9Gh8x9tqS3ZUvvRocYmLvmkWS7QXLe7Vj5WJVLTJ8pxXSO/il1Ikrrz/JinqjrPJW1JoXRRZcvfPE7zX5HjuB5gK/4GRs/NXjF6zOIXeJgiM3XC7/ZvEY8iPKv/3tgpQ2os2z1bWzPjuDTL5WfQ0TFVWv6eaGuvuRVlx/goWVvyxpt81Shq+tTj1AnKBJ9m+gkPzc0m56f4Zh268oYKfdlraqY3jy8eV0xBWPaOiglH380mD72WOxtmmvzkpvbvOyrGjGFTCqMtDJPbJEnjpFEsW/v3Y5ZBhlE3H9oaeslEPQNWpvnvFn99HnoDAWgfDMO538TGe5PspQvuqKTIyclDo9xXPjh0VZxyu68e+/LkWaUh9UJx1fXTFed7JdJVkffe251JIgbw4373DqWDMRGaS4JP3FK/2IyiJilLeR4yts4+RSMIi2B2jHZ5nlFRaJWx9CFt4bnZv5d2T2Yls49NNdTDsVOGmOUdydVueZZGH53vFHhWkEg9bUinaYuGP9drZgt9R7lpP94oKYaPfnD6pDixyqcQtfCFxUeXmTtU7/KGCn3bqzPTyIgfyI9VsmfHSbNfeIvFYRnyGEqOR9rIqv3x7tmblj7EiprYImO4TY8vlphveCDi1d1HhUi7CkfH8tMjo25+tNX0kol6BqxMI/x1i58+by8DAQgxirNoe+oX1XdgHzoIH3hXr34Xm69y+aXGqs96jZvYnZe59EHDgYI6Sh98cE2WhPfqT6/N/KxpUi8pL20UdQaX/BOGX5cwQmHNC2/pRqXqrQuelbLNHlyZ41XerMJQQBFYtuS75pA1XZI5o3gm+y5Jx2DDNANt6/MONhAAMyo/OTwmdmJr63WRt8nVyrNV0sD42HDv7PnySkV4ubH8kBTzraaqyn6Day5JX7/9ttP6Mp5KLjceP3ShgYVZUr+JQ/VnpbPqJecrz9Zo2g2ELl26Ha/8MPau+0VeA3bdDRjXA5PZ0wi7/ing8kEStTC3PTyfKQmrO3T4Dty0tvZ5BxsIgAVuFmDoVsX8JuVKXfbSha/kR1DNX358QYrq0YMkH547FzUwoo+nDH/VXkWpyd377u9FTqRIy+ysqTDARC92QBQFAABOgaKo6JivtbYE+BuyX1Wdq5IGjI8R0YySvXDkb+HSuSuXJanv6P4x9/XpIZ07+Kfwux4bMFBbpkpcqEik+r+dORc1hITaajXHVInQT6k2CLp07X6i6l9+oyi4KAAAcArkokaPmRCwi7Lgi4qq/nGK33IY5KKqj5dhoQ8AAG4m2BqY/ocYgkxyZXqhY5KtlT64KAAAcBA0fPNHMG1n4N3RXcWhs5ANJDP9AxcFAABOoVevfk1XLoaFdRVeyrCNxU2fZP9EBpKZZKww2xo8iwIAAKdw9eqVuprKgQNv7913YJhkZ7eKmw9yvE1Nl778oiEyKrZnz95CqgFfLine truncated
<p>Открывается с помощью ссылки <b>Очистка устаревших данных</b> в разделе <b>Администрирование</b> - <b>Обслуживание</b> - <b>Обновление программы</b>.</p>
<h3>Очистка устаревших данных:</h3>
<p></p>
<ul><li>запускает длительную операцию поиска устаревших данных; </li>
<li>выводит таблицу с устаревшими данными, которую можно удалить в режиме 1С:Предприятия.</li></ul><p></p>
<p>С помощью флажка <b>Вывести количество</b> выводятся в таблицу:</p>
<p></p>
<ul><li>количество записей, которое будет удалено в зависимых регистрах сведений;</li>
<li>количество регистраторов, записи которых будут удалены в регистрах сведений подчиненных регистратору;</li>
<li>количество объектов, которые будут удалены в ссылочных таблицах (справочниках, документах и т.д.).</li></ul><p></p>
<p>С помощью флажка <b>Чистить удаляемые</b> выводится список всех устаревших данных (а не только тех, которые могут вызвать ошибку).</p>
<p>Кнопка <b>План очистки</b> открывает форму с описанием, в которой подробно указано в каких таблицах и по каким условиям будет выполняться поиск устаревших данных. </p>
<p>С помощью кнопки <b>Обновить</b> можно актуализировать данные для очистки. Для того чтобы очистить данные нажмите кнопку <b>Очистить</b>.</p>
<p>После очистки устаревших данных можно продолжить обновление программы в <b>Конфигураторе</b>. </p>
<p><br></p>
<h3 style="font-size: 13.4399995803833px;">См. также:</h3>
<h3 style="font-size: 13.4399995803833px;">
<ul style="font-size: 11.199999809265137px; font-weight: normal;"><li><a href="v8help://frame/form_common">Работа с формами.</a></li></ul></h3>
</body></html>
@@ -939,6 +939,10 @@
Возврат;
КонецЕсли;
Если Не Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
Возврат;
КонецЕсли;
Задание = РегламентныеЗаданияСервер.Задание(Метаданные.РегламентныеЗадания.ОтложенноеОбновлениеИБ);
ЗаданиеВыполняется = Ложь;
Сообщения = Новый Массив;
@@ -106,6 +106,11 @@
<key>ru</key>
<value>Очистка устаревших данных</value>
</synonym>
<help>
<pages>
<lang>ru</lang>
</pages>
</help>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
@@ -3096,6 +3096,10 @@
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
<handlers>
<event>BeforeWriteAtServer</event>
<name>ПередЗаписьюНаСервере</name>
</handlers>
<repostOnWrite>true</repostOnWrite>
</extInfo>
</form:Form>
@@ -119,9 +119,30 @@
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПреобразоватьРезультатыЗаполненияРазделаВТабличнуюЧасть();
ТекущийОбъект.Состав.Очистить();
Для Каждого СтрокаСостава Из Объект.Состав Цикл
НоваяСтрока = ТекущийОбъект.Состав.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаСостава);
КонецЦикла;
ТекущийОбъект.РедактируемыйРаздел = Объект.РедактируемыйРаздел;
ТекущийОбъект.ДатаРедактирования = ТекущаяДатаСеанса();
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПоказатьОповещениеПользователя(НСтр("ru = 'Изменение'"),
,
Строка(Объект.Ссылка),
БиблиотекаКартинок.Информация32);
Оповестить("Запись_Анкета",Новый Структура,Объект.Ссылка);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
@@ -50,6 +50,7 @@
<types>ConstantValueManager.АдресДляВосстановленияПароляУчетнойЗаписи</types>
<types>ConstantValueManager.ИспользоватьСинхронизациюДанныхВМоделиСервисаСПриложениемВИнтернете</types>
<types>ConstantValueManager.ПараметрыРезервногоКопирования</types>
<types>ConstantValueManager.РегистрироватьПоказателиСерверныхОповещений</types>
<types>ConstantValueManager.ИспользоватьАльтернативныйСерверДляЗагрузкиКурсовВалют</types>
<types>ConstantValueManager.АккредитованныеУдостоверяющиеЦентры</types>
<types>ConstantValueManager.ПараметрыАдминистрированияИБ</types>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:EventSubscription xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="96cd8b90-5cf3-416c-b3a2-1f62e158b37e">
<name>УстановитьПрефиксИнформационнойБазыИОрганизацииНомеруДокументаЗащитаПДн</name>
<synonym>
<key>ru</key>
<value>Установить префикс информационной базы и организации номеру документа &quot;Защита персональных данных&quot;</value>
</synonym>
<source>
<types>DocumentObject.ОтзывСогласияНаОбработкуПерсональныхДанных</types>
<types>DocumentObject.СогласиеНаОбработкуПерсональныхДанных</types>
</source>
<event>OnSetNewNumber</event>
<handler>CommonModule.ПрефиксацияОбъектовСобытия.УстановитьПрефиксИнформационнойБазыИОрганизации</handler>
</mdclass:EventSubscription>
@@ -233,15 +233,13 @@
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>1024</length>
</stringQualifiers>
<stringQualifiers/>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:StringValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
</attributes>
<attributes uuid="c0e2673a-1846-4ae5-933a-4e33b73a866b">
<name>Комментарий</name>
@@ -178,15 +178,13 @@
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>1024</length>
</stringQualifiers>
<stringQualifiers/>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:StringValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
</attributes>
<dimensions uuid="190b6efe-e67e-4274-abb9-263178a6ec4a">
<name>ИмяОбработчика</name>
@@ -1,27 +1,631 @@
<?xml version="1.0" encoding="UTF-8"?>
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:form="http://g5.1c.ru/v8/dt/form">
<items xsi:type="form:FormField">
<name>ОбластьДанныхВспомогательныеДанные</name>
<id>18</id>
<title>
<key>ru</key>
<value>Область</value>
</title>
<items xsi:type="form:FormGroup">
<name>Страницы</name>
<id>40</id>
<items xsi:type="form:FormGroup">
<name>СтраницаОсновное</name>
<id>42</id>
<items xsi:type="form:FormField">
<name>ОбластьДанныхВспомогательныеДанные</name>
<id>18</id>
<title>
<key>ru</key>
<value>Область</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ОбластьДанныхВспомогательныеДанные</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Область данных</value>
</toolTip>
<extendedTooltip>
<name>ОбластьДанныхВспомогательныеДанныеРасширеннаяПодсказка</name>
<id>20</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ОбластьДанныхВспомогательныеДанныеКонтекстноеМеню</name>
<id>19</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ИдентификаторОповещения</name>
<id>1</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ИдентификаторОповещения</segments>
</dataPath>
<extendedTooltip>
<name>ИдентификаторОповещенияРасширеннаяПодсказка</name>
<id>3</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИдентификаторОповещенияКонтекстноеМеню</name>
<id>2</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаДатаДобавления</name>
<id>33</id>
<items xsi:type="form:FormField">
<name>ДатаДобавления</name>
<id>4</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ДатаДобавления</segments>
</dataPath>
<extendedTooltip>
<name>ДатаДобавленияРасширеннаяПодсказка</name>
<id>6</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДатаДобавленияКонтекстноеМеню</name>
<id>5</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДатаДобавленияМиллисекунды</name>
<id>7</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ДатаДобавленияМиллисекунды</segments>
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>ДатаДобавленияМиллисекундыРасширеннаяПодсказка</name>
<id>9</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДатаДобавленияМиллисекундыКонтекстноеМеню</name>
<id>8</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Дата добавления</value>
</title>
<extendedTooltip>
<name>ГруппаДатаДобавленияРасширеннаяПодсказка</name>
<id>34</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>AlwaysHorizontal</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ОтсрочкаЗаписиВСистемуВзаимодействия</name>
<id>21</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ОтсрочкаЗаписиВСистемуВзаимодействия</segments>
</dataPath>
<extendedTooltip>
<name>ОтсрочкаЗаписиВСистемуВзаимодействияРасширеннаяПодсказка</name>
<id>23</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ОтсрочкаЗаписиВСистемуВзаимодействияКонтекстноеМеню</name>
<id>22</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаДатаЗаписиВСистемуВзаимодействия</name>
<id>35</id>
<items xsi:type="form:FormField">
<name>ДатаЗаписиВСистемуВзаимодействия</name>
<id>27</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ДатаЗаписиВСистемуВзаимодействия</segments>
</dataPath>
<extendedTooltip>
<name>ДатаЗаписиВСистемуВзаимодействияРасширеннаяПодсказка</name>
<id>29</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДатаЗаписиВСистемуВзаимодействияКонтекстноеМеню</name>
<id>28</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДатаЗаписиВСистемуВзаимодействияМиллисекунды</name>
<id>30</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ДатаЗаписиВСистемуВзаимодействияМиллисекунды</segments>
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>ДатаЗаписиВСистемуВзаимодействияМиллисекундыРасширеннаяПодсказка</name>
<id>32</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДатаЗаписиВСистемуВзаимодействияМиллисекундыКонтекстноеМеню</name>
<id>31</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Дата записи в систему взаимодействия</value>
</title>
<extendedTooltip>
<name>ГруппаДатаЗаписиВСистемуВзаимодействияРасширеннаяПодсказка</name>
<id>36</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>AlwaysHorizontal</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ИдентификаторГруппы</name>
<id>13</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ИдентификаторГруппы</segments>
</dataPath>
<extendedTooltip>
<name>ИдентификаторГруппыРасширеннаяПодсказка</name>
<id>15</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИдентификаторГруппыКонтекстноеМеню</name>
<id>14</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ВидОповещенияВГруппе</name>
<id>24</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ВидОповещенияВГруппе</segments>
</dataPath>
<extendedTooltip>
<name>ВидОповещенияВГруппеРасширеннаяПодсказка</name>
<id>26</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВидОповещенияВГруппеКонтекстноеМеню</name>
<id>25</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Основное</value>
</title>
<extendedTooltip>
<name>СтраницаОсновноеРасширеннаяПодсказка</name>
<id>43</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>СтраницаАдресаты</name>
<id>44</id>
<items xsi:type="form:FormField">
<name>Адресаты</name>
<id>37</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.Адресаты</segments>
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>АдресатыРасширеннаяПодсказка</name>
<id>39</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>АдресатыКонтекстноеМеню</name>
<id>38</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<wrap>true</wrap>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Адресаты</value>
</title>
<extendedTooltip>
<name>СтраницаАдресатыРасширеннаяПодсказка</name>
<id>45</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>СтраницаСодержимое</name>
<id>46</id>
<items xsi:type="form:FormField">
<name>СодержимоеОповещения</name>
<id>48</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>СодержимоеОповещения</segments>
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>СодержимоеОповещенияРасширеннаяПодсказка</name>
<id>50</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СодержимоеОповещенияКонтекстноеМеню</name>
<id>49</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<readOnly>true</readOnly>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<wrap>true</wrap>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Содержимое</value>
</title>
<extendedTooltip>
<name>СтраницаСодержимоеРасширеннаяПодсказка</name>
<id>47</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ОбластьДанныхВспомогательныеДанные</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Область данных</value>
</toolTip>
<extendedTooltip>
<name>ОбластьДанныхВспомогательныеДанныеРасширеннаяПодсказка</name>
<id>20</id>
<name>СтраницыРасширеннаяПодсказка</name>
<id>51</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -29,221 +633,10 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ОбластьДанныхВспомогательныеДанныеКонтекстноеМеню</name>
<id>19</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ИдентификаторОповещения</name>
<id>1</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ИдентификаторОповещения</segments>
</dataPath>
<extendedTooltip>
<name>ИдентификаторОповещенияРасширеннаяПодсказка</name>
<id>3</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИдентификаторОповещенияКонтекстноеМеню</name>
<id>2</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДатаДобавления</name>
<id>4</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ДатаДобавления</segments>
</dataPath>
<extendedTooltip>
<name>ДатаДобавленияРасширеннаяПодсказка</name>
<id>6</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДатаДобавленияКонтекстноеМеню</name>
<id>5</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДатаДобавленияМиллисекунды</name>
<id>7</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ДатаДобавленияМиллисекунды</segments>
</dataPath>
<extendedTooltip>
<name>ДатаДобавленияМиллисекундыРасширеннаяПодсказка</name>
<id>9</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДатаДобавленияМиллисекундыКонтекстноеМеню</name>
<id>8</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗаписаноВСистемуВзаимодействия</name>
<id>10</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ЗаписаноВСистемуВзаимодействия</segments>
</dataPath>
<extendedTooltip>
<name>ЗаписаноВСистемуВзаимодействияРасширеннаяПодсказка</name>
<id>12</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗаписаноВСистемуВзаимодействияКонтекстноеМеню</name>
<id>11</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>ИдентификаторГруппы</name>
<id>13</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ИдентификаторГруппы</segments>
</dataPath>
<extendedTooltip>
<name>ИдентификаторГруппыРасширеннаяПодсказка</name>
<id>15</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИдентификаторГруппыКонтекстноеМеню</name>
<id>14</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
<type>Pages</type>
<extInfo xsi:type="form:PagesGroupExtInfo">
<pagesRepresentation>TabsOnTop</pagesRepresentation>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<autoCommandBar>
@@ -308,6 +701,24 @@
<main>true</main>
<savedData>true</savedData>
</attributes>
<attributes>
<name>СодержимоеОповещения</name>
<title>
<key>ru</key>
<value>Содержимое оповещения</value>
</title>
<id>2</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ВключитьВозможностьРедактирования</name>
<title>
@@ -13,6 +13,18 @@
ТолькоПросмотр = Истина;
Хранилище = РеквизитФормыВЗначение("Запись").СодержимоеОповещения;
Элементы.СтраницаСодержимое.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Содержимое (размер, байт: %1)'"),
Строка(Base64Значение(XMLСтрока(Хранилище)).Размер()));
СодержимоеХранилища = Хранилище.Получить();
Попытка
СодержимоеОповещения = ОбщегоНазначения.ЗначениеВСтрокуXML(СодержимоеХранилища);
Исключение
СодержимоеОповещения = ЗначениеВСтрокуВнутр(СодержимоеХранилища);
КонецПопытки;
КонецПроцедуры
#КонецОбласти
@@ -199,7 +199,6 @@
<dataPath xsi:type="form:DataPath">
<segments>Список.ДатаДобавления</segments>
</dataPath>
<defaultItem>true</defaultItem>
<extendedTooltip>
<name>ДатаДобавленияРасширеннаяПодсказка</name>
<id>21</id>
@@ -228,6 +227,10 @@
<items xsi:type="form:FormField">
<name>ДатаДобавленияМиллисекунды</name>
<id>22</id>
<title>
<key>ru</key>
<value>мс</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -237,6 +240,10 @@
<segments>Список.ДатаДобавленияМиллисекунды</segments>
</dataPath>
<defaultItem>true</defaultItem>
<toolTip>
<key>ru</key>
<value>Дата добавления (миллисекунды)</value>
</toolTip>
<extendedTooltip>
<name>ДатаДобавленияМиллисекундыРасширеннаяПодсказка</name>
<id>24</id>
@@ -263,11 +270,12 @@
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗаписаноВСистемуВзаимодействия</name>
<id>25</id>
<name>ОтсрочкаЗаписиВСистемуВзаимодействия</name>
<id>38</id>
<title>
<key>ru</key>
<value>Записано в СВ</value>
<value>Отсрочка
записи в СВ</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -275,12 +283,11 @@
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ЗаписаноВСистемуВзаимодействия</segments>
<segments>Список.ОтсрочкаЗаписиВСистемуВзаимодействия</segments>
</dataPath>
<defaultItem>true</defaultItem>
<extendedTooltip>
<name>ЗаписаноВСистемуВзаимодействияРасширеннаяПодсказка</name>
<id>27</id>
<name>ОтсрочкаЗаписиВСистемуВзаимодействияРасширеннаяПодсказка</name>
<id>40</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -289,16 +296,104 @@
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗаписаноВСистемуВзаимодействияКонтекстноеМеню</name>
<id>26</id>
<name>ОтсрочкаЗаписиВСистемуВзаимодействияКонтекстноеМеню</name>
<id>39</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДатаЗаписиВСистемуВзаимодействия</name>
<id>44</id>
<title>
<key>ru</key>
<value>Дата записи
в СВ</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ДатаЗаписиВСистемуВзаимодействия</segments>
</dataPath>
<extendedTooltip>
<name>ДатаЗаписиВСистемуВзаимодействияРасширеннаяПодсказка</name>
<id>46</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДатаЗаписиВСистемуВзаимодействияКонтекстноеМеню</name>
<id>45</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДатаЗаписиВСистемуВзаимодействияМиллисекунды</name>
<id>47</id>
<title>
<key>ru</key>
<value>мс</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ДатаЗаписиВСистемуВзаимодействияМиллисекунды</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Дата записи в СВ (миллисекунды)</value>
</toolTip>
<extendedTooltip>
<name>ДатаЗаписиВСистемуВзаимодействияМиллисекундыРасширеннаяПодсказка</name>
<id>49</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДатаЗаписиВСистемуВзаимодействияМиллисекундыКонтекстноеМеню</name>
<id>48</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ИдентификаторГруппы</name>
@@ -337,6 +432,78 @@
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ВидОповещенияВГруппе</name>
<id>41</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ВидОповещенияВГруппе</segments>
</dataPath>
<extendedTooltip>
<name>ВидОповещенияВГруппеРасширеннаяПодсказка</name>
<id>43</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВидОповещенияВГруппеКонтекстноеМеню</name>
<id>42</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Адресаты</name>
<id>50</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.Адресаты</segments>
</dataPath>
<extendedTooltip>
<name>АдресатыРасширеннаяПодсказка</name>
<id>52</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>АдресатыКонтекстноеМеню</name>
<id>51</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<commandBarLocation>None</commandBarLocation>
<autoCommandBar>
<name>СписокКоманднаяПанель</name>
@@ -436,7 +603,7 @@
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<header>true</header>
<headerHeight>1</headerHeight>
<headerHeight>2</headerHeight>
<footerHeight>1</footerHeight>
<horizontalScrollBar>AutoUse</horizontalScrollBar>
<verticalScrollBar>AutoUse</verticalScrollBar>
@@ -11,6 +11,9 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.ОбластьДанныхВспомогательныеДанные.Видимость =
ОбщегоНазначения.РазделениеВключено();
ТолькоПросмотр = Истина;
КонецПроцедуры
@@ -97,9 +97,29 @@
<nonNegative>true</nonNegative>
</numberQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/>
</attributes>
<attributes uuid="00c47343-9f64-4368-896e-85f1639e4dae">
<name>ОтсрочкаЗаписиВСистемуВзаимодействия</name>
<synonym>
<key>ru</key>
<value>Отсрочка записи в систему взаимодействия</value>
</synonym>
<type>
<types>Number</types>
<numberQualifiers>
<precision>2</precision>
<scale>1</scale>
<nonNegative>true</nonNegative>
</numberQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Для упорядочения</value>
<value>Сообщение с серверным оповещением должно быть записано в систему взаимодействия (перед записью в регистр или позднее)</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
@@ -107,19 +127,36 @@
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/>
</attributes>
<attributes uuid="27a9ef3c-902c-49e3-ab84-ba51185ab111">
<name>ЗаписаноВСистемуВзаимодействия</name>
<attributes uuid="afc02a73-15bd-4ab1-97bb-5cea6206a44f">
<name>ДатаЗаписиВСистемуВзаимодействия</name>
<synonym>
<key>ru</key>
<value>Записано в систему взаимодействия</value>
<value>Дата записи в систему взаимодействия</value>
</synonym>
<type>
<types>Boolean</types>
<types>Date</types>
<dateQualifiers/>
</type>
<toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<indexing>Index</indexing>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/>
</attributes>
<attributes uuid="27a9ef3c-902c-49e3-ab84-ba51185ab111">
<name>ДатаЗаписиВСистемуВзаимодействияМиллисекунды</name>
<synonym>
<key>ru</key>
<value>Сообщение с серверным оповещением было успешно записано в систему взаимодействия перед записью в регистр</value>
</toolTip>
<value>Дата записи в систему взаимодействия (миллисекунды)</value>
</synonym>
<type>
<types>Number</types>
<numberQualifiers>
<precision>3</precision>
<nonNegative>true</nonNegative>
</numberQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
@@ -147,6 +184,49 @@
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/>
</attributes>
<attributes uuid="2f6bc78d-d2ed-491f-bc66-3f95e2ca574c">
<name>ВидОповещенияВГруппе</name>
<synonym>
<key>ru</key>
<value>Вид оповещения в группе</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>36</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Уникальный идентификатор вида оповещения длительной операции</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/>
</attributes>
<attributes uuid="bf3e3395-3e41-49c2-b59e-fdcdc3ef956f">
<name>Адресаты</name>
<synonym>
<key>ru</key>
<value>Адресаты</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>1000</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Пустая строка, если адресаты все пользователи, либо список идентификаторов пользователей информационной базы</value>
</toolTip>
<multiLine>true</multiLine>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/>
</attributes>
<dimensions uuid="164db402-4516-4d99-80d2-6cb7b6fd7698">
<name>ИдентификаторОповещения</name>
<synonym>
@@ -1,27 +1,331 @@
<?xml version="1.0" encoding="UTF-8"?>
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:form="http://g5.1c.ru/v8/dt/form">
<items xsi:type="form:FormField">
<name>ОбластьДанныхВспомогательныеДанные</name>
<id>12</id>
<title>
<key>ru</key>
<value>Область</value>
</title>
<items xsi:type="form:FormGroup">
<name>Страницы</name>
<id>18</id>
<items xsi:type="form:FormGroup">
<name>СтраницаОсновное</name>
<id>20</id>
<items xsi:type="form:FormField">
<name>ОбластьДанныхВспомогательныеДанные</name>
<id>12</id>
<title>
<key>ru</key>
<value>Область</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ОбластьДанныхВспомогательныеДанные</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Область данных</value>
</toolTip>
<extendedTooltip>
<name>ОбластьДанныхВспомогательныеДанныеРасширеннаяПодсказка</name>
<id>14</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ОбластьДанныхВспомогательныеДанныеКонтекстноеМеню</name>
<id>13</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>КлючСеанса</name>
<id>1</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.КлючСеанса</segments>
</dataPath>
<extendedTooltip>
<name>КлючСеансаРасширеннаяПодсказка</name>
<id>3</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>КлючСеансаКонтекстноеМеню</name>
<id>2</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ИдентификаторПользователяИБ</name>
<id>7</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИдентификаторПользователяИБ</segments>
</dataPath>
<extendedTooltip>
<name>ИдентификаторПользователяИБРасширеннаяПодсказка</name>
<id>9</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИдентификаторПользователяИБКонтекстноеМеню</name>
<id>8</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<readOnly>true</readOnly>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДатаДобавления</name>
<id>4</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ДатаДобавления</segments>
</dataPath>
<extendedTooltip>
<name>ДатаДобавленияРасширеннаяПодсказка</name>
<id>6</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДатаДобавленияКонтекстноеМеню</name>
<id>5</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДатаАктивности</name>
<id>15</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ДатаАктивности</segments>
</dataPath>
<extendedTooltip>
<name>ДатаАктивностиРасширеннаяПодсказка</name>
<id>17</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДатаАктивностиКонтекстноеМеню</name>
<id>16</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Основное</value>
</title>
<extendedTooltip>
<name>СтраницаОсновноеРасширеннаяПодсказка</name>
<id>21</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>СтраницаОповещения</name>
<id>22</id>
<items xsi:type="form:FormField">
<name>Оповещения</name>
<id>24</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Оповещения</segments>
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>ОповещенияРасширеннаяПодсказка</name>
<id>26</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ОповещенияКонтекстноеМеню</name>
<id>25</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<readOnly>true</readOnly>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<wrap>true</wrap>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Оповещения</value>
</title>
<extendedTooltip>
<name>СтраницаОповещенияРасширеннаяПодсказка</name>
<id>23</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ОбластьДанныхВспомогательныеДанные</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Область данных</value>
</toolTip>
<extendedTooltip>
<name>ОбластьДанныхВспомогательныеДанныеРасширеннаяПодсказка</name>
<id>14</id>
<name>СтраницыРасширеннаяПодсказка</name>
<id>19</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -29,142 +333,10 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ОбластьДанныхВспомогательныеДанныеКонтекстноеМеню</name>
<id>13</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>КлючСеанса</name>
<id>1</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.КлючСеанса</segments>
</dataPath>
<extendedTooltip>
<name>КлючСеансаРасширеннаяПодсказка</name>
<id>3</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>КлючСеансаКонтекстноеМеню</name>
<id>2</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ИдентификаторПользователяИБ</name>
<id>7</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ИдентификаторПользователяИБ</segments>
</dataPath>
<extendedTooltip>
<name>ИдентификаторПользователяИБРасширеннаяПодсказка</name>
<id>9</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИдентификаторПользователяИБКонтекстноеМеню</name>
<id>8</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДатаДобавления</name>
<id>4</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.ДатаДобавления</segments>
</dataPath>
<extendedTooltip>
<name>ДатаДобавленияРасширеннаяПодсказка</name>
<id>6</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДатаДобавленияКонтекстноеМеню</name>
<id>5</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
<type>Pages</type>
<extInfo xsi:type="form:PagesGroupExtInfo">
<pagesRepresentation>TabsOnTop</pagesRepresentation>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<autoCommandBar>
@@ -230,7 +402,11 @@
<savedData>true</savedData>
</attributes>
<attributes>
<name>НастройкиОповещений</name>
<name>Оповещения</name>
<title>
<key>ru</key>
<value>Оповещения</value>
</title>
<id>2</id>
<valueType>
<types>String</types>
@@ -243,6 +419,24 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ИдентификаторПользователяИБ</name>
<title>
<key>ru</key>
<value>Идентификатор пользователя ИБ</value>
</title>
<id>3</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ВключитьВозможностьРедактирования</name>
<title>
@@ -13,6 +13,21 @@
ТолькоПросмотр = Истина;
ИдентификаторПользователяИБ = Запись.ИдентификаторПользователяИБ;
Хранилище = РеквизитФормыВЗначение("Запись").Оповещения;
Элементы.СтраницаОповещения.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Оповещения (размер, байт: %1)'"),
Строка(Base64Значение(XMLСтрока(Хранилище)).Размер()));
СодержимоеХранилища = Хранилище.Получить();
Попытка
Оповещения = ОбщегоНазначения.ЗначениеВСтрокуXML(СодержимоеХранилища);
Исключение
Оповещения = ЗначениеВСтрокуВнутр(СодержимоеХранилища);
КонецПопытки;
КонецПроцедуры
#КонецОбласти
@@ -261,6 +261,42 @@
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДатаАктивности</name>
<id>32</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ДатаАктивности</segments>
</dataPath>
<extendedTooltip>
<name>ДатаАктивностиРасширеннаяПодсказка</name>
<id>34</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДатаАктивностиКонтекстноеМеню</name>
<id>33</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<commandBarLocation>None</commandBarLocation>
<autoCommandBar>
<name>СписокКоманднаяПанель</name>
@@ -106,6 +106,27 @@
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/>
</attributes>
<attributes uuid="3ff6a150-b687-4e7e-b09d-2aebb8312a61">
<name>ДатаАктивности</name>
<synonym>
<key>ru</key>
<value>Дата активности</value>
</synonym>
<type>
<types>Date</types>
<dateQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Дата последнего обновления активности сеанса (1 раз в 20 минут)</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<indexing>Index</indexing>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/>
</attributes>
<dimensions uuid="2116217b-1660-499f-953d-f685738b0f30">
<name>КлючСеанса</name>
<synonym>
@@ -1379,6 +1379,93 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.НастройкиЦентраМониторинга.Command.ПроблемыПроизводительности</name>
<right>
@@ -4204,93 +4291,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.НастройкиЦентраМониторинга.Command.НастройкаОтправкиОтчетовОбОшибках</name>
<right>
@@ -4614,6 +4614,53 @@
<value>true</value>
</right>
</object>
<object>
<name>Constant.РегистрироватьПоказателиСерверныхОповещений</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>
<right>
<name>Edit</name>
<value>true</value>
</right>
<right>
<name>ReadDataHistory</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistory</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistorySettings</name>
<value>true</value>
</right>
<right>
<name>UpdateDataHistoryVersionComment</name>
<value>true</value>
</right>
<right>
<name>ViewDataHistory</name>
<value>true</value>
</right>
<right>
<name>EditDataHistoryVersionComment</name>
<value>true</value>
</right>
<right>
<name>SwitchToDataHistoryVersion</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ДополнительныеОтчетыИОбработки</name>
<right>
@@ -600,6 +600,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ИспользоватьШифрование</name>
<right>
@@ -2093,33 +2120,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>SessionParameter.ПараметрыОбработчикаОбновления</name>
<right>
@@ -477,6 +477,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ИспользоватьШифрование</name>
<right>
@@ -1687,33 +1714,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>SessionParameter.ПараметрыОбработчикаОбновления</name>
<right>
@@ -10,20 +10,6 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.НастройкаОнлайнПоддержки</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ПоискИсполняемогоФайлаОнлайнПоддержки</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -51,6 +37,20 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.НастройкаОнлайнПоддержки</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ПоискИсполняемогоФайлаОнлайнПоддержки</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Subsystem.СтандартныеПодсистемы.Subsystem.ВызовОнлайнПоддержки</name>
<right>
@@ -173,6 +173,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ИнтерактивноеИзменениеВыгрузки</name>
<right>
@@ -399,33 +426,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>WebService.EnterpriseDataExchange_1_0_1_1.Operation.TestConnection</name>
<right>
@@ -72,6 +72,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ПричиныИзмененияАдресныхСведений</name>
<right>
@@ -256,33 +283,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.АдресныеОбъекты</name>
<right>
@@ -10,6 +10,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЗагрузкаКлассификатораБанков</name>
<right>
@@ -60,31 +87,4 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -49,6 +49,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ПользовательскиеНастройкиОтчетов</name>
<right>
@@ -135,33 +162,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.НастройкиВариантовОтчетов</name>
<right>
@@ -307,6 +307,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Document.ТелефонныйЗвонок</name>
<right>
@@ -1059,33 +1086,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.СообщениеSMSПрисоединенныеФайлы</name>
<right>
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ВидыКонтактнойИнформации</name>
<right>
@@ -81,31 +108,4 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -17,6 +17,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ГруппыВнешнихПользователей.Command.ГруппыВнешнегоПользователя</name>
<right>
@@ -74,33 +101,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ГруппыВнешнихПользователей</name>
<right>
@@ -65,29 +65,6 @@
<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>
<right>
<name>Edit</name>
<value>true</value>
</right>
<right>
<name>TotalsControl</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -115,4 +92,27 @@
<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>
<right>
<name>Edit</name>
<value>true</value>
</right>
<right>
<name>TotalsControl</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам</name>
<right>
@@ -95,33 +122,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ДополнительныеОтчетыИОбработки</name>
<right>
Loaded 100 of 152 files, more files were not shown because too many files have changed in this diff. Show more