3_1_10_206
This commit is contained in:
1 parent
44a10b9181
commit
f91290c6ec
230 files changed
+14068
-3500
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,43 +90,46 @@
|
||||
|у предопределенной группы доступа Администраторы.'");
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЭтоГруппа Тогда
|
||||
// Автоматическая установка реквизитов для персональной группы доступа.
|
||||
Если ЗначениеЗаполнено(Пользователь) Тогда
|
||||
Родитель = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа();
|
||||
Иначе
|
||||
Пользователь = Неопределено;
|
||||
Если Родитель = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа(Истина) Тогда
|
||||
Родитель = Неопределено;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
// При снятии пометки удаления с группы доступа выполняется
|
||||
// снятие пометки удаления с профиля этой группы доступа.
|
||||
Если Не ПометкаУдаления И СтарыеЗначения.ПометкаУдаления = Истина
|
||||
И Профиль = СтарыеЗначения.Профиль Тогда
|
||||
|
||||
// Автоматическая установка реквизитов для персональной группы доступа.
|
||||
Если ЗначениеЗаполнено(Пользователь) Тогда
|
||||
Родитель = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа();
|
||||
Иначе
|
||||
Пользователь = Неопределено;
|
||||
Если Родитель = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа(Истина) Тогда
|
||||
Родитель = Неопределено;
|
||||
НачатьТранзакцию();
|
||||
Попытка
|
||||
Блокировка = Новый БлокировкаДанных;
|
||||
ЭлементБлокировки = Блокировка.Добавить("Справочник.ПрофилиГруппДоступа");
|
||||
ЭлементБлокировки.УстановитьЗначение("Ссылка", Профиль);
|
||||
Блокировка.Заблокировать();
|
||||
|
||||
ПометкаУдаленияПрофиля = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Профиль, "ПометкаУдаления");
|
||||
ПометкаУдаленияПрофиля = ?(ТипЗнч(ПометкаУдаленияПрофиля) = Тип("Булево"), ПометкаУдаленияПрофиля, Ложь);
|
||||
Если ПометкаУдаленияПрофиля Тогда
|
||||
УправлениеДоступом.ПроверитьИзменениеРазрешено(Профиль);
|
||||
ЗаблокироватьДанныеДляРедактирования(Профиль);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
ПрофильОбъект = Профиль.ПолучитьОбъект();
|
||||
ПрофильОбъект.ДополнительныеСвойства.Вставить("СнятиеПометкиУдаленияПрофиляПриСнятииПометкиУдаленияГруппыДоступа", Ссылка);
|
||||
ПрофильОбъект.ПометкаУдаления = Ложь;
|
||||
ПрофильОбъект.Записать();
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
// При снятии пометки удаления с группы доступа выполняется
|
||||
// снятие пометки удаления с профиля этой группы доступа.
|
||||
Если Не ПометкаУдаления И СтарыеЗначения.ПометкаУдаления = Истина Тогда
|
||||
НачатьТранзакцию();
|
||||
Попытка
|
||||
Блокировка = Новый БлокировкаДанных;
|
||||
ЭлементБлокировки = Блокировка.Добавить("Справочник.ПрофилиГруппДоступа");
|
||||
ЭлементБлокировки.УстановитьЗначение("Ссылка", Профиль);
|
||||
Блокировка.Заблокировать();
|
||||
|
||||
ПометкаУдаленияПрофиля = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Профиль, "ПометкаУдаления");
|
||||
ПометкаУдаленияПрофиля = ?(ПометкаУдаленияПрофиля = Неопределено, Ложь, ПометкаУдаленияПрофиля);
|
||||
Если ПометкаУдаленияПрофиля Тогда
|
||||
ЗаблокироватьДанныеДляРедактирования(Профиль);
|
||||
ПрофильОбъект = Профиль.ПолучитьОбъект();
|
||||
ПрофильОбъект.ПометкаУдаления = Ложь;
|
||||
ПрофильОбъект.Записать();
|
||||
КонецЕсли;
|
||||
|
||||
ЗафиксироватьТранзакцию();
|
||||
Исключение
|
||||
ОтменитьТранзакцию();
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
|
||||
ЗафиксироватьТранзакцию();
|
||||
Исключение
|
||||
ОтменитьТранзакцию();
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -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 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПриЗаписи(Отказ)
|
||||
|
||||
// Проверка ОбменДанными.Загрузка выполняется в вызываемой процедуре.
|
||||
Справочники.ИдентификаторыОбъектовМетаданных.ПриЗаписиОбъекта(ЭтотОбъект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПередУдалением(Отказ)
|
||||
|
||||
// Проверка ОбменДанными.Загрузка выполняется в вызываемой процедуре.
|
||||
|
||||
+4
-5
@@ -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,15 +1143,10 @@
|
||||
Для Каждого Строка Из Объект.Представители Цикл
|
||||
|
||||
РеквизитыОрганизации = ПолучитьИзВременногоХранилища(Строка.АдресРеквизитов);
|
||||
Если Не РеквизитыОрганизации.ЭтоФизическоеЛицо Тогда
|
||||
СтрокаОшибки = НСтр("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'");
|
||||
|
||||
Если Не РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
|
||||
ИНН = РеквизитыОрганизации.ИННФЛ;
|
||||
КонецЕсли;
|
||||
@@ -1244,27 +1237,9 @@
|
||||
Для Каждого Строка Из Объект.Доверители Цикл
|
||||
|
||||
РеквизитыОрганизации = ПолучитьИзВременногоХранилища(Строка.АдресРеквизитов);
|
||||
|
||||
ИНН = "";
|
||||
КПП = "";
|
||||
Если Не РеквизитыОрганизации.ЭтоФизическоеЛицо Тогда
|
||||
ШаблонОшибки = НСтр("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 @@
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ПредставлениеДоверителяПредставителяДляОшибки(Ссылка, ИНН, КПП)
|
||||
Если ЗначениеЗаполнено(Ссылка) Тогда
|
||||
Функция ПредставлениеДоверителяПредставителяДляОшибки(Ссылка, РеквизитыОрганизации, ИНН = Неопределено, КПП = Неопределено)
|
||||
|
||||
ИНН = "";
|
||||
КПП = "";
|
||||
Если Не РеквизитыОрганизации.ЭтоФизическоеЛицо Тогда
|
||||
ИНН = РеквизитыОрганизации.ИНН;
|
||||
Наименование = РеквизитыОрганизации.НаименованиеПолное;
|
||||
|
||||
Если ЗначениеЗаполнено(КПП) Тогда
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = '%1 (ИНН: %2, КПП %3)'"), Ссылка, ИНН, КПП);
|
||||
Иначе
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = '%1 (ИНН: %2)'"), Ссылка, ИНН);
|
||||
Если Не РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
|
||||
КПП = РеквизитыОрганизации.КПП;
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
Если ЗначениеЗаполнено(КПП) Тогда
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'с ИНН: %1, КПП %2'"), ИНН, КПП);
|
||||
Иначе
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'с ИНН: %1'"), ИНН);
|
||||
Наименование = СтрШаблон("%1 %2 %3",
|
||||
РеквизитыОрганизации.Фамилия, РеквизитыОрганизации.Имя, РеквизитыОрганизации.Отчество);
|
||||
|
||||
Если Не РеквизитыОрганизации.ЭтоИндивидуальныйПредприниматель Тогда
|
||||
ИНН = РеквизитыОрганизации.ИННФЛ;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(КПП) Тогда
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = '%1 (ИНН: %2, КПП %3)'"), ?(ЗначениеЗаполнено(Ссылка), Ссылка, Наименование), ИНН, КПП);
|
||||
ИначеЕсли ЗначениеЗаполнено(ИНН) Тогда
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = '%1 (ИНН: %2)'"), ?(ЗначениеЗаполнено(Ссылка), Ссылка, Наименование), ИНН);
|
||||
Иначе
|
||||
Возврат ?(ЗначениеЗаполнено(Ссылка), Строка(Ссылка), Строка(Наименование));
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
@@ -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,18 +18,24 @@
|
||||
|
||||
Процедура ПередЗаписью(Отказ)
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после записи изменений в журнал.
|
||||
Если ЭтоГруппа Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоГруппа Тогда
|
||||
Если ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа()
|
||||
Или Не ОбменДанными.Загрузка Тогда
|
||||
|
||||
СтарыеЗначения = СтарыеЗначения();
|
||||
КонецЕсли;
|
||||
// АПК:75-вкл
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
РегистрыСведений.ПраваРолей.ПроверитьДанныеРегистра();
|
||||
|
||||
СтарыеЗначения = СтарыеЗначения();
|
||||
|
||||
Если Не Справочники.ВерсииРасширений.ВсеРасширенияПодключены() Тогда
|
||||
Справочники.ПрофилиГруппДоступа.ВосстановитьНесуществующиеВидыИЗначенияДоступа(СтарыеЗначения, ЭтотОбъект);
|
||||
КонецЕсли;
|
||||
@@ -123,18 +129,32 @@
|
||||
|
||||
Процедура ПриЗаписи(Отказ)
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после записи изменений в журнал.
|
||||
Если ЭтоГруппа Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоГруппа Тогда
|
||||
Если ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа() Тогда
|
||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
Справочники.ПрофилиГруппДоступа.ЗарегистрироватьИзменениеРолейПрофилей(ЭтотОбъект, СтарыеЗначения);
|
||||
Справочники.ГруппыДоступа.ЗарегистрироватьИзменениеУчастниковГруппДоступа(ЭтотОбъект, СтарыеЗначения);
|
||||
Справочники.ГруппыДоступа.ЗарегистрироватьИзменениеРазрешенныхЗначений(ЭтотОбъект, СтарыеЗначения);
|
||||
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||
КонецЕсли;
|
||||
// АПК:75-вкл
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПроверитьОднозначностьПоставляемыхДанных();
|
||||
|
||||
// При установке пометки удаления нужно установить пометку удаления у групп доступа профиля.
|
||||
Если ПометкаУдаления И СтарыеЗначения.ПометкаУдаления = Ложь Тогда
|
||||
Если Справочники.ГруппыДоступа.УстановленаПометкаУдаленияПрофиля(ЭтотОбъект, СтарыеЗначения) Тогда
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.УстановитьПараметр("Профиль", Ссылка);
|
||||
Запрос.Текст =
|
||||
@@ -158,17 +178,20 @@
|
||||
КонецЦикла;
|
||||
Блокировка.Заблокировать();
|
||||
|
||||
Для каждого ГруппаДоступаСсылка Из ИзмененныеГруппыДоступа Цикл
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
Для Каждого ГруппаДоступаСсылка Из ИзмененныеГруппыДоступа Цикл
|
||||
ГруппаДоступаОбъект = ГруппаДоступаСсылка.ПолучитьОбъект();
|
||||
ГруппаДоступаОбъект.ДополнительныеСвойства.Вставить("УстановкаПометкиУдаленияГруппыДоступаПриУстановкеПометкиУдаленияПрофиля");
|
||||
ГруппаДоступаОбъект.ПометкаУдаления = Истина;
|
||||
ГруппаДоступаОбъект.Записать();
|
||||
КонецЦикла;
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
КонецЕсли;
|
||||
ЗафиксироватьТранзакцию();
|
||||
Исключение
|
||||
ОтменитьТранзакцию();
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
|
||||
Если ДополнительныеСвойства.Свойство("ОбновитьГруппыДоступаПрофиля") Тогда
|
||||
|
||||
@@ -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/>
|
||||
|
||||
+217
-23
@@ -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 @@
|
||||
ПроверкиНаСервере = Новый Структура;
|
||||
ДополнительныеДанныеПроверокНаКлиенте = Новый Структура;
|
||||
ДополнительныеДанныеПроверокНаСервере = Новый Структура;
|
||||
СертификатыМетокВремени.Очистить();
|
||||
Элементы.ДекорацияСертификатМеткиВремени.Видимость = Ложь;
|
||||
|
||||
// Очистка предыдущих результатов проверки.
|
||||
Если СтандартныеПроверки Тогда
|
||||
@@ -976,13 +1013,60 @@
|
||||
КонецЕсли;
|
||||
|
||||
ОписаниеОшибки = Ждать ДополнительнаяПроверкаНаВозможностьПодписания(Контекст.СертификатКриптографии, Ложь);
|
||||
|
||||
|
||||
// Подписание.
|
||||
Если ПроверкиНаКлиенте.НаличиеСертификата = Истина И Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда
|
||||
Контекст.МенеджерКриптографии.НачатьПодписывание(Новый ОписаниеОповещения(
|
||||
"ПроверитьНаСторонеКлиентаПослеПодписания", ЭтотОбъект, Контекст,
|
||||
"ПроверитьНаСторонеКлиентаПослеОшибкиПодписания", ЭтотОбъект),
|
||||
Контекст.ДанныеСертификата, Контекст.СертификатКриптографии);
|
||||
|
||||
Попытка
|
||||
ДанныеПодписи = Ждать Контекст.МенеджерКриптографии.ПодписатьАсинх(Контекст.ДанныеСертификата, Контекст.СертификатКриптографии);
|
||||
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеДанныеПодписи(ДанныеПодписи, ОписаниеОшибки);
|
||||
Исключение
|
||||
ОписаниеОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда
|
||||
УстановитьЭлемент(ЭтотОбъект, "Подписание", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты);
|
||||
ПроверитьНаСторонеКлиентаПослеПодписания(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") Тогда
|
||||
|
||||
Попытка
|
||||
НастройкиПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.НастройкиСозданияПодписи(ТипПодписи,
|
||||
ЭлектроннаяПодпись.ОбщиеНастройки().АдресаСерверовМетокВремени);
|
||||
МенеджерКриптографии.АдресаСерверовМетокВремени = НастройкиПодписи.АдресаСерверовМетокВремени;
|
||||
ДанныеПодписи = МенеджерКриптографии.Подписать(ДанныеСертификата, СертификатКриптографии,
|
||||
НастройкиПодписи.ТипПодписи);
|
||||
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеДанныеПодписи(ДанныеПодписи, ОписаниеОшибки);
|
||||
Исключение
|
||||
ОписаниеОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
УстановитьЭлемент(ЭтотОбъект, "Подписание", Истина, ОписаниеОшибки, Истина, ОбъединятьРезультаты);
|
||||
Возврат ДанныеПодписи;
|
||||
|
||||
@@ -1802,13 +1950,49 @@
|
||||
|
||||
&НаСервере
|
||||
Процедура ПроверитьПодписьНаСервере(МенеджерКриптографии, ДанныеСертификата, ДанныеПодписи)
|
||||
|
||||
|
||||
ОписаниеОшибки = "";
|
||||
Попытка
|
||||
МенеджерКриптографии.ПроверитьПодпись(ДанныеСертификата, ДанныеПодписи);
|
||||
Исключение
|
||||
ОписаниеОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
Если Не ЗначениеЗаполнено(ОписаниеОшибки) И ЗначениеЗаполнено(ТипПодписи) И ТипПодписи <> ПредопределенноеЗначение(
|
||||
"Перечисление.ТипыПодписиКриптографии.Базовая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 = 'Наличие приложения для подписания и расшифровки'");
|
||||
|
||||
ИначеЕсли ИмяЭлемента = "ПодписаниеНадпись" Тогда
|
||||
Возврат НСтр("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 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
Функция ТипПодписиПоУмолчанию()
|
||||
|
||||
Возврат Константы.ТипПодписиКриптографииПоУмолчанию.Получить();
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -163,7 +163,7 @@
|
||||
ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата =
|
||||
ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
|
||||
"Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата");
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Пока Выборка.Следующий() Цикл
|
||||
|
||||
@@ -235,17 +235,47 @@
|
||||
Исключение
|
||||
Сертификат = Неопределено;
|
||||
КонецПопытки;
|
||||
|
||||
|
||||
Если Сертификат <> Неопределено Тогда
|
||||
СвойстваСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(
|
||||
Сертификат, ЭлектроннаяПодписьСлужебный.РазницаСУниверсальнымВременем(), ДвоичныеДанныеСертификата);
|
||||
Сертификат, ЭлектроннаяПодписьСлужебный.РазницаСУниверсальнымВременем(),
|
||||
ДвоичныеДанныеСертификата);
|
||||
Если СертификатОбъект.ДействителенДо <> СвойстваСертификата.ДействителенДо Тогда
|
||||
СтрокаПоиска = Формат(СертификатОбъект.ДействителенДо, "ДФ=MM.yyyy");
|
||||
СтрокаЗамены = Формат(СвойстваСертификата.ДействителенДо, "ДФ=MM.yyyy");
|
||||
СертификатОбъект.Наименование = СтрЗаменить(СертификатОбъект.Наименование, СтрокаПоиска, СтрокаЗамены);
|
||||
СертификатОбъект.Наименование = СтрЗаменить(СертификатОбъект.Наименование, СтрокаПоиска,
|
||||
СтрокаЗамены);
|
||||
СертификатОбъект.ДействителенДо = СвойстваСертификата.ДействителенДо;
|
||||
ЗаписатьОбъект = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(СертификатОбъект.Программа) И ТипЗнч(СертификатОбъект.Программа) = Тип(
|
||||
"СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования") Тогда
|
||||
|
||||
АлгоритмСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(
|
||||
ДвоичныеДанныеСертификата, Ложь, Истина);
|
||||
Если ЭлектроннаяПодписьСлужебныйКлиентСервер.ЭтоСертификатГОСТ(АлгоритмСертификата) Тогда
|
||||
|
||||
ОписаниеПрограммы = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
|
||||
СертификатОбъект.Программа,
|
||||
"ЭтоВстроенныйКриптопровайдер, АлгоритмПодписи, АлгоритмХеширования");
|
||||
|
||||
Если Не ОписаниеПрограммы.ЭтоВстроенныйКриптопровайдер Тогда
|
||||
|
||||
Результат = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСоответствуетСертификату(
|
||||
"", АлгоритмСертификата, ОписаниеПрограммы.АлгоритмПодписи, ОписаниеПрограммы.АлгоритмХеширования);
|
||||
|
||||
Если Результат <> Истина Тогда
|
||||
|
||||
СертификатОбъект.Программа = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПустаяСсылка();
|
||||
ЗаписатьОбъект = Истина;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -28,12 +28,38 @@
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если Программа = Неопределено Тогда
|
||||
Программа = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПустаяСсылка();
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если ЗначениеЗаполнено(Программа) И ТипЗнч(Программа) = Тип(
|
||||
"СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования") И ЗначениеЗаполнено(Отпечаток) Тогда
|
||||
|
||||
ОписаниеПрограммы = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Программа,
|
||||
"ЭтоВстроенныйКриптопровайдер, АлгоритмПодписи, АлгоритмХеширования");
|
||||
|
||||
Если Не ОписаниеПрограммы.ЭтоВстроенныйКриптопровайдер Тогда
|
||||
ДвоичныеДанные = ДанныеСертификата.Получить();
|
||||
Если ТипЗнч(ДвоичныеДанные) = Тип("ДвоичныеДанные") Тогда
|
||||
|
||||
АлгоритмСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(
|
||||
ДвоичныеДанные, Ложь, Истина);
|
||||
|
||||
Результат = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСоответствуетСертификату(
|
||||
Наименование, АлгоритмСертификата, ОписаниеПрограммы.АлгоритмПодписи,
|
||||
ОписаниеПрограммы.АлгоритмХеширования);
|
||||
|
||||
Если Результат <> Истина Тогда
|
||||
|
||||
ВызватьИсключение Результат;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -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").Представление);
|
||||
Список.Параметры.УстановитьЗначениеПараметра("ЭлектроннаяПочта", ВидыШаблонов.НайтиПоЗначению("Email").Представление);
|
||||
ДоступныеВарианты = ШаблоныСообщенийСлужебный.ДоступныеВариантыОтправкиШаблоновСообщений();
|
||||
Если ДоступныеВарианты.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/";
|
||||
КонецФункции
|
||||
|
||||
// Возвращает информацию из классификатора субъектов РФ.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@@ -7989,7 +8177,7 @@
|
||||
// Строка - путь к файлу описания данных.
|
||||
//
|
||||
Функция АдресВебСервисаКонтактнойИнформации()
|
||||
|
||||
|
||||
Возврат "https://api.orgaddress.1c.ru";
|
||||
|
||||
КонецФункции
|
||||
@@ -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,9 +1378,17 @@
|
||||
|
||||
Настройки = ИспользуемыеНастройки(Форма, СвойстваЗаголовка.ИдентификаторНастроек);
|
||||
|
||||
Фильтры = ВариантыОтчетовСлужебныйКлиентСервер.ФильтрыРазделаОтчета(Настройки, СвойстваЗаголовка, ЭтоГруппировка);
|
||||
Фильтры = Настройки.Отбор;
|
||||
Фильтр = ВариантыОтчетовСлужебныйКлиентСервер.ФильтрРазделаОтчета(Фильтры, СвойстваЗаголовка.Поле);
|
||||
|
||||
Если Настройки.Структура.Количество() > 1 Тогда
|
||||
Если Фильтр = Неопределено
|
||||
Или Фильтр <> Неопределено И Фильтр.ВидСравнения <> ВидСравнения Или Фильтр.ПравоеЗначение <> ДанныеРасшифровки.Значение Тогда
|
||||
Фильтры = ВариантыОтчетовСлужебныйКлиентСервер.ФильтрыРазделаОтчета(Настройки, СвойстваЗаголовка, ЭтоГруппировка);
|
||||
Фильтр = ВариантыОтчетовСлужебныйКлиентСервер.ФильтрРазделаОтчета(Фильтры, СвойстваЗаголовка.Поле);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если Фильтр = Неопределено Тогда
|
||||
|
||||
Фильтр = Фильтры.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
Процедура ОбновитьКомпонентыСПортала(Оповещение, ОбновляемыеКомпоненты) Экспорт
|
||||
|
||||
// Локализация
|
||||
// Локализация
|
||||
ПараметрыФормы = Новый Структура;
|
||||
ПараметрыФормы.Вставить("ОбновляемыеКомпоненты", ОбновляемыеКомпоненты);
|
||||
ОткрытьФорму("Справочник.ВнешниеКомпоненты.Форма.ОбновлениеКомпонентСПортала1СИТС",
|
||||
|
||||
@@ -841,7 +841,7 @@
|
||||
ИмяМакета = МестоположениеМакетаРазделенное.Получить(МестоположениеМакетаРазделенное.ВГраница());
|
||||
|
||||
Если МестоположениеМакетаРазделенное.Количество() = 2 Тогда
|
||||
ДвоичныеДанныеКомпоненты = ПолучитьОбщийМакет(Местоположение);
|
||||
ДвоичныеДанныеКомпоненты = ПолучитьОбщийМакет(ИмяМакета);
|
||||
Иначе
|
||||
МестоположениеМакетаРазделенное.Удалить(МестоположениеМакетаРазделенное.ВГраница());
|
||||
МестоположениеМакетаРазделенное.Удалить(МестоположениеМакетаРазделенное.ВГраница());
|
||||
|
||||
@@ -383,11 +383,10 @@
|
||||
// Конструктор коллекции ПараметрыВыполненияФункции для функции ВыполнитьФункцию.
|
||||
//
|
||||
// Если ЗапуститьВФоне = Ложь и ЗапуститьНеВФоне = Ложь, то задание будет выполнено в фоне по возможности.
|
||||
// Запуск выполняется сразу в основном потоке при выполнении любого из следующих условий:
|
||||
// Запуск с расширениями сеанса выполняется сразу в основном потоке при выполнении любого из следующих условий:
|
||||
// * если вызов выполняется в файловой базе во внешнем соединении (в этом режиме фоновые задания не поддерживаются);
|
||||
// * если приложение запущено в режиме отладки (параметр /C РежимОтладки) - для упрощения отладки конфигурации;
|
||||
// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя;
|
||||
// * если выполняется функция модуля внешней обработки или внешнего отчета.
|
||||
// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя.
|
||||
//
|
||||
// Параметры:
|
||||
// ИдентификаторФормы - УникальныйИдентификатор - уникальный идентификатор формы,
|
||||
@@ -446,11 +445,10 @@
|
||||
// Конструктор коллекции ПараметрыВыполненияПроцедуры для функции ВыполнитьПроцедуру.
|
||||
//
|
||||
// Если ЗапуститьВФоне = Ложь и ЗапуститьНеВФоне = Ложь, то задание будет выполнено в фоне по возможности.
|
||||
// Запуск выполняется сразу в основном потоке при выполнении любого из следующих условий:
|
||||
// Запуск с расширениями сеанса выполняется сразу в основном потоке при выполнении любого из следующих условий:
|
||||
// * если вызов выполняется в файловой базе во внешнем соединении (в этом режиме фоновые задания не поддерживаются);
|
||||
// * если приложение запущено в режиме отладки (параметр /C РежимОтладки) - для упрощения отладки конфигурации;
|
||||
// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя;
|
||||
// * если выполняется функция модуля внешней обработки или внешнего отчета.
|
||||
// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - параметры выполнения длительной операции:
|
||||
@@ -775,11 +773,10 @@
|
||||
// Возвращает новую структуру для параметра ПараметрыВыполнения функции ВыполнитьВФоне.
|
||||
//
|
||||
// Если ЗапуститьВФоне = Ложь и ЗапуститьНеВФоне = Ложь, то задание будет выполнено в фоне по возможности.
|
||||
// Запуск выполняется сразу в основном потоке при выполнении любого из следующих условий:
|
||||
// Запуск с расширениями сеанса выполняется сразу в основном потоке при выполнении любого из следующих условий:
|
||||
// * если вызов выполняется в файловой базе во внешнем соединении (в этом режиме фоновые задания не поддерживаются);
|
||||
// * если приложение запущено в режиме отладки (параметр /C РежимОтладки) - для упрощения отладки конфигурации;
|
||||
// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя;
|
||||
// * если выполняется функция модуля внешней обработки или внешнего отчета.
|
||||
// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя.
|
||||
//
|
||||
// Параметры:
|
||||
// ИдентификаторФормы - УникальныйИдентификатор - уникальный идентификатор формы, во временное хранилище которой
|
||||
|
||||
@@ -86,16 +86,18 @@
|
||||
// См. ПодключаемыеКомандыПереопределяемый.ПриОпределенииКомандПодключенныхКОбъекту.
|
||||
Процедура ПриОпределенииКомандПодключенныхКОбъекту(НастройкиФормы, Источники, ПодключенныеОтчетыИОбработки, Команды) Экспорт
|
||||
|
||||
Команда = Команды.Добавить();
|
||||
Команда.Вид = "Органайзер";
|
||||
Команда.Представление = НСтр("ru = 'Создать заметку'");
|
||||
Команда.ФункциональныеОпции = "ИспользоватьЗаметки";
|
||||
Команда.Картинка = БиблиотекаКартинок.Заметка;
|
||||
Команда.ТипПараметра = Метаданные.ОпределяемыеТипы.ПредметЗаметок.Тип;
|
||||
Команда.РежимЗаписи = "НеЗаписывать";
|
||||
Команда.Порядок = 50;
|
||||
Команда.Обработчик = "ЗаметкиПользователяСлужебныйКлиент.СоздатьЗаметкуПоПредмету";
|
||||
Команда.МножественныйВыбор = Ложь;
|
||||
Если ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Справочники.Заметки) Тогда
|
||||
Команда = Команды.Добавить();
|
||||
Команда.Вид = "Органайзер";
|
||||
Команда.Представление = НСтр("ru = 'Создать заметку'");
|
||||
Команда.ФункциональныеОпции = "ИспользоватьЗаметки";
|
||||
Команда.Картинка = БиблиотекаКартинок.Заметка;
|
||||
Команда.ТипПараметра = Метаданные.ОпределяемыеТипы.ПредметЗаметок.Тип;
|
||||
Команда.РежимЗаписи = "НеЗаписывать";
|
||||
Команда.Порядок = 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 = 'Не указан код подразделения'");
|
||||
Если ПроверятьНаЗаполненность Тогда
|
||||
Возврат НСтр("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")
|
||||
|
||||
СведенияОФайле = Новый Структура;
|
||||
Если ТипЗнч(ДанныеФайла) = Тип("Строка") Тогда
|
||||
СведенияОФайле.Вставить("Данные", Новый ДвоичныеДанные(ДанныеФайла));
|
||||
@@ -2832,10 +2814,12 @@
|
||||
КонецЕсли;
|
||||
СведенияОФайле.Вставить("Имя", ТипФайла + "." + Расширение);
|
||||
СведенияОФайле.Вставить("ТипФайла", ТипФайла);
|
||||
Файлы.Добавить(СведенияОФайле);
|
||||
КонецПроцедуры
|
||||
Файлы.Добавить(СведенияОФайле);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьИдентификаторЗапроса(Запрос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,15 +4101,14 @@
|
||||
Результат.Вставить("Ошибка", "");
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(ТокенДоступа) Тогда
|
||||
|
||||
РезультатАвторизации = АвторизоватьсяНаСервереМЧДРР(ЗаголовокОшибки);
|
||||
|
||||
Если РезультатАвторизации.Ошибка <> Неопределено Тогда
|
||||
Результат.Ошибка = РезультатАвторизации.Ошибка;
|
||||
КонецЕсли;
|
||||
|
||||
Если Результат.Ошибка <> Неопределено Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
ТокенДоступа = РезультатАвторизации.ТокенДоступа;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
+11
-11
@@ -61,21 +61,22 @@
|
||||
// Реквизиты организации.
|
||||
//
|
||||
// Параметры:
|
||||
// СторонаМЧД - ПеречислениеСсылка.ТипыУчастниковМЧД, Неопределено
|
||||
// Назначение - см. НазначениеДоверенностиДляПроверкиРеквизитов
|
||||
// ДляЗаполнения - Булево - если Истина, полный список реквизитов
|
||||
// ВидОрганизации - Неопределено, Строка - "ИндивидуальныйПредприниматель", "ИностраннаяОрганизация", "Филиал"
|
||||
// Назначение - см. НазначениеДоверенности
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// СписокЗначений
|
||||
//
|
||||
Функция РеквизитыОрганизацииСписок(СторонаМЧД, ДляЗаполнения = Истина, ВидОрганизации = Неопределено, Назначение = Неопределено) Экспорт
|
||||
Функция РеквизитыОрганизацииСписок(Назначение = Неопределено, ДляЗаполнения = Истина, ВидОрганизации = Неопределено) Экспорт
|
||||
|
||||
Если Назначение = Неопределено Тогда
|
||||
Назначение = НазначениеДоверенностиДляПроверкиРеквизитов();
|
||||
КонецЕсли;
|
||||
ЭтоДоверитель = Назначение.ТипУчастника = ПредопределенноеЗначение("Перечисление.ТипыУчастниковМЧД.Доверитель");
|
||||
|
||||
// Пометка списка Истина означает, что поле необязательное
|
||||
|
||||
Реквизиты = Новый СписокЗначений;
|
||||
Реквизиты.Добавить("ЭтоИндивидуальныйПредприниматель", НСтр("ru = 'Индивидуальный предприниматель'"), Истина);
|
||||
Реквизиты.Добавить("ЭтоФизическоеЛицо", НСтр("ru = 'Физическое лицо'"), Истина);
|
||||
@@ -84,31 +85,30 @@
|
||||
Реквизиты.Добавить("ЭтоФилиал", НСтр("ru = 'Филиал'"), Истина);
|
||||
Реквизиты.Добавить("НаименованиеПолное", НСтр("ru = 'Наименование (полное)'"));
|
||||
Реквизиты.Добавить("НаименованиеСокращенное", НСтр("ru = 'Наименование (сокращенное)'"), Истина);
|
||||
Реквизиты.Добавить("ИНН", НСтр("ru = 'ИНН'"));
|
||||
|
||||
Реквизиты.Добавить("ИНН", НСтр("ru = 'ИНН'"), ВидОрганизации = "ИностраннаяОрганизация" И ЭтоДоверитель);
|
||||
Реквизиты.Добавить("ЭлектроннаяПочта", НСтр("ru = 'Электронная почта'"), Истина);
|
||||
Реквизиты.Добавить("ЭлектроннаяПочтаЗначение", НСтр("ru = 'Электронная почта'"), Истина);
|
||||
Реквизиты.Добавить("Телефон", НСтр("ru = 'Телефон'"), Истина);
|
||||
Реквизиты.Добавить("ТелефонЗначение", НСтр("ru = 'Телефон'"), Истина);
|
||||
|
||||
Если ДляЗаполнения Или ВидОрганизации <> "ИндивидуальныйПредприниматель" Тогда
|
||||
Реквизиты.Добавить("КПП", НСтр("ru = 'КПП'"));
|
||||
Реквизиты.Добавить("КПП", НСтр("ru = 'КПП'"), ВидОрганизации = "ИностраннаяОрганизация" И ЭтоДоверитель);
|
||||
КонецЕсли;
|
||||
|
||||
Если ДляЗаполнения Или ВидОрганизации <> "ИностраннаяОрганизация" Тогда
|
||||
Реквизиты.Добавить("ОГРН", НСтр("ru = 'ОГРН'"));
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если ДляЗаполнения Или ВидОрганизации = "ИностраннаяОрганизация" Тогда
|
||||
Реквизиты.Добавить("НомерЗаписиОбАккредитации", НСтр("ru = 'Номер записи об аккредитации'"));
|
||||
Реквизиты.Добавить("НомерЗаписиОбАккредитации", НСтр("ru = 'Номер записи об аккредитации'"), ЭтоДоверитель);
|
||||
Реквизиты.Добавить("СтранаРегистрации", НСтр("ru = 'Страна регистрации (инкорпорации)'"), Не ЭтоДоверитель);
|
||||
Реквизиты.Добавить("СтранаРегистрацииКод", НСтр("ru = 'Код страны регистрации (инкорпорации)'"), Не ЭтоДоверитель);
|
||||
Реквизиты.Добавить("РегистрационныйНомерВСтранеРегистрации", НСтр("ru = 'Регистрационный номер в стране регистрации (инкорпорации)'"), Не ЭтоДоверитель);
|
||||
Реквизиты.Добавить("НаименованиеРегистрирующегоОргана", НСтр("ru = 'Наименование регистрирующего органа'"), Истина);
|
||||
Реквизиты.Добавить("КодНалогоплательщикаВСтранеРегистрации", НСтр("ru = 'Код налогоплательщика в стране регистрации (инкорпорации) или аналог'"));
|
||||
Реквизиты.Добавить("КодНалогоплательщикаВСтранеРегистрации", НСтр("ru = 'Код налогоплательщика в стране регистрации (инкорпорации) или аналог'"), Истина);
|
||||
Реквизиты.Добавить("ФактическийАдрес", НСтр("ru = 'Фактический адрес местонахождения'"));
|
||||
Реквизиты.Добавить("ФактическийАдресЗначение", НСтр("ru = 'Фактический адрес местонахождения'"), Истина);
|
||||
Реквизиты.Добавить("ЮридическийАдресВСтранеРегистрации", НСтр("ru = 'Адрес юридического лица на территории государства, в котором оно Зарегистрирована'"), Не ЭтоДоверитель);
|
||||
Реквизиты.Добавить("ЮридическийАдресВСтранеРегистрации", НСтр("ru = 'Адрес юридического лица на территории государства, в котором оно зарегистрировано'"), Не ЭтоДоверитель);
|
||||
Реквизиты.Добавить("ЮридическийАдресВСтранеРегистрацииЗначение", НСтр("ru = 'Адрес юридического лица на территории государства'"), Истина);
|
||||
КонецЕсли;
|
||||
|
||||
@@ -158,9 +158,9 @@
|
||||
// Реквизиты физического лица.
|
||||
//
|
||||
// Параметры:
|
||||
// Назначение - см. НазначениеДоверенностиДляПроверкиРеквизитов
|
||||
// ДляЗаполнения - Булево - если Истина, полный список реквизитов
|
||||
// ВидФизическогоЛица - Неопределено, Строка - "ИндивидуальныйПредприниматель", "ДолжностноеЛицо", "ФизическоеЛицо"
|
||||
// Назначение - см. НазначениеДоверенности
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// СписокЗначений
|
||||
|
||||
@@ -214,45 +214,48 @@
|
||||
|
||||
Представления = ТекущийОбъект.Представления; // ТабличнаяЧасть
|
||||
Отбор = Новый Структура();
|
||||
Отбор.Вставить("КодЯзыка", ТекущийЯзык().КодЯзыка);
|
||||
НайденныеСтроки = Представления.НайтиСтроки(Отбор);
|
||||
|
||||
Если НайденныеСтроки.Количество() > 0 Тогда
|
||||
Представление = НайденныеСтроки[0];
|
||||
Иначе
|
||||
Представление = Представления.Добавить();
|
||||
Представление.КодЯзыка = ТекущийЯзык().КодЯзыка;
|
||||
КонецЕсли;
|
||||
|
||||
Для каждого ИмяРеквизита Из Реквизиты Цикл
|
||||
Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда
|
||||
Отбор.Вставить("КодЯзыка", ТекущийЯзык().КодЯзыка);
|
||||
НайденныеСтроки = Представления.НайтиСтроки(Отбор);
|
||||
|
||||
Если ИменаМультиязычныхРеквизитовВШапке[ИмяРеквизита] <> Неопределено Тогда
|
||||
|
||||
ЗначениеНаТекущемЯзыке = ТекущийОбъект[ИмяРеквизита + СуффиксТекущегоЯзыка];
|
||||
Если ПустаяСтрока(ЗначениеНаТекущемЯзыке) Тогда
|
||||
Представление[ИмяРеквизита] = ТекущийОбъект[ИмяРеквизита];
|
||||
Иначе
|
||||
Представление[ИмяРеквизита] = ЗначениеНаТекущемЯзыке;
|
||||
КонецЕсли;
|
||||
|
||||
Если НайденныеСтроки.Количество() > 0 Тогда
|
||||
Представление = НайденныеСтроки[0];
|
||||
Иначе
|
||||
|
||||
Представление[ИмяРеквизита] = ТекущийОбъект[ИмяРеквизита];
|
||||
|
||||
Представление = Представления.Добавить();
|
||||
Представление.КодЯзыка = ТекущийЯзык().КодЯзыка;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
Для каждого ИмяРеквизита Из Реквизиты Цикл
|
||||
|
||||
Если ИменаМультиязычныхРеквизитовВШапке[ИмяРеквизита] <> Неопределено Тогда
|
||||
|
||||
ЗначениеНаТекущемЯзыке = ТекущийОбъект[ИмяРеквизита + СуффиксТекущегоЯзыка];
|
||||
Если ПустаяСтрока(ЗначениеНаТекущемЯзыке) Тогда
|
||||
Представление[ИмяРеквизита] = ТекущийОбъект[ИмяРеквизита];
|
||||
Иначе
|
||||
Представление[ИмяРеквизита] = ЗначениеНаТекущемЯзыке;
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
Представление[ИмяРеквизита] = ТекущийОбъект[ИмяРеквизита];
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
ЗаполнитьМультиязычныеРеквизитыТабличнойЧастиПредставления(ТекущийОбъект, Реквизиты);
|
||||
|
||||
Отбор.КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
|
||||
Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка());
|
||||
НайденныеСтроки = Представления.НайтиСтроки(Отбор);
|
||||
Если НайденныеСтроки.Количество() > 0 Тогда
|
||||
Для каждого ИмяРеквизита Из Реквизиты Цикл
|
||||
Если ИменаМультиязычныхРеквизитовВШапке[ИмяРеквизита] = Неопределено
|
||||
Или (ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка()
|
||||
И ПустаяСтрока(СуффиксТекущегоЯзыка)) Тогда
|
||||
ТекущийОбъект[ИмяРеквизита] = НайденныеСтроки[0][ИмяРеквизита];
|
||||
И ПустаяСтрока(СуффиксТекущегоЯзыка))
|
||||
И ТекущийОбъект[ИмяРеквизита] <> Null Тогда
|
||||
ТекущийОбъект[ИмяРеквизита] = НайденныеСтроки[0][ИмяРеквизита];
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Представления.Удалить(НайденныеСтроки[0]);
|
||||
|
||||
@@ -79,16 +79,18 @@
|
||||
// См. ПодключаемыеКомандыПереопределяемый.ПриОпределенииКомандПодключенныхКОбъекту.
|
||||
Процедура ПриОпределенииКомандПодключенныхКОбъекту(НастройкиФормы, Источники, ПодключенныеОтчетыИОбработки, Команды) Экспорт
|
||||
|
||||
Команда = Команды.Добавить();
|
||||
Команда.Вид = "Органайзер";
|
||||
Команда.Представление = НСтр("ru = 'Напомнить...'");
|
||||
Команда.ФункциональныеОпции = "ИспользоватьНапоминанияПользователя";
|
||||
Команда.Картинка = БиблиотекаКартинок.Напоминание;
|
||||
Команда.ТипПараметра = Метаданные.ОпределяемыеТипы.ПредметНапоминания.Тип;
|
||||
Команда.РежимЗаписи = "НеЗаписывать";
|
||||
Команда.Порядок = 50;
|
||||
Команда.Обработчик = "НапоминанияПользователяСлужебныйКлиент.Напомнить";
|
||||
Команда.МножественныйВыбор = Ложь;
|
||||
Если ПравоДоступа("Редактирование", Метаданные.РегистрыСведений.НапоминанияПользователя) Тогда
|
||||
Команда = Команды.Добавить();
|
||||
Команда.Вид = "Органайзер";
|
||||
Команда.Представление = НСтр("ru = 'Напомнить...'");
|
||||
Команда.ФункциональныеОпции = "ИспользоватьНапоминанияПользователя";
|
||||
Команда.Картинка = БиблиотекаКартинок.Напоминание;
|
||||
Команда.ТипПараметра = Метаданные.ОпределяемыеТипы.ПредметНапоминания.Тип;
|
||||
Команда.РежимЗаписи = "НеЗаписывать";
|
||||
Команда.Порядок = 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,12 +93,16 @@
|
||||
Контекст = ПараметрыЗаписи.ПараметрыВыполненияПодключаемойКоманды;
|
||||
Контекст.Вставить("Форма", Форма);
|
||||
Контекст.Вставить("Источник", Объект);
|
||||
ПродолжитьВыполнениеКоманды(Контекст);
|
||||
Контекст.Форма.ПараметрыПодключаемыхКоманд.Удалить("КомандаВыполняется")
|
||||
|
||||
Контекст.Форма.ПараметрыПодключаемыхКоманд.Удалить("КомандаВыполняется");
|
||||
|
||||
ИмяПараметра = "СтандартныеПодсистемы.ПодключаемыеКоманды.ПараметрыВыполненияПодключаемойКоманды";
|
||||
ПараметрыПриложения[ИмяПараметра] = Контекст;
|
||||
ПодключитьОбработчикОжидания("ПродолжитьВыполнениеПодключаемойКомандыПослеЗаписиВФорме", 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,35 +3483,56 @@
|
||||
//
|
||||
Процедура ОбновитьГруппыЗначенийДоступаПередЗаписью(Знач Источник, Отказ) Экспорт
|
||||
|
||||
Если Источник.ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после записи изменений в журнал.
|
||||
Если СтандартныеПодсистемыСервер.ЭтоИдентификаторОбъектаМетаданных(Источник) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Источник.ЭтоНовый()
|
||||
И ОбщегоНазначения.ИнформационнаяБазаФайловая()
|
||||
И Не ПропуститьПроверкуДоступа(Отказ, Источник) Тогда
|
||||
Если ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа()
|
||||
Или Не Источник.ОбменДанными.Загрузка Тогда
|
||||
|
||||
Блокировка = Новый БлокировкаДанных;
|
||||
Блокировка.Добавить("РегистрСведений.ПараметрыРаботыВерсийРасширений");
|
||||
Блокировка.Заблокировать();
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваВидовДоступа = СвойстваВидовДоступа();
|
||||
ЗначенияДоступаСГруппами = СвойстваВидовДоступа.ЗначенияДоступаСГруппами;
|
||||
|
||||
Если ЗначенияДоступаСГруппами.ПоТипамДляОбновления.Получить(ТипЗнч(Источник)) <> Неопределено Тогда
|
||||
РегистрыСведений.ГруппыЗначенийДоступа.ОбновитьГруппыЗначенийДоступа(Источник);
|
||||
КонецЕсли;
|
||||
|
||||
Если СвойстваВидовДоступа.ПоТипамЗначенийСИерархией.Получить(ТипЗнч(Источник)) <> Неопределено Тогда
|
||||
Родитель = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Источник.Ссылка, "Родитель");
|
||||
Если Источник.Родитель <> Родитель Тогда
|
||||
Источник.ДополнительныеСвойства.Вставить("ОбновитьЗначенияГруппДоступа");
|
||||
Если Источник.ЭтоНовый()
|
||||
И ОбщегоНазначения.ИнформационнаяБазаФайловая()
|
||||
И Не ПропуститьПроверкуДоступа(Отказ, Источник) Тогда
|
||||
|
||||
Блокировка = Новый БлокировкаДанных;
|
||||
Блокировка.Добавить("РегистрСведений.ПараметрыРаботыВерсийРасширений");
|
||||
Блокировка.Заблокировать();
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваВидовДоступа = СвойстваВидовДоступа();
|
||||
СтарыеЗначения = Новый Структура;
|
||||
Если СвойстваВидовДоступа.ПоТипамЗначенийСИерархией.Получить(ТипЗнч(Источник)) <> Неопределено Тогда
|
||||
СтарыеЗначения.Вставить("Родитель", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Источник.Ссылка, "Родитель"));
|
||||
КонецЕсли;
|
||||
Свойства = СвойстваВидовДоступа.ЗначенияДоступаСГруппами.ПоТипамДляОбновления.Получить(ТипЗнч(Источник));
|
||||
Если Свойства <> Неопределено
|
||||
И Свойства.ТипГруппЗначений <> Тип("Неопределено")
|
||||
И ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа() Тогда
|
||||
|
||||
ИмяПоля = ?(Свойства.НесколькоГруппЗначений, "ГруппыДоступа", "ГруппаДоступа");
|
||||
Попытка
|
||||
ЗначениеПоля = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Источник.Ссылка, ИмяПоля);
|
||||
Исключение
|
||||
ИменаТаблиц = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Источник.Метаданные().ПолноеИмя());
|
||||
ПоТипамСсылокДляОбновления = СвойстваВидовДоступа.ЗначенияДоступаСГруппами.ПоТипамСсылокДляОбновления;
|
||||
РегистрыСведений.ГруппыЗначенийДоступа.ПроверитьМетаданныеТаблиц(ИменаТаблиц, ПоТипамСсылокДляОбновления);
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
СтарыеЗначения.Вставить(ИмяПоля, ЗначениеПоля);
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(СтарыеЗначения) Тогда
|
||||
Источник.ДополнительныеСвойства.Вставить("УправлениеДоступомСтарыеЗначения", СтарыеЗначения);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
// АПК: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 @@
|
||||
|
||||
Процедура УстановитьНастройкиКомандПечати(КомандыПечати, Владелец)
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
| НастройкиКомандПечати.УникальныйИдентификатор КАК УникальныйИдентификатор
|
||||
@@ -3719,7 +3717,7 @@
|
||||
СписокОтключенных = Новый Соответствие;
|
||||
Пока Выборка.Следующий() Цикл
|
||||
СписокОтключенных.Вставить(Выборка.УникальныйИдентификатор, Истина);
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
ПроверкаПроведенияПередПечатью = НастройкиПечати().ПроверкаПроведенияПередПечатью;
|
||||
|
||||
|
||||
@@ -1465,8 +1465,8 @@
|
||||
ВложенноеУсловие.УзелДереваДокумента = УзелСУсловием;
|
||||
ВложенноеУсловие.УсловиеОбласти = УсловиеОбласти;
|
||||
ВложенноеУсловие.Индекс = ИндексУзла;
|
||||
ДобавлятьУсловныеОбласти = Ложь;
|
||||
КонецЕсли;
|
||||
ДобавлятьУсловныеОбласти = Ложь;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
@@ -3024,7 +3024,26 @@
|
||||
Представление = Формат(Значение, "Л=" + КодЯзыка);
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Представление = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Значение, "Наименование", , КодЯзыка);
|
||||
ОбъектМетаданных = Значение.Метаданные();
|
||||
|
||||
ЕстьРеквизитНаименование = Метаданные.Справочники.Содержит(ОбъектМетаданных)
|
||||
И ОбъектМетаданных.ОсновноеПредставление = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеСправочника.ВВидеНаименования
|
||||
Или Метаданные.ПланыВидовРасчета.Содержит(ОбъектМетаданных)
|
||||
И ОбъектМетаданных.ОсновноеПредставление = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеВидаРасчета.ВВидеНаименования
|
||||
Или Метаданные.ПланыВидовХарактеристик.Содержит(ОбъектМетаданных)
|
||||
И ОбъектМетаданных.ОсновноеПредставление = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеВидаХарактеристики.ВВидеНаименования
|
||||
Или Метаданные.ПланыСчетов.Содержит(ОбъектМетаданных)
|
||||
И ОбъектМетаданных.ОсновноеПредставление = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеСчета.ВВидеНаименования
|
||||
Или Метаданные.ПланыОбмена.Содержит(ОбъектМетаданных)
|
||||
И ОбъектМетаданных.ОсновноеПредставление = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеПланаОбмена.ВВидеНаименования
|
||||
Или Метаданные.Задачи.Содержит(ОбъектМетаданных)
|
||||
И ОбъектМетаданных.ОсновноеПредставление = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеЗадачи.ВВидеНаименования;
|
||||
|
||||
Если ЕстьРеквизитНаименование Тогда
|
||||
Представление = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Значение, "Наименование", , КодЯзыка);
|
||||
Иначе
|
||||
Представление = Строка(Значение);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Представление;
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
Позиция = ИнформацияПоКолонкам.Количество() + 1;
|
||||
Свойства = УправлениеСвойствами.СвойстваОбъекта(Справочники[МетаданныеСправочника.Имя].ПустаяСсылка());
|
||||
|
||||
ЗначенияСвойств = ДополнительныеЗначенияСвойства(Свойства);
|
||||
ЗначенияСвойств = ДополнительныеЗначенияСвойств(Свойства);
|
||||
СоответствиеЗначений = Новый Соответствие;
|
||||
Для Каждого ДополнительноеЗначение Из ЗначенияСвойств Цикл
|
||||
Значение = СоответствиеЗначений[ДополнительноеЗначение.Свойство];
|
||||
@@ -1752,13 +1752,38 @@
|
||||
// Параметры:
|
||||
// Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - свойство для
|
||||
// которого нужно получить перечисляемые значения.
|
||||
// - Массив
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из СправочникСсылка - значения свойства, если есть.
|
||||
//
|
||||
Функция ДополнительныеЗначенияСвойства(Свойство) Экспорт
|
||||
|
||||
ИмяПроцедуры = "УправлениеСвойствамиСлужебный.ДополнительныеЗначенияСвойства";
|
||||
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(ИмяПроцедуры, "Свойство", Свойство,
|
||||
Тип("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения"));
|
||||
|
||||
ЗначенияСвойств = ДополнительныеЗначенияСвойств(Свойство);
|
||||
Результат = ЗначенияСвойств.ВыгрузитьКолонку("Ссылка");
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает таблицу перечисляемых значений указанного свойства.
|
||||
//
|
||||
// Параметры:
|
||||
// Свойство - Массив из ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - свойства для
|
||||
// которого нужно получить перечисляемые значения.
|
||||
// - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ТаблицаЗначений:
|
||||
// * Ссылка - СправочникСсылка.ЗначенияСвойствОбъектовИерархия
|
||||
// - СправочникСсылка.ЗначенияСвойствОбъектов
|
||||
// * Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения
|
||||
//
|
||||
Функция ДополнительныеЗначенияСвойств(Свойство) Экспорт
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Параметры.Вставить("Свойство", Свойство);
|
||||
Запрос.Текст =
|
||||
@@ -1780,11 +1805,7 @@
|
||||
|ГДЕ
|
||||
| ЗначенияСвойствОбъектов.Владелец В (&Свойство)";
|
||||
|
||||
Если ТипЗнч(Свойство) = Тип("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения") Тогда
|
||||
Результат = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
|
||||
Иначе
|
||||
Результат = Запрос.Выполнить().Выгрузить();
|
||||
КонецЕсли;
|
||||
Результат = Запрос.Выполнить().Выгрузить();
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
@@ -585,6 +585,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,24 +443,34 @@
|
||||
// См. ПодключаемыеКомандыПереопределяемый.ПриОпределенииКомандПодключенныхКОбъекту.
|
||||
Процедура ПриОпределенииКомандПодключенныхКОбъекту(НастройкиФормы, Источники, ПодключенныеОтчетыИОбработки, Команды) Экспорт
|
||||
|
||||
Команда = Команды.Добавить();
|
||||
Команда.Вид = "Отправить";
|
||||
Команда.Представление = НСтр("ru = 'Почта'");
|
||||
Команда.Картинка = БиблиотекаКартинок.ОтправитьЭлектронноеПисьмо;
|
||||
Команда.РежимЗаписи = "НеЗаписывать";
|
||||
Команда.Порядок = 40;
|
||||
Команда.ТипПараметра = Метаданные.ОпределяемыеТипы.ПредметШаблонаСообщения.Тип;
|
||||
Команда.Обработчик = "ШаблоныСообщенийКлиент.ОтправитьПисьмо";
|
||||
Команда.МножественныйВыбор = Ложь;
|
||||
Если Не ЕстьПравоЧтенияШаблоновСообщений() Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Команда = Команды.Добавить();
|
||||
Команда.Вид = "Отправить";
|
||||
Команда.Представление = НСтр("ru = 'SMS'");
|
||||
Команда.РежимЗаписи = "НеЗаписывать";
|
||||
Команда.Порядок = 50;
|
||||
Команда.ТипПараметра = Метаданные.ОпределяемыеТипы.ПредметШаблонаСообщения.Тип;
|
||||
Команда.Обработчик = "ШаблоныСообщенийКлиент.ОтправитьSMS";
|
||||
Команда.МножественныйВыбор = Ложь;
|
||||
ДоступныеВарианты = ДоступныеВариантыОтправкиШаблоновСообщений();
|
||||
|
||||
Если ДоступныеВарианты.Почта Тогда
|
||||
Команда = Команды.Добавить();
|
||||
Команда.Вид = "Отправить";
|
||||
Команда.Представление = НСтр("ru = 'Почта'");
|
||||
Команда.Картинка = БиблиотекаКартинок.ОтправитьЭлектронноеПисьмо;
|
||||
Команда.РежимЗаписи = "НеЗаписывать";
|
||||
Команда.Порядок = 40;
|
||||
Команда.ТипПараметра = Метаданные.ОпределяемыеТипы.ПредметШаблонаСообщения.Тип;
|
||||
Команда.Обработчик = "ШаблоныСообщенийКлиент.ОтправитьПисьмо";
|
||||
Команда.МножественныйВыбор = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Если ДоступныеВарианты.SMS Тогда
|
||||
Команда = Команды.Добавить();
|
||||
Команда.Вид = "Отправить";
|
||||
Команда.Представление = НСтр("ru = 'SMS'");
|
||||
Команда.РежимЗаписи = "НеЗаписывать";
|
||||
Команда.Порядок = 50;
|
||||
Команда.ТипПараметра = Метаданные.ОпределяемыеТипы.ПредметШаблонаСообщения.Тип;
|
||||
Команда.Обработчик = "ШаблоныСообщенийКлиент.ОтправитьSMS";
|
||||
Команда.МножественныйВыбор = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -474,6 +485,20 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// Возвращает сведения о доступных вариантах отправки шаблонов сообщений.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ФиксированнаяСтруктура:
|
||||
// * SMS - Булево - если Истина, то можно формировать SMS сообщение по шаблонам.
|
||||
// * Почта - Булево - если Истина, то можно создавать письма по шаблонам.
|
||||
//
|
||||
Функция ДоступныеВариантыОтправкиШаблоновСообщений() Экспорт
|
||||
|
||||
Возврат ШаблоныСообщенийСлужебныйПовтИсп.ДоступныеВариантыОтправкиШаблоновСообщений();
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
// Возвращает сведения об сформированном исходящем письме.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@@ -1039,8 +1064,13 @@
|
||||
Функция ВидыШаблонов() Экспорт
|
||||
|
||||
ТипыШаблонов = Новый СписокЗначений;
|
||||
ТипыШаблонов.Добавить(ШаблоныСообщенийКлиентСервер.ИмяШаблонаЭлектронныхПисем(), НСтр("ru = 'Электронного письма'"));
|
||||
ТипыШаблонов.Добавить(ШаблоныСообщенийКлиентСервер.ИмяШаблонаSMS(), НСтр("ru = 'Сообщения SMS'"));
|
||||
ДоступныеВарианты = ДоступныеВариантыОтправкиШаблоновСообщений();
|
||||
Если ДоступныеВарианты.Почта Тогда
|
||||
ТипыШаблонов.Добавить(ШаблоныСообщенийКлиентСервер.ИмяШаблонаЭлектронныхПисем(), НСтр("ru = 'Электронного письма'"));
|
||||
КонецЕсли;
|
||||
Если ДоступныеВарианты.SMS Тогда
|
||||
ТипыШаблонов.Добавить(ШаблоныСообщенийКлиентСервер.ИмяШаблонаSMS(), НСтр("ru = 'Сообщения SMS'"));
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТипыШаблонов;
|
||||
|
||||
@@ -3038,6 +3068,12 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЕстьПравоЧтенияШаблоновСообщений()
|
||||
|
||||
Возврат ПравоДоступа("Чтение", Метаданные.Справочники.ШаблоныСообщений);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ОбработатьДанныеДляПереходаНаПодключаемыеКоманды() Экспорт
|
||||
|
||||
ЕстьПодключаемыеКоманды = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды");
|
||||
@@ -3067,4 +3103,5 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
#КонецОбласти
|
||||
|
||||
@@ -40,4 +40,17 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
Функция ДоступныеВариантыОтправкиШаблоновСообщений() Экспорт
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("SMS",
|
||||
ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОтправкаSMS"));
|
||||
Результат.Вставить("Почта",
|
||||
ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями"));
|
||||
|
||||
Возврат Новый ФиксированнаяСтруктура(Результат);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -1170,6 +1170,7 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Сертификат - СертификатКриптографии - сертификат криптографии.
|
||||
// - ДвоичныеДанные - двоичные данные сертификата в кодировке DER.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
@@ -1189,16 +1190,20 @@
|
||||
//
|
||||
Функция СвойстваСертификата(Сертификат) Экспорт
|
||||
|
||||
ДанныеСертификата = Сертификат;
|
||||
Если ТипЗнч(Сертификат) = Тип("СертификатКриптографии") Тогда
|
||||
ДвоичныеДанныеСертификата = Сертификат.Выгрузить();
|
||||
ИначеЕсли ТипЗнч(Сертификат) = Тип("ФиксированнаяСтруктура") Тогда
|
||||
ДвоичныеДанныеСертификата = Сертификат.Сертификат;
|
||||
ИначеЕсли ТипЗнч(Сертификат) = Тип("ДвоичныеДанные") Тогда
|
||||
ДвоичныеДанныеСертификата = Сертификат;
|
||||
ДанныеСертификата = Новый СертификатКриптографии(Сертификат);
|
||||
Иначе
|
||||
ДвоичныеДанныеСертификата = Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(
|
||||
Сертификат, ЭлектроннаяПодписьСлужебный.РазницаСУниверсальнымВременем(), ДвоичныеДанныеСертификата);
|
||||
ДанныеСертификата, ЭлектроннаяПодписьСлужебный.РазницаСУниверсальнымВременем(), ДвоичныеДанныеСертификата);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -1248,7 +1253,8 @@
|
||||
КонецФункции
|
||||
|
||||
// Усовершенствует подпись до переданного типа, если подпись позволяет.
|
||||
// Добавляет архивную метку времени в архивную подпись (CAdES-A).
|
||||
// Добавляет архивную метку времени в архивную подпись (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 = 'Диагностика доступности серверов меток времени'"),);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@@ -1928,7 +1958,7 @@
|
||||
Контекст.Вставить("ДляПроверкиПодписи", Ложь);
|
||||
Контекст.Вставить("ДействияДляУстраненияОшибок", Новый Соответствие);
|
||||
Контекст.Вставить("СвойстваСертификата");
|
||||
|
||||
|
||||
Возврат Контекст;
|
||||
|
||||
КонецФункции
|
||||
@@ -2132,9 +2162,7 @@
|
||||
|
||||
ОписаниеОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
|
||||
ОшибкаПоКлассификатору = ЭлектроннаяПодписьСлужебныйКлиентПовтИсп.ОшибкаПоКлассификатору(ОписаниеОшибки);
|
||||
|
||||
// Локализация
|
||||
|
||||
|
||||
Если ОшибкаПоКлассификатору <> Неопределено И ЗначениеЗаполнено(ОшибкаПоКлассификатору.ДействияДляУстранения) Тогда
|
||||
|
||||
Действие = Неопределено;
|
||||
@@ -2156,16 +2184,17 @@
|
||||
ИмяИздателя = СтроковыеФункцииКлиент.СтрокаЛатиницей(ИмяИздателя);
|
||||
АдресСпискаОтзываВнутренний = ЭлектроннаяПодписьСлужебныйКлиентСервер.АдресСпискаОтзываВнутренний(
|
||||
ИмяИздателя, Контекст.ДанныеСертификата);
|
||||
Если ЗначениеЗаполнено(АдресСпискаОтзываВнутренний.АдресВнутренний) Тогда
|
||||
ПараметрыУстановкиСпискаОтзыва = ПараметрыУстановкиСпискаОтзыва(
|
||||
|
||||
ПараметрыУстановкиСпискаОтзыва = ПараметрыУстановкиСпискаОтзыва(
|
||||
Контекст.СертификатКриптографии);
|
||||
ПараметрыУстановкиСпискаОтзыва.ОповещениеОЗавершении = Новый ОписаниеОповещения("ПроверитьСертификатПовторно",
|
||||
ЭтотОбъект, Контекст);
|
||||
ПараметрыУстановкиСпискаОтзыва.ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Для проверки сертификата требуется установка списка отзыва с помощью внешней компоненты %1.'"),
|
||||
"ExtraCryptoAPI");
|
||||
Если ЗначениеЗаполнено(АдресСпискаОтзываВнутренний.АдресВнутренний) Тогда
|
||||
ПараметрыУстановкиСпискаОтзыва.Адреса = АдресСпискаОтзываВнутренний.АдресВнешний;
|
||||
ПараметрыУстановкиСпискаОтзыва.АдресВнутренний = АдресСпискаОтзываВнутренний.АдресВнутренний;
|
||||
ПараметрыУстановкиСпискаОтзыва.ОповещениеОЗавершении = Новый ОписаниеОповещения("ПроверитьСертификатПовторно",
|
||||
ЭтотОбъект, Контекст);
|
||||
ПараметрыУстановкиСпискаОтзыва.ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Для проверки сертификата требуется установка списка отзыва с помощью внешней компоненты %1.'"),
|
||||
"ExtraCryptoAPI");
|
||||
УстановитьСписокОтзываСертификата(ПараметрыУстановкиСпискаОтзыва);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
@@ -2174,9 +2203,7 @@
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
// Конец локализация
|
||||
|
||||
|
||||
Если ОшибкаПоКлассификатору <> Неопределено Тогда
|
||||
ОбработатьОшибкуПоКлассификатору(ОписаниеОшибки, Контекст.ТребуетПроверкиНаКлиенте, Контекст, ОшибкаПоКлассификатору);
|
||||
КонецЕсли;
|
||||
@@ -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,17 +10983,32 @@
|
||||
УдалитьСертификатИзЛокальногоХранилища(Параметры.ДанныеСертификата);
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ДиагностикаСерверовМетокВремениСервер" Тогда
|
||||
|
||||
ДиагностикаСерверовМетокВремени("Сервер");
|
||||
|
||||
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ДиагностикаСерверовМетокВремениКлиент" Тогда
|
||||
|
||||
ДиагностикаСерверовМетокВремени("Клиент");
|
||||
|
||||
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ОткрытьНастройкиЭлектроннойПодписи" Тогда
|
||||
|
||||
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.НастройкиПрограммы") Тогда
|
||||
МодульНастройкиПрограммыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("НастройкиПрограммыКлиент");
|
||||
МодульНастройкиПрограммыКлиент.ОткрытьОбщиеНастройки();
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "УстановитьКомпоненту" Тогда
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("ОповеститьОбУспешномПодключенииКомпоненты", ЭтотОбъект);
|
||||
ВыполнитьПослеПроверкиРасширенияИКомпоненты(Оповещение);
|
||||
ВыполнитьПослеПроверкиРасширенияИКомпоненты(Оповещение);
|
||||
|
||||
ИначеЕсли СтрНайти(НавигационнаяСсылкаФорматированнойСтроки, "http") Тогда
|
||||
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(НавигационнаяСсылкаФорматированнойСтроки, );
|
||||
ИначеЕсли СтрНачинаетсяС(НавигационнаяСсылкаФорматированнойСтроки, "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.
Loaded 100 of 230 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user