3_1_10_206
This commit is contained in:
1 parent
44a10b9181
commit
f91290c6ec
229 files changed
+13743
-3175
No files matched your search
@@ -39,7 +39,7 @@
|
||||
КонецЕсли;
|
||||
НоваяСтрока = Языки.Добавить();
|
||||
ЗаполнитьЗначенияСвойств(НоваяСтрока, ЯзыкКонфигурации);
|
||||
НоваяСтрока.Имя = "_" + СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
|
||||
НоваяСтрока.Имя = "Язык_" + ЯзыкКонфигурации.КодЯзыка;
|
||||
КонецЦикла;
|
||||
|
||||
СформироватьПоляВводаНаРазныхЯзыках(Ложь, Параметры.ТолькоПросмотр);
|
||||
@@ -138,7 +138,9 @@
|
||||
Добавлять = Новый Массив;
|
||||
ТипСтрока = Новый ОписаниеТипов("Строка");
|
||||
Для Каждого ЯзыкКонфигурации Из Языки Цикл
|
||||
Добавлять.Добавить(Новый РеквизитФормы(ЯзыкКонфигурации.Имя, ТипСтрока, , ЯзыкКонфигурации.Представление));
|
||||
Добавлять.Добавить(Новый РеквизитФормы(ЯзыкКонфигурации.Имя, ТипСтрока, ,
|
||||
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Параметры прописи для языка %1'"),
|
||||
ЯзыкКонфигурации.Представление)));
|
||||
Добавлять.Добавить(Новый РеквизитФормы("ПодсказкаВвода" + ЯзыкКонфигурации.Имя, ТипСтрока, ,
|
||||
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Подсказка ввода для языка %1'"),
|
||||
ЯзыкКонфигурации.Представление)));
|
||||
|
||||
@@ -128,11 +128,11 @@
|
||||
| Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты
|
||||
|ГДЕ
|
||||
| ВнешниеКомпоненты.Идентификатор = &Идентификатор
|
||||
| ИЛИ ВнешниеКомпоненты.Версия = &Версия";
|
||||
| ИЛИ ВнешниеКомпоненты.Идентификатор = &Идентификатор2 И ВнешниеКомпоненты.Версия ПОДОБНО ""3.1.0.%""";
|
||||
|
||||
Запрос = Новый Запрос(ТекстЗапроса);
|
||||
Запрос.УстановитьПараметр("Идентификатор", "AddInNativeExtension");
|
||||
Запрос.УстановитьПараметр("Версия", "3.1.0.1013");
|
||||
Запрос.УстановитьПараметр("Идентификатор2", "ImageScan");
|
||||
|
||||
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
|
||||
|
||||
@@ -264,38 +264,37 @@
|
||||
|
||||
ОбновитьПоддерживаемыеПлатформыКомпоненты = Истина;
|
||||
|
||||
ЦелевыеПлатформы = РеквизитыКомпоненты.ЦелевыеПлатформы.Получить();
|
||||
|
||||
ДвоичныеДанныеКомпоненты = РеквизитыКомпоненты.ХранилищеКомпоненты.Получить();
|
||||
|
||||
Если ТипЗнч(ДвоичныеДанныеКомпоненты) <> Тип("ДвоичныеДанные") Тогда
|
||||
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Выборка.Ссылка);
|
||||
ОбъектовОбработано = ОбъектовОбработано + 1;
|
||||
ОбновитьПоддерживаемыеПлатформыКомпоненты = Ложь;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
|
||||
ИнформацияОКомпонентеИзФайла = ВнешниеКомпонентыСлужебный.ИнформацияОКомпонентеИзФайла(
|
||||
ДвоичныеДанныеКомпоненты, Ложь);
|
||||
Если Не ИнформацияОКомпонентеИзФайла.Разобрано Тогда
|
||||
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Выборка.Ссылка);
|
||||
ОбъектовОбработано = ОбъектовОбработано + 1;
|
||||
ОбновитьПоддерживаемыеПлатформыКомпоненты = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
Реквизиты = ИнформацияОКомпонентеИзФайла.Реквизиты;
|
||||
|
||||
Если ЦелевыеПлатформы <> Неопределено И ОбщегоНазначения.КоллекцииИдентичны(ЦелевыеПлатформы, Реквизиты.ЦелевыеПлатформы) Тогда
|
||||
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Выборка.Ссылка);
|
||||
ОбъектовОбработано = ОбъектовОбработано + 1;
|
||||
ЦелевыеПлатформы = РеквизитыКомпоненты.ЦелевыеПлатформы.Получить();
|
||||
Если ЦелевыеПлатформы <> Неопределено И ОбщегоНазначения.КоллекцииИдентичны(ЦелевыеПлатформы,
|
||||
Реквизиты.ЦелевыеПлатформы) Тогда
|
||||
ОбновитьПоддерживаемыеПлатформыКомпоненты = Ложь;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
ОбновитьПоддерживаемыеПлатформыКомпоненты = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ОбновитьПоддерживаемыеПлатформыКомпоненты
|
||||
И Не (ОбновитьПараметрыКомпонентыСканирования И (РеквизитыКомпоненты.Идентификатор = "AddInNativeExtension")
|
||||
Или РеквизитыКомпоненты.Версия = "3.1.0.1013") Тогда
|
||||
И Не (ОбновитьПараметрыКомпонентыСканирования И (РеквизитыКомпоненты.Идентификатор = "AddInNativeExtension"
|
||||
Или РеквизитыКомпоненты.Идентификатор = ИдентификаторКомпонентыСканирования
|
||||
И СтрНачинаетсяС(РеквизитыКомпоненты.Версия, "3.1.0."))) Тогда
|
||||
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Выборка.Ссылка);
|
||||
ОбъектовОбработано = ОбъектовОбработано + 1;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -318,8 +317,8 @@
|
||||
КомпонентаОбъект.Идентификатор = ИдентификаторКомпонентыСканирования;
|
||||
КонецЕсли;
|
||||
|
||||
Если ОбновитьПараметрыКомпонентыСканирования И РеквизитыКомпоненты.Версия = "3.1.0.1013" Тогда
|
||||
КомпонентаОбъект.Версия = "3.0.1.1013";
|
||||
Если ОбновитьПараметрыКомпонентыСканирования И СтрНачинаетсяС(РеквизитыКомпоненты.Версия, "3.1.0.") Тогда
|
||||
КомпонентаОбъект.Версия = СтрЗаменить(РеквизитыКомпоненты.Версия, "3.1.0.", "3.0.1.");
|
||||
КонецЕсли;
|
||||
|
||||
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(КомпонентаОбъект);
|
||||
@@ -362,7 +361,7 @@
|
||||
#КонецОбласти
|
||||
|
||||
Функция ОбновитьПараметрыКомпонентыСканирования(ВерсияПодсистемыНаНачалоОбновления)
|
||||
Возврат ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияПодсистемыНаНачалоОбновления, "3.1.9.230") < 0
|
||||
Возврат ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияПодсистемыНаНачалоОбновления, "3.1.10.179") < 0
|
||||
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами")
|
||||
КонецФункции
|
||||
|
||||
|
||||
@@ -47,9 +47,9 @@
|
||||
<div>При необходимости для каждого <strong>Вида доступа</strong> можно задать список значений или групп значений, которые будут исключениями. Для этого в списке <strong>Разрешенные(Запрещенные) значения</strong> нажмите <strong>Добавить</strong>. Выберите исключения из предлагаемых приложением списков.</div>
|
||||
<ul><li>В ряде случаев для упрощения настройки прав доступа, в списке разрешенных или запрещенных значений можно указывать не отдельные элементы, а целые группы элементов. Например, для вида доступа <strong>Демо: Группы Партнеров</strong> можно ограничить доступ в разрезе групп доступа партнеров, а не по каждому партнеру в отдельности. Для этого необходимо определить список групп доступа партнеров, и у каждого партнера задать принадлежность к той или иной группе. Эти действия могут быть выполнены не только администратором, но и любым пользователем с соответствующими правами на редактирование списка партнеров.</li></ul></li>
|
||||
<li>В некоторых группах доступа предусмотрена настройка прав с помощью вида доступа <strong>Пользователи</strong> (аналогично, вид доступа <strong>Внешние пользователи</strong> для внешних пользователей). Настройка может учитываться только в тех документах (и других объектах приложения), в полях которых могут быть указаны пользователи, получающие доступ к этим документам ("Ответственный", "Автор", "Исполнитель" и т.п.).
|
||||
<ul><li>Для того чтобы дать участникам группы права доступа ко всем ограниченным данным, с которыми работает тот или иной пользователь, необходимо включить его в список разрешенных значений для вида доступа <strong>Пользователи</strong>.
|
||||
</li>
|
||||
<li>Например, если доступ к документам <strong>Поступление товаров и услуг </strong>зависит от того, кто указан в поле <strong>Ответственный</strong>, тогда пользователь сможет записывать документы, у которых <strong>Ответственный</strong> совпадает с пользователем, или добавлен в список разрешенных для вида доступа <strong>Пользователи</strong>. Аналогично действует запрещающая настройка.</li></ul></li></ul><h3 style="font-size: 13.4399995803833px;">Отчеты</h3>
|
||||
<ul><li>Для того чтобы участникам группы доступа дать права доступа ко всем ограниченным данным, с которыми работает тот или иной пользователь, необходимо включить его в список разрешенных значений для вида доступа <strong>Пользователи</strong>.</li>
|
||||
<li>При этом не нужно включать лишних пользователей, так как для этих видов доступа <b>авторизованный пользователь и его группы всегда разрешены</b>. То есть в своем сеансе каждый участник группы доступа будет разрешенным по виду доступа <b>Пользователи</b> в рамках этой группы доступа, как будут разрешены и его группы пользователей (в которые он входит).</li>
|
||||
<li>Например, если доступ к документам <strong>Поступление товаров и услуг </strong>зависит от того, кто указан в поле <strong>Ответственный</strong>, тогда пользователь сможет записывать документы, у которых <strong>Ответственный</strong> совпадает с ним или группой пользователей, в которую он входит, или добавлен в список разрешенных для вида доступа <strong>Пользователи</strong>. Аналогично действует запрещающая настройка (список исключений из состава разрешенных), но сам авторизованный пользователь и его группы пользователей остаются в составе разрешенных. </li></ul></li></ul><h3 style="font-size: 13.4399995803833px;">Отчеты</h3>
|
||||
<ul><li>
|
||||
<div>Просмотреть участников групп доступа можно с помощью отчета <b>Участники групп доступа</b>. Отчет может быть полезен, если в приложении большое количество пользователей и групп. </div></li></ul><h3>См. также:</h3>
|
||||
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>. </li></ul></body></html>
|
||||
@@ -1,10 +1,10 @@
|
||||
<!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><a href="Catalog.ГруппыДоступа.Form.ФормаСписка/Help">Группы доступа</a> предназначены для настройки прав и ограничений прав доступа конкретным пользователям и группам пользователей приложения.</p>
|
||||
<p>Приложение позволяет настроить доступ пользователей к различным функциям, спискам и документам. Предусмотрены предопределенные наборы ролей. Кроме этого, имеется возможность самостоятельной настройки доступа. Управление доступом осуществляет администратор. При этом пользователь, назначенный ответственным в <a href="Catalog.ГруппыДоступа.Form.ФормаЭлемента/Help">группе доступа</a>, может изменять состав своей группы доступа.</p>
|
||||
<p>Набор прав и возможности по их ограничению определяются заданным <a href="Catalog.ПрофилиГруппДоступа/Help">профилем групп доступа</a>. </p>
|
||||
<p>Приложение позволяет настроить доступ пользователей к различным функциям, спискам и документам. Предусмотрены предопределенные наборы прав. Кроме этого, имеется возможность самостоятельной настройки доступа. Управление доступом осуществляет администратор. При этом пользователь, назначенный ответственным в <a href="Catalog.ГруппыДоступа.Form.ФормаЭлемента/Help">группе доступа</a>, может изменять состав участников своей группы доступа.</p>
|
||||
<p>Набор прав (ролей) и возможности по их ограничению определяются заданным <a href="Catalog.ПрофилиГруппДоступа/Help">профилем групп доступа</a>. </p>
|
||||
<p>Например, группа доступа "Менеджеры по продажам ПО делового назначения" с пользователями Иванов и Петров может ссылаться на профиль "Менеджер по продажам", в котором предусмотрена возможность ограничения по виду доступа <strong>Виды номенклатуры</strong>. Тогда если по этому виду доступа для всех значений указать вариант "Запрещены", а в список добавить вид номенклатуры "ПО делового назначения", то Иванову и Петрову будут доступны только те данные и операции, которые связаны с ПО делового назначения.</p>
|
||||
<p>Рекомендуется задавать наименования групп таким образом, чтобы название отражало как суть профиля, так и смысл ограничений, заданных в группе.</p>
|
||||
<p>В состав группы доступа могут быть включены как отдельные <a href="Catalog.Пользователи/Help">пользователи</a> (<a href="Catalog.ВнешниеПользователи/Help">внешние пользователи</a>), так и <a href="Catalog.ГруппыПользователей/Help">группы пользователей</a> (<a href="Catalog.ГруппыВнешнихПользователей/Help">группы внешних пользователей</a>). В случае большого количества пользователей, участвующих сразу в нескольких группах доступа, рекомендуется объединять пользователей в группы. Включение таких групп пользователей в группы доступа позволит избежать рутинного пересмотра состава пользователей в нескольких группах доступа.</p>
|
||||
<p>В состав группы доступа могут быть включены как отдельные <a href="Catalog.Пользователи/Help">пользователи</a> (<a href="Catalog.ВнешниеПользователи/Help">внешние пользователи</a>), так и <a href="Catalog.ГруппыПользователей/Help">группы пользователей</a> (<a href="Catalog.ГруппыВнешнихПользователей/Help">группы внешних пользователей</a>). В случае большого количества пользователей, участвующих сразу в нескольких группах доступа, рекомендуется объединять пользователей в группы пользователей. Включение таких групп пользователей в группы доступа позволит избежать рутинного пересмотра состава пользователей в нескольких группах доступа.</p>
|
||||
<h3>Состав ролей пользователя</h3>
|
||||
<ul><li>Состав ролей пользователя определяется приложением автоматически, исходя из того, в какие <a href="Catalog.ГруппыДоступа.Form.ФормаСписка/Help">группы доступа</a> он входит явно или косвенно (посредством групп пользователей), и обновляется каждый раз при изменении состава группы доступа или состава <a href="Catalog.ГруппыПользователей/Help">группы пользователей</a> (<a href="Catalog.ГруппыВнешнихПользователей.Form.ФормаЭлемента/Help">группы внешних пользователей</a>).
|
||||
</li>
|
||||
@@ -13,7 +13,7 @@
|
||||
</li>
|
||||
<li>В этом случае его совокупные <a href="CommonForm.ПраваДоступа/Help">права доступа</a> складываются (объединяются по "или") из прав доступа каждой группы. Например, в группе доступа "Менеджеры по закупкам" пользователю разрешен просмотр документов "Поступления товаров" по организации "Далекая перспектива". В группе доступа "Менеджеры по продажам" ему разрешен ввод документов "Заказ покупателя" по организации "Новые технологии".
|
||||
</li>
|
||||
<li>При этом следует учитывать, что объединяются не списки разрешенных значений, указанные в группах, а именно права доступа. Т.е. ошибочно считать, что в приведенном примере пользователь получит доступ на просмотр документов поступления товаров и на ввод документов "Заказы покупателей" одновременно по обеим организациям.</li></ul><h3>Группа доступа для администрирования</h3>
|
||||
<li>При этом следует учитывать, что объединяются не списки разрешенных значений, указанные в группах доступа, а именно права доступа. Т.е. ошибочно считать, что в приведенном примере пользователь получит доступ на просмотр документов поступления товаров и на ввод документов "Заказы покупателей" одновременно по обеим организациям.</li></ul><h3>Группа доступа для администрирования</h3>
|
||||
<ul><li>Для целей администрирования приложения предусмотрена предопределенная группа доступа <strong>Администраторы</strong> с профилем <strong>Администратор</strong>. При добавлении пользователя в эту группу ему автоматически устанавливается роль <strong>Полные права</strong>. При этом если в приложении имеются другие пользователи с этой ролью, которые не входят в группу <strong>Администраторы</strong>, то у таких пользователей роль <strong>Полные права</strong> будет снята.</li></ul><h3>Предупреждение</h3>
|
||||
<ul><li>Не следует для настройки прав доступа использовать режим конфигурирования 1С:Предприятия.</li></ul><h3>См. также</h3>
|
||||
<ul><li><a href="v8help://frame/form_common">Работа с формами</a></li></ul></body></html>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -19,18 +19,23 @@
|
||||
|
||||
Процедура ПередЗаписью(Отказ)
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после записи изменений в журнал.
|
||||
Если ЭтоГруппа Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
РегистрыСведений.ПраваРолей.ПроверитьДанныеРегистра();
|
||||
Если ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа()
|
||||
Или Не ОбменДанными.Загрузка Тогда
|
||||
|
||||
СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка,
|
||||
"Ссылка, Профиль, ПометкаУдаления, Пользователи, ВидыДоступа, ЗначенияДоступа");
|
||||
СтарыеЗначения = СтарыеЗначения();
|
||||
КонецЕсли;
|
||||
// АПК:75-вкл
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
РегистрыСведений.ПраваРолей.ПроверитьДанныеРегистра();
|
||||
|
||||
Если Не Справочники.ВерсииРасширений.ВсеРасширенияПодключены() Тогда
|
||||
Справочники.ПрофилиГруппДоступа.ВосстановитьНесуществующиеВидыИЗначенияДоступа(СтарыеЗначения, ЭтотОбъект);
|
||||
@@ -85,8 +90,6 @@
|
||||
|у предопределенной группы доступа Администраторы.'");
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЭтоГруппа Тогда
|
||||
|
||||
// Автоматическая установка реквизитов для персональной группы доступа.
|
||||
Если ЗначениеЗаполнено(Пользователь) Тогда
|
||||
Родитель = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа();
|
||||
@@ -99,7 +102,9 @@
|
||||
|
||||
// При снятии пометки удаления с группы доступа выполняется
|
||||
// снятие пометки удаления с профиля этой группы доступа.
|
||||
Если Не ПометкаУдаления И СтарыеЗначения.ПометкаУдаления = Истина Тогда
|
||||
Если Не ПометкаУдаления И СтарыеЗначения.ПометкаУдаления = Истина
|
||||
И Профиль = СтарыеЗначения.Профиль Тогда
|
||||
|
||||
НачатьТранзакцию();
|
||||
Попытка
|
||||
Блокировка = Новый БлокировкаДанных;
|
||||
@@ -108,12 +113,16 @@
|
||||
Блокировка.Заблокировать();
|
||||
|
||||
ПометкаУдаленияПрофиля = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Профиль, "ПометкаУдаления");
|
||||
ПометкаУдаленияПрофиля = ?(ПометкаУдаленияПрофиля = Неопределено, Ложь, ПометкаУдаленияПрофиля);
|
||||
ПометкаУдаленияПрофиля = ?(ТипЗнч(ПометкаУдаленияПрофиля) = Тип("Булево"), ПометкаУдаленияПрофиля, Ложь);
|
||||
Если ПометкаУдаленияПрофиля Тогда
|
||||
УправлениеДоступом.ПроверитьИзменениеРазрешено(Профиль);
|
||||
ЗаблокироватьДанныеДляРедактирования(Профиль);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
ПрофильОбъект = Профиль.ПолучитьОбъект();
|
||||
ПрофильОбъект.ДополнительныеСвойства.Вставить("СнятиеПометкиУдаленияПрофиляПриСнятииПометкиУдаленияГруппыДоступа", Ссылка);
|
||||
ПрофильОбъект.ПометкаУдаления = Ложь;
|
||||
ПрофильОбъект.Записать();
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
ЗафиксироватьТранзакцию();
|
||||
@@ -122,7 +131,6 @@
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -133,11 +141,24 @@
|
||||
//
|
||||
Процедура ПриЗаписи(Отказ)
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после записи изменений в журнал.
|
||||
Если ЭтоГруппа Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоГруппа Тогда
|
||||
Если ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа() Тогда
|
||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
Справочники.ГруппыДоступа.ЗарегистрироватьИзменениеУчастниковГруппДоступа(ЭтотОбъект, СтарыеЗначения);
|
||||
Справочники.ГруппыДоступа.ЗарегистрироватьИзменениеРазрешенныхЗначений(ЭтотОбъект, СтарыеЗначения);
|
||||
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||
КонецЕсли;
|
||||
// АПК:75-вкл
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -200,6 +221,35 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// Значения некоторых реквизитов и табличных частей группы доступа
|
||||
// до ее изменения для использования в обработчике события ПриЗаписи.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * Ссылка - СправочникСсылка.ГруппыДоступа
|
||||
// * ПометкаУдаления - Булево
|
||||
// * Профиль - СправочникСсылка.ПрофилиГруппДоступа
|
||||
// * ПометкаУдаленияПрофиля - Булево
|
||||
// * Пользователи - РезультатЗапроса
|
||||
// * ВидыДоступа - РезультатЗапроса
|
||||
// * ЗначенияДоступа - РезультатЗапроса
|
||||
//
|
||||
Функция СтарыеЗначения()
|
||||
|
||||
Результат = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка,
|
||||
"Ссылка, Профиль, ПометкаУдаления, Пользователи, ВидыДоступа, ЗначенияДоступа");
|
||||
|
||||
Результат.Вставить("ПометкаУдаленияПрофиля", Неопределено);
|
||||
|
||||
Если ЗначениеЗаполнено(Результат.Профиль) Тогда
|
||||
Результат.ПометкаУдаленияПрофиля = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
|
||||
Результат.Профиль, "ПометкаУдаления");
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Параметры:
|
||||
// НовыеУчастники - СправочникТабличнаяЧасть.ГруппыДоступа.Пользователи
|
||||
// СтарыеУчастники - РезультатЗапроса
|
||||
|
||||
@@ -1219,6 +1219,7 @@
|
||||
Строка.ИмяВЕдЧисле = "ЖурналДокументов";
|
||||
Строка.СинонимВЕдЧисле = НСтр("ru = 'Журнал документов'");
|
||||
Строка.БезДанных = Истина;
|
||||
Строка.ОбъектыРасширений = Истина;
|
||||
|
||||
Строка = Результат.Добавить();
|
||||
Строка.Идентификатор = Новый УникальныйИдентификатор("706cf832-0ae5-45b5-8a4a-1f251d054f3b");
|
||||
@@ -1300,6 +1301,7 @@
|
||||
Строка.Синоним = НСтр("ru = 'Бизнес-процессы'");
|
||||
Строка.ИмяВЕдЧисле = "БизнесПроцесс";
|
||||
Строка.СинонимВЕдЧисле = НСтр("ru = 'Бизнес-процесс'");
|
||||
Строка.ОбъектыРасширений = Истина;
|
||||
|
||||
Строка = Результат.Добавить();
|
||||
Строка.Идентификатор = Новый УникальныйИдентификатор("8d9153ad-7cea-4e25-9542-a557ee59fd16");
|
||||
@@ -1307,6 +1309,7 @@
|
||||
Строка.Синоним = НСтр("ru = 'Задачи'");
|
||||
Строка.ИмяВЕдЧисле = "Задача";
|
||||
Строка.СинонимВЕдЧисле = НСтр("ru = 'Задача'");
|
||||
Строка.ОбъектыРасширений = Истина;
|
||||
|
||||
Для каждого Строка Из Результат Цикл
|
||||
Строка.ПорядокКоллекции = Результат.Индекс(Строка);
|
||||
@@ -1357,6 +1360,17 @@
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||
|
||||
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после записи изменений в журнал.
|
||||
Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()
|
||||
И ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа()
|
||||
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
|
||||
|
||||
Объект.ДополнительныеСвойства.Вставить("СтандартныеПодсистемыСтарыеЗначения",
|
||||
ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Ссылка,
|
||||
"ПометкаУдаления, Имя, Синоним"));
|
||||
КонецЕсли;
|
||||
// АПК:75-вкл
|
||||
|
||||
Если Объект.ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
@@ -1365,6 +1379,35 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Параметры:
|
||||
// Объект - СправочникОбъект.ИдентификаторыОбъектовМетаданных
|
||||
// - СправочникОбъект.ИдентификаторыОбъектовРасширений
|
||||
//
|
||||
Процедура ПриЗаписиОбъекта(Объект) Экспорт
|
||||
|
||||
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после записи изменений в журнал.
|
||||
Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()
|
||||
И ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа()
|
||||
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
|
||||
|
||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
МодульПрофилиГруппДоступа = ОбщегоНазначения.ОбщийМодуль("Справочники.ПрофилиГруппДоступа");
|
||||
МодульПрофилиГруппДоступа.ЗарегистрироватьИзменениеРолейПрофилей(Объект,
|
||||
Объект.ДополнительныеСвойства.СтандартныеПодсистемыСтарыеЗначения);
|
||||
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||
КонецЕсли;
|
||||
// АПК:75-вкл
|
||||
|
||||
Если Объект.ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Предотвращает удаление идентификаторов объектов метаданных не помеченных на удаление.
|
||||
//
|
||||
// Параметры:
|
||||
|
||||
@@ -19,6 +19,13 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПриЗаписи(Отказ)
|
||||
|
||||
// Проверка ОбменДанными.Загрузка выполняется в вызываемой процедуре.
|
||||
Справочники.ИдентификаторыОбъектовМетаданных.ПриЗаписиОбъекта(ЭтотОбъект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПередУдалением(Отказ)
|
||||
|
||||
// Проверка ОбменДанными.Загрузка выполняется в вызываемой процедуре.
|
||||
|
||||
@@ -19,6 +19,13 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПриЗаписи(Отказ)
|
||||
|
||||
// Проверка ОбменДанными.Загрузка выполняется в вызываемой процедуре.
|
||||
Справочники.ИдентификаторыОбъектовМетаданных.ПриЗаписиОбъекта(ЭтотОбъект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПередУдалением(Отказ)
|
||||
|
||||
// Проверка ОбменДанными.Загрузка выполняется в вызываемой процедуре.
|
||||
|
||||
+3
-4
@@ -350,13 +350,13 @@
|
||||
Элементы = Форма.Элементы;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Форма.ДокументВид)
|
||||
Или Форма.ДокументВид = "0"
|
||||
Или Форма.ДокументВид = "91" Тогда
|
||||
Или Форма.ДокументВид = "0" Тогда
|
||||
Форма.ДокументНомер = "";
|
||||
Форма.ДокументКемВыдан = "";
|
||||
Форма.ДокументДатаВыдачи = "";
|
||||
Форма.ДокументКодПодразделения = "";
|
||||
Форма.ДокументСрокДействия = "";
|
||||
Элементы.ДокументНомер.Маска = "";
|
||||
ИначеЕсли Форма.ДокументВид = "21" Тогда
|
||||
Элементы.ДокументНомер.Заголовок = НСтр("ru = 'Серия и номер'");
|
||||
Элементы.ДокументНомер.Маска = "99 99 999999";
|
||||
@@ -373,7 +373,6 @@
|
||||
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Процедура ВидимостьВидаДокумента(Форма)
|
||||
Форма.Элементы.ДокументКодПодразделения.Видимость = Форма.ПоказыватьПерсональныеДанные И Форма.ДокументВид = "21";
|
||||
Форма.Элементы.ДокументСрокДействия.Видимость = Форма.ПоказыватьПерсональныеДанные И Форма.ДокументВид <> "21";
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -529,7 +528,7 @@
|
||||
СведенияОФизическомЛице = РеквизитыУчастникаДляХранения;
|
||||
СведенияОФизическомЛице.Вставить("Ссылка", Ссылка);
|
||||
|
||||
Если ДокументВид = "00" Тогда
|
||||
Если ДокументВид = "0" Тогда
|
||||
СведенияОФизическомЛице.ДокументВид = "";
|
||||
СведенияОФизическомЛице.ДокументКемВыдан = "";
|
||||
СведенияОФизическомЛице.ДокументКодПодразделения = "";
|
||||
|
||||
@@ -8277,7 +8277,6 @@
|
||||
<name>Отправить</name>
|
||||
</handler>
|
||||
</action>
|
||||
<modifiesStoredData>true</modifiesStoredData>
|
||||
<currentRowUse>Auto</currentRowUse>
|
||||
<selectedRowsUse>Auto</selectedRowsUse>
|
||||
</formCommands>
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<!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>Форма МЧД должна соответствовать требованиям, утвержденным приказом Минцифры России от 18.08.2021 №857 "Об утверждении единых требований к формам доверенностей, необходимым для использования квалифицированной электронной подписи".</p>
|
||||
<p>Создать машиночитаемую доверенность своей организации можно в списке МЧД по кнопке <strong>Создать</strong>. Откроется форма регистрации машиночитаемой доверенности, в которой необходимо заполнить данные <strong>Срока действия</strong>, <strong>Доверителя</strong>, <strong>Представителя</strong>, <strong>Полномочий</strong>, а также <strong>Иных сведений</strong>.</p>
|
||||
<h3>Ввод доверителя</h3>
|
||||
<ul><li>Выберите <strong>Организацию </strong>- указывается юридическое лицо/иностранное юридическое лицо/индивидуальный предприниматель/ физическое лицо, передавшее другому лицу полномочия представлять его интересы перед третьими лицами.</li>
|
||||
<li>Если нужной <strong>Организации</strong> нет в списке, то можно ввести реквизиты вручную, перейдя по гиперссылке <strong>Уточнить реквизиты</strong>. </li>
|
||||
<li>Выберите лицо, действующее от имени юридического лица - доверителя, им может быть и <strong>Физическое лицо</strong>, и <strong>Организация</strong>. Если выбрана <strong>Организация</strong>, то в поле <strong>Лицо, действующее от имени управляющей компании </strong>нужно будет выбрать физическое лицо, действующее от имени управляющей организации.</li></ul><h3>Ввод представителя</h3>
|
||||
<ul><li>В поле <strong>Представитель</strong> выберите или заполните вручную представителя, получившего полномочия представлять интересы другого лица перед третьими лицами по доверенности. Представителями могут выступать <strong>Контрагенты</strong>, <strong>Организации</strong> или <strong>Физические лица</strong>.</li>
|
||||
<li>При выборе <strong>Контрагента</strong> также нужно указать физическое лицо, получившее полномочия.</li>
|
||||
<li>Если нужного <strong>Представителя</strong> нет в списке, то с помощью кнопки <img src="StdPicture.CreateListItem"></img> можно создать нового <strong>Представителя</strong>, указав его реквизиты. </li>
|
||||
<li>В поле <strong>Полномочия</strong>, перейдя по гиперссылке с помощью выпадающего списка можно выбрать вид полномочий:<br><ul><li><strong>Полномочия в машиночитаемом виде</strong> - выбираются из классификатора ФНС;</li>
|
||||
<li><strong>Полномочия в текстовом виде</strong> - вводятся в произвольной форме;</li>
|
||||
<li><strong>Полномочия не ограничены</strong> - будут указаны полномочия в текстовом виде с заголовком <strong>Все полномочия</strong>; </li>
|
||||
<li>В поле <strong>Ограничения полномочий</strong> можно ввести ограничение, например, установить лимит по сумме. Ограничения подбираются из классификатора;</li>
|
||||
<li>С помощью кнопки <strong>Сохранить</strong> <img src="StdPicture.SaveReportSettings"></img> можно сохранить установленную настройку полномочий;</li>
|
||||
<li>С помощью кнопки <strong>Загрузить</strong> <img src="StdPicture.LoadReportSettings"></img> можно загрузить настройку полномочий из ранее сохраненных настроек.</li></ul></li></ul><h3><strong>Иные сведения</strong></h3>
|
||||
<ul><li>Нажмите на <strong>Иные сведения</strong> для того чтобы указать иные сведения по соглашению участников электронного взаимодействия и по требованиям федеральных органов исполнительной власти. </li>
|
||||
<li>Для того чтобы зарегистрировать МЧД в <strong>Распределенном реестре ФНС России</strong> нажмите на флажок. </li>
|
||||
<li>В поле <strong>Единый регистрационный номер доверенности</strong> автоматически сгенерируется номер после подписания доверенности. </li>
|
||||
<li>Поле <strong>Наименование</strong> заполняется автоматически. </li></ul><h3>Подписание доверенности</h3>
|
||||
<ul><li>
|
||||
<div>С помощью кнопки <strong>Подписать</strong> подпишите доверенность <a href="CommonForm.НастройкиЭлектроннойПодписиИШифрования/Help">сертификатом электронной подписи</a>, предварительно установленным на устройство. </div></li></ul><h3><strong>Регистрация в реестре</strong></h3>
|
||||
<ul><li>С помощью кнопки <strong>Зарегистрировать в реестре</strong> зарегистрируйте доверенность в распределенном реестре ФНС. Регистрация становится доступной, если предварительно установить флажок <strong>Зарегистрировать в распределенном реестре ФНС</strong>;</li>
|
||||
<li>После отправки на регистрацию статус доверенности примет значение <strong>Ожидает регистрации</strong>;</li>
|
||||
<li>После регистрации и проверки ФНС статус доверенности с <strong>Ожидает регистрации</strong> поменяется на <strong>В реестре</strong>;</li>
|
||||
<li>Если при регистрации были выявлены ошибки, например, при неверных данных <strong>Доверителя</strong> или <strong>Представителя</strong>, то статус доверенности примет значение <strong>Отменена</strong>.</li></ul><h3>См. также:</h3>
|
||||
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
|
||||
@@ -1120,14 +1120,10 @@
|
||||
Для Каждого Строка Из Объект.Доверители Цикл
|
||||
|
||||
РеквизитыОрганизации = ПолучитьИзВременногоХранилища(Строка.АдресРеквизитов);
|
||||
Если Не РеквизитыОрганизации.ЭтоФизическоеЛицо Тогда
|
||||
СтрокаОшибки = НСтр("ru = 'Организация %1 - %2'");
|
||||
Иначе
|
||||
СтрокаОшибки = НСтр("ru = 'Физическое лицо %1 - %2'");
|
||||
КонецЕсли;
|
||||
|
||||
ШаблонОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаОшибки,
|
||||
Строка.Доверитель, " %1: ");
|
||||
ПредставлениеДоверителя = ПредставлениеДоверителяПредставителяДляОшибки(Строка.Доверитель, РеквизитыОрганизации);
|
||||
|
||||
ШаблонОшибки = ПредставлениеДоверителя + " - %1:";
|
||||
|
||||
Если Не ЗначениеЗаполнено(Строка.ИдентификаторРодителя) Тогда
|
||||
Поле = "Доверитель";
|
||||
@@ -1147,14 +1143,9 @@
|
||||
Для Каждого Строка Из Объект.Представители Цикл
|
||||
|
||||
РеквизитыОрганизации = ПолучитьИзВременногоХранилища(Строка.АдресРеквизитов);
|
||||
Если Не РеквизитыОрганизации.ЭтоФизическоеЛицо Тогда
|
||||
СтрокаОшибки = НСтр("ru = 'Организация %1 - %2'");
|
||||
Иначе
|
||||
СтрокаОшибки = НСтр("ru = 'Физическое лицо %1 - %2'");
|
||||
КонецЕсли;
|
||||
ПредставлениеПредставителя = ПредставлениеДоверителяПредставителяДляОшибки(Строка.Представитель, РеквизитыОрганизации);
|
||||
|
||||
ШаблонОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаОшибки,
|
||||
Строка.Представитель, " %1: ");
|
||||
ШаблонОшибки = ПредставлениеПредставителя + " - %1:";
|
||||
|
||||
Если Не ЗначениеЗаполнено(Строка.ИдентификаторРодителя) Тогда
|
||||
Поле = "Представитель";
|
||||
@@ -1194,7 +1185,7 @@
|
||||
|
||||
Если ЗначениеЗаполнено(Объект.РодительскаяДоверенность) Тогда
|
||||
|
||||
РеквизитыРодительскойДоверенности = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.РодительскаяДоверенность, "Представители, ДатаОкончания");
|
||||
РеквизитыРодительскойДоверенности = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.РодительскаяДоверенность, "Представители, ДатаВыдачи, ДатаОкончания");
|
||||
ПредставителиРодительскойДоверенности = РеквизитыРодительскойДоверенности.Представители.Выгрузить();
|
||||
|
||||
Если Объект.ДатаОкончания > РеквизитыРодительскойДоверенности.ДатаОкончания Тогда
|
||||
@@ -1204,6 +1195,13 @@
|
||||
Формат(РеквизитыРодительскойДоверенности.ДатаОкончания, "ДЛФ=D")),, "ДатаОкончания",, Отказ);
|
||||
КонецЕсли;
|
||||
|
||||
Если Объект.ДатаВыдачи < РеквизитыРодительскойДоверенности.ДатаВыдачи Тогда
|
||||
ОбщегоНазначения.СообщитьПользователю(
|
||||
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Дата начала действия не должна быть меньше, чем у родительской доверенности (%1)'"),
|
||||
Формат(РеквизитыРодительскойДоверенности.ДатаВыдачи, "ДЛФ=D")),, "ДатаВыдачи",, Отказ);
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Строка Из ПредставителиРодительскойДоверенности Цикл
|
||||
|
||||
РеквизитыОрганизации = Строка.ПредставительРеквизиты.Получить();
|
||||
@@ -1212,17 +1210,12 @@
|
||||
КПП = "";
|
||||
|
||||
Если Не РеквизитыОрганизации.ЭтоФизическоеЛицо Тогда
|
||||
ШаблонОшибки = НСтр("ru = 'Организация %1 - %2'");
|
||||
|
||||
ИНН = РеквизитыОрганизации.ИНН;
|
||||
|
||||
Если Не РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
|
||||
КПП = РеквизитыОрганизации.КПП;
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
ШаблонОшибки = НСтр("ru = 'Физическое лицо %1 - %2'");
|
||||
|
||||
Если Не РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
|
||||
ИНН = РеквизитыОрганизации.ИННФЛ;
|
||||
КонецЕсли;
|
||||
@@ -1245,26 +1238,8 @@
|
||||
|
||||
РеквизитыОрганизации = ПолучитьИзВременногоХранилища(Строка.АдресРеквизитов);
|
||||
|
||||
ИНН = "";
|
||||
КПП = "";
|
||||
Если Не РеквизитыОрганизации.ЭтоФизическоеЛицо Тогда
|
||||
ШаблонОшибки = НСтр("ru = 'Организация %1 - %2'");
|
||||
|
||||
ИНН = РеквизитыОрганизации.ИНН;
|
||||
|
||||
Если Не РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
|
||||
КПП = РеквизитыОрганизации.КПП;
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
ШаблонОшибки = НСтр("ru = 'Физическое лицо %1 - %2'");
|
||||
|
||||
Если Не РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
|
||||
ИНН = РеквизитыОрганизации.ИННФЛ;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ПредставлениеДоверителя = ПредставлениеДоверителяПредставителяДляОшибки(Строка.Доверитель, ИНН, КПП);
|
||||
ИНН = "";КПП = "";
|
||||
ПредставлениеДоверителя = ПредставлениеДоверителяПредставителяДляОшибки(Строка.Доверитель, РеквизитыОрганизации, ИНН, КПП);
|
||||
|
||||
Если Не ЗначениеЗаполнено(Строка.ИдентификаторРодителя) Тогда
|
||||
Поле = "Доверитель";
|
||||
@@ -1274,7 +1249,7 @@
|
||||
Если ТаблицаДляПроверкиПервоначальнойДоверенности.НайтиСтроки(
|
||||
Новый Структура("ИНН, КПП", ИНН, КПП)).Количество() = 0 Тогда
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ПредставлениеДоверителя, НСтр(
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 - %2", ПредставлениеДоверителя, НСтр(
|
||||
"ru = 'отсутствует в представителях первоначальной доверенности.'"));
|
||||
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, Поле,, Отказ);
|
||||
|
||||
@@ -1293,7 +1268,7 @@
|
||||
СтруктураОтбора.Вставить("ТабличнаяЧасть", "Доверители");
|
||||
|
||||
Если ТаблицаДляПроверкиДублей.НайтиСтроки(СтруктураОтбора).Количество() > 0 Тогда
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ПредставлениеДоверителя, НСтр(
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 - %2", ПредставлениеДоверителя, НСтр(
|
||||
"ru = 'указано несколько доверителей с одним ИНН.'"));
|
||||
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, Поле,, Отказ);
|
||||
Иначе
|
||||
@@ -1309,25 +1284,8 @@
|
||||
Для Каждого Строка Из Объект.Представители Цикл
|
||||
|
||||
РеквизитыОрганизации = ПолучитьИзВременногоХранилища(Строка.АдресРеквизитов);
|
||||
|
||||
ИНН = "";
|
||||
КПП = "";
|
||||
Если Не РеквизитыОрганизации.ЭтоФизическоеЛицо Тогда
|
||||
ШаблонОшибки = НСтр("ru = 'Организация %1 - %2'");
|
||||
|
||||
ИНН = РеквизитыОрганизации.ИНН;
|
||||
|
||||
Если Не РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
|
||||
КПП = РеквизитыОрганизации.КПП;
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
ШаблонОшибки = НСтр("ru = 'Физическое лицо %1 - %2'");
|
||||
|
||||
Если Не РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
|
||||
ИНН = РеквизитыОрганизации.ИННФЛ;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
ИНН = "";КПП = "";
|
||||
ПредставлениеПредставителя = ПредставлениеДоверителяПредставителяДляОшибки(Строка.Представитель, РеквизитыОрганизации, ИНН, КПП);
|
||||
|
||||
Если Не ЗначениеЗаполнено(Строка.ИдентификаторРодителя) Тогда
|
||||
Поле = "Представитель";
|
||||
@@ -1335,8 +1293,6 @@
|
||||
Поле = "ЛицоПредставителя";
|
||||
КонецЕсли;
|
||||
|
||||
ПредставлениеПредставителя = ПредставлениеДоверителяПредставителяДляОшибки(Строка.Представитель, ИНН, КПП);
|
||||
|
||||
Если ЗначениеЗаполнено(ИНН) Тогда
|
||||
СтруктураОтбора = Новый Структура;
|
||||
СтруктураОтбора.Вставить("ИНН", ИНН);
|
||||
@@ -1345,7 +1301,7 @@
|
||||
|
||||
Если ТаблицаДляПроверкиДублей.НайтиСтроки(СтруктураОтбора).Количество() > 0 Тогда
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки,
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 - %2",
|
||||
ПредставлениеПредставителя, НСтр(
|
||||
"ru = 'указано несколько представителей с одним ИНН.'"));
|
||||
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, Поле,, Отказ);
|
||||
@@ -1359,7 +1315,7 @@
|
||||
СтруктураОтбора.Вставить("ТабличнаяЧасть", "Доверители");
|
||||
Если ТаблицаДляПроверкиДублей.НайтиСтроки(СтруктураОтбора).Количество() > 0 Тогда
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки,
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 - %2",
|
||||
ПредставлениеПредставителя, НСтр(
|
||||
"ru = 'указан представитель и доверитель с одним и тем же ИНН.'"));
|
||||
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, Поле,, Отказ);
|
||||
@@ -1373,26 +1329,37 @@
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ПредставлениеДоверителяПредставителяДляОшибки(Ссылка, ИНН, КПП)
|
||||
Если ЗначениеЗаполнено(Ссылка) Тогда
|
||||
Функция ПредставлениеДоверителяПредставителяДляОшибки(Ссылка, РеквизитыОрганизации, ИНН = Неопределено, КПП = Неопределено)
|
||||
|
||||
ИНН = "";
|
||||
КПП = "";
|
||||
Если Не РеквизитыОрганизации.ЭтоФизическоеЛицо Тогда
|
||||
ИНН = РеквизитыОрганизации.ИНН;
|
||||
Наименование = РеквизитыОрганизации.НаименованиеПолное;
|
||||
|
||||
Если Не РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
|
||||
КПП = РеквизитыОрганизации.КПП;
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
Наименование = СтрШаблон("%1 %2 %3",
|
||||
РеквизитыОрганизации.Фамилия, РеквизитыОрганизации.Имя, РеквизитыОрганизации.Отчество);
|
||||
|
||||
Если Не РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
|
||||
ИНН = РеквизитыОрганизации.ИННФЛ;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(КПП) Тогда
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = '%1 (ИНН: %2, КПП %3)'"), Ссылка, ИНН, КПП);
|
||||
Иначе
|
||||
НСтр("ru = '%1 (ИНН: %2, КПП %3)'"), ?(ЗначениеЗаполнено(Ссылка), Ссылка, Наименование), ИНН, КПП);
|
||||
ИначеЕсли ЗначениеЗаполнено(ИНН) Тогда
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = '%1 (ИНН: %2)'"), Ссылка, ИНН);
|
||||
КонецЕсли;
|
||||
НСтр("ru = '%1 (ИНН: %2)'"), ?(ЗначениеЗаполнено(Ссылка), Ссылка, Наименование), ИНН);
|
||||
Иначе
|
||||
Возврат ?(ЗначениеЗаполнено(Ссылка), Строка(Ссылка), Строка(Наименование));
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(КПП) Тогда
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'с ИНН: %1, КПП %2'"), ИНН, КПП);
|
||||
Иначе
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'с ИНН: %1'"), ИНН);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
@@ -1677,6 +1644,11 @@
|
||||
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция ВнешнийСтатус(Форма)
|
||||
|
||||
Если Форма.ТехническийСтатус = ПредопределенноеЗначение("Перечисление.ТехническиеСтатусыМЧД.Просрочена") Тогда
|
||||
Возврат Форма.Объект.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыМЧД.Черновик") Или Форма.ЗарегистрированаВДругомРеестре;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат МашиночитаемыеДоверенностиФНССлужебныйКлиентСервер.ВнешниеСтатусы()[Форма.ТехническийСтатус] = Истина
|
||||
Или Форма.ЗарегистрированаВДругомРеестре;
|
||||
КонецФункции
|
||||
@@ -1883,11 +1855,11 @@
|
||||
|
||||
Если Не Форма.Просрочена И (Форма.Подписана Или Форма.ТехническийСтатус = ПредопределенноеЗначение("Перечисление.ТехническиеСтатусыМЧД.Подписана")) Тогда
|
||||
Если Не Форма.Объект.РегистрироватьВРеестре Тогда
|
||||
Форма.Элементы.ФормаОтправить.Видимость = Форма.РегистрироватьВДругомРеестре И Не Форма.ЗарегистрированаВДругомРеестре;
|
||||
Форма.Элементы.ФормаОтправить.Видимость = Форма.РегистрироватьВДругомРеестре И Не Форма.ЗарегистрированаВДругомРеестре И Не Форма.ТолькоПросмотр;
|
||||
Форма.Элементы.ФормаОтправить.Заголовок = НСтр("ru='Зарегистрировать в реестре'");
|
||||
Иначе
|
||||
Форма.Элементы.ФормаОтправить.Видимость = Форма.ТехническийСтатус = ПредопределенноеЗначение("Перечисление.ТехническиеСтатусыМЧД.Подписана")
|
||||
Или Форма.РегистрироватьВДругомРеестре И Не Форма.ЗарегистрированаВДругомРеестре;
|
||||
Или Форма.РегистрироватьВДругомРеестре И Не Форма.ЗарегистрированаВДругомРеестре И Не Форма.ТолькоПросмотр;
|
||||
Форма.Элементы.ФормаОтправить.Заголовок = ?(Форма.Объект.РегистрироватьВРеестре И Форма.РегистрироватьВДругомРеестре И Не Форма.ЗарегистрированаВДругомРеестре,
|
||||
НСтр("ru='Зарегистрировать в реестрах'"), НСтр("ru='Зарегистрировать в реестре'"));
|
||||
КонецЕсли;
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
<!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>Открывается по соответствующей команде в разделе <strong>Справочники</strong>. Также можно перейти по гиперссылке в <a href="CommonForm.НастройкиЭлектроннойПодписиИШифрования/Help">настройках электронной подписи и шифрования</a>.</p>
|
||||
<p><strong>Машиночитаемая доверенность (МЧД)</strong> - это электронный документ XML, заполненный по утвержденному формату, содержащий сведения о доверителе, представителе и его полномочиях. </p>
|
||||
<li><strong>Доверитель</strong> - ответственное лицо, разрешающее выполнение операций другим организациям или физическим лицам по доверенности;
|
||||
</li>
|
||||
<li><strong>Представитель</strong> - организация или физическое лицо, принимающее на себя ответственность действовать от лица <strong>Доверителя</strong> в рамках вверяемых ему полномочий.
|
||||
<p></p>
|
||||
<p>Ведение списка МЧД может осуществлять как администратор, так и ответственный за список МЧД. Доверенность попадает в список разными способами:</p>
|
||||
<ul><li>
|
||||
<div><strong>Автоматически</strong> - путем загрузки из узла распределенного реестра ФНС;</div>
|
||||
</li>
|
||||
<li>
|
||||
<div><strong>Вручную</strong> - путем создания и подписания МЧД в приложении;</div>
|
||||
</li>
|
||||
<li>
|
||||
<div><strong>Вручную</strong> - путем загрузки МЧД контрагентов, полученных, например,по электронной почте.</div></li></ul><p>Список состоит из колонок: </p>
|
||||
<ul><li>
|
||||
<div><strong>Номер доверенности (в реестре)</strong> - единый регистрационный номер доверенности, генерируется автоматически при подписании или выгрузке в файл неподписанной доверенности.</div>
|
||||
</li>
|
||||
<li>
|
||||
<div><strong>Наименование</strong> - наименование машиночитаемой доверенности.</div>
|
||||
</li>
|
||||
<li>
|
||||
<div><strong>Дата выдачи</strong> - дата выдачи машиночитаемой доверенности.</div>
|
||||
</li>
|
||||
<li>
|
||||
<div><strong>Дата окончания</strong> - дата окончания действия машиночитаемой доверенности.</div>
|
||||
</li>
|
||||
<li>
|
||||
<div><strong>Код НО</strong> - код налогового органа, в отношении которого действует доверенность.</div>
|
||||
</li>
|
||||
<li>
|
||||
<div><strong>Номер (внутренний)</strong> - внутренний номер машиночитаемой доверенности, генерируется автоматически.</div></li></ul><h3>Создание доверенности</h3>
|
||||
<ul><li>
|
||||
<div>Создать машиночитаемую доверенность можно в списке МЧД по кнопке <strong>Создать</strong>. Откроется <a href="Catalog.МашиночитаемыеДоверенности.Form.ФормаЭлемента/Help">форма регистрации машиночитаемой доверенности</a>, в которой необходимо заполнить данные <strong>Доверителя</strong>, <strong>Представителя</strong>, <strong>Полномочий</strong>, а также <strong>Иных сведений</strong>. </div></li></ul><h3>Печать доверенности</h3>
|
||||
<div>
|
||||
<ul><li>Готовую доверенность можно напечатать из списка МЧД, а также в карточке МЧД с помощью кнопки <img src="StdPicture.Print"></img><strong>Доверенность</strong>.</li></ul></div>
|
||||
<h3>Отборы</h3>
|
||||
<p>Если машиночитаемых доверенностей в списке много, то для удобства поиска можно воспользоваться отборами:</p>
|
||||
<ul><li>
|
||||
<div>по полю <b>Сертификат</b> - выберите сертификат для отбора доверенностей, где владелец сертификата указан в качестве представителя.</div>
|
||||
</li>
|
||||
<li>
|
||||
<div>по полю <b>Доверитель</b> - выберите нужного доверителя, указав, например, наименование организации из списка для отбора. </div>
|
||||
</li>
|
||||
<li>
|
||||
<div>по полю <b>Представитель</b> - выберите нужного представителя, указав, например, ИНН контрагента. </div></li></ul><h3>Загрузка из файла</h3>
|
||||
<ul><li>С помощью кнопки <strong>Загрузить из файла</strong> можно загрузить МЧД из файла на устройстве. Укажите путь к файлу, нажмите <strong>Открыть</strong>.</li></ul><h3>Выгрузка в файл</h3>
|
||||
<ul><li>С помощью кнопки <strong>Выгрузить в файл</strong> можно выгрузить доверенность и ее подпись (если приложена) на выбор как для представителя в налоговые органы, так и для подписания документов. Укажите папку на устройстве, нажмите <strong>Сохранить</strong>.</li></ul></li>
|
||||
<p>С помощью команд меню <strong>Еще</strong> также можно использовать другие возможности работы со списком:</p>
|
||||
<ul><li><b>Загрузить из реестра ФНС</b> - загрузка машиночитаемых доверенностей организации и контрагентов из распределенного реестра ФНС.
|
||||
</li>
|
||||
<li><strong>Обновить статус из реестра ФНС</strong> - нажмите, для того чтобы обновить статус из реестра ФНС.</li>
|
||||
<li><strong>Отменить</strong> - если доверенность утратила свою актуальность ранее срока окончания доверенности, то ее можно отменить.</li></ul><p>Для того чтобы посмотреть, что означают значки состояния МЧД, нажмите раздел <strong>Легенда</strong> в нижней части списка.</p>
|
||||
<h3>См. также:</h3>
|
||||
<ul><li><a href="v8help://frame/form_common">Работа с формами</a></li></ul></body></html>
|
||||
@@ -1078,6 +1078,8 @@
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ТабличныйДокумент.ТолькоПросмотр = Истина;
|
||||
|
||||
Возврат ТабличныйДокумент;
|
||||
|
||||
КонецФункции
|
||||
@@ -1109,7 +1111,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция РеквизитыЮридическогоЛица(СведенияОЮридическомЛице)
|
||||
Функция РеквизитыЮридическогоЛица(СведенияОЮридическомЛице, ВычислятьЗначенияКонтактнойИнформацииПоПредставлениям = Ложь)
|
||||
|
||||
НаименованиеЮридическогоЛица = СведенияОЮридическомЛице.НаимОрг;
|
||||
ИНН = СведенияОЮридическомЛице.ИННЮЛ;
|
||||
@@ -1119,14 +1121,20 @@
|
||||
НаименованиеУчредительногоДокумента = СведенияОЮридическомЛице.НаимУчрДок;
|
||||
|
||||
КонтактныйТелефон = СведенияОЮридическомЛице.КонтактТлф;
|
||||
КонтактныйТелефонЗначение = КонтактнаяИнформацияПоПредставлению(КонтактныйТелефон, "Телефон");
|
||||
КонтактныйТелефонЗначение = "";
|
||||
|
||||
АдресЭлектроннойПочты = СведенияОЮридическомЛице.АдрЭлПочт;
|
||||
АдресЭлектроннойПочтыЗначение = КонтактнаяИнформацияПоПредставлению(АдресЭлектроннойПочты, "АдресЭлектроннойПочты");
|
||||
АдресЭлектроннойПочтыЗначение = "";
|
||||
|
||||
АдресЮридическогоЛица = СведенияОЮридическомЛице.АдрРег;
|
||||
ПредставлениеАдресаЮридическогоЛица = ПредставленияАдреса(АдресЮридическогоЛица);
|
||||
ЮридическийАдресЗначение = "";
|
||||
|
||||
Если ВычислятьЗначенияКонтактнойИнформацииПоПредставлениям Тогда
|
||||
КонтактныйТелефонЗначение = КонтактнаяИнформацияПоПредставлению(КонтактныйТелефон, "Телефон");
|
||||
АдресЭлектроннойПочтыЗначение = КонтактнаяИнформацияПоПредставлению(АдресЭлектроннойПочты, "АдресЭлектроннойПочты");
|
||||
ЮридическийАдресЗначение = КонтактнаяИнформацияПоПредставлению(ПредставлениеАдресаЮридическогоЛица, "Адрес");
|
||||
КонецЕсли;
|
||||
|
||||
Параметры = Новый Структура;
|
||||
Параметры.Вставить("НаименованиеЮридическогоЛица", НаименованиеЮридическогоЛица);
|
||||
@@ -1556,7 +1564,7 @@
|
||||
Если ЭтоПередоверие Тогда
|
||||
//@skip-check query-in-loop - штучные запросы в количестве загружаемых доверенностей
|
||||
ЗаполнитьПередовериеИзОбъектаXDTO(Объект, ОписаниеДоверенности);
|
||||
ПредыдущаяДоверенность = РеквизитыДоверенностиОснования(ОписаниеДоверенности);
|
||||
ПредыдущаяДоверенность = РеквизитыДоверенностиОснования(ОписаниеДоверенности, Истина);
|
||||
Иначе
|
||||
ЗаполнитьДоверенность(Объект, ОписаниеДоверенности);
|
||||
КонецЕсли;
|
||||
@@ -1970,7 +1978,7 @@
|
||||
|
||||
Функция ДобавитьОрганизациюДоверителя(Объект, СвязаннаяОрганизация, СведенияОЮридическомЛице)
|
||||
|
||||
Параметры = РеквизитыЮридическогоЛица(СведенияОЮридическомЛице);
|
||||
Параметры = РеквизитыЮридическогоЛица(СведенияОЮридическомЛице, Истина);
|
||||
|
||||
РеквизитыУчастника = МашиночитаемыеДоверенностиФНССлужебныйКлиентСервер.РеквизитыУчастника(
|
||||
ТипЭлементаОрганизация(), Неопределено, ВидУчастникаРоссийскаяОрганизация());
|
||||
@@ -1993,7 +2001,7 @@
|
||||
|
||||
Функция ДобавитьОрганизациюПредставителя(Объект, СвязаннаяОрганизация, СведенияОЮридическомЛице)
|
||||
|
||||
Параметры = РеквизитыЮридическогоЛица(СведенияОЮридическомЛице);
|
||||
Параметры = РеквизитыЮридическогоЛица(СведенияОЮридическомЛице, Истина);
|
||||
|
||||
РеквизитыУчастника = МашиночитаемыеДоверенностиФНССлужебныйКлиентСервер.РеквизитыУчастника(
|
||||
ТипЭлементаОрганизация(), Неопределено, ВидУчастникаРоссийскаяОрганизация());
|
||||
@@ -3372,7 +3380,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция РеквизитыДоверенностиОснования(ОписаниеДоверенности)
|
||||
Функция РеквизитыДоверенностиОснования(ОписаниеДоверенности, ВычислятьЗначенияКонтактнойИнформацииПоПредставлениям = Ложь)
|
||||
|
||||
Документ = ОписаниеДоверенности.Документ;
|
||||
Передоверие = Документ.Передов;
|
||||
@@ -3400,7 +3408,7 @@
|
||||
Если ТипДоверителя = "1" Тогда
|
||||
|
||||
СведенияОЮридическомЛице = Доверитель.РосОргДовер;
|
||||
Параметры = РеквизитыЮридическогоЛица(СведенияОЮридическомЛице);
|
||||
Параметры = РеквизитыЮридическогоЛица(СведенияОЮридическомЛице, ВычислятьЗначенияКонтактнойИнформацииПоПредставлениям);
|
||||
|
||||
ИначеЕсли ТипДоверителя = "2" Тогда
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
|
||||
РодительскаяДоверенность = ДанныеЗаполнения;
|
||||
РеквизитыРодительскойДоверенности = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(РодительскаяДоверенность,
|
||||
"Представители, Полномочия, Ограничения, НомерДоверенности, РегистрироватьВРеестре, ВозможностьПередоверия, ФайлДоверенности, ТекстПолномочий, ПолномочияВТекстовомВиде");
|
||||
"ДатаОкончания, Представители, Полномочия, Ограничения, НомерДоверенности, РегистрироватьВРеестре, ВозможностьПередоверия, ФайлДоверенности, ТекстПолномочий, ПолномочияВТекстовомВиде");
|
||||
|
||||
Если Не ЗначениеЗаполнено(РеквизитыРодительскойДоверенности.ВозможностьПередоверия)
|
||||
Или РеквизитыРодительскойДоверенности.ВозможностьПередоверия = Перечисления.ВозможностьПередоверияМЧД.БезПередоверия Тогда
|
||||
@@ -234,6 +234,7 @@
|
||||
НСтр("ru = 'Передоверие полномочий доверенности %1 от индивидуального предпринимателя может быть создано только нотариусом.'"), РодительскаяДоверенность);
|
||||
КонецЕсли;
|
||||
|
||||
ДатаОкончания = РеквизитыРодительскойДоверенности.ДатаОкончания;
|
||||
ПолномочияВТекстовомВиде = РеквизитыРодительскойДоверенности.ПолномочияВТекстовомВиде;
|
||||
ТекстПолномочий = РеквизитыРодительскойДоверенности.ТекстПолномочий;
|
||||
Полномочия.Загрузить(РеквизитыРодительскойДоверенности.Полномочия.Выгрузить());
|
||||
|
||||
@@ -97,6 +97,11 @@
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
</standardAttributes>
|
||||
<createOnInput>Use</createOnInput>
|
||||
<help>
|
||||
<pages>
|
||||
<lang>ru</lang>
|
||||
</pages>
|
||||
</help>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<objectPresentation>
|
||||
@@ -984,6 +989,11 @@
|
||||
<key>ru</key>
|
||||
<value>Форма элемента</value>
|
||||
</synonym>
|
||||
<help>
|
||||
<pages>
|
||||
<lang>ru</lang>
|
||||
</pages>
|
||||
</help>
|
||||
<usePurposes>PersonalComputer</usePurposes>
|
||||
<usePurposes>MobileDevice</usePurposes>
|
||||
</forms>
|
||||
|
||||
@@ -1124,6 +1124,8 @@
|
||||
&НаСервере
|
||||
Процедура ИзменитьПометкуУдаленияИВладельцаЗначений(ТекущееСвойство, ПометкаУдаленияСвойства)
|
||||
|
||||
// АПК:1328-выкл Блокировка устанавливается выше по стеку.
|
||||
// АПК:1327-выкл Блокировка устанавливается выше по стеку.
|
||||
СтарыйВладелецЗначений = ТекущееСвойство;
|
||||
|
||||
НоваяПометкаЗначений = Неопределено;
|
||||
@@ -1263,6 +1265,9 @@
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
// АПК:1327-вкл
|
||||
// АПК:1328-вкл
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@@ -290,7 +290,7 @@
|
||||
<name>ПрименяемыеПравилаКоманднаяПанель</name>
|
||||
<id>3</id>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ПрименяемыеПравилаПрименить</name>
|
||||
<name>Применить</name>
|
||||
<id>13</id>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
@@ -302,7 +302,7 @@
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ПрименяемыеПравилаПрименитьРасширеннаяПодсказка</name>
|
||||
<name>ПрименитьРасширеннаяПодсказка</name>
|
||||
<id>26</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
|
||||
@@ -1599,6 +1599,211 @@
|
||||
УправлениеДоступомСлужебный.ДобавитьСвойстваВерсии(Контекст, Структура, ИменаПолей);
|
||||
КонецПроцедуры
|
||||
|
||||
// Только для внутреннего использования.
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - СправочникОбъект.ПрофилиГруппДоступа
|
||||
// - СправочникОбъект.ИдентификаторыОбъектовМетаданных
|
||||
// - СправочникОбъект.ИдентификаторыОбъектовРасширений
|
||||
// СтарыеЗначения - Структура
|
||||
//
|
||||
Процедура ЗарегистрироватьИзменениеРолейПрофилей(Объект, СтарыеЗначения) Экспорт
|
||||
|
||||
Данные = Новый Структура;
|
||||
Данные.Вставить("ВерсияСтруктурыДанных", 1);
|
||||
Данные.Вставить("ИзменениеРолей", Новый Массив);
|
||||
Данные.Вставить("ПредставлениеРолей", Новый Массив);
|
||||
Данные.Вставить("ПредставлениеПрофилей", Новый Массив);
|
||||
|
||||
Если ТипЗнч(Объект) = Тип("СправочникОбъект.ПрофилиГруппДоступа") Тогда
|
||||
АктивностьПрофиляИзменена = Объект.ПометкаУдаления <> СтарыеЗначения.ПометкаУдаления;
|
||||
|
||||
ИзменениеРолей = Объект.Роли.Выгрузить();
|
||||
ИзменениеРолей.Свернуть("Роль");
|
||||
ИзменениеРолей.Колонки.Добавить("ВидИзменения", Новый ОписаниеТипов("Строка"));
|
||||
ИзменениеРолей.ЗаполнитьЗначения("Добавлено", "ВидИзменения");
|
||||
|
||||
Если ТипЗнч(СтарыеЗначения.Роли) = Тип("РезультатЗапроса")
|
||||
И Не СтарыеЗначения.Роли.Пустой() Тогда
|
||||
|
||||
СтарыеРоли = СтарыеЗначения.Роли.Выгрузить();
|
||||
СтарыеРоли.Индексы.Добавить("Роль");
|
||||
Индекс = ИзменениеРолей.Количество();
|
||||
Пока Индекс > 0 Цикл
|
||||
Индекс = Индекс - 1;
|
||||
НоваяРоль = ИзменениеРолей.Получить(Индекс);
|
||||
СтараяРоль = СтарыеРоли.Найти(НоваяРоль.Роль, "Роль");
|
||||
Если СтараяРоль = Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
Если АктивностьПрофиляИзменена Тогда
|
||||
НоваяРоль.ВидИзменения = "Изменено";
|
||||
Иначе
|
||||
ИзменениеРолей.Удалить(НоваяРоль);
|
||||
КонецЕсли;
|
||||
СтарыеРоли.Удалить(СтараяРоль);
|
||||
КонецЦикла;
|
||||
Для Каждого СтараяРоль Из СтарыеРоли Цикл
|
||||
НоваяСтрока = ИзменениеРолей.Добавить();
|
||||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтараяРоль);
|
||||
НоваяСтрока.ВидИзменения = "Удалено";
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не АктивностьПрофиляИзменена
|
||||
И Не ЗначениеЗаполнено(ИзменениеРолей) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
СериализованнаяСсылкаПрофиля = СериализованнаяСсылка(Объект.Ссылка);
|
||||
ИдентификаторыРолей = ИзменениеРолей.ВыгрузитьКолонку("Роль");
|
||||
СвойстваРолей = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(ИдентификаторыРолей,
|
||||
"ПометкаУдаления, Имя, Синоним");
|
||||
|
||||
МетаданныеРолей = ОбщегоНазначения.ОбъектыМетаданныхПоИдентификаторам(ИдентификаторыРолей, Ложь);
|
||||
|
||||
Для Каждого Строка Из ИзменениеРолей Цикл
|
||||
Если Не ЗначениеЗаполнено(Строка.Роль) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
СериализованнаяСсылкаРоли = СериализованнаяСсылка(Строка.Роль);
|
||||
|
||||
Свойства = Новый Структура;
|
||||
Свойства.Вставить("Профиль", СериализованнаяСсылкаПрофиля);
|
||||
Свойства.Вставить("Роль", СериализованнаяСсылкаРоли);
|
||||
Свойства.Вставить("ВидИзменения", Строка.ВидИзменения);
|
||||
Данные.ИзменениеРолей.Добавить(Свойства);
|
||||
|
||||
МетаданныеРоли = МетаданныеРолей.Получить(Строка.Роль);
|
||||
СвойстваРоли = СвойстваРолей.Получить(Строка.Роль);
|
||||
ИмяРоли = Неопределено;
|
||||
СинонимРоли = Неопределено;
|
||||
|
||||
Если ТипЗнч(МетаданныеРоли) = Тип("ОбъектМетаданных") Тогда
|
||||
ИмяРоли = МетаданныеРоли.Имя;
|
||||
СинонимРоли = МетаданныеРоли.Синоним;
|
||||
ИначеЕсли СвойстваРоли <> Неопределено Тогда
|
||||
ИмяРоли = СвойстваРоли.Имя;
|
||||
СинонимРоли = СвойстваРоли.Синоним;
|
||||
КонецЕсли;
|
||||
ПометкаУдаленияРоли = ?(СвойстваРоли = Неопределено,
|
||||
Неопределено, СвойстваРоли.ПометкаУдаления);
|
||||
|
||||
Свойства = Новый Структура;
|
||||
Свойства.Вставить("Роль", СериализованнаяСсылкаРоли);
|
||||
Свойства.Вставить("ПометкаУдаления", ПометкаУдаленияРоли);
|
||||
Свойства.Вставить("ЕстьВМетаданных", ТипЗнч(МетаданныеРоли) = Тип("ОбъектМетаданных"));
|
||||
Свойства.Вставить("Имя", ИмяРоли);
|
||||
Свойства.Вставить("Синоним", СинонимРоли);
|
||||
Свойства.Вставить("СтарыеЗначенияСвойств", Новый Структура);
|
||||
Данные.ПредставлениеРолей.Добавить(Свойства);
|
||||
КонецЦикла;
|
||||
|
||||
Свойства = Новый Структура;
|
||||
Свойства.Вставить("Профиль", СериализованнаяСсылка(Объект.Ссылка));
|
||||
Свойства.Вставить("Представление", ПредставлениеСсылки(Объект.Ссылка));
|
||||
Свойства.Вставить("ПометкаУдаления", Объект.ПометкаУдаления);
|
||||
Свойства.Вставить("СтарыеЗначенияСвойств", Новый Структура);
|
||||
|
||||
Если Объект.ПометкаУдаления <> СтарыеЗначения.ПометкаУдаления Тогда
|
||||
Свойства.СтарыеЗначенияСвойств.Вставить("ПометкаУдаления", СтарыеЗначения.ПометкаУдаления);
|
||||
КонецЕсли;
|
||||
Данные.ПредставлениеПрофилей.Добавить(Свойства);
|
||||
Иначе
|
||||
Если Объект.ПометкаУдаления = СтарыеЗначения.ПометкаУдаления Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.УстановитьПараметр("Роль", Объект.Ссылка);
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ
|
||||
| ПрофилиГруппДоступа.Ссылка КАК Ссылка,
|
||||
| ПрофилиГруппДоступа.ПометкаУдаления КАК ПометкаУдаления,
|
||||
| ПрофилиГруппДоступа.Представление КАК Представление
|
||||
|ИЗ
|
||||
| Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа
|
||||
|ГДЕ
|
||||
| ПрофилиГруппДоступа.Ссылка В
|
||||
| (ВЫБРАТЬ
|
||||
| РолиПрофилей.Ссылка
|
||||
| ИЗ
|
||||
| Справочник.ПрофилиГруппДоступа.Роли КАК РолиПрофилей
|
||||
| ГДЕ
|
||||
| РолиПрофилей.Роль = &Роль)";
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
|
||||
Если РезультатЗапроса.Пустой() Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
СериализованнаяСсылкаРоли = СериализованнаяСсылка(Объект.Ссылка);
|
||||
МетаданныеРоли = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Объект.Ссылка, Ложь);
|
||||
ИмяРоли = ?(ТипЗнч(МетаданныеРоли) = Тип("ОбъектМетаданных"), МетаданныеРоли.Имя, Объект.Имя);
|
||||
СинонимРоли = ?(ТипЗнч(МетаданныеРоли) = Тип("ОбъектМетаданных"), МетаданныеРоли.Синоним, Объект.Синоним);
|
||||
|
||||
Свойства = Новый Структура;
|
||||
Свойства.Вставить("Роль", СериализованнаяСсылкаРоли);
|
||||
Свойства.Вставить("ПометкаУдаления", Объект.ПометкаУдаления);
|
||||
Свойства.Вставить("ЕстьВМетаданных", ТипЗнч(МетаданныеРоли) = Тип("ОбъектМетаданных"));
|
||||
Свойства.Вставить("Имя", ИмяРоли);
|
||||
Свойства.Вставить("Синоним", СинонимРоли);
|
||||
Свойства.Вставить("СтарыеЗначенияСвойств", Новый Структура);
|
||||
|
||||
Если Объект.ПометкаУдаления <> СтарыеЗначения.ПометкаУдаления Тогда
|
||||
Свойства.СтарыеЗначенияСвойств.Вставить("ПометкаУдаления", СтарыеЗначения.ПометкаУдаления);
|
||||
КонецЕсли;
|
||||
Если Объект.Имя <> СтарыеЗначения.Имя Тогда
|
||||
Свойства.СтарыеЗначенияСвойств.Вставить("Имя",
|
||||
?(ТипЗнч(СтарыеЗначения.Имя) = Тип("Строка"), СтарыеЗначения.Имя, ""));
|
||||
КонецЕсли;
|
||||
Если Объект.Синоним <> СтарыеЗначения.Синоним Тогда
|
||||
Свойства.СтарыеЗначенияСвойств.Вставить("Синоним",
|
||||
?(ТипЗнч(СтарыеЗначения.Синоним) = Тип("Строка"), СтарыеЗначения.Синоним, ""));
|
||||
КонецЕсли;
|
||||
|
||||
Данные.ПредставлениеРолей.Добавить(Свойства);
|
||||
Выборка = РезультатЗапроса.Выбрать();
|
||||
|
||||
Пока Выборка.Следующий() Цикл
|
||||
СериализованнаяСсылкаПрофиля = СериализованнаяСсылка(Выборка.Ссылка);
|
||||
|
||||
Свойства = Новый Структура;
|
||||
Свойства.Вставить("Профиль", СериализованнаяСсылкаПрофиля);
|
||||
Свойства.Вставить("Роль", СериализованнаяСсылкаРоли);
|
||||
Свойства.Вставить("ВидИзменения", "Изменено");
|
||||
Данные.ИзменениеРолей.Добавить(Свойства);
|
||||
|
||||
Свойства = Новый Структура;
|
||||
Свойства.Вставить("Профиль", СериализованнаяСсылкаПрофиля);
|
||||
Свойства.Вставить("Представление", Выборка.Представление);
|
||||
Свойства.Вставить("ПометкаУдаления", Выборка.ПометкаУдаления);
|
||||
Свойства.Вставить("СтарыеЗначенияСвойств", Новый Структура);
|
||||
Данные.ПредставлениеПрофилей.Добавить(Свойства);
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяСобытия = УправлениеДоступомСлужебный.ИмяСобытияИзменениеРолейПрофилейДляЖурналаРегистрации();
|
||||
|
||||
ЗаписьЖурналаРегистрации(ИмяСобытия,
|
||||
УровеньЖурналаРегистрации.Информация,
|
||||
Объект.Метаданные(),
|
||||
ОбщегоНазначения.ЗначениеВСтрокуXML(Данные),
|
||||
,
|
||||
РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// См. ПользователиСлужебный.СериализованнаяСсылка
|
||||
Функция СериализованнаяСсылка(Ссылка)
|
||||
Возврат ПользователиСлужебный.СериализованнаяСсылка(Ссылка);
|
||||
КонецФункции
|
||||
|
||||
// См. ПользователиСлужебный.ПредставлениеСсылки
|
||||
Функция ПредставлениеСсылки(Ссылка)
|
||||
Возврат ПользователиСлужебный.ПредставлениеСсылки(Ссылка);
|
||||
КонецФункции
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Процедуры и функции для поддержки обмена данными в РИБ.
|
||||
|
||||
|
||||
@@ -18,17 +18,23 @@
|
||||
|
||||
Процедура ПередЗаписью(Отказ)
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после записи изменений в журнал.
|
||||
Если ЭтоГруппа Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
РегистрыСведений.ПраваРолей.ПроверитьДанныеРегистра();
|
||||
Если ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа()
|
||||
Или Не ОбменДанными.Загрузка Тогда
|
||||
|
||||
СтарыеЗначения = СтарыеЗначения();
|
||||
КонецЕсли;
|
||||
// АПК:75-вкл
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
РегистрыСведений.ПраваРолей.ПроверитьДанныеРегистра();
|
||||
|
||||
Если Не Справочники.ВерсииРасширений.ВсеРасширенияПодключены() Тогда
|
||||
Справочники.ПрофилиГруппДоступа.ВосстановитьНесуществующиеВидыИЗначенияДоступа(СтарыеЗначения, ЭтотОбъект);
|
||||
@@ -123,18 +129,32 @@
|
||||
|
||||
Процедура ПриЗаписи(Отказ)
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после записи изменений в журнал.
|
||||
Если ЭтоГруппа Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоГруппа Тогда
|
||||
Если ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа() Тогда
|
||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
Справочники.ПрофилиГруппДоступа.ЗарегистрироватьИзменениеРолейПрофилей(ЭтотОбъект, СтарыеЗначения);
|
||||
Справочники.ГруппыДоступа.ЗарегистрироватьИзменениеУчастниковГруппДоступа(ЭтотОбъект, СтарыеЗначения);
|
||||
Справочники.ГруппыДоступа.ЗарегистрироватьИзменениеРазрешенныхЗначений(ЭтотОбъект, СтарыеЗначения);
|
||||
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||
КонецЕсли;
|
||||
// АПК:75-вкл
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПроверитьОднозначностьПоставляемыхДанных();
|
||||
|
||||
// При установке пометки удаления нужно установить пометку удаления у групп доступа профиля.
|
||||
Если ПометкаУдаления И СтарыеЗначения.ПометкаУдаления = Ложь Тогда
|
||||
Если Справочники.ГруппыДоступа.УстановленаПометкаУдаленияПрофиля(ЭтотОбъект, СтарыеЗначения) Тогда
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.УстановитьПараметр("Профиль", Ссылка);
|
||||
Запрос.Текст =
|
||||
@@ -158,11 +178,14 @@
|
||||
КонецЦикла;
|
||||
Блокировка.Заблокировать();
|
||||
|
||||
Для каждого ГруппаДоступаСсылка Из ИзмененныеГруппыДоступа Цикл
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
Для Каждого ГруппаДоступаСсылка Из ИзмененныеГруппыДоступа Цикл
|
||||
ГруппаДоступаОбъект = ГруппаДоступаСсылка.ПолучитьОбъект();
|
||||
ГруппаДоступаОбъект.ДополнительныеСвойства.Вставить("УстановкаПометкиУдаленияГруппыДоступаПриУстановкеПометкиУдаленияПрофиля");
|
||||
ГруппаДоступаОбъект.ПометкаУдаления = Истина;
|
||||
ГруппаДоступаОбъект.Записать();
|
||||
КонецЦикла;
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
КонецЕсли;
|
||||
ЗафиксироватьТранзакцию();
|
||||
Исключение
|
||||
|
||||
@@ -629,8 +629,10 @@
|
||||
КонецЕсли;
|
||||
ТекущийОбъект.ДополнительныеСвойства.Вставить("Расписание", Расписание);
|
||||
|
||||
Если Не Отказ Тогда
|
||||
ПреобразоватьПараметрыТекста(ТекущийОбъект, "ПредставлениеВПараметры");
|
||||
ПреобразоватьПараметрыНастроекОтчетов(ТекущийОбъект, "ПредставлениеВПараметры");
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -3719,7 +3721,7 @@
|
||||
&НаКлиенте
|
||||
Процедура ОбновитьЗначениеПараметраПолучателяПерсонализированнойРассылки()
|
||||
|
||||
Если НЕ Объект.Персонализирована Тогда
|
||||
Если НЕ Объект.Персонализирована Или Элементы.Отчеты.ТекущиеДанные = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
+233
-1
@@ -790,6 +790,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -855,6 +856,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -936,6 +938,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -1001,6 +1004,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -1272,6 +1276,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -1337,6 +1342,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -1418,6 +1424,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -1483,6 +1490,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -1749,6 +1757,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -1814,6 +1823,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -1895,6 +1905,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -1960,6 +1971,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -2177,7 +2189,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<maxWidth>70</maxWidth>
|
||||
<height>1</height>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
@@ -2257,6 +2269,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -2322,6 +2335,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -2403,6 +2417,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -2468,6 +2483,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -2735,6 +2751,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -2800,6 +2817,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -2881,6 +2899,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -2946,6 +2965,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -2958,6 +2978,43 @@
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Decoration">
|
||||
<name>ДекорацияСертификатМеткиВремени</name>
|
||||
<id>442</id>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Декорация сертификат метки времени</value>
|
||||
</title>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ДекорацияСертификатМеткиВремениРасширеннаяПодсказка</name>
|
||||
<id>444</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>ДекорацияСертификатМеткиВремениКонтекстноеМеню</name>
|
||||
<id>443</id>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<handlers>
|
||||
<event>URLProcessing</event>
|
||||
<name>ДекорацияСертификатМеткиВремениОбработкаНавигационнойСсылки</name>
|
||||
</handlers>
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</items>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
@@ -3213,6 +3270,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -3278,6 +3336,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -3359,6 +3418,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -3424,6 +3484,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -3690,6 +3751,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -3755,6 +3817,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -3836,6 +3899,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -3901,6 +3965,7 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<maxWidth>70</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
@@ -5168,6 +5233,167 @@
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>ТипПодписи</name>
|
||||
<id>34</id>
|
||||
<valueType>
|
||||
<types>EnumRef.ТипыПодписиКриптографии</types>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>СертификатыДляПроверкиПодписи</name>
|
||||
<id>36</id>
|
||||
<valueType>
|
||||
<types>ValueTable</types>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
<columns>
|
||||
<name>Отпечаток</name>
|
||||
<id>37</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>Сервер</name>
|
||||
<id>38</id>
|
||||
<valueType>
|
||||
<types>Boolean</types>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>Клиент</name>
|
||||
<id>39</id>
|
||||
<valueType>
|
||||
<types>Boolean</types>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>АдресСертификата</name>
|
||||
<id>40</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>СертификатыМетокВремени</name>
|
||||
<id>42</id>
|
||||
<valueType>
|
||||
<types>ValueTable</types>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
<columns>
|
||||
<name>Отпечаток</name>
|
||||
<id>43</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>ПолученНаСервере</name>
|
||||
<id>44</id>
|
||||
<valueType>
|
||||
<types>Boolean</types>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>АдресСертификата</name>
|
||||
<id>45</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>ПолученНаКлиенте</name>
|
||||
<id>46</id>
|
||||
<valueType>
|
||||
<types>Boolean</types>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>Представление</name>
|
||||
<id>47</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
</attributes>
|
||||
<formCommands>
|
||||
<name>Проверить</name>
|
||||
<title>
|
||||
@@ -5221,6 +5447,12 @@
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
</parameters>
|
||||
<parameters>
|
||||
<name>ТипПодписи</name>
|
||||
<valueType>
|
||||
<types>EnumRef.ТипыПодписиКриптографии</types>
|
||||
</valueType>
|
||||
</parameters>
|
||||
<commandInterface>
|
||||
<navigationPanel/>
|
||||
<commandBar/>
|
||||
|
||||
+214
-20
@@ -68,6 +68,10 @@
|
||||
КатегорияОшибки.ОшибкаКонфигурации);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Параметры.ТипПодписи) Тогда
|
||||
ТипПодписи = Параметры.ТипПодписи;
|
||||
КонецЕсли;
|
||||
|
||||
Для каждого Проверка Из Проверки Цикл
|
||||
|
||||
Группа = ГруппаФормыБезОтображения("Группа" + Проверка.Имя, Элементы.ГруппаДополнительныеПроверки);
|
||||
@@ -111,7 +115,7 @@
|
||||
Элементы[Проверка + "РешениеКлиентНадпись"].Видимость = Ложь;
|
||||
Элементы[Проверка + "ОшибкаСервер"].Видимость = Ложь;
|
||||
Элементы[Проверка + "РешениеСерверНадпись"].Видимость = Ложь;
|
||||
Элементы[Проверка + "Надпись"].Заголовок = СтандартныйЗаголовокЭлемента(Проверка + "Надпись");
|
||||
Элементы[Проверка + "Надпись"].Заголовок = СтандартныйЗаголовокЭлемента(Проверка + "Надпись", ТипПодписи);
|
||||
|
||||
Если ПроверкиНаКлиенте <> Неопределено Тогда
|
||||
ВывестиРезультатПроверки(Проверка);
|
||||
@@ -234,7 +238,7 @@
|
||||
ИмяОшибки = ИмяЭлемента + "Ошибка";
|
||||
|
||||
ПараметрыПредупреждения = Новый Структура;
|
||||
ПараметрыПредупреждения.Вставить("ЗаголовокПредупреждения", СтандартныйЗаголовокЭлемента(Элемент.Имя));
|
||||
ПараметрыПредупреждения.Вставить("ЗаголовокПредупреждения", СтандартныйЗаголовокЭлемента(Элемент.Имя, ТипПодписи));
|
||||
ПараметрыПредупреждения.Вставить("ТекстОшибкиКлиент", ПроверкиНаКлиенте[ИмяОшибки]);
|
||||
ПараметрыПредупреждения.Вставить("ТекстОшибкиСервер",
|
||||
?(ОперацииНаСервере Или ЕстьВстроенныйКриптопровайдер Или ЕстьУчетнаяЗаписьСервиса,
|
||||
@@ -323,6 +327,14 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ДекорацияСертификатМеткиВремениОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
|
||||
|
||||
СтандартнаяОбработка = Ложь;
|
||||
ЭлектроннаяПодписьСлужебныйКлиент.ОткрытьСертификат(НавигационнаяСсылкаФорматированнойСтроки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбработчикиКомандФормы
|
||||
@@ -348,6 +360,29 @@
|
||||
Элементы.ФормаПроверить.Доступность = Истина;
|
||||
Элементы.ФормаПроверить.Отображение = ОтображениеКнопки.Текст;
|
||||
|
||||
Если СертификатыМетокВремени.Количество() = 0 Тогда
|
||||
Элементы.ДекорацияСертификатМеткиВремени.Видимость = Ложь;
|
||||
Иначе
|
||||
Массив = Новый Массив;
|
||||
Для Каждого СертификатМеткиВремени Из СертификатыМетокВремени Цикл
|
||||
Если Не СертификатМеткиВремени.ПолученНаКлиенте Тогда
|
||||
Массив.Добавить(СтроковыеФункцииКлиент.ФорматированнаяСтрока(
|
||||
НСтр("ru = 'Сертификат метки времени, полученной на сервере: <a href = %1>%2</a>.'"),
|
||||
СертификатМеткиВремени.АдресСертификата, СертификатМеткиВремени.Представление));
|
||||
ИначеЕсли Не СертификатМеткиВремени.ПолученНаСервере Тогда
|
||||
Массив.Добавить(СтроковыеФункцииКлиент.ФорматированнаяСтрока(
|
||||
НСтр("ru = 'Сертификат метки времени, полученной на компьютере: <a href = %1>%2</a>.'"),
|
||||
СертификатМеткиВремени.АдресСертификата, СертификатМеткиВремени.Представление));
|
||||
Иначе
|
||||
Массив.Добавить(СтроковыеФункцииКлиент.ФорматированнаяСтрока(
|
||||
НСтр("ru = 'Сертификат полученной метки времени: <a href = %1>%2</a>.'"),
|
||||
СертификатМеткиВремени.АдресСертификата, СертификатМеткиВремени.Представление));
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Элементы.ДекорацияСертификатМеткиВремени.Заголовок = Новый ФорматированнаяСтрока(Массив);
|
||||
Элементы.ДекорацияСертификатМеткиВремени.Видимость = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ПроверкаПриВыборе Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
@@ -466,6 +501,8 @@
|
||||
ПроверкиНаСервере = Новый Структура;
|
||||
ДополнительныеДанныеПроверокНаКлиенте = Новый Структура;
|
||||
ДополнительныеДанныеПроверокНаСервере = Новый Структура;
|
||||
СертификатыМетокВремени.Очистить();
|
||||
Элементы.ДекорацияСертификатМеткиВремени.Видимость = Ложь;
|
||||
|
||||
// Очистка предыдущих результатов проверки.
|
||||
Если СтандартныеПроверки Тогда
|
||||
@@ -979,10 +1016,57 @@
|
||||
|
||||
// Подписание.
|
||||
Если ПроверкиНаКлиенте.НаличиеСертификата = Истина И Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда
|
||||
Контекст.МенеджерКриптографии.НачатьПодписывание(Новый ОписаниеОповещения(
|
||||
"ПроверитьНаСторонеКлиентаПослеПодписания", ЭтотОбъект, Контекст,
|
||||
"ПроверитьНаСторонеКлиентаПослеОшибкиПодписания", ЭтотОбъект),
|
||||
Контекст.ДанныеСертификата, Контекст.СертификатКриптографии);
|
||||
|
||||
Попытка
|
||||
ДанныеПодписи = Ждать Контекст.МенеджерКриптографии.ПодписатьАсинх(Контекст.ДанныеСертификата, Контекст.СертификатКриптографии);
|
||||
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеДанныеПодписи(ДанныеПодписи, ОписаниеОшибки);
|
||||
Исключение
|
||||
ОписаниеОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда
|
||||
УстановитьЭлемент(ЭтотОбъект, "Подписание", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты);
|
||||
ПроверитьНаСторонеКлиентаПослеПодписания(Null, Контекст);
|
||||
Возврат;
|
||||
Иначе
|
||||
ПарольПринят = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ТипПодписи) И ТипПодписи <> ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.БазоваяCAdESBES")
|
||||
И ТипПодписи <> ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.ОбычнаяCMS") Тогда
|
||||
|
||||
Попытка
|
||||
НастройкиПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.НастройкиСозданияПодписи(ТипПодписи,
|
||||
ЭлектроннаяПодписьКлиент.ОбщиеНастройки().АдресаСерверовМетокВремени);
|
||||
Контекст.МенеджерКриптографии.АдресаСерверовМетокВремени = НастройкиПодписи.АдресаСерверовМетокВремени;
|
||||
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеДанныеПодписи(ДанныеПодписи, ОписаниеОшибки);
|
||||
Исключение
|
||||
ОписаниеОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда
|
||||
УстановитьЭлемент(ЭтотОбъект, "Подписание", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты);
|
||||
ПроверитьНаСторонеКлиентаПослеПодписания(Null, Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
ДанныеПодписи = Ждать Контекст.МенеджерКриптографии.ПодписатьАсинх(Контекст.ДанныеСертификата, Контекст.СертификатКриптографии,
|
||||
НастройкиПодписи.ТипПодписи);
|
||||
Исключение
|
||||
ОписаниеОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда
|
||||
УстановитьЭлемент(ЭтотОбъект, "Подписание", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты);
|
||||
ПроверитьНаСторонеКлиентаПослеПодписания(Null, Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПроверитьНаСторонеКлиентаПослеПодписания(ДанныеПодписи, Контекст);
|
||||
|
||||
Иначе
|
||||
ПроверитьНаСторонеКлиентаПослеПодписания(Null, Контекст);
|
||||
КонецЕсли;
|
||||
@@ -1053,6 +1137,7 @@
|
||||
|
||||
// Проверка подписи.
|
||||
Если ДанныеПодписи <> Null И ПроверкиНаКлиенте.НаличиеСертификата = Истина И Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда
|
||||
Контекст.Вставить("ДанныеПодписи", ДанныеПодписи);
|
||||
Контекст.МенеджерКриптографии.НачатьПроверкуПодписи(Новый ОписаниеОповещения(
|
||||
"ПроверитьНаСторонеКлиентаПослеПроверкиПодписи", ЭтотОбъект, Контекст,
|
||||
"ПроверитьНаСторонеКлиентаПослеОшибкиПроверкиПодписи", ЭтотОбъект),
|
||||
@@ -1112,7 +1197,7 @@
|
||||
|
||||
// Продолжение процедуры ПроверитьНаСторонеКлиента.
|
||||
&НаКлиенте
|
||||
Процедура ПроверитьНаСторонеКлиентаПослеПроверкиПодписи(Сертификат, Контекст) Экспорт
|
||||
Асинх Процедура ПроверитьНаСторонеКлиентаПослеПроверкиПодписи(Сертификат, Контекст) Экспорт
|
||||
|
||||
Если Сертификат <> Null Тогда
|
||||
Если ТипЗнч(Сертификат) = Тип("Строка") Тогда
|
||||
@@ -1120,7 +1205,47 @@
|
||||
Иначе
|
||||
ОписаниеОшибки = "";
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(ОписаниеОшибки) И ЗначениеЗаполнено(ТипПодписи) И ТипПодписи
|
||||
<> ПредопределенноеЗначение(
|
||||
"Перечисление.ТипыПодписиКриптографии.БазоваяCAdESBES") И ТипПодписи <> ПредопределенноеЗначение(
|
||||
"Перечисление.ТипыПодписиКриптографии.ОбычнаяCMS") Тогда
|
||||
|
||||
Попытка
|
||||
СвойстваПодписи = Ждать ЭлектроннаяПодписьСлужебныйКлиент.СвойстваПодписиЧтениеМенеджеромКриптографии(
|
||||
Контекст.ДанныеПодписи, Контекст.МенеджерКриптографии, Истина);
|
||||
Исключение
|
||||
ОписаниеОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
Если Не ЗначениеЗаполнено(ОписаниеОшибки) И ЗначениеЗаполнено(СвойстваПодписи.ТекстОшибки) Тогда
|
||||
ОписаниеОшибки = СвойстваПодписи.ТекстОшибки;
|
||||
ИначеЕсли Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда
|
||||
ДанныеСертификатаМеткиВремени = СвойстваПодписи.Сертификаты[СвойстваПодписи.Сертификаты.ВГраница()];
|
||||
СертификатМеткиВремени = Новый СертификатКриптографии();
|
||||
Ждать СертификатМеткиВремени.ИнициализироватьАсинх(ДанныеСертификатаМеткиВремени);
|
||||
СвойстваСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(
|
||||
СертификатМеткиВремени, ЭлектроннаяПодписьСлужебныйКлиент.РазницаСУниверсальнымВременем());
|
||||
|
||||
Найдено = СертификатыМетокВремени.НайтиСтроки(Новый Структура("Отпечаток",
|
||||
СвойстваСертификата.Отпечаток));
|
||||
|
||||
Если Найдено.Количество() = 0 Тогда
|
||||
НоваяСтрока = СертификатыМетокВремени.Добавить();
|
||||
НоваяСтрока.АдресСертификата = ПоместитьВоВременноеХранилище(ДанныеСертификатаМеткиВремени,
|
||||
УникальныйИдентификатор);
|
||||
НоваяСтрока.Отпечаток = СвойстваСертификата.Отпечаток;
|
||||
НоваяСтрока.ПолученНаКлиенте = Истина;
|
||||
НоваяСтрока.Представление = СвойстваСертификата.Представление;
|
||||
|
||||
Иначе
|
||||
Найдено[0].ПолученНаКлиенте = Истина;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
УстановитьЭлемент(ЭтотОбъект, "ПроверкаПодписи", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Контекст.МенеджерКриптографии.НачатьШифрование(Новый ОписаниеОповещения(
|
||||
@@ -1795,6 +1920,29 @@
|
||||
КонецПопытки;
|
||||
|
||||
ПарольПринят = Не ЗначениеЗаполнено(ОписаниеОшибки);
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда
|
||||
УстановитьЭлемент(ЭтотОбъект, "Подписание", Истина, ОписаниеОшибки, Истина, ОбъединятьРезультаты);
|
||||
Возврат ДанныеПодписи;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ТипПодписи) И ТипПодписи <> ПредопределенноеЗначение(
|
||||
"Перечисление.ТипыПодписиКриптографии.БазоваяCAdESBES") И ТипПодписи <> ПредопределенноеЗначение(
|
||||
"Перечисление.ТипыПодписиКриптографии.ОбычнаяCMS") Тогда
|
||||
|
||||
Попытка
|
||||
НастройкиПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.НастройкиСозданияПодписи(ТипПодписи,
|
||||
ЭлектроннаяПодпись.ОбщиеНастройки().АдресаСерверовМетокВремени);
|
||||
МенеджерКриптографии.АдресаСерверовМетокВремени = НастройкиПодписи.АдресаСерверовМетокВремени;
|
||||
ДанныеПодписи = МенеджерКриптографии.Подписать(ДанныеСертификата, СертификатКриптографии,
|
||||
НастройкиПодписи.ТипПодписи);
|
||||
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеДанныеПодписи(ДанныеПодписи, ОписаниеОшибки);
|
||||
Исключение
|
||||
ОписаниеОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
УстановитьЭлемент(ЭтотОбъект, "Подписание", Истина, ОписаниеОшибки, Истина, ОбъединятьРезультаты);
|
||||
Возврат ДанныеПодписи;
|
||||
|
||||
@@ -1809,6 +1957,42 @@
|
||||
Исключение
|
||||
ОписаниеОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
Если Не ЗначениеЗаполнено(ОписаниеОшибки) И ЗначениеЗаполнено(ТипПодписи) И ТипПодписи <> ПредопределенноеЗначение(
|
||||
"Перечисление.ТипыПодписиКриптографии.БазоваяCAdESBES") И ТипПодписи <> ПредопределенноеЗначение(
|
||||
"Перечисление.ТипыПодписиКриптографии.ОбычнаяCMS") Тогда
|
||||
|
||||
Попытка
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебный.СвойстваПодписиЧтениеМенеджеромКриптографии(
|
||||
ДанныеПодписи, МенеджерКриптографии, Истина);
|
||||
Исключение
|
||||
ОписаниеОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
Если Не ЗначениеЗаполнено(ОписаниеОшибки) И ЗначениеЗаполнено(СвойстваПодписи.ТекстОшибки) Тогда
|
||||
ОписаниеОшибки = СвойстваПодписи.ТекстОшибки;
|
||||
ИначеЕсли Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда
|
||||
ДанныеСертификатаМеткиВремени = СвойстваПодписи.Сертификаты[СвойстваПодписи.Сертификаты.ВГраница()];
|
||||
СертификатМеткиВремени = Новый СертификатКриптографии(ДанныеСертификатаМеткиВремени);
|
||||
СвойстваСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(
|
||||
СертификатМеткиВремени, ЭлектроннаяПодписьСлужебный.РазницаСУниверсальнымВременем());
|
||||
|
||||
Найдено = СертификатыМетокВремени.НайтиСтроки(Новый Структура("Отпечаток", СвойстваСертификата.Отпечаток));
|
||||
|
||||
Если Найдено.Количество() = 0 Тогда
|
||||
НоваяСтрока = СертификатыМетокВремени.Добавить();
|
||||
НоваяСтрока.АдресСертификата = ПоместитьВоВременноеХранилище(ДанныеСертификатаМеткиВремени,
|
||||
УникальныйИдентификатор);
|
||||
НоваяСтрока.Отпечаток = СвойстваСертификата.Отпечаток;
|
||||
НоваяСтрока.ПолученНаСервере = Истина;
|
||||
|
||||
Иначе
|
||||
Найдено[0].ПолученНаСервере = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
УстановитьЭлемент(ЭтотОбъект, "ПроверкаПодписи", Истина, ОписаниеОшибки, Истина, ОбъединятьРезультаты);
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -2085,7 +2269,7 @@
|
||||
ЭлементФормыНадписьРешение.Заголовок = НСтр("ru = 'См. пункт Подписание данных.'");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
ОписаниеИзвестнойОшибки = ОшибкаПоКлассификатору(ОписаниеОшибки, НаСервере);
|
||||
ОписаниеИзвестнойОшибки = ОшибкаПоКлассификатору(ОписаниеОшибки, НаСервере, Действие = "ПроверкаПодписи");
|
||||
ЭтоИзвестнаяОшибка = ОписаниеИзвестнойОшибки <> Неопределено;
|
||||
|
||||
Форма.Элементы[ИмяНадписиРешение].Видимость = ЭтоИзвестнаяОшибка;
|
||||
@@ -2093,10 +2277,10 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеИзвестнойОшибки.ДействияДляУстранения) Тогда
|
||||
ДанныеДляДополнения = ЭлектроннаяПодписьСлужебныйКлиентСервер.ДанныеДляДополненияОшибкиИзКлассификатора(Неопределено);
|
||||
ДанныеДляДополнения.ДанныеСертификата = ПолучитьИзВременногоХранилища(Форма.АдресСертификата);
|
||||
Если ЗначениеЗаполнено(Форма.Сертификат) И ЗначениеЗаполнено(ОписаниеИзвестнойОшибки.ДействияДляУстранения) Тогда
|
||||
|
||||
ДанныеДляДополнения = ЭлектроннаяПодписьСлужебныйКлиентСервер.ДанныеДляДополненияОшибкиИзКлассификатора(
|
||||
Новый Структура("Сертификат, ДанныеСертификата", Форма.Сертификат, Форма.АдресСертификата));
|
||||
ПараметрыДополненияТекстаРешенияОшибкиКлассификатора = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыДополненияТекстаРешенияОшибкиКлассификатора();
|
||||
|
||||
Дополнение = ЭлектроннаяПодписьСлужебныйВызовСервера.ДополнитьРешениеКлассификатораОшибокПодробностями(
|
||||
@@ -2124,21 +2308,21 @@
|
||||
ЭлементКартинка.Картинка = БиблиотекаКартинок.ПроверкаСертификатаНеВыполнялась;
|
||||
ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка не выполнялась.'");
|
||||
ЭлементНадпись.Гиперссылка = Ложь;
|
||||
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(Форма.ДополнительныеПроверки, ЭлементНадпись.Имя);
|
||||
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(Форма.ДополнительныеПроверки, ЭлементНадпись.Имя, Форма.ТипПодписи);
|
||||
ИначеЕсли ЗначениеПроверки <> Неопределено И ЗначениеПроверкиВторогоКонтекста = Неопределено Тогда
|
||||
ГруппаОшибка.Видимость = Ложь;
|
||||
ЭлементРешение.Видимость = Ложь;
|
||||
ЭлементКартинка.Картинка = БиблиотекаКартинок.ПроверкаСертификатаУспех;
|
||||
ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка выполнена успешно.'");
|
||||
ЭлементНадпись.Гиперссылка = Ложь;
|
||||
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(Форма.ДополнительныеПроверки, ЭлементНадпись.Имя);
|
||||
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(Форма.ДополнительныеПроверки, ЭлементНадпись.Имя, Форма.ТипПодписи);
|
||||
ИначеЕсли ЗначениеПроверки <> Неопределено И РезультатПроверки Тогда
|
||||
ГруппаОшибка.Видимость = Ложь;
|
||||
ЭлементРешение.Видимость = Ложь;
|
||||
ЭлементКартинка.Картинка = БиблиотекаКартинок.ПроверкаСертификатаУспех;
|
||||
ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка выполнена успешно.'");
|
||||
ЭлементНадпись.Гиперссылка = Ложь;
|
||||
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(Форма.ДополнительныеПроверки, ЭлементНадпись.Имя);
|
||||
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(Форма.ДополнительныеПроверки, ЭлементНадпись.Имя, Форма.ТипПодписи);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат;
|
||||
@@ -2158,15 +2342,15 @@
|
||||
ГруппаОшибка.Видимость = Ложь;
|
||||
ЭлементРешение.Видимость = Ложь;
|
||||
ЭлементНадпись.Гиперссылка = Ложь;
|
||||
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(Форма.ДополнительныеПроверки, ЭлементНадпись.Имя);
|
||||
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(Форма.ДополнительныеПроверки, ЭлементНадпись.Имя, Форма.ТипПодписи);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция ЗаголовокЭлемента(ДополнительныеПроверки, ИмяЭлемента)
|
||||
Функция ЗаголовокЭлемента(ДополнительныеПроверки, ИмяЭлемента, ТипПодписи)
|
||||
|
||||
ЗаголовокЭлемента = СтандартныйЗаголовокЭлемента(ИмяЭлемента);
|
||||
ЗаголовокЭлемента = СтандартныйЗаголовокЭлемента(ИмяЭлемента, ТипПодписи);
|
||||
Если Не ПустаяСтрока(ЗаголовокЭлемента) Тогда
|
||||
Возврат ЗаголовокЭлемента;
|
||||
КонецЕсли;
|
||||
@@ -2181,7 +2365,7 @@
|
||||
КонецФункции
|
||||
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция СтандартныйЗаголовокЭлемента(ИмяЭлемента)
|
||||
Функция СтандартныйЗаголовокЭлемента(ИмяЭлемента, ТипПодписи)
|
||||
|
||||
Если ИмяЭлемента = "ЗаконныйСертификатНадпись" Тогда
|
||||
Возврат НСтр("ru = 'Соответствие законодательству Российской Федерации'");
|
||||
@@ -2196,7 +2380,17 @@
|
||||
Возврат НСтр("ru = 'Наличие приложения для подписания и расшифровки'");
|
||||
|
||||
ИначеЕсли ИмяЭлемента = "ПодписаниеНадпись" Тогда
|
||||
|
||||
Если ЗначениеЗаполнено(ТипПодписи) Тогда
|
||||
|
||||
ТипПодписиСтрока = Строка(ТипПодписи);
|
||||
ТипПодписиСтрока = НРег(Лев(ТипПодписиСтрока, 1)) + Сред(ТипПодписиСтрока, 2);
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Подписание данных типом подписи - %1'"), ТипПодписиСтрока);
|
||||
|
||||
Иначе
|
||||
Возврат НСтр("ru = 'Подписание данных'");
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли ИмяЭлемента = "ПроверкаПодписиНадпись" Тогда
|
||||
Возврат НСтр("ru = 'Проверка созданной подписи'");
|
||||
@@ -2243,9 +2437,9 @@
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
Функция ОшибкаПоКлассификатору(ОписаниеОшибки, ОшибкаНаСервере)
|
||||
Функция ОшибкаПоКлассификатору(ОписаниеОшибки, ОшибкаНаСервере, ОшибкаПроверкиПодписи)
|
||||
|
||||
Возврат ЭлектроннаяПодписьСлужебный.ОшибкаПоКлассификатору(ОписаниеОшибки, ОшибкаНаСервере);
|
||||
Возврат ЭлектроннаяПодписьСлужебный.ОшибкаПоКлассификатору(ОписаниеОшибки, ОшибкаНаСервере, ОшибкаПроверкиПодписи);
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
+14
@@ -1214,6 +1214,20 @@
|
||||
</edit>
|
||||
</columns>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>АдресСертификата</name>
|
||||
<id>1</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</attributes>
|
||||
<formCommands>
|
||||
<name>Обновить</name>
|
||||
<title>
|
||||
|
||||
+6
-1
@@ -31,11 +31,15 @@
|
||||
|
||||
ВариантУстановки = СписокВыбора[0].Значение;
|
||||
|
||||
Элементы.ВариантУстановки.ТолькоПросмотр = СписокВыбора.Количество() = 1;
|
||||
|
||||
СертификатДвоичныеДанные = Неопределено;
|
||||
Если ЭтоАдресВременногоХранилища(Параметры.Сертификат) Тогда
|
||||
СертификатДвоичныеДанные = ПолучитьИзВременногоХранилища(Параметры.Сертификат);
|
||||
АдресСертификата = Параметры.Сертификат;
|
||||
ИначеЕсли ЗначениеЗаполнено(Параметры.Сертификат) Тогда
|
||||
СертификатДвоичныеДанные = Base64Значение(Параметры.Сертификат);
|
||||
АдресСертификата = ПоместитьВоВременноеХранилище(СертификатДвоичныеДанные, УникальныйИдентификатор);
|
||||
КонецЕсли;
|
||||
|
||||
Если СертификатДвоичныеДанные <> Неопределено Тогда
|
||||
@@ -45,6 +49,7 @@
|
||||
СертификатОписаниеДанных, СвойстваСертификата);
|
||||
КонецЕсли;
|
||||
|
||||
Элементы.ПоказатьДанныеСертификата.Видимость = ЗначениеЗаполнено(АдресСертификата);
|
||||
Элементы.ДекорацияТекущийКонтейнер.Видимость = Ложь;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -127,7 +132,7 @@
|
||||
&НаКлиенте
|
||||
Процедура ПоказатьДанныеСертификата(Команда)
|
||||
|
||||
ЭлектроннаяПодписьКлиент.ОткрытьСертификат(Параметры.Сертификат, Истина);
|
||||
ЭлектроннаяПодписьКлиент.ОткрытьСертификат(АдресСертификата, Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
+9
-1
@@ -332,7 +332,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
ЭлектроннаяПодписьКлиент.ПроверитьСертификатСправочника(Объект.Ссылка,
|
||||
Новый Структура("БезПодтверждения", Истина));
|
||||
Новый Структура("БезПодтверждения, ТипПодписи", Истина, ТипПодписиПоУмолчанию()));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -873,6 +873,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Новый СписокЗначений;
|
||||
Результат.Добавить(Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПустаяСсылка(), НСтр("ru = 'По умолчанию'"));
|
||||
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
@@ -962,4 +963,11 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
Функция ТипПодписиПоУмолчанию()
|
||||
|
||||
Возврат Константы.ТипПодписиКриптографииПоУмолчанию.Получить();
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -238,14 +238,44 @@
|
||||
|
||||
Если Сертификат <> Неопределено Тогда
|
||||
СвойстваСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(
|
||||
Сертификат, ЭлектроннаяПодписьСлужебный.РазницаСУниверсальнымВременем(), ДвоичныеДанныеСертификата);
|
||||
Сертификат, ЭлектроннаяПодписьСлужебный.РазницаСУниверсальнымВременем(),
|
||||
ДвоичныеДанныеСертификата);
|
||||
Если СертификатОбъект.ДействителенДо <> СвойстваСертификата.ДействителенДо Тогда
|
||||
СтрокаПоиска = Формат(СертификатОбъект.ДействителенДо, "ДФ=MM.yyyy");
|
||||
СтрокаЗамены = Формат(СвойстваСертификата.ДействителенДо, "ДФ=MM.yyyy");
|
||||
СертификатОбъект.Наименование = СтрЗаменить(СертификатОбъект.Наименование, СтрокаПоиска, СтрокаЗамены);
|
||||
СертификатОбъект.Наименование = СтрЗаменить(СертификатОбъект.Наименование, СтрокаПоиска,
|
||||
СтрокаЗамены);
|
||||
СертификатОбъект.ДействителенДо = СвойстваСертификата.ДействителенДо;
|
||||
ЗаписатьОбъект = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(СертификатОбъект.Программа) И ТипЗнч(СертификатОбъект.Программа) = Тип(
|
||||
"СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования") Тогда
|
||||
|
||||
АлгоритмСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(
|
||||
ДвоичныеДанныеСертификата, Ложь, Истина);
|
||||
Если ЭлектроннаяПодписьСлужебныйКлиентСервер.ЭтоСертификатГОСТ(АлгоритмСертификата) Тогда
|
||||
|
||||
ОписаниеПрограммы = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
|
||||
СертификатОбъект.Программа,
|
||||
"ЭтоВстроенныйКриптопровайдер, АлгоритмПодписи, АлгоритмХеширования");
|
||||
|
||||
Если Не ОписаниеПрограммы.ЭтоВстроенныйКриптопровайдер Тогда
|
||||
|
||||
Результат = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСоответствуетСертификату(
|
||||
"", АлгоритмСертификата, ОписаниеПрограммы.АлгоритмПодписи, ОписаниеПрограммы.АлгоритмХеширования);
|
||||
|
||||
Если Результат <> Истина Тогда
|
||||
|
||||
СертификатОбъект.Программа = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПустаяСсылка();
|
||||
ЗаписатьОбъект = Истина;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -34,6 +34,32 @@
|
||||
Программа = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПустаяСсылка();
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Программа) И ТипЗнч(Программа) = Тип(
|
||||
"СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования") И ЗначениеЗаполнено(Отпечаток) Тогда
|
||||
|
||||
ОписаниеПрограммы = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Программа,
|
||||
"ЭтоВстроенныйКриптопровайдер, АлгоритмПодписи, АлгоритмХеширования");
|
||||
|
||||
Если Не ОписаниеПрограммы.ЭтоВстроенныйКриптопровайдер Тогда
|
||||
ДвоичныеДанные = ДанныеСертификата.Получить();
|
||||
Если ТипЗнч(ДвоичныеДанные) = Тип("ДвоичныеДанные") Тогда
|
||||
|
||||
АлгоритмСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(
|
||||
ДвоичныеДанные, Ложь, Истина);
|
||||
|
||||
Результат = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСоответствуетСертификату(
|
||||
Наименование, АлгоритмСертификата, ОписаниеПрограммы.АлгоритмПодписи,
|
||||
ОписаниеПрограммы.АлгоритмХеширования);
|
||||
|
||||
Если Результат <> Истина Тогда
|
||||
|
||||
ВызватьИсключение Результат;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -72,9 +72,8 @@
|
||||
<li><strong>Дата подписи</strong> - дата подписания файла;
|
||||
</li>
|
||||
<li><b>Тип подписи</b> - существует несколько типов подписей в зависимости от срока действия;</li>
|
||||
<li><strong>Комментарий</strong> - напишите дополнительные сведения о подписи;
|
||||
</li>
|
||||
<li><strong>Статус, Дата проверки</strong> - истинность подписи и дата ее проверки.</li></ul><p>С помощью кнопок панели навигации можно:</p>
|
||||
<li><strong>Статус, Дата проверки</strong> - истинность подписи и дата ее проверки;</li>
|
||||
<li><strong>Комментарий</strong> - напишите дополнительные сведения о подписи.</li></ul><p>С помощью кнопок панели навигации можно:</p>
|
||||
<ul><li><strong>Подписать</strong> файл;
|
||||
</li>
|
||||
<li><strong>Открыть </strong>- открыть окно с основными свойствами сертификата электронной подписи выделенного файла: кому и кем выдан, назначение и срок действия сертификата, на основе которого создана подпись;
|
||||
@@ -83,10 +82,11 @@
|
||||
</li>
|
||||
<li><strong>Проверить все</strong> - проверить все подписи;
|
||||
</li>
|
||||
<li><strong>Удалить</strong> у файла электронную подпись.</li>
|
||||
<li><strong>Сохранить</strong> электронную подпись <strong>в файл </strong>на устройство;
|
||||
</li>
|
||||
<li><strong>Удалить</strong> у файла электронную подпись.</li>
|
||||
<li><b>Продлить действие</b> - Если в приложении применяются подписи с доверенной меткой времени, то можно усовершенствовать выбранную подпись - добавить доверенную метку времени. Приложение предлагает <a href="CommonForm.ПродлениеСрокаДействияЭлектронныхПодписей/Help">способы усовершенствования</a> подписи. Для этого выберите нужный тип подписи из списка.</li></ul><h3>Разрешено расшифровывать</h3>
|
||||
<li><b>Проверена вручную </b>- ввести обоснование достоверности подписи, если подпись не проходит автоматическую проверку. Например, когда недоступен список отзыва, но известно, что сертификат не отозван;</li>
|
||||
<li><b>Продлить действие</b> - если в приложении применяются подписи с доверенной меткой времени, то можно усовершенствовать выбранную подпись - добавить доверенную метку времени. Приложение предлагает <a href="CommonForm.ПродлениеСрокаДействияЭлектронныхПодписей/Help">способы усовершенствования</a> подписи. Для этого выберите нужный тип подписи из списка.</li></ul><h3>Разрешено расшифровывать</h3>
|
||||
<ul><li>
|
||||
<div>На вкладке размещаются сведения о шифровании файла:</div>
|
||||
</li>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
Процедура ПриЗакрытии(ЗавершениеРаботы)
|
||||
|
||||
Если Не ВыполняетсяЗакрытие И ЭтоНоваяСтрока Тогда
|
||||
Оповестить("ОтменаВводаНовойСтрокиШаблонаАнкеты");
|
||||
Оповестить("ОтменаВводаНовойСтрокиШаблонаАнкеты", , ВладелецФормы);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -65,7 +65,8 @@
|
||||
Процедура КнопкаОК(Команда)
|
||||
|
||||
ВыполняетсяЗакрытие = Истина;
|
||||
Оповестить("ОкончаниеРедактированияПараметровКомплексногоВопроса",СформироватьСтруктуруПараметровДляПередачиВладельцу());
|
||||
Оповестить("ОкончаниеРедактированияПараметровКомплексногоВопроса",
|
||||
СформироватьСтруктуруПараметровДляПередачиВладельцу(), ВладелецФормы);
|
||||
Закрыть();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
Процедура ПриЗакрытии(ЗавершениеРаботы)
|
||||
|
||||
Если Не ВыполняетсяЗакрытие И ЭтоНоваяСтрока Тогда
|
||||
Оповестить("ОтменаВводаНовойСтрокиШаблонаАнкеты");
|
||||
Оповестить("ОтменаВводаНовойСтрокиШаблонаАнкеты", , ВладелецФормы);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -727,7 +727,8 @@
|
||||
КонецЕсли;
|
||||
|
||||
ВыполняетсяЗакрытие = Истина;
|
||||
Оповестить("ОкончаниеРедактированияПараметровТабличногоВопроса",СформироватьСтруктуруПараметровДляПередачиВладельцу());
|
||||
Оповестить("ОкончаниеРедактированияПараметровТабличногоВопроса",
|
||||
СформироватьСтруктуруПараметровДляПередачиВладельцу(), ВладелецФормы);
|
||||
Закрыть();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
Процедура ПриЗакрытии(ЗавершениеРаботы)
|
||||
|
||||
Если Не ВыполняетсяЗакрытие И ЭтоНоваяСтрока Тогда
|
||||
Оповестить("ОтменаВводаНовойСтрокиШаблонаАнкеты");
|
||||
Оповестить("ОтменаВводаНовойСтрокиШаблонаАнкеты", , ВладелецФормы);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -131,7 +131,8 @@
|
||||
КонецЕсли;
|
||||
|
||||
ВыполняетсяЗакрытие = Истина;
|
||||
Оповестить("ОкончаниеРедактированияПараметровСтрокиШаблонаАнкеты",СформироватьСтруктуруПараметровДляПередачиВладельцу());
|
||||
Оповестить("ОкончаниеРедактированияПараметровСтрокиШаблонаАнкеты",
|
||||
СформироватьСтруктуруПараметровДляПередачиВладельцу(), ВладелецФормы);
|
||||
Закрыть();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -47,6 +47,10 @@
|
||||
&НаКлиенте
|
||||
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
|
||||
|
||||
Если Источник <> ЭтотОбъект Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ТекущиеДанные = Элементы.ФормаДереваАнкеты.ТекущиеДанные;
|
||||
Если ТекущиеДанные = Неопределено Тогда
|
||||
Возврат;
|
||||
|
||||
@@ -246,14 +246,16 @@
|
||||
&НаКлиенте
|
||||
Процедура СформироватьСообщениеДляОтправки(ПараметрыОтправки)
|
||||
|
||||
Если Не ЗначениеЗаполнено(ПараметрыОтправки.Шаблон) И ПечатныеФормы.Количество() > 0 Тогда
|
||||
СформироватьБезШаблон = Не ЗначениеЗаполнено(ПараметрыОтправки.Шаблон);
|
||||
Если СформироватьБезШаблон И ПечатныеФормы.Количество() > 0 Тогда
|
||||
СохранитьВыборПечатныхФорм();
|
||||
КонецЕсли;
|
||||
|
||||
АдресВременногоХранилища = Неопределено;
|
||||
АдресВременногоХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
|
||||
|
||||
Если Подписать Тогда
|
||||
СформироватьБезШаблонаИПодписать = СформироватьБезШаблон И Подписать;
|
||||
Если СформироватьБезШаблонаИПодписать Тогда
|
||||
ПараметрыОтправки.ДополнительныеПараметры.НастройкиСохранения.УпаковатьВАрхив = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -268,7 +270,9 @@
|
||||
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Результат, ПараметрыСообщения, Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
Если Подписать Тогда
|
||||
Если СформироватьБезШаблонаИПодписать
|
||||
И ТипЗнч(Результат.Вложения) = Тип("Массив")
|
||||
И Результат.Вложения.Количество() > 0 Тогда
|
||||
ПараметрыОтправки.ДополнительныеПараметры.НастройкиСохранения.УпаковатьВАрхив = УпаковатьВАрхив;
|
||||
ПодписатьФайлы(Результат, ПараметрыОтправки);
|
||||
Иначе
|
||||
|
||||
@@ -15,26 +15,20 @@
|
||||
|
||||
ИнициализироватьОтборы();
|
||||
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда
|
||||
ВключенаОтправкаSMS = Истина;
|
||||
ВключенаРаботаСПочтовымиСообщениями = Истина;
|
||||
Иначе
|
||||
ВключенаРаботаСПочтовымиСообщениями = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями");
|
||||
ВключенаОтправкаSMS = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОтправкаSMS");
|
||||
КонецЕсли;
|
||||
ДоступныеВарианты = ШаблоныСообщенийСлужебный.ДоступныеВариантыОтправкиШаблоновСообщений();
|
||||
|
||||
// кнопки в группе, если одна кнопка, то группа не нужна
|
||||
Элементы.ФормаСоздатьШаблонСообщенияSMS.Видимость = ВключенаОтправкаSMS;
|
||||
Элементы.ФормаСоздатьШаблонЭлектронногоПисьма.Видимость = ВключенаРаботаСПочтовымиСообщениями;
|
||||
Элементы.ФормаСоздатьШаблонСообщенияSMS.Видимость = ДоступныеВарианты.SMS;
|
||||
Элементы.ФормаСоздатьШаблонЭлектронногоПисьма.Видимость = ДоступныеВарианты.Почта;
|
||||
Элементы.ФормаПоказыватьКонтекстныеШаблоны.Видимость = Пользователи.ЭтоПолноправныйПользователь();
|
||||
|
||||
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОтправкаSMS") Тогда
|
||||
Если Не ДоступныеВарианты.SMS Тогда
|
||||
Элементы.ФормаГруппаСоздать.Вид = ВидГруппыФормы.ГруппаКнопок;
|
||||
Элементы.ФормаСоздатьШаблонСообщенияSMS.Видимость = Ложь;
|
||||
Элементы.ФормаСоздатьШаблонЭлектронногоПисьма.Заголовок = НСтр("ru='Создать'");
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда
|
||||
Если Не ДоступныеВарианты.Почта Тогда
|
||||
Элементы.ФормаГруппаСоздать.Вид = ВидГруппыФормы.ГруппаКнопок;
|
||||
Элементы.ФормаСоздатьШаблонЭлектронногоПисьма.Видимость = Ложь;
|
||||
Элементы.ФормаСоздатьШаблонСообщенияSMS.Заголовок = НСтр("ru='Создать'");
|
||||
@@ -192,8 +186,13 @@
|
||||
НСтр("ru = 'Всех сообщений'"),
|
||||
НСтр("ru = 'Всех сообщений'"));
|
||||
|
||||
ДоступныеВарианты = ШаблоныСообщенийСлужебный.ДоступныеВариантыОтправкиШаблоновСообщений();
|
||||
Если ДоступныеВарианты.SMS Тогда
|
||||
Список.Параметры.УстановитьЗначениеПараметра("СообщениеSMS", ВидыШаблонов.НайтиПоЗначению("SMS").Представление);
|
||||
КонецЕсли;
|
||||
Если ДоступныеВарианты.Почта Тогда
|
||||
Список.Параметры.УстановитьЗначениеПараметра("ЭлектроннаяПочта", ВидыШаблонов.НайтиПоЗначению("Email").Представление);
|
||||
КонецЕсли;
|
||||
Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьКонтекстныеШаблоны", ПоказыватьКонтекстныеШаблоны);
|
||||
Список.Параметры.УстановитьЗначениеПараметра("Произвольный", НСтр("ru = 'Произвольного сообщения'"));
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<ul><li>Для удобства поиска шаблонов в списке предусмотрены отборы.
|
||||
</li>
|
||||
<li>Можно отобрать с помощью поля <strong>Шаблон для</strong>:
|
||||
<ul><li><strong>Электронных писем и SMS</strong>;
|
||||
<ul><li><strong>Всех сообщений</strong>;
|
||||
</li>
|
||||
<li><strong>Электронного письма</strong>;
|
||||
</li>
|
||||
|
||||
+1
-1
@@ -285,7 +285,7 @@
|
||||
СвойстваОбъекта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДополнительныйРеквизит.Свойство, "Заголовок, ТипЗначения", , ТекущийЯзык().КодЯзыка);
|
||||
СтрокаРеквизит = РеквизитыОбъекта.Добавить();
|
||||
СтрокаРеквизит.Реквизит = ДополнительныйРеквизит.Свойство;
|
||||
СтрокаРеквизит.Представление = СвойстваОбъекта.Заголовок;
|
||||
СтрокаРеквизит.Представление = Строка(ДополнительныйРеквизит.Свойство);
|
||||
СтрокаРеквизит.НомерКартинки = 2;
|
||||
СтрокаРеквизит.ТипЗначения = СвойстваОбъекта.ТипЗначения;
|
||||
КонецЦикла;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!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>Открывается по команде <strong>Настройки электронной подписи и шифрования</strong> раздела <strong>Администрирование - Общие настройки</strong>.</p>
|
||||
<p>Настройка параметров для использования средств электронной подписи и шифрования (криптографии). </p>
|
||||
<p>Открывается по команде <strong>Настройки электронной подписи и шифрования</strong> раздела <strong>Администрирование - Общие настройки</strong>.</p>
|
||||
<p>Для электронной подписи и шифрования требуется установить специальное стороннее приложение (криптопровайдер).</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>Для автоматического определения приложения для работы с сертификатом может понадобиться установка компоненты <b>ExtraCryptoAPI</b>. Установить компоненту можно<b> </b>через меню <b>Еще - Установить компоненту</b> <b>ExtraCryptoAPI.</b></p>
|
||||
<h3>Сертификаты</h3>
|
||||
@@ -14,32 +14,29 @@
|
||||
<li>Предусмотрен отбор по полю <strong>Состояние заявления</strong> ("Любое", "Не подготовлено", "Подготовлено", "Отправлено", "Отклонено", "Исполнено, сертификат не установлен", "Исполнено").
|
||||
</li>
|
||||
<li><a href="Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования.Form.ФормаЭлемента/Help">Сертификат</a> можно <strong>Добавить</strong> из числа <strong>установленных на компьютере</strong>. Также это можно сделать в процессе подписания или шифрования данных. Выберите нужное действие с помощью переключателя, нажмите <b>Добавить</b>.</li>
|
||||
<ul><li>Сертификат <b>только для шифрования</b> можно <b>Добавить из файла</b>. Выберите нужное действие и перейдите по ссылке, укажите путь к файлу на компьютере.</li></ul><li>Также с помощью кнопки <strong>Добавить</strong> можно подготовить <a href="DataProcessor.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Form.Форма/Help">Заявление на выпуск нового сертификата</a>.
|
||||
<ul><li>Сертификат <b>только для шифрования</b> можно <b>Добавить из файла</b>. Выберите нужное действие и перейдите по ссылке, укажите путь к файлу или каталогу на компьютере.</li></ul><li>Также с помощью кнопки <b>Оформить заявление</b> можно подготовить <a href="DataProcessor.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Form.Форма/Help">Заявление на выпуск нового сертификата</a>.
|
||||
</li>
|
||||
<li>Просмотреть сертификат или заявление на выпуск нового сертификата можно, дважды щелкнув по нему мышью. Также можно это сделать с помощью команды <strong>Изменить</strong> контекстного меню по правой кнопке мыши или меню <strong>Еще</strong>.</li></ul><h3>Приложения</h3>
|
||||
<ul><li>Содержит список настроенных приложений, которые будут использованы в информационной базе (в том числе во всех узлах распределенной ИБ). </li>
|
||||
<li>Данные приложения не обязательно должны быть установлены на всех компьютерах. Более того, установка более одного приложения на одном компьютере может вызвать конфликты между ними.
|
||||
<li>Выпустить повторно сертификат, у которого закончился срок действия можно с помощью кнопки <strong>Перевыпустить (cкопировать, F9)</strong>.</li>
|
||||
<li>Просмотреть сертификат или заявление на выпуск нового сертификата можно, дважды щелкнув по нему мышью. Также можно это сделать с помощью команды <strong>Изменить</strong> контекстного меню по правой кнопке мыши или меню <strong>Еще</strong>.</li></ul><h3>Приложения</h3>
|
||||
<ul><li>Содержит список настроенных приложений, которые будут использованы в информационной базе (в том числе во всех узлах распределенной ИБ). </li>
|
||||
<li>Данные приложения не обязательно должны быть установлены на всех компьютерах. Более того, установка более одного приложения на одном компьютере может вызвать конфликты между ними.
|
||||
</li>
|
||||
<li>Если приложение не установлена, то после установки компоненты будет предложена гиперссылка на загрузку дистрибутива <b>ViPNet CSP</b> или <b>КриптоПро CSP</b>, поддерживающие ГОСТ. </li>
|
||||
<li>По гиперссылке также можно перейти на домашние страницы других приложений, соответствующих стандартам безопасности (например, <b>ЛИССИ CSP, Сигнал-КОМ CSP</b>). </li>
|
||||
<li>Если требуется использовать приложение отличную от известных, тогда нужно указать ее имя, тип и алгоритмы, как указано в инструкции, поставляемой ее производителем.</li>
|
||||
<li>В колонке <strong>Результат проверки</strong> отражаются сведения, по которым можно понять установлено ли приложение на компьютере или нет или же установлена, но некорректно.</li>
|
||||
<li>Linux: <strong>Путь к приложению (<Имя приложения, соответствующей выделенной строке в списке>)</strong> - поле, которое требуется обязательно заполнять на компьютерах под управлением ОС Linux.</li>
|
||||
<li>В нижней части списка расположена ссылка <a href="http://its.1c.ru/db/metod81#content:5784:1">Инструкция по работе с приложениями электронной подписи и шифрования</a>.</li></ul><ul><li>Задайте <strong>Расширение для зашифрованных файлов</strong> при отправке по почте, при выполнении команды <strong>Сохранить как</strong> и при экспорте папки (по умолчанию <strong>.p7m</strong>).
|
||||
</li>
|
||||
<li>
|
||||
<div>Напишите <strong>Расширение для файлов подписи</strong> (по умолчанию <strong>.p7s</strong>).</div>
|
||||
</li>
|
||||
<li>
|
||||
<div>С помощью переключателя <strong>При сохранении данных в файл вместе с электронной подписью</strong> задайте поведение приложения при выполнении команды <strong>Сохранить вместе с электронной подписью</strong>: </div>
|
||||
<ul><li>
|
||||
<div><strong>Сохранять все подписи</strong> - все подписи сохраняются; </div>
|
||||
</li>
|
||||
<li>
|
||||
<div><strong>Спрашивать</strong> - выбор сохраняемых подписей осуществляется из <a href="CommonForm.СохранениеВместеСЭлектроннойПодписью/Help">списка</a>.</div></li></ul></li>
|
||||
<li>
|
||||
<div>Включите флажок <strong>Сохранять сертификат</strong> для сохранения на компьютер сертификата вместе с файлом и электронной подписью.</div></li></ul><h3>Машиночитаемые доверенности (единый формат) </h3>
|
||||
<ul><li>Для того чтобы попасть в<a href="Catalog.МашиночитаемыеДоверенности/Help"> список машиночитаемых доверенностей (МЧД)</a> перейдите по гиперссылке. </li></ul><h3>Легенда</h3>
|
||||
<li>Если приложение не установлена, то после установки компоненты будет предложена гиперссылка на загрузку дистрибутива <b>ViPNet CSP</b> или <b>КриптоПро CSP</b>, поддерживающие ГОСТ. </li>
|
||||
<li>По гиперссылке также можно перейти на домашние страницы других приложений, соответствующих стандартам безопасности (например, <b>ЛИССИ CSP, Сигнал-КОМ CSP</b>). </li>
|
||||
<li>Если требуется использовать приложение отличную от известных, тогда нужно указать ее имя, тип и алгоритмы, как указано в инструкции, поставляемой ее производителем.</li>
|
||||
<li>В колонке <strong>Результат проверки</strong> отражаются сведения, по которым можно понять установлено ли приложение на компьютере или нет или же установлена, но некорректно.</li>
|
||||
<li>Linux: <strong>Путь к приложению (<Имя приложения, соответствующей выделенной строке в списке>)</strong> - поле, которое требуется обязательно заполнять на компьютерах под управлением ОС Linux.</li>
|
||||
<li>В нижней части списка расположена ссылка <a href="http://its.1c.ru/db/metod81#content:5784:1">Инструкция по работе с приложениями электронной подписи и шифрования</a>.</li></ul><h3>Дополнительно</h3>
|
||||
<h3>
|
||||
<ul style="font-size: 11.199999809265137px; font-weight: normal;"><li>Задайте расширение для зашифрованных файлов при отправке по почте, при выполнении команды <strong>Сохранить как</strong> и при экспорте папки (по умолчанию <strong>.p7m</strong>);</li>
|
||||
<li>Напишите расширение для файлов подписи (по умолчанию <strong>.p7s</strong>);</li>
|
||||
<li>С помощью переключателя <strong>При сохранении данных в файл вместе с электронной подписью</strong> задайте поведение приложения:</li>
|
||||
<ul><li><strong>Сохранять все подписи</strong> - все подписи сохраняются </li>
|
||||
<li><strong>Спрашивать</strong> - выбор сохраняемых подписей осуществляется из <a href="Сохранение вместе с электронной подписью">списка</a>.</li>
|
||||
<li>Включите флажок <strong>Сохранить сертификат</strong> для сохранения на компьютер сертификата вместе с файлом и электронной подписью. </li></ul></ul></h3>
|
||||
<h3>
|
||||
</h3>
|
||||
<h3>Машиночитаемые доверенности (единый формат) </h3>
|
||||
<ul><li>Для того чтобы попасть в <a href="Catalog.МашиночитаемыеДоверенности/Help"> список машиночитаемых доверенностей (МЧД)</a> перейдите по гиперссылке. </li></ul><h3>Легенда</h3>
|
||||
<ul><li>Для того чтобы посмотреть состояние сертификатов нажмите раздел <strong>Легенда</strong> в нижней части списка. </li></ul><h3>См. также:</h3>
|
||||
<ul><li>Перейдите по этой ссылке в соответствующий раздел 1С:ИТС, если имеются вопросы.</li></ul><h3>Дополнительно</h3>
|
||||
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
|
||||
<ul><li>Перейдите по этой ссылке в соответствующий раздел 1С:ИТС, если имеются вопросы.</li></ul><ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
|
||||
@@ -530,7 +530,7 @@
|
||||
ПараметрыСохранения = ФайловаяСистемаКлиент.ПараметрыСохраненияФайла();
|
||||
ПараметрыСохранения.Интерактивно = Ложь;
|
||||
|
||||
ИмяФайлаДляОткрытия = ИмяКаталога+"\"+ДополнительныеПараметры.ИмяФайлаДляОткрытия;
|
||||
ИмяФайлаДляОткрытия = ИмяКаталога + ПолучитьРазделительПути() + ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ДополнительныеПараметры.ИмяФайлаДляОткрытия);
|
||||
ФайловаяСистемаКлиент.СохранитьФайл(Оповещение, ДополнительныеПараметры.АдресДокумента, ИмяФайлаДляОткрытия, ПараметрыСохранения);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -670,7 +670,7 @@
|
||||
Исключение
|
||||
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||
ПодключитьОбработчикОжидания("СкрытьДлительнуюОперацию", 0.1, Истина);
|
||||
ПоказатьПредупреждение(, ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||
СтандартныеПодсистемыКлиент.ВывестиИнформациюОбОшибке(ИнформацияОбОшибке);
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
ПодключитьОбработчикОжидания("СкрытьДлительнуюОперацию", 0.1, Истина);
|
||||
@@ -682,7 +682,6 @@
|
||||
|
||||
ТекстОшибки = "";
|
||||
Справочники.ВерсииРасширений.УдалитьРасширения(ИдентификаторыРасширений, ТекстОшибки);
|
||||
УдалитьСвойстваРасширений(ИдентификаторыРасширений);
|
||||
|
||||
ОбновитьСписок();
|
||||
|
||||
@@ -692,15 +691,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура УдалитьСвойстваРасширений(ИдентификаторыРасширений)
|
||||
|
||||
Для каждого ИдентификаторРасширения Из ИдентификаторыРасширений Цикл
|
||||
РегистрыСведений.СвойстваРасширений.УдалитьСвойстваРасширенияПоИдентификатору(ИдентификаторРасширения);
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОтключитьРасширениеПослеПодтверждения(Результат, Контекст) Экспорт
|
||||
|
||||
|
||||
@@ -74,6 +74,9 @@
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<font xsi:type="core:FontRef">
|
||||
<font>Style.ВажнаяНадписьШрифт</font>
|
||||
</font>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
@@ -500,6 +503,9 @@
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<font xsi:type="core:FontRef">
|
||||
<font>Style.ВажнаяНадписьШрифт</font>
|
||||
</font>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
|
||||
@@ -1036,7 +1036,7 @@
|
||||
ПолеЗначения.РежимВыбораИзСписка = Не ЭтоПолеСписка И (Строка.ДоступныеЗначения <> Неопределено);
|
||||
|
||||
ПривестиЗначениеКВидуСравнения(Строка);
|
||||
УстановитьПредставлениеЗначения(Строка);
|
||||
УстановитьПредставлениеЗначения(Строка, Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
@@ -1153,7 +1153,7 @@
|
||||
ЭлементНастройки.Значение = Строка.Значение;
|
||||
|
||||
УстановитьМодифицированность();
|
||||
УстановитьПредставлениеЗначения(Строка);
|
||||
УстановитьПредставлениеЗначения(Строка, Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора);
|
||||
|
||||
Если НастройкиОтчета.ЗагрузитьНастройкиПриИзмененииПараметров.Найти(ЭлементНастройки.Параметр) <> Неопределено Тогда
|
||||
ВариантБылМодифицирован = ВариантМодифицирован;
|
||||
@@ -1199,7 +1199,7 @@
|
||||
ЗаполнитьЗначенияСвойств(ЭлементНастройки, Строка, "Использование, ПравоеЗначение");
|
||||
|
||||
УстановитьМодифицированность();
|
||||
УстановитьПредставлениеЗначения(Строка);
|
||||
УстановитьПредставлениеЗначения(Строка, Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
@@ -2446,7 +2446,7 @@
|
||||
Строка.ЭтоПредопределенныйЗаголовок = (Строка.Заголовок = Строка.ПредставлениеПользовательскойНастройки);
|
||||
|
||||
ПривестиЗначениеКВидуСравнения(Строка, ЭлементНастройки);
|
||||
УстановитьПредставлениеЗначения(Строка);
|
||||
УстановитьПредставлениеЗначения(Строка, СвойствоЭлементаСтруктуры.ДоступныеПоляОтбора);
|
||||
|
||||
Возврат УстановленыУспешно;
|
||||
КонецФункции
|
||||
@@ -3645,15 +3645,22 @@
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Процедура УстановитьПредставлениеЗначения(Строка)
|
||||
Процедура УстановитьПредставлениеЗначения(Строка, ДоступныеПоляОтбора)
|
||||
Строка.ПредставлениеЗначения = "";
|
||||
|
||||
ДоступныеЗначения = Строка.ДоступныеЗначения;
|
||||
Значение = ?(Строка.ЭтоПараметр, Строка.Значение, Строка.ПравоеЗначение);
|
||||
|
||||
Если ДоступныеЗначения = Неопределено Тогда
|
||||
Если ТипЗнч(Значение) = Тип("ПолеКомпоновкиДанных") Тогда
|
||||
ДоступноеПоле = ДоступныеПоляОтбора.НайтиПоле(Значение);
|
||||
Если ДоступноеПоле <> Неопределено Тогда
|
||||
Строка.ПредставлениеЗначения = ДоступноеПоле.Заголовок;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Значение = ?(Строка.ЭтоПараметр, Строка.Значение, Строка.ПравоеЗначение);
|
||||
НайденныйЭлемент = ДоступныеЗначения.НайтиПоЗначению(Значение);
|
||||
Если НайденныйЭлемент <> Неопределено Тогда
|
||||
Строка.ПредставлениеЗначения = НайденныйЭлемент.Представление;
|
||||
|
||||
@@ -213,6 +213,19 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает разрешение на доступ к веб-сервису адресов через сеть Интернет.
|
||||
// Если доступ запрещен, то подбор и проверка адресов использует только загруженные данные в приложение.
|
||||
// Изменение доступа выполняется в разделе Администрирование - Интернет-поддержка и сервисы.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - если Истина, то доступ к веб-сервису разрешен.
|
||||
//
|
||||
Функция РазрешенДоступВИнтернет() Экспорт
|
||||
|
||||
Возврат Не АдресныйКлассификаторПовтИсп.ИспользоватьТолькоЗагруженныеДанные();
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет адреса на соответствие адресному классификатору
|
||||
// и возвращает подходящие варианты, содержащие сведения об адресе.
|
||||
// При проверке адреса через веб-сервиса выполнение функции может занимать 20 секунд.
|
||||
@@ -425,6 +438,41 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет корректность ОКМТО бюджетополучателей.
|
||||
//
|
||||
// Для проверки ОКТМО бюджетополучателей требуется подключение к Интернет-поддержке пользователей и наличие
|
||||
// постоянного соединения с интернетом, т.к. адресные сведения, загруженные в приложение, не используются.
|
||||
// Проверка выполняется порциям по 100 значений за один запросу к веб-сервису, поэтому рекомендуется выполнять
|
||||
// ее в фоновом режиме.
|
||||
// При получении ответа от веб-сервиса отличного от успешного (код 200 ОК) выполнение функции прерывается
|
||||
// и возвращается ошибка. Поэтому если в данных результата отсутствует ОКТМО бюджетополучателя,
|
||||
// то он не было проверен из-за ошибок работы с веб-сервисом.
|
||||
//
|
||||
// Параметры:
|
||||
// ОКТМОБюджетополучателей - Массив из Строка - список ОКТМО бюджетополучателей.
|
||||
// - Строка - ОКТМО бюджетополучателя.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * Отказ - Булево - если Истина, то при получении ОКТМО бюджетополучателя через веб-сервис возникла ошибка.
|
||||
// * ПредставлениеОшибкиДляПользователя - Строка - текст ошибки для отображения пользователю.
|
||||
// * ИнформацияОбОшибке - ИнформацияОбОшибке - структурированная информация об ошибке.
|
||||
// * Данные - Соответствие из КлючИЗначение:
|
||||
// ** Ключ - Строка - ОКТМО бюджетополучателя.
|
||||
// ** Значение - Структура:
|
||||
// *** Успешно - Булево - если Истина, то код ОКТМО бюджетополучателей корректный;
|
||||
// *** ТекстОшибки - Строка - текст ошибки, если ОКТМО некорректный;
|
||||
// *** МуниципальныеОбразования - Массив из Строка - список муниципальных образований, принадлежащих данному ОКТМО.
|
||||
//
|
||||
Функция ПроверитьОКТМОБюджетополучателя(ОКТМОБюджетополучателей) Экспорт
|
||||
|
||||
СписокОКТМО = ?(ТипЗнч(ОКТМОБюджетополучателей) = Тип("Строка"),
|
||||
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ОКТМОБюджетополучателей), ОКТМОБюджетополучателей);
|
||||
|
||||
Возврат АдресныйКлассификаторСлужебный.ПроверитьОКМТОБюджетополучателя(СписокОКТМО);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область УстаревшиеПроцедурыИФункции
|
||||
|
||||
// Возвращает идентификационный код дома и адресного объекта с помощью веб-сервиса фирмы 1С предоставляющего
|
||||
|
||||
@@ -157,9 +157,9 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * HTTPСоединение - объект для вызовов сервиса.
|
||||
// * СервисКлассификатора - HTTPСоединение - объект для вызовов сервиса.
|
||||
//
|
||||
Функция СервисКлассификатора1С(ВремяОжидания = 120) Экспорт
|
||||
Функция СервисКлассификатора1С(ВремяОжидания = 20) Экспорт
|
||||
|
||||
Возврат Новый Структура("СервисКлассификатора", АдресныйКлассификаторСлужебный.СервисКлассификатора1С(ВремяОжидания));
|
||||
|
||||
|
||||
@@ -6471,6 +6471,172 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПроверитьОКМТОБюджетополучателя(ОКТМОБюджетополучателей) Экспорт
|
||||
|
||||
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("АдресныйКлассификаторСлужебный.ПроверитьОКМТОБюджетополучателя",
|
||||
"ОКТМОБюджетополучателей", ОКТМОБюджетополучателей, Тип("Массив"));
|
||||
|
||||
РазмерПорции = 100;
|
||||
Результат = НовыйРезультатИзВебСервиса();
|
||||
|
||||
Порция = Новый Массив;
|
||||
|
||||
Для Позиция = 0 По ОКТМОБюджетополучателей.ВГраница() Цикл
|
||||
|
||||
ОКТМОБюджетополучателя = СокрЛП(ОКТМОБюджетополучателей.Получить(Позиция));
|
||||
Если СтрДлина(ОКТМОБюджетополучателя) = 8 Или СтрДлина(ОКТМОБюджетополучателя) = 11 Тогда
|
||||
|
||||
Если Результат.Данные[ОКТМОБюджетополучателя] = Неопределено Тогда
|
||||
Порция.Добавить(ОКТМОБюджетополучателя);
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
|
||||
ДанныеПоОКТМО = ДанныеПоОКТМО();
|
||||
ДанныеПоОКТМО.ТекстОшибки = НСтр("ru = 'Указан некорректный код ОКТМО'");
|
||||
Результат.Данные.Вставить(ОКТМОБюджетополучателя, ДанныеПоОКТМО);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если (Порция.Количество() = РазмерПорции
|
||||
Или Позиция = ОКТМОБюджетополучателей.ВГраница())
|
||||
И Порция.Количество() > 0 Тогда
|
||||
ОбработатьПорциюОКТМОБюджетополучателей(Результат, Порция);
|
||||
Если Результат.Отказ Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
Порция = Новый Массив;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДанныеПоОКТМО()
|
||||
|
||||
ДанныеПоОКТМО = Новый Структура();
|
||||
ДанныеПоОКТМО.Вставить("Успешно", Ложь);
|
||||
ДанныеПоОКТМО.Вставить("ТекстОшибки", "");
|
||||
ДанныеПоОКТМО.Вставить("МуниципальныеОбразования", Новый Массив);
|
||||
|
||||
Возврат ДанныеПоОКТМО;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОбработатьПорциюОКТМОБюджетополучателей(Результат, Порция)
|
||||
|
||||
ИдентификаторЗапроса = Строка(Новый УникальныйИдентификатор);
|
||||
ДанныеДляЗапроса = Новый Структура("oktmoList", Порция);
|
||||
|
||||
ОписаниеСервиса = АдресныйКлассификаторПовтИсп.СервисКлассификатора1С();
|
||||
Сервис = ОписаниеСервиса.СервисКлассификатора;
|
||||
|
||||
ПрефиксВерсииЗапроса = ПрефиксВерсииЗапросаСервисаОКТМО();
|
||||
HTTPЗапрос = Новый HTTPЗапрос(ПрефиксВерсииЗапроса + "validateOktmoList");
|
||||
|
||||
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
|
||||
HTTPЗапрос.Заголовки.Вставить("X-1C-Request-UID", ИдентификаторЗапроса);
|
||||
HTTPЗапрос.УстановитьТелоИзСтроки(СтруктураВСтрокуJSON(ДанныеДляЗапроса));
|
||||
|
||||
Попытка
|
||||
РезультатПроверки = Сервис.ОтправитьДляОбработки(HTTPЗапрос);
|
||||
Исключение
|
||||
|
||||
ОбработатьОшибкуОбращенияКВебСервисуПриПолученииОКТМО(Результат);
|
||||
Возврат Результат;
|
||||
КонецПопытки;
|
||||
|
||||
Если ТребуетсяОбновитьТикетАвторизации(РезультатПроверки.КодСостояния) Тогда
|
||||
|
||||
Сервис = ОбновитьОписаниеСервисаКлассификатора(ОписаниеСервиса);
|
||||
|
||||
Попытка
|
||||
Ответ = Сервис.ОтправитьДляОбработки(HTTPЗапрос);
|
||||
Исключение
|
||||
|
||||
ОбработатьОшибкуОбращенияКВебСервисуПриПолученииОКТМО(Результат);
|
||||
Возврат Результат;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПолученныеДанные = РезультатПроверки.ПолучитьТелоКакСтроку("UTF-8");
|
||||
|
||||
Если РезультатПроверки.КодСостояния = 200 Тогда
|
||||
|
||||
ДанныеПроверки = СтрокуJSONВСоответствие(ПолученныеДанные);
|
||||
Если ТипЗнч(ДанныеПроверки) = Тип("Соответствие") Тогда
|
||||
|
||||
НаборОКТМО = ДанныеПроверки["validateOktmoData"];
|
||||
Для каждого ДанныеОКТМО Из НаборОКТМО Цикл
|
||||
|
||||
ЗначениеОКМТО = ДанныеОКТМО.Значение;
|
||||
ДанныеПоОКТМО = ДанныеПоОКТМО();
|
||||
|
||||
Если ЗначениеОКМТО["validateOktmoStatus"] = "VERIFIED_OKTMO" Тогда
|
||||
ДанныеПоОКТМО.Успешно = Истина;
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(ЗначениеОКМТО["validateMessage"]) Тогда
|
||||
ДанныеПоОКТМО.ТекстОшибки = ЗначениеОКМТО["validateMessage"];
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(ЗначениеОКМТО["oktmoMunValue"]) Тогда
|
||||
ДанныеПоОКТМО.МуниципальныеОбразования = ЗначениеОКМТО["oktmoMunValue"];
|
||||
КонецЕсли;
|
||||
|
||||
Результат.Данные.Вставить(ДанныеОКТМО.Ключ, ДанныеПоОКТМО)
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
Результат.ПредставлениеОшибкиДляПользователя = НСтр("ru = 'Проверка ОКТМО бюджетополучателя недоступна по причине:
|
||||
|- не подключена интернет-поддержка пользователей;
|
||||
|- неполадки у интернет-провайдера;
|
||||
|- подключение к серверу блокирует межсетевой экран,
|
||||
| антивирус или другие приложения;
|
||||
|- веб-сервис отключен или на техническом обслуживании.'");
|
||||
|
||||
Результат.Отказ = Истина;
|
||||
ТекстОшибки = НСтр("ru = 'При проверке ОКМТО бюджетополучателя через веб-сервис возникли проблемы.'");
|
||||
|
||||
ЗаписатьОшибкуЗапросаКВебСервисуВЖурналРегистрации(ПолученныеДанные, ТекстОшибки, HTTPЗапрос.АдресРесурса
|
||||
+ " X-1C-Request-UID:" + ИдентификаторЗапроса, РезультатПроверки.КодСостояния);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ОбработатьОшибкуОбращенияКВебСервисуПриПолученииОКТМО(Результат)
|
||||
|
||||
Результат.Отказ = Истина;
|
||||
Результат.ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||
Результат.ПредставлениеОшибкиДляПользователя = НСтр("ru = 'При проверке ОКМТО бюджетополучателя через веб-сервис возникли проблемы.'");
|
||||
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,,
|
||||
ОбработкаОшибок.ПодробноеПредставлениеОшибки(Результат.ИнформацияОбОшибке));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ОбновитьОписаниеСервисаКлассификатора(ОписаниеСервиса)
|
||||
|
||||
ОписаниеСервиса.СервисКлассификатора = СервисКлассификатора1С();
|
||||
Сервис = ОписаниеСервиса.СервисКлассификатора;
|
||||
Возврат Сервис;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТребуетсяОбновитьТикетАвторизации(КодСостояния)
|
||||
|
||||
Возврат КодСостояния = 401
|
||||
Или КодСостояния = 409
|
||||
Или КодСостояния = 419;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьЗначениеСвойстваЕслиПустое(Приемник, Источник, ИмяСвойстваПриемника, ИмяСвойстваИлиЗначениеИсточника, ЭтоЗначение = Ложь)
|
||||
|
||||
ЗначениеСвойства = ?(ЭтоЗначение, ИмяСвойстваИлиЗначениеИсточника, Источник[ИмяСвойстваИлиЗначениеИсточника]);
|
||||
@@ -6935,11 +7101,9 @@
|
||||
Возврат Результат;
|
||||
КонецПопытки;
|
||||
|
||||
Если РезультатПроверки.КодСостояния <> 200
|
||||
И РезультатПроверки.КодСостояния <> 400 Тогда
|
||||
Если ТребуетсяОбновитьТикетАвторизации(РезультатПроверки.КодСостояния) Тогда
|
||||
|
||||
ОписаниеСервиса.СервисКлассификатора = СервисКлассификатора1С(20);
|
||||
Сервис = ОписаниеСервиса.СервисКлассификатора;
|
||||
Сервис = ОбновитьОписаниеСервисаКлассификатора(ОписаниеСервиса);
|
||||
|
||||
Попытка
|
||||
РезультатПроверки = Сервис.ОтправитьДляОбработки(HTTPЗапрос);
|
||||
@@ -6983,7 +7147,7 @@
|
||||
Результат.ПодробноеПредставлениеОшибки = ПредставлениеОшибки;
|
||||
Результат.Отказ = Истина;
|
||||
|
||||
ЗаписатьОшибкуЗапросаКВебСервисуВЖурналРегистрации(ПолученныеДанные, Результат, HTTPЗапрос.АдресРесурса
|
||||
ЗаписатьОшибкуЗапросаКВебСервисуВЖурналРегистрации(ПолученныеДанные, Результат.ПодробноеПредставлениеОшибки, HTTPЗапрос.АдресРесурса
|
||||
+ " X-1C-Request-UID:" + ИдентификаторЗапроса, РезультатПроверки.КодСостояния);
|
||||
|
||||
Возврат Результат;
|
||||
@@ -7096,6 +7260,26 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * Данные - Соответствие
|
||||
// * Отказ - Булево
|
||||
// * ПредставлениеОшибкиДляПользователя - Строка
|
||||
// * ИнформацияОбОшибке - ИнформацияОбОшибке
|
||||
// - Неопределено
|
||||
//
|
||||
Функция НовыйРезультатИзВебСервиса()
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("Данные", Новый Соответствие);
|
||||
Результат.Вставить("Отказ", Ложь);
|
||||
Результат.Вставить("ПредставлениеОшибкиДляПользователя", "");
|
||||
Результат.Вставить("ИнформацияОбОшибке", Неопределено);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПредставлениеДомаИСтроений(ОписаниеДома)
|
||||
|
||||
СписокСтроений = Новый Массив;
|
||||
@@ -7698,6 +7882,10 @@
|
||||
Возврат "rest/v4/";
|
||||
КонецФункции
|
||||
|
||||
Функция ПрефиксВерсииЗапросаСервисаОКТМО()
|
||||
Возврат "rest/oktmo/v1/";
|
||||
КонецФункции
|
||||
|
||||
// Возвращает информацию из классификатора субъектов РФ.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@@ -8198,7 +8386,7 @@
|
||||
// Возвращаемое значение:
|
||||
// HTTPСоединение - объект для вызовов сервиса.
|
||||
//
|
||||
Функция СервисКлассификатора1С(ВремяОжидания = 120) Экспорт
|
||||
Функция СервисКлассификатора1С(ВремяОжидания = 20) Экспорт
|
||||
|
||||
URLПорталаПоддержки = "https://portal.1c.ru/";
|
||||
СохраненныйТекущийURLПорталаПоддержки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("АдресныйКлассификатор", "URLПорталаПоддержки");
|
||||
@@ -8322,10 +8510,9 @@
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
Если Ответ.КодСостояния <> 200 Тогда
|
||||
Если ТребуетсяОбновитьТикетАвторизации(Ответ.КодСостояния) Тогда
|
||||
|
||||
ОписаниеСервиса.СервисКлассификатора = СервисКлассификатора1С(ВремяОжидания);
|
||||
Сервис = ОписаниеСервиса.СервисКлассификатора;
|
||||
Сервис = ОбновитьОписаниеСервисаКлассификатора(ОписаниеСервиса);
|
||||
|
||||
Попытка
|
||||
Ответ = Сервис.Получить(HTTPЗапрос);
|
||||
@@ -8402,7 +8589,7 @@
|
||||
Результат.ПодробноеПредставлениеОшибки = ПредставлениеОшибки;
|
||||
ОтветОтСервера = Ответ.ПолучитьТелоКакСтроку("UTF-8");
|
||||
|
||||
ЗаписатьОшибкуЗапросаКВебСервисуВЖурналРегистрации(ОтветОтСервера, Результат, ТекстURL, Ответ.КодСостояния);
|
||||
ЗаписатьОшибкуЗапросаКВебСервисуВЖурналРегистрации(ОтветОтСервера, Результат.ПодробноеПредставлениеОшибки, ТекстURL, Ответ.КодСостояния);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -8417,7 +8604,7 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаписатьОшибкуЗапросаКВебСервисуВЖурналРегистрации(ОтветОтСервераСтрокой, Результат, ТекстURL, КодСостояния)
|
||||
Процедура ЗаписатьОшибкуЗапросаКВебСервисуВЖурналРегистрации(ОтветОтСервераСтрокой, ПодробноеПредставлениеОшибки, ТекстURL, КодСостояния)
|
||||
|
||||
ШаблонТекстОтветаСервера = НСтр("ru = '%1
|
||||
|Техническая информация. При запросе: %2
|
||||
@@ -8425,7 +8612,7 @@
|
||||
|с текстом: %4'");
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстОтветаСервера,
|
||||
Результат.ПодробноеПредставлениеОшибки, ТекстURL, КодСостояния, ОтветОтСервераСтрокой);
|
||||
ПодробноеПредставлениеОшибки, ТекстURL, КодСостояния, ОтветОтСервераСтрокой);
|
||||
|
||||
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибки);
|
||||
|
||||
@@ -8512,6 +8699,19 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СтрокуJSONВСоответствие(Значение)
|
||||
|
||||
ЧтениеJSON = Новый ЧтениеJSON;
|
||||
ЧтениеJSON.УстановитьСтроку(Значение);
|
||||
|
||||
Результат = ПрочитатьJSON(ЧтениеJSON, Истина);
|
||||
|
||||
ЧтениеJSON.Закрыть();
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Описание национальных полей структуры контактной информации для хранения ее в формате JSON.
|
||||
// Основной список полей определяется в одноименной функции общего модуля .
|
||||
//
|
||||
|
||||
@@ -7543,9 +7543,9 @@
|
||||
Запрос.УстановитьПараметр("НазначенияВариантовОтчетов", ПараметрыЗаполнения.НазначенияВариантовОтчетов);
|
||||
Запрос.УстановитьПараметр("ИскатьВоВсехРазделах", ПараметрыЗаполнения.ИскатьВоВсехРазделах);
|
||||
Если ПараметрыЗаполнения.ОтображатьВсеВариантыОтчетов Тогда
|
||||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Параметр1", "ИСТИНА");
|
||||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеПоНазначениюВариантовОтчетов", "ИСТИНА");
|
||||
Иначе
|
||||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Параметр1", "ВариантыОтчетов.Назначение В (&НазначенияВариантовОтчетов)");
|
||||
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеПоНазначениюВариантовОтчетов", "ВариантыОтчетов.Назначение В (&НазначенияВариантовОтчетов)");
|
||||
КонецЕсли;
|
||||
|
||||
ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
|
||||
@@ -7657,7 +7657,7 @@
|
||||
|
|
||||
|ГДЕ
|
||||
| НЕ ВариантыОтчетов.ПометкаУдаления
|
||||
| И &Параметр1
|
||||
| И &УсловиеПоНазначениюВариантовОтчетов
|
||||
|
|
||||
|ОБЪЕДИНИТЬ ВСЕ
|
||||
|
|
||||
@@ -7706,7 +7706,7 @@
|
||||
|ГДЕ
|
||||
| (НЕ ВариантыОтчетов.ПометкаУдаления
|
||||
| ИЛИ НЕ ДоступныеВариантыРасширений.Вариант ЕСТЬ NULL)
|
||||
| И &Параметр1
|
||||
| И &УсловиеПоНазначениюВариантовОтчетов
|
||||
|;
|
||||
|
|
||||
|////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -7773,7 +7773,7 @@
|
||||
| ИЛИ НЕ ВариантыОтчетов.ИнтерактивнаяПометкаУдаления)
|
||||
| И (ВариантыОтчетов.Пользовательский
|
||||
| ИЛИ НЕ ВариантыОтчетов.ПометкаУдаления)
|
||||
| И &Параметр1
|
||||
| И &УсловиеПоНазначениюВариантовОтчетов
|
||||
|";
|
||||
|
||||
Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда
|
||||
@@ -7846,7 +7846,7 @@
|
||||
| И (ПредставленияВариантов.КодЯзыка = &КодЯзыка)
|
||||
|ГДЕ
|
||||
| НЕ ВариантыОтчетов.ПометкаУдаления
|
||||
| И &Параметр1
|
||||
| И &УсловиеПоНазначениюВариантовОтчетов
|
||||
|
|
||||
|ОБЪЕДИНИТЬ ВСЕ
|
||||
|
|
||||
@@ -7906,7 +7906,7 @@
|
||||
|ГДЕ
|
||||
| (НЕ ВариантыОтчетов.ПометкаУдаления
|
||||
| ИЛИ НЕ ДоступныеВариантыРасширений.Вариант ЕСТЬ NULL)
|
||||
| И &Параметр1
|
||||
| И &УсловиеПоНазначениюВариантовОтчетов
|
||||
|;
|
||||
|
|
||||
|////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -7994,7 +7994,7 @@
|
||||
| ИЛИ НЕ ВариантыОтчетов.ИнтерактивнаяПометкаУдаления)
|
||||
| И (ВариантыОтчетов.Пользовательский
|
||||
| ИЛИ НЕ ВариантыОтчетов.ПометкаУдаления)
|
||||
| И &Параметр1
|
||||
| И &УсловиеПоНазначениюВариантовОтчетов
|
||||
|";
|
||||
|
||||
КонецЕсли;
|
||||
@@ -8083,7 +8083,7 @@
|
||||
| ИЛИ НЕ ВариантыОтчетов.ИнтерактивнаяПометкаУдаления)
|
||||
| И (ВариантыОтчетов.Пользовательский
|
||||
| ИЛИ НЕ ВариантыОтчетов.ПометкаУдаления)
|
||||
| И &Параметр1
|
||||
| И &УсловиеПоНазначениюВариантовОтчетов
|
||||
| И втВсеВариантыСПодсистемами.Ссылка ЕСТЬ NULL
|
||||
|
|
||||
|ОБЪЕДИНИТЬ ВСЕ
|
||||
|
||||
@@ -1378,8 +1378,16 @@
|
||||
|
||||
Настройки = ИспользуемыеНастройки(Форма, СвойстваЗаголовка.ИдентификаторНастроек);
|
||||
|
||||
Фильтры = Настройки.Отбор;
|
||||
Фильтр = ВариантыОтчетовСлужебныйКлиентСервер.ФильтрРазделаОтчета(Фильтры, СвойстваЗаголовка.Поле);
|
||||
|
||||
Если Настройки.Структура.Количество() > 1 Тогда
|
||||
Если Фильтр = Неопределено
|
||||
Или Фильтр <> Неопределено И Фильтр.ВидСравнения <> ВидСравнения Или Фильтр.ПравоеЗначение <> ДанныеРасшифровки.Значение Тогда
|
||||
Фильтры = ВариантыОтчетовСлужебныйКлиентСервер.ФильтрыРазделаОтчета(Настройки, СвойстваЗаголовка, ЭтоГруппировка);
|
||||
Фильтр = ВариантыОтчетовСлужебныйКлиентСервер.ФильтрРазделаОтчета(Фильтры, СвойстваЗаголовка.Поле);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если Фильтр = Неопределено Тогда
|
||||
|
||||
|
||||
@@ -841,7 +841,7 @@
|
||||
ИмяМакета = МестоположениеМакетаРазделенное.Получить(МестоположениеМакетаРазделенное.ВГраница());
|
||||
|
||||
Если МестоположениеМакетаРазделенное.Количество() = 2 Тогда
|
||||
ДвоичныеДанныеКомпоненты = ПолучитьОбщийМакет(Местоположение);
|
||||
ДвоичныеДанныеКомпоненты = ПолучитьОбщийМакет(ИмяМакета);
|
||||
Иначе
|
||||
МестоположениеМакетаРазделенное.Удалить(МестоположениеМакетаРазделенное.ВГраница());
|
||||
МестоположениеМакетаРазделенное.Удалить(МестоположениеМакетаРазделенное.ВГраница());
|
||||
|
||||
@@ -383,11 +383,10 @@
|
||||
// Конструктор коллекции ПараметрыВыполненияФункции для функции ВыполнитьФункцию.
|
||||
//
|
||||
// Если ЗапуститьВФоне = Ложь и ЗапуститьНеВФоне = Ложь, то задание будет выполнено в фоне по возможности.
|
||||
// Запуск выполняется сразу в основном потоке при выполнении любого из следующих условий:
|
||||
// Запуск с расширениями сеанса выполняется сразу в основном потоке при выполнении любого из следующих условий:
|
||||
// * если вызов выполняется в файловой базе во внешнем соединении (в этом режиме фоновые задания не поддерживаются);
|
||||
// * если приложение запущено в режиме отладки (параметр /C РежимОтладки) - для упрощения отладки конфигурации;
|
||||
// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя;
|
||||
// * если выполняется функция модуля внешней обработки или внешнего отчета.
|
||||
// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя.
|
||||
//
|
||||
// Параметры:
|
||||
// ИдентификаторФормы - УникальныйИдентификатор - уникальный идентификатор формы,
|
||||
@@ -446,11 +445,10 @@
|
||||
// Конструктор коллекции ПараметрыВыполненияПроцедуры для функции ВыполнитьПроцедуру.
|
||||
//
|
||||
// Если ЗапуститьВФоне = Ложь и ЗапуститьНеВФоне = Ложь, то задание будет выполнено в фоне по возможности.
|
||||
// Запуск выполняется сразу в основном потоке при выполнении любого из следующих условий:
|
||||
// Запуск с расширениями сеанса выполняется сразу в основном потоке при выполнении любого из следующих условий:
|
||||
// * если вызов выполняется в файловой базе во внешнем соединении (в этом режиме фоновые задания не поддерживаются);
|
||||
// * если приложение запущено в режиме отладки (параметр /C РежимОтладки) - для упрощения отладки конфигурации;
|
||||
// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя;
|
||||
// * если выполняется функция модуля внешней обработки или внешнего отчета.
|
||||
// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - параметры выполнения длительной операции:
|
||||
@@ -775,11 +773,10 @@
|
||||
// Возвращает новую структуру для параметра ПараметрыВыполнения функции ВыполнитьВФоне.
|
||||
//
|
||||
// Если ЗапуститьВФоне = Ложь и ЗапуститьНеВФоне = Ложь, то задание будет выполнено в фоне по возможности.
|
||||
// Запуск выполняется сразу в основном потоке при выполнении любого из следующих условий:
|
||||
// Запуск с расширениями сеанса выполняется сразу в основном потоке при выполнении любого из следующих условий:
|
||||
// * если вызов выполняется в файловой базе во внешнем соединении (в этом режиме фоновые задания не поддерживаются);
|
||||
// * если приложение запущено в режиме отладки (параметр /C РежимОтладки) - для упрощения отладки конфигурации;
|
||||
// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя;
|
||||
// * если выполняется функция модуля внешней обработки или внешнего отчета.
|
||||
// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя.
|
||||
//
|
||||
// Параметры:
|
||||
// ИдентификаторФормы - УникальныйИдентификатор - уникальный идентификатор формы, во временное хранилище которой
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
// См. ПодключаемыеКомандыПереопределяемый.ПриОпределенииКомандПодключенныхКОбъекту.
|
||||
Процедура ПриОпределенииКомандПодключенныхКОбъекту(НастройкиФормы, Источники, ПодключенныеОтчетыИОбработки, Команды) Экспорт
|
||||
|
||||
Если ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Справочники.Заметки) Тогда
|
||||
Команда = Команды.Добавить();
|
||||
Команда.Вид = "Органайзер";
|
||||
Команда.Представление = НСтр("ru = 'Создать заметку'");
|
||||
@@ -96,6 +97,7 @@
|
||||
Команда.Порядок = 50;
|
||||
Команда.Обработчик = "ЗаметкиПользователяСлужебныйКлиент.СоздатьЗаметкуПоПредмету";
|
||||
Команда.МножественныйВыбор = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -504,6 +504,11 @@
|
||||
// См. ОтчетыКлиентПереопределяемый.ПриНачалеВыбораЗначений.
|
||||
Процедура ПриНачалеВыбораЗначений(ФормаОтчета, УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка) Экспорт
|
||||
|
||||
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольРаботыПользователей") Тогда
|
||||
МодульКонтрольРаботыПользователейСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонтрольРаботыПользователейСлужебныйКлиент");
|
||||
МодульКонтрольРаботыПользователейСлужебныйКлиент.ПриНачалеВыбораЗначений(ФормаОтчета, УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка);
|
||||
КонецЕсли;
|
||||
|
||||
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
|
||||
МодульУправлениеДоступомСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеДоступомСлужебныйКлиент");
|
||||
МодульУправлениеДоступомСлужебныйКлиент.ПриНачалеВыбораЗначений(ФормаОтчета, УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка);
|
||||
|
||||
@@ -37,6 +37,9 @@
|
||||
МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.АнализЖурналаРегистрации);
|
||||
МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ИзменениеУчетныхЗаписей);
|
||||
МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ИзменениеУчастниковГруппПользователей);
|
||||
МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ИзменениеУчастниковГруппДоступа);
|
||||
МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ИзменениеРазрешенныхЗначенийГруппДоступа);
|
||||
МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ИзменениеРолейПрофилей);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -46,6 +49,9 @@
|
||||
Отчеты.АнализЖурналаРегистрации.ПередДобавлениемКомандОтчетов(КомандыОтчетов, Параметры, СтандартнаяОбработка);
|
||||
Отчеты.ИзменениеУчетныхЗаписей.ПередДобавлениемКомандОтчетов(КомандыОтчетов, Параметры, СтандартнаяОбработка);
|
||||
Отчеты.ИзменениеУчастниковГруппПользователей.ПередДобавлениемКомандОтчетов(КомандыОтчетов, Параметры, СтандартнаяОбработка);
|
||||
Отчеты.ИзменениеУчастниковГруппДоступа.ПередДобавлениемКомандОтчетов(КомандыОтчетов, Параметры, СтандартнаяОбработка);
|
||||
Отчеты.ИзменениеРазрешенныхЗначенийГруппДоступа.ПередДобавлениемКомандОтчетов(КомандыОтчетов, Параметры, СтандартнаяОбработка);
|
||||
Отчеты.ИзменениеРолейПрофилей.ПередДобавлениемКомандОтчетов(КомандыОтчетов, Параметры, СтандартнаяОбработка);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -170,8 +176,15 @@
|
||||
//
|
||||
Функция РегистрироватьИзмененияПравДоступа() Экспорт
|
||||
|
||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
Возврат Константы.РегистрироватьИзмененияПравДоступа.Получить();
|
||||
|
||||
Результат = Константы.РегистрироватьИзмененияПравДоступа.Получить();
|
||||
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
@@ -70,6 +70,16 @@
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
// См. ОтчетыКлиентПереопределяемый.ПриНачалеВыбораЗначений
|
||||
Процедура ПриНачалеВыбораЗначений(ФормаОтчета, УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка) Экспорт
|
||||
|
||||
Если ФормаОтчета.НастройкиОтчета.ПолноеИмя = "Отчет.ИзменениеРолейПрофилей" Тогда
|
||||
ПриНачалеВыбораЗначенийОтчетаИзменениеРолейПрофилей(ФормаОтчета,
|
||||
УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@@ -129,4 +139,46 @@
|
||||
ОткрытьФорму("Отчет.АнализЖурналаРегистрации.Форма.СведенияОРегламентномЗадании", ПараметрыФормы);
|
||||
КонецПроцедуры
|
||||
|
||||
// Для процедуры ПриНачалеВыбораЗначений
|
||||
Процедура ПриНачалеВыбораЗначенийОтчетаИзменениеРолейПрофилей(ФормаОтчета, УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка)
|
||||
|
||||
Если УсловияВыбора.ИмяПоля <> "Роль" Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
СтандартнаяОбработка = Ложь;
|
||||
|
||||
Выбранные = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(УсловияВыбора.Отмеченные);
|
||||
УдалитьПустыеЗначения(Выбранные);
|
||||
|
||||
Коллекции = Новый СписокЗначений;
|
||||
Коллекции.Добавить("Роли");
|
||||
|
||||
ПараметрыПодбора = Новый Структура;
|
||||
ПараметрыПодбора.Вставить("ВыбиратьСсылки", Истина);
|
||||
ПараметрыПодбора.Вставить("ВыбранныеОбъектыМетаданных", Выбранные);
|
||||
ПараметрыПодбора.Вставить("КоллекцииВыбираемыхОбъектовМетаданных", Коллекции);
|
||||
ПараметрыПодбора.Вставить("СпособГруппировкиОбъектов", "ПоВидам");
|
||||
ПараметрыПодбора.Вставить("Заголовок", НСтр("ru = 'Подбор ролей'"));
|
||||
|
||||
ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыПодбора,,,,, ОповещениеОЗакрытии);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Для процедуры ПриНачалеВыбораЗначенийОтчетаИзменениеРолейПрофилей.
|
||||
Процедура УдалитьПустыеЗначения(ОтмеченныеЗначения)
|
||||
|
||||
Индекс = ОтмеченныеЗначения.Количество() - 1;
|
||||
|
||||
Пока Индекс >= 0 Цикл
|
||||
Элемент = ОтмеченныеЗначения[Индекс];
|
||||
Индекс = Индекс - 1;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Элемент.Значение) Тогда
|
||||
ОтмеченныеЗначения.Удалить(Элемент);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@@ -99,9 +99,9 @@
|
||||
// * ДокументВид - Строка
|
||||
// * ДокументНомер - Строка
|
||||
// * ДокументКемВыдан - Строка
|
||||
// * ДокументДатаВыдачи - Строка
|
||||
// * ДокументКодПодразделения - Строка
|
||||
// * ДокументСрокДействия - Строка
|
||||
// * ДокументДатаВыдачи - Дата
|
||||
// * ДокументКодПодразделения - Строка - код подразделения в виде 999-999
|
||||
// * ДокументСрокДействия - Дата
|
||||
// * Гражданство - СправочникСсылка.СтраныМира
|
||||
// * БезГражданства - Булево
|
||||
// * МестоРождения - Строка
|
||||
|
||||
@@ -252,21 +252,40 @@
|
||||
|
||||
Процедура ПриЗаполненииРеквизитовОрганизации(Реквизиты) Экспорт
|
||||
|
||||
КопияРеквизитов = ОбщегоНазначения.СкопироватьРекурсивно(Реквизиты);
|
||||
|
||||
Если Реквизиты.ЭтоФизическоеЛицо = Истина Тогда
|
||||
МашиночитаемыеДоверенностиФНСПереопределяемый.ПриЗаполненииРеквизитовФизическогоЛица(Реквизиты.Ссылка, Реквизиты);
|
||||
МашиночитаемыеДоверенностиФНСПереопределяемый.ПриЗаполненииРеквизитовФизическогоЛица(Реквизиты.Ссылка, КопияРеквизитов);
|
||||
|
||||
ИначеЕсли Реквизиты.ЭтоКонтрагент = Истина Тогда
|
||||
МашиночитаемыеДоверенностиФНСПереопределяемый.ПриЗаполненииРеквизитовКонтрагента(Реквизиты.Ссылка, Реквизиты);
|
||||
МашиночитаемыеДоверенностиФНСПереопределяемый.ПриЗаполненииРеквизитовКонтрагента(Реквизиты.Ссылка, КопияРеквизитов);
|
||||
|
||||
Иначе
|
||||
СтандартнаяОбработка = Истина;
|
||||
МашиночитаемыеДоверенностиФНСПереопределяемый.ПриЗаполненииРеквизитовОрганизации(Реквизиты.Ссылка, Реквизиты, СтандартнаяОбработка);
|
||||
МашиночитаемыеДоверенностиФНСПереопределяемый.ПриЗаполненииРеквизитовОрганизации(Реквизиты.Ссылка, КопияРеквизитов, СтандартнаяОбработка);
|
||||
Если СтандартнаяОбработка Тогда
|
||||
ПриЗаполненииРеквизитовОрганизацииМЧД(Реквизиты);
|
||||
ПриЗаполненииРеквизитовОрганизацииМЧД(КопияРеквизитов);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ЗаполнитьЗначенияСвойств(Реквизиты, КопияРеквизитов);
|
||||
|
||||
Если Реквизиты.ЭтоФизическоеЛицо = Истина Тогда
|
||||
ДокументКодПодразделения = Строка(Реквизиты.ДокументКодПодразделения);
|
||||
Если СтрДлина(ДокументКодПодразделения) = 6 И ДокументКодПодразделения = ТолькоЦифры(ДокументКодПодразделения) Тогда
|
||||
Реквизиты.ДокументКодПодразделения = Лев(ДокументКодПодразделения, 3) + "-" + Прав(ДокументКодПодразделения, 3);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не Реквизиты.ЭтоФизическоеЛицо И ЗначениеЗаполнено(Реквизиты.РеквизитыЛицаБезДоверенности) Тогда
|
||||
РеквизитыЛицаБезДоверенности = МашиночитаемыеДоверенностиФНССлужебныйКлиентСервер.РеквизитыУчастника(
|
||||
"ФизическоеЛицо", Реквизиты.ЛицоБезДоверенности,
|
||||
?(Реквизиты.ЭтоИндивидуальныйПредприниматель = Истина, "ИндивидуальныйПредприниматель", "ДолжностноеЛицо"));
|
||||
ЗаполнитьЗначенияСвойств(РеквизитыЛицаБезДоверенности, Реквизиты.РеквизитыЛицаБезДоверенности);
|
||||
Реквизиты.РеквизитыЛицаБезДоверенности = РеквизитыЛицаБезДоверенности;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция РеквизитыУчастника(Назначение, ОрганизацияТип, ОрганизацияТипСтрока, ОрганизацияСсылка, ВидУчастника,
|
||||
@@ -286,7 +305,7 @@
|
||||
ВидУчастника);
|
||||
Иначе
|
||||
Список = МашиночитаемыеДоверенностиФНССлужебныйКлиентСервер.РеквизитыОрганизацииСписок(Назначение, Ложь,
|
||||
ВидУчастника, Назначение);
|
||||
ВидУчастника);
|
||||
КонецЕсли;
|
||||
|
||||
ОчиститьНеобязательныеРеквизиты(Реквизиты, Список);
|
||||
@@ -1863,9 +1882,13 @@
|
||||
Функция ПроверитьЗаполнениеРеквизитов(Форма, Реквизиты, СведенияОбОрганизации = Неопределено) Экспорт
|
||||
|
||||
Отказ = Ложь;
|
||||
ВидДокумента = "";
|
||||
ВидДокумента = Неопределено;
|
||||
Гражданство = Неопределено;
|
||||
БезГражданства = Неопределено;
|
||||
КодПодразделения = Неопределено;
|
||||
ДатаВыдачи = Неопределено;
|
||||
КемВыдан = Неопределено;
|
||||
СрокДействия = Неопределено;
|
||||
|
||||
Сведения = ?(СведенияОбОрганизации = Неопределено, Форма, СведенияОбОрганизации);
|
||||
|
||||
@@ -1880,13 +1903,24 @@
|
||||
Для Каждого Реквизит Из Реквизиты Цикл
|
||||
|
||||
Если Реквизит.Имя = "ДокументВид" Тогда
|
||||
Если Реквизит.Значение <> "0" Тогда
|
||||
ВидДокумента = Реквизит.Значение;
|
||||
КонецЕсли;
|
||||
ИначеЕсли Реквизит.Имя = "ДокументНомер" Тогда
|
||||
НомерДокумента = Реквизит;
|
||||
Продолжить;
|
||||
ИначеЕсли Реквизит.Имя = "ДокументДатаВыдачи" Тогда
|
||||
ДатаВыдачи = Реквизит;
|
||||
Продолжить;
|
||||
ИначеЕсли Реквизит.Имя = "ДокументКодПодразделения" Тогда
|
||||
КодПодразделения = Реквизит;
|
||||
Продолжить;
|
||||
ИначеЕсли Реквизит.Имя = "ДокументКемВыдан" Тогда
|
||||
КемВыдан = Реквизит;
|
||||
Продолжить;
|
||||
ИначеЕсли Реквизит.Имя = "ДокументСрокДействия" Тогда
|
||||
СрокДействия = Реквизит;
|
||||
Продолжить;
|
||||
ИначеЕсли Реквизит.Имя = "Гражданство" Тогда
|
||||
Гражданство = Реквизит;
|
||||
ИначеЕсли Реквизит.Имя = "БезГражданства" Тогда
|
||||
@@ -1904,19 +1938,39 @@
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ВидДокумента = "21" Тогда
|
||||
|
||||
ТекстОшибки = ОшибкиПроверкиКодаПодразделения(КодПодразделения.Значение);
|
||||
Если ЗначениеЗаполнено(ВидДокумента) И КодПодразделения <> Неопределено Тогда
|
||||
ТекстОшибки = ОшибкиПроверкиКодаПодразделения(КодПодразделения.Значение, ВидДокумента <> "10");
|
||||
Если Не ПустаяСтрока(ТекстОшибки) Тогда
|
||||
ТекстОшибки = КодПодразделения.ТекстПроверкиЗначения + " " + ТекстОшибки;
|
||||
СообщитьПользователю(Форма, ТекстОшибки, КодПодразделения.ПолеСообщения, Отказ);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ВидДокумента = "21" Тогда
|
||||
ТекстОшибки = ОшибкиПроверкиНомераПаспорта(НомерДокумента.Значение);
|
||||
Если Не ПустаяСтрока(ТекстОшибки) Тогда
|
||||
ТекстОшибки = НомерДокумента.ТекстПроверкиЗначения + " " + ТекстОшибки;
|
||||
СообщитьПользователю(Форма, ТекстОшибки, НомерДокумента.ПолеСообщения, Отказ);
|
||||
КонецЕсли;
|
||||
ИначеЕсли ЗначениеЗаполнено(ВидДокумента) Тогда
|
||||
НомерДокумента.ТекстНезаполненного = НомерДокумента.ТекстПроверкиЗначения;
|
||||
ПроверитьЗаполнениеРеквизита(Форма, НомерДокумента, Отказ, ЭтоИП, ЭтоФЛ);
|
||||
КонецЕсли;
|
||||
|
||||
Если ВидДокумента = "22" И СрокДействия <> Неопределено Тогда
|
||||
СрокДействия.ТекстНезаполненного = СрокДействия.ТекстПроверкиЗначения;
|
||||
ПроверитьЗаполнениеРеквизита(Форма, СрокДействия, Отказ, ЭтоИП, ЭтоФЛ);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ВидДокумента) Тогда
|
||||
|
||||
ДатаВыдачи.ТекстНезаполненного = ДатаВыдачи.ТекстПроверкиЗначения;
|
||||
ПроверитьЗаполнениеРеквизита(Форма, ДатаВыдачи, Отказ, ЭтоИП, ЭтоФЛ);
|
||||
|
||||
Если ВидДокумента <> "10" И КемВыдан <> Неопределено Тогда
|
||||
КемВыдан.ТекстНезаполненного = КемВыдан.ТекстПроверкиЗначения;
|
||||
ПроверитьЗаполнениеРеквизита(Форма, КемВыдан, Отказ, ЭтоИП, ЭтоФЛ);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -2091,10 +2145,14 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОшибкиПроверкиКодаПодразделения(КодПодразделения)
|
||||
Функция ОшибкиПроверкиКодаПодразделения(КодПодразделения, ПроверятьНаЗаполненность = Ложь)
|
||||
|
||||
Если ПустаяСтрока(КодПодразделения) Тогда
|
||||
Если ПроверятьНаЗаполненность Тогда
|
||||
Возврат НСтр("ru = 'Не указан код подразделения'");
|
||||
Иначе
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
СтрокаЦифр = СтрЗаменить(СокрЛП(КодПодразделения), "-", "");
|
||||
@@ -2110,6 +2168,10 @@
|
||||
Возврат НСтр("ru = 'Код подразделения не может быть нулевым.'");
|
||||
КонецЕсли;
|
||||
|
||||
Если Сред(КодПодразделения, 4, 1) <> "-" Тогда
|
||||
Возврат НСтр("ru = 'Неправильный формат кода подразделения.'");
|
||||
КонецЕсли;
|
||||
|
||||
Возврат "";
|
||||
|
||||
КонецФункции
|
||||
@@ -2136,10 +2198,6 @@
|
||||
|
||||
Функция ОшибкиПроверкиНомераПаспорта(Знач НомерПаспортаРФ)
|
||||
|
||||
Если ПустаяСтрока(НомерПаспортаРФ) Тогда
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
|
||||
СтрокаЦифр = СтрЗаменить(НомерПаспортаРФ, ",", "");
|
||||
СтрокаЦифр = СтрЗаменить(СтрокаЦифр, " ", "");
|
||||
|
||||
@@ -2594,6 +2652,7 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибки) Экспорт
|
||||
|
||||
ЗаголовокОшибки = ПараметрыОшибки.ЗаголовокОшибки;
|
||||
ЗапросHTTP = ПараметрыОшибки.ЗапросHTTP;
|
||||
ПараметрыТекстаОшибки = ПараметрыОшибки.ПараметрыТекстаОшибки;
|
||||
@@ -2610,18 +2669,33 @@
|
||||
|
||||
СтруктураЗначения = Новый Структура;
|
||||
|
||||
ТекстОшибкиИзОтвета = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(СтруктураОтвета, "title", Неопределено);
|
||||
Если ТекстОшибкиИзОтвета <> Неопределено Тогда
|
||||
Если СтрЗаканчиваетсяНа(ТекстОшибки, ".") Тогда
|
||||
ТекстОшибки = Лев(ТекстОшибки, СтрДлина(ТекстОшибки) - 1);
|
||||
КонецЕсли;
|
||||
ТекстОшибки = СтрШаблон("%1 (%2).", ТекстОшибки, ТекстОшибкиИзОтвета)
|
||||
КонецЕсли;
|
||||
|
||||
Если ОтветHTTP <> Неопределено И Строка(ОтветHTTP.КодСостояния) = СтрокаОтвета Тогда
|
||||
|
||||
ОшибкаПоКлассификатору = Новый Структура("Причина, Решение, СпособУстранения, Ссылка");
|
||||
ОшибкаПоКлассификатору.Причина = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеОшибкиHTTP(ОтветHTTP.КодСостояния), ОтветHTTP.КодСостояния);
|
||||
ОшибкаПоКлассификатору.Причина = ОписаниеОшибкиHTTP(ОтветHTTP.КодСостояния);
|
||||
|
||||
СтруктураЗначения.Вставить("СтрокаПоискаОшибки", ОтветHTTP.КодСостояния);
|
||||
СтруктураЗначения.Вставить("ОшибкаПоКлассификаторуНайдена", Ложь);
|
||||
|
||||
ОшибкаПоКлассификатору.Решение = СтроковыеФункции.ФорматированнаяСтрока(
|
||||
НСтр("ru='Повторите действие позднее или обратитесь в <a href=%1>службу поддержки ФНС России</a>.'"),
|
||||
"https://www.nalog.gov.ru/rn77/service/service_feedback/?service=101");
|
||||
|
||||
МетодикиУстранения = Новый Массив;
|
||||
МетодикиУстранения.Добавить("ПовторнаяОтправка");
|
||||
МетодикиУстранения.Добавить("НеЗапрашиватьСтатусДоверенности");
|
||||
|
||||
СпособУстранения = Новый Структура("МетодикиУстранения", МетодикиУстранения);
|
||||
ОшибкаПоКлассификатору.СпособУстранения = ОбщегоНазначения.ЗначениеВJSON(СпособУстранения);
|
||||
|
||||
Иначе
|
||||
Если ЗапросHTTP <> Неопределено Тогда
|
||||
СтрокаЗапроса = ПолучитьИдентификаторЗапроса(ЗапросHTTP);
|
||||
@@ -2646,8 +2720,7 @@
|
||||
|
||||
ОшибкаПоКлассификатору.Причина = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ОшибкаПоКлассификатору.Причина, ПараметрыТекстаОшибки);
|
||||
|
||||
ОшибкаПоКлассификатору.Вставить("ТекстОшибки",
|
||||
ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(СтруктураОтвета, "title", ТекстОшибки));
|
||||
ОшибкаПоКлассификатору.Вставить("ТекстОшибки", ТекстОшибки);
|
||||
ОшибкаПоКлассификатору.Вставить("ЗаголовокОшибки", ЗаголовокОшибки);
|
||||
СтруктураЗначения.Вставить("ОшибкаПоКлассификатору", ОшибкаПоКлассификатору);
|
||||
|
||||
@@ -2655,6 +2728,7 @@
|
||||
Если ДополнительныеФайлы = Неопределено Тогда
|
||||
ДополнительныеФайлы = Новый Массив;
|
||||
КонецЕсли;
|
||||
|
||||
ДобавитьФайлДляРасследования(ДополнительныеФайлы, ДанныеФайла, НСтр("ru='Ошибка по классификатору'"), "xml");
|
||||
ОшибкаПоКлассификатору.Вставить("ДополнительныеФайлы", ДополнительныеФайлы);
|
||||
|
||||
@@ -2664,109 +2738,29 @@
|
||||
|
||||
Функция ОписаниеОшибкиHTTP(КодСостояния)
|
||||
|
||||
Если КодСостояния < 300 Тогда
|
||||
Возврат "";
|
||||
ИначеЕсли КодСостояния = 300 Тогда
|
||||
Возврат НСтр("ru = 'Множественный выбор при отправке ответа сервера'");
|
||||
ИначеЕсли КодСостояния = 301 Тогда
|
||||
Возврат НСтр("ru = 'Ресурс перемещен'");
|
||||
ИначеЕсли КодСостояния = 302 Тогда
|
||||
Возврат НСтр("ru = 'Ресурс временно перемещен'");
|
||||
ИначеЕсли КодСостояния = 303 Тогда
|
||||
Возврат НСтр("ru = 'Ресурс перемещен на другой адрес'");
|
||||
ИначеЕсли КодСостояния = 304 Тогда
|
||||
Возврат НСтр("ru = 'Неожиданный ответ об отсутствии изменений страницы'");
|
||||
ИначеЕсли КодСостояния = 305 Тогда
|
||||
Возврат НСтр("ru = 'Для доступа к ресурсу требуется прокси'");
|
||||
ИначеЕсли КодСостояния = 306 Тогда
|
||||
Возврат НСтр("ru = 'Неиспользуемый код перенаправления запроса'");
|
||||
ИначеЕсли КодСостояния = 307 Тогда
|
||||
Возврат НСтр("ru = 'Временное перенаправление'");
|
||||
ИначеЕсли КодСостояния < 400 Тогда
|
||||
Если КодСостояния < 200 Или КодСостояния >= 300 И КодСостояния < 400 Тогда
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Ошибка по перенаправлению запроса с кодом %1'"),
|
||||
Формат(КодСостояния, "ЧДЦ=; ЧН=; ЧГ="));
|
||||
ИначеЕсли КодСостояния = 400 Тогда
|
||||
Возврат НСтр("ru = 'Неверный формат запроса'");
|
||||
ИначеЕсли КодСостояния = 401 Тогда
|
||||
Возврат НСтр("ru = 'Требуется аутентификация'");
|
||||
ИначеЕсли КодСостояния = 402 Тогда
|
||||
Возврат НСтр("ru = 'Требуется оплата'");
|
||||
ИначеЕсли КодСостояния = 403 Тогда
|
||||
Возврат НСтр("ru = 'Доступ к ресурсу запрещен'");
|
||||
ИначеЕсли КодСостояния = 404 Тогда
|
||||
Возврат НСтр("ru = 'Запрошенная страница не найдена'");
|
||||
ИначеЕсли КодСостояния = 405 Тогда
|
||||
Возврат НСтр("ru = 'Используемый метод запрещен'");
|
||||
ИначеЕсли КодСостояния = 406 Тогда
|
||||
Возврат НСтр("ru = 'Отсутствуют подходящие ответы'");
|
||||
ИначеЕсли КодСостояния = 407 Тогда
|
||||
Возврат НСтр("ru = 'Требуется аутентификация прокси'");
|
||||
ИначеЕсли КодСостояния = 408 Тогда
|
||||
Возврат НСтр("ru = 'Лимит времени сервера при ожидании запроса исчерпан'");
|
||||
ИначеЕсли КодСостояния = 409 Тогда
|
||||
Возврат НСтр("ru = 'Конфликт с текущим состоянием ресурса, требуется больше информации'");
|
||||
ИначеЕсли КодСостояния = 410 Тогда
|
||||
Возврат НСтр("ru = 'Ресурс более недоступен'");
|
||||
ИначеЕсли КодСостояния = 411 Тогда
|
||||
Возврат НСтр("ru = 'Требуется задание длины содержимого'");
|
||||
ИначеЕсли КодСостояния = 412 Тогда
|
||||
Возврат НСтр("ru = 'Ошибочные условия заголовочных полей'");
|
||||
ИначеЕсли КодСостояния = 413 Тогда
|
||||
Возврат НСтр("ru = 'Слишком большая длина запроса'");
|
||||
ИначеЕсли КодСостояния = 414 Тогда
|
||||
Возврат НСтр("ru = 'Запрошенный идентификатор слишком велик'");
|
||||
ИначеЕсли КодСостояния = 415 Тогда
|
||||
Возврат НСтр("ru = 'Неподдерживаемый тип данных запроса'");
|
||||
ИначеЕсли КодСостояния = 416 Тогда
|
||||
Возврат НСтр("ru = 'Запрошенный промежуток невыполним'");
|
||||
ИначеЕсли КодСостояния = 417 Тогда
|
||||
Возврат НСтр("ru = 'Несоответствие ожиданиям'");
|
||||
ИначеЕсли КодСостояния = 422 Тогда
|
||||
Возврат НСтр("ru = 'Необрабатываемый объект'");
|
||||
ИначеЕсли КодСостояния = 423 Тогда
|
||||
Возврат НСтр("ru = 'Заблокировано'");
|
||||
ИначеЕсли КодСостояния = 424 Тогда
|
||||
Возврат НСтр("ru = 'Сбой взаимосвязанного вызова'");
|
||||
ИначеЕсли КодСостояния = 449 Тогда
|
||||
Возврат НСтр("ru = 'Возврат запроса после необходимого действия'");
|
||||
ИначеЕсли КодСостояния < 500 Тогда
|
||||
НСтр("ru = 'Неподдерживаемый ответ сервиса Распределенного реестра ФНС России (%1).'"), Формат(
|
||||
КодСостояния, "ЧДЦ=; ЧН=; ЧГ="));
|
||||
ИначеЕсли КодСостояния >= 400 И КодСостояния < 500 Тогда
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Ошибка клиента с кодом %1'"),
|
||||
Формат(КодСостояния, "ЧДЦ=; ЧН=; ЧГ="));
|
||||
ИначеЕсли КодСостояния = 500 Тогда
|
||||
Возврат НСтр("ru = 'Внутренняя ошибка сервера'");
|
||||
ИначеЕсли КодСостояния = 501 Тогда
|
||||
Возврат НСтр("ru = 'Процесс для данного запроса не поддерживается сервером'");
|
||||
ИначеЕсли КодСостояния = 502 Тогда
|
||||
Возврат НСтр("ru = 'Gateway-сервер получил ошибочный ответ'");
|
||||
ИначеЕсли КодСостояния = 503 Тогда
|
||||
Возврат НСтр("ru = 'Сервер распределенного реестра временно недоступен'");
|
||||
ИначеЕсли КодСостояния = 504 Тогда
|
||||
Возврат НСтр("ru = 'Превышено время ожидание ответа на запрос Gateway-сервера'");
|
||||
ИначеЕсли КодСостояния = 505 Тогда
|
||||
Возврат НСтр("ru = 'Версия HTTP не поддерживается сервером'");
|
||||
ИначеЕсли КодСостояния = 506 Тогда
|
||||
Возврат НСтр("ru = 'Вариантный тип содержит также вариант'");
|
||||
ИначеЕсли КодСостояния = 507 Тогда
|
||||
Возврат НСтр("ru = 'Переполнение хранилища'");
|
||||
ИначеЕсли КодСостояния = 510 Тогда
|
||||
Возврат НСтр("ru = 'Отсутствует поддержка расширений'");
|
||||
ИначеЕсли КодСостояния < 600 Тогда
|
||||
НСтр("ru = 'Сервис Распределенного реестра ФНС России не смог выполнить запрос (%1).'"), Формат(
|
||||
КодСостояния, "ЧДЦ=; ЧН=; ЧГ="));
|
||||
ИначеЕсли КодСостояния >= 300 Тогда
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Ошибка сервера с кодом %1'"),
|
||||
Формат(КодСостояния, "ЧДЦ=; ЧН=; ЧГ="));
|
||||
ИначеЕсли КодСостояния = 999 Тогда
|
||||
Возврат НСтр("ru = 'Разрушительный сбой сервера'");
|
||||
НСтр(
|
||||
"ru = 'Сервис Распределенного реестра ФНС России перегружен, недоступен или находится на обслуживании (%1).'"),
|
||||
Формат(
|
||||
КодСостояния, "ЧДЦ=; ЧН=; ЧГ="));
|
||||
Иначе
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Ошибка с кодом %1'"),
|
||||
Формат(КодСостояния, "ЧДЦ=; ЧН=; ЧГ="));
|
||||
НСтр("ru = 'Не удалось получить ответ сервиса Распределенного реестра ФНС России (%1).'"), Формат(
|
||||
КодСостояния, "ЧДЦ=; ЧН=; ЧГ="));
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Устанавливает соединение с сервером Интернета по протоколу http(s).
|
||||
// Устанавливает соединение с сервером Интернета по протоколу http(s).
|
||||
//
|
||||
// Параметры:
|
||||
// URL - Строка - url сервера в формате [Протокол://]<Сервер>/.
|
||||
@@ -2808,20 +2802,8 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура СброситьДанныеАутентификацииНаПорталеПоддержки()
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей") Тогда
|
||||
МодульИнтернетПоддержкаПользователей = ОбщегоНазначения.ОбщийМодуль("ИнтернетПоддержкаПользователей");
|
||||
Если МодульИнтернетПоддержкаПользователей.ДоступноПодключениеИнтернетПоддержки() Тогда
|
||||
МодульИнтернетПоддержкаПользователей.СохранитьДанныеАутентификации(Неопределено);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьФайлДляРасследования(Файлы, ДанныеФайла, ТипФайла, Расширение = "txt")
|
||||
|
||||
СведенияОФайле = Новый Структура;
|
||||
Если ТипЗнч(ДанныеФайла) = Тип("Строка") Тогда
|
||||
СведенияОФайле.Вставить("Данные", Новый ДвоичныеДанные(ДанныеФайла));
|
||||
@@ -2833,9 +2815,11 @@
|
||||
СведенияОФайле.Вставить("Имя", ТипФайла + "." + Расширение);
|
||||
СведенияОФайле.Вставить("ТипФайла", ТипФайла);
|
||||
Файлы.Добавить(СведенияОФайле);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьИдентификаторЗапроса(ЗапросHTTP)
|
||||
|
||||
Результат = "";
|
||||
Словарь = СтрРазделить("poar-webapp/integration/poa/generate-number/transactions/status/poaopen/public/poazip/zip/number/token", "/", Ложь);
|
||||
Синонимы = Новый Соответствие;
|
||||
@@ -2853,9 +2837,11 @@
|
||||
КонецЦикла;
|
||||
Синоним = Синонимы[Результат];
|
||||
Возврат ?(Синоним = Неопределено, Результат, Синоним);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьИдентификаторОтвета(ОтветHTTP, СтруктураОтвета)
|
||||
|
||||
Если СтруктураОтвета = Неопределено Или ОтветHTTP.КодСостояния = 500 Тогда
|
||||
Возврат Строка(ОтветHTTP.КодСостояния);
|
||||
ИначеЕсли СтруктураОтвета.Свойство("error") Тогда
|
||||
@@ -2869,6 +2855,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
Возврат КодОшибки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПараметрыФайловДляРасследования()
|
||||
@@ -3311,11 +3298,6 @@
|
||||
Результат.ТекстОтвета = ОтветHTTP.ПолучитьТелоКакСтроку();
|
||||
Результат.ТокенДоступа = ?(ТипЗнч(СтруктураОтвета) = Тип("Структура") И СтруктураОтвета.Свойство("access_token"),
|
||||
СтруктураОтвета.access_token, "");
|
||||
|
||||
КодСостоянияПриНеверномЛогинеИлиПароле = 403;
|
||||
Если ОтветHTTP.КодСостояния = КодСостоянияПриНеверномЛогинеИлиПароле И СтруктураОтвета.Свойство("message") Тогда
|
||||
СброситьДанныеАутентификацииНаПорталеПоддержки();
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
ПредставлениеОшибки = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
ПараметрыФайловДляРасследования = ПараметрыФайловДляРасследования();
|
||||
@@ -4119,12 +4101,11 @@
|
||||
Результат.Вставить("Ошибка", "");
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(ТокенДоступа) Тогда
|
||||
|
||||
РезультатАвторизации = АвторизоватьсяНаСервереМЧДРР(ЗаголовокОшибки);
|
||||
|
||||
Если РезультатАвторизации.Ошибка <> Неопределено Тогда
|
||||
Результат.Ошибка = РезультатАвторизации.Ошибка;
|
||||
КонецЕсли;
|
||||
|
||||
Если Результат.Ошибка <> Неопределено Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
+10
-10
@@ -61,21 +61,22 @@
|
||||
// Реквизиты организации.
|
||||
//
|
||||
// Параметры:
|
||||
// СторонаМЧД - ПеречислениеСсылка.ТипыУчастниковМЧД, Неопределено
|
||||
// Назначение - см. НазначениеДоверенностиДляПроверкиРеквизитов
|
||||
// ДляЗаполнения - Булево - если Истина, полный список реквизитов
|
||||
// ВидОрганизации - Неопределено, Строка - "ИндивидуальныйПредприниматель", "ИностраннаяОрганизация", "Филиал"
|
||||
// Назначение - см. НазначениеДоверенности
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// СписокЗначений
|
||||
//
|
||||
Функция РеквизитыОрганизацииСписок(СторонаМЧД, ДляЗаполнения = Истина, ВидОрганизации = Неопределено, Назначение = Неопределено) Экспорт
|
||||
Функция РеквизитыОрганизацииСписок(Назначение = Неопределено, ДляЗаполнения = Истина, ВидОрганизации = Неопределено) Экспорт
|
||||
|
||||
Если Назначение = Неопределено Тогда
|
||||
Назначение = НазначениеДоверенностиДляПроверкиРеквизитов();
|
||||
КонецЕсли;
|
||||
ЭтоДоверитель = Назначение.ТипУчастника = ПредопределенноеЗначение("Перечисление.ТипыУчастниковМЧД.Доверитель");
|
||||
|
||||
// Пометка списка Истина означает, что поле необязательное
|
||||
|
||||
Реквизиты = Новый СписокЗначений;
|
||||
Реквизиты.Добавить("ЭтоИндивидуальныйПредприниматель", НСтр("ru = 'Индивидуальный предприниматель'"), Истина);
|
||||
Реквизиты.Добавить("ЭтоФизическоеЛицо", НСтр("ru = 'Физическое лицо'"), Истина);
|
||||
@@ -84,15 +85,14 @@
|
||||
Реквизиты.Добавить("ЭтоФилиал", НСтр("ru = 'Филиал'"), Истина);
|
||||
Реквизиты.Добавить("НаименованиеПолное", НСтр("ru = 'Наименование (полное)'"));
|
||||
Реквизиты.Добавить("НаименованиеСокращенное", НСтр("ru = 'Наименование (сокращенное)'"), Истина);
|
||||
Реквизиты.Добавить("ИНН", НСтр("ru = 'ИНН'"));
|
||||
|
||||
Реквизиты.Добавить("ИНН", НСтр("ru = 'ИНН'"), ВидОрганизации = "ИностраннаяОрганизация" И ЭтоДоверитель);
|
||||
Реквизиты.Добавить("ЭлектроннаяПочта", НСтр("ru = 'Электронная почта'"), Истина);
|
||||
Реквизиты.Добавить("ЭлектроннаяПочтаЗначение", НСтр("ru = 'Электронная почта'"), Истина);
|
||||
Реквизиты.Добавить("Телефон", НСтр("ru = 'Телефон'"), Истина);
|
||||
Реквизиты.Добавить("ТелефонЗначение", НСтр("ru = 'Телефон'"), Истина);
|
||||
|
||||
Если ДляЗаполнения Или ВидОрганизации <> "ИндивидуальныйПредприниматель" Тогда
|
||||
Реквизиты.Добавить("КПП", НСтр("ru = 'КПП'"));
|
||||
Реквизиты.Добавить("КПП", НСтр("ru = 'КПП'"), ВидОрганизации = "ИностраннаяОрганизация" И ЭтоДоверитель);
|
||||
КонецЕсли;
|
||||
|
||||
Если ДляЗаполнения Или ВидОрганизации <> "ИностраннаяОрганизация" Тогда
|
||||
@@ -100,15 +100,15 @@
|
||||
КонецЕсли;
|
||||
|
||||
Если ДляЗаполнения Или ВидОрганизации = "ИностраннаяОрганизация" Тогда
|
||||
Реквизиты.Добавить("НомерЗаписиОбАккредитации", НСтр("ru = 'Номер записи об аккредитации'"));
|
||||
Реквизиты.Добавить("НомерЗаписиОбАккредитации", НСтр("ru = 'Номер записи об аккредитации'"), ЭтоДоверитель);
|
||||
Реквизиты.Добавить("СтранаРегистрации", НСтр("ru = 'Страна регистрации (инкорпорации)'"), Не ЭтоДоверитель);
|
||||
Реквизиты.Добавить("СтранаРегистрацииКод", НСтр("ru = 'Код страны регистрации (инкорпорации)'"), Не ЭтоДоверитель);
|
||||
Реквизиты.Добавить("РегистрационныйНомерВСтранеРегистрации", НСтр("ru = 'Регистрационный номер в стране регистрации (инкорпорации)'"), Не ЭтоДоверитель);
|
||||
Реквизиты.Добавить("НаименованиеРегистрирующегоОргана", НСтр("ru = 'Наименование регистрирующего органа'"), Истина);
|
||||
Реквизиты.Добавить("КодНалогоплательщикаВСтранеРегистрации", НСтр("ru = 'Код налогоплательщика в стране регистрации (инкорпорации) или аналог'"));
|
||||
Реквизиты.Добавить("КодНалогоплательщикаВСтранеРегистрации", НСтр("ru = 'Код налогоплательщика в стране регистрации (инкорпорации) или аналог'"), Истина);
|
||||
Реквизиты.Добавить("ФактическийАдрес", НСтр("ru = 'Фактический адрес местонахождения'"));
|
||||
Реквизиты.Добавить("ФактическийАдресЗначение", НСтр("ru = 'Фактический адрес местонахождения'"), Истина);
|
||||
Реквизиты.Добавить("ЮридическийАдресВСтранеРегистрации", НСтр("ru = 'Адрес юридического лица на территории государства, в котором оно Зарегистрирована'"), Не ЭтоДоверитель);
|
||||
Реквизиты.Добавить("ЮридическийАдресВСтранеРегистрации", НСтр("ru = 'Адрес юридического лица на территории государства, в котором оно зарегистрировано'"), Не ЭтоДоверитель);
|
||||
Реквизиты.Добавить("ЮридическийАдресВСтранеРегистрацииЗначение", НСтр("ru = 'Адрес юридического лица на территории государства'"), Истина);
|
||||
КонецЕсли;
|
||||
|
||||
@@ -158,9 +158,9 @@
|
||||
// Реквизиты физического лица.
|
||||
//
|
||||
// Параметры:
|
||||
// Назначение - см. НазначениеДоверенностиДляПроверкиРеквизитов
|
||||
// ДляЗаполнения - Булево - если Истина, полный список реквизитов
|
||||
// ВидФизическогоЛица - Неопределено, Строка - "ИндивидуальныйПредприниматель", "ДолжностноеЛицо", "ФизическоеЛицо"
|
||||
// Назначение - см. НазначениеДоверенности
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// СписокЗначений
|
||||
|
||||
@@ -214,6 +214,7 @@
|
||||
|
||||
Представления = ТекущийОбъект.Представления; // ТабличнаяЧасть
|
||||
Отбор = Новый Структура();
|
||||
Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда
|
||||
Отбор.Вставить("КодЯзыка", ТекущийЯзык().КодЯзыка);
|
||||
НайденныеСтроки = Представления.НайтиСтроки(Отбор);
|
||||
|
||||
@@ -242,16 +243,18 @@
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
ЗаполнитьМультиязычныеРеквизитыТабличнойЧастиПредставления(ТекущийОбъект, Реквизиты);
|
||||
|
||||
Отбор.КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
|
||||
Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка());
|
||||
НайденныеСтроки = Представления.НайтиСтроки(Отбор);
|
||||
Если НайденныеСтроки.Количество() > 0 Тогда
|
||||
Для каждого ИмяРеквизита Из Реквизиты Цикл
|
||||
Если ИменаМультиязычныхРеквизитовВШапке[ИмяРеквизита] = Неопределено
|
||||
Или (ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка()
|
||||
И ПустаяСтрока(СуффиксТекущегоЯзыка)) Тогда
|
||||
И ПустаяСтрока(СуффиксТекущегоЯзыка))
|
||||
И ТекущийОбъект[ИмяРеквизита] <> Null Тогда
|
||||
ТекущийОбъект[ИмяРеквизита] = НайденныеСтроки[0][ИмяРеквизита];
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
// См. ПодключаемыеКомандыПереопределяемый.ПриОпределенииКомандПодключенныхКОбъекту.
|
||||
Процедура ПриОпределенииКомандПодключенныхКОбъекту(НастройкиФормы, Источники, ПодключенныеОтчетыИОбработки, Команды) Экспорт
|
||||
|
||||
Если ПравоДоступа("Редактирование", Метаданные.РегистрыСведений.НапоминанияПользователя) Тогда
|
||||
Команда = Команды.Добавить();
|
||||
Команда.Вид = "Органайзер";
|
||||
Команда.Представление = НСтр("ru = 'Напомнить...'");
|
||||
@@ -89,6 +90,7 @@
|
||||
Команда.Порядок = 50;
|
||||
Команда.Обработчик = "НапоминанияПользователяСлужебныйКлиент.Напомнить";
|
||||
Команда.МножественныйВыбор = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -4400,21 +4400,6 @@
|
||||
Обработчик.РежимВыполнения = "Оперативно";
|
||||
Обработчик.ОбщиеДанные = Истина;
|
||||
|
||||
Обработчик = Обработчики.Добавить();
|
||||
Обработчик.Версия = "3.0.1.91";
|
||||
Обработчик.Комментарий =
|
||||
НСтр("ru = 'Перенос настроек подключения обменов данными в новый регистр ""Настройки транспорта обмена данными"".'");
|
||||
Обработчик.Идентификатор = Новый УникальныйИдентификатор("8d5f1092-f569-4c03-aca9-65625809b853");
|
||||
Обработчик.Процедура = "РегистрыСведений.НастройкиТранспортаОбменаДанными.ОбработатьДанныеДляПереходаНаНовуюВерсию";
|
||||
Обработчик.РежимВыполнения = "Отложенно";
|
||||
Обработчик.ЧитаемыеОбъекты = "РегистрСведений.УдалитьНастройкиТранспортаОбмена";
|
||||
Обработчик.ИзменяемыеОбъекты = "РегистрСведений.УдалитьНастройкиТранспортаОбмена,РегистрСведений.НастройкиТранспортаОбменаДанными";
|
||||
Обработчик.ОчередьОтложеннойОбработки = 1;
|
||||
Обработчик.ЗапускатьИВПодчиненномУзлеРИБСФильтрами = Истина;
|
||||
Обработчик.ПроцедураЗаполненияДанныхОбновления = "РегистрыСведений.НастройкиТранспортаОбменаДанными.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
|
||||
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
|
||||
Обработчик.БлокируемыеОбъекты = "РегистрСведений.УдалитьНастройкиТранспортаОбмена,РегистрСведений.НастройкиТранспортаОбменаДанными";
|
||||
|
||||
Обработчик = Обработчики.Добавить();
|
||||
Обработчик.Версия = "3.0.1.91";
|
||||
Обработчик.Комментарий =
|
||||
|
||||
@@ -222,7 +222,9 @@
|
||||
КонецЕсли;
|
||||
|
||||
Форма.ТолькоПросмотр = Истина;
|
||||
Если Форма.Команды.Найти("ОбновлениеВерсииИБ_ОбъектЗаблокирован") = Неопределено Тогда
|
||||
Форма.Команды.Добавить("ОбновлениеВерсииИБ_ОбъектЗаблокирован");
|
||||
КонецЕсли;
|
||||
ОбщегоНазначения.СообщитьПользователю(Результат.ТекстИсключения);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
|
||||
|
||||
Описание.Имя = "СтандартныеПодсистемы";
|
||||
Описание.Версия = "3.1.10.174";
|
||||
Описание.Версия = "3.1.10.206";
|
||||
Описание.ИдентификаторИнтернетПоддержки = "SSL";
|
||||
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
|
||||
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
|
||||
|
||||
@@ -945,7 +945,23 @@
|
||||
Подменю = СведенияОПодменю.Подменю; // ГруппаФормы
|
||||
|
||||
Если Не ЭтоКоманднаяПанель Тогда
|
||||
Если Не (СведенияОПодменю.КоличествоКоманд = 1 И КомандаФормы <> Неопределено) Тогда
|
||||
Если СведенияОПодменю.КоличествоКоманд = 1 И КомандаФормы <> Неопределено Тогда
|
||||
// Превращение подменю в кнопку когда выведена 1 команда с коротким заголовком.
|
||||
Если Не ЗначениеЗаполнено(КомандаФормы.Картинка) И Подменю.Вид = ВидГруппыФормы.Подменю Тогда
|
||||
КомандаФормы.Картинка = Подменю.Картинка;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(КомандаФормы.Картинка) Тогда
|
||||
КомандаФормы.Картинка = СведенияОПодменю.КартинкаПодменю;
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрДлина(КомандаФормы.Заголовок) <= 35 И Подменю.Отображение <> ОтображениеКнопки.Картинка Тогда
|
||||
КомандаФормы.Отображение = ОтображениеКнопки.КартинкаИТекст;
|
||||
Иначе
|
||||
КомандаФормы.Отображение = ОтображениеКнопки.Картинка;
|
||||
КонецЕсли;
|
||||
КомандаФормы.Подсказка = КомандаФормы.Заголовок;
|
||||
Иначе
|
||||
// Добавление кнопок-заглушек, которые показываются когда в подменю скрыты все команды.
|
||||
ИмяКомандыЗаглушки = Подменю.Имя + "Заглушка";
|
||||
Если Элементы.Найти(ИмяКомандыЗаглушки) = Неопределено Тогда
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (c) 2024, ООО 1С-Софт
|
||||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||
// Текст лицензии доступен по ссылке:
|
||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ПродолжитьВыполнениеПодключаемойКомандыПослеЗаписиВФорме() Экспорт
|
||||
|
||||
ПодключаемыеКомандыКлиент.ПослеЗаписиПродолжение();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e5687b69-4d9a-4d21-a506-294941f18056">
|
||||
<name>ПодключаемыеКомандыГлобальный</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Подключаемые команды глобальный</value>
|
||||
</synonym>
|
||||
<global>true</global>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
||||
@@ -93,8 +93,12 @@
|
||||
Контекст = ПараметрыЗаписи.ПараметрыВыполненияПодключаемойКоманды;
|
||||
Контекст.Вставить("Форма", Форма);
|
||||
Контекст.Вставить("Источник", Объект);
|
||||
ПродолжитьВыполнениеКоманды(Контекст);
|
||||
Контекст.Форма.ПараметрыПодключаемыхКоманд.Удалить("КомандаВыполняется")
|
||||
|
||||
Контекст.Форма.ПараметрыПодключаемыхКоманд.Удалить("КомандаВыполняется");
|
||||
|
||||
ИмяПараметра = "СтандартныеПодсистемы.ПодключаемыеКоманды.ПараметрыВыполненияПодключаемойКоманды";
|
||||
ПараметрыПриложения[ИмяПараметра] = Контекст;
|
||||
ПодключитьОбработчикОжидания("ПродолжитьВыполнениеПодключаемойКомандыПослеЗаписиВФорме", 0.1, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -477,4 +481,16 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПослеЗаписиПродолжение() Экспорт
|
||||
|
||||
ИмяПараметра = "СтандартныеПодсистемы.ПодключаемыеКоманды.ПараметрыВыполненияПодключаемойКоманды";
|
||||
Контекст = ПараметрыПриложения[ИмяПараметра];
|
||||
ПараметрыПриложения[ИмяПараметра] = Неопределено;
|
||||
|
||||
Если Контекст <> Неопределено Тогда
|
||||
ПродолжитьВыполнениеКоманды(Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@@ -1378,7 +1378,7 @@
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
Функция ИмяСобытияИзменениеИзменениеУчастниковГруппПользователейДляЖурналаРегистрации() Экспорт
|
||||
Функция ИмяСобытияИзменениеУчастниковГруппПользователейДляЖурналаРегистрации() Экспорт
|
||||
|
||||
Возврат НСтр("ru = 'Пользователи.Изменение участников групп пользователей'",
|
||||
ОбщегоНазначения.КодОсновногоЯзыка());
|
||||
@@ -1388,13 +1388,60 @@
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
Функция ИмяСобытияИзменениеИзменениеУчастниковГруппВнешнихПользователейДляЖурналаРегистрации() Экспорт
|
||||
Функция ИмяСобытияИзменениеУчастниковГруппВнешнихПользователейДляЖурналаРегистрации() Экспорт
|
||||
|
||||
Возврат НСтр("ru = 'Пользователи.Изменение участников групп внешних пользователей'",
|
||||
ОбщегоНазначения.КодОсновногоЯзыка());
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Для записи в журнал регистрации.
|
||||
//
|
||||
// Параметры:
|
||||
// Ссылка - Null - возвращается Null.
|
||||
// - Неопределено - возвращается Неопределено.
|
||||
// - ЛюбаяСсылка - возвращается ЗначениеВСтрокуВнутр(Ссылка).
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка, Null, Неопределено
|
||||
//
|
||||
Функция СериализованнаяСсылка(Ссылка) Экспорт
|
||||
|
||||
Если Ссылка = Null Или Ссылка = Неопределено Тогда
|
||||
Возврат Ссылка;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЗначениеВСтрокуВнутр(Ссылка);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Для записи в журнал регистрации.
|
||||
//
|
||||
// Параметры:
|
||||
// Ссылка - Null - возвращается "".
|
||||
// - Неопределено - возвращается "".
|
||||
// - ЛюбаяСсылка - возвращается Строка(Ссылка).
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
Функция ПредставлениеСсылки(Ссылка) Экспорт
|
||||
|
||||
Если Ссылка = Null Или Ссылка = Неопределено Тогда
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Строка(Ссылка);
|
||||
|
||||
Если Не ЗначениеЗаполнено(Результат) Тогда
|
||||
Результат = "<" + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Пустая ссылка %1'", ОбщегоНазначения.КодОсновногоЯзыка()), ТипЗнч(Ссылка)) + ">";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Универсальные процедуры и функции.
|
||||
|
||||
@@ -4937,14 +4984,8 @@
|
||||
// группами пользователей для которых есть изменения.
|
||||
// * Значение - Неопределено
|
||||
//
|
||||
// ДляРегистрации - Неопределено - регистрация не требуется.
|
||||
// - ТаблицаЗначений:
|
||||
// * ГруппаПользователей - СправочникСсылка.ГруппыПользователей
|
||||
// - СправочникСсылка.ГруппыВнешнихПользователей
|
||||
// * Пользователь - СправочникСсылка.Пользователи
|
||||
// - СправочникСсылка.ВнешниеПользователи
|
||||
// * Используется - Булево
|
||||
// * ВидИзменения - Строка - одна из строк "Добавлен", "Удален", "ИспользованиеИзменено".
|
||||
// ДляРегистрации - см. НовоеИзменениеСоставовГруппДляРегистрации
|
||||
// - Неопределено - регистрация не требуется.
|
||||
//
|
||||
Функция НовыеИзмененияСоставовГрупп() Экспорт
|
||||
|
||||
@@ -4954,20 +4995,38 @@
|
||||
Результат.Вставить("ДляРегистрации", Неопределено);
|
||||
|
||||
Если ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа() Тогда
|
||||
Измерения = Метаданные.РегистрыСведений.СоставыГруппПользователей.Измерения;
|
||||
ДляРегистрации = Новый ТаблицаЗначений;
|
||||
ДляРегистрации.Колонки.Добавить("ГруппаПользователей", Измерения.ГруппаПользователей.Тип);
|
||||
ДляРегистрации.Колонки.Добавить("Пользователь", Измерения.Пользователь.Тип);
|
||||
ДляРегистрации.Колонки.Добавить("Используется", Новый ОписаниеТипов("Булево"));
|
||||
ДляРегистрации.Колонки.Добавить("ВидИзменения", Новый ОписаниеТипов("Строка"));
|
||||
ДляРегистрации.Индексы.Добавить("Пользователь, ГруппаПользователей");
|
||||
Результат.ДляРегистрации = ДляРегистрации;
|
||||
Результат.ДляРегистрации = НовоеИзменениеСоставовГруппДляРегистрации();
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращаемое значение:
|
||||
// ТаблицаЗначений:
|
||||
// * ГруппаПользователей - СправочникСсылка.ГруппыПользователей
|
||||
// - СправочникСсылка.ГруппыВнешнихПользователей
|
||||
// * Пользователь - СправочникСсылка.Пользователи
|
||||
// - СправочникСсылка.ВнешниеПользователи
|
||||
// * Используется - Булево
|
||||
// * ВидИзменения - Строка - одна из строк "Добавлено", "Удалено", "Изменено".
|
||||
//
|
||||
Функция НовоеИзменениеСоставовГруппДляРегистрации() Экспорт
|
||||
|
||||
Измерения = Метаданные.РегистрыСведений.СоставыГруппПользователей.Измерения;
|
||||
|
||||
Результат = Новый ТаблицаЗначений;
|
||||
Результат.Колонки.Добавить("ГруппаПользователей", Измерения.ГруппаПользователей.Тип);
|
||||
Результат.Колонки.Добавить("Пользователь", Измерения.Пользователь.Тип);
|
||||
Результат.Колонки.Добавить("Используется", Новый ОписаниеТипов("Булево"));
|
||||
Результат.Колонки.Добавить("ВидИзменения", Новый ОписаниеТипов("Строка"));
|
||||
|
||||
Результат.Индексы.Добавить("Пользователь, ГруппаПользователей");
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Обновляет родителей группы пользователей с учетом иерархии
|
||||
// в регистре сведений "Иерархия групп пользователей",
|
||||
// а также групп пользователей в иерархии указанной группы.
|
||||
@@ -5259,6 +5318,7 @@
|
||||
|
||||
Если Не РезультатЗапроса.Пустой() Тогда
|
||||
НаборЗаписей = РегистрыСведений.СоставыГруппПользователей.СоздатьНаборЗаписей();
|
||||
НаборЗаписей.ДополнительныеСвойства.Вставить("ЭтоСтандартноеОбновлениеРегистра");
|
||||
Запись = НаборЗаписей.Добавить();
|
||||
Выборка = РезультатЗапроса.Выбрать();
|
||||
|
||||
@@ -5516,6 +5576,7 @@
|
||||
|
||||
Если Не РезультатыЗапроса[0].Пустой() Тогда
|
||||
НаборЗаписей = РегистрыСведений.СоставыГруппПользователей.СоздатьНаборЗаписей();
|
||||
НаборЗаписей.ДополнительныеСвойства.Вставить("ЭтоСтандартноеОбновлениеРегистра");
|
||||
Выборка = РезультатыЗапроса[0].Выбрать();
|
||||
|
||||
Пока Выборка.Следующий() Цикл
|
||||
@@ -5533,6 +5594,7 @@
|
||||
|
||||
Если Не РезультатыЗапроса[1].Пустой() Тогда
|
||||
НаборЗаписей = РегистрыСведений.СоставыГруппПользователей.СоздатьНаборЗаписей();
|
||||
НаборЗаписей.ДополнительныеСвойства.Вставить("ЭтоСтандартноеОбновлениеРегистра");
|
||||
Запись = НаборЗаписей.Добавить();
|
||||
Выборка = РезультатыЗапроса[1].Выбрать();
|
||||
|
||||
@@ -5652,6 +5714,7 @@
|
||||
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Пользователь", "Пользователь");
|
||||
|
||||
НаборИзОднойЗаписи = РегистрыСведений.СоставыГруппПользователей.СоздатьНаборЗаписей();
|
||||
НаборИзОднойЗаписи.ДополнительныеСвойства.Вставить("ЭтоСтандартноеОбновлениеРегистра");
|
||||
Запись = НаборИзОднойЗаписи.Добавить();
|
||||
|
||||
УчастникиИзменений = ИзмененияСоставов.УчастникиИзменений;
|
||||
@@ -5730,7 +5793,14 @@
|
||||
КонецЕсли;
|
||||
|
||||
ЕстьИзменения = Истина;
|
||||
ЗарегистрироватьИзмененияСоставовГрупп(ИзмененияСоставов);
|
||||
|
||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
ЗарегистрироватьИзмененияСоставовГрупп(ИзмененияСоставов.ДляРегистрации);
|
||||
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||
|
||||
УчастникиИзменений = Новый Массив;
|
||||
Для Каждого КлючИЗначение Из ИзмененияСоставов.УчастникиИзменений Цикл
|
||||
@@ -5779,25 +5849,29 @@
|
||||
КонецЕсли;
|
||||
|
||||
Если Удален Тогда
|
||||
Строка.ВидИзменения = "Удален";
|
||||
Строка.ВидИзменения = "Удалено";
|
||||
Строка.Используется = Ложь;
|
||||
|
||||
ИначеЕсли Выборка.ИспользуетсяБыло = Null Тогда
|
||||
Строка.ВидИзменения = "Добавлен";
|
||||
Строка.ВидИзменения = "Добавлено";
|
||||
Строка.Используется = Выборка.Используется;
|
||||
Иначе
|
||||
Строка.ВидИзменения = "ИспользованиеИзменено";
|
||||
Строка.ВидИзменения = "Изменено";
|
||||
Строка.Используется = Выборка.Используется;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗарегистрироватьИзмененияСоставовГрупп(ИзмененияСоставов)
|
||||
// Параметры:
|
||||
// ДляРегистрации - см. НовоеИзменениеСоставовГруппДляРегистрации
|
||||
//
|
||||
Процедура ЗарегистрироватьИзмененияСоставовГрупп(ДанныеДляРегистрации) Экспорт
|
||||
|
||||
ДанныеДляРегистрации = ИзмененияСоставов.ДляРегистрации;
|
||||
Если Не ЗначениеЗаполнено(ДанныеДляРегистрации) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
ЭтоВнешниеПользователи = ТипЗнч(ДанныеДляРегистрации[0].Пользователь)
|
||||
= Тип("СправочникСсылка.ВнешниеПользователи");
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.УстановитьПараметр("ИзмененияСоставов", ДанныеДляРегистрации);
|
||||
@@ -5849,10 +5923,22 @@
|
||||
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнешниеПользователи КАК ВнешниеПользователи
|
||||
| ПО (ВнешниеПользователи.Ссылка = ИзмененияСоставов.Пользователь)";
|
||||
|
||||
ПодсистемаУправлениеДоступомСуществует = ОбщегоНазначения.ПодсистемаСуществует(
|
||||
"СтандартныеПодсистемы.УправлениеДоступом");
|
||||
|
||||
Если ПодсистемаУправлениеДоступомСуществует Тогда
|
||||
МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный");
|
||||
Запрос.УстановитьПараметр("ГруппаВсеПользователи", ?(ЭтоВнешниеПользователи,
|
||||
ВнешниеПользователи.ГруппаВсеВнешниеПользователи(), Пользователи.ГруппаВсеПользователи()));
|
||||
Запрос.Текст = Запрос.Текст
|
||||
+ ОбщегоНазначения.РазделительПакетаЗапросов()
|
||||
+ МодульУправлениеДоступомСлужебный.ТекстЗапросаГруппДоступаПриИзмененииУчастниковГруппПользователей();
|
||||
КонецЕсли;
|
||||
|
||||
РезультатыЗапроса = Запрос.ВыполнитьПакет();
|
||||
|
||||
Данные = Новый Структура;
|
||||
Данные.Вставить("ВерсияСтруктурыДанных", 1);
|
||||
Данные.Вставить("ВерсияСтруктурыДанных", 2);
|
||||
Данные.Вставить("ИзмененияСоставов", Новый Массив);
|
||||
Данные.Вставить("ПредставлениеГрупп", Новый Массив);
|
||||
Данные.Вставить("ПредставлениеПользователей", Новый Массив);
|
||||
@@ -5883,7 +5969,7 @@
|
||||
Свойства.Вставить("ИдентификаторГруппы",
|
||||
НРег(Выборка.ГруппаПользователей.УникальныйИдентификатор()));
|
||||
Свойства.Вставить("ПредставлениеГруппы", Выборка.ПредставлениеГруппы);
|
||||
Свойства.Вставить("СсылкаГруппы", ЗначениеВСтрокуВнутр(Выборка.ГруппаПользователей));
|
||||
Свойства.Вставить("СсылкаГруппы", СериализованнаяСсылка(Выборка.ГруппаПользователей));
|
||||
Данные.ПредставлениеГрупп.Добавить(Свойства);
|
||||
КонецЦикла;
|
||||
|
||||
@@ -5893,14 +5979,40 @@
|
||||
Свойства.Вставить("ИдентификаторПользователя",
|
||||
НРег(Выборка.Пользователь.УникальныйИдентификатор()));
|
||||
Свойства.Вставить("ПредставлениеПользователя", Выборка.ПредставлениеПользователя);
|
||||
Свойства.Вставить("СсылкаПользователя", ЗначениеВСтрокуВнутр(Выборка.Пользователь));
|
||||
Свойства.Вставить("СсылкаПользователя", СериализованнаяСсылка(Выборка.Пользователь));
|
||||
Данные.ПредставлениеПользователей.Добавить(Свойства);
|
||||
КонецЦикла;
|
||||
|
||||
Если ТипЗнч(ДанныеДляРегистрации[0].Пользователь) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда
|
||||
ИмяСобытия = ИмяСобытияИзменениеИзменениеУчастниковГруппВнешнихПользователейДляЖурналаРегистрации();
|
||||
Если ПодсистемаУправлениеДоступомСуществует Тогда
|
||||
Данные.Вставить("УчастникиГруппДоступа", Новый Массив);
|
||||
Данные.Вставить("ПредставлениеГруппДоступа", Новый Массив);
|
||||
|
||||
Выборка = РезультатыЗапроса[5].Выбрать();
|
||||
Пока Выборка.Следующий() Цикл
|
||||
Свойства = Новый Структура;
|
||||
Свойства.Вставить("ГруппаДоступа", СериализованнаяСсылка(Выборка.ГруппаДоступа));
|
||||
Свойства.Вставить("Участник", СериализованнаяСсылка(Выборка.Участник));
|
||||
Свойства.Вставить("СрокДействия", Выборка.СрокДействия);
|
||||
Данные.УчастникиГруппДоступа.Добавить(Свойства);
|
||||
КонецЦикла;
|
||||
|
||||
Выборка = РезультатыЗапроса[6].Выбрать();
|
||||
Пока Выборка.Следующий() Цикл
|
||||
Свойства = Новый Структура;
|
||||
Свойства.Вставить("ГруппаДоступа", СериализованнаяСсылка(Выборка.ГруппаДоступа));
|
||||
Свойства.Вставить("Представление", Выборка.Представление);
|
||||
Свойства.Вставить("ПометкаУдаления", Выборка.ПометкаУдаления);
|
||||
Свойства.Вставить("Профиль", СериализованнаяСсылка(Выборка.Профиль));
|
||||
Свойства.Вставить("ПредставлениеПрофиля", Выборка.ПредставлениеПрофиля);
|
||||
Свойства.Вставить("ПометкаУдаленияПрофиля", Выборка.ПометкаУдаленияПрофиля);
|
||||
Данные.ПредставлениеГруппДоступа.Добавить(Свойства);
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоВнешниеПользователи Тогда
|
||||
ИмяСобытия = ИмяСобытияИзменениеУчастниковГруппВнешнихПользователейДляЖурналаРегистрации();
|
||||
Иначе
|
||||
ИмяСобытия = ИмяСобытияИзменениеИзменениеУчастниковГруппПользователейДляЖурналаРегистрации();
|
||||
ИмяСобытия = ИмяСобытияИзменениеУчастниковГруппПользователейДляЖурналаРегистрации();
|
||||
КонецЕсли;
|
||||
|
||||
ЗаписьЖурналаРегистрации(ИмяСобытия,
|
||||
@@ -5910,6 +6022,16 @@
|
||||
,
|
||||
РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);
|
||||
|
||||
|
||||
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
МодульГруппыДоступа = ОбщегоНазначения.ОбщийМодуль("Справочники.ГруппыДоступа");
|
||||
|
||||
ОписаниеОбъекта = Новый Структура("ИзменениеСоставовГруппПользователей", ДанныеДляРегистрации);
|
||||
МодульГруппыДоступа.ЗарегистрироватьИзменениеРазрешенныхЗначений(ОписаниеОбъекта, Неопределено);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -6049,6 +6171,7 @@
|
||||
|
||||
Если Не РезультатыЗапросов[0].Пустой() Тогда
|
||||
НаборЗаписей = РегистрыСведений.СоставыГруппПользователей.СоздатьНаборЗаписей();
|
||||
НаборЗаписей.ДополнительныеСвойства.Вставить("ЭтоСтандартноеОбновлениеРегистра");
|
||||
Выборка = РезультатыЗапросов[0].Выбрать();
|
||||
|
||||
Пока Выборка.Следующий() Цикл
|
||||
@@ -6066,6 +6189,7 @@
|
||||
|
||||
Если Не РезультатыЗапросов[1].Пустой() Тогда
|
||||
НаборЗаписей = РегистрыСведений.СоставыГруппПользователей.СоздатьНаборЗаписей();
|
||||
НаборЗаписей.ДополнительныеСвойства.Вставить("ЭтоСтандартноеОбновлениеРегистра");
|
||||
Запись = НаборЗаписей.Добавить();
|
||||
Выборка = РезультатыЗапросов[1].Выбрать();
|
||||
|
||||
@@ -7461,12 +7585,9 @@
|
||||
СтарыеКлючи = СтрРазделить(СтарыеКлючиРолейСтрокой, ",", Ложь);
|
||||
НовыеКлючи = СтрРазделить(НовыеКлючиРолейСтрокой, ",", Ложь);
|
||||
|
||||
Если СтарыеКлючи.Количество() > НовыеКлючи.Количество() Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого КлючРоли Из СтарыеКлючи Цикл
|
||||
Если НовыеКлючи.Найти(КлючРоли) = Неопределено Тогда
|
||||
Если Не СтрЗаканчиваетсяНа(КлючРоли, "/1") // Это не роль расширения.
|
||||
И НовыеКлючи.Найти(КлючРоли) = Неопределено Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
@@ -7479,7 +7600,8 @@
|
||||
Функция РолиСокращены(СтарыйПользовательИБ, НовыйПользовательИБ)
|
||||
|
||||
Для Каждого Роль Из СтарыйПользовательИБ.Роли Цикл
|
||||
Если Не НовыйПользовательИБ.Роли.Содержит(Роль) Тогда
|
||||
Если Не НовыйПользовательИБ.Роли.Содержит(Роль)
|
||||
И Роль.РасширениеКонфигурации() = Неопределено Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
@@ -7498,6 +7620,7 @@
|
||||
//
|
||||
Функция КлючиРолейПользователяИБ(ПользовательИБ)
|
||||
|
||||
РолиРасширений = ПользователиСлужебныйПовтИсп.РолиРасширений();
|
||||
Список = Новый СписокЗначений;
|
||||
|
||||
Для Каждого Роль Из ПользовательИБ.Роли Цикл
|
||||
@@ -7505,6 +7628,9 @@
|
||||
Если КлючРоли = Неопределено Тогда
|
||||
КлючРоли = "Неопределено";
|
||||
КонецЕсли;
|
||||
Если РолиРасширений.Получить(Роль.Имя) <> Неопределено Тогда
|
||||
КлючРоли = КлючРоли + "/1";
|
||||
КонецЕсли;
|
||||
Список.Добавить(КлючРоли);
|
||||
КонецЦикла;
|
||||
|
||||
@@ -8715,6 +8841,7 @@
|
||||
Попытка
|
||||
Блокировка.Заблокировать();
|
||||
НаборЗаписей = РегистрыСведений.СоставыГруппПользователей.СоздатьНаборЗаписей();
|
||||
НаборЗаписей.ДополнительныеСвойства.Вставить("ЭтоСтандартноеОбновлениеРегистра");
|
||||
НаборЗаписей.Отбор[ИмяПоля].Установить(ПользовательИлиГруппа);
|
||||
НаборЗаписей.Прочитать();
|
||||
Индекс = НаборЗаписей.Количество();
|
||||
|
||||
@@ -472,6 +472,26 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращаемое значение:
|
||||
// ФиксированноеСоответствие из КлючИЗначение:
|
||||
// * Ключ - Строка - имя роли.
|
||||
// * Значение - Булево - Истина.
|
||||
//
|
||||
Функция РолиРасширений() Экспорт
|
||||
|
||||
Результат = Новый Соответствие;
|
||||
|
||||
Для Каждого Роль Из Метаданные.Роли Цикл
|
||||
Если Роль.РасширениеКонфигурации() = Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
Результат.Вставить(Роль.Имя, Истина);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Новый ФиксированноеСоответствие(Результат);
|
||||
|
||||
КонецФункции
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Вспомогательные процедуры и функции.
|
||||
|
||||
|
||||
@@ -1388,7 +1388,7 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ИдентификаторКлассификатора()
|
||||
Функция ИдентификаторКлассификатора() Экспорт
|
||||
Возврат "Countries";
|
||||
КонецФункции
|
||||
|
||||
@@ -3172,53 +3172,9 @@
|
||||
//
|
||||
Функция ТаблицаКлассификатора() Экспорт
|
||||
|
||||
Классификатор = Неопределено;
|
||||
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.РаботаСКлассификаторами") Тогда
|
||||
|
||||
ИдентификаторКлассификатора = ИдентификаторКлассификатора();
|
||||
|
||||
МодульРаботаСКлассификаторами = ОбщегоНазначения.ОбщийМодуль("РаботаСКлассификаторами");
|
||||
Идентификаторы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ИдентификаторКлассификатора);
|
||||
Результат = МодульРаботаСКлассификаторами.ПолучитьФайлыКлассификаторов(Идентификаторы);
|
||||
|
||||
Если ПустаяСтрока(Результат.КодОшибки) И Результат.ДанныеКлассификаторов <> Неопределено Тогда
|
||||
|
||||
ОписаниеКлассификатора = Результат.ДанныеКлассификаторов.Найти(ИдентификаторКлассификатора, "Идентификатор");
|
||||
Если ОписаниеКлассификатора <> Неопределено Тогда
|
||||
Классификатор = ПолучитьИзВременногоХранилища(ОписаниеКлассификатора.АдресФайла);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если Классификатор = Неопределено Тогда
|
||||
|
||||
Макет = Справочники.СтраныМира.ПолучитьМакет("Классификатор");
|
||||
КлассификаторXML = Макет.ПолучитьТекст();
|
||||
|
||||
Иначе
|
||||
|
||||
НаборСтрок = Новый Массив;
|
||||
ЧтениеЧасти = Новый ЧтениеДанных(Классификатор.ОткрытьПотокДляЧтения());
|
||||
|
||||
Пока Не ЧтениеЧасти.ЧтениеЗавершено Цикл
|
||||
НаборСтрок.Добавить(ЧтениеЧасти.ПрочитатьСтроку());
|
||||
КонецЦикла;
|
||||
|
||||
КлассификаторXML = СтрСоединить(НаборСтрок, ЧтениеЧасти.РазделительСтрок);
|
||||
КонецЕсли;
|
||||
|
||||
Чтение = Новый ЧтениеXML;
|
||||
Чтение.УстановитьСтроку(КлассификаторXML);
|
||||
ТаблицаСтран = СериализаторXDTO.ПрочитатьXML(Чтение); // ТаблицаЗначений
|
||||
|
||||
// Старые версии классификаторов не содержат колонку МеждународноеНаименование
|
||||
Если ТаблицаСтран.Колонки.Найти("МеждународноеНаименование") = Неопределено Тогда
|
||||
ТаблицаСтран.Колонки.Добавить("МеждународноеНаименование", ОбщегоНазначения.ОписаниеТипаСтрока(100));
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТаблицаСтран;
|
||||
Результат = РаботаСАдресамиПовтИсп.СтраныМира();
|
||||
СтраныМира = Результат.СтраныМира.Скопировать();
|
||||
Возврат СтраныМира;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
@@ -35,5 +35,70 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Общероссийский классификатор стран мира
|
||||
|
||||
// Возвращает полные данные ОКСМ классификатора.
|
||||
// Таблица значений в макете проиндексирована по полям "Код", "Наименование".
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ТаблицаЗначений - данные классификатора с колонками:
|
||||
// * Код - Строка - данные страны.
|
||||
// * Наименование - Строка - данные страны.
|
||||
// * НаименованиеПолное - Строка - данные страны.
|
||||
// * КодАльфа2 - Строка - данные страны.
|
||||
// * КодАльфа3 - Строка - данные страны.
|
||||
//
|
||||
Функция СтраныМира() Экспорт
|
||||
|
||||
Классификатор = Неопределено;
|
||||
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.РаботаСКлассификаторами") Тогда
|
||||
|
||||
ИдентификаторКлассификатора = РаботаСАдресами.ИдентификаторКлассификатора();
|
||||
|
||||
МодульРаботаСКлассификаторами = ОбщегоНазначения.ОбщийМодуль("РаботаСКлассификаторами");
|
||||
Идентификаторы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ИдентификаторКлассификатора);
|
||||
Результат = МодульРаботаСКлассификаторами.ПолучитьФайлыКлассификаторов(Идентификаторы);
|
||||
|
||||
Если ПустаяСтрока(Результат.КодОшибки) И Результат.ДанныеКлассификаторов <> Неопределено Тогда
|
||||
|
||||
ОписаниеКлассификатора = Результат.ДанныеКлассификаторов.Найти(ИдентификаторКлассификатора, "Идентификатор");
|
||||
Если ОписаниеКлассификатора <> Неопределено Тогда
|
||||
Классификатор = ПолучитьИзВременногоХранилища(ОписаниеКлассификатора.АдресФайла);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если Классификатор = Неопределено Тогда
|
||||
|
||||
Макет = Справочники.СтраныМира.ПолучитьМакет("Классификатор");
|
||||
КлассификаторXML = Макет.ПолучитьТекст();
|
||||
|
||||
Иначе
|
||||
|
||||
НаборСтрок = Новый Массив;
|
||||
ЧтениеЧасти = Новый ЧтениеДанных(Классификатор.ОткрытьПотокДляЧтения());
|
||||
|
||||
Пока Не ЧтениеЧасти.ЧтениеЗавершено Цикл
|
||||
НаборСтрок.Добавить(ЧтениеЧасти.ПрочитатьСтроку());
|
||||
КонецЦикла;
|
||||
|
||||
КлассификаторXML = СтрСоединить(НаборСтрок, ЧтениеЧасти.РазделительСтрок);
|
||||
КонецЕсли;
|
||||
|
||||
Чтение = Новый ЧтениеXML;
|
||||
Чтение.УстановитьСтроку(КлассификаторXML);
|
||||
ТаблицаСтран = СериализаторXDTO.ПрочитатьXML(Чтение); // ТаблицаЗначений
|
||||
|
||||
// Старые версии классификаторов не содержат колонку МеждународноеНаименование
|
||||
Если ТаблицаСтран.Колонки.Найти("МеждународноеНаименование") = Неопределено Тогда
|
||||
ТаблицаСтран.Колонки.Добавить("МеждународноеНаименование", ОбщегоНазначения.ОписаниеТипаСтрока(100));
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Новый ФиксированнаяСтруктура("СтраныМира", ТаблицаСтран);
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
#КонецОбласти
|
||||
@@ -2823,7 +2823,7 @@
|
||||
|
||||
Функция АдресФайлаСНастройками() Экспорт
|
||||
|
||||
АдресФайла = "https://downloads.v8.1c.eu/content/common/settings/mailservers.json";
|
||||
АдресФайла = "https://downloads.1c.eu/content/common/settings/mailservers.json";
|
||||
|
||||
Если Метаданные.ОбщиеМодули.Найти("РаботаСПочтовымиСообщениямиСлужебныйЛокализация") <> Неопределено Тогда
|
||||
МодульРаботаСПочтовымиСообщениямиСлужебныйЛокализация = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениямиСлужебныйЛокализация");
|
||||
@@ -2836,7 +2836,7 @@
|
||||
|
||||
Функция АдресФайлаСОписаниемОшибок()
|
||||
|
||||
АдресФайла = "https://downloads.v8.1c.eu/content/common/settings/mailerrors.json";
|
||||
АдресФайла = "https://downloads.1c.eu/content/common/settings/mailerrors.json";
|
||||
|
||||
Если Метаданные.ОбщиеМодули.Найти("РаботаСПочтовымиСообщениямиСлужебныйЛокализация") <> Неопределено Тогда
|
||||
МодульРаботаСПочтовымиСообщениямиСлужебныйЛокализация = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениямиСлужебныйЛокализация");
|
||||
@@ -2849,7 +2849,7 @@
|
||||
|
||||
Функция АдресВнешнегоРесурса()
|
||||
|
||||
АдресВнешнегоРесурса = "downloads.v8.1c.eu";
|
||||
АдресВнешнегоРесурса = "downloads.1c.eu";
|
||||
|
||||
Если Метаданные.ОбщиеМодули.Найти("РаботаСПочтовымиСообщениямиСлужебныйЛокализация") <> Неопределено Тогда
|
||||
МодульРаботаСПочтовымиСообщениямиСлужебныйЛокализация = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениямиСлужебныйЛокализация");
|
||||
|
||||
@@ -1705,127 +1705,122 @@
|
||||
//
|
||||
Функция ПолучитьНастройкиСканированияПользователя(ИдентификаторКлиента) Экспорт
|
||||
|
||||
НастройкиСканированияПользователя = РаботаСФайламиКлиентСервер.НастройкиСканированияПользователя();
|
||||
Результат = РаботаСФайламиКлиентСервер.НастройкиСканированияПользователя();
|
||||
|
||||
НастройкиСканированияПользователя.ПоказыватьДиалогСканера = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.ПоказыватьДиалогСканера = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/ПоказыватьДиалогСканера",
|
||||
ИдентификаторКлиента, Истина);
|
||||
|
||||
НастройкиСканированияПользователя.ИмяУстройства = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.ИмяУстройства = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/ИмяУстройства",
|
||||
ИдентификаторКлиента, "");
|
||||
|
||||
НастройкиСканированияПользователя.ФорматСканированногоИзображения = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.ФорматСканированногоИзображения = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/ФорматСканированногоИзображения",
|
||||
ИдентификаторКлиента, Перечисления.ФорматыСканированногоИзображения.PNG);
|
||||
Если Результат.ФорматСканированногоИзображения = Перечисления.ФорматыСканированногоИзображения.ПустаяСсылка() Тогда
|
||||
Результат.ФорматСканированногоИзображения = Перечисления.ФорматыСканированногоИзображения.PNG;
|
||||
КонецЕсли;
|
||||
|
||||
НастройкиСканированияПользователя.СохранятьВPDF = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.СохранятьВPDF = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/СохранятьВPDF",
|
||||
ИдентификаторКлиента, Ложь);
|
||||
|
||||
НастройкиСканированияПользователя.ФорматХраненияМногостраничный = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.ФорматХраненияМногостраничный = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/ФорматХраненияМногостраничный",
|
||||
ИдентификаторКлиента, Перечисления.ФорматыХраненияМногостраничныхФайлов.TIF);
|
||||
|
||||
НастройкиСканированияПользователя.Разрешение = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.Разрешение = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/Разрешение",
|
||||
ИдентификаторКлиента);
|
||||
|
||||
НастройкиСканированияПользователя.Цветность = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.Цветность = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/Цветность",
|
||||
ИдентификаторКлиента);
|
||||
|
||||
НастройкиСканированияПользователя.Поворот = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.Поворот = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/Поворот",
|
||||
ИдентификаторКлиента);
|
||||
|
||||
НастройкиСканированияПользователя.РазмерБумаги = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.РазмерБумаги = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/РазмерБумаги",
|
||||
ИдентификаторКлиента);
|
||||
|
||||
НастройкиСканированияПользователя.ДвустороннееСканирование = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.ДвустороннееСканирование = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/ДвустороннееСканирование",
|
||||
ИдентификаторКлиента);
|
||||
|
||||
НастройкиСканированияПользователя.ИспользоватьImageMagickДляПреобразованияВPDF = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.ИспользоватьImageMagickДляПреобразованияВPDF = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/ИспользоватьImageMagickДляПреобразованияВPDF",
|
||||
ИдентификаторКлиента, Ложь);
|
||||
|
||||
НастройкиСканированияПользователя.КачествоJPG = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.КачествоJPG = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/КачествоJPG",
|
||||
ИдентификаторКлиента, 100);
|
||||
|
||||
НастройкиСканированияПользователя.СжатиеTIFF = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.СжатиеTIFF = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/СжатиеTIFF",
|
||||
ИдентификаторКлиента, Перечисления.ВариантыСжатияTIFF.БезСжатия);
|
||||
|
||||
НастройкиСканированияПользователя.ПутьКПрограммеКонвертации = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.ПутьКПрограммеКонвертации = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/ПутьКПрограммеКонвертации",
|
||||
ИдентификаторКлиента, ""); // ImageMagick
|
||||
|
||||
НастройкиСканированияПользователя.КаталогЖурналаСканирования = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.КаталогЖурналаСканирования = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/КаталогЖурналаСканирования",
|
||||
ИдентификаторКлиента, "");
|
||||
|
||||
НастройкиСканированияПользователя.ИспользоватьКаталогЖурналаСканирования = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Результат.ИспользоватьКаталогЖурналаСканирования = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
"НастройкиСканирования/ИспользоватьКаталогЖурналаСканирования",
|
||||
ИдентификаторКлиента, Ложь);
|
||||
|
||||
Возврат НастройкиСканированияПользователя;
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
|
||||
// Сохраняет настройки сканирования пользователя.
|
||||
//
|
||||
// Параметры:
|
||||
// НастройкиСканированияПользователя - см. РаботаСФайламиКлиентСервер.НастройкиСканированияПользователя
|
||||
// ИдентификаторКлиента - УникальныйИдентификатор - идентификатор клиента
|
||||
// ИдентификаторКлиента - УникальныйИдентификатор
|
||||
//
|
||||
Процедура СохранитьНастройкиСканированияПользователя(НастройкиСканированияПользователя, ИдентификаторКлиента) Экспорт
|
||||
|
||||
НастройкиСканирования = Новый Массив;
|
||||
Результат = Новый Массив;
|
||||
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("ПоказыватьДиалогСканера",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("ПоказыватьДиалогСканера",
|
||||
НастройкиСканированияПользователя.ПоказыватьДиалогСканера, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("ИмяУстройства",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("ИмяУстройства",
|
||||
НастройкиСканированияПользователя.ИмяУстройства, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("ФорматСканированногоИзображения",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("ФорматСканированногоИзображения",
|
||||
НастройкиСканированияПользователя.ФорматСканированногоИзображения, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("СохранятьВPDF",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("СохранятьВPDF",
|
||||
НастройкиСканированияПользователя.СохранятьВPDF, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("ФорматХраненияМногостраничный",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("ФорматХраненияМногостраничный",
|
||||
НастройкиСканированияПользователя.ФорматХраненияМногостраничный, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("Разрешение",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("Разрешение",
|
||||
НастройкиСканированияПользователя.Разрешение, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("Цветность",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("Цветность",
|
||||
НастройкиСканированияПользователя.Цветность, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("Поворот",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("Поворот",
|
||||
НастройкиСканированияПользователя.Поворот, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("РазмерБумаги",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("РазмерБумаги",
|
||||
НастройкиСканированияПользователя.РазмерБумаги, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("ДвустороннееСканирование",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("ДвустороннееСканирование",
|
||||
НастройкиСканированияПользователя.ДвустороннееСканирование, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("ИспользоватьImageMagickДляПреобразованияВPDF",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("ИспользоватьImageMagickДляПреобразованияВPDF",
|
||||
НастройкиСканированияПользователя.ИспользоватьImageMagickДляПреобразованияВPDF, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("КачествоJPG",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("КачествоJPG",
|
||||
НастройкиСканированияПользователя.КачествоJPG, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("СжатиеTIFF",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("СжатиеTIFF",
|
||||
НастройкиСканированияПользователя.СжатиеTIFF, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("ПутьКПрограммеКонвертации",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("ПутьКПрограммеКонвертации",
|
||||
НастройкиСканированияПользователя.ПутьКПрограммеКонвертации, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("КаталогЖурналаСканирования",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("КаталогЖурналаСканирования",
|
||||
НастройкиСканированияПользователя.КаталогЖурналаСканирования, ИдентификаторКлиента));
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("ИспользоватьКаталогЖурналаСканирования",
|
||||
Результат.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("ИспользоватьКаталогЖурналаСканирования",
|
||||
НастройкиСканированияПользователя.ИспользоватьКаталогЖурналаСканирования, ИдентификаторКлиента));
|
||||
|
||||
Если ЗначениеЗаполнено(НастройкиСканированияПользователя.ФорматХраненияОдностраничный) Тогда
|
||||
ФорматХраненияОдностраничный = НастройкиСканированияПользователя.ФорматХраненияОдностраничный;
|
||||
Иначе
|
||||
ФорматХраненияОдностраничный = РаботаСФайламиСлужебный.ПреобразоватьФорматСканированияВФорматХранения(НастройкиСканированияПользователя.ФорматСканированногоИзображения,
|
||||
НастройкиСканированияПользователя.СохранятьВPDF);
|
||||
КонецЕсли;
|
||||
|
||||
НастройкиСканирования.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("ФорматХраненияОдностраничный", ФорматХраненияОдностраничный, ИдентификаторКлиента));
|
||||
|
||||
ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранитьМассив(НастройкиСканирования, Истина);
|
||||
ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранитьМассив(Результат, Истина);
|
||||
КонецПроцедуры
|
||||
|
||||
#Область ДляВызоваИзДругихПодсистем
|
||||
@@ -1839,7 +1834,7 @@
|
||||
// Параметры:
|
||||
// Параметры - Структура - параметры выполнения отложенного обработчика обновления.
|
||||
//
|
||||
Процедура ПеренестиЭлектронныеПодписиИСертификатыШифрованияВРегистрыСведений(Параметры) Экспорт
|
||||
Процедура ПеренестиЭлектронныеПодписиИСертификатыШифрованияВРегистрыСведений(Параметры) Экспорт // АПК:530 Обрабатывает таблицы присоединенных файлов, а не данные других подсистем.
|
||||
|
||||
РаботаСФайламиСлужебный.ПеренестиЭлектронныеПодписиИСертификатыШифрованияВРегистрыСведений(Параметры);
|
||||
|
||||
|
||||
@@ -57,10 +57,10 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Настройки сканирования пользователя.
|
||||
// Возвращает настройки сканирования пользователя.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - настройки сканирования пользователя:
|
||||
// Структура:
|
||||
// * ПоказыватьДиалогСканера - Булево
|
||||
// * ИмяУстройства - Строка - НаименованиеСканера
|
||||
// * ФорматСканированногоИзображения - ПеречислениеСсылка.ФорматыСканированногоИзображения
|
||||
@@ -75,28 +75,26 @@
|
||||
// * КачествоJPG - Число
|
||||
// * СжатиеTIFF - ПеречислениеСсылка.ВариантыСжатияTIFF
|
||||
// * ПутьКПрограммеКонвертации - Строка
|
||||
// * ФорматХраненияОдностраничный - ПеречислениеСсылка.ФорматыХраненияОдностраничныхФайлов
|
||||
//
|
||||
Функция НастройкиСканированияПользователя() Экспорт
|
||||
НастройкиСканированияПользователя = Новый Структура;
|
||||
НастройкиСканированияПользователя.Вставить("ПоказыватьДиалогСканера", Ложь);
|
||||
НастройкиСканированияПользователя.Вставить("ИмяУстройства", "");
|
||||
НастройкиСканированияПользователя.Вставить("ФорматСканированногоИзображения");
|
||||
НастройкиСканированияПользователя.Вставить("СохранятьВPDF", Ложь);
|
||||
НастройкиСканированияПользователя.Вставить("ФорматХраненияМногостраничный");
|
||||
НастройкиСканированияПользователя.Вставить("Разрешение");
|
||||
НастройкиСканированияПользователя.Вставить("Цветность");
|
||||
НастройкиСканированияПользователя.Вставить("Поворот");
|
||||
НастройкиСканированияПользователя.Вставить("РазмерБумаги");
|
||||
НастройкиСканированияПользователя.Вставить("ДвустороннееСканирование", Ложь);
|
||||
НастройкиСканированияПользователя.Вставить("ИспользоватьImageMagickДляПреобразованияВPDF", Ложь);
|
||||
НастройкиСканированияПользователя.Вставить("КачествоJPG", 0);
|
||||
НастройкиСканированияПользователя.Вставить("СжатиеTIFF");
|
||||
НастройкиСканированияПользователя.Вставить("ПутьКПрограммеКонвертации", "");
|
||||
НастройкиСканированияПользователя.Вставить("ФорматХраненияОдностраничный");
|
||||
НастройкиСканированияПользователя.Вставить("КаталогЖурналаСканирования");
|
||||
НастройкиСканированияПользователя.Вставить("ИспользоватьКаталогЖурналаСканирования", Ложь);
|
||||
Возврат НастройкиСканированияПользователя;
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("ПоказыватьДиалогСканера", Ложь);
|
||||
Результат.Вставить("ИмяУстройства", "");
|
||||
Результат.Вставить("ФорматСканированногоИзображения");
|
||||
Результат.Вставить("СохранятьВPDF", Ложь);
|
||||
Результат.Вставить("ФорматХраненияМногостраничный");
|
||||
Результат.Вставить("Разрешение");
|
||||
Результат.Вставить("Цветность");
|
||||
Результат.Вставить("Поворот");
|
||||
Результат.Вставить("РазмерБумаги");
|
||||
Результат.Вставить("ДвустороннееСканирование", Ложь);
|
||||
Результат.Вставить("ИспользоватьImageMagickДляПреобразованияВPDF", Ложь);
|
||||
Результат.Вставить("КачествоJPG", 0);
|
||||
Результат.Вставить("СжатиеTIFF");
|
||||
Результат.Вставить("ПутьКПрограммеКонвертации", "");
|
||||
Результат.Вставить("КаталогЖурналаСканирования");
|
||||
Результат.Вставить("ИспользоватьКаталогЖурналаСканирования", Ложь);
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -2180,24 +2180,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПреобразоватьФорматСканированияВФорматХранения(ФорматСканирования, СохранятьВPDF) Экспорт
|
||||
|
||||
Если СохранятьВPDF Тогда
|
||||
Возврат Перечисления.ФорматыХраненияОдностраничныхФайлов.PDF;
|
||||
ИначеЕсли ФорматСканирования = Перечисления.ФорматыСканированногоИзображения.BMP Тогда
|
||||
Возврат Перечисления.ФорматыХраненияОдностраничныхФайлов.BMP;
|
||||
ИначеЕсли ФорматСканирования = Перечисления.ФорматыСканированногоИзображения.GIF Тогда
|
||||
Возврат Перечисления.ФорматыХраненияОдностраничныхФайлов.GIF;
|
||||
ИначеЕсли ФорматСканирования = Перечисления.ФорматыСканированногоИзображения.JPG Тогда
|
||||
Возврат Перечисления.ФорматыХраненияОдностраничныхФайлов.JPG;
|
||||
ИначеЕсли ФорматСканирования = Перечисления.ФорматыСканированногоИзображения.TIF Тогда
|
||||
Возврат Перечисления.ФорматыХраненияОдностраничныхФайлов.TIF;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Перечисления.ФорматыХраненияОдностраничныхФайлов.PNG;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция КомандаСканироватьЛист() Экспорт
|
||||
Возврат "e1cib/command/Обработка.Сканирование.Команда.СканироватьЛист";
|
||||
КонецФункции
|
||||
@@ -3025,7 +3007,7 @@
|
||||
КонецЦикла;
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СформироватьНастройкуСканирования(Имя, Значение, ИдентификаторКлиента) Экспорт
|
||||
Функция НастройкаСканирования(Имя, Значение, ИдентификаторКлиента) Экспорт
|
||||
|
||||
Элемент = Новый Структура;
|
||||
Элемент.Вставить("Объект", "НастройкиСканирования/" + Имя);
|
||||
|
||||
@@ -3227,9 +3227,9 @@
|
||||
|
||||
МассивСтруктур = Новый Массив;
|
||||
|
||||
МассивСтруктур.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("КаталогЖурналаСканирования",
|
||||
МассивСтруктур.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("КаталогЖурналаСканирования",
|
||||
"", ИдентификаторКлиента));
|
||||
МассивСтруктур.Добавить(РаботаСФайламиСлужебный.СформироватьНастройкуСканирования("ИспользоватьКаталогЖурналаСканирования",
|
||||
МассивСтруктур.Добавить(РаботаСФайламиСлужебный.НастройкаСканирования("ИспользоватьКаталогЖурналаСканирования",
|
||||
Ложь, ИдентификаторКлиента));
|
||||
|
||||
ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранитьМассив(МассивСтруктур, Истина);
|
||||
|
||||
@@ -203,7 +203,21 @@
|
||||
ПараметрыПриложения.Вставить(ИмяПараметраВложенныхПоказателей(), Новый Массив);
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
ПроверитьПолучитьСерверныеОповещенияСПоказателями(СостояниеПолучения, Показатели);
|
||||
Исключение
|
||||
СерверныеВызовыРазрешены = Истина;
|
||||
Попытка
|
||||
СтандартныеПодсистемыВызовСервера.ИмяОбъектаМетаданных(Тип("Неопределено"));
|
||||
Исключение
|
||||
СерверныеВызовыРазрешены = Ложь;
|
||||
КонецПопытки;
|
||||
Если Не СерверныеВызовыРазрешены Тогда
|
||||
ПодключитьОбработчикПроверкиПолученияСерверныхОповещений(15);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
|
||||
ДобавитьОсновнойПоказатель(Показатели, МоментНачала,
|
||||
"СерверныеОповещенияКлиент.ПроверитьПолучитьСерверныеОповещения", Истина);
|
||||
|
||||
@@ -396,13 +396,7 @@
|
||||
НовыйФормат.Картинка = БиблиотекаКартинок.ФорматPDF;
|
||||
НовыйФормат.Представление = ПредставлениеТипаФайлаТабличногоДокументаPDF();
|
||||
|
||||
// Документ PDF (.pdf) (устаревший формат для ФНС)
|
||||
НовыйФормат = ТаблицаФорматов.Добавить();
|
||||
НовыйФормат.ТипФайлаТабличногоДокумента = ТипФайлаТабличногоДокумента.PDF;
|
||||
НовыйФормат.Ссылка = Перечисления.ФорматыСохраненияОтчетов.PDF;
|
||||
НовыйФормат.Расширение = "PDF";
|
||||
НовыйФормат.Картинка = БиблиотекаКартинок.ФорматPDF;
|
||||
НовыйФормат.Представление = НСтр("ru = 'Документ PDF (устаревший формат)'");
|
||||
СтандартныеПодсистемыСерверЛокализация.ПриНастройкеФорматовСохраненияТабличногоДокумента(ТаблицаФорматов);
|
||||
|
||||
// Табличный документ (.mxl)
|
||||
НовыйФормат = ТаблицаФорматов.Добавить();
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (c) 2024, ООО 1С-Софт
|
||||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||
// Текст лицензии доступен по ссылке:
|
||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// См. СтандартныеПодсистемыСервер.НастройкиФорматовСохраненияТабличногоДокумента
|
||||
//
|
||||
Процедура ПриНастройкеФорматовСохраненияТабличногоДокумента(ТаблицаФорматов) Экспорт
|
||||
|
||||
// Локализация
|
||||
// PDF (.pdf) (устаревший формат для ФНС)
|
||||
НовыйФормат = ТаблицаФорматов.Добавить();
|
||||
НовыйФормат.ТипФайлаТабличногоДокумента = ТипФайлаТабличногоДокумента.PDF;
|
||||
НовыйФормат.Ссылка = Перечисления.ФорматыСохраненияОтчетов.PDF;
|
||||
НовыйФормат.Расширение = "PDF";
|
||||
НовыйФормат.Картинка = БиблиотекаКартинок.ФорматPDF;
|
||||
НовыйФормат.Представление = НСтр("ru = 'Документ PDF (для ФНС)'");
|
||||
// Конец Локализация
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="91d42c1f-af78-4c21-8071-61a347a94d5d">
|
||||
<name>СтандартныеПодсистемыСерверЛокализация</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Стандартные подсистемы сервер локализация</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
||||
@@ -696,7 +696,67 @@
|
||||
// Булево
|
||||
//
|
||||
Функция ПоддерживаетсяРегистрацияИзмененийПраваДоступа() Экспорт
|
||||
Возврат Ложь;
|
||||
Возврат Истина;
|
||||
КонецФункции
|
||||
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
Функция ИмяСобытияИзменениеУчастниковГруппДоступаДляЖурналаРегистрации() Экспорт
|
||||
|
||||
Возврат НСтр("ru = 'Управление доступом.Изменение участников групп доступа'",
|
||||
ОбщегоНазначения.КодОсновногоЯзыка());
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
Функция ИмяСобытияИзменениеРазрешенныхЗначенийДляЖурналаРегистрации() Экспорт
|
||||
|
||||
Возврат НСтр("ru = 'Управление доступом.Изменение разрешенных значений'",
|
||||
ОбщегоНазначения.КодОсновногоЯзыка());
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
Функция ИмяСобытияИзменениеРолейПрофилейДляЖурналаРегистрации() Экспорт
|
||||
|
||||
Возврат НСтр("ru = 'Управление доступом.Изменение ролей профилей'",
|
||||
ОбщегоНазначения.КодОсновногоЯзыка());
|
||||
|
||||
КонецФункции
|
||||
|
||||
// См. СвойстваВидовДоступа
|
||||
Функция СвойстваВсехВидовДоступа() Экспорт
|
||||
Возврат СвойстваВидовДоступа();
|
||||
КонецФункции
|
||||
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * ПолноеИмяФормыСпискаГруппДоступа - Строка
|
||||
// * ПолноеИмяФормыЭлементаГруппДоступа - Строка
|
||||
// * ПолноеИмяФормыСпискаПрофилей - Строка
|
||||
// * ПолноеИмяФормыЭлементаПрофилей - Строка
|
||||
// * ТипСправочникСсылкаГруппыДоступа - Тип
|
||||
// * ТипСправочникСсылкаПрофилиГруппДоступа - Тип
|
||||
// * ТипыЗначенийДоступа - Массив из Тип
|
||||
//
|
||||
Функция ПараметрыДляОтчетов() Экспорт
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("ПолноеИмяФормыСпискаГруппДоступа", "Справочник.ГруппыДоступа.Форма.ФормаСписка");
|
||||
Результат.Вставить("ПолноеИмяФормыЭлементаГруппДоступа", "Справочник.ГруппыДоступа.Форма.ФормаЭлемента");
|
||||
Результат.Вставить("ПолноеИмяФормыСпискаПрофилей", "Справочник.ПрофилиГруппДоступа.Форма.ФормаСписка");
|
||||
Результат.Вставить("ПолноеИмяФормыЭлементаПрофилей", "Справочник.ПрофилиГруппДоступа.Форма.ФормаЭлемента");
|
||||
Результат.Вставить("ТипСправочникСсылкаГруппыДоступа", Тип("СправочникСсылка.ГруппыДоступа"));
|
||||
Результат.Вставить("ТипСправочникСсылкаПрофилиГруппДоступа", Тип("СправочникСсылка.ПрофилиГруппДоступа"));
|
||||
Результат.Вставить("ТипыЗначенийДоступа", Метаданные.ОпределяемыеТипы.ЗначениеДоступа.Тип.Типы());
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область УниверсальноеОграничение
|
||||
@@ -2221,6 +2281,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
// Параметр "СтандартныеПодсистемы.УправлениеДоступом.СвойстваВидовДоступа".
|
||||
РегистрыСведений.ИспользуемыеВидыДоступа.ОбновитьДанныеРегистра();
|
||||
ОбновитьГруппыИНаборыЗначенийДоступаПриИзмененииТиповГруппИЗначений();
|
||||
|
||||
// Параметр "СтандартныеПодсистемы.УправлениеДоступом.ВозможныеПраваДляНастройкиПравОбъектов".
|
||||
@@ -2570,6 +2631,56 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Процедуры и функция для подсистемы Пользователи.
|
||||
|
||||
Функция ТекстЗапросаГруппДоступаПриИзмененииУчастниковГруппПользователей() Экспорт
|
||||
|
||||
Возврат
|
||||
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||
| УчастникиГруппДоступа.Ссылка КАК ГруппаДоступа,
|
||||
| УчастникиГруппДоступа.Пользователь КАК Участник,
|
||||
| УчастникиГруппДоступа.СрокДействия КАК СрокДействия
|
||||
|ПОМЕСТИТЬ УчастникиГруппДоступа
|
||||
|ИЗ
|
||||
| Справочник.ГруппыДоступа.Пользователи КАК УчастникиГруппДоступа
|
||||
| ЛЕВОЕ СОЕДИНЕНИЕ ИзмененияСоставов КАК ИзмененияСоставовГрупп
|
||||
| ПО (ИзмененияСоставовГрупп.ГруппаПользователей = УчастникиГруппДоступа.Пользователь)
|
||||
| ЛЕВОЕ СОЕДИНЕНИЕ ИзмененияСоставов КАК ИзмененияАктивностиПользователей
|
||||
| ПО (ИзмененияАктивностиПользователей.Пользователь = УчастникиГруппДоступа.Пользователь)
|
||||
| И (ИзмененияАктивностиПользователей.ГруппаПользователей = &ГруппаВсеПользователи)
|
||||
|ГДЕ
|
||||
| (НЕ ИзмененияСоставовГрупп.ГруппаПользователей ЕСТЬ NULL
|
||||
| ИЛИ НЕ ИзмененияАктивностиПользователей.Пользователь ЕСТЬ NULL)
|
||||
|;
|
||||
|
|
||||
|////////////////////////////////////////////////////////////////////////////////
|
||||
|ВЫБРАТЬ
|
||||
| УчастникиГруппДоступа.ГруппаДоступа КАК ГруппаДоступа,
|
||||
| УчастникиГруппДоступа.Участник КАК Участник,
|
||||
| УчастникиГруппДоступа.СрокДействия КАК СрокДействия
|
||||
|ИЗ
|
||||
| УчастникиГруппДоступа КАК УчастникиГруппДоступа
|
||||
|;
|
||||
|
|
||||
|////////////////////////////////////////////////////////////////////////////////
|
||||
|ВЫБРАТЬ
|
||||
| ГруппыДоступа.Ссылка КАК ГруппаДоступа,
|
||||
| ПРЕДСТАВЛЕНИЕ(ГруппыДоступа.Ссылка) КАК Представление,
|
||||
| ГруппыДоступа.ПометкаУдаления КАК ПометкаУдаления,
|
||||
| ГруппыДоступа.Профиль КАК Профиль,
|
||||
| ПРЕДСТАВЛЕНИЕ(ГруппыДоступа.Профиль) КАК ПредставлениеПрофиля,
|
||||
| ЕСТЬNULL(ГруппыДоступа.Профиль.ПометкаУдаления, ИСТИНА) КАК ПометкаУдаленияПрофиля
|
||||
|ИЗ
|
||||
| Справочник.ГруппыДоступа КАК ГруппыДоступа
|
||||
|ГДЕ
|
||||
| ГруппыДоступа.Ссылка В
|
||||
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||
| УчастникиГруппДоступа.ГруппаДоступа
|
||||
| ИЗ
|
||||
| УчастникиГруппДоступа КАК УчастникиГруппДоступа)";
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Процедуры и функции подсистемы ЦентрМониторинга.
|
||||
|
||||
// Возвращает текст запроса для сбора статистической информации об использовании профилей групп доступа и ролей.
|
||||
@@ -3372,14 +3483,14 @@
|
||||
//
|
||||
Процедура ОбновитьГруппыЗначенийДоступаПередЗаписью(Знач Источник, Отказ) Экспорт
|
||||
|
||||
Если Источник.ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после записи изменений в журнал.
|
||||
Если СтандартныеПодсистемыСервер.ЭтоИдентификаторОбъектаМетаданных(Источник) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа()
|
||||
Или Не Источник.ОбменДанными.Загрузка Тогда
|
||||
|
||||
Если Источник.ЭтоНовый()
|
||||
И ОбщегоНазначения.ИнформационнаяБазаФайловая()
|
||||
И Не ПропуститьПроверкуДоступа(Отказ, Источник) Тогда
|
||||
@@ -3390,17 +3501,38 @@
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваВидовДоступа = СвойстваВидовДоступа();
|
||||
ЗначенияДоступаСГруппами = СвойстваВидовДоступа.ЗначенияДоступаСГруппами;
|
||||
|
||||
Если ЗначенияДоступаСГруппами.ПоТипамДляОбновления.Получить(ТипЗнч(Источник)) <> Неопределено Тогда
|
||||
РегистрыСведений.ГруппыЗначенийДоступа.ОбновитьГруппыЗначенийДоступа(Источник);
|
||||
КонецЕсли;
|
||||
|
||||
СтарыеЗначения = Новый Структура;
|
||||
Если СвойстваВидовДоступа.ПоТипамЗначенийСИерархией.Получить(ТипЗнч(Источник)) <> Неопределено Тогда
|
||||
Родитель = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Источник.Ссылка, "Родитель");
|
||||
Если Источник.Родитель <> Родитель Тогда
|
||||
Источник.ДополнительныеСвойства.Вставить("ОбновитьЗначенияГруппДоступа");
|
||||
СтарыеЗначения.Вставить("Родитель", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Источник.Ссылка, "Родитель"));
|
||||
КонецЕсли;
|
||||
Свойства = СвойстваВидовДоступа.ЗначенияДоступаСГруппами.ПоТипамДляОбновления.Получить(ТипЗнч(Источник));
|
||||
Если Свойства <> Неопределено
|
||||
И Свойства.ТипГруппЗначений <> Тип("Неопределено")
|
||||
И ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа() Тогда
|
||||
|
||||
ИмяПоля = ?(Свойства.НесколькоГруппЗначений, "ГруппыДоступа", "ГруппаДоступа");
|
||||
Попытка
|
||||
ЗначениеПоля = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Источник.Ссылка, ИмяПоля);
|
||||
Исключение
|
||||
ИменаТаблиц = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Источник.Метаданные().ПолноеИмя());
|
||||
ПоТипамСсылокДляОбновления = СвойстваВидовДоступа.ЗначенияДоступаСГруппами.ПоТипамСсылокДляОбновления;
|
||||
РегистрыСведений.ГруппыЗначенийДоступа.ПроверитьМетаданныеТаблиц(ИменаТаблиц, ПоТипамСсылокДляОбновления);
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
СтарыеЗначения.Вставить(ИмяПоля, ЗначениеПоля);
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(СтарыеЗначения) Тогда
|
||||
Источник.ДополнительныеСвойства.Вставить("УправлениеДоступомСтарыеЗначения", СтарыеЗначения);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
// АПК:75-вкл
|
||||
|
||||
Если Источник.ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Свойства <> Неопределено Тогда
|
||||
РегистрыСведений.ГруппыЗначенийДоступа.ОбновитьГруппыЗначенийДоступа(Источник);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -3412,11 +3544,33 @@
|
||||
//
|
||||
Процедура ОбновитьГруппыЗначенийДоступаПриЗаписи(Источник) Экспорт
|
||||
|
||||
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после записи изменений в журнал.
|
||||
Если СтандартныеПодсистемыСервер.ЭтоИдентификаторОбъектаМетаданных(Источник) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа()
|
||||
И Источник.ДополнительныеСвойства.Свойство("УправлениеДоступомСтарыеЗначения") Тогда
|
||||
|
||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
Справочники.ГруппыДоступа.ЗарегистрироватьИзменениеРазрешенныхЗначений(Источник,
|
||||
Источник.ДополнительныеСвойства.УправлениеДоступомСтарыеЗначения);
|
||||
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||
КонецЕсли;
|
||||
// АПК:75-вкл
|
||||
|
||||
Если Источник.ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Источник.ДополнительныеСвойства.Свойство("ОбновитьЗначенияГруппДоступа") Тогда
|
||||
Если Источник.ДополнительныеСвойства.Свойство("УправлениеДоступомСтарыеЗначения")
|
||||
И Источник.ДополнительныеСвойства.УправлениеДоступомСтарыеЗначения.Свойство("Родитель")
|
||||
И Источник.Родитель <> Источник.ДополнительныеСвойства.УправлениеДоступомСтарыеЗначения.Родитель Тогда
|
||||
|
||||
ГруппыДоступа = ГруппыДоступаИспользующиеИерархиюЗначенийДоступа(ТипЗнч(Источник.Ссылка));
|
||||
РегистрыСведений.ЗначенияГруппДоступа.ОбновитьДанныеРегистра(ГруппыДоступа);
|
||||
КонецЕсли;
|
||||
@@ -3837,7 +3991,8 @@
|
||||
|ИЗ
|
||||
| РегистрСведений.ИспользуемыеВидыДоступа КАК ИспользуемыеВидыДоступа
|
||||
|ГДЕ
|
||||
| ИспользуемыеВидыДоступа.ТипЗначенийДоступа = &ТипЗначенийДоступа";
|
||||
| ИспользуемыеВидыДоступа.ТипЗначенийДоступа = &ТипЗначенийДоступа
|
||||
| И ИспользуемыеВидыДоступа.Используется = ИСТИНА";
|
||||
|
||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
@@ -3851,16 +4006,20 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Параметры:
|
||||
// БезУчетаОграниченияДоступа - Булево
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие из КлючИЗначение:
|
||||
// * Ключ - ОпределяемыйТип.ЗначениеДоступа - пустая ссылка основного типа вида доступа.
|
||||
// * Значение - Булево - значение Истина.
|
||||
//
|
||||
Функция ИспользуемыеВидыДоступа() Экспорт
|
||||
Функция ИспользуемыеВидыДоступа(БезУчетаОграниченияДоступа = Ложь) Экспорт
|
||||
|
||||
Результат = Новый Соответствие;
|
||||
|
||||
Если Не УправлениеДоступом.ОграничиватьДоступНаУровнеЗаписей() Тогда
|
||||
Если Не БезУчетаОграниченияДоступа
|
||||
И Не УправлениеДоступом.ОграничиватьДоступНаУровнеЗаписей() Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -3869,7 +4028,9 @@
|
||||
"ВЫБРАТЬ
|
||||
| ИспользуемыеВидыДоступа.ТипЗначенийДоступа КАК ТипЗначенийДоступа
|
||||
|ИЗ
|
||||
| РегистрСведений.ИспользуемыеВидыДоступа КАК ИспользуемыеВидыДоступа";
|
||||
| РегистрСведений.ИспользуемыеВидыДоступа КАК ИспользуемыеВидыДоступа
|
||||
|ГДЕ
|
||||
| ИспользуемыеВидыДоступа.Используется = ИСТИНА";
|
||||
|
||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
@@ -5215,6 +5376,7 @@
|
||||
РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистраПоИзменениямКонфигурации();
|
||||
|
||||
// Параметр "СтандартныеПодсистемы.УправлениеДоступом.СвойстваВидовДоступа".
|
||||
РегистрыСведений.ИспользуемыеВидыДоступа.ОбновитьДанныеРегистра();
|
||||
ОбновитьГруппыИНаборыЗначенийДоступаПриИзмененииТиповГруппИЗначений();
|
||||
|
||||
// Параметр "СтандартныеПодсистемы.УправлениеДоступом.ВозможныеПраваДляНастройкиПравОбъектов".
|
||||
@@ -22919,33 +23081,47 @@
|
||||
Если Условие.Узел = "ЧтениеОбъектаРазрешено"
|
||||
Или Условие.Узел = "ИзменениеОбъектаРазрешено" Тогда
|
||||
|
||||
Результат = Новый Соответствие;
|
||||
Результат = "Ложь";
|
||||
ПроверятьПравоИзменение = Условие.Узел <> "ЧтениеОбъектаРазрешено";
|
||||
ПравоИзменение = ПраваНаВедущийКлючДоступа.Получить(Контекст.ПустаяГруппаДоступа);
|
||||
Если ПравоИзменение <> Неопределено
|
||||
И (Не ПроверятьПравоИзменение Или ПравоИзменение) Тогда
|
||||
Результат = "Истина";
|
||||
Иначе
|
||||
ПравоИзменение = ПраваНаВедущийКлючДоступа.Получить(Контекст.ГруппаДоступа);
|
||||
Если ПравоИзменение <> Неопределено
|
||||
И (Не ПроверятьПравоИзменение Или ПравоИзменение) Тогда
|
||||
Результат = "Истина";
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
Если Результат <> "Истина" Тогда
|
||||
Результат = Новый Соответствие;
|
||||
Для Каждого КлючИЗначение Из ПраваНаВедущийКлючДоступа Цикл
|
||||
Если ПроверятьПравоИзменение И Не КлючИЗначение.Значение Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
Если ТипЗнч(КлючИЗначение.Ключ) <> Контекст.ТипГруппыДоступа Тогда
|
||||
Результат.Вставить(КлючИЗначение.Ключ, Истина);
|
||||
|
||||
ИначеЕсли КлючИЗначение.Ключ = Контекст.ГруппаДоступа Тогда
|
||||
УчастникиГруппыДоступа = Контекст.УчастникиГруппДоступа.Получить(
|
||||
Контекст.ГруппаДоступа);
|
||||
Если УчастникиГруппыДоступа <> Неопределено Тогда
|
||||
Если Результат.Количество() = 0 Тогда
|
||||
Результат = Новый Соответствие(
|
||||
Новый ФиксированноеСоответствие(УчастникиГруппыДоступа));
|
||||
Иначе
|
||||
Для Каждого ОписаниеУчастника Из УчастникиГруппыДоступа Цикл
|
||||
ЗначениеКлюча = КлючИЗначение.Ключ;
|
||||
ТипКлюча = ТипЗнч(ЗначениеКлюча);
|
||||
Если ТипКлюча = Контекст.ТипГруппыДоступа Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
ТекущийРезультат = "Ложь";
|
||||
Если ТипКлюча = Контекст.ТипПользователя Тогда
|
||||
ЗаполнитьРезультатДляПользователя(ТекущийРезультат, ЗначениеКлюча, Контекст);
|
||||
ИначеЕсли ТипКлюча = Контекст.ТипГруппыПользователей Тогда
|
||||
ЗаполнитьРезультатДляГруппыПользователей(ТекущийРезультат, ЗначениеКлюча, Контекст);
|
||||
КонецЕсли;
|
||||
Если ТекущийРезультат = "Ложь" Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
Для Каждого ОписаниеУчастника Из ТекущийРезультат Цикл
|
||||
Результат.Вставить(ОписаниеУчастника.Ключ, Истина);
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
ИначеЕсли КлючИЗначение.Ключ = Контекст.ПустаяГруппаДоступа Тогда
|
||||
Результат = "Истина";
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Если Результат.Количество() = 0 Тогда
|
||||
Результат = "Ложь";
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Результат = "Ложь";
|
||||
КонецЕсли;
|
||||
@@ -22994,16 +23170,7 @@
|
||||
Или Условие.Узел = "ИзменениеСпискаРазрешено" И ПравоИзменение = Истина
|
||||
Или Условие.Узел = "ИзменениеОбъектаРазрешено" И ПравоИзменение = Истина Тогда
|
||||
|
||||
Если Контекст.РассчитыватьПраваПользователей Тогда
|
||||
УчастникиГруппыДоступа = Контекст.УчастникиГруппДоступа.Получить(Контекст.ГруппаДоступа);
|
||||
Если УчастникиГруппыДоступа <> Неопределено Тогда
|
||||
Результат = Новый Соответствие(Новый ФиксированноеСоответствие(УчастникиГруппыДоступа));
|
||||
Иначе
|
||||
Результат = "Ложь";
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Результат = "Истина";
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Результат = "Ложь";
|
||||
КонецЕсли;
|
||||
@@ -24675,7 +24842,8 @@
|
||||
|ИЗ
|
||||
| РегистрСведений.ИспользуемыеВидыДоступа КАК ИспользуемыеВидыДоступа
|
||||
|ГДЕ
|
||||
| &ОграничиватьДоступНаУровнеЗаписей
|
||||
| ИспользуемыеВидыДоступа.Используется = ИСТИНА
|
||||
| И &ОграничиватьДоступНаУровнеЗаписей
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ТипЗначенийДоступа
|
||||
@@ -26178,8 +26346,9 @@
|
||||
Процедура ЗапланироватьОбновлениеДоступаПриИзмененииПараметров(СтараяВерсия, Параметры)
|
||||
|
||||
НедоступныеСписки = Новый Массив;
|
||||
СтараяВерсияСтруктурыКэша = "0";
|
||||
Списки = СпискиСИзменениемВерсий(СтараяВерсия,
|
||||
Параметры.ВерсииОграниченийСписков, НедоступныеСписки);
|
||||
Параметры.ВерсииОграниченийСписков, НедоступныеСписки, СтараяВерсияСтруктурыКэша);
|
||||
|
||||
ПараметрыПланирования = ПараметрыПланированияОбновленияДоступа();
|
||||
ПараметрыПланирования.ВерсииОграниченийСписков = Параметры.ВерсииОграниченийСписков;
|
||||
@@ -26211,6 +26380,15 @@
|
||||
ПараметрыПланирования);
|
||||
КонецЕсли;
|
||||
|
||||
Если Списки = Неопределено
|
||||
Или СтараяВерсияСтруктурыКэша = ВерсияСтруктурыКэша() Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
РегистрыСведений.ПараметрыОграниченияДоступа.ПриИзмененииВерсииСтруктурыКэша(
|
||||
СтараяВерсияСтруктурыКэша,
|
||||
Параметры.ХранимыеПараметры.ДляЗаписиОбъектовИПроверкиПрав.Получить());
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Для процедуры ОбновитьТаблицыГруппДоступаДляПодключенныхРасширений и
|
||||
@@ -26367,7 +26545,8 @@
|
||||
КонецПроцедуры
|
||||
|
||||
// Для функции НоваяВерсияПараметровОграниченияДоступа.
|
||||
Функция СпискиСИзменениемВерсий(Версия, НовыеВерсииОграниченийСписков, НедоступныеСписки)
|
||||
Функция СпискиСИзменениемВерсий(Версия, НовыеВерсииОграниченийСписков, НедоступныеСписки,
|
||||
СтараяВерсияСтруктурыКэша)
|
||||
|
||||
Если Не ЗначениеЗаполнено(Версия) Тогда
|
||||
Возврат Неопределено;
|
||||
@@ -26387,6 +26566,10 @@
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Свойства = Новый Структура("ВерсияСтруктурыКэша", СтараяВерсияСтруктурыКэша);
|
||||
ЗаполнитьЗначенияСвойств(Свойства, ПараметрыЗаписи);
|
||||
СтараяВерсияСтруктурыКэша = Свойства.ВерсияСтруктурыКэша;
|
||||
|
||||
Таблица = Новый ТаблицаЗначений;
|
||||
Таблица.Колонки.Добавить("Список", Новый ОписаниеТипов("Строка"));
|
||||
Таблица.Колонки.Добавить("Версия", Новый ОписаниеТипов("Строка"));
|
||||
@@ -26486,11 +26669,11 @@
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
Функция ВерсияСтруктурыКэша()
|
||||
Функция ВерсияСтруктурыКэша() Экспорт
|
||||
|
||||
// Число нужно увеличивать при внесении изменений в состав параметров кэша
|
||||
// (в том числе при изменении версии шаблонов).
|
||||
Возврат "25" + ВерсияПеревода();
|
||||
Возврат "27" + ВерсияПеревода();
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -27261,7 +27444,6 @@
|
||||
ТаблицаСвойств.Колонки.Добавить("Обработан", Новый ОписаниеТипов("Булево"));
|
||||
ТаблицаСвойств.Колонки.Добавить("ОграничениеПоВладельцуВозможно", Новый ОписаниеТипов("Булево"));
|
||||
ТаблицаСвойств.Колонки.Добавить("ОграничениеПоВладельцуВключено", Новый ОписаниеТипов("Булево"));
|
||||
ТаблицаСвойств.Колонки.Добавить("ОграничениеПоВладельцуОтключено", Новый ОписаниеТипов("Булево"));
|
||||
ТаблицаСвойств.Колонки.Добавить("КлючиДоступаПользователей", Новый ОписаниеТипов("Булево"));
|
||||
ТаблицаСвойств.Колонки.Добавить("ЕстьЗависимыеСпискиБезЗаписиКлючейДоступа", Новый ОписаниеТипов("Булево"));
|
||||
ТаблицаСвойств.Колонки.Добавить("ЗависимыеСпискиБезЗаписиКлючейДоступа", Новый ОписаниеТипов("Соответствие"));
|
||||
@@ -27408,7 +27590,8 @@
|
||||
"РассчитыватьПраваПользователей", Истина, Контекст);
|
||||
КонецЕсли;
|
||||
СвойстваСписка.КлючиДоступаПользователей = Истина;
|
||||
Если КлючиДоступаГруппДоступа Тогда
|
||||
Если СвойстваСписка.ОграничениеПоВладельцуВключено
|
||||
И КлючиДоступаГруппДоступа Тогда
|
||||
СвойстваСписка.КлючиДоступаПользователейИГруппДоступа = Истина;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
@@ -27514,7 +27697,6 @@
|
||||
// * Обработан - Булево
|
||||
// * ОграничениеПоВладельцуВозможно - Булево
|
||||
// * ОграничениеПоВладельцуВключено - Булево
|
||||
// * ОграничениеПоВладельцуОтключено - Булево
|
||||
// * КлючиДоступаПользователей - Булево
|
||||
// * ЕстьЗависимыеСпискиБезЗаписиКлючейДоступа - Булево
|
||||
// * КлючиДоступаПользователейИГруппДоступа - Булево
|
||||
@@ -27608,7 +27790,7 @@
|
||||
|
||||
СвойстваЗависимогоСписка.ОграничениеПоВладельцуВключено =
|
||||
СвойстваЗависимогоСписка.ОграничениеПоВладельцуВозможно
|
||||
И Не СвойстваЗависимогоСписка.ОграничениеПоВладельцуОтключено;
|
||||
И Не СвойстваЗависимогоСписка.Параметры.ПолеВладельца.Отключено;
|
||||
|
||||
ЗависимыйСписокСОптимизацией = СвойстваЗависимогоСписка.ОграничениеПоВладельцуВключено;
|
||||
|
||||
@@ -27641,7 +27823,7 @@
|
||||
ТекстОшибки = ТекстОшибкиСЗаголовком(ТекстОшибки, КонтекстОшибки);
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
Иначе
|
||||
СвойстваВедущегоСписка.ОграничениеПоВладельцуОтключено = Истина;
|
||||
СвойстваВедущегоСписка.ОграничениеПоВладельцуВключено = Ложь;
|
||||
СвойстваВедущегоСписка.Параметры.ПолеВладельца.Отключено = Истина;
|
||||
УстановитьСвойствоОграничения(СвойстваВедущегоСписка.ПолноеИмя,
|
||||
"ПолеВладельца", СвойстваВедущегоСписка.Параметры.ПолеВладельца, Контекст);
|
||||
@@ -28950,7 +29132,7 @@
|
||||
// * ОграничениеДоступаВключено - Булево
|
||||
// * ИспользуемыеТипыЗначений - ХранилищеЗначения - смотри функцию ИспользуемыеТипыЗначений.
|
||||
//
|
||||
Функция НоваяСтруктураХранимыхПараметровЗаписи()
|
||||
Функция НоваяСтруктураХранимыхПараметровЗаписи() Экспорт
|
||||
|
||||
ХранимыеПараметрыЗаписи = Новый Структура;
|
||||
ХранимыеПараметрыЗаписи.Вставить("ВерсияСтруктурыКэша", ВерсияСтруктурыКэша());
|
||||
|
||||
@@ -241,15 +241,12 @@
|
||||
Элементы.ТипыВидовДоступа.ТекущаяСтраница = Элементы.ОбычныйВидДоступа;
|
||||
КонецЕсли;
|
||||
|
||||
Если ТекущиеДанные.ВидДоступа = Форма.ВидДоступаПользователи Тогда
|
||||
ШаблонНадписи = ?(ТекущиеДанные.ВсеРазрешены,
|
||||
НСтр("ru = 'Запрещенные значения (%1) - текущий пользователь всегда разрешен'"),
|
||||
НСтр("ru = 'Разрешенные значения (%1) - текущий пользователь всегда разрешен'") );
|
||||
Если ТекущиеДанные.ВидДоступа = Форма.ВидДоступаПользователи
|
||||
Или ТекущиеДанные.ВидДоступа = Форма.ВидДоступаВнешниеПользователи Тогда
|
||||
|
||||
ИначеЕсли ТекущиеДанные.ВидДоступа = Форма.ВидДоступаВнешниеПользователи Тогда
|
||||
ШаблонНадписи = ?(ТекущиеДанные.ВсеРазрешены,
|
||||
НСтр("ru = 'Запрещенные значения (%1) - текущий внешний пользователь всегда разрешен'"),
|
||||
НСтр("ru = 'Разрешенные значения (%1) - текущий внешний пользователь всегда разрешен'") );
|
||||
НСтр("ru = 'Запрещенные значения (%1) - авторизованный пользователь и его группы всегда разрешены'"),
|
||||
НСтр("ru = 'Разрешенные значения (%1) - авторизованный пользователь и его группы всегда разрешены'") );
|
||||
Иначе
|
||||
ШаблонНадписи = ?(ТекущиеДанные.ВсеРазрешены,
|
||||
НСтр("ru = 'Запрещенные значения (%1)'"),
|
||||
|
||||
@@ -22,6 +22,13 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// См. УправлениеДоступомСлужебный.ПредставлениеВидовДоступа
|
||||
Функция ПредставлениеВидовДоступа() Экспорт
|
||||
|
||||
Возврат УправлениеДоступомСлужебный.ПредставлениеВидовДоступа();
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@@ -63,13 +70,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// См. УправлениеДоступомСлужебный.ПредставлениеВидовДоступа
|
||||
Функция ПредставлениеВидовДоступа() Экспорт
|
||||
|
||||
Возврат УправлениеДоступомСлужебный.ПредставлениеВидовДоступа();
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Только для внутреннего использования.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
||||
@@ -3701,8 +3701,6 @@
|
||||
|
||||
Процедура УстановитьНастройкиКомандПечати(КомандыПечати, Владелец)
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
| НастройкиКомандПечати.УникальныйИдентификатор КАК УникальныйИдентификатор
|
||||
|
||||
@@ -1465,8 +1465,8 @@
|
||||
ВложенноеУсловие.УзелДереваДокумента = УзелСУсловием;
|
||||
ВложенноеУсловие.УсловиеОбласти = УсловиеОбласти;
|
||||
ВложенноеУсловие.Индекс = ИндексУзла;
|
||||
КонецЕсли;
|
||||
ДобавлятьУсловныеОбласти = Ложь;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
@@ -3024,7 +3024,26 @@
|
||||
Представление = Формат(Значение, "Л=" + КодЯзыка);
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
ОбъектМетаданных = Значение.Метаданные();
|
||||
|
||||
ЕстьРеквизитНаименование = Метаданные.Справочники.Содержит(ОбъектМетаданных)
|
||||
И ОбъектМетаданных.ОсновноеПредставление = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеСправочника.ВВидеНаименования
|
||||
Или Метаданные.ПланыВидовРасчета.Содержит(ОбъектМетаданных)
|
||||
И ОбъектМетаданных.ОсновноеПредставление = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеВидаРасчета.ВВидеНаименования
|
||||
Или Метаданные.ПланыВидовХарактеристик.Содержит(ОбъектМетаданных)
|
||||
И ОбъектМетаданных.ОсновноеПредставление = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеВидаХарактеристики.ВВидеНаименования
|
||||
Или Метаданные.ПланыСчетов.Содержит(ОбъектМетаданных)
|
||||
И ОбъектМетаданных.ОсновноеПредставление = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеСчета.ВВидеНаименования
|
||||
Или Метаданные.ПланыОбмена.Содержит(ОбъектМетаданных)
|
||||
И ОбъектМетаданных.ОсновноеПредставление = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеПланаОбмена.ВВидеНаименования
|
||||
Или Метаданные.Задачи.Содержит(ОбъектМетаданных)
|
||||
И ОбъектМетаданных.ОсновноеПредставление = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеЗадачи.ВВидеНаименования;
|
||||
|
||||
Если ЕстьРеквизитНаименование Тогда
|
||||
Представление = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Значение, "Наименование", , КодЯзыка);
|
||||
Иначе
|
||||
Представление = Строка(Значение);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Представление;
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
Позиция = ИнформацияПоКолонкам.Количество() + 1;
|
||||
Свойства = УправлениеСвойствами.СвойстваОбъекта(Справочники[МетаданныеСправочника.Имя].ПустаяСсылка());
|
||||
|
||||
ЗначенияСвойств = ДополнительныеЗначенияСвойства(Свойства);
|
||||
ЗначенияСвойств = ДополнительныеЗначенияСвойств(Свойства);
|
||||
СоответствиеЗначений = Новый Соответствие;
|
||||
Для Каждого ДополнительноеЗначение Из ЗначенияСвойств Цикл
|
||||
Значение = СоответствиеЗначений[ДополнительноеЗначение.Свойство];
|
||||
@@ -1752,13 +1752,38 @@
|
||||
// Параметры:
|
||||
// Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - свойство для
|
||||
// которого нужно получить перечисляемые значения.
|
||||
// - Массив
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из СправочникСсылка - значения свойства, если есть.
|
||||
//
|
||||
Функция ДополнительныеЗначенияСвойства(Свойство) Экспорт
|
||||
|
||||
ИмяПроцедуры = "УправлениеСвойствамиСлужебный.ДополнительныеЗначенияСвойства";
|
||||
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(ИмяПроцедуры, "Свойство", Свойство,
|
||||
Тип("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения"));
|
||||
|
||||
ЗначенияСвойств = ДополнительныеЗначенияСвойств(Свойство);
|
||||
Результат = ЗначенияСвойств.ВыгрузитьКолонку("Ссылка");
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает таблицу перечисляемых значений указанного свойства.
|
||||
//
|
||||
// Параметры:
|
||||
// Свойство - Массив из ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - свойства для
|
||||
// которого нужно получить перечисляемые значения.
|
||||
// - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ТаблицаЗначений:
|
||||
// * Ссылка - СправочникСсылка.ЗначенияСвойствОбъектовИерархия
|
||||
// - СправочникСсылка.ЗначенияСвойствОбъектов
|
||||
// * Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения
|
||||
//
|
||||
Функция ДополнительныеЗначенияСвойств(Свойство) Экспорт
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Параметры.Вставить("Свойство", Свойство);
|
||||
Запрос.Текст =
|
||||
@@ -1780,11 +1805,7 @@
|
||||
|ГДЕ
|
||||
| ЗначенияСвойствОбъектов.Владелец В (&Свойство)";
|
||||
|
||||
Если ТипЗнч(Свойство) = Тип("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения") Тогда
|
||||
Результат = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
|
||||
Иначе
|
||||
Результат = Запрос.Выполнить().Выгрузить();
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
@@ -586,6 +586,15 @@
|
||||
// // Простой запуск
|
||||
// ФайловаяСистемаКлиент.ЗапуститьПрограмму("calc");
|
||||
//
|
||||
// Пример:
|
||||
// // Передача аргументов в виде массива:
|
||||
// // Для выполнения Setup.exe -args "PIDKEY =***":
|
||||
// КомандаЗапуска = Новый Массив;
|
||||
// КомандаЗапуска.Добавить("Setup.exe");
|
||||
// КомандаЗапуска.Добавить("- args");
|
||||
// КомандаЗапуска.Добавить("PIDKEY =***");
|
||||
// ФайловаяСистемаКлиент.ЗапуститьПрограмму(КомандаЗапуска);
|
||||
//
|
||||
// // Запуск с ожиданием завершения и получения кода возврата:
|
||||
// ПараметрыЗапускаПрограммы = ФайловаяСистемаКлиент.ПараметрыЗапускаПрограммы();
|
||||
// ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
|
||||
@@ -979,6 +988,7 @@
|
||||
|
|
||||
|Для этого откройте терминал и введите:
|
||||
|%2
|
||||
|
|
||||
|Или обратитесь к администратору.'"),
|
||||
"https://docs.moodle.org/404/en/Universal_Office_Converter_%28unoconv%29",
|
||||
"sudo apt update
|
||||
@@ -1056,11 +1066,11 @@
|
||||
Результат.ОписаниеОшибки + Символы.ПС, "") + Результат.ПотокОшибок);
|
||||
|
||||
Рекомендация = "";
|
||||
Если СтрНайти(ОписаниеОшибки, "no default destination available") > 0 Тогда
|
||||
Если СтрНайти(НРег(ОписаниеОшибки), "no default destination") > 0 Тогда
|
||||
Рекомендация = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Задайте принтер по умолчанию:
|
||||
|- Введите в терминале ""%1"" и выберите из списка нужный принтер.
|
||||
|- Затем введите в терминале: %2 ""имя нужного принтера"".
|
||||
|• Введите в терминале ""%1"" и выберите из списка нужный принтер.
|
||||
|• Затем введите в терминале: %2 ""имя нужного принтера"".
|
||||
|Или обратитесь к администратору.'"),
|
||||
"lpstat -p -d",
|
||||
"lpoptions -d");
|
||||
|
||||
@@ -312,7 +312,7 @@
|
||||
|
||||
Функция ЕстьДоступныеШаблоны(ТипШаблона, Предмет = Неопределено) Экспорт
|
||||
|
||||
Если Не ПравоДоступа("Чтение", Метаданные.Справочники.ШаблоныСообщений) Тогда
|
||||
Если Не ЕстьПравоЧтенияШаблоновСообщений() Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -320,6 +320,7 @@
|
||||
Возврат НЕ Запрос.Выполнить().Пустой();
|
||||
КонецФункции
|
||||
|
||||
|
||||
// Возвращает список объектов метаданных к которым подключена подсистема Шаблоны сообщений.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@@ -442,6 +443,13 @@
|
||||
// См. ПодключаемыеКомандыПереопределяемый.ПриОпределенииКомандПодключенныхКОбъекту.
|
||||
Процедура ПриОпределенииКомандПодключенныхКОбъекту(НастройкиФормы, Источники, ПодключенныеОтчетыИОбработки, Команды) Экспорт
|
||||
|
||||
Если Не ЕстьПравоЧтенияШаблоновСообщений() Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ДоступныеВарианты = ДоступныеВариантыОтправкиШаблоновСообщений();
|
||||
|
||||
Если ДоступныеВарианты.Почта Тогда
|
||||
Команда = Команды.Добавить();
|
||||
Команда.Вид = "Отправить";
|
||||
Команда.Представление = НСтр("ru = 'Почта'");
|
||||
@@ -451,7 +459,9 @@
|
||||
Команда.ТипПараметра = Метаданные.ОпределяемыеТипы.ПредметШаблонаСообщения.Тип;
|
||||
Команда.Обработчик = "ШаблоныСообщенийКлиент.ОтправитьПисьмо";
|
||||
Команда.МножественныйВыбор = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Если ДоступныеВарианты.SMS Тогда
|
||||
Команда = Команды.Добавить();
|
||||
Команда.Вид = "Отправить";
|
||||
Команда.Представление = НСтр("ru = 'SMS'");
|
||||
@@ -460,6 +470,7 @@
|
||||
Команда.ТипПараметра = Метаданные.ОпределяемыеТипы.ПредметШаблонаСообщения.Тип;
|
||||
Команда.Обработчик = "ШаблоныСообщенийКлиент.ОтправитьSMS";
|
||||
Команда.МножественныйВыбор = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -474,6 +485,20 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// Возвращает сведения о доступных вариантах отправки шаблонов сообщений.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ФиксированнаяСтруктура:
|
||||
// * SMS - Булево - если Истина, то можно формировать SMS сообщение по шаблонам.
|
||||
// * Почта - Булево - если Истина, то можно создавать письма по шаблонам.
|
||||
//
|
||||
Функция ДоступныеВариантыОтправкиШаблоновСообщений() Экспорт
|
||||
|
||||
Возврат ШаблоныСообщенийСлужебныйПовтИсп.ДоступныеВариантыОтправкиШаблоновСообщений();
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
// Возвращает сведения об сформированном исходящем письме.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@@ -1039,8 +1064,13 @@
|
||||
Функция ВидыШаблонов() Экспорт
|
||||
|
||||
ТипыШаблонов = Новый СписокЗначений;
|
||||
ДоступныеВарианты = ДоступныеВариантыОтправкиШаблоновСообщений();
|
||||
Если ДоступныеВарианты.Почта Тогда
|
||||
ТипыШаблонов.Добавить(ШаблоныСообщенийКлиентСервер.ИмяШаблонаЭлектронныхПисем(), НСтр("ru = 'Электронного письма'"));
|
||||
КонецЕсли;
|
||||
Если ДоступныеВарианты.SMS Тогда
|
||||
ТипыШаблонов.Добавить(ШаблоныСообщенийКлиентСервер.ИмяШаблонаSMS(), НСтр("ru = 'Сообщения SMS'"));
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТипыШаблонов;
|
||||
|
||||
@@ -3038,6 +3068,12 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЕстьПравоЧтенияШаблоновСообщений()
|
||||
|
||||
Возврат ПравоДоступа("Чтение", Метаданные.Справочники.ШаблоныСообщений);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ОбработатьДанныеДляПереходаНаПодключаемыеКоманды() Экспорт
|
||||
|
||||
ЕстьПодключаемыеКоманды = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды");
|
||||
@@ -3068,3 +3104,4 @@
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -40,4 +40,17 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
Функция ДоступныеВариантыОтправкиШаблоновСообщений() Экспорт
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("SMS",
|
||||
ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОтправкаSMS"));
|
||||
Результат.Вставить("Почта",
|
||||
ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями"));
|
||||
|
||||
Возврат Новый ФиксированнаяСтруктура(Результат);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -1170,6 +1170,7 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Сертификат - СертификатКриптографии - сертификат криптографии.
|
||||
// - ДвоичныеДанные - двоичные данные сертификата в кодировке DER.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
@@ -1189,16 +1190,20 @@
|
||||
//
|
||||
Функция СвойстваСертификата(Сертификат) Экспорт
|
||||
|
||||
ДанныеСертификата = Сертификат;
|
||||
Если ТипЗнч(Сертификат) = Тип("СертификатКриптографии") Тогда
|
||||
ДвоичныеДанныеСертификата = Сертификат.Выгрузить();
|
||||
ИначеЕсли ТипЗнч(Сертификат) = Тип("ФиксированнаяСтруктура") Тогда
|
||||
ДвоичныеДанныеСертификата = Сертификат.Сертификат;
|
||||
ИначеЕсли ТипЗнч(Сертификат) = Тип("ДвоичныеДанные") Тогда
|
||||
ДвоичныеДанныеСертификата = Сертификат;
|
||||
ДанныеСертификата = Новый СертификатКриптографии(Сертификат);
|
||||
Иначе
|
||||
ДвоичныеДанныеСертификата = Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(
|
||||
Сертификат, ЭлектроннаяПодписьСлужебный.РазницаСУниверсальнымВременем(), ДвоичныеДанныеСертификата);
|
||||
ДанныеСертификата, ЭлектроннаяПодписьСлужебный.РазницаСУниверсальнымВременем(), ДвоичныеДанныеСертификата);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -1249,6 +1254,7 @@
|
||||
|
||||
// Усовершенствует подпись до переданного типа, если подпись позволяет.
|
||||
// Добавляет архивную метку времени в архивную подпись (CAdES-A).
|
||||
// Возвращает только изменившиеся в процессе усовершенствования свойства подписи.
|
||||
//
|
||||
// Параметры:
|
||||
// Подпись - ДвоичныеДанные - двоичные данные электронной подписи.
|
||||
@@ -1399,6 +1405,9 @@
|
||||
СвойстваПодписи.ТипПодписи = ПараметрыПодписиКриптографии.ТипПодписи;
|
||||
СвойстваПодписи.СрокДействияПоследнейМеткиВремени = ПараметрыПодписиКриптографии.СрокДействияПоследнейМеткиВремени;
|
||||
СвойстваПодписи.ОписаниеСертификата = ПараметрыПодписиКриптографии.ОписаниеСертификата;
|
||||
СвойстваПодписи.ДатаПодписи =
|
||||
?(ЗначениеЗаполнено(ПараметрыПодписиКриптографии.НеподтвержденнаяДатаПодписи),
|
||||
ПараметрыПодписиКриптографии.НеподтвержденнаяДатаПодписи, ПараметрыПодписиКриптографии.ДатаПодписиИзМетки);
|
||||
Результат.СвойстваПодписи = СвойстваПодписи;
|
||||
Иначе
|
||||
СвойстваСертификата = СвойстваСертификата(ПараметрыПодписиКриптографии.СертификатПоследнейМеткиВремени);
|
||||
|
||||
@@ -981,6 +981,8 @@
|
||||
// * НеПоказыватьРезультаты - Булево - если параметр принимает значение Истина и параметр КонтекстОперации
|
||||
// содержит контекст предыдущей операции, результаты проверки не будут показаны
|
||||
// пользователю.
|
||||
// * ТипПодписи - ПеречислениеСсылка.ТипыПодписиКриптографии - по умолчанию тип, указанный в настройках,
|
||||
// если передан КонтекстОперации, возвращенный процедурой Подписать, то тип берется из него.
|
||||
// * Результат - Неопределено - проверка ни разу не выполнялась.
|
||||
// - Структура - возвращаемое значение. Вставляется перед обработкой результата:
|
||||
// * ПроверкиПройдены - Булево - возвращаемое значение. Устанавливается в процедуре параметра ОбработкаРезультата.
|
||||
|
||||
@@ -191,7 +191,6 @@
|
||||
|
||||
Результат = Новый Структура("АдресВнешний, АдресВнутренний");
|
||||
|
||||
// Локализация
|
||||
ИмяИздателя = СтрЗаменить(ИмяИздателя, " ", "_");
|
||||
ИмяИздателя = СокрЛП(СтрСоединить(СтрРазделить(ИмяИздателя, "!*'();:@&=+$,/?%#[]\|<>", Истина), ""));
|
||||
|
||||
@@ -201,10 +200,6 @@
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ИмяИздателя <> "federalnaya_nalogovaya_sluzhba" Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
ДополнительныеСвойстваСертификата =
|
||||
ЭлектроннаяПодписьСлужебныйКлиентСервер.ДополнительныеСвойстваСертификата(Сертификат, 0);
|
||||
|
||||
@@ -213,8 +208,16 @@
|
||||
КонецЕсли;
|
||||
|
||||
Результат.АдресВнутренний = СтрШаблон("%1/%2", ИмяИздателя, НРег(ДополнительныеСвойстваСертификата.ИдентификаторКлючаУдостоверяющегоЦентра));
|
||||
|
||||
// Локализация
|
||||
|
||||
Если ИмяИздателя <> "federalnaya_nalogovaya_sluzhba" Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Результат.АдресВнешний = СтрШаблон("http://ca.1c.ru/crls/%1.zip", Результат.АдресВнутренний);
|
||||
// Конец локализация
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
@@ -722,8 +725,8 @@
|
||||
|
||||
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.Причина = НСтр(
|
||||
"ru = 'Сертификаты юридическим лицам и индивидуальным предпринимателям выдают только государственные удостоверяющие центры.'");
|
||||
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.Решение = НСтр(
|
||||
"ru = 'Если это тестовый сертификат, поставьте флажок <b>Разрешить подписание</b> в карточке сертификата.'");
|
||||
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.Решение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
|
||||
"ru = 'Если это тестовый сертификат, поставьте флажок <b>Разрешить подписание</b> в <a href=""%1"">карточке сертификата</a>.'"), "ОткрытьСертификат");
|
||||
|
||||
ИначеЕсли ДатаПрекращенияДействия <> Неопределено И (НаДату >= ДатаПрекращенияДействия
|
||||
Или НаДату + 30*24*60*60 >= ДатаПрекращенияДействия И Не КонтекстПроверки.ЭтоПроверкаПодписи) Тогда
|
||||
|
||||
@@ -856,6 +856,16 @@
|
||||
Возврат Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.ПолучитьМакет(ИмяМакета);
|
||||
КонецФункции
|
||||
|
||||
Функция АдресаСерверовМетокВремениПоУмолчанию() Экспорт
|
||||
|
||||
Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда
|
||||
Возврат Обработки["ПрограммыЭлектроннойПодписиИШифрования"].АдресаСерверовМетокВремениПоУмолчанию();
|
||||
КонецЕсли;
|
||||
|
||||
Возврат "";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область ПоставляемыеДанные
|
||||
|
||||
// См. ПоставляемыеДанныеПереопределяемый.ПолучитьОбработчикиПоставляемыхДанных
|
||||
@@ -1022,10 +1032,10 @@
|
||||
КонецЕсли;
|
||||
|
||||
Обработчик = Обработчики.Добавить();
|
||||
Обработчик.Версия = "3.1.9.234";
|
||||
Обработчик.Версия = "3.1.10.185";
|
||||
Обработчик.Комментарий = НСтр(
|
||||
"ru = 'Перенос оповещений об окончании срока действия сертификата, данных заявлений в регистры сведений, заполнение срока действия сертификата с учетом срока действия закрытого ключа.'");
|
||||
Обработчик.Идентификатор = Новый УникальныйИдентификатор("a17c1765-820e-4886-9423-ffc1267d7ff1");
|
||||
"ru = 'Перенос оповещений об окончании срока действия сертификата, данных заявлений в регистры сведений, заполнение срока действия сертификата с учетом срока действия закрытого ключа, очистка некорректно выбранного приложения электронной подписи.'");
|
||||
Обработчик.Идентификатор = Новый УникальныйИдентификатор("a6c42e6b-4824-4f5e-a35d-aa0922b253f3");
|
||||
Обработчик.Процедура = "Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.ОбработатьДанныеДляПереходаНаНовуюВерсию";
|
||||
Обработчик.РежимВыполнения = "Отложенно";
|
||||
Обработчик.ПроцедураЗаполненияДанныхОбновления = "Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
|
||||
@@ -2338,8 +2348,6 @@
|
||||
Функция ПроверитьСертификатНаКорректностьПовторно(МенеджерКриптографииДляПроверки, СертификатДляПроверки,
|
||||
РежимыПроверкиСертификата, ОписаниеОшибки, ВызыватьИсключение, ДействияДляУстранения)
|
||||
|
||||
// Локализация
|
||||
|
||||
ТребуетсяУстановкаСпискаОтзыва = Ложь;
|
||||
|
||||
Если ТипЗнч(МенеджерКриптографииДляПроверки) = Тип("МенеджерКриптографии") Тогда
|
||||
@@ -2363,11 +2371,15 @@
|
||||
АдресСпискаОтзываВнутренний.АдресВнешний, АдресСпискаОтзываВнутренний.АдресВнутренний);
|
||||
Исключение
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось установить список отзыва %1 при проверке сертификата: %2'"),
|
||||
АдресСпискаОтзываВнутренний.АдресВнутренний, ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
|
||||
ЗаписьЖурналаРегистрации(
|
||||
НСтр("ru = 'Электронная подпись.Обновление списков отзыва'",
|
||||
ОбщегоНазначения.КодОсновногоЯзыка()),
|
||||
УровеньЖурналаРегистрации.Ошибка, , ,
|
||||
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
ТекстОшибки);
|
||||
|
||||
Возврат Ложь;
|
||||
КонецПопытки;
|
||||
@@ -2389,8 +2401,6 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецФункции
|
||||
@@ -3272,10 +3282,10 @@
|
||||
ПодписанныйОбъектМетаданные = Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяСобытия = НСтр("ru = 'Электронная подпись.Ошибка усовершенствования подписи'",
|
||||
ИмяСобытия = НСтр("ru = 'Электронная подпись.Усовершенствование подписи'",
|
||||
ОбщегоНазначения.КодОсновногоЯзыка());
|
||||
ЗаписьЖурналаРегистрации(ИмяСобытия,
|
||||
УровеньЖурналаРегистрации.Информация,
|
||||
УровеньЖурналаРегистрации.Предупреждение,
|
||||
ПодписанныйОбъектМетаданные,
|
||||
ПодписанныйОбъект,
|
||||
ОписаниеОшибки);
|
||||
@@ -6846,6 +6856,10 @@
|
||||
+ Символы.ПС + ТехническаяИнформацияОКомпьютере()
|
||||
+ Символы.ПС + Символы.ПС + ТехническаяИнформацияОКомпоненте()
|
||||
+ Символы.ПС + ТехническаяИнформацияОПрограммах();
|
||||
|
||||
ТехническаяИнформация = ТехническаяИнформация
|
||||
+ Символы.ПС + ЭлектроннаяПодписьСлужебныйВызовСервера.РезультатДиагностикиСерверовМетокВремени();
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ТехническаяИнформация = ТехническаяИнформация + Символы.ПС
|
||||
@@ -7107,7 +7121,7 @@
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
МенеджерЗаписи = РегистрыСведений.СпискиОтзываСертификатов.СоздатьМенеджерЗаписи();
|
||||
|
||||
Если ЗначениеЗаполнено(ДанныеИзКэша) И ДанныеИзКэша.ДатаПоследнегоИзменения = ДатаПоследнегоИзменения Тогда
|
||||
Если ЗначениеЗаполнено(ДанныеИзКэша) И ДанныеИзКэша.ДатаПоследнегоИзменения = ДатаПоследнегоИзменения И ДатаПоследнегоИзменения <> Неопределено Тогда
|
||||
|
||||
ЗаполнитьЗначенияСвойств(МенеджерЗаписи, ДанныеИзКэша);
|
||||
ЗаполнитьРезультатЗагрузкиСпискаОтзываИзДанныхКэша(РезультатЗагрузки, ДанныеИзКэша);
|
||||
@@ -7194,6 +7208,10 @@
|
||||
|
||||
Для Каждого ТекущийАдрес Из Адреса Цикл
|
||||
|
||||
Если СтрНачинаетсяС(НРег(ТекущийАдрес), "ldap://") Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПолученияФайла = МодульПолучениеФайловИзИнтернетаКлиентСервер.ПараметрыПолученияФайла();
|
||||
|
||||
Если ЗначениеЗаполнено(ДанныеИзКэша)
|
||||
@@ -7465,7 +7483,8 @@
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
ДатаПоследнегоИзмененияСтрока = Заголовки["Last-Modified"];
|
||||
Заголовки = СтандартныеПодсистемыСервер.HTTPЗаголовкиВНижнийРегистр(Заголовки);
|
||||
ДатаПоследнегоИзмененияСтрока = Заголовки["last-modified"];
|
||||
Если ДатаПоследнегоИзмененияСтрока <> Неопределено Тогда
|
||||
Возврат ОбщегоНазначенияКлиентСервер.ДатаRFC1123(ДатаПоследнегоИзмененияСтрока);
|
||||
КонецЕсли;
|
||||
@@ -7527,6 +7546,44 @@
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
Если ОшибкаПоКлассификатору.ДействияДляУстранения.Найти(
|
||||
"ДиагностикаСерверовМетокВремениСервер") <> Неопределено Тогда
|
||||
|
||||
Решение.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
|
||||
НСтр("ru='<a href = ""%1"">Проверьте доступность</a> серверов меток времени на сервере %2.'"),
|
||||
"ДиагностикаСерверовМетокВремениСервер", ИмяКомпьютера()));
|
||||
КонецЕсли;
|
||||
|
||||
Если ОшибкаПоКлассификатору.ДействияДляУстранения.Найти(
|
||||
"ДиагностикаСерверовМетокВремениКлиент") <> Неопределено Тогда
|
||||
|
||||
Если ОбщегоНазначения.ЭтоВебКлиент() Тогда
|
||||
|
||||
АдресаСерверовМетокВремени = ЭлектроннаяПодпись.ОбщиеНастройки().АдресаСерверовМетокВремени;
|
||||
|
||||
Массив = Новый Массив;
|
||||
|
||||
Для Каждого АдресСервера Из АдресаСерверовМетокВремени Цикл
|
||||
|
||||
СтруктураСсылки = ОбщегоНазначенияКлиентСервер.СтруктураURI(АдресСервера);
|
||||
Массив.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='<a href = ""%1"">%1</a>'"), АдресСервера));
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Решение.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
|
||||
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='Проверьте доступность серверов меток времени на компьютере: %1.'"),
|
||||
СтрСоединить(Массив, ", "))));
|
||||
|
||||
Иначе
|
||||
Решение.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
|
||||
НСтр("ru='<a href = ""%1"">Проверьте доступность</a> серверов меток времени на компьютере.'"),
|
||||
"ДиагностикаСерверовМетокВремениКлиент"));
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Решение.Количество() > 0 Тогда
|
||||
Результат.ОшибкаПоКлассификатору.Решение = Новый ФорматированнаяСтрока(Решение);
|
||||
КонецЕсли;
|
||||
@@ -7612,8 +7669,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Локализация
|
||||
|
||||
Процедура УстановитьСписокОтзываСертификата(Сертификат, Адреса = Неопределено, АдресВнутренний = Неопределено) Экспорт
|
||||
|
||||
ОбъектКомпоненты = ОбъектВнешнейКомпонентыExtraCryptoAPI();
|
||||
@@ -7667,8 +7722,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбновлениеИнформационнойБазы
|
||||
|
||||
@@ -322,6 +322,27 @@
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если Параметры.Операция = "Подписание" Тогда
|
||||
|
||||
ДвоичныеДанныеСертификата = СертификатКриптографии.Выгрузить();
|
||||
|
||||
СвойстваСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(
|
||||
СертификатКриптографии, ЭлектроннаяПодписьСлужебный.РазницаСУниверсальнымВременем(), ДвоичныеДанныеСертификата);
|
||||
СвойстваСертификата.Вставить("ДвоичныеДанные", ДвоичныеДанныеСертификата);
|
||||
|
||||
АлгоритмСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(
|
||||
ДвоичныеДанныеСертификата, Ложь, Истина);
|
||||
АлгоритмСоответствует = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСоответствуетСертификату(
|
||||
СвойстваСертификата.Представление, АлгоритмСертификата, МенеджерКриптографии.АлгоритмПодписи);
|
||||
|
||||
Если АлгоритмСоответствует <> Истина Тогда
|
||||
|
||||
ОшибкаНаСервере.Вставить("ОписаниеОшибки", АлгоритмСоответствует);
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
Данные = ПолучитьИзВременногоХранилища(Параметры.ЭлементДанныхДляСервера.Данные);
|
||||
Исключение
|
||||
@@ -436,11 +457,6 @@
|
||||
|
||||
Если Параметры.Операция = "Подписание" Тогда
|
||||
|
||||
ДвоичныеДанныеСертификата = СертификатКриптографии.Выгрузить();
|
||||
|
||||
СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии);
|
||||
СвойстваСертификата.Вставить("ДвоичныеДанные", ДвоичныеДанныеСертификата);
|
||||
|
||||
Если ЭлектроннаяПодпись.ДоступнаУсовершенствованнаяПодпись() Тогда
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебный.СвойстваПодписиЧтениеМенеджеромКриптографии(
|
||||
ДвоичныеДанныеРезультата, МенеджерКриптографии, Ложь);
|
||||
@@ -1302,4 +1318,19 @@
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
Функция РезультатДиагностикиСерверовМетокВремени() Экспорт
|
||||
|
||||
АдресаСерверовМетокВремени = ЭлектроннаяПодпись.ОбщиеНастройки().АдресаСерверовМетокВремени;
|
||||
|
||||
Если АдресаСерверовМетокВремени.Количество() = 0 Тогда
|
||||
Возврат НСтр("ru = 'Адреса серверов меток времени не заполнены в настройках электронной подписи.'");
|
||||
Иначе
|
||||
СтрокаПодключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Подключение к серверам меток времени на сервере <%1>.'"), ИмяКомпьютера());
|
||||
|
||||
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.ДиагностикаСерверовМетокВремени(АдресаСерверовМетокВремени, СтрокаПодключения);
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -341,6 +341,36 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДиагностикаСерверовМетокВремени(Место = Неопределено) Экспорт
|
||||
|
||||
РезультатДиагностики = Новый Массив;
|
||||
|
||||
АдресаСерверовМетокВремени = ЭлектроннаяПодписьКлиент.ОбщиеНастройки().АдресаСерверовМетокВремени;
|
||||
|
||||
Если АдресаСерверовМетокВремени.Количество() = 0 Тогда
|
||||
РезультатДиагностики.Добавить(НСтр(
|
||||
"ru = 'Адреса серверов меток времени не заполнены в настройках электронной подписи.'"));
|
||||
Иначе
|
||||
Если Место = "Клиент" Или Место = Неопределено Тогда
|
||||
РезультатДиагностики.Добавить(РезультатДиагностикиСерверовМетокВремени());
|
||||
КонецЕсли;
|
||||
|
||||
Если Место = "Сервер" Или Место = Неопределено
|
||||
И ЭлектроннаяПодписьКлиент.ОбщиеНастройки().СоздаватьЭлектронныеПодписиНаСервере Тогда
|
||||
Если РезультатДиагностики.Количество() > 0 Тогда
|
||||
РезультатДиагностики.Добавить(Символы.ПС);
|
||||
КонецЕсли;
|
||||
РезультатДиагностики.Добавить(
|
||||
ЭлектроннаяПодписьСлужебныйВызовСервера.РезультатДиагностикиСерверовМетокВремени());
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ТекстовыйДокумент = Новый ТекстовыйДокумент;
|
||||
ТекстовыйДокумент.УстановитьТекст(СтрСоединить(РезультатДиагностики, Символы.ПС));
|
||||
ТекстовыйДокумент.Показать(НСтр("ru = 'Диагностика доступности серверов меток времени'"),);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@@ -2133,8 +2163,6 @@
|
||||
ОписаниеОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
|
||||
ОшибкаПоКлассификатору = ЭлектроннаяПодписьСлужебныйКлиентПовтИсп.ОшибкаПоКлассификатору(ОписаниеОшибки);
|
||||
|
||||
// Локализация
|
||||
|
||||
Если ОшибкаПоКлассификатору <> Неопределено И ЗначениеЗаполнено(ОшибкаПоКлассификатору.ДействияДляУстранения) Тогда
|
||||
|
||||
Действие = Неопределено;
|
||||
@@ -2156,16 +2184,17 @@
|
||||
ИмяИздателя = СтроковыеФункцииКлиент.СтрокаЛатиницей(ИмяИздателя);
|
||||
АдресСпискаОтзываВнутренний = ЭлектроннаяПодписьСлужебныйКлиентСервер.АдресСпискаОтзываВнутренний(
|
||||
ИмяИздателя, Контекст.ДанныеСертификата);
|
||||
Если ЗначениеЗаполнено(АдресСпискаОтзываВнутренний.АдресВнутренний) Тогда
|
||||
|
||||
ПараметрыУстановкиСпискаОтзыва = ПараметрыУстановкиСпискаОтзыва(
|
||||
Контекст.СертификатКриптографии);
|
||||
ПараметрыУстановкиСпискаОтзыва.Адреса = АдресСпискаОтзываВнутренний.АдресВнешний;
|
||||
ПараметрыУстановкиСпискаОтзыва.АдресВнутренний = АдресСпискаОтзываВнутренний.АдресВнутренний;
|
||||
ПараметрыУстановкиСпискаОтзыва.ОповещениеОЗавершении = Новый ОписаниеОповещения("ПроверитьСертификатПовторно",
|
||||
ЭтотОбъект, Контекст);
|
||||
ПараметрыУстановкиСпискаОтзыва.ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Для проверки сертификата требуется установка списка отзыва с помощью внешней компоненты %1.'"),
|
||||
"ExtraCryptoAPI");
|
||||
Если ЗначениеЗаполнено(АдресСпискаОтзываВнутренний.АдресВнутренний) Тогда
|
||||
ПараметрыУстановкиСпискаОтзыва.Адреса = АдресСпискаОтзываВнутренний.АдресВнешний;
|
||||
ПараметрыУстановкиСпискаОтзыва.АдресВнутренний = АдресСпискаОтзываВнутренний.АдресВнутренний;
|
||||
УстановитьСписокОтзываСертификата(ПараметрыУстановкиСпискаОтзыва);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
@@ -2175,8 +2204,6 @@
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
// Конец локализация
|
||||
|
||||
Если ОшибкаПоКлассификатору <> Неопределено Тогда
|
||||
ОбработатьОшибкуПоКлассификатору(ОписаниеОшибки, Контекст.ТребуетПроверкиНаКлиенте, Контекст, ОшибкаПоКлассификатору);
|
||||
КонецЕсли;
|
||||
@@ -4022,6 +4049,7 @@
|
||||
СерверныеПараметры.Вставить("ЗаголовокФормы");
|
||||
СерверныеПараметры.Вставить("ПроверкаПриВыборе");
|
||||
СерверныеПараметры.Вставить("ПараметрыДополнительныхПроверок");
|
||||
СерверныеПараметры.Вставить("ТипПодписи");
|
||||
|
||||
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
|
||||
|
||||
@@ -4033,6 +4061,12 @@
|
||||
ДополнительныеПараметры.Вставить("БезПодтверждения");
|
||||
КонецЕсли;
|
||||
|
||||
НачалоИмениФормы = "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Форма.";
|
||||
|
||||
Если ДополнительныеПараметры.КонтекстОперации.ИмяФормы = НачалоИмениФормы + "ПодписаниеДанных" Тогда
|
||||
ДополнительныеПараметры.Вставить("ТипПодписи", ДополнительныеПараметры.КонтекстОперации.ТипПодписи);
|
||||
КонецЕсли;
|
||||
|
||||
УказанКонтекстДругойОперации = Истина;
|
||||
ДополнительныеПараметры.БезПодтверждения = Истина;
|
||||
|
||||
@@ -5224,6 +5258,28 @@
|
||||
Контекст.СертификатКриптографии));
|
||||
Контекст.СвойстваСертификата.Вставить("ДвоичныеДанные", ВыгруженныеДанные);
|
||||
|
||||
Если Контекст.Операция = "Подписание" И ТипЗнч(Контекст.МенеджерКриптографии) = Тип("МенеджерКриптографии")
|
||||
И ЗначениеЗаполнено(Контекст.МенеджерКриптографии.АлгоритмПодписи) Тогда
|
||||
|
||||
АлгоритмСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(
|
||||
ВыгруженныеДанные, Ложь, Истина);
|
||||
|
||||
|
||||
Результат = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСоответствуетСертификату(
|
||||
Контекст.СвойстваСертификата.Представление, АлгоритмСертификата,
|
||||
Контекст.МенеджерКриптографии.АлгоритмПодписи);
|
||||
|
||||
Если Результат <> Истина Тогда
|
||||
|
||||
ОшибкаНаКлиенте = Новый Структура("ОписаниеОшибки", Результат);
|
||||
ВыполнитьОбработкуОповещения(Контекст.Оповещение, Новый Структура("Ошибка", ОшибкаНаКлиенте));
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ВыполнитьНаСторонеЦиклЗапуск(Контекст);
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -6569,6 +6625,9 @@
|
||||
СвойстваПодписи.Вставить("ТипПодписи", ПараметрыПодписи.ТипПодписи);
|
||||
СвойстваПодписи.Вставить("СрокДействияПоследнейМеткиВремени", ПараметрыПодписи.СрокДействияПоследнейМеткиВремени);
|
||||
СвойстваПодписи.Вставить("ОписаниеСертификата", ПараметрыПодписи.ОписаниеСертификата);
|
||||
СвойстваПодписи.Вставить("ДатаПодписи",
|
||||
?(ЗначениеЗаполнено(ПараметрыПодписи.НеподтвержденнаяДатаПодписи),
|
||||
ПараметрыПодписи.НеподтвержденнаяДатаПодписи, ПараметрыПодписи.ДатаПодписиИзМетки));
|
||||
|
||||
ВыполнитьНаСторонеЦиклПослеУсовершенствования(СвойстваПодписи, Контекст);
|
||||
КонецЕсли;
|
||||
@@ -6585,6 +6644,9 @@
|
||||
СвойстваПодписи.Вставить("ТипПодписи", ПараметрыПодписи.ТипПодписи);
|
||||
СвойстваПодписи.Вставить("СрокДействияПоследнейМеткиВремени", ПараметрыПодписи.СрокДействияПоследнейМеткиВремени);
|
||||
СвойстваПодписи.Вставить("ОписаниеСертификата", ПараметрыПодписи.ОписаниеСертификата);
|
||||
СвойстваПодписи.Вставить("ДатаПодписи",
|
||||
?(ЗначениеЗаполнено(ПараметрыПодписи.НеподтвержденнаяДатаПодписи),
|
||||
ПараметрыПодписи.НеподтвержденнаяДатаПодписи, ПараметрыПодписи.ДатаПодписиИзМетки));
|
||||
|
||||
Если Результат = Истина Тогда
|
||||
ВыполнитьНаСторонеЦиклПослеУсовершенствования(СвойстваПодписи, Контекст);
|
||||
@@ -6617,23 +6679,19 @@
|
||||
Если Контекст.НаСторонеКлиента Тогда
|
||||
|
||||
НовыеСвойстваПодписи = ЭлектроннаяПодписьКлиентСервер.НовыеСвойстваПодписи();
|
||||
ЗаполнитьЗначенияСвойств(НовыеСвойстваПодписи, СвойстваПодписи);
|
||||
ОбновитьПодпись = Ложь;
|
||||
|
||||
Если Контекст.ЭлементДанных.Свойство("НеТребуетсяПродление") Тогда
|
||||
Если ЭлементДанных.ТипПодписи <> СвойстваПодписи.ТипПодписи Тогда
|
||||
ЭлементДанных.ТипПодписи = СвойстваПодписи.ТипПодписи;
|
||||
НовыеСвойстваПодписи.ТипПодписи = СвойстваПодписи.ТипПодписи;
|
||||
ОбновитьПодпись = Истина;
|
||||
КонецЕсли;
|
||||
Если ЭлементДанных.СрокДействияПоследнейМеткиВремени <> СвойстваПодписи.СрокДействияПоследнейМеткиВремени Тогда
|
||||
ЭлементДанных.СрокДействияПоследнейМеткиВремени = СвойстваПодписи.СрокДействияПоследнейМеткиВремени;
|
||||
НовыеСвойстваПодписи.СрокДействияПоследнейМеткиВремени = СвойстваПодписи.СрокДействияПоследнейМеткиВремени;
|
||||
ОбновитьПодпись = Истина;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
НовыеСвойстваПодписи.Подпись = СвойстваПодписи.Подпись;
|
||||
НовыеСвойстваПодписи.ТипПодписи = СвойстваПодписи.ТипПодписи;
|
||||
НовыеСвойстваПодписи.СрокДействияПоследнейМеткиВремени = СвойстваПодписи.СрокДействияПоследнейМеткиВремени;
|
||||
ОбновитьПодпись = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -9243,7 +9301,9 @@
|
||||
|
||||
Процедура ПослеСбораТехническойИнформацииОПрограммах(ИнформацияОПрограммах, Контекст) Экспорт
|
||||
|
||||
Контекст.СопроводительныйТекст = Контекст.СопроводительныйТекст + ИнформацияОПрограммах;
|
||||
Контекст.СопроводительныйТекст = Контекст.СопроводительныйТекст + ИнформацияОПрограммах + Символы.ПС
|
||||
+ РезультатДиагностикиСерверовМетокВремени() + Символы.ПС;
|
||||
|
||||
|
||||
Если Контекст.ВыгрузитьАрхив Тогда
|
||||
Контекст.Вставить("АдресАрхива", ЭлектроннаяПодписьСлужебныйВызовСервера.АдресАрхиваТехническойИнформации(
|
||||
@@ -9626,6 +9686,13 @@
|
||||
|
||||
#Область УстановкаСпискаОтзыва
|
||||
|
||||
// Параметры:
|
||||
// Контекст - Структура:
|
||||
// * Сертификат - ДвоичныеДанные
|
||||
// - Строка - адрес во временном хранилище
|
||||
// - Строка - Сертификат base64 строка
|
||||
// - СертификатКриптографии
|
||||
//
|
||||
Асинх Процедура УстановитьСписокОтзываСертификатаПослеПодключенияКомпоненты(ОбъектКомпоненты, Контекст) Экспорт
|
||||
|
||||
Если ТипЗнч(ОбъектКомпоненты) = Тип("Строка") Тогда
|
||||
@@ -9633,8 +9700,18 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(Контекст.Сертификат) = Тип("ДвоичныеДанные") Тогда
|
||||
ДвоичныеДанныеСертификата = Контекст.Сертификат;
|
||||
ИначеЕсли ТипЗнч(Контекст.Сертификат) = Тип("СертификатКриптографии") Тогда
|
||||
ДвоичныеДанныеСертификата = Ждать Контекст.Сертификат.ВыгрузитьАсинх();
|
||||
ИначеЕсли ЭтоАдресВременногоХранилища(Контекст.Сертификат) Тогда
|
||||
ДвоичныеДанныеСертификата = ПолучитьИзВременногоХранилища(Контекст.Сертификат);
|
||||
Иначе
|
||||
ДвоичныеДанныеСертификата = Base64Значение(Контекст.Сертификат);
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Контекст.Адреса) Тогда
|
||||
СвойстваСертификатаРасширенные = Ждать ПолучитьСвойстваСертификатаАсинх(Контекст.Сертификат, ОбъектКомпоненты);
|
||||
СвойстваСертификатаРасширенные = Ждать ПолучитьСвойстваСертификатаАсинх(ДвоичныеДанныеСертификата, ОбъектКомпоненты);
|
||||
|
||||
Если ЗначениеЗаполнено(СвойстваСертификатаРасширенные.Ошибка) Тогда
|
||||
ОбработатьОшибкуУстановкиСпискаОтзыва(СвойстваСертификатаРасширенные.Ошибка, Контекст);
|
||||
@@ -9661,7 +9738,7 @@
|
||||
Контекст.Вставить("ОбъектКомпоненты", ОбъектКомпоненты);
|
||||
Контекст.Вставить("АдресРесурса", Параметры.АдресРесурса);
|
||||
|
||||
СвойстваСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.ДополнительныеСвойстваСертификата(Контекст.Сертификат);
|
||||
СвойстваСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.ДополнительныеСвойстваСертификата(ДвоичныеДанныеСертификата);
|
||||
Контекст.Вставить("ИдентификаторКлючаУдостоверяющегоЦентра", СвойстваСертификата.ИдентификаторКлючаУдостоверяющегоЦентра);
|
||||
|
||||
ДлительнаяОперация = ЭлектроннаяПодписьСлужебныйВызовСервера.НачатьСкачиваниеФайлаНаСервере(Параметры);
|
||||
@@ -10906,6 +10983,21 @@
|
||||
УдалитьСертификатИзЛокальногоХранилища(Параметры.ДанныеСертификата);
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ДиагностикаСерверовМетокВремениСервер" Тогда
|
||||
|
||||
ДиагностикаСерверовМетокВремени("Сервер");
|
||||
|
||||
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ДиагностикаСерверовМетокВремениКлиент" Тогда
|
||||
|
||||
ДиагностикаСерверовМетокВремени("Клиент");
|
||||
|
||||
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ОткрытьНастройкиЭлектроннойПодписи" Тогда
|
||||
|
||||
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.НастройкиПрограммы") Тогда
|
||||
МодульНастройкиПрограммыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("НастройкиПрограммыКлиент");
|
||||
МодульНастройкиПрограммыКлиент.ОткрытьОбщиеНастройки();
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "УстановитьКомпоненту" Тогда
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("ОповеститьОбУспешномПодключенииКомпоненты", ЭтотОбъект);
|
||||
@@ -10916,7 +11008,7 @@
|
||||
ИначеЕсли СтрНачинаетсяС(НавигационнаяСсылкаФорматированнойСтроки, "e1cib") Тогда
|
||||
СтандартнаяОбработка = Истина;
|
||||
Иначе
|
||||
ПоказатьПредупреждение(, НСтр("ru = 'Действие временно недоступно.'"));
|
||||
ПоказатьПредупреждение(, НСтр("ru = 'Действие будет доступно в следующих обновлениях приложения'"));
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -11198,7 +11290,7 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Асинх Функция СвойстваПодписиЧтениеМенеджеромКриптографии(Подпись, МенеджерКриптографии, ПрочитатьСертификаты)
|
||||
Асинх Функция СвойстваПодписиЧтениеМенеджеромКриптографии(Подпись, МенеджерКриптографии, ПрочитатьСертификаты) Экспорт
|
||||
|
||||
Результат = ЭлектроннаяПодписьСлужебныйКлиентСервер.РезультатЧтенияСвойствПодписи();
|
||||
|
||||
@@ -11458,5 +11550,28 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция РезультатДиагностикиСерверовМетокВремени()
|
||||
|
||||
АдресаСерверовМетокВремени = ЭлектроннаяПодписьКлиент.ОбщиеНастройки().АдресаСерверовМетокВремени;
|
||||
|
||||
Если АдресаСерверовМетокВремени.Количество() = 0 Тогда
|
||||
|
||||
Возврат НСтр("ru = 'Адреса серверов меток времени не заполнены в настройках электронной подписи.'");
|
||||
|
||||
Иначе
|
||||
#Если ВебКлиент Тогда
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
|
||||
"ru = 'Диагностика серверов меток времени недоступна при работе в веб-клиенте. Попробуйте в браузере скачать файл по ссылке.
|
||||
|%1'"), СтрСоединить(АдресаСерверовМетокВремени, Символы.ПС));
|
||||
|
||||
#Иначе
|
||||
СтрокаПодключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Подключение к серверам меток времени на компьютере <%1>.'"), ИмяКомпьютера());
|
||||
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.ДиагностикаСерверовМетокВремени(АдресаСерверовМетокВремени, СтрокаПодключения);
|
||||
#КонецЕсли
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -1746,14 +1746,14 @@
|
||||
Если Подпись.МеткаВремениПодписи <> Неопределено Тогда
|
||||
СертификатПоследнейМеткиВремени = Подпись.МеткаВремениПодписи.Подписи[0].СертификатПодписи; // СертификатКриптографии
|
||||
СрокДействияПоследнейМеткиВремени = СертификатПоследнейМеткиВремени.ДатаОкончания;
|
||||
ДатаПодписиИзМетки = Мин(ДатаПодписиИзМетки, Подпись.МеткаВремениПодписи.Дата + РазницаСУниверсальнымВременем);
|
||||
ДатаПодписиИзМетки = Мин(ДатаПодписиИзМетки, Подпись.МеткаВремениПодписи.Дата);
|
||||
ПараметрыПодписи.ДатаПоследнейМеткиВремени = Подпись.МеткаВремениПодписи.Дата + РазницаСУниверсальнымВременем;
|
||||
КонецЕсли;
|
||||
|
||||
Если Подпись.МеткаВремениДанныхПроверкиПодписи <> Неопределено Тогда
|
||||
СертификатПоследнейМеткиВремени = Подпись.МеткаВремениДанныхПроверкиПодписи.Подписи[0].СертификатПодписи; // СертификатКриптографии
|
||||
СрокДействияПоследнейМеткиВремени = СертификатПоследнейМеткиВремени.ДатаОкончания;
|
||||
ДатаПодписиИзМетки = Мин(ДатаПодписиИзМетки, Подпись.МеткаВремениДанныхПроверкиПодписи.Дата + РазницаСУниверсальнымВременем);
|
||||
ДатаПодписиИзМетки = Мин(ДатаПодписиИзМетки, Подпись.МеткаВремениДанныхПроверкиПодписи.Дата);
|
||||
ПараметрыПодписи.ДатаПоследнейМеткиВремени = Подпись.МеткаВремениДанныхПроверкиПодписи.Дата + РазницаСУниверсальнымВременем;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -1761,8 +1761,8 @@
|
||||
ИндексПоследнейМетки = Подпись.АрхивныеМеткиВремени.ВГраница();
|
||||
СертификатПоследнейМеткиВремени = Подпись.АрхивныеМеткиВремени[ИндексПоследнейМетки].Подписи[0].СертификатПодписи; // СертификатКриптографии
|
||||
СрокДействияПоследнейМеткиВремени = СертификатПоследнейМеткиВремени.ДатаОкончания;
|
||||
ДатаПодписиИзМетки = Мин(ДатаПодписиИзМетки, Подпись.АрхивныеМеткиВремени[0].Дата + РазницаСУниверсальнымВременем);
|
||||
ПараметрыПодписи.ДатаПоследнейМеткиВремени = Подпись.АрхивныеМеткиВремени[ИндексПоследнейМетки].Дата;
|
||||
ДатаПодписиИзМетки = Мин(ДатаПодписиИзМетки, Подпись.АрхивныеМеткиВремени[0].Дата);
|
||||
ПараметрыПодписи.ДатаПоследнейМеткиВремени = Подпись.АрхивныеМеткиВремени[ИндексПоследнейМетки].Дата + РазницаСУниверсальнымВременем;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(СрокДействияПоследнейМеткиВремени) Тогда
|
||||
@@ -1776,7 +1776,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
Если ДатаПодписиИзМетки <> Дата(3999, 12, 31) Тогда
|
||||
ПараметрыПодписи.ДатаПодписиИзМетки = ДатаПодписиИзМетки;
|
||||
ПараметрыПодписи.ДатаПодписиИзМетки = ДатаПодписиИзМетки + РазницаСУниверсальнымВременем;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ПараметрыПодписи;
|
||||
@@ -1865,9 +1865,18 @@
|
||||
Или ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.РасширеннаяДолгосрочнаяCAdESXLongType2")
|
||||
Или ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.АрхивнаяCAdESAv3") Тогда
|
||||
|
||||
Граница = Результат.АдресаСерверовМетокВремени.ВГраница();
|
||||
Для Счетчик = 0 По Граница Цикл
|
||||
ТекущийИндекс = Граница - Счетчик;
|
||||
СтруктураURI = ОбщегоНазначенияКлиентСервер.СтруктураURI(Результат.АдресаСерверовМетокВремени[ТекущийИндекс]);
|
||||
Если СтруктураURI.ИмяСервера = "" Тогда
|
||||
Результат.АдресаСерверовМетокВремени.Удалить(ТекущийИндекс);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если Результат.АдресаСерверовМетокВремени.Количество() = 0 Тогда
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='Для создания подписи типа ""%1"" заполните адреса серверов штампов времени.'"), ТипПодписи);
|
||||
НСтр("ru='Для создания подписи с типом ""%1"" заполните адреса серверов меток времени.'"), ТипПодписи);
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли ТипПодписи <> ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.БазоваяCAdESBES")
|
||||
@@ -3533,7 +3542,7 @@
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
ИначеЕсли ТипЗнч(Сертификат) = Тип("СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда
|
||||
ДанныеСертификата = ЭлектроннаяПодписьСлужебныйВызовСервера.ДанныеСертификата(ЭлектроннаяПодписьСлужебныйВызовСервера.ДанныеСертификата(Сертификат));
|
||||
ДанныеСертификата = ЭлектроннаяПодписьСлужебныйВызовСервера.ДанныеСертификата(Сертификат);
|
||||
ИначеЕсли ТипЗнч(Сертификат) = Тип("ДвоичныеДанные") Тогда
|
||||
ДанныеСертификата = Сертификат;
|
||||
Иначе
|
||||
@@ -3567,11 +3576,197 @@
|
||||
|
||||
Структура = Новый Структура;
|
||||
Структура.Вставить("ПроверитьСертификатВЛокальномХранилищеКлиента", Ложь);
|
||||
Структура.Вставить("ДиагностикаСерверовМетокВремениКлиент", Ложь);
|
||||
|
||||
Возврат Структура;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДиагностикаСерверовМетокВремени(АдресаСерверовМетокВремени, СтрокаПодключения) Экспорт
|
||||
|
||||
Массив = Новый Массив;
|
||||
Массив.Добавить(СтрокаПодключения);
|
||||
Массив.Добавить(Символы.ПС);
|
||||
|
||||
Для Каждого Адрес Из АдресаСерверовМетокВремени Цикл
|
||||
|
||||
СообщениеОбОшибке = ДиагностикаСервераМетокВремени(Адрес);
|
||||
|
||||
Если ЗначениеЗаполнено(СообщениеОбОшибке) Тогда
|
||||
Массив.Добавить(СообщениеОбОшибке);
|
||||
Иначе
|
||||
Массив.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 - доступен.'"), Адрес));
|
||||
КонецЕсли;
|
||||
|
||||
Массив.Добавить(Символы.ПС);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СтрСоединить(Массив, Символы.ПС);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Функция для диагностики сервера меток времени.
|
||||
//
|
||||
// Параметры:
|
||||
// URL - Строка - url файла в формате: [Протокол://]<Сервер>/<Путь к файлу на сервере>.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * СообщениеОбОшибке - Строка
|
||||
//
|
||||
Функция ДиагностикаСервераМетокВремени(Знач URL, Перенаправления = Неопределено)
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр(
|
||||
"ru = 'Диагностика недоступна при работе в веб-клиенте. Попробуйте в браузере скачать файл по ссылке %1'"),
|
||||
URL);
|
||||
|
||||
#Иначе
|
||||
|
||||
Если Перенаправления = Неопределено Тогда
|
||||
Перенаправления = Новый Массив;
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураURI = ОбщегоНазначенияКлиентСервер.СтруктураURI(URL);
|
||||
|
||||
Сервер = СтруктураURI.Хост;
|
||||
ПутьНаСервере = СтруктураURI.ПутьНаСервере;
|
||||
Протокол = СтруктураURI.Схема;
|
||||
|
||||
Если ПустаяСтрока(Протокол) Тогда
|
||||
Протокол = "http";
|
||||
КонецЕсли;
|
||||
|
||||
Если Протокол = "https" Тогда
|
||||
ЗащищенноеСоединение = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗащищенноеСоединение = Истина Тогда
|
||||
ЗащищенноеСоединение = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение();
|
||||
ИначеЕсли ЗащищенноеСоединение = Ложь Тогда
|
||||
ЗащищенноеСоединение = Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Порт = СтруктураURI.Порт;
|
||||
Прокси = Неопределено;
|
||||
|
||||
Попытка
|
||||
|
||||
Соединение = Новый HTTPСоединение(Сервер, Порт, , , Прокси, 7, ЗащищенноеСоединение);
|
||||
|
||||
Сервер = Соединение.Сервер;
|
||||
Порт = Соединение.Порт;
|
||||
|
||||
ЗапросHTTP = Новый HTTPЗапрос(ПутьНаСервере, Новый Соответствие);
|
||||
ЗапросHTTP.Заголовки.Вставить("Accept-Charset", "UTF-8");
|
||||
ЗапросHTTP.Заголовки.Вставить("X-1C-Request-UID", Строка(Новый УникальныйИдентификатор));
|
||||
ОтветHTTP = Соединение.Получить(ЗапросHTTP);
|
||||
|
||||
Исключение
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось установить HTTP-соединение с сервером %1:%2
|
||||
|по причине:
|
||||
|%3'"), Сервер, Формат(Порт, "ЧГ="), ОбработкаОшибок.КраткоеПредставлениеОшибки(
|
||||
ИнформацияОбОшибке()));
|
||||
|
||||
Возврат ТекстОшибки;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
Попытка
|
||||
|
||||
Если ОтветHTTP.КодСостояния = 301 // 301 Moved Permanently
|
||||
Или ОтветHTTP.КодСостояния = 302 // 302 Found, 302 Moved Temporarily
|
||||
Или ОтветHTTP.КодСостояния = 303 // 303 See Other by GET
|
||||
Или ОтветHTTP.КодСостояния = 307 // 307 Temporary Redirect
|
||||
Или ОтветHTTP.КодСостояния = 308 Тогда // 308 Permanent Redirect
|
||||
|
||||
Если Перенаправления.Количество() > 7 Тогда
|
||||
ВызватьИсключение
|
||||
НСтр("ru = 'Превышено количество перенаправлений.'");
|
||||
Иначе
|
||||
|
||||
Заголовки = Новый Соответствие;
|
||||
Для Каждого Заголовок Из ОтветHTTP.Заголовки Цикл
|
||||
Заголовки.Вставить(НРег(Заголовок.Ключ), Заголовок.Значение);
|
||||
КонецЦикла;
|
||||
|
||||
НовыйURL = Заголовки["location"];
|
||||
Если НовыйURL = Неопределено Тогда
|
||||
ВызватьИсключение
|
||||
НСтр("ru = 'Некорректное перенаправление, отсутствует HTTP-заголовок ответа ""Location"".'");
|
||||
КонецЕсли;
|
||||
|
||||
НовыйURL = СокрЛП(НовыйURL);
|
||||
Если ПустаяСтрока(НовыйURL) Тогда
|
||||
ВызватьИсключение
|
||||
НСтр("ru = 'Некорректное перенаправление, пустой HTTP-заголовок ответа ""Location"".'");
|
||||
КонецЕсли;
|
||||
|
||||
Если Перенаправления.Найти(НовыйURL) <> Неопределено Тогда
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Циклическое перенаправление.
|
||||
|Попытка перейти на %1 уже выполнялась ранее.'"),
|
||||
НовыйURL);
|
||||
КонецЕсли;
|
||||
|
||||
Перенаправления.Добавить(URL);
|
||||
Если Не СтрНачинаетсяС(НовыйURL, "http") Тогда
|
||||
// <схема>://<хост>:<порт>/<путь>
|
||||
НовыйURL = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
"%1://%2:%3/%4", Протокол, Сервер, Формат(Порт, "ЧГ="), НовыйURL);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ДиагностикаСервераМетокВремени(НовыйURL, Перенаправления);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ОтветHTTP.КодСостояния < 200 Или ОтветHTTP.КодСостояния >= 300 Тогда
|
||||
|
||||
Если ОтветHTTP.КодСостояния < 200 Или ОтветHTTP.КодСостояния >= 300 И ОтветHTTP.КодСостояния < 400 Тогда
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Неподдерживаемый ответ сервера (%1)'"), ОтветHTTP.КодСостояния);
|
||||
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
|
||||
ИначеЕсли ОтветHTTP.КодСостояния >= 400 И ОтветHTTP.КодСостояния < 500 Тогда
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Ошибка при выполнении запроса (%1)'"), ОтветHTTP.КодСостояния);
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
|
||||
Иначе
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Ошибка сервера при обработке запроса к ресурсу (%1)'"), ОтветHTTP.КодСостояния);
|
||||
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Исключение
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось получить файл %1 с сервера %2:%3 по причине:
|
||||
|%4'"), URL, Сервер, Формат(Порт, "ЧГ="), ОбработкаОшибок.КраткоеПредставлениеОшибки(
|
||||
ИнформацияОбОшибке()));
|
||||
Возврат ТекстОшибки;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
Возврат "";
|
||||
|
||||
#КонецЕсли
|
||||
КонецФункции
|
||||
|
||||
#Область ОбластьXML
|
||||
|
||||
// Параметры:
|
||||
@@ -3759,6 +3954,66 @@
|
||||
|
||||
#Область СодержимоеСертификата
|
||||
|
||||
Функция ЭтоСертификатГОСТ(АлгоритмСертификата) Экспорт
|
||||
|
||||
Возврат СтрНачинаетсяС(АлгоритмСертификата, "1.2.643");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция АлгоритмПодписиСоответствуетСертификату(ПредставлениеСертификата, АлгоритмСертификата, АлгоритмПодписи, АлгоритмХеширования = Неопределено) Экспорт
|
||||
|
||||
Если Не ЭтоСертификатГОСТ(АлгоритмСертификата) Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(АлгоритмПодписи) И Не ЗначениеЗаполнено(АлгоритмХеширования) Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
НаборыАлгоритмовДляСозданияПодписи = НаборыАлгоритмовДляСозданияПодписи();
|
||||
|
||||
АлгоритмыДляПроверки = Неопределено;
|
||||
Для Каждого НаборАлгоритмов Из НаборыАлгоритмовДляСозданияПодписи Цикл
|
||||
Если НаборАлгоритмов.ИдентификаторАлгоритмаОткрытогоКлюча = АлгоритмСертификата Тогда
|
||||
АлгоритмыДляПроверки = НаборАлгоритмов;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если АлгоритмыДляПроверки <> Неопределено Тогда
|
||||
|
||||
Если АлгоритмПодписи <> АлгоритмСертификата И АлгоритмыДляПроверки.ИдентификаторАлгоритмаПодписи <> АлгоритмСертификата Тогда
|
||||
Если АлгоритмыДляПроверки.ИменаАлгоритмаПодписи.Количество() > 0
|
||||
И АлгоритмыДляПроверки.ИменаАлгоритмаПодписи.Найти(ВРЕГ(АлгоритмПодписи)) = Неопределено Тогда
|
||||
Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр(
|
||||
"ru = 'Сертификат %1 связан с приложением электронной подписи с не соответствующим сертификату алгоритмом подписи %2. Сертификат должен быть связан с приложением с алгоритмом подписания %3.'"),
|
||||
ПредставлениеСертификата, АлгоритмПодписи, ПредставлениеАлгоритма(
|
||||
АлгоритмыДляПроверки.ИменаАлгоритмаПодписи));
|
||||
|
||||
Возврат Ошибка;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(АлгоритмХеширования) И (АлгоритмХеширования <> АлгоритмыДляПроверки.ИдентификаторАлгоритмаХеширования) Тогда
|
||||
Если АлгоритмыДляПроверки.ИменаАлгоритмаХеширования.Количество() > 0
|
||||
И АлгоритмыДляПроверки.ИменаАлгоритмаХеширования.Найти(ВРЕГ(
|
||||
АлгоритмХеширования)) = Неопределено Тогда
|
||||
Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр(
|
||||
"ru = 'Сертификат %1 связан с приложением электронной подписи с не соответствующим сертификату алгоритмом хеширования %2. Сертификат должен быть связан с приложением с алгоритмом хеширования %3.'"),
|
||||
ПредставлениеСертификата, АлгоритмХеширования, ПредставлениеАлгоритма(
|
||||
АлгоритмыДляПроверки.ИменаАлгоритмаХеширования));
|
||||
Возврат Ошибка;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДополнительныеСвойстваСертификата(Данные, РазницаСУниверсальнымВременем = Неопределено) Экспорт
|
||||
|
||||
Структура = Новый Структура;
|
||||
@@ -4936,6 +5191,19 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПредставлениеАлгоритма(ИменаАлгоритмаПодписи)
|
||||
ВГраница = ИменаАлгоритмаПодписи.ВГраница();
|
||||
Если ВГраница = 0 Тогда
|
||||
Возврат ИменаАлгоритмаПодписи[0];
|
||||
Иначе
|
||||
Имена = "";
|
||||
Для н = 1 По ВГраница Цикл
|
||||
Имена = Имена + ИменаАлгоритмаПодписи[н] + ?(н = ВГраница, "", ", ");
|
||||
КонецЦикла;
|
||||
Возврат ИменаАлгоритмаПодписи[0] + " (" + Имена + ")";
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
Функция АлгоритмПодписиСоответствующийАлгоритмуХешированияГОСТ(АлгоритмХеширования)
|
||||
|
||||
Если Не ЗначениеЗаполнено(АлгоритмХеширования) Тогда
|
||||
|
||||
@@ -474,7 +474,7 @@
|
||||
//
|
||||
Функция ВерсияКлассификатора() Экспорт
|
||||
|
||||
Возврат "3.0.1.24";
|
||||
Возврат "3.0.1.29";
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
@@ -326,19 +326,19 @@
|
||||
|
||||
Если Действие = "УстановитьСписокОтзываСертификата" Тогда
|
||||
Решение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = '- <a href=%1>Установите список отзыва</a> удостоверяющего центра автоматически.
|
||||
НСтр("ru = '• <a href=%1>Установите список отзыва</a> удостоверяющего центра автоматически.
|
||||
|%2'"), Действие, Решение);
|
||||
ИначеЕсли Действие = "УстановитьКорневойСертификат" Тогда
|
||||
Решение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = '- <a href=%1>Установите корневой сертификат</a> удостоверяющего центра автоматически.
|
||||
НСтр("ru = '• <a href=%1>Установите корневой сертификат</a> удостоверяющего центра автоматически.
|
||||
|%2'"), Действие, Решение);
|
||||
ИначеЕсли Действие = "УстановитьСертификат" Тогда
|
||||
Решение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = '- <a href=%1>Установите сертификат</a> в Личное хранилище сертификатов пользователя операционной системы автоматически.
|
||||
НСтр("ru = '• <a href=%1>Установите сертификат</a> в Личное хранилище сертификатов пользователя операционной системы автоматически.
|
||||
|%2'"), Действие, Решение);
|
||||
ИначеЕсли Действие = "УстановитьСертификатВКонтейнер" Тогда
|
||||
Решение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = '- <a href=%1>Установите сертификат в контейнер</a> прямо из приложения.
|
||||
НСтр("ru = '• <a href=%1>Установите сертификат в контейнер</a> прямо из приложения.
|
||||
|%2'"), Действие, Решение);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Loaded 100 of 229 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user