3_1_9_238

This commit is contained in:
Компания 1С committed 2023-12-15 16:20:00 +03:00
1 parent ea636c0ef7
commit 964f40af7d
125 files changed
+3245 -2261

No files matched your search

@@ -315,6 +315,7 @@
Процедура ОбновитьКлассификаторыПолномочий(Команда)
ОбновитьКлассификаторыПолномочийНаСервере();
ОбновитьСписокПолномочий();
ПоказатьПредупреждение(, НСтр("ru = 'Обновление классификаторов полномочий выполнено.'"));
КонецПроцедуры
@@ -844,4 +845,19 @@
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСписокПолномочий()
КодыПолномочий = Новый Массив;
Для Каждого Полномочие Из ВыбранныеПолномочияТаблица Цикл
Если ЗначениеЗаполнено(Полномочие.Код) И Не Полномочие.НетВКлассификаторе Тогда
КодыПолномочий.Добавить(Полномочие.Код);
КонецЕсли;
КонецЦикла;
СформироватьДеревоПолномочий(ПоместитьВоВременноеХранилище(КодыПолномочий));
КонецПроцедуры
#КонецОбласти
@@ -570,9 +570,10 @@
КонецПроцедуры
&НаКлиенте
Процедура СертификатОкончаниеВыбора(Результат, Контекст) Экспорт
Асинх Процедура СертификатОкончаниеВыбора(Результат, Контекст) Экспорт
Если ТипЗнч(Результат) = Тип("ДвоичныеДанные") Тогда
Сертификат = ЭлектроннаяПодписьКлиент.ПредставлениеСертификата(Новый СертификатКриптографии(Результат));
СвойстваСертификата = Ждать ЭлектроннаяПодписьСлужебныйКлиент.СвойстваСертификата(Новый СертификатКриптографии(Результат));
Сертификат = СвойстваСертификата.Представление;
СертификатПредставителя = Результат;
Иначе
Сертификат = Неопределено;
@@ -110,8 +110,8 @@
УстановитьПривилегированныйРежим(Истина);
СвойстваСеанса = УправлениеДоступомСлужебныйПовтИсп.ОписаниеСвойствВидовДоступаСеанса().СвойстваСеанса;
ПроверенныеПоставляемыеПрофилиСеанса = ПроверенныеПоставляемыеПрофилиСеанса(СвойстваСеанса);
НовоеЗначение = ХешСуммаПоставляемыхПрофилей(ПроверенныеПоставляемыеПрофилиСеанса);
НовоеЗначение = "";
ПроверенныеПоставляемыеПрофилиСеанса(СвойстваСеанса, НовоеЗначение);
НачатьТранзакцию();
Попытка
@@ -1476,19 +1476,21 @@
// Для вызова из УправлениеДоступомСлужебныйПовтИсп.ОписаниеСтандартныхРолейРасширенийСеанса
//
// Параметры:
// ХешСумма - Строка - возвращаемое значение.
//
// Возвращаемое значение:
// см. УправлениеДоступомСлужебный.СтандартныеРолиРасширений
//
Функция ПодготовленныеСтандартныеРолиРасширенийСеанса() Экспорт
Функция ПодготовленныеСтандартныеРолиРасширенийСеанса(ХешСумма) Экспорт
Результат = Новый Структура;
Результат.Вставить("ОбщиеПрава", Новый Массив);
Результат.Вставить("БазовыеПрава", Новый Массив);
Результат.Вставить("БазовыеПраваВнешнихПользователей", Новый Массив);
Результат.Вставить("АдминистраторСистемы", Новый Массив);
Результат.Вставить("ПолныеПрава", Новый Массив);
Результат.Вставить("Все", Новый Соответствие);
Результат.Вставить("ДополнительныеРолиАдминистратора", Новый Соответствие);
ОбщиеПрава = Новый СписокЗначений;
БазовыеПрава = Новый СписокЗначений;
БазовыеПраваВнешнихПользователей = Новый СписокЗначений;
АдминистраторСистемы = Новый СписокЗначений;
ПолныеПрава = Новый СписокЗначений;
ДополнительныеРолиАдминистратора = Новый СписокЗначений;
ВсеРоли = Новый Соответствие;
РазделениеВключено = ОбщегоНазначения.РазделениеВключено();
@@ -1500,41 +1502,100 @@
ИмяРоли = Роль.Имя;
Если СтрЗаканчиваетсяНа(ВРег(ИмяРоли), ВРег("ОбщиеПрава")) Тогда
Результат.ОбщиеПрава.Добавить(ИмяРоли);
Результат.ДополнительныеРолиАдминистратора.Вставить(ИмяРоли, Истина);
Результат.Все.Вставить(ИмяРоли, "ОбщиеПрава");
ОбщиеПрава.Добавить(ИмяРоли);
ДополнительныеРолиАдминистратора.Добавить(ИмяРоли);
ВсеРоли.Вставить(ИмяРоли, "ОбщиеПрава");
ИначеЕсли СтрЗаканчиваетсяНа(ВРег(ИмяРоли), ВРег("ПолныеПрава")) Тогда
Результат.ПолныеПрава.Добавить(ИмяРоли);
Результат.ДополнительныеРолиАдминистратора.Вставить(ИмяРоли, Истина);
Результат.Все.Вставить(ИмяРоли, "ПолныеПрава");
ПолныеПрава.Добавить(ИмяРоли);
ДополнительныеРолиАдминистратора.Добавить(ИмяРоли);
ВсеРоли.Вставить(ИмяРоли, "ПолныеПрава");
ИначеЕсли СтрЗаканчиваетсяНа(ВРег(ИмяРоли), ВРег("БазовыеПрава")) Тогда
Результат.БазовыеПрава.Добавить(ИмяРоли);
Результат.Все.Вставить(ИмяРоли, "БазовыеПрава");
БазовыеПрава.Добавить(ИмяРоли);
ВсеРоли.Вставить(ИмяРоли, "БазовыеПрава");
ИначеЕсли СтрЗаканчиваетсяНа(ВРег(ИмяРоли), ВРег("БазовыеПраваВнешнихПользователей")) Тогда
Результат.БазовыеПраваВнешнихПользователей.Добавить(ИмяРоли);
Результат.Все.Вставить(ИмяРоли, "БазовыеПраваВнешнихПользователей");
БазовыеПраваВнешнихПользователей.Добавить(ИмяРоли);
ВсеРоли.Вставить(ИмяРоли, "БазовыеПраваВнешнихПользователей");
ИначеЕсли СтрЗаканчиваетсяНа(ВРег(ИмяРоли), ВРег("АдминистраторСистемы")) Тогда
Результат.АдминистраторСистемы.Добавить(ИмяРоли);
Результат.Все.Вставить(ИмяРоли, "АдминистраторСистемы");
АдминистраторСистемы.Добавить(ИмяРоли);
ВсеРоли.Вставить(ИмяРоли, "АдминистраторСистемы");
Если Не РазделениеВключено Тогда
Результат.ДополнительныеРолиАдминистратора.Вставить(ИмяРоли, Истина);
ДополнительныеРолиАдминистратора.Добавить(ИмяРоли);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат ОбщегоНазначения.ФиксированныеДанные(Результат);
ОбщиеПрава.СортироватьПоЗначению();
БазовыеПрава.СортироватьПоЗначению();
БазовыеПраваВнешнихПользователей.СортироватьПоЗначению();
АдминистраторСистемы.СортироватьПоЗначению();
ПолныеПрава.СортироватьПоЗначению();
ДополнительныеРолиАдминистратора.СортироватьПоЗначению();
ОбщиеПрава = ОбщиеПрава.ВыгрузитьЗначения();
БазовыеПрава = БазовыеПрава.ВыгрузитьЗначения();
БазовыеПраваВнешнихПользователей = БазовыеПраваВнешнихПользователей.ВыгрузитьЗначения();
АдминистраторСистемы = АдминистраторСистемы.ВыгрузитьЗначения();
ПолныеПрава = ПолныеПрава.ВыгрузитьЗначения();
ДополнительныеРолиАдминистратора = ДополнительныеРолиАдминистратора.ВыгрузитьЗначения();
ДополнительныеРоли = Новый Соответствие;
Для Каждого ИмяРоли Из ДополнительныеРолиАдминистратора Цикл
ДополнительныеРоли.Вставить(ИмяРоли, Истина);
КонецЦикла;
Свойства = Новый Структура;
Свойства.Вставить("ОбщиеПрава",
Новый ФиксированныйМассив(ОбщиеПрава));
Свойства.Вставить("БазовыеПрава",
Новый ФиксированныйМассив(БазовыеПрава));
Свойства.Вставить("БазовыеПраваВнешнихПользователей",
Новый ФиксированныйМассив(БазовыеПраваВнешнихПользователей));
Свойства.Вставить("АдминистраторСистемы",
Новый ФиксированныйМассив(АдминистраторСистемы));
Свойства.Вставить("ПолныеПрава",
Новый ФиксированныйМассив(ПолныеПрава));
Свойства.Вставить("Все",
Новый ФиксированноеСоответствие(ВсеРоли));
Свойства.Вставить("ДополнительныеРолиАдминистратора",
Новый ФиксированноеСоответствие(ДополнительныеРоли));
ОписаниеВерсии = Новый Структура("СвойстваВерсии", Новый Массив);
ДобавитьЭлементВерсии(ОписаниеВерсии, "Версия", "1");
ДобавитьЭлементВерсии(ОписаниеВерсии, "ОбщиеПрава", ОбщиеПрава);
ДобавитьЭлементВерсии(ОписаниеВерсии, "БазовыеПрава", БазовыеПрава);
ДобавитьЭлементВерсии(ОписаниеВерсии, "БазовыеПраваВнешнихПользователей", БазовыеПраваВнешнихПользователей);
ДобавитьЭлементВерсии(ОписаниеВерсии, "АдминистраторСистемы", АдминистраторСистемы);
ДобавитьЭлементВерсии(ОписаниеВерсии, "ПолныеПрава", ПолныеПрава);
ДобавитьЭлементВерсии(ОписаниеВерсии, "ДополнительныеРолиАдминистратора", ДополнительныеРолиАдминистратора);
Результат = Новый ФиксированнаяСтруктура(Свойства);
СтрокаВерсии = СтрСоединить(ОписаниеВерсии.СвойстваВерсии, Символы.ПС);
ХешСумма = УправлениеДоступомСлужебный.ХешСуммаДанных(СтрокаВерсии);
Возврат Результат;
КонецФункции
Функция ХешСуммаСтандартныхРолейРасширений(СтандартныеРоли) Экспорт
// См. УправлениеДоступомСлужебный.ДобавитьЭлементВерсии
Процедура ДобавитьЭлементВерсии(Контекст, ИмяПоля, Значение)
УправлениеДоступомСлужебный.ДобавитьЭлементВерсии(Контекст, ИмяПоля, Значение);
КонецПроцедуры
Возврат УправлениеДоступомСлужебный.ХешСуммаДанных(СтандартныеРоли);
КонецФункции
// См. УправлениеДоступомСлужебный.ДобавитьСвойстваВерсии
Процедура ДобавитьСвойстваВерсии(Контекст, Структура, ИменаПолей)
УправлениеДоступомСлужебный.ДобавитьСвойстваВерсии(Контекст, Структура, ИменаПолей);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции для поддержки обмена данными в РИБ.
@@ -1877,11 +1938,12 @@
// Параметры:
// СвойстваВидовДоступа - см. УправлениеДоступомСлужебный.СвойстваВидовДоступа
// - Неопределено
// ХешСумма - Строка - возвращаемое значение.
//
// Возвращаемое значение:
// см. УправлениеДоступомСлужебный.ПоставляемыеПрофили
//
Функция ПроверенныеПоставляемыеПрофилиСеанса(СвойстваВидовДоступа = Неопределено) Экспорт
Функция ПроверенныеПоставляемыеПрофилиСеанса(СвойстваВидовДоступа = Неопределено, ХешСумма = "") Экспорт
ЗаполненныеПоставляемыеПрофили = ЗаполненныеПоставляемыеПрофили();
ПараметрыОбновления = ЗаполненныеПоставляемыеПрофили.ПараметрыОбновления;
@@ -1919,8 +1981,8 @@
ВсеИмена = Новый Соответствие;
ВсеИдентификаторы = Новый Соответствие;
ИменаПапокПрофилей = Новый Соответствие;
СвойстваПрофилей = Новый Соответствие;
ОписанияПрофилейМассив = Новый Массив;
СписокПрофилей = Новый СписокЗначений;
Для Каждого ОписаниеПрофиля Из ОписанияПрофилей Цикл
ОписаниеПрофиля.Удалить("Описание");
ЭтоГруппа = Не ОписаниеПрофиля.Свойство("Роли");
@@ -1948,7 +2010,6 @@
СвойстваПрофиля.Вставить("Родитель", "");
СвойстваПрофиля.Вставить("Идентификатор", "");
СвойстваПрофиля.Вставить("Наименование", "");
СвойстваПрофиля.Вставить("Роли", Новый Массив);
ЗаполнитьЗначенияСвойств(СвойстваПрофиля, ОписаниеПрофиля);
СвойстваПрофиля.Вставить("ЭтоГруппа", ЭтоГруппа);
@@ -1959,8 +2020,7 @@
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ВсеИдентификаторы.Вставить(ВРег(СвойстваПрофиля.Идентификатор), Истина);
СвойстваПрофилей.Вставить(СвойстваПрофиля.Идентификатор, СвойстваПрофиля);
ОписанияПрофилейМассив.Добавить(СвойстваПрофиля);
СписокПрофилей.Добавить(СвойстваПрофиля, НРег(СвойстваПрофиля.Идентификатор));
Если ЭтоГруппа И Не ЗначениеЗаполнено(СвойстваПрофиля.Имя) Тогда
ТекстОшибки = ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -1982,7 +2042,6 @@
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ВсеИмена.Вставить(ВРег(СвойстваПрофиля.Имя), Истина);
СвойстваПрофилей.Вставить(СвойстваПрофиля.Имя, СвойстваПрофиля);
КонецЕсли;
Если ЭтоГруппа Тогда
@@ -2056,29 +2115,84 @@
КонецЦикла;
КонецЦикла;
ПоставляемыеПрофили = Новый Структура;
ПоставляемыеПрофили.Вставить("ПараметрыОбновления", ПараметрыОбновления);
ПоставляемыеПрофили.Вставить("ОписанияПрофилей", СвойстваПрофилей);
ПоставляемыеПрофили.Вставить("ОписанияПрофилейМассив", ОписанияПрофилейМассив);
ПоставляемыеПрофили.Вставить("ПапкиПоРодителям", ПапкиПоРодителям);
Возврат ОбщегоНазначения.ФиксированныеДанные(ПоставляемыеПрофили);
КонецФункции
// Параметры:
// ПоставляемыеПрофили - см. УправлениеДоступомСлужебный.ПоставляемыеПрофили
//
// Возвращаемое значение:
// Строка
//
Функция ХешСуммаПоставляемыхПрофилей(ПоставляемыеПрофили) Экспорт
ДанныеДляХеширования = Новый Структура(ПоставляемыеПрофили);
ДанныеДляХеширования.Вставить("ИменаПредопределенных",
ОписаниеВерсии = Новый Структура("СвойстваВерсии", Новый Массив);
ДобавитьЭлементВерсии(ОписаниеВерсии, "Версия", "1");
ДобавитьЭлементВерсии(ОписаниеВерсии, "ИменаПредопределенных",
Метаданные.Справочники.ПрофилиГруппДоступа.ПолучитьИменаПредопределенных());
Возврат УправлениеДоступомСлужебный.ХешСуммаДанных(ДанныеДляХеширования);
ДобавитьСвойстваВерсии(ОписаниеВерсии, ПараметрыОбновления,
"ОбновлятьИзмененныеПрофили,
|ЗапретитьИзменениеПрофилей,
|ОбновлятьГруппыДоступа,
|ОбновлятьГруппыДоступаСУстаревшимиНастройками");
СписокПрофилей.СортироватьПоПредставлению();
СвойстваПрофилей = Новый Соответствие;
ОписанияПрофилейМассив = Новый Массив;
РазделениеВключено = ОбщегоНазначения.РазделениеВключено();
Для Каждого ОписаниеПрофиля Из СписокПрофилей Цикл
СвойстваПрофиля = Новый ФиксированнаяСтруктура(ОписаниеПрофиля.Значение);
ОписанияПрофилейМассив.Добавить(СвойстваПрофиля);
СвойстваПрофилей.Вставить(СвойстваПрофиля.Идентификатор, СвойстваПрофиля);
Если ЗначениеЗаполнено(СвойстваПрофиля.Имя) Тогда
СвойстваПрофилей.Вставить(СвойстваПрофиля.Имя, СвойстваПрофиля);
КонецЕсли;
ОписаниеВерсии.СвойстваВерсии.Добавить("");
ДобавитьСвойстваВерсии(ОписаниеВерсии, СвойстваПрофиля,
"Имя, Родитель, Идентификатор, Наименование");
Если СвойстваПрофиля.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
ДобавитьСвойстваВерсии(ОписаниеВерсии, СвойстваПрофиля, "Назначение, Роли");
Если РазделениеВключено Тогда
РолиНедоступныеВСервисе = Новый СписокЗначений;
Для Каждого ОписаниеРоли Из СвойстваПрофиля.РолиНедоступныеВСервисе Цикл
РолиНедоступныеВСервисе.Добавить(ОписаниеРоли.Ключ);
КонецЦикла;
РолиНедоступныеВСервисе.СортироватьПоЗначению();
ДобавитьЭлементВерсии(ОписаниеВерсии,
"РолиНедоступныеВСервисе", РолиНедоступныеВСервисе.ВыгрузитьЗначения());
КонецЕсли;
ВидыДоступа = Новый СписокЗначений;
Для Каждого КлючИЗначение Из СвойстваПрофиля.ВидыДоступа Цикл
ЗначенияДоступа = Новый СписокЗначений;
ВидыДоступа.Добавить(ЗначенияДоступа, КлючИЗначение.Ключ + " (" + КлючИЗначение.Значение + ")");
Для Каждого ОписаниеЗначения Из СвойстваПрофиля.ЗначенияДоступа Цикл
Если ОписаниеЗначения.ВидДоступа = КлючИЗначение.Ключ Тогда
ЗначенияДоступа.Добавить(ОписаниеЗначения.ЗначениеДоступа);
КонецЕсли;
КонецЦикла;
ЗначенияДоступа.СортироватьПоЗначению();
КонецЦикла;
ВидыДоступа.СортироватьПоПредставлению();
Для Каждого ЭлементСписка Из ВидыДоступа Цикл
Если ЗначениеЗаполнено(ЭлементСписка.Значение) Тогда
ДобавитьЭлементВерсии(ОписаниеВерсии,
ЭлементСписка.Представление, ЭлементСписка.Значение.ВыгрузитьЗначения());
Иначе
ОписаниеВерсии.СвойстваВерсии.Добавить(ЭлементСписка.Представление);
КонецЕсли;
КонецЦикла;
КонецЦикла;
СтрокаВерсии = СтрСоединить(ОписаниеВерсии.СвойстваВерсии, Символы.ПС);
ХешСумма = УправлениеДоступомСлужебный.ХешСуммаДанных(СтрокаВерсии);
Результат = Новый Структура;
Результат.Вставить("ПараметрыОбновления",
Новый ФиксированнаяСтруктура(ПараметрыОбновления));
Результат.Вставить("ОписанияПрофилей",
Новый ФиксированноеСоответствие(СвойстваПрофилей));
Результат.Вставить("ОписанияПрофилейМассив",
Новый ФиксированныйМассив(ОписанияПрофилейМассив));
Результат.Вставить("ПапкиПоРодителям",
ОбщегоНазначения.ФиксированныеДанные(ПапкиПоРодителям));
Возврат Новый ФиксированнаяСтруктура(Результат);
КонецФункции
@@ -2088,7 +2202,7 @@
Если ОписаниеПрофиля.Назначение.Количество() = 0 Тогда
ОписаниеПрофиля.Назначение.Добавить(Тип("СправочникСсылка.Пользователи"));
КонецЕсли;
МассивНазначений = Новый Массив;
СписокНазначений = Новый СписокЗначений;
Для Каждого Тип Из ОписаниеПрофиля.Назначение Цикл
Если ТипЗнч(Тип) = Тип("ОписаниеТипов") Тогда
Типы = Тип.Типы();
@@ -2120,10 +2234,13 @@
КонецЕсли;
ОписаниеТипаСсылки = Новый ОписаниеТипов(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Тип));
Значение = ОписаниеТипаСсылки.ПривестиЗначение(Неопределено);
МассивНазначений.Добавить(Значение);
СписокНазначений.Добавить(Значение);
КонецЦикла;
КонецЦикла;
СвойстваПрофиля.Вставить("Назначение", МассивНазначений);
СписокНазначений.СортироватьПоЗначению();
СвойстваПрофиля.Вставить("Назначение",
Новый ФиксированныйМассив(СписокНазначений.ВыгрузитьЗначения()));
КонецПроцедуры
@@ -2171,6 +2288,12 @@
ЗаполнитьСтандартныеРолиРасширений(ОписаниеПрофиля.Роли,
УправлениеДоступомСлужебныйПовтИсп.ОписаниеСтандартныхРолейРасширенийСеанса().РолиСеанса);
СписокРолей = Новый СписокЗначений;
СписокРолей.ЗагрузитьЗначения(ОписаниеПрофиля.Роли);
СписокРолей.СортироватьПоЗначению();
СвойстваПрофиля.Вставить("Роли",
Новый ФиксированныйМассив(СписокРолей.ВыгрузитьЗначения()));
Если ОбщегоНазначения.РазделениеВключено() Тогда
// Заполнение списка недоступных ролей в модели сервиса
// для определения необходимости обновления поставляемых профилей.
@@ -2241,7 +2364,7 @@
КонецЕсли;
ВидыДоступа.Вставить(ИмяВидаДоступа, УточнениеВидаДоступа);
КонецЦикла;
СвойстваПрофиля.Вставить("ВидыДоступа", ВидыДоступа);
СвойстваПрофиля.Вставить("ВидыДоступа", Новый ФиксированноеСоответствие(ВидыДоступа));
КонецПроцедуры
@@ -2354,9 +2477,9 @@
ЗначениеДоступа);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ЗначенияДоступа.Добавить(Отбор);
ЗначенияДоступа.Добавить(Новый ФиксированнаяСтруктура(Отбор));
КонецЦикла;
СвойстваПрофиля.Вставить("ЗначенияДоступа", ЗначенияДоступа);
СвойстваПрофиля.Вставить("ЗначенияДоступа", Новый ФиксированныйМассив(ЗначенияДоступа));
КонецПроцедуры
@@ -1289,8 +1289,8 @@
<changeRowOrder>true</changeRowOrder>
<width>51</width>
<maxWidth>51</maxWidth>
<height>4</height>
<autoMaxHeight>true</autoMaxHeight>
<heightControlVariant>ByContent</heightControlVariant>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<rowSelectionMode>Row</rowSelectionMode>
@@ -1314,6 +1314,10 @@
<items xsi:type="form:Button">
<name>ПоказатьДанныеСертификата</name>
<id>744</id>
<title>
<key>ru</key>
<value>Все свойства сертификата</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -1330,10 +1334,10 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<type>Hyperlink</type>
<commandName>Form.Command.ПоказатьДанныеСертификата</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Picture</representation>
<representation>PictureAndText</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
@@ -1360,7 +1364,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<group>Vertical</group>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
@@ -978,14 +978,14 @@
// Продолжение процедуры ПерейтиКВыборуТекущегоСертификата.
&НаКлиенте
Процедура ПерейтиКВыборуТекущегоСертификатаПослеВыгрузкиСертификата(ВыгруженныеДанные, Контекст) Экспорт
Асинх Процедура ПерейтиКВыборуТекущегоСертификатаПослеВыгрузкиСертификата(ВыгруженныеДанные, Контекст) Экспорт
СертификатАдрес = ПоместитьВоВременноеХранилище(ВыгруженныеДанные, УникальныйИдентификатор);
СертификатОтпечаток = Контекст.ТекущиеДанные.Отпечаток;
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьОписаниеДанныхСертификата(СертификатОписаниеДанных,
ЭлектроннаяПодписьКлиент.СвойстваСертификата(Контекст.СертификатКриптографии));
Ждать ЭлектроннаяПодписьСлужебныйКлиент.СвойстваСертификата(Контекст.СертификатКриптографии));
Контекст.СохраненныеСвойства = СохраненныеСвойстваСертификата(Контекст.ТекущиеДанные.Отпечаток,
СертификатАдрес, СертификатПараметрыРеквизитов);
@@ -1102,8 +1102,8 @@
<changeRowOrder>true</changeRowOrder>
<width>51</width>
<maxWidth>51</maxWidth>
<height>4</height>
<autoMaxHeight>true</autoMaxHeight>
<heightControlVariant>ByContent</heightControlVariant>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<rowSelectionMode>Row</rowSelectionMode>
@@ -1127,6 +1127,10 @@
<items xsi:type="form:Button">
<name>ПоказатьДанныеСертификата</name>
<id>744</id>
<title>
<key>ru</key>
<value>Все свойства сертификата</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -1143,10 +1147,10 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<type>Hyperlink</type>
<commandName>Form.Command.ПоказатьДанныеСертификата</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Picture</representation>
<representation>PictureAndText</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
@@ -1174,7 +1178,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<group>Vertical</group>
<horizontalAlign>Left</horizontalAlign>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -341,12 +341,12 @@
// Продолжение процедуры Далее.
&НаКлиенте
Процедура ДалееПослеВыгрузкиСертификата(ВыгруженныеДанные, СертификатКриптографии) Экспорт
Асинх Процедура ДалееПослеВыгрузкиСертификата(ВыгруженныеДанные, СертификатКриптографии) Экспорт
ПоказатьСтраницуУточнениеСвойствСертификата(ЭтотОбъект,
СертификатКриптографии,
ВыгруженныеДанные,
ЭлектроннаяПодписьКлиент.СвойстваСертификата(СертификатКриптографии));
Ждать ЭлектроннаяПодписьСлужебныйКлиент.СвойстваСертификата(СертификатКриптографии));
КонецПроцедуры
@@ -553,8 +553,8 @@
<changeRowOrder>true</changeRowOrder>
<width>51</width>
<maxWidth>51</maxWidth>
<height>4</height>
<autoMaxHeight>true</autoMaxHeight>
<heightControlVariant>ByContent</heightControlVariant>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<rowSelectionMode>Row</rowSelectionMode>
@@ -578,6 +578,10 @@
<items xsi:type="form:Button">
<name>ПоказатьДанныеСертификата</name>
<id>47</id>
<title>
<key>ru</key>
<value>Все свойства сертификата</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -594,10 +598,10 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<type>Hyperlink</type>
<commandName>Form.Command.ПоказатьДанныеСертификата</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Picture</representation>
<representation>PictureAndText</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
@@ -624,7 +628,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>AlwaysHorizontal</group>
<group>Vertical</group>
<behavior>Auto</behavior>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
@@ -403,7 +403,7 @@
СертификатКриптографии = Новый СертификатКриптографии;
Ждать СертификатКриптографии.ИнициализироватьАсинх(ПолучитьИзВременногоХранилища(АдресСертификата));
СвойстваСертификата = ЭлектроннаяПодписьКлиент.СвойстваСертификата(СертификатКриптографии);
СвойстваСертификата = Ждать ЭлектроннаяПодписьСлужебныйКлиент.СвойстваСертификата(СертификатКриптографии);
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьОписаниеДанныхСертификата(
СертификатОписаниеДанных, СвойстваСертификата);
@@ -6,11 +6,11 @@
</li>
<li>Подписывать данные могут разные пользователи, при этом для каждого будет создана своя подпись.
</li>
<li>Если <strong>Сертификат</strong> не выбран - выберите его из списка. Если при следующем открытии сертификат будет среди установленных на компьютере, повторный выбор не потребуется.
<li>Если <strong>Сертификат</strong> не выбран - выберите его из списка. Если при следующем открытии сертификат будет среди установленных на устройстве, повторный выбор не потребуется.
</li>
<li>При выборе из выпадающего списка будут показаны только сертификаты, у которых поле <strong>Пользователи</strong> не заполнено или совпадает с текущим пользователем сеанса, а поле <strong>Программа</strong> заполнено. Если при открытии окна <strong>Подписание</strong> был указан отбор по организации, то в выпадающем списке не будет сертификатов, у которых поле <strong>Организация</strong> не совпадает с организацией, указанной в отборе. Если при открытии окна <strong>Подписание</strong> был указан конкретный список сертификатов, то будет показан только этот список.
</li>
<li>При выборе из списка личных сертификатов (установленных на компьютере и на сервере) путем нажатия <strong>Показать все</strong>, показываются все сертификаты без учета полей <strong>Пользователь</strong> и <strong>Программа</strong>. Если при открытии окна <strong>Подписание</strong> был указан отбор по организации, то в списке не будет сертификатов, у которых поле <strong>Организация</strong> не совпадает с организацией, указанной в отборе. Но будут показаны все сертификаты, которых еще нет в списке (то есть те, которые есть только в хранилище сертификатов операционный системы компьютера или сервера).
<li>При выборе из списка личных сертификатов (установленных на устройстве и на сервере) путем нажатия <strong>Показать все</strong>, показываются все сертификаты без учета полей <strong>Пользователь</strong> и <strong>Программа</strong>. Если при открытии окна <strong>Подписание</strong> был указан отбор по организации, то в списке не будет сертификатов, у которых поле <strong>Организация</strong> не совпадает с организацией, указанной в отборе. Но будут показаны все сертификаты, которых еще нет в списке (то есть те, которые есть только в хранилище сертификатов операционный системы устройства или сервера).
</li>
<li>Введите <strong>Пароль</strong> к закрытому ключу (указанный при установке или создании сертификата) <span style="font-size: 7.5pt;">или <b style="mso-bidi-font-weight: normal;">Пин-код</b>, если местом хранения сертификата является сервис
DSS.</span>
@@ -20,13 +20,14 @@
<li>Включите флажок <strong>Запомнить пароль</strong>, для того чтобы не вводить пароль <span style="font-size: 7.5pt; mso-fareast-font-family: &quot;Times New Roman&quot;; mso-bidi-font-family: &quot;Times New Roman&quot;; mso-ansi-language: RU; mso-fareast-language: RU; mso-bidi-language: AR-SA;">(пин-код
для сервиса DSS) </span>в следующий раз.
</li>
<li>Также файл можно подписать с помощью <a href="Catalog.МашиночитаемыеДоверенности/Help">МЧД</a>, для этого включите флажок <img src="StdPicture.AppearanceCheckBox"></img> <strong>По доверенности</strong> и выберите соответствующую доверенность из списка. </li>
<li>В некоторых случаях можно ввести <strong>Комментарий к подписи</strong> - дополнительную информацию о подписи.
</li>
<li>Для выполнения подписи нажмите <strong>Подписать</strong>.
</li>
<li>Данные будут подписаны с использованием указанного сертификата.
</li>
<li>Созданная электронная подпись хранится в программе. Подписанный объект становится недоступным для редактирования и отображается в списках со значком <img src="CommonPicture.ПодписанЭП"></img>.</li>
<li>Созданная электронная подпись хранится в приложении. Подписанный объект становится недоступным для редактирования и отображается в списках со значком <img src="CommonPicture.ПодписанЭП"></img>.</li>
<ul type="disc"></ul></ul><h3></h3>
<h3>См. также:</h3>
<ul style="margin-right: 0px;" dir="ltr"><li><a href="CommonForm.НастройкиЭлектроннойПодписиИШифрования/Help">Настройки электронной подписи и шифрования</a>.</li></ul></body></html>
@@ -684,9 +684,18 @@
Контекст.Вставить("ОшибкаНаСервере", Новый Структура);
Если СертификатДействителенДо < ОбщегоНазначенияКлиент.ДатаСеанса() Тогда
ДополнительныеСвойстваСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.ДополнительныеСвойстваСертификата(СертификатАдрес);
Если ЗначениеЗаполнено(ДополнительныеСвойстваСертификата.ДатаОкончанияЗакрытогоКлюча)
И ДополнительныеСвойстваСертификата.ДатаОкончанияЗакрытогоКлюча < ОбщегоНазначенияКлиент.ДатаСеанса() Тогда
Контекст.ОшибкаНаКлиенте.Вставить("ОписаниеОшибки",
НСтр("ru = 'У выбранного сертификата истек срок действия закрытого ключа.
|Выберите другой сертификат.'"));
Иначе
Контекст.ОшибкаНаКлиенте.Вставить("ОписаниеОшибки",
НСтр("ru = 'У выбранного сертификата истек срок действия.
|Выберите другой сертификат.'"));
КонецЕсли;
ОбработатьОшибку(Контекст.Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере);
Возврат;
КонецЕсли;
@@ -908,7 +908,7 @@
// Продолжение процедуры ПроверитьНаСторонеКлиента.
&НаКлиенте
Процедура ПроверитьНаСторонеКлиентаПослеСозданияМенеджераКриптографии(Результат, Контекст) Экспорт
Асинх Процедура ПроверитьНаСторонеКлиентаПослеСозданияМенеджераКриптографии(Результат, Контекст) Экспорт
Контекст.Вставить("МенеджерКриптографии", Неопределено);
@@ -931,8 +931,7 @@
Контекст.МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = СвойстваПароля.Значение;
КонецЕсли;
ОписаниеОшибки = "";
ДополнительнаяПроверкаНаВозможностьПодписания(Контекст.СертификатКриптографии, Ложь, ОписаниеОшибки);
ОписаниеОшибки = Ждать ДополнительнаяПроверкаНаВозможностьПодписания(Контекст.СертификатКриптографии, Ложь);
// Подписание.
Если ПроверкиНаКлиенте.НаличиеСертификата = Истина И Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда
@@ -948,7 +947,7 @@
// Продолжение процедуры ПроверитьНаСторонеКлиента.
&НаКлиенте
Процедура ПроверитьНаСторонеКлиентаВМоделиСервиса(Результат, Контекст)
Асинх Процедура ПроверитьНаСторонеКлиентаВМоделиСервиса(Результат, Контекст)
Контекст.Вставить("МенеджерКриптографии", Неопределено);
@@ -967,8 +966,7 @@
Возврат;
КонецЕсли;
ОписаниеОшибки = "";
ДополнительнаяПроверкаНаВозможностьПодписания(Контекст.СертификатКриптографии, Истина, ОписаниеОшибки);
ОписаниеОшибки = Ждать ДополнительнаяПроверкаНаВозможностьПодписания(Контекст.СертификатКриптографии, Истина);
// Подписание.
Если ПроверкиНаКлиенте.НаличиеСертификата = Истина И Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда
@@ -1401,7 +1399,7 @@
// Продолжение процедуры ПроверитьНаСторонеКлиента.
&НаКлиенте
Процедура ПроверитьНаСторонеКлиентаОблачнаяПодпись(Результат, Контекст)
Асинх Процедура ПроверитьНаСторонеКлиентаОблачнаяПодпись(Результат, Контекст)
Контекст.Вставить("МенеджерКриптографии", Неопределено);
@@ -1422,8 +1420,7 @@
Возврат;
КонецЕсли;
ОписаниеОшибки = "";
ДополнительнаяПроверкаНаВозможностьПодписания(Контекст.СертификатКриптографии, Истина, ОписаниеОшибки);
ОписаниеОшибки = Ждать ДополнительнаяПроверкаНаВозможностьПодписания(Контекст.СертификатКриптографии, Истина);
// Подписание.
Если ПроверкиНаСервере.НаличиеСертификата = Истина И Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда
@@ -2231,7 +2228,9 @@
КонецФункции
&НаКлиенте
Процедура ДополнительнаяПроверкаНаВозможностьПодписания(СертификатКриптографии, СторонаВыполнения, ОписаниеОшибки)
Асинх Функция ДополнительнаяПроверкаНаВозможностьПодписания(СертификатКриптографии, СторонаВыполнения)
ОписаниеОшибки = "";
Если Отозван Тогда
ОшибкаСертификатПомеченКакОтозванный = ОшибкаСертификатПомеченКакОтозванный();
@@ -2239,7 +2238,7 @@
УстановитьЭлемент(ЭтотОбъект, "Подписание", СторонаВыполнения, ОшибкаСертификатПомеченКакОтозванный, Истина, ОбъединятьРезультаты);
Иначе
РезультатПроверкиУдостоверяющегоЦентраСертификата = ЭлектроннаяПодписьСлужебныйКлиент.РезультатПроверкиУдостоверяющегоЦентраСертификата(СертификатКриптографии);
РезультатПроверкиУдостоверяющегоЦентраСертификата = Ждать ЭлектроннаяПодписьСлужебныйКлиент.РезультатПроверкиУдостоверяющегоЦентраСертификата(СертификатКриптографии);
Если Не РезультатПроверкиУдостоверяющегоЦентраСертификата.Действует Тогда
@@ -2254,7 +2253,9 @@
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Возврат ОписаниеОшибки;
КонецФункции
&НаСервереБезКонтекста
Функция ОшибкаСертификатПомеченКакОтозванный()
@@ -202,8 +202,8 @@
<changeRowOrder>true</changeRowOrder>
<width>51</width>
<maxWidth>51</maxWidth>
<height>4</height>
<autoMaxHeight>true</autoMaxHeight>
<heightControlVariant>ByContent</heightControlVariant>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<rowSelectionMode>Row</rowSelectionMode>
@@ -227,6 +227,10 @@
<items xsi:type="form:Button">
<name>ПоказатьДанныеСертификата</name>
<id>74</id>
<title>
<key>ru</key>
<value>Все свойства сертификата</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -243,10 +247,10 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<type>Hyperlink</type>
<commandName>Form.Command.ПоказатьДанныеСертификата</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Picture</representation>
<representation>PictureAndText</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
@@ -274,7 +278,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<group>Vertical</group>
<horizontalAlign>Left</horizontalAlign>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -564,8 +564,8 @@
<changeRowSet>true</changeRowSet>
<changeRowOrder>true</changeRowOrder>
<autoMaxWidth>true</autoMaxWidth>
<height>4</height>
<autoMaxHeight>true</autoMaxHeight>
<heightControlVariant>ByContent</heightControlVariant>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<rowSelectionMode>Row</rowSelectionMode>
@@ -588,11 +588,15 @@
<rowFilter xsi:type="core:UndefinedValue"/>
</items>
<items xsi:type="form:FormGroup">
<name>ВертикальнаяГруппа3</name>
<id>261</id>
<name>ГруппаОткрытияСвойств</name>
<id>327</id>
<items xsi:type="form:Button">
<name>ПоказатьДанныеСертификата</name>
<id>153</id>
<title>
<key>ru</key>
<value>Все свойства сертификата</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -609,10 +613,10 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<type>Hyperlink</type>
<commandName>Form.Command.ПоказатьДанныеСертификата</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Picture</representation>
<representation>PictureAndText</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
@@ -621,7 +625,10 @@
<items xsi:type="form:Button">
<name>ПоказатьЗаявлениеПоКоторомуБылПолученСертификат</name>
<id>263</id>
<visible>true</visible>
<title>
<key>ru</key>
<value>Заявление, по которому получен сертификат</value>
</title>
<enabled>false</enabled>
<userVisible>
<common>true</common>
@@ -636,10 +643,10 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<type>Hyperlink</type>
<commandName>Form.Command.ПоказатьЗаявлениеПоКоторомуБылПолученСертификат</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<representation>PictureAndText</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
@@ -652,11 +659,11 @@
</userVisible>
<title>
<key>ru</key>
<value>Вертикальная группа</value>
<value>Группа открытия свойств</value>
</title>
<extendedTooltip>
<name>ВертикальнаяГруппа3РасширеннаяПодсказка</name>
<id>262</id>
<name>ГруппаОткрытияСвойствРасширеннаяПодсказка</name>
<id>328</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -666,7 +673,9 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
@@ -694,7 +703,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<group>Vertical</group>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
@@ -656,6 +656,7 @@
Элементы.ПредупреждениеГруппа.Видимость = ЗначениеЗаполнено(ДанныеПредупреждения.ДополнительныеСведения);
Элементы.Предупреждение.Заголовок = ДанныеПредупреждения.ДополнительныеСведения;
Элементы.ПодписаниеРазрешено.Видимость = Ложь;
Иначе
Элементы.ПредупреждениеГруппа.Видимость = Истина;
@@ -533,6 +533,7 @@
Иначе
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ТекстОшибкиНеУдалосьОпределитьПрограмму(
ПрограммаПоСертификатуРезультат.Ошибка);
СертификатНаСервереОписаниеОшибки = Новый Структура;
СертификатНаСервереОписаниеОшибки.Вставить("ОписаниеОшибки", ТекстОшибки);
КонецЕсли;
@@ -109,6 +109,7 @@
|ГДЕ
| СертификатыКлючейЭлектроннойПодписиИШифрования.УдалитьПользовательОповещенОСрокеДействия
| ИЛИ &УсловиеЗаявления
| ИЛИ СертификатыКлючейЭлектроннойПодписиИШифрования.ДействителенДо > &ТекущаяДата
| ИЛИ НЕ ОдинПользовательВТабличнойЧасти.Ссылка ЕСТЬ NULL";
@@ -125,6 +126,8 @@
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ИЛИ &УсловиеЗаявления", "");
КонецЕсли;
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
МассивСсылок = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок);
@@ -136,7 +139,7 @@
Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь,
"Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования");
Если Выборка.Количество() > 0 Тогда
ОбработатьЗаявленияИОповещенияСертификатов(Выборка);
ОбработатьЗаявленияОповещенияИСрокДействияСертификатов(Выборка);
КонецЕсли;
ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь,
@@ -149,7 +152,7 @@
#Область СлужебныеПроцедурыИФункции
Процедура ОбработатьЗаявленияИОповещенияСертификатов(Выборка)
Процедура ОбработатьЗаявленияОповещенияИСрокДействияСертификатов(Выборка)
ОбъектовОбработано = 0;
ПроблемныхОбъектов = 0;
@@ -175,6 +178,8 @@
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
Блокировка.Заблокировать();
ЗаписатьОбъект = Ложь;
СертификатОбъект = Выборка.Ссылка.ПолучитьОбъект(); // СправочникОбъект.СертификатыКлючейЭлектроннойПодписиИШифрования
// Перенос оповещений о необходимости замены сертификата в регистр сведений.
@@ -204,6 +209,7 @@
ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписейОповещений, Истина);
КонецЕсли;
СертификатОбъект.УдалитьПользовательОповещенОСрокеДействия = Ложь;
ЗаписатьОбъект = Истина;
КонецЕсли;
// Перенос данных заявлений в регистр сведений.
@@ -211,16 +217,44 @@
И ЗначениеЗаполнено(СертификатОбъект.УдалитьСостояниеЗаявления) Тогда
ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ОбработатьДанныеДляПереходаНаНовуюВерсию(
СертификатОбъект);
СертификатОбъект, ЗаписатьОбъект);
КонецЕсли;
Если СертификатОбъект.Пользователи.Количество() = 1 Тогда
СертификатОбъект.Пользователь = СертификатОбъект.Пользователи[0].Пользователь;
СертификатОбъект.Пользователи.Очистить();
ЗаписатьОбъект = Истина;
КонецЕсли;
Если СертификатОбъект.ДействителенДо > ТекущаяДатаСеанса() Тогда
ДвоичныеДанныеСертификата = СертификатОбъект.ДанныеСертификата.Получить();
Если ТипЗнч(ДвоичныеДанныеСертификата) = Тип("ДвоичныеДанные") Тогда
Попытка
Сертификат = Новый СертификатКриптографии(ДвоичныеДанныеСертификата);
Исключение
Сертификат = Неопределено;
КонецПопытки;
Если Сертификат <> Неопределено Тогда
СвойстваСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(
Сертификат, ЭлектроннаяПодписьСлужебный.ДобавкаВремени(), ДвоичныеДанныеСертификата);
Если СертификатОбъект.ДействителенДо <> СвойстваСертификата.ДействителенДо Тогда
СтрокаПоиска = Формат(СертификатОбъект.ДействителенДо, "ДФ=MM.yyyy");
СтрокаЗамены = Формат(СвойстваСертификата.ДействителенДо, "ДФ=MM.yyyy");
СертификатОбъект.Наименование = СтрЗаменить(СертификатОбъект.Наименование, СтрокаПоиска, СтрокаЗамены);
СертификатОбъект.ДействителенДо = СвойстваСертификата.ДействителенДо;
ЗаписатьОбъект = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЗаписатьОбъект Тогда
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(СертификатОбъект);
Иначе
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Выборка.Ссылка);
КонецЕсли;
ОбъектовОбработано = ОбъектовОбработано + 1;
ЗафиксироватьТранзакцию();
@@ -15,7 +15,7 @@
Для Каждого Состояние Из СостоянияОригинала Цикл
СписокСостоянийОригинала.Добавить(Состояние,,Ложь);
КонецЦикла;
СписокСостоянийОригинала.Добавить("Состояниенеизвестно",НСтр("ru='<Состояние неизвестно>'"),Ложь);
СписокСостоянийОригинала.Добавить("СостояниеНеизвестно",НСтр("ru='<Состояние неизвестно>'"),Ложь);
Если Параметры.Свойство("СписокСостояний") Тогда
Для Каждого Состояние Из Параметры.СписокСостояний Цикл
@@ -1,71 +1,107 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body>
<p>В программе существует возможность хранить файлы в информационной базе без привязки к конкретному объекту. Список предназначен для управления этими файлами.</p>
<p>В приложении существует возможность хранить файлы в информационной базе без привязки к конкретному объекту. Список предназначен для управления этими файлами.</p>
<p>Работа со списком организована аналогично работе в <strong>Проводнике Windows</strong>. </p>
<p>Левая часть списка содержит иерархическую структуру <a href="Catalog.ПапкиФайлов/Help">папок</a>. В списке имеются предопределенные папки, которые нельзя удалить, например, папка <strong>Шаблоны файлов</strong>. </p>
<p>В правой части располагается список файлов в выбранной папке. С помощью <a href="Catalog.Файлы/Help">команд</a> контекстного меню или меню <strong>Еще</strong> в список можно <strong>Добавлять</strong> новые файлы и папки, <strong>Копировать</strong>, <strong>Изменять</strong> или <strong>Помечать их на удаление</strong>.</p>
<p>Для работы с реквизитами файла (автор, наименование, описание и т.д.) используется <a href="Catalog.Файлы.Form.ФормаЭлемента/Help">карточка</a> (<strong>Еще -</strong> <strong>Открыть карточку</strong>), а для работы с самим файлом (<strong>Просмотреть</strong> или <strong>Редактировать</strong> файл) - соответствующее приложение, установленное на компьютере. </p>
<p>Для работы с реквизитами файла (автор, наименование, описание и т.д.) используется <a href="Catalog.Файлы.Form.ФормаЭлемента/Help">карточка</a> (<strong>Еще -</strong> <strong>Открыть карточку</strong>), а для работы с самим файлом (<strong>Просмотреть</strong> или <strong>Редактировать</strong> файл) - соответствующее приложение, установленное на устройство. </p>
<p>При редактировании файла его предыдущая <a href="DataProcessor.РаботаСФайлами.Form.ВерсияПрисоединенногоФайла/Help">версия</a> автоматически сохраняется в информационной базе (эта настройка установлена по умолчанию, отменять не рекомендуется, т.к. если файл был испорчен во время редактирования, в этом случае имеется возможность вернуться к одной из его предыдущих <a href="Catalog.ВерсииФайлов/Help">версий</a>). </p>
<p>Зеленым цветом отображаются файлы, занятые Вами для редактирования, а серым цветом - файлы, занятые другими пользователями программы.</p>
<p>Зеленым цветом отображаются файлы, занятые Вами для редактирования, а серым цветом - файлы, занятые другими пользователями приложения.</p>
<p>В списке выводится:</p>
<ul><li><img src="CommonPicture.ПодписанЗашифрованЗаголовок"></img> - наличие электронной подписи или шифрования.
</li><li><strong>Наименование</strong> - полное наименование файла. Значок рядом с наименованием указывает тип файла. В этой же колонке выводится описание - подробное описание файла.
</li><li><strong>Автор</strong> - пользователь, который добавил файл.
</li><li><strong>Дата изменения</strong> - дата и время добавления версии файла в базу. </li></ul><p>С помощью команды <strong>Еще - Дополнительно - Изменить форму</strong> можно добавить дополнительные поля, например:</p>
</li>
<li><strong>Наименование</strong> - полное наименование файла. Значок рядом с наименованием указывает тип файла. В этой же колонке выводится описание - подробное описание файла.
</li>
<li><strong>Автор</strong> - пользователь, который добавил файл.
</li>
<li><strong>Дата изменения</strong> - дата и время добавления версии файла в базу. </li></ul><p>С помощью команды <strong>Еще - Дополнительно - Изменить форму</strong> можно добавить дополнительные поля, например:</p>
<ul><div>
<li><strong>Отредактировал</strong> - пользователь, который добавил версию файла.
</li><li><strong>Текущая версия</strong> - код текущей версии и т.д.</li></div></ul><h3>Добавление файлов</h3>
<p>Для добавления нового файла в программу:</p>
</li>
<li><strong>Текущая версия</strong> - код текущей версии и т.д.</li></div></ul><h3>Добавление файлов</h3>
<p>Для добавления нового файла в приложение:</p>
<ul><li>
<div>Выберите нужную папку;</div>
</li><li>
</li>
<li>
<div>Нажмите <strong>Добавить</strong> (клавишу <strong>Insert</strong>); </div>
</li><li>
</li>
<li>
<div>Выберите способ создания:</div>
<ul><li>
<div><strong>Файл с диска</strong> </div>
<div><strong>Файл с устройства</strong></div>
<ul><li>
<div>Для того чтобы прикрепить к объекту или поместить в папку уже имеющийся на компьютере файл, укажите путь к файлу на компьютере, нажмите кнопку <strong>Открыть</strong>.</div>
</li><li>
<div>После этого программа сохранит файл, автоматически создаст и откроет <strong>Карточку файла</strong>.</div></li></ul></li><li>
<div>Для того чтобы прикрепить к объекту или поместить в папку уже имеющийся на устройстве файл, укажите путь к файлу на устройстве, нажмите кнопку <strong>Открыть</strong>.</div>
</li>
<li>
<div>После этого приложение сохранит файл, автоматически создаст и откроет <strong>Карточку файла</strong>.</div></li></ul></li>
<li>
<div><strong>По шаблону</strong> </div>
<ul><li>
<div>Выделите шаблон файла в <a href="Catalog.Файлы.Form.ФормаВыбора/Help">списке выбора</a>, затем нажмите кнопку <strong>Выбрать</strong>. </div>
</li><li>
<div>Программой будет автоматически создана и открыта <strong>Карточка файла</strong>.</div></li></ul></li><li>
</li>
<li>
<div>Приложением будет автоматически создана и открыта <strong>Карточка файла</strong>.</div></li></ul></li>
<li>
<div><strong>Со сканера</strong></div>
<ul><li>
<div>Вариант создания файла <strong>Со сканера</strong> становится доступным, если к компьютеру подключен сканер (более подробно см. документацию к сканеру) и на компьютере подключена <a href="DataProcessor.Сканирование.Form.НастройкаСканирования/Help">компонента для работы со сканером</a>. Также необходимо настроить сканирование. </div>
</li><li>
<div>Вариант создания файла <strong>Со сканера</strong> становится доступным, если к устройству подключен сканер (более подробно см. документацию к сканеру) и на устройстве подключена <a href="DataProcessor.Сканирование.Form.НастройкаСканирования/Help">компонента для работы со сканером</a>. Также необходимо настроить сканирование. </div>
</li>
<li>
<div>Если все условия соблюдены и настройки выполнены, можно получить файл со сканера. </div>
</li><li>
</li>
<li>
<div>Для этого необходимоследовать инструкциям <a href="DataProcessor.Сканирование.Form.РезультатСканирования/Help">Помощника сканирования</a>. </div>
</li><li>
</li>
<li>
<div>После того как документ отсканирован, выполните команду <strong>Принять</strong>, после этого файлу автоматически присваивается код и создается карточка файла, которая выводится на экран. В поле <strong>Наименование</strong> также автоматически проставляется код. Отредактируйте нужные поля, нажмите <strong>Записать и закрыть,</strong> для того чтобы сохранить карточку файла.</div></li></ul></li></ul></li></ul><h3>Шаблоны файлов</h3>
<ul><li>Программа поставляется с предопределенной папкой <strong>Шаблоны файлов</strong>. В папке можно разместить файлы, которые будут использоваться при создании новых файлов в качестве шаблона. Например, в эту папку можно поместить файл-заготовку с текстом договора и в дальнейшем использовать его при создании договоров для конкретных контрагентов.
</li><li>Для того чтобы поместить в папку новый шаблон, откройте папку <strong>Шаблоны файлов</strong>, нажмите <strong>Добавить</strong>, с помощью переключателя выберите <strong>Файл с компьютера</strong>. Затем выберите нужный файл.
</li><li>Программа автоматически создает и выводит на просмотр карточку файла. Заполните описание шаблона, поле <strong>Папка</strong> по умолчанию заполнено - <strong>Шаблоны файлов</strong>.</li></ul><h3>Размещение файлов в папках</h3>
<ul><li>В списке можно <img src="StdPicture.CreateFolder"></img> <strong>Создать</strong> необходимое количество папок и хранить в них файлы, непривязанные к конкретным объектам программы.
<ul><li>Приложение поставляется с предопределенной папкой <strong>Шаблоны файлов</strong>. В папке можно разместить файлы, которые будут использоваться при создании новых файлов в качестве шаблона. Например, в эту папку можно поместить файл-заготовку с текстом договора и в дальнейшем использовать его при создании договоров для конкретных контрагентов.
</li>
<li>Для того чтобы поместить в папку новый шаблон, откройте папку <strong>Шаблоны файлов</strong>, нажмите <strong>Добавить</strong>, с помощью переключателя выберите <strong>Файл с устройства</strong>. Затем выберите нужный файл.
</li>
<li>Приложение автоматически создает и выводит на просмотр карточку файла. Заполните описание шаблона, поле <strong>Папка</strong> по умолчанию заполнено - <strong>Шаблоны файлов</strong>.</li></ul><h3>Размещение файлов в папках</h3>
<ul><li>В списке можно <img src="StdPicture.CreateFolder"></img> <strong>Создать</strong> необходимое количество папок и хранить в них файлы, непривязанные к конкретным объектам приложения.
<ul><li><strong>Создать папку</strong> можно также с помощью соответствующей команды меню <strong>Еще</strong> или контекстного меню по правой кнопке мыши.
</li><li>Заполните необходимые <a href="Catalog.ПапкиФайлов.Form.ФормаЭлемента/Help">поля</a>. </li></ul></li><li>Файлы можно перемещать в различные папки списка с помощью перетаскивания мышью. Также для выделенных файлов можно воспользоваться командой <strong>Еще - Перенести в папку</strong>.
</li><li>С помощью мыши можно также перетаскивать папки, подчиняя их друг другу.</li></ul><h3>Права доступа к папкам</h3>
</li>
<li>Заполните необходимые <a href="Catalog.ПапкиФайлов.Form.ФормаЭлемента/Help">поля</a>. </li></ul></li>
<li>Файлы можно перемещать в различные папки списка с помощью перетаскивания мышью. Также для выделенных файлов можно воспользоваться командой <strong>Еще - Перенести в папку</strong>.
</li>
<li>С помощью мыши можно также перетаскивать папки, подчиняя их друг другу.</li></ul><h3>Права доступа к папкам</h3>
<ul><li>Папкам можно назначать различные права доступа.
<ul><li>Права доступа к папкам файлов настраиваются администратором программы или пользователем, имеющим право на управление правами той или иной папки.
</li><li>Для настройки прав доступа воспользуйтесь соответствующей командой панели навигации папки.</li></ul></li></ul><h3>Загрузка файлов </h3>
<ul><li>С помощью команды меню <strong>Еще</strong> или контекстного меню по правой кнопке мыши <strong>Загрузить файлы</strong> можно разместить в одной из папок файлы с компьютера.
</li><li>В открывшемся <strong>Проводнике Windows</strong> укажите путь к файлу, нажмите <strong>Открыть</strong>.
</li><li>Заполните необходимые для загрузки <a href="DataProcessor.РаботаСФайлами.Form.ФормаИмпортаФайлов/Help">сведения</a>.</li></ul><h3>Загрузка папок</h3>
<ul><li>Права доступа к папкам файлов настраиваются администратором приложенич или пользователем, имеющим право на управление правами той или иной папки.
</li>
<li>Для настройки прав доступа воспользуйтесь соответствующей командой панели навигации папки.</li></ul></li></ul><h3>Загрузка файлов </h3>
<ul><li>С помощью команды меню <strong>Еще</strong> или контекстного меню по правой кнопке мыши <strong>Загрузить файлы</strong> можно разместить в одной из папок файлы с устройства.
</li>
<li>В открывшемся <strong>Проводнике Windows</strong> укажите путь к файлу, нажмите <strong>Открыть</strong>.
</li>
<li>Заполните необходимые для загрузки <a href="DataProcessor.РаботаСФайлами.Form.ФормаИмпортаФайлов/Help">сведения</a>.</li></ul><h3>Загрузка папок</h3>
<ul><li>
<div>Для того чтобы поместить папку с жесткого или сетевого диска в одну из папок списка <strong>Файлы</strong>, выберите папку, выполните команду меню <strong>Еще</strong> или контекстного меню по правой кнопке мыши <strong>Загрузить папку</strong>.</div>
</li><li>
</li>
<li>
<div>В открывшемся <strong>Проводнике Windows</strong> укажите путь к папке, нажмите<strong> Выбор папки</strong>. </div>
</li><li>
</li>
<li>
<div>Заполните необходимые для загрузки <a href="DataProcessor.РаботаСФайлами.Form.ФормаИмпортаПапки/Help">сведения</a>.</div></li></ul><h3>Загрузка файлов и папок с помощью перетаскивания мышью</h3>
<ul><li>
<div>Если нужно загрузить один или несколько файлов (папок), можно использовать перетаскивание мышью - просто перетащите файл (папку) или несколько выбранных файлов (папок) мышкой из <strong>Проводника Windows</strong> в нужную папку списка файлов программы.</div>
</li><li>
<div>Если нужно загрузить один или несколько файлов (папок), можно использовать перетаскивание мышью - просто перетащите файл (папку) или несколько выбранных файлов (папок) мышкой из <strong>Проводника Windows</strong> в нужную папку списка файлов приложения.</div>
</li>
<li>
<div>Один файл сразу записывается в список файлов, автоматически создается карточка файла.</div>
</li><li>
</li>
<li>
<div>При перетаскивании нескольких файлов, папки или нескольких папок заполните необходимые <a href="Catalog.Файлы.Form.ФормаПеретаскивания/Help">сведения</a>.</div></li></ul><h3>Выгрузка папок</h3>
<ul><li>Команда <strong>Сохранить папку</strong> (расположена в контекстном меню папки) позволяет <a href="DataProcessor.РаботаСФайлами.Form.ФормаЭкспортаПапки/Help">скопировать выбранную папку</a> с файлами на жесткий диск. При этом копируются только активные версии файлов. </li></ul><h3>Управление просмотром списка файлов</h3>
<ul><li>С помощью команды <strong>Еще - Настройки -</strong> <strong>Использовать иерархию</strong> можно изменить вид списка и увидеть все файлы, находящиеся в разных папках, в одном списке.</li></ul><h3>См. также: </h3>
<ul><li><a href="v8help://frame/form_common">Работас формами</a>.</li></ul></body></html>
<ul><li>Команда <strong>Сохранить папку</strong> (расположена в контекстном меню папки) позволяет <a href="DataProcessor.РаботаСФайлами.Form.ФормаЭкспортаПапки/Help">скопировать выбранную папку</a> с файлами на устройство. При этом копируются только активные версии файлов. </li></ul><h3>Управление просмотром списка файлов</h3>
<ul><li>С помощью команды <strong>Еще - Настройки -</strong> <strong>Использовать иерархию</strong> можно изменить вид списка и увидеть все файлы, находящиеся в разных папках, в одном списке.</li></ul><h3>Электронная подпись и шифрование</h3>
<p>В выпадающем меню по кнопке <img src="CommonPicture.ПодписанЗашифрованЗаголовок" width="16" height="16"></img> <strong>Электронная подпись и шифрование</strong> доступны команды для работы с электронной подписью файлов:</p>
<ul><li><strong>Подписать</strong> - создает ЭП для файла. Перед созданием ЭП приложение предлагает <a>выбрать сертификат ЭП</a> из имеющихся на устройстве. Выбор сертификата можно сделать и во время персональных настроек приложения. Также файл можно подписать по доверенности, выбрав соответствующую из списка. Подписанный файл становится недоступным для редактирования и отображается в списках со значком <img src="CommonPicture.ПодписанЭП" width="16" height="16"></img>.
</li>
<li><strong>Сохранить вместе с электронной подписью</strong> - <a href="CommonForm.СохранениеВместеСЭлектроннойПодписью/Help">сохраняет подпись</a> в файл на устройстве. Команду можно использовать, например, если необходимо передать подписанный файл другому лицу.
</li>
<li><strong>Добавить электронную подпись из файла</strong> - <a href="CommonForm.ДобавлениеЭлектроннойПодписиИзФайла/Help">добавляет подпись</a> к файлу. Команду можно использовать, например, если подпись (файл подписи) была получена позже, чем подписанный файл.
</li>
<li><strong>Зашифровать</strong> - по команде происходит <a>шифрование файла</a>. В отличие от подписания могут использоваться несколько сертификатов, например, если необходимо зашифровать файл для нескольких пользователей. Зашифрованный файл в списках отображается со значком <img src="CommonPicture.Зашифрован" width="16" height="16"></img>.
</li>
<li><strong>Расшифровать</strong> - по команде происходит <a>расшифровка файла</a>. Для расшифровки нужно ввести пароль к закрытому ключу.</li></ul><h3>См. также:</h3>
<ul><li>
<div><a href="v8help://frame/form_common">Работа с формами</a>.</div></li></ul></body></html>
@@ -356,11 +356,11 @@
// Продолжение процедуры ВыбратьФайл.
&НаКлиенте
Процедура ВыбратьФайлПослеПолученияКонтейнераПодписи(КонтейнерПодписи, Контекст) Экспорт
Асинх Процедура ВыбратьФайлПослеПолученияКонтейнераПодписи(КонтейнерПодписи, Контекст) Экспорт
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
ДобавкаВремени = ДатаСеанса - ОбщегоНазначенияКлиент.ДатаУниверсальная();
ПараметрыПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(
ПараметрыПодписи = Ждать ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыПодписиКриптографии(
КонтейнерПодписи, ДобавкаВремени, ДатаСеанса);
Контекст.Вставить("ПараметрыПодписи", ПараметрыПодписи);
@@ -432,9 +432,9 @@
// Продолжение процедуры ВыбратьФайл.
&НаКлиенте
Процедура ВыбратьФайлПослеВыгрузкиСертификата(ДанныеСертификата, Контекст) Экспорт
Асинх Процедура ВыбратьФайлПослеВыгрузкиСертификата(ДанныеСертификата, Контекст) Экспорт
СвойстваСертификата = ЭлектроннаяПодписьКлиент.СвойстваСертификата(Контекст.Сертификат);
СвойстваСертификата = Ждать ЭлектроннаяПодписьСлужебныйКлиент.СвойстваСертификата(Контекст.Сертификат);
СвойстваСертификата.Вставить("ДвоичныеДанные", ДанныеСертификата);
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(Контекст.ДанныеПодписи,
@@ -547,7 +547,7 @@
ПараметрыПодписи = Неопределено;
Если ЭлектроннаяПодпись.ОбщиеНастройки().ДоступнаУсовершенствованнаяПодпись Тогда
КонтейнерПодписи = МенеджерКриптографии.ПолучитьКонтейнерПодписейКриптографии(ДанныеПодписи);
ПараметрыПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(КонтейнерПодписи,
ПараметрыПодписи = ЭлектроннаяПодписьСлужебный.ПараметрыПодписиКриптографии(КонтейнерПодписи,
ЭлектроннаяПодписьСлужебный.ДобавкаВремени(), ТекущаяДатаСеанса());
Если ЗначениеЗаполнено(ПараметрыПодписи.НеподтвержденнаяДатаПодписи) Тогда
@@ -2,10 +2,10 @@
<p>Настройка параметров для использования средств электронной подписи и шифрования (криптографии). </p>
<p>Открывается по команде <strong>Настройки электронной подписи и шифрования</strong> раздела <strong>Администрирование - Общие настройки</strong>.</p>
<p>Для электронной подписи и шифрования требуется установить специальную стороннюю программу (криптопровайдер).</p>
<p>Для того чтобы подписывать данные, нужно включить флажок <strong>Электронная подпись</strong>, а для шифрования нужно включить флажок <strong>Шифрование</strong> в разделе <strong>Администрирование - Общие настройки</strong>. После этого становятся доступными соответствующие команды в программе.</p>
<p>Для того чтобы подписывать данные, нужно включить флажок <strong>Электронная подпись</strong>, а для шифрования нужно включить флажок <strong>Шифрование</strong> в разделе <strong>Администрирование - Общие настройки</strong>. После этого становятся доступными соответствующие команды в приложении.</p>
<p>Электронная подпись - реквизит электронного документа, с помощью которого можно удостовериться в неизменности электронного документа с момента его подписи. Для установки подписи необходимо иметь сертификат ключа электронной подписи. Сертификат можно получить в удостоверяющем центре. Например, в удостоверяющем центре фирмы 1С <a href="http://ca.1c.ru/">http://ca.1c.ru/</a>. Только удостоверяющий центр может выдать юридически значимый (квалифицированный сертификат).</p>
<p>В случае использования распределенной информационной базы большую часть настроек можно изменить только в главном узле.</p>
<p>Для автоматического определения программы для работы с сертификатом может понадобиться установка компоненты <b>ExtraCryptoAPI</b>. Установить компоненту можно<b> </b>через меню <b>Еще - Установить компоненту</b> <b>ExtraCryptoAPI.</b></p>
<p>Для автоматического определения приложения для работы с сертификатом может понадобиться установка компоненты <b>ExtraCryptoAPI</b>. Установить компоненту можно<b> </b>через меню <b>Еще - Установить компоненту</b> <b>ExtraCryptoAPI.</b></p>
<h3>Сертификаты</h3>
<ul><li>Показывает все сертификаты, которые используются для подписания и шифрования данных, а также заявления на выпуск нового сертификата.
</li>
@@ -13,8 +13,8 @@
</li>
<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>.
<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>.
</li>
<li>Просмотреть сертификат или заявление на выпуск нового сертификата можно, дважды щелкнув по нему мышью. Также можно это сделать с помощью команды <strong>Изменить</strong> контекстного меню по правой кнопке мыши или меню <strong>Еще</strong>.</li></ul><h3>Программы</h3>
<ul><li>Содержит список настроенных программ, которые будут использованы в информационной базе (в том числе во всех узлах распределенной ИБ). </li>
@@ -38,6 +38,8 @@
<li>
<div><strong>Спрашивать</strong> - выбор сохраняемых подписей осуществляется из <a href="CommonForm.СохранениеВместеСЭлектроннойПодписью/Help">списка</a>.</div></li></ul></li>
<li>
<div>Включите флажок <strong>Сохранять сертификат</strong> для сохранения на компьютер сертификата вместе с файлом и электронной подписью.</div></li></ul><h3>См. также:</h3>
<ul><li>Перейдите по этой ссылке в соответствующий раздел 1С:ИТС, если имеются вопросы.</li></ul><h3 style="font-size: 13.4399995803833px;">Дополнительно</h3>
<div>Включите флажок <strong>Сохранять сертификат</strong> для сохранения на компьютер сертификата вместе с файлом и электронной подписью.</div></li></ul><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>
@@ -0,0 +1,22 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link></head><body>
<div>
<p>Внешняя компонента платформозависима и сможет работать только в определенных операционных системах или браузерах.</p></div>
<ul><li>В приложении для ОС <b>Windows</b>, <b>Linux</b>, <b>macOS</b> и <b>Мобильные ОС</b>;</li>
<li>В веб-браузерах <b>Google Chrome, Microsoft Internet Explorer, Mozilla Firefox, Safari</b> и <b>Яндекс Браузер</b>;</li>
<li>В мобильном приложении в <b>Android, iOS</b> и <b>Windows RT</b>;</li>
<li>Может быть <b>32-х </b>разрядная версия внешней компоненты и <b>64-х </b>разрядная;</li>
<li>На процессоре с архитектурой <b>x86</b>, <b>x86-64</b>, <b>ARM</b>, <b>ARM64</b>, <b>Е2К</b>:</li>
<ul><li><b>x86</b> - это 32-х разрядная архитектура, которая используется процессами Intel и AMD.</li>
<li><b>x86-64</b> - более современная архитектура, позволяет запускать 64-х разрядные приложения; </li>
<li><b>ARM</b> - популярная архитектура, разработанная для Android. Устройство на ARM работают под управлением 32-х разрядной ОС;
</li>
<li><strong>ARM64</strong> - новый тип процессоров, поддерживающий 64-х разрядные ОС;
</li>
<li><strong>E2K (E2Kv4 и выше)</strong> - российский процессор Эльбрус 2000, который работает под ОС Linux Эльбрус: 7.0, 7.1.</li></ul></ul><p>Для получения подробной информации о том, <a href="https://its.1c.ru/bmk/v83doc_extcomp">Как запустить
определенное клиентское приложение</a>, см. инструкцию по разработке на портале 1С:ИТС.</p>
<p style="orphans: 2; widows: 2; "><br></p>
<p><br></p>
</body></html>
@@ -5,6 +5,11 @@
<key>ru</key>
<value>Поддерживаемые клиентские приложения</value>
</synonym>
<help>
<pages>
<lang>ru</lang>
</pages>
</help>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</mdclass:CommonForm>
+507 -395
View File
@@ -90,16 +90,24 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаСрокДействия</name>
<id>272</id>
<items xsi:type="form:FormField">
<name>СрокДействия</name>
<id>6</id>
<title>
<key>ru</key>
<value>Срок действия
сертификата</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ДействителенДо</segments>
<segments>ДатаОкончания</segments>
</dataPath>
<skipOnInput>true</skipOnInput>
<extendedTooltip>
@@ -133,6 +141,77 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДатаОкончанияЗакрытогоКлюча</name>
<id>274</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ДатаОкончанияЗакрытогоКлюча</segments>
</dataPath>
<extendedTooltip>
<name>ДатаОкончанияЗакрытогоКлючаРасширеннаяПодсказка</name>
<id>276</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДатаОкончанияЗакрытогоКлючаКонтекстноеМеню</name>
<id>275</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<readOnly>true</readOnly>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Группа срок действия</value>
</title>
<extendedTooltip>
<name>ГруппаСрокДействияРасширеннаяПодсказка</name>
<id>273</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>АлгоритмПодписи</name>
<id>168</id>
@@ -998,398 +1077,6 @@
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>СтраницаВнутреннееСодержание</name>
<id>26</id>
<items xsi:type="form:FormField">
<name>ГруппаВнутреннихПолей</name>
<id>92</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ГруппаВнутреннихПолей</segments>
</dataPath>
<handlers>
<event>OnChange</event>
<name>ГруппаВнутреннихПолейПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ГруппаВнутреннихПолейРасширеннаяПодсказка</name>
<id>94</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ГруппаВнутреннихПолейКонтекстноеМеню</name>
<id>93</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>Clearing</event>
<name>ГруппаВнутреннихПолейОчистка</name>
</handlers>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch>
<wrap>true</wrap>
<listChoiceMode>true</listChoiceMode>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<choiceList>
<presentation>
<key>ru</key>
<value>Общие</value>
</presentation>
<value xsi:type="core:StringValue">
<value>Общие</value>
</value>
</choiceList>
<choiceList>
<presentation>
<key>ru</key>
<value>Субъект</value>
</presentation>
<value xsi:type="core:StringValue">
<value>Субъект</value>
</value>
</choiceList>
<choiceList>
<presentation>
<key>ru</key>
<value>Издатель</value>
</presentation>
<value xsi:type="core:StringValue">
<value>Издатель</value>
</value>
</choiceList>
<choiceList>
<presentation>
<key>ru</key>
<value>Расширенные свойства</value>
</presentation>
<value xsi:type="core:StringValue">
<value>РасширенныеСвойства</value>
</value>
</choiceList>
<backColor xsi:type="core:ColorRef">
<color>Style.ФонУправляющегоПоля</color>
</backColor>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:Table">
<name>ВнутреннееСодержание</name>
<id>95</id>
<title>
<key>ru</key>
<value>Внутреннее содержание</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВнутреннееСодержание</segments>
</dataPath>
<titleLocation>None</titleLocation>
<excludedCommands>Add</excludedCommands>
<excludedCommands>Change</excludedCommands>
<excludedCommands>Copy</excludedCommands>
<excludedCommands>Delete</excludedCommands>
<excludedCommands>EndEdit</excludedCommands>
<excludedCommands>MoveDown</excludedCommands>
<excludedCommands>MoveUp</excludedCommands>
<excludedCommands>SortListAsc</excludedCommands>
<excludedCommands>SortListDesc</excludedCommands>
<items xsi:type="form:FormField">
<name>ВнутреннееСодержаниеСвойство</name>
<id>99</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВнутреннееСодержание.Свойство</segments>
</dataPath>
<extendedTooltip>
<name>ВнутреннееСодержаниеСвойствоРасширеннаяПодсказка</name>
<id>101</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеСвойствоКонтекстноеМеню</name>
<id>100</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<width>15</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ВнутреннееСодержаниеИдентификатор</name>
<id>165</id>
<title>
<key>ru</key>
<value>OID</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВнутреннееСодержание.Идентификатор</segments>
</dataPath>
<extendedTooltip>
<name>ВнутреннееСодержаниеИдентификаторРасширеннаяПодсказка</name>
<id>167</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеИдентификаторКонтекстноеМеню</name>
<id>166</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<width>15</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ВнутреннееСодержаниеЗначение</name>
<id>102</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВнутреннееСодержание.Значение</segments>
</dataPath>
<extendedTooltip>
<name>ВнутреннееСодержаниеЗначениеРасширеннаяПодсказка</name>
<id>104</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеЗначениеКонтекстноеМеню</name>
<id>103</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<autoCellHeight>true</autoCellHeight>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<width>30</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<autoCommandBar>
<name>ВнутреннееСодержаниеКоманднаяПанель</name>
<id>97</id>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<searchStringAddition>
<name>ВнутреннееСодержаниеСтрокаПоиска</name>
<id>156</id>
<extendedTooltip>
<name>ВнутреннееСодержаниеСтрокаПоискаРасширеннаяПодсказка</name>
<id>158</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеСтрокаПоискаКонтекстноеМеню</name>
<id>157</id>
<autoFill>true</autoFill>
</contextMenu>
<source>ВнутреннееСодержание</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchStringAddition>
<viewStatusAddition>
<name>ВнутреннееСодержаниеСостояниеПросмотра</name>
<id>159</id>
<extendedTooltip>
<name>ВнутреннееСодержаниеСостояниеПросмотраРасширеннаяПодсказка</name>
<id>161</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеСостояниеПросмотраКонтекстноеМеню</name>
<id>160</id>
<autoFill>true</autoFill>
</contextMenu>
<type>ViewStatusAddition</type>
<source>ВнутреннееСодержание</source>
<extInfo xsi:type="form:ViewStatusAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</viewStatusAddition>
<searchControlAddition>
<name>ВнутреннееСодержаниеУправлениеПоиском</name>
<id>162</id>
<extendedTooltip>
<name>ВнутреннееСодержаниеУправлениеПоискомРасширеннаяПодсказка</name>
<id>164</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеУправлениеПоискомКонтекстноеМеню</name>
<id>163</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>ВнутреннееСодержание</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchControlAddition>
<extendedTooltip>
<name>ВнутреннееСодержаниеРасширеннаяПодсказка</name>
<id>98</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеКонтекстноеМеню</name>
<id>96</id>
<autoFill>true</autoFill>
</contextMenu>
<readOnly>true</readOnly>
<changeRowSet>true</changeRowSet>
<changeRowOrder>true</changeRowOrder>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<header>true</header>
<headerHeight>1</headerHeight>
<footerHeight>1</footerHeight>
<horizontalScrollBar>AutoUse</horizontalScrollBar>
<verticalScrollBar>AutoUse</verticalScrollBar>
<horizontalLines>true</horizontalLines>
<verticalLines>true</verticalLines>
<useAlternationRowColorBWA>false</useAlternationRowColorBWA>
<autoInsertNewRow>true</autoInsertNewRow>
<searchOnInput>Auto</searchOnInput>
<initialListView>Auto</initialListView>
<horizontalStretch>true</horizontalStretch>
<verticalStretch>true</verticalStretch>
<enableStartDrag>true</enableStartDrag>
<enableDrag>true</enableDrag>
<autoMaxCardHeight>true</autoMaxCardHeight>
<rowFilter xsi:type="core:UndefinedValue"/>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Внутреннее содержание</value>
</title>
<extendedTooltip>
<name>СтраницаВнутреннееСодержаниеРасширеннаяПодсказка</name>
<id>27</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>СтраницаКорневыеСертификаты</name>
<id>240</id>
@@ -1989,6 +1676,398 @@
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>СтраницаВнутреннееСодержание</name>
<id>26</id>
<items xsi:type="form:FormField">
<name>ГруппаВнутреннихПолей</name>
<id>92</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ГруппаВнутреннихПолей</segments>
</dataPath>
<handlers>
<event>OnChange</event>
<name>ГруппаВнутреннихПолейПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ГруппаВнутреннихПолейРасширеннаяПодсказка</name>
<id>94</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ГруппаВнутреннихПолейКонтекстноеМеню</name>
<id>93</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>Clearing</event>
<name>ГруппаВнутреннихПолейОчистка</name>
</handlers>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch>
<wrap>true</wrap>
<listChoiceMode>true</listChoiceMode>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<choiceList>
<presentation>
<key>ru</key>
<value>Общие</value>
</presentation>
<value xsi:type="core:StringValue">
<value>Общие</value>
</value>
</choiceList>
<choiceList>
<presentation>
<key>ru</key>
<value>Субъект</value>
</presentation>
<value xsi:type="core:StringValue">
<value>Субъект</value>
</value>
</choiceList>
<choiceList>
<presentation>
<key>ru</key>
<value>Издатель</value>
</presentation>
<value xsi:type="core:StringValue">
<value>Издатель</value>
</value>
</choiceList>
<choiceList>
<presentation>
<key>ru</key>
<value>Расширенные свойства</value>
</presentation>
<value xsi:type="core:StringValue">
<value>РасширенныеСвойства</value>
</value>
</choiceList>
<backColor xsi:type="core:ColorRef">
<color>Style.ФонУправляющегоПоля</color>
</backColor>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:Table">
<name>ВнутреннееСодержание</name>
<id>95</id>
<title>
<key>ru</key>
<value>Внутреннее содержание</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВнутреннееСодержание</segments>
</dataPath>
<titleLocation>None</titleLocation>
<excludedCommands>Add</excludedCommands>
<excludedCommands>Change</excludedCommands>
<excludedCommands>Copy</excludedCommands>
<excludedCommands>Delete</excludedCommands>
<excludedCommands>EndEdit</excludedCommands>
<excludedCommands>MoveDown</excludedCommands>
<excludedCommands>MoveUp</excludedCommands>
<excludedCommands>SortListAsc</excludedCommands>
<excludedCommands>SortListDesc</excludedCommands>
<items xsi:type="form:FormField">
<name>ВнутреннееСодержаниеСвойство</name>
<id>99</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВнутреннееСодержание.Свойство</segments>
</dataPath>
<extendedTooltip>
<name>ВнутреннееСодержаниеСвойствоРасширеннаяПодсказка</name>
<id>101</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеСвойствоКонтекстноеМеню</name>
<id>100</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<width>15</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ВнутреннееСодержаниеИдентификатор</name>
<id>165</id>
<title>
<key>ru</key>
<value>OID</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВнутреннееСодержание.Идентификатор</segments>
</dataPath>
<extendedTooltip>
<name>ВнутреннееСодержаниеИдентификаторРасширеннаяПодсказка</name>
<id>167</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеИдентификаторКонтекстноеМеню</name>
<id>166</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<width>15</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ВнутреннееСодержаниеЗначение</name>
<id>102</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВнутреннееСодержание.Значение</segments>
</dataPath>
<extendedTooltip>
<name>ВнутреннееСодержаниеЗначениеРасширеннаяПодсказка</name>
<id>104</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеЗначениеКонтекстноеМеню</name>
<id>103</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<autoCellHeight>true</autoCellHeight>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<width>30</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<autoCommandBar>
<name>ВнутреннееСодержаниеКоманднаяПанель</name>
<id>97</id>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<searchStringAddition>
<name>ВнутреннееСодержаниеСтрокаПоиска</name>
<id>156</id>
<extendedTooltip>
<name>ВнутреннееСодержаниеСтрокаПоискаРасширеннаяПодсказка</name>
<id>158</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеСтрокаПоискаКонтекстноеМеню</name>
<id>157</id>
<autoFill>true</autoFill>
</contextMenu>
<source>ВнутреннееСодержание</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchStringAddition>
<viewStatusAddition>
<name>ВнутреннееСодержаниеСостояниеПросмотра</name>
<id>159</id>
<extendedTooltip>
<name>ВнутреннееСодержаниеСостояниеПросмотраРасширеннаяПодсказка</name>
<id>161</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеСостояниеПросмотраКонтекстноеМеню</name>
<id>160</id>
<autoFill>true</autoFill>
</contextMenu>
<type>ViewStatusAddition</type>
<source>ВнутреннееСодержание</source>
<extInfo xsi:type="form:ViewStatusAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</viewStatusAddition>
<searchControlAddition>
<name>ВнутреннееСодержаниеУправлениеПоиском</name>
<id>162</id>
<extendedTooltip>
<name>ВнутреннееСодержаниеУправлениеПоискомРасширеннаяПодсказка</name>
<id>164</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеУправлениеПоискомКонтекстноеМеню</name>
<id>163</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>ВнутреннееСодержание</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchControlAddition>
<extendedTooltip>
<name>ВнутреннееСодержаниеРасширеннаяПодсказка</name>
<id>98</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнутреннееСодержаниеКонтекстноеМеню</name>
<id>96</id>
<autoFill>true</autoFill>
</contextMenu>
<readOnly>true</readOnly>
<changeRowSet>true</changeRowSet>
<changeRowOrder>true</changeRowOrder>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<header>true</header>
<headerHeight>1</headerHeight>
<footerHeight>1</footerHeight>
<horizontalScrollBar>AutoUse</horizontalScrollBar>
<verticalScrollBar>AutoUse</verticalScrollBar>
<horizontalLines>true</horizontalLines>
<verticalLines>true</verticalLines>
<useAlternationRowColorBWA>false</useAlternationRowColorBWA>
<autoInsertNewRow>true</autoInsertNewRow>
<searchOnInput>Auto</searchOnInput>
<initialListView>Auto</initialListView>
<horizontalStretch>true</horizontalStretch>
<verticalStretch>true</verticalStretch>
<enableStartDrag>true</enableStartDrag>
<enableDrag>true</enableDrag>
<autoMaxCardHeight>true</autoMaxCardHeight>
<rowFilter xsi:type="core:UndefinedValue"/>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Внутреннее содержание</value>
</title>
<extendedTooltip>
<name>СтраницаВнутреннееСодержаниеРасширеннаяПодсказка</name>
<id>27</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -2155,10 +2234,11 @@
</edit>
</attributes>
<attributes>
<name>ДействителенДо</name>
<name>ДатаОкончания</name>
<title>
<key>ru</key>
<value>Действителен до</value>
<value>Срок действия
сертификата</value>
</title>
<id>3</id>
<valueType>
@@ -2659,6 +2739,38 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ДатаОкончанияЗакрытогоКлюча</name>
<title>
<key>ru</key>
<value>Срок действия
закрытого ключа</value>
</title>
<id>43</id>
<valueType>
<types>Date</types>
<dateQualifiers>
<dateFractions>Date</dateFractions>
</dateQualifiers>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ДополнительныеСвойстваСертификата</name>
<id>44</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>СохранитьВФайл</name>
<title>
@@ -49,6 +49,8 @@
КонецЕсли;
СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(Сертификат);
ДополнительныеСвойстваСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.ДополнительныеСвойстваСертификата(
ДанныеСертификата);
НазначениеПодписание = Сертификат.ИспользоватьДляПодписи;
НазначениеШифрование = Сертификат.ИспользоватьДляШифрования;
@@ -56,7 +58,9 @@
Отпечаток = СвойстваСертификата.Отпечаток;
КомуВыдан = СвойстваСертификата.КомуВыдан;
КемВыдан = СвойстваСертификата.КемВыдан;
ДействителенДо = СвойстваСертификата.ДатаОкончания;
ДатаОкончания = СвойстваСертификата.ДатаОкончания;
ДатаОкончанияЗакрытогоКлюча = СвойстваСертификата.ДатаОкончанияЗакрытогоКлюча;
Элементы.ДатаОкончанияЗакрытогоКлюча.Видимость = ЗначениеЗаполнено(ДатаОкончанияЗакрытогоКлюча);
АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(
ДанныеСертификата, Истина);
@@ -64,8 +68,7 @@
Элементы.АлгоритмПодписи.Подсказка =
Метаданные.Справочники.ПрограммыЭлектроннойПодписиИШифрования.Реквизиты.АлгоритмПодписи.Подсказка;
Элементы.ГруппаЛицензияКриптоПро.Видимость = ЭлектроннаяПодписьСлужебный.СодержитВстроеннуюЛицензиюКриптоПро(
ДанныеСертификата);
Элементы.ГруппаЛицензияКриптоПро.Видимость = ДополнительныеСвойстваСертификата.СодержитВстроеннуюЛицензиюКриптоПро;
ЗаполнитьКодыНазначенияСертификата(СвойстваСертификата.Назначение, НазначениеКоды);
@@ -88,7 +91,8 @@
СертификатКриптографии = Новый СертификатКриптографии(
Base64Значение(ПолучитьИзВременногоХранилища(ТекущийСертификат.ДанныеСертификата)));
НоваяСтрока = ПутьСертификации.Вставить(0);
НоваяСтрока.Представление = ЭлектроннаяПодпись.ПредставлениеСертификата(СертификатКриптографии);
СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии);
НоваяСтрока.Представление = СвойстваСертификата.Представление;
НоваяСтрока.ДанныеСертификата = ТекущийСертификат.ДанныеСертификата;
КонецЦикла;
Элементы.ГруппаОшибкаПолученияЦепочкиСертификатов.Видимость = Ложь;
@@ -386,6 +390,14 @@
ДобавитьСвойство(Сертификат, "Версия", НСтр("ru = 'Версия'"));
ДобавитьСвойство(Сертификат, "ДатаНачала", НСтр("ru = 'Дата начала'"));
ДобавитьСвойство(Сертификат, "ДатаОкончания", НСтр("ru = 'Дата окончания'"));
Если ЗначениеЗаполнено(ДополнительныеСвойстваСертификата.ДатаНачалаЗакрытогоКлюча) Тогда
ДобавитьСвойство(ДополнительныеСвойстваСертификата, "ДатаНачалаЗакрытогоКлюча", НСтр("ru = 'Дата начала закрытого ключа'"));
КонецЕсли;
Если ЗначениеЗаполнено(ДополнительныеСвойстваСертификата.ДатаОкончанияЗакрытогоКлюча) Тогда
ДобавитьСвойство(ДополнительныеСвойстваСертификата, "ДатаОкончанияЗакрытогоКлюча", НСтр("ru = 'Дата окончания закрытого ключа'"));
КонецЕсли;
ДобавитьСвойство(Сертификат, "ИспользоватьДляПодписи", НСтр("ru = 'Использовать для подписи'"));
ДобавитьСвойство(Сертификат, "ИспользоватьДляШифрования", НСтр("ru = 'Использовать для шифрования'"));
ДобавитьСвойство(Сертификат, "ОткрытыйКлюч", НСтр("ru = 'Открытый ключ'"), Истина);
@@ -527,7 +539,10 @@
Ждать СертификатКриптографии.ИнициализироватьАсинх(
Base64Значение(ПолучитьИзВременногоХранилища(ТекущийСертификат.ДанныеСертификата)));
НоваяСтрока = ПутьСертификации.Вставить(0);
НоваяСтрока.Представление = ЭлектроннаяПодписьКлиент.ПредставлениеСертификата(СертификатКриптографии);
СвойстваСертификата = Ждать ЭлектроннаяПодписьСлужебныйКлиент.СвойстваСертификата(СертификатКриптографии);
НоваяСтрока.Представление = СвойстваСертификата.Представление;
НоваяСтрока.ДанныеСертификата = ТекущийСертификат.ДанныеСертификата;
КонецЦикла;
Элементы.ГруппаОшибкаПолученияЦепочкиСертификатов.Видимость = Ложь;
@@ -245,7 +245,7 @@
СертификатКриптографии = Новый СертификатКриптографии;
Ждать СертификатКриптографии.ИнициализироватьАсинх(ДанныеСертификата);
СвойстваСертификата = ЭлектроннаяПодписьКлиент.СвойстваСертификата(СертификатКриптографии);
СвойстваСертификата = Ждать ЭлектроннаяПодписьСлужебныйКлиент.СвойстваСертификата(СертификатКриптографии);
НоваяСтрока.КомуВыдан = СвойстваСертификата.Представление;
НоваяСтрока.ДанныеСертификата = ПоместитьВоВременноеХранилище(ДанныеСертификата, УникальныйИдентификатор);
Если ДанныеСертификата = Результат.Сертификат Тогда
@@ -261,7 +261,7 @@
СертификатКриптографии = Новый СертификатКриптографии;
Ждать СертификатКриптографии.ИнициализироватьАсинх(Результат.Сертификат);
СвойстваСертификата = ЭлектроннаяПодписьКлиент.СвойстваСертификата(СертификатКриптографии);
СвойстваСертификата = Ждать ЭлектроннаяПодписьСлужебныйКлиент.СвойстваСертификата(СертификатКриптографии);
НоваяСтрока.КомуВыдан = СвойстваСертификата.Представление;
НоваяСтрока.ДанныеСертификата = ПоместитьВоВременноеХранилище(Результат.Сертификат, УникальныйИдентификатор);
НоваяСтрока.ЭтоСертификатПодписи = Истина;
@@ -184,7 +184,7 @@
Процедура ЗаписатьОшибкуВЖурналРегистрации(Комментарий)
ЗаписьЖурналаРегистрации(НСтр("ru = 'Перевод текста'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка, , Перечисления.СервисыПереводаТекста.ЯндексПереводчик, Комментарий);
УровеньЖурналаРегистрации.Ошибка, , Перечисления.СервисыПереводаТекста.GoogleПереводчик, Комментарий);
КонецПроцедуры
@@ -187,15 +187,15 @@
КонецПроцедуры
// Состояние флажка для формы настроек версионирования объекта.
// Возвращает признак хранения истории для формы настроек версионирования объекта.
//
// Возвращаемое значение:
// Булево - значение.
// Булево
//
// Пример:
// Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда
// МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов");
// ИспользоватьПолнотекстовыйПоиск = МодульВерсионированиеОбъектов.ЗначениеФлажкаХранитьИсторию();
// ИспользоватьВерсионированиеОбъектов = МодульВерсионированиеОбъектов.ЗначениеФлажкаХранитьИсторию();
// Иначе
// Элементы.ГруппаУправлениеВерсионированиемОбъектов.Видимость = Ложь;
// КонецЕсли;
@@ -84,7 +84,8 @@
МетаданныеКонтакта = Контакт.Метаданные();
Если МетаданныеКонтакта.Иерархический Тогда
Если МетаданныеКонтакта.Иерархический
И МетаданныеКонтакта.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контакт, "ЭтоГруппа") = Истина Тогда
Возврат Неопределено;
КонецЕсли;
@@ -107,8 +107,8 @@
Возврат ПрефиксНесопоставленныхСтрок() + "Неоднозначность";
КонецФункции
Функция СтатусНесопоставлен() Экспорт
Возврат ПрефиксНесопоставленныхСтрок() + "Несопоставлен";
Функция СтатусНеСопоставлен() Экспорт
Возврат ПрефиксНесопоставленныхСтрок() + "НеСопоставлен";
КонецФункции
Функция СтатусСопоставлен() Экспорт
@@ -45,7 +45,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.9.232";
Описание.Версия = "3.1.9.238";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -2561,11 +2561,24 @@
Возврат Новый ЗащищенноеСоединениеOpenSSL;
#Иначе
СистемнаяИнформация = Новый СистемнаяИнформация;
Если СравнитьВерсии(СистемнаяИнформация.ВерсияПриложения, "8.3.22.0") >= 0 Тогда
Если СравнитьВерсии(СистемнаяИнформация.ВерсияПриложения, "8.3.24.1305") >= 0 Тогда
Если СертификатыУдостоверяющихЦентров = Неопределено Тогда
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
ЭтоОСWindows = ОбщегоНазначения.ЭтоWindowsСервер();
ЭтоОСLinux = ОбщегоНазначения.ЭтоLinuxСервер();
#Иначе
ЭтоОСWindows = ОбщегоНазначенияКлиент.ЭтоWindowsКлиент();
ЭтоОСLinux = ОбщегоНазначенияКлиент.ЭтоLinuxКлиент();
#КонецЕсли
Если ЭтоОСWindows Тогда
СертификатыУдостоверяющихЦентров = Новый СертификатыУдостоверяющихЦентровWindows();
ИначеЕсли ЭтоОСLinux Тогда
СертификатыУдостоверяющихЦентров = Новый СертификатыУдостоверяющихЦентровLinux();
Иначе
СертификатыУдостоверяющихЦентров = Новый СертификатыУдостоверяющихЦентровОС();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Новый ЗащищенноеСоединениеOpenSSL(СертификатКлиента, СертификатыУдостоверяющихЦентров);
#КонецЕсли
@@ -906,6 +906,16 @@
Если Контекст.ПредложитьУстановить И Не Контекст.БылаПопыткаУстановки Тогда
ПодключитьКомпонентуНачатьУстановку(Контекст);
ИначеЕсли Не Контекст.ПредложитьУстановить Тогда
Оповещение = Контекст.Оповещение;
Результат = РезультатПодключенияКомпоненты();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"".
|Возможно компонента не установлена.'"), Контекст.Идентификатор);
Результат.ОписаниеОшибки = ТекстОшибки;
ВыполнитьОбработкуОповещения(Оповещение, Результат);
Иначе
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"".
@@ -1182,7 +1192,10 @@
КонецПопытки;
#Если ВебКлиент Тогда
ПаузаАсинх(2);
СистемнаяИнформация = Новый СистемнаяИнформация;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СистемнаяИнформация.ВерсияПриложения, "8.3.24.0") >= 0 Тогда
Ждать ПаузаАсинх(2);
КонецЕсли;
#КонецЕсли
Если Контекст.Кэшировать Тогда
@@ -1215,7 +1228,16 @@
Возврат ОшибкаПодключенияКомпоненты(РезультатУстановки.ОписаниеОшибки);
КонецЕсли;
ИначеЕсли Не Контекст.ПредложитьУстановить Тогда
Оповещение = Контекст.Оповещение;
Результат = РезультатПодключенияКомпоненты();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"".
|Возможно компонента не установлена.'"), Контекст.Идентификатор);
Результат.ОписаниеОшибки = ТекстОшибки;
Возврат Результат;
Иначе
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"".
@@ -116,10 +116,21 @@
НовоеПоле = ПараметрыОтбора.Поле;
КонецЕсли;
ИдСуществующейПользовательскойНастройки = Неопределено;
Если ТипЗнч(ЭлементСтруктуры) = Тип("КомпоновщикНастроекКомпоновкиДанных") Тогда
Отбор = ЭлементСтруктуры.Настройки.Отбор;
Если ДополнительныеПараметры.ВПользовательскиеНастройки Тогда
Для Каждого Элемент Из Отбор.Элементы Цикл
Если Элемент.ЛевоеЗначение = НовоеПоле Тогда
ИдСуществующейПользовательскойНастройки = Элемент.ИдентификаторПользовательскойНастройки;
СуществующийОтбор = Элемент;
Прервать;
КонецЕсли;
КонецЦикла;
Для Каждого ЭлементНастройки Из ЭлементСтруктуры.ПользовательскиеНастройки.Элементы Цикл
Если ЭлементНастройки.ИдентификаторПользовательскойНастройки =
ЭлементСтруктуры.Настройки.Отбор.ИдентификаторПользовательскойНастройки Тогда
@@ -147,6 +158,20 @@
КонецЕсли;
КонецЦикла;
Если ИдСуществующейПользовательскойНастройки <> Неопределено Тогда
ЭлементОтбора = СуществующийОтбор;
Для Каждого Элемент Из ЭлементСтруктуры.ПользовательскиеНастройки.Элементы Цикл
Если Элемент.ИдентификаторПользовательскойНастройки = ИдСуществующейПользовательскойНастройки Тогда
Элемент.Использование = ПараметрыОтбора.Использование;
Элемент.ВидСравнения = ?(ПараметрыОтбора.ВидСравнения = Неопределено, ВидСравненияКомпоновкиДанных.Равно,
ПараметрыОтбора.ВидСравнения);
Элемент.ПравоеЗначение = ПараметрыОтбора.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если ЭлементОтбора = Неопределено Тогда
@@ -790,7 +790,7 @@
КонецПроцедуры
// Проверяет, ограничения клиента для работы со сканером.
// Проверяет ограничения клиента для работы со сканером.
//
// Возвращаемое значение:
// см. РаботаСФайламиСлужебныйКлиент.ДоступноСканирование
@@ -799,7 +799,8 @@
Возврат РаботаСФайламиСлужебныйКлиент.ДоступноСканирование();
КонецФункции
// Проверяет установлена ли компонента сканирования и есть ли хоть один подключенный сканер.
// Проверяет ограничения клиента для работы со сканером, установлена ли компонента сканирования и
// есть ли хоть один подключенный сканер.
//
// Параметры:
// ОповещениеРезультата - ОписаниеОповещения - процедура куда будет передан результат проверки:
@@ -807,8 +808,14 @@
// * ДополнительныеПараметры - Произвольный - значение, указанное при создании описания оповещения.
//
Процедура ДоступнаКомандаСканировать(ОповещениеРезультата) Экспорт
Если ДоступноСканирование() Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ДоступнаКомандаСканироватьЗавершение", ЭтотОбъект, ОповещениеРезультата);
РаботаСФайламиСлужебныйКлиент.ПроинициализироватьКомпоненту(ОписаниеОповещения);
Иначе
ВыполнитьОбработкуОповещения(ОповещениеРезультата, Ложь);
КонецЕсли;
КонецПроцедуры
// Получает настройки сканирования пользователя.
@@ -3222,7 +3222,7 @@
// Структура:
// * ЖурналРегистрации - ДвоичныеДанные - данные выгрузки журнала регистрации
// * ТехническаяИнформацияОВерсияхПодсистемИРасширениях - Строка
// * ИмяЛогФайла - Строка - имя логфайла, используемое компонентой сканирования
// * ИмяЛогФайла - Строка - имя файла журнала, используемое компонентой сканирования
//
Функция ТехническаяИнформация() Экспорт
@@ -3254,8 +3254,13 @@
Отбор = Новый Структура("Событие", СобытияОтбора);
Отбор.Вставить("ДатаНачала", ТекущаяДатаСеанса() - 600);
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
Результат.Вставить("ЖурналРегистрации", ПолучитьИзВременногоХранилища(
ЖурналРегистрации.ЖурналДляТехподдержки(Отбор, 200, Новый УникальныйИдентификатор)));
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
Результат.Вставить("ТехническаяИнформацияОВерсияхПодсистемИРасширениях",
СтандартныеПодсистемыСервер.ТехническаяИнформацияОВерсияхПодсистемИРасширениях());
Результат.Вставить("ИмяЛогФайла", ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекЗагрузить(
@@ -3269,4 +3274,8 @@
"ДатаНачалаЛогированияСканирования", ТекущаяДатаСеанса());
КонецПроцедуры
Процедура ОчиститьРабочийКаталог(СсылкаПапки) Экспорт
РаботаСФайламиСлужебный.ОчиститьРабочийКаталог(СсылкаПапки);
КонецПроцедуры
#КонецОбласти
@@ -4652,12 +4652,55 @@
ПолучитьФайлВерсииВЛокальныйКэшФайлов(ОбработчикРезультата, ДанныеФайла, ДанныеФайла.НаЧтение,
ИдентификаторФормы, ДополнительныеПараметры);
Иначе
Если Не РабочийКаталогДоступен(ДанныеФайла.РабочийКаталогВладельца, ДанныеФайла.Владелец) Тогда
ПолучитьФайлВерсииВЛокальныйКэшФайлов(ОбработчикРезультата, ДанныеФайла, ДанныеФайла.НаЧтение,
ИдентификаторФормы, ДополнительныеПараметры);
Возврат;
КонецЕсли;
ПолучитьФайлВерсииВРабочийКаталогПапки(ОбработчикРезультата, ДанныеФайла, ПолноеИмяФайла, ДанныеФайла.НаЧтение,
ИдентификаторФормы, ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
Функция РабочийКаталогДоступен(РабочийКаталогВладельца, Владелец)
Результат = Ложь;
// Создать каталог для файлов.
Попытка
// В случае если передан каталог, имя которого запрещено в текущей файловой системе,
// исключение вызвано не будет, хотя каталог будет не доступен.
СведенияОКаталоге = Новый Файл(РабочийКаталогВладельца);
Если НЕ СведенияОКаталоге.Существует() Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Каталог папки файлов %1 не существует.'"),
Владелец);
КонецЕсли;
СоздатьКаталог(РабочийКаталогВладельца);
ИмяКаталогаТестовое = РабочийКаталогВладельца + "ПроверкаДоступа\";
СоздатьКаталог(ИмяКаталогаТестовое);
УдалитьФайлы(ИмяКаталогаТестовое);
Результат = Истина;
Исключение
// Нет прав на создание каталога, или такой путь отсутствует,
// тогда установка настроек по умолчанию.
СообщениеЖурналаРегистрации = НСтр("ru='Не найден рабочий каталог %1 для папки файлов %2 или нет права на запись. Восстановлены настройки по умолчанию.'");
СообщениеЖурналаРегистрации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеЖурналаРегистрации,
РабочийКаталогВладельца, Владелец);
РабочийКаталогВладельца = "";
РаботаСФайламиСлужебныйВызовСервера.ОчиститьРабочийКаталог(Владелец);
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
НСтр("ru='Работа с файлами'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
"Предупреждение",
СообщениеЖурналаРегистрации,
ОбщегоНазначенияКлиент.ДатаСеанса(),
Истина);
КонецПопытки;
Возврат Результат;
КонецФункции
// См. одноименную процедуру в общем модуле РаботаСФайламиКлиент.
Процедура ПолучитьПрисоединенныйФайл(Оповещение, ПрисоединенныйФайл, ИдентификаторФормы, ДополнительныеПараметры = Неопределено) Экспорт
@@ -10625,15 +10668,9 @@
// Возвращает устройства сканирования (массив строк).
Функция ПолучитьУстройства(Форма, ПодключаемыйМодуль) Экспорт
Массив = Новый Массив;
СтрокаУстройств = ПодключенныеУстройства(Форма, ПодключаемыйМодуль);
Устройства = ПодключенныеУстройства(Форма, ПодключаемыйМодуль);
Для Индекс = 1 По СтрЧислоСтрок(СтрокаУстройств) Цикл
Строка = СтрПолучитьСтроку(СтрокаУстройств, Индекс);
Массив.Добавить(Строка);
КонецЦикла;
Возврат Массив;
Возврат Устройства;
КонецФункции
@@ -10999,11 +11036,13 @@
Функция ПодключенныеУстройства(Форма, ПодключаемыйМодуль)
ЗаписатьЖурналСканирования("ПолучитьУстройства.Старт");
Попытка
ПодключенныеУстройства = ПодключаемыйМодуль.ПолучитьУстройства();
Устройства = ПодключаемыйМодуль.ПолучитьУстройства();
ПодключенныеУстройства = СтрРазделить(Устройства, Символы.ПС, Ложь);
ЗаписатьЖурналСканирования("ПолучитьУстройства.Результат",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ПолучитьУстройства() = %1", ПодключенныеУстройства));
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ПолучитьУстройства() = %1",
СтрСоединить(ПодключенныеУстройства, "|")));
Исключение
ПодключенныеУстройства = "";
ПодключенныеУстройства = Новый Массив;
ПредставлениеОшибки = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписатьЖурналСканирования("ПолучитьУстройства", ПредставлениеОшибки, Истина);
ПоказатьОшибкуСканирования(ПодключаемыйМодуль, Форма, НСтр("ru='Не удалось получить список устройств'"), ПредставлениеОшибки);
@@ -11130,8 +11169,10 @@
Если ИспользоватьКаталогЖурналаСканирования И КаталогЖурналаСканирования <> Неопределено Тогда
ВыполнитьОбработкуОповещения(ОповещениеПослеСозданияВременногоКаталогаДляПодключенияЛогФайлов, КаталогЖурналаСканирования);
Иначе
ИначеЕсли Перезапуск И Не ЗначениеЗаполнено(ИмяЛогФайла) Тогда
ФайловаяСистемаКлиент.СоздатьВременныйКаталог(ОповещениеПослеСозданияВременногоКаталогаДляПодключенияЛогФайлов);
Иначе
УстановитьИмяЛогФайла(ПодключаемыйМодуль, ИмяЛогФайла);
КонецЕсли;
КонецПроцедуры
@@ -716,7 +716,7 @@
ПараметрыДоставки = РассылкаОтчетовКлиентСервер.ПараметрыДоставки();
ПараметрыДоставки.ДатаВыполнения = ТекущаяДатаСеанса();
ПараметрыДоставки.Автор = Пользователи.ТекущийПользователь();
ПараметрыДоставки.КаталогВременныхФайлов = ФайловаяСистема.ОбщийКаталогВременныхФайлов("RP" + Новый УникальныйИдентификатор);
ПараметрыДоставки.КаталогВременныхФайлов = ФайловаяСистема.ОбщийКаталогВременныхФайлов("RP" + НомерСеансаИнформационнойБазы()) + ПолучитьРазделительПутиСервера();
ПараметрыДоставки.ПараметрыПисьма.Важность = ВажностьИнтернетПочтовогоСообщения.Обычная;
Если ПолучитьФункциональнуюОпцию("ХранитьИсториюРассылкиОтчетов") Тогда
@@ -2765,7 +2765,7 @@
СтрокаФайл.Настройки.ИмяФайла = ВременныйФайл.Имя;
СтрокаФайл.Настройки.ПолноеИмяФайла = ВременныйФайл.ПолноеИмя;
СтрокаФайл.Настройки.ИмяКаталога = ВременныйФайл.ИмяБезРасширения + "_files";
СтрокаФайл.Настройки.ПолноеИмяКаталога = ВременныйФайл.Путь + СтрокаФайл.Настройки.ИмяКаталога + "\";
СтрокаФайл.Настройки.ПолноеИмяКаталога = ВременныйФайл.Путь + СтрокаФайл.Настройки.ИмяКаталога + ПолучитьРазделительПутиСервера();
КаталогФайла = Новый Файл(СтрокаФайл.Настройки.ПолноеИмяКаталога);
@@ -4731,9 +4731,12 @@
Если ВыполнитьВНесколькоПотоков Тогда
Возврат ВыполнитьФормированиеОтчетовВНесколькоПотоков(Отчеты, ПараметрыДоставки, НаименованиеРассылки, ПараметрыЖурнала);
Иначе
Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая() И Не ОбщегоНазначения.РазделениеВключено() Тогда
ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Предупреждение, НСтр(
ЗаписатьВЖурнал = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("РассылкиОтчетов",
"ЗаписыватьВЖурналПодсказкуУскоренияРассылкиОтчетов", Истина);
Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая() И Не ОбщегоНазначения.РазделениеВключено() И ЗаписатьВЖурнал Тогда
ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Информация, НСтр(
"ru = 'Рассылки отчетов могут работать быстрее. Для рассылки отчетов в несколько потоков необходимо указать каталог временных файлов кластера серверов 1С:Предприятие.'"));
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("РассылкиОтчетов", "ЗаписыватьВЖурналПодсказкуУскоренияРассылкиОтчетов", Ложь);
КонецЕсли;
Возврат ВыполнитьФормированиеОтчетовВОдномПотоке(Отчеты, ПараметрыДоставки, НаименованиеРассылки, ПараметрыЖурнала);
@@ -3897,8 +3897,8 @@
// * ТипЗначений - Тип
// * ТипГруппЗначений - Тип
// * НесколькоГруппЗначений - Булево
// * ДополнительныеТипы - Массив из см. ДополнительныйТипВидаДоступа
// * ТипыВыбираемыхЗначений - Массив из Тип
// * ДополнительныеТипы - ФиксированныйМассив из см. ДополнительныйТипВидаДоступа
// * ТипыВыбираемыхЗначений - ФиксированныйМассив из Тип
// Неопределено
//
Функция СвойстваВидаДоступа(ВидДоступа) Экспорт
@@ -7981,7 +7981,6 @@
ИмяПараметра = "СтандартныеПодсистемы.УправлениеДоступом.СвойстваВидовДоступа";
СтароеЗначение = СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ИмяПараметра, Истина);
СтароеЗначение = НовыеХешСуммыСвойствВидовДоступа(СтароеЗначение);
Если СтароеЗначение.ХешСумма <> НовоеЗначение.ХешСумма Тогда
@@ -8024,22 +8023,26 @@
//
// Смотри также УправлениеДоступомПереопределяемый.ПриЗаполненииВидовДоступа.
//
// Параметры:
// ХешСуммы - см. НовыеХешСуммыСвойствВидовДоступа
//
// Возвращаемое значение:
// см. СвойстваВидовДоступа
//
Функция ПроверенныеСвойстваВидовДоступаСеанса() Экспорт
Функция ПроверенныеСвойстваВидовДоступаСеанса(ХешСуммы) Экспорт
ВидыДоступа = ЗаполненныеВидыДоступаСеанса();
// Проверки:
// 1. Проверки:
// - тип значений доступа не указан для 2-х видов доступа
// - тип значений доступа Пользователи, ГруппыПользователей используется только для вида доступа Пользователи.
// Т тип значений доступа ВнешниеПользователи, ГруппыВнешнихПользователей используется только для вида доступа
// ВнешниеПользователи.
// И имена видов доступа Объект, Условие, НастройкиПрав, ПравоЧтения, ПравоИзменения не указаны.
// Т тип групп значений не совпадает с типом значений.
//
// 2. Подготовка различных коллекций свойств видов доступа, используемых при работе программы.
МассивСвойств = Новый Массив; // Массив из см. СвойстваВидаДоступа
ПоСсылкам = Новый Соответствие;
ПоИменам = Новый Соответствие;
@@ -8069,6 +8072,10 @@
ВсеТипыЗначений = Новый Соответствие;
ВсеТипыГруппЗначений = Новый Соответствие;
ВсеСвойства = Новый Соответствие;
ОписаниеВерсии = Новый Структура("СвойстваВерсии", Новый Массив);
ДобавитьЭлементВерсии(ОписаниеВерсии, "Версия", "1");
Для Каждого ВидДоступа Из ВидыДоступа Цикл
Если ВсеИменаВидовДоступа[ВРег(ВидДоступа.Имя)] <> Неопределено Тогда
@@ -8085,9 +8092,9 @@
ПроверитьТип(ВидДоступа, ВидДоступа.ТипЗначений, ВсеТипыГруппЗначений, Параметры, , Истина);
ПроверитьТип(ВидДоступа, ВидДоступа.ТипГруппЗначений, ВсеТипыЗначений, Параметры, Истина, Истина);
ДополнительныеТипы = ВидДоступа.ДополнительныеТипы; // См. НоваяТаблицаДополнительныеТипыВидаДоступа
ТаблицаДополнительныеТипы = ВидДоступа.ДополнительныеТипы; // См. НоваяТаблицаДополнительныеТипыВидаДоступа
Для Каждого Строка Из ДополнительныеТипы Цикл
Для Каждого Строка Из ТаблицаДополнительныеТипы Цикл
// Проверка повторения типов значений и групп.
ПроверитьТип(ВидДоступа, Строка.ТипЗначений, ВсеТипыЗначений, Параметры);
ПроверитьТип(ВидДоступа, Строка.ТипГруппЗначений, ВсеТипыГруппЗначений, Параметры, Истина);
@@ -8100,6 +8107,26 @@
Метаданные.НайтиПоТипу(ВидДоступа.ТипЗначений).ПолноеИмя()).ПустаяСсылка();
Свойства = НовыеСвойстваВидаДоступа(ВидДоступа, ПустаяСсылкаТипаЗначений);
ОписаниеВерсии.СвойстваВерсии.Добавить("");
ДобавитьСвойстваВерсии(ОписаниеВерсии, Свойства,
"Имя, ТипЗначений, ТипГруппЗначений, НесколькоГруппЗначений");
ТипыВыбираемыхЗначений = Новый Массив;
ЗаполнитьЗначенияДоступаСГруппами(Свойства, ЗначенияДоступаСГруппами, Свойства, ТипыВыбираемыхЗначений);
ДополнительныеТипы = Новый Массив;
Для Каждого Строка Из ТаблицаДополнительныеТипы Цикл
ДополнительныйТип = ДополнительныйТипВидаДоступа(Строка);
ДополнительныеТипы.Добавить(ДополнительныйТип);
ДобавитьСвойстваВерсии(ОписаниеВерсии, Свойства,
"ТипЗначений, ТипГруппЗначений, НесколькоГруппЗначений");
ЗаполнитьЗначенияДоступаСГруппами(Строка, ЗначенияДоступаСГруппами, Свойства, ТипыВыбираемыхЗначений);
КонецЦикла;
Свойства.ТипыВыбираемыхЗначений = Новый ФиксированныйМассив(ТипыВыбираемыхЗначений);
Свойства.ДополнительныеТипы = Новый ФиксированныйМассив(ДополнительныеТипы);
ВсеСвойства.Вставить(Свойства, Новый ФиксированнаяСтруктура(Свойства));
Свойства = ВсеСвойства.Получить(Свойства);
МассивСвойств.Добавить(Свойства);
ПоИменам.Вставить(Свойства.Имя, Свойства);
ПоСсылкам.Вставить(ПустаяСсылкаТипаЗначений, Свойства);
@@ -8108,16 +8135,13 @@
Если Свойства.ТипГруппЗначений <> Тип("Неопределено") Тогда
ПоТипамГруппИЗначений.Вставить(Свойства.ТипГруппЗначений, Свойства);
КонецЕсли;
ЗаполнитьЗначенияДоступаСГруппами(Свойства, ЗначенияДоступаСГруппами, Свойства, Параметры);
Для Каждого Строка Из ВидДоступа.ДополнительныеТипы Цикл
Свойства.ДополнительныеТипы.Добавить(ДополнительныйТипВидаДоступа(Строка));
ПоТипамЗначений.Вставить(Строка.ТипЗначений, Свойства);
ПоТипамГруппИЗначений.Вставить(Строка.ТипЗначений, Свойства);
Если Строка.ТипГруппЗначений <> Тип("Неопределено") Тогда
ПоТипамГруппИЗначений.Вставить(Строка.ТипГруппЗначений, Свойства);
КонецЕсли;
ЗаполнитьЗначенияДоступаСГруппами(Строка, ЗначенияДоступаСГруппами, Свойства, Параметры);
КонецЦикла;
КонецЦикла;
@@ -8164,7 +8188,8 @@
ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипСсылка);
Если ОбъектМетаданных <> Неопределено
И (ОбщегоНазначения.ЭтоСправочник(ОбъектМетаданных) Или ОбщегоНазначения.ЭтоПланВидовХарактеристик(ОбъектМетаданных))
И (ОбщегоНазначения.ЭтоСправочник(ОбъектМетаданных)
Или ОбщегоНазначения.ЭтоПланВидовХарактеристик(ОбъектМетаданных))
И ОбъектМетаданных.Иерархический Тогда
ТипОбъект = СтандартныеПодсистемыСервер.ТипОбъектаИлиНабораЗаписейОбъектаМетаданных(ОбъектМетаданных);
@@ -8184,21 +8209,69 @@
БезГруппДляЗначенияДоступа.Добавить(СвойстваВидаДоступа.Имя);
КонецЦикла;
СвойстваВидовДоступа = Новый Структура;
СвойстваВидовДоступа.Вставить("Массив", МассивСвойств);
СвойстваВидовДоступа.Вставить("ПоИменам", ПоИменам);
СвойстваВидовДоступа.Вставить("ПоСсылкам", ПоСсылкам);
СвойстваВидовДоступа.Вставить("ПоТипамЗначений", ПоТипамЗначений);
СвойстваВидовДоступа.Вставить("ПоТипамЗначенийСИерархией", ПоТипамЗначенийСИерархией);
СвойстваВидовДоступа.Вставить("ПоТипамГруппИЗначений", ПоТипамГруппИЗначений);
СвойстваВидовДоступа.Вставить("ЗначенияДоступаСГруппами", ЗначенияДоступаСГруппами);
СвойстваВидовДоступа.Вставить("БезГруппДляЗначенияДоступа", БезГруппДляЗначенияДоступа);
СвойстваВидовДоступа.Вставить("СОднойГруппойДляЗначенияДоступа", СОднойГруппойДляЗначенияДоступа);
СвойстваВидовДоступа.Вставить("ТипыЗначенийДоступаСГруппами", ТипыЗначенийДоступаСГруппами);
ПроверитьТипыПодпискиОбновитьГруппыЗначенийДоступа(ЗначенияДоступаСГруппами);
Возврат ОбщегоНазначения.ФиксированныеДанные(СвойстваВидовДоступа);
// Окончательная фиксация данных.
ЗначенияДоступаСГруппами.ИменаТаблицДляОбновления =
Новый ФиксированныйМассив(ЗначенияДоступаСГруппами.ИменаТаблицДляОбновления);
ЗначенияДоступаСГруппами.ТипыГруппЗначенийДляОбновления =
Новый ФиксированноеСоответствие(ЗначенияДоступаСГруппами.ТипыГруппЗначенийДляОбновления);
Для Каждого ОписаниеСвойства Из ЗначенияДоступаСГруппами Цикл
ТекущееСоответствие = ОписаниеСвойства.Значение;
Если ТипЗнч(ТекущееСоответствие) <> Тип("Соответствие") Тогда
Продолжить;
КонецЕсли;
Для Каждого КлючИЗначение Из ТекущееСоответствие Цикл
ТекущееСоответствие.Вставить(КлючИЗначение.Ключ,
ВсеСвойства.Получить(КлючИЗначение.Значение));
КонецЦикла;
ЗначенияДоступаСГруппами[ОписаниеСвойства.Ключ] =
Новый ФиксированноеСоответствие(ТекущееСоответствие);
КонецЦикла;
СвойстваВидовДоступа = Новый Структура;
СвойстваВидовДоступа.Вставить("Массив",
Новый ФиксированныйМассив(МассивСвойств));
СвойстваВидовДоступа.Вставить("ПоИменам",
Новый ФиксированноеСоответствие(ПоИменам));
СвойстваВидовДоступа.Вставить("ПоСсылкам",
Новый ФиксированноеСоответствие(ПоСсылкам));
СвойстваВидовДоступа.Вставить("ПоТипамЗначений",
Новый ФиксированноеСоответствие(ПоТипамЗначений));
СвойстваВидовДоступа.Вставить("ПоТипамЗначенийСИерархией",
Новый ФиксированноеСоответствие(ПоТипамЗначенийСИерархией));
СвойстваВидовДоступа.Вставить("ПоТипамГруппИЗначений",
Новый ФиксированноеСоответствие(ПоТипамГруппИЗначений));
СвойстваВидовДоступа.Вставить("ЗначенияДоступаСГруппами",
Новый ФиксированнаяСтруктура(ЗначенияДоступаСГруппами));
СвойстваВидовДоступа.Вставить("БезГруппДляЗначенияДоступа",
Новый ФиксированныйМассив(БезГруппДляЗначенияДоступа));
СвойстваВидовДоступа.Вставить("СОднойГруппойДляЗначенияДоступа",
Новый ФиксированныйМассив(СОднойГруппойДляЗначенияДоступа));
СвойстваВидовДоступа.Вставить("ТипыЗначенийДоступаСГруппами",
Новый ФиксированноеСоответствие(ТипыЗначенийДоступаСГруппами));
Результат = Новый ФиксированнаяСтруктура(СвойстваВидовДоступа);
ХешСуммы.ХешСуммаТиповГруппИЗначенийДоступа =
ХешСуммаТиповГруппИЗначенийДоступа(СвойстваВидовДоступа);
СтрокаВерсии = СтрСоединить(ОписаниеВерсии.СвойстваВерсии, Символы.ПС);
ХешСуммы.ХешСумма = ХешСуммаДанных(СтрокаВерсии);
Возврат Результат;
КонецФункции
@@ -8215,8 +8288,8 @@
Свойства.Вставить("ТипЗначений", ВидДоступа.ТипЗначений);
Свойства.Вставить("ТипГруппЗначений", ВидДоступа.ТипГруппЗначений);
Свойства.Вставить("НесколькоГруппЗначений", ВидДоступа.НесколькоГруппЗначений);
Свойства.Вставить("ДополнительныеТипы", Новый Массив);
Свойства.Вставить("ТипыВыбираемыхЗначений", Новый Массив);
Свойства.Вставить("ДополнительныеТипы");
Свойства.Вставить("ТипыВыбираемыхЗначений");
Возврат Свойства;
@@ -8226,17 +8299,17 @@
//
// Возвращаемое значение:
// Структура:
// * ПоТипам - Соответствие из КлючИЗначение:
// * ПоТипам - ФиксированноеСоответствие из КлючИЗначение:
// ** Ключ - Тип
// ** Значение - см. СвойстваВидаДоступа
// * ПоТипамСсылок - Соответствие из КлючИЗначение:
// * ПоТипамСсылок - ФиксированноеСоответствие из КлючИЗначение:
// ** Ключ - Тип
// ** Значение - см. СвойстваВидаДоступа
// * ИменаТаблицДляОбновления - Массив из Строка
// * ТипыГруппЗначенийДляОбновления - Соответствие из КлючИЗначение:
// * ИменаТаблицДляОбновления - ФиксированныйМассив из Строка
// * ТипыГруппЗначенийДляОбновления - ФиксированноеСоответствие из КлючИЗначение:
// ** Ключ - Тип
// ** Значение - СправочникСсылка
// * ПоТипамСсылокДляОбновления - Соответствие из КлючИЗначение:
// * ПоТипамСсылокДляОбновления - ФиксированноеСоответствие из КлючИЗначение:
// ** Ключ - Тип
// ** Значение - см. СвойстваВидаДоступа
//
@@ -8257,7 +8330,7 @@
// Для функции СвойстваВидовДоступа.
//
// Возвращаемое значение:
// Структура:
// ФиксированнаяСтруктура:
// * ТипЗначений - Тип
// * ТипГруппЗначений - Тип
// * НесколькоГруппЗначений - Булево
@@ -8269,22 +8342,22 @@
Элемент.Вставить("ТипГруппЗначений", Строка.ТипГруппЗначений);
Элемент.Вставить("НесколькоГруппЗначений", Строка.НесколькоГруппЗначений);
Возврат Элемент;
Возврат Новый ФиксированнаяСтруктура(Элемент);
КонецФункции
// Для функции СвойстваВидовДоступа.
Процедура ЗаполнитьЗначенияДоступаСГруппами(Строка, ЗначенияДоступаСГруппами, Свойства, Параметры)
Процедура ЗаполнитьЗначенияДоступаСГруппами(Строка, ЗначенияДоступаСГруппами, Свойства, ТипыВыбираемыхЗначений)
Если Свойства.Имя = "Пользователи" Тогда
ДобавитьВМассив(Свойства.ТипыВыбираемыхЗначений, Тип("СправочникСсылка.Пользователи"));
ДобавитьВМассив(Свойства.ТипыВыбираемыхЗначений, Тип("СправочникСсылка.ГруппыПользователей"));
ДобавитьВМассив(ТипыВыбираемыхЗначений, Тип("СправочникСсылка.Пользователи"));
ДобавитьВМассив(ТипыВыбираемыхЗначений, Тип("СправочникСсылка.ГруппыПользователей"));
Возврат;
КонецЕсли;
Если Свойства.Имя = "ВнешниеПользователи" Тогда
ДобавитьВМассив(Свойства.ТипыВыбираемыхЗначений, Тип("СправочникСсылка.ВнешниеПользователи"));
ДобавитьВМассив(Свойства.ТипыВыбираемыхЗначений, Тип("СправочникСсылка.ГруппыВнешнихПользователей"));
ДобавитьВМассив(ТипыВыбираемыхЗначений, Тип("СправочникСсылка.ВнешниеПользователи"));
ДобавитьВМассив(ТипыВыбираемыхЗначений, Тип("СправочникСсылка.ГруппыВнешнихПользователей"));
Возврат;
КонецЕсли;
@@ -8301,12 +8374,12 @@
Если Строка.ТипГруппЗначений = Тип("Неопределено") Тогда
ДобавитьТипыПодпискиОбновитьГруппыЗначенийДоступа(ТипСсылки,
ТипОбъекта, МетаданныеТипаЗначений, ЗначенияДоступаСГруппами, Свойства, Неопределено);
ДобавитьВМассив(Свойства.ТипыВыбираемыхЗначений, Строка.ТипЗначений);
ДобавитьВМассив(ТипыВыбираемыхЗначений, Строка.ТипЗначений);
Возврат;
КонецЕсли;
Если Строка.ТипГруппЗначений <> Тип("Неопределено") Тогда
ДобавитьВМассив(Свойства.ТипыВыбираемыхЗначений, Строка.ТипГруппЗначений);
ДобавитьВМассив(ТипыВыбираемыхЗначений, Строка.ТипГруппЗначений);
КонецЕсли;
ЗначенияДоступаСГруппами.ПоТипам.Вставить(ТипСсылки, Свойства);
@@ -8515,14 +8588,20 @@
КонецПроцедуры
// Для функций ХешСуммыСвойствВидовДоступа, СвойстваВидовДоступа и процедур
// ОбновитьОписаниеСвойствВидовДоступа,
// Для функций УправлениеДоступомСлужебныйПовтИсп.ОписаниеСвойствВидовДоступаСеанса,
// СвойстваВидовДоступа и процедур ОбновитьОписаниеСвойствВидовДоступа,
// ОбновитьГруппыИНаборыЗначенийДоступаПриИзмененииТиповГруппИЗначений.
//
// Возвращаемое значение:
// см. ХешСуммыСвойствВидовДоступа
// Параметры:
// Значение - Неопределено
// - ФиксированнаяСтруктура
//
Функция НовыеХешСуммыСвойствВидовДоступа(Значение = Неопределено)
// Возвращаемое значение:
// Структура:
// * ХешСумма - Строка
// * ХешСуммаТиповГруппИЗначенийДоступа - Строка
//
Функция НовыеХешСуммыСвойствВидовДоступа(Значение = Неопределено) Экспорт
Результат = Новый Структура;
Результат.Вставить("ХешСумма", "");
@@ -8536,28 +8615,7 @@
КонецФункции
// Для функции УправлениеДоступомСлужебныйПовтИсп.ОписаниеСвойствВидовДоступаСеанса.
//
// Параметры:
// СвойстваВидовДоступа - см. СвойстваВидовДоступа
//
// Возвращаемое значение:
// Структура:
// * ХешСумма - Строка
// * ХешСуммаТиповГруппИЗначенийДоступа - Строка
//
Функция ХешСуммыСвойствВидовДоступа(СвойстваВидовДоступа) Экспорт
Результат = НовыеХешСуммыСвойствВидовДоступа();
Результат.ХешСумма = ХешСуммаДанных(СвойстваВидовДоступа);
Результат.ХешСуммаТиповГруппИЗначенийДоступа =
ХешСуммаТиповГруппИЗначенийДоступа(СвойстваВидовДоступа);
Возврат Новый ФиксированнаяСтруктура(Результат);
КонецФункции
// Для процедуры ХешСуммыСвойствВидовДоступа.
// Для процедуры ПроверенныеСвойстваВидовДоступаСеанса.
Функция ХешСуммаТиповГруппИЗначенийДоступа(СвойстваВидовДоступа)
Данные = Новый Массив;
@@ -9114,7 +9172,11 @@
// ** Ключ - Строка
// ** Значение - см. Справочники.ПрофилиГруппДоступа.СвойстваПоставляемогоПрофиля
// * ОписанияПрофилейМассив - ФиксированныйМассив из см. Справочники.ПрофилиГруппДоступа.СвойстваПоставляемогоПрофиля
// * ПапкиПоРодителям - ФиксированноеСоответствие
// * ПапкиПоРодителям - ФиксированноеСоответствие из КлючИЗначение:
// ** Ключ - Строка
// ** Значение - ФиксированноеСоответствие из КлючИЗначение:
// *** Ключ - Строка
// *** Значение - Булево
// * ПараметрыОбновления - ФиксированнаяСтруктура:
// ** ОбновлятьИзмененныеПрофили - Булево
// ** ЗапретитьИзменениеПрофилей - Булево
@@ -9142,7 +9204,6 @@
// * ДополнительныеРолиАдминистратора - ФиксированноеСоответствие из КлючИЗначение:
// ** Ключ - Строка - имя ролей расширений, которые можно назначить администратору.
// ** Значение - Булево - Истина.
// * ХешСумма - Строка
//
Функция СтандартныеРолиРасширений() Экспорт
@@ -29134,7 +29195,7 @@
КонецПроцедуры
// Для процедуры УдалитьПоляНеиспользуемыхВидовДоступа и функции ГруппыДополнительныхТаблиц.
Процедура ДобавитьСвойстваВерсии(Контекст, Структура, ИменаПолей = "")
Процедура ДобавитьСвойстваВерсии(Контекст, Структура, ИменаПолей = "") Экспорт
Если ЗначениеЗаполнено(ИменаПолей) Тогда
СохраняемаяСтруктура = Новый Структура(ИменаПолей);
@@ -29163,7 +29224,7 @@
КонецПроцедуры
// Для процедур ДобавитьСвойстваВерсии, ДобавитьСвойствоВерсии.
Процедура ДобавитьЭлементВерсии(Контекст, ИмяПоля, Значение)
Процедура ДобавитьЭлементВерсии(Контекст, ИмяПоля, Значение) Экспорт
Если ТипЗнч(Значение) = Тип("Строка") Тогда
Контекст.СвойстваВерсии.Добавить(ИмяПоля + " = " + Значение);
@@ -29184,6 +29245,7 @@
Контекст.СвойстваВерсии.Добавить(ИмяПоля + " = " + СтрокаДанныхДляХеширования(Новый Массив(Значение)));
ИначеЕсли ТипЗнч(Значение) = Тип("ОписаниеТипов")
Или ТипЗнч(Значение) = Тип("Тип")
Или ТипЗнч(Значение) = Тип("Массив") Тогда
Контекст.СвойстваВерсии.Добавить(ИмяПоля + " = " + СтрокаДанныхДляХеширования(Значение));
@@ -31,18 +31,18 @@
// Возвращаемое значение:
// ФиксированнаяСтруктура:
// * СвойстваСеанса - см. УправлениеДоступомСлужебный.СвойстваВидовДоступа
// * ХешСуммы - см. УправлениеДоступомСлужебный.ХешСуммыСвойствВидовДоступа
// * ХешСуммы - см. УправлениеДоступомСлужебный.НовыеХешСуммыСвойствВидовДоступа
// * Проверка - Структура:
// ** Дата - Дата
//
Функция ОписаниеСвойствВидовДоступаСеанса() Экспорт
СвойстваСеанса = УправлениеДоступомСлужебный.ПроверенныеСвойстваВидовДоступаСеанса();
ХешСуммы = УправлениеДоступомСлужебный.ХешСуммыСвойствВидовДоступа(СвойстваСеанса);
ХешСуммы = УправлениеДоступомСлужебный.НовыеХешСуммыСвойствВидовДоступа();
СвойстваСеанса = УправлениеДоступомСлужебный.ПроверенныеСвойстваВидовДоступаСеанса(ХешСуммы);
Результат = Новый Структура;
Результат.Вставить("СвойстваСеанса", СвойстваСеанса);
Результат.Вставить("ХешСуммы", ХешСуммы);
Результат.Вставить("ХешСуммы", Новый ФиксированнаяСтруктура(ХешСуммы));
Результат.Вставить("Проверка", Новый Структура("Дата", '00010101'));
Возврат Новый ФиксированнаяСтруктура(Результат);
@@ -67,8 +67,8 @@
//
Функция ОписаниеВозможныхПравСеансаДляНастройкиПравОбъектов() Экспорт
ВозможныеПраваСеанса = РегистрыСведений.НастройкиПравОбъектов.ПроверенныеВозможныеПраваСеанса();
ХешСумма = РегистрыСведений.НастройкиПравОбъектов.ХешСуммаВозможныхПрав(ВозможныеПраваСеанса);
ХешСумма = "";
ВозможныеПраваСеанса = РегистрыСведений.НастройкиПравОбъектов.ПроверенныеВозможныеПраваСеанса(, ХешСумма);
Результат = Новый Структура;
Результат.Вставить("ВозможныеПраваСеанса", ВозможныеПраваСеанса);
@@ -97,8 +97,8 @@
//
Функция ОписаниеПоставляемыхПрофилейСеанса() Экспорт
ПоставляемыеПрофилиСеанса = Справочники.ПрофилиГруппДоступа.ПроверенныеПоставляемыеПрофилиСеанса();
ХешСумма = Справочники.ПрофилиГруппДоступа.ХешСуммаПоставляемыхПрофилей(ПоставляемыеПрофилиСеанса);
ХешСумма = "";
ПоставляемыеПрофилиСеанса = Справочники.ПрофилиГруппДоступа.ПроверенныеПоставляемыеПрофилиСеанса(, ХешСумма);
Результат = Новый Структура;
Результат.Вставить("ПоставляемыеПрофилиСеанса", ПоставляемыеПрофилиСеанса);
@@ -120,8 +120,8 @@
//
Функция ОписаниеСтандартныхРолейРасширенийСеанса() Экспорт
РолиСеанса = Справочники.ПрофилиГруппДоступа.ПодготовленныеСтандартныеРолиРасширенийСеанса();
ХешСумма = Справочники.ПрофилиГруппДоступа.ХешСуммаСтандартныхРолейРасширений(РолиСеанса);
ХешСумма = "";
РолиСеанса = Справочники.ПрофилиГруппДоступа.ПодготовленныеСтандартныеРолиРасширенийСеанса(ХешСумма);
Результат = Новый Структура;
Результат.Вставить("РолиСеанса", РолиСеанса);
@@ -155,9 +155,7 @@
КонецЦикла;
Список.СортироватьПоЗначению();
Хеширование = Новый ХешированиеДанных(ХешФункция.SHA256);
Хеширование.Добавить(ЗначениеВСтрокуВнутр(Список.ВыгрузитьЗначения()));
ХешСумма = Base64Строка(Хеширование.ХешСумма);
ХешСумма = УправлениеДоступомСлужебный.ХешСуммаДанных(Список.ВыгрузитьЗначения());
Результат = Новый Структура;
Результат.Вставить("ХешСумма", ХешСумма);
@@ -1966,6 +1966,9 @@
Продолжить;
КонецЕсли;
СозданныйЭлемент = ?(Не СтрокаКИ.ЭтоИсторическаяКонтактнаяИнформация,
СозданныеЭлементы.Получить(СтрокаКИ.Вид), Неопределено);
СозданныйЭлемент = СозданныеЭлементы.Получить(СтрокаКИ.Вид);
Если СозданныйЭлемент <> Неопределено Тогда
СозданныйЭлемент = СтрокаКИ.Вид;
@@ -4779,8 +4782,10 @@
Если Форма.Элементы.Найти(СтрокаКИ.ИмяРеквизита) <> Неопределено Тогда
ПолеВвода = Форма.Элементы[СтрокаКИ.ИмяРеквизита];
ПолеВвода.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Если ПолеВвода.Вид = ВидПоляФормы.ПолеВвода Тогда
ПолеВвода.МногострочныйРежим = Истина;
КонецЕсли;
КонецЕсли;
Если ОтображатьИконки Тогда
ГруппаСтрокиЗаголовок = Группа("ГруппаЗаголовок" + СтрокаКИ.ИмяРеквизита, Форма, ГруппаСтроки.Заголовок, ИмяЭлементаДляРазмещения, "ГруппаЗначенияКИ"+ИмяЭлементаДляРазмещения, 6);
@@ -536,6 +536,7 @@
Результат.Колонки.Добавить("Отключена", Новый ОписаниеТипов("Булево"));
Результат.Колонки.Добавить("ИмяКомандыНаФорме", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("УсловияВидимостиПоТипамОбъектов", Новый ОписаниеТипов("Соответствие"));
Результат.Колонки.Добавить("ВыполнятьВФоновомЗадании");
Возврат Результат;
@@ -2118,7 +2119,7 @@
КлючиПараметровОбработчика = "Обработчик, МенеджерПечати, ЗаголовокФормы, СразуНаПринтер, ФорматСохранения,
|ПереопределитьПользовательскиеНастройкиКоличества, ДополнитьКомплектВнешнимиПечатнымиФормами,
|ФиксированныйКомплект, ДополнительныеПараметры";
|ФиксированныйКомплект, ДополнительныеПараметры, ВыполнятьВФоновомЗадании";
Для Каждого КомандаПечати Из КомандыПечати Цикл
Если КомандаПечати.Отключена Тогда
Продолжить;
@@ -3813,6 +3814,10 @@
Если ЗначениеЗаполнено(ТипОбъекта) И ЗначениеЗаполнено(КомандаПечати.УсловияВидимости) Тогда
КомандаПечати.УсловияВидимостиПоТипамОбъектов.Вставить(ТипОбъекта, КомандаПечати.УсловияВидимости);
КонецЕсли;
Если КомандаПечати.ВыполнятьВФоновомЗадании = Неопределено Тогда
КомандаПечати.ВыполнятьВФоновомЗадании = НРег(КомандаПечати.МенеджерПечати) = НРег("УправлениеПечатью")
И Не ОбщегоНазначения.ИнформационнаяБазаФайловая();
КонецЕсли;
КонецЦикла;
КомандыПечати.Сортировать("Порядок Возр, Представление Возр");
@@ -33,23 +33,15 @@
ПараметрыОткрытия.ПараметрКоманды = МассивОбъектов;
ПараметрыОткрытия.ПараметрыПечати = ПараметрыПечати;
Если ОбщегоНазначенияКлиент.ИнформационнаяБазаФайловая() Тогда
ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, ВладелецФормы, Строка(Новый УникальныйИдентификатор));
Возврат;
КонецЕсли;
Если ТипЗнч(ПараметрыПечати) = Тип("Структура")
И ПараметрыПечати.Свойство("ВыполнятьВФоновомЗадании")
И ПараметрыПечати.ВыполнятьВФоновомЗадании = Истина Тогда
Если ВладелецФормы = Неопределено Тогда
ПараметрыОткрытия.УникальныйИдентификаторХранилища = Новый УникальныйИдентификатор;
ВыполнитьКомандуПечатиВФоне(ВладелецФормы, ПараметрыОткрытия);
Иначе
ПараметрыОткрытия.УникальныйИдентификаторХранилища = ВладелецФормы.УникальныйИдентификатор;
ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, ВладелецФормы, Строка(Новый УникальныйИдентификатор));
КонецЕсли;
ДлительнаяОперация = УправлениеПечатьюВызовСервера.НачатьФормированиеПечатныхФорм(ПараметрыОткрытия);
ПараметрыОткрытия.ВладелецФормы = ВладелецФормы;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОткрытьФормуПечатьДокументов", УправлениеПечатьюСлужебныйКлиент, ПараметрыОткрытия);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, УправлениеПечатьюСлужебныйКлиент.ПараметрыОжидания(ВладелецФормы));
КонецПроцедуры
// Формирует и выводит на принтер печатные формы.
@@ -1088,4 +1080,21 @@
КонецПроцедуры
Процедура ВыполнитьКомандуПечатиВФоне(ВладелецФормы, ПараметрыОткрытия)
Если ВладелецФормы = Неопределено Тогда
ПараметрыОткрытия.УникальныйИдентификаторХранилища = Новый УникальныйИдентификатор;
Иначе
ПараметрыОткрытия.УникальныйИдентификаторХранилища = ВладелецФормы.УникальныйИдентификатор;
КонецЕсли;
ДлительнаяОперация = УправлениеПечатьюВызовСервера.НачатьФормированиеПечатныхФорм(ПараметрыОткрытия);
ПараметрыОткрытия.ВладелецФормы = ВладелецФормы;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОткрытьФормуПечатьДокументов", УправлениеПечатьюСлужебныйКлиент, ПараметрыОткрытия);
ПараметрыОжидания = УправлениеПечатьюСлужебныйКлиент.ПараметрыОжидания(ВладелецФормы);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
#КонецОбласти
@@ -841,10 +841,14 @@
КонецЦикла;
КонецЕсли;
КонецЕсли;
Изменено = Истина;
РегистрыСведений.СостоянияОригиналовПервичныхДокументов.ЗаписатьОбщееСостояниеОригиналаДокумента(Документ, ИмяСостояния);
КонецЕсли;
Иначе
Изменено = Истина;
РегистрыСведений.СостоянияОригиналовПервичныхДокументов.ЗаписатьОбщееСостояниеОригиналаДокумента(Документ, ИмяСостояния);
КонецЕсли;
РегистрыСведений.СостоянияОригиналовПервичныхДокументов.ЗаписатьОбщееСостояниеОригиналаДокумента(Документ, ИмяСостояния);
Возврат Изменено;
КонецФункции
@@ -44,7 +44,7 @@
// - ДокументСсылка - ссылка на документ, для которого необходимо изменить состояние оригинала.
// ИмяСостояния - Строка - устанавливаемое состояние.
//
// Возвращаемое значениие:
// Возвращаемое значение:
// Строка - "Изменено", если состояние оригинала документа не повторяется и было записано;
// "НеИзменено"
// "НеПроведено"
@@ -805,13 +805,15 @@
КонецЕсли;
КонецЕсли;
СвойстваСертификата = Неопределено;
Если ПравоДоступаДобавление Тогда
СвойстваСертификата = СвойстваСертификата(СертификатКриптографии);
ОбновитьЗначение(СертификатОбъект.Подписание, СвойстваСертификата.Подписание);
ОбновитьЗначение(СертификатОбъект.Шифрование, СвойстваСертификата.Шифрование);
ОбновитьЗначение(СертификатОбъект.КомуВыдан, СвойстваСертификата.КомуВыдан);
ОбновитьЗначение(СертификатОбъект.КемВыдан, СвойстваСертификата.КемВыдан);
ОбновитьЗначение(СертификатОбъект.ДействителенДо, СвойстваСертификата.ДатаОкончания);
ОбновитьЗначение(СертификатОбъект.ДействителенДо, СвойстваСертификата.ДействителенДо);
СвойстваСубъекта = СвойстваСубъектаСертификата(СертификатКриптографии);
@@ -839,8 +841,12 @@
Если СертификатОбъект.ЭтоНовый()
И Не ДополнительныеПараметры.Свойство("Наименование") Тогда
Если СвойстваСертификата = Неопределено Тогда
СвойстваСертификата = СвойстваСертификата(СертификатКриптографии);
КонецЕсли;
ДополнительныеПараметры.Вставить("Наименование",
ПредставлениеСертификата(СертификатКриптографии));
СвойстваСертификата.Представление);
КонецЕсли;
Для Каждого КлючИЗначение Из ДополнительныеПараметры Цикл
@@ -1151,10 +1157,39 @@
КонецФункции
// См. ЭлектроннаяПодписьКлиент.СвойстваСертификата.
// Возвращает основные свойства сертификата в виде структуры.
//
// Параметры:
// Сертификат - СертификатКриптографии - сертификат криптографии.
//
// Возвращаемое значение:
// Структура:
// * Отпечаток - Строка - отпечаток сертификата в формате строки Base64.
// * СерийныйНомер - ДвоичныеДанные - свойство сертификата СерийныйНомер.
// * Представление - см. ЭлектроннаяПодписьКлиент.ПредставлениеСертификата.
// * КомуВыдан - см. ЭлектроннаяПодписьКлиент.ПредставлениеСубъекта.
// * КемВыдан - см. ЭлектроннаяПодписьКлиент.ПредставлениеИздателя.
// * ДатаНачала - Дата - свойство сертификата ДатаНачала в часовом поясе сеанса.
// * ДатаОкончания - Дата - свойство сертификата ДатаОкончания в часовом поясе сеанса.
// * ДатаНачалаЗакрытогоКлюча - Дата - свойство сертификата, указанное в OID 2.5.29.16 в часовом поясе сеанса.
// * ДатаОкончанияЗакрытогоКлюча - Дата - свойство сертификата, указанное в OID 2.5.29.16 в часовом поясе сеанса.
// * ДействителенДо - Дата - минимальная дата из ДатаОкончания и ДатаОкончанияЗакрытогоКлюча (если указана в сертификате).
// * Назначение - Строка - описание расширенного свойства сертификата EKU.
// * Подписание - Булево - свойство сертификата ИспользоватьДляПодписи.
// * Шифрование - Булево - свойство сертификата ИспользоватьДляШифрования.
//
Функция СвойстваСертификата(Сертификат) Экспорт
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(Сертификат, ЭлектроннаяПодписьСлужебный.ДобавкаВремени());
Если ТипЗнч(Сертификат) = Тип("СертификатКриптографии") Тогда
ДвоичныеДанныеСертификата = Сертификат.Выгрузить();
ИначеЕсли ТипЗнч(Сертификат) = Тип("ФиксированнаяСтруктура") Тогда
ДвоичныеДанныеСертификата = Сертификат.Сертификат;
Иначе
ДвоичныеДанныеСертификата = Неопределено;
КонецЕсли;
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(
Сертификат, ЭлектроннаяПодписьСлужебный.ДобавкаВремени(), ДвоичныеДанныеСертификата);
КонецФункции
@@ -1273,7 +1308,7 @@
Возврат Результат;
КонецПопытки;
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(КонтейнерПодписи,
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебный.ПараметрыПодписиКриптографии(КонтейнерПодписи,
ЭлектроннаяПодписьСлужебный.ДобавкаВремени(), ТекущаяДатаСеанса());
Если ПараметрыПодписиКриптографии.СертификатПоследнейМеткиВремени = Неопределено Тогда
@@ -1344,7 +1379,7 @@
Возврат Результат;
КонецПопытки;
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебный.ПараметрыПодписиКриптографии(
КонтейнерПодписи, ЭлектроннаяПодписьСлужебный.ДобавкаВремени(), ТекущаяДатаСеанса());
РезультатПроверкиСертификата = ПроверитьСертификат(МенеджерКриптографии,
@@ -1843,6 +1878,12 @@
Возврат РезультатПроверки;
КонецЕсли;
Если РезультатСтруктура <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(РезультатСтруктура, СвойстваПодписи);
КонецЕсли;
Сертификат = СвойстваПодписи.Сертификат;
ДатаДляПроверкиСертификатаПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ДатаДляПроверкиСертификатаПодписи(СвойстваПодписи);
Если Не ЗначениеЗаполнено(ДатаДляПроверкиСертификатаПодписи) Тогда
ДатаДляПроверкиСертификатаПодписи = НаДату;
@@ -1128,6 +1128,9 @@
//
// Параметры:
// Сертификат - СертификатКриптографии - сертификат криптографии.
// - Структура:
// * ДействителенДо - см. ЭлектроннаяПодпись.СвойстваСертификата.ДействителенДо
// * Сертификат - СертификатКриптографии - сертификат криптографии.
//
// Возвращаемое значение:
// Строка - представление сертификата в справочнике.
@@ -1192,7 +1195,7 @@
Функция СвойстваСертификата(Сертификат) Экспорт
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(Сертификат,
ЭлектроннаяПодписьСлужебныйКлиент.ДобавкаВремени());
ЭлектроннаяПодписьСлужебныйКлиент.ДобавкаВремени(), Неопределено);
КонецФункции
@@ -11,9 +11,14 @@
Процедура ПриПолученииПредставленияСертификата(Знач Сертификат, Знач ДобавкаВремени, Представление) Экспорт
// Локализация
Если ТипЗнч(Сертификат) = Тип("Структура") Тогда
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, до %2'"),
ПредставлениеСубъекта(Сертификат.Сертификат, Ложь), Формат(Сертификат.ДействителенДо, "ДФ=MM.yyyy"));
Иначе
ДатыСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.ДатыСертификата(Сертификат, ДобавкаВремени);
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, до %2'"),
ПредставлениеСубъекта(Сертификат, Ложь), Формат(ДатыСертификата.ДатаОкончания, "ДФ=MM.yyyy"));
КонецЕсли;
// Конец Локализация
КонецПроцедуры
@@ -200,14 +205,14 @@
Возврат Результат;
КонецЕсли;
ИдентификаторКлючаУдостоверяющегоЦентра =
ЭлектроннаяПодписьСлужебныйКлиентСервер.ИдентификаторКлючаУдостоверяющегоЦентра(Сертификат);
ДополнительныеСвойстваСертификата =
ЭлектроннаяПодписьСлужебныйКлиентСервер.ДополнительныеСвойстваСертификата(Сертификат, 0);
Если Не ЗначениеЗаполнено(ИдентификаторКлючаУдостоверяющегоЦентра) Тогда
Если Не ЗначениеЗаполнено(ДополнительныеСвойстваСертификата.ИдентификаторКлючаУдостоверяющегоЦентра) Тогда
Возврат Результат;
КонецЕсли;
Результат.АдресВнутренний = СтрШаблон("%1/%2", ИмяИздателя, НРег(ИдентификаторКлючаУдостоверяющегоЦентра));
Результат.АдресВнутренний = СтрШаблон("%1/%2", ИмяИздателя, НРег(ДополнительныеСвойстваСертификата.ИдентификаторКлючаУдостоверяющегоЦентра));
Результат.АдресВнешний = СтрШаблон("http://ca.1c.ru/crls/%1.zip", Результат.АдресВнутренний);
// Конец локализация
@@ -509,6 +514,7 @@
Структура.Вставить("ДобавкаВремени");
Структура.Вставить("НаДату");
Структура.Вставить("ЭтоПроверкаПодписи", Ложь);
Структура.Вставить("СвойстваСертификата");
Возврат Структура;
@@ -568,7 +574,7 @@
РезультатПроверкиУдостоверяющегоЦентра.НайденВСпискеУдостоверяющихЦентров = Истина;
РезультатПроверкиУдостоверяющегоЦентра.Государственный = ДанныеУдостоверяющегоЦентра.Государственный;
СвойстваСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(Сертификат, КонтекстПроверки.ДобавкаВремени);
СвойстваСертификата = КонтекстПроверки.СвойстваСертификата;
ДатаВыдачиСертификатаДляСравнения = СвойстваСертификата.ДатаНачала - КонтекстПроверки.ДобавкаВремени;
Количество = ДанныеУдостоверяющегоЦентра.ПериодыДействия.Количество();
@@ -643,6 +649,7 @@
ЭтоЮридическоеЛицо = ЗначениеЗаполнено(СвойстваСубъекта.ИННЮЛ) Или Не ЭтоИННФизЛица;
ЭтоИндивидуальныйПредприниматель = ЗначениеЗаполнено(СвойстваСубъекта.ОГРНИП);
ЭтоОбезличенныйСертификат = Не ЗначениеЗаполнено(СвойстваСубъекта.Фамилия);
ЭтоФизическоеЛицо = Не ЭтоЮридическоеЛицо И Не ЭтоИндивидуальныйПредприниматель;
ДатаПрекращенияДействия = ДанныеУдостоверяющегоЦентра.ДругиеНастройки.Получить("ДатаПрекращенияДействияСертификатовВыданныхКоммерческимиУЦ");
@@ -650,6 +657,11 @@
ДатаПрекращенияДействия = ДатаПрекращенияДействия + КонтекстПроверки.ДобавкаВремени;
КонецЕсли;
Если ЭтоОбезличенныйСертификат И Не ДанныеУдостоверяющегоЦентра.Государственный Тогда
РезультатПроверкиУдостоверяющегоЦентра = ЭлектроннаяПодписьСлужебныйКлиентСервер.РезультатПроверкиУдостоверяющегоЦентраПоУмолчанию();
Возврат РезультатПроверкиУдостоверяющегоЦентра;
КонецЕсли;
ВозможенПеревыпуск = ЭтоФизическоеЛицо Или Не ДанныеУдостоверяющегоЦентра.Государственный;
// Аккредитация удостоверяющего центра прекращена.
@@ -131,10 +131,27 @@
ДополнительныеПараметры = ДополнительныеПараметрыПроверкиСертификата();
КонецЕсли;
СвойстваСертификата = Неопределено;
Если ДополнительныеПараметры.ДляПроверкиПодписи Тогда
СвойстваСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(
СертификатДляПроверки, ДобавкаВремени(), ДанныеСертификата);
ОшибкаПросрочки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗакрытыйКлючПросрочен(СвойстваСертификата, НаДату);
Если ЗначениеЗаполнено(ОшибкаПросрочки) Тогда
ОписаниеОшибки = ОшибкаПросрочки;
Если ВызыватьИсключение Тогда
ВызватьИсключение ОписаниеОшибки;
КонецЕсли;
Возврат Ложь;
КонецЕсли;
КонецЕсли;
Если ДополнительныеПараметры.ВыполнятьПроверкуУдостоверяющегоЦентра Тогда
Результат = ЭлектроннаяПодпись.РезультатПроверкиУдостоверяющегоЦентраСертификата(СертификатДляПроверки, НаДату,
ДополнительныеПараметры.ДляПроверкиПодписи);
Результат = РезультатПроверкиУдостоверяющегоЦентраСертификата(СертификатДляПроверки, НаДату,
ДополнительныеПараметры.ДляПроверкиПодписи, СвойстваСертификата);
Если Не Результат.Действует Или ДополнительныеПараметры.Свойство("Сертификат") И ЗначениеЗаполнено(Результат.Предупреждение.ТекстОшибки)
И Не ДополнительныеПараметры.ДляПроверкиПодписи Тогда
@@ -497,7 +514,7 @@
// Возвращаемое значение:
// см. ЭлектроннаяПодписьСлужебныйКлиентСервер.РезультатПроверкиУдостоверяющегоЦентраПоУмолчанию
//
Функция РезультатПроверкиУдостоверяющегоЦентраСертификата(СертификатКриптографии, НаДату = Неопределено, ЭтоПроверкаПодписи = Ложь) Экспорт
Функция РезультатПроверкиУдостоверяющегоЦентраСертификата(СертификатКриптографии, НаДату = Неопределено, ЭтоПроверкаПодписи = Ложь, СвойстваСертификата = Неопределено) Экспорт
Результат = ЭлектроннаяПодписьСлужебныйКлиентСервер.РезультатПроверкиУдостоверяющегоЦентраПоУмолчанию();
@@ -530,6 +547,12 @@
КонтекстПроверки.ДобавкаВремени = ДобавкаВремени();
КонтекстПроверки.ЭтоПроверкаПодписи = ЭтоПроверкаПодписи;
Если СвойстваСертификата = Неопределено Тогда
КонтекстПроверки.СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии);
Иначе
КонтекстПроверки.СвойстваСертификата = СвойстваСертификата;
КонецЕсли;
Результат = МодульЭлектроннаяПодписьКлиентСерверЛокализация.РезультатПроверкиУдостоверяющегоЦентраСертификата(
СертификатКриптографии, КонтекстПроверки);
@@ -945,25 +968,6 @@
Обработчик.Процедура = "ЭлектроннаяПодписьСлужебный.ЗаменитьРольДобавлениеИзменениеЭлектронныхПодписейИШифрование";
Обработчик.РежимВыполнения = "Оперативно";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.1.6.20";
Обработчик.Комментарий = НСтр(
"ru = 'Перенос оповещений об окончании срока действия сертификата и данных заявлений в регистры сведений.'");
Обработчик.Идентификатор = Новый УникальныйИдентификатор("05bd8752-d7f7-47bb-abe6-41d72bcc477b");
Обработчик.Процедура = "Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ПроцедураЗаполненияДанныхОбновления = "Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ЧитаемыеОбъекты = "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования";
ИзменяемыеОбъекты = Новый Массив;
ИзменяемыеОбъекты.Добавить("Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования");
ИзменяемыеОбъекты.Добавить("РегистрСведений.ОповещенияПользователейСертификатов");
Если Метаданные.РегистрыСведений.Найти("ЗаявленияНаВыпускСертификата") <> Неопределено Тогда
ИзменяемыеОбъекты.Добавить("РегистрСведений.ЗаявленияНаВыпускСертификата");
КонецЕсли;
Обработчик.ИзменяемыеОбъекты = СтрСоединить(ИзменяемыеОбъекты, ",");
Обработчик.БлокируемыеОбъекты = "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования";
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.1.6.69";
@@ -1016,6 +1020,25 @@
Приоритет.Процедура = "РаботаСФайлами.ПеренестиЭлектронныеПодписиИСертификатыШифрованияВРегистрыСведений";
КонецЕсли;
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.1.9.234";
Обработчик.Комментарий = НСтр(
"ru = 'Перенос оповещений об окончании срока действия сертификата, данных заявлений в регистры сведений, заполнение срока действия сертификата с учетом срока действия закрытого ключа.'");
Обработчик.Идентификатор = Новый УникальныйИдентификатор("a17c1765-820e-4886-9423-ffc1267d7ff1");
Обработчик.Процедура = "Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ПроцедураЗаполненияДанныхОбновления = "Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ЧитаемыеОбъекты = "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования";
ИзменяемыеОбъекты = Новый Массив;
ИзменяемыеОбъекты.Добавить("Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования");
ИзменяемыеОбъекты.Добавить("РегистрСведений.ОповещенияПользователейСертификатов");
Если Метаданные.РегистрыСведений.Найти("ЗаявленияНаВыпускСертификата") <> Неопределено Тогда
ИзменяемыеОбъекты.Добавить("РегистрСведений.ЗаявленияНаВыпускСертификата");
КонецЕсли;
Обработчик.ИзменяемыеОбъекты = СтрСоединить(ИзменяемыеОбъекты, ",");
Обработчик.БлокируемыеОбъекты = "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования";
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
КонецПроцедуры
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПереименованийОбъектовМетаданных.
@@ -1319,6 +1342,40 @@
#Область СлужебныеПроцедурыИФункции
// Только для внутреннего использования.
//
// Параметры:
// КонтейнерПодписи - КонтейнерПодписейКриптографии
// ДобавкаВремени - Число
// ДатаСеанса - Дата
//
// Возвращаемое значение:
// Структура - параметры подписи криптографии:
// * ТипПодписи - ПеречислениеСсылка.ТипыПодписиКриптографии
// * СрокДействияПоследнейМеткиВремени - Дата, Неопределено - заполняется только с помощью менеджера криптографии.
// * ДатаПодписиИзМетки - Дата, Неопределено - самый ранний штамп времени.
// * НеподтвержденнаяДатаПодписи - Дата - неподтвержденная дата подписи.
// - Неопределено - неподтвержденная дата подписи отсутствует в данных подписи.
// * ДатаПоследнейМеткиВремени - Дата - дата последней метки времени.
// * Сертификат - СертификатКриптографии - сертификат подписанта.
// * ОписаниеСертификата - см. ЭлектроннаяПодписьКлиент.СвойстваСертификата.
//
Функция ПараметрыПодписиКриптографии(КонтейнерПодписи, ДобавкаВремени, ДатаСеанса) Экспорт
ПараметрыПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеПараметрыПодписиКриптографии();
Подпись = КонтейнерПодписи.Подписи[0];
СертификатСуществует = ЭлектроннаяПодписьСлужебныйКлиентСервер.СертификатСуществует(Подпись.СертификатПодписи);
Если СертификатСуществует Тогда
ПараметрыПодписи.ОписаниеСертификата = ЭлектроннаяПодпись.СвойстваСертификата(Подпись.СертификатПодписи);
КонецЕсли;
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(ПараметрыПодписи, Подпись, СертификатСуществует, ДобавкаВремени, ДатаСеанса);
КонецФункции
// Извлекает свойства подписи из данных подписи. Если не удалось извлечь все свойства с помощью менеджера криптографии,
// возвращается часть свойств, которые удалось прочитать из двоичных данных.
//
@@ -1404,7 +1461,7 @@
Возврат Результат;
КонецПопытки;
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(
ПараметрыПодписиКриптографии = ПараметрыПодписиКриптографии(
КонтейнерПодписи, ДобавкаВремени(), ТекущаяДатаСеанса());
Результат.ТипПодписи = ПараметрыПодписиКриптографии.ТипПодписи;
@@ -1892,6 +1949,7 @@
СвойстваСертификата.Вставить("КомуВыдан", "");
СвойстваСертификата.Вставить("ДатаНачала", '00010101');
СвойстваСертификата.Вставить("ДатаОкончания", '00010101');
СвойстваСертификата.Вставить("ДействителенДо", '00010101');
Если ТипЗнч(СвойстваПодписи.Сертификат) = Тип("Строка")
И ЭтоАдресВременногоХранилища(СвойстваПодписи.Сертификат) Тогда
@@ -2783,7 +2841,10 @@
СохраненныеСвойства.Организация = МодульОрганизации.ОрганизацияПоУмолчанию();
КонецЕсли;
КонецЕсли;
СохраненныеСвойства.Наименование = ЭлектроннаяПодпись.ПредставлениеСертификата(СертификатКриптографии);
СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии);
СохраненныеСвойства.Наименование = СвойстваСертификата.Представление;
Если Не ДляШифрования Тогда
СохраненныеСвойства.Пользователь = Пользователи.ТекущийПользователь();
КонецЕсли;
@@ -3209,17 +3270,17 @@
НСтр("ru='Нельзя усовершенствовать подпись с типом %1 в приложении в Интернете'"), ТипПодписи);
Если ТипПодписи = Перечисления.ТипыПодписиКриптографии.ОбычнаяCMS Тогда
Результат.СвойстваПодписи.СрокДействияПоследнейМеткиВремени = СвойстваСертификата.ДатаОкончания;
Результат.СвойстваПодписи.СрокДействияПоследнейМеткиВремени = СвойстваСертификата.ДействителенДо;
КонецЕсли;
Возврат Результат;
КонецЕсли;
Если Не ПараметрыВыполнения.ИгнорироватьСрокДействияСертификата
И СвойстваСертификата.ДатаОкончания < ТекущаяДатаСеанса() Тогда
И СвойстваСертификата.ДействителенДо < ТекущаяДатаСеанса() Тогда
СведенияОСертификате =
ЭлектроннаяПодписьСлужебныйКлиентСервер.СведенияОСертификатеСтрокой(СвойстваСертификата);
Результат.СвойстваПодписи.СрокДействияПоследнейМеткиВремени = СвойстваСертификата.ДатаОкончания;
Результат.СвойстваПодписи.СрокДействияПоследнейМеткиВремени = СвойстваСертификата.ДействителенДо;
Результат.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Срок действия сертификата подписи истек:
|%1'"), СведенияОСертификате);
@@ -4016,7 +4077,7 @@
Если КанонизированныйТекстXML = Неопределено Тогда
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("C14N",
ОбъектКомпоненты.GetLastError());
ОбъектКомпоненты.ПолучитьОшибку());
ВызватьИсключение ТекстОшибки;
КонецЕсли;
@@ -4080,7 +4141,7 @@
Если КанонизированныйТекстXML = Неопределено Тогда
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("C14N_body",
ОбъектКомпоненты.GetLastError());
ОбъектКомпоненты.ПолучитьОшибку());
ВызватьИсключение ТекстОшибки;
КонецЕсли;
@@ -4100,7 +4161,7 @@
Если КанонизированныйТекстXML = Неопределено Тогда
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("TransformSMEV",
ОбъектКомпоненты.GetLastError());
ОбъектКомпоненты.ПолучитьОшибку());
ВызватьИсключение ТекстОшибки;
КонецЕсли;
@@ -4123,7 +4184,7 @@
Если АтрибутDigestValue = Неопределено Тогда
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("Hash",
ОбъектКомпоненты.GetLastError());
ОбъектКомпоненты.ПолучитьОшибку());
ВызватьИсключение ТекстОшибки;
КонецЕсли;
@@ -4150,7 +4211,7 @@
Если АтрибутSignatureValue = Неопределено Тогда
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("Sign",
ОбъектКомпоненты.GetLastError());
ОбъектКомпоненты.ПолучитьОшибку());
ВызватьИсключение ТекстОшибки;
КонецЕсли;
@@ -4175,7 +4236,7 @@
Если ПодписьВерна = Неопределено Тогда
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("VerifySign",
ОбъектКомпоненты.GetLastError());
ОбъектКомпоненты.ПолучитьОшибку());
ВызватьИсключение ТекстОшибки;
КонецЕсли;
@@ -4206,7 +4267,7 @@
Если Не ЗначениеЗаполнено(АтрибутSignatureValue) Тогда
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("CMSSign",
ОбъектКомпоненты.GetLastError());
ОбъектКомпоненты.ПолучитьОшибку());
ВызватьИсключение ТекстОшибки;
КонецЕсли;
@@ -4228,7 +4289,7 @@
Если ПодписьВерна = Неопределено Тогда
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("CMSVerifySign",
ОбъектКомпоненты.GetLastError());
ОбъектКомпоненты.ПолучитьОшибку());
ВызватьИсключение ТекстОшибки;
ИначеЕсли Не ПодписьВерна Тогда
@@ -7405,91 +7466,6 @@
#Область СодержимоеСертификата
// Содержит встроенную лицензию КриптоПро.
//
// Параметры:
// Данные - ДвоичныеДанные - данные сертификата
//
// Возвращаемое значение:
// Булево
//
Функция СодержитВстроеннуюЛицензиюКриптоПро(Данные) Экспорт
АнализДанных = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыйАнализДанных(Данные);
// TBSCertificate ::= SEQUENCE {
// version [0] EXPLICIT Version DEFAULT v1,
// ...
// extensions [3] EXPLICIT Extensions OPTIONAL
// -- If present, version MUST be v3
// SEQUENCE (Certificate).
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 16);
// SEQUENCE (tbsCertificate).
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 16);
// [0] EXPLICIT (version).
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 2, 0);
// INTEGER {v1(0), v2(1), v3(2)}.
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 2);
Целое = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПрочитатьПотоковоеЦелое(АнализДанных);
Если Целое <> 2 Тогда
Возврат Ложь;
КонецЕсли;
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных);
// version
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных);
// INTEGER (serialNumber CertificateSerialNumber).
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 2);
// SEQUENCE (signature AlgorithmIdentifier).
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16);
// SEQUENCE (issuer Name).
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16);
// SEQUENCE (validity Validity).
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16);
// SEQUENCE (subject Name).
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16);
// SEQUENCE (subjectPublicKeyInfo SubjectPublicKeyInfo).
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16);
// [1] IMPLICIT UniqueIdentifier OPTIONAL (issuerUniqueID).
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 2, 1, Ложь);
// [2] IMPLICIT UniqueIdentifier OPTIONAL (subjectUniqueID).
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 2, 2, Ложь);
// [3] EXPLICIT SEQUENCE SIZE (1..MAX) OF Extension (extensions).
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 2, 3);
Если АнализДанных.ЕстьОшибка Тогда
Возврат Ложь;
КонецЕсли;
// SEQUENCE OF
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 16);
СмещениеСледующего = АнализДанных.Родители[0].СмещениеСледующего;
Пока АнализДанных.Смещение < СмещениеСледующего Цикл
// SEQUENCE (extension).
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 16);
Если АнализДанных.ЕстьОшибка Тогда
Возврат Ложь;
КонецЕсли;
// OBJECT IDENTIFIER
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 6);
РазмерДанных = АнализДанных.Родители[0].РазмерДанных;
Если РазмерДанных = 0 Тогда
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПриОшибкеСтруктурыДанных(АнализДанных);
Возврат Ложь;
КонецЕсли;
Если РазмерДанных = 7 Тогда
Буфер = АнализДанных.Буфер.Прочитать(АнализДанных.Смещение, РазмерДанных); // БуферДвоичныхДанных
СтрокаБуфера = ПолучитьHexСтрокуИзБуфераДвоичныхДанных(Буфер);
Если СтрокаБуфера = "2A850302023102" Тогда // 1.2.643.2.2.49.2
Возврат Истина;
КонецЕсли;
КонецЕсли;
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных); // OBJECT IDENTIFIER
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных); // SEQUENCE
КонецЦикла;
Возврат Ложь;
КонецФункции
// Расширенные данные для печати сертификата.
//
// Параметры:
@@ -429,8 +429,10 @@
Если Параметры.Операция = "Подписание" Тогда
ДвоичныеДанныеСертификата = СертификатКриптографии.Выгрузить();
СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии);
СвойстваСертификата.Вставить("ДвоичныеДанные", СертификатКриптографии.Выгрузить());
СвойстваСертификата.Вставить("ДвоичныеДанные", ДвоичныеДанныеСертификата);
Если ЭлектроннаяПодпись.ДоступнаУсовершенствованнаяПодпись() Тогда
СвойстваПодписи = ЭлектроннаяПодписьСлужебный.СвойстваПодписиЧтениеМенеджеромКриптографии(
@@ -973,7 +975,8 @@
Если Не ЗначениеЗаполнено(ПредставлениеСертификата) Тогда
Попытка
СертификатКриптографии = Новый СертификатКриптографии(ДанныеСертификата);
ПредставлениеСертификата = ЭлектроннаяПодпись.ПредставлениеСертификата(СертификатКриптографии);
СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии);
ПредставлениеСертификата = СвойстваСертификата.Представление;
Исключение
ПредставлениеСертификата = "";
КонецПопытки;
@@ -326,6 +326,22 @@
КонецПроцедуры
// См. ЭлектроннаяПодпись.СвойстваСертификата
Асинх Функция СвойстваСертификата(Сертификат) Экспорт
Если ТипЗнч(Сертификат) = Тип("СертификатКриптографии") Тогда
ДвоичныеДанныеСертификата = Ждать Сертификат.ВыгрузитьАсинх();
ИначеЕсли ТипЗнч(Сертификат) = Тип("ФиксированнаяСтруктура") Тогда
ДвоичныеДанныеСертификата = Сертификат.Сертификат;
Иначе
ДвоичныеДанныеСертификата = Неопределено;
КонецЕсли;
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(Сертификат,
ДобавкаВремени(), ДвоичныеДанныеСертификата);
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -1623,7 +1639,7 @@
СвойстваПодписи = Ждать СвойстваПодписиЧтениеМенеджеромКриптографии(Контекст.ДанныеПодписи, Контекст.МенеджерКриптографии, Ложь);
Иначе
СвойстваПодписи = Ждать СвойстваПодписиИзДвоичныхДанных(Контекст.ДанныеПодписи, Ложь);
СвойстваСертификата = ЭлектроннаяПодписьКлиент.СвойстваСертификата(Сертификат);
СвойстваСертификата = Ждать СвойстваСертификата(Сертификат);
СвойстваПодписи.Отпечаток = СвойстваСертификата.Отпечаток;
СвойстваПодписи.КомуВыданСертификат = СвойстваСертификата.КомуВыдан;
КонецЕсли;
@@ -1643,6 +1659,13 @@
Возврат;
КонецЕсли;
Сертификат = СвойстваПодписи.Сертификат;
Если ТипЗнч(Контекст.РезультатПроверки) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(Контекст.РезультатПроверки, СвойстваПодписи);
Контекст.РезультатПроверки.Сертификат = Сертификат;
КонецЕсли;
КонецЕсли;
Если Не Контекст.Свойство("ПроверитьСертификатНаКлиенте") Тогда
@@ -1804,6 +1827,7 @@
Контекст.Вставить("ВыполнятьПроверкуУдостоверяющегоЦентра", Истина);
Контекст.Вставить("ДляПроверкиПодписи", Ложь);
Контекст.Вставить("ДействияДляУстраненияОшибок", Новый Соответствие);
Контекст.Вставить("СвойстваСертификата");
Возврат Контекст;
@@ -2102,7 +2126,7 @@
КонецПроцедуры
// Продолжение процедуры ПроверитьСертификат.
Процедура ПроверитьСертификатНаКлиентеПослеПроверки(Контекст) Экспорт
Асинх Процедура ПроверитьСертификатНаКлиентеПослеПроверки(Контекст) Экспорт
ОшибкаПросрочки = ЭлектроннаяПодписьСлужебныйКлиентСервер.СертификатПросрочен(
Контекст.СертификатКриптографии, Контекст.НаДату, ДобавкаВремени());
@@ -2110,18 +2134,30 @@
Если ЗначениеЗаполнено(ОшибкаПросрочки) Тогда
ПроверитьСертификатНаКлиентеПослеОшибкиПроверки(ОшибкаПросрочки, Ложь, Контекст);
Иначе
Если Контекст.ДляПроверкиПодписи Тогда
СвойстваСертификата = Ждать СвойстваСертификата(Контекст.СертификатКриптографии);
Контекст.СвойстваСертификата = СвойстваСертификата;
ОшибкаПросрочки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗакрытыйКлючПросрочен(
СвойстваСертификата, Контекст.НаДату);
Если ЗначениеЗаполнено(ОшибкаПросрочки) Тогда
ПроверитьСертификатНаКлиентеПослеОшибкиПроверки(ОшибкаПросрочки, Ложь, Контекст);
Возврат;
КонецЕсли;
КонецЕсли;
ДополнительнаяПроверкаСертификата(Контекст.СертификатКриптографии, Ложь, Контекст);
КонецЕсли;
КонецПроцедуры
// Продолжение процедуры ПроверитьСертификат.
Процедура ДополнительнаяПроверкаСертификата(СертификатКриптографии, ПроверкаНаСервере, Контекст)
Асинх Процедура ДополнительнаяПроверкаСертификата(СертификатКриптографии, ПроверкаНаСервере, Контекст)
Если Контекст.ВыполнятьПроверкуУдостоверяющегоЦентра Тогда
РезультатПроверкиУдостоверяющегоЦентраСертификата = РезультатПроверкиУдостоверяющегоЦентраСертификата(
СертификатКриптографии, Контекст.НаДату, Контекст.ДляПроверкиПодписи);
РезультатПроверкиУдостоверяющегоЦентраСертификата = Ждать РезультатПроверкиУдостоверяющегоЦентраСертификата(
СертификатКриптографии, Контекст.НаДату, Контекст.ДляПроверкиПодписи, Контекст.СвойстваСертификата);
Если Не РезультатПроверкиУдостоверяющегоЦентраСертификата.Действует Или ЗначениеЗаполнено(
РезультатПроверкиУдостоверяющегоЦентраСертификата.Предупреждение.ТекстОшибки)
@@ -2170,7 +2206,7 @@
КонецПроцедуры
Функция РезультатПроверкиУдостоверяющегоЦентраСертификата(СертификатКриптографии, НаДату = Неопределено, ЭтоПроверкаПодписи = Ложь) Экспорт
Асинх Функция РезультатПроверкиУдостоверяющегоЦентраСертификата(СертификатКриптографии, НаДату = Неопределено, ЭтоПроверкаПодписи = Ложь, СвойстваСертификата = Неопределено) Экспорт
Результат = ЭлектроннаяПодписьСлужебныйКлиентСервер.РезультатПроверкиУдостоверяющегоЦентраПоУмолчанию();
@@ -2204,6 +2240,11 @@
КонтекстПроверки.НаДату = ?(НаДату = Неопределено, ОбщегоНазначенияКлиент.ДатаСеанса(), НаДату);
КонтекстПроверки.ДобавкаВремени = ДобавкаВремени();
КонтекстПроверки.ЭтоПроверкаПодписи = ЭтоПроверкаПодписи;
Если СвойстваСертификата = Неопределено Тогда
КонтекстПроверки.СвойстваСертификата = Ждать СвойстваСертификата(СертификатКриптографии);
Иначе
КонтекстПроверки.СвойстваСертификата = СвойстваСертификата;
КонецЕсли;
Результат = МодульЭлектроннаяПодписьКлиентСерверЛокализация.РезультатПроверкиУдостоверяющегоЦентраСертификата(
СертификатКриптографии, КонтекстПроверки);
@@ -5071,9 +5112,9 @@
КонецПроцедуры
// Продолжение процедуры ВыполнитьНаСтороне.
Процедура ВыполнитьНаСторонеПослеВыгрузкиСертификата(ВыгруженныеДанные, Контекст) Экспорт
Асинх Процедура ВыполнитьНаСторонеПослеВыгрузкиСертификата(ВыгруженныеДанные, Контекст) Экспорт
Контекст.Вставить("СвойстваСертификата", ЭлектроннаяПодписьКлиент.СвойстваСертификата(
Контекст.Вставить("СвойстваСертификата", Ждать СвойстваСертификата(
Контекст.СертификатКриптографии));
Контекст.СвойстваСертификата.Вставить("ДвоичныеДанные", ВыгруженныеДанные);
@@ -6255,11 +6296,11 @@
КонецПроцедуры
// Продолжение процедуры УсовершенствоватьНаСтороне.
Процедура УсовершенствоватьНаСторонеПослеПолученияКонтейнераПодписи(КонтейнерПодписи, Контекст) Экспорт
Асинх Процедура УсовершенствоватьНаСторонеПослеПолученияКонтейнераПодписи(КонтейнерПодписи, Контекст) Экспорт
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
ДобавкаВремени = ДатаСеанса - ОбщегоНазначенияКлиент.ДатаУниверсальная();
ПараметрыПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(
ПараметрыПодписи = Ждать ПараметрыПодписиКриптографии(
КонтейнерПодписи, ДобавкаВремени, ДатаСеанса);
Контекст.ЭлементДанных.Вставить("ПараметрыПодписи", ПараметрыПодписи);
@@ -6370,11 +6411,11 @@
КонецПроцедуры
// Продолжение процедуры УсовершенствоватьНаСтороне.
Процедура ВыполнитьПослеПолученияКонтейнераУсовершенствованнойПодписи(КонтейнерПодписи, Контекст) Экспорт
Асинх Процедура ВыполнитьПослеПолученияКонтейнераУсовершенствованнойПодписи(КонтейнерПодписи, Контекст) Экспорт
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
ДобавкаВремени = ДатаСеанса - ОбщегоНазначенияКлиент.ДатаУниверсальная();
ПараметрыПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(
ПараметрыПодписи = Ждать ПараметрыПодписиКриптографии(
КонтейнерПодписи, ДобавкаВремени, ДатаСеанса);
Контекст.ЭлементДанных.Вставить("ПараметрыПодписи", ПараметрыПодписи);
@@ -7196,7 +7237,7 @@
КонецПопытки;
Если АтрибутDigestValue = Неопределено Тогда
РезультатОшибка = Ждать ОбъектКомпоненты.GetLastErrorАсинх();
РезультатОшибка = Ждать ОбъектКомпоненты.ПолучитьОшибкуАсинх();
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("Hash",
РезультатОшибка.Значение);
ВызватьИсключение ТекстОшибки;
@@ -7227,7 +7268,7 @@
КонецПопытки;
Если АтрибутSignatureValue = Неопределено Тогда
РезультатОшибка = Ждать ОбъектКомпоненты.GetLastErrorАсинх();
РезультатОшибка = Ждать ОбъектКомпоненты.ПолучитьОшибкуАсинх();
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("Sign",
РезультатОшибка.Значение);
ВызватьИсключение ТекстОшибки;
@@ -7361,7 +7402,7 @@
КонецПопытки;
Если ПодписьВерна = Неопределено Тогда
РезультатОшибка = Ждать ОбъектКомпоненты.GetLastErrorАсинх();
РезультатОшибка = Ждать ОбъектКомпоненты.ПолучитьОшибкуАсинх();
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("VerifySign",
РезультатОшибка.Значение);
ВызватьИсключение ТекстОшибки;
@@ -7398,7 +7439,7 @@
Если КанонизированныйТекстXML = Неопределено Тогда
РезультатОшибка = Ждать ОбъектКомпоненты.GetLastErrorАсинх();
РезультатОшибка = Ждать ОбъектКомпоненты.ПолучитьОшибкуАсинх();
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("C14N",
РезультатОшибка.Значение);
ВызватьИсключение ТекстОшибки;
@@ -7465,7 +7506,7 @@
КонецПопытки;
Если КанонизированныйТекстXML = Неопределено Тогда
РезультатОшибка = Ждать ОбъектКомпоненты.GetLastErrorАсинх();
РезультатОшибка = Ждать ОбъектКомпоненты.ПолучитьОшибкуАсинх();
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("C14N_body",
РезультатОшибка.Значение);
ВызватьИсключение ТекстОшибки;
@@ -7487,7 +7528,7 @@
КонецПопытки;
Если КанонизированныйТекстXML = Неопределено Тогда
РезультатОшибка = Ждать ОбъектКомпоненты.GetLastErrorАсинх();
РезультатОшибка = Ждать ОбъектКомпоненты.ПолучитьОшибкуАсинх();
ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("TransformSMEV",
РезультатОшибка.Значение);
ВызватьИсключение ТекстОшибки;
@@ -7502,30 +7543,30 @@
Контекст.Вставить("НачалоОписанияТекстаОшибки", НачалоОписанияТекстаОшибки);
Оповещение = Новый ОписаниеОповещения(
"ПослеВыполненияGetLastError", ЭтотОбъект, Контекст,
"ПослеВыполненияGetLastError_Ошибка", ЭтотОбъект);
"ПослеВыполненияПолучитьОшибку", ЭтотОбъект, Контекст,
"ПослеВыполненияПолучитьОшибку_Ошибка", ЭтотОбъект);
Попытка
Контекст.ОбъектКомпоненты.НачатьВызовGetLastError(Оповещение);
Контекст.ОбъектКомпоненты.НачатьВызовПолучитьОшибку(Оповещение);
Исключение
ЗавершитьОперациюСОшибкой(Контекст,
ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("GetLastError",
ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("ПолучитьОшибку",
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
КонецПопытки;
КонецПроцедуры
Процедура ПослеВыполненияGetLastError_Ошибка(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
Процедура ПослеВыполненияПолучитьОшибку_Ошибка(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
СтандартнаяОбработка = Ложь;
ЗавершитьОперациюСОшибкой(Контекст,
ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("GetLastError",
ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("ПолучитьОшибку",
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)));
КонецПроцедуры
Процедура ПослеВыполненияGetLastError(ТекстОшибки, Параметры, Контекст) Экспорт
Процедура ПослеВыполненияПолучитьОшибку(ТекстОшибки, Параметры, Контекст) Экспорт
ЗавершитьОперациюСОшибкой(Контекст,
Контекст.НачалоОписанияТекстаОшибки + Символы.ПС + ТекстОшибки);
@@ -7873,7 +7914,7 @@
// * ОписаниеОшибки - ИнформацияОбОшибке
// Контекст - Структура
//
Процедура ВыполнитьНаСторонеПослеВыгрузкиСертификатаВМоделиСервиса(РезультатПоиска, Контекст) Экспорт
Асинх Процедура ВыполнитьНаСторонеПослеВыгрузкиСертификатаВМоделиСервиса(РезультатПоиска, Контекст) Экспорт
Если Не РезультатПоиска.Выполнено Тогда
Ошибка = Новый Структура("ОписаниеОшибки", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -7889,7 +7930,7 @@
Возврат;
КонецЕсли;
Контекст.Вставить("СвойстваСертификата", ЭлектроннаяПодписьКлиент.СвойстваСертификата(
Контекст.Вставить("СвойстваСертификата", Ждать СвойстваСертификата(
РезультатПоиска.Сертификат));
Контекст.СвойстваСертификата.Вставить("ДвоичныеДанные", РезультатПоиска.Сертификат.Сертификат);
@@ -10673,7 +10714,7 @@
Возврат Результат;
КонецПопытки;
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(
ПараметрыПодписиКриптографии = Ждать ПараметрыПодписиКриптографии(
КонтейнерПодписи, ДобавкаВремени(), ОбщегоНазначенияКлиент.ДатаСеанса());
Результат.ТипПодписи = ПараметрыПодписиКриптографии.ТипПодписи;
@@ -10753,7 +10794,7 @@
Сертификат = Новый СертификатКриптографии();
Ждать Сертификат.ИнициализироватьАсинх(Результат.Сертификат);
Результат.Сертификат = Ждать Сертификат.ВыгрузитьАсинх();
СвойстваСертификата = ЭлектроннаяПодписьКлиент.СвойстваСертификата(Сертификат);
СвойстваСертификата = Ждать СвойстваСертификата(Сертификат);
Результат.Отпечаток = СвойстваСертификата.Отпечаток;
Результат.КомуВыданСертификат = СвойстваСертификата.КомуВыдан;
Исключение
@@ -10847,5 +10888,39 @@
КонецФункции
// Только для внутреннего использования.
//
// Параметры:
// КонтейнерПодписи - КонтейнерПодписейКриптографии
// ДобавкаВремени - Число
// ДатаСеанса - Дата
//
// Возвращаемое значение:
// Структура - параметры подписи криптографии:
// * ТипПодписи - ПеречислениеСсылка.ТипыПодписиКриптографии
// * СрокДействияПоследнейМеткиВремени - Дата, Неопределено - заполняется только с помощью менеджера криптографии.
// * ДатаПодписиИзМетки - Дата, Неопределено - самый ранний штамп времени.
// * НеподтвержденнаяДатаПодписи - Дата - неподтвержденная дата подписи.
// - Неопределено - неподтвержденная дата подписи отсутствует в данных подписи.
// * ДатаПоследнейМеткиВремени - Дата - дата последней метки времени.
// * Сертификат - СертификатКриптографии - сертификат подписанта.
// * ОписаниеСертификата - см. ЭлектроннаяПодписьКлиент.СвойстваСертификата.
//
Асинх Функция ПараметрыПодписиКриптографии(КонтейнерПодписи, ДобавкаВремени, ДатаСеанса) Экспорт
ПараметрыПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеПараметрыПодписиКриптографии();
Подпись = КонтейнерПодписи.Подписи[0];
СертификатСуществует = ЭлектроннаяПодписьСлужебныйКлиентСервер.СертификатСуществует(Подпись.СертификатПодписи);
Если СертификатСуществует Тогда
ПараметрыПодписи.ОписаниеСертификата = Ждать СвойстваСертификата(Подпись.СертификатПодписи);
КонецЕсли;
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(ПараметрыПодписи, Подпись, СертификатСуществует, ДобавкаВремени, ДатаСеанса);
КонецФункции
#КонецОбласти
@@ -1436,6 +1436,22 @@
КонецФункции
// Только для внутреннего использования.
Функция ЗакрытыйКлючПросрочен(СвойстваСертификата, НаДату) Экспорт
Если Не ЗначениеЗаполнено(НаДату) Или Не ЗначениеЗаполнено(СвойстваСертификата.ДатаОкончанияЗакрытогоКлюча) Тогда
Возврат "";
КонецЕсли;
Если СвойстваСертификата.ДатаОкончанияЗакрытогоКлюча > НачалоДня(НаДату) Тогда
Возврат "";
КонецЕсли;
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'На %1 просрочен закрытый ключ сертификата.'"), Формат(НачалоДня(НаДату), "ДЛФ=D"));
КонецФункции
// Только для внутреннего использования.
Функция ТекстОшибкиСервисаСертификатНедействителен() Экспорт
@@ -1670,25 +1686,7 @@
КонецФункции
// Только для внутреннего использования.
//
// Параметры:
// КонтейнерПодписи - КонтейнерПодписейКриптографии
// ДобавкаВремени - Число
// ДатаСеанса - Дата
//
// Возвращаемое значение:
// Структура - параметры подписи криптографии:
// * ТипПодписи - ПеречислениеСсылка.ТипыПодписиКриптографии
// * СрокДействияПоследнейМеткиВремени - Дата, Неопределено - заполняется только с помощью менеджера криптографии.
// * ДатаПодписиИзМетки - Дата, Неопределено - самый ранний штамп времени.
// * НеподтвержденнаяДатаПодписи - Дата - неподтвержденная дата подписи.
// - Неопределено - неподтвержденная дата подписи отсутствует в данных подписи.
// * ДатаПоследнейМеткиВремени - Дата - дата последней метки времени.
// * Сертификат - СертификатКриптографии - сертификат подписанта.
// * ОписаниеСертификата - см. ЭлектроннаяПодписьКлиент.СвойстваСертификата.
//
Функция ПараметрыПодписиКриптографии(КонтейнерПодписи, ДобавкаВремени, ДатаСеанса) Экспорт
Функция НовыеПараметрыПодписиКриптографии() Экспорт
ПараметрыПодписи = Новый Структура;
@@ -1701,13 +1699,24 @@
ПараметрыПодписи.Вставить("ОписаниеСертификата");
ПараметрыПодписи.Вставить("Сертификат");
Подпись = КонтейнерПодписи.Подписи[0];
Возврат ПараметрыПодписи;
СертификатСуществует = СертификатСуществует(Подпись.СертификатПодписи);
КонецФункции
Если СертификатСуществует Тогда
ПараметрыПодписи.ОписаниеСертификата = СвойстваСертификата(Подпись.СертификатПодписи, ДобавкаВремени);
КонецЕсли;
// Только для внутреннего использования.
//
// Возвращаемое значение:
// Структура - параметры подписи криптографии:
// * ТипПодписи - ПеречислениеСсылка.ТипыПодписиКриптографии
// * СрокДействияПоследнейМеткиВремени - Дата, Неопределено - заполняется только с помощью менеджера криптографии.
// * ДатаПодписиИзМетки - Дата, Неопределено - самый ранний штамп времени.
// * НеподтвержденнаяДатаПодписи - Дата - неподтвержденная дата подписи.
// - Неопределено - неподтвержденная дата подписи отсутствует в данных подписи.
// * ДатаПоследнейМеткиВремени - Дата - дата последней метки времени.
// * Сертификат - СертификатКриптографии - сертификат подписанта.
// * ОписаниеСертификата - см. ЭлектроннаяПодписьКлиент.СвойстваСертификата.
//
Функция ПараметрыПодписиКриптографии(ПараметрыПодписи, Подпись, СертификатСуществует, ДобавкаВремени, ДатаСеанса) Экспорт
ДатаПодписиИзМетки = Дата(3999, 12, 31);
@@ -2443,16 +2452,24 @@
КонецФункции
// См. ЭлектроннаяПодписьКлиент.ПредставлениеСертификата.
Функция ПредставлениеСертификата(Сертификат, ДобавкаВремени) Экспорт
Функция ПредставлениеСертификата(Сертификат, ДобавкаВремени = Неопределено) Экспорт
Представление = "";
ЭлектроннаяПодписьКлиентСерверЛокализация.ПриПолученииПредставленияСертификата(Сертификат, ДобавкаВремени, Представление);
Если ПустаяСтрока(Представление) Тогда
Если ТипЗнч(Сертификат) = Тип("Структура") Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, до %2'"),
ПредставлениеСубъекта(Сертификат.Сертификат),
Формат(Сертификат.ДействителенДо, "ДФ=MM.yyyy"));
Иначе
ДатыСертификата = ДатыСертификата(Сертификат, ДобавкаВремени);
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, до %2'"),
ПредставлениеСубъекта(Сертификат),
Формат(ДатыСертификата.ДатаОкончания, "ДФ=MM.yyyy"));
КонецЕсли;
КонецЕсли;
Возврат Представление;
КонецФункции
@@ -2518,23 +2535,43 @@
КонецФункции
Функция СвойстваСертификата(Сертификат, ДобавкаВремени) Экспорт
Функция СвойстваСертификата(Сертификат, ДобавкаВремени, ДвоичныеДанныеСертификата = Неопределено) Экспорт
ДатыСертификата = ДатыСертификата(Сертификат, ДобавкаВремени);
Свойства = Новый Структура;
Свойства.Вставить("Отпечаток", Base64Строка(Сертификат.Отпечаток));
Свойства.Вставить("СерийныйНомер", Сертификат.СерийныйНомер);
Свойства.Вставить("Представление", ПредставлениеСертификата(Сертификат, ДобавкаВремени));
Свойства.Вставить("КомуВыдан", ПредставлениеСубъекта(Сертификат));
Свойства.Вставить("КемВыдан", ПредставлениеИздателя(Сертификат));
Свойства.Вставить("ДатаНачала", ДатыСертификата.ДатаНачала);
Свойства.Вставить("ДатаОкончания", ДатыСертификата.ДатаОкончания);
Свойства.Вставить("ДействителенДо", ДатыСертификата.ДатаОкончания);
Свойства.Вставить("Назначение", ПолучитьНазначение(Сертификат));
Свойства.Вставить("Подписание", Сертификат.ИспользоватьДляПодписи);
Свойства.Вставить("Шифрование", Сертификат.ИспользоватьДляШифрования);
Если ДвоичныеДанныеСертификата <> Неопределено Тогда
ДополнительныеСвойстваСертификата = ДополнительныеСвойстваСертификата(ДвоичныеДанныеСертификата, ДобавкаВремени);
Если ЗначениеЗаполнено(ДополнительныеСвойстваСертификата.ДатаОкончанияЗакрытогоКлюча) Тогда
Свойства.Вставить("ДействителенДо",
Мин(ДатыСертификата.ДатаОкончания, ДополнительныеСвойстваСертификата.ДатаОкончанияЗакрытогоКлюча));
Иначе
Свойства.Вставить("ДействителенДо", ДатыСертификата.ДатаОкончания);
КонецЕсли;
Свойства.Вставить("ДатаНачалаЗакрытогоКлюча", ДополнительныеСвойстваСертификата.ДатаНачалаЗакрытогоКлюча);
Свойства.Вставить("ДатаОкончанияЗакрытогоКлюча", ДополнительныеСвойстваСертификата.ДатаОкончанияЗакрытогоКлюча);
Свойства.Вставить("Представление", ПредставлениеСертификата(
Новый Структура("Сертификат, ДействителенДо", Сертификат, Свойства.ДействителенДо),
ДобавкаВремени));
Иначе
Свойства.Вставить("ДействителенДо", ДатыСертификата.ДатаОкончания);
Свойства.Вставить("Представление", ПредставлениеСертификата(Сертификат, ДобавкаВремени));
КонецЕсли;
Возврат Свойства;
КонецФункции
@@ -2562,7 +2599,12 @@
Строка = Таблица.Добавить();
Строка.Свойство = НСтр("ru = 'Действителен до:'");
Если ТипЗнч(СвойстваСертификата) <> Тип("Структура") Или СвойстваСертификата.ДействителенДо = СвойстваСертификата.ДатаОкончания Тогда
Строка.Значение = Формат(СвойстваСертификата.ДействителенДо, "ДЛФ=D");
Иначе
Строка.Значение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 (срок действия закрытого ключа)'"), Формат(СвойстваСертификата.ДействителенДо, "ДЛФ=D"));
КонецЕсли;
Строка = Таблица.Добавить();
Строка.Свойство = НСтр("ru = 'Назначение:'");
@@ -3128,7 +3170,7 @@
СвойстваСертификата.КемВыдан,
СвойстваСертификата.КомуВыдан,
Формат(СвойстваСертификата.ДатаНачала, "ДЛФ=D"),
Формат(СвойстваСертификата.ДатаОкончания, "ДЛФ=D"));
Формат(СвойстваСертификата.ДействителенДо, "ДЛФ=D"));
Возврат СведенияОСертификате;
@@ -3636,10 +3678,17 @@
#Область СодержимоеСертификата
Функция ИдентификаторКлючаУдостоверяющегоЦентра(Данные) Экспорт
Функция ДополнительныеСвойстваСертификата(Данные, ДобавкаВремени = Неопределено) Экспорт
Структура = Новый Структура;
Структура.Вставить("ТекстОшибки", "");
Структура.Вставить("ДатаНачалаЗакрытогоКлюча", Дата(1,1,1));
Структура.Вставить("ДатаОкончанияЗакрытогоКлюча", Дата(1,1,1));
Структура.Вставить("ИдентификаторКлючаУдостоверяющегоЦентра", "");
Структура.Вставить("СодержитВстроеннуюЛицензиюКриптоПро", Ложь);
ДвоичныеДанные = ДвоичныеДанныеИзДанных(Данные,
"ЭлектроннаяПодписьСлужебныйКлиентСервер.ИдентификаторКлючаУдостоверяющегоЦентра");
"ЭлектроннаяПодписьСлужебныйКлиентСервер.ДополнительныеСвойстваСертификата");
АнализДанных = НовыйАнализДанных(ДвоичныеДанные);
@@ -3659,7 +3708,8 @@
ПропуститьНачалоБлока(АнализДанных, 0, 2);
Целое = ПрочитатьПотоковоеЦелое(АнализДанных);
Если Целое <> 2 Тогда
Возврат Неопределено;
Структура.ТекстОшибки = НСтр("ru = 'Данные не являются сертификатом.'");
Возврат Структура;
КонецЕсли;
ПропуститьРодительскийБлок(АнализДанных);
// version
@@ -3683,7 +3733,8 @@
// [3] EXPLICIT SEQUENCE SIZE (1..MAX) OF Extension (extensions).
ПропуститьНачалоБлока(АнализДанных, 2, 3);
Если АнализДанных.ЕстьОшибка Тогда
Возврат Неопределено;
Структура.ТекстОшибки = НСтр("ru = 'Ошибка в данных сертификата.'");
Возврат Структура;
КонецЕсли;
// SEQUENCE OF
ПропуститьНачалоБлока(АнализДанных, 0, 16);
@@ -3692,24 +3743,89 @@
// SEQUENCE (extension).
ПропуститьНачалоБлока(АнализДанных, 0, 16);
Если АнализДанных.ЕстьОшибка Тогда
Возврат Неопределено;
Структура.ТекстОшибки = НСтр("ru = 'Ошибка в данных сертификата.'");
Возврат Структура;
КонецЕсли;
// OBJECT IDENTIFIER
ПропуститьНачалоБлока(АнализДанных, 0, 6);
РазмерДанных = АнализДанных.Родители[0].РазмерДанных;
Если РазмерДанных = 0 Тогда
ПриОшибкеСтруктурыДанных(АнализДанных);
Возврат Неопределено;
Структура.ТекстОшибки = НСтр("ru = 'Ошибка в данных сертификата.'");
Возврат Структура;
КонецЕсли;
Если РазмерДанных = 3 Тогда
Буфер = АнализДанных.Буфер.Прочитать(АнализДанных.Смещение, РазмерДанных); // БуферДвоичныхДанных
СтрокаБуфера = ПолучитьHexСтрокуИзБуфераДвоичныхДанных(Буфер);
Если СтрокаБуфера = "551D23" Тогда //2.5.29.35 authorityKeyIdentifier
ПропуститьРодительскийБлок(АнализДанных); // OBJECT IDENTIFIER
Если СтрокаБуфера = "551D23" Тогда // 2.5.29.35 authorityKeyIdentifier
ЗаполнитьИдентификаторКлючаУдостоверяющегоЦентра(ПрочитанныйБлок(АнализДанных, 0, 4, Истина), Структура);
ИначеЕсли СтрокаБуфера = "551D10" Тогда // 2.5.29.16 privateKeyUsagePeriod
ЗаполнитьПериодДействияЗакрытогоКлюча(ПрочитанныйБлок(АнализДанных, 0, 4, Истина), Структура, ДобавкаВремени);
КонецЕсли;
ИначеЕсли РазмерДанных = 7 Тогда
Буфер = АнализДанных.Буфер.Прочитать(АнализДанных.Смещение, РазмерДанных); // БуферДвоичныхДанных
СтрокаБуфера = ПолучитьHexСтрокуИзБуфераДвоичныхДанных(Буфер);
Если СтрокаБуфера = "2A850302023102" Тогда // 1.2.643.2.2.49.2
Структура.СодержитВстроеннуюЛицензиюКриптоПро = Истина;
КонецЕсли;
ПропуститьРодительскийБлок(АнализДанных); // OBJECT IDENTIFIER
Иначе
ПропуститьРодительскийБлок(АнализДанных); // OBJECT IDENTIFIER
КонецЕсли;
ПропуститьРодительскийБлок(АнализДанных); // SEQUENCE
КонецЦикла;
Возврат Структура;
КонецФункции
Процедура ЗаполнитьПериодДействияЗакрытогоКлюча(ДвоичныеДанные, Структура, ДобавкаВремени)
АнализДанных = НовыйАнализДанных(ДвоичныеДанные);
// OCTET STRING
ПропуститьНачалоБлока(АнализДанных, 0, 4);
// PrivateKeyUsagePeriod ::= SEQUENCE {
// notBefore [0] GeneralizedTime OPTIONAL,
// notAfter [1] GeneralizedTime OPTIONAL }
// SEQUENCE
ПропуститьНачалоБлока(АнализДанных, 0, 16);
// [0]
Если ПропуститьНачалоБлока(АнализДанных, 2, 0, Ложь) Тогда
БуферДаты = АнализДанных.Буфер.Прочитать(АнализДанных.Смещение, 14);
ПредставлениеДаты = ПолучитьСтрокуИзБуфераДвоичныхДанных(БуферДаты);
ОписаниеТипа = Новый ОписаниеТипов("Дата");
Структура.ДатаНачалаЗакрытогоКлюча = ОписаниеТипа.ПривестиЗначение(ПредставлениеДаты);
ПропуститьРодительскийБлок(АнализДанных); // [0]
КонецЕсли;
// [1]
Если ПропуститьНачалоБлока(АнализДанных, 2, 1, Ложь) Тогда
БуферДаты = АнализДанных.Буфер.Прочитать(АнализДанных.Смещение, 14);
ПредставлениеДаты = ПолучитьСтрокуИзБуфераДвоичныхДанных(БуферДаты);
ОписаниеТипа = Новый ОписаниеТипов("Дата");
Структура.ДатаОкончанияЗакрытогоКлюча = ОписаниеТипа.ПривестиЗначение(ПредставлениеДаты);
ПропуститьРодительскийБлок(АнализДанных); // [1]
КонецЕсли;
Если ДобавкаВремени <> Неопределено И ЗначениеЗаполнено(Структура.ДатаНачалаЗакрытогоКлюча) Тогда
Структура.ДатаНачалаЗакрытогоКлюча = Структура.ДатаНачалаЗакрытогоКлюча + ДобавкаВремени;
КонецЕсли;
Если ДобавкаВремени <> Неопределено И ЗначениеЗаполнено(Структура.ДатаОкончанияЗакрытогоКлюча) Тогда
Структура.ДатаОкончанияЗакрытогоКлюча = Структура.ДатаОкончанияЗакрытогоКлюча + ДобавкаВремени;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьИдентификаторКлючаУдостоверяющегоЦентра(ДвоичныеДанные, Структура)
АнализДанных = НовыйАнализДанных(ДвоичныеДанные);
// OCTET STRING
ПропуститьНачалоБлока(АнализДанных, 0, 4);
@@ -3726,19 +3842,10 @@
Если Не АнализДанных.ЕстьОшибка Тогда
РазмерДанных = АнализДанных.Родители[0].РазмерДанных;
Буфер = АнализДанных.Буфер.Прочитать(АнализДанных.Смещение, РазмерДанных); // БуферДвоичныхДанных
Возврат ПолучитьHexСтрокуИзБуфераДвоичныхДанных(Буфер);
Структура.ИдентификаторКлючаУдостоверяющегоЦентра = ПолучитьHexСтрокуИзБуфераДвоичныхДанных(Буфер);
КонецЕсли;
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
ПропуститьРодительскийБлок(АнализДанных); // OBJECT IDENTIFIER
ПропуститьРодительскийБлок(АнализДанных); // SEQUENCE
КонецЦикла;
Возврат Неопределено;
КонецФункции
КонецПроцедуры
Функция АлгоритмСформированнойПодписи(ДанныеПодписи, ВключаяOID = Ложь, ТолькоOID = Ложь, АлгоритмПодписиНеСоответствуетГОСТ = Неопределено) Экспорт
@@ -4381,7 +4488,7 @@
КонецПроцедуры
Процедура ПриОшибкеСтруктурыДанных(АнализДанных) Экспорт
Процедура ПриОшибкеСтруктурыДанных(АнализДанных)
АнализДанных.ЭтоОшибкаСтруктурыДанных = Истина;
АнализДанных.ЕстьОшибка = Истина;
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="6f3c5b90-b030-4267-a973-33d12c2c7680">
<name>КомпонентаСканированияДокументов_3_0_1_1021</name>
<name>КомпонентаСканированияДокументов_3_0_1_1027</name>
<synonym>
<key>ru</key>
<value>Компонента сканирования документов</value>
+10 -10
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ee6aab0e-cece-4e84-9517-f03a6acdee78">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="aac56bf4-7a0d-4e01-9cae-96015ef65bb7">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="1dd3e6f2-524b-4f95-8be0-adbbb06d5322"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="98038930-c24f-4999-b1a2-c3486d9e0ba2"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="6c761e1b-a225-4054-bb04-d335a6b72ad6"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="da23e67f-e963-4a56-891e-80422de45449"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="6d80d825-f787-44c1-ad58-d000070f335e"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="083bee83-ab91-45d4-b85a-fe063d47339c"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="5b64c580-2049-4cff-a128-b609cf734a72"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="ae064752-fcb4-48d1-b512-bff639e60924"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="ca7b6180-97a4-4c02-8d20-075996090d45"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="18e75aba-48f1-4e28-9fef-3121e217725d"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="2859e12a-7d03-43e2-82eb-853b4d73cde7"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="001121b3-a6ab-4280-8a6a-c3046ad6af6e"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="a1eea14d-236d-4494-b9d6-4c828269e808"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="d3ad715e-8b10-4b34-86c2-f1ad46b5908d"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.9.232</version>
<version>3.1.9.238</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -856,7 +856,7 @@
<commonTemplates>CommonTemplate.КомпонентаПечатиQRКода</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаПечатиШтрихкодов_10_0_9_1</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаПоискаСтрок</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаСканированияДокументов_3_0_1_1021</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаСканированияДокументов_3_0_1_1027</commonTemplates>
<commonTemplates>CommonTemplate.МакетШтемпеляЭЦПOfficeOpen</commonTemplates>
<commonTemplates>CommonTemplate.ПолучениеДереваОбработчиковОбновления</commonTemplates>
<commonTemplates>CommonTemplate.ПустойМакетDOCX</commonTemplates>
@@ -1 +1 @@
{6,1,1,f9825f49-0380-4869-b29d-c48407ee952d,1,4370b1a3-a300-489a-960a-e212de4303dc,"3.1.9.232","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",7575,1,0,ee6aab0e-cece-4e84-9517-f03a6acdee78,ee6aab0e-cece-4e84-9517-f03a6acdee78,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,3eca2d7c-5946-4d13-ba84-e3ab5ef38b5b,3eca2d7c-5946-4d13-ba84-e3ab5ef38b5b,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,a3001de6-272f-444e-a8db-ec8cc3a670a2,a3001de6-272f-444e-a8db-ec8cc3a670a2,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754Line truncated
{6,1,1,f36026ea-55d4-4d07-b13f-115019322f13,1,eb0c239a-519d-4f00-8833-f3d8cffb88de,"3.1.9.238","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",7575,1,0,aac56bf4-7a0d-4e01-9cae-96015ef65bb7,aac56bf4-7a0d-4e01-9cae-96015ef65bb7,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,3eca2d7c-5946-4d13-ba84-e3ab5ef38b5b,3eca2d7c-5946-4d13-ba84-e3ab5ef38b5b,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,a3001de6-272f-444e-a8db-ec8cc3a670a2,a3001de6-272f-444e-a8db-ec8cc3a670a2,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754Line truncated
@@ -269,7 +269,7 @@
Если ЗначениеЗаполнено(Элемент.ТекущиеДанные.ОбъектСопоставления) Тогда
Элемент.ТекущиеДанные.РезультатСопоставленияСтроки = ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусСопоставлен();
Иначе
Элемент.ТекущиеДанные.РезультатСопоставленияСтроки = ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНесопоставлен();
Элемент.ТекущиеДанные.РезультатСопоставленияСтроки = ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеСопоставлен();
КонецЕсли;
Иначе
Отбор = Новый Структура("ОбязательнаДляЗаполнения", Истина);
@@ -280,7 +280,7 @@
Для каждого КолонкаТаблицы Из КолонкиОбязательнаДляЗаполнения Цикл
Если Не ЗначениеЗаполнено(Элемент.ТекущиеДанные[ПрефиксТабличнойЧасти + КолонкаТаблицы.Родитель]) Тогда
РезультатСопоставленияСтроки = ?(ЗначениеЗаполнено(Элемент.ТекущиеДанные.ОписаниеОшибки),
ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеоднозначность(), ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНесопоставлен());
ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеоднозначность(), ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеСопоставлен());
Прервать;
КонецЕсли;
КонецЦикла;
@@ -488,7 +488,7 @@
Элементы.ВставитьВСписок.Видимость = Ложь;
ПодтверждениеЗакрытияФормы = Истина;
Если ТипЗагрузки = "ТабличнаяЧасть" Тогда
Отбор = Новый Структура("РезультатСопоставленияСтроки", ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНесопоставлен());
Отбор = Новый Структура("РезультатСопоставленияСтроки", ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеСопоставлен());
Строки = ТаблицаСопоставленияДанных.НайтиСтроки(Отбор);
Если Строки.Количество() > 0 Тогда
Оповещение = Новый ОписаниеОповещения("ПослеВопросаОДобавлениеВТабличнуюЧасть", ЭтотОбъект);
@@ -525,7 +525,7 @@
Строка[ПрефиксТабличнойЧасти + Параметр.Имя] = Результат;
Строка.ОписаниеОшибки = СтрЗаменить(Строка.ОписаниеОшибки, Параметр.Имя + ";", "");
Строка.РезультатСопоставленияСтроки = ?(СтрДлина(Строка.ОписаниеОшибки) = 0,
ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусСопоставлен(), ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНесопоставлен());
ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусСопоставлен(), ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеСопоставлен());
КонецЕсли;
Иначе
Строка = ТаблицаСопоставленияДанных.НайтиПоИдентификатору(Параметр.Идентификатор);
@@ -535,7 +535,7 @@
Строка.СписокНеоднозначностей = Неопределено;
Иначе
Если Строка.РезультатСопоставленияСтроки <> ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеоднозначность() Тогда
Строка.РезультатСопоставленияСтроки = ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНесопоставлен();
Строка.РезультатСопоставленияСтроки = ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеСопоставлен();
Строка.СписокНеоднозначностей = Неопределено;
КонецЕсли;
КонецЕсли;
@@ -576,7 +576,7 @@
КоличествоСопоставленных = Результат.Количество();
Если ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
Отбор = Новый Структура("РезультатСопоставленияСтроки", ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНесопоставлен());
Отбор = Новый Структура("РезультатСопоставленияСтроки", ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеСопоставлен());
Результат = ТаблицаСопоставленияДанных.НайтиСтроки(Отбор);
КоличествоНеоднозначных = ТаблицаСопоставленияДанных.Количество() - КоличествоСопоставленных - Результат.Количество();
Иначе
@@ -1188,9 +1188,9 @@
Если ТипЗагрузки = "УниверсальнаяЗагрузка" Тогда
УстановитьОформлениеДляСтраницыСопоставления(Истина, Элементы.ПояснениеДляСопоставленияДанных, Истина, НСтр("ru = 'Загрузить данные >'"));
ИначеЕсли ТипЗагрузки = "ТабличнаяЧасть" Тогда
ОтборНесопоставлен = Новый Структура("РезультатСопоставленияСтроки", ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНесопоставлен());
ОтборНеСопоставлен = Новый Структура("РезультатСопоставленияСтроки", ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеСопоставлен());
ОтборНеоднозначность = Новый Структура("РезультатСопоставленияСтроки", ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеоднозначность());
Если ТаблицаСопоставленияДанных.НайтиСтроки(ОтборНесопоставлен).Количество() = 0
Если ТаблицаСопоставленияДанных.НайтиСтроки(ОтборНеСопоставлен).Количество() = 0
И ТаблицаСопоставленияДанных.НайтиСтроки(ОтборНеоднозначность).Количество() = 0 Тогда
// Все строки сопоставлены
ПереходКСледующемуШагуЗагрузкиДанных();
@@ -1850,7 +1850,7 @@
КонецЦикла;
НоваяСтрока["РезультатСопоставленияСтроки"] = ?(ЗаполненыВсеОбязательныеКолонки,
ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусСопоставлен(), ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНесопоставлен());
ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусСопоставлен(), ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеСопоставлен());
Отбор = Новый Структура("Идентификатор", Строка.Идентификатор);
@@ -2690,7 +2690,7 @@
Если Результат = КодВозвратаДиалога.Да Тогда
Для каждого СтрокаТаблицы Из ТаблицаСопоставленияДанных Цикл
СтрокаТаблицы.ОбъектСопоставления = Неопределено;
СтрокаТаблицы.РезультатСопоставленияСтроки = ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНесопоставлен();
СтрокаТаблицы.РезультатСопоставленияСтроки = ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеСопоставлен();
СтрокаТаблицы.СписокНеоднозначностей = Неопределено;
СтрокаТаблицы.ОписаниеОшибки = "";
КонецЦикла;
@@ -341,7 +341,7 @@
СтрокаДанных.СписокНеоднозначностей.ЗагрузитьЗначения(НайденныеВарианты);
СтрокаДанных.РезультатСопоставленияСтроки = ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеоднозначность();
Иначе
СтрокаДанных.РезультатСопоставленияСтроки = ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНесопоставлен();
СтрокаДанных.РезультатСопоставленияСтроки = ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеСопоставлен();
КонецЕсли;
КонецЦикла;
@@ -479,7 +479,7 @@
СтрокаТаблицыПустая = Истина;
НоваяСтрока = ТаблицаСопоставления.Добавить();
НоваяСтрока.Идентификатор = НомерСтроки - 1 - КорректировкаИдентификатора;
НоваяСтрока.РезультатСопоставленияСтроки = ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНесопоставлен();
НоваяСтрока.РезультатСопоставленияСтроки = ЗагрузкаДанныхИзФайлаКлиентСервер.СтатусНеСопоставлен();
Для НомерКолонки = 1 По ШаблонСДанными.ШиринаТаблицы Цикл
@@ -1400,9 +1400,9 @@
ОбновитьЗначение(Содержание, "ПодтвержденоОзнакомлениеСИнформацией");
ОбновитьЗначение(Содержание, "ОшибкаУстановкиСертификата");
ОбновитьЗначение(Содержание, "ДатаУстановкиСертификата");
НаименованиеСертификата = ЭлектроннаяПодпись.ПредставлениеСертификата(
СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(
Новый СертификатКриптографии(ТекущийОбъект.ДанныеСертификата.Получить()));
НаименованиеСертификата = СвойстваСертификата.Представление;
КонецЕсли;
Если ТекущийОбъект.Наименование <> НаименованиеСертификата Тогда
@@ -60,6 +60,7 @@
Если СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено Тогда
Элементы.ФормаПоказатьЗаявлениеПоКоторомуБылПолученСертификат.Доступность = Истина;
Элементы.ПоказатьЗаявлениеПоКоторомуБылПолученСертификат.Доступность = Истина;
Элементы.ПоказатьЗаявлениеПоКоторомуБылПолученСертификат.Видимость = Истина;
Иначе
Возврат;
КонецЕсли;
@@ -1211,7 +1212,7 @@
Объект = Сертификат.ПолучитьОбъект();
// Важно заполнить отпечаток, чтобы не было возможности добавить дубль сертификата.
Объект.Наименование = ЭлектроннаяПодпись.ПредставлениеСертификата(СертификатКриптографии);
Объект.Наименование = СвойстваСертификата.Представление;
Объект.Подписание = СвойстваСертификата.Подписание;
Объект.Шифрование = СвойстваСертификата.Шифрование;
@@ -1490,7 +1491,7 @@
// Параметры:
// СертификатОбъект - СправочникОбъект.СертификатыКлючейЭлектроннойПодписиИШифрования.
//
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(СертификатОбъект) Экспорт
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(СертификатОбъект, ЗаписатьОбъект) Экспорт
СодержаниеЗаявления = СертификатОбъект.УдалитьСодержаниеЗаявления.Получить();
ДатаПолученияСертификата = '39991231235959';
@@ -1528,6 +1529,7 @@
КонецЕсли;
СертификатОбъект.ДатаПолученияСертификата = ДатаПолученияСертификата;
СертификатОбъект.УдалитьСостояниеЗаявления = Неопределено;
ЗаписатьОбъект = Истина;
КонецПроцедуры
@@ -1,82 +1,106 @@
<!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> из карточки объекта программы.</p>
<p>Предназначен для работы с файлами, присоединенными к объекту приложения.</p>
<p>Открывается по ссылке <strong>Файлы</strong> из карточки объекта приложения.</p>
<p>В списке выводится:</p>
<ul><li><img src="CommonPicture.ПодписанЗашифрованЗаголовок"></img> - наличие ЭП или шифрования.
</li><li><strong>Наименование</strong> - полное имя файла. Значок рядом с наименованием указывает тип файла. При наличии в колонке выводится также и описание - подробные сведения о файле.
</li><li><strong>Автор</strong> - пользователь, который добавил файл;
</li><li><strong>Дата изменения</strong> - дата изменения данных файла (местное время); </li></ul><p>С помощью команды <strong>Еще - Дополнительно - Изменить форму</strong> можно добавить сведения:</p>
</li>
<li><strong>Наименование</strong> - полное имя файла. Значок рядом с наименованием указывает тип файла. При наличии в колонке выводится также и описание - подробные сведения о файле.
</li>
<li><strong>Автор</strong> - пользователь, который добавил файл;
</li>
<li><strong>Дата изменения</strong> - дата изменения данных файла (местное время); </li></ul><p>С помощью команды <strong>Еще - Дополнительно - Изменить форму</strong> можно добавить сведения:</p>
<ul><li>
<div><strong>Дата создания</strong> - дата и время ввода файла в программу;</div></li></ul><ul><li><strong>Редактирует</strong> - пользователь, который занял файл для редактирования и т.д. </li></ul><h3>Добавление нового файла</h3>
<div><strong>Дата создания</strong> - дата и время ввода файла в приложение;</div></li></ul><ul><li><strong>Редактирует</strong> - пользователь, который занял файл для редактирования и т.д. </li></ul><h3>Добавление нового файла</h3>
<ul><li>
<div>Нажмите <strong>Добавить</strong>. Выберите способ ввода файла из выпадающего меню:</div>
<ul><li>
<div><strong>Файл с компьютера</strong>;</div>
<div><strong>Файл с устройства</strong>;</div>
<ul><li>
<div>укажите путь к файлу на компьютере.</div></li></ul></li><li>
<div>укажите путь к файлу на устройстве.</div></li></ul></li>
<li>
<div><strong>По шаблону</strong>;</div>
<ul><li>
<div>выберите шаблон из предлагаемого списка.</div></li></ul></li><li>
<div>выберите шаблон из предлагаемого списка.</div></li></ul></li>
<li>
<div><strong>со сканера</strong>.</div>
<ul><li>
<div>открывается <a href="DataProcessor.Сканирование.Form.РезультатСканирования/Help">окно для работы со сканированием</a>. Следуйте указаниям программы.</div></li></ul></li></ul></li><li>После добавления файла автоматически открывается обновленный список файлов.
</li><li>
<div>Файл хранится в специальном каталоге. Для каждого объекта программы формируется отдельная папка.</div>
</li><li>
<div>В некоторых списках программы элементы, к которым присоединены файлы, обозначаются значком <img src="CommonPicture.Скрепка"></img>.</div></li></ul><h3>Загрузка файлов</h3>
<div>открывается <a href="DataProcessor.Сканирование.Form.РезультатСканирования/Help">окно для работы со сканированием</a>. Следуйте указаниям приложения.</div></li></ul></li></ul></li>
<li>После добавления файла автоматически открывается обновленный список файлов.
</li>
<li>
<div>Файл хранится в специальном каталоге. Для каждого объекта приложения формируется отдельная папка.</div>
</li>
<li>
<div>В некоторых списках приложения элементы, к которым присоединены файлы, обозначаются значком <img src="CommonPicture.Скрепка"></img>.</div></li></ul><h3>Загрузка файлов</h3>
<ul><li>
<div>Нажмите <strong>Еще - Загрузить файлы,</strong> укажите путь к файлам на компьютере.</div></li></ul><h3>Просмотр изображений в списке</h3>
<div>Нажмите <strong>Еще - Загрузить файлы,</strong> укажите путь к файлам на устройстве.</div></li></ul><h3>Просмотр изображений в списке</h3>
<ul><li>
<div>Включите флажок <strong>Еще - Предпросмотр</strong>, для того чтобы можно было просматривать файлы изображений прямо в списке в специальном окне.</div></li></ul><h3>Просмотр карточки файла</h3>
<ul><li>Нажмите <strong>Еще - Открыть карточку</strong> (нажмите клавишу <strong>F2</strong>), для того чтобы просмотреть <a href="DataProcessor.РаботаСФайлами.Form.ПрисоединенныйФайл/Help">свойства</a> выделенного в списке файла, открыв окно <strong>Присоединенный файл</strong>, также можно воспользоваться соответствующей командой контекстного меню.</li></ul><h3>Редактирование присоединенных файлов</h3>
<ul><li>
<div>
<div>В тонком клиенте <a href="CommonForm.РедактированиеТабличногоДокумента/Help">редактирование файлов табличных документов</a> (формата <strong>.mxl</strong>) осуществляется во встроенной форме редактора табличных документов. В веб-клиенте необходимо загрузить приложение для редактирования этих файлов. Подробнее об особенностях редактирования табличных документов в веб-клиенте см. <a href="InformationRegister.ПользовательскиеМакетыПечати/Help">здесь</a>. </div></div>
</li><li>
</li>
<li>
<div>
<div>Для редактирования файлов других форматов на компьютере должны быть установлены соответствующие приложения, например, для редактирования файлов в формате Microsoft Word должно быть установлено это приложение.</div></div>
</li><li>Команда <strong>Просмотреть</strong> открывает файл внешним приложением для просмотра или редактирования, в зависимости от того, помечен или нет файл как занятый другим пользователем для редактирования.
<div>Для редактирования файлов других форматов на устройстве должны быть установлены соответствующие приложения, например, для редактирования файлов в формате Microsoft Word должно быть установлено это приложение.</div></div>
</li>
<li>Команда <strong>Просмотреть</strong> открывает файл внешним приложением для просмотра или редактирования, в зависимости от того, помечен или нет файл как занятый другим пользователем для редактирования.
<div></div>
<div></div>
</li><li>
</li>
<li>
<div>
<div>Команда <strong>Редактировать</strong> открывает файл в режиме редактирования, а также производит захват файла в программе. Захваченный файл будет недоступен для редактирования другим пользователям программы и помечается в списке зеленым цветом.</div></div>
</li><li>
<div>После окончания редактирования сохраните файл, закройте внешнее приложение. Нажмите <img src="CommonPicture.ЗакончитьРедактированиеФайла"></img> <strong>Сохранить и освободить файл в информационной базе</strong>, это действие освобождает файл, сохраняет его в программе и снимает пометку занятости для редактирования. </div>
</li><li>
<div>Команда <strong>Еще - Дополнительно -</strong> <strong>Отменить редактирование</strong> освобождает файл, не сохраняя произведенные в нем изменения в программе, и снимает пометку занятости для редактирования. Команда может быть полезна, если необходимо отказаться от результатов редактирования файла (например, при редактировании в файл были внесены нежелательные изменения или ошибки).</div></li></ul><h3>Печать файла</h3>
<div>Команда <strong>Редактировать</strong> открывает файл в режиме редактирования, а также производит захват файла в приложении. Захваченный файл будет недоступен для редактирования другим пользователям приложения и помечается в списке зеленым цветом.</div></div>
</li>
<li>
<div>После окончания редактирования сохраните файл, закройте внешнее приложение. Нажмите <img src="CommonPicture.ЗакончитьРедактированиеФайла"></img> <strong>Сохранить и освободить файл в информационной базе</strong>, это действие освобождает файл, сохраняет его в приложении и снимает пометку занятости для редактирования. </div>
</li>
<li>
<div>Команда <strong>Еще - Дополнительно -</strong> <strong>Отменить редактирование</strong> освобождает файл, не сохраняя произведенные в нем изменения в приложении, и снимает пометку занятости для редактирования. Команда может быть полезна, если необходимо отказаться от результатов редактирования файла (например, при редактировании в файл были внесены нежелательные изменения или ошибки).</div></li></ul><h3>Печать файла</h3>
<p>Нажмите кнопку <strong>Печать</strong>, из выпадающего меню выберите нужное действие, например, <strong>Сразу на принтер</strong>. Возможны и другие действия.</p>
<h3>Отправка файла по электронной почте</h3>
<ul><li>
<div>Нажмите кнопку <strong>Отправить</strong>. Программа формирует почтовое сообщение, заполните необходимые поля. Присоединенный файл автоматически будет приложением данного письма.</div></li></ul><h3>Сохранение файла</h3>
<div>Нажмите кнопку <strong>Отправить</strong>. приложение формирует почтовое сообщение, заполните необходимые поля. Присоединенный файл автоматически будет приложением данного письма.</div></li></ul><h3>Сохранение файла</h3>
<ul><li>
<div>С помощью команды <strong>Еще - Дополнительно - Сохранить как</strong> можно сохранить файл в указанный каталог на компьютере.</div>
</li><li>
<div>С помощью команды <strong>Еще - Дополнительно - Сохранить как</strong> можно сохранить файл в указанный каталог на устройстве.</div>
</li>
<li>
<div>
<div>Также можно воспользоваться соответствующей командой контекстного меню по правой кнопке мыши.</div></div>
</li><li>
</li>
<li>
<div>Соответствующей командой меню <strong>Еще - Дополнительно</strong> или контекстного меню по правой кнопке мыши можно <strong>Открыть каталог файла</strong> в Проводнике Windows.</div></li></ul><h3>Обновление файла</h3>
<ul><li>С помощью команды <strong>Еще - Дополнительно - Обновить из файла на компьютере</strong> можно обновить файл из оригинального файла на компьютере (из которого изначально был создан файл в программе).
</li><li>Также можно воспользоваться соответствующей командой контекстного меню по правой кнопке мыши.</li></ul><h3>Сравнение файлов</h3>
<ul><li>С помощью команды <strong>Еще - Дополнительно - Обновить из файла на устройстве</strong> можно обновить файл из оригинального файла на устройстве (из которого изначально был создан файл в приложении).
</li>
<li>Также можно воспользоваться соответствующей командой контекстного меню по правой кнопке мыши.</li></ul><h3>Сравнение файлов</h3>
<ul><li>
<div>Выберите в списке файлы для сравнения.</div>
</li><li>
<div>Выполните команду <strong>Еще - Сравнить файлы</strong>. При первом сравнении файлов программа предлагает выбрать, с помощью какой офисной программы выполнить сравнение. После этого открываются файлы для сравнения в выбранной офисной программе. Программа для сравнения должна быть установлена на компьютере.</div></li></ul><h3>Электронная подпись и шифрование</h3>
</li>
<li>
<div>Выполните команду <strong>Еще - Сравнить файлы</strong>. При первом сравнении файлов приложение предлагает выбрать, с помощью какого офисного приложения выполнить сравнение. После этого открываются файлы для сравнения в выбранном офисном приложении. Приложение для сравнения должна быть установлена на устртойстве.</div></li></ul><h3>Электронная подпись и шифрование</h3>
<p>В выпадающем меню по кнопке <img src="CommonPicture.ПодписанЗашифрованЗаголовок" width="16" height="16"></img> <strong>Электронная подпись и шифрование</strong> доступны команды для работы с электронной подписью файлов:</p>
<ul><li><strong>Подписать</strong> - создает ЭП для файла. Перед созданием ЭП программа предлагает <a>выбрать сертификат ЭП</a> из имеющихся на компьютере. Выбор сертификата можно сделать и во время персональных настроек программы. Подписанный файл становится недоступным для редактирования и отображается в списках со значком <img src="CommonPicture.ПодписанЭП" width="16" height="16"></img>.
</li><li><strong>Сохранить вместе с электронной подписью</strong> - <a href="CommonForm.СохранениеВместеСЭлектроннойПодписью/Help">сохраняет подпись</a> в файл на компьютере. Команду можно использовать, например, если необходимо передать подписанный файл другому лицу.
</li><li><strong>Добавить электронную подпись из файла</strong> - <a href="CommonForm.ДобавлениеЭлектроннойПодписиИзФайла/Help">добавляет подпись</a> к файлу. Команду можно использовать, например, если подпись (файл подписи) была получена позже, чем подписанный файл.
</li><li><strong>Зашифровать</strong> - по команде происходит <a>шифрование файла</a>. В отличие от подписания могут использоваться несколько сертификатов, например, если необходимо зашифровать файл для нескольких пользователей. Зашифрованный файл в списках отображается со значком <img src="CommonPicture.Зашифрован" width="16" height="16"></img>.
</li><li><strong>Расшифровать</strong> - по команде происходит <a>расшифровка файла</a>. Для расшифровки нужно ввести пароль к закрытому ключу.</li></ul><h3>Печать табличного документа со штампом электронной подписи</h3>
<ul><li><strong>Подписать</strong> - создает ЭП для файла. Перед созданием ЭП приложение предлагает <a>выбрать сертификат ЭП</a> из имеющихся на устройстве. Выбор сертификата можно сделать и во время персональных настроек приложения. Также файл можно подписать по доверенности, выбрав соответствующую из списка. Подписанный файл становится недоступным для редактирования и отображается в списках со значком <img src="CommonPicture.ПодписанЭП" width="16" height="16"></img>.
</li>
<li><strong>Сохранить вместе с электронной подписью</strong> - <a href="CommonForm.СохранениеВместеСЭлектроннойПодписью/Help">сохраняет подпись</a> в файл на устройств. Команду можно использовать, например, если необходимо передать подписанный файл другому лицу.
</li>
<li><strong>Добавить электронную подпись из файла</strong> - <a href="CommonForm.ДобавлениеЭлектроннойПодписиИзФайла/Help">добавляет подпись</a> к файлу. Команду можно использовать, например, если подпись (файл подписи) была получена позже, чем подписанный файл.
</li>
<li><strong>Зашифровать</strong> - по команде происходит <a>шифрование файла</a>. В отличие от подписания могут использоваться несколько сертификатов, например, если необходимо зашифровать файл для нескольких пользователей. Зашифрованный файл в списках отображается со значком <img src="CommonPicture.Зашифрован" width="16" height="16"></img>.
</li>
<li><strong>Расшифровать</strong> - по команде происходит <a>расшифровка файла</a>. Для расшифровки нужно ввести пароль к закрытому ключу.</li></ul><h3>Печать табличного документа со штампом электронной подписи</h3>
<ul><li>
<div>Для печати подписанного электронной подписью табличного документа со штампами визуализации электронной подписи в списке присоединенных файлов предусмотрена команда <strong>Печать - Со штампом электронной подписи</strong>. </div>
</li><li>
</li>
<li>
<div>Предварительно, табличный документ должен быть подписан одной или несколькими электронными подписями в соответствии с тем, как это предусмотрено в документе.</div></li></ul><h3>Служебные присоединенные файлы (только для администратора)</h3>
<ul><li>
<div>В процессе работы с объектами программа также может присоединять к ним служебные файлы, например, файлы, которые создаются автоматически при отправке сведений в банк и т.д. Они могут быть интересны разработчику, но пользователь их видеть и редактировать не должен.</div>
</li><li>
<div>В процессе работы с объектами приложения также может присоединять к ним служебные файлы, например, файлы, которые создаются автоматически при отправке сведений в банк и т.д. Они могут быть интересны разработчику, но пользователь их видеть и редактировать не должен.</div>
</li>
<li>
<div>Включите флажок меню Еще, для того чтобы <strong>Показывать служебные файлы</strong>. Флажок доступен только пользователям с ролью <strong>Полные права</strong>.</div>
</li><li>
</li>
<li>
<div>Служебные присоединенные файлы можно только просмотреть.</div></li></ul><h3>См. также:</h3>
<ul><li>
<div><a href="v8help://frame/form_common">Работа с формами</a>.</div></li></ul></body></html>
@@ -704,6 +704,15 @@
НаименованиеУровня = ОбъектАдреса[ИмяПоля];
КонецЕсли;
ЭтоУровеньРегиона = СтрСравнить(ИмяПоля, "area") = 0;
Если ЭтоУровеньРегиона И ЗначениеЗаполнено(ОбъектАдреса.areaValue) Тогда
ПредставлениеУровня = ОбъектАдреса.areaValue;
Иначе
ПредставлениеУровня = УправлениеКонтактнойИнформациейКлиентСервер.СоединитьНаименованиеИТипАдресногоОбъекта(НаименованиеУровня,
ОбъектАдреса[ИмяПоля + "Type"], ЭтоУровеньРегиона);
КонецЕсли;
ПредставлениеУровня = УправлениеКонтактнойИнформациейКлиентСервер.СоединитьНаименованиеИТипАдресногоОбъекта(НаименованиеУровня,
ОбъектАдреса[ИмяПоля + "Type"], СтрСравнить(ИмяПоля, "area") = 0);
@@ -55,7 +55,8 @@
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch>
<wrap>true</wrap>
<choiceButton>true</choiceButton>
<dropListButton>true</dropListButton>
<listChoiceMode>true</listChoiceMode>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textSize>Normal</textSize>
@@ -126,21 +126,16 @@
&НаКлиенте
Процедура ИмяУстройстваНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Попытка
МассивУстройств = РаботаСФайламиСлужебныйКлиент.ПолучитьУстройства(ЭтотОбъект, ПодключаемыйМодуль);
Исключение
МассивУстройств = Новый Массив;
КонецПопытки;
Если МассивУстройств.Количество() > 0 Тогда
СписокВыбора = Новый СписокЗначений();
Для Каждого Строка Из МассивУстройств Цикл
СписокВыбора.Добавить(Строка);
КонецЦикла;
ОписаниеОповещения = Новый ОписаниеОповещения("ИмяУстройстваНачалоВыбораЗавершение", ЭтотОбъект, Элемент);
СписокВыбора.ПоказатьВыборЭлемента(ОписаниеОповещения, НСтр("ru='Выберите сканер'"));
Если МассивУстройств.Количество() > 0 Тогда
Элемент.СписокВыбора.ЗагрузитьЗначения(МассивУстройств);
Иначе
СтандартнаяОбработка = Ложь;
ПоказатьПредупреждение(,НСтр("ru = 'Не обнаружено подключенных сканеров. Проверьте подключение сканера.'"));
КонецЕсли;
КонецПроцедуры
@@ -384,14 +379,6 @@
КонецПроцедуры
&НаКлиенте
Процедура ИмяУстройстваНачалоВыбораЗавершение(ВыбранныйЭлемент, Элемент) Экспорт
Если ВыбранныйЭлемент <> Неопределено Тогда
ИмяУстройства = ВыбранныйЭлемент.Значение;
ИмяУстройстваПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОКЗавершение(НастройкиСканированияПользователя)
РаботаСФайламиКлиент.СохранитьНастройкиСканированияПользователя(НастройкиСканированияПользователя);
@@ -458,7 +458,7 @@
Возврат;
КонецЕсли;
ПодключаемыйМодуль = РезультатПроверкиИнициализации.ПодключаемыйМодуль;
РаботаСФайламиСлужебныйКлиент.ВключитьЛогированиеКомпоненты(ПодключаемыйМодуль);
РаботаСФайламиСлужебныйКлиент.ВключитьЛогированиеКомпоненты(ПодключаемыйМодуль, Истина);
ПараметрыОткрытия.ТекущийШаг = 2;
@@ -19,8 +19,8 @@
Процедура ОбновитьВозможныеПраваДляНастройкиПравОбъектов(ЕстьИзменения = Неопределено) Экспорт
СвойстваСеанса = УправлениеДоступомСлужебныйПовтИсп.ОписаниеСвойствВидовДоступаСеанса().СвойстваСеанса;
ВозможныеПраваСеанса = ПроверенныеВозможныеПраваСеанса(СвойстваСеанса);
НовоеЗначение = ХешСуммаВозможныхПрав(ВозможныеПраваСеанса);
НовоеЗначение = "";
ПроверенныеВозможныеПраваСеанса(СвойстваСеанса, НовоеЗначение);
НачатьТранзакцию();
Попытка
@@ -791,11 +791,12 @@
// Параметры:
// СвойстваВидовДоступа - см. УправлениеДоступомСлужебный.СвойстваВидовДоступа
// - Неопределено
// ХешСумма - Строка - возвращаемое значение.
//
// Возвращаемое значение:
// см. УправлениеДоступомСлужебный.ВозможныеПраваДляНастройкиПравОбъектов
//
Функция ПроверенныеВозможныеПраваСеанса(СвойстваВидовДоступа = Неопределено) Экспорт
Функция ПроверенныеВозможныеПраваСеанса(СвойстваВидовДоступа = Неопределено, ХешСумма = "") Экспорт
ВозможныеПрава = ЗаполненныеВозможныеПраваСеанса();
@@ -807,10 +808,8 @@
+ Символы.ПС
+ Символы.ПС;
ПоТипам = Новый Соответствие;
ПоТипамСсылок = Новый Соответствие;
ПоПолнымИменам = Новый Соответствие;
ТипыВладельцев = Новый Массив;
СвойстваВладельцев = Новый Соответствие;
ТипыВладельцев = Новый СписокЗначений;
ОтдельныеТаблицы = Новый Соответствие;
ИерархическиеТаблицы = Новый Соответствие;
@@ -852,8 +851,10 @@
ЗаполнитьИдентификаторы("ЧтениеВТаблицах", ВозможноеПраво, ЗаголовокОшибки, ОтдельныеТаблицы, ДополнительныеПараметры);
ЗаполнитьИдентификаторы("ИзменениеВТаблицах", ВозможноеПраво, ЗаголовокОшибки, ОтдельныеТаблицы, ДополнительныеПараметры);
ПраваВладельца = ПоПолнымИменам[ВозможноеПраво.ВладелецПрав];
Если ПраваВладельца = Неопределено Тогда
СвойстваВладельца = СвойстваВладельцев[ВозможноеПраво.ВладелецПрав];
Если СвойстваВладельца <> Неопределено Тогда
ПраваВладельца = СвойстваВладельца.ПраваВладельца;
Иначе
ПраваВладельца = ПраваВладельца();
МассивПравВладельца = Новый Массив;
@@ -930,17 +931,20 @@
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ПоПолнымИменам.Вставить(ВозможноеПраво.ВладелецПрав, ПраваВладельца);
ПоТипамСсылок.Вставить(ТипСсылки, МассивПравВладельца);
ПоТипам.Вставить(ТипСсылки, ПраваВладельца);
ПоТипам.Вставить(ТипОбъекта, ПраваВладельца);
СвойстваВладельца = Новый Структура;
СвойстваВладельца.Вставить("ПраваВладельца", ПраваВладельца);
СвойстваВладельца.Вставить("МассивПравВладельца", МассивПравВладельца);
СвойстваВладельца.Вставить("ТипСсылки", ТипСсылки);
СвойстваВладельца.Вставить("ТипОбъекта", ТипОбъекта);
СвойстваВладельцев.Вставить(ВозможноеПраво.ВладелецПрав, СвойстваВладельца);
Если ИерархическийОбъектМетаданных(ОбъектМетаданныхВладельца) Тогда
ИерархическиеТаблицы.Вставить(ТипСсылки, Истина);
ИерархическиеТаблицы.Вставить(ТипОбъекта, Истина);
КонецЕсли;
ТипыВладельцев.Добавить(ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
ВозможноеПраво.ВладелецПрав).ПустаяСсылка());
ВозможноеПраво.ВладелецПрав).ПустаяСсылка(), ВозможноеПраво.ВладелецПрав);
ИндексыПравВладельцев.Вставить(ВозможноеПраво.ВладелецПрав, 0);
КонецЕсли;
@@ -967,62 +971,120 @@
ВызватьИсключение ТекстОшибки;
КонецЦикла;
СвойстваВозможногоПрава = СвойстваВозможногоПрава(ВозможноеПраво);
СвойстваВозможногоПрава.ИндексПрава = ИндексыПравВладельцев[ВозможноеПраво.ВладелецПрав];
ИндексыПравВладельцев[ВозможноеПраво.ВладелецПрав] = СвойстваВозможногоПрава.ИндексПрава + 1;
ИндексПрава = ИндексыПравВладельцев[ВозможноеПраво.ВладелецПрав];
ИндексыПравВладельцев[ВозможноеПраво.ВладелецПрав] = ИндексПрава + 1;
СвойстваВозможногоПрава = СвойстваВозможногоПрава(ВозможноеПраво, ИндексПрава);
ПраваВладельца.Вставить(ВозможноеПраво.Имя, СвойстваВозможногоПрава);
МассивПравВладельца.Добавить(СвойстваВозможногоПрава);
КонецЦикла;
// Дополнение отдельных таблиц.
ОбщаяТаблица = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
Для каждого ОписаниеПрав Из ПоПолнымИменам Цикл
ОтдельныеПрава = ДополнительныеПараметры.ОтдельныеПраваВладельцев.Получить(ОписаниеПрав.Ключ);
Для каждого ОписаниеПрава Из ОписаниеПрав.Значение Цикл
СвойстваПрава = ОписаниеПрава.Значение;
ТипыВладельцев.СортироватьПоЗначению();
ПоТипам = Новый Соответствие;
ПоТипамСсылок = Новый Соответствие;
ПоПолнымИменам = Новый Соответствие;
ОписаниеВерсии = Новый Структура("СвойстваВерсии", Новый Массив);
ДобавитьЭлементВерсии(ОписаниеВерсии, "Версия", "1");
Для Каждого ЭлементСписка Из ТипыВладельцев Цикл
СвойстваВладельца = СвойстваВладельцев.Получить(ЭлементСписка.Представление);
// Дополнение отдельных таблиц.
ОтдельныеПрава = ДополнительныеПараметры.ОтдельныеПраваВладельцев.Получить(ЭлементСписка.Представление);
Индекс = -1;
Для Каждого СвойстваПрава Из СвойстваВладельца.МассивПравВладельца Цикл
Индекс = Индекс + 1;
Если СвойстваПрава.ИзменениеВТаблицах.Найти(ОбщаяТаблица) <> Неопределено Тогда
Для каждого КлючИЗначение Из ОтдельныеТаблицы Цикл
Для Каждого КлючИЗначение Из ОтдельныеТаблицы Цикл
ОтдельнаяТаблица = КлючИЗначение.Ключ;
Если ОтдельныеПрава.ИзменениеВТаблицах[ОтдельнаяТаблица] = Неопределено
И СвойстваПрава.ИзменениеВТаблицах.Найти(ОтдельнаяТаблица) = Неопределено Тогда
ИзменениеВТаблицах = Новый Массив(СвойстваПрава.ИзменениеВТаблицах);
Свойства = Новый Структура(СвойстваПрава);
ИзменениеВТаблицах = Новый Массив(Свойства.ИзменениеВТаблицах);
ИзменениеВТаблицах.Добавить(ОтдельнаяТаблица);
СвойстваПрава.ИзменениеВТаблицах = Новый ФиксированныйМассив(ИзменениеВТаблицах);
Свойства.ИзменениеВТаблицах = Новый ФиксированныйМассив(ИзменениеВТаблицах);
СвойстваПрава = Новый ФиксированнаяСтруктура(Свойства);
СвойстваВладельца.МассивПравВладельца[Индекс] = СвойстваПрава;
СвойстваВладельца.ПраваВладельца[СвойстваПрава.Имя] = СвойстваПрава;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
// Фиксация и добавление строки версии.
ТипСсылкиВладельца = ТипЗнч(ЭлементСписка.Значение);
ПраваВладельца = Новый ФиксированноеСоответствие(СвойстваВладельца.ПраваВладельца);
МассивПравВладельца = Новый ФиксированныйМассив(СвойстваВладельца.МассивПравВладельца);
ПоПолнымИменам.Вставить(ЭлементСписка.Представление, ПраваВладельца);
ПоТипамСсылок.Вставить(СвойстваВладельца.ТипСсылки, МассивПравВладельца);
ПоТипам.Вставить(ТипСсылки, ПраваВладельца);
ПоТипам.Вставить(ТипОбъекта, ПраваВладельца);
ОписаниеВерсии.СвойстваВерсии.Добавить("");
ВладелецПравДобавлен = Ложь;
ПраваВладельца = ПоТипамСсылок.Получить(ТипСсылкиВладельца);
Для Каждого СвойстваПрава Из МассивПравВладельца Цикл
Если Не ВладелецПравДобавлен Тогда
ДобавитьЭлементВерсии(ОписаниеВерсии, "ВладелецПрав", СвойстваПрава.ВладелецПрав);
ДобавитьЭлементВерсии(ОписаниеВерсии, "ТипВладельцаПрав", ТипСсылкиВладельца);
ДобавитьЭлементВерсии(ОписаниеВерсии, "ИерархияВладельцаПрав",
ИерархическиеТаблицы.Получить(ТипСсылкиВладельца) <> Неопределено);
ВладелецПравДобавлен = Истина;
ОписаниеВерсии.СвойстваВерсии.Добавить("");
КонецЕсли;
ДобавитьЭлементВерсии(ОписаниеВерсии, "Имя", СвойстваПрава.Имя);
ДобавитьЭлементВерсии(ОписаниеВерсии, "ИндексПрава", СвойстваПрава.ИндексПрава);
ДобавитьЭлементВерсии(ОписаниеВерсии, "ЧтениеВТаблицах", СвойстваПрава.ЧтениеВТаблицах);
ДобавитьЭлементВерсии(ОписаниеВерсии, "ИзменениеВТаблицах", СвойстваПрава.ИзменениеВТаблицах);
ОписаниеВерсии.СвойстваВерсии.Добавить("");
КонецЦикла;
КонецЦикла;
Список = Новый СписокЗначений;
Для Каждого КлючИЗначение Из ОтдельныеТаблицы Цикл
Список.Добавить(КлючИЗначение.Ключ);
КонецЦикла;
Список.СортироватьПоЗначению();
ДобавитьЭлементВерсии(ОписаниеВерсии, "ОтдельныеТаблицы", Список.ВыгрузитьЗначения());
СтрокаВерсии = СтрСоединить(ОписаниеВерсии.СвойстваВерсии, Символы.ПС);
ХешСумма = УправлениеДоступомСлужебный.ХешСуммаДанных(СтрокаВерсии);
ВозможныеПрава = Новый Структура;
ВозможныеПрава.Вставить("ПоТипам", ПоТипам);
ВозможныеПрава.Вставить("ПоТипамСсылок", ПоТипамСсылок);
ВозможныеПрава.Вставить("ПоПолнымИменам", ПоПолнымИменам);
ВозможныеПрава.Вставить("ТипыВладельцев", ТипыВладельцев);
ВозможныеПрава.Вставить("ОтдельныеТаблицы", ОтдельныеТаблицы);
ВозможныеПрава.Вставить("ИерархическиеТаблицы", ИерархическиеТаблицы);
ВозможныеПрава.Вставить("ПоТипам",
Новый ФиксированноеСоответствие(ПоТипам));
Возврат ОбщегоНазначения.ФиксированныеДанные(ВозможныеПрава);
ВозможныеПрава.Вставить("ПоТипамСсылок",
Новый ФиксированноеСоответствие(ПоТипамСсылок));
ВозможныеПрава.Вставить("ПоПолнымИменам",
Новый ФиксированноеСоответствие(ПоПолнымИменам));
ВозможныеПрава.Вставить("ТипыВладельцев",
Новый ФиксированныйМассив(ТипыВладельцев.ВыгрузитьЗначения()));
ВозможныеПрава.Вставить("ОтдельныеТаблицы",
Новый ФиксированноеСоответствие(ОтдельныеТаблицы));
ВозможныеПрава.Вставить("ИерархическиеТаблицы",
Новый ФиксированноеСоответствие(ИерархическиеТаблицы));
Возврат Новый ФиксированнаяСтруктура(ВозможныеПрава);
КонецФункции
// Параметры:
// ВозможныеПрава - см. УправлениеДоступомСлужебный.ВозможныеПраваДляНастройкиПравОбъектов
//
// Возвращаемое значение:
// Строка
//
Функция ХешСуммаВозможныхПрав(ВозможныеПрава) Экспорт
Возврат УправлениеДоступомСлужебный.ХешСуммаДанных(ВозможныеПрава);
КонецФункции
// См. УправлениеДоступомСлужебный.ДобавитьЭлементВерсии
Процедура ДобавитьЭлементВерсии(Контекст, ИмяПоля, Значение)
УправлениеДоступомСлужебный.ДобавитьЭлементВерсии(Контекст, ИмяПоля, Значение);
КонецПроцедуры
// Возвращаемое значение:
// Структура:
// ФиксированнаяСтруктура:
// * ВладелецПрав - Строка
// * Имя - Строка
// * Заголовок - Строка
@@ -1032,7 +1094,7 @@
// * ЧтениеВТаблицах - ФиксированныйМассив из Строка
// * ИзменениеВТаблицах - ФиксированныйМассив из Строка
//
Функция СвойстваВозможногоПрава(ВозможноеПраво) Экспорт
Функция СвойстваВозможногоПрава(ВозможноеПраво, ИндексПрава) Экспорт
СвойстваВозможногоПрава = Новый Структура(
"ВладелецПрав,
@@ -1045,19 +1107,33 @@
ЗаполнитьЗначенияСвойств(СвойстваВозможногоПрава, ВозможноеПраво);
СвойстваВозможногоПрава.ИндексПрава = ИндексПрава;
СвойстваВозможногоПрава.ТребуемыеПрава =
Новый ФиксированныйМассив(СвойстваВозможногоПрава.ТребуемыеПрава);
СортированныйФиксированныйМассив(СвойстваВозможногоПрава.ТребуемыеПрава);
СвойстваВозможногоПрава.ЧтениеВТаблицах =
Новый ФиксированныйМассив(СвойстваВозможногоПрава.ЧтениеВТаблицах);
СортированныйФиксированныйМассив(СвойстваВозможногоПрава.ЧтениеВТаблицах);
СвойстваВозможногоПрава.ИзменениеВТаблицах =
Новый ФиксированныйМассив(СвойстваВозможногоПрава.ИзменениеВТаблицах);
СортированныйФиксированныйМассив(СвойстваВозможногоПрава.ИзменениеВТаблицах);
Возврат СвойстваВозможногоПрава;
Возврат Новый ФиксированнаяСтруктура(СвойстваВозможногоПрава);
КонецФункции
// Для функции СвойстваВозможногоПрава.
Функция СортированныйФиксированныйМассив(ИсходныйМассив)
Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(ИсходныйМассив);
Список.СортироватьПоЗначению();
Возврат Новый ФиксированныйМассив(Список.ВыгрузитьЗначения());
КонецФункции
// Возвращаемое значение:
// Соответствие из КлючИЗначение:
// * Ключ - Тип
@@ -57,7 +57,7 @@
Иначе
СвойстваВладельца = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Запись.ВладелецФайла,
СвойстваВладельца = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Запись.ВладелецФайла,
"Наименование,ЗначениеПустойСсылки");
СписокСуществующихНастроек.ЗагрузитьЗначения(СуществующиеОбъектыСинхронизации(ТипЗнч(СвойстваВладельца.ЗначениеПустойСсылки)));
ОбъектСинхронизации = "ВсеФайлы";
@@ -155,20 +155,20 @@
ТипФайла = НРег(ТипМакета);
Если ТипФайла = "mxl" Тогда
НазваниеПрограммыДляОткрытияМакета = НСтр("ru = '""1С:Предприятие - Работа с файлами""'");
НазваниеПрограммыДляОткрытияМакета = НСтр("ru = '1С:Предприятие - Работа с файлами'");
АдресПрограммыДляОткрытияМакета = "http://v8.1c.ru/metod/fileworkshop.htm";
ИначеЕсли ТипФайла = "doc" Тогда
НазваниеПрограммыДляОткрытияМакета = НСтр("ru = '""Microsoft Word""'");
НазваниеПрограммыДляОткрытияМакета = НСтр("ru = 'Microsoft Word'");
АдресПрограммыДляОткрытияМакета = "http://office.microsoft.com/ru-ru/word";
ИначеЕсли ТипФайла = "odt" Тогда
НазваниеПрограммыДляОткрытияМакета = НСтр("ru = '""OpenOffice Writer""'");
НазваниеПрограммыДляОткрытияМакета = НСтр("ru = 'OpenOffice Writer'");
АдресПрограммыДляОткрытияМакета = "http://www.openoffice.org/product/writer.html";
ИначеЕсли ТипФайла = "docx" Тогда
НазваниеПрограммыДляОткрытияМакета = НСтр("ru = 'один из офисных пакетов или редактор документов формата Office Open XML'");
АдресПрограммыДляОткрытияМакета = "";
КонецЕсли;
ПерейтиНаСтаницуПрограммы = НСтр("ru = 'Перейти на страницу программы ""%1"" для установки'");
ПерейтиНаСтаницуПрограммы = НСтр("ru = 'Перейти на веб-страницу %1 для установки'");
ПерейтиНаСтаницуПрограммы = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ПерейтиНаСтаницуПрограммы, НазваниеПрограммыДляОткрытияМакета);
Элементы.СсылкаНаСтраницуПрограммыПередЗагрузкойВебКлиент.Заголовок = ПерейтиНаСтаницуПрограммы;
Элементы.СсылкаНаСтраницуПрограммыПередЗагрузкойНеВебКлиент.Заголовок = ПерейтиНаСтаницуПрограммы;
@@ -184,18 +184,18 @@
Элементы.НадписьПередЗагрузкойМакетаПрограммаВебКлиент.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Файл макета ""%1"" подготовлен для загрузки на компьютер и открытия с помощью другой программы.
|
|Если программа для редактирования еще не установлена, рекомендуется установить ""%2"".'"), ПредставлениеМакета,
|Если программа для редактирования еще не установлена, рекомендуется установить %2.'"), ПредставлениеМакета,
НазваниеПрограммыДляОткрытияМакета);
Иначе
Элементы.НадписьПередЗагрузкойМакетаПрограммаВебКлиент.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Файл макета ""%1"" подготовлен для загрузки на компьютер и внесения изменений с помощью другой программы.
|
|Если программа для редактирования еще не установлена, рекомендуется установить ""%2"".'"), ПредставлениеМакета,
|Если программа для редактирования еще не установлена, рекомендуется установить %2.'"), ПредставлениеМакета,
НазваниеПрограммыДляОткрытияМакета);
КонецЕсли;
Элементы.НадписьПередЗагрузкойМакетаПрограммаНеВебКлиент.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Файл макета ""%1"" подготовлен для внесения изменений с помощью другой программы. Если программа для редактирования еще не установлена, рекомендуется установить ""%2"".'"),
НСтр("ru = 'Файл макета ""%1"" подготовлен для внесения изменений с помощью другой программы. Если программа для редактирования еще не установлена, рекомендуется установить %2.'"),
ПредставлениеМакета, НазваниеПрограммыДляОткрытияМакета);
Элементы.НадписьЗавершениеИзмененияВебКлиент.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -203,14 +203,14 @@
|
|После завершения редактирования, закройте файл макета, подтвердив изменения. Затем нажмите на кнопку ""Завершить изменение"" и выберите этот файл в следующем диалоге.
|
|Если программа для редактирования еще не установлена, рекомендуется установить ""%1"".'"), НазваниеПрограммыДляОткрытияМакета);
|Если программа для редактирования еще не установлена, рекомендуется установить %1.'"), НазваниеПрограммыДляОткрытияМакета);
Элементы.НадписьЗавершениеИзмененияНеВебКлиент.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Дождитесь открытия макета в программе для редактирования.
|
|После завершения редактирования, закройте макет, подтвердив изменения. Затем нажмите на кнопку ""Завершить изменение"".
|
|Если программа для редактирования еще не установлена, рекомендуется установить ""%1"".'"), НазваниеПрограммыДляОткрытияМакета);
|Если программа для редактирования еще не установлена, рекомендуется установить %1.'"), НазваниеПрограммыДляОткрытияМакета);
ВидимостьСсылкиНаСтраницуПрограммы = (ОбщегоНазначения.ЭтоВебКлиент() Или ТипФайла <> "mxl") И ТипФайла <> "docx";
Элементы.СсылкаНаСтраницуПрограммыПередЗагрузкойВебКлиент.Видимость = ВидимостьСсылкиНаСтраницуПрограммы;
@@ -53,6 +53,7 @@
// Настройки - НастройкиКомпоновкиДанных
// ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных
// ДоступныеЗначения - Структура
// Контекст - Произвольный
//
// Возвращаемое значение:
// Структура:
@@ -62,7 +63,7 @@
// * ИмяТаблицы - Строка
// * ИсточникДанных - СправочникСсылка.ИдентификаторыОбъектовМетаданных
//
Функция ФиксированныеПараметры(Настройки, ПользовательскиеНастройки, ДоступныеЗначения) Экспорт
Функция ФиксированныеПараметры(Настройки, ПользовательскиеНастройки, ДоступныеЗначения, Контекст) Экспорт
ФиксированныеПараметры = Новый Структура("Период, ИсточникДанных, ТипОбъектаМетаданных, ИмяОбъектаМетаданных, ИмяТаблицы");
ДоступныеЗначения = Новый Структура("ТипОбъектаМетаданных, ИмяОбъектаМетаданных, ИмяТаблицы");
@@ -74,7 +75,7 @@
"ТипОбъектаМетаданных",
ФиксированныеПараметры,
Настройки, ПользовательскиеНастройки,
ДоступныеЗначения.ТипОбъектаМетаданных);
ДоступныеЗначения.ТипОбъектаМетаданных, Контекст);
ДоступныеЗначения.ИмяОбъектаМетаданных = ДоступныеОбъектыМетаданных(
ФиксированныеПараметры.ТипОбъектаМетаданных);
@@ -109,7 +110,7 @@
Возврат ФиксированныеПараметры;
КонецФункции
Процедура УстановитьФиксированныйПараметр(Идентификатор, Параметры, Настройки, ПользовательскиеНастройки, ДоступныеЗначения = Неопределено)
Процедура УстановитьФиксированныйПараметр(Идентификатор, Параметры, Настройки, ПользовательскиеНастройки, ДоступныеЗначения = Неопределено, Контекст = Неопределено)
ФиксированныйПараметр = Параметры[Идентификатор];
Если ДоступныеЗначения = Неопределено Тогда
@@ -155,11 +156,15 @@
И ЗначениеЗаполнено(Параметры.ИсточникДанных)
И Параметры.ИсточникДанных.ПолучитьОбъект() <> Неопределено Тогда
ОбъектМетаданных = МетаданныеИсточникаДанных(Параметры.ИсточникДанных);
ОбъектМетаданных = МетаданныеИсточникаДанных(Параметры.ИсточникДанных, Контекст);
Если ОбъектМетаданных <> Неопределено Тогда
ТипОбъектаМетаданных = ОбщегоНазначения.ИмяБазовогоТипаПоОбъектуМетаданных(ОбъектМетаданных);
Если ТипОбъектаМетаданных <> ФиксированныйПараметр Тогда
Параметры.ИсточникДанных = Неопределено;
КонецЕсли;
Иначе
Параметры.ИсточникДанных = Неопределено;
КонецЕсли;
КонецЕсли;
Параметры[Идентификатор] = ФиксированныйПараметр;
@@ -1309,16 +1314,30 @@
Возврат ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяОбъекта);
КонецФункции
Функция МетаданныеИсточникаДанных(ИсточникДанных)
Функция МетаданныеИсточникаДанных(ИсточникДанных, Контекст)
Попытка
ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(ИсточникДанных);
Исключение
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Отчет не может быть сформирован по причине: %1'"),
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Отчет не может быть сформирован по причине: %1 %2'"),
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),
НСтр("ru = 'Выберите другой справочник или документ.'"));
ЗаписьЖурналаРегистрации(НСтр("ru = 'Формирование варианта универсального отчета'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Предупреждение, Метаданные.Отчеты.УниверсальныйОтчет,, ТекстСообщения);
Если ТипЗнч(Контекст) = Тип("ФормаКлиентскогоПриложения") Тогда
ТекстРекомендации = НСтр("ru = 'Отчет не может быть сформирован. Выберите другой справочник или документ.'");
ОтчетыКлиентСервер.ОтобразитьСостояниеОтчета(
Контекст, ТекстРекомендации);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
Иначе
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
Возврат Неопределено;
КонецПопытки;
Возврат ОбъектМетаданных;
КонецФункции
// Возвращает тип объекта метаданных по соответствующему типу менеджера
@@ -194,7 +194,7 @@
ДоступныеЗначения = Неопределено;
ФиксированныеПараметры = Отчеты.УниверсальныйОтчет.ФиксированныеПараметры(
НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД, ДоступныеЗначения);
НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД, ДоступныеЗначения, Контекст);
Если НовыеНастройкиКД.ДополнительныеСвойства.Свойство("ЗагруженныеНастройкиXML") Тогда
ЗагруженныеНастройкиXML = НовыеНастройкиКД.ДополнительныеСвойства.ЗагруженныеНастройкиXML;
@@ -267,7 +267,7 @@
КонецЕсли;
ДоступныеЗначения = Неопределено;
ФиксированныеПараметры = Отчеты.УниверсальныйОтчет.ФиксированныеПараметры(
НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД, ДоступныеЗначения);
НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД, ДоступныеЗначения, Контекст);
Иначе
Отчеты.УниверсальныйОтчет.УстановитьФиксированныеПараметры(
ЭтотОбъект, ФиксированныеПараметры, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД);
@@ -279,7 +279,7 @@
Контекст, НовыеНастройкиКД, ФиксированныеПараметры, ДоступныеЗначения);
Если ТипЗнч(Контекст) = Тип("Структура") Тогда
ЗаменитьЗначенияПараметровНаПредставления(НовыеНастройкиКД, НовыеНастройкиКД.ДополнительныеСвойства.ДоступныеЗначения);
ЗаменитьЗначенияПараметров(НовыеНастройкиКД, НовыеНастройкиКД.ДополнительныеСвойства.ДоступныеЗначения);
КонецЕсли;
КонецПроцедуры
@@ -344,7 +344,8 @@
Отчеты.УниверсальныйОтчет.ВывестиКоличествоПодчиненныхЗаписей(Настройки, СхемаКомпоновкиДанных, СтандартнаяОбработка);
ЗаменитьЗначенияПараметровНаПредставления(Настройки, Настройки.ДополнительныеСвойства.ДоступныеЗначения);
ИсходныеЗначенияПараметров = Неопределено;
ЗаменитьЗначенияПараметров(Настройки, Настройки.ДополнительныеСвойства.ДоступныеЗначения, ИсходныеЗначенияПараметров);
Если СтандартнаяОбработка Тогда
Возврат;
@@ -353,6 +354,8 @@
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ЗаменитьЗначенияПараметров(ДанныеРасшифровки.Настройки, Настройки.ДополнительныеСвойства.ДоступныеЗначения, ИсходныеЗначенияПараметров);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки);
@@ -377,7 +380,12 @@
Возврат СтрЗаменить(ХешированиеДанных.ХешСумма, " ", "") + "_" + Формат(ДвоичныеДанные.Размер(), "ЧГ=");
КонецФункции
Процедура ЗаменитьЗначенияПараметровНаПредставления(Настройки, ДоступныеЗначения)
Процедура ЗаменитьЗначенияПараметров(Настройки, ДоступныеЗначения, ИсходныеЗначения = Неопределено)
ЗаменятьНаПредставления = ИсходныеЗначения = Неопределено;
Если ИсходныеЗначения = Неопределено Тогда
ИсходныеЗначения = Новый Соответствие;
КонецЕсли;
ИменаПараметров = Новый Массив;
ИменаПараметров.Добавить("ТипОбъектаМетаданных");
@@ -386,11 +394,22 @@
Для Каждого ИмяПараметра Из ИменаПараметров Цикл
Параметр = Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
Если Параметр <> Неопределено И ДоступныеЗначения.Свойство(ИмяПараметра) Тогда
Если Параметр = Неопределено Тогда
Продолжить;
КонецЕсли;
Если ЗаменятьНаПредставления Тогда
Если ДоступныеЗначения.Свойство(ИмяПараметра) Тогда
ДоступныеЗначенияПараметра = ДоступныеЗначения[ИмяПараметра];
ОписаниеЗначенияПараметра = ДоступныеЗначенияПараметра.НайтиПоЗначению(Параметр.Значение);
Если ОписаниеЗначенияПараметра <> Неопределено Тогда
Параметр.Значение = ОписаниеЗначенияПараметра.Представление;
ИсходныеЗначения.Вставить(ОписаниеЗначенияПараметра.Представление, ОписаниеЗначенияПараметра.Значение);
КонецЕсли;
КонецЕсли;
Иначе
ИсходноеЗначение = ИсходныеЗначения.Получить(Параметр.Значение);
Если ИсходноеЗначение <> Неопределено Тогда
Параметр.Значение = ИсходноеЗначение;
КонецЕсли;
КонецЕсли;
КонецЦикла;
@@ -3648,6 +3648,93 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.АдминистративнаяИерархия</name>
<right>
@@ -5485,93 +5572,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ПакетыДляОтправки</name>
<right>
@@ -2022,6 +2022,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.АдминистративнаяИерархия</name>
<right>
@@ -2799,33 +2826,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ДетализироватьОбновлениеИБВЖурналеРегистрации</name>
<right>
@@ -1616,6 +1616,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.АдминистративнаяИерархия</name>
<right>
@@ -2003,6 +2030,17 @@
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ОбщиеПоставляемыеМакетыПечати</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ОтложенноеОбновлениеВГлавномУзлеЗавершеноУспешно</name>
<right>
@@ -2274,33 +2312,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ДетализироватьОбновлениеИБВЖурналеРегистрации</name>
<right>
@@ -2345,6 +2356,17 @@
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ПоставляемыеМакетыПечати</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ИзменятьЗаданияЗаднимЧислом</name>
<right>
@@ -616,6 +616,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>WebService.Exchange_2_0_1_6.Operation.UploadData</name>
<right>
@@ -839,33 +866,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>WebService.Exchange_3_0_2_1.Operation.GetFilePart</name>
<right>
@@ -187,6 +187,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.АдминистративнаяИерархия</name>
<right>
@@ -302,31 +329,4 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -60,6 +60,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.УничтоженныеПерсональныеДанные</name>
<right>
@@ -146,31 +173,4 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -21,6 +21,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.КлассификаторБанков</name>
<right>
@@ -60,31 +87,4 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -128,6 +128,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ВариантыОтчетов.Command.Изменить</name>
<right>
@@ -179,31 +206,4 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -1048,6 +1048,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ДатыПоследнейЗагрузкиПочтовыхСообщений</name>
<right>
@@ -1303,33 +1330,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.КонтактыВзаимодействий</name>
<right>
@@ -74,6 +74,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ГруппыВнешнихПользователей</name>
<right>
@@ -113,31 +140,4 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -36,6 +36,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ДатыЗапретаИзменения</name>
<right>
@@ -131,33 +158,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляРегистра(Регистр, Поле1, Поле2, Поле3, Поле4, Поле5)</name>
<condition>// ДляРегистра(Регистр, Поле1, Поле2 = "", Поле3 = "", Поле4 = "", Поле5 = "")
@@ -18,6 +18,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Report.ДатыЗапретаИзменения</name>
<right>
@@ -135,33 +162,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляРегистра(Регистр, Поле1, Поле2, Поле3, Поле4, Поле5)</name>
<condition>// ДляРегистра(Регистр, Поле1, Поле2 = "", Поле3 = "", Поле4 = "", Поле5 = "")
@@ -95,20 +95,6 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ДополнительныеОтчетыИОбработки</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.НастройкаМоихОтчетовИОбработок</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -136,4 +122,18 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ДополнительныеОтчетыИОбработки</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.НастройкаМоихОтчетовИОбработок</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -127,6 +127,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ЗначенияСвойствОбъектов</name>
<right>
@@ -173,33 +200,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.РедактированиеДополнительныхСведений</name>
<right>
@@ -100,6 +100,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Task.ЗадачаИсполнителя.Command.МоиЗадачи</name>
<right>
@@ -204,33 +231,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ДанныеБизнесПроцессов.Command.МоиБизнесПроцессы</name>
<right>
@@ -70,13 +70,6 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.МоиЗаметкиПоПредмету</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -104,6 +97,13 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.МоиЗаметкиПоПредмету</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.Заметки.Command.ВсеЗаметки</name>
<right>
@@ -88,25 +88,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Constant.ИспользоватьНесколькоПроизводственныхКалендарей</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
<right>
<name>Edit</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -134,4 +115,23 @@
<value>true</value>
</right>
</object>
<object>
<name>Constant.ИспользоватьНесколькоПроизводственныхКалендарей</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
<right>
<name>Edit</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -158,20 +158,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ВариантыОтчетов.Command.Изменить</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ВариантыОтчетов.Command.РазместитьВРазделах</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -199,6 +185,20 @@
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ВариантыОтчетов.Command.Изменить</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ВариантыОтчетов.Command.РазместитьВРазделах</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -60,6 +60,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.МашиночитаемыеДоверенностиПрисоединенныеФайлы</name>
<right>
@@ -110,31 +137,4 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -136,32 +136,6 @@
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ДоступныеАнкеты</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>ChartOfCharacteristicTypes.ВопросыДляАнкетирования</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
<right>
<name>InputByString</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -189,4 +163,30 @@
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ДоступныеАнкеты</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>ChartOfCharacteristicTypes.ВопросыДляАнкетирования</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
<right>
<name>InputByString</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -87,6 +87,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.ПрисоединенныеФайлы</name>
<right>
@@ -221,33 +248,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -87,6 +87,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.ПрисоединенныеФайлы</name>
<right>
@@ -221,33 +248,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -132,17 +132,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Report.КонтрольРассылкиОтчетов</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -174,6 +163,17 @@
<value>true</value>
</right>
</object>
<object>
<name>Report.КонтрольРассылкиОтчетов</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -105,6 +105,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач</name>
<right>
@@ -162,31 +189,4 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -60,17 +60,6 @@
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.СертификатыПользователяDSS</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -98,6 +87,17 @@
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.СертификатыПользователяDSS</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -77,13 +77,6 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ОтправкаСообщения</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -111,6 +104,13 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ОтправкаСообщения</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -127,6 +127,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>ChartOfCharacteristicTypes.ВопросыДляАнкетирования</name>
<right>
@@ -166,31 +193,4 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -131,6 +131,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач</name>
<right>
@@ -178,33 +205,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -40,13 +40,6 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.ДополнительныеСведенияКоманднаяПанель</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -74,6 +67,13 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.ДополнительныеСведенияКоманднаяПанель</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.РедактированиеДополнительныхСведений</name>
<right>
Loaded 100 of 125 files, more files were not shown because too many files have changed in this diff. Show more