3_1_7_34
No files matched your search
@@ -182,6 +182,23 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// ФиксированнаяСтруктура
|
||||||
|
//
|
||||||
|
Функция УстановленныеРасширенияПриЗапуске() Экспорт
|
||||||
|
|
||||||
|
Результат = Новый Структура;
|
||||||
|
Результат.Вставить("Основные", "");
|
||||||
|
Результат.Вставить("Исправления", "");
|
||||||
|
Результат.Вставить("ОсновныеСостояние", "");
|
||||||
|
Результат.Вставить("ИсправленияСостояние", "");
|
||||||
|
|
||||||
|
ЗаполнитьЗначенияСвойств(Результат, ПараметрыСеанса.УстановленныеРасширения);
|
||||||
|
|
||||||
|
Возврат Новый ФиксированнаяСтруктура(Результат);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
// Возвращает признак изменения состава расширений после запуска сеанса.
|
// Возвращает признак изменения состава расширений после запуска сеанса.
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
@@ -193,9 +210,11 @@
|
|||||||
|
|
||||||
УстановленныеРасширения = УстановленныеРасширения();
|
УстановленныеРасширения = УстановленныеРасширения();
|
||||||
|
|
||||||
БезИзменений = ПараметрыСеанса.УстановленныеРасширения.Свойство("РасширенияНедоступны")
|
УстановленныеРасширенияПриЗапуске = УстановленныеРасширенияПриЗапуске();
|
||||||
Или ПараметрыСеанса.УстановленныеРасширения.ОсновныеСостояние = УстановленныеРасширения.ОсновныеСостояние
|
|
||||||
И ПараметрыСеанса.УстановленныеРасширения.ИсправленияСостояние = УстановленныеРасширения.ИсправленияСостояние;
|
БезИзменений = УстановленныеРасширенияПриЗапуске.Свойство("РасширенияНедоступны")
|
||||||
|
Или УстановленныеРасширенияПриЗапуске.ОсновныеСостояние = УстановленныеРасширения.ОсновныеСостояние
|
||||||
|
И УстановленныеРасширенияПриЗапуске.ИсправленияСостояние = УстановленныеРасширения.ИсправленияСостояние;
|
||||||
|
|
||||||
ЗарегистрироватьИзменениеУстановленныхРасширений(УстановленныеРасширения, БезИзменений);
|
ЗарегистрироватьИзменениеУстановленныхРасширений(УстановленныеРасширения, БезИзменений);
|
||||||
|
|
||||||
@@ -205,6 +224,10 @@
|
|||||||
|
|
||||||
// Возвращает информацию по измененным расширениям и исправлениям.
|
// Возвращает информацию по измененным расширениям и исправлениям.
|
||||||
//
|
//
|
||||||
|
// Параметры:
|
||||||
|
// УстановленныеРасширенияПриЗапуске - см. УстановленныеРасширенияПриЗапуске
|
||||||
|
// - Неопределено - получить для текущего сеанса.
|
||||||
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура:
|
// Структура:
|
||||||
// * Расширения - Структура:
|
// * Расширения - Структура:
|
||||||
@@ -214,7 +237,7 @@
|
|||||||
// * Добавлено - Число
|
// * Добавлено - Число
|
||||||
// * Удалено - Число
|
// * Удалено - Число
|
||||||
//
|
//
|
||||||
Функция ДинамическиИзмененныеРасширения() Экспорт
|
Функция ДинамическиИзмененныеРасширения(УстановленныеРасширенияПриЗапуске = Неопределено) Экспорт
|
||||||
|
|
||||||
Результат = Новый Структура;
|
Результат = Новый Структура;
|
||||||
Результат.Вставить("Расширения", Неопределено);
|
Результат.Вставить("Расширения", Неопределено);
|
||||||
@@ -224,23 +247,32 @@
|
|||||||
|
|
||||||
УстановленныеРасширения = УстановленныеРасширения();
|
УстановленныеРасширения = УстановленныеРасширения();
|
||||||
|
|
||||||
БезИзменений = ПараметрыСеанса.УстановленныеРасширения.Свойство("РасширенияНедоступны")
|
Если УстановленныеРасширенияПриЗапуске = Неопределено Тогда
|
||||||
Или ПараметрыСеанса.УстановленныеРасширения.ОсновныеСостояние = УстановленныеРасширения.ОсновныеСостояние
|
ПроверкаВТекущемСеансе = Истина;
|
||||||
И ПараметрыСеанса.УстановленныеРасширения.ИсправленияСостояние = УстановленныеРасширения.ИсправленияСостояние;
|
УстановленныеРасширенияПриЗапуске = УстановленныеРасширенияПриЗапуске();
|
||||||
|
Иначе
|
||||||
|
ПроверкаВТекущемСеансе = Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
ЗарегистрироватьИзменениеУстановленныхРасширений(УстановленныеРасширения, БезИзменений);
|
БезИзменений = УстановленныеРасширенияПриЗапуске.Свойство("РасширенияНедоступны")
|
||||||
|
Или УстановленныеРасширенияПриЗапуске.ОсновныеСостояние = УстановленныеРасширения.ОсновныеСостояние
|
||||||
|
И УстановленныеРасширенияПриЗапуске.ИсправленияСостояние = УстановленныеРасширения.ИсправленияСостояние;
|
||||||
|
|
||||||
|
Если ПроверкаВТекущемСеансе Тогда
|
||||||
|
ЗарегистрироватьИзменениеУстановленныхРасширений(УстановленныеРасширения, БезИзменений);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Если БезИзменений Тогда
|
Если БезИзменений Тогда
|
||||||
Возврат Результат;
|
Возврат Результат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ПараметрыСеанса.УстановленныеРасширения.ИсправленияСостояние <> УстановленныеРасширения.ИсправленияСостояние Тогда
|
Если УстановленныеРасширенияПриЗапуске.ИсправленияСостояние <> УстановленныеРасширения.ИсправленияСостояние Тогда
|
||||||
Изменения = ИзмененияВСоставеРасширений(ПараметрыСеанса.УстановленныеРасширения.Исправления, УстановленныеРасширения.Исправления);
|
Изменения = ИзмененияВСоставеРасширений(УстановленныеРасширенияПриЗапуске.Исправления, УстановленныеРасширения.Исправления);
|
||||||
Результат.Исправления = Изменения;
|
Результат.Исправления = Изменения;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ПараметрыСеанса.УстановленныеРасширения.ОсновныеСостояние <> УстановленныеРасширения.ОсновныеСостояние Тогда
|
Если УстановленныеРасширенияПриЗапуске.ОсновныеСостояние <> УстановленныеРасширения.ОсновныеСостояние Тогда
|
||||||
Изменения = ИзмененияВСоставеРасширений(ПараметрыСеанса.УстановленныеРасширения.ОсновныеСостояние, УстановленныеРасширения.ОсновныеСостояние);
|
Изменения = ИзмененияВСоставеРасширений(УстановленныеРасширенияПриЗапуске.ОсновныеСостояние, УстановленныеРасширения.ОсновныеСостояние);
|
||||||
Результат.Расширения = Изменения;
|
Результат.Расширения = Изменения;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
|||||||
@@ -112,8 +112,6 @@
|
|||||||
Ссылка, СтарыйОбъектАвторизации, ОбъектАвторизации);
|
Ссылка, СтарыйОбъектАвторизации, ОбъектАвторизации);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПользователиСлужебный.ВключитьЗаданиеКонтрольАктивностиПользователейПриНеобходимости(Ссылка);
|
|
||||||
|
|
||||||
ИнтеграцияПодсистемБСП.ПослеДобавленияИзмененияПользователяИлиГруппы(Ссылка, ЭтоНовый);
|
ИнтеграцияПодсистемБСП.ПослеДобавленияИзмененияПользователяИлиГруппы(Ссылка, ЭтоНовый);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|||||||
@@ -123,8 +123,6 @@
|
|||||||
ПользователиСлужебный.ПослеОбновленияСоставовГруппПользователей(
|
ПользователиСлужебный.ПослеОбновленияСоставовГруппПользователей(
|
||||||
УчастникиИзменений, ИзмененныеГруппы);
|
УчастникиИзменений, ИзмененныеГруппы);
|
||||||
|
|
||||||
ПользователиСлужебный.ВключитьЗаданиеКонтрольАктивностиПользователейПриНеобходимости(Ссылка);
|
|
||||||
|
|
||||||
ИнтеграцияПодсистемБСП.ПослеДобавленияИзмененияПользователяИлиГруппы(Ссылка, ЭтоНовый);
|
ИнтеграцияПодсистемБСП.ПослеДобавленияИзмененияПользователяИлиГруппы(Ссылка, ЭтоНовый);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|||||||
@@ -281,7 +281,7 @@
|
|||||||
</extInfo>
|
</extInfo>
|
||||||
</items>
|
</items>
|
||||||
<items xsi:type="form:FormGroup">
|
<items xsi:type="form:FormGroup">
|
||||||
<name>ГруппаАдресацииЗадач</name>
|
<name>ГруппаАдресации</name>
|
||||||
<id>23</id>
|
<id>23</id>
|
||||||
<items xsi:type="form:FormField">
|
<items xsi:type="form:FormField">
|
||||||
<name>ИспользуетсяБезКонтекстаДругихИзмеренийАдресации</name>
|
<name>ИспользуетсяБезКонтекстаДругихИзмеренийАдресации</name>
|
||||||
@@ -566,7 +566,7 @@
|
|||||||
<value>Адресация задач исполнителям</value>
|
<value>Адресация задач исполнителям</value>
|
||||||
</title>
|
</title>
|
||||||
<extendedTooltip>
|
<extendedTooltip>
|
||||||
<name>ГруппаАдресацииЗадачРасширеннаяПодсказка</name>
|
<name>ГруппаАдресацииExtendedTooltip</name>
|
||||||
<id>47</id>
|
<id>47</id>
|
||||||
<type>Label</type>
|
<type>Label</type>
|
||||||
<autoMaxWidth>true</autoMaxWidth>
|
<autoMaxWidth>true</autoMaxWidth>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
&НаСервере
|
&НаСервере
|
||||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||||
|
|
||||||
Элементы.ГруппаАдресацииЗадач.Доступность = НЕ Объект.Предопределенный;
|
Элементы.ГруппаАдресации.Доступность = НЕ Объект.Предопределенный;
|
||||||
Если НЕ Объект.Предопределенный Тогда
|
Если НЕ Объект.Предопределенный Тогда
|
||||||
Элементы.ГруппаТипыОбъектовАдресации.Доступность = Объект.ИспользуетсяСОбъектамиАдресации;
|
Элементы.ГруппаТипыОбъектовАдресации.Доступность = Объект.ИспользуетсяСОбъектамиАдресации;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|||||||
@@ -313,7 +313,7 @@
|
|||||||
</userVisible>
|
</userVisible>
|
||||||
<title>
|
<title>
|
||||||
<key>ru</key>
|
<key>ru</key>
|
||||||
<value>Группа отозван</value>
|
<value>Отозван</value>
|
||||||
</title>
|
</title>
|
||||||
<extendedTooltip>
|
<extendedTooltip>
|
||||||
<name>ГруппаОтозванРасширеннаяПодсказка</name>
|
<name>ГруппаОтозванРасширеннаяПодсказка</name>
|
||||||
|
|||||||
@@ -3,43 +3,27 @@
|
|||||||
<p>Список можно открыть соответствующей командой в разделе <strong>Администрирование - Органайзер</strong>. </p>
|
<p>Список можно открыть соответствующей командой в разделе <strong>Администрирование - Органайзер</strong>. </p>
|
||||||
<p>В списке выводится:</p>
|
<p>В списке выводится:</p>
|
||||||
<ul><li><strong>Наименование</strong> учетной записи;
|
<ul><li><strong>Наименование</strong> учетной записи;
|
||||||
</li>
|
</li><li><strong>Имя пользователя</strong> - указывается имя отправителя писем, оно может отличаться от имени <a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователя</a> в программе;
|
||||||
<li><strong>Имя пользователя</strong> - указывается имя отправителя писем, оно может отличаться от имени <a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователя</a> в программе;
|
</li><li><strong>Адрес электронной почты </strong>учетной записи в формате <a href="mailto:name@server.net">name@server.net</a>. </li></ul><p>Для учетных записей, получение и отправка с которых выполняется автоматически без участия пользователя, должен быть обязательно введен пароль. Также для корректной работы программы обязательно должна быть настроена системная учетная запись электронной почты.</p>
|
||||||
</li>
|
|
||||||
<li><strong>Адрес электронной почты </strong>учетной записи в формате <a href="mailto:name@server.net">name@server.net</a>. </li></ul><p>Для учетных записей, получение и отправка с которых выполняется автоматически без участия пользователя, должен быть обязательно введен пароль. Также для корректной работы программы обязательно должна быть настроена системная учетная запись электронной почты.</p>
|
|
||||||
<h3>Системная учетная запись электронной почты</h3>
|
<h3>Системная учетная запись электронной почты</h3>
|
||||||
<ul><li>Программа поставляется с предопределенной учетной записью - системной учетной записью электронной почты. Она используется по умолчанию для рассылки различных уведомлений из программы, например, для автоматической отправки сообщений администратору по завершению обновления программы. Перед использованием этих возможностей необходимо <a href="Catalog.УчетныеЗаписиЭлектроннойПочты.Form.ФормаЭлемента/Help">настроить</a> системную учетную запись.
|
<ul><li>Программа поставляется с предопределенной учетной записью - системной учетной записью электронной почты. Она используется по умолчанию для рассылки различных уведомлений из программы, например, для автоматической отправки сообщений администратору по завершению обновления программы. Перед использованием этих возможностей необходимо <a href="Catalog.УчетныеЗаписиЭлектроннойПочты.Form.ФормаЭлемента/Help">настроить</a> системную учетную запись.
|
||||||
</li>
|
</li><li>Настройка системной учетной записи производится по соответствующей команде в разделе <strong>Администрирование - Органайзер</strong>. Также можно <img src="StdPicture.Change"></img><strong>Изменить</strong> ее в списке.</li></ul><h3>Ввод учетной записи электронной почты</h3>
|
||||||
<li>Настройка системной учетной записи производится по соответствующей команде в разделе <strong>Администрирование - Органайзер</strong>. Также можно <img src="StdPicture.Change"></img><strong>Изменить</strong> ее в списке.</li></ul><h3>Ввод учетной записи электронной почты</h3>
|
|
||||||
<ul><li>При попытке сохранения программа проверяет введенные учетные записи электронной почты (пытается отослать пробное сообщение). Учетные записи, не прошедшие проверку, не сохраняются.
|
<ul><li>При попытке сохранения программа проверяет введенные учетные записи электронной почты (пытается отослать пробное сообщение). Учетные записи, не прошедшие проверку, не сохраняются.
|
||||||
</li>
|
</li><li>Нажмите <strong>Создать</strong>, введите необходимые поля:
|
||||||
<li>Нажмите <strong>Создать</strong>, введите необходимые поля:
|
|
||||||
<ul><li>Укажите <strong>Адрес почты</strong> учетной записи в формате <a href="mailto:name@server.net">name@server.net</a>;
|
<ul><li>Укажите <strong>Адрес почты</strong> учетной записи в формате <a href="mailto:name@server.net">name@server.net</a>;
|
||||||
</li>
|
</li><li>Введите <strong>Пароль</strong> учетной записи;
|
||||||
<li>С помощью переключателя выберите способ авторизации:</li>
|
</li><li>Установите с помощью флажков, как <strong>Использовать учетную запись</strong>:
|
||||||
<ul><li><b>Ввести пароль</b>, в этом случае укажите в поле справа <strong>Пароль</strong> учетной записи;
|
<ul><li><strong>Для отправки почты</strong>;
|
||||||
</li>
|
</li><li><strong>Для получения почты</strong>;</li></ul></li><li>Укажите, <strong>Для кого учетная запись</strong>:
|
||||||
<li><b>Авторизоваться на почтовом сервисе</b>, в этом случае программа выводит инструкцию авторизации, которая зависит от почтового сервиса. Следуйте инструкции программы.</li>
|
<ul><li><strong>Для всех</strong>;
|
||||||
<ul><li>На почтовом сервисе потребуется указать данные о приложении, например, <b>callback URL</b>, который программа формирует автоматически.</li>
|
</li><li><strong>Только для меня</strong>.</li></ul></li><li>Укажите <strong>Имя отправителя</strong> (Ваше имя или название организации);
|
||||||
<li>Воспользовавшись указаниями почтового сервиса, зарегистрируйте приложение, получите данные для авторизации и заполните нужные поля, например: </li>
|
</li><li>С помощью переключателя определите способ создания учетной записи:
|
||||||
<ul><ul><ul><li><b>ID приложения</b>;</li>
|
<ul><li><strong>Определить параметры подключения автоматически</strong> (рекомендуется);
|
||||||
<li><b>пароль приложения (client secret)</b>.</li></ul></ul></ul></ul></ul><li>Установите с помощью флажков, как <strong>Почта будет использоваться</strong>:
|
<ul><li>Нажмите <strong>Создать</strong>. Программа предпримет попытку автоматической настройки и проверки учетной записи. Следуйте указаниям программы. При этом если при автоматической настройке произошел сбой, можно попытаться настроить параметры вручную. </li></ul></li><li><strong>Настроить параметры подключения вручную</strong>;</li></ul></li><li>
|
||||||
<ul><li><strong>Для отправки писем</strong>;
|
<p>Нажмите <strong>Далее</strong> для заполнения остальных параметров, при этом программа проставляет рекомендуемые параметры для большинства почтовых серверов. Их требуется только проверить и попытаться сохранить учетную запись заново.</p></li></ul></li></ul><h3>Настройка учетной записи электронной почты</h3>
|
||||||
</li>
|
|
||||||
<li><strong>Для получения писем</strong>;</li></ul></li>
|
|
||||||
<li>Укажите с помощью переключателя, кем будет использоваться почта:
|
|
||||||
<ul><li><strong>Всеми пользователями (общая почта)</strong></li>
|
|
||||||
<li><strong>Только мной</strong>.</li></ul></li>
|
|
||||||
<li>Укажите <strong>Имя отправителя</strong> (Ваше имя или название организации);
|
|
||||||
</li></ul></li>
|
|
||||||
<li>Нажмите <strong>Создать</strong>. Программа предпримет попытку автоматической настройки и проверки учетной записи. Следуйте указаниям программы. При этом если при автоматической настройке произошел сбой, можно попытаться настроить параметры вручную. </li>
|
|
||||||
<li>Если автоматически настроить почту не удалось, нажмите <b>На</b><strong>строить вручную</strong>.</li>
|
|
||||||
<ul><li>
|
|
||||||
<p>Нажмите <strong>Далее</strong> для заполнения остальных параметров, при этом программа проставляет рекомендуемые параметры для большинства почтовых серверов. Их требуется только проверить и попытаться сохранить учетную запись заново.</p></li></ul></ul><h3>Настройка учетной записи электронной почты</h3>
|
|
||||||
<ul><li>Нажмите <img src="StdPicture.Change" width="16" height="16"></img> <strong>Изменить</strong>, с помощью программы произведите необходимые <a href="Catalog.УчетныеЗаписиЭлектроннойПочты.Form.ФормаЭлемента/Help">настройки</a>.</li></ul><h3>Проверка учетной записи электронной почты</h3>
|
<ul><li>Нажмите <img src="StdPicture.Change" width="16" height="16"></img> <strong>Изменить</strong>, с помощью программы произведите необходимые <a href="Catalog.УчетныеЗаписиЭлектроннойПочты.Form.ФормаЭлемента/Help">настройки</a>.</li></ul><h3>Проверка учетной записи электронной почты</h3>
|
||||||
<ul><li>
|
<ul><li>
|
||||||
<div>Выделите учетную запись в списке, нажмите <strong>Еще - Проверить учетную запись</strong> для проверки введенных параметров учетной записи. При этом отправляется стандартное почтовое отправление и проверяется возможность соединения с сервером входящих почтовых сообщений (если учетная запись используется для получения почты).</div>
|
<div>Выделите учетную запись в списке, нажмите <strong>Еще - Проверить учетную запись</strong> для проверки введенных параметров учетной записи. При этом отправляется стандартное почтовое отправление и проверяется возможность соединения с сервером входящих почтовых сообщений (если учетная запись используется для получения почты).</div>
|
||||||
</li>
|
</li><li>
|
||||||
<li>
|
|
||||||
<div>Если в учетной записи не прописан пароль, программа его запрашивает. При необходимости введите пароль.</div></li></ul><h3>См. также: </h3>
|
<div>Если в учетной записи не прописан пароль, программа его запрашивает. При необходимости введите пароль.</div></li></ul><h3>См. также: </h3>
|
||||||
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
|
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
|
||||||
@@ -56,6 +56,10 @@
|
|||||||
<metadata>InformationRegister.СостоянияУспешныхОбменовДаннымиОбластейДанных</metadata>
|
<metadata>InformationRegister.СостоянияУспешныхОбменовДаннымиОбластейДанных</metadata>
|
||||||
<use>Use</use>
|
<use>Use</use>
|
||||||
</content>
|
</content>
|
||||||
|
<content>
|
||||||
|
<metadata>InformationRegister.ПериодическиеСерверныеОповещения</metadata>
|
||||||
|
<use>Use</use>
|
||||||
|
</content>
|
||||||
<content>
|
<content>
|
||||||
<metadata>InformationRegister.СообщенияОбменаДаннымиОбластейДанных</metadata>
|
<metadata>InformationRegister.СообщенияОбменаДаннымиОбластейДанных</metadata>
|
||||||
<use>Use</use>
|
<use>Use</use>
|
||||||
@@ -64,6 +68,10 @@
|
|||||||
<metadata>InformationRegister.ОчередьИнсталляцииПоставляемыхДополнительныхОтчетовИОбработокВОбластиДанных</metadata>
|
<metadata>InformationRegister.ОчередьИнсталляцииПоставляемыхДополнительныхОтчетовИОбработокВОбластиДанных</metadata>
|
||||||
<use>Use</use>
|
<use>Use</use>
|
||||||
</content>
|
</content>
|
||||||
|
<content>
|
||||||
|
<metadata>InformationRegister.ОтправленныеСерверныеОповещения</metadata>
|
||||||
|
<use>Use</use>
|
||||||
|
</content>
|
||||||
<content>
|
<content>
|
||||||
<metadata>Constant.СведенияОбОбновленииИБ</metadata>
|
<metadata>Constant.СведенияОбОбновленииИБ</metadata>
|
||||||
<use>Use</use>
|
<use>Use</use>
|
||||||
|
|||||||
@@ -295,11 +295,11 @@
|
|||||||
<use>DontUse</use>
|
<use>DontUse</use>
|
||||||
</content>
|
</content>
|
||||||
<content>
|
<content>
|
||||||
<metadata>ScheduledJob.ОтложенноеОбновлениеИБ</metadata>
|
<metadata>ScheduledJob.ОтправкаСерверныхОповещенийКлиентам</metadata>
|
||||||
<use>DontUse</use>
|
<use>DontUse</use>
|
||||||
</content>
|
</content>
|
||||||
<content>
|
<content>
|
||||||
<metadata>ScheduledJob.КонтрольАктивностиПользователей</metadata>
|
<metadata>ScheduledJob.ОтложенноеОбновлениеИБ</metadata>
|
||||||
<use>DontUse</use>
|
<use>DontUse</use>
|
||||||
</content>
|
</content>
|
||||||
<content>
|
<content>
|
||||||
@@ -558,6 +558,10 @@
|
|||||||
<metadata>Constant.СписокЗапрещенныхРасширений</metadata>
|
<metadata>Constant.СписокЗапрещенныхРасширений</metadata>
|
||||||
<use>DontUse</use>
|
<use>DontUse</use>
|
||||||
</content>
|
</content>
|
||||||
|
<content>
|
||||||
|
<metadata>InformationRegister.ПериодическиеСерверныеОповещения</metadata>
|
||||||
|
<use>DontUse</use>
|
||||||
|
</content>
|
||||||
<content>
|
<content>
|
||||||
<metadata>InformationRegister.СвязиАдресныхОбъектов</metadata>
|
<metadata>InformationRegister.СвязиАдресныхОбъектов</metadata>
|
||||||
<use>DontUse</use>
|
<use>DontUse</use>
|
||||||
@@ -590,6 +594,10 @@
|
|||||||
<metadata>InformationRegister.БуферОперацийСтатистики</metadata>
|
<metadata>InformationRegister.БуферОперацийСтатистики</metadata>
|
||||||
<use>DontUse</use>
|
<use>DontUse</use>
|
||||||
</content>
|
</content>
|
||||||
|
<content>
|
||||||
|
<metadata>InformationRegister.ОтправленныеСерверныеОповещения</metadata>
|
||||||
|
<use>DontUse</use>
|
||||||
|
</content>
|
||||||
<content>
|
<content>
|
||||||
<metadata>Constant.ПараметрыЦентраМониторинга</metadata>
|
<metadata>Constant.ПараметрыЦентраМониторинга</metadata>
|
||||||
<use>DontUse</use>
|
<use>DontUse</use>
|
||||||
|
|||||||
@@ -8,8 +8,6 @@
|
|||||||
|
|
||||||
#Область ОписаниеПеременных
|
#Область ОписаниеПеременных
|
||||||
|
|
||||||
&НаКлиенте
|
|
||||||
Перем ИнтервалОжидания;
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Перем ФормаЗакрывается;
|
Перем ФормаЗакрывается;
|
||||||
|
|
||||||
@@ -47,8 +45,23 @@
|
|||||||
Процедура ПриОткрытии(Отказ)
|
Процедура ПриОткрытии(Отказ)
|
||||||
|
|
||||||
Если Параметры.ВыводитьОкноОжидания Тогда
|
Если Параметры.ВыводитьОкноОжидания Тогда
|
||||||
ИнтервалОжидания = ?(Параметры.Интервал <> 0, Параметры.Интервал, 1);
|
ФормаЗакрывается = Ложь;
|
||||||
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", ИнтервалОжидания, Истина);
|
Статус = "Выполняется";
|
||||||
|
|
||||||
|
ДлительнаяОперация = Новый Структура;
|
||||||
|
ДлительнаяОперация.Вставить("Статус", Статус);
|
||||||
|
ДлительнаяОперация.Вставить("ИдентификаторЗадания", Параметры.ИдентификаторЗадания);
|
||||||
|
ДлительнаяОперация.Вставить("Сообщения", Новый ФиксированныйМассив(Новый Массив));
|
||||||
|
|
||||||
|
ОповещениеОЗавершении = Новый ОписаниеОповещения("ПриЗавершенииДлительнойОперации", ЭтотОбъект);
|
||||||
|
ОповещениеОПрогрессе = Новый ОписаниеОповещения("ПриПолученииПрогрессаДлительнойОперации", ЭтотОбъект);
|
||||||
|
|
||||||
|
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
|
||||||
|
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
|
||||||
|
ПараметрыОжидания.Интервал = Параметры.Интервал;
|
||||||
|
ПараметрыОжидания.ОповещениеОПрогрессеВыполнения = ОповещениеОПрогрессе;
|
||||||
|
|
||||||
|
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
@@ -56,8 +69,6 @@
|
|||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
|
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
|
||||||
|
|
||||||
ОтключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания");
|
|
||||||
|
|
||||||
Если Статус <> "Выполняется" Тогда
|
Если Статус <> "Выполняется" Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
@@ -74,6 +85,9 @@
|
|||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура ПриЗакрытии(ЗавершениеРаботы)
|
Процедура ПриЗакрытии(ЗавершениеРаботы)
|
||||||
|
|
||||||
|
ФормаЗакрывается = Истина;
|
||||||
|
ОтключитьОбработчикОжидания("Подключаемый_ОтменитьЗадание");
|
||||||
|
|
||||||
Если ЗавершениеРаботы Тогда
|
Если ЗавершениеРаботы Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
@@ -82,7 +96,7 @@
|
|||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ОтменитьВыполнениеЗадания();
|
ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
@@ -91,63 +105,91 @@
|
|||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура Подключаемый_ПроверитьВыполнениеЗадания()
|
Процедура ПриПолученииПрогрессаДлительнойОперации(ДлительнаяОперация, ДополнительныеПараметры) Экспорт
|
||||||
|
|
||||||
Задание = ПроверитьЗаданиеВыполнено(ФормаЗакрывается);
|
Если ФормаЗакрывается Или Не Открыта() Тогда
|
||||||
Статус = Задание.Статус;
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Если Задание.Прогресс <> Неопределено Тогда
|
Если Параметры.ВыводитьПрогрессВыполнения
|
||||||
|
И ДлительнаяОперация.Прогресс <> Неопределено Тогда
|
||||||
|
|
||||||
Процент = 0;
|
Процент = 0;
|
||||||
Если Задание.Прогресс.Свойство("Процент", Процент) Тогда
|
Если ДлительнаяОперация.Прогресс.Свойство("Процент", Процент) Тогда
|
||||||
Элементы.ДекорацияПроцент.Видимость = Истина;
|
Элементы.ДекорацияПроцент.Видимость = Истина;
|
||||||
Элементы.ДекорацияПроцент.Заголовок = Строка(Процент) + "%";
|
Элементы.ДекорацияПроцент.Заголовок = Строка(Процент) + "%";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Текст = "";
|
Текст = "";
|
||||||
Если Задание.Прогресс.Свойство("Текст", Текст) Тогда
|
Если ДлительнаяОперация.Прогресс.Свойство("Текст", Текст) Тогда
|
||||||
Элементы.ДекорацияПоясняющийТекстДлительнойОперации.Заголовок = СокрЛП(Текст);
|
Элементы.ДекорацияПоясняющийТекстДлительнойОперации.Заголовок = СокрЛП(Текст);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Задание.Сообщения <> Неопределено И ВладелецФормы <> Неопределено Тогда
|
Если Параметры.ВыводитьСообщения
|
||||||
|
И ДлительнаяОперация.Сообщения <> Неопределено
|
||||||
|
И ВладелецФормы <> Неопределено Тогда
|
||||||
|
|
||||||
ИдентификаторНазначения = ВладелецФормы.УникальныйИдентификатор;
|
ИдентификаторНазначения = ВладелецФормы.УникальныйИдентификатор;
|
||||||
Для каждого СообщениеПользователю Из Задание.Сообщения Цикл
|
Для Каждого СообщениеПользователю Из ДлительнаяОперация.Сообщения Цикл
|
||||||
СообщениеПользователю.ИдентификаторНазначения = ИдентификаторНазначения;
|
СообщениеПользователю.ИдентификаторНазначения = ИдентификаторНазначения;
|
||||||
СообщениеПользователю.Сообщить();
|
СообщениеПользователю.Сообщить();
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
Задание.Сообщения = Новый ФиксированныйМассив(Новый Массив);
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ПриЗавершенииДлительнойОперации(ДлительнаяОперация, ДополнительныеПараметры) Экспорт
|
||||||
|
|
||||||
|
Если ФормаЗакрывается Или Не Открыта() Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ЗавершитьДлительнуюОперациюИЗакрытьФорму(ДлительнаяОперация);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ЗавершитьДлительнуюОперациюИЗакрытьФорму(ДлительнаяОперация)
|
||||||
|
|
||||||
|
Если ДлительнаяОперация = Неопределено Тогда
|
||||||
|
Статус = "Отменено";
|
||||||
|
Иначе
|
||||||
|
Статус = ДлительнаяОперация.Статус;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Статус = "Отменено" Тогда
|
||||||
|
Закрыть(Неопределено);
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Параметры.ПолучатьРезультат Тогда
|
||||||
|
Если Статус = "Выполнено" Тогда
|
||||||
|
ДлительнаяОперация.Вставить("Результат", ПолучитьИзВременногоХранилища(Параметры.АдресРезультата));
|
||||||
|
Иначе
|
||||||
|
ДлительнаяОперация.Вставить("Результат", Неопределено);
|
||||||
|
КонецЕсли;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Статус = "Выполнено" Тогда
|
Если Статус = "Выполнено" Тогда
|
||||||
|
|
||||||
ПоказатьОповещение();
|
ПоказатьОповещение();
|
||||||
Если ВозвращатьРезультатВОбработкуВыбора() Тогда
|
Если ВозвращатьРезультатВОбработкуВыбора() Тогда
|
||||||
ОповеститьОВыборе(Задание.Результат);
|
ОповеститьОВыборе(ДлительнаяОперация.Результат);
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
Закрыть(РезультатВыполнения(Задание));
|
Результат = РезультатВыполнения(ДлительнаяОперация);
|
||||||
Возврат;
|
Закрыть(Результат);
|
||||||
|
|
||||||
ИначеЕсли Статус = "Ошибка" Тогда
|
ИначеЕсли Статус = "Ошибка" Тогда
|
||||||
|
|
||||||
Закрыть(РезультатВыполнения(Задание));
|
Результат = РезультатВыполнения(ДлительнаяОперация);
|
||||||
|
Закрыть(Результат);
|
||||||
Если ВозвращатьРезультатВОбработкуВыбора() Тогда
|
Если ВозвращатьРезультатВОбработкуВыбора() Тогда
|
||||||
ВызватьИсключение Задание.КраткоеПредставлениеОшибки;
|
ВызватьИсключение ДлительнаяОперация.КраткоеПредставлениеОшибки;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
Возврат;
|
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если Параметры.ВыводитьОкноОжидания Тогда
|
|
||||||
Если Параметры.Интервал = 0 Тогда
|
|
||||||
ИнтервалОжидания = ИнтервалОжидания * 1.4;
|
|
||||||
Если ИнтервалОжидания > 15 Тогда
|
|
||||||
ИнтервалОжидания = 15;
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", ИнтервалОжидания, Истина);
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
@@ -156,84 +198,57 @@
|
|||||||
Процедура Подключаемый_ОтменитьЗадание()
|
Процедура Подключаемый_ОтменитьЗадание()
|
||||||
|
|
||||||
ФормаЗакрывается = Истина;
|
ФормаЗакрывается = Истина;
|
||||||
Подключаемый_ПроверитьВыполнениеЗадания(); // а вдруг задание уже выполнилось.
|
|
||||||
Если Статус = "Отменено" Тогда
|
ДлительнаяОперация = ПроверитьИОтменитьЕслиВыполняется(ИдентификаторЗадания);
|
||||||
Статус = Неопределено;
|
ЗавершитьДлительнуюОперациюИЗакрытьФорму(ДлительнаяОперация);
|
||||||
Если Открыта() Тогда
|
|
||||||
Закрыть(РезультатВыполнения(Неопределено));
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура ПоказатьОповещение()
|
Процедура ПоказатьОповещение()
|
||||||
|
|
||||||
Если Параметры.ОповещениеПользователя = Неопределено Или Не Параметры.ОповещениеПользователя.Показать Тогда
|
Если Параметры.ОповещениеПользователя = Неопределено Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Оповещение = Параметры.ОповещениеПользователя;
|
ДлительныеОперацииКлиент.ПоказатьОповещение(Параметры.ОповещениеПользователя, ВладелецФормы);
|
||||||
|
|
||||||
НавигационнаяСсылкаОповещения = Оповещение.НавигационнаяСсылка;
|
|
||||||
Если НавигационнаяСсылкаОповещения = Неопределено И ВладелецФормы <> Неопределено И ВладелецФормы.Окно <> Неопределено Тогда
|
|
||||||
НавигационнаяСсылкаОповещения = ВладелецФормы.Окно.ПолучитьНавигационнуюСсылку();
|
|
||||||
КонецЕсли;
|
|
||||||
ПояснениеОповещения = Оповещение.Пояснение;
|
|
||||||
Если ПояснениеОповещения = Неопределено И ВладелецФормы <> Неопределено И ВладелецФормы.Окно <> Неопределено Тогда
|
|
||||||
ПояснениеОповещения = ВладелецФормы.Окно.Заголовок;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
СтатусОповещения = Неопределено;
|
|
||||||
Если ТипЗнч(Оповещение.Важное) = Тип("Булево") Тогда
|
|
||||||
СтатусОповещения = ?(Оповещение.Важное, СтатусОповещенияПользователя.Важное, СтатусОповещенияПользователя.Информация);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ПоказатьОповещениеПользователя(?(Оповещение.Текст <> Неопределено, Оповещение.Текст, НСтр("ru = 'Действие выполнено'")),
|
|
||||||
НавигационнаяСсылкаОповещения, ПояснениеОповещения, Оповещение.Картинка, СтатусОповещения);
|
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
&НаСервере
|
&НаСервереБезКонтекста
|
||||||
Функция ПроверитьЗаданиеВыполнено(ФормаЗакрывается)
|
Функция ПроверитьИОтменитьЕслиВыполняется(ИдентификаторЗадания)
|
||||||
|
|
||||||
Задание = ДлительныеОперации.ОперацияВыполнена(ИдентификаторЗадания, Ложь, Параметры.ВыводитьПрогрессВыполнения,
|
ДлительнаяОперация = ДлительныеОперации.ОперацияВыполнена(ИдентификаторЗадания);
|
||||||
Параметры.ВыводитьСообщения);
|
|
||||||
|
|
||||||
Если Параметры.ПолучатьРезультат Тогда
|
Если ДлительнаяОперация.Статус = "Выполняется" Тогда
|
||||||
Если Задание.Статус = "Выполнено" Тогда
|
ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
|
||||||
Задание.Вставить("Результат", ПолучитьИзВременногоХранилища(Параметры.АдресРезультата));
|
ДлительнаяОперация.Статус = "Отменено";
|
||||||
Иначе
|
|
||||||
Задание.Вставить("Результат", Неопределено);
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ФормаЗакрывается = Истина Тогда
|
Возврат ДлительнаяОперация;
|
||||||
ОтменитьВыполнениеЗадания();
|
|
||||||
Задание.Статус = "Отменено";
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Возврат Задание;
|
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
&НаКлиенте
|
&НаСервереБезКонтекста
|
||||||
Функция РезультатВыполнения(Задание)
|
Процедура ОтменитьВыполнениеЗадания(ИдентификаторЗадания)
|
||||||
|
|
||||||
Если Задание = Неопределено Тогда
|
ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
|
||||||
Возврат Неопределено;
|
|
||||||
КонецЕсли;
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция РезультатВыполнения(ДлительнаяОперация)
|
||||||
|
|
||||||
Результат = Новый Структура;
|
Результат = Новый Структура;
|
||||||
Результат.Вставить("Статус", Задание.Статус);
|
Результат.Вставить("Статус", ДлительнаяОперация.Статус);
|
||||||
Результат.Вставить("АдресРезультата", Параметры.АдресРезультата);
|
Результат.Вставить("АдресРезультата", Параметры.АдресРезультата);
|
||||||
Результат.Вставить("АдресДополнительногоРезультата", Параметры.АдресДополнительногоРезультата);
|
Результат.Вставить("АдресДополнительногоРезультата", Параметры.АдресДополнительногоРезультата);
|
||||||
Результат.Вставить("КраткоеПредставлениеОшибки", Задание.КраткоеПредставлениеОшибки);
|
Результат.Вставить("КраткоеПредставлениеОшибки", ДлительнаяОперация.КраткоеПредставлениеОшибки);
|
||||||
Результат.Вставить("ПодробноеПредставлениеОшибки", Задание.ПодробноеПредставлениеОшибки);
|
Результат.Вставить("ПодробноеПредставлениеОшибки", ДлительнаяОперация.ПодробноеПредставлениеОшибки);
|
||||||
Результат.Вставить("Сообщения", Задание.Сообщения);
|
Результат.Вставить("Сообщения", Новый ФиксированныйМассив(Новый Массив));
|
||||||
|
|
||||||
Если Параметры.ПолучатьРезультат Тогда
|
Если Параметры.ПолучатьРезультат Тогда
|
||||||
Результат.Вставить("Результат", Задание.Результат);
|
Результат.Вставить("Результат", ДлительнаяОперация.Результат);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Результат;
|
Возврат Результат;
|
||||||
@@ -247,11 +262,4 @@
|
|||||||
И ТипЗнч(ВладелецФормы) = Тип("ФормаКлиентскогоПриложения");
|
И ТипЗнч(ВладелецФормы) = Тип("ФормаКлиентскогоПриложения");
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
&НаСервере
|
|
||||||
Процедура ОтменитьВыполнениеЗадания()
|
|
||||||
|
|
||||||
ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@@ -14,8 +14,6 @@
|
|||||||
ПараметрыПроверки = Справочники.ВерсииРасширений.ДинамическиИзмененныеРасширения();
|
ПараметрыПроверки = Справочники.ВерсииРасширений.ДинамическиИзмененныеРасширения();
|
||||||
ПараметрыПроверки.Вставить("КонфигурацияБазыДанныхИзмененаДинамически", КонфигурацияБазыДанныхИзмененаДинамически());
|
ПараметрыПроверки.Вставить("КонфигурацияБазыДанныхИзмененаДинамически", КонфигурацияБазыДанныхИзмененаДинамически());
|
||||||
|
|
||||||
Сообщение = СтандартныеПодсистемыСервер.ТекстСообщенияПриДинамическомОбновлении(ПараметрыПроверки);
|
|
||||||
|
|
||||||
Если ПараметрыПроверки.Исправления <> Неопределено И ПараметрыПроверки.Исправления.СписокНовых.Количество() > 0 Тогда
|
Если ПараметрыПроверки.Исправления <> Неопределено И ПараметрыПроверки.Исправления.СписокНовых.Количество() > 0 Тогда
|
||||||
АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
|
АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
|
||||||
ПараметрыМетода = Новый Массив;
|
ПараметрыМетода = Новый Массив;
|
||||||
@@ -27,9 +25,14 @@
|
|||||||
ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Неопределено);
|
ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Неопределено);
|
||||||
|
|
||||||
ОписаниеНовыхПатчей = ПолучитьИзВременногоХранилища(АдресХранилища);
|
ОписаниеНовыхПатчей = ПолучитьИзВременногоХранилища(АдресХранилища);
|
||||||
Сообщение = СтрЗаменить(Сообщение, "Ссылка", " " + НСтр("ru = '<a href = ""%1"">Подробно</a>'"));
|
УточняющаяСсылка = " " + НСтр("ru = '<a href = ""%1"">Подробно</a>'");
|
||||||
|
Иначе
|
||||||
|
УточняющаяСсылка = "Ссылка";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
Сообщение = СтандартныеПодсистемыСервер.ТекстСообщенияПриДинамическомОбновлении(ПараметрыПроверки,
|
||||||
|
УточняющаяСсылка);
|
||||||
|
|
||||||
Элементы.Текст.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(Сообщение, "ПереходПоСсылке");
|
Элементы.Текст.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(Сообщение, "ПереходПоСсылке");
|
||||||
|
|
||||||
СРасписанием = Истина;
|
СРасписанием = Истина;
|
||||||
@@ -63,9 +66,6 @@
|
|||||||
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
|
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
|
||||||
Если Не ЗавершениеРаботы Тогда
|
Если Не ЗавершениеРаботы Тогда
|
||||||
СохранитьРасписание();
|
СохранитьРасписание();
|
||||||
Если Не НажатиеНаКнопку Тогда
|
|
||||||
НапомнитьЗавтра();
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
@@ -101,21 +101,18 @@
|
|||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура Перезапустить(Команда)
|
Процедура Перезапустить(Команда)
|
||||||
СохранитьРасписание();
|
СохранитьРасписание();
|
||||||
НажатиеНаКнопку = Истина;
|
|
||||||
СтандартныеПодсистемыКлиент.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы();
|
СтандартныеПодсистемыКлиент.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы();
|
||||||
ЗавершитьРаботуСистемы(Истина, Истина);
|
ЗавершитьРаботуСистемы(Истина, Истина);
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура НапомнитьПозже(Команда)
|
Процедура НапомнитьПозже(Команда)
|
||||||
НажатиеНаКнопку = Истина;
|
|
||||||
НапомнитьЗавтра();
|
НапомнитьЗавтра();
|
||||||
Закрыть();
|
Закрыть();
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура БольшеНеНапоминать(Команда)
|
Процедура БольшеНеНапоминать(Команда)
|
||||||
НажатиеНаКнопку = Истина;
|
|
||||||
БольшеНеНапоминатьНаСервере();
|
БольшеНеНапоминатьНаСервере();
|
||||||
Закрыть();
|
Закрыть();
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
@@ -133,8 +130,15 @@
|
|||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура НапомнитьЗавтра()
|
Процедура НапомнитьЗавтра()
|
||||||
ИмяПараметра = "СтандартныеПодсистемы.ПриВыполненииСтандартныхПериодическихПроверок";
|
НапомнитьЗавтраНаСервере();
|
||||||
ПараметрыПриложения.Вставить(ИмяПараметра, ОбщегоНазначенияКлиент.ДатаСеанса());
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Процедура НапомнитьЗавтраНаСервере()
|
||||||
|
|
||||||
|
ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить("КонтрольДинамическогоОбновления",
|
||||||
|
"ДатаНапомнитьЗавтра", НачалоДня(ТекущаяДатаСеанса()) + 60*60*24);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
@@ -190,7 +194,7 @@
|
|||||||
ТекущееРасписание.Вставить("Представление");
|
ТекущееРасписание.Вставить("Представление");
|
||||||
ТекущееРасписание.Вставить("Расписание");
|
ТекущееРасписание.Вставить("Расписание");
|
||||||
ТекущееРасписание.Вставить("ПоследнееОповещение");
|
ТекущееРасписание.Вставить("ПоследнееОповещение");
|
||||||
ПредставлениеРасписания = НСтр("ru = 'по умолчанию'");
|
ПредставлениеРасписания = НСтр("ru = 'по умолчанию (каждые 20 минут)'");
|
||||||
Иначе
|
Иначе
|
||||||
ПредставлениеРасписания = ТекущееРасписание.Представление;
|
ПредставлениеРасписания = ТекущееРасписание.Представление;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|||||||
@@ -0,0 +1,225 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form">
|
||||||
|
<title>
|
||||||
|
<key>ru</key>
|
||||||
|
<value>Права доступа обновлены</value>
|
||||||
|
</title>
|
||||||
|
<items xsi:type="form:FormGroup">
|
||||||
|
<name>КартинкаИНадпись</name>
|
||||||
|
<id>1</id>
|
||||||
|
<items xsi:type="form:Decoration">
|
||||||
|
<name>Картинка</name>
|
||||||
|
<id>3</id>
|
||||||
|
<visible>true</visible>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<userVisible>
|
||||||
|
<common>true</common>
|
||||||
|
</userVisible>
|
||||||
|
<extendedTooltip>
|
||||||
|
<name>КартинкаРасширеннаяПодсказка</name>
|
||||||
|
<id>5</id>
|
||||||
|
<type>Label</type>
|
||||||
|
<autoMaxWidth>true</autoMaxWidth>
|
||||||
|
<autoMaxHeight>true</autoMaxHeight>
|
||||||
|
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||||
|
<horizontalAlign>Left</horizontalAlign>
|
||||||
|
</extInfo>
|
||||||
|
</extendedTooltip>
|
||||||
|
<contextMenu>
|
||||||
|
<name>КартинкаКонтекстноеМеню</name>
|
||||||
|
<id>4</id>
|
||||||
|
<autoFill>true</autoFill>
|
||||||
|
</contextMenu>
|
||||||
|
<autoMaxWidth>true</autoMaxWidth>
|
||||||
|
<autoMaxHeight>true</autoMaxHeight>
|
||||||
|
<extInfo xsi:type="form:PictureDecorationExtInfo">
|
||||||
|
<picture xsi:type="core:PictureRef">
|
||||||
|
<picture>CommonPicture.Информация32</picture>
|
||||||
|
</picture>
|
||||||
|
<fileDragMode>AsFileRef</fileDragMode>
|
||||||
|
</extInfo>
|
||||||
|
</items>
|
||||||
|
<items xsi:type="form:Decoration">
|
||||||
|
<name>Надпись</name>
|
||||||
|
<id>6</id>
|
||||||
|
<title>
|
||||||
|
<key>ru</key>
|
||||||
|
<value>Администратор изменил права доступа.
|
||||||
|
Перезапустите программу, чтобы они вступили в силу.</value>
|
||||||
|
</title>
|
||||||
|
<visible>true</visible>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<userVisible>
|
||||||
|
<common>true</common>
|
||||||
|
</userVisible>
|
||||||
|
<toolTipRepresentation>Button</toolTipRepresentation>
|
||||||
|
<extendedTooltip>
|
||||||
|
<name>НадписьРасширеннаяПодсказка</name>
|
||||||
|
<id>8</id>
|
||||||
|
<type>Label</type>
|
||||||
|
<autoMaxWidth>true</autoMaxWidth>
|
||||||
|
<autoMaxHeight>true</autoMaxHeight>
|
||||||
|
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||||
|
<horizontalAlign>Left</horizontalAlign>
|
||||||
|
</extInfo>
|
||||||
|
</extendedTooltip>
|
||||||
|
<contextMenu>
|
||||||
|
<name>НадписьКонтекстноеМеню</name>
|
||||||
|
<id>7</id>
|
||||||
|
<autoFill>true</autoFill>
|
||||||
|
</contextMenu>
|
||||||
|
<type>Label</type>
|
||||||
|
<autoMaxWidth>true</autoMaxWidth>
|
||||||
|
<autoMaxHeight>true</autoMaxHeight>
|
||||||
|
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||||
|
<horizontalAlign>Left</horizontalAlign>
|
||||||
|
</extInfo>
|
||||||
|
</items>
|
||||||
|
<visible>true</visible>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<userVisible>
|
||||||
|
<common>true</common>
|
||||||
|
</userVisible>
|
||||||
|
<title>
|
||||||
|
<key>ru</key>
|
||||||
|
<value>Картинка и надпись</value>
|
||||||
|
</title>
|
||||||
|
<extendedTooltip>
|
||||||
|
<name>КартинкаИНадписьРасширеннаяПодсказка</name>
|
||||||
|
<id>2</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>
|
||||||
|
<verticalAlign>Center</verticalAlign>
|
||||||
|
<behavior>Auto</behavior>
|
||||||
|
<representation>NormalSeparation</representation>
|
||||||
|
<showLeftMargin>true</showLeftMargin>
|
||||||
|
<united>true</united>
|
||||||
|
<throughAlign>Auto</throughAlign>
|
||||||
|
<currentRowUse>Auto</currentRowUse>
|
||||||
|
</extInfo>
|
||||||
|
</items>
|
||||||
|
<commandBarLocation>Bottom</commandBarLocation>
|
||||||
|
<showCommandBar>true</showCommandBar>
|
||||||
|
<autoCommandBar>
|
||||||
|
<name>ФормаКоманднаяПанель</name>
|
||||||
|
<id>-1</id>
|
||||||
|
<items xsi:type="form:Button">
|
||||||
|
<name>ФормаПерезапустить</name>
|
||||||
|
<id>9</id>
|
||||||
|
<visible>true</visible>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<userVisible>
|
||||||
|
<common>true</common>
|
||||||
|
</userVisible>
|
||||||
|
<extendedTooltip>
|
||||||
|
<name>ФормаПерезапуститьРасширеннаяПодсказка</name>
|
||||||
|
<id>10</id>
|
||||||
|
<type>Label</type>
|
||||||
|
<autoMaxWidth>true</autoMaxWidth>
|
||||||
|
<autoMaxHeight>true</autoMaxHeight>
|
||||||
|
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||||
|
<horizontalAlign>Left</horizontalAlign>
|
||||||
|
</extInfo>
|
||||||
|
</extendedTooltip>
|
||||||
|
<commandName>Form.Command.Перезапустить</commandName>
|
||||||
|
<representation>Auto</representation>
|
||||||
|
<defaultButton>true</defaultButton>
|
||||||
|
<autoMaxWidth>true</autoMaxWidth>
|
||||||
|
<autoMaxHeight>true</autoMaxHeight>
|
||||||
|
<placementArea>UserCmds</placementArea>
|
||||||
|
<representationInContextMenu>Auto</representationInContextMenu>
|
||||||
|
</items>
|
||||||
|
<items xsi:type="form:Button">
|
||||||
|
<name>ФормаНапомнитьЗавтра</name>
|
||||||
|
<id>11</id>
|
||||||
|
<visible>true</visible>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<userVisible>
|
||||||
|
<common>true</common>
|
||||||
|
</userVisible>
|
||||||
|
<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>
|
||||||
|
<commandName>Form.Command.НапомнитьЗавтра</commandName>
|
||||||
|
<buttonImportance>Normal</buttonImportance>
|
||||||
|
<representation>Auto</representation>
|
||||||
|
<autoMaxWidth>true</autoMaxWidth>
|
||||||
|
<autoMaxHeight>true</autoMaxHeight>
|
||||||
|
<placementArea>UserCmds</placementArea>
|
||||||
|
<representationInContextMenu>Auto</representationInContextMenu>
|
||||||
|
</items>
|
||||||
|
<horizontalAlign>Right</horizontalAlign>
|
||||||
|
</autoCommandBar>
|
||||||
|
<windowOpeningMode>LockOwner</windowOpeningMode>
|
||||||
|
<saveWindowSettings>true</saveWindowSettings>
|
||||||
|
<autoUrl>true</autoUrl>
|
||||||
|
<group>Vertical</group>
|
||||||
|
<autoFillCheck>true</autoFillCheck>
|
||||||
|
<allowFormCustomize>true</allowFormCustomize>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<showTitle>auto</showTitle>
|
||||||
|
<showCloseButton>true</showCloseButton>
|
||||||
|
<formCommands>
|
||||||
|
<name>Перезапустить</name>
|
||||||
|
<title>
|
||||||
|
<key>ru</key>
|
||||||
|
<value>Перезапустить</value>
|
||||||
|
</title>
|
||||||
|
<id>1</id>
|
||||||
|
<toolTip>
|
||||||
|
<key>ru</key>
|
||||||
|
<value>Перезапустить</value>
|
||||||
|
</toolTip>
|
||||||
|
<use>
|
||||||
|
<common>true</common>
|
||||||
|
</use>
|
||||||
|
<action xsi:type="form:FormCommandHandlerContainer">
|
||||||
|
<handler>
|
||||||
|
<name>Перезапустить</name>
|
||||||
|
</handler>
|
||||||
|
</action>
|
||||||
|
<currentRowUse>Auto</currentRowUse>
|
||||||
|
<selectedRowsUse>Auto</selectedRowsUse>
|
||||||
|
</formCommands>
|
||||||
|
<formCommands>
|
||||||
|
<name>НапомнитьЗавтра</name>
|
||||||
|
<title>
|
||||||
|
<key>ru</key>
|
||||||
|
<value>Напомнить завтра</value>
|
||||||
|
</title>
|
||||||
|
<id>2</id>
|
||||||
|
<toolTip>
|
||||||
|
<key>ru</key>
|
||||||
|
<value>Напомнить завтра</value>
|
||||||
|
</toolTip>
|
||||||
|
<use>
|
||||||
|
<common>true</common>
|
||||||
|
</use>
|
||||||
|
<action xsi:type="form:FormCommandHandlerContainer">
|
||||||
|
<handler>
|
||||||
|
<name>НапомнитьЗавтра</name>
|
||||||
|
</handler>
|
||||||
|
</action>
|
||||||
|
<currentRowUse>Auto</currentRowUse>
|
||||||
|
<selectedRowsUse>Auto</selectedRowsUse>
|
||||||
|
</formCommands>
|
||||||
|
<commandInterface>
|
||||||
|
<navigationPanel/>
|
||||||
|
<commandBar/>
|
||||||
|
</commandInterface>
|
||||||
|
</form:Form>
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Copyright (c) 2022, ООО 1С-Софт
|
||||||
|
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||||
|
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||||
|
// Текст лицензии доступен по ссылке:
|
||||||
|
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#Область ОбработчикиКомандФормы
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура Перезапустить(Команда)
|
||||||
|
|
||||||
|
СтандартныеПодсистемыКлиент.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы();
|
||||||
|
ЗавершитьРаботуСистемы(Истина, Истина);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура НапомнитьЗавтра(Команда)
|
||||||
|
|
||||||
|
НапомнитьЗавтраНаСервере();
|
||||||
|
Закрыть();
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Процедура НапомнитьЗавтраНаСервере()
|
||||||
|
|
||||||
|
ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить("КонтрольИзмененияРолейПользователяИБ",
|
||||||
|
"ДатаНапомнитьЗавтра", НачалоДня(ТекущаяДатаСеанса()) + 60*60*24);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<mdclass:CommonForm xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="85b591b4-a93d-4fcb-bdc7-e6d44436e511">
|
||||||
|
<name>КонтрольИзмененияРолейПользователяИБ</name>
|
||||||
|
<synonym>
|
||||||
|
<key>ru</key>
|
||||||
|
<value>Контроль изменения ролей пользователя ИБ</value>
|
||||||
|
</synonym>
|
||||||
|
<usePurposes>PersonalComputer</usePurposes>
|
||||||
|
<usePurposes>MobileDevice</usePurposes>
|
||||||
|
</mdclass:CommonForm>
|
||||||
@@ -1,48 +1,35 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body>
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body>
|
||||||
<p>Настройка параметров для использования средств электронной подписи и шифрования (криптографии). </p>
|
<p>Настройка параметров для использования средств электронной подписи и шифрования (криптографии). </p>
|
||||||
<p>Открывается по команде <strong>Программы и сертификаты электронной подписи и шифрования</strong> раздела <strong>Администрирование - Общие настройки</strong>.</p>
|
<p>Открывается по команде <strong>Настройки электронной подписи и шифрования</strong> раздела <strong>Администрирование - Общие настройки</strong>.</p>
|
||||||
<p>Для электронной подписи и шифрования требуется установить специальную стороннюю программу (криптопровайдер).</p>
|
<p>Для электронной подписи и шифрования требуется установить специальную стороннюю программу (криптопровайдер).</p>
|
||||||
<p>Для того чтобы подписывать данные, нужно включить флажок <strong>Электронная подпись</strong>, а для шифрования нужно включить флажок <strong>Шифрование</strong> в разделе <strong>Администрирование - Общие настройки</strong>. После этого становятся доступными соответствующие команды в программе.</p>
|
<p>Для того чтобы подписывать данные, нужно включить флажок <strong>Электронная подпись</strong>, а для шифрования нужно включить флажок <strong>Шифрование</strong> в разделе <strong>Администрирование - Общие настройки</strong>. После этого становятся доступными соответствующие команды в программе.</p>
|
||||||
<p>Электронная подпись - реквизит электронного документа, с помощью которого можно удостовериться в неизменности электронного документа с момента его подписи. Для установки подписи необходимо иметь сертификат ключа электронной подписи. Сертификат можно получить в удостоверяющем центре. Например, в удостоверяющем центре фирмы 1С <a href="http://ca.1c.ru/">http://ca.1c.ru/</a>. Только удостоверяющий центр может выдать юридически значимый (квалифицированный сертификат).</p>
|
<p>Электронная подпись - реквизит электронного документа, с помощью которого можно удостовериться в неизменности электронного документа с момента его подписи. Для установки подписи необходимо иметь сертификат ключа электронной подписи. Сертификат можно получить в удостоверяющем центре. Например, в удостоверяющем центре фирмы 1С <a href="http://ca.1c.ru/">http://ca.1c.ru/</a>. Только удостоверяющий центр может выдать юридически значимый (квалифицированный сертификат).</p>
|
||||||
<p>В случае использования распределенной информационной базы большую часть настроек можно изменить только в главном узле.</p>
|
<p>В случае использования распределенной информационной базы большую часть настроек можно изменить только в главном узле.</p>
|
||||||
<h3>Сертификаты</h3>
|
<h3>Сертификаты</h3>
|
||||||
<ul><li>Показывает все сертификаты, которые используются для подписания и шифрования данных, а также заявления на выпуск нового сертификата.
|
<ul><li>Показывает все сертификаты, которые используются для подписания и шифрования данных, а также заявления на выпуск нового сертификата.
|
||||||
</li>
|
</li><li>Можно установить отбор только своих сертификатов в поле <strong>Показать</strong>. По умолчанию показываются все сертификаты.
|
||||||
<li>Можно установить отбор только своих сертификатов в поле <strong>Показать</strong>. По умолчанию показываются все сертификаты.
|
</li><li>Предусмотрен отбор по полю <strong>Состояние заявления</strong> ("Любое", "Не подготовлено", "Подготовлено", "Отправлено", "Отклонено", "Исполнено, сертификат не установлен", "Исполнено").
|
||||||
</li>
|
</li><li><a href="Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования.Form.ФормаЭлемента/Help">Сертификат</a> можно <strong>Добавить</strong> из числа <strong>установленных на компьютере</strong>. Также это можно сделать в процессе подписания или шифрования данных.
|
||||||
<li>Предусмотрен отбор по полю <strong>Состояние заявления</strong> ("Любое", "Не подготовлено", "Подготовлено", "Отправлено", "Отклонено", "Исполнено, сертификат не установлен", "Исполнено").
|
</li><li>Также с помощью кнопки <strong>Добавить</strong> можно подготовить <a href="DataProcessor.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Form.Форма/Help">Заявление на выпуск нового сертификата</a>.
|
||||||
</li>
|
</li><li>Просмотреть сертификат или заявление на выпуск нового сертификата можно, дважды щелкнув по нему мышью. Также можно это сделать с помощью команды <strong>Изменить</strong> контекстного меню по правой кнопке мыши или меню <strong>Еще</strong>.</li></ul><h3>Программы</h3>
|
||||||
<li><a href="Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования.Form.ФормаЭлемента/Help">Сертификат</a> можно <strong>Добавить</strong> из числа <strong>установленных на компьютере</strong>. Также это можно сделать в процессе подписания или шифрования данных.
|
|
||||||
</li>
|
|
||||||
<li>Также с помощью кнопки <strong>Добавить</strong> можно подготовить <a href="DataProcessor.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Form.Форма/Help">Заявление на выпуск нового сертификата</a>.
|
|
||||||
</li>
|
|
||||||
<li>Просмотреть сертификат или заявление на выпуск нового сертификата можно, дважды щелкнув по нему мышью. Также можно это сделать с помощью команды <strong>Изменить</strong> контекстного меню по правой кнопке мыши или меню <strong>Еще</strong>.</li></ul><h3>Программы</h3>
|
|
||||||
<ul><li>Содержит список программ, которые будут использованы в информационной базе (в том числе во всех узлах распределенной ИБ).
|
<ul><li>Содержит список программ, которые будут использованы в информационной базе (в том числе во всех узлах распределенной ИБ).
|
||||||
</li>
|
</li><li>Эти программы не обязательно должны быть установлены на всех компьютерах. Более того, установка более одной программы на одном компьютере может вызвать конфликты между ними.
|
||||||
<li>Эти программы не обязательно должны быть установлены на всех компьютерах. Более того, установка более одной программы на одном компьютере может вызвать конфликты между ними.
|
</li><li>После запуска в списке уже присутствуют две записи о программах, наиболее распространенных в России - ViPNet CSP и КриптоПро CSP.
|
||||||
</li>
|
</li><li>Можно добавить записи о других программах (поставляются готовые настройки для Microsoft Enhanced CSP, ViPNet CSP, КриптоПро CSP, ЛИССИ CSP, Сигнал-КОМ CSP).
|
||||||
<li>После запуска в списке уже присутствуют две записи о программах, наиболее распространенных в России - ViPNet CSP и КриптоПро CSP.
|
</li><li>Если требуется использовать программу отличную от известных, тогда нужно указать ее имя, тип и алгоритмы, как указано в инструкции, поставляемой ее производителем.
|
||||||
</li>
|
</li><li>В колонке <strong>Результат проверки</strong> отражаются сведения, по которым можно понять установлена ли программа на компьютере или нет или же установлена, но некорректно.<span lang="RU">
|
||||||
<li>Можно добавить записи о других программах (поставляются готовые настройки для Microsoft Enhanced CSP, ViPNet CSP, КриптоПро CSP, ЛИССИ CSP, Сигнал-КОМ CSP).
|
</span></li><li>Linux: <strong>Путь к программе (<Имя программы, соответствующей выделенной строке в списке>)</strong> - поле, которое требуется обязательно заполнять на компьютерах под управлением ОС Linux.</li>
|
||||||
</li>
|
<li>В нижней части списка расположена ссылка <a href="http://its.1c.ru/db/metod81#content:5784:1">Инструкция по работе с программами электронной подписи и шифрования</a>. Перейдите по этой ссылке в соответствующий раздел 1С:ИТС, если имеются вопросы.
|
||||||
<li>Если требуется использовать программу отличную от известных, тогда нужно указать ее имя, тип и алгоритмы, как указано в инструкции, поставляемой ее производителем.
|
</li><li><strong>Проверять подписи и сертификаты на сервере</strong> - этот флажок виден только для серверных баз. Если его установить, тогда проверка электронной подписи и сертификата будет происходить на сервере, что позволяет не устанавливать программу на каждом компьютере, гдетребуется только такие операции.
|
||||||
</li>
|
<ul><li>В записи о программе можно перейти к списку <strong>Пути к программе на серверах Linux</strong> - в котором нужно указать пути для тех компьютеров, на которых сервер 1С:Предприятия работает под управлением ОС Linux.</li></ul></li></ul><h3>Дополнительно</h3>
|
||||||
<li>В колонке <strong>Результат проверки</strong> отражаются сведения, по которым можно понять установлена ли программа на компьютере или нет или же установлена, но некорректно.<span lang="RU">
|
|
||||||
</span></li>
|
|
||||||
<li>Linux: <strong>Путь к программе (<Имя программы, соответствующей выделенной строке в списке>)</strong> - поле, которое требуется обязательно заполнять на компьютерах под управлением ОС Linux.</li>
|
|
||||||
<ul><li>В записи о программе можно перейти к списку <strong>Пути к программе на серверах Linux</strong> - в котором нужно указать пути для тех компьютеров, на которых сервер 1С:Предприятия работает под управлением ОС Linux.</li></ul><li>В нижней части списка расположена ссылка <a href="http://its.1c.ru/db/metod81#content:5784:1">Инструкция по работе с программами электронной подписи и шифрования</a>. Перейдите по этой ссылке в соответствующий раздел 1С:ИТС, если имеются вопросы.</li></ul><h3>Дополнительно</h3>
|
|
||||||
<ul><li>Задайте <strong>Расширение для зашифрованных файлов</strong> при отправке по почте, при выполнении команды <strong>Сохранить как</strong> и при экспорте папки (по умолчанию <strong>.p7m</strong>).
|
<ul><li>Задайте <strong>Расширение для зашифрованных файлов</strong> при отправке по почте, при выполнении команды <strong>Сохранить как</strong> и при экспорте папки (по умолчанию <strong>.p7m</strong>).
|
||||||
</li>
|
</li><li>
|
||||||
<li>
|
|
||||||
<div>Напишите <strong>Расширение для файлов подписи</strong> (по умолчанию <strong>.p7s</strong>).</div>
|
<div>Напишите <strong>Расширение для файлов подписи</strong> (по умолчанию <strong>.p7s</strong>).</div>
|
||||||
</li>
|
</li><li>
|
||||||
<li>
|
|
||||||
<div>С помощью переключателя <strong>При сохранении данных в файл вместе с электронной подписью</strong> задайте поведение программы при выполнении команды <strong>Сохранить вместе с электронной подписью</strong>: </div>
|
<div>С помощью переключателя <strong>При сохранении данных в файл вместе с электронной подписью</strong> задайте поведение программы при выполнении команды <strong>Сохранить вместе с электронной подписью</strong>: </div>
|
||||||
<ul><li>
|
<ul><li>
|
||||||
<div><strong>Сохранять все подписи</strong> - все подписи сохраняются; </div>
|
<div><strong>Сохранять все подписи</strong> - все подписи сохраняются; </div>
|
||||||
</li>
|
</li><li>
|
||||||
<li>
|
<div><strong>Спрашивать</strong> - выбор сохраняемых подписей осуществляется из <a href="CommonForm.СохранениеВместеСЭлектроннойПодписью/Help">списка</a>.</div></li></ul></li><li>
|
||||||
<div><strong>Спрашивать</strong> - выбор сохраняемых подписей осуществляется из <a href="CommonForm.СохранениеВместеСЭлектроннойПодписью/Help">списка</a>.</div></li></ul></li>
|
|
||||||
<li>
|
|
||||||
<div>Включите флажок <strong>Сохранять сертификат</strong> для сохранения на компьютер сертификата вместе с файлом и электронной подписью.</div></li></ul><h3>См. также:</h3>
|
<div>Включите флажок <strong>Сохранять сертификат</strong> для сохранения на компьютер сертификата вместе с файлом и электронной подписью.</div></li></ul><h3>См. также:</h3>
|
||||||
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
|
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
|
||||||
@@ -157,8 +157,19 @@
|
|||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Обработчик = Новый ОписаниеОповещения("ОбработатьДействияСообщения", ВариантыОтчетовКлиент);
|
Обработчик = Новый ОписаниеОповещения("ОбработатьДействияСообщения", ВариантыОтчетовКлиент,,
|
||||||
СистемаВзаимодействия.ПодключитьОбработчикДействияСообщения(Обработчик);
|
"ПриОшибкеОбработкиДействияСообщения", ВариантыОтчетовКлиент);
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
СистемаВзаимодействия.ПодключитьОбработчикДействияСообщения(Обработчик);
|
||||||
|
Исключение
|
||||||
|
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||||
|
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
|
||||||
|
НСтр("ru = 'Варианты отчетов.Ошибка подключения обработчика действия сообщения'",
|
||||||
|
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
|
||||||
|
"Ошибка",
|
||||||
|
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
@@ -196,6 +207,18 @@
|
|||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
Процедура ПриОшибкеОбработкиДействияСообщения(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
|
||||||
|
|
||||||
|
СтандартнаяОбработка = Ложь;
|
||||||
|
|
||||||
|
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
|
||||||
|
НСтр("ru = 'Варианты отчетов.Ошибка обработки действия сообщения'",
|
||||||
|
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
|
||||||
|
"Ошибка",
|
||||||
|
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ОбработатьДействияСообщения(Сообщение, Действие, ДополнительныеПараметры) Экспорт
|
Процедура ОбработатьДействияСообщения(Сообщение, Действие, ДополнительныеПараметры) Экспорт
|
||||||
|
|
||||||
Если Действие = ВариантыОтчетовКлиентСервер.ИмяДействияПрименитьПереданныеНастройки() Тогда
|
Если Действие = ВариантыОтчетовКлиентСервер.ИмяДействияПрименитьПереданныеНастройки() Тогда
|
||||||
|
|||||||
@@ -243,7 +243,7 @@
|
|||||||
ПараметрыМногопоточнойОперации.Вставить("ПрерватьВыполнениеЕслиОшибка", ПараметрыВыполнения.ПрерватьВыполнениеЕслиОшибка);
|
ПараметрыМногопоточнойОперации.Вставить("ПрерватьВыполнениеЕслиОшибка", ПараметрыВыполнения.ПрерватьВыполнениеЕслиОшибка);
|
||||||
ПараметрыМногопоточнойОперации.Вставить("АдресРезультатов", АдресРезультатов);
|
ПараметрыМногопоточнойОперации.Вставить("АдресРезультатов", АдресРезультатов);
|
||||||
|
|
||||||
Возврат ВыполнитьФункцию(ПараметрыВыполненияДочернихПотоков, "ДлительныеОперации.ВыполнитьМногопоточныйПроцесс", ПараметрыМногопоточнойОперации);
|
Возврат ВыполнитьФункцию(ПараметрыВыполненияДочернихПотоков, ИмяМетодаМногопоточногоПроцесса(), ПараметрыМногопоточнойОперации);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
@@ -310,7 +310,7 @@
|
|||||||
ПараметрыМногопоточнойОперации.Вставить("ПрерватьВыполнениеЕслиОшибка", ПараметрыВыполнения.ПрерватьВыполнениеЕслиОшибка);
|
ПараметрыМногопоточнойОперации.Вставить("ПрерватьВыполнениеЕслиОшибка", ПараметрыВыполнения.ПрерватьВыполнениеЕслиОшибка);
|
||||||
ПараметрыМногопоточнойОперации.Вставить("АдресРезультатов", АдресРезультатов);
|
ПараметрыМногопоточнойОперации.Вставить("АдресРезультатов", АдресРезультатов);
|
||||||
|
|
||||||
Результат = ВыполнитьФункцию(ПараметрыВыполненияДочернихПотоков, "ДлительныеОперации.ВыполнитьМногопоточныйПроцесс", ПараметрыМногопоточнойОперации);
|
Результат = ВыполнитьФункцию(ПараметрыВыполненияДочернихПотоков, ИмяМетодаМногопоточногоПроцесса(), ПараметрыМногопоточнойОперации);
|
||||||
|
|
||||||
Возврат Результат;
|
Возврат Результат;
|
||||||
|
|
||||||
@@ -452,7 +452,7 @@
|
|||||||
// * КраткоеПредставлениеОшибки - Строка - краткая информация об исключении, если Статус = "Ошибка".
|
// * КраткоеПредставлениеОшибки - Строка - краткая информация об исключении, если Статус = "Ошибка".
|
||||||
// * ПодробноеПредставлениеОшибки - Строка - подробная информация об исключении, если Статус = "Ошибка".
|
// * ПодробноеПредставлениеОшибки - Строка - подробная информация об исключении, если Статус = "Ошибка".
|
||||||
// * Сообщения - ФиксированныйМассив - если Статус <> "Выполняется", то массив объектов СообщениеПользователю,
|
// * Сообщения - ФиксированныйМассив - если Статус <> "Выполняется", то массив объектов СообщениеПользователю,
|
||||||
// которые были сформированы в фоновом задании.
|
// которые были сформированы в фоновом задании, иначе пустой массив.
|
||||||
//
|
//
|
||||||
// Пример:
|
// Пример:
|
||||||
// В общем виде процесс запуска и обработки результата длительной операции выглядит следующим образом:
|
// В общем виде процесс запуска и обработки результата длительной операции выглядит следующим образом:
|
||||||
@@ -612,7 +612,8 @@
|
|||||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||||
Попытка
|
Попытка
|
||||||
Задание = ЗапуститьФоновоеЗаданиеСКонтекстомКлиента(ИмяПроцедуры,
|
Задание = ЗапуститьФоновоеЗаданиеСКонтекстомКлиента(ИмяПроцедуры,
|
||||||
ПараметрыВыполнения, ПараметрыЭкспортнойПроцедуры, БезопасныйРежим);
|
ПараметрыВыполнения, ПараметрыЭкспортнойПроцедуры, БезопасныйРежим,
|
||||||
|
ПараметрыВыполнения.ОжидатьЗавершение <> Неопределено);
|
||||||
Исключение
|
Исключение
|
||||||
Результат.Статус = "Ошибка";
|
Результат.Статус = "Ошибка";
|
||||||
Если Задание <> Неопределено И Задание.ИнформацияОбОшибке <> Неопределено Тогда
|
Если Задание <> Неопределено И Задание.ИнформацияОбОшибке <> Неопределено Тогда
|
||||||
@@ -644,8 +645,12 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗаданиеВыполнено Тогда
|
Если ЗаданиеВыполнено Тогда
|
||||||
ПрогрессИСообщения = ПрочитатьПрогрессИСообщения(Задание.УникальныйИдентификатор, "ПрогрессИСообщения");
|
Если ПараметрыВыполнения.ОжидатьЗавершение <> Неопределено Тогда
|
||||||
Результат.Сообщения = ПрогрессИСообщения.Сообщения;
|
Сообщения = ПолучитьИзОповещений(Истина, Задание.УникальныйИдентификатор, "Сообщения");
|
||||||
|
Иначе
|
||||||
|
Сообщения = Задание.ПолучитьСообщенияПользователю(Истина);
|
||||||
|
КонецЕсли;
|
||||||
|
Результат.Сообщения = Сообщения;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ЗаполнитьЗначенияСвойств(Результат, ОперацияВыполнена(Задание.УникальныйИдентификатор), , "Сообщения");
|
ЗаполнитьЗначенияСвойств(Результат, ОперацияВыполнена(Задание.УникальныйИдентификатор), , "Сообщения");
|
||||||
@@ -716,7 +721,6 @@
|
|||||||
//
|
//
|
||||||
// Для того чтобы выводить ход выполнения длительной операции для пользователя, следует установить
|
// Для того чтобы выводить ход выполнения длительной операции для пользователя, следует установить
|
||||||
// свойство ВыводитьПрогрессВыполнения в Истина (см. ДлительныеОперацииКлиент.ПараметрыОжидания).
|
// свойство ВыводитьПрогрессВыполнения в Истина (см. ДлительныеОперацииКлиент.ПараметрыОжидания).
|
||||||
// Его также можно получать отдельно при помощи функции ДлительныеОперации.ПрочитатьПрогресс.
|
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Процент - Число - процент выполнения.
|
// Процент - Число - процент выполнения.
|
||||||
@@ -726,10 +730,10 @@
|
|||||||
//
|
//
|
||||||
Процедура СообщитьПрогресс(Знач Процент = Неопределено, Знач Текст = Неопределено, Знач ДополнительныеПараметры = Неопределено) Экспорт
|
Процедура СообщитьПрогресс(Знач Процент = Неопределено, Знач Текст = Неопределено, Знач ДополнительныеПараметры = Неопределено) Экспорт
|
||||||
|
|
||||||
Если Не СтандартныеПодсистемыПовтИсп.ЭтоФоновоеЗадание() Тогда
|
Если Не СтандартныеПодсистемыПовтИсп.ЭтоСеансДлительнойОперации() Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПередаваемоеЗначение = Новый Структура;
|
ПередаваемоеЗначение = Новый Структура;
|
||||||
Если Процент <> Неопределено Тогда
|
Если Процент <> Неопределено Тогда
|
||||||
ПередаваемоеЗначение.Вставить("Процент", Процент);
|
ПередаваемоеЗначение.Вставить("Процент", Процент);
|
||||||
@@ -741,16 +745,16 @@
|
|||||||
ПередаваемоеЗначение.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
|
ПередаваемоеЗначение.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПередаваемыйТекст = ОбщегоНазначения.ЗначениеВСтрокуXML(ПередаваемоеЗначение);
|
ОтправитьОповещениеКлиенту("Прогресс", ПередаваемоеЗначение);
|
||||||
|
|
||||||
Текст = "{" + СообщениеПрогресса() + "}" + ПередаваемыйТекст;
|
|
||||||
ОбщегоНазначения.СообщитьПользователю(Текст);
|
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
// Считывает информацию о ходе выполнения длительной операции,
|
// Считывает информацию о ходе выполнения длительной операции,
|
||||||
// записанную процедурой ДлительныеОперации.СообщитьПрогресс.
|
// записанную процедурой ДлительныеОперации.СообщитьПрогресс.
|
||||||
//
|
//
|
||||||
|
// Рекомендуется получать прогресс через обработчик оповещения,
|
||||||
|
// который подключается с помощью ДлительныеОперацииКлиент.ОжидатьЗавершение.
|
||||||
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ИдентификаторЗадания - УникальныйИдентификатор - идентификатор фонового задания.
|
// ИдентификаторЗадания - УникальныйИдентификатор - идентификатор фонового задания.
|
||||||
//
|
//
|
||||||
@@ -762,7 +766,7 @@
|
|||||||
//
|
//
|
||||||
Функция ПрочитатьПрогресс(Знач ИдентификаторЗадания) Экспорт
|
Функция ПрочитатьПрогресс(Знач ИдентификаторЗадания) Экспорт
|
||||||
|
|
||||||
Возврат ПрочитатьПрогрессИСообщения(ИдентификаторЗадания, "Прогресс").Прогресс;
|
Возврат ПолучитьИзОповещений(Истина, ИдентификаторЗадания, "Прогресс");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
@@ -784,10 +788,12 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
УстановитьПривилегированныйРежим(Истина);
|
УстановитьПривилегированныйРежим(Истина);
|
||||||
Если ПараметрыСеанса.ОтмененныеДлительныеОперации.Найти(ИдентификаторЗадания) = Неопределено Тогда
|
Если ПараметрыСеанса.ДлительныеОперации.Отмененные.Найти(ИдентификаторЗадания) = Неопределено Тогда
|
||||||
ОтмененныеДлительныеОперации = Новый Массив(ПараметрыСеанса.ОтмененныеДлительныеОперации);
|
Свойства = Новый Структура(ПараметрыСеанса.ДлительныеОперации);
|
||||||
ОтмененныеДлительныеОперации.Добавить(ИдентификаторЗадания);
|
Отмененные = Новый Массив(Свойства.Отмененные);
|
||||||
ПараметрыСеанса.ОтмененныеДлительныеОперации = Новый ФиксированныйМассив(ОтмененныеДлительныеОперации);
|
Отмененные.Добавить(ИдентификаторЗадания);
|
||||||
|
Свойства.Отмененные = Новый ФиксированныйМассив(Отмененные);
|
||||||
|
ПараметрыСеанса.ДлительныеОперации = Новый ФиксированнаяСтруктура(Свойства);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
УстановитьПривилегированныйРежим(Ложь);
|
УстановитьПривилегированныйРежим(Ложь);
|
||||||
|
|
||||||
@@ -818,45 +824,51 @@
|
|||||||
//
|
//
|
||||||
Функция ЗаданиеВыполнено(Знач ИдентификаторЗадания) Экспорт
|
Функция ЗаданиеВыполнено(Знач ИдентификаторЗадания) Экспорт
|
||||||
|
|
||||||
Задание = НайтиЗаданиеПоИдентификатору(ИдентификаторЗадания);
|
Задание = Неопределено;
|
||||||
|
Результат = ОперацияВыполнена(ИдентификаторЗадания, Задание);
|
||||||
|
|
||||||
Если Задание <> Неопределено
|
Если Результат.Статус = "Выполняется" Тогда
|
||||||
И Задание.Состояние = СостояниеФоновогоЗадания.Активно Тогда
|
|
||||||
Возврат Ложь;
|
Возврат Ложь;
|
||||||
|
ИначеЕсли Результат.Статус = "Выполнено" Тогда
|
||||||
|
Возврат Истина;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ТекстОшибки = НСтр("ru = 'Не удалось выполнить данную операцию.
|
Если Результат.Статус = "Отменено" Тогда
|
||||||
|Технические подробности см. в журнале регистрации.'");
|
ТекстОшибки = Результат.КраткоеПредставлениеОшибки;
|
||||||
Если Задание = Неопределено Тогда
|
|
||||||
ЗаписьЖурналаРегистрации(НСтр("ru = 'Длительные операции.Фоновое задание не найдено'", ОбщегоНазначения.КодОсновногоЯзыка()),
|
ИначеЕсли Задание = Неопределено Тогда
|
||||||
УровеньЖурналаРегистрации.Ошибка, , , Строка(ИдентификаторЗадания));
|
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||||
ИначеЕсли Задание.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
|
НСтр("ru = '%1
|
||||||
ОшибкаЗадания = Задание.ИнформацияОбОшибке;
|
|
|
||||||
Если ОшибкаЗадания <> Неопределено Тогда
|
|Технические подробности:
|
||||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
|%2
|
||||||
НСтр("ru = '%1
|
|
|
||||||
|
|
|См. также журнал регистрации.'"),
|
||||||
|Технические подробности:
|
Результат.КраткоеПредставлениеОшибки,
|
||||||
|Ошибка выполнения фонового задания %2 с идентификатором %3 по причине
|
Результат.ПодробноеПредставлениеОшибки);
|
||||||
|%4
|
|
||||||
|
|
|
||||||
|См. также журнал регистрации.'"),
|
|
||||||
КраткоеПредставлениеОшибки(Задание.ИнформацияОбОшибке), Задание.ИмяМетода,
|
|
||||||
Строка(ИдентификаторЗадания), ПодробноеПредставлениеОшибки(Задание.ИнформацияОбОшибке));
|
|
||||||
КонецЕсли;
|
|
||||||
ИначеЕсли Задание.Состояние = СостояниеФоновогоЗадания.Отменено Тогда
|
|
||||||
ЗаписьЖурналаРегистрации(
|
|
||||||
НСтр("ru = 'Длительные операции.Фоновое задание отменено администратором'", ОбщегоНазначения.КодОсновногоЯзыка()),
|
|
||||||
УровеньЖурналаРегистрации.Ошибка, , , НСтр("ru = 'Задание завершилось с неизвестной ошибкой.'"));
|
|
||||||
Иначе
|
Иначе
|
||||||
Возврат Истина;
|
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||||
|
НСтр("ru = '%1
|
||||||
|
|
|
||||||
|
|Технические подробности:
|
||||||
|
|Ошибка выполнения фонового задания %2 с идентификатором %3 по причине
|
||||||
|
|%4
|
||||||
|
|
|
||||||
|
|См. также журнал регистрации.'"),
|
||||||
|
Результат.КраткоеПредставлениеОшибки,
|
||||||
|
Задание.ИмяМетода,
|
||||||
|
Строка(ИдентификаторЗадания),
|
||||||
|
Результат.ПодробноеПредставлениеОшибки);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ВызватьИсключение ТекстОшибки;
|
ВызватьИсключение ТекстОшибки;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получает сообщения пользователю, отфильтровывает служебные сообщения о состоянии длительной операции.
|
// Получает сообщения пользователю из фонового задания длительной операции.
|
||||||
|
//
|
||||||
|
// Рекомендуется получать сообщения через обработчик оповещения,
|
||||||
|
// который подключается с помощью ДлительныеОперацииКлиент.ОжидатьЗавершение.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// УдалятьПолученные - Булево - признак необходимости удаления полученных сообщений.
|
// УдалятьПолученные - Булево - признак необходимости удаления полученных сообщений.
|
||||||
@@ -876,27 +888,10 @@
|
|||||||
Функция СообщенияПользователю(УдалятьПолученные = Ложь, ИдентификаторЗадания = Неопределено) Экспорт
|
Функция СообщенияПользователю(УдалятьПолученные = Ложь, ИдентификаторЗадания = Неопределено) Экспорт
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(ИдентификаторЗадания) Тогда
|
Если ЗначениеЗаполнено(ИдентификаторЗадания) Тогда
|
||||||
ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
|
Возврат ПолучитьИзОповещений(УдалятьПолученные, ИдентификаторЗадания, "Сообщения");
|
||||||
Если ФоновоеЗадание <> Неопределено Тогда
|
|
||||||
ВсеСообщения = ФоновоеЗадание.ПолучитьСообщенияПользователю(УдалятьПолученные);
|
|
||||||
КонецЕсли;
|
|
||||||
Иначе
|
|
||||||
ВсеСообщения = ПолучитьСообщенияПользователю(УдалятьПолученные);
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Результат = Новый Массив;
|
Возврат ПолучитьСообщенияПользователю(УдалятьПолученные);
|
||||||
|
|
||||||
Для Каждого Сообщение Из ВсеСообщения Цикл
|
|
||||||
Если СтрНачинаетсяС(Сообщение.Текст, "{" + СообщениеПрогресса() + "}") Тогда
|
|
||||||
Если УдалятьПолученные Тогда
|
|
||||||
Сообщение.Сообщить();
|
|
||||||
КонецЕсли;
|
|
||||||
Иначе
|
|
||||||
Результат.Добавить(Сообщение);
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
Возврат Новый ФиксированныйМассив(Результат);
|
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
@@ -996,39 +991,37 @@
|
|||||||
|
|
||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
Функция ОперацияВыполнена(Знач ИдентификаторЗадания, Знач ИсключениеПриОшибке = Ложь, Знач ВыводитьПрогрессВыполнения = Ложь,
|
// Параметры:
|
||||||
Знач ВыводитьСообщения = Ложь) Экспорт
|
// ИдентификаторЗадания - УникальныйИдентификатор
|
||||||
|
// Задание - ФоновоеЗадание - возвращаемое значение - найденное фоновое задание.
|
||||||
|
// - Неопределено - если фоновое задание не найдено.
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// см. НовыйРезультатВыполненияОперации
|
||||||
|
//
|
||||||
|
Функция ОперацияВыполнена(Знач ИдентификаторЗадания, Задание = Неопределено) Экспорт
|
||||||
|
|
||||||
Результат = Новый Структура;
|
Результат = НовыйРезультатВыполненияОперации();
|
||||||
Результат.Вставить("Статус", "Выполняется");
|
|
||||||
Результат.Вставить("КраткоеПредставлениеОшибки", Неопределено);
|
|
||||||
Результат.Вставить("ПодробноеПредставлениеОшибки", Неопределено);
|
|
||||||
Результат.Вставить("Прогресс", Неопределено);
|
|
||||||
Результат.Вставить("Сообщения", Неопределено);
|
|
||||||
|
|
||||||
Задание = НайтиЗаданиеПоИдентификатору(ИдентификаторЗадания);
|
Задание = НайтиЗаданиеПоИдентификатору(ИдентификаторЗадания);
|
||||||
Если Задание = Неопределено Тогда
|
Если Задание = Неопределено Тогда
|
||||||
Пояснение = НСтр("ru = 'Операция не выполнена из-за аварийного завершения фонового задания.
|
РезультатИзОповещения = ПолучитьИзОповещений(Ложь,
|
||||||
|Фоновое задание не существует'") + ": " + Строка(ИдентификаторЗадания);
|
ИдентификаторЗадания, "ДлительнаяОперацияЗавершена");
|
||||||
ЗаписьЖурналаРегистрации(НСтр("ru = 'Длительные операции.Ошибка выполнения'", ОбщегоНазначения.КодОсновногоЯзыка()),
|
Если РезультатИзОповещения <> Неопределено Тогда
|
||||||
УровеньЖурналаРегистрации.Ошибка, , , Пояснение);
|
ЗаполнитьЗначенияСвойств(Результат, РезультатИзОповещения);
|
||||||
Если ИсключениеПриОшибке Тогда
|
Возврат Результат;
|
||||||
ВызватьИсключение(НСтр("ru = 'Не удалось выполнить данную операцию.'"));
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
Результат.КраткоеПредставлениеОшибки =
|
||||||
|
НСтр("ru = 'Операция не выполнена из-за аварийного завершения фонового задания.'");
|
||||||
|
Результат.ПодробноеПредставлениеОшибки = Результат.КраткоеПредставлениеОшибки + Символы.ПС
|
||||||
|
+ НСтр("ru = 'Фоновое задание не существует'") + ": " + Строка(ИдентификаторЗадания);
|
||||||
|
ЗаписьЖурналаРегистрации(НСтр("ru = 'Длительные операции.Фоновое задание не найдено'", ОбщегоНазначения.КодОсновногоЯзыка()),
|
||||||
|
УровеньЖурналаРегистрации.Ошибка, , , Результат.ПодробноеПредставлениеОшибки);
|
||||||
Результат.Статус = "Ошибка";
|
Результат.Статус = "Ошибка";
|
||||||
Результат.КраткоеПредставлениеОшибки = НСтр("ru = 'Операция не выполнена из-за аварийного завершения фонового задания.'");
|
|
||||||
Возврат Результат;
|
Возврат Результат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ВыводитьПрогрессВыполнения Тогда
|
ЗаписатьОстаткиСообщенийПользователю(Задание.УникальныйИдентификатор);
|
||||||
ПрогрессИСообщения = ПрочитатьПрогрессИСообщения(ИдентификаторЗадания, ?(ВыводитьСообщения, "ПрогрессИСообщения", "Прогресс"));
|
|
||||||
Результат.Прогресс = ПрогрессИСообщения.Прогресс;
|
|
||||||
Если ВыводитьСообщения Тогда
|
|
||||||
Результат.Сообщения = ПрогрессИСообщения.Сообщения;
|
|
||||||
КонецЕсли;
|
|
||||||
ИначеЕсли ВыводитьСообщения Тогда
|
|
||||||
Результат.Сообщения = Задание.ПолучитьСообщенияПользователю(Истина);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если Задание.Состояние = СостояниеФоновогоЗадания.Активно Тогда
|
Если Задание.Состояние = СостояниеФоновогоЗадания.Активно Тогда
|
||||||
Возврат Результат;
|
Возврат Результат;
|
||||||
@@ -1036,20 +1029,12 @@
|
|||||||
|
|
||||||
Если Задание.Состояние = СостояниеФоновогоЗадания.Отменено Тогда
|
Если Задание.Состояние = СостояниеФоновогоЗадания.Отменено Тогда
|
||||||
УстановитьПривилегированныйРежим(Истина);
|
УстановитьПривилегированныйРежим(Истина);
|
||||||
Если ПараметрыСеанса.ОтмененныеДлительныеОперации.Найти(ИдентификаторЗадания) = Неопределено Тогда
|
Если ПараметрыСеанса.ДлительныеОперации.Отмененные.Найти(ИдентификаторЗадания) = Неопределено Тогда
|
||||||
Результат.Статус = "Ошибка";
|
Результат.Статус = "Ошибка";
|
||||||
Если Задание.ИнформацияОбОшибке <> Неопределено Тогда
|
Если Задание.ИнформацияОбОшибке <> Неопределено Тогда
|
||||||
Результат.КраткоеПредставлениеОшибки = НСтр("ru = 'Операция отменена администратором.'");
|
Результат.КраткоеПредставлениеОшибки = НСтр("ru = 'Операция отменена администратором.'");
|
||||||
Результат.ПодробноеПредставлениеОшибки = Результат.КраткоеПредставлениеОшибки;
|
Результат.ПодробноеПредставлениеОшибки = Результат.КраткоеПредставлениеОшибки;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
Если ИсключениеПриОшибке Тогда
|
|
||||||
Если Не ПустаяСтрока(Результат.КраткоеПредставлениеОшибки) Тогда
|
|
||||||
ТекстСообщения = Результат.КраткоеПредставлениеОшибки;
|
|
||||||
Иначе
|
|
||||||
ТекстСообщения = НСтр("ru = 'Не удалось выполнить данную операцию.'");
|
|
||||||
КонецЕсли;
|
|
||||||
ВызватьИсключение ТекстСообщения;
|
|
||||||
КонецЕсли;
|
|
||||||
Иначе
|
Иначе
|
||||||
Результат.Статус = "Отменено";
|
Результат.Статус = "Отменено";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
@@ -1065,14 +1050,6 @@
|
|||||||
Результат.КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки(Задание.ИнформацияОбОшибке);
|
Результат.КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки(Задание.ИнформацияОбОшибке);
|
||||||
Результат.ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки(Задание.ИнформацияОбОшибке);
|
Результат.ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки(Задание.ИнформацияОбОшибке);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
Если ИсключениеПриОшибке Тогда
|
|
||||||
Если Не ПустаяСтрока(Результат.КраткоеПредставлениеОшибки) Тогда
|
|
||||||
ТекстСообщения = Результат.КраткоеПредставлениеОшибки;
|
|
||||||
Иначе
|
|
||||||
ТекстСообщения = НСтр("ru = 'Не удалось выполнить данную операцию.'");
|
|
||||||
КонецЕсли;
|
|
||||||
ВызватьИсключение ТекстСообщения;
|
|
||||||
КонецЕсли;
|
|
||||||
Возврат Результат;
|
Возврат Результат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
@@ -1081,10 +1058,6 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СообщениеПрогресса() Экспорт
|
|
||||||
Возврат "СтандартныеПодсистемы.ДлительныеОперации";
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
Процедура ВыполнитьПроцедуруМодуляОбъектаОбработки(Параметры, АдресХранилища) Экспорт
|
Процедура ВыполнитьПроцедуруМодуляОбъектаОбработки(Параметры, АдресХранилища) Экспорт
|
||||||
|
|
||||||
Если БезопасныйРежим() <> Ложь Тогда
|
Если БезопасныйРежим() <> Ложь Тогда
|
||||||
@@ -1146,36 +1119,94 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Обработчики событий подсистем конфигурации.
|
||||||
|
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ИмяПараметра - Строка
|
// ИмяПараметра - Строка
|
||||||
// УстановленныеПараметры - Массив из Строка
|
// УстановленныеПараметры - Массив из Строка
|
||||||
//
|
//
|
||||||
Процедура УстановкаПараметровСеанса(ИмяПараметра, УстановленныеПараметры) Экспорт
|
Процедура УстановкаПараметровСеанса(ИмяПараметра, УстановленныеПараметры) Экспорт
|
||||||
|
|
||||||
Если ИмяПараметра = "ОтмененныеДлительныеОперации" Тогда
|
Если ИмяПараметра = "ДлительныеОперации" Тогда
|
||||||
ПараметрыСеанса.ОтмененныеДлительныеОперации = Новый ФиксированныйМассив(Новый Массив);
|
Свойства = Новый Структура;
|
||||||
УстановленныеПараметры.Добавить("ОтмененныеДлительныеОперации");
|
Свойства.Вставить("Отмененные", Новый ФиксированныйМассив(Новый Массив));
|
||||||
|
Свойства.Вставить("ПолученныеОповещения", Новый ФиксированноеСоответствие(Новый Соответствие));
|
||||||
|
ПараметрыСеанса.ДлительныеОперации = Новый ФиксированнаяСтруктура(Свойства);
|
||||||
|
УстановленныеПараметры.Добавить("ДлительныеОперации");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений
|
||||||
|
Процедура ПриДобавленииСерверныхОповещений(Оповещения) Экспорт
|
||||||
|
|
||||||
|
Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(ИмяОповещения());
|
||||||
|
Оповещение.ИмяМодуляОтправки = "";
|
||||||
|
Оповещение.ИмяМодуляПолучения = "ДлительныеОперацииКлиент";
|
||||||
|
|
||||||
|
Оповещения.Вставить(Оповещение.Имя, Оповещение);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ОперацииВыполнены(Знач Задания) Экспорт
|
Функция НовыйРезультатВыполненияОперации() Экспорт
|
||||||
|
|
||||||
|
Результат = Новый Структура;
|
||||||
|
Результат.Вставить("Статус", "Выполняется");
|
||||||
|
Результат.Вставить("КраткоеПредставлениеОшибки", Неопределено);
|
||||||
|
Результат.Вставить("ПодробноеПредставлениеОшибки", Неопределено);
|
||||||
|
Результат.Вставить("Прогресс", Неопределено);
|
||||||
|
Результат.Вставить("Сообщения", Неопределено);
|
||||||
|
|
||||||
|
Возврат Результат;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// См. ОбщегоНазначенияПереопределяемый.ПриПериодическомПолученииДанныхКлиентаНаСервере
|
||||||
|
Процедура ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты) Экспорт
|
||||||
|
|
||||||
|
ПараметрыПроверки = Параметры.Получить( // см. ДлительныеОперацииКлиент.ПараметрыПроверкиДлительныхОпераций
|
||||||
|
"СтандартныеПодсистемы.БазоваяФункциональность.ПараметрыПроверкиДлительныхОпераций");
|
||||||
|
|
||||||
|
Если ПараметрыПроверки = Неопределено Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Результаты.Вставить("СтандартныеПодсистемы.БазоваяФункциональность.РезультатПроверкиДлительныхОпераций",
|
||||||
|
РезультатПроверкиДлительныхОпераций(ПараметрыПроверки));
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Параметры:
|
||||||
|
// Параметры - см. ДлительныеОперацииКлиент.ПараметрыПроверкиДлительныхОпераций
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие из КлючИЗначение:
|
||||||
|
// * Ключ - УникальныйИдентификатор - идентификатор задания
|
||||||
|
// * Значение - см. ОперацияВыполнена
|
||||||
|
//
|
||||||
|
Функция РезультатПроверкиДлительныхОпераций(Параметры) Экспорт
|
||||||
|
|
||||||
Результат = Новый Соответствие;
|
Результат = Новый Соответствие;
|
||||||
Для каждого Задание Из Задания Цикл
|
Для Каждого ИдентификаторЗадания Из Параметры.ЗаданияДляПроверки Цикл
|
||||||
Результат.Вставить(Задание.ИдентификаторЗадания,
|
Результат.Вставить(ИдентификаторЗадания, ОперацияВыполнена(ИдентификаторЗадания));
|
||||||
ОперацияВыполнена(Задание.ИдентификаторЗадания, Ложь, Задание.ВыводитьПрогрессВыполнения, Задание.ВыводитьСообщения));
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
|
Для Каждого ИдентификаторЗадания Из Параметры.ЗаданияДляОтмены Цикл
|
||||||
|
ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
|
||||||
|
Результат.Вставить(ИдентификаторЗадания, Новый Структура("Статус", "Отменено"));
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
Возврат Результат;
|
Возврат Результат;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ЗапуститьФоновоеЗаданиеСКонтекстомКлиента(ИмяПроцедуры,
|
Функция ЗапуститьФоновоеЗаданиеСКонтекстомКлиента(ИмяПроцедуры,
|
||||||
ПараметрыВыполнения, ПараметрыПроцедуры = Неопределено, БезопасныйРежим = Ложь) Экспорт
|
ПараметрыВыполнения, ПараметрыПроцедуры = Неопределено, БезопасныйРежим = Ложь, ОтправлятьОповещения = Ложь) Экспорт
|
||||||
|
|
||||||
КлючФоновогоЗадания = ПараметрыВыполнения.КлючФоновогоЗадания;
|
КлючФоновогоЗадания = ПараметрыВыполнения.КлючФоновогоЗадания;
|
||||||
НаименованиеФоновогоЗадания = ?(ПустаяСтрока(ПараметрыВыполнения.НаименованиеФоновогоЗадания),
|
НаименованиеФоновогоЗадания = ?(ПустаяСтрока(ПараметрыВыполнения.НаименованиеФоновогоЗадания),
|
||||||
@@ -1184,6 +1215,11 @@
|
|||||||
УстановитьПривилегированныйРежим(Истина);
|
УстановитьПривилегированныйРежим(Истина);
|
||||||
ПараметрыКлиента = ПараметрыСеанса.ПараметрыКлиентаНаСервере;
|
ПараметрыКлиента = ПараметрыСеанса.ПараметрыКлиентаНаСервере;
|
||||||
УстановитьПривилегированныйРежим(Ложь);
|
УстановитьПривилегированныйРежим(Ложь);
|
||||||
|
Если ОтправлятьОповещения И Не ЗначениеЗаполнено(ПараметрыКлиента.Получить("КлючСеансаРодителя")) Тогда
|
||||||
|
ПараметрыКлиента = Новый Соответствие(ПараметрыКлиента);
|
||||||
|
ПараметрыКлиента.Вставить("КлючСеансаРодителя", СерверныеОповещения.КлючСеанса());
|
||||||
|
ПараметрыКлиента = Новый ФиксированноеСоответствие(ПараметрыКлиента);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
ВсеПараметры = Новый Структура;
|
ВсеПараметры = Новый Структура;
|
||||||
ВсеПараметры.Вставить("ИмяПроцедуры", ИмяПроцедуры);
|
ВсеПараметры.Вставить("ИмяПроцедуры", ИмяПроцедуры);
|
||||||
@@ -1219,12 +1255,7 @@
|
|||||||
Возврат Ложь;
|
Возврат Ложь;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ТекущийСеанс = ПолучитьТекущийСеансИнформационнойБазы();
|
ФоновоеЗадание = ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание();
|
||||||
Если ТекущийСеанс.ИмяПриложения <> "BackgroundJob" Тогда
|
|
||||||
Возврат Ложь;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ФоновоеЗадание = ТекущийСеанс.ПолучитьФоновоеЗадание();
|
|
||||||
|
|
||||||
Если ФоновоеЗадание = Неопределено
|
Если ФоновоеЗадание = Неопределено
|
||||||
Или ФоновоеЗадание.ИмяМетода <> ИмяПроцедурыФоновогоЗаданияБезВызоваПередЗапускомПрограммы() Тогда
|
Или ФоновоеЗадание.ИмяМетода <> ИмяПроцедурыФоновогоЗаданияБезВызоваПередЗапускомПрограммы() Тогда
|
||||||
@@ -1252,8 +1283,22 @@
|
|||||||
// Продолжение процедуры ЗапуститьФоновоеЗаданиеСКонтекстомКлиента.
|
// Продолжение процедуры ЗапуститьФоновоеЗаданиеСКонтекстомКлиента.
|
||||||
Процедура ВыполнитьСКонтекстомКлиента(ВсеПараметры) Экспорт
|
Процедура ВыполнитьСКонтекстомКлиента(ВсеПараметры) Экспорт
|
||||||
|
|
||||||
|
ПараметрыКлиента = ВсеПараметры.ПараметрыКлиентаНаСервере;
|
||||||
|
Если ЗначениеЗаполнено(ПараметрыКлиента.Получить("КлючСеансаРодителя"))
|
||||||
|
И Не ЗначениеЗаполнено(ПараметрыКлиента.Получить("ИдентификаторЗаданияМногопоточногоПроцесса")) Тогда
|
||||||
|
|
||||||
|
ФоновоеЗадание = ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание();
|
||||||
|
Если ФоновоеЗадание <> Неопределено
|
||||||
|
И ВсеПараметры.ИмяПроцедуры = ИмяМетодаМногопоточногоПроцесса() Тогда
|
||||||
|
ПараметрыКлиента = Новый Соответствие(ПараметрыКлиента);
|
||||||
|
ПараметрыКлиента.Вставить("ИдентификаторЗаданияМногопоточногоПроцесса",
|
||||||
|
ФоновоеЗадание.УникальныйИдентификатор);
|
||||||
|
ПараметрыКлиента = Новый ФиксированноеСоответствие(ПараметрыКлиента);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
УстановитьПривилегированныйРежим(Истина);
|
УстановитьПривилегированныйРежим(Истина);
|
||||||
ПараметрыСеанса.ПараметрыКлиентаНаСервере = ВсеПараметры.ПараметрыКлиентаНаСервере;
|
ПараметрыСеанса.ПараметрыКлиентаНаСервере = ПараметрыКлиента;
|
||||||
Справочники.ВерсииРасширений.ВосстановитьЗарегистрированныйСоставУстановленныхРасширений(ВсеПараметры);
|
Справочники.ВерсииРасширений.ВосстановитьЗарегистрированныйСоставУстановленныхРасширений(ВсеПараметры);
|
||||||
Справочники.ВерсииРасширений.ЗарегистрироватьИспользованиеВерсииРасширений();
|
Справочники.ВерсииРасширений.ЗарегистрироватьИспользованиеВерсииРасширений();
|
||||||
УстановитьПривилегированныйРежим(Ложь);
|
УстановитьПривилегированныйРежим(Ложь);
|
||||||
@@ -1268,11 +1313,24 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ВсеПараметры.ПараметрыВыполнения.Свойство("ЭтоФункция") И ВсеПараметры.ПараметрыВыполнения.ЭтоФункция Тогда
|
Результат = НовыйРезультатВыполненияОперации();
|
||||||
ВызватьФункцию(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры, ВсеПараметры.ПараметрыВыполнения.АдресРезультата);
|
Попытка
|
||||||
Иначе
|
Если ВсеПараметры.ПараметрыВыполнения.Свойство("ЭтоФункция") И ВсеПараметры.ПараметрыВыполнения.ЭтоФункция Тогда
|
||||||
ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
|
ВызватьФункцию(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры, ВсеПараметры.ПараметрыВыполнения.АдресРезультата);
|
||||||
КонецЕсли;
|
Иначе
|
||||||
|
ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
|
||||||
|
КонецЕсли;
|
||||||
|
Результат.Статус = "Выполнено";
|
||||||
|
Исключение
|
||||||
|
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||||
|
Результат.Статус = "Ошибка";
|
||||||
|
Результат.КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
|
||||||
|
Результат.ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке);
|
||||||
|
ОтправитьОповещениеКлиенту("ДлительнаяОперацияЗавершена", Результат);
|
||||||
|
ВызватьИсключение;
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
ОтправитьОповещениеКлиенту("ДлительнаяОперацияЗавершена", Результат);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
@@ -1356,70 +1414,207 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Считывает информацию о ходе выполнения фонового задания и сообщения, которые в нем были сформированы.
|
Функция ПолучитьИзОповещений(ПропускатьПолученные, ИдентификаторЗадания, ВидОповещений)
|
||||||
//
|
|
||||||
// Параметры:
|
|
||||||
// ИдентификаторЗадания - УникальныйИдентификатор - идентификатор фонового задания.
|
|
||||||
// Режим - Строка - "ПрогрессИСообщения", "Прогресс" или "Сообщения".
|
|
||||||
//
|
|
||||||
// Возвращаемое значение:
|
|
||||||
// Структура:
|
|
||||||
// * Прогресс - Неопределено
|
|
||||||
// - Структура - информация о ходе выполнения фонового задания, записанная процедурой СообщитьПрогресс:
|
|
||||||
// ** Процент - Число - необязательный. Процент выполнения.
|
|
||||||
// ** Текст - Строка - необязательный. Информация о текущей операции.
|
|
||||||
// ** ДополнительныеПараметры - Произвольный - необязательный. Любая дополнительная информация.
|
|
||||||
// * Сообщения - ФиксированныйМассив - массив объектов СообщениеПользователю, которые были сформированы в фоновом задании.
|
|
||||||
//
|
|
||||||
Функция ПрочитатьПрогрессИСообщения(Знач ИдентификаторЗадания, Знач Режим = "ПрогрессИСообщения")
|
|
||||||
|
|
||||||
Сообщения = Новый ФиксированныйМассив(Новый Массив);
|
ЗаписатьОстаткиСообщенийПользователю(ИдентификаторЗадания);
|
||||||
Результат = Новый Структура("Сообщения, Прогресс", Сообщения, Неопределено);
|
|
||||||
|
|
||||||
Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
|
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||||
Если Задание = Неопределено Тогда
|
УстановитьПривилегированныйРежим(Истина);
|
||||||
Возврат Результат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
МассивСообщений = Задание.ПолучитьСообщенияПользователю(Истина);
|
ПоследнееОповещение = Неопределено;
|
||||||
Если МассивСообщений = Неопределено Тогда
|
Если ПропускатьПолученные Тогда
|
||||||
Возврат Результат;
|
ПоследниеОповещения = ПараметрыСеанса.ДлительныеОперации.ПолученныеОповещения.Получить(ИдентификаторЗадания);
|
||||||
КонецЕсли;
|
Если ПоследниеОповещения <> Неопределено Тогда
|
||||||
|
ПоследнееОповещение = ПоследниеОповещения[ВидОповещений];
|
||||||
Количество = МассивСообщений.Количество();
|
|
||||||
Сообщения = Новый Массив;
|
|
||||||
ЧитатьСообщения = (Режим = "ПрогрессИСообщения" Или Режим = "Сообщения");
|
|
||||||
ЧитатьПрогресс = (Режим = "ПрогрессИСообщения" Или Режим = "Прогресс");
|
|
||||||
|
|
||||||
Если ЧитатьСообщения И Не ЧитатьПрогресс Тогда
|
|
||||||
Результат.Сообщения = Новый ФиксированныйМассив(МассивСообщений);
|
|
||||||
Возврат Результат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Для Номер = 0 По Количество - 1 Цикл
|
|
||||||
Сообщение = МассивСообщений[Номер];
|
|
||||||
|
|
||||||
Если ЧитатьПрогресс И СтрНачинаетсяС(Сообщение.Текст, "{") Тогда
|
|
||||||
Позиция = СтрНайти(Сообщение.Текст, "}");
|
|
||||||
Если Позиция > 2 Тогда
|
|
||||||
ИдентификаторМеханизма = Сред(Сообщение.Текст, 2, Позиция - 2);
|
|
||||||
Если ИдентификаторМеханизма = СообщениеПрогресса() Тогда
|
|
||||||
ПолученныйТекст = Сред(Сообщение.Текст, Позиция + 1);
|
|
||||||
Результат.Прогресс = ОбщегоНазначения.ЗначениеИзСтрокиXML(ПолученныйТекст);
|
|
||||||
Продолжить;
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
Если ЧитатьСообщения Тогда
|
КонецЕсли;
|
||||||
Сообщения.Добавить(Сообщение);
|
Оповещения = СерверныеОповещения.СерверныеОповещенияДляКлиента(ИдентификаторЗадания, ПоследнееОповещение);
|
||||||
|
|
||||||
|
УстановитьПривилегированныйРежим(Ложь);
|
||||||
|
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||||
|
|
||||||
|
СообщенияОповещений = Новый Массив;
|
||||||
|
Если ВидОповещений = "Сообщения" Тогда
|
||||||
|
Результат = Новый ФиксированныйМассив(СообщенияОповещений);
|
||||||
|
Иначе
|
||||||
|
Результат = Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Для Каждого Оповещение Из Оповещения Цикл
|
||||||
|
Параметры = Оповещение.Содержимое.Результат;
|
||||||
|
Если ТипЗнч(Параметры) <> Тип("Структура")
|
||||||
|
Или Не Параметры.Свойство("Результат")
|
||||||
|
Или ТипЗнч(Параметры.Результат) <> Тип("Структура") Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
Если ВидОповещений = "ДлительнаяОперацияЗавершена"
|
||||||
|
И Параметры.Свойство("ВидОповещения")
|
||||||
|
И Параметры.ВидОповещения = ВидОповещений Тогда
|
||||||
|
Возврат Параметры.Результат;
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не Параметры.Результат.Свойство(ВидОповещений)
|
||||||
|
Или ВидОповещений = "Сообщения"
|
||||||
|
И ТипЗнч(Параметры.Результат[ВидОповещений]) <> Тип("ФиксированныйМассив")
|
||||||
|
Или ВидОповещений = "Прогресс"
|
||||||
|
И ТипЗнч(Параметры.Результат[ВидОповещений]) <> Тип("Структура") Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
Если ВидОповещений = "Сообщения" Тогда
|
||||||
|
Для Каждого Сообщение Из Параметры.Результат.Сообщения Цикл
|
||||||
|
СообщенияОповещений.Добавить(Сообщение)
|
||||||
|
КонецЦикла;
|
||||||
|
Результат = Новый ФиксированныйМассив(СообщенияОповещений);
|
||||||
|
Иначе
|
||||||
|
Результат = Параметры.Результат.Прогресс;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Результат.Сообщения = Новый ФиксированныйМассив(Сообщения);
|
Если ПропускатьПолученные И ЗначениеЗаполнено(Оповещение) Тогда
|
||||||
|
Оповещение.Удалить("Содержимое");
|
||||||
|
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||||
|
УстановитьПривилегированныйРежим(Истина);
|
||||||
|
Свойства = Новый Структура(ПараметрыСеанса.ДлительныеОперации);
|
||||||
|
ПолученныеОповещения = Новый Соответствие(Свойства.ПолученныеОповещения);
|
||||||
|
ПоследниеОповещения = ПолученныеОповещения.Получить(ИдентификаторЗадания);
|
||||||
|
Если ПоследниеОповещения = Неопределено Тогда
|
||||||
|
ПоследниеОповещения = Новый Структура("Сообщения, Прогресс");
|
||||||
|
Иначе
|
||||||
|
ПоследниеОповещения = Новый Структура(ПоследниеОповещения);
|
||||||
|
КонецЕсли;
|
||||||
|
ПоследниеОповещения[ВидОповещений] = Новый ФиксированнаяСтруктура(Оповещение);
|
||||||
|
ПолученныеОповещения.Вставить(ИдентификаторЗадания, Новый ФиксированнаяСтруктура(ПоследниеОповещения));
|
||||||
|
КлючиУстаревших = Новый Массив;
|
||||||
|
Для Каждого КлючИЗначение Из ПолученныеОповещения Цикл
|
||||||
|
ПолученноеОповещение = ?(КлючИЗначение.Значение.Сообщения = Неопределено,
|
||||||
|
КлючИЗначение.Значение.Прогресс, КлючИЗначение.Значение.Сообщения);
|
||||||
|
Если ПолученноеОповещение.ДатаДобавления + 60*60 < ТекущаяДатаСеанса() Тогда
|
||||||
|
КлючиУстаревших.Добавить(КлючИЗначение.Ключ);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
Для Каждого Ключ Из КлючиУстаревших Цикл
|
||||||
|
ПолученныеОповещения.Удалить(Ключ);
|
||||||
|
КонецЦикла;
|
||||||
|
Свойства.ПолученныеОповещения = Новый ФиксированноеСоответствие(ПолученныеОповещения);
|
||||||
|
ПараметрыСеанса.ДлительныеОперации = Новый ФиксированнаяСтруктура(Свойства);
|
||||||
|
УстановитьПривилегированныйРежим(Ложь);
|
||||||
|
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Результат;
|
Возврат Результат;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ИмяОповещения()
|
||||||
|
|
||||||
|
Возврат "СтандартныеПодсистемы.БазоваяФункциональность.ДлительныеОперации";
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Параметры:
|
||||||
|
// Данные - см. СерверныеОповещения.НовыеДанныеСообщения
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Булево
|
||||||
|
//
|
||||||
|
Функция ПропуститьОповещение(Данные) Экспорт
|
||||||
|
|
||||||
|
// Когда система взаимодействия не подключена
|
||||||
|
// оповещение о завершении нужно пропускать,
|
||||||
|
// так как оно требует дополнительного серверного
|
||||||
|
// вызова ДлительныеОперацииВызовСервера.ФоновоеЗаданиеЗавершено.
|
||||||
|
// При отсутствии системы взаимодействия этот контроль не нужен,
|
||||||
|
// так как используется функция ОперацияВыполнена
|
||||||
|
// в рамках дополнительного контроля завершения активных операций
|
||||||
|
// через функцию РезультатПроверкиДлительныхОпераций.
|
||||||
|
|
||||||
|
Возврат Данные.ИмяОповещения = ИмяОповещения()
|
||||||
|
И Данные.Результат.ВидОповещения = "ДлительнаяОперацияЗавершена"
|
||||||
|
И Не СерверныеОповещения.СистемаВзаимодействийПодключена();
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ОтправитьОповещениеКлиенту(ВидОповещения, ПередаваемоеЗначение, ФоновоеЗадание = Неопределено) Экспорт
|
||||||
|
|
||||||
|
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||||
|
УстановитьПривилегированныйРежим(Истина);
|
||||||
|
|
||||||
|
ЗаписатьСообщенияПользователю = ФоновоеЗадание <> Неопределено И ВидОповещения = "СообщениеПользователю";
|
||||||
|
Если ЗаписатьСообщенияПользователю Тогда
|
||||||
|
КлючСеансаРодителя = СерверныеОповещения.КлючСеанса();
|
||||||
|
ИдентификаторОсновногоЗадания = ФоновоеЗадание.УникальныйИдентификатор;
|
||||||
|
Иначе
|
||||||
|
КлючСеансаРодителя = ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить("КлючСеансаРодителя");
|
||||||
|
Если Не ЗначениеЗаполнено(КлючСеансаРодителя) Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
ФоновоеЗадание = ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание();
|
||||||
|
Если ФоновоеЗадание = Неопределено Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
ИдентификаторЗаданияМногопоточногоПроцесса =
|
||||||
|
ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить("ИдентификаторЗаданияМногопоточногоПроцесса");
|
||||||
|
ИдентификаторОсновногоЗадания = ?(ЗначениеЗаполнено(ИдентификаторЗаданияМногопоточногоПроцесса),
|
||||||
|
ИдентификаторЗаданияМногопоточногоПроцесса, ФоновоеЗадание.УникальныйИдентификатор);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ВидОповещения = "ДлительнаяОперацияЗавершена" Тогда
|
||||||
|
Если ЗначениеЗаполнено(ИдентификаторЗаданияМногопоточногоПроцесса) Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
Результат = ПередаваемоеЗначение;
|
||||||
|
Иначе
|
||||||
|
Результат = НовыйРезультатВыполненияОперации();
|
||||||
|
КонецЕсли;
|
||||||
|
Если ВидОповещения = "СообщениеПользователю" Тогда
|
||||||
|
Результат.Сообщения = Новый ФиксированныйМассив(
|
||||||
|
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ПередаваемоеЗначение));
|
||||||
|
ИначеЕсли ВидОповещения = "Прогресс" Тогда
|
||||||
|
Сообщения = ПолучитьСообщенияПользователю(Истина);
|
||||||
|
Для Каждого Сообщение Из Сообщения Цикл
|
||||||
|
ОтправитьОповещениеКлиенту("СообщениеПользователю", Сообщение);
|
||||||
|
КонецЦикла;
|
||||||
|
Результат.Сообщения = Новый ФиксированныйМассив(Новый Массив);
|
||||||
|
Результат.Прогресс = ПередаваемоеЗначение;
|
||||||
|
ИначеЕсли ВидОповещения = "ДлительнаяОперацияЗавершена" Тогда
|
||||||
|
Сообщения = ПолучитьСообщенияПользователю(Истина);
|
||||||
|
Для Каждого Сообщение Из Сообщения Цикл
|
||||||
|
ОтправитьОповещениеКлиенту("СообщениеПользователю", Сообщение);
|
||||||
|
КонецЦикла;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПараметрыОповещения = Новый Структура("ВидОповещения, ИдентификаторЗадания, Результат",
|
||||||
|
ВидОповещения, ИдентификаторОсновногоЗадания, Результат);
|
||||||
|
|
||||||
|
КлючиСеансов = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(КлючСеансаРодителя);
|
||||||
|
Адресаты = Новый Соответствие;
|
||||||
|
Адресаты.Вставить(ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор, КлючиСеансов);
|
||||||
|
|
||||||
|
СерверныеОповещения.ОтправитьСерверноеОповещениеСИдентификаторомГруппы(ИмяОповещения(),
|
||||||
|
ПараметрыОповещения, Адресаты, Не ЗаписатьСообщенияПользователю, ИдентификаторОсновногоЗадания);
|
||||||
|
|
||||||
|
УстановитьПривилегированныйРежим(Ложь);
|
||||||
|
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Запись в очередь еще не записанных сообщений, которые были отправлены
|
||||||
|
// без использования процедуры ОбщегоНазначения.СообщитьПользователю.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// ИдентификаторЗадания - УникальныйИдентификатор
|
||||||
|
//
|
||||||
|
Процедура ЗаписатьОстаткиСообщенийПользователю(ИдентификаторЗадания)
|
||||||
|
|
||||||
|
ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
|
||||||
|
Если ФоновоеЗадание <> Неопределено Тогда
|
||||||
|
Сообщения = ФоновоеЗадание.ПолучитьСообщенияПользователю(Истина);
|
||||||
|
Для Каждого Сообщение Из Сообщения Цикл
|
||||||
|
ОтправитьОповещениеКлиенту("СообщениеПользователю", Сообщение, ФоновоеЗадание);
|
||||||
|
КонецЦикла;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
Функция ЕстьФоновыеЗаданияВФайловойИБ()
|
Функция ЕстьФоновыеЗаданияВФайловойИБ()
|
||||||
|
|
||||||
ЗапущеноЗаданийВФайловойИБ = 0;
|
ЗапущеноЗаданийВФайловойИБ = 0;
|
||||||
@@ -1543,6 +1738,10 @@
|
|||||||
|
|
||||||
// Многопоточные операции
|
// Многопоточные операции
|
||||||
|
|
||||||
|
Функция ИмяМетодаМногопоточногоПроцесса()
|
||||||
|
Возврат "ДлительныеОперации.ВыполнитьМногопоточныйПроцесс";
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
Функция ВыполнитьМногопоточныйПроцесс(ПараметрыОперации) Экспорт
|
Функция ВыполнитьМногопоточныйПроцесс(ПараметрыОперации) Экспорт
|
||||||
|
|
||||||
УдалитьНесуществующиеПотоки();
|
УдалитьНесуществующиеПотоки();
|
||||||
@@ -1586,7 +1785,7 @@
|
|||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПроброситьПрогрессВУправляющийПоток(Поток.ИдентификаторЗадания);
|
ОтправитьСообщенияПотока(Поток.ИдентификаторЗадания);
|
||||||
|
|
||||||
СтатусОжидания = ОжидатьСвободныйПоток(ИдентификаторФормы, Результаты, Поток.ИдентификаторЗадания, ПараметрыОперации.ПрерватьВыполнениеЕслиОшибка);
|
СтатусОжидания = ОжидатьСвободныйПоток(ИдентификаторФормы, Результаты, Поток.ИдентификаторЗадания, ПараметрыОперации.ПрерватьВыполнениеЕслиОшибка);
|
||||||
|
|
||||||
@@ -1746,7 +1945,7 @@
|
|||||||
Продолжить;
|
Продолжить;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПроброситьПрогрессВУправляющийПоток(ИдентификаторЗадания);
|
ОтправитьСообщенияПотока(ИдентификаторЗадания);
|
||||||
|
|
||||||
ОжидатьЗавершениеПотока(Потоки[0]);
|
ОжидатьЗавершениеПотока(Потоки[0]);
|
||||||
|
|
||||||
@@ -1758,14 +1957,23 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура ПроброситьПрогрессВУправляющийПоток(Знач ИдентификаторЗадания)
|
// Отправляет сообщения потока, которые были выведены
|
||||||
|
// без использования процедуры ОбщегоНазначения.СообщитьПользователю.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// ИдентификаторЗадания - УникальныйИдентификатор
|
||||||
|
//
|
||||||
|
Процедура ОтправитьСообщенияПотока(Знач ИдентификаторЗадания)
|
||||||
|
|
||||||
ПрочитанныйПрогресс = ПрочитатьПрогрессИСообщения(ИдентификаторЗадания);
|
ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
|
||||||
|
Если ФоновоеЗадание = Неопределено Тогда
|
||||||
Если ПрочитанныйПрогресс.Прогресс <> Неопределено Тогда
|
Возврат;
|
||||||
СообщитьПрогресс(ПрочитанныйПрогресс.Прогресс.Процент,
|
|
||||||
ПрочитанныйПрогресс.Прогресс.Текст);
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
Сообщения = ФоновоеЗадание.ПолучитьСообщенияПользователю(Истина);
|
||||||
|
Для Каждого Сообщение Из Сообщения Цикл
|
||||||
|
ОтправитьОповещениеКлиенту("СообщениеПользователю", Сообщение);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
@@ -1807,7 +2015,7 @@
|
|||||||
|
|
||||||
Если ЗначениеЗаполнено(Поток.ИдентификаторЗадания) Тогда
|
Если ЗначениеЗаполнено(Поток.ИдентификаторЗадания) Тогда
|
||||||
|
|
||||||
ПроброситьПрогрессВУправляющийПоток(Поток.ИдентификаторЗадания);
|
ОтправитьСообщенияПотока(Поток.ИдентификаторЗадания);
|
||||||
|
|
||||||
Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Поток.ИдентификаторЗадания);
|
Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Поток.ИдентификаторЗадания);
|
||||||
|
|
||||||
|
|||||||
@@ -8,14 +8,20 @@
|
|||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ОперацииВыполнены(Знач ЗаданияДляПроверки, ЗаданияДляОтмены) Экспорт
|
Функция ФоновоеЗаданиеЗавершено(ИдентификаторЗадания) Экспорт
|
||||||
|
|
||||||
Результат = ДлительныеОперации.ОперацииВыполнены(ЗаданияДляПроверки);
|
ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
|
||||||
Для каждого ИдентификаторЗадания Из ЗаданияДляОтмены Цикл
|
Если ФоновоеЗадание = Неопределено Тогда
|
||||||
ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
|
Возврат Истина;
|
||||||
Результат.Вставить(ИдентификаторЗадания, Новый Структура("Статус", "Отменено"));
|
КонецЕсли;
|
||||||
КонецЦикла;
|
|
||||||
Возврат Результат;
|
Если ФоновоеЗадание.Состояние <> СостояниеФоновогоЗадания.Активно Тогда
|
||||||
|
Возврат Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ФоновоеЗадание = ФоновоеЗадание.ОжидатьЗавершенияВыполнения(3);
|
||||||
|
|
||||||
|
Возврат ФоновоеЗадание.Состояние <> СостояниеФоновогоЗадания.Активно;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
|||||||
@@ -1,162 +0,0 @@
|
|||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Copyright (c) 2022, ООО 1С-Софт
|
|
||||||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
|
||||||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
|
||||||
// Текст лицензии доступен по ссылке:
|
|
||||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
|
||||||
|
|
||||||
Процедура КонтрольДлительныхОпераций() Экспорт
|
|
||||||
|
|
||||||
АктивныеДлительныеОперации = ДлительныеОперацииКлиент.АктивныеДлительныеОперации();
|
|
||||||
Если АктивныеДлительныеОперации.Обработка Тогда
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
АктивныеДлительныеОперации.Обработка = Истина;
|
|
||||||
Попытка
|
|
||||||
ПроконтролироватьДлительныеОперации(АктивныеДлительныеОперации.Список);
|
|
||||||
|
|
||||||
АктивныеДлительныеОперации.Обработка = Ложь;
|
|
||||||
Исключение
|
|
||||||
АктивныеДлительныеОперации.Обработка = Ложь;
|
|
||||||
ВызватьИсключение;
|
|
||||||
КонецПопытки;
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
Процедура ПроконтролироватьДлительныеОперации(АктивныеДлительныеОперации)
|
|
||||||
|
|
||||||
ТекущаяДата = ТекущаяДата(); // АПК:143 Дата сеанса не используется для проверки интервалов
|
|
||||||
|
|
||||||
КонтролируемыеОперации = Новый Соответствие;
|
|
||||||
ЗаданияДляПроверки = Новый Массив;
|
|
||||||
ЗаданияДляОтмены = Новый Массив;
|
|
||||||
|
|
||||||
Для каждого ДлительнаяОперация Из АктивныеДлительныеОперации Цикл
|
|
||||||
|
|
||||||
ДлительнаяОперация = ДлительнаяОперация.Значение;
|
|
||||||
|
|
||||||
ОперацияОтменена = Ложь;
|
|
||||||
Если ДлительнаяОперация.ФормаВладелец <> Неопределено И Не ДлительнаяОперация.ФормаВладелец.Открыта() Тогда
|
|
||||||
ОперацияОтменена = Истина;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если ОперацияОтменена Тогда
|
|
||||||
|
|
||||||
КонтролируемыеОперации.Вставить(ДлительнаяОперация.ИдентификаторЗадания, ДлительнаяОперация);
|
|
||||||
ЗаданияДляОтмены.Добавить(ДлительнаяОперация.ИдентификаторЗадания);
|
|
||||||
|
|
||||||
ИначеЕсли ДлительнаяОперация.Контроль <= ТекущаяДата Тогда
|
|
||||||
|
|
||||||
КонтролируемыеОперации.Вставить(ДлительнаяОперация.ИдентификаторЗадания, ДлительнаяОперация);
|
|
||||||
|
|
||||||
ЗаданиеДляПроверки = Новый Структура("ИдентификаторЗадания,ВыводитьПрогрессВыполнения,ВыводитьСообщения");
|
|
||||||
ЗаполнитьЗначенияСвойств(ЗаданиеДляПроверки, ДлительнаяОперация);
|
|
||||||
ЗаданияДляПроверки.Добавить(ЗаданиеДляПроверки);
|
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
Статусы = Новый Соответствие;
|
|
||||||
Статусы = ДлительныеОперацииВызовСервера.ОперацииВыполнены(ЗаданияДляПроверки, ЗаданияДляОтмены);
|
|
||||||
Для каждого СтатусОперации Из Статусы Цикл
|
|
||||||
Операция = КонтролируемыеОперации[СтатусОперации.Ключ];
|
|
||||||
Статус = СтатусОперации.Значение;
|
|
||||||
Попытка
|
|
||||||
Если ПроконтролироватьДлительнуюОперацию(Операция, Статус) Тогда
|
|
||||||
АктивныеДлительныеОперации.Удалить(СтатусОперации.Ключ);
|
|
||||||
КонецЕсли;
|
|
||||||
Исключение
|
|
||||||
// далее не отслеживаем
|
|
||||||
АктивныеДлительныеОперации.Удалить(СтатусОперации.Ключ);
|
|
||||||
ВызватьИсключение;
|
|
||||||
КонецПопытки;
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
Если АктивныеДлительныеОперации.Количество() = 0 Тогда
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ТекущаяДата = ТекущаяДата(); // АПК:143 Дата сеанса не используется для проверки интервалов
|
|
||||||
Интервал = 120;
|
|
||||||
Для каждого Операция Из АктивныеДлительныеОперации Цикл
|
|
||||||
Интервал = Макс(Мин(Интервал, Операция.Значение.Контроль - ТекущаяДата), 1);
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
ПодключитьОбработчикОжидания("КонтрольДлительныхОпераций", Интервал, Истина);
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
Функция ПроконтролироватьДлительнуюОперацию(ДлительнаяОперация, Статус)
|
|
||||||
|
|
||||||
Если Статус.Статус <> "Отменено" И ДлительнаяОперация.ОповещениеОПрогрессеВыполнения <> Неопределено Тогда
|
|
||||||
Прогресс = Новый Структура;
|
|
||||||
Прогресс.Вставить("Статус", Статус.Статус);
|
|
||||||
Прогресс.Вставить("ИдентификаторЗадания", ДлительнаяОперация.ИдентификаторЗадания);
|
|
||||||
Прогресс.Вставить("Прогресс", Статус.Прогресс);
|
|
||||||
Прогресс.Вставить("Сообщения", Статус.Сообщения);
|
|
||||||
ВыполнитьОбработкуОповещения(ДлительнаяОперация.ОповещениеОПрогрессеВыполнения, Прогресс);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если Статус.Статус = "Выполнено" Тогда
|
|
||||||
|
|
||||||
ДлительныеОперацииКлиент.ПоказатьОповещение(ДлительнаяОперация.ОповещениеПользователя);
|
|
||||||
ВыполнитьОповещение(ДлительнаяОперация, Статус);
|
|
||||||
Возврат Истина;
|
|
||||||
|
|
||||||
ИначеЕсли Статус.Статус = "Ошибка" Тогда
|
|
||||||
|
|
||||||
ВыполнитьОповещение(ДлительнаяОперация, Статус);
|
|
||||||
Возврат Истина;
|
|
||||||
|
|
||||||
ИначеЕсли Статус.Статус = "Отменено" Тогда
|
|
||||||
|
|
||||||
ВыполнитьОповещение(ДлительнаяОперация, Статус);
|
|
||||||
Возврат Истина;
|
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ИнтервалОжидания = ДлительнаяОперация.ТекущийИнтервал;
|
|
||||||
Если ДлительнаяОперация.Интервал = 0 Тогда
|
|
||||||
ИнтервалОжидания = ИнтервалОжидания * 1.4;
|
|
||||||
Если ИнтервалОжидания > 15 Тогда
|
|
||||||
ИнтервалОжидания = 15;
|
|
||||||
КонецЕсли;
|
|
||||||
ДлительнаяОперация.ТекущийИнтервал = ИнтервалОжидания;
|
|
||||||
КонецЕсли;
|
|
||||||
ДлительнаяОперация.Контроль = ТекущаяДата() + ИнтервалОжидания; // АПК:143 Дата сеанса не используется для проверки интервалов
|
|
||||||
Возврат Ложь;
|
|
||||||
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
Процедура ВыполнитьОповещение(Знач ДлительнаяОперация, Знач Статус)
|
|
||||||
|
|
||||||
Если ДлительнаяОперация.ОповещениеОЗавершении = Неопределено Тогда
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если Статус.Статус = "Отменено" Тогда
|
|
||||||
Результат = Неопределено;
|
|
||||||
Иначе
|
|
||||||
Результат = Новый Структура;
|
|
||||||
Результат.Вставить("Статус", Статус.Статус);
|
|
||||||
Если ДлительнаяОперация.Свойство("АдресРезультата") Тогда
|
|
||||||
Результат.Вставить("АдресРезультата", ДлительнаяОперация.АдресРезультата);
|
|
||||||
КонецЕсли;
|
|
||||||
Если ДлительнаяОперация.Свойство("АдресДополнительногоРезультата") Тогда
|
|
||||||
Результат.Вставить("АдресДополнительногоРезультата", ДлительнаяОперация.АдресДополнительногоРезультата);
|
|
||||||
КонецЕсли;
|
|
||||||
Результат.Вставить("КраткоеПредставлениеОшибки", Статус.КраткоеПредставлениеОшибки);
|
|
||||||
Результат.Вставить("ПодробноеПредставлениеОшибки", Статус.ПодробноеПредставлениеОшибки);
|
|
||||||
Результат.Вставить("Сообщения", Статус.Сообщения);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ВыполнитьОбработкуОповещения(ДлительнаяОперация.ОповещениеОЗавершении, Результат);
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
#КонецОбласти
|
|
||||||
@@ -8,9 +8,11 @@
|
|||||||
|
|
||||||
#Область ПрограммныйИнтерфейс
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
// Ожидать завершения выполнения процедуры в фоновом задании и открыть форму ожидания длительной операции.
|
// Открыть стандартную форму ожидания завершения длительной операции или использовать собственную форму
|
||||||
// Применяется совместно с функцией ДлительныеОперации.ВыполнитьВФоне для повышения отзывчивости пользовательского
|
// и подключить обработчик оповещения о завершении и прогрессе выполнения процедуры длительной операции.
|
||||||
// интерфейса, заменяя длительный серверный вызов на запуск фонового задания.
|
//
|
||||||
|
// Применяется совместно с функцией ДлительныеОперации.ВыполнитьВФоне для повышения отзывчивости
|
||||||
|
// пользовательского интерфейса, заменяя длительный серверный вызов на запуск фонового задания.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ДлительнаяОперация - см. ДлительныеОперации.ВыполнитьВФоне
|
// ДлительнаяОперация - см. ДлительныеОперации.ВыполнитьВФоне
|
||||||
@@ -27,9 +29,11 @@
|
|||||||
// в которое будет помещен (или уже помещен) результат работы процедуры.
|
// в которое будет помещен (или уже помещен) результат работы процедуры.
|
||||||
// ** КраткоеПредставлениеОшибки - Строка - краткая информация об исключении, если Статус = "Ошибка".
|
// ** КраткоеПредставлениеОшибки - Строка - краткая информация об исключении, если Статус = "Ошибка".
|
||||||
// ** ПодробноеПредставлениеОшибки - Строка - подробная информация об исключении, если Статус = "Ошибка".
|
// ** ПодробноеПредставлениеОшибки - Строка - подробная информация об исключении, если Статус = "Ошибка".
|
||||||
// ** Сообщения - ФиксированныйМассив
|
// ** Сообщения - ФиксированныйМассив - массив объектов СообщениеПользователю,
|
||||||
// - Неопределено - массив объектов СообщениеПользователю,
|
|
||||||
// сформированных в процедуре-обработчике длительной операции.
|
// сформированных в процедуре-обработчике длительной операции.
|
||||||
|
// Массив будет пустым, когда в параметре ПараметрыОжидания
|
||||||
|
// свойство ВыводитьОкноОжидания = Истина или
|
||||||
|
// заполнено свойство ОповещениеОПрогрессеВыполнения.
|
||||||
// * ДополнительныеПараметры - Произвольный - произвольные данные, переданные в описании оповещения.
|
// * ДополнительныеПараметры - Произвольный - произвольные данные, переданные в описании оповещения.
|
||||||
// ПараметрыОжидания - см. ДлительныеОперацииКлиент.ПараметрыОжидания
|
// ПараметрыОжидания - см. ДлительныеОперацииКлиент.ПараметрыОжидания
|
||||||
//
|
//
|
||||||
@@ -38,60 +42,40 @@
|
|||||||
|
|
||||||
ПроверитьПараметрыОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
|
ПроверитьПараметрыОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
|
||||||
|
|
||||||
|
РасширенныеПараметры = ПараметрыОжидания(Неопределено);
|
||||||
|
Если ПараметрыОжидания <> Неопределено Тогда
|
||||||
|
ЗаполнитьЗначенияСвойств(РасширенныеПараметры, ПараметрыОжидания);
|
||||||
|
КонецЕсли;
|
||||||
|
Если ДлительнаяОперация.Свойство("АдресРезультата") Тогда
|
||||||
|
РасширенныеПараметры.Вставить("АдресРезультата", ДлительнаяОперация.АдресРезультата);
|
||||||
|
КонецЕсли;
|
||||||
|
Если ДлительнаяОперация.Свойство("АдресДополнительногоРезультата") Тогда
|
||||||
|
РасширенныеПараметры.Вставить("АдресДополнительногоРезультата", ДлительнаяОперация.АдресДополнительногоРезультата);
|
||||||
|
КонецЕсли;
|
||||||
|
РасширенныеПараметры.Вставить("ИдентификаторЗадания", ДлительнаяОперация.ИдентификаторЗадания);
|
||||||
|
|
||||||
Если ДлительнаяОперация.Статус <> "Выполняется" Тогда
|
Если ДлительнаяОперация.Статус <> "Выполняется" Тогда
|
||||||
Если ОповещениеОЗавершении <> Неопределено Тогда
|
РасширенныеПараметры.Вставить("НакопленныеСообщения", Новый Массив(ДлительнаяОперация.Сообщения));
|
||||||
Если ДлительнаяОперация.Статус <> "Отменено" Тогда
|
РасширенныеПараметры.Вставить("ОповещениеОЗавершении", ОповещениеОЗавершении);
|
||||||
Результат = Новый Структура;
|
ЗавершитьДлительнуюОперацию(РасширенныеПараметры, ДлительнаяОперация);
|
||||||
Результат.Вставить("Статус", ДлительнаяОперация.Статус);
|
|
||||||
Если ДлительнаяОперация.Свойство("АдресРезультата") Тогда
|
|
||||||
Результат.Вставить("АдресРезультата", ДлительнаяОперация.АдресРезультата);
|
|
||||||
КонецЕсли;
|
|
||||||
Если ДлительнаяОперация.Свойство("АдресДополнительногоРезультата") Тогда
|
|
||||||
Результат.Вставить("АдресДополнительногоРезультата", ДлительнаяОперация.АдресДополнительногоРезультата);
|
|
||||||
КонецЕсли;
|
|
||||||
Результат.Вставить("КраткоеПредставлениеОшибки", ДлительнаяОперация.КраткоеПредставлениеОшибки);
|
|
||||||
Результат.Вставить("ПодробноеПредставлениеОшибки", ДлительнаяОперация.ПодробноеПредставлениеОшибки);
|
|
||||||
Результат.Вставить("Сообщения", ?(ПараметрыОжидания <> Неопределено И ПараметрыОжидания.ВыводитьСообщения,
|
|
||||||
ДлительнаяОперация.Сообщения, Неопределено));
|
|
||||||
Иначе
|
|
||||||
Результат = Неопределено;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если ДлительнаяОперация.Статус = "Выполнено" И ПараметрыОжидания <> Неопределено Тогда
|
|
||||||
ПоказатьОповещение(ПараметрыОжидания.ОповещениеПользователя);
|
|
||||||
КонецЕсли;
|
|
||||||
ВыполнитьОбработкуОповещения(ОповещениеОЗавершении, Результат);
|
|
||||||
КонецЕсли;
|
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПараметрыФормы = ПараметрыОжидания(Неопределено);
|
Если РасширенныеПараметры.ВыводитьОкноОжидания Тогда
|
||||||
Если ПараметрыОжидания <> Неопределено Тогда
|
РасширенныеПараметры.Удалить("ФормаВладелец");
|
||||||
ЗаполнитьЗначенияСвойств(ПараметрыФормы, ПараметрыОжидания);
|
|
||||||
КонецЕсли;
|
|
||||||
Если ДлительнаяОперация.Свойство("АдресРезультата") Тогда
|
|
||||||
ПараметрыФормы.Вставить("АдресРезультата", ДлительнаяОперация.АдресРезультата);
|
|
||||||
КонецЕсли;
|
|
||||||
Если ДлительнаяОперация.Свойство("АдресДополнительногоРезультата") Тогда
|
|
||||||
ПараметрыФормы.Вставить("АдресДополнительногоРезультата", ДлительнаяОперация.АдресДополнительногоРезультата);
|
|
||||||
КонецЕсли;
|
|
||||||
ПараметрыФормы.Вставить("ИдентификаторЗадания", ДлительнаяОперация.ИдентификаторЗадания);
|
|
||||||
|
|
||||||
Если ПараметрыФормы.ВыводитьОкноОжидания Тогда
|
|
||||||
ПараметрыФормы.Удалить("ФормаВладелец");
|
|
||||||
|
|
||||||
ОткрытьФорму("ОбщаяФорма.ДлительнаяОперация", ПараметрыФормы,
|
ОткрытьФорму("ОбщаяФорма.ДлительнаяОперация", РасширенныеПараметры,
|
||||||
?(ПараметрыОжидания <> Неопределено, ПараметрыОжидания.ФормаВладелец, Неопределено),
|
?(ПараметрыОжидания <> Неопределено, ПараметрыОжидания.ФормаВладелец, Неопределено),
|
||||||
,,,ОповещениеОЗавершении);
|
,,,ОповещениеОЗавершении);
|
||||||
Иначе
|
Иначе
|
||||||
ПараметрыФормы.Вставить("ОповещениеОЗавершении", ОповещениеОЗавершении);
|
РасширенныеПараметры.Вставить("НакопленныеСообщения", Новый Массив);
|
||||||
ПараметрыФормы.Вставить("ТекущийИнтервал", ?(ПараметрыФормы.Интервал <> 0, ПараметрыФормы.Интервал, 1));
|
РасширенныеПараметры.Вставить("ОповещениеОЗавершении", ОповещениеОЗавершении);
|
||||||
ПараметрыФормы.Вставить("Контроль", ТекущаяДата() + ПараметрыФормы.ТекущийИнтервал); // АПК:143 Дата сеанса не используется для проверки интервалов
|
РасширенныеПараметры.Вставить("ТекущийИнтервал", ?(РасширенныеПараметры.Интервал <> 0, РасширенныеПараметры.Интервал, 1));
|
||||||
|
РасширенныеПараметры.Вставить("Контроль", ТекущаяДата() + РасширенныеПараметры.ТекущийИнтервал); // АПК:143 Дата сеанса не используется для проверки интервалов
|
||||||
|
|
||||||
Операции = АктивныеДлительныеОперации();
|
Операции = АктивныеДлительныеОперации();
|
||||||
Операции.Список.Вставить(ПараметрыФормы.ИдентификаторЗадания, ПараметрыФормы);
|
Операции.Список.Вставить(РасширенныеПараметры.ИдентификаторЗадания, РасширенныеПараметры);
|
||||||
|
СерверныеОповещенияКлиент.ПодключитьОбработчикПроверкиПолученияСерверныхОповещений();
|
||||||
ПодключитьОбработчикОжидания("КонтрольДлительныхОпераций", ПараметрыФормы.ТекущийИнтервал, Истина);
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
@@ -115,20 +99,20 @@
|
|||||||
// Процедура-обработчик длительной операции может сообщить о ходе своего выполнения
|
// Процедура-обработчик длительной операции может сообщить о ходе своего выполнения
|
||||||
// с помощью вызова процедуры ДлительныеОперации.СообщитьПрогресс.
|
// с помощью вызова процедуры ДлительныеОперации.СообщитьПрогресс.
|
||||||
// * ОповещениеОПрогрессеВыполнения - ОписаниеОповещения - оповещение, которое периодически вызывается при
|
// * ОповещениеОПрогрессеВыполнения - ОписаниеОповещения - оповещение, которое периодически вызывается при
|
||||||
// проверке готовности фонового задания. Параметры процедуры-обработчика оповещения:
|
// проверке готовности фонового задания, если ВыводитьОкноОжидания = Ложь.
|
||||||
// # Прогресс - Структура, Неопределено - структура со свойствами или Неопределено, если задание было отменено. Свойства:
|
// Параметры процедуры-обработчика оповещения:
|
||||||
// ## Статус - Строка - "Выполняется", если задание еще не завершилось;
|
// # ДлительнаяОперация - Структура, Неопределено - структура со свойствами или Неопределено, если задание было
|
||||||
|
// отменено. Свойства: ## Статус - Строка - "Выполняется", если задание еще не завершилось;
|
||||||
// "Выполнено", если задание было успешно выполнено;
|
// "Выполнено", если задание было успешно выполнено;
|
||||||
// "Ошибка", если задание завершено с ошибкой;
|
// "Ошибка", если задание завершено с ошибкой;
|
||||||
// "Отменено", если задание отменено пользователем или администратором.
|
// "Отменено", если задание отменено пользователем или администратором.
|
||||||
// ## ИдентификаторЗадания - УникальныйИдентификатор - идентификатор запущенного фонового задания.
|
// ## ИдентификаторЗадания - УникальныйИдентификатор - идентификатор запущенного фонового задания.
|
||||||
// ## Прогресс - Структура, Неопределено - результат функции ДлительныеОперации.ПрочитатьПрогресс,
|
// ## Прогресс - Структура, Неопределено - результат функции ДлительныеОперации.ПрочитатьПрогресс.
|
||||||
// если ВыводитьПрогрессВыполнения = Истина.
|
// ## Сообщения - ФиксированныйМассив, Неопределено - массив объектов СообщениеПользователю,
|
||||||
// ## Сообщения - ФиксированныйМассив, Неопределено - если ВыводитьСообщения = Истина, массив объектов СообщениеПользователю,
|
|
||||||
// очередная порция сообщений, сформированных в процедуре-обработчике длительной операции.
|
// очередная порция сообщений, сформированных в процедуре-обработчике длительной операции.
|
||||||
// # ДополнительныеПараметры - Произвольный - произвольные данные, переданные в описании оповещения.
|
// # ДополнительныеПараметры - Произвольный - произвольные данные, переданные в описании оповещения.
|
||||||
//
|
//
|
||||||
// * ВыводитьСообщения - Булево - выводить в оповещения о завершении и прогресс сообщения,
|
// * ВыводитьСообщения - Булево - выводить на форме ожидания сообщения,
|
||||||
// сформированные в процедуре-обработчике длительной операции.
|
// сформированные в процедуре-обработчике длительной операции.
|
||||||
// * Интервал - Число - интервал в секундах между проверками готовности длительной операции.
|
// * Интервал - Число - интервал в секундах между проверками готовности длительной операции.
|
||||||
// По умолчанию 0 - после каждой проверки интервал увеличивается с 1 до 15 секунд
|
// По умолчанию 0 - после каждой проверки интервал увеличивается с 1 до 15 секунд
|
||||||
@@ -247,18 +231,315 @@
|
|||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
// Возвращаемое значение:
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Структура:
|
// Обработчики событий подсистем конфигурации.
|
||||||
// * Обработка - Булево
|
|
||||||
// * Список - Соответствие
|
// Параметры:
|
||||||
|
// Параметры - см. ОбщегоНазначенияПереопределяемый.ПередПериодическойОтправкойДанныхКлиентаНаСервер.Параметры
|
||||||
|
// ОбсужденияАктивны - Булево - для доставки сообщений используется подсистема взаимодействия.
|
||||||
|
// Интервал - Число - уточняемое значение - число секунд до следующей проверки.
|
||||||
//
|
//
|
||||||
Функция АктивныеДлительныеОперации() Экспорт
|
Процедура ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры, ОбсужденияАктивны, Интервал) Экспорт
|
||||||
|
|
||||||
|
Результат = ПараметрыПроверкиДлительныхОпераций(ОбсужденияАктивны, Интервал);
|
||||||
|
Если Результат = Неопределено Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Параметры.Вставить("СтандартныеПодсистемы.БазоваяФункциональность.ПараметрыПроверкиДлительныхОпераций", Результат)
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Параметры:
|
||||||
|
// Результаты - см. ОбщегоНазначенияПереопределяемый.ПриПериодическомПолученииДанныхКлиентаНаСервере.Результаты
|
||||||
|
// ОбсужденияАктивны - Булево - для доставки сообщений используется подсистема взаимодействия.
|
||||||
|
// Интервал - Число - уточняемое значение - число секунд до следующей проверки.
|
||||||
|
//
|
||||||
|
Процедура ПослеПериодическогоПолученияДанныхКлиентаНаСервере(Результаты, ОбсужденияАктивны, Интервал) Экспорт
|
||||||
|
|
||||||
|
РезультатыОпераций = Результаты.Получить( // см. ДлительныеОперации.РезультатПроверкиДлительныхОпераций
|
||||||
|
"СтандартныеПодсистемы.БазоваяФункциональность.РезультатПроверкиДлительныхОпераций");
|
||||||
|
|
||||||
|
Если РезультатыОпераций = Неопределено Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ТекущиеДлительныеОперации = АктивныеДлительныеОперации();
|
||||||
|
АктивныеДлительныеОперации = ТекущиеДлительныеОперации.Список;
|
||||||
|
КонтролируемыеОперации = ТекущиеДлительныеОперации.КонтролируемыеОперации;
|
||||||
|
|
||||||
|
Для Каждого РезультатОперации Из РезультатыОпераций Цикл
|
||||||
|
Операция = КонтролируемыеОперации[РезультатОперации.Ключ];
|
||||||
|
Результат = РезультатОперации.Значение; // Структура
|
||||||
|
Результат.Вставить("ФоновоеЗаданиеЗавершено");
|
||||||
|
ОбработатьРезультатОперации(АктивныеДлительныеОперации, Операция, Результат);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Если АктивныеДлительныеОперации.Количество() = 0 Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
УточнитьИнтервалОбработчикаОжидания(Интервал, АктивныеДлительныеОперации, ОбсужденияАктивны);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Параметры:
|
||||||
|
// ОбсужденияАктивны - Булево - для доставки сообщений используется подсистема взаимодействия.
|
||||||
|
// Интервал - Число - уточняемое значение - число секунд до следующей проверки.
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Неопределено - проверка не требуется.
|
||||||
|
// Структура:
|
||||||
|
// * ЗаданияДляПроверки - Массив из УникальныйИдентификатор
|
||||||
|
// * ЗаданияДляОтмены - Массив из УникальныйИдентификатор
|
||||||
|
//
|
||||||
|
Функция ПараметрыПроверкиДлительныхОпераций(ОбсужденияАктивны, Интервал)
|
||||||
|
|
||||||
|
ТекущаяДата = ТекущаяДата(); // АПК:143 Дата сеанса не используется для проверки интервалов времени
|
||||||
|
|
||||||
|
КонтролируемыеОперации = Новый Соответствие;
|
||||||
|
ЗаданияДляПроверки = Новый Массив;
|
||||||
|
ЗаданияДляОтмены = Новый Массив;
|
||||||
|
|
||||||
|
ТекущиеДлительныеОперации = АктивныеДлительныеОперации();
|
||||||
|
АктивныеДлительныеОперации = ТекущиеДлительныеОперации.Список;
|
||||||
|
ТекущиеДлительныеОперации.КонтролируемыеОперации = КонтролируемыеОперации;
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(АктивныеДлительныеОперации) Тогда
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Для Каждого ДлительнаяОперация Из АктивныеДлительныеОперации Цикл
|
||||||
|
|
||||||
|
ДлительнаяОперация = ДлительнаяОперация.Значение;
|
||||||
|
|
||||||
|
Если ДлительнаяОперацияОтменена(ДлительнаяОперация) Тогда
|
||||||
|
КонтролируемыеОперации.Вставить(ДлительнаяОперация.ИдентификаторЗадания, ДлительнаяОперация);
|
||||||
|
ЗаданияДляОтмены.Добавить(ДлительнаяОперация.ИдентификаторЗадания);
|
||||||
|
Иначе
|
||||||
|
ИнтервалКонтроляОбсуждений = ИнтервалКонтроляОбсуждений();
|
||||||
|
ДатаКонтроля = ДлительнаяОперация.Контроль
|
||||||
|
+ ?(Не ОбсужденияАктивны Или ДлительнаяОперация.ТекущийИнтервал > ИнтервалКонтроляОбсуждений,
|
||||||
|
0, ИнтервалКонтроляОбсуждений - ДлительнаяОперация.ТекущийИнтервал);
|
||||||
|
|
||||||
|
Если ДатаКонтроля <= ТекущаяДата Тогда
|
||||||
|
КонтролируемыеОперации.Вставить(ДлительнаяОперация.ИдентификаторЗадания, ДлительнаяОперация);
|
||||||
|
ЗаданияДляПроверки.Добавить(ДлительнаяОперация.ИдентификаторЗадания);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(ЗаданияДляПроверки)
|
||||||
|
И Не ЗначениеЗаполнено(ЗаданияДляОтмены) Тогда
|
||||||
|
|
||||||
|
УточнитьИнтервалОбработчикаОжидания(Интервал, АктивныеДлительныеОперации, ОбсужденияАктивны);
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Результат = Новый Структура;
|
||||||
|
Результат.Вставить("ЗаданияДляПроверки", ЗаданияДляПроверки);
|
||||||
|
Результат.Вставить("ЗаданияДляОтмены", ЗаданияДляОтмены);
|
||||||
|
|
||||||
|
Возврат Результат;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ДлительнаяОперацияОтменена(ДлительнаяОперация)
|
||||||
|
|
||||||
|
Возврат ДлительнаяОперация.ФормаВладелец <> Неопределено
|
||||||
|
И Не ДлительнаяОперация.ФормаВладелец.Открыта();
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ОбработатьРезультатОперации(АктивныеДлительныеОперации, Операция, Результат)
|
||||||
|
|
||||||
|
Если АктивныеДлительныеОперации.Получить(Операция.ИдентификаторЗадания) = Неопределено Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
Если ОбработатьРезультатАктивнойОперации(Операция, Результат) Тогда
|
||||||
|
АктивныеДлительныеОперации.Удалить(Операция.ИдентификаторЗадания);
|
||||||
|
КонецЕсли;
|
||||||
|
Исключение
|
||||||
|
// далее не отслеживаем
|
||||||
|
АктивныеДлительныеОперации.Удалить(Операция.ИдентификаторЗадания);
|
||||||
|
ВызватьИсключение;
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура УточнитьИнтервалОбработчикаОжидания(Интервал, АктивныеДлительныеОперации, ОбсужденияАктивны)
|
||||||
|
|
||||||
|
ТекущаяДата = ТекущаяДата(); // АПК:143 Дата сеанса не используется для проверки интервалов времени
|
||||||
|
НовыйИнтервал = 120;
|
||||||
|
Для каждого Операция Из АктивныеДлительныеОперации Цикл
|
||||||
|
НовыйИнтервал = Макс(Мин(НовыйИнтервал, Операция.Значение.Контроль - ТекущаяДата), 1);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ИнтервалКонтроляОбсуждений = ИнтервалКонтроляОбсуждений();
|
||||||
|
Если ОбсужденияАктивны И НовыйИнтервал < ИнтервалКонтроляОбсуждений Тогда
|
||||||
|
НовыйИнтервал = ИнтервалКонтроляОбсуждений;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Интервал > НовыйИнтервал Тогда
|
||||||
|
Интервал = НовыйИнтервал;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Число - число секунд контроля длительной операции
|
||||||
|
// через общий серверный вызов, когда обсуждения
|
||||||
|
// активны, но сообщений не поступило, например,
|
||||||
|
// при операции дольше указанного числа секунд
|
||||||
|
// или когда произошло аварийное завершение фонового задания и
|
||||||
|
// сообщение через систему взаимодействия не было отправлено.
|
||||||
|
//
|
||||||
|
Функция ИнтервалКонтроляОбсуждений()
|
||||||
|
|
||||||
|
Возврат 60;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// См. СтандартныеПодсистемыКлиент.ПриПолученииСерверногоОповещения
|
||||||
|
Процедура ПриПолученииСерверногоОповещения(ИмяОповещения, Результат) Экспорт
|
||||||
|
|
||||||
|
АктивныеДлительныеОперации = АктивныеДлительныеОперации().Список;
|
||||||
|
Операция = АктивныеДлительныеОперации.Получить(Результат.ИдентификаторЗадания);
|
||||||
|
Если Операция = Неопределено
|
||||||
|
Или ДлительнаяОперацияОтменена(Операция) Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
ОбработатьРезультатОперации(АктивныеДлительныеОперации, Операция, Результат.Результат);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Параметры:
|
||||||
|
// ДлительнаяОперация - Структура:
|
||||||
|
// * ФормаВладелец - ФормаКлиентскогоПриложения
|
||||||
|
// - Неопределено
|
||||||
|
// * Заголовок - Строка
|
||||||
|
// * ТекстСообщения - Строка
|
||||||
|
// * ВыводитьОкноОжидания - Булево
|
||||||
|
// * ВыводитьПрогрессВыполнения - Булево
|
||||||
|
// * ОповещениеОПрогрессеВыполнения - ОписаниеОповещения
|
||||||
|
// - Неопределено
|
||||||
|
// * ВыводитьСообщения - Булево
|
||||||
|
// * Интервал - Число
|
||||||
|
// * ОповещениеПользователя - Структура:
|
||||||
|
// ** Показать - Булево
|
||||||
|
// ** Текст - Строка
|
||||||
|
// ** НавигационнаяСсылка - Строка
|
||||||
|
// ** Пояснение - Строка
|
||||||
|
// ** Картинка - Картинка
|
||||||
|
// ** Важное - Булево
|
||||||
|
// * ПолучатьРезультат
|
||||||
|
//
|
||||||
|
// * ИдентификаторЗадания - УникальныйИдентификатор
|
||||||
|
// * НакопленныеСообщения - Массив
|
||||||
|
// * ОповещениеОЗавершении - ОписаниеОповещения
|
||||||
|
// - Неопределено
|
||||||
|
// * ТекущийИнтервал - Число
|
||||||
|
// * Контроль - Дата
|
||||||
|
//
|
||||||
|
// Результат - см. ДлительныеОперации.НовыйРезультатВыполненияОперации
|
||||||
|
//
|
||||||
|
Функция ОбработатьРезультатАктивнойОперации(ДлительнаяОперация, Результат)
|
||||||
|
|
||||||
|
Если Результат.Статус <> "Отменено" Тогда
|
||||||
|
Если ДлительнаяОперация.ОповещениеОПрогрессеВыполнения <> Неопределено Тогда
|
||||||
|
Прогресс = Новый Структура;
|
||||||
|
Прогресс.Вставить("Статус", Результат.Статус);
|
||||||
|
Прогресс.Вставить("ИдентификаторЗадания", ДлительнаяОперация.ИдентификаторЗадания);
|
||||||
|
Прогресс.Вставить("Прогресс", Результат.Прогресс);
|
||||||
|
Прогресс.Вставить("Сообщения", Результат.Сообщения);
|
||||||
|
ВыполнитьОбработкуОповещения(ДлительнаяОперация.ОповещениеОПрогрессеВыполнения, Прогресс);
|
||||||
|
ИначеЕсли Результат.Сообщения <> Неопределено Тогда
|
||||||
|
Для Каждого Сообщение Из Результат.Сообщения Цикл
|
||||||
|
ДлительнаяОперация.НакопленныеСообщения.Добавить(Сообщение);
|
||||||
|
КонецЦикла;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Результат.Статус <> "Выполняется" Тогда
|
||||||
|
Если Результат.Статус <> "Выполнено"
|
||||||
|
Или Результат.Свойство("ФоновоеЗаданиеЗавершено")
|
||||||
|
Или Не ( ДлительнаяОперация.Свойство("АдресРезультата")
|
||||||
|
И ЗначениеЗаполнено(ДлительнаяОперация.АдресРезультата)
|
||||||
|
Или ДлительнаяОперация.Свойство("АдресДополнительногоРезультата")
|
||||||
|
И ЗначениеЗаполнено(ДлительнаяОперация.АдресДополнительногоРезультата))
|
||||||
|
// Требуется проверка, так как оповещение отправляется в конце фонового задания
|
||||||
|
// до его завершения и данные результата еще недоступны по адресу временного хранилища.
|
||||||
|
Или ДлительныеОперацииВызовСервера.ФоновоеЗаданиеЗавершено(ДлительнаяОперация.ИдентификаторЗадания) Тогда
|
||||||
|
|
||||||
|
ЗавершитьДлительнуюОперацию(ДлительнаяОперация, Результат);
|
||||||
|
Возврат Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ИнтервалОжидания = ДлительнаяОперация.ТекущийИнтервал;
|
||||||
|
Если ДлительнаяОперация.Интервал = 0 Тогда
|
||||||
|
ИнтервалОжидания = ИнтервалОжидания * 1.4;
|
||||||
|
Если ИнтервалОжидания > 15 Тогда
|
||||||
|
ИнтервалОжидания = 15;
|
||||||
|
КонецЕсли;
|
||||||
|
ДлительнаяОперация.ТекущийИнтервал = ИнтервалОжидания;
|
||||||
|
КонецЕсли;
|
||||||
|
ДлительнаяОперация.Контроль = ТекущаяДата() + ИнтервалОжидания; // АПК:143 Дата сеанса не используется для проверки интервалов
|
||||||
|
Возврат Ложь;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ЗавершитьДлительнуюОперацию(Знач ДлительнаяОперация, Знач Статус)
|
||||||
|
|
||||||
|
Если Статус.Статус = "Выполнено" Тогда
|
||||||
|
ПоказатьОповещение(ДлительнаяОперация.ОповещениеПользователя);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ДлительнаяОперация.ОповещениеОЗавершении = Неопределено Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Статус.Статус = "Отменено" Тогда
|
||||||
|
Результат = Неопределено;
|
||||||
|
Иначе
|
||||||
|
Результат = Новый Структура;
|
||||||
|
Результат.Вставить("Статус", Статус.Статус);
|
||||||
|
Если ДлительнаяОперация.Свойство("АдресРезультата") Тогда
|
||||||
|
Результат.Вставить("АдресРезультата", ДлительнаяОперация.АдресРезультата);
|
||||||
|
КонецЕсли;
|
||||||
|
Если ДлительнаяОперация.Свойство("АдресДополнительногоРезультата") Тогда
|
||||||
|
Результат.Вставить("АдресДополнительногоРезультата", ДлительнаяОперация.АдресДополнительногоРезультата);
|
||||||
|
КонецЕсли;
|
||||||
|
Результат.Вставить("КраткоеПредставлениеОшибки", Статус.КраткоеПредставлениеОшибки);
|
||||||
|
Результат.Вставить("ПодробноеПредставлениеОшибки", Статус.ПодробноеПредставлениеОшибки);
|
||||||
|
Результат.Вставить("Сообщения", Новый ФиксированныйМассив(ДлительнаяОперация.НакопленныеСообщения));
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ВыполнитьОбработкуОповещения(ДлительнаяОперация.ОповещениеОЗавершении, Результат);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Структура:
|
||||||
|
// * Список - Соответствие из КлючИЗначение:
|
||||||
|
// ** Ключ - УникальныйИдентификатор - идентификатор фонового задания.
|
||||||
|
// ** Значение - см. ОбработатьРезультатАктивнойОперации.ДлительнаяОперация
|
||||||
|
// * КонтролируемыеОперации - Соответствие из КлючИЗначение:
|
||||||
|
// ** Ключ - УникальныйИдентификатор - идентификатор фонового задания.
|
||||||
|
// ** Значение - см. ОбработатьРезультатАктивнойОперации.ДлительнаяОперация
|
||||||
|
//
|
||||||
|
Функция АктивныеДлительныеОперации()
|
||||||
|
|
||||||
ИмяПараметра = "СтандартныеПодсистемы.АктивныеДлительныеОперации";
|
ИмяПараметра = "СтандартныеПодсистемы.АктивныеДлительныеОперации";
|
||||||
Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда
|
Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда
|
||||||
Операции = Новый Структура("Обработка,Список", Ложь, Новый Соответствие);
|
Операции = Новый Структура;
|
||||||
|
Операции.Вставить("Список", Новый Соответствие);
|
||||||
|
Операции.Вставить("КонтролируемыеОперации", Новый Соответствие);
|
||||||
ПараметрыПриложения.Вставить(ИмяПараметра, Операции);
|
ПараметрыПриложения.Вставить(ИмяПараметра, Операции);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат ПараметрыПриложения[ИмяПараметра];
|
Возврат ПараметрыПриложения[ИмяПараметра];
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@@ -310,20 +591,32 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПоказатьОповещение(ОповещениеПользователя) Экспорт
|
Процедура ПоказатьОповещение(ОповещениеПользователя, ВладелецФормы = Неопределено) Экспорт
|
||||||
|
|
||||||
Оповещение = ОповещениеПользователя;
|
Оповещение = ОповещениеПользователя;
|
||||||
Если Не Оповещение.Показать Тогда
|
Если Не Оповещение.Показать Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
НавигационнаяСсылкаОповещения = Оповещение.НавигационнаяСсылка;
|
||||||
|
ПояснениеОповещения = Оповещение.Пояснение;
|
||||||
|
|
||||||
|
Если ВладелецФормы <> Неопределено И ВладелецФормы.Окно <> Неопределено Тогда
|
||||||
|
Если НавигационнаяСсылкаОповещения = Неопределено Тогда
|
||||||
|
НавигационнаяСсылкаОповещения = ВладелецФормы.Окно.ПолучитьНавигационнуюСсылку();
|
||||||
|
КонецЕсли;
|
||||||
|
Если ПояснениеОповещения = Неопределено Тогда
|
||||||
|
ПояснениеОповещения = ВладелецФормы.Окно.Заголовок;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
СтатусОповещения = Неопределено;
|
СтатусОповещения = Неопределено;
|
||||||
Если ТипЗнч(Оповещение.Важное) = Тип("Булево") Тогда
|
Если ТипЗнч(Оповещение.Важное) = Тип("Булево") Тогда
|
||||||
СтатусОповещения = ?(Оповещение.Важное, СтатусОповещенияПользователя.Важное, СтатусОповещенияПользователя.Информация);
|
СтатусОповещения = ?(Оповещение.Важное, СтатусОповещенияПользователя.Важное, СтатусОповещенияПользователя.Информация);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПоказатьОповещениеПользователя(?(Оповещение.Текст <> Неопределено, Оповещение.Текст, НСтр("ru = 'Действие выполнено'")),
|
ПоказатьОповещениеПользователя(?(Оповещение.Текст <> Неопределено, Оповещение.Текст, НСтр("ru = 'Действие выполнено'")),
|
||||||
Оповещение.НавигационнаяСсылка, Оповещение.Пояснение, Оповещение.Картинка, СтатусОповещения);
|
НавигационнаяСсылкаОповещения, ПояснениеОповещения, Оповещение.Картинка, СтатусОповещения);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
|||||||
@@ -190,6 +190,13 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
#Область УстаревшиеПроцедурыИФункции
|
||||||
|
|
||||||
|
// Устарела. Следует использовать обработчик оповещения
|
||||||
|
// (смотри параметр Обработчик в процедуре ВыполнитьКомандуВФоне)
|
||||||
|
// вместо использования события ОбработкаВыбора формы владельца совместно с анализом источника:
|
||||||
|
// ИсточникВыбора.ИмяФормы = ДополнительныеОтчетыИОбработкиКлиент.ИмяФормыДлительнойОперации().
|
||||||
|
//
|
||||||
// Возвращает имя формы для идентификации результата выполнения длительной операции.
|
// Возвращает имя формы для идентификации результата выполнения длительной операции.
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
@@ -203,6 +210,8 @@
|
|||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
// Открывает форму подбора дополнительных отчетов.
|
// Открывает форму подбора дополнительных отчетов.
|
||||||
|
|||||||
@@ -36,6 +36,8 @@
|
|||||||
События.Вставить("ПриДобавленииПараметровРаботыКлиентаПриЗапуске", Ложь);
|
События.Вставить("ПриДобавленииПараметровРаботыКлиентаПриЗапуске", Ложь);
|
||||||
События.Вставить("ПриДобавленииПараметровРаботыКлиента", Ложь);
|
События.Вставить("ПриДобавленииПараметровРаботыКлиента", Ложь);
|
||||||
События.Вставить("ПередЗапускомПрограммы", Ложь);
|
События.Вставить("ПередЗапускомПрограммы", Ложь);
|
||||||
|
События.Вставить("ПриДобавленииСерверныхОповещений", Ложь);
|
||||||
|
События.Вставить("ПриПериодическомПолученииДанныхКлиентаНаСервере", Ложь);
|
||||||
|
|
||||||
// ВариантыОтчетов
|
// ВариантыОтчетов
|
||||||
События.Вставить("ПриОпределенииНастроекВариантовОтчетов", Ложь);
|
События.Вставить("ПриОпределенииНастроекВариантовОтчетов", Ложь);
|
||||||
@@ -140,8 +142,6 @@
|
|||||||
События.Вставить("ПриОтключенииТекущихДел", Ложь);
|
События.Вставить("ПриОтключенииТекущихДел", Ложь);
|
||||||
События.Вставить("ПриОпределенииНастроекТекущихДел", Ложь);
|
События.Вставить("ПриОпределенииНастроекТекущихДел", Ложь);
|
||||||
События.Вставить("ПриУстановкеОбщихПараметровЗапросов", Ложь);
|
События.Вставить("ПриУстановкеОбщихПараметровЗапросов", Ложь);
|
||||||
События.Вставить("ПриСозданииНаСервереТекущиеДела", Ложь);
|
|
||||||
События.Вставить("ПередЗагрузкойДанныхИзНастроекНаСервереТекущиеДела", Ложь);
|
|
||||||
|
|
||||||
// УправлениеДоступом
|
// УправлениеДоступом
|
||||||
События.Вставить("ПриЗаполненииВидовДоступа", Ложь);
|
События.Вставить("ПриЗаполненииВидовДоступа", Ложь);
|
||||||
@@ -277,7 +277,8 @@
|
|||||||
Процедура ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы) Экспорт
|
Процедура ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы) Экспорт
|
||||||
|
|
||||||
СтандартныеПодсистемыСервер.ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы);
|
СтандартныеПодсистемыСервер.ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы);
|
||||||
|
СерверныеОповещения.ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы);
|
||||||
|
|
||||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда
|
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда
|
||||||
МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
|
МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
|
||||||
МодульВариантыОтчетов.ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы);
|
МодульВариантыОтчетов.ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы);
|
||||||
@@ -603,8 +604,6 @@
|
|||||||
|
|
||||||
ОбновлениеИнформационнойБазыСлужебный.ПриПолученииСпискаШаблонов(ШаблоныЗаданий);
|
ОбновлениеИнформационнойБазыСлужебный.ПриПолученииСпискаШаблонов(ШаблоныЗаданий);
|
||||||
|
|
||||||
ПользователиСлужебный.ПриПолученииСпискаШаблонов(ШаблоныЗаданий);
|
|
||||||
|
|
||||||
СтандартныеПодсистемыСервер.ПриПолученииСпискаШаблонов(ШаблоныЗаданий);
|
СтандартныеПодсистемыСервер.ПриПолученииСпискаШаблонов(ШаблоныЗаданий);
|
||||||
|
|
||||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УдалениеПомеченныхОбъектов") Тогда
|
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УдалениеПомеченныхОбъектов") Тогда
|
||||||
@@ -652,7 +651,9 @@
|
|||||||
|
|
||||||
// См. ОчередьЗаданийПереопределяемый.ПриОпределенииПсевдонимовОбработчиков.
|
// См. ОчередьЗаданийПереопределяемый.ПриОпределенииПсевдонимовОбработчиков.
|
||||||
Процедура ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам) Экспорт
|
Процедура ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам) Экспорт
|
||||||
|
|
||||||
|
СерверныеОповещения.ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам);
|
||||||
|
|
||||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.БизнесПроцессыИЗадачи") Тогда
|
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.БизнесПроцессыИЗадачи") Тогда
|
||||||
МодульБизнесПроцессыИЗадачиСервер = ОбщегоНазначения.ОбщийМодуль("БизнесПроцессыИЗадачиСервер");
|
МодульБизнесПроцессыИЗадачиСервер = ОбщегоНазначения.ОбщийМодуль("БизнесПроцессыИЗадачиСервер");
|
||||||
МодульБизнесПроцессыИЗадачиСервер.ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам);
|
МодульБизнесПроцессыИЗадачиСервер.ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам);
|
||||||
@@ -1864,6 +1865,39 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений
|
||||||
|
Процедура ПриДобавленииСерверныхОповещений(Оповещения) Экспорт
|
||||||
|
|
||||||
|
СтандартныеПодсистемыСервер.ПриДобавленииСерверныхОповещений(Оповещения);
|
||||||
|
ПользователиСлужебный.ПриДобавленииСерверныхОповещений(Оповещения);
|
||||||
|
|
||||||
|
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда
|
||||||
|
МодульСоединенияИБ = ОбщегоНазначения.ОбщийМодуль("СоединенияИБ");
|
||||||
|
МодульСоединенияИБ.ПриДобавленииСерверныхОповещений(Оповещения);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПриДобавленииСерверныхОповещений Тогда
|
||||||
|
МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС");
|
||||||
|
МодульИнтеграцияПодсистемБТС.ПриДобавленииСерверныхОповещений(Оповещения);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБИП().ПриДобавленииСерверныхОповещений Тогда
|
||||||
|
МодульИнтеграцияПодсистемБИП = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБИП");
|
||||||
|
МодульИнтеграцияПодсистемБИП.ПриДобавленииСерверныхОповещений(Оповещения);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// См. ОбщегоНазначенияПереопределяемый.ПриПериодическомПолученииДанныхКлиентаНаСервере
|
||||||
|
Процедура ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты) Экспорт
|
||||||
|
|
||||||
|
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
|
||||||
|
МодульЦентрМониторингаСлужебный = ОбщегоНазначения.ОбщийМодуль("ЦентрМониторингаСлужебный");
|
||||||
|
МодульЦентрМониторингаСлужебный.ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область ВариантыОтчетов
|
#Область ВариантыОтчетов
|
||||||
@@ -4706,36 +4740,6 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
// См. ТекущиеДелаПереопределяемый.ПриСозданииНаСервере.
|
|
||||||
Процедура ПриСозданииНаСервереТекущиеДела(Форма, Список) Экспорт
|
|
||||||
|
|
||||||
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПриСозданииНаСервереТекущиеДела Тогда
|
|
||||||
МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС");
|
|
||||||
МодульИнтеграцияПодсистемБТС.ПриСозданииНаСервереТекущиеДела(Форма, Список);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБИП().ПриСозданииНаСервереТекущиеДела Тогда
|
|
||||||
МодульИнтеграцияПодсистемБИП = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБИП");
|
|
||||||
МодульИнтеграцияПодсистемБИП.ПриСозданииНаСервереТекущиеДела(Форма, Список);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
// См. ТекущиеДелаПереопределяемый.ПередЗагрузкойДанныхИзНастроекНаСервере.
|
|
||||||
Процедура ПередЗагрузкойДанныхИзНастроекНаСервереТекущиеДела(Форма, Настройки) Экспорт
|
|
||||||
|
|
||||||
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПередЗагрузкойДанныхИзНастроекНаСервереТекущиеДела Тогда
|
|
||||||
МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС");
|
|
||||||
МодульИнтеграцияПодсистемБТС.ПередЗагрузкойДанныхИзНастроекНаСервереТекущиеДела(Форма, Настройки);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБИП().ПередЗагрузкойДанныхИзНастроекНаСервереТекущиеДела Тогда
|
|
||||||
МодульИнтеграцияПодсистемБИП = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБИП");
|
|
||||||
МодульИнтеграцияПодсистемБИП.ПередЗагрузкойДанныхИзНастроекНаСервереТекущиеДела(Форма, Настройки);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область УправлениеДоступом
|
#Область УправлениеДоступом
|
||||||
|
|||||||
@@ -105,6 +105,8 @@
|
|||||||
// Проверка статуса обработчиков отложенного обновления.
|
// Проверка статуса обработчиков отложенного обновления.
|
||||||
Параметры.Модули.Добавить(Новый Структура("Модуль, Номер", ОбновлениеИнформационнойБазыКлиент, 2));
|
Параметры.Модули.Добавить(Новый Структура("Модуль, Номер", ОбновлениеИнформационнойБазыКлиент, 2));
|
||||||
|
|
||||||
|
Параметры.Модули.Добавить(СерверныеОповещенияКлиент);
|
||||||
|
|
||||||
// Загрузка/обновление параметров работы программы.
|
// Загрузка/обновление параметров работы программы.
|
||||||
Параметры.Модули.Добавить(Новый Структура("Модуль, Номер", ОбновлениеИнформационнойБазыКлиент, 3));
|
Параметры.Модули.Добавить(Новый Структура("Модуль, Номер", ОбновлениеИнформационнойБазыКлиент, 3));
|
||||||
|
|
||||||
@@ -208,6 +210,7 @@
|
|||||||
Процедура ПослеНачалаРаботыСистемы() Экспорт
|
Процедура ПослеНачалаРаботыСистемы() Экспорт
|
||||||
|
|
||||||
СтандартныеПодсистемыКлиент.ПослеНачалаРаботыСистемы();
|
СтандартныеПодсистемыКлиент.ПослеНачалаРаботыСистемы();
|
||||||
|
СерверныеОповещенияКлиент.ПослеНачалаРаботыСистемы();
|
||||||
|
|
||||||
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Банки") Тогда
|
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Банки") Тогда
|
||||||
МодульРаботаСБанкамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСБанкамиКлиент");
|
МодульРаботаСБанкамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСБанкамиКлиент");
|
||||||
@@ -324,6 +327,26 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// См. ОбщегоНазначенияКлиентПереопределяемый.ПередПериодическойОтправкойДанныхКлиентаНаСервер
|
||||||
|
Процедура ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры) Экспорт
|
||||||
|
|
||||||
|
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
|
||||||
|
МодульЦентрМониторингаКлиентСлужебный = ОбщегоНазначенияКлиент.ОбщийМодуль("ЦентрМониторингаКлиентСлужебный");
|
||||||
|
МодульЦентрМониторингаКлиентСлужебный.ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// См. ОбщегоНазначенияКлиентПереопределяемый.ПослеПериодическогоПолученияДанныхКлиентаНаСервере
|
||||||
|
Процедура ПослеПериодическогоПолученияДанныхКлиентаНаСервере(Результаты) Экспорт
|
||||||
|
|
||||||
|
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
|
||||||
|
МодульЦентрМониторингаКлиентСлужебный = ОбщегоНазначенияКлиент.ОбщийМодуль("ЦентрМониторингаКлиентСлужебный");
|
||||||
|
МодульЦентрМониторингаКлиентСлужебный.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(Результаты);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область ВариантыОтчетов
|
#Область ВариантыОтчетов
|
||||||
@@ -692,6 +715,8 @@
|
|||||||
События.Вставить("ПослеНачалаРаботыСистемы", Ложь);
|
События.Вставить("ПослеНачалаРаботыСистемы", Ложь);
|
||||||
События.Вставить("ПриОбработкеПараметровЗапуска", Ложь);
|
События.Вставить("ПриОбработкеПараметровЗапуска", Ложь);
|
||||||
События.Вставить("ПередЗавершениемРаботыСистемы", Ложь);
|
События.Вставить("ПередЗавершениемРаботыСистемы", Ложь);
|
||||||
|
События.Вставить("ПередПериодическойОтправкойДанныхКлиентаНаСервер", Ложь);
|
||||||
|
События.Вставить("ПослеПериодическогоПолученияДанныхКлиентаНаСервере", Ложь);
|
||||||
|
|
||||||
// ВариантыОтчетов
|
// ВариантыОтчетов
|
||||||
События.Вставить("ПослеФормирования", Ложь);
|
События.Вставить("ПослеФормирования", Ложь);
|
||||||
|
|||||||
@@ -9868,9 +9868,6 @@
|
|||||||
СообщенияПользователю = ПолучитьСообщенияПользователю(Истина);
|
СообщенияПользователю = ПолучитьСообщенияПользователю(Истина);
|
||||||
ТекстСообщения = ТекстИсключения;
|
ТекстСообщения = ТекстИсключения;
|
||||||
Для Каждого Сообщение Из СообщенияПользователю Цикл
|
Для Каждого Сообщение Из СообщенияПользователю Цикл
|
||||||
Если СтрНайти(Сообщение.Текст, ДлительныеОперации.СообщениеПрогресса()) > 0 Тогда
|
|
||||||
Продолжить;
|
|
||||||
КонецЕсли;
|
|
||||||
ТекстСообщения = ТекстСообщения + ?(ПустаяСтрока(ТекстСообщения), "", Символы.ПС) + Сообщение.Текст;
|
ТекстСообщения = ТекстСообщения + ?(ПустаяСтрока(ТекстСообщения), "", Символы.ПС) + Сообщение.Текст;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
ТекстСообщения = СокрЛП(ТекстСообщения);
|
ТекстСообщения = СокрЛП(ТекстСообщения);
|
||||||
@@ -9939,9 +9936,6 @@
|
|||||||
СообщенияПользователю = ПолучитьСообщенияПользователю(Истина);
|
СообщенияПользователю = ПолучитьСообщенияПользователю(Истина);
|
||||||
ТекстСообщения = ТекстИсключения;
|
ТекстСообщения = ТекстИсключения;
|
||||||
Для Каждого Сообщение Из СообщенияПользователю Цикл
|
Для Каждого Сообщение Из СообщенияПользователю Цикл
|
||||||
Если СтрНайти(Сообщение.Текст, ДлительныеОперации.СообщениеПрогресса()) > 0 Тогда
|
|
||||||
Продолжить;
|
|
||||||
КонецЕсли;
|
|
||||||
ТекстСообщения = ТекстСообщения + ?(ПустаяСтрока(ТекстСообщения), "", Символы.ПС) + Сообщение.Текст;
|
ТекстСообщения = ТекстСообщения + ?(ПустаяСтрока(ТекстСообщения), "", Символы.ПС) + Сообщение.Текст;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
// версии конфигурации включительно или "Параллельно" - отложенный обработчик после
|
// версии конфигурации включительно или "Параллельно" - отложенный обработчик после
|
||||||
// обработки первой порции данных передает управление следующему обработчику, а после
|
// обработки первой порции данных передает управление следующему обработчику, а после
|
||||||
// выполнения последнего обработчика цикл повторяется заново.
|
// выполнения последнего обработчика цикл повторяется заново.
|
||||||
// * ЗаполнятьДанныеНовыхПодсистемПриПереходеСДругойПрограммы - Булево - Если установить Истина, то при переходе с
|
// * ЗаполнятьДанныеНовыхПодсистемПриПереходеСДругойПрограммы - Булево - если установить Истина, то при переходе с
|
||||||
// другой программы будут автоматически выполнены обработчики начального заполнения
|
// другой программы будут автоматически выполнены обработчики начального заполнения
|
||||||
// новых подсистем. При описании обработчика обновления можно при необходимости
|
// новых подсистем. При описании обработчика обновления можно при необходимости
|
||||||
// отключить его выполнение, указав свойство НеВыполнятьПриПереходеСДругойПрограммы.
|
// отключить его выполнение, указав свойство НеВыполнятьПриПереходеСДругойПрограммы.
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
|
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
|
||||||
|
|
||||||
Описание.Имя = "СтандартныеПодсистемы";
|
Описание.Имя = "СтандартныеПодсистемы";
|
||||||
Описание.Версия = "3.1.6.209";
|
Описание.Версия = "3.1.7.34";
|
||||||
Описание.ИдентификаторИнтернетПоддержки = "SSL";
|
Описание.ИдентификаторИнтернетПоддержки = "SSL";
|
||||||
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
|
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
|
||||||
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
|
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
|
||||||
|
|||||||
@@ -1468,7 +1468,7 @@
|
|||||||
|
|
||||||
Обработчики.Вставить("ВыполняетсяОбновлениеИБ", "ОбновлениеИнформационнойБазыСлужебный.УстановкаПараметровСеанса");
|
Обработчики.Вставить("ВыполняетсяОбновлениеИБ", "ОбновлениеИнформационнойБазыСлужебный.УстановкаПараметровСеанса");
|
||||||
Обработчики.Вставить("ПараметрыОбработчикаОбновления", "ОбновлениеИнформационнойБазыСлужебный.УстановкаПараметровСеанса");
|
Обработчики.Вставить("ПараметрыОбработчикаОбновления", "ОбновлениеИнформационнойБазыСлужебный.УстановкаПараметровСеанса");
|
||||||
Обработчики.Вставить("ОтмененныеДлительныеОперации", "ДлительныеОперации.УстановкаПараметровСеанса");
|
Обработчики.Вставить("ДлительныеОперации", "ДлительныеОперации.УстановкаПараметровСеанса");
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
@@ -2717,10 +2717,6 @@
|
|||||||
// Запускает обновление информационной базы в длительной операции.
|
// Запускает обновление информационной базы в длительной операции.
|
||||||
Процедура ВыполнитьОбновлениеИнформационнойБазыВФоне(ПараметрыОбновленияИБ, АдресХранилища) Экспорт
|
Процедура ВыполнитьОбновлениеИнформационнойБазыВФоне(ПараметрыОбновленияИБ, АдресХранилища) Экспорт
|
||||||
|
|
||||||
Если ПараметрыОбновленияИБ.ВФоне Тогда
|
|
||||||
ПараметрыСеанса.ПараметрыКлиентаНаСервере = ПараметрыОбновленияИБ.ПараметрыКлиентаНаСервере;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ИнформацияОбОшибке = Неопределено;
|
ИнформацияОбОшибке = Неопределено;
|
||||||
Попытка
|
Попытка
|
||||||
ПараметрыОбновления = ПараметрыОбновления();
|
ПараметрыОбновления = ПараметрыОбновления();
|
||||||
@@ -2750,7 +2746,6 @@
|
|||||||
РезультатОбновления = Результат;
|
РезультатОбновления = Результат;
|
||||||
Иначе
|
Иначе
|
||||||
РезультатОбновления = Новый Структура;
|
РезультатОбновления = Новый Структура;
|
||||||
РезультатОбновления.Вставить("ПараметрыКлиентаНаСервере", ПараметрыСеанса.ПараметрыКлиентаНаСервере);
|
|
||||||
РезультатОбновления.Вставить("Результат", Результат);
|
РезультатОбновления.Вставить("Результат", Результат);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
ПоместитьВоВременноеХранилище(РезультатОбновления, АдресХранилища);
|
ПоместитьВоВременноеХранилище(РезультатОбновления, АдресХранилища);
|
||||||
|
|||||||
@@ -570,10 +570,19 @@
|
|||||||
Макет = ПолучитьОбщийМакет(Исправление);
|
Макет = ПолучитьОбщийМакет(Исправление);
|
||||||
Для НомерСтроки = 1 По Макет.КоличествоСтрок() Цикл
|
Для НомерСтроки = 1 По Макет.КоличествоСтрок() Цикл
|
||||||
Строка = Макет.ПолучитьСтроку(НомерСтроки);
|
Строка = Макет.ПолучитьСтроку(НомерСтроки);
|
||||||
Если Не СтрНачинаетсяС(СокрЛП(Строка), "<Description>") Тогда
|
Если Не СтрНачинаетсяС(СокрЛ(Строка), "<Description>") Тогда
|
||||||
Продолжить;
|
Продолжить;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
ОписаниеПатча = СтрЗаменить(СтрЗаменить(СокрЛП(Строка), "<Description>", ""), "</Description>", "");
|
ОписаниеПатча = СтрЗаменить(СокрЛ(Строка), "<Description>", "");
|
||||||
|
Пока НомерСтроки < Макет.КоличествоСтрок() Цикл
|
||||||
|
Если СтрЗаканчиваетсяНа(СокрП(ОписаниеПатча), "</Description>") Тогда
|
||||||
|
ОписаниеПатча = СтрЗаменить(СокрП(ОписаниеПатча), "</Description>", "");
|
||||||
|
Прервать;
|
||||||
|
КонецЕсли;
|
||||||
|
НомерСтроки = НомерСтроки + 1;
|
||||||
|
Строка = Макет.ПолучитьСтроку(НомерСтроки);
|
||||||
|
ОписаниеПатча = ОписаниеПатча + Символы.ПС + Строка;
|
||||||
|
КонецЦикла;
|
||||||
Описания.Добавить(Исправление + ": " + ОписаниеПатча);
|
Описания.Добавить(Исправление + ": " + ОписаниеПатча);
|
||||||
Прервать;
|
Прервать;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|||||||
@@ -178,22 +178,26 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
// Возвращает Истина, если база зарегистрирована в системе Взаимодействия.
|
// Возвращает Истина, если метод ИнформационнаяБазаЗарегистрирована
|
||||||
|
// объекта СистемаВзаимодействия возвращает Истина и
|
||||||
|
// использование не заблокировано администратором.
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Булево
|
// Булево
|
||||||
//
|
//
|
||||||
Функция СистемаВзаимодействийПодключена() Экспорт
|
Функция СистемаВзаимодействийПодключена() Экспорт
|
||||||
Если ОбсужденияСлужебный.Заблокированы() Тогда
|
|
||||||
Возврат Ложь;
|
// Выполняется быстро без обращения к серверу взаимодействия.
|
||||||
КонецЕсли;
|
Зарегистрирована = СистемаВзаимодействия.ИнформационнаяБазаЗарегистрирована();
|
||||||
|
|
||||||
Возврат СистемаВзаимодействия.ИнформационнаяБазаЗарегистрирована();
|
Возврат Зарегистрирована И Не ОбсужденияСлужебный.Заблокированы();
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Возвращает Истина, если база зарегистрирована в системе Взаимодействия,
|
// Возвращает Истина, если метод ИспользованиеДоступно
|
||||||
// есть хотя бы один зарегистрированный пользователь.
|
// объекта СистемаВзаимодействия возвращает Истина и
|
||||||
//
|
// использование не заблокировано администратором.
|
||||||
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Булево
|
// Булево
|
||||||
//
|
//
|
||||||
@@ -310,7 +314,7 @@
|
|||||||
Если Ошибки.Количество() > 0 Тогда
|
Если Ошибки.Количество() > 0 Тогда
|
||||||
|
|
||||||
ЗаписьЖурналаРегистрации(ОбсужденияСлужебный.СобытиеЖурналаРегистрации(
|
ЗаписьЖурналаРегистрации(ОбсужденияСлужебный.СобытиеЖурналаРегистрации(
|
||||||
НСтр("ru='ПользователиСистемыВзаимодействия'", ОбщегоНазначения.КодОсновногоЯзыка())),
|
НСтр("ru='Пользователи системы взаимодействия'", ОбщегоНазначения.КодОсновногоЯзыка())),
|
||||||
УровеньЖурналаРегистрации.Ошибка,,,
|
УровеньЖурналаРегистрации.Ошибка,,,
|
||||||
СтрСоединить(Ошибки, Символы.ПС));
|
СтрСоединить(Ошибки, Символы.ПС));
|
||||||
|
|
||||||
@@ -344,22 +348,29 @@
|
|||||||
УстановитьПривилегированныйРежим(Ложь);
|
УстановитьПривилегированныйРежим(Ложь);
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(ИдентификаторПользователяИнформационнойБазы) Тогда
|
Если Не ЗначениеЗаполнено(ИдентификаторПользователяИнформационнойБазы) Тогда
|
||||||
ШаблонОшибки = НСтр("ru='Не удалось получить идентификатор пользователя (%1)'");
|
Если Пользователь = Пользователи.СсылкаНеуказанногоПользователя() Тогда
|
||||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
ИдентификаторПользователяИнформационнойБазы = ПользователиИнформационнойБазы.НайтиПоИмени("").УникальныйИдентификатор;
|
||||||
ШаблонОшибки,
|
Иначе
|
||||||
Строка(Пользователь));
|
ШаблонОшибки = НСтр("ru='Не удалось получить идентификатор пользователя (%1)'");
|
||||||
|
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||||
ВызватьИсключение ОписаниеОшибки;
|
ШаблонОшибки,
|
||||||
|
Строка(Пользователь));
|
||||||
|
|
||||||
|
ВызватьИсключение ОписаниеОшибки;
|
||||||
|
КонецЕсли;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ОшибкаПолучениеИдентификатораСВ = "";
|
ОшибкаПолучениеИдентификатораСВ = "";
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
ИдентификаторПользователяСВ = СистемаВзаимодействия.ПолучитьИдентификаторПользователя(
|
ИдентификаторПользователяСВ = СистемаВзаимодействия.ПолучитьИдентификаторПользователя(
|
||||||
ИдентификаторПользователяИнформационнойБазы);
|
ИдентификаторПользователяИнформационнойБазы);
|
||||||
Результат = СистемаВзаимодействия.ПолучитьПользователя(ИдентификаторПользователяСВ);
|
Результат = СистемаВзаимодействия.ПолучитьПользователя(ИдентификаторПользователяСВ);
|
||||||
Исключение
|
Исключение
|
||||||
ОшибкаПолучениеИдентификатораСВ = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
|
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||||
|
Если ЭтоОшибкаУстановкиСоединенияССерверомВзаимодействия(ИнформацияОбОшибке) Тогда
|
||||||
|
ВызватьИсключение;
|
||||||
|
КонецЕсли;
|
||||||
|
ОшибкаПолучениеИдентификатораСВ = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке);
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
Если Результат = Неопределено Тогда
|
Если Результат = Неопределено Тогда
|
||||||
@@ -483,6 +494,49 @@
|
|||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
Функция ЭтоОшибкаУстановкиСоединенияССерверомВзаимодействия(ИнформацияОбОшибке)
|
||||||
|
|
||||||
|
// Только для повышения производительности не влияет на функциональность.
|
||||||
|
|
||||||
|
// АПК:1297-выкл - не локализуется, строки на других языках уже строго определены.
|
||||||
|
// АПК:1405-выкл - не локализуется, строки на других языках уже строго определены.
|
||||||
|
// АПК:1036-выкл - не локализуется, строки на других языках уже строго определены.
|
||||||
|
СтрокаНаРазныхЯзыках =
|
||||||
|
"az = 'Qarşılıqlı fəaliyyət sistmei qeydə alınmayıb';
|
||||||
|
|en = 'The collaboration system is not registered';
|
||||||
|
|hy = 'Փոխազդեցության համակարգը գրանցված չէ';
|
||||||
|
|bg = 'Системата за взаимодействия не е регистрирана';
|
||||||
|
|hu = 'Az interaktív rendszer nincs regisztrálva';
|
||||||
|
|vi = 'Chưa ghi nhận hệ thống tương tác';
|
||||||
|
|el = 'Το σύστημα αλληλεπίδρασης δεν έχει καταχωρηθεί';
|
||||||
|
|ka = 'კომუნიკაციის სისტემა არ არის დარეგისტრირებული';
|
||||||
|
|el = 'Το σύστημα αλληλεπίδρασης δεν έχει καταχωρηθεί';
|
||||||
|
|it = 'Il sistema di interoperabilità non è registrato';
|
||||||
|
|kk = 'Өзара әрекет ету жүйесі тіркелмеген';
|
||||||
|
|zh = '交互系统没有启动';
|
||||||
|
|lv = 'Mijiedarbības sistēma nav reģistrēta';
|
||||||
|
|lt = 'Sąveikos sistema neužregistruota';
|
||||||
|
|de = 'Interaktionssystem nicht registriert';
|
||||||
|
|pl = 'System współpracy nie został zarejestrowany';
|
||||||
|
|ro = 'Sistemul de interacţiune nu este înregistrat';
|
||||||
|
|ru = 'Система взаимодействия не зарегистрирована';
|
||||||
|
|tr = 'Etkileşim sistemine kayıtlı değil';
|
||||||
|
|uk = 'Система взаємодії не зареєстрована';
|
||||||
|
|fr = 'Le système d’interaction n’est pas enregistré'"; // @Non-NLS
|
||||||
|
// АПК:1036-вкл
|
||||||
|
// АПК:1405-вкл
|
||||||
|
// АПК:1297-вкл
|
||||||
|
|
||||||
|
//@skip-check bsl-nstr-string-literal-format
|
||||||
|
СтрокаПоиска = НСтр(СтрокаНаРазныхЯзыках);
|
||||||
|
Если Не ЗначениеЗаполнено(СтрокаПоиска) Тогда
|
||||||
|
Возврат Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат СтрНачинаетсяС(КраткоеПредставлениеОшибки(ИнформацияОбОшибке), СтрокаПоиска);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
Процедура ОбновитьОписаниеПользователяВСистемеВзаимодействия(ПользовательСВ, ОписаниеПользователя)
|
Процедура ОбновитьОписаниеПользователяВСистемеВзаимодействия(ПользовательСВ, ОписаниеПользователя)
|
||||||
|
|
||||||
Фотография = ОписаниеПользователя.Фотография;
|
Фотография = ОписаниеПользователя.Фотография;
|
||||||
|
|||||||
@@ -10,14 +10,14 @@
|
|||||||
|
|
||||||
Функция Подключены() Экспорт
|
Функция Подключены() Экспорт
|
||||||
|
|
||||||
Если Заблокированы() Тогда
|
|
||||||
Возврат Ложь;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
// Вызов на сервере гарантирует получение корректного состояния в случае,
|
// Вызов на сервере гарантирует получение корректного состояния в случае,
|
||||||
// когда данные регистрации информационной базы были изменены методом
|
// когда данные регистрации информационной базы были изменены методом
|
||||||
// СистемаВзаимодействия.УстановитьДанныеРегистрацииИнформационнойБазы.
|
// СистемаВзаимодействия.УстановитьДанныеРегистрацииИнформационнойБазы.
|
||||||
Возврат СистемаВзаимодействия.ИспользованиеДоступно();
|
//
|
||||||
|
// Выполняется быстро без обращения к серверу взаимодействия.
|
||||||
|
ИспользованиеДоступно = СистемаВзаимодействия.ИспользованиеДоступно();
|
||||||
|
|
||||||
|
Возврат ИспользованиеДоступно И Не Заблокированы();
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
|||||||
@@ -135,7 +135,12 @@
|
|||||||
|
|
||||||
Оповещение = Новый ОписаниеОповещения("ПослеУспешногоОтключения", ЭтотОбъект,,
|
Оповещение = Новый ОписаниеОповещения("ПослеУспешногоОтключения", ЭтотОбъект,,
|
||||||
"ПриОбработкеОшибкиОтключения", ЭтотОбъект);
|
"ПриОбработкеОшибкиОтключения", ЭтотОбъект);
|
||||||
СистемаВзаимодействия.НачатьОтменуРегистрацииИнформационнойБазы(Оповещение);
|
|
||||||
|
Попытка
|
||||||
|
СистемаВзаимодействия.НачатьОтменуРегистрацииИнформационнойБазы(Оповещение);
|
||||||
|
Исключение
|
||||||
|
ПриОбработкеОшибкиОтключения(ИнформацияОбОшибке(), Ложь, Неопределено);
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
@@ -148,6 +153,13 @@
|
|||||||
Процедура ПриОбработкеОшибкиОтключения(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
|
Процедура ПриОбработкеОшибкиОтключения(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
|
||||||
|
|
||||||
СтандартнаяОбработка = Ложь;
|
СтандартнаяОбработка = Ложь;
|
||||||
|
|
||||||
|
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
|
||||||
|
НСтр("ru = 'Обсуждения.Ошибка отмены регистрации информационной базы'",
|
||||||
|
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
|
||||||
|
"Ошибка",
|
||||||
|
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке),, Истина);
|
||||||
|
|
||||||
ПоказатьИнформациюОбОшибке(ИнформацияОбОшибке);
|
ПоказатьИнформациюОбОшибке(ИнформацияОбОшибке);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
// с устаревшей процедурой ОбщегоНазначенияКлиентСервер.СообщитьПользователю.
|
// с устаревшей процедурой ОбщегоНазначенияКлиентСервер.СообщитьПользователю.
|
||||||
|
|
||||||
// Формирует и выводит сообщение, которое может быть связано с элементом управления формы.
|
// Формирует и выводит сообщение, которое может быть связано с элементом управления формы.
|
||||||
|
// В фоновом задании длительной операции отправляет сообщение сразу на клиент,
|
||||||
|
// если подключена система взаимодействия.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ТекстСообщенияПользователю - Строка - текст сообщения.
|
// ТекстСообщенияПользователю - Строка - текст сообщения.
|
||||||
@@ -65,8 +67,14 @@
|
|||||||
ЭтоОбъект = СтрНайти(ТипЗначенияСтрокой, "Object.") > 0;
|
ЭтоОбъект = СтрНайти(ТипЗначенияСтрокой, "Object.") > 0;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ОбщегоНазначенияСлужебныйКлиентСервер.СообщитьПользователю(ТекстСообщенияПользователю, КлючДанных, Поле,
|
Сообщение = ОбщегоНазначенияСлужебныйКлиентСервер.СообщениеПользователю(ТекстСообщенияПользователю,
|
||||||
ПутьКДанным, Отказ, ЭтоОбъект);
|
КлючДанных, Поле, ПутьКДанным, Отказ, ЭтоОбъект);
|
||||||
|
|
||||||
|
Если СтандартныеПодсистемыПовтИсп.ЭтоСеансДлительнойОперации() Тогда
|
||||||
|
ДлительныеОперации.ОтправитьОповещениеКлиенту("СообщениеПользователю", Сообщение);
|
||||||
|
Иначе
|
||||||
|
Сообщение.Сообщить();
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
@@ -6352,7 +6360,7 @@
|
|||||||
УстановитьПривилегированныйРежим(Истина);
|
УстановитьПривилегированныйРежим(Истина);
|
||||||
|
|
||||||
Данные = МестоИспользования.Данные;
|
Данные = МестоИспользования.Данные;
|
||||||
Мета = МестоИспользования.Метаданные;
|
МетаданныеКонстанты = МестоИспользования.Метаданные;
|
||||||
|
|
||||||
ПредставлениеДанных = Строка(Данные);
|
ПредставлениеДанных = Строка(Данные);
|
||||||
|
|
||||||
@@ -6370,7 +6378,7 @@
|
|||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
Блокировка = Новый БлокировкаДанных;
|
Блокировка = Новый БлокировкаДанных;
|
||||||
Блокировка.Добавить(Мета.ПолноеИмя());
|
Блокировка.Добавить(МетаданныеКонстанты.ПолноеИмя());
|
||||||
Попытка
|
Попытка
|
||||||
Блокировка.Заблокировать();
|
Блокировка.Заблокировать();
|
||||||
Исключение
|
Исключение
|
||||||
@@ -6380,13 +6388,13 @@
|
|||||||
ВызватьИсключение;
|
ВызватьИсключение;
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
Менеджер = Константы[Мета.Имя].СоздатьМенеджерЗначения();
|
МенеджерКонстанты = Константы[МетаданныеКонстанты.Имя].СоздатьМенеджерЗначения();
|
||||||
Менеджер.Прочитать();
|
МенеджерКонстанты.Прочитать();
|
||||||
|
|
||||||
ЗаменаПроизведена = Ложь;
|
ЗаменаПроизведена = Ложь;
|
||||||
Для Каждого Строка Из ОбрабатываемыеСтроки Цикл
|
Для Каждого Строка Из ОбрабатываемыеСтроки Цикл
|
||||||
Если Менеджер.Значение = Строка.Ссылка Тогда
|
Если МенеджерКонстанты.Значение = Строка.Ссылка Тогда
|
||||||
Менеджер.Значение = Строка.ЦелеваяСсылка;
|
МенеджерКонстанты.Значение = Строка.ЦелеваяСсылка;
|
||||||
ЗаменаПроизведена = Истина;
|
ЗаменаПроизведена = Истина;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
@@ -6402,7 +6410,7 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
ЗаписатьОбъект(Менеджер, ПараметрыЗаписи);
|
ЗаписатьОбъект(МенеджерКонстанты, ПараметрыЗаписи);
|
||||||
Исключение
|
Исключение
|
||||||
ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||||
Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось записать %1 по причине: %2'"),
|
Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось записать %1 по причине: %2'"),
|
||||||
@@ -6419,7 +6427,7 @@
|
|||||||
Исключение
|
Исключение
|
||||||
ОтменитьТранзакцию();
|
ОтменитьТранзакцию();
|
||||||
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииЗаменыСсылок(), УровеньЖурналаРегистрации.Ошибка,
|
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииЗаменыСсылок(), УровеньЖурналаРегистрации.Ошибка,
|
||||||
Мета,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
МетаданныеКонстанты,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||||
Если СостояниеОперации = "ОшибкаЗаписи" Тогда
|
Если СостояниеОперации = "ОшибкаЗаписи" Тогда
|
||||||
Для Каждого Строка Из ОбрабатываемыеСтроки Цикл
|
Для Каждого Строка Из ОбрабатываемыеСтроки Цикл
|
||||||
ЗарегистрироватьОшибкуЗамены(Результат, Строка.Ссылка,
|
ЗарегистрироватьОшибкуЗамены(Результат, Строка.Ссылка,
|
||||||
@@ -6972,19 +6980,23 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ЗарегистрироватьФактЗамены(Объект, СсылкаДубля, СсылкаОригинала, ВидРеквизита, ИмяРеквизита, Индекс = Неопределено, ИмяКолонки = Неопределено)
|
Процедура ЗарегистрироватьФактЗамены(Объект, СсылкаДубля, СсылкаОригинала, ВидРеквизита, ИмяРеквизита,
|
||||||
Структура = Новый Структура("ДополнительныеСвойства");
|
Индекс = Неопределено, ИмяКолонки = Неопределено)
|
||||||
ЗаполнитьЗначенияСвойств(Структура, Объект);
|
|
||||||
Если ТипЗнч(Структура.ДополнительныеСвойства) <> Тип("Структура") Тогда
|
ЕстьДополнительныеСвойства = Новый Структура("ДополнительныеСвойства");
|
||||||
|
ЗаполнитьЗначенияСвойств(ЕстьДополнительныеСвойства, Объект);
|
||||||
|
Если ТипЗнч(ЕстьДополнительныеСвойства.ДополнительныеСвойства) <> Тип("Структура") Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
ДопСвойства = Объект.ДополнительныеСвойства;
|
|
||||||
ДопСвойства.Вставить("ЗаменаСсылок", Истина);
|
ДополнительныеСвойства = Объект.ДополнительныеСвойства;
|
||||||
ВыполненныеЗамены = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДопСвойства, "ВыполненныеЗамены");
|
ДополнительныеСвойства.Вставить("ЗаменаСсылок", Истина);
|
||||||
|
ВыполненныеЗамены = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ВыполненныеЗамены");
|
||||||
Если ВыполненныеЗамены = Неопределено Тогда
|
Если ВыполненныеЗамены = Неопределено Тогда
|
||||||
ВыполненныеЗамены = Новый Массив;
|
ВыполненныеЗамены = Новый Массив;
|
||||||
ДопСвойства.Вставить("ВыполненныеЗамены", ВыполненныеЗамены);
|
ДополнительныеСвойства.Вставить("ВыполненныеЗамены", ВыполненныеЗамены);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ОписаниеЗамены = Новый Структура;
|
ОписаниеЗамены = Новый Структура;
|
||||||
ОписаниеЗамены.Вставить("СсылкаДубля", СсылкаДубля);
|
ОписаниеЗамены.Вставить("СсылкаДубля", СсылкаДубля);
|
||||||
ОписаниеЗамены.Вставить("СсылкаОригинала", СсылкаОригинала);
|
ОписаниеЗамены.Вставить("СсылкаОригинала", СсылкаОригинала);
|
||||||
@@ -6993,6 +7005,7 @@
|
|||||||
ОписаниеЗамены.Вставить("Индекс", Индекс);
|
ОписаниеЗамены.Вставить("Индекс", Индекс);
|
||||||
ОписаниеЗамены.Вставить("ИмяКолонки", ИмяКолонки);
|
ОписаниеЗамены.Вставить("ИмяКолонки", ИмяКолонки);
|
||||||
ВыполненныеЗамены.Добавить(ОписаниеЗамены);
|
ВыполненныеЗамены.Добавить(ОписаниеЗамены);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура УстановитьПометкуУдаленияДляОбъектов(Результат, Знач УдаляемыеСсылки, Знач ПараметрыВыполнения)
|
Процедура УстановитьПометкуУдаленияДляОбъектов(Результат, Знач УдаляемыеСсылки, Знач ПараметрыВыполнения)
|
||||||
@@ -7494,37 +7507,38 @@
|
|||||||
|
|
||||||
|
|
||||||
Процедура ЗаменитьВКоллекцииСтрок(ВидКоллекции, ИмяКоллекции, Объект, Коллекция, Знач СписокПолей, Знач ПарыЗамен)
|
Процедура ЗаменитьВКоллекцииСтрок(ВидКоллекции, ИмяКоллекции, Объект, Коллекция, Знач СписокПолей, Знач ПарыЗамен)
|
||||||
ЭтоРегистрБухгалтерии = ВидКоллекции = "Движения" И ЭтоРегистрБухгалтерии(Коллекция.Метаданные());
|
|
||||||
РабочаяКоллекция = Коллекция.Выгрузить();
|
ИзмененнаяКоллекция = Коллекция.Выгрузить();
|
||||||
Модифицировано = Ложь;
|
Модифицировано = Ложь;
|
||||||
|
ИменаИзмененныхРеквизитов = Новый Массив;
|
||||||
|
|
||||||
ИзмененныеПоля = Новый Массив;
|
Для Каждого Строка Из ИзмененнаяКоллекция Цикл
|
||||||
|
|
||||||
Для Каждого Строка Из РабочаяКоллекция Цикл
|
|
||||||
|
|
||||||
Для Каждого КлючЗначение Из СписокПолей Цикл
|
Для Каждого КлючЗначение Из СписокПолей Цикл
|
||||||
Имя = КлючЗначение.Ключ;
|
ИмяРеквизита = КлючЗначение.Ключ;
|
||||||
ЦелеваяСсылка = ПарыЗамен[ Строка[Имя] ];
|
ЦелеваяСсылка = ПарыЗамен[ Строка[ИмяРеквизита] ];
|
||||||
Если ЦелеваяСсылка <> Неопределено Тогда
|
Если ЦелеваяСсылка <> Неопределено Тогда
|
||||||
ЗарегистрироватьФактЗамены(Объект, Строка[Имя], ЦелеваяСсылка, ВидКоллекции, ИмяКоллекции, РабочаяКоллекция.Индекс(Строка), Имя);
|
ЗарегистрироватьФактЗамены(Объект, Строка[ИмяРеквизита], ЦелеваяСсылка, ВидКоллекции, ИмяКоллекции,
|
||||||
Строка[Имя] = ЦелеваяСсылка;
|
ИзмененнаяКоллекция.Индекс(Строка), ИмяРеквизита);
|
||||||
|
Строка[ИмяРеквизита] = ЦелеваяСсылка;
|
||||||
Модифицировано = Истина;
|
Модифицировано = Истина;
|
||||||
ИзмененныеПоля.Добавить(Имя);
|
ИменаИзмененныхРеквизитов.Добавить(ИмяРеквизита);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Если Модифицировано Тогда
|
Если Модифицировано Тогда
|
||||||
|
ЭтоРегистрБухгалтерии = ВидКоллекции = "Движения" И ЭтоРегистрБухгалтерии(Коллекция.Метаданные());
|
||||||
Если ЭтоРегистрБухгалтерии Тогда
|
Если ЭтоРегистрБухгалтерии Тогда
|
||||||
ЗагрузитьИзмененныйНаборВРегистрБухгалтерии(Коллекция, РабочаяКоллекция, ИзмененныеПоля);
|
ЗагрузитьИзмененныйНаборВРегистрБухгалтерии(Коллекция, ИзмененнаяКоллекция, ИменаИзмененныхРеквизитов);
|
||||||
Иначе
|
Иначе
|
||||||
Коллекция.Загрузить(РабочаяКоллекция);
|
Коллекция.Загрузить(ИзмененнаяКоллекция);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ЗагрузитьИзмененныйНаборВРегистрБухгалтерии(НаборЗаписей, ИзмененнаяКоллекция, ИзмененныеПоля)
|
Процедура ЗагрузитьИзмененныйНаборВРегистрБухгалтерии(НаборЗаписей, ИзмененнаяКоллекция, ИменаИзмененныхРеквизитов)
|
||||||
НеизмененныеИзмерения = Новый Соответствие;
|
НеизмененныеИзмерения = Новый Соответствие;
|
||||||
ИзмененныеИзмерения = Новый Соответствие;
|
ИзмененныеИзмерения = Новый Соответствие;
|
||||||
|
|
||||||
@@ -7539,7 +7553,7 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Для каждого ИмяИзмерения Из ИменаИзмерений Цикл
|
Для каждого ИмяИзмерения Из ИменаИзмерений Цикл
|
||||||
Если ИзмененныеПоля.Найти(ИмяИзмерения) = Неопределено Тогда
|
Если ИменаИзмененныхРеквизитов.Найти(ИмяИзмерения) = Неопределено Тогда
|
||||||
НеизмененныеИзмерения.Вставить(ИмяИзмерения, НаборЗаписей.ВыгрузитьКолонку(ИмяИзмерения));
|
НеизмененныеИзмерения.Вставить(ИмяИзмерения, НаборЗаписей.ВыгрузитьКолонку(ИмяИзмерения));
|
||||||
Иначе
|
Иначе
|
||||||
ИзмененныеИзмерения.Вставить(ИмяИзмерения, НаборЗаписей.ВыгрузитьКолонку(ИмяИзмерения));
|
ИзмененныеИзмерения.Вставить(ИмяИзмерения, НаборЗаписей.ВыгрузитьКолонку(ИмяИзмерения));
|
||||||
@@ -8516,31 +8530,27 @@
|
|||||||
Процедура ПроверкаФиксированностиДанных(Данные, ДанныеВЗначенииФиксированныхТипов = Ложь)
|
Процедура ПроверкаФиксированностиДанных(Данные, ДанныеВЗначенииФиксированныхТипов = Ложь)
|
||||||
|
|
||||||
ТипДанных = ТипЗнч(Данные);
|
ТипДанных = ТипЗнч(Данные);
|
||||||
|
СоставТипов = Новый ОписаниеТипов(
|
||||||
|
"ХранилищеЗначения,
|
||||||
|
|ФиксированныйМассив,
|
||||||
|
|ФиксированнаяСтруктура,
|
||||||
|
|ФиксированноеСоответствие");
|
||||||
|
|
||||||
Если ТипДанных = Тип("ХранилищеЗначения")
|
Если СоставТипов.СодержитТип(ТипДанных) Тогда
|
||||||
ИЛИ ТипДанных = Тип("ФиксированныйМассив")
|
|
||||||
ИЛИ ТипДанных = Тип("ФиксированнаяСтруктура")
|
|
||||||
ИЛИ ТипДанных = Тип("ФиксированноеСоответствие") Тогда
|
|
||||||
|
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ДанныеВЗначенииФиксированныхТипов Тогда
|
Если ДанныеВЗначенииФиксированныхТипов Тогда
|
||||||
|
|
||||||
Если ТипДанных = Тип("Булево")
|
СоставТипов = Новый ОписаниеТипов(
|
||||||
ИЛИ ТипДанных = Тип("Строка")
|
"Булево,Строка,Число,Дата,
|
||||||
ИЛИ ТипДанных = Тип("Число")
|
|Неопределено,УникальныйИдентификатор,Null,Тип,
|
||||||
ИЛИ ТипДанных = Тип("Дата")
|
|ХранилищеЗначения,ОбщийМодуль,ОбъектМетаданных,
|
||||||
ИЛИ ТипДанных = Тип("Неопределено")
|
|ТипЗначенияXDTO,ТипОбъектаXDTO,
|
||||||
ИЛИ ТипДанных = Тип("УникальныйИдентификатор")
|
|ИдентификаторОбсужденияСистемыВзаимодействия");
|
||||||
ИЛИ ТипДанных = Тип("Null")
|
|
||||||
ИЛИ ТипДанных = Тип("Тип")
|
Если СоставТипов.СодержитТип(ТипДанных)
|
||||||
ИЛИ ТипДанных = Тип("ХранилищеЗначения")
|
Или ЭтоСсылка(ТипДанных) Тогда
|
||||||
ИЛИ ТипДанных = Тип("ОбщийМодуль")
|
|
||||||
ИЛИ ТипДанных = Тип("ОбъектМетаданных")
|
|
||||||
ИЛИ ТипДанных = Тип("ТипЗначенияXDTO")
|
|
||||||
ИЛИ ТипДанных = Тип("ТипОбъектаXDTO")
|
|
||||||
ИЛИ ЭтоСсылка(ТипДанных) Тогда
|
|
||||||
|
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|||||||
@@ -58,8 +58,10 @@
|
|||||||
Процедура СообщитьПользователю(Знач ТекстСообщенияПользователю, Знач КлючДанных = Неопределено,
|
Процедура СообщитьПользователю(Знач ТекстСообщенияПользователю, Знач КлючДанных = Неопределено,
|
||||||
Знач Поле = "", Знач ПутьКДанным = "", Отказ = Ложь) Экспорт
|
Знач Поле = "", Знач ПутьКДанным = "", Отказ = Ложь) Экспорт
|
||||||
|
|
||||||
ОбщегоНазначенияСлужебныйКлиентСервер.СообщитьПользователю(ТекстСообщенияПользователю, КлючДанных,
|
Сообщение = ОбщегоНазначенияСлужебныйКлиентСервер.СообщениеПользователю(ТекстСообщенияПользователю,
|
||||||
Поле, ПутьКДанным, Отказ);
|
КлючДанных, Поле, ПутьКДанным, Отказ);
|
||||||
|
|
||||||
|
Сообщение.Сообщить()
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
|||||||
@@ -159,6 +159,47 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Вызывается из глобального обработчика ожидания каждые 60 сек
|
||||||
|
// для возможности централизованно передать данные с клиента на сервер.
|
||||||
|
// Например, для передачи статистики о количестве открытых окон.
|
||||||
|
// Не рекомендуется делать собственные глобальные обработчики ожидания,
|
||||||
|
// чтобы минимизировать общее количество серверных вызовов.
|
||||||
|
//
|
||||||
|
// Не рекомендуется передавать данные каждые 60 сек, а делать это реже
|
||||||
|
// в зависимости от реальной необходимости (ориентироваться на один раз в 20 минут).
|
||||||
|
// Не рекомендуется передавать избыточно большой объем данных,
|
||||||
|
// так как это уменьшает отзывчивость клиентского приложения.
|
||||||
|
//
|
||||||
|
// Для отправки данных с клиента на сервер заполните параметр Параметры,
|
||||||
|
// который затем будет передан в процедуру
|
||||||
|
// ОбщегоНазначенияПереопределяемый.ПриПериодическомПолученииДанныхКлиентаНаСервере.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Параметры - Соответствие из КлючИЗначение:
|
||||||
|
// * Ключ - Строка - имя параметра, передаваемого на сервер.
|
||||||
|
// * Значение - Произвольный - значение параметра, передаваемого на сервер.
|
||||||
|
//
|
||||||
|
Процедура ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры) Экспорт
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Вызывается из глобального обработчика ожидания каждые 60 сек после возврата с сервера.
|
||||||
|
// Требуется, когда сервер возвращает результат для обработки на клиенте.
|
||||||
|
// Например, признак дальнейшей передачи статистики с клиента на сервер.
|
||||||
|
//
|
||||||
|
// Для получения результатов сервера на клиенте они должны быть заполнены
|
||||||
|
// в параметре Результаты в процедуре
|
||||||
|
// ОбщегоНазначенияПереопределяемый.ПриПериодическомПолученииДанныхКлиентаНаСервере.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Результаты - Соответствие из КлючИЗначение:
|
||||||
|
// * Ключ - Строка - имя параметра, возвращенного с сервера.
|
||||||
|
// * Значение - Произвольный - значение параметра, возвращенного с сервера.
|
||||||
|
//
|
||||||
|
Процедура ПослеПериодическогоПолученияДанныхКлиентаНаСервере(Результаты) Экспорт
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@@ -88,6 +88,7 @@
|
|||||||
|
|
||||||
// Выводит накопленные методом ДобавитьОшибкуПользователю ошибки, при этом использует нужные шаблоны текстов ошибок
|
// Выводит накопленные методом ДобавитьОшибкуПользователю ошибки, при этом использует нужные шаблоны текстов ошибок
|
||||||
// в зависимости от количества однотипных ошибок.
|
// в зависимости от количества однотипных ошибок.
|
||||||
|
// Не подходит для отправки сообщений из фонового заданий длительной операции.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Ошибки - см. ДобавитьОшибкуПользователю.Ошибки
|
// Ошибки - см. ДобавитьОшибкуПользователю.Ошибки
|
||||||
@@ -109,16 +110,17 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Ошибки.ГруппыОшибок[Ошибка.ГруппаОшибок] <> Истина Тогда
|
Если Ошибки.ГруппыОшибок[Ошибка.ГруппаОшибок] <> Истина Тогда
|
||||||
ОбщегоНазначенияСлужебныйКлиентСервер.СообщитьПользователю(
|
Сообщение = ОбщегоНазначенияСлужебныйКлиентСервер.СообщениеПользователю(
|
||||||
Ошибка.ТекстДляОднойОшибки,
|
Ошибка.ТекстДляОднойОшибки,
|
||||||
Неопределено,
|
Неопределено,
|
||||||
СтрЗаменить(Ошибка.ПолеОшибки, "%1", Формат(ИндексСтроки, "ЧН=0; ЧГ=")));
|
СтрЗаменить(Ошибка.ПолеОшибки, "%1", Формат(ИндексСтроки, "ЧН=0; ЧГ=")));
|
||||||
Иначе
|
Иначе
|
||||||
ОбщегоНазначенияСлужебныйКлиентСервер.СообщитьПользователю(
|
Сообщение = ОбщегоНазначенияСлужебныйКлиентСервер.СообщениеПользователю(
|
||||||
СтрЗаменить(Ошибка.ТекстДляНесколькихОшибок, "%1", Формат(Ошибка.НомерСтроки + 1, "ЧН=0; ЧГ=")),
|
СтрЗаменить(Ошибка.ТекстДляНесколькихОшибок, "%1", Формат(Ошибка.НомерСтроки + 1, "ЧН=0; ЧГ=")),
|
||||||
Неопределено,
|
Неопределено,
|
||||||
СтрЗаменить(Ошибка.ПолеОшибки, "%1", Формат(ИндексСтроки, "ЧН=0; ЧГ=")));
|
СтрЗаменить(Ошибка.ПолеОшибки, "%1", Формат(ИндексСтроки, "ЧН=0; ЧГ=")));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
Сообщение.Сообщить();
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
|
|||||||
@@ -320,6 +320,54 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
|
||||||
|
// Вызывается при запуске сеанса для получения списка оповещений
|
||||||
|
// которые необходимо отправить с сервера на клиент (из регламентного задания).
|
||||||
|
// Смотри СтандартныеПодсистемыСервер.ПриОтправкеСерверногоОповещения
|
||||||
|
// и СтандартныеПодсистемыКлиент.ПриПолученииСерверногоОповещения.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Оповещения - Соответствие из КлючИЗначение:
|
||||||
|
// * Ключ - Строка - смотри СерверныеОповещения.НовоеСерверноеОповещение.Имя
|
||||||
|
// * Значение - см. СерверныеОповещения.НовоеСерверноеОповещение
|
||||||
|
//
|
||||||
|
// Пример:
|
||||||
|
// Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(
|
||||||
|
// "СтандартныеПодсистемы.ЗавершениеРаботыПользователей.БлокировкаСеансов");
|
||||||
|
// Оповещение.ИмяМодуляОтправки = "СоединенияИБ";
|
||||||
|
// Оповещение.ИмяМодуляПолучения = "СоединенияИБКлиент";
|
||||||
|
// Оповещение.ПериодПроверки = 60;
|
||||||
|
//
|
||||||
|
// Оповещения.Вставить(Оповещение.Имя, Оповещение);
|
||||||
|
//
|
||||||
|
Процедура ПриДобавленииСерверныхОповещений(Оповещения) Экспорт
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Вызывается из глобального обработчика ожидания по необходимости, но не чаще раза в 60 сек,
|
||||||
|
// для получения данных с клиента, а также возврате результата на клиент, если нужно.
|
||||||
|
// Например, для передачи статистики о количестве открытых окон и
|
||||||
|
// возврате признака дальнейшей передачи статистики с клиента на сервер.
|
||||||
|
//
|
||||||
|
// Для получения данных клиента на сервере они должны быть заполнены в параметре Параметры процедуры
|
||||||
|
// ОбщегоНазначенияКлиентПереопределяемый.ПередПериодическойОтправкойДанныхКлиентаНаСервер.
|
||||||
|
//
|
||||||
|
// Для возврата данных с сервера на клиент заполните параметр Результаты,
|
||||||
|
// который затем будет передан в процедуру
|
||||||
|
// ОбщегоНазначенияКлиентПереопределяемый.ПослеПериодическогоПолученияДанныхКлиентаНаСервере.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Параметры - Соответствие из КлючИЗначение:
|
||||||
|
// * Ключ - Строка - имя параметра, полученного с клиента.
|
||||||
|
// * Значение - Произвольный - значение параметра, полученного с клиента.
|
||||||
|
// Результаты - Соответствие из КлючИЗначение:
|
||||||
|
// * Ключ - Строка - имя параметра, возвращаемого на клиент.
|
||||||
|
// * Значение - Произвольный - значение параметра, возвращаемого на клиент.
|
||||||
|
//
|
||||||
|
Процедура ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты) Экспорт
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Обработчики отправки и получения данных для обмена в распределенной информационной базе.
|
// Обработчики отправки и получения данных для обмена в распределенной информационной базе.
|
||||||
|
|
||||||
|
|||||||
@@ -220,7 +220,7 @@
|
|||||||
|
|
||||||
#Область ОповещениеПользователя
|
#Область ОповещениеПользователя
|
||||||
|
|
||||||
Процедура СообщитьПользователю(
|
Функция СообщениеПользователю(
|
||||||
Знач ТекстСообщенияПользователю,
|
Знач ТекстСообщенияПользователю,
|
||||||
Знач КлючДанных,
|
Знач КлючДанных,
|
||||||
Знач Поле,
|
Знач Поле,
|
||||||
@@ -242,11 +242,11 @@
|
|||||||
Сообщение.ПутьКДанным = ПутьКДанным;
|
Сообщение.ПутьКДанным = ПутьКДанным;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Сообщение.Сообщить();
|
|
||||||
|
|
||||||
Отказ = Истина;
|
Отказ = Истина;
|
||||||
|
|
||||||
КонецПроцедуры
|
Возврат Сообщение;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
|
|||||||
@@ -1959,13 +1959,6 @@
|
|||||||
Константы.УдалитьНастройкиВходаПользователей.Установить(Новый ХранилищеЗначения(Неопределено));
|
Константы.УдалитьНастройкиВходаПользователей.Установить(Новый ХранилищеЗначения(Неопределено));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Настройки.Пользователи.ПросрочкаРаботыВПрограммеДоЗапрещенияВхода)
|
|
||||||
Или ЗначениеЗаполнено(Настройки.ВнешниеПользователи.ПросрочкаРаботыВПрограммеДоЗапрещенияВхода) Тогда
|
|
||||||
|
|
||||||
ПользователиСлужебный.ИзменитьЗаданиеКонтрольАктивностиПользователей(Истина);
|
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
УстановитьПривилегированныйРежим(Ложь);
|
УстановитьПривилегированныйРежим(Ложь);
|
||||||
|
|||||||
@@ -516,6 +516,36 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
// Возвращает недоступные роли для разделенных пользователей или внешних пользователей
|
||||||
|
// с учетом прав текущего пользователя и режима работы (локальный или модель сервиса).
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// ДляВнешнихПользователей - Булево - если истина, значит для внешних пользователей.
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие из КлючИЗначение:
|
||||||
|
// * Ключ - Строка - имя роли.
|
||||||
|
// * Значение - Булево - Истина.
|
||||||
|
//
|
||||||
|
Функция НедоступныеРолиПоТипуПользователя(ДляВнешнихПользователей) Экспорт
|
||||||
|
|
||||||
|
Если ДляВнешнихПользователей Тогда
|
||||||
|
НазначениеРолейПользователя = "ДляВнешнихПользователей";
|
||||||
|
|
||||||
|
ИначеЕсли Не ОбщегоНазначения.РазделениеВключено()
|
||||||
|
И Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
|
||||||
|
|
||||||
|
// Пользователь с ролью АдминистраторСистемы в локальном режиме работы
|
||||||
|
// может выдавать административные права.
|
||||||
|
НазначениеРолейПользователя = "ДляАдминистраторов";
|
||||||
|
Иначе
|
||||||
|
НазначениеРолейПользователя = "ДляПользователей";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат ПользователиСлужебныйПовтИсп.НедоступныеРоли(НазначениеРолейПользователя);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
// Возвращает свойства пользователя для пользователя ИБ с пустым именем.
|
// Возвращает свойства пользователя для пользователя ИБ с пустым именем.
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
@@ -980,6 +1010,14 @@
|
|||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Результат.ИдентификаторПользователяИБ) Тогда
|
||||||
|
ПользовательСсылка = ?(ТипЗнч(Пользователь) = Тип("СправочникОбъект.Пользователи"),
|
||||||
|
Пользователь.Ссылка, Пользователь);
|
||||||
|
Если ПользовательСсылка = Пользователи.СсылкаНеуказанногоПользователя() Тогда
|
||||||
|
Результат.ИдентификаторПользователяИБ = ПользователиИнформационнойБазы.НайтиПоИмени("").УникальныйИдентификатор;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Результат;
|
Возврат Результат;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@@ -1094,46 +1132,68 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
// См. СтандартныеПодсистемыВызовСервера.ПриВыполненииСтандартныхПериодическихПроверокНаСервере.
|
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений
|
||||||
Процедура ПриВыполненииСтандартныхПериодическихПроверокНаСервере(Параметры) Экспорт
|
Процедура ПриДобавленииСерверныхОповещений(Оповещения) Экспорт
|
||||||
|
|
||||||
Параметры.Вставить("ВходВПрограммуЗапрещен", Ложь);
|
Если ОбщегоНазначения.РазделениеВключено()
|
||||||
|
И ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
|
||||||
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
|
|
||||||
Возврат;
|
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
|
||||||
|
Если МодульРаботаВМоделиСервиса.СеансЗапущенБезРазделителей() Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
// Проверка, что срок действия учетной записи истек и нужно завершить работу.
|
Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(
|
||||||
|
"СтандартныеПодсистемы.Пользователи.ИзменениеРолейПользователяИлиБлокировка");
|
||||||
|
|
||||||
УстановитьПривилегированныйРежим(Истина);
|
Оповещение.ИмяМодуляОтправки = "ПользователиСлужебный";
|
||||||
|
Оповещение.ИмяМодуляПолучения = "ПользователиСлужебныйКлиент";
|
||||||
|
Оповещение.Параметры = ХешСуммаРолейПользователяИБ(
|
||||||
|
ПользователиИнформационнойБазы.ТекущийПользователь());
|
||||||
|
|
||||||
ОтключитьНеактивныхИПросроченныхПользователей(Истина);
|
Оповещения.Вставить(Оповещение.Имя, Оповещение);
|
||||||
|
|
||||||
ТребуетсяСменитьПароль(); // Обновление даты последней активности.
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// См. СтандартныеПодсистемыСервер.ПриОтправкеСерверногоОповещения
|
||||||
|
Процедура ПриОтправкеСерверногоОповещения(ИмяОповещения, ВариантыПараметров) Экспорт
|
||||||
|
|
||||||
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(
|
ОбновитьДатуПоследнейАктивностиПользователей(ВариантыПараметров);
|
||||||
ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор);
|
ОтключитьНеактивныхИПросроченныхПользователей();
|
||||||
|
|
||||||
Если ПользовательИБ = Неопределено Тогда
|
АдресатыБлокировки = Новый Соответствие;
|
||||||
|
АдресатыИзмененияРолей = Новый Соответствие;
|
||||||
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
|
|
||||||
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
|
Для Каждого ВариантПараметров Из ВариантыПараметров Цикл
|
||||||
СеансЗапущенБезРазделителей = МодульРаботаВМоделиСервиса.СеансЗапущенБезРазделителей();
|
Для Каждого Адресат Из ВариантПараметров.Адресаты Цикл
|
||||||
Иначе
|
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Адресат.Ключ);
|
||||||
СеансЗапущенБезРазделителей = Истина;
|
Если ПользовательИБ = Неопределено
|
||||||
КонецЕсли;
|
Или ПользовательИБ.АутентификацияСтандартная = Ложь
|
||||||
|
И ПользовательИБ.АутентификацияОС = Ложь
|
||||||
Если Не ОбщегоНазначения.РазделениеВключено()
|
И ПользовательИБ.АутентификацияOpenID = Ложь Тогда
|
||||||
Или Не СеансЗапущенБезРазделителей Тогда
|
|
||||||
|
|
||||||
Параметры.ВходВПрограммуЗапрещен = Истина;
|
АдресатыБлокировки.Вставить(Адресат.Ключ, Адресат.Значение);
|
||||||
КонецЕсли;
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
ИначеЕсли ПользовательИБ.АутентификацияСтандартная = Ложь
|
НоваяХешСумма = ХешСуммаРолейПользователяИБ(ПользовательИБ);
|
||||||
И ПользовательИБ.АутентификацияОС = Ложь
|
Если ВариантПараметров.Параметры <> НоваяХешСумма Тогда
|
||||||
И ПользовательИБ.АутентификацияOpenID = Ложь Тогда
|
ДатаНапомнитьЗавтра = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(
|
||||||
|
"КонтрольИзмененияРолейПользователяИБ", "ДатаНапомнитьЗавтра",,, ПользовательИБ.Имя);
|
||||||
|
Если ТипЗнч(ДатаНапомнитьЗавтра) = Тип("Дата")
|
||||||
|
И ТекущаяДатаСеанса() < ДатаНапомнитьЗавтра Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
АдресатыИзмененияРолей.Вставить(Адресат.Ключ, Адресат.Значение);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
Параметры.ВходВПрограммуЗапрещен = Истина;
|
Если ЗначениеЗаполнено(АдресатыБлокировки) Тогда
|
||||||
|
СерверныеОповещения.ОтправитьСерверноеОповещение(ИмяОповещения, "ВходВПрограммуЗапрещен", АдресатыБлокировки);
|
||||||
|
КонецЕсли;
|
||||||
|
Если ЗначениеЗаполнено(АдресатыИзмененияРолей) Тогда
|
||||||
|
СерверныеОповещения.ОтправитьСерверноеОповещение(ИмяОповещения, "РолиИзменены", АдресатыИзмененияРолей);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
@@ -1532,15 +1592,6 @@
|
|||||||
МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.СведенияОПользователях);
|
МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.СведенияОПользователях);
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
// Обработчики событий подсистемы ТехнологияСервиса.ОчередьЗаданий.
|
|
||||||
|
|
||||||
// См. ОчередьЗаданийПереопределяемый.ПриПолученииСпискаШаблонов
|
|
||||||
Процедура ПриПолученииСпискаШаблонов(ШаблоныЗаданий) Экспорт
|
|
||||||
|
|
||||||
ШаблоныЗаданий.Добавить(Метаданные.РегламентныеЗадания.КонтрольАктивностиПользователей.Имя);
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
// Обработчики событий подсистемы СтандартныеПодсистемы.ПодключаемыеКоманды.
|
// Обработчики событий подсистемы СтандартныеПодсистемы.ПодключаемыеКоманды.
|
||||||
|
|
||||||
// См. СозданиеНаОснованииПереопределяемый.ПриОпределенииОбъектовСКомандамиСозданияНаОсновании.
|
// См. СозданиеНаОснованииПереопределяемый.ПриОпределенииОбъектовСКомандамиСозданияНаОсновании.
|
||||||
@@ -1633,67 +1684,6 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Использование регламентных заданий.
|
|
||||||
|
|
||||||
// Обработчик регламентного задания КонтрольАктивностиПользователей.
|
|
||||||
Процедура КонтрольАктивностиПользователей() Экспорт
|
|
||||||
|
|
||||||
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(
|
|
||||||
Метаданные.РегламентныеЗадания.КонтрольАктивностиПользователей);
|
|
||||||
|
|
||||||
ОтключитьНеактивныхИПросроченныхПользователей();
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
// Изменяет использование регламентного задания КонтрольАктивностиПользователей.
|
|
||||||
//
|
|
||||||
// Параметры:
|
|
||||||
// Использование - Булево - Истина, если задание нужно включить, иначе Ложь.
|
|
||||||
//
|
|
||||||
Процедура ИзменитьЗаданиеКонтрольАктивностиПользователей(Использование) Экспорт
|
|
||||||
|
|
||||||
Если ОбщегоНазначения.РазделениеВключено() Тогда
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
РегламентныеЗаданияСервер.УстановитьИспользованиеПредопределенногоРегламентногоЗадания(
|
|
||||||
Метаданные.РегламентныеЗадания.КонтрольАктивностиПользователей, Использование);
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
// Вызывается при записи пользователя или внешнего пользователя, проверят срок действия.
|
|
||||||
Процедура ВключитьЗаданиеКонтрольАктивностиПользователейПриНеобходимости(Пользователь) Экспорт
|
|
||||||
|
|
||||||
Если ОбщегоНазначения.РазделениеВключено() Тогда
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
УстановитьПривилегированныйРежим(Истина);
|
|
||||||
|
|
||||||
Если Не ПользователиСлужебныйПовтИсп.Настройки().ОбщиеНастройкиВхода Тогда
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Запрос = Новый Запрос;
|
|
||||||
Запрос.УстановитьПараметр("Пользователь", Пользователь);
|
|
||||||
Запрос.УстановитьПараметр("ПустаяДата", '00010101');
|
|
||||||
Запрос.Текст =
|
|
||||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
|
||||||
| ИСТИНА КАК ЗначениеИстина
|
|
||||||
|ИЗ
|
|
||||||
| РегистрСведений.СведенияОПользователях КАК СведенияОПользователях
|
|
||||||
|ГДЕ
|
|
||||||
| СведенияОПользователях.Пользователь В(&Пользователь)
|
|
||||||
| И СведенияОПользователях.СрокДействия <> &ПустаяДата
|
|
||||||
| И СведенияОПользователях.ДатаАвтоматическогоЗапрещенияВхода = &ПустаяДата";
|
|
||||||
|
|
||||||
Если Не Запрос.Выполнить().Пустой() Тогда
|
|
||||||
ИзменитьЗаданиеКонтрольАктивностиПользователей(Истина);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Процедуры и функции работы с настройками входа пользователей.
|
// Процедуры и функции работы с настройками входа пользователей.
|
||||||
|
|
||||||
@@ -4994,6 +4984,21 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
// Параметры:
|
||||||
|
// ПользовательИБ - ПользовательИнформационнойБазы
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка
|
||||||
|
//
|
||||||
|
Функция ХешСуммаРолейПользователяИБ(ПользовательИБ)
|
||||||
|
|
||||||
|
Хеширование = Новый ХешированиеДанных(ХешФункция.SHA256);
|
||||||
|
Хеширование.Добавить(ЗначениеВСтрокуВнутр(ПользовательИБ.Роли));
|
||||||
|
|
||||||
|
Возврат Base64Строка(Хеширование.ХешСумма);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Универсальные процедуры и функции.
|
// Универсальные процедуры и функции.
|
||||||
|
|
||||||
@@ -6434,7 +6439,7 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
|
||||||
НедоступныеРоли = ПользователиСлужебныйПовтИсп.НедоступныеРолиПоТипуПользователя(ЭтоВнешнийПользователь);
|
НедоступныеРоли = НедоступныеРолиПоТипуПользователя(ЭтоВнешнийПользователь);
|
||||||
|
|
||||||
РолиДляПроверки = Новый ТаблицаЗначений;
|
РолиДляПроверки = Новый ТаблицаЗначений;
|
||||||
РолиДляПроверки.Колонки.Добавить("Роль", Новый ОписаниеТипов("ОбъектМетаданных"));
|
РолиДляПроверки.Колонки.Добавить("Роль", Новый ОписаниеТипов("ОбъектМетаданных"));
|
||||||
@@ -6968,11 +6973,11 @@
|
|||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Для процедур:
|
// Процедуры обработки настроек входа.
|
||||||
// - ПриДобавленииПараметровРаботыКлиентаПриЗапуске,
|
|
||||||
// - ПриВыполненииСтандартныхПериодическихПроверокНаСервере.
|
|
||||||
|
|
||||||
|
// Для функции АвторизоватьТекущегоПользователяПриВходе.
|
||||||
// Обновляет дату последней активности и проверяет необходимость смены пароля.
|
// Обновляет дату последней активности и проверяет необходимость смены пароля.
|
||||||
|
//
|
||||||
Функция ТребуетсяСменитьПароль(ОписаниеОшибки = "", ПриЗапуске = Ложь, РегистрироватьВЖурнале = Истина)
|
Функция ТребуетсяСменитьПароль(ОписаниеОшибки = "", ПриЗапуске = Ложь, РегистрироватьВЖурнале = Истина)
|
||||||
|
|
||||||
ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
|
ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
|
||||||
@@ -7110,6 +7115,79 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
// Для процедуры ПриОтправкеСерверногоОповещения.
|
||||||
|
Процедура ОбновитьДатуПоследнейАктивностиПользователей(Параметры)
|
||||||
|
|
||||||
|
ИдентификаторыПользователейИБ = Новый Массив;
|
||||||
|
Для Каждого ПараметрПроверки Из Параметры Цикл
|
||||||
|
Для Каждого Адресат Из ПараметрПроверки.Адресаты Цикл
|
||||||
|
ИдентификаторыПользователейИБ.Добавить(Адресат.Ключ);
|
||||||
|
КонецЦикла;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
НачалоДняТекущейДатыСеанса = НачалоДня(ТекущаяДатаСеанса());
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.УстановитьПараметр("НачалоДняТекущейДатыСеанса", НачалоДняТекущейДатыСеанса);
|
||||||
|
Запрос.УстановитьПараметр("ИдентификаторыПользователейИБ", ИдентификаторыПользователейИБ);
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ
|
||||||
|
| СведенияОПользователях.Пользователь КАК Пользователь
|
||||||
|
|ИЗ
|
||||||
|
| РегистрСведений.СведенияОПользователях КАК СведенияОПользователях
|
||||||
|
|ГДЕ
|
||||||
|
| СведенияОПользователях.ДатаПоследнейАктивности < &НачалоДняТекущейДатыСеанса
|
||||||
|
| И СведенияОПользователях.Пользователь.ИдентификаторПользователяИБ В(&ИдентификаторыПользователейИБ)";
|
||||||
|
|
||||||
|
Выборка = Запрос.Выполнить().Выбрать();
|
||||||
|
|
||||||
|
Пока Выборка.Следующий() Цикл
|
||||||
|
ТекущийПользователь = Выборка.Пользователь;
|
||||||
|
|
||||||
|
Блокировка = Новый БлокировкаДанных;
|
||||||
|
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.СведенияОПользователях");
|
||||||
|
ЭлементБлокировки.УстановитьЗначение("Пользователь", ТекущийПользователь);
|
||||||
|
НачатьТранзакцию();
|
||||||
|
Попытка
|
||||||
|
Блокировка.Заблокировать();
|
||||||
|
НаборЗаписей = РегистрыСведений.СведенияОПользователях.СоздатьНаборЗаписей();
|
||||||
|
НаборЗаписей.Отбор.Пользователь.Установить(ТекущийПользователь);
|
||||||
|
НаборЗаписей.Прочитать();
|
||||||
|
Если НаборЗаписей.Количество() = 1 Тогда
|
||||||
|
СведенияОПользователе = НаборЗаписей[0];
|
||||||
|
Если СведенияОПользователе.ДатаПоследнейАктивности < НачалоДняТекущейДатыСеанса Тогда
|
||||||
|
СведенияОПользователе.ДатаПоследнейАктивности = НачалоДняТекущейДатыСеанса;
|
||||||
|
|
||||||
|
Если ОбщегоНазначения.РазделениеВключено()
|
||||||
|
И ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.ПользователиСервиса") Тогда
|
||||||
|
|
||||||
|
МодульПользователиСервиса = ОбщегоНазначения.ОбщийМодуль("ПользователиСервиса");
|
||||||
|
МодульПользователиСервиса.ОбновитьАктивностьПользователяСервиса(
|
||||||
|
ТекущийПользователь,
|
||||||
|
НачалоДняТекущейДатыСеанса);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
НаборЗаписей.Записать();
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
ЗафиксироватьТранзакцию();
|
||||||
|
Исключение
|
||||||
|
ОтменитьТранзакцию();
|
||||||
|
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||||
|
ШаблонТекстаОшибки = ШаблонТекстаОшибкиЗаписиСведенийОТекущемПользователе();
|
||||||
|
ЗаписьЖурналаРегистрации(
|
||||||
|
НСтр("ru = 'Пользователи.Ошибка обновления даты последней активности'",
|
||||||
|
ОбщегоНазначения.КодОсновногоЯзыка()),
|
||||||
|
УровеньЖурналаРегистрации.Ошибка,
|
||||||
|
Метаданные.НайтиПоТипу(ТипЗнч(ТекущийПользователь)),
|
||||||
|
ТекущийПользователь,
|
||||||
|
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстаОшибки,
|
||||||
|
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)));
|
||||||
|
КонецПопытки;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
// Для функции ОбработатьНовыйПароль.
|
// Для функции ОбработатьНовыйПароль.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
@@ -7677,9 +7755,6 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Для процедуры КонтрольАктивностиПользователей.
|
|
||||||
|
|
||||||
Процедура ОтключитьНеактивныхИПросроченныхПользователей(ТолькоДляАвторизованногоПользователя = Ложь,
|
Процедура ОтключитьНеактивныхИПросроченныхПользователей(ТолькоДляАвторизованногоПользователя = Ложь,
|
||||||
ОписаниеОшибки = "", РегистрироватьВЖурнале = Истина)
|
ОписаниеОшибки = "", РегистрироватьВЖурнале = Истина)
|
||||||
|
|
||||||
@@ -7690,10 +7765,9 @@
|
|||||||
УстановитьПривилегированныйРежим(Истина);
|
УстановитьПривилегированныйРежим(Истина);
|
||||||
|
|
||||||
Настройки = ПользователиСлужебныйПовтИсп.Настройки();
|
Настройки = ПользователиСлужебныйПовтИсп.Настройки();
|
||||||
Если Не Настройки.ОбщиеНастройкиВхода Тогда
|
Если Не Настройки.ОбщиеНастройкиВхода
|
||||||
Если Не ТолькоДляАвторизованногоПользователя Тогда
|
Или Не ЗначениеЗаполнено(Настройки.Пользователи.ПросрочкаРаботыВПрограммеДоЗапрещенияВхода)
|
||||||
ИзменитьЗаданиеКонтрольАктивностиПользователей(Ложь);
|
И Не ЗначениеЗаполнено(Настройки.ВнешниеПользователи.ПросрочкаРаботыВПрограммеДоЗапрещенияВхода) Тогда
|
||||||
КонецЕсли;
|
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
@@ -7889,32 +7963,6 @@
|
|||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Если ТолькоДляАвторизованногоПользователя Тогда
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если ИнформацияОбОшибке <> Неопределено
|
|
||||||
Или ЗначениеЗаполнено(Настройки.Пользователи.ПросрочкаРаботыВПрограммеДоЗапрещенияВхода)
|
|
||||||
Или ЗначениеЗаполнено(Настройки.ВнешниеПользователи.ПросрочкаРаботыВПрограммеДоЗапрещенияВхода) Тогда
|
|
||||||
// Для проверки просрочки работы в программе, задание выключить нельзя.
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Запрос = Новый Запрос;
|
|
||||||
Запрос.УстановитьПараметр("ПустаяДата", '00010101');
|
|
||||||
Запрос.Текст =
|
|
||||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
|
||||||
| ИСТИНА КАК ЗначениеИстина
|
|
||||||
|ИЗ
|
|
||||||
| РегистрСведений.СведенияОПользователях КАК СведенияОПользователях
|
|
||||||
|ГДЕ
|
|
||||||
| СведенияОПользователях.СрокДействия <> &ПустаяДата
|
|
||||||
| И СведенияОПользователях.ДатаАвтоматическогоЗапрещенияВхода = &ПустаяДата";
|
|
||||||
|
|
||||||
Если Запрос.Выполнить().Пустой() Тогда
|
|
||||||
ИзменитьЗаданиеКонтрольАктивностиПользователей(Ложь);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПроверитьВходВПрограммуРазрешен(ОшибкаАвторизации)
|
Процедура ПроверитьВходВПрограммуРазрешен(ОшибкаАвторизации)
|
||||||
|
|||||||
@@ -165,17 +165,22 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
// См. СтандартныеПодсистемыКлиент.ПриВыполненииСтандартныхПериодическихПроверок.
|
// См. СтандартныеПодсистемыКлиент.ПриПолученииСерверногоОповещения.
|
||||||
Процедура ПриВыполненииСтандартныхПериодическихПроверок(Параметры, ОбработкаПродолжения) Экспорт
|
Процедура ПриПолученииСерверногоОповещения(ИмяОповещения, Результат) Экспорт
|
||||||
|
|
||||||
// Проверяет, что срок действия учетной записи истек и нужно завершить работу.
|
Если Результат = "ВходВПрограммуЗапрещен" Тогда
|
||||||
Если Не Параметры.ВходВПрограммуЗапрещен Тогда
|
ОткрытьФорму("ОбщаяФорма.ВходВПрограммуЗапрещен");
|
||||||
ВыполнитьОбработкуОповещения(ОбработкаПродолжения);
|
|
||||||
Возврат;
|
ИначеЕсли Результат = "РолиИзменены" Тогда
|
||||||
|
ПоказатьОповещениеПользователя(
|
||||||
|
НСтр("ru = 'Права доступа обновлены'"),
|
||||||
|
"e1cib/app/ОбщаяФорма.КонтрольИзмененияРолейПользователяИБ",
|
||||||
|
НСтр("ru = 'Перезапустите программу, чтобы они вступили в силу.'"),
|
||||||
|
БиблиотекаКартинок.Предупреждение32,
|
||||||
|
СтатусОповещенияПользователя.Важное,
|
||||||
|
"КонтрольИзмененияРолейПользователяИБ");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ОткрытьФорму("ОбщаяФорма.ВходВПрограммуЗапрещен");
|
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|||||||
@@ -87,36 +87,6 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Возвращает недоступные роли для разделенных пользователей или внешних пользователей
|
|
||||||
// с учетом прав текущего пользователя и режима работы (локальный или модель сервиса).
|
|
||||||
//
|
|
||||||
// Параметры:
|
|
||||||
// ДляВнешнихПользователей - Булево - если истина, значит для внешних пользователей.
|
|
||||||
//
|
|
||||||
// Возвращаемое значение:
|
|
||||||
// Соответствие из КлючИЗначение:
|
|
||||||
// * Ключ - Строка - имя роли.
|
|
||||||
// * Значение - Булево - Истина.
|
|
||||||
//
|
|
||||||
Функция НедоступныеРолиПоТипуПользователя(ДляВнешнихПользователей) Экспорт
|
|
||||||
|
|
||||||
Если ДляВнешнихПользователей Тогда
|
|
||||||
НазначениеРолейПользователя = "ДляВнешнихПользователей";
|
|
||||||
|
|
||||||
ИначеЕсли Не ОбщегоНазначения.РазделениеВключено()
|
|
||||||
И Пользователи.ЭтоПолноправныйПользователь(, Истина, Ложь) Тогда
|
|
||||||
|
|
||||||
// Пользователь с ролью АдминистраторСистемы в локальном режиме работы
|
|
||||||
// может выдавать административные права.
|
|
||||||
НазначениеРолейПользователя = "ДляАдминистраторов";
|
|
||||||
Иначе
|
|
||||||
НазначениеРолейПользователя = "ДляПользователей";
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Возврат ПользователиСлужебныйПовтИсп.НедоступныеРоли(НазначениеРолейПользователя);
|
|
||||||
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
// Проверяет доступность восстановления пароля пользователя.
|
// Проверяет доступность восстановления пароля пользователя.
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
|
|||||||
@@ -826,7 +826,7 @@
|
|||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ОчиститьУдаленныеФайлы() Экспорт
|
Процедура ОчиститьУдаленныеФайлы() Экспорт
|
||||||
Если НЕ (ХранитьФайлыВТомахНаДиске()) Тогда
|
Если НЕ ХранитьФайлыВТомахНаДиске() Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
|||||||
@@ -5994,8 +5994,7 @@
|
|||||||
|
|
||||||
Функция ТекстЗапросаДляСинхронизацииФайлов(ВладелецФайла, НастройкаСинхронизации, МассивИсключений, ЭлементИсключение)
|
Функция ТекстЗапросаДляСинхронизацииФайлов(ВладелецФайла, НастройкаСинхронизации, МассивИсключений, ЭлементИсключение)
|
||||||
|
|
||||||
ТипОбъекта = ВладелецФайла;
|
ПредставлениеТипаВладельца = ОбщегоНазначения.ВидОбъектаПоТипу(ТипЗнч(ВладелецФайла.ЗначениеПустойСсылки));
|
||||||
ПредставлениеТипаВладельца = ОбщегоНазначения.ВидОбъектаПоТипу(ТипЗнч(ТипОбъекта.ЗначениеПустойСсылки));
|
|
||||||
ПолноеИмяСправочникаФайлов = НастройкаСинхронизации.ТипВладельцаФайла.ПолноеИмя;
|
ПолноеИмяСправочникаФайлов = НастройкаСинхронизации.ТипВладельцаФайла.ПолноеИмя;
|
||||||
МетаданныеОбъектаФайлов = Метаданные.НайтиПоПолномуИмени(ПолноеИмяСправочникаФайлов);
|
МетаданныеОбъектаФайлов = Метаданные.НайтиПоПолномуИмени(ПолноеИмяСправочникаФайлов);
|
||||||
ЕстьВозможностьХранитьВерсии = ОбщегоНазначения.ЕстьРеквизитОбъекта("ТекущаяВерсия", МетаданныеОбъектаФайлов);
|
ЕстьВозможностьХранитьВерсии = ОбщегоНазначения.ЕстьРеквизитОбъекта("ТекущаяВерсия", МетаданныеОбъектаФайлов);
|
||||||
@@ -6025,12 +6024,12 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ
|
ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ
|
||||||
| СправочникПапок.Ссылка,";// @query-part
|
| СправочникПапок.Ссылка,"; // @query-part
|
||||||
|
|
||||||
ДобавитьДоступныеПоляОтбора(ТекстЗапроса, ТипОбъекта);
|
ДобавитьДоступныеПоляОтбора(ТекстЗапроса, ВладелецФайла);
|
||||||
|
|
||||||
ТекстЗапроса = ТекстЗапроса + "
|
ТекстЗапроса = ТекстЗапроса + "
|
||||||
| СправочникФайлов.Ссылка КАК ФайлСсылка,";
|
| СправочникФайлов.Ссылка КАК ФайлСсылка,"; // @query-part
|
||||||
|
|
||||||
Если ВозможностьСоздаватьГруппы Тогда
|
Если ВозможностьСоздаватьГруппы Тогда
|
||||||
|
|
||||||
@@ -6042,10 +6041,10 @@
|
|||||||
| КОНЕЦ КАК Наименование,
|
| КОНЕЦ КАК Наименование,
|
||||||
| СправочникФайлов.ПометкаУдаления КАК ПометкаУдаления,
|
| СправочникФайлов.ПометкаУдаления КАК ПометкаУдаления,
|
||||||
| СправочникФайлов.ВладелецФайла КАК Родитель,
|
| СправочникФайлов.ВладелецФайла КАК Родитель,
|
||||||
| ЛОЖЬ КАК ЭтоПапка,";
|
| ЛОЖЬ КАК ЭтоПапка,"; // @query-part
|
||||||
|
|
||||||
ОтборПоПапкам = "(СправочникФайлов.ЭтоГруппа
|
ОтборПоПапкам = "(СправочникФайлов.ЭтоГруппа
|
||||||
| ИЛИ (НЕ СправочникФайлов.ЭтоГруппа И СправочникФайлов.ПодписанЭП = ЛОЖЬ И СправочникФайлов.Зашифрован = ЛОЖЬ)) ";
|
| ИЛИ (НЕ СправочникФайлов.ЭтоГруппа И СправочникФайлов.ПодписанЭП = ЛОЖЬ И СправочникФайлов.Зашифрован = ЛОЖЬ)) "; // @query-part
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
@@ -6053,9 +6052,9 @@
|
|||||||
| СправочникФайлов.Наименование + ""."" + СправочникФайлов.Расширение КАК Наименование,
|
| СправочникФайлов.Наименование + ""."" + СправочникФайлов.Расширение КАК Наименование,
|
||||||
| СправочникФайлов.ПометкаУдаления КАК ПометкаУдаления,
|
| СправочникФайлов.ПометкаУдаления КАК ПометкаУдаления,
|
||||||
| СправочникФайлов.ВладелецФайла КАК Родитель,
|
| СправочникФайлов.ВладелецФайла КАК Родитель,
|
||||||
| ЛОЖЬ КАК ЭтоПапка,";
|
| ЛОЖЬ КАК ЭтоПапка,"; // @query-part
|
||||||
|
|
||||||
ОтборПоПапкам = " СправочникФайлов.ПодписанЭП = ЛОЖЬ И СправочникФайлов.Зашифрован = ЛОЖЬ ";
|
ОтборПоПапкам = " СправочникФайлов.ПодписанЭП = ЛОЖЬ И СправочникФайлов.Зашифрован = ЛОЖЬ "; // @query-part
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
@@ -6087,21 +6086,21 @@
|
|||||||
|
|
||||||
Если МассивИсключений.Количество() > 0 Тогда
|
Если МассивИсключений.Количество() > 0 Тогда
|
||||||
ТекстЗапроса = ТекстЗапроса + "
|
ТекстЗапроса = ТекстЗапроса + "
|
||||||
| И НЕ СправочникПапок.Ссылка В ИЕРАРХИИ (&МассивИсключений)";
|
| И НЕ СправочникПапок.Ссылка В ИЕРАРХИИ (&МассивИсключений)"; // @query-part
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЭлементИсключение <> Неопределено Тогда
|
Если ЭлементИсключение <> Неопределено Тогда
|
||||||
ТекстЗапроса = ТекстЗапроса + "
|
ТекстЗапроса = ТекстЗапроса + "
|
||||||
| И СправочникПапок.Ссылка В ИЕРАРХИИ (&ЭлементИсключение)";
|
| И СправочникПапок.Ссылка В ИЕРАРХИИ (&ЭлементИсключение)"; // @query-part
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ТекстЗапроса = ТекстЗапроса + "
|
ТекстЗапроса = ТекстЗапроса + "
|
||||||
|ОБЪЕДИНИТЬ ВСЕ
|
|ОБЪЕДИНИТЬ ВСЕ
|
||||||
|
|
|
|
||||||
|ВЫБРАТЬ
|
|ВЫБРАТЬ
|
||||||
| СправочникПапок.Ссылка,";// @query-part
|
| СправочникПапок.Ссылка,"; // @query-part
|
||||||
|
|
||||||
ДобавитьДоступныеПоляОтбора(ТекстЗапроса, ТипОбъекта);
|
ДобавитьДоступныеПоляОтбора(ТекстЗапроса, ВладелецФайла);
|
||||||
|
|
||||||
ТекстЗапроса = ТекстЗапроса + "
|
ТекстЗапроса = ТекстЗапроса + "
|
||||||
| СправочникПапок.Ссылка,
|
| СправочникПапок.Ссылка,
|
||||||
@@ -6169,25 +6168,31 @@
|
|||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ТипОбъекта - ОбъектМетаданныхСправочник
|
// ВладелецФайла - ОпределяемыйТип.ВладелецПрисоединенныхФайлов
|
||||||
//
|
//
|
||||||
Процедура ДобавитьДоступныеПоляОтбора(ТекстЗапроса, ТипОбъекта)
|
Процедура ДобавитьДоступныеПоляОтбора(ТекстЗапроса, ВладелецФайла)
|
||||||
|
|
||||||
ВсеСправочники = Справочники.ТипВсеСсылки();
|
ВсеСправочники = Справочники.ТипВсеСсылки();
|
||||||
ВсеДокументы = Документы.ТипВсеСсылки();
|
ВсеДокументы = Документы.ТипВсеСсылки();
|
||||||
|
|
||||||
Если ВсеСправочники.СодержитТип(ТипЗнч(ТипОбъекта.ЗначениеПустойСсылки)) Тогда
|
Если ВсеСправочники.СодержитТип(ТипЗнч(ВладелецФайла.ЗначениеПустойСсылки)) Тогда
|
||||||
Справочник = Метаданные.Справочники[ТипОбъекта.Имя];
|
Справочник = Метаданные.Справочники[ВладелецФайла.Имя];
|
||||||
|
ШаблонЗапроса = "СправочникПапок.%1 КАК %1,"; // @query-part
|
||||||
Для Каждого Реквизит Из Справочник.Реквизиты Цикл
|
Для Каждого Реквизит Из Справочник.Реквизиты Цикл
|
||||||
ТекстЗапроса = ТекстЗапроса + Символы.ПС + "СправочникПапок." + Реквизит.Имя + " КАК " + Реквизит.Имя +",";
|
ТекстЗапроса = ТекстЗапроса + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||||
|
ШаблонЗапроса, Реквизит.Имя);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
ИначеЕсли ВсеДокументы.СодержитТип(ТипЗнч(ТипОбъекта.ЗначениеПустойСсылки)) Тогда
|
ИначеЕсли ВсеДокументы.СодержитТип(ТипЗнч(ВладелецФайла.ЗначениеПустойСсылки)) Тогда
|
||||||
Документ = Метаданные.Документы[ТипОбъекта.Имя];
|
Документ = Метаданные.Документы[ВладелецФайла.Имя];
|
||||||
|
ШаблонЗапроса = "СправочникПапок.%1,"; // @query-part
|
||||||
|
ШаблонЗапросаДата = "РАЗНОСТЬДАТ(СправочникПапок.%1, &ТекущаяДата, ДЕНЬ) Как ДнейДоУдаленияОт%1,"; // @query-part
|
||||||
Для Каждого Реквизит Из Документ.Реквизиты Цикл
|
Для Каждого Реквизит Из Документ.Реквизиты Цикл
|
||||||
Если Реквизит.Тип.СодержитТип(Тип("Дата")) Тогда
|
Если Реквизит.Тип.СодержитТип(Тип("Дата")) Тогда
|
||||||
ТекстЗапроса = ТекстЗапроса + Символы.ПС + "РАЗНОСТЬДАТ(" + Реквизит.Имя + ", &ТекущаяДата, ДЕНЬ) Как ДнейДоУдаленияОт" + Реквизит.Имя + ",";
|
ТекстЗапроса = ТекстЗапроса + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||||
|
ШаблонЗапросаДата, Реквизит.Имя);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
ТекстЗапроса = ТекстЗапроса + Символы.ПС + "СправочникПапок." + Реквизит.Имя + ",";
|
ТекстЗапроса = ТекстЗапроса + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||||
|
ШаблонЗапроса, Реквизит.Имя);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
|||||||
@@ -1118,11 +1118,12 @@
|
|||||||
// Рассылка - СправочникСсылка.РассылкиОтчетов
|
// Рассылка - СправочникСсылка.РассылкиОтчетов
|
||||||
// - Структура - элемент справочника, для которого необходимо сформировать
|
// - Структура - элемент справочника, для которого необходимо сформировать
|
||||||
// список получателей.
|
// список получателей.
|
||||||
|
// ПараметрыЖурнала - см. ПараметрыЖурнала
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - результат получения списка получателей рассылки:
|
// Соответствие из КлючИЗначение:
|
||||||
// * Получатели - см. РассылкаОтчетов.ВыполнитьРассылку
|
// * Ключ - СправочникСсылка
|
||||||
// * Ошибки - Строка - ошибки, которые возникли в процессе.
|
// * Значение - Строка - почтовые адреса с разделителями ";", например: "email@server.com; email2@server2.com".
|
||||||
//
|
//
|
||||||
Функция СформироватьСписокПолучателейРассылки(Рассылка, ПараметрыЖурнала = Неопределено) Экспорт
|
Функция СформироватьСписокПолучателейРассылки(Рассылка, ПараметрыЖурнала = Неопределено) Экспорт
|
||||||
|
|
||||||
|
|||||||
@@ -80,15 +80,25 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
// Позволяет определить свой обработчик формирования списка получателей.
|
// Позволяет переопределить список получателей рассылки отчетов.
|
||||||
|
// Если параметр СтандартнаяОбработка оставить в Истина, то список получателей формируется по правилам:
|
||||||
|
// - если рассылка личная, то в список получателей включается только автор рассылки;
|
||||||
|
// - если получатели рассылки - это иерархический справочник, и указан родительский элемент,
|
||||||
|
// то включаются все его дочерние элементы (кроме групп);
|
||||||
|
// - исключаются получатели, которые отмечены в списке как исключаемые, а также помеченные на удаление;
|
||||||
|
// - если получателями рассылки отчетов являются пользователи, то исключаются служебные и недействительные пользователи;
|
||||||
|
// - для получателей рассылки отчетов заполняются их почтовые адреса, соответствующие виду контактной информации
|
||||||
|
// ВидПочтовогоАдресаПолучателей параметра ПараметрыПолучателей.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ПараметрыПолучателей - Структура - параметры формирования получателей рассылки.
|
// ПараметрыПолучателей - СправочникСсылка.РассылкиОтчетов
|
||||||
// Запрос - Запрос - запрос, который будет использован, если значение параметра СтандартнаяОбработка останется Истина.
|
// - Структура - параметры формирования получателей рассылки.
|
||||||
// СтандартнаяОбработка - Булево - признак использования стандартных механизмов.
|
// Запрос - Запрос - запрос, который будет выполнен, если значение параметра СтандартнаяОбработка оставить в Истина.
|
||||||
// Результат - Соответствие из КлючИЗначение - получатели с их E-mail адресами:
|
// СтандартнаяОбработка - Булево - указать Ложь, если Результат требуется заполнить в этом обработчике.
|
||||||
// * Ключ - СправочникСсылка - получатель.
|
// Результат - Соответствие из КлючИЗначение - возвращаемое значение. Если СтандартнаяОбработка установлена в Истина,
|
||||||
// * Значение - Строка - набор E-mail адресов в строке с разделителями.
|
// то заполнить список получателей с их адресами:
|
||||||
|
// * Ключ - СправочникСсылка - получатель рассылки отчетов. Например, пользователь или контрагент.
|
||||||
|
// * Значение - Строка - почтовые адреса с разделителями ";", например: "email@server.com; email2@server2.com".
|
||||||
//
|
//
|
||||||
Процедура ПередФормированиемСпискаПолучателейРассылки(ПараметрыПолучателей, Запрос, СтандартнаяОбработка, Результат) Экспорт
|
Процедура ПередФормированиемСпискаПолучателейРассылки(ПараметрыПолучателей, Запрос, СтандартнаяОбработка, Результат) Экспорт
|
||||||
|
|
||||||
|
|||||||
@@ -859,12 +859,19 @@
|
|||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Идентификатор - УникальныйИдентификатор - идентификатор регламентного задания.
|
// Идентификатор - УникальныйИдентификатор - идентификатор регламентного задания.
|
||||||
|
// - ОбъектМетаданныхРегламентноеЗадание - перед добавления нового без дублей.
|
||||||
//
|
//
|
||||||
Процедура ЗаблокироватьРегламентноеЗадание(Идентификатор) Экспорт
|
Процедура ЗаблокироватьРегламентноеЗадание(Идентификатор) Экспорт
|
||||||
|
|
||||||
|
Если ТипЗнч(Идентификатор) = Тип("ОбъектМетаданных") Тогда
|
||||||
|
ИдентификаторБлокировки = Идентификатор.Имя;
|
||||||
|
Иначе
|
||||||
|
ИдентификаторБлокировки = Строка(Идентификатор);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Блокировка = Новый БлокировкаДанных;
|
Блокировка = Новый БлокировкаДанных;
|
||||||
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.КэшПрограммныхИнтерфейсов");
|
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.КэшПрограммныхИнтерфейсов");
|
||||||
ЭлементБлокировки.УстановитьЗначение("Идентификатор", Строка(Идентификатор));
|
ЭлементБлокировки.УстановитьЗначение("Идентификатор", ИдентификаторБлокировки);
|
||||||
Блокировка.Заблокировать();
|
Блокировка.Заблокировать();
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="9c472614-595a-4456-aadd-f629455a754e">
|
||||||
|
<name>СерверныеОповещения</name>
|
||||||
|
<synonym>
|
||||||
|
<key>ru</key>
|
||||||
|
<value>Серверные оповещения</value>
|
||||||
|
</synonym>
|
||||||
|
<server>true</server>
|
||||||
|
<externalConnection>true</externalConnection>
|
||||||
|
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||||
|
</mdclass:CommonModule>
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Copyright (c) 2022, ООО 1С-Софт
|
||||||
|
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||||
|
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||||
|
// Текст лицензии доступен по ссылке:
|
||||||
|
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
Процедура ОбработчикПроверкиПолученияСерверныхОповещений() Экспорт
|
||||||
|
|
||||||
|
СостояниеПолучения = СерверныеОповещенияКлиент.СостояниеПолучения();
|
||||||
|
Если СостояниеПолучения.ПроверкаВыполняется Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СостояниеПолучения.ПроверкаВыполняется = Истина;
|
||||||
|
Попытка
|
||||||
|
СерверныеОповещенияКлиент.ПроверитьПолучитьСерверныеОповещения();
|
||||||
|
СостояниеПолучения.ПроверкаВыполняется = Ложь;
|
||||||
|
Исключение
|
||||||
|
СостояниеПолучения.ПроверкаВыполняется = Ложь;
|
||||||
|
ВызватьИсключение;
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="77adf47b-6015-46fc-9e29-f1c025ea0d81">
|
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c205ddad-54ed-476f-85cd-e133313fe3a5">
|
||||||
<name>ДлительныеОперацииГлобальный</name>
|
<name>СерверныеОповещенияГлобальный</name>
|
||||||
<synonym>
|
<synonym>
|
||||||
<key>ru</key>
|
<key>ru</key>
|
||||||
<value>Длительные операции глобальный</value>
|
<value>Серверные оповещения глобальный</value>
|
||||||
</synonym>
|
</synonym>
|
||||||
<global>true</global>
|
<global>true</global>
|
||||||
<clientManagedApplication>true</clientManagedApplication>
|
<clientManagedApplication>true</clientManagedApplication>
|
||||||
@@ -0,0 +1,488 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Copyright (c) 2022, ООО 1С-Софт
|
||||||
|
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||||
|
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||||
|
// Текст лицензии доступен по ссылке:
|
||||||
|
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
|
// Параметры:
|
||||||
|
// Интервал - Число
|
||||||
|
//
|
||||||
|
Процедура ПодключитьОбработчикПроверкиПолученияСерверныхОповещений(Интервал = 1) Экспорт
|
||||||
|
|
||||||
|
Если Интервал < 1 Тогда
|
||||||
|
Интервал = 1;
|
||||||
|
ИначеЕсли Интервал > 60 Тогда
|
||||||
|
Интервал = 60;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПодключитьОбработчикОжидания("ОбработчикПроверкиПолученияСерверныхОповещений", Интервал, Истина);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Обработчики событий подсистем конфигурации.
|
||||||
|
|
||||||
|
// См. ОбщегоНазначенияКлиентПереопределяемый.ПередНачаломРаботыСистемы.
|
||||||
|
Процедура ПередНачаломРаботыСистемы(Параметры) Экспорт
|
||||||
|
|
||||||
|
ПараметрыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске();
|
||||||
|
|
||||||
|
Если Не ПараметрыКлиента.Свойство("СерверныеОповещения") Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПараметрыСерверныхОповещений = ПараметрыКлиента.СерверныеОповещения; // см. СерверныеОповещения.ПараметрыСерверныхОповещенийЭтогоСеанса
|
||||||
|
СостояниеПолучения = СостояниеПолучения();
|
||||||
|
ЗаполнитьЗначенияСвойств(СостояниеПолучения, ПараметрыСерверныхОповещений);
|
||||||
|
Параметры.ПолученныеПараметрыКлиента.Вставить("СерверныеОповещения");
|
||||||
|
|
||||||
|
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||||
|
СостояниеПолучения.ДатаОбновленияСостояния = ДатаСеанса;
|
||||||
|
СостояниеПолучения.ДатаПоследнегоПолученияСообщения = ДатаСеанса;
|
||||||
|
СостояниеПолучения.ДатаПоследнейПериодическойОтправкиДанных = ДатаСеанса;
|
||||||
|
|
||||||
|
СостояниеПолучения.ПроверкаРазрешена = Истина;
|
||||||
|
ПодключитьОбработчикПроверкиПолученияСерверныхОповещений();
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// См. ОбщегоНазначенияКлиентПереопределяемый.ПослеНачалаРаботыСистемы.
|
||||||
|
Процедура ПослеНачалаРаботыСистемы() Экспорт
|
||||||
|
|
||||||
|
СостояниеПолучения = СостояниеПолучения();
|
||||||
|
|
||||||
|
Если СостояниеПолучения.СеансАдминистратораСервиса Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СостояниеПолучения.ПериодическаяОтправкаДанныхРазрешена = Истина;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
Процедура ПроверитьПолучитьСерверныеОповещения() Экспорт
|
||||||
|
|
||||||
|
СостояниеПолучения = СостояниеПолучения();
|
||||||
|
Если Не СостояниеПолучения.ПроверкаРазрешена Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Интервал = СостояниеПолучения.МинимальныйПериод;
|
||||||
|
ОбсужденияАктивны = СостояниеПолучения.ОбработчикНовыхЛичныхСообщенийПодключен
|
||||||
|
И СостояниеПолучения.ДатаПоследнегоПолученияСообщения + 60 > ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||||
|
|
||||||
|
ДополнительныеПараметры = Новый Соответствие;
|
||||||
|
ИмяКлючаПараметровОбсуждений = "СтандартныеПодсистемы.БазоваяФункциональность.ИдентификаторыОбсуждений";
|
||||||
|
|
||||||
|
ДлительныеОперацииКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер(ДополнительныеПараметры,
|
||||||
|
ОбсужденияАктивны, Интервал);
|
||||||
|
|
||||||
|
ТекущаяДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||||
|
ПериодическаяОтправкаДанных = Ложь;
|
||||||
|
|
||||||
|
Если СостояниеПолучения.ДатаПоследнейПериодическойОтправкиДанных + 60 < ТекущаяДатаСеанса Тогда
|
||||||
|
Если СостояниеПолучения.ПериодическаяОтправкаДанныхРазрешена Тогда
|
||||||
|
ИнтеграцияПодсистемБСПКлиент.ПередПериодическойОтправкойДанныхКлиентаНаСервер(ДополнительныеПараметры);
|
||||||
|
ОбщегоНазначенияКлиентПереопределяемый.ПередПериодическойОтправкойДанныхКлиентаНаСервер(ДополнительныеПараметры);
|
||||||
|
ПериодическаяОтправкаДанных = Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
СостояниеПолучения.ДатаПоследнейПериодическойОтправкиДанных = ТекущаяДатаСеанса;
|
||||||
|
СообщенияДляЖурналаРегистрации = ПараметрыПриложения["СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации"];
|
||||||
|
Если СостояниеПолучения.ИдентификаторЛичногоОбсуждения = Неопределено
|
||||||
|
И СистемаВзаимодействия.ИнформационнаяБазаЗарегистрирована() Тогда
|
||||||
|
ДополнительныеПараметры.Вставить(ИмяКлючаПараметровОбсуждений, Ложь);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ОповещенияПолучены(СостояниеПолучения)
|
||||||
|
И Не ЗначениеЗаполнено(ДополнительныеПараметры)
|
||||||
|
И Не ЗначениеЗаполнено(СообщенияДляЖурналаРегистрации) Тогда
|
||||||
|
|
||||||
|
ПодключитьОбработчикПроверкиПолученияСерверныхОповещений(Интервал);
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПараметрыОбщегоВызова = НовыеПараметрыОбщегоСерверногоВызова();
|
||||||
|
ПараметрыОбщегоВызова.ДатаПоследнегоОповещения = СостояниеПолучения.ДатаПоследнегоОповещения;
|
||||||
|
ПараметрыОбщегоВызова.МинимальныйПериодПроверки = СостояниеПолучения.МинимальныйПериод;
|
||||||
|
ПараметрыОбщегоВызова.ДополнительныеПараметры = ДополнительныеПараметры;
|
||||||
|
ПараметрыОбщегоВызова.ПериодическаяОтправкаДанных = ПериодическаяОтправкаДанных;
|
||||||
|
ПараметрыОбщегоВызова.СообщенияДляЖурналаРегистрации =
|
||||||
|
ПараметрыПриложения["СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации"];
|
||||||
|
|
||||||
|
РезультатОбщегоВызова = СерверныеОповещенияСлужебныйВызовСервера.НедоставленныеСерверныеОповещенияСеанса(
|
||||||
|
ПараметрыОбщегоВызова);
|
||||||
|
|
||||||
|
Если ПараметрыОбщегоВызова.СообщенияДляЖурналаРегистрации <> Неопределено Тогда
|
||||||
|
ПараметрыОбщегоВызова.СообщенияДляЖурналаРегистрации.Очистить();
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ДополнительныеРезультаты = РезультатОбщегоВызова.ДополнительныеРезультаты;
|
||||||
|
ИдентификаторыОбсуждений = ДополнительныеРезультаты.Получить(ИмяКлючаПараметровОбсуждений);
|
||||||
|
Если ИдентификаторыОбсуждений <> Неопределено Тогда
|
||||||
|
ЗаполнитьЗначенияСвойств(СостояниеПолучения, ИдентификаторыОбсуждений);
|
||||||
|
ПодключитьОбработчикНовыхСообщений(СостояниеПолучения);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Для Каждого СерверноеОповещение Из РезультатОбщегоВызова.СерверныеОповещения Цикл
|
||||||
|
ОбработатьСерверноеОповещениеНаКлиенте(СостояниеПолучения, СерверноеОповещение);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ДлительныеОперацииКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(
|
||||||
|
ДополнительныеРезультаты, ОбсужденияАктивны, Интервал);
|
||||||
|
|
||||||
|
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда
|
||||||
|
МодульСоединенияИБКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СоединенияИБКлиент");
|
||||||
|
МодульСоединенияИБКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(
|
||||||
|
ДополнительныеРезультаты);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ПериодическаяОтправкаДанных Тогда
|
||||||
|
ИнтеграцияПодсистемБСПКлиент.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(
|
||||||
|
ДополнительныеРезультаты);
|
||||||
|
ОбщегоНазначенияКлиентПереопределяемый.ПослеПериодическогоПолученияДанныхКлиентаНаСервере(
|
||||||
|
ДополнительныеРезультаты);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СостояниеПолучения.ДатаПоследнегоОповещения = РезультатОбщегоВызова.ДатаПоследнегоОповещения;
|
||||||
|
СостояниеПолучения.МинимальныйПериод = РезультатОбщегоВызова.МинимальныйПериодПроверки;
|
||||||
|
СостояниеПолучения.ДатаОбновленияСостояния = ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||||
|
|
||||||
|
Если Интервал > СостояниеПолучения.МинимальныйПериод Тогда
|
||||||
|
Интервал = СостояниеПолучения.МинимальныйПериод;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПодключитьОбработчикПроверкиПолученияСерверныхОповещений(Интервал);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ОбработатьСерверноеОповещениеНаКлиенте(СостояниеПолучения, СерверноеОповещение)
|
||||||
|
|
||||||
|
Если ОповещениеУжеПолучено(СостояниеПолучения, СерверноеОповещение) Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ИмяОповещения = СерверноеОповещение.ИмяОповещения;
|
||||||
|
Результат = СерверноеОповещение.Результат;
|
||||||
|
|
||||||
|
Оповещение = СостояниеПолучения.Оповещения.Получить(ИмяОповещения);
|
||||||
|
Если Оповещение = Неопределено Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
МодульОбработки = ОбщегоНазначенияКлиент.ОбщийМодуль(Оповещение.ИмяМодуляПолучения);
|
||||||
|
Попытка
|
||||||
|
МодульОбработки.ПриПолученииСерверногоОповещения(ИмяОповещения, Результат);
|
||||||
|
Исключение
|
||||||
|
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||||
|
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||||
|
НСтр("ru = 'При вызове процедуры ""%1"" возникла ошибка:
|
||||||
|
|%2'"),
|
||||||
|
Оповещение.ИмяМодуляПолучения + ".ПриПолученииСерверногоОповещения",
|
||||||
|
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||||
|
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
|
||||||
|
НСтр("ru = 'Серверные оповещения.Ошибка обработки полученного оповещения'",
|
||||||
|
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
|
||||||
|
"Ошибка",
|
||||||
|
ТекстОшибки);
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция ОповещенияПолучены(СостояниеПолучения)
|
||||||
|
|
||||||
|
ПодключитьОбработчикНовыхСообщений(СостояниеПолучения);
|
||||||
|
|
||||||
|
Граница = СостояниеПолучения.ДатаОбновленияСостояния + СостояниеПолучения.МинимальныйПериод;
|
||||||
|
|
||||||
|
Запас = Граница - ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||||
|
|
||||||
|
Если Запас > 0 Тогда
|
||||||
|
Возврат Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Ложь;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// См. НовоеСостояниеПолучения
|
||||||
|
Функция СостояниеПолучения() Экспорт
|
||||||
|
|
||||||
|
ИмяПараметраПриложения = "СтандартныеПодсистемы.БазоваяФункциональность.СерверныеОповещения";
|
||||||
|
СостояниеПолучения = ПараметрыПриложения.Получить(ИмяПараметраПриложения);
|
||||||
|
Если СостояниеПолучения = Неопределено Тогда
|
||||||
|
СостояниеПолучения = НовоеСостояниеПолучения();
|
||||||
|
ПараметрыПриложения.Вставить(ИмяПараметраПриложения, СостояниеПолучения);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат СостояниеПолучения;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Структура:
|
||||||
|
// * ДатаПоследнегоОповещения - Дата
|
||||||
|
// * МинимальныйПериодПроверки - Число
|
||||||
|
// * ДополнительныеПараметры - Соответствие
|
||||||
|
// * СообщенияДляЖурналаРегистрации - Неопределено, СписокЗначений
|
||||||
|
// * ПериодическаяОтправкаДанных - Булево
|
||||||
|
//
|
||||||
|
Функция НовыеПараметрыОбщегоСерверногоВызова() Экспорт
|
||||||
|
|
||||||
|
Результат = Новый Структура;
|
||||||
|
Результат.Вставить("ДатаПоследнегоОповещения", '00010101');
|
||||||
|
Результат.Вставить("МинимальныйПериодПроверки", 60);
|
||||||
|
Результат.Вставить("ДополнительныеПараметры", Новый Соответствие);
|
||||||
|
Результат.Вставить("СообщенияДляЖурналаРегистрации", Неопределено);
|
||||||
|
Результат.Вставить("ПериодическаяОтправкаДанных", Ложь);
|
||||||
|
|
||||||
|
Возврат Результат;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Структура:
|
||||||
|
// * ПроверкаРазрешена - Булево - устанавливается Истина в процедуре ПередНачаломРаботыСистемы.
|
||||||
|
// * СеансАдминистратораСервиса - Булево
|
||||||
|
// * ПериодическаяОтправкаДанныхРазрешена - Булево - устанавливается Истина в процедуре ПослеНачалаРаботыСистемы.
|
||||||
|
// * ПроверкаВыполняется - Булево
|
||||||
|
// * КлючСеанса - см. СерверныеОповещения.КлючСеанса
|
||||||
|
// * ИдентификаторПользователяИБ - УникальныйИдентификатор
|
||||||
|
// * ДатаОбновленияСостояния - Дата
|
||||||
|
// * ДатаПоследнегоПолученияСообщения - Дата
|
||||||
|
// * МинимальныйПериод - Число - число секунд.
|
||||||
|
// * ДатаПоследнегоОповещения - Дата
|
||||||
|
// * Оповещения - см. ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений.Оповещения
|
||||||
|
// * ПолученныеОповещения - Массив из Строка - строки уникальных идентификаторов полученных сообщений.
|
||||||
|
// * ИдентификаторЛичногоОбсуждения - Неопределено - обсуждение недоступно.
|
||||||
|
// - ИдентификаторОбсужденияСистемыВзаимодействия - идентификатор
|
||||||
|
// обсуждения "СерверныеОповещения <Идентификатор пользователя ИБ>".
|
||||||
|
//
|
||||||
|
// * ИдентификаторОбщегоОбсуждения - Неопределено - обсуждение недоступно.
|
||||||
|
// - ИдентификаторОбсужденияСистемыВзаимодействия - идентификатор
|
||||||
|
// обсуждения "СерверныеОповещения".
|
||||||
|
// * ИдентификаторЛичногоОбсуждения - Строка - строка уникального идентификатора
|
||||||
|
// обсуждения "СерверныеОповещения <Идентификатор пользователя ИБ>".
|
||||||
|
// * ИдентификаторОбщегоОбсуждения - Строка - строка уникального идентификатора
|
||||||
|
// обсуждения "СерверныеОповещения".
|
||||||
|
// * ОбработчикНовыхЛичныхСообщенийПодключен - Булево
|
||||||
|
// * ОбработчикНовыхОбщихСообщенийПодключен - Булево
|
||||||
|
// * НачатоПодключениеОбработчикаНовыхЛичныхСообщений - Булево
|
||||||
|
// * НачатоПодключениеОбработчикаНовыхОбщихСообщений - Булево
|
||||||
|
// * ДатаПоследнейПериодическойОтправкиДанных - Дата
|
||||||
|
//
|
||||||
|
Функция НовоеСостояниеПолучения()
|
||||||
|
|
||||||
|
Состояние = Новый Структура;
|
||||||
|
Состояние.Вставить("ПроверкаРазрешена", Ложь);
|
||||||
|
Состояние.Вставить("СеансАдминистратораСервиса", Ложь);
|
||||||
|
Состояние.Вставить("ПериодическаяОтправкаДанныхРазрешена", Ложь);
|
||||||
|
Состояние.Вставить("ПроверкаВыполняется", Ложь);
|
||||||
|
Состояние.Вставить("КлючСеанса", "");
|
||||||
|
Состояние.Вставить("ИдентификаторПользователяИБ",
|
||||||
|
ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор());
|
||||||
|
Состояние.Вставить("ДатаОбновленияСостояния", '00010101');
|
||||||
|
Состояние.Вставить("ДатаПоследнегоПолученияСообщения", '00010101');
|
||||||
|
Состояние.Вставить("МинимальныйПериод", 60);
|
||||||
|
Состояние.Вставить("ДатаПоследнегоОповещения", '00010101');
|
||||||
|
Состояние.Вставить("Оповещения", Новый Соответствие);
|
||||||
|
Состояние.Вставить("ПолученныеОповещения", Новый Массив);
|
||||||
|
Состояние.Вставить("ИдентификаторЛичногоОбсуждения", Неопределено);
|
||||||
|
Состояние.Вставить("ИдентификаторОбщегоОбсуждения", Неопределено);
|
||||||
|
Состояние.Вставить("ОбработчикНовыхЛичныхСообщенийПодключен", Ложь);
|
||||||
|
Состояние.Вставить("ОбработчикНовыхОбщихСообщенийПодключен", Ложь);
|
||||||
|
Состояние.Вставить("НачатоПодключениеОбработчикаНовыхЛичныхСообщений", Ложь);
|
||||||
|
Состояние.Вставить("НачатоПодключениеОбработчикаНовыхОбщихСообщений", Ложь);
|
||||||
|
Состояние.Вставить("ДатаПоследнейПериодическойОтправкиДанных", '00010101');
|
||||||
|
|
||||||
|
Возврат Состояние;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ПодключитьОбработчикНовыхСообщений(СостояниеПолучения)
|
||||||
|
|
||||||
|
Если СостояниеПолучения.ИдентификаторЛичногоОбсуждения <> Неопределено
|
||||||
|
И Не СостояниеПолучения.ОбработчикНовыхЛичныхСообщенийПодключен
|
||||||
|
И Не СостояниеПолучения.НачатоПодключениеОбработчикаНовыхЛичныхСообщений Тогда
|
||||||
|
|
||||||
|
Контекст = Новый Структура("СостояниеПолучения", СостояниеПолучения);
|
||||||
|
Попытка
|
||||||
|
СистемаВзаимодействия.НачатьПодключениеОбработчикаНовыхСообщений(
|
||||||
|
Новый ОписаниеОповещения("ПослеПодключенияОбработчикаНовыхЛичныхСообщений", ЭтотОбъект, Контекст,
|
||||||
|
"ПослеОшибкиПодключенияОбработчикаНовыхЛичныхСообщений", ЭтотОбъект),
|
||||||
|
Новый ИдентификаторОбсужденияСистемыВзаимодействия(СостояниеПолучения.ИдентификаторЛичногоОбсуждения),
|
||||||
|
Новый ОписаниеОповещения("ПриПолученииНовогоЛичногоСообщенияСистемыВзаимодействия", ЭтотОбъект, Контекст,
|
||||||
|
"ПриОшибкеПолученияНовогоЛичногоСообщенияСистемыВзаимодействия", ЭтотОбъект),
|
||||||
|
Неопределено);
|
||||||
|
Исключение
|
||||||
|
ПослеОшибкиПодключенияОбработчикаНовыхЛичныхСообщений(ИнформацияОбОшибке(), Ложь, Контекст);
|
||||||
|
КонецПопытки;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если СостояниеПолучения.ИдентификаторОбщегоОбсуждения <> Неопределено
|
||||||
|
И Не СостояниеПолучения.ОбработчикНовыхОбщихСообщенийПодключен
|
||||||
|
И Не СостояниеПолучения.НачатоПодключениеОбработчикаНовыхОбщихСообщений Тогда
|
||||||
|
|
||||||
|
Контекст = Новый Структура("СостояниеПолучения", СостояниеПолучения);
|
||||||
|
Попытка
|
||||||
|
СистемаВзаимодействия.НачатьПодключениеОбработчикаНовыхСообщений(
|
||||||
|
Новый ОписаниеОповещения("ПослеПодключенияОбработчикаНовыхОбщихСообщений", ЭтотОбъект, Контекст,
|
||||||
|
"ПослеОшибкиПодключенияОбработчикаНовыхОбщихСообщений", ЭтотОбъект),
|
||||||
|
Новый ИдентификаторОбсужденияСистемыВзаимодействия(СостояниеПолучения.ИдентификаторОбщегоОбсуждения),
|
||||||
|
Новый ОписаниеОповещения("ПриПолученииНовогоОбщегоСообщенияСистемыВзаимодействия", ЭтотОбъект, Контекст,
|
||||||
|
"ПриОшибкеПолученияНовогоОбщегоСообщенияСистемыВзаимодействия", ЭтотОбъект),
|
||||||
|
Неопределено);
|
||||||
|
Исключение
|
||||||
|
ПослеОшибкиПодключенияОбработчикаНовыхОбщихСообщений(ИнформацияОбОшибке(), Ложь, Контекст);
|
||||||
|
КонецПопытки;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ПослеПодключенияОбработчикаНовыхЛичныхСообщений(Контекст) Экспорт
|
||||||
|
|
||||||
|
Контекст.СостояниеПолучения.НачатоПодключениеОбработчикаНовыхЛичныхСообщений = Ложь;
|
||||||
|
Контекст.СостояниеПолучения.ОбработчикНовыхЛичныхСообщенийПодключен = Истина;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ПослеОшибкиПодключенияОбработчикаНовыхЛичныхСообщений(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
|
||||||
|
|
||||||
|
Контекст.СостояниеПолучения.НачатоПодключениеОбработчикаНовыхЛичныхСообщений = Ложь;
|
||||||
|
|
||||||
|
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
|
||||||
|
НСтр("ru = 'Серверные оповещения.Ошибка подключения обработчика новых личных сообщений'",
|
||||||
|
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
|
||||||
|
"Ошибка",
|
||||||
|
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ПриПолученииНовогоЛичногоСообщенияСистемыВзаимодействия(Сообщение, Контекст) Экспорт
|
||||||
|
|
||||||
|
ПриПолученииНовогоСообщенияСистемыВзаимодействия(Сообщение, Контекст);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ПриОшибкеПолученияНовогоЛичногоСообщенияСистемыВзаимодействия(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
|
||||||
|
|
||||||
|
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
|
||||||
|
НСтр("ru = 'Серверные оповещения.Ошибка получения нового личного сообщения'",
|
||||||
|
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
|
||||||
|
"Ошибка",
|
||||||
|
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ПослеПодключенияОбработчикаНовыхОбщихСообщений(Контекст) Экспорт
|
||||||
|
|
||||||
|
Контекст.СостояниеПолучения.НачатоПодключениеОбработчикаНовыхОбщихСообщений = Ложь;
|
||||||
|
Контекст.СостояниеПолучения.ОбработчикНовыхОбщихСообщенийПодключен = Истина;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ПослеОшибкиПодключенияОбработчикаНовыхОбщихСообщений(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
|
||||||
|
|
||||||
|
Контекст.СостояниеПолучения.НачатоПодключениеОбработчикаНовыхОбщихСообщений = Ложь;
|
||||||
|
|
||||||
|
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
|
||||||
|
НСтр("ru = 'Серверные оповещения.Ошибка подключения обработчика новых общих сообщений'",
|
||||||
|
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
|
||||||
|
"Ошибка",
|
||||||
|
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ПриПолученииНовогоОбщегоСообщенияСистемыВзаимодействия(Сообщение, Контекст) Экспорт
|
||||||
|
|
||||||
|
ПриПолученииНовогоСообщенияСистемыВзаимодействия(Сообщение, Контекст);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ПриОшибкеПолученияНовогоОбщегоСообщенияСистемыВзаимодействия(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
|
||||||
|
|
||||||
|
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
|
||||||
|
НСтр("ru = 'Серверные оповещения.Ошибка получения нового общего сообщения'",
|
||||||
|
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
|
||||||
|
"Ошибка",
|
||||||
|
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ПриПолученииНовогоСообщенияСистемыВзаимодействия(Сообщение, Контекст)
|
||||||
|
|
||||||
|
СостояниеПолучения = Контекст.СостояниеПолучения;
|
||||||
|
|
||||||
|
Если Не СостояниеПолучения.ПроверкаРазрешена
|
||||||
|
Или ПараметрыПриложения = Неопределено Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СостояниеПолучения.ДатаПоследнегоПолученияСообщения = ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||||
|
|
||||||
|
Если ТипЗнч(Сообщение.Данные) <> Тип("Структура") Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Данные = Сообщение.Данные; // См. СерверныеОповещения.НовыеДанныеСообщения
|
||||||
|
Если Не Данные.Свойство("ИмяОповещения") Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Данные.ИмяОповещения <> "НетСерверныхОповещений" Тогда
|
||||||
|
Если Данные.Адресаты <> Неопределено Тогда
|
||||||
|
КлючиСеансов = Данные.Адресаты.Получить(СостояниеПолучения.ИдентификаторПользователяИБ);
|
||||||
|
Если КлючиСеансов <> Неопределено
|
||||||
|
И КлючиСеансов.Найти(СостояниеПолучения.КлючСеанса) = Неопределено Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
ОбработатьСерверноеОповещениеНаКлиенте(СостояниеПолучения, Данные);
|
||||||
|
Если Не Данные.ОтправленоИзОчереди Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ДатаПоследнегоОповещения = Данные.Ошибки.Получить(СостояниеПолучения.ИдентификаторПользователяИБ);
|
||||||
|
Если ДатаПоследнегоОповещения = Неопределено Тогда
|
||||||
|
ДатаПоследнегоОповещения = Данные.Ошибки.Получить("ВсеПользователи");
|
||||||
|
Если ДатаПоследнегоОповещения = Неопределено Тогда
|
||||||
|
ДатаПоследнегоОповещения = Данные.ДатаДобавления;
|
||||||
|
СостояниеПолучения.ДатаОбновленияСостояния = ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
Если СостояниеПолучения.ДатаПоследнегоОповещения < ДатаПоследнегоОповещения Тогда
|
||||||
|
СостояниеПолучения.ДатаПоследнегоОповещения = ДатаПоследнегоОповещения;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция ОповещениеУжеПолучено(СостояниеПолучения, СерверноеОповещение)
|
||||||
|
|
||||||
|
Если СерверноеОповещение.ДатаДобавления < СостояниеПолучения.ДатаПоследнегоОповещения Тогда
|
||||||
|
Возврат Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПолученныеОповещения = СостояниеПолучения.ПолученныеОповещения;
|
||||||
|
|
||||||
|
Если ПолученныеОповещения.Найти(СерверноеОповещение.ИдентификаторОповещения) <> Неопределено Тогда
|
||||||
|
Возврат Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПолученныеОповещения.Добавить(СерверноеОповещение.ИдентификаторОповещения);
|
||||||
|
Если ПолученныеОповещения.Количество() > 100 Тогда
|
||||||
|
ПолученныеОповещения.Удалить(0);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Ложь;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="f2dc9319-ba60-421a-8340-be3e3a291393">
|
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="98edbda8-2511-4743-b643-28934af0ed74">
|
||||||
<name>СоединенияИБГлобальный</name>
|
<name>СерверныеОповещенияКлиент</name>
|
||||||
<synonym>
|
<synonym>
|
||||||
<key>ru</key>
|
<key>ru</key>
|
||||||
<value>Соединения ИБ глобальный</value>
|
<value>Серверные оповещения клиент</value>
|
||||||
</synonym>
|
</synonym>
|
||||||
<global>true</global>
|
|
||||||
<clientManagedApplication>true</clientManagedApplication>
|
<clientManagedApplication>true</clientManagedApplication>
|
||||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||||
</mdclass:CommonModule>
|
</mdclass:CommonModule>
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Copyright (c) 2022, ООО 1С-Софт
|
||||||
|
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||||
|
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||||
|
// Текст лицензии доступен по ссылке:
|
||||||
|
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
// См. СерверныеОповещения.НедоставленныеСерверныеОповещенияСеанса
|
||||||
|
Функция НедоставленныеСерверныеОповещенияСеанса(Параметры) Экспорт
|
||||||
|
|
||||||
|
Возврат СерверныеОповещения.НедоставленныеСерверныеОповещенияСеанса(Параметры);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="db1f2fdc-6862-43c0-aefa-499f8c2b585c">
|
||||||
|
<name>СерверныеОповещенияСлужебныйВызовСервера</name>
|
||||||
|
<synonym>
|
||||||
|
<key>ru</key>
|
||||||
|
<value>Серверные оповещения служебный вызов сервера</value>
|
||||||
|
</synonym>
|
||||||
|
<server>true</server>
|
||||||
|
<serverCall>true</serverCall>
|
||||||
|
</mdclass:CommonModule>
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Copyright (c) 2022, ООО 1С-Софт
|
||||||
|
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||||
|
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||||
|
// Текст лицензии доступен по ссылке:
|
||||||
|
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Булево
|
||||||
|
//
|
||||||
|
Функция ЭтоСеансОтправкиСерверныхОповещенийКлиентам() Экспорт
|
||||||
|
|
||||||
|
Если ТекущийРежимЗапуска() <> Неопределено Тогда
|
||||||
|
Возврат Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ТекущееФоновоеЗадание = ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание();
|
||||||
|
Если ТекущееФоновоеЗадание = Неопределено
|
||||||
|
Или ТекущееФоновоеЗадание.ИмяМетода
|
||||||
|
<> Метаданные.РегламентныеЗадания.ОтправкаСерверныхОповещенийКлиентам.ИмяМетода Тогда
|
||||||
|
Возврат Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Истина;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c9a0afb1-65fa-45ea-aabb-5ec080d9406e">
|
||||||
|
<name>СерверныеОповещенияСлужебныйПовтИсп</name>
|
||||||
|
<synonym>
|
||||||
|
<key>ru</key>
|
||||||
|
<value>Серверные оповещения служебный повт исп</value>
|
||||||
|
</synonym>
|
||||||
|
<server>true</server>
|
||||||
|
<externalConnection>true</externalConnection>
|
||||||
|
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||||
|
<returnValuesReuse>DuringSession</returnValuesReuse>
|
||||||
|
</mdclass:CommonModule>
|
||||||
@@ -1476,7 +1476,7 @@
|
|||||||
Если ПриоритетныйСертификат <> Неопределено И ВходящийКонтекст.Сертификат = Неопределено Тогда
|
Если ПриоритетныйСертификат <> Неопределено И ВходящийКонтекст.Сертификат = Неопределено Тогда
|
||||||
ВходящийКонтекст.Сертификат = Новый Структура("Отпечаток", ПриоритетныйСертификат.Отпечаток);
|
ВходящийКонтекст.Сертификат = Новый Структура("Отпечаток", ПриоритетныйСертификат.Отпечаток);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ПриоритетныйСертификат = Неопределено Тогда
|
Если ПриоритетныйСертификат = Неопределено Тогда
|
||||||
ОтветСервиса = ОтветСервисаПоУмолчанию(Ложь);
|
ОтветСервиса = ОтветСервисаПоУмолчанию(Ложь);
|
||||||
ПолучитьОписаниеОшибки(ОтветСервиса, "СертификатыНеОбнаружены");
|
ПолучитьОписаниеОшибки(ОтветСервиса, "СертификатыНеОбнаружены");
|
||||||
@@ -7558,7 +7558,7 @@
|
|||||||
// Только для внутреннего использования.
|
// Только для внутреннего использования.
|
||||||
Процедура ПослеЗакрытияФормы(РезультатВыбора, ПараметрыЦикла) Экспорт
|
Процедура ПослеЗакрытияФормы(РезультатВыбора, ПараметрыЦикла) Экспорт
|
||||||
|
|
||||||
Если РезультатВыбора = Неопределено ИЛИ ТипЗнч(РезультатВыбора) <> Тип("Структура") Тогда
|
Если РезультатВыбора = Неопределено Тогда
|
||||||
ЗавершениеРаботы = СвойствоСтруктуры(ПараметрыЦикла, "ЗавершениеРаботы", Ложь);
|
ЗавершениеРаботы = СвойствоСтруктуры(ПараметрыЦикла, "ЗавершениеРаботы", Ложь);
|
||||||
Если ЗавершениеРаботы Тогда
|
Если ЗавершениеРаботы Тогда
|
||||||
РезультатВыбора = ОтветСервисаПоУмолчанию(Ложь, "ЗавершениеРаботы");
|
РезультатВыбора = ОтветСервисаПоУмолчанию(Ложь, "ЗавершениеРаботы");
|
||||||
|
|||||||
@@ -315,7 +315,6 @@
|
|||||||
ВызватьИсключение;
|
ВызватьИсключение;
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
// Получить информацию о блокировке сеансов области данных.
|
// Получить информацию о блокировке сеансов области данных.
|
||||||
@@ -368,6 +367,13 @@
|
|||||||
|
|
||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
|
Функция ПодсистемаИспользуется() Экспорт
|
||||||
|
|
||||||
|
// См. также функцию СоединенияИБКлиент.ПодсистемаИспользуется
|
||||||
|
Возврат Не ОбщегоНазначения.РазделениеВключено();
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
// Возвращает текстовую строку со списком активных соединений ИБ.
|
// Возвращает текстовую строку со списком активных соединений ИБ.
|
||||||
// Названия соединений разделены символом переноса строки.
|
// Названия соединений разделены символом переноса строки.
|
||||||
//
|
//
|
||||||
@@ -474,6 +480,10 @@
|
|||||||
// См. РаботаВМоделиСервисаПереопределяемый.ПриЗаполненииТаблицыПараметровИБ.
|
// См. РаботаВМоделиСервисаПереопределяемый.ПриЗаполненииТаблицыПараметровИБ.
|
||||||
Процедура ПриЗаполненииТаблицыПараметровИБ(Знач ТаблицаПараметров) Экспорт
|
Процедура ПриЗаполненииТаблицыПараметровИБ(Знач ТаблицаПараметров) Экспорт
|
||||||
|
|
||||||
|
Если Не ПодсистемаИспользуется() Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
|
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
|
||||||
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
|
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
|
||||||
МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "СообщениеБлокировкиПриОбновленииКонфигурации");
|
МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "СообщениеБлокировкиПриОбновленииКонфигурации");
|
||||||
@@ -484,6 +494,10 @@
|
|||||||
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске.
|
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске.
|
||||||
Процедура ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры) Экспорт
|
Процедура ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры) Экспорт
|
||||||
|
|
||||||
|
Если Не ПодсистемаИспользуется() Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
ПараметрыБлокировки = ТекущиеПараметрыБлокировкиСоединений();
|
ПараметрыБлокировки = ТекущиеПараметрыБлокировкиСоединений();
|
||||||
Параметры.Вставить("ПараметрыБлокировкиСеансов", Новый ФиксированнаяСтруктура(ПараметрыБлокировкиСеансовРасширенные(Ложь, ПараметрыБлокировки)));
|
Параметры.Вставить("ПараметрыБлокировкиСеансов", Новый ФиксированнаяСтруктура(ПараметрыБлокировкиСеансовРасширенные(Ложь, ПараметрыБлокировки)));
|
||||||
|
|
||||||
@@ -543,6 +557,10 @@
|
|||||||
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиента.
|
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиента.
|
||||||
Процедура ПриДобавленииПараметровРаботыКлиента(Параметры) Экспорт
|
Процедура ПриДобавленииПараметровРаботыКлиента(Параметры) Экспорт
|
||||||
|
|
||||||
|
Если Не ПодсистемаИспользуется() Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Параметры.Вставить("ПараметрыБлокировкиСеансов", Новый ФиксированнаяСтруктура(ПараметрыБлокировкиСеансов()));
|
Параметры.Вставить("ПараметрыБлокировкиСеансов", Новый ФиксированнаяСтруктура(ПараметрыБлокировкиСеансов()));
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
@@ -559,6 +577,10 @@
|
|||||||
//
|
//
|
||||||
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
|
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
|
||||||
|
|
||||||
|
Если Не ПодсистемаИспользуется() Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
МодульТекущиеДелаСервер = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСервер");
|
МодульТекущиеДелаСервер = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСервер");
|
||||||
Если Не ПравоДоступа("АдминистрированиеДанных", Метаданные)
|
Если Не ПравоДоступа("АдминистрированиеДанных", Метаданные)
|
||||||
Или МодульТекущиеДелаСервер.ДелоОтключено("БлокировкаСеансов") Тогда
|
Или МодульТекущиеДелаСервер.ДелоОтключено("БлокировкаСеансов") Тогда
|
||||||
@@ -622,6 +644,46 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений
|
||||||
|
Процедура ПриДобавленииСерверныхОповещений(Оповещения) Экспорт
|
||||||
|
|
||||||
|
Если Не ПодсистемаИспользуется() Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(
|
||||||
|
"СтандартныеПодсистемы.ЗавершениеРаботыПользователей.БлокировкаСеансов");
|
||||||
|
Оповещение.ИмяМодуляОтправки = "СоединенияИБ";
|
||||||
|
Оповещение.ИмяМодуляПолучения = "СоединенияИБКлиент";
|
||||||
|
Оповещение.ПериодПроверки = 60;
|
||||||
|
|
||||||
|
Оповещения.Вставить(Оповещение.Имя, Оповещение);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// См. СтандартныеПодсистемыСервер.ПриОтправкеСерверногоОповещения
|
||||||
|
Процедура ПриОтправкеСерверногоОповещения(ИмяОповещения, ВариантыПараметров) Экспорт
|
||||||
|
|
||||||
|
ПараметрыБлокировкиСеансов = ПараметрыБлокировкиСеансов(Истина);
|
||||||
|
Если ПараметрыБлокировкиСеансов.Установлена Тогда
|
||||||
|
СерверныеОповещения.ОтправитьСерверноеОповещение(
|
||||||
|
"СтандартныеПодсистемы.ЗавершениеРаботыПользователей.БлокировкаСеансов",
|
||||||
|
ПараметрыБлокировкиСеансов, Неопределено);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// См. ОбщегоНазначенияПереопределяемый.ПриПериодическомПолученииДанныхКлиентаНаСервере
|
||||||
|
Процедура ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты) Экспорт
|
||||||
|
|
||||||
|
ПараметрыБлокировкиСеансов = ПараметрыБлокировкиСеансов(Истина);
|
||||||
|
Если ПараметрыБлокировкиСеансов.Установлена Тогда
|
||||||
|
Результаты.Вставить("СтандартныеПодсистемы.ЗавершениеРаботыПользователей.БлокировкаСеансов",
|
||||||
|
ПараметрыБлокировкиСеансов);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|||||||
@@ -1,146 +0,0 @@
|
|||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Copyright (c) 2022, ООО 1С-Софт
|
|
||||||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
|
||||||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
|
||||||
// Текст лицензии доступен по ссылке:
|
|
||||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
|
||||||
|
|
||||||
// Выполнить завершение текущего сеанса, если установлена блокировка соединений
|
|
||||||
// с информационной базой.
|
|
||||||
//
|
|
||||||
Процедура КонтрольРежимаЗавершенияРаботыПользователей() Экспорт
|
|
||||||
|
|
||||||
// Получим текущее значение параметров блокировки.
|
|
||||||
ТекущийРежим = СоединенияИБВызовСервера.ПараметрыБлокировкиСеансов();
|
|
||||||
БлокировкаУстановлена = ТекущийРежим.Установлена;
|
|
||||||
|
|
||||||
Если Не БлокировкаУстановлена Тогда
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ВремяНачалаБлокировки = ТекущийРежим.Начало;
|
|
||||||
ВремяОкончанияБлокировки = ТекущийРежим.Конец;
|
|
||||||
|
|
||||||
// ИнтервалЗакрытьСЗапросом и ИнтервалПрекратить имеют отрицательное значение,
|
|
||||||
// поэтому, когда идет сравнение этих параметров с разницей (ВремяНачалаБлокировки - ТекущийМомент),
|
|
||||||
// то используется "<=", так как данная разница постоянно уменьшается.
|
|
||||||
ИнтервалПредупреждения = ТекущийРежим.ИнтервалОжиданияЗавершенияРаботыПользователей;
|
|
||||||
ИнтервалЗакрытьСЗапросом = ИнтервалПредупреждения / 3;
|
|
||||||
ИнтервалПрекратитьВМоделиСервиса = 60; // За минуту до начала блокировки.
|
|
||||||
ИнтервалПрекратить = 0; // В момент установки блокировки.
|
|
||||||
ТекущийМомент = ТекущийРежим.ТекущаяДатаСеанса;
|
|
||||||
|
|
||||||
Если ВремяОкончанияБлокировки <> '00010101' И ТекущийМомент > ВремяОкончанияБлокировки Тогда
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ДатаВремениНачалаБлокировки = Формат(ВремяНачалаБлокировки, "ДЛФ=DD");
|
|
||||||
ВремяВремениНачалаБлокировки = Формат(ВремяНачалаБлокировки, "ДЛФ=T");
|
|
||||||
|
|
||||||
ТекстСообщения = СоединенияИБКлиентСервер.ИзвлечьСообщениеБлокировки(ТекущийРежим.Сообщение);
|
|
||||||
Шаблон = НСтр("ru = 'Рекомендуется завершить текущую работу и сохранить все свои данные. Работа программы будет завершена %1 в %2.
|
|
||||||
|%3'");
|
|
||||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, ДатаВремениНачалаБлокировки, ВремяВремениНачалаБлокировки, ТекстСообщения);
|
|
||||||
|
|
||||||
РазделениеВключено = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().РазделениеВключено;
|
|
||||||
Если Не РазделениеВключено
|
|
||||||
И (Не ЗначениеЗаполнено(ВремяНачалаБлокировки) Или ВремяНачалаБлокировки - ТекущийМомент < ИнтервалПрекратить) Тогда
|
|
||||||
|
|
||||||
СтандартныеПодсистемыКлиент.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы();
|
|
||||||
ЗавершитьРаботуСистемы(Ложь, ТекущийРежим.ПерезапуститьПриЗавершении);
|
|
||||||
|
|
||||||
ИначеЕсли РазделениеВключено
|
|
||||||
И (Не ЗначениеЗаполнено(ВремяНачалаБлокировки) Или ВремяНачалаБлокировки - ТекущийМомент < ИнтервалПрекратитьВМоделиСервиса) Тогда
|
|
||||||
|
|
||||||
СтандартныеПодсистемыКлиент.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы();
|
|
||||||
ЗавершитьРаботуСистемы(Ложь, Ложь);
|
|
||||||
|
|
||||||
ИначеЕсли ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалЗакрытьСЗапросом Тогда
|
|
||||||
|
|
||||||
СоединенияИБКлиент.ЗадатьВопросПриЗавершенииРаботы(ТекстСообщения);
|
|
||||||
|
|
||||||
ИначеЕсли ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалПредупреждения Тогда
|
|
||||||
|
|
||||||
СоединенияИБКлиент.ПоказатьПредупреждениеПриЗавершенииРаботы(ТекстСообщения);
|
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
// Выполнить завершение активных сеансов, если превышено время ожидания, а затем
|
|
||||||
// завершить текущий сеанс.
|
|
||||||
//
|
|
||||||
Процедура ЗавершитьРаботуПользователей() Экспорт
|
|
||||||
|
|
||||||
// Получим текущее значение параметров блокировки.
|
|
||||||
ТекущийРежим = СоединенияИБВызовСервера.ПараметрыБлокировкиСеансов(Истина);
|
|
||||||
|
|
||||||
ВремяНачалаБлокировки = ТекущийРежим.Начало;
|
|
||||||
ТекущийМомент = ТекущийРежим.ТекущаяДатаСеанса;
|
|
||||||
|
|
||||||
Если ТекущийМомент < ВремяНачалаБлокировки Тогда
|
|
||||||
ТекстСообщения = НСтр("ru = 'Блокировка работы пользователей запланирована на %1.'");
|
|
||||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ВремяНачалаБлокировки);
|
|
||||||
ПоказатьОповещениеПользователя(НСтр("ru = 'Завершение работы пользователей'"),
|
|
||||||
"e1cib/app/Обработка.БлокировкаРаботыПользователей",
|
|
||||||
ТекстСообщения, БиблиотекаКартинок.Информация32);
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КоличествоСеансов = ТекущийРежим.КоличествоСеансов;
|
|
||||||
Если КоличествоСеансов <= 1 Тогда
|
|
||||||
// Отключены все пользователи, кроме текущего сеанса.
|
|
||||||
// В последнюю очередь предлагаем завершить сеанс, запущенный с параметром "ЗавершитьРаботуПользователей".
|
|
||||||
// Такой порядок отключений необходим для обновления конфигурации с помощью пакетного файла.
|
|
||||||
СоединенияИБКлиент.УстановитьПризнакРаботаПользователейЗавершается(Ложь);
|
|
||||||
Оповестить("ЗавершениеРаботыПользователей", Новый Структура("Статус, КоличествоСеансов", "Готово", КоличествоСеансов));
|
|
||||||
СоединенияИБКлиент.ЗавершитьРаботуЭтогоСеанса();
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
БлокировкаУстановлена = ТекущийРежим.Установлена;
|
|
||||||
Если Не БлокировкаУстановлена Тогда
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
// Если информационная база файловая, то часть соединений не может быть завершена принудительно.
|
|
||||||
Если СтандартныеПодсистемыКлиент.ПараметрКлиента("ИнформационнаяБазаФайловая") Тогда
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
// После начала блокировки сеансы всех пользователей должны быть отключены
|
|
||||||
// если этого не произошло пробуем принудительно прервать соединения.
|
|
||||||
ОтключитьОбработчикОжидания("ЗавершитьРаботуПользователей");
|
|
||||||
|
|
||||||
Попытка
|
|
||||||
ПараметрыАдминистрирования = СоединенияИБКлиент.СохраненныеПараметрыАдминистрирования();
|
|
||||||
Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() Тогда
|
|
||||||
СоединенияИБВызовСервера.УдалитьВсеСеансыКромеТекущего(ПараметрыАдминистрирования);
|
|
||||||
Иначе
|
|
||||||
СоединенияИБКлиентСервер.УдалитьВсеСеансыКромеТекущего(ПараметрыАдминистрирования);
|
|
||||||
КонецЕсли;
|
|
||||||
СоединенияИБКлиент.СохранитьПараметрыАдминистрирования(Неопределено);
|
|
||||||
Исключение
|
|
||||||
СоединенияИБКлиент.УстановитьПризнакРаботаПользователейЗавершается(Ложь);
|
|
||||||
ПоказатьОповещениеПользователя(НСтр("ru = 'Завершение работы пользователей'"),
|
|
||||||
"e1cib/app/Обработка.БлокировкаРаботыПользователей",
|
|
||||||
НСтр("ru = 'Завершение сеансов не выполнено. Подробности см. в Журнале регистрации.'"), БиблиотекаКартинок.Предупреждение32);
|
|
||||||
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СоединенияИБКлиент.СобытиеЖурналаРегистрации(),
|
|
||||||
"Ошибка", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),, Истина);
|
|
||||||
Оповестить("ЗавершениеРаботыПользователей", Новый Структура("Статус,КоличествоСеансов", "Ошибка", КоличествоСеансов));
|
|
||||||
Возврат;
|
|
||||||
КонецПопытки;
|
|
||||||
|
|
||||||
СоединенияИБКлиент.УстановитьПризнакРаботаПользователейЗавершается(Ложь);
|
|
||||||
ПоказатьОповещениеПользователя(НСтр("ru = 'Завершение работы пользователей'"),
|
|
||||||
"e1cib/app/Обработка.БлокировкаРаботыПользователей",
|
|
||||||
НСтр("ru = 'Завершение сеансов выполнено успешно'"), БиблиотекаКартинок.Информация32);
|
|
||||||
Оповестить("ЗавершениеРаботыПользователей", Новый Структура("Статус,КоличествоСеансов", "Готово", КоличествоСеансов));
|
|
||||||
СоединенияИБКлиент.ЗавершитьРаботуЭтогоСеанса();
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
#КонецОбласти
|
|
||||||
@@ -48,19 +48,11 @@
|
|||||||
Процедура УстановитьРежимЗавершенияРаботыПользователей(Знач ЗавершитьРаботу) Экспорт
|
Процедура УстановитьРежимЗавершенияРаботыПользователей(Знач ЗавершитьРаботу) Экспорт
|
||||||
|
|
||||||
УстановитьПризнакРаботаПользователейЗавершается(ЗавершитьРаботу);
|
УстановитьПризнакРаботаПользователейЗавершается(ЗавершитьРаботу);
|
||||||
|
УстановитьКонтрольЗавершенияРаботыПользователей(Не ЗавершитьРаботу);
|
||||||
|
|
||||||
Если ЗавершитьРаботу Тогда
|
Если ЗавершитьРаботу Тогда
|
||||||
// Поскольку блокировка еще не установлена, то при входе в систему
|
ТекущийРежим = СоединенияИБВызовСервера.ПараметрыБлокировкиСеансов(Истина);
|
||||||
// для данного пользователя был подключен обработчик ожидания завершения работы.
|
ЗавершитьРаботуПользователей(ТекущийРежим);
|
||||||
// Отключаем его. Так как для этого пользователя подключается специализированный обработчик ожидания
|
|
||||||
// "ЗавершитьРаботуПользователей", который ориентирован на то, что данный пользователь
|
|
||||||
// должен быть отключен последним.
|
|
||||||
|
|
||||||
ОтключитьОбработчикОжидания("КонтрольРежимаЗавершенияРаботыПользователей");
|
|
||||||
ПодключитьОбработчикОжидания("ЗавершитьРаботуПользователей", 60);
|
|
||||||
ЗавершитьРаботуПользователей();
|
|
||||||
Иначе
|
|
||||||
ОтключитьОбработчикОжидания("ЗавершитьРаботуПользователей");
|
|
||||||
ПодключитьОбработчикОжидания("КонтрольРежимаЗавершенияРаботыПользователей", 60);
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
@@ -86,29 +78,6 @@
|
|||||||
|
|
||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
// Завершает работу (последнего) сеанса администратора, который инициировал завершение работы пользователей.
|
|
||||||
//
|
|
||||||
Процедура ЗавершитьРаботуЭтогоСеанса(ВыводитьВопрос = Истина) Экспорт
|
|
||||||
|
|
||||||
УстановитьПризнакРаботаПользователейЗавершается(Ложь);
|
|
||||||
ОтключитьОбработчикОжидания("ЗавершитьРаботуПользователей");
|
|
||||||
|
|
||||||
Если ЗавершитьВсеСеансыКромеТекущего() Тогда
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если Не ВыводитьВопрос Тогда
|
|
||||||
ЗавершитьРаботуСистемы(Ложь);
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Оповещение = Новый ОписаниеОповещения("ЗавершитьРаботуЭтогоСеансаЗавершение", ЭтотОбъект);
|
|
||||||
ТекстСообщения = НСтр("ru = 'Работа пользователей с программой запрещена. Завершить работу этого сеанса?'");
|
|
||||||
Заголовок = НСтр("ru = 'Завершение работы текущего сеанса'");
|
|
||||||
ПоказатьВопрос(Оповещение, ТекстСообщения, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да, Заголовок, КодВозвратаДиалога.Да);
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
// Устанавливает значение переменной РаботаПользователейЗавершается в значение Значение.
|
// Устанавливает значение переменной РаботаПользователейЗавершается в значение Значение.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
@@ -138,6 +107,10 @@
|
|||||||
//
|
//
|
||||||
Процедура ПриОбработкеПараметровЗапуска(ПараметрыЗапуска, Отказ) Экспорт
|
Процедура ПриОбработкеПараметровЗапуска(ПараметрыЗапуска, Отказ) Экспорт
|
||||||
|
|
||||||
|
Если Не ПодсистемаИспользуется() Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Отказ = Отказ Или ОбработатьПараметрыЗапуска(ПараметрыЗапуска);
|
Отказ = Отказ Или ОбработатьПараметрыЗапуска(ПараметрыЗапуска);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
@@ -159,6 +132,10 @@
|
|||||||
// См. ОбщегоНазначенияКлиентПереопределяемый.ПослеНачалаРаботыСистемы.
|
// См. ОбщегоНазначенияКлиентПереопределяемый.ПослеНачалаРаботыСистемы.
|
||||||
Процедура ПослеНачалаРаботыСистемы() Экспорт
|
Процедура ПослеНачалаРаботыСистемы() Экспорт
|
||||||
|
|
||||||
|
Если Не ПодсистемаИспользуется() Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
ПараметрыРаботы = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске();
|
ПараметрыРаботы = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске();
|
||||||
Если НЕ ПараметрыРаботы.ДоступноИспользованиеРазделенныхДанных Тогда
|
Если НЕ ПараметрыРаботы.ДоступноИспользованиеРазделенныхДанных Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
@@ -182,7 +159,7 @@
|
|||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПодключитьОбработчикОжидания("КонтрольРежимаЗавершенияРаботыПользователей", 60);
|
УстановитьКонтрольЗавершенияРаботыПользователей(Истина);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
@@ -241,10 +218,248 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// См. СтандартныеПодсистемыКлиент.ПриПолученииСерверногоОповещения
|
||||||
|
Процедура ПриПолученииСерверногоОповещения(ИмяОповещения, Результат) Экспорт
|
||||||
|
|
||||||
|
Если РаботаПользователейЗавершается() Тогда
|
||||||
|
Если Не ПроцедураЗавершитьРаботуПользователейУжеВыполняется() Тогда
|
||||||
|
ЗавершитьРаботуПользователей(Результат);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ИначеЕсли ВключенКонтрольЗавершенияРаботыПользователей() Тогда
|
||||||
|
КонтрольРежимаЗавершенияРаботыПользователей(Результат);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// См. ОбщегоНазначенияКлиентПереопределяемый.ПослеПериодическогоПолученияДанныхКлиентаНаСервере
|
||||||
|
Процедура ПослеПериодическогоПолученияДанныхКлиентаНаСервере(Результаты) Экспорт
|
||||||
|
|
||||||
|
ИмяПараметра = "СтандартныеПодсистемы.ЗавершениеРаботыПользователей.БлокировкаСеансов";
|
||||||
|
Результат = Результаты.Получить(ИмяПараметра);
|
||||||
|
Если Результат = Неопределено Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПриПолученииСерверногоОповещения(ИмяПараметра, Результат);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
Функция ПодсистемаИспользуется()
|
||||||
|
|
||||||
|
// См. также функцию СоединенияИБ.ПодсистемаИспользуется
|
||||||
|
Возврат Не СтандартныеПодсистемыКлиент.ПараметрКлиента("РазделениеВключено");
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура УстановитьКонтрольЗавершенияРаботыПользователей(Значение = Истина)
|
||||||
|
|
||||||
|
ИмяПараметра = "СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей";
|
||||||
|
Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда
|
||||||
|
ПараметрыПриложения.Вставить(ИмяПараметра, Новый Структура);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"].Вставить("ВыполнятьКонтрольЗавершенияРаботыПользователей", Значение);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция ВключенКонтрольЗавершенияРаботыПользователей()
|
||||||
|
|
||||||
|
ПараметрыЗавершенияРаботыПользователей = ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"];
|
||||||
|
|
||||||
|
Возврат ТипЗнч(ПараметрыЗавершенияРаботыПользователей) = Тип("Структура")
|
||||||
|
И ПараметрыЗавершенияРаботыПользователей.Свойство("ВыполнятьКонтрольЗавершенияРаботыПользователей")
|
||||||
|
И ПараметрыЗавершенияРаботыПользователей.ВыполнятьКонтрольЗавершенияРаботыПользователей;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура УстановитьПроцедураЗавершитьРаботуПользователейУжеВыполняется(Значение = Истина)
|
||||||
|
|
||||||
|
ИмяПараметра = "СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей";
|
||||||
|
Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда
|
||||||
|
ПараметрыПриложения.Вставить(ИмяПараметра, Новый Структура);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"].Вставить("ПроцедураЗавершитьРаботуПользователейУжеВыполняется", Значение);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция ПроцедураЗавершитьРаботуПользователейУжеВыполняется()
|
||||||
|
|
||||||
|
ПараметрыЗавершенияРаботыПользователей = ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"];
|
||||||
|
|
||||||
|
Возврат ТипЗнч(ПараметрыЗавершенияРаботыПользователей) = Тип("Структура")
|
||||||
|
И ПараметрыЗавершенияРаботыПользователей.Свойство("ПроцедураЗавершитьРаботуПользователейУжеВыполняется")
|
||||||
|
И ПараметрыЗавершенияРаботыПользователей.ПроцедураЗавершитьРаботуПользователейУжеВыполняется;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Выполнить завершение текущего сеанса, если установлена блокировка соединений
|
||||||
|
// с информационной базой.
|
||||||
|
//
|
||||||
|
Процедура КонтрольРежимаЗавершенияРаботыПользователей(ТекущийРежим)
|
||||||
|
|
||||||
|
БлокировкаУстановлена = ТекущийРежим.Установлена;
|
||||||
|
|
||||||
|
Если Не БлокировкаУстановлена Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ВремяНачалаБлокировки = ТекущийРежим.Начало;
|
||||||
|
ВремяОкончанияБлокировки = ТекущийРежим.Конец;
|
||||||
|
|
||||||
|
// ИнтервалЗакрытьСЗапросом и ИнтервалПрекратить имеют отрицательное значение,
|
||||||
|
// поэтому, когда идет сравнение этих параметров с разницей (ВремяНачалаБлокировки - ТекущийМомент),
|
||||||
|
// то используется "<=", так как данная разница постоянно уменьшается.
|
||||||
|
ИнтервалПредупреждения = ТекущийРежим.ИнтервалОжиданияЗавершенияРаботыПользователей;
|
||||||
|
ИнтервалЗакрытьСЗапросом = ИнтервалПредупреждения / 3;
|
||||||
|
ИнтервалПрекратитьВМоделиСервиса = 60; // За минуту до начала блокировки.
|
||||||
|
ИнтервалПрекратить = 0; // В момент установки блокировки.
|
||||||
|
ТекущийМомент = ТекущийРежим.ТекущаяДатаСеанса;
|
||||||
|
|
||||||
|
Если ВремяОкончанияБлокировки <> '00010101' И ТекущийМомент > ВремяОкончанияБлокировки Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ДатаВремениНачалаБлокировки = Формат(ВремяНачалаБлокировки, "ДЛФ=DD");
|
||||||
|
ВремяВремениНачалаБлокировки = Формат(ВремяНачалаБлокировки, "ДЛФ=T");
|
||||||
|
|
||||||
|
ТекстСообщения = СоединенияИБКлиентСервер.ИзвлечьСообщениеБлокировки(ТекущийРежим.Сообщение);
|
||||||
|
Шаблон = НСтр("ru = 'Рекомендуется завершить текущую работу и сохранить все свои данные. Работа программы будет завершена %1 в %2.
|
||||||
|
|%3'");
|
||||||
|
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, ДатаВремениНачалаБлокировки, ВремяВремениНачалаБлокировки, ТекстСообщения);
|
||||||
|
|
||||||
|
РазделениеВключено = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().РазделениеВключено;
|
||||||
|
Если Не РазделениеВключено
|
||||||
|
И (Не ЗначениеЗаполнено(ВремяНачалаБлокировки) Или ВремяНачалаБлокировки - ТекущийМомент < ИнтервалПрекратить) Тогда
|
||||||
|
|
||||||
|
СтандартныеПодсистемыКлиент.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы();
|
||||||
|
ЗавершитьРаботуСистемы(Ложь, ТекущийРежим.ПерезапуститьПриЗавершении);
|
||||||
|
|
||||||
|
ИначеЕсли РазделениеВключено
|
||||||
|
И (Не ЗначениеЗаполнено(ВремяНачалаБлокировки) Или ВремяНачалаБлокировки - ТекущийМомент < ИнтервалПрекратитьВМоделиСервиса) Тогда
|
||||||
|
|
||||||
|
СтандартныеПодсистемыКлиент.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы();
|
||||||
|
ЗавершитьРаботуСистемы(Ложь, Ложь);
|
||||||
|
|
||||||
|
ИначеЕсли ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалЗакрытьСЗапросом Тогда
|
||||||
|
|
||||||
|
ЗадатьВопросПриЗавершенииРаботы(ТекстСообщения, ВремяНачалаБлокировки);
|
||||||
|
|
||||||
|
ИначеЕсли ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалПредупреждения Тогда
|
||||||
|
|
||||||
|
ПоказатьПредупреждениеПриЗавершенииРаботы(ТекстСообщения, ВремяНачалаБлокировки);
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Выполнить завершение активных сеансов, если превышено время ожидания, а затем
|
||||||
|
// завершить текущий сеанс.
|
||||||
|
//
|
||||||
|
Процедура ЗавершитьРаботуПользователей(ТекущийРежим)
|
||||||
|
|
||||||
|
ВремяНачалаБлокировки = ТекущийРежим.Начало;
|
||||||
|
ТекущийМомент = ТекущийРежим.ТекущаяДатаСеанса;
|
||||||
|
КоличествоСеансов = ТекущийРежим.КоличествоСеансов;
|
||||||
|
|
||||||
|
Если ТекущийМомент < ВремяНачалаБлокировки Тогда
|
||||||
|
ТекстСообщения = НСтр("ru = 'Блокировка работы пользователей запланирована на %1.'");
|
||||||
|
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ВремяНачалаБлокировки);
|
||||||
|
ПоказатьОповещениеПользователя(НСтр("ru = 'Завершение работы пользователей'"),
|
||||||
|
"e1cib/app/Обработка.БлокировкаРаботыПользователей",
|
||||||
|
ТекстСообщения, БиблиотекаКартинок.Информация32);
|
||||||
|
Оповестить("ЗавершениеРаботыПользователей",
|
||||||
|
Новый Структура("Статус, КоличествоСеансов", "Обновление", КоличествоСеансов));
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если КоличествоСеансов <= 1 Тогда
|
||||||
|
// Отключены все пользователи, кроме текущего сеанса.
|
||||||
|
// В последнюю очередь предлагаем завершить сеанс, запущенный с параметром "ЗавершитьРаботуПользователей".
|
||||||
|
// Такой порядок отключений необходим для обновления конфигурации с помощью пакетного файла.
|
||||||
|
УстановитьПризнакРаботаПользователейЗавершается(Ложь);
|
||||||
|
Оповестить("ЗавершениеРаботыПользователей",
|
||||||
|
Новый Структура("Статус, КоличествоСеансов", "Готово", КоличествоСеансов));
|
||||||
|
ЗавершитьРаботуЭтогоСеанса();
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
БлокировкаУстановлена = ТекущийРежим.Установлена;
|
||||||
|
Если Не БлокировкаУстановлена Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
// Если информационная база файловая, то часть соединений не может быть завершена принудительно.
|
||||||
|
Если СтандартныеПодсистемыКлиент.ПараметрКлиента("ИнформационнаяБазаФайловая") Тогда
|
||||||
|
Оповестить("ЗавершениеРаботыПользователей",
|
||||||
|
Новый Структура("Статус, КоличествоСеансов", "Обновление", КоличествоСеансов));
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
// После начала блокировки сеансы всех пользователей должны быть отключены
|
||||||
|
// если этого не произошло пробуем принудительно прервать соединения.
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
ПараметрыАдминистрирования = СохраненныеПараметрыАдминистрирования();
|
||||||
|
Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() Тогда
|
||||||
|
СоединенияИБВызовСервера.УдалитьВсеСеансыКромеТекущего(ПараметрыАдминистрирования);
|
||||||
|
Иначе
|
||||||
|
СоединенияИБКлиентСервер.УдалитьВсеСеансыКромеТекущего(ПараметрыАдминистрирования);
|
||||||
|
КонецЕсли;
|
||||||
|
СохранитьПараметрыАдминистрирования(Неопределено);
|
||||||
|
Исключение
|
||||||
|
УстановитьПризнакРаботаПользователейЗавершается(Ложь);
|
||||||
|
ПоказатьОповещениеПользователя(НСтр("ru = 'Завершение работы пользователей'"),
|
||||||
|
"e1cib/app/Обработка.БлокировкаРаботыПользователей",
|
||||||
|
НСтр("ru = 'Завершение сеансов не выполнено. Подробности см. в Журнале регистрации.'"),
|
||||||
|
БиблиотекаКартинок.Предупреждение32);
|
||||||
|
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(),
|
||||||
|
"Ошибка", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),, Истина);
|
||||||
|
Оповестить("ЗавершениеРаботыПользователей",
|
||||||
|
Новый Структура("Статус,КоличествоСеансов", "Ошибка", КоличествоСеансов));
|
||||||
|
Возврат;
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
УстановитьПризнакРаботаПользователейЗавершается(Ложь);
|
||||||
|
ПоказатьОповещениеПользователя(НСтр("ru = 'Завершение работы пользователей'"),
|
||||||
|
"e1cib/app/Обработка.БлокировкаРаботыПользователей",
|
||||||
|
НСтр("ru = 'Завершение сеансов выполнено успешно'"),
|
||||||
|
БиблиотекаКартинок.Информация32);
|
||||||
|
Оповестить("ЗавершениеРаботыПользователей",
|
||||||
|
Новый Структура("Статус,КоличествоСеансов", "Готово", КоличествоСеансов));
|
||||||
|
ЗавершитьРаботуЭтогоСеанса();
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Завершает работу (последнего) сеанса администратора, который инициировал завершение работы пользователей.
|
||||||
|
//
|
||||||
|
Процедура ЗавершитьРаботуЭтогоСеанса(ВыводитьВопрос = Истина)
|
||||||
|
|
||||||
|
УстановитьПризнакРаботаПользователейЗавершается(Ложь);
|
||||||
|
|
||||||
|
Если ЗавершитьВсеСеансыКромеТекущего() Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ВыводитьВопрос Тогда
|
||||||
|
ЗавершитьРаботуСистемы(Ложь);
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
УстановитьПроцедураЗавершитьРаботуПользователейУжеВыполняется(Истина);
|
||||||
|
|
||||||
|
Оповещение = Новый ОписаниеОповещения("ЗавершитьРаботуЭтогоСеансаЗавершение", ЭтотОбъект);
|
||||||
|
ТекстСообщения = НСтр("ru = 'Работа пользователей с программой запрещена. Завершить работу этого сеанса?'");
|
||||||
|
Заголовок = НСтр("ru = 'Завершение работы текущего сеанса'");
|
||||||
|
ПоказатьВопрос(Оповещение, ТекстСообщения, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да, Заголовок, КодВозвратаДиалога.Да);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Обработчики событий подсистемы БазоваяФункциональность.
|
// Обработчики событий подсистемы БазоваяФункциональность.
|
||||||
|
|
||||||
@@ -268,7 +483,7 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СохраненныеПараметрыАдминистрирования() Экспорт
|
Функция СохраненныеПараметрыАдминистрирования()
|
||||||
|
|
||||||
ПараметрыЗавершенияРаботыПользователей = ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"];
|
ПараметрыЗавершенияРаботыПользователей = ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыЗавершенияРаботыПользователей"];
|
||||||
ПараметрыАдминистрирования = Неопределено;
|
ПараметрыАдминистрирования = Неопределено;
|
||||||
@@ -362,26 +577,66 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПоказатьПредупреждениеПриЗавершенииРаботы(ТекстСообщения) Экспорт
|
Процедура ПоказатьПредупреждениеПриЗавершенииРаботы(ТекстСообщения, ВремяНачалаБлокировки)
|
||||||
|
|
||||||
ИмяПараметра = "СтандартныеПодсистемы.ПоказаноПредупреждениеПередЗавершениемРаботы";
|
ПараметрыИнформирования = ПараметрыИнформирования(ВремяНачалаБлокировки);
|
||||||
Если ПараметрыПриложения[ИмяПараметра] <> Истина Тогда
|
Если Не ПараметрыИнформирования.ОповещениеПоказано Тогда
|
||||||
ПоказатьОповещениеПользователя(НСтр("ru = 'Работа программы будет завершена'"),, ТекстСообщения,,
|
ПоказатьОповещениеПользователя(НСтр("ru = 'Работа программы будет завершена'"),, ТекстСообщения,,
|
||||||
СтатусОповещенияПользователя.Важное);
|
СтатусОповещенияПользователя.Важное);
|
||||||
ПараметрыПриложения.Вставить(ИмяПараметра, Истина);
|
КонецЕсли;
|
||||||
КонецЕсли;
|
|
||||||
|
Если Не ПараметрыИнформирования.ПоказатьПредупреждениеИлиВопрос Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
ПоказатьПредупреждение(, ТекстСообщения, 30);
|
ПоказатьПредупреждение(, ТекстСообщения, 30);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ЗадатьВопросПриЗавершенииРаботы(ТекстСообщения) Экспорт
|
// Возвращаемое значение:
|
||||||
|
// Структура:
|
||||||
|
// * ОповещениеПоказано - Булево
|
||||||
|
// * ПоказатьПредупреждениеИлиВопрос - Булево
|
||||||
|
//
|
||||||
|
Функция ПараметрыИнформирования(ВремяНачалаБлокировки)
|
||||||
|
|
||||||
ИмяПараметра = "СтандартныеПодсистемы.ПоказаноПредупреждениеПередЗавершениемРаботы";
|
ИмяПараметра = "СтандартныеПодсистемы.ПоказаноПредупреждениеПередЗавершениемРаботы";
|
||||||
Если ПараметрыПриложения[ИмяПараметра] <> Истина Тогда
|
Свойства = ПараметрыПриложения[ИмяПараметра];
|
||||||
ПоказатьОповещениеПользователя(НСтр("ru = 'Работа программы будет завершена'"),, ТекстСообщения,, СтатусОповещенияПользователя.Важное);
|
Если Свойства = Неопределено Или Свойства.ВремяНачалаБлокировки <> ВремяНачалаБлокировки Тогда
|
||||||
ПараметрыПриложения.Вставить("СтандартныеПодсистемы.ПоказаноПредупреждениеПередЗавершениемРаботы", Истина);
|
Свойства = Новый Структура;
|
||||||
КонецЕсли;
|
Свойства.Вставить("ОповещениеПоказано", Ложь);
|
||||||
|
Свойства.Вставить("ПоказатьПредупреждениеИлиВопрос", Ложь);
|
||||||
|
Свойства.Вставить("ДатаПоследнегоПредупрежденияИлиВопроса", '00010101');
|
||||||
|
Свойства.Вставить("ВремяНачалаБлокировки", ВремяНачалаБлокировки);
|
||||||
|
ПараметрыПриложения.Вставить(ИмяПараметра, Свойства);
|
||||||
|
Иначе
|
||||||
|
Свойства.ОповещениеПоказано = Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||||
|
Если Свойства.ДатаПоследнегоПредупрежденияИлиВопроса + 50 < ДатаСеанса Тогда
|
||||||
|
Свойства.ДатаПоследнегоПредупрежденияИлиВопроса = ДатаСеанса;
|
||||||
|
Свойства.ПоказатьПредупреждениеИлиВопрос = Истина;
|
||||||
|
Иначе
|
||||||
|
Свойства.ПоказатьПредупреждениеИлиВопрос = Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Свойства;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ЗадатьВопросПриЗавершенииРаботы(ТекстСообщения, ВремяНачалаБлокировки)
|
||||||
|
|
||||||
|
ПараметрыИнформирования = ПараметрыИнформирования(ВремяНачалаБлокировки);
|
||||||
|
Если Не ПараметрыИнформирования.ОповещениеПоказано Тогда
|
||||||
|
ПоказатьОповещениеПользователя(НСтр("ru = 'Работа программы будет завершена'"),, ТекстСообщения,,
|
||||||
|
СтатусОповещенияПользователя.Важное);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ПараметрыИнформирования.ПоказатьПредупреждениеИлиВопрос Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
ТекстВопроса = НСтр("ru = '%1
|
ТекстВопроса = НСтр("ru = '%1
|
||||||
|Завершить работу?'");
|
|Завершить работу?'");
|
||||||
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, ТекстСообщения);
|
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, ТекстСообщения);
|
||||||
@@ -406,6 +661,8 @@
|
|||||||
ЗавершитьРаботуСистемы(Ложь);
|
ЗавершитьРаботуСистемы(Ложь);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
УстановитьПроцедураЗавершитьРаботуПользователейУжеВыполняется(Ложь);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
// Обработать параметры запуска, связанные с завершением и разрешением соединений ИБ.
|
// Обработать параметры запуска, связанные с завершением и разрешением соединений ИБ.
|
||||||
@@ -470,8 +727,8 @@
|
|||||||
ПараметрыЗапускаУточненные = ПараметрыЗапускаУточненные(ПараметрыЗапуска, ДополнительныеПараметры);
|
ПараметрыЗапускаУточненные = ПараметрыЗапускаУточненные(ПараметрыЗапуска, ДополнительныеПараметры);
|
||||||
ЗаполнитьПараметрыАдминистрированияКластера(ПараметрыЗапускаУточненные);
|
ЗаполнитьПараметрыАдминистрированияКластера(ПараметрыЗапускаУточненные);
|
||||||
|
|
||||||
ПодключитьОбработчикОжидания("ЗавершитьРаботуПользователей", 60);
|
ТекущийРежим = СоединенияИБВызовСервера.ПараметрыБлокировкиСеансов(Истина);
|
||||||
ЗавершитьРаботуПользователей();
|
ЗавершитьРаботуПользователей(ТекущийРежим);
|
||||||
Возврат Ложь;
|
Возврат Ложь;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|||||||
@@ -220,57 +220,6 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
// Вызывается из обработчика ожидания каждые 20 минут, например, для контроля
|
|
||||||
// динамического обновления и окончания срока действия учетной записи пользователя.
|
|
||||||
//
|
|
||||||
// Параметры:
|
|
||||||
// Параметры - Структура - в структуру следует вставить свойства для дальнейшего анализа на клиенте.
|
|
||||||
//
|
|
||||||
Процедура ПриВыполненииСтандартныхПериодическихПроверокНаСервере(Параметры) Экспорт
|
|
||||||
|
|
||||||
КонфигурацияБазыДанныхИзмененаДинамически = КонфигурацияБазыДанныхИзмененаДинамически();
|
|
||||||
Параметры.Вставить("КонфигурацияБазыДанныхИзмененаДинамически", КонфигурацияБазыДанныхИзмененаДинамически
|
|
||||||
Или Справочники.ВерсииРасширений.РасширенияИзмененыДинамически());
|
|
||||||
|
|
||||||
ДинамическиеИзменения = Справочники.ВерсииРасширений.ДинамическиИзмененныеРасширения();
|
|
||||||
|
|
||||||
МожноОповещать = Истина;
|
|
||||||
Если ДинамическиеИзменения.Исправления <> Неопределено
|
|
||||||
И ДинамическиеИзменения.Расширения = Неопределено
|
|
||||||
И Не КонфигурацияБазыДанныхИзмененаДинамически Тогда
|
|
||||||
// Изменился только состав исправлений, необходимо проверить возможность отображения оповещения.
|
|
||||||
Если ДинамическиеИзменения.Исправления.Добавлено <> 0
|
|
||||||
И ДинамическиеИзменения.Исправления.Удалено = 0 Тогда
|
|
||||||
РасписаниеОповещения = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить("КонтрольДинамическогоОбновления", "РасписаниеПроверкиПатчей");
|
|
||||||
Если ТипЗнч(РасписаниеОповещения) = Тип("Структура")
|
|
||||||
И РасписаниеОповещения.Свойство("Расписание")
|
|
||||||
И ТипЗнч(РасписаниеОповещения.Расписание) = Тип("РасписаниеРегламентногоЗадания") Тогда
|
|
||||||
ТекущаяДатаСеанса = ТекущаяДатаСеанса();
|
|
||||||
МожноОповещать = РасписаниеОповещения.Расписание.ТребуетсяВыполнение(ТекущаяДатаСеанса, РасписаниеОповещения.ПоследнееОповещение);
|
|
||||||
Если МожноОповещать Тогда
|
|
||||||
РасписаниеОповещения.ПоследнееОповещение = ТекущаяДатаСеанса;
|
|
||||||
ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить("КонтрольДинамическогоОбновления", "РасписаниеПроверкиПатчей", РасписаниеОповещения);
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ДинамическиеИзменения.Вставить("КонфигурацияБазыДанныхИзмененаДинамически", КонфигурацияБазыДанныхИзмененаДинамически);
|
|
||||||
СообщениеПользователю = СтандартныеПодсистемыСервер.ТекстСообщенияПриДинамическомОбновлении(ДинамическиеИзменения);
|
|
||||||
ОповещатьПользователя = СтандартныеПодсистемыСервер.ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммы();
|
|
||||||
ДинамическиеИзменения.Вставить("СообщениеПользователю", СообщениеПользователю);
|
|
||||||
ДинамическиеИзменения.Вставить("ОповещатьПользователя", ОповещатьПользователя И МожноОповещать);
|
|
||||||
Параметры.Вставить("ДинамическиеИзмененияКонфигурации", ДинамическиеИзменения);
|
|
||||||
|
|
||||||
ПользователиСлужебный.ПриВыполненииСтандартныхПериодическихПроверокНаСервере(Параметры);
|
|
||||||
|
|
||||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
|
|
||||||
МодульЦентрМониторингаСлужебный = ОбщегоНазначения.ОбщийМодуль("ЦентрМониторингаСлужебный");
|
|
||||||
МодульЦентрМониторингаСлужебный.ПриВыполненииСтандартныхПериодическихПроверокНаСервере(Параметры.ЦентрМониторинга);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
// Возвращает полное имя объекта метаданных по его типу.
|
// Возвращает полное имя объекта метаданных по его типу.
|
||||||
Функция ПолноеИмяОбъектаМетаданных(Тип) Экспорт
|
Функция ПолноеИмяОбъектаМетаданных(Тип) Экспорт
|
||||||
ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип);
|
ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип);
|
||||||
|
|||||||
@@ -8,15 +8,6 @@
|
|||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
// Вызывается каждые 20 минут, например, для контроля динамического обновления и
|
|
||||||
// окончания срока действия учетной записи пользователя.
|
|
||||||
//
|
|
||||||
Процедура ОбработчикОжиданияСтандартныхПериодическихПроверок() Экспорт
|
|
||||||
|
|
||||||
СтандартныеПодсистемыКлиент.ПриВыполненииСтандартныхПериодическихПроверок();
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
// Продолжает запуск в режиме интерактивного взаимодействия с пользователем.
|
// Продолжает запуск в режиме интерактивного взаимодействия с пользователем.
|
||||||
Процедура ОбработчикОжиданияНачатьИнтерактивнуюОбработкуПередНачаломРаботыСистемы() Экспорт
|
Процедура ОбработчикОжиданияНачатьИнтерактивнуюОбработкуПередНачаломРаботыСистемы() Экспорт
|
||||||
|
|
||||||
|
|||||||
@@ -529,6 +529,41 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
#Область ДляВызоваИзДругихПодсистем
|
||||||
|
|
||||||
|
// Вызывается при получении оповещений от сервера.
|
||||||
|
// Оповещения отправляются на сервере в процедурах ПриОтправкеСерверногоОповещения.
|
||||||
|
// Список оповещений смотри в ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// ИмяОповещения - см. СерверныеОповещения.ОтправитьСерверноеОповещение.ИмяОповещения
|
||||||
|
// Результат - см. СерверныеОповещения.ОтправитьСерверноеОповещение.Результат
|
||||||
|
//
|
||||||
|
// Пример:
|
||||||
|
// Если ИмяОповещения <> "СтандартныеПодсистемы.ЗавершениеРаботыПользователей.БлокировкаСеансов" Тогда
|
||||||
|
// Возврат;
|
||||||
|
// КонецЕсли;
|
||||||
|
// Если РаботаПользователейЗавершается() Тогда
|
||||||
|
// ЗавершитьРаботуПользователей(Результат);
|
||||||
|
// ИначеЕсли ВключенКонтрольЗавершенияРаботыПользователей() Тогда
|
||||||
|
// КонтрольРежимаЗавершенияРаботыПользователей(Результат);
|
||||||
|
// КонецЕсли;
|
||||||
|
//
|
||||||
|
Процедура ПриПолученииСерверногоОповещения(ИмяОповещения, Результат) Экспорт
|
||||||
|
|
||||||
|
Если ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.ИзмененаКонфигурацияИлиРасширения" Тогда
|
||||||
|
ПоказатьОповещениеПользователя(
|
||||||
|
НСтр("ru = 'Установлено обновление программы'"),
|
||||||
|
"e1cib/app/ОбщаяФорма.КонтрольДинамическогоОбновления",
|
||||||
|
Результат, БиблиотекаКартинок.Предупреждение32,
|
||||||
|
СтатусОповещенияПользователя.Важное,
|
||||||
|
"УстановленоОбновлениеПрограммы");
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
@@ -1867,8 +1902,6 @@
|
|||||||
ПодключитьОбработчикОжидания("ПоказатьРекомендациюПоОбъемуОперативнойПамяти", 10, Истина);
|
ПодключитьОбработчикОжидания("ПоказатьРекомендациюПоОбъемуОперативнойПамяти", 10, Истина);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПодключитьОбработчикОжиданияСтандартныхПериодическихПроверок();
|
|
||||||
|
|
||||||
Если ВыводитьПредупрежденияПередЗавершениемРаботыСистемы(Ложь) Тогда
|
Если ВыводитьПредупрежденияПередЗавершениемРаботыСистемы(Ложь) Тогда
|
||||||
// Предварительная компиляция клиентских модулей для избежания неявных серверных вызовов
|
// Предварительная компиляция клиентских модулей для избежания неявных серверных вызовов
|
||||||
// в обработчике ПередЗавершениемРаботыСистемы.
|
// в обработчике ПередЗавершениемРаботыСистемы.
|
||||||
@@ -1877,78 +1910,6 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
// Вызывается из обработчика ожидания каждые 20 минут, например, для контроля
|
|
||||||
// динамического обновления и окончания срока действия учетной записи пользователя.
|
|
||||||
//
|
|
||||||
Процедура ПриВыполненииСтандартныхПериодическихПроверок() Экспорт
|
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
|
||||||
|
|
||||||
ПодсистемаЦентрМониторингаСуществует = Ложь;
|
|
||||||
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
|
|
||||||
ПодсистемаЦентрМониторингаСуществует = Истина;
|
|
||||||
МодульЦентрМониторингаКлиентСлужебный = ОбщегоНазначенияКлиент.ОбщийМодуль("ЦентрМониторингаКлиентСлужебный");
|
|
||||||
МодульЦентрМониторингаКлиентСлужебный.ПриВыполненииСтандартныхПериодическихПроверокНаКлиенте(Параметры);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
СтандартныеПодсистемыВызовСервера.ПриВыполненииСтандартныхПериодическихПроверокНаСервере(Параметры);
|
|
||||||
|
|
||||||
Если ПодсистемаЦентрМониторингаСуществует Тогда
|
|
||||||
МодульЦентрМониторингаКлиентСлужебный.ПослеВыполненияСтандартныхПериодическихПроверокНаКлиенте(Параметры);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Контекст = Новый Структура("Параметры", Параметры);
|
|
||||||
|
|
||||||
ОбработкаПродолжения = Новый ОписаниеОповещения(
|
|
||||||
"ПриВыполненииСтандартныхПериодическихПроверокПодсистемаПользователи", ЭтотОбъект, Контекст);
|
|
||||||
|
|
||||||
Если Не Параметры.ДинамическиеИзмененияКонфигурации.ОповещатьПользователя
|
|
||||||
Или Не Параметры.КонфигурацияБазыДанныхИзмененаДинамически Тогда
|
|
||||||
ВыполнитьОбработкуОповещения(ОбработкаПродолжения);
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ИмяПараметра = "СтандартныеПодсистемы.ПриВыполненииСтандартныхПериодическихПроверок";
|
|
||||||
Если ПараметрыПриложения[ИмяПараметра] <> Неопределено Тогда
|
|
||||||
ДатаСохраненная = ПараметрыПриложения[ИмяПараметра];
|
|
||||||
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
|
|
||||||
Если ТипЗнч(ДатаСохраненная) = Тип("Дата") И ДеньГода(ДатаСохраненная) = ДеньГода(ДатаСеанса) Тогда
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
СообщениеПользователю = СтрЗаменить(Параметры.ДинамическиеИзмененияКонфигурации.СообщениеПользователю, "Ссылка", "");
|
|
||||||
ПоказатьОповещениеПользователя(НСтр("ru = 'Установлено обновление программы'"), "e1cib/app/ОбщаяФорма.КонтрольДинамическогоОбновления",
|
|
||||||
СообщениеПользователю, БиблиотекаКартинок.Предупреждение32, СтатусОповещенияПользователя.Важное,
|
|
||||||
"УстановленоОбновлениеПрограммы");
|
|
||||||
|
|
||||||
ВыполнитьОбработкуОповещения(ОбработкаПродолжения);
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
// Продолжение процедуры ПриВыполненииСтандартныхПериодическихПроверок.
|
|
||||||
//
|
|
||||||
// Параметры:
|
|
||||||
// Результат - Произвольный
|
|
||||||
// Контекст - Структура
|
|
||||||
//
|
|
||||||
Процедура ПриВыполненииСтандартныхПериодическихПроверокПодсистемаПользователи(Результат, Контекст) Экспорт
|
|
||||||
|
|
||||||
ОбработкаПродолжения = Новый ОписаниеОповещения(
|
|
||||||
"ПриВыполненииСтандартныхПериодическихПроверокПодсистемаПользователиЗавершение", ЭтотОбъект, Контекст);
|
|
||||||
|
|
||||||
ПользователиСлужебныйКлиент.ПриВыполненииСтандартныхПериодическихПроверок(
|
|
||||||
Контекст.Параметры, ОбработкаПродолжения);
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
// Продолжение процедуры ПриВыполненииСтандартныхПериодическихПроверок.
|
|
||||||
Процедура ПриВыполненииСтандартныхПериодическихПроверокПодсистемаПользователиЗавершение(Результат, Контекст) Экспорт
|
|
||||||
|
|
||||||
ПодключитьОбработчикОжиданияСтандартныхПериодическихПроверок();
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
Функция ВыводитьПредупрежденияПередЗавершениемРаботыСистемы(Отказ)
|
Функция ВыводитьПредупрежденияПередЗавершениемРаботыСистемы(Отказ)
|
||||||
|
|
||||||
Если ОтключенаЛогикаНачалаРаботыСистемы() Тогда
|
Если ОтключенаЛогикаНачалаРаботыСистемы() Тогда
|
||||||
@@ -2247,13 +2208,6 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Вспомогательные процедуры и функции.
|
// Вспомогательные процедуры и функции.
|
||||||
|
|
||||||
Процедура ПодключитьОбработчикОжиданияСтандартныхПериодическихПроверок()
|
|
||||||
|
|
||||||
// Вызов стандартных периодических проверок 1 раз в 20 минут.
|
|
||||||
ПодключитьОбработчикОжидания("ОбработчикОжиданияСтандартныхПериодическихПроверок", 20 * 60, Истина);
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
Процедура ВойтиВОбластьДанных()
|
Процедура ВойтиВОбластьДанных()
|
||||||
|
|
||||||
Если ПустаяСтрока(ПараметрЗапуска) Тогда
|
Если ПустаяСтрока(ПараметрЗапуска) Тогда
|
||||||
|
|||||||
@@ -593,8 +593,14 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ЭтоФоновоеЗадание() Экспорт
|
Функция ЭтоСеансДлительнойОперации() Экспорт
|
||||||
Возврат ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание() <> Неопределено;
|
|
||||||
|
УстановитьПривилегированныйРежим(Истина);
|
||||||
|
КлючСеансаРодителя = ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить("КлючСеансаРодителя");
|
||||||
|
УстановитьПривилегированныйРежим(Ложь);
|
||||||
|
|
||||||
|
Возврат ЗначениеЗаполнено(КлючСеансаРодителя);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция РазделениеВключено() Экспорт
|
Функция РазделениеВключено() Экспорт
|
||||||
|
|||||||
@@ -503,18 +503,46 @@
|
|||||||
//
|
//
|
||||||
Функция ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммы() Экспорт
|
Функция ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммы() Экспорт
|
||||||
|
|
||||||
Результат = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
Возврат ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммыДляПользователя();
|
||||||
"ОбщиеНастройкиПользователя",
|
|
||||||
"ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммы");
|
|
||||||
|
|
||||||
Если Результат = Неопределено Тогда
|
|
||||||
Результат = Истина;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Возврат Результат;
|
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
#Область ДляВызоваИзДругихПодсистем
|
||||||
|
|
||||||
|
// Вызывается из регламентного задания для отправки серверного оповещения клиентским сеансам.
|
||||||
|
// Смотри также СтандартныеПодсистемыКлиент.ПриПолученииСерверногоОповещения.
|
||||||
|
//
|
||||||
|
// Вызов выполняется с учетом истечения периода, указанного для оповещения.
|
||||||
|
// Смотри ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// ИмяОповещения - Строка - смотри СерверныеОповещения.НовоеСерверноеОповещение.Имя
|
||||||
|
// ВариантыПараметров - Массив из Структура:
|
||||||
|
// * Параметры - Произвольный - смотри СерверныеОповещения.НовоеСерверноеОповещение.Параметры
|
||||||
|
// * Адресаты - Соответствие из КлючИЗначение:
|
||||||
|
// ** Ключ - УникальныйИдентификатор - идентификатор пользователя ИБ
|
||||||
|
// ** Значение - Массив из см. СерверныеОповещения.КлючСеанса
|
||||||
|
//
|
||||||
|
// Пример:
|
||||||
|
// Если ИмяОповещения <> "СтандартныеПодсистемы.ЗавершениеРаботыПользователей.БлокировкаСеансов" Тогда
|
||||||
|
// Возврат;
|
||||||
|
// КонецЕсли;
|
||||||
|
// ПараметрыБлокировкиСеансов = ПараметрыБлокировкиСеансов(Истина);
|
||||||
|
// Если ПараметрыБлокировкиСеансов.Установлена Тогда
|
||||||
|
// СерверныеОповещения.ОтправитьСерверноеОповещение(ИмяОповещения,
|
||||||
|
// ПараметрыБлокировкиСеансов, Неопределено);
|
||||||
|
// КонецЕсли;
|
||||||
|
//
|
||||||
|
Процедура ПриОтправкеСерверногоОповещения(ИмяОповещения, ВариантыПараметров) Экспорт
|
||||||
|
|
||||||
|
Если ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.ИзмененаКонфигурацияИлиРасширения" Тогда
|
||||||
|
ПриОтправкеСерверногоОповещенияИзмененаКонфигурацияИлиРасширения(ИмяОповещения, ВариантыПараметров);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
@@ -1786,6 +1814,20 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений
|
||||||
|
Процедура ПриДобавленииСерверныхОповещений(Оповещения) Экспорт
|
||||||
|
|
||||||
|
Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(
|
||||||
|
"СтандартныеПодсистемы.БазоваяФункциональность.ИзмененаКонфигурацияИлиРасширения");
|
||||||
|
|
||||||
|
Оповещение.ИмяМодуляОтправки = "СтандартныеПодсистемыСервер";
|
||||||
|
Оповещение.ИмяМодуляПолучения = "СтандартныеПодсистемыКлиент";
|
||||||
|
Оповещение.Параметры = ПараметрыПроверкиОповещенияИзмененаКонфигурацияИлиРасширения();
|
||||||
|
|
||||||
|
Оповещения.Вставить(Оповещение.Имя, Оповещение);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
// См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриЗаполненииТиповОбщихДанныхПоддерживающихСопоставлениеСсылокПриЗагрузке.
|
// См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриЗаполненииТиповОбщихДанныхПоддерживающихСопоставлениеСсылокПриЗагрузке.
|
||||||
Процедура ПриЗаполненииТиповОбщихДанныхПоддерживающихСопоставлениеСсылокПриЗагрузке(Типы) Экспорт
|
Процедура ПриЗаполненииТиповОбщихДанныхПоддерживающихСопоставлениеСсылокПриЗагрузке(Типы) Экспорт
|
||||||
|
|
||||||
@@ -1962,13 +2004,17 @@
|
|||||||
|
|
||||||
// Формирует текст для вывода пользователю при необходимости динамического обновления.
|
// Формирует текст для вывода пользователю при необходимости динамического обновления.
|
||||||
//
|
//
|
||||||
|
// Параметры:
|
||||||
|
// ДинамическиеИзмененияКонфигурации - см. Справочники.ВерсииРасширений.ДинамическиИзмененныеРасширения
|
||||||
|
// УточняющаяСсылка - Строка
|
||||||
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка
|
// Строка
|
||||||
//
|
//
|
||||||
Функция ТекстСообщенияПриДинамическомОбновлении(ДинамическиеИзмененияКонфигурации) Экспорт
|
Функция ТекстСообщенияПриДинамическомОбновлении(ДинамическиеИзмененияКонфигурации, УточняющаяСсылка = "") Экспорт
|
||||||
|
|
||||||
Сообщения = Новый Массив;
|
Сообщения = Новый Массив;
|
||||||
ДинамическиеИзмененияКонфигурации = ДинамическиеИзмененияКонфигурации;
|
|
||||||
Если ДинамическиеИзмененияКонфигурации.КонфигурацияБазыДанныхИзмененаДинамически Тогда
|
Если ДинамическиеИзмененияКонфигурации.КонфигурацияБазыДанныхИзмененаДинамически Тогда
|
||||||
ТекстСообщенияКонфигурация = НСтр("ru = 'Версия программы обновлена (внесены изменения в конфигурацию информационной базы).'");
|
ТекстСообщенияКонфигурация = НСтр("ru = 'Версия программы обновлена (внесены изменения в конфигурацию информационной базы).'");
|
||||||
Сообщения.Добавить(ТекстСообщенияКонфигурация);
|
Сообщения.Добавить(ТекстСообщенияКонфигурация);
|
||||||
@@ -1977,11 +2023,11 @@
|
|||||||
Если ДинамическиеИзмененияКонфигурации.Исправления <> Неопределено Тогда
|
Если ДинамическиеИзмененияКонфигурации.Исправления <> Неопределено Тогда
|
||||||
Если ДинамическиеИзмененияКонфигурации.Исправления.Добавлено > 0
|
Если ДинамическиеИзмененияКонфигурации.Исправления.Добавлено > 0
|
||||||
И ДинамическиеИзмененияКонфигурации.Исправления.Удалено > 0 Тогда
|
И ДинамическиеИзмененияКонфигурации.Исправления.Удалено > 0 Тогда
|
||||||
ТекстСообщенияПатчи = НСтр("ru = 'Установлены новые исправления (патчи): %1, удалены: %2.'") + "Ссылка";
|
ТекстСообщенияПатчи = НСтр("ru = 'Установлены новые исправления (патчи): %1, удалены: %2.'") + УточняющаяСсылка;
|
||||||
ИначеЕсли ДинамическиеИзмененияКонфигурации.Исправления.Добавлено = 1 Тогда
|
ИначеЕсли ДинамическиеИзмененияКонфигурации.Исправления.Добавлено = 1 Тогда
|
||||||
ТекстСообщенияПатчи = НСтр("ru = 'Установлено новое исправление (патч).'") + "Ссылка";
|
ТекстСообщенияПатчи = НСтр("ru = 'Установлено новое исправление (патч).'") + УточняющаяСсылка;
|
||||||
ИначеЕсли ДинамическиеИзмененияКонфигурации.Исправления.Добавлено > 0 Тогда
|
ИначеЕсли ДинамическиеИзмененияКонфигурации.Исправления.Добавлено > 0 Тогда
|
||||||
ТекстСообщенияПатчи = НСтр("ru = 'Установлены новые исправления (патчи): %1.'") + "Ссылка";
|
ТекстСообщенияПатчи = НСтр("ru = 'Установлены новые исправления (патчи): %1.'") + УточняющаяСсылка;
|
||||||
ИначеЕсли ДинамическиеИзмененияКонфигурации.Исправления.Удалено > 0 Тогда
|
ИначеЕсли ДинамическиеИзмененияКонфигурации.Исправления.Удалено > 0 Тогда
|
||||||
ТекстСообщенияПатчи = НСтр("ru = 'Удалены исправления (патчи): %2.'");
|
ТекстСообщенияПатчи = НСтр("ru = 'Удалены исправления (патчи): %2.'");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
@@ -2310,6 +2356,12 @@
|
|||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ЭтоВызовПередНачаломРаботыСистемы
|
||||||
|
И Не Параметры.ПолученныеПараметрыКлиента.Свойство("СерверныеОповещения") Тогда
|
||||||
|
|
||||||
|
СерверныеОповещения.ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Если Не Параметры.РазделениеВключено
|
Если Не Параметры.РазделениеВключено
|
||||||
И ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы()
|
И ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы()
|
||||||
И ОбновлениеИнформационнойБазыСлужебный.СтатусНевыполненныхОбработчиков(Истина) = "СтатусНеВыполнено" Тогда
|
И ОбновлениеИнформационнойБазыСлужебный.СтатусНевыполненныхОбработчиков(Истина) = "СтатусНеВыполнено" Тогда
|
||||||
@@ -2536,6 +2588,27 @@
|
|||||||
// АПК:487-вкл
|
// АПК:487-вкл
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Параметры:
|
||||||
|
// ИмяПользователя - Строка
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Булево
|
||||||
|
//
|
||||||
|
Функция ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммыДляПользователя(ИмяПользователя = Неопределено)
|
||||||
|
|
||||||
|
Результат = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||||
|
"ОбщиеНастройкиПользователя",
|
||||||
|
"ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммы",,,
|
||||||
|
ИмяПользователя);
|
||||||
|
|
||||||
|
Если Результат = Неопределено Тогда
|
||||||
|
Результат = Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Результат;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Обновление информационной базы.
|
// Обновление информационной базы.
|
||||||
|
|
||||||
@@ -3091,9 +3164,6 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
|
|
||||||
|
|
||||||
Процедура ПередЗапускомПрограммы()
|
Процедура ПередЗапускомПрограммы()
|
||||||
|
|
||||||
// Привилегированный режим (установлен платформой).
|
// Привилегированный режим (установлен платформой).
|
||||||
@@ -3815,6 +3885,90 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Проверка и отправка серверных оповещений клиенту.
|
||||||
|
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Структура:
|
||||||
|
// * ВерсияКонфигурации - Строка
|
||||||
|
// * УстановленныеРасширенияПриЗапуске - см. Справочники.ВерсииРасширений.УстановленныеРасширенияПриЗапуске
|
||||||
|
//
|
||||||
|
Функция ПараметрыПроверкиОповещенияИзмененаКонфигурацияИлиРасширения()
|
||||||
|
|
||||||
|
Результат = Новый Структура;
|
||||||
|
Результат.Вставить("ВерсияКонфигурации", Метаданные.Версия);
|
||||||
|
Результат.Вставить("УстановленныеРасширенияПриЗапуске",
|
||||||
|
Справочники.ВерсииРасширений.УстановленныеРасширенияПриЗапуске());
|
||||||
|
|
||||||
|
Возврат Результат;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// См. ПриОтправкеСерверногоОповещения
|
||||||
|
Процедура ПриОтправкеСерверногоОповещенияИзмененаКонфигурацияИлиРасширения(ИмяОповещения, ВариантыПараметров)
|
||||||
|
|
||||||
|
Для Каждого ВариантПараметров Из ВариантыПараметров Цикл
|
||||||
|
ВариантПараметров = ВариантПараметров; // Структура
|
||||||
|
КонфигурацияБазыДанныхИзмененаДинамически = ВариантПараметров.Параметры.ВерсияКонфигурации <> Метаданные.Версия;
|
||||||
|
ДинамическиеИзменения = Справочники.ВерсииРасширений.ДинамическиИзмененныеРасширения(
|
||||||
|
ВариантПараметров.Параметры.УстановленныеРасширенияПриЗапуске);
|
||||||
|
Если Не КонфигурацияБазыДанныхИзмененаДинамически
|
||||||
|
И Не ЗначениеЗаполнено(ДинамическиеИзменения.Расширения)
|
||||||
|
И Не ЗначениеЗаполнено(ДинамическиеИзменения.Исправления) Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
Адресаты = Новый Соответствие;
|
||||||
|
Для Каждого Адресат Из ВариантПараметров.Адресаты Цикл
|
||||||
|
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Адресат.Ключ);
|
||||||
|
Если ПользовательИБ = Неопределено Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
ИмяПользователя = ПользовательИБ.Имя;
|
||||||
|
МожноОповещать = ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммыДляПользователя(ИмяПользователя);
|
||||||
|
Если Не МожноОповещать Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
ДатаНапомнитьЗавтра = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(
|
||||||
|
"КонтрольДинамическогоОбновления", "ДатаНапомнитьЗавтра",,, ИмяПользователя);
|
||||||
|
Если ТипЗнч(ДатаНапомнитьЗавтра) = Тип("Дата")
|
||||||
|
И ТекущаяДатаСеанса() < ДатаНапомнитьЗавтра Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
Если ДинамическиеИзменения.Исправления <> Неопределено
|
||||||
|
И ДинамическиеИзменения.Расширения = Неопределено
|
||||||
|
И Не КонфигурацияБазыДанныхИзмененаДинамически
|
||||||
|
// Изменился только состав исправлений, необходимо проверить возможность отображения оповещения.
|
||||||
|
И ДинамическиеИзменения.Исправления.Добавлено <> 0
|
||||||
|
И ДинамическиеИзменения.Исправления.Удалено = 0 Тогда
|
||||||
|
|
||||||
|
РасписаниеОповещения = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(
|
||||||
|
"КонтрольДинамическогоОбновления", "РасписаниеПроверкиПатчей",,, ИмяПользователя);
|
||||||
|
Если ТипЗнч(РасписаниеОповещения) = Тип("Структура")
|
||||||
|
И РасписаниеОповещения.Свойство("Расписание")
|
||||||
|
И ТипЗнч(РасписаниеОповещения.Расписание) = Тип("РасписаниеРегламентногоЗадания") Тогда
|
||||||
|
ТекущаяДатаСеанса = ТекущаяДатаСеанса();
|
||||||
|
МожноОповещать = РасписаниеОповещения.Расписание.ТребуетсяВыполнение(ТекущаяДатаСеанса, РасписаниеОповещения.ПоследнееОповещение);
|
||||||
|
Если МожноОповещать Тогда
|
||||||
|
РасписаниеОповещения.ПоследнееОповещение = ТекущаяДатаСеанса;
|
||||||
|
ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить("КонтрольДинамическогоОбновления",
|
||||||
|
"РасписаниеПроверкиПатчей", РасписаниеОповещения,, ИмяПользователя);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не МожноОповещать Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
Адресаты.Вставить(Адресат.Ключ, Адресат.Значение);
|
||||||
|
КонецЦикла;
|
||||||
|
Если Не ЗначениеЗаполнено(Адресаты) Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
ДинамическиеИзменения.Вставить("КонфигурацияБазыДанныхИзмененаДинамически", КонфигурацияБазыДанныхИзмененаДинамически);
|
||||||
|
СообщениеПользователю = ТекстСообщенияПриДинамическомОбновлении(ДинамическиеИзменения);
|
||||||
|
СерверныеОповещения.ОтправитьСерверноеОповещение(ИмяОповещения, СообщениеПользователю, Адресаты);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
// Многоязычные конфигурации
|
// Многоязычные конфигурации
|
||||||
|
|
||||||
Функция ТребуетсяУстановкаРегиональныхНастроекИнформационнойБазы() Экспорт
|
Функция ТребуетсяУстановкаРегиональныхНастроекИнформационнойБазы() Экспорт
|
||||||
|
|||||||
@@ -89,28 +89,4 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
// Процедура-обработчик, которую можно вызывать в формах расшифровки текущих дел
|
|
||||||
// для переопределения параметров открытия формы и установки необходимых отборов списках формы.
|
|
||||||
//
|
|
||||||
// Параметры:
|
|
||||||
// Форма - ФормаКлиентскогоПриложения - форма, из которой был осуществлен вызов метода.
|
|
||||||
// Список - ДинамическийСписок - список, параметры которого можно переопределить.
|
|
||||||
//
|
|
||||||
Процедура ПриСозданииНаСервере(Форма, Список) Экспорт
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
// Процедура-обработчик, которую можно вызывать в соответствующем обработчике форм
|
|
||||||
// расшифровки текущих дел для замены сохраненных значений реквизитов формы.
|
|
||||||
//
|
|
||||||
// Параметры:
|
|
||||||
// Форма - ФормаКлиентскогоПриложения - форма, из которой был осуществлен вызов метода.
|
|
||||||
// Настройки - Соответствие из КлючЗначение - настройки формы, в которых находятся значения реквизитов:
|
|
||||||
// * Ключ - Строка
|
|
||||||
// * Значение - Произвольный
|
|
||||||
//
|
|
||||||
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Форма, Настройки) Экспорт
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@@ -614,7 +614,7 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
НедоступныеРоли = ПользователиСлужебныйПовтИсп.НедоступныеРолиПоТипуПользователя(
|
НедоступныеРоли = ПользователиСлужебный.НедоступныеРолиПоТипуПользователя(
|
||||||
ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.ВнешниеПользователи"));
|
ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.ВнешниеПользователи"));
|
||||||
|
|
||||||
// Проверка новых ролей.
|
// Проверка новых ролей.
|
||||||
|
|||||||
@@ -851,10 +851,27 @@
|
|||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
// Получим нужные сообщения
|
Попытка
|
||||||
Сообщения = Почта.Выбрать(Ложь,
|
// Получим нужные сообщения
|
||||||
МассивИдентификаторовПорцииДляЗагрузки,
|
Сообщения = Почта.Выбрать(Ложь,
|
||||||
?(ДанныеУчетнойЗаписи.ПротоколВходящейПочты = "IMAP",Ложь, Истина)); // Массив из ИнтернетПочтовоеСообщение
|
МассивИдентификаторовПорцииДляЗагрузки,
|
||||||
|
?(ДанныеУчетнойЗаписи.ПротоколВходящейПочты = "IMAP",Ложь, Истина)); // Массив из ИнтернетПочтовоеСообщение
|
||||||
|
Исключение
|
||||||
|
ТекстОшибкиДляЖурналаРегистрации = РаботаСПочтовымиСообщениями.РасширенноеПредставлениеОшибки(
|
||||||
|
ИнформацияОбОшибке(), ОбщегоНазначения.КодОсновногоЯзыка());
|
||||||
|
|
||||||
|
ТекстОшибкиДляЖурналаРегистрации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||||
|
НСтр("ru = 'Во время подключения к учетной записи %1 произошла ошибка
|
||||||
|
|%2'", ОбщегоНазначения.КодОсновногоЯзыка()),
|
||||||
|
ДанныеУчетнойЗаписи.Ссылка,
|
||||||
|
ТекстОшибкиДляЖурналаРегистрации);
|
||||||
|
|
||||||
|
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(),
|
||||||
|
УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибкиДляЖурналаРегистрации);
|
||||||
|
|
||||||
|
ТекстОшибки = РаботаСПочтовымиСообщениями.РасширенноеПредставлениеОшибки(ИнформацияОбОшибке(), , Ложь);
|
||||||
|
ВызватьИсключение ТекстОшибки;
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
КоличествоНеАктуальныхСообщений = КоличествоНеАктуальныхСообщений + (КоличествоВПорции - Сообщения.Количество());
|
КоличествоНеАктуальныхСообщений = КоличествоНеАктуальныхСообщений + (КоличествоВПорции - Сообщения.Количество());
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
#Область ПрограммныйИнтерфейсБизнесСтатистики
|
#Область ПрограммныйИнтерфейсБизнесСтатистики
|
||||||
|
|
||||||
// Записывает операцию бизнес статистики в кэш на клиенте.
|
// Записывает операцию бизнес статистики в кэш на клиенте.
|
||||||
// Запись в информационную базу происходит по обработчику ОбработчикОжиданияСтандартныхПериодическихПроверок
|
// Запись в информационную базу происходит в обработчике ПриПериодическомПолученииДанныхКлиентаНаСервере
|
||||||
// глобального модуля СтандартныеПодсистемыГлобальный.
|
// общего модуля ОбщегоНазначенияПереопределяемый.
|
||||||
// При закрытии приложения данные не записываются.
|
// При закрытии приложения данные не записываются.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
@@ -34,8 +34,8 @@
|
|||||||
|
|
||||||
// Записывает уникальную операцию бизнес статистики в разрезе часа в кэш на клиенте.
|
// Записывает уникальную операцию бизнес статистики в разрезе часа в кэш на клиенте.
|
||||||
// При записи проверяет уникальность.
|
// При записи проверяет уникальность.
|
||||||
// Запись в информационную базу происходит по обработчику ОбработчикОжиданияСтандартныхПериодическихПроверок
|
// Запись в информационную базу происходит в обработчике ПриПериодическомПолученииДанныхКлиентаНаСервере
|
||||||
// глобального модуля СтандартныеПодсистемыГлобальный.
|
// общего модуля ОбщегоНазначенияПереопределяемый.
|
||||||
// При закрытии приложения данные не записываются.
|
// При закрытии приложения данные не записываются.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
@@ -66,8 +66,8 @@
|
|||||||
|
|
||||||
// Записывает уникальную операцию бизнес статистики в разрезе суток в кэш на клиенте.
|
// Записывает уникальную операцию бизнес статистики в разрезе суток в кэш на клиенте.
|
||||||
// При записи проверяет уникальность.
|
// При записи проверяет уникальность.
|
||||||
// Запись в информационную базу происходит по обработчику ОбработчикОжиданияСтандартныхПериодическихПроверок
|
// Запись в информационную базу происходит в обработчике ПриПериодическомПолученииДанныхКлиентаНаСервере
|
||||||
// глобального модуля СтандартныеПодсистемыГлобальный.
|
// общего модуля ОбщегоНазначенияПереопределяемый.
|
||||||
// При закрытии приложения данные не записываются.
|
// При закрытии приложения данные не записываются.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
|
|||||||
@@ -8,53 +8,69 @@
|
|||||||
|
|
||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
Процедура ПриВыполненииСтандартныхПериодическихПроверокНаКлиенте(Параметры) Экспорт
|
// См. ОбщегоНазначенияКлиентПереопределяемый.ПередПериодическойОтправкойДанныхКлиентаНаСервер
|
||||||
|
Процедура ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры) Экспорт
|
||||||
Окна = ПолучитьОкна();
|
|
||||||
АктивныхОкон = 0;
|
ТекущаяДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||||
|
ПараметрыПриложенияЦентрМониторинга = ПолучитьПараметрыПриложения();
|
||||||
|
|
||||||
|
Если ПараметрыПриложенияЦентрМониторинга["ДатаПоследнегоВызова"] + 20*60 > ТекущаяДатаСеанса Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
ПараметрыПриложенияЦентрМониторинга["ДатаПоследнегоВызова"] = ТекущаяДатаСеанса;
|
||||||
|
|
||||||
|
Окна = ПолучитьОкна();
|
||||||
|
АктивныхОкон = 0;
|
||||||
Если Окна <> Неопределено Тогда
|
Если Окна <> Неопределено Тогда
|
||||||
Для Каждого ТекОкно Из Окна Цикл
|
Для Каждого ТекОкно Из Окна Цикл
|
||||||
Если Не ТекОкно.Основное Тогда
|
Если Не ТекОкно.Основное Тогда
|
||||||
АктивныхОкон = АктивныхОкон + 1;
|
АктивныхОкон = АктивныхОкон + 1;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПараметрыПриложенияЦентрМониторинга = ПолучитьПараметрыПриложения();
|
ПараметрыПриложенияЦентрМониторинга["ИнформацияКлиента"].Вставить("АктивныхОкон", АктивныхОкон);
|
||||||
ПараметрыПриложенияЦентрМониторинга["ИнформацияКлиента"].Вставить("АктивныхОкон", АктивныхОкон);
|
|
||||||
|
Параметры.Вставить("СтандартныеПодсистемы.ЦентрМониторинга",
|
||||||
Параметры.Вставить("ЦентрМониторинга", Новый ФиксированноеСоответствие(ПараметрыПриложенияЦентрМониторинга));
|
Новый ФиксированноеСоответствие(ПараметрыПриложенияЦентрМониторинга));
|
||||||
|
|
||||||
Замеры = Новый Соответствие;
|
Замеры = Новый Соответствие;
|
||||||
Замеры.Вставить(0, Новый Массив);
|
Замеры.Вставить(0, Новый Массив);
|
||||||
Замеры.Вставить(1, Новый Соответствие);
|
Замеры.Вставить(1, Новый Соответствие);
|
||||||
Замеры.Вставить(2, Новый Соответствие);
|
Замеры.Вставить(2, Новый Соответствие);
|
||||||
ПараметрыПриложенияЦентрМониторинга.Вставить("Замеры", Замеры);
|
ПараметрыПриложенияЦентрМониторинга.Вставить("Замеры", Замеры);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПослеВыполненияСтандартныхПериодическихПроверокНаКлиенте(Параметры) Экспорт
|
// См. ОбщегоНазначенияКлиентПереопределяемый.ПослеПериодическогоПолученияДанныхКлиентаНаСервере
|
||||||
|
Процедура ПослеПериодическогоПолученияДанныхКлиентаНаСервере(Результаты) Экспорт
|
||||||
ПараметрыПриложенияЦентрМониторинга = ПолучитьПараметрыПриложения();
|
|
||||||
ПараметрыПриложенияЦентрМониторинга.Вставить("РегистрироватьБизнесСтатистику", Параметры.ЦентрМониторинга["РегистрироватьБизнесСтатистику"]);
|
|
||||||
|
|
||||||
Если Параметры.ЦентрМониторинга.Получить("ЗапросНаПолучениеДампов") = Истина Тогда
|
Результат = Результаты.Получить("СтандартныеПодсистемы.ЦентрМониторинга");
|
||||||
|
Если Результат = Неопределено Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПараметрыПриложенияЦентрМониторинга = ПолучитьПараметрыПриложения();
|
||||||
|
ПараметрыПриложенияЦентрМониторинга.Вставить("РегистрироватьБизнесСтатистику",
|
||||||
|
Результат["РегистрироватьБизнесСтатистику"]);
|
||||||
|
|
||||||
|
Если Результат.Получить("ЗапросНаПолучениеДампов") = Истина Тогда
|
||||||
ОповеститьЗапросНаПолучениеДампов();
|
ОповеститьЗапросНаПолучениеДампов();
|
||||||
УстановитьПараметрыПриложенияЦентрМониторинга("ЗапросПолныхДамповВыведен", Истина);
|
УстановитьПараметрыПриложенияЦентрМониторинга("ЗапросПолныхДамповВыведен", Истина);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
Если Параметры.ЦентрМониторинга.Получить("ЗапросНаПолучениеКонтактов") = Истина Тогда
|
Если Результат.Получить("ЗапросНаПолучениеКонтактов") = Истина Тогда
|
||||||
ОповеститьЗапросКонтактнойИнформации();
|
ОповеститьЗапросКонтактнойИнформации();
|
||||||
УстановитьПараметрыПриложенияЦентрМониторинга("ЗапросНаПолучениеКонтактовВыведен", Истина);
|
УстановитьПараметрыПриложенияЦентрМониторинга("ЗапросНаПолучениеКонтактовВыведен", Истина);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
Если Параметры.ЦентрМониторинга.Получить("ЗапросНаОтправкуДампов") = Истина Тогда
|
Если Результат.Получить("ЗапросНаОтправкуДампов") = Истина Тогда
|
||||||
ИнформацияОДампах = Параметры.ЦентрМониторинга.Получить("ИнформацияОДампах");
|
ИнформацияОДампах = Результат.Получить("ИнформацияОДампах");
|
||||||
// Проверяем, было ли сообщение выведено ранее.
|
// Проверяем, было ли сообщение выведено ранее.
|
||||||
Если ИнформацияОДампах <> ПараметрыПриложенияЦентрМониторинга["ИнформацияОДампах"] Тогда
|
Если ИнформацияОДампах <> ПараметрыПриложенияЦентрМониторинга["ИнформацияОДампах"] Тогда
|
||||||
ОповеститьЗапросНаОтправкуДампов();
|
ОповеститьЗапросНаОтправкуДампов();
|
||||||
УстановитьПараметрыПриложенияЦентрМониторинга("ИнформацияОДампах", ИнформацияОДампах);
|
УстановитьПараметрыПриложенияЦентрМониторинга("ИнформацияОДампах", ИнформацияОДампах);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@@ -104,6 +120,7 @@
|
|||||||
ЦентрМониторингаПараметрыПриложения.Вставить("РегистрироватьБизнесСтатистику", ПараметрыКлиента["РегистрироватьБизнесСтатистику"]);
|
ЦентрМониторингаПараметрыПриложения.Вставить("РегистрироватьБизнесСтатистику", ПараметрыКлиента["РегистрироватьБизнесСтатистику"]);
|
||||||
ЦентрМониторингаПараметрыПриложения.Вставить("ЗапросПолныхДамповВыведен", ПараметрыКлиента["ЗапросПолныхДамповВыведен"]);
|
ЦентрМониторингаПараметрыПриложения.Вставить("ЗапросПолныхДамповВыведен", ПараметрыКлиента["ЗапросПолныхДамповВыведен"]);
|
||||||
ЦентрМониторингаПараметрыПриложения.Вставить("ИнформацияОДампах", ПараметрыКлиента["ИнформацияОДампах"]);
|
ЦентрМониторингаПараметрыПриложения.Вставить("ИнформацияОДампах", ПараметрыКлиента["ИнформацияОДампах"]);
|
||||||
|
ЦентрМониторингаПараметрыПриложения.Вставить("ДатаПоследнегоВызова", ОбщегоНазначенияКлиент.ДатаСеанса());
|
||||||
|
|
||||||
Замеры = Новый Соответствие;
|
Замеры = Новый Соответствие;
|
||||||
Замеры.Вставить(0, Новый Массив);
|
Замеры.Вставить(0, Новый Массив);
|
||||||
|
|||||||
@@ -166,16 +166,25 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПриВыполненииСтандартныхПериодическихПроверокНаСервере(Параметры) Экспорт
|
// См. ОбщегоНазначенияПереопределяемый.ПриПериодическомПолученииДанныхКлиентаНаСервере
|
||||||
|
Процедура ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты) Экспорт
|
||||||
|
|
||||||
Если Параметры["ИнформацияКлиента"]["ПараметрыКлиента"]["РегистрироватьБизнесСтатистику"] Тогда
|
СобранныеПараметры = Параметры.Получить("СтандартныеПодсистемы.ЦентрМониторинга");
|
||||||
|
Если СобранныеПараметры = Неопределено Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Результат = Новый Соответствие;
|
||||||
|
Результаты.Вставить("СтандартныеПодсистемы.ЦентрМониторинга", Результат);
|
||||||
|
|
||||||
|
Если СобранныеПараметры["ИнформацияКлиента"]["ПараметрыКлиента"]["РегистрироватьБизнесСтатистику"] Тогда
|
||||||
|
|
||||||
РегистрироватьБизнесСтатистику = ПолучитьПараметрыЦентраМониторинга("РегистрироватьБизнесСтатистику");
|
РегистрироватьБизнесСтатистику = ПолучитьПараметрыЦентраМониторинга("РегистрироватьБизнесСтатистику");
|
||||||
|
|
||||||
ПараметрыНовые = Новый Соответствие(Параметры);
|
|
||||||
ПараметрыНовые.Вставить("РегистрироватьБизнесСтатистику", РегистрироватьБизнесСтатистику);
|
|
||||||
|
|
||||||
КлючФоновогоЗадания = "ПриВыполненииСтандартныхПериодическихПроверокНаСервереВФоне" + Параметры["ИнформацияКлиента"]["ПараметрыКлиента"]["ХешПользователя"];
|
Результат.Вставить("РегистрироватьБизнесСтатистику", РегистрироватьБизнесСтатистику);
|
||||||
|
|
||||||
|
КлючФоновогоЗадания = "ПриПериодическомПолученииДанныхКлиентаНаСервереВФоне"
|
||||||
|
+ СобранныеПараметры["ИнформацияКлиента"]["ПараметрыКлиента"]["ХешПользователя"];
|
||||||
|
|
||||||
Отбор = Новый Структура;
|
Отбор = Новый Структура;
|
||||||
Отбор.Вставить("Ключ", КлючФоновогоЗадания);
|
Отбор.Вставить("Ключ", КлючФоновогоЗадания);
|
||||||
@@ -185,32 +194,28 @@
|
|||||||
Если АктивныеФоновыеЗадания.Количество() = 0 Тогда
|
Если АктивныеФоновыеЗадания.Количество() = 0 Тогда
|
||||||
|
|
||||||
ПараметрыФоновогоЗадания = Новый Массив;
|
ПараметрыФоновогоЗадания = Новый Массив;
|
||||||
ПараметрыФоновогоЗадания.Добавить(Параметры);
|
ПараметрыФоновогоЗадания.Добавить(СобранныеПараметры);
|
||||||
ФоновыеЗадания.Выполнить("ЦентрМониторингаСлужебный.ПриВыполненииСтандартныхПериодическихПроверокНаСервереВФоне",
|
ФоновыеЗадания.Выполнить("ЦентрМониторингаСлужебный.ПриПериодическомПолученииДанныхКлиентаНаСервереВФоне",
|
||||||
ПараметрыФоновогоЗадания,
|
ПараметрыФоновогоЗадания,
|
||||||
КлючФоновогоЗадания,
|
КлючФоновогоЗадания,
|
||||||
"ЦентрМониторингаСлужебный.ПриВыполненииСтандартныхПериодическихПроверокНаСервере");
|
"ЦентрМониторингаСлужебный.ПриПериодическомПолученииДанныхКлиентаНаСервере");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Параметры = Новый ФиксированноеСоответствие(ПараметрыНовые);
|
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Параметры["ИнформацияКлиента"]["ПараметрыКлиента"]["ВыводитьЗапросПолныхДампов"] Тогда
|
Если СобранныеПараметры["ИнформацияКлиента"]["ПараметрыКлиента"]["ВыводитьЗапросПолныхДампов"] Тогда
|
||||||
|
|
||||||
ПараметрыОповещенияОДампах = ПараметрыОповещенияОДампах();
|
ПараметрыОповещенияОДампах = ПараметрыОповещенияОДампах();
|
||||||
|
|
||||||
ЗапросНаПолучениеДампов = ПараметрыОповещенияОДампах.ЗапросНаПолучениеДампов
|
ЗапросНаПолучениеДампов = ПараметрыОповещенияОДампах.ЗапросНаПолучениеДампов
|
||||||
И НЕ Параметры.Получить("ЗапросПолныхДамповВыведен") = Истина;
|
И НЕ СобранныеПараметры.Получить("ЗапросПолныхДамповВыведен") = Истина;
|
||||||
ЗапросНаПолучениеКонтактов = ПолучитьПараметрыЦентраМониторинга("ЗапросКонтактнойИнформации") = 3
|
ЗапросНаПолучениеКонтактов = ПолучитьПараметрыЦентраМониторинга("ЗапросКонтактнойИнформации") = 3
|
||||||
И НЕ Параметры.Получить("ЗапросНаПолучениеКонтактовВыведен") = Истина;
|
И НЕ СобранныеПараметры.Получить("ЗапросНаПолучениеКонтактовВыведен") = Истина;
|
||||||
|
|
||||||
ПараметрыНовые = Новый Соответствие(Параметры);
|
Результат.Вставить("ЗапросНаПолучениеДампов", ЗапросНаПолучениеДампов);
|
||||||
ПараметрыНовые.Вставить("ЗапросНаПолучениеДампов", ЗапросНаПолучениеДампов);
|
Результат.Вставить("ЗапросНаОтправкуДампов", ПараметрыОповещенияОДампах.ЗапросНаОтправку);
|
||||||
ПараметрыНовые.Вставить("ЗапросНаОтправкуДампов", ПараметрыОповещенияОДампах.ЗапросНаОтправку);
|
Результат.Вставить("ИнформацияОДампах", ПараметрыОповещенияОДампах.ИнформацияОДампах);
|
||||||
ПараметрыНовые.Вставить("ИнформацияОДампах", ПараметрыОповещенияОДампах.ИнформацияОДампах);
|
Результат.Вставить("ЗапросНаПолучениеКонтактов", ЗапросНаПолучениеКонтактов);
|
||||||
ПараметрыНовые.Вставить("ЗапросНаПолучениеКонтактов", ЗапросНаПолучениеКонтактов);
|
|
||||||
Параметры = Новый ФиксированноеСоответствие(ПараметрыНовые);
|
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
@@ -252,7 +257,7 @@
|
|||||||
И ТекущаяУниверсальнаяДата() < ПараметрыЦентраМониторинга.ОкончаниеСбораДампов;
|
И ТекущаяУниверсальнаяДата() < ПараметрыЦентраМониторинга.ОкончаниеСбораДампов;
|
||||||
|
|
||||||
Если НачатьСборИОтправкуОтчетовОбОшибках Тогда
|
Если НачатьСборИОтправкуОтчетовОбОшибках Тогда
|
||||||
Идентификатор = Параметры["ИнформацияКлиента"]["ПараметрыКлиента"]["ХешПользователя"];
|
Идентификатор = СобранныеПараметры["ИнформацияКлиента"]["ПараметрыКлиента"]["ХешПользователя"];
|
||||||
КлючФоновогоЗадания = "СборИОтправкаОтчетовОбОшибкахНаСервереВФоне" + Идентификатор;
|
КлючФоновогоЗадания = "СборИОтправкаОтчетовОбОшибкахНаСервереВФоне" + Идентификатор;
|
||||||
|
|
||||||
Отбор = Новый Структура;
|
Отбор = Новый Структура;
|
||||||
@@ -278,7 +283,7 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПриВыполненииСтандартныхПериодическихПроверокНаСервереВФоне(Параметры) Экспорт
|
Процедура ПриПериодическомПолученииДанныхКлиентаНаСервереВФоне(Параметры) Экспорт
|
||||||
|
|
||||||
ЗаписатьСтатистикуЭкрановКлиента(Параметры);
|
ЗаписатьСтатистикуЭкрановКлиента(Параметры);
|
||||||
ЗаписатьИнформациюОСистеме(Параметры);
|
ЗаписатьИнформациюОСистеме(Параметры);
|
||||||
@@ -570,7 +575,7 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
|
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
|
||||||
// Для файловой базы сбор и отправка происходят в ПриВыполненииСтандартныхПериодическихПроверокНаСервере.
|
// Для файловой базы сбор и отправка происходят в ПриПериодическомПолученииДанныхКлиентаНаСервере.
|
||||||
Иначе
|
Иначе
|
||||||
// Проверим, существует ли регламентное задание.
|
// Проверим, существует ли регламентное задание.
|
||||||
РегЗадание = ПолучитьРегламентноеЗадание("СборИОтправкаОтчетовОбОшибках", Ложь);
|
РегЗадание = ПолучитьРегламентноеЗадание("СборИОтправкаОтчетовОбОшибках", Ложь);
|
||||||
@@ -1499,6 +1504,7 @@
|
|||||||
|
|
||||||
Если ПараметрыЦентраМониторинга.РегистрироватьНастройкуКонфигурации Тогда
|
Если ПараметрыЦентраМониторинга.РегистрироватьНастройкуКонфигурации Тогда
|
||||||
РегистрыСведений.СтатистикаКонфигурации.ЗаписатьНастройкиКонфигурации();
|
РегистрыСведений.СтатистикаКонфигурации.ЗаписатьНастройкиКонфигурации();
|
||||||
|
ПолучитьСтатистикуИспользованияППД();
|
||||||
НеобходимаЗаписьОценкиПроизводительности = Истина;
|
НеобходимаЗаписьОценкиПроизводительности = Истина;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
@@ -4029,5 +4035,22 @@
|
|||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область ДанныеИспользованияППД
|
||||||
|
|
||||||
|
Процедура ПолучитьСтатистикуИспользованияППД()
|
||||||
|
Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() = РежимПолнотекстовогоПоиска.Запретить Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
ЧасовАктуальностиИндекса = Окр((ТекущаяДатаСеанса() - ПолнотекстовыйПоиск.ДатаАктуальности())/3600);
|
||||||
|
МинимальнаяВерсияПлатформы = "8.3.22.1000";
|
||||||
|
СистемнаяИнформация = Новый СистемнаяИнформация;
|
||||||
|
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СистемнаяИнформация.ВерсияПриложения, МинимальнаяВерсияПлатформы) > 0 Тогда
|
||||||
|
УстановленнаяВерсияПолнотекстовогоПоиска = ОбщегоНазначения.ВычислитьВБезопасномРежиме("?(ПолнотекстовыйПоиск.ПолучитьВерсиюПолнотекстовогоПоиска() = ВерсияПолнотекстовогоПоиска.Версия1,1,2)");
|
||||||
|
ЦентрМониторинга.ЗаписатьСтатистикуОбъектаКонфигурации("ПолнотекстовыйПоиск.Версия", УстановленнаяВерсияПолнотекстовогоПоиска);
|
||||||
|
КонецЕсли;
|
||||||
|
ЦентрМониторинга.ЗаписатьСтатистикуОбъектаКонфигурации("ПолнотекстовыйПоиск.ЧасовАктуальностиИндекса", ЧасовАктуальностиИндекса);
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@@ -389,7 +389,7 @@
|
|||||||
// Параметры:
|
// Параметры:
|
||||||
// СертификатКриптографии
|
// СертификатКриптографии
|
||||||
// НаДату - Неопределено, Дата
|
// НаДату - Неопределено, Дата
|
||||||
// ЭтоПроверкаПодписи - Булево - Это проверка подписи, предупреждение (не ошибка) не будет показано.
|
// ЭтоПроверкаПодписи - Булево - это проверка подписи, предупреждение (не ошибка) не будет показано.
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// см. ЭлектроннаяПодписьСлужебныйКлиентСервер.РезультатПроверкиУдостоверяющегоЦентраПоУмолчанию
|
// см. ЭлектроннаяПодписьСлужебныйКлиентСервер.РезультатПроверкиУдостоверяющегоЦентраПоУмолчанию
|
||||||
|
|||||||
@@ -37,9 +37,9 @@
|
|||||||
// Конструктор результата проверки по списку удостоверяющих центров.
|
// Конструктор результата проверки по списку удостоверяющих центров.
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Результат проверки удостоверяющего центра по умолчанию:
|
// Структура - результат проверки удостоверяющего центра по умолчанию:
|
||||||
// * Действует - Булево - Аккредитованный УЦ действует на дату проверки.
|
// * Действует - Булево - аккредитованный УЦ действует на дату проверки.
|
||||||
// * НайденВСпискеУдостоверяющихЦентров - Булево - Сертификат, выданный УЦ является квалифицированным
|
// * НайденВСпискеУдостоверяющихЦентров - Булево - сертификат, выданный УЦ является квалифицированным
|
||||||
// * Государственный - Булево - относится к определенному списку УЦ, выдающих сертификаты, по которым не нужно
|
// * Государственный - Булево - относится к определенному списку УЦ, выдающих сертификаты, по которым не нужно
|
||||||
// выполнять некоторые проверки.
|
// выполнять некоторые проверки.
|
||||||
// например, в России: УЦ ФНС России, Казначейства России, и Банка России.
|
// например, в России: УЦ ФНС России, Казначейства России, и Банка России.
|
||||||
@@ -58,11 +58,11 @@
|
|||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Сообщение об ошибке/предупреждение для проверяемого сертификата:
|
// Структура - сообщение об ошибке/предупреждение для проверяемого сертификата:
|
||||||
// * ТекстОшибки - Строка -
|
// * ТекстОшибки - Строка
|
||||||
// * ВозможенПеревыпуск - Булево - можно подать заявление на новый сертификат из программы.
|
// * ВозможенПеревыпуск - Булево - можно подать заявление на новый сертификат из программы.
|
||||||
// * Причина - Строка - Причина ошибки для отображения в расширенной форме ошибки.
|
// * Причина - Строка - причина ошибки для отображения в расширенной форме ошибки.
|
||||||
// * Решение - Строка - Рекомендация для отображения в расширенной форме ошибки.
|
// * Решение - Строка - рекомендация для отображения в расширенной форме ошибки.
|
||||||
//
|
//
|
||||||
Функция ПредупреждениеПриПроверкеУдостоверяющегоЦентраСертификата() Экспорт
|
Функция ПредупреждениеПриПроверкеУдостоверяющегоЦентраСертификата() Экспорт
|
||||||
|
|
||||||
@@ -71,11 +71,12 @@
|
|||||||
Предупреждение.Вставить("ВозможенПеревыпуск", Ложь);
|
Предупреждение.Вставить("ВозможенПеревыпуск", Ложь);
|
||||||
Предупреждение.Вставить("Причина", "");
|
Предупреждение.Вставить("Причина", "");
|
||||||
Предупреждение.Вставить("Решение", "");
|
Предупреждение.Вставить("Решение", "");
|
||||||
|
|
||||||
Возврат Предупреждение;
|
Возврат Предупреждение;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|||||||
@@ -85,10 +85,7 @@
|
|||||||
|
|
||||||
Если ИмяФайлаПериодыДействия <> Неопределено Тогда
|
Если ИмяФайлаПериодыДействия <> Неопределено Тогда
|
||||||
|
|
||||||
ЧтениеJSON = Новый ЧтениеJSON;
|
СписокУЦ = ПрочитатьФайлПериодовДействияУЦ(КаталогОбновлений + ИмяФайлаПериодыДействия);
|
||||||
ЧтениеJSON.ОткрытьФайл(КаталогОбновлений + ИмяФайлаПериодыДействия);
|
|
||||||
СписокУЦ = ПрочитатьJSON(ЧтениеJSON);
|
|
||||||
ЧтениеJSON.Закрыть();
|
|
||||||
|
|
||||||
// Подготовка соответствия для быстрого поиска.
|
// Подготовка соответствия для быстрого поиска.
|
||||||
Соответствие = Новый Соответствие;
|
Соответствие = Новый Соответствие;
|
||||||
@@ -235,6 +232,31 @@
|
|||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
// Прочитать файл периодов действия УЦ.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// ИмяФайла - Строка - имя файла
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Массив из Структура:
|
||||||
|
// * ОГРН - Строка
|
||||||
|
// * Наименование - Строка
|
||||||
|
// * КраткоеНаименование - Строка
|
||||||
|
// * ПериодыДействия - Массив из Структура:
|
||||||
|
// ** ДатаС - Строка
|
||||||
|
// ** ДатаПо - Строка
|
||||||
|
//
|
||||||
|
Функция ПрочитатьФайлПериодовДействияУЦ(ИмяФайла)
|
||||||
|
|
||||||
|
ЧтениеJSON = Новый ЧтениеJSON;
|
||||||
|
ЧтениеJSON.ОткрытьФайл(ИмяФайла);
|
||||||
|
СписокУЦ = ПрочитатьJSON(ЧтениеJSON); // Структура
|
||||||
|
ЧтениеJSON.Закрыть();
|
||||||
|
|
||||||
|
Возврат СписокУЦ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
Функция ДатаПоследнегоИзмененияФайла(РезультатЗагрузки)
|
Функция ДатаПоследнегоИзмененияФайла(РезультатЗагрузки)
|
||||||
|
|
||||||
Заголовки = Неопределено;
|
Заголовки = Неопределено;
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="26dad4b8-2d02-4d31-8c31-94c0295bd56a">
|
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="04e6dcc4-e931-4993-9fa2-63c16d53dadf">
|
||||||
<name>БиблиотекаСтандартныхПодсистем</name>
|
<name>БиблиотекаСтандартныхПодсистем</name>
|
||||||
<synonym>
|
<synonym>
|
||||||
<key>ru</key>
|
<key>ru</key>
|
||||||
<value>Библиотека стандартных подсистем, редакция 3.1</value>
|
<value>Библиотека стандартных подсистем, редакция 3.1</value>
|
||||||
</synonym>
|
</synonym>
|
||||||
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="7a04ed61-ad6e-431c-8c38-7aabc9100ba6"/>
|
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="e0684ff5-8b8b-4c4c-b732-cc223a36898f"/>
|
||||||
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="5229106b-41b8-4733-9270-dc53ff5d8cfa"/>
|
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="c1d357b3-b1d8-4e35-9bef-d04649204724"/>
|
||||||
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="20ed20f5-46ba-455e-8c15-08c9708b084a"/>
|
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="34f44a6f-e3b4-410b-a8aa-1cfdeb4e14b5"/>
|
||||||
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="f1324ef0-ae56-4f0b-9d32-7df8979376a5"/>
|
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="db747947-d3c4-4a68-8a82-6fe98b2afbdd"/>
|
||||||
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="3a7f144b-749e-4085-bad6-8dd6ed495b70"/>
|
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="88661bbd-ac65-40eb-8fb0-e7c9677b744d"/>
|
||||||
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="484ce06d-c2d6-48da-a522-2e887bf45617"/>
|
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="5d385f81-74af-428b-a642-3bc9e2152e92"/>
|
||||||
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="d8ce7477-eb96-451d-9d86-b5bc4af22148"/>
|
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="a64857dd-da1d-40cd-ad96-cba4eda6d5c2"/>
|
||||||
<defaultRunMode>ManagedApplication</defaultRunMode>
|
<defaultRunMode>ManagedApplication</defaultRunMode>
|
||||||
<usePurposes>PersonalComputer</usePurposes>
|
<usePurposes>PersonalComputer</usePurposes>
|
||||||
<scriptVariant>Russian</scriptVariant>
|
<scriptVariant>Russian</scriptVariant>
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
|
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
|
||||||
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
|
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
|
||||||
<vendor>Фирма "1С"</vendor>
|
<vendor>Фирма "1С"</vendor>
|
||||||
<version>3.1.6.209</version>
|
<version>3.1.7.34</version>
|
||||||
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
|
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
|
||||||
<includeHelpInContents>true</includeHelpInContents>
|
<includeHelpInContents>true</includeHelpInContents>
|
||||||
<usedMobileApplicationFunctionalities>
|
<usedMobileApplicationFunctionalities>
|
||||||
@@ -646,6 +646,7 @@
|
|||||||
<sessionParameters>SessionParameter.ВыполняетсяУдалениеОбъектов</sessionParameters>
|
<sessionParameters>SessionParameter.ВыполняетсяУдалениеОбъектов</sessionParameters>
|
||||||
<sessionParameters>SessionParameter.ДатаОбновленияПовторноИспользуемыхЗначенийМРО</sessionParameters>
|
<sessionParameters>SessionParameter.ДатаОбновленияПовторноИспользуемыхЗначенийМРО</sessionParameters>
|
||||||
<sessionParameters>SessionParameter.ДействующиеДатыЗапретаИзменения</sessionParameters>
|
<sessionParameters>SessionParameter.ДействующиеДатыЗапретаИзменения</sessionParameters>
|
||||||
|
<sessionParameters>SessionParameter.ДлительныеОперации</sessionParameters>
|
||||||
<sessionParameters>SessionParameter.ИдентификаторыТаблицСОтдельнымиНастройкамиПрав</sessionParameters>
|
<sessionParameters>SessionParameter.ИдентификаторыТаблицСОтдельнымиНастройкамиПрав</sessionParameters>
|
||||||
<sessionParameters>SessionParameter.ИнтерактивнаяПроверкаЗаполненияКонтактнойИнформации</sessionParameters>
|
<sessionParameters>SessionParameter.ИнтерактивнаяПроверкаЗаполненияКонтактнойИнформации</sessionParameters>
|
||||||
<sessionParameters>SessionParameter.ИнтерактивнаяПроверкаЗаполненияСвойств</sessionParameters>
|
<sessionParameters>SessionParameter.ИнтерактивнаяПроверкаЗаполненияСвойств</sessionParameters>
|
||||||
@@ -659,7 +660,6 @@
|
|||||||
<sessionParameters>SessionParameter.ОграничениеДоступаНаУровнеЗаписейУниверсально</sessionParameters>
|
<sessionParameters>SessionParameter.ОграничениеДоступаНаУровнеЗаписейУниверсально</sessionParameters>
|
||||||
<sessionParameters>SessionParameter.ОсновнойЯзык</sessionParameters>
|
<sessionParameters>SessionParameter.ОсновнойЯзык</sessionParameters>
|
||||||
<sessionParameters>SessionParameter.ОтключениеОбновленияКлючейДоступа</sessionParameters>
|
<sessionParameters>SessionParameter.ОтключениеОбновленияКлючейДоступа</sessionParameters>
|
||||||
<sessionParameters>SessionParameter.ОтмененныеДлительныеОперации</sessionParameters>
|
|
||||||
<sessionParameters>SessionParameter.ОшибкаРасхожденияВерсийПриПолученииДанных</sessionParameters>
|
<sessionParameters>SessionParameter.ОшибкаРасхожденияВерсийПриПолученииДанных</sessionParameters>
|
||||||
<sessionParameters>SessionParameter.ПараметрыКлиентаНаСервере</sessionParameters>
|
<sessionParameters>SessionParameter.ПараметрыКлиентаНаСервере</sessionParameters>
|
||||||
<sessionParameters>SessionParameter.ПараметрыОбработчикаОбновления</sessionParameters>
|
<sessionParameters>SessionParameter.ПараметрыОбработчикаОбновления</sessionParameters>
|
||||||
@@ -874,7 +874,6 @@
|
|||||||
<commonModules>CommonModule.ДатыЗапретаИзмененияСлужебныйПовтИсп</commonModules>
|
<commonModules>CommonModule.ДатыЗапретаИзмененияСлужебныйПовтИсп</commonModules>
|
||||||
<commonModules>CommonModule.ДлительныеОперации</commonModules>
|
<commonModules>CommonModule.ДлительныеОперации</commonModules>
|
||||||
<commonModules>CommonModule.ДлительныеОперацииВызовСервера</commonModules>
|
<commonModules>CommonModule.ДлительныеОперацииВызовСервера</commonModules>
|
||||||
<commonModules>CommonModule.ДлительныеОперацииГлобальный</commonModules>
|
|
||||||
<commonModules>CommonModule.ДлительныеОперацииКлиент</commonModules>
|
<commonModules>CommonModule.ДлительныеОперацииКлиент</commonModules>
|
||||||
<commonModules>CommonModule.ДополнительныеОтчетыИОбработки</commonModules>
|
<commonModules>CommonModule.ДополнительныеОтчетыИОбработки</commonModules>
|
||||||
<commonModules>CommonModule.ДополнительныеОтчетыИОбработкиВАвтономномРежиме</commonModules>
|
<commonModules>CommonModule.ДополнительныеОтчетыИОбработкиВАвтономномРежиме</commonModules>
|
||||||
@@ -1129,6 +1128,11 @@
|
|||||||
<commonModules>CommonModule.РезервноеКопированиеИБКлиент</commonModules>
|
<commonModules>CommonModule.РезервноеКопированиеИБКлиент</commonModules>
|
||||||
<commonModules>CommonModule.РезервноеКопированиеИБКлиентПереопределяемый</commonModules>
|
<commonModules>CommonModule.РезервноеКопированиеИБКлиентПереопределяемый</commonModules>
|
||||||
<commonModules>CommonModule.РезервноеКопированиеИБСервер</commonModules>
|
<commonModules>CommonModule.РезервноеКопированиеИБСервер</commonModules>
|
||||||
|
<commonModules>CommonModule.СерверныеОповещения</commonModules>
|
||||||
|
<commonModules>CommonModule.СерверныеОповещенияГлобальный</commonModules>
|
||||||
|
<commonModules>CommonModule.СерверныеОповещенияКлиент</commonModules>
|
||||||
|
<commonModules>CommonModule.СерверныеОповещенияСлужебныйВызовСервера</commonModules>
|
||||||
|
<commonModules>CommonModule.СерверныеОповещенияСлужебныйПовтИсп</commonModules>
|
||||||
<commonModules>CommonModule.СервисКриптографииDSS</commonModules>
|
<commonModules>CommonModule.СервисКриптографииDSS</commonModules>
|
||||||
<commonModules>CommonModule.СервисКриптографииDSSASNКлиентСервер</commonModules>
|
<commonModules>CommonModule.СервисКриптографииDSSASNКлиентСервер</commonModules>
|
||||||
<commonModules>CommonModule.СервисКриптографииDSSКлиент</commonModules>
|
<commonModules>CommonModule.СервисКриптографииDSSКлиент</commonModules>
|
||||||
@@ -1145,7 +1149,6 @@
|
|||||||
<commonModules>CommonModule.СклонениеПредставленийОбъектовКлиентСервер</commonModules>
|
<commonModules>CommonModule.СклонениеПредставленийОбъектовКлиентСервер</commonModules>
|
||||||
<commonModules>CommonModule.СоединенияИБ</commonModules>
|
<commonModules>CommonModule.СоединенияИБ</commonModules>
|
||||||
<commonModules>CommonModule.СоединенияИБВызовСервера</commonModules>
|
<commonModules>CommonModule.СоединенияИБВызовСервера</commonModules>
|
||||||
<commonModules>CommonModule.СоединенияИБГлобальный</commonModules>
|
|
||||||
<commonModules>CommonModule.СоединенияИБКлиент</commonModules>
|
<commonModules>CommonModule.СоединенияИБКлиент</commonModules>
|
||||||
<commonModules>CommonModule.СоединенияИБКлиентСервер</commonModules>
|
<commonModules>CommonModule.СоединенияИБКлиентСервер</commonModules>
|
||||||
<commonModules>CommonModule.СоединенияИБПереопределяемый</commonModules>
|
<commonModules>CommonModule.СоединенияИБПереопределяемый</commonModules>
|
||||||
@@ -1420,7 +1423,6 @@
|
|||||||
<scheduledJobs>ScheduledJob.ЗапускДополнительныхОбработок</scheduledJobs>
|
<scheduledJobs>ScheduledJob.ЗапускДополнительныхОбработок</scheduledJobs>
|
||||||
<scheduledJobs>ScheduledJob.ИзвлечениеТекста</scheduledJobs>
|
<scheduledJobs>ScheduledJob.ИзвлечениеТекста</scheduledJobs>
|
||||||
<scheduledJobs>ScheduledJob.ИсправлениеУстаревшихАдресов</scheduledJobs>
|
<scheduledJobs>ScheduledJob.ИсправлениеУстаревшихАдресов</scheduledJobs>
|
||||||
<scheduledJobs>ScheduledJob.КонтрольАктивностиПользователей</scheduledJobs>
|
|
||||||
<scheduledJobs>ScheduledJob.КонтрольУдаленияПомеченныхОбъектов</scheduledJobs>
|
<scheduledJobs>ScheduledJob.КонтрольУдаленияПомеченныхОбъектов</scheduledJobs>
|
||||||
<scheduledJobs>ScheduledJob.МониторингЗадач</scheduledJobs>
|
<scheduledJobs>ScheduledJob.МониторингЗадач</scheduledJobs>
|
||||||
<scheduledJobs>ScheduledJob.ОбновлениеАгрегатов</scheduledJobs>
|
<scheduledJobs>ScheduledJob.ОбновлениеАгрегатов</scheduledJobs>
|
||||||
@@ -1432,6 +1434,7 @@
|
|||||||
<scheduledJobs>ScheduledJob.ОбработкаСервисовИнтеграции</scheduledJobs>
|
<scheduledJobs>ScheduledJob.ОбработкаСервисовИнтеграции</scheduledJobs>
|
||||||
<scheduledJobs>ScheduledJob.ОтложенноеОбновлениеИБ</scheduledJobs>
|
<scheduledJobs>ScheduledJob.ОтложенноеОбновлениеИБ</scheduledJobs>
|
||||||
<scheduledJobs>ScheduledJob.ОтправкаSMS</scheduledJobs>
|
<scheduledJobs>ScheduledJob.ОтправкаSMS</scheduledJobs>
|
||||||
|
<scheduledJobs>ScheduledJob.ОтправкаСерверныхОповещенийКлиентам</scheduledJobs>
|
||||||
<scheduledJobs>ScheduledJob.ОчисткаЗамеровВремени</scheduledJobs>
|
<scheduledJobs>ScheduledJob.ОчисткаЗамеровВремени</scheduledJobs>
|
||||||
<scheduledJobs>ScheduledJob.ОчисткаНенужныхФайлов</scheduledJobs>
|
<scheduledJobs>ScheduledJob.ОчисткаНенужныхФайлов</scheduledJobs>
|
||||||
<scheduledJobs>ScheduledJob.ОчисткаУстаревшихВерсийОбъектов</scheduledJobs>
|
<scheduledJobs>ScheduledJob.ОчисткаУстаревшихВерсийОбъектов</scheduledJobs>
|
||||||
@@ -1789,6 +1792,7 @@
|
|||||||
<constants>Constant.СоздаватьПодкаталогиСИменамиВладельцев</constants>
|
<constants>Constant.СоздаватьПодкаталогиСИменамиВладельцев</constants>
|
||||||
<constants>Constant.СоздаватьЭлектронныеПодписиНаСервере</constants>
|
<constants>Constant.СоздаватьЭлектронныеПодписиНаСервере</constants>
|
||||||
<constants>Constant.СообщениеОбменаДаннымиИзГлавногоУзла</constants>
|
<constants>Constant.СообщениеОбменаДаннымиИзГлавногоУзла</constants>
|
||||||
|
<constants>Constant.СостояниеОтправкиСерверныхОповещений</constants>
|
||||||
<constants>Constant.СписокЗапрещенныхРасширений</constants>
|
<constants>Constant.СписокЗапрещенныхРасширений</constants>
|
||||||
<constants>Constant.СписокЗапрещенныхРасширенийОбластиДанных</constants>
|
<constants>Constant.СписокЗапрещенныхРасширенийОбластиДанных</constants>
|
||||||
<constants>Constant.СписокРасширенийТекстовыхФайлов</constants>
|
<constants>Constant.СписокРасширенийТекстовыхФайлов</constants>
|
||||||
@@ -1839,6 +1843,7 @@
|
|||||||
<commonForms>CommonForm.ДополнительныеПараметрыПроксиСервера</commonForms>
|
<commonForms>CommonForm.ДополнительныеПараметрыПроксиСервера</commonForms>
|
||||||
<commonForms>CommonForm.ИнформацияНеразделенногоПользователя</commonForms>
|
<commonForms>CommonForm.ИнформацияНеразделенногоПользователя</commonForms>
|
||||||
<commonForms>CommonForm.КонтрольДинамическогоОбновления</commonForms>
|
<commonForms>CommonForm.КонтрольДинамическогоОбновления</commonForms>
|
||||||
|
<commonForms>CommonForm.КонтрольИзмененияРолейПользователяИБ</commonForms>
|
||||||
<commonForms>CommonForm.МастерАнкетыПоРазделам</commonForms>
|
<commonForms>CommonForm.МастерАнкетыПоРазделам</commonForms>
|
||||||
<commonForms>CommonForm.МониторСинхронизацииДанныхВМоделиСервиса</commonForms>
|
<commonForms>CommonForm.МониторСинхронизацииДанныхВМоделиСервиса</commonForms>
|
||||||
<commonForms>CommonForm.НапоминаниеПриРедактировании</commonForms>
|
<commonForms>CommonForm.НапоминаниеПриРедактировании</commonForms>
|
||||||
@@ -2251,6 +2256,7 @@
|
|||||||
<informationRegisters>InformationRegister.ОповещенияПользователейСертификатов</informationRegisters>
|
<informationRegisters>InformationRegister.ОповещенияПользователейСертификатов</informationRegisters>
|
||||||
<informationRegisters>InformationRegister.ОриентирыАдресныхОбъектов</informationRegisters>
|
<informationRegisters>InformationRegister.ОриентирыАдресныхОбъектов</informationRegisters>
|
||||||
<informationRegisters>InformationRegister.ОтветыНаВопросыАнкет</informationRegisters>
|
<informationRegisters>InformationRegister.ОтветыНаВопросыАнкет</informationRegisters>
|
||||||
|
<informationRegisters>InformationRegister.ОтправленныеСерверныеОповещения</informationRegisters>
|
||||||
<informationRegisters>InformationRegister.ОчередьИзвлеченияТекста</informationRegisters>
|
<informationRegisters>InformationRegister.ОчередьИзвлеченияТекста</informationRegisters>
|
||||||
<informationRegisters>InformationRegister.ОчередьИнсталляцииПоставляемыхДополнительныхОтчетовИОбработокВОбластиДанных</informationRegisters>
|
<informationRegisters>InformationRegister.ОчередьИнсталляцииПоставляемыхДополнительныхОтчетовИОбработокВОбластиДанных</informationRegisters>
|
||||||
<informationRegisters>InformationRegister.ПакетыДляОтправки</informationRegisters>
|
<informationRegisters>InformationRegister.ПакетыДляОтправки</informationRegisters>
|
||||||
@@ -2258,6 +2264,7 @@
|
|||||||
<informationRegisters>InformationRegister.ПараметрыОграниченияДоступа</informationRegisters>
|
<informationRegisters>InformationRegister.ПараметрыОграниченияДоступа</informationRegisters>
|
||||||
<informationRegisters>InformationRegister.ПараметрыРаботыВерсийРасширений</informationRegisters>
|
<informationRegisters>InformationRegister.ПараметрыРаботыВерсийРасширений</informationRegisters>
|
||||||
<informationRegisters>InformationRegister.ПараметрыРаботыПрограммы</informationRegisters>
|
<informationRegisters>InformationRegister.ПараметрыРаботыПрограммы</informationRegisters>
|
||||||
|
<informationRegisters>InformationRegister.ПериодическиеСерверныеОповещения</informationRegisters>
|
||||||
<informationRegisters>InformationRegister.ПериодыНерабочихДнейКалендаря</informationRegisters>
|
<informationRegisters>InformationRegister.ПериодыНерабочихДнейКалендаря</informationRegisters>
|
||||||
<informationRegisters>InformationRegister.ПользовательскиеМакетыПечати</informationRegisters>
|
<informationRegisters>InformationRegister.ПользовательскиеМакетыПечати</informationRegisters>
|
||||||
<informationRegisters>InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам</informationRegisters>
|
<informationRegisters>InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам</informationRegisters>
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{6,1,1,28e1e811-98d4-4281-aaa4-d7c33b942822,1,29c00a8f-4c35-4ce0-8e5d-afbbe0f7f7af,"3.1.6.209","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6731,1,0,26dad4b8-2d02-4d31-8c31-94c0295bd56a,26dad4b8-2d02-4d31-8c31-94c0295bd56a,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,00283a82-1e70-4ed0-9c2a-2c767ee98ccb,1,f2871eb4-339c-4e0c-be29-b62666e84f74,"3.1.7.34","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6752,1,0,04e6dcc4-e931-4993-9fa2-63c16d53dadf,04e6dcc4-e931-4993-9fa2-63c16d53dadf,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-91c7-Line truncated
|
||||||
@@ -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="db445527-7bd2-448b-bf87-5ac0c10d742d">
|
||||||
|
<producedTypes>
|
||||||
|
<managerType typeId="a62f5506-f105-4290-9e4a-95a934290db2" valueTypeId="dc95f16e-dd84-4448-b1b6-e300a085ee5f"/>
|
||||||
|
<valueManagerType typeId="41cf0909-c9fd-41ad-bd94-557ebda09361" valueTypeId="2ff87c6c-142e-4b63-af4e-8e8caca2dd05"/>
|
||||||
|
<valueKeyType typeId="f47fcf2d-c3fd-4a08-a9bf-23bc46a72201" valueTypeId="ca2b59b4-4bdf-438c-9828-827a75c17491"/>
|
||||||
|
</producedTypes>
|
||||||
|
<name>СостояниеОтправкиСерверныхОповещений</name>
|
||||||
|
<synonym>
|
||||||
|
<key>ru</key>
|
||||||
|
<value>Состояние отправки серверных оповещений</value>
|
||||||
|
</synonym>
|
||||||
|
<type>
|
||||||
|
<types>ValueStorage</types>
|
||||||
|
</type>
|
||||||
|
<useStandardCommands>true</useStandardCommands>
|
||||||
|
<minValue xsi:type="core:UndefinedValue"/>
|
||||||
|
<maxValue xsi:type="core:UndefinedValue"/>
|
||||||
|
<dataLockControlMode>Managed</dataLockControlMode>
|
||||||
|
</mdclass:Constant>
|
||||||
@@ -41,6 +41,10 @@
|
|||||||
УстановитьНачальныйСтатусЗапретаРаботыПользователей();
|
УстановитьНачальныйСтатусЗапретаРаботыПользователей();
|
||||||
ОбновитьСтраницуНастройки();
|
ОбновитьСтраницуНастройки();
|
||||||
|
|
||||||
|
Если Не СоединенияИБ.ПодсистемаИспользуется() Тогда
|
||||||
|
Доступность = Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
|
|||||||
@@ -1908,6 +1908,8 @@
|
|||||||
МенеджерОбъекта = Документы[МассивОбъекта.НазваниеОбъекта];
|
МенеджерОбъекта = Документы[МассивОбъекта.НазваниеОбъекта];
|
||||||
ИначеЕсли МассивОбъекта.ТипОбъекта = "Справочник" Тогда
|
ИначеЕсли МассивОбъекта.ТипОбъекта = "Справочник" Тогда
|
||||||
МенеджерОбъекта = Справочники[МассивОбъекта.НазваниеОбъекта];
|
МенеджерОбъекта = Справочники[МассивОбъекта.НазваниеОбъекта];
|
||||||
|
ИначеЕсли МассивОбъекта.ТипОбъекта = "Обработка" Тогда
|
||||||
|
МенеджерОбъекта = Обработки[МассивОбъекта.НазваниеОбъекта];
|
||||||
Иначе
|
Иначе
|
||||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Объект ""%1"" не найден'"), ИмяОбъектаСопоставления);
|
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Объект ""%1"" не найден'"), ИмяОбъектаСопоставления);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
|
|
||||||
Функция ВерсияОбновленияДанныхПроизводственныхКалендарей() Экспорт
|
Функция ВерсияОбновленияДанныхПроизводственныхКалендарей() Экспорт
|
||||||
|
|
||||||
Возврат "3.1.6.187";
|
Возврат "3.1.7.12";
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
|||||||
@@ -114,7 +114,7 @@
|
|||||||
Процедура ПриОткрытии(Отказ)
|
Процедура ПриОткрытии(Отказ)
|
||||||
|
|
||||||
Если ДанныеЗаявления.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено") Тогда
|
Если ДанныеЗаявления.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено") Тогда
|
||||||
ПодключитьОбработчикОжидания("ПриИзмененияСоставаИлиНастроекПрограмм", 0.1, Истина);
|
ПодключитьОбработчикОжидания("ПриИзмененииСоставаИлиНастроекПрограмм", 0.1, Истина);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
@@ -127,7 +127,7 @@
|
|||||||
И (ВРег(ИмяСобытия) = ВРег("Запись_ПрограммыЭлектроннойПодписиИШифрования")
|
И (ВРег(ИмяСобытия) = ВРег("Запись_ПрограммыЭлектроннойПодписиИШифрования")
|
||||||
Или ВРег(ИмяСобытия) = ВРег("Запись_ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux")) Тогда
|
Или ВРег(ИмяСобытия) = ВРег("Запись_ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux")) Тогда
|
||||||
|
|
||||||
ПодключитьОбработчикОжидания("ПриИзмененияСоставаИлиНастроекПрограмм", 0.1, Истина);
|
ПодключитьОбработчикОжидания("ПриИзмененииСоставаИлиНастроекПрограмм", 0.1, Истина);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ВРег(ИмяСобытия) = ВРег("ИнтернетПоддержкаПодключена") Тогда
|
Если ВРег(ИмяСобытия) = ВРег("ИнтернетПоддержкаПодключена") Тогда
|
||||||
@@ -181,7 +181,7 @@
|
|||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ОтключитьОбработчикОжидания("ПриИзмененияСоставаИлиНастроекПрограмм");
|
ОтключитьОбработчикОжидания("ПриИзмененииСоставаИлиНастроекПрограмм");
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
@@ -4111,7 +4111,7 @@
|
|||||||
#Область ПрограммыРаботыЭП
|
#Область ПрограммыРаботыЭП
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура ПриИзмененияСоставаИлиНастроекПрограмм()
|
Процедура ПриИзмененииСоставаИлиНастроекПрограмм()
|
||||||
|
|
||||||
Если Не ЗаполнитьСписокПрограмм() Тогда
|
Если Не ЗаполнитьСписокПрограмм() Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="__STYLE__"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta><style>H1 {
|
||||||
|
TEXT-ALIGN: left; FONT-FAMILY: Arial, Tahoma; COLOR: #003366; FONT-SIZE: 18pt; FONT-WEIGHT: bold
|
||||||
|
}
|
||||||
|
.Programtext {
|
||||||
|
FONT-FAMILY: Courier; COLOR: #000080; FONT-SIZE: 10pt
|
||||||
|
}
|
||||||
|
H3 {
|
||||||
|
TEXT-ALIGN: left; FONT-FAMILY: Arial, Tahoma; FONT-SIZE: 11pt; FONT-WEIGHT: bold
|
||||||
|
}
|
||||||
|
H4 {
|
||||||
|
TEXT-ALIGN: left; FONT-FAMILY: Arial, Tahoma; FONT-SIZE: 10pt; FONT-WEIGHT: bold
|
||||||
|
}
|
||||||
|
BODY {
|
||||||
|
FONT-FAMILY: Verdana; FONT-SIZE: 8pt
|
||||||
|
}
|
||||||
|
</style></head><body>
|
||||||
|
|
||||||
|
<p style="margin: 0cm 0cm 8pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 1;"><b><span style="font-family: "Times New Roman",serif; font-size: 24pt; mso-fareast-font-family: "Times New Roman"; mso-font-kerning: 18.0pt; mso-fareast-language: RU;">Порядок обновления на новую
|
||||||
|
версию 1С:Предприятия 8.3</span></b></p>
|
||||||
|
|
||||||
|
<p style="margin: 0cm 0cm 8pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 3;"><b><span style="font-family: "Times New Roman",serif; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">1. Скачать дистрибутив 1С:Предприятия 8.3</span></b></p>
|
||||||
|
|
||||||
|
<p style="margin: 0cm 0cm 8pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;"><span style="font-family: "Times New Roman",serif; font-size: 12pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">Скачайте
|
||||||
|
дистрибутив последней версии <a href="https://users.v8.1c.ru/distribution/project/Platform83"><span style="color: blue;">платформы 1С:Предприятия 8.3</span></a> в сервисе <b>1С:Обновление
|
||||||
|
программ</b>. При необходимости укажите логин и пароль.</span></p>
|
||||||
|
|
||||||
|
<p style="margin: 0cm 0cm 8pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;"><span style="font-family: "Times New Roman",serif; font-size: 12pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">Далее
|
||||||
|
следует выбрать актуальную (последнюю официально опубликованную) версию <b>Технологической
|
||||||
|
платформы 8.3.</b></span></p>
|
||||||
|
|
||||||
|
<p style="margin: 0cm 0cm 8pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;"><span style="font-family: "Times New Roman",serif; font-size: 12pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">Для
|
||||||
|
скачивания файла нажмите на гиперссылку, которая соответствует вашей
|
||||||
|
операционной системе:</span></p>
|
||||||
|
|
||||||
|
<ul type="disc"><li style="margin: 0cm 0cm 8pt; color: rgb(0, 0, 0); line-height: normal; font-family: "Times New Roman",serif; font-size: 12pt; font-style: normal; font-weight: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt;"><span style="font-family: "Times New Roman",serif; font-size: 12pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">Технологическая платформа
|
||||||
|
1С:Предприятия для Windows</span></li>
|
||||||
|
<li style="margin: 0cm 0cm 8pt; color: rgb(0, 0, 0); line-height: normal; font-family: "Times New Roman",serif; font-size: 12pt; font-style: normal; font-weight: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt;"><span style="font-family: "Times New Roman",serif; font-size: 12pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">Технологическая платформа
|
||||||
|
1С:Предприятия для Linux</span></li>
|
||||||
|
<li style="margin: 0cm 0cm 8pt; color: rgb(0, 0, 0); line-height: normal; font-family: "Times New Roman",serif; font-size: 12pt; font-style: normal; font-weight: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt;"><span style="font-family: "Times New Roman",serif; font-size: 12pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">Клиент 1С:Предприятия для macOS</span></li>
|
||||||
|
</ul><p style="margin: 0cm 0cm 8pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;"><span style="font-family: "Times New Roman",serif; font-size: 12pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">Далее по
|
||||||
|
ссылке <b>Скачать дистрибутив</b> откроется диалог сохранения файла на
|
||||||
|
компьютер. Запомните папку, в которую его сохранили.</span></p>
|
||||||
|
|
||||||
|
<p style="margin: 0cm 0cm 8pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 3;"><b><span style="font-family: "Times New Roman",serif; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">2. Установить новую версию 1С:Предприятия 8.3</span></b></p>
|
||||||
|
|
||||||
|
<p style="margin: 0cm 0cm 8pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;"><span style="font-family: "Times New Roman",serif; font-size: 12pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">Если у вас
|
||||||
|
операционная система Microsoft Windows, то обратите внимание: для
|
||||||
|
установки программы пользователь Windows должен обладать правами
|
||||||
|
администратора. Распакуйте загруженный файл с архивом. В папке, в которую
|
||||||
|
распаковали архив, запустите файл <b>Setup.exe</b> и следуйте инструкциям
|
||||||
|
программы-установщика.</span></p>
|
||||||
|
|
||||||
|
<p style="margin: 0cm 0cm 8pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 3;"><b><span style="font-family: "Times New Roman",serif; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">3. Создать резервную копию информационной базы</span></b></p>
|
||||||
|
|
||||||
|
<p style="margin: 0cm 0cm 8pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;"><span style="font-family: "Times New Roman",serif; font-size: 12pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">Запустите
|
||||||
|
1С: Предприятие<b>.</b> В открывшемся окне <b>Запуск 1С: Предприятия</b> определите
|
||||||
|
и откройте папку, в которой находится нужная информационная база. Затем
|
||||||
|
скопируйте файл 1Cv8.1CD в безопасное место.</span></p>
|
||||||
|
|
||||||
|
<p style="margin: 0cm 0cm 8pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 3;"><b><span style="font-family: "Times New Roman",serif; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">4. Начало работы с новой версией платформы</span></b></p>
|
||||||
|
|
||||||
|
<p style="margin: 0cm 0cm 8pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;"><span style="font-family: "Times New Roman",serif; font-size: 12pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">По кнопке <b>1С:Предприятие</b>
|
||||||
|
можно начать работы с выбранной информационной базой на новой версии платформы.</span></p><p style="margin: 0cm 0cm 8pt;"><br></p>
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 43 KiB |
@@ -1,40 +0,0 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="__STYLE__"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta><style>H1 {
|
|
||||||
TEXT-ALIGN: left; FONT-FAMILY: Arial, Tahoma; COLOR: #003366; FONT-SIZE: 18pt; FONT-WEIGHT: bold
|
|
||||||
}
|
|
||||||
.Programtext {
|
|
||||||
FONT-FAMILY: Courier; COLOR: #000080; FONT-SIZE: 10pt
|
|
||||||
}
|
|
||||||
H3 {
|
|
||||||
TEXT-ALIGN: left; FONT-FAMILY: Arial, Tahoma; FONT-SIZE: 11pt; FONT-WEIGHT: bold
|
|
||||||
}
|
|
||||||
H4 {
|
|
||||||
TEXT-ALIGN: left; FONT-FAMILY: Arial, Tahoma; FONT-SIZE: 10pt; FONT-WEIGHT: bold
|
|
||||||
}
|
|
||||||
BODY {
|
|
||||||
FONT-FAMILY: Verdana; FONT-SIZE: 8pt
|
|
||||||
}
|
|
||||||
</style></head><body>
|
|
||||||
<h1>Порядок обновления на новую версию 1С:Предприятия 8.3</h1>
|
|
||||||
<h3>1. Скачать дистрибутив 1С:Предприятия 8.3</h3>
|
|
||||||
<p>Скачайте дистрибутив последней версии <a href="https://users.v8.1c.ru/distribution/project/Platform83">платформы 1С:Предприятия 8.3</a> в сервисе "1С:Обновление программ" на портале 1С:ИТС (<a href="https://portal.1c.ru/">portal.1c.ru</a>). При необходимости </p>
|
|
||||||
<p>укажите логин и пароль.</p>
|
|
||||||
<p><img src="_files/pic02.jpg"></img></p>
|
|
||||||
<p>Далее следует выбрать актуальную (последнюю официально опубликованную) версию технологической платформы</p>
|
|
||||||
<p><img src="_files/pic03.jpg"></img></p>
|
|
||||||
<p>Для скачивания файла перейдите в раздел «Технологическая платформа 1С:Предприятия для Windows»:</p>
|
|
||||||
<p><img src="_files/pic04.jpg"></img></p>
|
|
||||||
<p>Далее, по ссылке "Скачать дистрибутив" откроется диалог сохранения файла на диск. Запомните папку, в которую его сохранили:</p>
|
|
||||||
<p><img src="_files/pic05_2.jpg"></img></p>
|
|
||||||
<p></p>
|
|
||||||
<h3>2. Установить новую версию 1С:Предприятия 8.3</h3>
|
|
||||||
<p>Обратите внимание: для установки программы пользователь Windows должен обладать правами администратора! Распакуйте загруженный файл с архивом. В папке, в которую распаковали архив, найдите и запустите файл Setup.exe:</p>
|
|
||||||
<p><img src="_files/pic06.jpg"></img></p>
|
|
||||||
<p>Далее следуйте инструкциям программы-установщика:</p>
|
|
||||||
<p><img src="_files/pic07.jpg"></img></p>
|
|
||||||
<p></p>
|
|
||||||
<h3>3. Создать резервную копию информационной базы</h3>
|
|
||||||
<p>Определите и откройте каталог, в котором находится нужная база данных:</p>
|
|
||||||
<p><img src="_files/pic08_2.jpg"></img></p>
|
|
||||||
<p><img src="_files/pic09.jpg"></img></p>
|
|
||||||
<h3>4. Начало работы с новой версией платформы</h3>
|
|
||||||
<p>По кнопке "1С:Предприятие" можно начать работы с выбранной информационной базой на новой версии платформы.</p></body></html>
|
|
||||||
@@ -29,10 +29,10 @@
|
|||||||
<usePurposes>MobileDevice</usePurposes>
|
<usePurposes>MobileDevice</usePurposes>
|
||||||
</forms>
|
</forms>
|
||||||
<templates uuid="5c4ecf15-b92d-4610-b2bb-f2331c5c7528">
|
<templates uuid="5c4ecf15-b92d-4610-b2bb-f2331c5c7528">
|
||||||
<name>ПорядокОбновленияДляФайловойБазы_ru</name>
|
<name>ПорядокОбновленияДляФайловойБазы</name>
|
||||||
<synonym>
|
<synonym>
|
||||||
<key>ru</key>
|
<key>ru</key>
|
||||||
<value>Порядок обновления для файловой базы ru</value>
|
<value>Порядок обновления для файловой базы</value>
|
||||||
</synonym>
|
</synonym>
|
||||||
<templateType>HTMLDocument</templateType>
|
<templateType>HTMLDocument</templateType>
|
||||||
</templates>
|
</templates>
|
||||||
|
|||||||
@@ -57,6 +57,13 @@
|
|||||||
Элементы.ГруппаОбработкаГрупповоеИзменениеОбъектов.Видимость = Ложь;
|
Элементы.ГруппаОбработкаГрупповоеИзменениеОбъектов.Видимость = Ложь;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда
|
||||||
|
МодульСоединенияИБ = ОбщегоНазначения.ОбщийМодуль("СоединенияИБ");
|
||||||
|
Элементы.ОбработкаБлокировкаСоединенийСИнформационнойБазойОткрыть.Видимость = МодульСоединенияИБ.ПодсистемаИспользуется();
|
||||||
|
Иначе
|
||||||
|
Элементы.ОбработкаБлокировкаСоединенийСИнформационнойБазойОткрыть.Видимость = Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПоискИУдалениеДублей") Тогда
|
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПоискИУдалениеДублей") Тогда
|
||||||
Элементы.ГруппаПоискИУдалениеДублей.Видимость = Ложь;
|
Элементы.ГруппаПоискИУдалениеДублей.Видимость = Ложь;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|||||||
@@ -50,9 +50,7 @@ TD {
|
|||||||
</li>
|
</li>
|
||||||
<li><strong>Шифрование</strong> - включите флажок, для того чтобы разрешить шифрование файлов.
|
<li><strong>Шифрование</strong> - включите флажок, для того чтобы разрешить шифрование файлов.
|
||||||
</li>
|
</li>
|
||||||
<li><a href="CommonForm.НастройкиЭлектроннойПодписиИШифрования/Help">Сертификаты и программы электронной подписи и шифрования</a> - переход к настройке параметров подключения средств криптографии: электронной подписи и шифрования. </li>
|
<li><a href="CommonForm.НастройкиЭлектроннойПодписиИШифрования/Help">Настройки электронной подписи и шифрования</a> - переход к настройке параметров подключения средств криптографии: электронной подписи и шифрования. </li>
|
||||||
<li><strong>Проверять подписи и сертификаты на сервере</strong> - В этом случае проверка электронной подписи и сертификата будет происходить на сервере или веб-сервере, что позволяет не устанавливать программу на каждом компьютере, где требуются только такие операции.</li>
|
|
||||||
<li><b>Подписывать и шифровать на сервере</b> - позволяет не устанавливать программу криптографии на компьютер пользователя для подписания, шифрования и расшифровки. В этом случае необходимо установить программу криптографии и сертификат с закрытым ключом на компьютере, где работает сервер 1С:Предприятия или веб-сервер.</li>
|
|
||||||
<a name="СтандартныеПодсистемы.ЭлектроннаяПодписьСервисаDSS"></a>
|
<a name="СтандартныеПодсистемы.ЭлектроннаяПодписьСервисаDSS"></a>
|
||||||
<li><b>Использовать сервис DSS</b> - включите флажок, для того чтобы разрешить использовать электронную подпись сервиса DSS и для операций криптографии сервиса DSS. После этого в списке <b>Настройки электронной подписи и шифрования</b> можно добавить учетные записи DSS, а также становятся доступными команды:</li>
|
<li><b>Использовать сервис DSS</b> - включите флажок, для того чтобы разрешить использовать электронную подпись сервиса DSS и для операций криптографии сервиса DSS. После этого в списке <b>Настройки электронной подписи и шифрования</b> можно добавить учетные записи DSS, а также становятся доступными команды:</li>
|
||||||
<li><a href="DataProcessor.УправлениеПодключениемDSS.Form.СписокЭкземпляровСервераDSS/Help">Серверы DSS</a> - переход к настройке серверов DSS.</li>
|
<li><a href="DataProcessor.УправлениеПодключениемDSS.Form.СписокЭкземпляровСервераDSS/Help">Серверы DSS</a> - переход к настройке серверов DSS.</li>
|
||||||
|
|||||||
@@ -124,7 +124,6 @@
|
|||||||
|
|
||||||
ОтключитьОбработчикОжидания("ИстечениеВремениОжидания");
|
ОтключитьОбработчикОжидания("ИстечениеВремениОжидания");
|
||||||
ОтключитьОбработчикОжидания("ПроверкаНаЕдинственностьПодключения");
|
ОтключитьОбработчикОжидания("ПроверкаНаЕдинственностьПодключения");
|
||||||
ОтключитьОбработчикОжидания("ЗавершитьРаботуПользователей");
|
|
||||||
|
|
||||||
Если ВыполняетсяРезервноеКопирование = Истина Тогда
|
Если ВыполняетсяРезервноеКопирование = Истина Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
@@ -279,7 +278,7 @@
|
|||||||
УстановитьЗаголовокКнопкиДалее(Истина);
|
УстановитьЗаголовокКнопкиДалее(Истина);
|
||||||
|
|
||||||
СоединенияИБВызовСервера.УстановитьБлокировкуСоединений(
|
СоединенияИБВызовСервера.УстановитьБлокировкуСоединений(
|
||||||
НСтр("ru = 'Выполняется восстановление информационной базы.'"),
|
НСтр("ru = 'Выполняется резервное копирование информационной базы.'"),
|
||||||
"РезервноеКопирование");
|
"РезервноеКопирование");
|
||||||
|
|
||||||
Если КоличествоСеансовИнформационнойБазы = 1 Тогда
|
Если КоличествоСеансовИнформационнойБазы = 1 Тогда
|
||||||
@@ -633,7 +632,7 @@
|
|||||||
#КонецЕсли
|
#КонецЕсли
|
||||||
|
|
||||||
&НаСервере
|
&НаСервере
|
||||||
Функция СформироватьТекстСкриптов(Знач ПараметрыСкрипта, Знач СообщенияДляЖурналаРегистрации)
|
Функция СформироватьТекстСкриптов(Знач ПараметрыСкрипта, СообщенияДляЖурналаРегистрации)
|
||||||
|
|
||||||
ЖурналРегистрации.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации);
|
ЖурналРегистрации.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации);
|
||||||
|
|
||||||
|
|||||||
@@ -444,20 +444,12 @@
|
|||||||
|
|
||||||
ИначеЕсли Результат.Статус = "Выполнено" Тогда
|
ИначеЕсли Результат.Статус = "Выполнено" Тогда
|
||||||
|
|
||||||
РезультатОбновления = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
|
УточнитьРезультатВыполнения(Результат.АдресРезультата,
|
||||||
Если ТипЗнч(РезультатОбновления) = Тип("Структура") Тогда
|
Результат.КраткоеПредставлениеОшибки,
|
||||||
Если РезультатОбновления.Свойство("КраткоеПредставлениеОшибки")
|
Результат.ПодробноеПредставлениеОшибки,
|
||||||
И РезультатОбновления.Свойство("ПодробноеПредставлениеОшибки") Тогда
|
ПризнакВыполненияОбработчиков,
|
||||||
Результат.КраткоеПредставлениеОшибки = РезультатОбновления.КраткоеПредставлениеОшибки;
|
ПрогрессВыполнения);
|
||||||
Результат.ПодробноеПредставлениеОшибки = РезультатОбновления.ПодробноеПредставлениеОшибки;
|
|
||||||
Иначе
|
|
||||||
ПризнакВыполненияОбработчиков = РезультатОбновления.Результат;
|
|
||||||
УстановитьПараметрыСеансаИзФоновогоЗадания(РезультатОбновления.ПараметрыКлиентаНаСервере);
|
|
||||||
ПрогрессВыполнения = 100;
|
|
||||||
КонецЕсли;
|
|
||||||
Иначе
|
|
||||||
ПризнакВыполненияОбработчиков = РезультатОбновления;
|
|
||||||
КонецЕсли;
|
|
||||||
ОбработатьОшибкуПравилРегистрации(Результат.Сообщения);
|
ОбработатьОшибкуПравилРегистрации(Результат.Сообщения);
|
||||||
|
|
||||||
Иначе // ошибка
|
Иначе // ошибка
|
||||||
@@ -848,9 +840,24 @@
|
|||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
&НаСервереБезКонтекста
|
&НаСервереБезКонтекста
|
||||||
Процедура УстановитьПараметрыСеансаИзФоновогоЗадания(ПараметрыКлиентаНаСервере)
|
Процедура УточнитьРезультатВыполнения(АдресРезультата, КраткоеПредставлениеОшибки,
|
||||||
|
ПодробноеПредставлениеОшибки, ПризнакВыполненияОбработчиков, ПрогрессВыполнения)
|
||||||
|
|
||||||
|
РезультатОбновления = ПолучитьИзВременногоХранилища(АдресРезультата);
|
||||||
|
Если ТипЗнч(РезультатОбновления) = Тип("Структура") Тогда
|
||||||
|
Если РезультатОбновления.Свойство("КраткоеПредставлениеОшибки")
|
||||||
|
И РезультатОбновления.Свойство("ПодробноеПредставлениеОшибки") Тогда
|
||||||
|
КраткоеПредставлениеОшибки = РезультатОбновления.КраткоеПредставлениеОшибки;
|
||||||
|
ПодробноеПредставлениеОшибки = РезультатОбновления.ПодробноеПредставлениеОшибки;
|
||||||
|
Иначе
|
||||||
|
ПризнакВыполненияОбработчиков = РезультатОбновления.Результат;
|
||||||
|
ПрогрессВыполнения = 100;
|
||||||
|
КонецЕсли;
|
||||||
|
Иначе
|
||||||
|
ПризнакВыполненияОбработчиков = РезультатОбновления;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
ПараметрыСеанса.ПараметрыКлиентаНаСервере = ПараметрыКлиентаНаСервере;
|
ОбновлениеИнформационнойБазыСлужебный.УстановитьЗапускОбновленияИнформационнойБазы(Ложь);
|
||||||
ПараметрыСеанса.ВыполняетсяОбновлениеИБ = Ложь;
|
ПараметрыСеанса.ВыполняетсяОбновлениеИБ = Ложь;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|||||||
@@ -299,6 +299,7 @@
|
|||||||
|
|
||||||
НельзяУдалятьОсновнойОбъект = Ложь;
|
НельзяУдалятьОсновнойОбъект = Ложь;
|
||||||
НеудаленныеЭлементы = Новый Массив;
|
НеудаленныеЭлементы = Новый Массив;
|
||||||
|
ТранзакцияОтменена = Ложь;
|
||||||
НачатьТранзакцию();
|
НачатьТранзакцию();
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
@@ -312,6 +313,11 @@
|
|||||||
МестаИспользования.Скопировать(Фильтр),
|
МестаИспользования.Скопировать(Фильтр),
|
||||||
НеудаленныеЭлементы);
|
НеудаленныеЭлементы);
|
||||||
|
|
||||||
|
Если РезультатУдаления.ИнформацияОбОшибке <> Неопределено Тогда
|
||||||
|
ОтменитьТранзакцию();
|
||||||
|
ТранзакцияОтменена = Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
ОтразитьРезультатУдаленияЭлементаПакета(
|
ОтразитьРезультатУдаленияЭлементаПакета(
|
||||||
ПараметрыУдаления,
|
ПараметрыУдаления,
|
||||||
РезультатОбработкиПакета,
|
РезультатОбработкиПакета,
|
||||||
@@ -343,14 +349,18 @@
|
|||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Если НЕ НельзяУдалятьОсновнойОбъект Тогда
|
Если Не ТранзакцияОтменена Тогда
|
||||||
ЗафиксироватьТранзакцию();
|
Если НЕ НельзяУдалятьОсновнойОбъект Тогда
|
||||||
Иначе
|
ЗафиксироватьТранзакцию();
|
||||||
|
Иначе
|
||||||
|
ОтменитьТранзакцию();
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Исключение
|
||||||
|
Если Не ТранзакцияОтменена Тогда
|
||||||
ОтменитьТранзакцию();
|
ОтменитьТранзакцию();
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Исключение
|
|
||||||
ОтменитьТранзакцию();
|
|
||||||
ВызватьИсключение;
|
ВызватьИсключение;
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
|
|||||||
@@ -897,6 +897,9 @@
|
|||||||
<content>
|
<content>
|
||||||
<mdObject>Constant.СписокЗапрещенныхРасширений</mdObject>
|
<mdObject>Constant.СписокЗапрещенныхРасширений</mdObject>
|
||||||
</content>
|
</content>
|
||||||
|
<content>
|
||||||
|
<mdObject>InformationRegister.ПериодическиеСерверныеОповещения</mdObject>
|
||||||
|
</content>
|
||||||
<content>
|
<content>
|
||||||
<mdObject>InformationRegister.СвязиАдресныхОбъектов</mdObject>
|
<mdObject>InformationRegister.СвязиАдресныхОбъектов</mdObject>
|
||||||
</content>
|
</content>
|
||||||
@@ -957,6 +960,9 @@
|
|||||||
<content>
|
<content>
|
||||||
<mdObject>InformationRegister.БуферОперацийСтатистики</mdObject>
|
<mdObject>InformationRegister.БуферОперацийСтатистики</mdObject>
|
||||||
</content>
|
</content>
|
||||||
|
<content>
|
||||||
|
<mdObject>InformationRegister.ОтправленныеСерверныеОповещения</mdObject>
|
||||||
|
</content>
|
||||||
<content>
|
<content>
|
||||||
<mdObject>Constant.ПараметрыЦентраМониторинга</mdObject>
|
<mdObject>Constant.ПараметрыЦентраМониторинга</mdObject>
|
||||||
</content>
|
</content>
|
||||||
|
|||||||
@@ -842,18 +842,18 @@
|
|||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура ПрогрессВыполнения(Результат, ДополнительныеПараметры) Экспорт
|
Процедура ПрогрессВыполнения(Результат, ДополнительныеПараметры) Экспорт
|
||||||
|
|
||||||
Если Результат.Статус = "Выполняется" Тогда
|
Если Результат.Статус = "Выполняется"
|
||||||
|
И Результат.Прогресс <> Неопределено Тогда
|
||||||
|
|
||||||
Прогресс = ПрочитатьПрогресс(Результат.ИдентификаторЗадания);
|
Прогресс = Результат.Прогресс; // См. ДлительныеОперации.ПрочитатьПрогресс
|
||||||
|
|
||||||
Если Прогресс <> Неопределено Тогда
|
Если Прогресс.Свойство("Процент")
|
||||||
Если Прогресс.Свойство("Процент")
|
И Прогресс.Свойство("ДополнительныеПараметры")
|
||||||
И Прогресс.Свойство("ДополнительныеПараметры")
|
И СтрСравнить(Прогресс.ДополнительныеПараметры, "ПрогрессМногопоточногоПроцесса") = 0 Тогда
|
||||||
И СтрСравнить(Прогресс.ДополнительныеПараметры, "ПрогрессМногопоточногоПроцесса") = 0 Тогда
|
|
||||||
ПрогрессЗагрузки = Прогресс.Процент;
|
ПрогрессЗагрузки = Прогресс.Процент;
|
||||||
Иначе
|
Иначе
|
||||||
ТекстСостоянияЗагрузки = Прогресс.Текст;
|
ТекстСостоянияЗагрузки = Прогресс.Текст;
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
@@ -899,6 +899,7 @@
|
|||||||
|
|
||||||
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
|
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
|
||||||
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Загрузка адресного классификатора с сайта'");
|
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Загрузка адресного классификатора с сайта'");
|
||||||
|
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
|
||||||
|
|
||||||
ПараметрыЗагрузки = АдресныйКлассификаторСлужебный.ПараметрыЗагрузкиКлассификатораАдресов();
|
ПараметрыЗагрузки = АдресныйКлассификаторСлужебный.ПараметрыЗагрузкиКлассификатораАдресов();
|
||||||
ПараметрыЗагрузки.ЗагружатьИсториюАдресов = ЗагружатьИсторию;
|
ПараметрыЗагрузки.ЗагружатьИсториюАдресов = ЗагружатьИсторию;
|
||||||
@@ -965,6 +966,7 @@
|
|||||||
|
|
||||||
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
|
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
|
||||||
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Загрузка адресного классификатора с сайта'");
|
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Загрузка адресного классификатора с сайта'");
|
||||||
|
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
|
||||||
|
|
||||||
ПараметрыЗагрузки = АдресныйКлассификаторСлужебный.ПараметрыЗагрузкиКлассификатораАдресов();
|
ПараметрыЗагрузки = АдресныйКлассификаторСлужебный.ПараметрыЗагрузкиКлассификатораАдресов();
|
||||||
ПараметрыЗагрузки.ЗагружатьИсториюАдресов = ЗагружатьИсториюИзмененийАдресныхОбъектов;
|
ПараметрыЗагрузки.ЗагружатьИсториюАдресов = ЗагружатьИсториюИзмененийАдресныхОбъектов;
|
||||||
@@ -991,11 +993,6 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
&НаСервереБезКонтекста
|
|
||||||
Функция ПрочитатьПрогресс(ИдентификаторЗадания)
|
|
||||||
Возврат ДлительныеОперации.ПрочитатьПрогресс(ИдентификаторЗадания);
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
&НаСервереБезКонтекста
|
&НаСервереБезКонтекста
|
||||||
Функция ДанныеАутентификацииСайтаСохранены()
|
Функция ДанныеАутентификацииСайтаСохранены()
|
||||||
|
|
||||||
|
|||||||