3_1_10_248
This commit is contained in:
1 parent
a515946322
commit
878354f176
210 files changed
+10526
-3264
No files matched your search
@@ -76,6 +76,16 @@
|
||||
Для Каждого Расширение Из РасширенияБазыДанных Цикл
|
||||
КонтрольнаяСумма = КонтрольнаяСуммаРасширения(Расширение);
|
||||
РасширениеПриЗапуске = РасширенияПриЗапуске.Получить(КонтрольнаяСумма);
|
||||
Если РасширениеПриЗапуске = Неопределено Тогда
|
||||
Ошибки = Расширение.ПроверитьВозможностьПрименения();
|
||||
Для Каждого Ошибка Из Ошибки Цикл
|
||||
Если Ошибка.Важность = ВажностьПроблемыПримененияРасширенияКонфигурации.Критичная Тогда
|
||||
РасширенияПриЗапуске.Вставить(КонтрольнаяСумма, Расширение);
|
||||
РасширениеПриЗапуске = Расширение;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
Если РасширениеПриЗапуске <> Неопределено Тогда
|
||||
ДобавленныеРасширения.Вставить(КонтрольнаяСумма, Истина);
|
||||
Расширения.Добавить(РасширениеПриЗапуске);
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
// *Область ПрограммныйИнтерфейс.
|
||||
// Область ПрограммныйИнтерфейс.
|
||||
//
|
||||
// Программный интерфейс объекта реализован через ДополнительныеСвойства:
|
||||
// Программный интерфейс объекта реализован через ДополнительныеСвойства.
|
||||
//
|
||||
// ОписаниеПользователяИБ - Структура, как и в модуле объекта справочника Пользователи.
|
||||
//
|
||||
// *КонецОбласти
|
||||
// КонецОбласти
|
||||
|
||||
#Область ОбработчикиСобытий
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
ГруппаПоСсылкеНового = Выборка.Ссылка;
|
||||
ИначеЕсли Выборка.Наименование = НаименованиеГруппы
|
||||
И ГруппаПоНаименованию = Неопределено Тогда
|
||||
ГруппаПоНаименованию = НаименованиеГруппы;
|
||||
ГруппаПоНаименованию = Выборка.Ссылка;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
|
||||
@@ -366,7 +366,7 @@
|
||||
Иначе
|
||||
// Выбор объектов метаданных
|
||||
ПараметрыФормы = ПодготовитьПараметрыФормыВыборОбъектовМетаданных();
|
||||
ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыФормы);
|
||||
СтандартныеПодсистемыКлиент.ВыбратьОбъектыМетаданных(ПараметрыФормы);
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -1173,10 +1173,10 @@
|
||||
ВыбранныеОбъектыМетаданных.Добавить(КлючИЗначение.Значение);
|
||||
КонецЦикла;
|
||||
|
||||
ПараметрыФормы = Новый Структура;
|
||||
ПараметрыФормы.Вставить("ФильтрПоОбъектамМетаданных", ФильтрПоОбъектамМетаданных);
|
||||
ПараметрыФормы.Вставить("ВыбранныеОбъектыМетаданных", ВыбранныеОбъектыМетаданных);
|
||||
ПараметрыФормы.Вставить("Заголовок", НСтр("ru = 'Назначение дополнительной обработки'"));
|
||||
ПараметрыФормы = СтандартныеПодсистемыКлиентСервер.ПараметрыВыбораОбъектовМетаданных();
|
||||
ПараметрыФормы.ФильтрПоОбъектамМетаданных = ФильтрПоОбъектамМетаданных;
|
||||
ПараметрыФормы.ВыбранныеОбъектыМетаданных = ВыбранныеОбъектыМетаданных;
|
||||
ПараметрыФормы.Заголовок = НСтр("ru = 'Назначение дополнительной обработки'");
|
||||
|
||||
Возврат ПараметрыФормы;
|
||||
КонецФункции
|
||||
|
||||
@@ -3637,6 +3637,16 @@
|
||||
<name>СертификатДоверителя</name>
|
||||
<valueType/>
|
||||
</parameters>
|
||||
<parameters>
|
||||
<name>НаДату</name>
|
||||
<valueType>
|
||||
<types>Date</types>
|
||||
<dateQualifiers>
|
||||
<dateFractions>Date</dateFractions>
|
||||
</dateQualifiers>
|
||||
</valueType>
|
||||
<keyParameter>true</keyParameter>
|
||||
</parameters>
|
||||
<commandInterface>
|
||||
<navigationPanel/>
|
||||
<commandBar/>
|
||||
|
||||
@@ -30,7 +30,15 @@
|
||||
Доверитель = ?(ЗначениеЗаполнено(Параметры.Доверитель), Параметры.Доверитель, Доверитель);
|
||||
Представитель = ?(ЗначениеЗаполнено(Параметры.Представитель), Параметры.Представитель, Представитель);
|
||||
Полномочия = ?(ЗначениеЗаполнено(Параметры.Полномочия), Параметры.Полномочия, Полномочия);
|
||||
Сертификат = ?(ТипЗнч(СертификатПредставителя) = Тип("СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования"), СертификатПредставителя, Неопределено);
|
||||
|
||||
Если ТипЗнч(СертификатПредставителя) = Тип("СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда
|
||||
Сертификат = СертификатПредставителя;
|
||||
ИначеЕсли ТипЗнч(СертификатПредставителя) = Тип("ДвоичныеДанные") Или ЭтоАдресВременногоХранилища(СертификатПредставителя) Тогда
|
||||
СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатПредставителя);
|
||||
Сертификат = СвойстваСертификата.Представление;
|
||||
Иначе
|
||||
Сертификат = Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
// СтандартныеПодсистемы.ПодключаемыеКоманды
|
||||
ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
|
||||
@@ -372,7 +380,13 @@
|
||||
|
||||
&НаКлиенте
|
||||
Процедура УстановитьОтбор()
|
||||
|
||||
Если ЗначениеЗаполнено(Параметры.НаДату) Тогда
|
||||
ТекущаяДатаСеанса = КонецДня(Параметры.НаДату);
|
||||
Иначе
|
||||
ТекущаяДатаСеанса = КонецДня(ОбщегоНазначенияКлиент.ДатаСеанса());
|
||||
КонецЕсли;
|
||||
|
||||
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, "Действует", Истина, ВидСравненияКомпоновкиДанных.Равно,,ТолькоДействующие);
|
||||
УстановитьОтборСоСтрокойПоиска(Доверитель, "Доверитель");
|
||||
УстановитьОтборСоСтрокойПоиска(Представитель, "Представитель");
|
||||
@@ -453,13 +467,14 @@
|
||||
КонецЕсли;
|
||||
|
||||
Элементы.Список.Обновить();
|
||||
Элементы.Список.ТекущаяСтрока = Результат.Доверенность;
|
||||
Элементы.Список.ВыделенныеСтроки.Очистить();
|
||||
|
||||
Для Каждого Ссылка Из Результат.ЦепочкаДоверенностей Цикл
|
||||
Элементы.Список.ВыделенныеСтроки.Добавить(Ссылка);
|
||||
КонецЦикла;
|
||||
|
||||
Элементы.Список.ТекущаяСтрока = Результат.Доверенность;
|
||||
|
||||
Если Результат.ЦепочкаДоверенностей.Количество() = 1 Тогда
|
||||
ПоказатьЗначение(Неопределено, Результат.Доверенность);
|
||||
Иначе
|
||||
@@ -592,14 +607,14 @@
|
||||
Элементы.Список.Обновить();
|
||||
Элементы.Список.ВыделенныеСтроки.Очистить();
|
||||
|
||||
Если ЗагруженныеДоверенности.Количество() > 0 Тогда
|
||||
Элементы.Список.ТекущаяСтрока = ЗагруженныеДоверенности[0];
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Ссылка Из ЗагруженныеДоверенности Цикл
|
||||
Элементы.Список.ВыделенныеСтроки.Добавить(Ссылка);
|
||||
КонецЦикла;
|
||||
|
||||
Если ЗагруженныеДоверенности.Количество() > 0 Тогда
|
||||
Элементы.Список.ТекущаяСтрока = ЗагруженныеДоверенности[0];
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(РезультатЗагрузки.ТекстОшибки) Тогда
|
||||
ВызватьИсключение РезультатЗагрузки.ТекстОшибки;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -1099,6 +1099,10 @@
|
||||
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Не заполнены полномочия.'"),,,,Отказ);
|
||||
КонецЕсли;
|
||||
|
||||
Если Объект.ДляНалоговыхОрганов И Не ЗначениеЗаполнено(Объект.КодНалоговогоОрганаПредставления) Тогда
|
||||
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Не указан код налогового органа представления.'"),,,"Объект.КодНалоговогоОрганаПредставления", Отказ);
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрДлина(Объект.ИныеСведения) > 5000 Тогда
|
||||
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Иные сведения не должны превышать 5000 символов.'"),,,"Объект.ИныеСведения", Отказ);
|
||||
КонецЕсли;
|
||||
|
||||
@@ -937,6 +937,8 @@
|
||||
|
||||
ФайлыДоверенностей = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(Доверенности, "ФайлДоверенности");
|
||||
|
||||
ОписанияФайловДоверенностей = Новый Соответствие;
|
||||
|
||||
Для Каждого Доверенность Из Доверенности Цикл
|
||||
ФайлыДоверенности = Новый Массив;
|
||||
ФайлДоверенности = ФайлыДоверенностей[Доверенность];
|
||||
@@ -972,10 +974,10 @@
|
||||
|
||||
ФайлыДоверенности.Добавить(ОписаниеФайла);
|
||||
КонецЦикла;
|
||||
ФайлыДоверенностей.Вставить(Доверенность, ФайлыДоверенности);
|
||||
ОписанияФайловДоверенностей.Вставить(Доверенность, ФайлыДоверенности);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ФайлыДоверенностей;
|
||||
Возврат ОписанияФайловДоверенностей;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -1470,17 +1472,26 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Создает новые либо перезаполняет существующие элементы справочника МашиночитаемыеДоверенности данными из файлов.
|
||||
// Распределяет файлы по группам с целью поиска файлов доверенностей.
|
||||
//
|
||||
// Параметры:
|
||||
// ЗагруженныеФайлы - Массив из Структура - файлы доверенностей и подписей, архивы zip:
|
||||
// * ИмяФайла - Строка - имя файла без пути к нему,
|
||||
// * Хранение - Строка - адрес двоичных данных файла во временном хранилище.
|
||||
//
|
||||
// Замещать - Булево - при замещении выполняется перезаполнение элемента, все имеющиеся присоединенные файлы при этом
|
||||
// помечаются на удаление.
|
||||
// Возвращаемое значение:
|
||||
// Структура - уже разобранные файлы доверенностей и подписей:
|
||||
// * ФайлыДоверенностей - Соответствие - файлы доверенностей
|
||||
// * ПодписиФайлов - Соответствие - файлы подписей доверенностей
|
||||
// * ФайлыПодписей - Соответствие - другие файлы подписей
|
||||
// * ФайлыZIP - Соответствие - архивы
|
||||
// * ДругиеФайлы - Соответствие - файлы, не относящиеся к доверенностям
|
||||
//
|
||||
Функция ЗагрузитьДоверенностиВИнформационнуюБазу(ЗагруженныеФайлы, Замещать = Ложь) Экспорт
|
||||
Функция ФайлыДоверенностейИПодписей(ФайлыДляОбработки, УникальныйИдентификатор = Неопределено)
|
||||
|
||||
ЗагруженныеФайлы = ОбщегоНазначения.СкопироватьРекурсивно(ФайлыДляОбработки);
|
||||
|
||||
Результат = Новый Структура("ФайлыДоверенностей, ФайлыПодписей, ДругиеФайлы, ФайлыZIP, ПодписиФайлов");
|
||||
|
||||
ФайлыДоверенностей = Новый Соответствие;
|
||||
ФайлыПодписей = Новый Соответствие;
|
||||
@@ -1496,7 +1507,7 @@
|
||||
|
||||
Для Каждого ФайлИзАрхива Из ФайлыИзАрхива Цикл
|
||||
Файл = Новый Файл(ФайлИзАрхива.Ключ);
|
||||
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ФайлИзАрхива.Значение);
|
||||
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ФайлИзАрхива.Значение, УникальныйИдентификатор);
|
||||
|
||||
ОписаниеФайла = Новый Структура;
|
||||
ОписаниеФайла.Вставить("ИмяФайла", Файл.Имя);
|
||||
@@ -1525,6 +1536,40 @@
|
||||
ПодписиФайлов = ПодписиФайлов(ЗагруженныеФайлы, ФайлыПодписей);
|
||||
СгруппироватьФайлыПоДоверенностям(ФайлыДоверенностей, ДругиеФайлы);
|
||||
|
||||
Результат.ФайлыДоверенностей = ФайлыДоверенностей;
|
||||
Результат.ФайлыПодписей = ФайлыПодписей;
|
||||
Результат.ФайлыZIP = ФайлыZIP;
|
||||
Результат.ДругиеФайлы = ДругиеФайлы;
|
||||
Результат.ПодписиФайлов = ПодписиФайлов;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает новые либо перезаполняет существующие элементы справочника МашиночитаемыеДоверенности данными из файлов.
|
||||
//
|
||||
// Параметры:
|
||||
// ЗагруженныеФайлы - Массив из Структура - файлы доверенностей и подписей, архивы zip:
|
||||
// * ИмяФайла - Строка - имя файла без пути к нему,
|
||||
// * Хранение - Строка - адрес двоичных данных файла во временном хранилище.
|
||||
// - Структура - уже разобранные файлы доверенностей и подписей:
|
||||
// * ФайлыДоверенностей - Соответствие
|
||||
// * ПодписиФайлов - Соответствие
|
||||
//
|
||||
// Замещать - Булево - при замещении выполняется перезаполнение элемента, все имеющиеся присоединенные файлы при этом
|
||||
// помечаются на удаление.
|
||||
//
|
||||
Функция ЗагрузитьДоверенностиВИнформационнуюБазу(ЗагруженныеФайлы, Замещать = Ложь) Экспорт
|
||||
|
||||
Если ТипЗнч(ЗагруженныеФайлы) = Тип("Структура") Тогда
|
||||
Результат = ЗагруженныеФайлы;
|
||||
Иначе
|
||||
Результат = ФайлыДоверенностейИПодписей(ЗагруженныеФайлы);
|
||||
КонецЕсли;
|
||||
|
||||
ФайлыДоверенностей = Результат.ФайлыДоверенностей;
|
||||
ПодписиФайлов = Результат.ПодписиФайлов;
|
||||
|
||||
Доверенности = Новый Массив;
|
||||
ТекстыОшибок = Новый Массив;
|
||||
|
||||
@@ -1690,6 +1735,145 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СвойстваДоверенностейИзФайлов(ЗагруженныеФайлы, УникальныйИдентификатор) Экспорт
|
||||
|
||||
ФайлыДоверенностейИПодписей = ФайлыДоверенностейИПодписей(ЗагруженныеФайлы, УникальныйИдентификатор);
|
||||
|
||||
Доверенности = Новый Массив;
|
||||
ТекстыОшибок = Новый Массив;
|
||||
ДругиеФайлы = Новый Соответствие;
|
||||
|
||||
КоличествоПропущенных = 0;
|
||||
КоличествоПрочитанных = 0;
|
||||
|
||||
Для Каждого Элемент Из ФайлыДоверенностейИПодписей.ФайлыДоверенностей Цикл
|
||||
|
||||
ЗагруженныйФайл = Элемент.Ключ;
|
||||
ИмяФайла = ЗагруженныйФайл.ИмяФайла;
|
||||
АдресФайла = ЗагруженныйФайл.Хранение;
|
||||
|
||||
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайла);
|
||||
ДоверенностьXML = ПолучитьСтрокуИзДвоичныхДанных(ДвоичныеДанные);
|
||||
|
||||
Попытка
|
||||
ОписаниеДоверенности = ДоверенностьXDTO(ДоверенностьXML);
|
||||
Исключение
|
||||
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось прочитать файл %1 по причине:
|
||||
|%2'"),
|
||||
ИмяФайла,
|
||||
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||
ТекстыОшибок.Добавить(ТекстОшибки);
|
||||
Продолжить;
|
||||
КонецПопытки;
|
||||
|
||||
Если ОписаниеДоверенности.Документ.Передов = Неопределено Тогда
|
||||
ЕдиныйРегистрационныйНомер = ОписаниеДоверенности.Документ.Довер.СвДов.НомДовер;
|
||||
Иначе
|
||||
ЕдиныйРегистрационныйНомер = ОписаниеДоверенности.Документ.Передов.СвПереДовер.НомДовер;
|
||||
КонецЕсли;
|
||||
|
||||
//@skip-check query-in-loop - штучные запросы в количестве загружаемых доверенностей
|
||||
Доверенность = НайтиДоверенность(ЕдиныйРегистрационныйНомер);
|
||||
ИННПредставителей = Новый Массив;
|
||||
|
||||
Если Доверенность = Неопределено Тогда
|
||||
|
||||
Объект = СоздатьЭлемент();
|
||||
Если ОписаниеДоверенности.Документ.Передов = Неопределено Тогда
|
||||
ЗаполнитьДоверенность(Объект, ОписаниеДоверенности);
|
||||
Иначе
|
||||
//@skip-check query-in-loop - штучные запросы в количестве загружаемых доверенностей
|
||||
ЗаполнитьПередовериеИзОбъектаXDTO(Объект, ОписаниеДоверенности);
|
||||
КонецЕсли;
|
||||
|
||||
Доверенность = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = '%1 - %2 (будет загружена)'"),
|
||||
АвтоНаименование(Объект), ЕдиныйРегистрационныйНомер);
|
||||
|
||||
МассивПредставителей = Новый Массив;
|
||||
Представители = Объект.Представители.Выгрузить();
|
||||
|
||||
Найдено = Представители.НайтиСтроки(Новый Структура("ИдентификаторРодителя",
|
||||
Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000")));
|
||||
|
||||
Для Каждого СтрокаОрганизация Из Найдено Цикл
|
||||
|
||||
РеквизитыОрганизации = СтрокаОрганизация.ПредставительРеквизиты.Получить();
|
||||
|
||||
Если РеквизитыОрганизации.ЭтоФизическоеЛицо Тогда
|
||||
Если ЗначениеЗаполнено(РеквизитыОрганизации.ИННФЛ) Тогда
|
||||
ИННПредставителей.Добавить(РеквизитыОрганизации.ИННФЛ);
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
|
||||
Если ЗначениеЗаполнено(РеквизитыОрганизации.ИНН) Тогда
|
||||
ИННПредставителей.Добавить(РеквизитыОрганизации.ИНН);
|
||||
КонецЕсли;
|
||||
|
||||
НайденоФизическиеЛица = Представители.НайтиСтроки(Новый Структура("ИдентификаторРодителя",
|
||||
СтрокаОрганизация.Идентификатор));
|
||||
|
||||
Для Каждого СтрокаФизическоеЛицо Из НайденоФизическиеЛица Цикл
|
||||
Если ЗначениеЗаполнено(СтрокаФизическоеЛицо.ИННФЛ) Тогда
|
||||
ИННПредставителей.Добавить(СтрокаФизическоеЛицо.ИННФЛ);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваДоверенности = Новый Структура;
|
||||
СвойстваДоверенности.Вставить("ИмяФайла", ИмяФайла);
|
||||
СвойстваДоверенности.Вставить("АдресФайла", АдресФайла);
|
||||
СвойстваДоверенности.Вставить("МашиночитаемаяДоверенность", Доверенность);
|
||||
СвойстваДоверенности.Вставить("НомерДоверенности", ЕдиныйРегистрационныйНомер);
|
||||
СвойстваДоверенности.Вставить("ПоляОтбора", СтрСоединить(ИННПредставителей, ";"));
|
||||
|
||||
ФайлыДоверенности = Новый Массив;
|
||||
ФайлыДоверенности.Добавить(Элемент.Ключ);
|
||||
|
||||
ДругиеФайлы.Вставить(ИмяФайла, Истина);
|
||||
Для Каждого ДополнительныйФайл Из Элемент.Значение Цикл
|
||||
ДругиеФайлы.Вставить(ДополнительныйФайл.ИмяФайла, Истина);
|
||||
ФайлыДоверенности.Добавить(ДополнительныйФайл);
|
||||
КонецЦикла;
|
||||
|
||||
ПодписиФайлов = ФайлыДоверенностейИПодписей.ПодписиФайлов.Получить(Элемент.Ключ);
|
||||
Если ПодписиФайлов <> Неопределено Тогда
|
||||
Для Каждого Подпись Из ПодписиФайлов Цикл
|
||||
ДругиеФайлы.Вставить(Подпись.ИмяФайла, Истина);
|
||||
ФайлыДоверенности.Добавить(Подпись);
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваДоверенности.Вставить("ФайлыДоверенности", ПоместитьВоВременноеХранилище(ФайлыДоверенности, УникальныйИдентификатор));
|
||||
Доверенности.Добавить(СвойстваДоверенности);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого КлючИЗначение Из ФайлыДоверенностейИПодписей.ФайлыZIP Цикл
|
||||
ДругиеФайлы.Вставить(КлючИЗначение.Ключ.ИмяФайла, Истина);
|
||||
|
||||
ПодписиФайлов = ФайлыДоверенностейИПодписей.ПодписиФайлов.Получить(КлючИЗначение.Ключ);
|
||||
Если ПодписиФайлов <> Неопределено Тогда
|
||||
Для Каждого Подпись Из ПодписиФайлов Цикл
|
||||
ДругиеФайлы.Вставить(Подпись.ИмяФайла, Истина);
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("Доверенности", Доверенности);
|
||||
Результат.Вставить("ТекстыОшибок", ТекстыОшибок);
|
||||
Результат.Вставить("ДругиеФайлы", ДругиеФайлы);
|
||||
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
|
||||
Процедура СгруппироватьФайлыПоДоверенностям(ФайлыДоверенностей, ДругиеФайлы)
|
||||
|
||||
Для Каждого Элемент Из ДругиеФайлы Цикл
|
||||
@@ -1781,6 +1965,9 @@
|
||||
ПрисоединенныйФайл = ДобавитьПрисоединенныйФайл(Доверенность, ИмяФайла, АдресФайла);
|
||||
|
||||
ПодписиФайла = ПодписиФайлов[ЗагруженныйФайл];
|
||||
Если ПодписиФайла = Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
ДобавитьПодписи(ПрисоединенныйФайл, ПодписиФайла, Доверенность);
|
||||
КонецЦикла;
|
||||
|
||||
|
||||
@@ -745,11 +745,15 @@
|
||||
ДанныеНаименования = СтрРазделить(ВыбранноеЗначение, " ", Ложь);
|
||||
Элементы.Наименование.ОбновитьТекстРедактирования();
|
||||
Если ДанныеНаименования.Количество() < 3 Тогда
|
||||
Элементы.Наименование.ВыделенныйТекст = ВыбранноеЗначение + " ";
|
||||
НовоеЗначение = ВыбранноеЗначение + " ";
|
||||
Иначе
|
||||
Элементы.Наименование.ВыделенныйТекст = ВыбранноеЗначение;
|
||||
НовоеЗначение = ВыбранноеЗначение;
|
||||
ПропуститьНаименованиеАвтоПодбор = Истина;
|
||||
КонецЕсли;
|
||||
Элементы.Наименование.ВыделенныйТекст = НовоеЗначение;
|
||||
Если Объект.Наименование <> НовоеЗначение Тогда
|
||||
Объект.Наименование = ВыбранноеЗначение;
|
||||
КонецЕсли;
|
||||
|
||||
ПропуститьНаименованиеПриИзменении = Ложь;
|
||||
|
||||
|
||||
@@ -18,9 +18,9 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
// *Область ПрограммныйИнтерфейс.
|
||||
// Область ПрограммныйИнтерфейс.
|
||||
//
|
||||
// Программный интерфейс объекта реализован через ДополнительныеСвойства:
|
||||
// Программный интерфейс объекта реализован через ДополнительныеСвойства.
|
||||
//
|
||||
// ОписаниеПользователяИБ - Структура со свойствами:
|
||||
// Действие - Строка - "Записать" или "Удалить".
|
||||
@@ -79,7 +79,7 @@
|
||||
// Это нужно, чтобы сделать связанные действия при создании администратора, например,
|
||||
// автоматически добавить пользователя в группу доступа Администраторы.
|
||||
//
|
||||
// *КонецОбласти
|
||||
// КонецОбласти
|
||||
|
||||
#Область ОбработчикиСобытий
|
||||
|
||||
|
||||
@@ -2305,10 +2305,7 @@
|
||||
// Параметры:
|
||||
// Результат - Структура:
|
||||
// * Получатели - ТаблицаЗначений:
|
||||
// * Получатель - СправочникСсылка.ГруппыПользователей,
|
||||
// - СправочникСсылка._ДемоКонтрагенты,
|
||||
// - СправочникСсылка._ДемоПартнеры,
|
||||
// - СправочникСсылка.Пользователи
|
||||
// * Получатель - ОпределяемыйТип.ПолучательРассылки
|
||||
// * Исключен - Булево
|
||||
// * Адрес - Строка
|
||||
// * ИндексКартинки - Число
|
||||
@@ -2882,9 +2879,11 @@
|
||||
ТекстВопроса = НСтр("ru = 'Для того чтобы вставлять отчеты в текст письма, нужно отключить пароли.'");
|
||||
ПараметрыВопроса.КнопкаПоУмолчанию = "ОтключитьПароли";
|
||||
КонецЕсли;
|
||||
Если ДоступноШифрованиеВложений Или Объект.Архивировать Тогда
|
||||
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(
|
||||
Новый ОписаниеОповещения("ПослеОтветаНаВопросОтчетыВТекстеПисьмаШифрование", ЭтотОбъект), ТекстВопроса,
|
||||
КнопкиВопроса, ПараметрыВопроса);
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли Объект.Личная Тогда
|
||||
|
||||
|
||||
+4
@@ -748,6 +748,7 @@
|
||||
Если ЗначениеЗаполнено(РезультатПроверкиУдостоверяющегоЦентра)
|
||||
И Не РезультатПроверкиУдостоверяющегоЦентра.Действует Тогда
|
||||
|
||||
Если РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.РазрешитьПодписание Тогда
|
||||
ПодписаниеРазрешено = ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекЗагрузить(
|
||||
Сертификат, "РазрешитьПодписание", Неопределено);
|
||||
|
||||
@@ -768,6 +769,9 @@
|
||||
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Оповещение, ПредупреждениеОбОшибке.ТекстОшибки, Кнопки, ПараметрыВопроса);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
ПодписаниеРазрешено = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
ПодписатьДанныеПослеОтветаНаВопросОбУЦ(ПодписаниеРазрешено, Контекст);
|
||||
Возврат;
|
||||
|
||||
+3
-1
@@ -673,7 +673,9 @@
|
||||
КонецЕсли;
|
||||
Элементы.Предупреждение.Заголовок = Новый ФорматированнаяСтрока(МассивСтрок);
|
||||
|
||||
Если ЭлектроннаяПодпись.ДобавлениеИзменениеЭлектронныхПодписей() Тогда
|
||||
Если ДанныеПредупреждения.РазрешитьПодписание
|
||||
И ЭлектроннаяПодпись.ДобавлениеИзменениеЭлектронныхПодписей() Тогда
|
||||
|
||||
НастройкаРазрешитьПодписание = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
|
||||
Объект.Ссылка, "РазрешитьПодписание", Неопределено);
|
||||
Элементы.ПодписаниеРазрешено.Видимость = Истина;
|
||||
|
||||
@@ -4249,6 +4249,20 @@
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>ИмяФайлаПодписи</name>
|
||||
<id>38</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>СертификатыШифрования</name>
|
||||
|
||||
@@ -720,7 +720,17 @@
|
||||
КонецЕсли;
|
||||
|
||||
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
|
||||
МодульЭлектроннаяПодписьКлиент.СохранитьПодпись(ТекущиеДанные.АдресПодписи);
|
||||
|
||||
ИмяФайлаПодписи = ТекущиеДанные.ИмяФайлаПодписи;
|
||||
Если Не ЗначениеЗаполнено(ИмяФайлаПодписи) Тогда
|
||||
|
||||
РасширениеДляФайловПодписи = МодульЭлектроннаяПодписьКлиент.ПерсональныеНастройки().РасширениеДляФайловПодписи;
|
||||
МодульЭлектроннаяПодписьСлужебныйКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьСлужебныйКлиентСервер");
|
||||
ИмяФайлаПодписи = МодульЭлектроннаяПодписьСлужебныйКлиентСервер.ИмяФайлаПодписи(Объект.Наименование,
|
||||
ТекущиеДанные.КомуВыданСертификат, РасширениеДляФайловПодписи);
|
||||
КонецЕсли;
|
||||
|
||||
МодульЭлектроннаяПодписьКлиент.СохранитьПодпись(ТекущиеДанные.АдресПодписи, ИмяФайлаПодписи);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -1135,6 +1145,9 @@
|
||||
|
||||
Если Форма.ЭлектронныеПодписи.Количество() = 0 Тогда
|
||||
СделатьКомандуНедоступной(ИменаДоступныхКоманд, "ОткрытьПодпись");
|
||||
Форма.Элементы.ФормаСохранитьВместеСПодписью.Видимость = Ложь;
|
||||
Иначе
|
||||
Форма.Элементы.ФормаСохранитьВместеСПодписью.Видимость = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого ЭлементФормы Из Элементы Цикл
|
||||
|
||||
@@ -116,6 +116,24 @@
|
||||
<defaultPresentation>AsDescription</defaultPresentation>
|
||||
<editType>InDialog</editType>
|
||||
<choiceMode>BothWays</choiceMode>
|
||||
<attributes uuid="ec37d236-db36-44ef-afc2-267af1f40c1f">
|
||||
<name>АдресЛичногоКабинета</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Адрес личного кабинета</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>250</length>
|
||||
</stringQualifiers>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillValue xsi:type="core:StringValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="913830c8-da01-4b7e-9d83-d406c2fefd49">
|
||||
<name>АдресСервера</name>
|
||||
<synonym>
|
||||
@@ -135,6 +153,44 @@
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="293cda8c-1cc8-42c0-a68f-d22163aed4f1">
|
||||
<name>ВерсияАПИ</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Версия</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>10</length>
|
||||
</stringQualifiers>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillChecking>ShowError</fillChecking>
|
||||
<fillValue xsi:type="core:StringValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="d835f08d-79c6-4e79-a7c1-f00dc05778b9">
|
||||
<name>ВнутреннийИдентификатор</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Внутренний идентификатор</value>
|
||||
</synonym>
|
||||
<comment>Данное поле заполняется программно, элементы с заполненным полем блокируются от изменения.</comment>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>40</length>
|
||||
</stringQualifiers>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillValue xsi:type="core:StringValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="653dbf7d-a213-42c7-98da-9e639f41bb02">
|
||||
<name>ЗащищенноеСоединениеГОСТ</name>
|
||||
<synonym>
|
||||
@@ -150,41 +206,21 @@
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="ca8c4c19-9f92-45a7-b5bd-1ae06e3c9171">
|
||||
<name>ТаймАут</name>
|
||||
<attributes uuid="8a0f16a1-63c4-4ea4-a2f1-7b08e75efbd5">
|
||||
<name>ИдентификаторСЭП</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Тайм-аут (сек.)</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>Number</types>
|
||||
<numberQualifiers>
|
||||
<precision>4</precision>
|
||||
<nonNegative>true</nonNegative>
|
||||
</numberQualifiers>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillValue xsi:type="core:NumberValue">
|
||||
<value>0</value>
|
||||
</fillValue>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="9f1c8979-2b3d-4a96-af6c-4577541696a3">
|
||||
<name>ШаблонПодтверждения</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Шаблон подтверждения</value>
|
||||
<value>Идентификатор СЭП</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>30</length>
|
||||
<length>100</length>
|
||||
</stringQualifiers>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillChecking>ShowError</fillChecking>
|
||||
<fillValue xsi:type="core:StringValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
@@ -208,21 +244,35 @@
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="8a0f16a1-63c4-4ea4-a2f1-7b08e75efbd5">
|
||||
<name>ИдентификаторСЭП</name>
|
||||
<attributes uuid="ee0275e4-a497-4623-9d2f-6308ea2e70ca">
|
||||
<name>Используется</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Идентификатор СЭП</value>
|
||||
<value>Используется</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>Boolean</types>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillValue xsi:type="core:BooleanValue">
|
||||
<value>true</value>
|
||||
</fillValue>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="5e48841c-0a65-457f-8952-fa97aae3207d">
|
||||
<name>Комментарий</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Комментарий</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>100</length>
|
||||
</stringQualifiers>
|
||||
<stringQualifiers/>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillChecking>ShowError</fillChecking>
|
||||
<fillValue xsi:type="core:StringValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
@@ -264,6 +314,24 @@
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="f0cebe1f-8b1a-482c-9224-63df4fd36524">
|
||||
<name>СервисныйКлиент</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Сервисный клиент</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>100</length>
|
||||
</stringQualifiers>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillValue xsi:type="core:StringValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="00ce0cd2-9840-49a0-b9df-dc64becd3e65">
|
||||
<name>СервисОбработкиДокументов</name>
|
||||
<synonym>
|
||||
@@ -319,87 +387,37 @@
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="293cda8c-1cc8-42c0-a68f-d22163aed4f1">
|
||||
<name>ВерсияАПИ</name>
|
||||
<attributes uuid="ca8c4c19-9f92-45a7-b5bd-1ae06e3c9171">
|
||||
<name>ТаймАут</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Версия</value>
|
||||
<value>Тайм-аут (сек.)</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>10</length>
|
||||
</stringQualifiers>
|
||||
<types>Number</types>
|
||||
<numberQualifiers>
|
||||
<precision>4</precision>
|
||||
<nonNegative>true</nonNegative>
|
||||
</numberQualifiers>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillChecking>ShowError</fillChecking>
|
||||
<fillValue xsi:type="core:StringValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="5e48841c-0a65-457f-8952-fa97aae3207d">
|
||||
<name>Комментарий</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Комментарий</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillValue xsi:type="core:StringValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="ee0275e4-a497-4623-9d2f-6308ea2e70ca">
|
||||
<name>Используется</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Используется</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>Boolean</types>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillValue xsi:type="core:BooleanValue">
|
||||
<value>true</value>
|
||||
<fillValue xsi:type="core:NumberValue">
|
||||
<value>0</value>
|
||||
</fillValue>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="ec37d236-db36-44ef-afc2-267af1f40c1f">
|
||||
<name>АдресЛичногоКабинета</name>
|
||||
<attributes uuid="9f1c8979-2b3d-4a96-af6c-4577541696a3">
|
||||
<name>ШаблонПодтверждения</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Адрес личного кабинета</value>
|
||||
<value>Шаблон подтверждения</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>250</length>
|
||||
</stringQualifiers>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fillValue xsi:type="core:StringValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</attributes>
|
||||
<attributes uuid="d835f08d-79c6-4e79-a7c1-f00dc05778b9">
|
||||
<name>ВнутреннийИдентификатор</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Внутренний идентификатор</value>
|
||||
</synonym>
|
||||
<comment>Данное поле заполняется программно, элементы с заполненным полем блокируются от изменения.</comment>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>40</length>
|
||||
<length>30</length>
|
||||
</stringQualifiers>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
|
||||
@@ -6,34 +6,6 @@
|
||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// ИСПОЛЬЗОВАНИЕ ФОРМЫ //
|
||||
//
|
||||
// Форма предназначена для выбора объектов метаданных конфигурации и передачи
|
||||
// выбранных их списка в вызывающую среду.
|
||||
//
|
||||
// Параметры вызова:
|
||||
// КоллекцииВыбираемыхОбъектовМетаданных - СписокЗначений - фильтр по типам объектов метаданных,
|
||||
// которые могут быть выбраны. Например:
|
||||
// ФильтрПоСсылочнымМетаданным = Новый СписокЗначений;
|
||||
// ФильтрПоСсылочнымМетаданным.Добавить("Справочники");
|
||||
// ФильтрПоСсылочнымМетаданным.Добавить("Документы");
|
||||
// Позволяет выбирать только объекты метаданных справочники и документы.
|
||||
// ВыбранныеОбъектыМетаданных - СписокЗначений - уже выбранные объекты метаданных.
|
||||
// В дереве метаданных такие объекты будут отмечены флажком.
|
||||
// Может быть полезным для установки объектов метаданных выбора по умолчанию
|
||||
// или переустановки уже установленного списка.
|
||||
// РодительскиеПодсистемы - СписокЗначений - подсистемы, только подчиненные подсистемы которых
|
||||
// будут отображаться в форме.
|
||||
// ТолькоПодсистемыСКИ - Булево - признак того, что в списке выбора будут только те подсистемы,
|
||||
// которые включены в командный интерфейс.
|
||||
// ВыборЕдинственного - Булево - признак того, что выбирается единственный объект метаданных.
|
||||
// При этом пометка нескольких будет невозможна, кроме того двойной клик по строке
|
||||
// с объектом метаданных осуществит выбор.
|
||||
// НачальноеЗначениеВыбора - Строка - полное имя метаданных, на котором будет спозиционирован
|
||||
// список при открытии формы.
|
||||
//
|
||||
|
||||
#Область ОписаниеПеременных
|
||||
|
||||
&НаСервере
|
||||
|
||||
@@ -202,6 +202,60 @@
|
||||
<textSize>Normal</textSize>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>ПодписиМашиночитаемаяДоверенность</name>
|
||||
<id>54</id>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Машиночитаемая доверенность</value>
|
||||
</title>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<dataPath xsi:type="form:DataPath">
|
||||
<segments>Подписи.МашиночитаемаяДоверенность</segments>
|
||||
</dataPath>
|
||||
<extendedTooltip>
|
||||
<name>ПодписиМашиночитаемаяДоверенностьРасширеннаяПодсказка</name>
|
||||
<id>56</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>ПодписиМашиночитаемаяДоверенностьКонтекстноеМеню</name>
|
||||
<id>55</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>AutoComplete</event>
|
||||
<name>ПодписиМашиночитаемаяДоверенностьАвтоПодбор</name>
|
||||
</handlers>
|
||||
<handlers>
|
||||
<event>StartChoice</event>
|
||||
<name>ПодписиМашиночитаемаяДоверенностьНачалоВыбора</name>
|
||||
</handlers>
|
||||
<width>40</width>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<height>2</height>
|
||||
<wrap>true</wrap>
|
||||
<choiceButton>true</choiceButton>
|
||||
<choiceButtonRepresentation>ShowInInputField</choiceButtonRepresentation>
|
||||
<quickChoice>false</quickChoice>
|
||||
<typeDomainEnabled>true</typeDomainEnabled>
|
||||
<textSize>Normal</textSize>
|
||||
</extInfo>
|
||||
</items>
|
||||
<autoCommandBar>
|
||||
<name>ПодписиКоманднаяПанель</name>
|
||||
<id>3</id>
|
||||
@@ -210,7 +264,7 @@
|
||||
<id>17</id>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Добавить ...</value>
|
||||
<value>Выбрать файлы с компьютера...</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
@@ -363,7 +417,7 @@
|
||||
<id>8</id>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>ОК</value>
|
||||
<value>Добавить</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
@@ -501,6 +555,55 @@
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>МашиночитаемаяДоверенность</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Машиночитаемая доверенность</value>
|
||||
</title>
|
||||
<id>9</id>
|
||||
<valueType>
|
||||
<types>CatalogRef.МашиночитаемыеДоверенности</types>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>500</length>
|
||||
</stringQualifiers>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>ПоляОтбора</name>
|
||||
<id>23</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>НомерДоверенности</name>
|
||||
<id>27</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>МенеджерКриптографииНаСервереОписаниеОшибки</name>
|
||||
@@ -531,6 +634,106 @@
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>Доверенности</name>
|
||||
<id>6</id>
|
||||
<valueType>
|
||||
<types>ValueTable</types>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
<columns>
|
||||
<name>МашиночитаемаяДоверенность</name>
|
||||
<id>7</id>
|
||||
<valueType>
|
||||
<types>CatalogRef.МашиночитаемыеДоверенности</types>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>500</length>
|
||||
</stringQualifiers>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>ИмяФайла</name>
|
||||
<id>11</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>НомерДоверенности</name>
|
||||
<id>12</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>ФайлыДоверенности</name>
|
||||
<id>25</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>ПоляОтбора</name>
|
||||
<id>26</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>ОшибкиПриЗагрузкеДоверенностей</name>
|
||||
<id>8</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</attributes>
|
||||
<formCommands>
|
||||
<name>ОК</name>
|
||||
<title>
|
||||
@@ -553,6 +756,24 @@
|
||||
<currentRowUse>DontUse</currentRowUse>
|
||||
<selectedRowsUse>Auto</selectedRowsUse>
|
||||
</formCommands>
|
||||
<formCommands>
|
||||
<name>ПодобратьДоверенности</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Подобрать доверенности</value>
|
||||
</title>
|
||||
<id>2</id>
|
||||
<use>
|
||||
<common>true</common>
|
||||
</use>
|
||||
<action xsi:type="form:FormCommandHandlerContainer">
|
||||
<handler>
|
||||
<name>ПодобратьДоверенности</name>
|
||||
</handler>
|
||||
</action>
|
||||
<currentRowUse>Auto</currentRowUse>
|
||||
<selectedRowsUse>Auto</selectedRowsUse>
|
||||
</formCommands>
|
||||
<parameters>
|
||||
<name>ПоказатьКомментарий</name>
|
||||
<valueType>
|
||||
|
||||
@@ -26,6 +26,14 @@
|
||||
|
||||
УстановитьУсловноеОформление();
|
||||
|
||||
АвтоЗаголовок = Ложь;
|
||||
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
|
||||
Заголовок = НСтр("ru = 'Добавление электронных подписей из файлов на устройстве'");
|
||||
Элементы.ПодписиДобавить.Заголовок = НСтр("ru = 'Выбрать файлы с устройства...'");
|
||||
Иначе
|
||||
Заголовок = НСтр("ru = 'Добавление электронных подписей из файлов на компьютере'");
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Параметры.ЗаголовокДанных) Тогда
|
||||
Элементы.ПредставлениеДанных.Заголовок = Параметры.ЗаголовокДанных;
|
||||
Иначе
|
||||
@@ -57,6 +65,8 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ЭлектроннаяПодписьЛокализация.ПриСозданииНаСервере(ЭтотОбъект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
@@ -95,7 +105,7 @@
|
||||
Отказ = Истина;
|
||||
|
||||
Если ОтображениеДанныхОбновлено = Истина Тогда
|
||||
ВыбратьФайл(Истина);
|
||||
ВыбратьФайлы(Истина);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -104,7 +114,43 @@
|
||||
Процедура ПодписиПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
|
||||
|
||||
СтандартнаяОбработка = Ложь;
|
||||
ВыбратьФайл();
|
||||
ВыбратьФайлы();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПодписиМашиночитаемаяДоверенностьНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
|
||||
|
||||
СтандартнаяОбработка = Ложь;
|
||||
ПодписиМашиночитаемаяДоверенностьНачалоВыбораПродолжение(Элемент, ДанныеВыбора);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Асинх Процедура ПодписиМашиночитаемаяДоверенностьНачалоВыбораПродолжение(Элемент, ДанныеВыбора)
|
||||
|
||||
ТекущиеДанные = Элементы.Подписи.ТекущиеДанные;
|
||||
|
||||
СписокВыбора = Новый СписокЗначений;
|
||||
ЭлектроннаяПодписьКлиентЛокализация.ПриПолученииСпискаВыбораМашиночитаемыхДоверенностей(
|
||||
ЭтотОбъект, ТекущиеДанные, СписокВыбора);
|
||||
|
||||
Если СписокВыбора.Количество() > 0 Тогда
|
||||
СписокВыбора.Добавить("ВыбратьИзСправочника", НСтр("ru = 'Выбрать из справочника...'"));
|
||||
Результат = Ждать ВыбратьИзСпискаАсинх(СписокВыбора, Элементы.ПодписиМашиночитаемаяДоверенность);
|
||||
Если Результат <> Неопределено Тогда
|
||||
Если Результат.Значение = "ВыбратьИзСправочника" Тогда
|
||||
МашиночитаемаяДоверенностьВыбратьИзСправочника();
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ТекущиеДанные.МашиночитаемаяДоверенность = Результат.Представление;
|
||||
ТекущиеДанные.НомерДоверенности = Результат.Значение;
|
||||
ПодключитьОбработчикОжидания("ПодписиМашиночитаемаяДоверенностьПриИзменении", 0.1, Истина);
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
МашиночитаемаяДоверенностьВыбратьИзСправочника();
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -112,6 +158,17 @@
|
||||
|
||||
#Область ОбработчикиКомандФормы
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПодобратьДоверенности(Команда)
|
||||
|
||||
Если ОписаниеДанных.Свойство("Объект") И ТипЗнч(ОписаниеДанных.Объект) <> Тип("ОписаниеОповещения") Тогда
|
||||
ЗаполнитьМашиночитаемыеДоверенности(ОписаниеДанных.Объект);
|
||||
Иначе
|
||||
ЗаполнитьМашиночитаемыеДоверенности();
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОК(Команда)
|
||||
|
||||
@@ -120,6 +177,8 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ЗагрузитьМашиночитаемыеДоверенности();
|
||||
|
||||
Если Не ОписаниеДанных.Свойство("Объект") Тогда
|
||||
ОписаниеДанных.Вставить("Подписи", ДобавляемыеПодписи());
|
||||
Закрыть(Истина);
|
||||
@@ -191,6 +250,7 @@
|
||||
Процедура ПослеОткрытия()
|
||||
|
||||
ОтображениеДанныхОбновлено = Истина;
|
||||
ВыбратьФайлы(Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -212,61 +272,164 @@
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ВыбратьФайл(ДобавитьНовуюСтроку = Ложь)
|
||||
Процедура ВыбратьФайлы(МножественныйВыбор = Ложь)
|
||||
|
||||
ОшибкиПриЗагрузкеДоверенностей = "";
|
||||
Доверенности.Очистить();
|
||||
|
||||
Контекст = Новый Структура;
|
||||
Контекст.Вставить("ДобавитьНовуюСтроку", ДобавитьНовуюСтроку);
|
||||
Контекст.Вставить("ДобавитьНовыеСтроки", МножественныйВыбор);
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("ВыбратьФайлПослеПомещенияФайла", ЭтотОбъект, Контекст);
|
||||
Оповещение = Новый ОписаниеОповещения("ВыбратьФайлыПослеПомещенияФайлов", ЭтотОбъект, Контекст);
|
||||
|
||||
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
|
||||
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
|
||||
|
||||
Если МножественныйВыбор Тогда
|
||||
ПараметрыЗагрузки.Диалог.Заголовок = НСтр("ru = 'Выберите файлы электронной подписи'");
|
||||
Иначе
|
||||
ПараметрыЗагрузки.Диалог.Заголовок = НСтр("ru = 'Выберите файл электронной подписи'");
|
||||
ПараметрыЗагрузки.Диалог.Фильтр = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Файлы подписи (*.%1)|*.%1'"),
|
||||
ЭлектроннаяПодписьКлиент.ПерсональныеНастройки().РасширениеДляФайловПодписи);
|
||||
КонецЕсли;
|
||||
ПараметрыЗагрузки.Диалог.МножественныйВыбор = МножественныйВыбор;
|
||||
|
||||
ФильтрДляВыбораПодписей = НСтр("ru = 'Файлы подписи (*.p7s, *.sig%1)|*.p7s;*.sig%2'");
|
||||
ЭлектроннаяПодписьКлиентЛокализация.ПриПолученииФильтраДляВыбораПодписей(ФильтрДляВыбораПодписей);
|
||||
|
||||
РасширениеДляФайловПодписи = ЭлектроннаяПодписьКлиент.ПерсональныеНастройки().РасширениеДляФайловПодписи;
|
||||
Если СтрНайти(ФильтрДляВыбораПодписей, РасширениеДляФайловПодписи) = 0 Тогда
|
||||
ФильтрДляВыбораПодписей= СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ФильтрДляВыбораПодписей,
|
||||
", *." + РасширениеДляФайловПодписи, ";*." + РасширениеДляФайловПодписи);
|
||||
Иначе
|
||||
ФильтрДляВыбораПодписей= СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ФильтрДляВыбораПодписей, "", "");
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыЗагрузки.Диалог.Фильтр = ФильтрДляВыбораПодписей;
|
||||
ПараметрыЗагрузки.Диалог.Фильтр = ПараметрыЗагрузки.Диалог.Фильтр + "|" + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Все файлы (%1)|%1'"), ПолучитьМаскуВсеФайлы());
|
||||
|
||||
Если Не ДобавитьНовуюСтроку Тогда
|
||||
Если Не МножественныйВыбор Тогда
|
||||
ПараметрыЗагрузки.Диалог.ПолноеИмяФайла = Элементы.Подписи.ТекущиеДанные.ПутьКФайлу;
|
||||
КонецЕсли;
|
||||
|
||||
ФайловаяСистемаКлиент.ЗагрузитьФайл(Оповещение, ПараметрыЗагрузки);
|
||||
ФайловаяСистемаКлиент.ЗагрузитьФайлы(Оповещение, ПараметрыЗагрузки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ВыбратьФайл.
|
||||
&НаКлиенте
|
||||
Процедура ВыбратьФайлПослеПомещенияФайла(ПомещенныйФайл, Контекст) Экспорт
|
||||
Процедура ВыбратьФайлыПослеПомещенияФайлов(ПомещенныеФайлы, Контекст) Экспорт
|
||||
|
||||
Если ПомещенныйФайл = Неопределено Тогда
|
||||
Если ПомещенныеФайлы = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(ПомещенныеФайлы) = Тип("Файл") Тогда
|
||||
ПомещенныеФайлы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ПомещенныеФайлы);
|
||||
КонецЕсли;
|
||||
|
||||
Результат = ДобавитьСтрокиНаСервере(ПомещенныеФайлы, Контекст.ДобавитьНовыеСтроки);
|
||||
|
||||
Контекст.Вставить("ПомещенныеФайлы", ПомещенныеФайлы);
|
||||
Контекст.Вставить("ДанныеДляПроверкиПодписи", Неопределено);
|
||||
Контекст.Вставить("РезультатДобавленияПодписей", Результат);
|
||||
Контекст.Вставить("ДругиеФайлы", Результат);
|
||||
Контекст.Вставить("Ошибки", Новый Структура("ОшибкиНаКлиенте, ОшибкиНаСервере", Новый Соответствие, Новый Соответствие));
|
||||
Контекст.Вставить("Индекс", -1);
|
||||
ВыбратьФайлыЦиклНачало(Контекст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ВыбратьФайлыЦиклНачало(Контекст)
|
||||
|
||||
Если Контекст.ПомещенныеФайлы.Количество() <= Контекст.Индекс + 1 Тогда
|
||||
ВыбратьФайлыПослеЦикла(Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Контекст.Индекс = Контекст.Индекс + 1;
|
||||
|
||||
ПомещенныйФайл = Контекст.ПомещенныеФайлы[Контекст.Индекс];
|
||||
|
||||
СоставИмени = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ПомещенныйФайл.Имя);
|
||||
|
||||
Контекст.Вставить("Адрес", ПомещенныйФайл.Хранение);
|
||||
Контекст.Вставить("ИмяФайла", СоставИмени.Имя);
|
||||
Контекст.Вставить("ОшибкаНаСервере", Новый Структура);
|
||||
Контекст.Вставить("ДанныеПодписи", Неопределено);
|
||||
Контекст.Вставить("ДатаПодписи", Неопределено);
|
||||
Контекст.Вставить("АдресСвойствПодписи", Неопределено);
|
||||
РезультатДобавленияПодписи = Контекст.РезультатДобавленияПодписей.Получить(ПомещенныйФайл.Имя);
|
||||
|
||||
Успех = ДобавитьСтрокуНаСервере(Контекст.Адрес, Контекст.ИмяФайла, Контекст.ДобавитьНовуюСтроку,
|
||||
Контекст.ОшибкаНаСервере, Контекст.ДанныеПодписи, Контекст.ДатаПодписи, Контекст.АдресСвойствПодписи);
|
||||
Если РезультатДобавленияПодписи = Неопределено Тогда
|
||||
ВыбратьФайлыЦиклНачало(Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Успех Тогда
|
||||
Контекст.Вставить("РезультатДобавленияПодписи", РезультатДобавленияПодписи);
|
||||
|
||||
Если РезультатДобавленияПодписи.Успех Тогда
|
||||
ВыбратьФайлПослеДобавленияСтроки(Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыСоздания = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыСозданияМенеджераКриптографии();
|
||||
ПараметрыСоздания.АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмСформированнойПодписи(Контекст.ДанныеПодписи);
|
||||
ПараметрыСоздания.АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмСформированнойПодписи(
|
||||
Контекст.РезультатДобавленияПодписи.ДанныеПодписи);
|
||||
ПараметрыСоздания.ПоказатьОшибку = Неопределено;
|
||||
|
||||
ЭлектроннаяПодписьСлужебныйКлиент.СоздатьМенеджерКриптографии(Новый ОписаниеОповещения(
|
||||
"ВыбратьФайлПослеСозданияМенеджераКриптографии", ЭтотОбъект, Контекст),
|
||||
"", ПараметрыСоздания);
|
||||
ЭлектроннаяПодписьСлужебныйКлиент.СоздатьМенеджерКриптографии(
|
||||
Новый ОписаниеОповещения("ВыбратьФайлПослеСозданияМенеджераКриптографии", ЭтотОбъект, Контекст), "",
|
||||
ПараметрыСоздания);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ВыбратьФайлыПослеЦикла(Контекст)
|
||||
|
||||
ЗаполнитьМашиночитаемыеДоверенности();
|
||||
|
||||
Если Контекст.Ошибки.ОшибкиНаКлиенте.Количество() = 0
|
||||
И Контекст.Ошибки.ОшибкиНаСервере.Количество() = 0
|
||||
И ОшибкиПриЗагрузкеДоверенностей = "" Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ОшибкаНаКлиенте = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовоеОписаниеОшибок();
|
||||
ОшибкаНаКлиенте.ЗаголовокОшибки = НСтр("ru = 'Не удалось добавить файлы'");
|
||||
|
||||
Для Каждого КлючИЗначение Из Контекст.Ошибки.ОшибкиНаКлиенте Цикл
|
||||
|
||||
СвойстваОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеСвойстваОшибки();
|
||||
Если ЗначениеЗаполнено(КлючИЗначение.Значение.ДополнительныеПараметры) Тогда
|
||||
ЗаполнитьЗначенияСвойств(СвойстваОшибки, КлючИЗначение.Значение.ДополнительныеПараметры);
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваОшибки.Описание = СтрШаблон("%1:
|
||||
|%2", КлючИЗначение.Ключ, СтрСоединить(КлючИЗначение.Значение.Файлы, Символы.ПС));
|
||||
ОшибкаНаКлиенте.Ошибки.Добавить(СвойстваОшибки);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ОшибкаНаСервере = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовоеОписаниеОшибок();
|
||||
ОшибкаНаСервере.ЗаголовокОшибки = НСтр("ru = 'Не удалось добавить файлы'");
|
||||
|
||||
Если ОшибкиПриЗагрузкеДоверенностей <> "" Тогда
|
||||
|
||||
СвойстваОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеСвойстваОшибки();
|
||||
СвойстваОшибки.Описание = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось загрузить доверенности:
|
||||
|%1'"), ОшибкиПриЗагрузкеДоверенностей);
|
||||
ОшибкаНаСервере.Ошибки.Добавить(СвойстваОшибки);
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого КлючИЗначение Из Контекст.Ошибки.ОшибкиНаСервере Цикл
|
||||
|
||||
СвойстваОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеСвойстваОшибки();
|
||||
Если ЗначениеЗаполнено(КлючИЗначение.Значение.ДополнительныеПараметры) Тогда
|
||||
ЗаполнитьЗначенияСвойств(СвойстваОшибки, КлючИЗначение.Значение.ДополнительныеПараметры);
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваОшибки.Описание = СтрШаблон("%1:
|
||||
|%2", КлючИЗначение.Ключ, СтрСоединить(КлючИЗначение.Значение.Файлы, Символы.ПС));
|
||||
ОшибкаНаСервере.Ошибки.Добавить(СвойстваОшибки);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ПоказатьОшибку(ОшибкаНаКлиенте, ОшибкаНаСервере);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -279,7 +442,7 @@
|
||||
ПараметрыСоздания.ПоказатьОшибку = Неопределено;
|
||||
ЭлектроннаяПодписьСлужебныйКлиент.ПрочитатьСвойстваПодписи(Новый ОписаниеОповещения(
|
||||
"ВыбратьФайлПослеЧтенияСвойствПодписи", ЭтотОбъект, Контекст),
|
||||
Контекст.ДанныеПодписи, Истина, Ложь);
|
||||
Контекст.РезультатДобавленияПодписи.ДанныеПодписи, Истина, Ложь);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -288,14 +451,14 @@
|
||||
Если ЭлектроннаяПодписьКлиент.ОбщиеНастройки().ДоступнаУсовершенствованнаяПодпись Тогда
|
||||
МенеджерКриптографии.НачатьПолучениеКонтейнераПодписейКриптографии(Новый ОписаниеОповещения(
|
||||
"ВыбратьФайлПослеПолученияКонтейнераПодписи", ЭтотОбъект, Контекст,
|
||||
"ВыбратьФайлПослеОшибкиПолученияКонтейнераПодписи", ЭтотОбъект), Контекст.ДанныеПодписи);
|
||||
"ВыбратьФайлПослеОшибкиПолученияКонтейнераПодписи", ЭтотОбъект), Контекст.РезультатДобавленияПодписи.ДанныеПодписи);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Контекст.Вставить("ПараметрыПодписи", Неопределено);
|
||||
МенеджерКриптографии.НачатьПолучениеСертификатовИзПодписи(Новый ОписаниеОповещения(
|
||||
"ВыбратьФайлПослеПолученияСертификатовИзПодписи", ЭтотОбъект, Контекст,
|
||||
"ВыбратьФайлПослеОшибкиПолученияСертификатовИзПодписи", ЭтотОбъект), Контекст.ДанныеПодписи);
|
||||
"ВыбратьФайлПослеОшибкиПолученияСертификатовИзПодписи", ЭтотОбъект), Контекст.РезультатДобавленияПодписи.ДанныеПодписи);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -304,7 +467,7 @@
|
||||
Процедура ВыбратьФайлПослеЧтенияСвойствПодписи(Результат, Контекст) Экспорт
|
||||
|
||||
Если Результат.Успех = Ложь Тогда
|
||||
ПоказатьОшибку(Результат.ТекстОшибки, Контекст.ОшибкаНаСервере);
|
||||
ДобавитьОшибку(Новый Структура("ОписаниеОшибки", Результат.ТекстОшибки), Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -318,18 +481,19 @@
|
||||
СвойстваСертификата.Вставить("Отпечаток", Результат.Отпечаток);
|
||||
СвойстваСертификата.Вставить("КомуВыдан", Результат.КомуВыданСертификат);
|
||||
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(Контекст.ДанныеПодписи,
|
||||
СвойстваСертификата, "", ПользователиКлиент.АвторизованныйПользователь(), Контекст.ИмяФайла,
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(Контекст.РезультатДобавленияПодписи.ДанныеПодписи,
|
||||
СвойстваСертификата, "", ПользователиКлиент.АвторизованныйПользователь(), Контекст.РезультатДобавленияПодписи.ИмяФайла,
|
||||
Контекст.ПараметрыПодписи, Истина);
|
||||
|
||||
ДобавитьСтроку(ЭтотОбъект, Контекст.ДобавитьНовуюСтроку, СвойстваПодписи, Контекст.ИмяФайла,
|
||||
Контекст.АдресСвойствПодписи);
|
||||
ДобавитьСтроку(ЭтотОбъект, Контекст.ДобавитьНовыеСтроки, СвойстваПодписи, Контекст.РезультатДобавленияПодписи.ИмяФайла,
|
||||
Контекст.РезультатДобавленияПодписи.АдресСвойствПодписи);
|
||||
|
||||
ВыбратьФайлПослеДобавленияСтроки(Контекст);
|
||||
Иначе
|
||||
ОшибкаНаКлиенте = Новый Структура("ОписаниеОшибки", НСтр("ru = 'В файле подписи нет ни одного сертификата.'"));
|
||||
|
||||
ПоказатьОшибку(ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере);
|
||||
ДобавитьОшибку(ОшибкаНаКлиенте, Контекст);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -347,9 +511,9 @@
|
||||
|
||||
ДополнительныеПараметры = Новый Структура;
|
||||
ДополнительныеПараметры.Вставить("ПоказатьИнструкцию", Истина);
|
||||
ДополнительныеПараметры.Вставить("Подпись", Контекст.ДанныеПодписи);
|
||||
ДополнительныеПараметры.Вставить("Подпись", Контекст.РезультатДобавленияПодписи.ДанныеПодписи);
|
||||
|
||||
ПоказатьОшибку(ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере, ДополнительныеПараметры);
|
||||
ДобавитьОшибку(ОшибкаНаКлиенте, Контекст, ДополнительныеПараметры);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -365,7 +529,7 @@
|
||||
Контекст.Вставить("ПараметрыПодписи", ПараметрыПодписи);
|
||||
ДатаПодписи = ПараметрыПодписи.НеподтвержденнаяДатаПодписи;
|
||||
Если ЗначениеЗаполнено(ДатаПодписи) Тогда
|
||||
Контекст.Вставить("ДатаПодписи", ДатаПодписи);
|
||||
Контекст.РезультатДобавленияПодписи.ДатаПодписи = ДатаПодписи;
|
||||
КонецЕсли;
|
||||
|
||||
Сертификаты = Новый Массив;
|
||||
@@ -390,9 +554,9 @@
|
||||
|
||||
ДополнительныеПараметры = Новый Структура;
|
||||
ДополнительныеПараметры.Вставить("ПоказатьИнструкцию", Истина);
|
||||
ДополнительныеПараметры.Вставить("Подпись", Контекст.ДанныеПодписи);
|
||||
ДополнительныеПараметры.Вставить("Подпись", Контекст.РезультатДобавленияПодписи.ДанныеПодписи);
|
||||
|
||||
ПоказатьОшибку(ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере, ДополнительныеПараметры);
|
||||
ДобавитьОшибку(ОшибкаНаКлиенте, Контекст, ДополнительныеПараметры);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -404,7 +568,7 @@
|
||||
ОшибкаНаКлиенте = Новый Структура("ОписаниеОшибки",
|
||||
НСтр("ru = 'В файле подписи нет ни одного сертификата.'"));
|
||||
|
||||
ПоказатьОшибку(ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере);
|
||||
ДобавитьОшибку(ОшибкаНаКлиенте, Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -417,7 +581,7 @@
|
||||
Исключение
|
||||
ОшибкаНаКлиенте = Новый Структура("ОписаниеОшибки",
|
||||
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
ПоказатьОшибку(ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере);
|
||||
ДобавитьОшибку(ОшибкаНаКлиенте, Контекст);
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
|
||||
@@ -436,11 +600,12 @@
|
||||
СвойстваСертификата = Ждать ЭлектроннаяПодписьСлужебныйКлиент.СвойстваСертификата(Контекст.Сертификат);
|
||||
СвойстваСертификата.Вставить("ДвоичныеДанные", ДанныеСертификата);
|
||||
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(Контекст.ДанныеПодписи,
|
||||
СвойстваСертификата, "", ПользователиКлиент.АвторизованныйПользователь(), Контекст.ИмяФайла, Контекст.ПараметрыПодписи, Истина);
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(Контекст.РезультатДобавленияПодписи.ДанныеПодписи,
|
||||
СвойстваСертификата, "", ПользователиКлиент.АвторизованныйПользователь(),
|
||||
Контекст.РезультатДобавленияПодписи.ИмяФайла, Контекст.ПараметрыПодписи, Истина);
|
||||
|
||||
ДобавитьСтроку(ЭтотОбъект, Контекст.ДобавитьНовуюСтроку, СвойстваПодписи,
|
||||
Контекст.ИмяФайла, Контекст.АдресСвойствПодписи);
|
||||
ДобавитьСтроку(ЭтотОбъект, Контекст.ДобавитьНовыеСтроки, СвойстваПодписи,
|
||||
Контекст.РезультатДобавленияПодписи.ИмяФайла, Контекст.РезультатДобавленияПодписи.АдресСвойствПодписи);
|
||||
|
||||
ВыбратьФайлПослеДобавленияСтроки(Контекст);
|
||||
|
||||
@@ -450,13 +615,18 @@
|
||||
&НаКлиенте
|
||||
Процедура ВыбратьФайлПослеДобавленияСтроки(Контекст)
|
||||
|
||||
Если Не ОписаниеДанных.Свойство("Данные") Тогда
|
||||
Если Не ОписаниеДанных.Свойство("Данные") Или Контекст.ДанныеДляПроверкиПодписи = Ложь Тогда
|
||||
ВыбратьФайлыЦиклНачало(Контекст);
|
||||
Возврат; // Если данные не указаны, подпись проверить невозможно.
|
||||
КонецЕсли;
|
||||
|
||||
Если Контекст.ДанныеДляПроверкиПодписи = Неопределено Тогда
|
||||
ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьДанныеИзОписанияДанных(Новый ОписаниеОповещения(
|
||||
"ВыбратьФайлПослеПолученияДанных", ЭтотОбъект, Контекст),
|
||||
ЭтотОбъект, ОписаниеДанных, ОписаниеДанных.Данные, Истина);
|
||||
Иначе
|
||||
ВыбратьФайлПослеПолученияДанных(Контекст.ДанныеДляПроверкиПодписи, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -465,15 +635,22 @@
|
||||
Процедура ВыбратьФайлПослеПолученияДанных(Результат, Контекст) Экспорт
|
||||
|
||||
Если ТипЗнч(Результат) = Тип("Структура") Тогда
|
||||
Контекст.ДанныеДляПроверкиПодписи = Ложь;
|
||||
ВыбратьФайлыЦиклНачало(Контекст);
|
||||
Возврат; // Не удалось получить данные, подпись проверить невозможно.
|
||||
КонецЕсли;
|
||||
|
||||
Если Контекст.ДанныеДляПроверкиПодписи = Неопределено Тогда
|
||||
Контекст.ДанныеДляПроверкиПодписи = Результат;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыДляПроверки = ЭлектроннаяПодписьКлиент.ПараметрыПроверкиПодписи();
|
||||
ПараметрыДляПроверки.ПоказатьОшибкуСозданияМенеджераКриптографии = Ложь;
|
||||
ПараметрыДляПроверки.РезультатВВидеСтруктуры = Истина;
|
||||
ЭлектроннаяПодписьСлужебныйКлиент.ПроверитьПодпись(Новый ОписаниеОповещения(
|
||||
"ВыбратьФайлПослеПроверкиПодписи", ЭтотОбъект, Контекст),
|
||||
Результат, Контекст.ДанныеПодписи, , Контекст.ДатаПодписи, ПараметрыДляПроверки);
|
||||
Контекст.ДанныеДляПроверкиПодписи, Контекст.РезультатДобавленияПодписи.ДанныеПодписи, ,
|
||||
Контекст.РезультатДобавленияПодписи.ДатаПодписи, ПараметрыДляПроверки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -482,10 +659,12 @@
|
||||
Процедура ВыбратьФайлПослеПроверкиПодписи(РезультатПроверки, Контекст) Экспорт
|
||||
|
||||
Если РезультатПроверки.Результат = Неопределено Тогда
|
||||
ВыбратьФайлыЦиклНачало(Контекст);
|
||||
Возврат; // Не удалось проверить подпись.
|
||||
КонецЕсли;
|
||||
|
||||
ОбновитьРезультатПроверкиПодписи(Контекст.АдресСвойствПодписи, РезультатПроверки);
|
||||
ОбновитьРезультатПроверкиПодписи(Контекст.РезультатДобавленияПодписи.АдресСвойствПодписи, РезультатПроверки);
|
||||
ВыбратьФайлыЦиклНачало(Контекст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -506,52 +685,100 @@
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Функция ДобавитьСтрокуНаСервере(Адрес, ИмяФайла, ДобавитьНовуюСтроку, ОшибкаНаСервере,
|
||||
ДанныеПодписи, ДатаПодписи, АдресСвойствПодписи)
|
||||
Функция ДобавитьСтрокиНаСервере(ПомещенныеФайлы, ДобавитьНовыеСтроки)
|
||||
|
||||
Соответствие = Новый Соответствие;
|
||||
ДругиеФайлы = Новый Соответствие;
|
||||
|
||||
ЭлектроннаяПодписьЛокализация.ПриДобавленииСтрокНаСервере(
|
||||
ЭтотОбъект, ПомещенныеФайлы, ДругиеФайлы, ОшибкиПриЗагрузкеДоверенностей, УникальныйИдентификатор);
|
||||
|
||||
Для Каждого ПомещенныйФайл Из ПомещенныеФайлы Цикл
|
||||
|
||||
СоставИмени = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ПомещенныйФайл.Имя);
|
||||
|
||||
Если ДругиеФайлы.Получить(СоставИмени.Имя) <> Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
РезультатДобавленияСтроки = Новый Структура;
|
||||
|
||||
РезультатДобавленияСтроки.Вставить("Успех", Ложь);
|
||||
РезультатДобавленияСтроки.Вставить("Адрес", ПомещенныйФайл.Хранение);
|
||||
РезультатДобавленияСтроки.Вставить("ИмяФайла", СоставИмени.Имя);
|
||||
РезультатДобавленияСтроки.Вставить("ОшибкаНаСервере", Новый Структура);
|
||||
РезультатДобавленияСтроки.Вставить("ДанныеПодписи", Неопределено);
|
||||
РезультатДобавленияСтроки.Вставить("ДатаПодписи", Неопределено);
|
||||
РезультатДобавленияСтроки.Вставить("АдресСвойствПодписи", Неопределено);
|
||||
|
||||
РезультатДобавленияСтроки = ДобавитьСтрокуНаСервере(РезультатДобавленияСтроки, ДобавитьНовыеСтроки);
|
||||
Соответствие.Вставить(ПомещенныйФайл.Имя, РезультатДобавленияСтроки);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Соответствие;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ДобавитьСтрокуНаСервере(Знач РезультатДобавленияСтроки, ДобавитьНовуюСтроку)
|
||||
|
||||
Попытка
|
||||
ДанныеПодписи = ЭлектроннаяПодпись.ПодписьВКодировкеDER(Адрес);
|
||||
РезультатДобавленияСтроки.ДанныеПодписи = ЭлектроннаяПодпись.ПодписьВКодировкеDER(РезультатДобавленияСтроки.Адрес);
|
||||
Исключение
|
||||
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||
ОшибкаНаСервере.Вставить("ОписаниеОшибки", ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||
Возврат Ложь;
|
||||
РезультатДобавленияСтроки.ОшибкаНаСервере.Вставить("ОписаниеОшибки", ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||
Возврат РезультатДобавленияСтроки;
|
||||
КонецПопытки;
|
||||
|
||||
ДатаПодписи = ЭлектроннаяПодпись.ДатаПодписания(ДанныеПодписи);
|
||||
РезультатДобавленияСтроки.ДатаПодписи = ЭлектроннаяПодпись.ДатаПодписания(РезультатДобавленияСтроки.ДанныеПодписи);
|
||||
|
||||
Если Не ЭлектроннаяПодпись.ПроверятьЭлектронныеПодписиНаСервере()
|
||||
И Не ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере() Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
Возврат РезультатДобавленияСтроки;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыСоздания = ЭлектроннаяПодписьСлужебный.ПараметрыСозданияМенеджераКриптографии();
|
||||
ПараметрыСоздания.ОписаниеОшибки = ОшибкаНаСервере;
|
||||
ПараметрыСоздания.АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмСформированнойПодписи(ДанныеПодписи);
|
||||
ПараметрыСоздания.ОписаниеОшибки = РезультатДобавленияСтроки.ОшибкаНаСервере;
|
||||
ПараметрыСоздания.АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмСформированнойПодписи(
|
||||
РезультатДобавленияСтроки.ДанныеПодписи);
|
||||
|
||||
МенеджерКриптографии = ЭлектроннаяПодписьСлужебный.МенеджерКриптографии("", ПараметрыСоздания);
|
||||
|
||||
ОшибкаНаСервере = ПараметрыСоздания.ОписаниеОшибки;
|
||||
РезультатДобавленияСтроки.ОшибкаНаСервере = ПараметрыСоздания.ОписаниеОшибки;
|
||||
Если МенеджерКриптографии = Неопределено Тогда
|
||||
Возврат Ложь;
|
||||
Возврат РезультатДобавленияСтроки;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПодписи = Неопределено;
|
||||
Если ЭлектроннаяПодпись.ОбщиеНастройки().ДоступнаУсовершенствованнаяПодпись Тогда
|
||||
КонтейнерПодписи = МенеджерКриптографии.ПолучитьКонтейнерПодписейКриптографии(ДанныеПодписи);
|
||||
|
||||
Попытка
|
||||
КонтейнерПодписи = МенеджерКриптографии.ПолучитьКонтейнерПодписейКриптографии(РезультатДобавленияСтроки.ДанныеПодписи);
|
||||
Исключение
|
||||
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||
РезультатДобавленияСтроки.ОшибкаНаСервере.Вставить("ОписаниеОшибки", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось получить контейнер подписи из файла подписи по причине:
|
||||
|%1'"),
|
||||
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке)));
|
||||
Возврат РезультатДобавленияСтроки;
|
||||
КонецПопытки;
|
||||
|
||||
ПараметрыПодписи = ЭлектроннаяПодписьСлужебный.ПараметрыПодписиКриптографии(КонтейнерПодписи,
|
||||
ЭлектроннаяПодписьСлужебный.РазницаСУниверсальнымВременем(), ТекущаяДатаСеанса());
|
||||
|
||||
Если ЗначениеЗаполнено(ПараметрыПодписи.НеподтвержденнаяДатаПодписи) Тогда
|
||||
ДатаПодписи = ПараметрыПодписи.НеподтвержденнаяДатаПодписи;
|
||||
РезультатДобавленияСтроки.ДатаПодписи = ПараметрыПодписи.НеподтвержденнаяДатаПодписи;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ПараметрыПодписи = Неопределено Тогда
|
||||
|
||||
Попытка
|
||||
|
||||
Сертификаты = МенеджерКриптографии.ПолучитьСертификатыИзПодписи(ДанныеПодписи);
|
||||
Сертификаты = МенеджерКриптографии.ПолучитьСертификатыИзПодписи(РезультатДобавленияСтроки.ДанныеПодписи);
|
||||
|
||||
Если Сертификаты.Количество() = 0 Тогда
|
||||
ВызватьИсключение НСтр("ru = 'В файле подписи нет ни одного сертификата.'");
|
||||
@@ -572,11 +799,11 @@
|
||||
|
||||
Исключение
|
||||
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||
ОшибкаНаСервере.Вставить("ОписаниеОшибки", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
РезультатДобавленияСтроки.ОшибкаНаСервере.Вставить("ОписаниеОшибки", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось получить сертификаты из файла подписи по причине:
|
||||
|%1'"),
|
||||
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке)));
|
||||
Возврат Ложь;
|
||||
Возврат РезультатДобавленияСтроки;
|
||||
КонецПопытки;
|
||||
|
||||
СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(Сертификат);
|
||||
@@ -589,19 +816,24 @@
|
||||
|
||||
СвойстваСертификата.Вставить("ДвоичныеДанные", Сертификат.Выгрузить());
|
||||
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(ДанныеПодписи,
|
||||
СвойстваСертификата, "", Пользователи.АвторизованныйПользователь(), ИмяФайла, ПараметрыПодписи, Истина);
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(РезультатДобавленияСтроки.ДанныеПодписи,
|
||||
СвойстваСертификата, "", Пользователи.АвторизованныйПользователь(), РезультатДобавленияСтроки.ИмяФайла, ПараметрыПодписи, Истина);
|
||||
|
||||
ДобавитьСтроку(ЭтотОбъект, ДобавитьНовуюСтроку, СвойстваПодписи, ИмяФайла, АдресСвойствПодписи);
|
||||
ДобавитьСтроку(ЭтотОбъект, ДобавитьНовуюСтроку, СвойстваПодписи, РезультатДобавленияСтроки.ИмяФайла,
|
||||
РезультатДобавленияСтроки.АдресСвойствПодписи);
|
||||
РезультатДобавленияСтроки.Успех = Истина;
|
||||
|
||||
Возврат Истина;
|
||||
Возврат РезультатДобавленияСтроки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Процедура ДобавитьСтроку(Форма, ДобавитьНовуюСтроку, СвойстваПодписи, ИмяФайла, АдресСвойствПодписи)
|
||||
|
||||
АдресСвойствПодписи = ПоместитьВоВременноеХранилище(СвойстваПодписи, Форма.УникальныйИдентификатор);
|
||||
НовыеСвойстваПодписи = ЭлектроннаяПодписьКлиентСервер.НовыеСвойстваПодписи();
|
||||
ЗаполнитьЗначенияСвойств(НовыеСвойстваПодписи, СвойстваПодписи);
|
||||
|
||||
АдресСвойствПодписи = ПоместитьВоВременноеХранилище(НовыеСвойстваПодписи, Форма.УникальныйИдентификатор);
|
||||
|
||||
Если ДобавитьНовуюСтроку Тогда
|
||||
ТекущиеДанные = Форма.Подписи.Добавить();
|
||||
@@ -637,6 +869,38 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ДобавитьОшибку(ОшибкаНаКлиенте, Контекст, ДополнительныеПараметры = Неопределено)
|
||||
|
||||
Если ЗначениеЗаполнено(ОшибкаНаКлиенте.ОписаниеОшибки) Тогда
|
||||
Найдено = Контекст.Ошибки.ОшибкиНаКлиенте.Получить(ОшибкаНаКлиенте.ОписаниеОшибки);
|
||||
Если Найдено = Неопределено Тогда
|
||||
Найдено = Новый Структура("Файлы, ДополнительныеПараметры", Новый Массив);
|
||||
КонецЕсли;
|
||||
|
||||
Найдено.Файлы.Добавить(Контекст.РезультатДобавленияПодписи.ИмяФайла);
|
||||
Найдено.ДополнительныеПараметры = ДополнительныеПараметры;
|
||||
Контекст.Ошибки.ОшибкиНаКлиенте.Вставить(ОшибкаНаКлиенте.ОписаниеОшибки, Найдено);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Контекст.РезультатДобавленияПодписи.ОшибкаНаСервере) Тогда
|
||||
ОшибкаНаСервере = Контекст.РезультатДобавленияПодписи.ОшибкаНаСервере;
|
||||
Если ОшибкаНаСервере.ОписаниеОшибки <> ОшибкаНаКлиенте.ОписаниеОшибки Тогда
|
||||
Найдено = Контекст.Ошибки.ОшибкиНаСервере.Получить(ОшибкаНаСервере.ОписаниеОшибки);
|
||||
Если Найдено = Неопределено Тогда
|
||||
Найдено = Новый Структура("Файлы, ДополнительныеПараметры", Новый Массив);
|
||||
КонецЕсли;
|
||||
|
||||
Найдено.Файлы.Добавить(Контекст.РезультатДобавленияПодписи.ИмяФайла);
|
||||
Найдено.ДополнительныеПараметры = ДополнительныеПараметры;
|
||||
Контекст.Ошибки.ОшибкиНаСервере.Вставить(ОшибкаНаСервере.ОписаниеОшибки, Найдено);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ВыбратьФайлыЦиклНачало(Контекст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПоказатьОшибку(ОшибкаНаКлиенте, ОшибкаНаСервере, ДополнительныеПараметры = Неопределено)
|
||||
|
||||
@@ -646,4 +910,62 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ЗагрузитьМашиночитаемыеДоверенности()
|
||||
|
||||
ЭлектроннаяПодписьЛокализация.ПриЗагрузкеМашиночитаемыхДоверенностей(ЭтотОбъект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ЗаполнитьМашиночитаемыеДоверенности(ПодписанныйОбъект = Неопределено)
|
||||
|
||||
ЭлектроннаяПодписьЛокализация.ПриЗаполненииМашиночитаемыхДоверенностей(ЭтотОбъект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура МашиночитаемаяДоверенностьВыбратьИзСправочника()
|
||||
|
||||
ТекущиеДанные = Элементы.Подписи.ТекущиеДанные;
|
||||
ОбработчикЗавершения = Новый ОписаниеОповещения("МашиночитаемаяДоверенностьОкончаниеВыбора", ЭтотОбъект);
|
||||
ЭлектроннаяПодписьКлиентЛокализация.ПриВыбореМашиночитаемойДоверенности(ОбработчикЗавершения, ТекущиеДанные);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура МашиночитаемаяДоверенностьОкончаниеВыбора(Результат, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Если Результат = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
ТекущиеДанные = Элементы.Подписи.ТекущиеДанные;
|
||||
ТекущиеДанные.МашиночитаемаяДоверенность = Результат;
|
||||
ПодписиМашиночитаемаяДоверенностьПриИзменении();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПодписиМашиночитаемаяДоверенностьПриИзменении()
|
||||
|
||||
Если ОписаниеДанных.Свойство("Объект") И ТипЗнч(ОписаниеДанных.Объект) <> Тип("ОписаниеОповещения") Тогда
|
||||
ЗаполнитьМашиночитаемуюДоверенностьВСтроке(Элементы.Подписи.ТекущаяСтрока, ОписаниеДанных.Объект);
|
||||
Иначе
|
||||
ЗаполнитьМашиночитаемуюДоверенностьВСтроке(Элементы.Подписи.ТекущаяСтрока);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ЗаполнитьМашиночитаемуюДоверенностьВСтроке(ИдентификаторСтроки, ПодписанныйОбъект = Неопределено)
|
||||
|
||||
ЭлектроннаяПодписьЛокализация.ПриЗаполненииМашиночитаемойДоверенностиВСтроке(ЭтотОбъект, ИдентификаторСтроки, ПодписанныйОбъект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПодписиМашиночитаемаяДоверенностьАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
|
||||
СтандартнаяОбработка = Ложь;
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@@ -204,17 +204,16 @@
|
||||
ОтборМетаданных.Добавить("Задачи");
|
||||
ОтборМетаданных.Добавить("ВнешниеИсточникиДанных");
|
||||
|
||||
ПараметрыФормы = Новый Структура;
|
||||
ПараметрыФормы.Вставить("КоллекцииВыбираемыхОбъектовМетаданных", ОтборМетаданных);
|
||||
ПараметрыФормы.Вставить("ВыбранныеОбъектыМетаданных", ВыбранныеОбъекты);
|
||||
ПараметрыФормы.Вставить("УникальныйИдентификаторИсточник", УникальныйИдентификатор);
|
||||
ПараметрыФормы.Вставить("ВыборЕдинственного", Ложь);
|
||||
ПараметрыФормы.Вставить("ВыбиратьТаблицыВнешнихИсточниковДанных", Истина);
|
||||
ПараметрыФормы.Вставить("СпособГруппировкиОбъектов", "ПоВидам");
|
||||
ПараметрыФормы = СтандартныеПодсистемыКлиентСервер.ПараметрыВыбораОбъектовМетаданных();
|
||||
ПараметрыФормы.КоллекцииВыбираемыхОбъектовМетаданных = ОтборМетаданных;
|
||||
ПараметрыФормы.ВыбранныеОбъектыМетаданных = ВыбранныеОбъекты;
|
||||
ПараметрыФормы.УникальныйИдентификаторИсточник = УникальныйИдентификатор;
|
||||
ПараметрыФормы.ВыборЕдинственного = Ложь;
|
||||
ПараметрыФормы.ВыбиратьТаблицыВнешнихИсточниковДанных = Истина;
|
||||
ПараметрыФормы.СпособГруппировкиОбъектов = "ПоВидам";
|
||||
|
||||
ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьОбъектыЗавершение", ЭтотОбъект);
|
||||
|
||||
ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыФормы,,,,, ОписаниеОповещения);
|
||||
СтандартныеПодсистемыКлиент.ВыбратьОбъектыМетаданных(ПараметрыФормы, ОписаниеОповещения);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -223,8 +222,7 @@
|
||||
|
||||
Если Результат <> Неопределено Тогда
|
||||
ОбработатьВыбранные(Результат.ВыгрузитьЗначения());
|
||||
СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева(ЭтотОбъект,
|
||||
Элементы.Настройки.Имя,, Истина);
|
||||
СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева(ЭтотОбъект, Элементы.Настройки.Имя,, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
<ul><li>Сертификат <b>только для шифрования</b> можно <b>Добавить из файла</b>. Выберите нужное действие и перейдите по ссылке, укажите путь к файлу или каталогу на компьютере.</li></ul><li>Также с помощью кнопки <b>Оформить заявление</b> можно подготовить <a href="DataProcessor.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Form.Форма/Help">Заявление на выпуск нового сертификата</a>.
|
||||
</li>
|
||||
<li>Выпустить повторно сертификат, у которого закончился срок действия можно с помощью кнопки <strong>Перевыпустить (cкопировать, F9)</strong>.</li>
|
||||
<li>Для анализа сертификатов сотрудников и контроля своевременного обновления сертификатов можно воспользоваться кнопкой <b>Отчеты</b> для того, чтобы открыть список доступных <a href="Catalog.ВариантыОтчетов/Help">вариантов отчета</a>.</li>
|
||||
<li>Просмотреть сертификат или заявление на выпуск нового сертификата можно, дважды щелкнув по нему мышью. Также можно это сделать с помощью команды <strong>Изменить</strong> контекстного меню по правой кнопке мыши или меню <strong>Еще</strong>.</li></ul><h3>Приложения</h3>
|
||||
<ul><li>Содержит список настроенных приложений, которые будут использованы в информационной базе (в том числе во всех узлах распределенной ИБ). </li>
|
||||
<li>Данные приложения не обязательно должны быть установлены на всех компьютерах. Более того, установка более одного приложения на одном компьютере может вызвать конфликты между ними.
|
||||
|
||||
@@ -87,18 +87,26 @@
|
||||
&НаКлиенте
|
||||
Процедура ИнструкцияНажатие(Элемент)
|
||||
|
||||
ЯкорьОшибки = "";
|
||||
Если Элемент.Имя = "ИнструкцияКлиент"
|
||||
И Не ПустаяСтрока(ЯкорьОшибкиКлиент) Тогда
|
||||
|
||||
ЯкорьОшибки = ""; ТекстДляПоиска = "";
|
||||
Если Элемент.Имя = "ИнструкцияКлиент" Тогда
|
||||
Если Не ПустаяСтрока(ЯкорьОшибкиКлиент) Тогда
|
||||
ЯкорьОшибки = ЯкорьОшибкиКлиент;
|
||||
ИначеЕсли Элемент.Имя = "ИнструкцияСервер"
|
||||
И Не ПустаяСтрока(ЯкорьОшибкиСервер) Тогда
|
||||
|
||||
Иначе
|
||||
ТекстДляПоиска = ТекстОшибкиКлиент;
|
||||
КонецЕсли;
|
||||
ИначеЕсли Элемент.Имя = "ИнструкцияСервер" Тогда
|
||||
Если Не ПустаяСтрока(ЯкорьОшибкиСервер) Тогда
|
||||
ЯкорьОшибки = ЯкорьОшибкиСервер;
|
||||
Иначе
|
||||
ТекстДляПоиска = ТекстОшибкиСервер;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ТекстДляПоиска) Тогда
|
||||
ЭлектроннаяПодписьКлиент.ОткрытьПоискПоОшибкамПриРаботеСЭлектроннойПодписью(ТекстДляПоиска);
|
||||
Иначе
|
||||
ЭлектроннаяПодписьКлиент.ОткрытьИнструкциюПоТипичнымПроблемамПриРаботеСПрограммами(ЯкорьОшибки);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -349,6 +357,9 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||||
ЭлементИнструкция.Имя, "Заголовок", НСтр("ru = 'Подробнее'"));
|
||||
|
||||
ТребуемоеКоличествоСтрок = 0;
|
||||
ШиринаПоля = Цел(?(Ширина < 20, 20, Ширина) * 1.4);
|
||||
Для НомерСтроки = 1 По СтрЧислоСтрок(ТекстОшибки) Цикл
|
||||
|
||||
@@ -824,6 +824,7 @@
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<placementArea>UserCmds</placementArea>
|
||||
<representationInContextMenu>Auto</representationInContextMenu>
|
||||
<locationInCommandBar>InCommandBar</locationInCommandBar>
|
||||
</items>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
@@ -2293,6 +2294,10 @@
|
||||
<value>Отобразить инструкцию</value>
|
||||
</title>
|
||||
<id>6</id>
|
||||
<toolTip>
|
||||
<key>ru</key>
|
||||
<value>Отобразить инструкцию по редактированию макета</value>
|
||||
</toolTip>
|
||||
<use>
|
||||
<common>true</common>
|
||||
</use>
|
||||
@@ -2358,7 +2363,7 @@
|
||||
<id>9</id>
|
||||
<toolTip>
|
||||
<key>ru</key>
|
||||
<value>Показать оригинал</value>
|
||||
<value>Показать поставляемый макет</value>
|
||||
</toolTip>
|
||||
<use>
|
||||
<common>true</common>
|
||||
@@ -2435,6 +2440,11 @@
|
||||
<value>Посмотреть печатную форму</value>
|
||||
</title>
|
||||
<id>13</id>
|
||||
<toolTip>
|
||||
<key>ru</key>
|
||||
<value>Посмотреть печатную форму по макету
|
||||
</value>
|
||||
</toolTip>
|
||||
<use>
|
||||
<common>true</common>
|
||||
</use>
|
||||
|
||||
@@ -217,25 +217,31 @@
|
||||
&НаКлиенте
|
||||
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
|
||||
|
||||
Если ОтказСохраненияИзменений Тогда
|
||||
Если ЗавершениеРаботы Тогда
|
||||
Если Модифицированность И Не ОтказСохраненияИзменений Тогда
|
||||
ТекстПредупреждения = НСтр("ru = 'Макет печатной формы отредактирован в другом приложении.
|
||||
|Нажмите Записать, чтобы не потерять изменения.'");
|
||||
Отказ = Истина;
|
||||
КонецЕсли;
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли Не ЗаписьВыполнена Тогда
|
||||
Если Не ОтказСохраненияИзменений Тогда
|
||||
|
||||
Если Не ЗаписьВыполнена Тогда
|
||||
ДополнительныеПараметры = Новый Структура;
|
||||
ДополнительныеПараметры.Вставить("Отказ", Отказ);
|
||||
ДополнительныеПараметры.Вставить("ЗавершениеРаботы", ЗавершениеРаботы);
|
||||
ДополнительныеПараметры.Вставить("ТекстПредупреждения", ТекстПредупреждения);
|
||||
ДополнительныеПараметры.Вставить("СтандартнаяОбработка", СтандартнаяОбработка);
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("ПередЗакрытиемОкончание", ЭтотОбъект, ДополнительныеПараметры);
|
||||
ОповещениеОшибки = Новый ОписаниеОповещения("ОшибкаПриЧтенииФайла", ЭтотОбъект);
|
||||
|
||||
ПрочитатьРедактируемыйФайлМакета(Оповещение, ОповещениеОшибки);
|
||||
Отказ = Истина;
|
||||
|
||||
Иначе
|
||||
ПередЗакрытиемЗавершение(Ложь, Неопределено);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не Отказ И Не ЗавершениеРаботы И ЗначениеЗаполнено(КлючОбъектаРедактирования) Тогда
|
||||
Если Не Отказ И ЗначениеЗаполнено(КлючОбъектаРедактирования) Тогда
|
||||
РазблокироватьНаСервере();
|
||||
КонецЕсли;
|
||||
|
||||
@@ -306,6 +312,11 @@
|
||||
Оповещение = Новый ОписаниеОповещения("ОткрытьРедакторПродолжение", ЭтотОбъект);
|
||||
ОповещениеОшибки = Новый ОписаниеОповещения("ОшибкаПриОткрытииФайла", ЭтотОбъект);
|
||||
ПрочитатьРедактируемыйФайлМакета(Оповещение, ОповещениеОшибки);
|
||||
|
||||
Если Не ЭтоНовый() Тогда
|
||||
Модифицированность = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
@@ -654,19 +665,19 @@
|
||||
Процедура ПередЗакрытиемОкончание(Результат, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Отказ = ДополнительныеПараметры.Отказ;
|
||||
ЗавершениеРаботы = ДополнительныеПараметры.ЗавершениеРаботы;
|
||||
|
||||
Если Не ЗавершениеРаботы И Не ПовторноеЗакрытие = Истина Тогда
|
||||
Модифицированность = Модифицированность ИЛИ МакетИзменен();
|
||||
Если ПовторноеЗакрытие <> Истина Тогда
|
||||
Модифицированность = Модифицированность Или МакетИзменен();
|
||||
КонецЕсли;
|
||||
ПовторноеЗакрытие = Истина;
|
||||
|
||||
ОписаниеОповещения = Новый ОписаниеОповещения("ПередЗакрытиемЗавершение", ЭтотОбъект);
|
||||
ОписаниеЯзыка = ?(ЗначениеЗаполнено(ТекущийЯзык), " (" + ТекущийЯзык + ")", "");
|
||||
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Сохранить изменения в %1%2?'"), ИмяДокумента, ОписаниеЯзыка);
|
||||
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(ОписаниеОповещения, Отказ, ЗавершениеРаботы, ТекстВопроса);
|
||||
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Сохранить изменения в %1%2?'"),
|
||||
ИмяДокумента, ОписаниеЯзыка);
|
||||
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(ОписаниеОповещения, Отказ, Ложь, ТекстВопроса);
|
||||
|
||||
Если Модифицированность Или ЗавершениеРаботы Тогда
|
||||
Если Модифицированность Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -1012,7 +1023,6 @@
|
||||
|
||||
ПодготовитьМакетКСохранению(Макет);
|
||||
|
||||
|
||||
АдресМакетаВоВременномХранилище = ПоместитьВоВременноеХранилище(Макет, УникальныйИдентификатор);
|
||||
ОписаниеМакета = УправлениеПечатью.ОписаниеМакета();
|
||||
ОписаниеМакета.ИмяОбъектаМетаданныхМакета = ИдентификаторМакета;
|
||||
@@ -1234,12 +1244,11 @@
|
||||
ПослеПодключенияРасширения = Новый ОписаниеОповещения("ПослеПодключенияРасширения", ЭтотОбъект, ДополнительныеПараметры);
|
||||
ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами(ПослеПодключенияРасширения);
|
||||
|
||||
Элементы.ПолеДокументаИнструкции.Видимость = Ложь;
|
||||
Элементы.ОткрытьРедактор.КнопкаПоУмолчанию = Ложь;
|
||||
Элементы.ЗаписатьИЗакрыть.КнопкаПоУмолчанию = Истина;
|
||||
|
||||
Элементы.ПолеДокументаИнструкции.Видимость = Ложь;
|
||||
Элементы.ОтобразитьИнструкцию.Пометка = Элементы.ПолеДокументаИнструкции.Видимость;
|
||||
Элементы.ОтобразитьИнструкцию.Пометка = Ложь;
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
@@ -2364,14 +2373,14 @@
|
||||
&НаКлиенте
|
||||
Процедура НазначениеМакетаНажатие(Элемент)
|
||||
|
||||
ПараметрыПодбора = Новый Структура;
|
||||
ПараметрыПодбора.Вставить("ВыбранныеОбъектыМетаданных", ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ИсточникиДанных));
|
||||
ПараметрыПодбора.Вставить("ВыбиратьСсылки", Истина);
|
||||
ПараметрыПодбора.Вставить("Заголовок", НСтр("ru = 'Назначение макета'"));
|
||||
ПараметрыПодбора.Вставить("ФильтрПоОбъектамМетаданных", ОбъектыСКомандамиПечати());
|
||||
ПараметрыПодбора = СтандартныеПодсистемыКлиентСервер.ПараметрыВыбораОбъектовМетаданных();
|
||||
ПараметрыПодбора.ВыбранныеОбъектыМетаданных = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ИсточникиДанных);
|
||||
ПараметрыПодбора.ВыбиратьСсылки = Истина;
|
||||
ПараметрыПодбора.Заголовок = НСтр("ru = 'Назначение макета'");
|
||||
ПараметрыПодбора.ФильтрПоОбъектамМетаданных = ОбъектыСКомандамиПечати();
|
||||
|
||||
ОписаниеОповещения = Новый ОписаниеОповещения("ПриВыбореВладельцевМакета", ЭтотОбъект);
|
||||
ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыПодбора, , , , , ОписаниеОповещения);
|
||||
СтандартныеПодсистемыКлиент.ВыбратьОбъектыМетаданных(ПараметрыПодбора, ОписаниеОповещения);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -282,14 +282,14 @@
|
||||
&НаКлиенте
|
||||
Процедура ВладельцыМакетаНажатие(Элемент)
|
||||
|
||||
ПараметрыПодбора = Новый Структура;
|
||||
ПараметрыПодбора.Вставить("ВыбранныеОбъектыМетаданных", ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ИсточникиДанных));
|
||||
ПараметрыПодбора.Вставить("ВыбиратьСсылки", Истина);
|
||||
ПараметрыПодбора.Вставить("Заголовок", НСтр("ru = 'Назначение макета'"));
|
||||
ПараметрыПодбора.Вставить("ФильтрПоОбъектамМетаданных", ОбъектыСКомандамиПечати());
|
||||
ПараметрыПодбора = СтандартныеПодсистемыКлиентСервер.ПараметрыВыбораОбъектовМетаданных();
|
||||
ПараметрыПодбора.ВыбранныеОбъектыМетаданных = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ИсточникиДанных);
|
||||
ПараметрыПодбора.ВыбиратьСсылки = Истина;
|
||||
ПараметрыПодбора.Заголовок = НСтр("ru = 'Назначение макета'");
|
||||
ПараметрыПодбора.ФильтрПоОбъектамМетаданных = ОбъектыСКомандамиПечати();
|
||||
|
||||
ОписаниеОповещения = Новый ОписаниеОповещения("ПриВыбореВладельцевМакета", ЭтотОбъект);
|
||||
ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыПодбора, , , , , ОписаниеОповещения);
|
||||
СтандартныеПодсистемыКлиент.ВыбратьОбъектыМетаданных(ПараметрыПодбора, ОписаниеОповещения);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -277,6 +277,52 @@
|
||||
<textSize>Normal</textSize>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>ТаблицаПодписейМашиночитаемаяДоверенность</name>
|
||||
<id>97</id>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Машиночитаемая доверенность</value>
|
||||
</title>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<dataPath xsi:type="form:DataPath">
|
||||
<segments>ТаблицаПодписей.МашиночитаемаяДоверенностьПредставление</segments>
|
||||
</dataPath>
|
||||
<extendedTooltip>
|
||||
<name>ТаблицаПодписейМашиночитаемаяДоверенностьРасширеннаяПодсказка</name>
|
||||
<id>99</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>ТаблицаПодписейМашиночитаемаяДоверенностьКонтекстноеМеню</name>
|
||||
<id>98</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>
|
||||
<height>2</height>
|
||||
<wrap>true</wrap>
|
||||
<chooseType>true</chooseType>
|
||||
<typeDomainEnabled>true</typeDomainEnabled>
|
||||
<textEdit>true</textEdit>
|
||||
<textSize>Normal</textSize>
|
||||
<heightControlVariant>ByContent</heightControlVariant>
|
||||
</extInfo>
|
||||
</items>
|
||||
<commandBarLocation>None</commandBarLocation>
|
||||
<autoCommandBar>
|
||||
<name>ТаблицаПодписейКоманднаяПанель</name>
|
||||
@@ -743,6 +789,51 @@
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>МашиночитаемаяДоверенность</name>
|
||||
<id>13</id>
|
||||
<valueType>
|
||||
<types>ValueList</types>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>МашиночитаемаяДоверенностьПредставление</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Машиночитаемая доверенность представление</value>
|
||||
</title>
|
||||
<id>14</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>Отпечаток</name>
|
||||
<id>9</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>БольшеНеСпрашивать</name>
|
||||
|
||||
@@ -45,6 +45,8 @@
|
||||
|
||||
ЗаполнитьПодписи(Параметры.Объект);
|
||||
|
||||
ЭлектроннаяПодписьЛокализация.ПриСозданииНаСервере(ЭтотОбъект);
|
||||
|
||||
БольшеНеСпрашивать = Ложь;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -105,7 +107,7 @@
|
||||
Если ТипЗнч(Объект) = Тип("Строка") Тогда
|
||||
КоллекцияПодписей = ПолучитьИзВременногоХранилища(Объект);
|
||||
Иначе
|
||||
КоллекцияПодписей = ЭлектроннаяПодпись.УстановленныеПодписи(Объект);
|
||||
КоллекцияПодписей = ЭлектроннаяПодпись.УстановленныеПодписи(Объект, Неопределено, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Для каждого ВсеСвойстваПодписи Из КоллекцияПодписей Цикл
|
||||
@@ -115,6 +117,16 @@
|
||||
НоваяСтрока.АдресПодписи = ПоместитьВоВременноеХранилище(
|
||||
ВсеСвойстваПодписи.Подпись, УникальныйИдентификатор);
|
||||
|
||||
Если ЗначениеЗаполнено(ВсеСвойстваПодписи.РезультатПроверкиПодписиПоМЧД) Тогда
|
||||
Для Каждого РезультатПроверкиПодписиПоМЧД Из ВсеСвойстваПодписи.РезультатПроверкиПодписиПоМЧД Цикл
|
||||
НоваяСтрока.МашиночитаемаяДоверенность.Добавить(
|
||||
РезультатПроверкиПодписиПоМЧД.МашиночитаемаяДоверенность);
|
||||
НоваяСтрока.МашиночитаемаяДоверенностьПредставление = НоваяСтрока.МашиночитаемаяДоверенностьПредставление
|
||||
+ ?(ЗначениеЗаполнено(НоваяСтрока.МашиночитаемаяДоверенностьПредставление), Символы.ПС, "")
|
||||
+ РезультатПроверкиПодписиПоМЧД.МашиночитаемаяДоверенность;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
ДанныеПоСертификату = ЭлектроннаяПодписьСлужебный.ДанныеПоСертификату(ВсеСвойстваПодписи, УникальныйИдентификатор);
|
||||
ЗаполнитьЗначенияСвойств(НоваяСтрока, ДанныеПоСертификату);
|
||||
|
||||
|
||||
@@ -103,6 +103,13 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
|
||||
Процедура ПриЗаполненииСписковСОграничениемДоступа(Списки) Экспорт
|
||||
|
||||
Списки.Вставить(Метаданные.Документы.Анкета, Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
@@ -275,7 +275,7 @@
|
||||
// установить расширение для работы с 1С:Предприятием.
|
||||
// Необязательный. Значение по умолчанию: Ложь.
|
||||
// * Менеджер - Строка - полное имя объекта метаданных, отвечающего за выполнение команды.
|
||||
// Например, "Отчет._ДемоКнигаПокупок".
|
||||
// Например, "Отчет.КнигаПокупок".
|
||||
// * ИмяФормы - Строка - имя формы, которую требуется открыть или получить для выполнения команды.
|
||||
// Если Обработчик не указан, то у формы вызывается метод "Открыть".
|
||||
// * КлючВарианта - Строка - имя варианта отчета, открываемого при выполнении команды.
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
// Объекты - Массив из ОбъектМетаданных
|
||||
//
|
||||
// Пример:
|
||||
// Объекты.Добавить(Метаданные.Справочники._ДемоНоменклатура);
|
||||
// Объекты.Добавить(Метаданные.Справочники._ДемоКонтрагенты);
|
||||
// Объекты.Добавить(Метаданные.Справочники.Номенклатура);
|
||||
// Объекты.Добавить(Метаданные.Справочники.Контрагенты);
|
||||
//
|
||||
Процедура ПриОпределенииОбъектовСКомандойГрупповогоИзмененияОбъектов(Объекты) Экспорт
|
||||
|
||||
|
||||
@@ -692,6 +692,7 @@
|
||||
|
||||
// Выполнить в основном потоке.
|
||||
Если ВыполнитьБезФоновогоЗадания Тогда
|
||||
СообщенияПередВызовом = ПолучитьСообщенияПользователю(Истина);
|
||||
Попытка
|
||||
Если ПараметрыВыполнения.Свойство("ЭтоФункция") И ПараметрыВыполнения.ЭтоФункция Тогда
|
||||
ВызватьФункцию(ИмяПроцедуры, ПараметрыЭкспортнойПроцедуры, ПараметрыВыполнения);
|
||||
@@ -715,6 +716,10 @@
|
||||
ЗаписьЖурналаРегистрации(НСтр("ru = 'Длительные операции.Ошибка выполнения'", ОбщегоНазначения.КодОсновногоЯзыка()),
|
||||
УровеньЖурналаРегистрации.Ошибка, , , Результат.ПодробноеПредставлениеОшибки);
|
||||
КонецПопытки;
|
||||
Результат.Сообщения = ПолучитьСообщенияПользователю(Истина);
|
||||
Для Каждого Сообщение Из СообщенияПередВызовом Цикл
|
||||
Сообщение.Сообщить();
|
||||
КонецЦикла;
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
@@ -5322,6 +5322,11 @@
|
||||
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
|
||||
Процедура ПриЗаполненииСписковСОграничениемДоступа(Списки) Экспорт
|
||||
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Анкетирование") Тогда
|
||||
МодульАнкетирование = ОбщегоНазначения.ОбщийМодуль("Анкетирование");
|
||||
МодульАнкетирование.ПриЗаполненииСписковСОграничениемДоступа(Списки);
|
||||
КонецЕсли;
|
||||
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.БизнесПроцессыИЗадачи") Тогда
|
||||
МодульБизнесПроцессыИЗадачиСервер = ОбщегоНазначения.ОбщийМодуль("БизнесПроцессыИЗадачиСервер");
|
||||
МодульБизнесПроцессыИЗадачиСервер.ПриЗаполненииСписковСОграничениемДоступа(Списки);
|
||||
|
||||
@@ -710,70 +710,18 @@
|
||||
//
|
||||
Функция ДанныеКлассификатора() Экспорт
|
||||
|
||||
ДанныеФайлов = Неопределено;
|
||||
ДанныеКлассификатора = Новый Структура;
|
||||
|
||||
Идентификаторы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ИдентификаторКлассификатора());
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.РаботаСКлассификаторами") Тогда
|
||||
МодульРаботаСКлассификаторами = ОбщегоНазначения.ОбщийМодуль("РаботаСКлассификаторами");
|
||||
ДанныеФайлов = МодульРаботаСКлассификаторами.ПолучитьФайлыКлассификаторов(Идентификаторы);
|
||||
КонецЕсли;
|
||||
ПроизводственныеКалендари = Новый Структура;
|
||||
ПроизводственныеКалендари.Вставить("ИмяТаблицы", "");
|
||||
ПроизводственныеКалендари.Вставить("Данные", Новый ТаблицаЗначений());
|
||||
|
||||
Если ДанныеФайлов = Неопределено Тогда
|
||||
ТекстСообщения = НСтр("ru = 'Не удалось получить данные календаря.
|
||||
|Классификаторы не поддерживаются или подсистема ""Работа с классификаторами"" отсутствует.'");
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецЕсли;
|
||||
ДанныеПроизводственныхКалендарей = Новый Структура(Новый ФиксированнаяСтруктура(ПроизводственныеКалендари));
|
||||
|
||||
Если Не ПустаяСтрока(ДанныеФайлов.КодОшибки) Тогда
|
||||
ИмяСобытия = НСтр("ru = 'Календарные графики.Получение файла классификатора'", ОбщегоНазначения.КодОсновногоЯзыка());
|
||||
ЗаписьЖурналаРегистрации(
|
||||
ИмяСобытия,
|
||||
УровеньЖурналаРегистрации.Ошибка,,,
|
||||
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось получить данные календаря.
|
||||
|%1'"),
|
||||
ДанныеФайлов.ИнформацияОбОшибке));
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось получить данные календаря.
|
||||
|%1.'"),
|
||||
ДанныеФайлов.СообщениеОбОшибке);
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецЕсли;
|
||||
ДанныеКлассификатора.Вставить("ПроизводственныеКалендари", ПроизводственныеКалендари);
|
||||
ДанныеКлассификатора.Вставить("ДанныеПроизводственныхКалендарей", ДанныеПроизводственныхКалендарей);
|
||||
|
||||
ОтборСтрок = Новый Структура("Идентификатор");
|
||||
ОтборСтрок.Идентификатор = ИдентификаторКлассификатора();
|
||||
НайденныеСтроки = ДанныеФайлов.ДанныеКлассификаторов.НайтиСтроки(ОтборСтрок);
|
||||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||||
ТекстСообщения = НСтр("ru = 'Не удалось получить данные календаря.
|
||||
|Полученные классификаторы не содержат календарей.'");
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецЕсли;
|
||||
|
||||
СведенияФайла = НайденныеСтроки[0];
|
||||
|
||||
Если СведенияФайла.Версия < ВерсияКалендарей() Тогда
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось обработать полученные данные календаря из-за конфликта версий.
|
||||
|Версия календарей
|
||||
|- полученного классификатора %1,
|
||||
|- встроенных в конфигурацию %2,
|
||||
|- загруженного ранее классификатора %3.
|
||||
|Рекомендуется выполнить обновление классификаторов.'"),
|
||||
СведенияФайла.Версия,
|
||||
ВерсияКалендарей(),
|
||||
ВерсияЗагруженныхКалендарей());
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
ДанныеКлассификатора = ДанныеФайлаКлассификатора(СведенияФайла.АдресФайла);
|
||||
Исключение
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось обработать полученные данные календаря.
|
||||
|%1.'"),
|
||||
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецПопытки;
|
||||
КалендарныеГрафикиЛокализация.ПриПолученииДанныхКлассификатора(ДанныеКлассификатора);
|
||||
|
||||
Возврат ДанныеКлассификатора;
|
||||
|
||||
@@ -954,7 +902,7 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ДанныеФайлаКлассификатора(Адрес)
|
||||
Функция ДанныеФайлаКлассификатора(Адрес) Экспорт
|
||||
|
||||
ДанныеКлассификатора = Новый Структура(
|
||||
"ПроизводственныеКалендари,
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (c) 2024, ООО 1С-Софт
|
||||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||
// Текст лицензии доступен по ссылке:
|
||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Запрашивает файл с данными классификатора календарей.
|
||||
// Преобразует полученный файл в структуру с таблицами календарей и их данных.
|
||||
// Если не удалось получить файл классификатора, вызывается исключение.
|
||||
//
|
||||
// Параметры:
|
||||
// ДанныеКлассификатора - Структура:
|
||||
// * ПроизводственныеКалендари - Структура:
|
||||
// * ИмяТаблицы - Строка - имя таблицы.
|
||||
// * Данные - ТаблицаЗначений - преобразованная из XML таблица календарей.
|
||||
// * ДанныеПроизводственныхКалендарей - Структура:
|
||||
// * ИмяТаблицы - Строка - имя таблицы.
|
||||
// * Данные - ТаблицаЗначений - преобразованная из XML таблица данных календарей.
|
||||
//
|
||||
Процедура ПриПолученииДанныхКлассификатора(ДанныеКлассификатора) Экспорт
|
||||
|
||||
// Локализация
|
||||
ДанныеФайлов = Неопределено;
|
||||
|
||||
Идентификаторы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(КалендарныеГрафики.ИдентификаторКлассификатора());
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.РаботаСКлассификаторами") Тогда
|
||||
МодульРаботаСКлассификаторами = ОбщегоНазначения.ОбщийМодуль("РаботаСКлассификаторами");
|
||||
ДанныеФайлов = МодульРаботаСКлассификаторами.ПолучитьФайлыКлассификаторов(Идентификаторы);
|
||||
КонецЕсли;
|
||||
|
||||
Если ДанныеФайлов = Неопределено Тогда
|
||||
ТекстСообщения = НСтр("ru = 'Не удалось получить данные календаря.
|
||||
|Классификаторы не поддерживаются или подсистема ""Работа с классификаторами"" отсутствует.'");
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ПустаяСтрока(ДанныеФайлов.КодОшибки) Тогда
|
||||
ИмяСобытия = НСтр("ru = 'Календарные графики.Получение файла классификатора'", ОбщегоНазначения.КодОсновногоЯзыка());
|
||||
ЗаписьЖурналаРегистрации(
|
||||
ИмяСобытия,
|
||||
УровеньЖурналаРегистрации.Ошибка,,,
|
||||
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось получить данные календаря.
|
||||
|%1'"),
|
||||
ДанныеФайлов.ИнформацияОбОшибке));
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось получить данные календаря.
|
||||
|%1.'"),
|
||||
ДанныеФайлов.СообщениеОбОшибке);
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецЕсли;
|
||||
|
||||
ОтборСтрок = Новый Структура("Идентификатор");
|
||||
ОтборСтрок.Идентификатор = КалендарныеГрафики.ИдентификаторКлассификатора();
|
||||
НайденныеСтроки = ДанныеФайлов.ДанныеКлассификаторов.НайтиСтроки(ОтборСтрок);
|
||||
Если НайденныеСтроки.Количество() = 0 Тогда
|
||||
ТекстСообщения = НСтр("ru = 'Не удалось получить данные календаря.
|
||||
|Полученные классификаторы не содержат календарей.'");
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецЕсли;
|
||||
|
||||
СведенияФайла = НайденныеСтроки[0];
|
||||
|
||||
Если СведенияФайла.Версия < КалендарныеГрафики.ВерсияКалендарей() Тогда
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось обработать полученные данные календаря из-за конфликта версий.
|
||||
|Версия календарей
|
||||
|- полученного классификатора %1,
|
||||
|- встроенных в конфигурацию %2,
|
||||
|- загруженного ранее классификатора %3.
|
||||
|Рекомендуется выполнить обновление классификаторов.'"),
|
||||
СведенияФайла.Версия,
|
||||
КалендарныеГрафики.ВерсияКалендарей(),
|
||||
КалендарныеГрафики.ВерсияЗагруженныхКалендарей());
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
ДанныеКлассификатора = КалендарныеГрафики.ДанныеФайлаКлассификатора(СведенияФайла.АдресФайла);
|
||||
Исключение
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось обработать полученные данные календаря.
|
||||
|%1.'"),
|
||||
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецПопытки;
|
||||
// Конец Локализация
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="87251f18-17da-497a-9b39-f84a388c855c">
|
||||
<name>КалендарныеГрафикиЛокализация</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Календарные графики локализация</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
||||
@@ -2556,33 +2556,23 @@
|
||||
ИмяПоляПоиска = "ПредставлениеПутиКДанным";
|
||||
КонецЕсли;
|
||||
|
||||
Владелец = Неопределено;
|
||||
Папки = Новый Массив;
|
||||
Владельцы = Новый Массив;
|
||||
|
||||
Для Каждого Реквизит Из КоллекцияРеквизитов Цикл
|
||||
Если НРег(Реквизит[ИмяПоляПоиска]) = НРег(ПутьКДанным) Тогда
|
||||
Возврат Реквизит;
|
||||
КонецЕсли;
|
||||
Если Реквизит.Папка Тогда
|
||||
Папки.Добавить(Реквизит);
|
||||
Иначе
|
||||
Если СтрНачинаетсяС(НРег(ПутьКДанным), НРег(Реквизит[ИмяПоляПоиска]) + ".") Тогда
|
||||
Владелец = Реквизит;
|
||||
КонецЕсли;
|
||||
Если Реквизит.Папка Или СтрНачинаетсяС(НРег(ПутьКДанным), НРег(Реквизит[ИмяПоляПоиска]) + ".") Тогда
|
||||
Владельцы.Добавить(Реквизит);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если Владелец <> Неопределено Тогда
|
||||
Для Каждого Владелец Из Владельцы Цикл
|
||||
РазвернутьРеквизит(Владелец.ПолучитьИдентификатор(), ИмяСписка, Форма);
|
||||
Возврат НайтиРеквизит(Форма, ИмяСписка, ПутьКДанным, Владелец.ПолучитьЭлементы(), ИскатьПоПредставлению);
|
||||
КонецЕсли;
|
||||
НайденныйРеквизит = НайтиРеквизит(Форма, ИмяСписка, ПутьКДанным, Владелец.ПолучитьЭлементы(), ИскатьПоПредставлению);
|
||||
|
||||
Для Каждого Папка Из Папки Цикл
|
||||
РазвернутьРеквизит(Папка.ПолучитьИдентификатор(), ИмяСписка, Форма);
|
||||
Реквизит = НайтиРеквизит(Форма, ИмяСписка, ПутьКДанным, Папка.ПолучитьЭлементы(), ИскатьПоПредставлению);
|
||||
|
||||
Если Реквизит <> Неопределено Тогда
|
||||
Возврат Реквизит;
|
||||
Если НайденныйРеквизит <> Неопределено Тогда
|
||||
Возврат НайденныйРеквизит;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
// Проверка.Причины = НСтр("ru='Не введен комментарий в документе.'");
|
||||
// Проверка.Рекомендация = НСтр("ru='Ввести комментарий в документе.'");
|
||||
// Проверка.Идентификатор = "ПроверитьКомментарийВПоступленииТоваров";
|
||||
// Проверка.ОбработчикПроверки = "_ДемоСтандартныеПодсистемы.ПроверитьКомментарийВПоступленииТоваров";
|
||||
// Проверка.ОбработчикПроверки = "СтандартныеПодсистемы.ПроверитьКомментарийВПоступленииТоваров";
|
||||
// Проверка.ДатаНачалаПроверки = Дата('20140101000000');
|
||||
// Проверка.ЛимитПроблем = 3;
|
||||
// 2) Добавление группы проверок
|
||||
@@ -224,11 +224,11 @@
|
||||
// Пример:
|
||||
// Проверка = Проверки.Добавить();
|
||||
// Проверка.ИдентификаторГруппы = "СистемныеПроверки";
|
||||
// Проверка.Наименование = НСтр("ru='Демо: Проверка заполнения комментария в документах ""Демо: Поступление товаров""'");
|
||||
// Проверка.Наименование = НСтр("ru='Проверка заполнения комментария в документах ""Поступление товаров""'");
|
||||
// Проверка.Причины = НСтр("ru='Не введен комментарий в документе.'");
|
||||
// Проверка.Рекомендация = НСтр("ru='Ввести комментарий в документе.'");
|
||||
// Проверка.Идентификатор = "ПроверитьКомментарийВПоступленииТоваров";
|
||||
// Проверка.ОбработчикПроверки = "_ДемоСтандартныеПодсистемы.ПроверитьКомментарийВПоступленииТоваров";
|
||||
// Проверка.ОбработчикПроверки = "СтандартныеПодсистемы.ПроверитьКомментарийВПоступленииТоваров";
|
||||
// Проверка.ДатаНачалаПроверки = Дата('20140101000000');
|
||||
// Проверка.ЛимитПроблем = 3;
|
||||
//
|
||||
|
||||
@@ -154,14 +154,14 @@
|
||||
Коллекции = Новый СписокЗначений;
|
||||
Коллекции.Добавить("Роли");
|
||||
|
||||
ПараметрыПодбора = Новый Структура;
|
||||
ПараметрыПодбора.Вставить("ВыбиратьСсылки", Истина);
|
||||
ПараметрыПодбора.Вставить("ВыбранныеОбъектыМетаданных", Выбранные);
|
||||
ПараметрыПодбора.Вставить("КоллекцииВыбираемыхОбъектовМетаданных", Коллекции);
|
||||
ПараметрыПодбора.Вставить("СпособГруппировкиОбъектов", "ПоВидам");
|
||||
ПараметрыПодбора.Вставить("Заголовок", НСтр("ru = 'Подбор ролей'"));
|
||||
ПараметрыПодбора = СтандартныеПодсистемыКлиентСервер.ПараметрыВыбораОбъектовМетаданных();
|
||||
ПараметрыПодбора.ВыбиратьСсылки = Истина;
|
||||
ПараметрыПодбора.ВыбранныеОбъектыМетаданных = Выбранные;
|
||||
ПараметрыПодбора.КоллекцииВыбираемыхОбъектовМетаданных = Коллекции;
|
||||
ПараметрыПодбора.СпособГруппировкиОбъектов = "ПоВидам";
|
||||
ПараметрыПодбора.Заголовок = НСтр("ru = 'Подбор ролей'");
|
||||
|
||||
ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыПодбора,,,,, ОповещениеОЗакрытии);
|
||||
СтандартныеПодсистемыКлиент.ВыбратьОбъектыМетаданных(ПараметрыПодбора, ОповещениеОЗакрытии);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -173,6 +173,8 @@
|
||||
| МашиночитаемыеДоверенностиДоверители.ОГРН КАК ДоверительОГРН,
|
||||
| МашиночитаемыеДоверенностиДоверители.СНИЛС КАК ДоверительСНИЛС,
|
||||
| МашиночитаемыеДоверенностиДоверители.КПП КАК ДоверительКПП,
|
||||
| МашиночитаемыеДоверенностиДоверители.ФИО КАК ДоверительФИО,
|
||||
| МашиночитаемыеДоверенностиПредставители.ФИО КАК ПредставительФИО,
|
||||
| МашиночитаемыеДоверенностиДоверители.Организация КАК ДоверительОрганизация,
|
||||
| МашиночитаемыеДоверенностиДоверители.ФизическоеЛицо КАК ДоверительФизическоеЛицо,
|
||||
| МашиночитаемыеДоверенностиДоверители.НаименованиеОрганизации КАК ДоверительНаименованиеОрганизации,
|
||||
@@ -185,18 +187,21 @@
|
||||
| МашиночитаемыеДоверенностиСтатусы.Подписана КАК Подписана,
|
||||
| МашиночитаемыеДоверенности.ДатаОкончания КАК ДатаОкончания,
|
||||
| МашиночитаемыеДоверенности.ДатаОтмены КАК ДатаОтмены,
|
||||
| МашиночитаемыеДоверенности.ПометкаУдаления КАК ПометкаУдаления
|
||||
| МашиночитаемыеДоверенности.ПометкаУдаления КАК ПометкаУдаления,
|
||||
| МашиночитаемыеДоверенности.СтатусВернаУстановленВручную,
|
||||
| МашиночитаемыеДоверенности.УстановившийСтатусВерна
|
||||
|ИЗ
|
||||
| РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиПредставители
|
||||
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК МашиночитаемыеДоверенностиДоверители
|
||||
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.МашиночитаемыеДоверенностиПредставителиИДоверители КАК
|
||||
| МашиночитаемыеДоверенностиДоверители
|
||||
| ПО (МашиночитаемыеДоверенностиПредставители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Представитель))
|
||||
| И (МашиночитаемыеДоверенностиДоверители.ТипУчастника = ЗНАЧЕНИЕ(Перечисление.ТипыУчастниковМЧД.Доверитель))
|
||||
| И (МашиночитаемыеДоверенностиДоверители.МашиночитаемаяДоверенность = МашиночитаемыеДоверенностиПредставители.МашиночитаемаяДоверенность)
|
||||
| И
|
||||
| (МашиночитаемыеДоверенностиДоверители.МашиночитаемаяДоверенность = МашиночитаемыеДоверенностиПредставители.МашиночитаемаяДоверенность)
|
||||
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МашиночитаемыеДоверенности КАК МашиночитаемыеДоверенности
|
||||
| ПО МашиночитаемыеДоверенностиПредставители.МашиночитаемаяДоверенность = МашиночитаемыеДоверенности.Ссылка
|
||||
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МашиночитаемыеДоверенностиСтатусы КАК МашиночитаемыеДоверенностиСтатусы
|
||||
| ПО (МашиночитаемыеДоверенности.Ссылка = МашиночитаемыеДоверенностиСтатусы.МашиночитаемаяДоверенность)}
|
||||
|";
|
||||
| ПО (МашиночитаемыеДоверенности.Ссылка = МашиночитаемыеДоверенностиСтатусы.МашиночитаемаяДоверенность)}";
|
||||
|
||||
Условия = Новый Массив;
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
// * Полномочия - Массив из Строка - коды полномочий
|
||||
// * СертификатДоверителя - см. МашиночитаемыеДоверенностиФНС.ОтборДляДоверенностейПоСертификату
|
||||
// * СертификатПредставителя - см. МашиночитаемыеДоверенностиФНС.ОтборДляДоверенностейПоСертификату
|
||||
// * НаДату - Дата - статусы отобразятся на переданную дату.
|
||||
//
|
||||
Функция ОтборыСпискаДоверенностей() Экспорт
|
||||
Результат = Новый Структура;
|
||||
@@ -44,6 +45,7 @@
|
||||
Результат.Вставить("Полномочия");
|
||||
Результат.Вставить("СертификатДоверителя");
|
||||
Результат.Вставить("СертификатПредставителя");
|
||||
Результат.Вставить("НаДату");
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
|
||||
|
||||
@@ -733,6 +733,82 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает новые либо перезаполняет существующие элементы справочника МашиночитаемыеДоверенности данными из файлов.
|
||||
//
|
||||
// Параметры:
|
||||
// ЗагруженныеФайлы - Массив из Структура - файлы доверенностей и подписей, архивы zip:
|
||||
// * ИмяФайла - Строка - имя файла без пути к нему,
|
||||
// * Хранение - Строка - адрес двоичных данных файла во временном хранилище.
|
||||
// - Структура - уже разобранные файлы доверенностей и подписей:
|
||||
// * ФайлыДоверенностей - Соответствие
|
||||
// * ПодписиФайлов - Соответствие
|
||||
//
|
||||
// Замещать - Булево - при замещении выполняется перезаполнение элемента, все имеющиеся присоединенные файлы при этом
|
||||
// помечаются на удаление.
|
||||
//
|
||||
Функция ЗагрузитьДоверенностиВИнформационнуюБазу(ЗагруженныеФайлы, Замещать = Ложь) Экспорт
|
||||
|
||||
Возврат Справочники.МашиночитаемыеДоверенности.ЗагрузитьДоверенностиВИнформационнуюБазу(ЗагруженныеФайлы, Замещать = Ложь);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает свойства или ссылку на существующие элементы справочника МашиночитаемыеДоверенности.
|
||||
//
|
||||
// Параметры:
|
||||
// ЗагруженныеФайлы - Массив из Структура - файлы доверенностей и подписей, архивы zip:
|
||||
// * ИмяФайла - Строка - имя файла без пути к нему,
|
||||
// * Хранение - Строка - адрес двоичных данных файла во временном хранилище.
|
||||
// - Структура - уже разобранные файлы доверенностей и подписей:
|
||||
// * ФайлыДоверенностей - Соответствие
|
||||
// * ПодписиФайлов - Соответствие
|
||||
//
|
||||
Функция СвойстваДоверенностейИзФайлов(ЗагруженныеФайлы, УникальныйИдентификатор) Экспорт
|
||||
|
||||
Возврат Справочники.МашиночитаемыеДоверенности.СвойстваДоверенностейИзФайлов(ЗагруженныеФайлы,
|
||||
УникальныйИдентификатор);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Результат проверки подписи по МЧД.
|
||||
//
|
||||
// Параметры:
|
||||
// Доверенность - СправочникСсылка.МашиночитаемыеДоверенности
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * МашиночитаемаяДоверенность - СправочникСсылка.МашиночитаемыеДоверенности
|
||||
// * Представление - Строка - представление доверенности для отображения пользователям, т.к. может не быть прав на чтение.
|
||||
// * ТребуетсяПроверка - Булево
|
||||
// * ДатаПроверки - Дата
|
||||
// * Верна - Булево
|
||||
// * ПодписантСоответствуетПредставителю - Булево
|
||||
// * СовместныеПолномочия - Булево
|
||||
// * СовместныеПолномочияВерны - Булево
|
||||
// * СтатусВернаУстановленВручную - Булево
|
||||
// * УстановившийСтатусВерна - СправочникСсылка.Пользователи
|
||||
// * ПротоколПроверки - Соответствие из КлючИЗначение:
|
||||
// ** Ключ - Строка - идентификатор проверки
|
||||
// ** Значение - см. МашиночитаемыеДоверенностиФНС.РезультатПроверкиДляПротокола
|
||||
//
|
||||
Функция НовыйРезультатПроверкиПодписиПоМЧД(Доверенность) Экспорт
|
||||
|
||||
Структура = Новый Структура;
|
||||
Структура.Вставить("Представление");
|
||||
Структура.Вставить("МашиночитаемаяДоверенность", Доверенность);
|
||||
Структура.Вставить("ТребуетсяПроверка", Истина);
|
||||
Структура.Вставить("ДатаПроверки");
|
||||
Структура.Вставить("Верна");
|
||||
Структура.Вставить("ПодписантСоответствуетПредставителю");
|
||||
Структура.Вставить("СовместныеПолномочия");
|
||||
Структура.Вставить("СовместныеПолномочияВерны");
|
||||
Структура.Вставить("ПротоколПроверки");
|
||||
Структура.Вставить("СтатусВернаУстановленВручную", Ложь);
|
||||
Структура.Вставить("УстановившийСтатусВерна");
|
||||
|
||||
Возврат Структура;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@@ -2539,46 +2615,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Результат проверки подписи по МЧД.
|
||||
//
|
||||
// Параметры:
|
||||
// Доверенность - СправочникСсылка.МашиночитаемыеДоверенности
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * МашиночитаемаяДоверенность - СправочникСсылка.МашиночитаемыеДоверенности
|
||||
// * Представление - Строка - представление доверенности для отображения пользователям, т.к. может не быть прав на чтение.
|
||||
// * ТребуетсяПроверка - Булево
|
||||
// * ДатаПроверки - Дата
|
||||
// * Верна - Булево
|
||||
// * ПодписантСоответствуетПредставителю - Булево
|
||||
// * СовместныеПолномочия - Булево
|
||||
// * СовместныеПолномочияВерны - Булево
|
||||
// * СтатусВернаУстановленВручную - Булево
|
||||
// * УстановившийСтатусВерна - СправочникСсылка.Пользователи
|
||||
// * ПротоколПроверки - Соответствие из КлючИЗначение:
|
||||
// ** Ключ - Строка - идентификатор проверки
|
||||
// ** Значение - см. МашиночитаемыеДоверенностиФНС.РезультатПроверкиДляПротокола
|
||||
//
|
||||
Функция НовыйРезультатПроверкиПодписиПоМЧД(Доверенность) Экспорт
|
||||
|
||||
Структура = Новый Структура;
|
||||
Структура.Вставить("Представление");
|
||||
Структура.Вставить("МашиночитаемаяДоверенность", Доверенность);
|
||||
Структура.Вставить("ТребуетсяПроверка", Истина);
|
||||
Структура.Вставить("ДатаПроверки");
|
||||
Структура.Вставить("Верна");
|
||||
Структура.Вставить("ПодписантСоответствуетПредставителю");
|
||||
Структура.Вставить("СовместныеПолномочия");
|
||||
Структура.Вставить("СовместныеПолномочияВерны");
|
||||
Структура.Вставить("ПротоколПроверки");
|
||||
Структура.Вставить("СтатусВернаУстановленВручную", Ложь);
|
||||
Структура.Вставить("УстановившийСтатусВерна");
|
||||
|
||||
Возврат Структура;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция РеквизитыНотариальнойДоверенности() Экспорт
|
||||
|
||||
Структура = Новый Структура;
|
||||
@@ -2638,7 +2674,7 @@
|
||||
Файл = Новый Файл(ЗагруженныйФайл.ИмяФайла);
|
||||
|
||||
Если НРег(Файл.Расширение) = ".zip" Тогда
|
||||
ДвоичныеДанные = Новый ДвоичныеДанные(ЗагруженныйФайл.ПолноеИмя);
|
||||
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ЗагруженныйФайл.Хранение);
|
||||
ИменаФайловВАрхиве = ИменаФайловВАрхиве(ДвоичныеДанные);
|
||||
|
||||
Для Каждого ИмяФайлаВАрхиве Из ИменаФайловВАрхиве Цикл
|
||||
|
||||
@@ -13776,7 +13776,7 @@
|
||||
// Массив = Новый Массив;
|
||||
// Массив.Добавить("Константа.ИспользоватьСинхронизациюДанных");
|
||||
// Массив.Добавить("Справочник.Валюты");
|
||||
// Массив.Добавить("Справочник._ДемоОрганизации");
|
||||
// Массив.Добавить("Справочник.Организации");
|
||||
// Отбор = Новый Структура;
|
||||
// Отбор.Вставить("ПолноеИмя", Массив);
|
||||
//
|
||||
@@ -14017,7 +14017,7 @@
|
||||
// Возвращаемое значение:
|
||||
// ТаблицаЗначений - содержит строки с описанием подробных отборов по сценарию узла:
|
||||
// * ПолноеИмяМетаданных - Строка - полное имя метаданных регистрируемого объекта, отбор которого описывает строка.
|
||||
// Например "Документ._ДемоПоступлениеТоваров". Можно
|
||||
// Например "Документ.ПоступлениеТоваров". Можно
|
||||
// использовать специальные значения "ВсеДокументы" и
|
||||
// "ВсеСправочники" для отбора соответственно всех
|
||||
// документов и всех справочников, регистрирующихся на узле "Получатель".
|
||||
|
||||
@@ -3849,7 +3849,7 @@
|
||||
// Либо точка маршрута, например, "БизнесПроцесс.Задание.ТочкаМаршрута.УдалитьВернутьИсполнителю".
|
||||
// Либо все точки маршрута, например, "БизнесПроцесс.Задание.Точки".
|
||||
// Либо поле регистра, входящее в уникальный индекс,
|
||||
// например, измерение "РегистрСведений._ДемоОтветственныеЛица.Склад".
|
||||
// например, измерение "РегистрСведений.ОтветственныеЛица.Склад".
|
||||
//
|
||||
// Уточнение - Булево - когда в параметре Объект указан удаляемый в будущем объект.
|
||||
// Имя объекта должно начинаться с Удалить.
|
||||
@@ -4288,7 +4288,9 @@
|
||||
СведенияОбОбновлении.ТекущаяИтерацияОбновления = 1;
|
||||
ОбновлениеИнформационнойБазыСлужебный.ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении);
|
||||
|
||||
Если Не ОбщегоНазначения.РазделениеВключено() Тогда
|
||||
Константы.ПорядокОбрабатываемыхДанных.Установить(Перечисления.ПорядокОбработчиковОбновления.Критичный);
|
||||
КонецЕсли;
|
||||
|
||||
Константы.ОтложенноеОбновлениеЗавершеноУспешно.Установить(Ложь);
|
||||
Если Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
|
||||
|
||||
Описание.Имя = "СтандартныеПодсистемы";
|
||||
Описание.Версия = "3.1.10.226";
|
||||
Описание.Версия = "3.1.10.248";
|
||||
Описание.ИдентификаторИнтернетПоддержки = "SSL";
|
||||
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
|
||||
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
|
||||
|
||||
@@ -1608,8 +1608,8 @@
|
||||
// "<ВидОМ>.<ИмяОМ>.<ТипРеквизитаИлиТЧ>.<ИмяРеквизитаИлиТЧ>[.<ТипРеквизита>.<ИмяРеквизитаТЧ>]".
|
||||
// Примеры:
|
||||
// "РегистрСведений.ВерсииОбъектов.Реквизит.АвторВерсии",
|
||||
// "Документ._ДемоЗаказПокупателя.ТабличнаяЧасть.СчетаНаОплату.Реквизит.Счет",
|
||||
// "ПланВидовРасчета._ДемоОсновныеНачисления.СтандартнаяТабличнаяЧасть.БазовыеВидыРасчета.СтандартныйРеквизит.ВидРасчета".
|
||||
// "Документ.ЗаказПокупателя.ТабличнаяЧасть.СчетаНаОплату.Реквизит.Счет",
|
||||
// "ПланВидовРасчета.ОсновныеНачисления.СтандартнаяТабличнаяЧасть.БазовыеВидыРасчета.СтандартныйРеквизит.ВидРасчета".
|
||||
// Относительный путь к реквизиту должен получиться таким, чтобы его можно было использовать в условиях запроса:
|
||||
// "<ИмяРеквизитаИлиТЧ>[.<ИмяРеквизитаТЧ>]".
|
||||
Если КоличествоПодстрок = 4 Тогда
|
||||
@@ -2017,8 +2017,9 @@
|
||||
Функция ИнформационнаяБазаФайловая(Знач СтрокаСоединенияИнформационнойБазы = "") Экспорт
|
||||
|
||||
Если ПустаяСтрока(СтрокаСоединенияИнформационнойБазы) Тогда
|
||||
СтрокаСоединенияИнформационнойБазы = СтрокаСоединенияИнформационнойБазы();
|
||||
Возврат СтандартныеПодсистемыПовтИсп.ИнформационнаяБазаФайловая();
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СтрНайти(ВРег(СтрокаСоединенияИнформационнойБазы), "FILE=") = 1;
|
||||
|
||||
КонецФункции
|
||||
@@ -4517,17 +4518,17 @@
|
||||
// ВерсияИБ - Строка - версия конечной конфигурации, при переходе на которую нужно
|
||||
// выполнить переименование, например, "2.1.2.14".
|
||||
// СтароеПолноеИмя - Строка - старое полное имя объекта метаданных, которое нужно переименовать,
|
||||
// например "Подсистема._ДемоПодсистемы".
|
||||
// например "Подсистема.СлужебныеПодсистемы".
|
||||
// НовоеПолноеИмя - Строка - новое полное имя объекта метаданных, на которое нужно переименовать,
|
||||
// например "Подсистема._ДемоСервисныеПодсистемы".
|
||||
// например "Подсистема.СервисныеПодсистемы".
|
||||
// ИдентификаторБиблиотеки - Строка - внутренний идентификатор библиотеки, к которой относится ВерсияИБ.
|
||||
// Для основной конфигурации не требуется.
|
||||
// Например, "СтандартныеПодсистемы" - как указано
|
||||
// в ОбновлениеИнформационнойБазыБСП.ПриДобавленииПодсистемы.
|
||||
// Пример:
|
||||
// ОбщегоНазначения.ДобавитьПереименование(Итог, "2.1.2.14",
|
||||
// "Подсистема._ДемоПодсистемы",
|
||||
// "Подсистема._ДемоСервисныеПодсистемы");
|
||||
// "Подсистема.СлужебныеПодсистемы",
|
||||
// "Подсистема.СервисныеПодсистемы");
|
||||
//
|
||||
Процедура ДобавитьПереименование(Итог, ВерсияИБ, СтароеПолноеИмя, НовоеПолноеИмя, ИдентификаторБиблиотеки = "") Экспорт
|
||||
|
||||
@@ -7041,7 +7042,7 @@
|
||||
// Реквизиты.Добавить("Номер");
|
||||
// Реквизиты.Добавить("Валюта.НаименованиеПолное");
|
||||
//
|
||||
// Результат = ОбщегоНазначения.ПроверитьСуществованиеРеквизитовОбъекта("Документ._ДемоЗаказПокупателя", Реквизиты);
|
||||
// Результат = ОбщегоНазначения.ПроверитьСуществованиеРеквизитовОбъекта("Документ.ЗаказПокупателя", Реквизиты);
|
||||
//
|
||||
// Если Результат.Ошибка Тогда
|
||||
// ВызватьИсключение Результат.ОписаниеОшибки;
|
||||
|
||||
@@ -1897,9 +1897,8 @@
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
// Проверяем наличие спецсимволов в начале и в конце домена.
|
||||
|
||||
Если ЕстьСимволыВНачалеВКонце(Домен, СпецСимволы) Тогда
|
||||
// Проверяем наличие спецсимволов в начале и в конце имени и домена.
|
||||
Если ЕстьСимволыВНачалеВКонце(ЛокальноеИмя, ".") Или ЕстьСимволыВНачалеВКонце(Домен, СпецСимволы) Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
// Пример:
|
||||
// ИсключенияПоискаСсылок.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов);
|
||||
// ИсключенияПоискаСсылок.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов.Измерения.Объект);
|
||||
// ИсключенияПоискаСсылок.Добавить("ПланВидовРасчета._ДемоОсновныеНачисления.СтандартнаяТабличнаяЧасть.БазовыеВидыРасчета.СтандартныйРеквизит.ВидРасчета");
|
||||
// ИсключенияПоискаСсылок.Добавить("ПланВидовРасчета.ОсновныеНачисления.СтандартнаяТабличнаяЧасть.БазовыеВидыРасчета.СтандартныйРеквизит.ВидРасчета");
|
||||
//
|
||||
Процедура ПриДобавленииИсключенийПоискаСсылок(ИсключенияПоискаСсылок) Экспорт
|
||||
|
||||
@@ -249,8 +249,8 @@
|
||||
//
|
||||
// Пример:
|
||||
// ОбщегоНазначения.ДобавитьПереименование(Итог, "2.1.2.14",
|
||||
// "Подсистема._ДемоПодсистемы",
|
||||
// "Подсистема._ДемоСервисныеПодсистемы");
|
||||
// "Подсистема.СлужебныеПодсистемы",
|
||||
// "Подсистема.СервисныеПодсистемы");
|
||||
//
|
||||
Процедура ПриДобавленииПереименованийОбъектовМетаданных(Итог) Экспорт
|
||||
|
||||
|
||||
@@ -32,49 +32,41 @@
|
||||
// Запрос.УстановитьПараметр("Ссылка", Организация);
|
||||
// Запрос.Текст =
|
||||
// "ВЫБРАТЬ
|
||||
// | _ДемоОрганизации.Ссылка КАК Ссылка,
|
||||
// | _ДемоОрганизации.ВерсияДанных КАК ВерсияДанных,
|
||||
// | _ДемоОрганизации.ПометкаУдаления КАК ПометкаУдаления,
|
||||
// | _ДемоОрганизации.Код КАК Код,
|
||||
// | _ДемоОрганизации.Наименование КАК Наименование,
|
||||
// | _ДемоОрганизации.БИК КАК БИК,
|
||||
// | _ДемоОрганизации.ГлавныйБухгалтер КАК ГлавныйБухгалтер,
|
||||
// | _ДемоОрганизации.Директор КАК Директор,
|
||||
// | _ДемоОрганизации.ИндивидуальныйПредприниматель КАК ИндивидуальныйПредприниматель,
|
||||
// | _ДемоОрганизации.ИНН КАК ИНН,
|
||||
// | _ДемоОрганизации.ИнформационноеОбслуживание КАК ИнформационноеОбслуживание,
|
||||
// | _ДемоОрганизации.КорреспондентскийСчет КАК КорреспондентскийСчет,
|
||||
// | _ДемоОрганизации.КПП КАК КПП,
|
||||
// | _ДемоОрганизации.НаименованиеПолное КАК НаименованиеПолное,
|
||||
// | _ДемоОрганизации.НаименованиеСокращенное КАК НаименованиеСокращенное,
|
||||
// | _ДемоОрганизации.ОГРН КАК ОГРН,
|
||||
// | _ДемоОрганизации.Префикс КАК Префикс,
|
||||
// | _ДемоОрганизации.РасчетныйСчет КАК РасчетныйСчет,
|
||||
// | _ДемоОрганизации.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
|
||||
// | _ДемоОрганизации.ПроизводственныйКалендарь КАК ПроизводственныйКалендарь,
|
||||
// | _ДемоОрганизации.Предопределенный КАК Предопределенный,
|
||||
// | _ДемоОрганизации.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|
||||
// | Организации.Ссылка КАК Ссылка,
|
||||
// | Организации.ВерсияДанных КАК ВерсияДанных,
|
||||
// | Организации.ПометкаУдаления КАК ПометкаУдаления,
|
||||
// | Организации.Код КАК Код,
|
||||
// | Организации.Наименование КАК Наименование,
|
||||
// | Организации.БИК КАК БИК,
|
||||
// | Организации.ГлавныйБухгалтер КАК ГлавныйБухгалтер,
|
||||
// | Организации.Директор КАК Директор,
|
||||
// | Организации.ИндивидуальныйПредприниматель КАК ИндивидуальныйПредприниматель,
|
||||
// | Организации.ИНН КАК ИНН,
|
||||
// | Организации.ИнформационноеОбслуживание КАК ИнформационноеОбслуживание,
|
||||
// | Организации.КорреспондентскийСчет КАК КорреспондентскийСчет,
|
||||
// | Организации.КПП КАК КПП,
|
||||
// | Организации.НаименованиеПолное КАК НаименованиеПолное,
|
||||
// | Организации.НаименованиеСокращенное КАК НаименованиеСокращенное,
|
||||
// | Организации.ОГРН КАК ОГРН,
|
||||
// | Организации.Префикс КАК Префикс,
|
||||
// | Организации.РасчетныйСчет КАК РасчетныйСчет,
|
||||
// | Организации.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
|
||||
// | Организации.ПроизводственныйКалендарь КАК ПроизводственныйКалендарь,
|
||||
// | Организации.Предопределенный КАК Предопределенный,
|
||||
// | Организации.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|
||||
// |ИЗ
|
||||
// | Справочник._ДемоОрганизации КАК _ДемоОрганизации
|
||||
// | Справочник.Организации КАК Организации
|
||||
// |ГДЕ
|
||||
// | _ДемоОрганизации.Ссылка = &Ссылка";
|
||||
// | Организации.Ссылка = &Ссылка";
|
||||
//
|
||||
// РезультатЗапроса = Запрос.Выполнить();
|
||||
//
|
||||
// ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
|
||||
//
|
||||
// Если ВыборкаДетальныеЗаписи.Следующий() Тогда
|
||||
//
|
||||
// Для каждого Элемент Из СвойстваОрганизации Цикл
|
||||
//
|
||||
// Если РезультатЗапроса.Колонки.Найти(Элемент) <> Неопределено Тогда
|
||||
//
|
||||
// РегистрационныеДанные.Вставить(Элемент, ВыборкаДетальныеЗаписи[Элемент]);
|
||||
//
|
||||
// КонецЕсли;
|
||||
//
|
||||
// КонецЦикла;
|
||||
//
|
||||
// КонецЕсли;
|
||||
//
|
||||
Процедура ПриОпределенииРегистрационныхДанныхОрганизации(Организация, Поля, Дата, РегистрационныеДанные, КодЯзыка) Экспорт
|
||||
|
||||
@@ -651,12 +651,12 @@
|
||||
Если ЭтоВыборОбъектовМетаданных Тогда
|
||||
ПроверитьОтмеченныеЗначения(ОтмеченныеЗначения, ДоступныеТипы);
|
||||
|
||||
ПараметрыПодбора = Новый Структура;
|
||||
ПараметрыПодбора.Вставить("ВыбранныеОбъектыМетаданных", ОтмеченныеЗначения);
|
||||
ПараметрыПодбора.Вставить("ВыбиратьСсылки", Истина);
|
||||
ПараметрыПодбора.Вставить("Заголовок", НСтр("ru = 'Подбор таблиц'"));
|
||||
ПараметрыПодбора = СтандартныеПодсистемыКлиентСервер.ПараметрыВыбораОбъектовМетаданных();
|
||||
ПараметрыПодбора.ВыбранныеОбъектыМетаданных = ОтмеченныеЗначения;
|
||||
ПараметрыПодбора.ВыбиратьСсылки = Истина;
|
||||
ПараметрыПодбора.Заголовок = НСтр("ru = 'Подбор таблиц'");
|
||||
|
||||
ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыПодбора,,,,, Обработчик);
|
||||
СтандартныеПодсистемыКлиент.ВыбратьОбъектыМетаданных(ПараметрыПодбора, Обработчик);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЭтоВыборОбъектовМетаданных;
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
// &НаКлиенте
|
||||
// Процедура ПослеЗаписи(ПараметрыЗаписи)
|
||||
// Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
|
||||
// ОценкаПроизводительностиКлиент.УстановитьКлючевуюОперациюЗамера(ИдентификаторЗамераПроведение, "_ДемоПроведениеДокумента");
|
||||
// ОценкаПроизводительностиКлиент.УстановитьКлючевуюОперациюЗамера(ИдентификаторЗамераПроведение, "ПроведениеДокумента");
|
||||
// КонецЕсли;
|
||||
// КонецПроцедуры
|
||||
//
|
||||
|
||||
@@ -66,14 +66,17 @@
|
||||
|
||||
// См. РегламентныеЗаданияПереопределяемый.ПриОпределенииНастроекРегламентныхЗаданий
|
||||
Процедура ПриОпределенииНастроекРегламентныхЗаданий(Настройки) Экспорт
|
||||
Зависимость = Настройки.Добавить();
|
||||
Зависимость.РегламентноеЗадание = Метаданные.РегламентныеЗадания.ЭкспортОценкиПроизводительности;
|
||||
Зависимость.ФункциональнаяОпция = Метаданные.ФункциональныеОпции.ВыполнятьЗамерыПроизводительности;
|
||||
Зависимость.РаботаетСВнешнимиРесурсами = Истина;
|
||||
Зависимость = Настройки.Добавить();
|
||||
Зависимость.РегламентноеЗадание = Метаданные.РегламентныеЗадания.ОчисткаЗамеровВремени;
|
||||
Зависимость.ФункциональнаяОпция = Метаданные.ФункциональныеОпции.ВыполнятьЗамерыПроизводительности;
|
||||
Зависимость.РаботаетСВнешнимиРесурсами = Истина;
|
||||
|
||||
Настройка = Настройки.Добавить();
|
||||
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.ЭкспортОценкиПроизводительности;
|
||||
Настройка.ФункциональнаяОпция = Метаданные.ФункциональныеОпции.ВыполнятьЗамерыПроизводительности;
|
||||
Настройка.РаботаетСВнешнимиРесурсами = Истина;
|
||||
Настройка.Параметризуется = Истина;
|
||||
|
||||
Настройка = Настройки.Добавить();
|
||||
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.ОчисткаЗамеровВремени;
|
||||
Настройка.ФункциональнаяОпция = Метаданные.ФункциональныеОпции.ВыполнятьЗамерыПроизводительности;
|
||||
Настройка.РаботаетСВнешнимиРесурсами = Истина;
|
||||
КонецПроцедуры
|
||||
|
||||
// См. РаботаВБезопасномРежимеПереопределяемый.ПриЗаполненииРазрешенийНаДоступКВнешнимРесурсам.
|
||||
|
||||
@@ -67,6 +67,14 @@
|
||||
Если ЕстьПараметрыСписка <> ЕстьПараметрыОбъекта Тогда
|
||||
ЭтоФормаОбъекта = ЕстьПараметрыОбъекта;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоФормаОбъекта = Неопределено Тогда
|
||||
РеквизитыФормы = Форма.ПолучитьРеквизиты();
|
||||
Если РеквизитыФормы.Количество() > 0 И РеквизитыФормы[0].ТипЗначения = Новый ОписаниеТипов("ДинамическийСписок") Тогда
|
||||
ЭтоФормаОбъекта = Ложь;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
// Для форм внешних отчетов и обработок невозможно получить метаданные имея только имя формы,
|
||||
// поэтому определение источников команд выполняется до вызова ПовтИсп.
|
||||
Если ИсточникиЧерезЗапятую = "" И ТребуетсяУказаниеИсточниковКоманд(ИмяФормы) Тогда
|
||||
@@ -1048,11 +1056,16 @@
|
||||
Функция КлючПараметровРазмещения(Знач ПараметрыРазмещения)
|
||||
|
||||
ПараметрыРазмещения = ОбщегоНазначения.СкопироватьРекурсивно(ПараметрыРазмещения);
|
||||
ПараметрыРазмещения.Удалить("ЭтоФормаОбъекта");
|
||||
|
||||
ГруппаФормы = ПараметрыРазмещения.КоманднаяПанель;
|
||||
|
||||
Если ТипЗнч(ГруппаФормы) = Тип("ГруппаФормы") Тогда
|
||||
ПараметрыРазмещения.КоманднаяПанель = ГруппаФормы.Имя;
|
||||
КонецЕсли;
|
||||
|
||||
Источники = Новый Массив;
|
||||
|
||||
Если ТипЗнч(ПараметрыРазмещения.Источники) = Тип("Массив") Тогда
|
||||
Для Каждого ОбъектМетаданных Из ПараметрыРазмещения.Источники Цикл
|
||||
Источники.Добавить(ОбъектМетаданных.ПолноеИмя());
|
||||
|
||||
@@ -45,8 +45,8 @@
|
||||
// Объекты - Массив из ОбъектМетаданных
|
||||
//
|
||||
// Пример:
|
||||
// Объекты.Добавить(Метаданные.Справочники._ДемоНоменклатура);
|
||||
// Объекты.Добавить(Метаданные.Справочники._ДемоКонтрагенты);
|
||||
// Объекты.Добавить(Метаданные.Справочники.Номенклатура);
|
||||
// Объекты.Добавить(Метаданные.Справочники.Контрагенты);
|
||||
//
|
||||
Процедура ПриОпределенииОбъектовСКомандамиОбъединенияДублейЗаменыСсылок(Объекты) Экспорт
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// РазделГлавное.Раздел = "Главное";
|
||||
// РазделГлавное.Картинка = БиблиотекаКартинок.РазделГлавное;
|
||||
//
|
||||
// СчетНаОплату = Метаданные.Документы._ДемоСчетНаОплатуПокупателю;
|
||||
// СчетНаОплату = Метаданные.Документы.СчетНаОплатуПокупателю;
|
||||
// Если ПравоДоступа("Просмотр", СчетНаОплату)
|
||||
// И ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(СчетНаОплату) Тогда
|
||||
//
|
||||
|
||||
@@ -7621,6 +7621,13 @@
|
||||
//
|
||||
Функция КлючиРолейПользователяИБ(ПользовательИБ)
|
||||
|
||||
Для Каждого Роль Из ПользовательИБ.Роли Цикл
|
||||
Прервать;
|
||||
КонецЦикла;
|
||||
Если Роль = Неопределено Тогда
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
|
||||
РолиРасширений = ПользователиСлужебныйПовтИсп.РолиРасширений();
|
||||
Список = Новый СписокЗначений;
|
||||
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
// создавать файлы по шаблонам.
|
||||
//
|
||||
// Пример:
|
||||
// Настройки.НеОчищатьФайлы.Добавить(Метаданные.Справочники._ДемоНоменклатура);
|
||||
// Настройки.НеСинхронизироватьФайлы.Добавить(Метаданные.Справочники._ДемоПартнеры);
|
||||
// Настройки.НеСоздаватьФайлыПоШаблону.Добавить(Метаданные.Справочники._ДемоПартнеры);
|
||||
// Настройки.НеОчищатьФайлы.Добавить(Метаданные.Справочники.Номенклатура);
|
||||
// Настройки.НеСинхронизироватьФайлы.Добавить(Метаданные.Справочники.Партнеры);
|
||||
// Настройки.НеСоздаватьФайлыПоШаблону.Добавить(Метаданные.Справочники.Партнеры);
|
||||
//
|
||||
Процедура ПриОпределенииНастроек(Настройки) Экспорт
|
||||
|
||||
@@ -39,8 +39,8 @@
|
||||
// Основной справочник используется для интерактивной работы с файлами.
|
||||
//
|
||||
// Пример:
|
||||
// Если ТипВладелецФайла = Тип("СправочникСсылка._ДемоНоменклатура") Тогда
|
||||
// ИменаСправочников["_ДемоНоменклатураПрисоединенныеФайлы"] = Ложь;
|
||||
// Если ТипВладелецФайла = Тип("СправочникСсылка.Номенклатура") Тогда
|
||||
// ИменаСправочников["НоменклатураПрисоединенныеФайлы"] = Ложь;
|
||||
// ИменаСправочников.Вставить("Файлы", Истина);
|
||||
// КонецЕсли;
|
||||
//
|
||||
|
||||
@@ -1140,6 +1140,7 @@
|
||||
Элементы.ГруппаЭлектронныеПодписи.Видимость = ДоступнаЭлектроннаяПодпись;
|
||||
Элементы.ГруппаСертификатыШифрования.Видимость = ПросмотрЗашифрованных И ДоступнаЭлектроннаяПодпись;
|
||||
Элементы.Инструкция.Видимость = Подписание И ВидимостьИнструкции;
|
||||
Элементы.ФормаСохранитьВместеСПодписью.Видимость = Форма.ЭлектронныеПодписи.Количество() <> 0;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
@@ -2980,13 +2980,19 @@
|
||||
РезультатПроверкиДоверенностей = ПолучитьИзВременногоХранилища(СтрокаПодписи.РезультатПроверкиПодписиПоМЧД);
|
||||
НовыйРезультатПроверкиДоверенностей = Новый Массив;
|
||||
Для Каждого Результат Из РезультатПроверкиДоверенностей Цикл
|
||||
Если Не ЗначениеЗаполнено(РезультатПроверкиПодписи.Сертификат) Тогда
|
||||
НовыйРезультатПроверкиДоверенностей.Добавить(
|
||||
МодульМашиночитаемыеДоверенностиФНССлужебный.НовыйРезультатПроверкиПодписиПоМЧД(
|
||||
Результат.МашиночитаемаяДоверенность));
|
||||
Иначе
|
||||
РезультатПроверкиПодписиПоМЧД = МодульМашиночитаемыеДоверенностиФНССлужебный.РезультатПроверкиПодписиПоМЧД(
|
||||
Результат.МашиночитаемаяДоверенность, ПодписанныйОбъект, РезультатПроверкиПодписи.Сертификат,
|
||||
СтрокаПодписи.ДатаПодписи);
|
||||
НовыйРезультатПроверкиДоверенностей.Добавить(РезультатПроверкиПодписиПоМЧД);
|
||||
СтрокаПодписи.РезультатПроверкиДоверенностей = ПоместитьВоВременноеХранилище(
|
||||
НовыйРезультатПроверкиДоверенностей, СтрокаПодписи.РезультатПроверкиПодписиПоМЧД);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
СтрокаПодписи.РезультатПроверкиПодписиПоМЧД = ПоместитьВоВременноеХранилище(
|
||||
НовыйРезультатПроверкиДоверенностей, СтрокаПодписи.РезультатПроверкиПодписиПоМЧД);
|
||||
КонецЕсли;
|
||||
|
||||
// Конец Локализация
|
||||
@@ -3000,42 +3006,19 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Локализация
|
||||
|
||||
Функция ПроверитьПодписиПоМЧД(Подписи, ПодписанныйОбъект) Экспорт
|
||||
|
||||
РезультатыПроверок = Новый Массив;
|
||||
|
||||
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.МашиночитаемыеДоверенности") Тогда
|
||||
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
|
||||
Возврат Новый Массив;
|
||||
КонецЕсли;
|
||||
|
||||
МодульМашиночитаемыеДоверенностиФНССлужебный = ОбщегоНазначения.ОбщийМодуль(
|
||||
"МашиночитаемыеДоверенностиФНССлужебный");
|
||||
Для Каждого Подпись Из Подписи Цикл
|
||||
МодульЭлектроннаяПодписьСлужебный = ОбщегоНазначения.ОбщийМодуль(
|
||||
"ЭлектроннаяПодписьСлужебный");
|
||||
|
||||
РезультатПроверкиДоверенностей = ПолучитьИзВременногоХранилища(Подпись.РезультатПроверкиПодписиПоМЧД);
|
||||
НовыйРезультатПроверкиДоверенностей = Новый Массив;
|
||||
Для Каждого Результат Из РезультатПроверкиДоверенностей Цикл
|
||||
РезультатПроверкиПодписиПоМЧД = МодульМашиночитаемыеДоверенностиФНССлужебный.РезультатПроверкиПодписиПоМЧД(
|
||||
Результат.МашиночитаемаяДоверенность, ПодписанныйОбъект, Подпись.Сертификат, Подпись.ДатаПодписи);
|
||||
НовыйРезультатПроверкиДоверенностей.Добавить(РезультатПроверкиПодписиПоМЧД);
|
||||
КонецЦикла;
|
||||
|
||||
РезультатПроверки = Новый Структура("Индекс, РезультатПроверкиПодписиПоМЧД", Подпись.Индекс,
|
||||
НовыйРезультатПроверкиДоверенностей);
|
||||
МодульМашиночитаемыеДоверенностиФНССлужебный.ДобавитьИнформациюМЧД(РезультатПроверки,
|
||||
Подпись.РезультатПроверкиПодписиПоМЧД);
|
||||
РезультатыПроверок.Добавить(РезультатПроверки);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат РезультатыПроверок;
|
||||
Возврат МодульЭлектроннаяПодписьСлужебный.ПроверитьПодписиПоМЧД(Подписи, ПодписанныйОбъект);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
// Заносит номер в регистр сведений НомераОтсканированныхФайлов.
|
||||
//
|
||||
// Параметры:
|
||||
|
||||
@@ -1159,6 +1159,11 @@
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработкаВыбораТабличногоДокумента(ФормаОтчета, Элемент, Область, СтандартнаяОбработка) Экспорт
|
||||
|
||||
Если ФормаОтчета.НастройкиОтчета.ПолноеИмя <> "Отчет.ПроверкаЦелостностиТома" Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Область.Расшифровка = "ПроверкаЦелостностиТома.ВосстановитьФайлы" Тогда
|
||||
СтандартнаяОбработка = Ложь;
|
||||
Том = ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Том").Значение;
|
||||
@@ -1175,6 +1180,7 @@
|
||||
|
||||
ДлительныеОперацииКлиент.ОжидатьЗавершение(Задание, ОповещениеОЗавершении, ПараметрыОжидания);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -1168,10 +1168,10 @@
|
||||
|
||||
// См. РегламентныеЗаданияПереопределяемый.ПриОпределенииНастроекРегламентныхЗаданий
|
||||
Процедура ПриОпределенииНастроекРегламентныхЗаданий(Настройки) Экспорт
|
||||
Зависимость = Настройки.Добавить();
|
||||
Зависимость.РегламентноеЗадание = Метаданные.РегламентныеЗадания.РассылкаОтчетов;
|
||||
Зависимость.РаботаетСВнешнимиРесурсами = Истина;
|
||||
Зависимость.Параметризуется = Истина;
|
||||
Настройка = Настройки.Добавить();
|
||||
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.РассылкаОтчетов;
|
||||
Настройка.РаботаетСВнешнимиРесурсами = Истина;
|
||||
Настройка.Параметризуется = Истина;
|
||||
КонецПроцедуры
|
||||
|
||||
// См. ОчередьЗаданийПереопределяемый.ПриОпределенииПсевдонимовОбработчиков.
|
||||
@@ -2301,12 +2301,12 @@
|
||||
Для Каждого АдресЭП Из АдресаПолучателя Цикл
|
||||
ПоляИстории = ПоляИсторииРассылкиОтчетов(ПараметрыЖурнала.Данные, СтрокаПолучатель.Ключ, ПараметрыДоставки.ДатаВыполнения);
|
||||
ПоляИстории.УчетнаяЗапись = ПараметрыДоставки.УчетнаяЗапись;
|
||||
ПоляИстории.АдресЭП = АдресЭП;
|
||||
ПоляИстории.АдресЭП = АдресЭП.Адрес;
|
||||
ПоляИстории.Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
"%1 %2", ШаблонСообщенияОбОшибке, РасширенноеПредставлениеОшибки);
|
||||
ПоляИстории.Выполнена = Ложь;
|
||||
ПоляИстории.СпособПолучения = СпособПолученияРассылки(ПараметрыДоставки, СтрокаПолучатель.Ключ,
|
||||
АдресЭП);
|
||||
АдресЭП.Адрес);
|
||||
ПоляИстории.ИдентификаторПисьма = "";
|
||||
|
||||
РегистрыСведений.ИсторияРассылкиОтчетов.ЗафиксироватьРезультатВыполненияРассылкиПолучателю(ПоляИстории);
|
||||
|
||||
@@ -1008,7 +1008,7 @@
|
||||
// Структура:
|
||||
// * ИмяМодуляОтправки - Строка - смотри НовоеСерверноеОповещение.ИмяМодуляОтправки.
|
||||
// * Параметры - Произвольный - смотри НовоеСерверноеОповещение.Параметры
|
||||
// Если не заполнен, тогда свойства нет.
|
||||
// Если равен Неопределено, тогда свойства нет.
|
||||
//
|
||||
// * ПериодПроверки - Число - смотри НовоеСерверноеОповещение.ПериодПроверки.
|
||||
// Если указано 20*60, тогда свойства нет.
|
||||
@@ -1018,7 +1018,7 @@
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("ИмяМодуляОтправки", Оповещение.ИмяМодуляОтправки);
|
||||
|
||||
Если ЗначениеЗаполнено(Оповещение.Параметры) Тогда
|
||||
Если Оповещение.Параметры <> Неопределено Тогда
|
||||
Результат.Вставить("Параметры", Оповещение.Параметры);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
@@ -689,16 +689,25 @@
|
||||
ИсточникНастроек = СервисКриптографииDSSСлужебный.ПолучитьИсточникНастроек(ВходящиеПараметры);
|
||||
АдресПодключения = НастройкиПользователя.Методы.СервисИдентификации + "token";
|
||||
|
||||
ЗаголовкиЗапроса = Новый Соответствие;
|
||||
ПараметрыЗапроса = Новый Структура;
|
||||
ПараметрыЗапроса.Вставить("client_id", НастройкиПользователя.Подключение.ИдентификаторКлиента);
|
||||
ПараметрыЗапроса.Вставить("username", НастройкиПользователя.Логин);
|
||||
ПараметрыЗапроса.Вставить("resource", НастройкиПользователя.Подключение.ИдентификаторПодписи);
|
||||
ПараметрыЗапроса.Вставить("grant_type", "password");
|
||||
Если НастройкиПользователя.ПервичнаяАутентификация = Перечисления.СпособыАвторизацииDSS.Первичный_СервисныйКлиент Тогда
|
||||
СекретСервисногоКлиента = СервисКриптографииDSSСлужебный.ПолучитьЗакрытыеДанные(КлючСервисногоКлиента(НастройкиПользователя),
|
||||
"СекретСервисногоКлиента", Истина).Значение;
|
||||
ПараметрыЗапроса.Вставить("password", "");
|
||||
ЗаголовкиЗапроса.Вставить("Authorization",
|
||||
ПолучитьПредставлениеСекрета(НастройкиПользователя.Подключение.СервисныйКлиент, СекретСервисногоКлиента));
|
||||
Иначе
|
||||
ПараметрыЗапроса.Вставить("client_id", НастройкиПользователя.Подключение.ИдентификаторКлиента);
|
||||
ПараметрыЗапроса.Вставить("password", ПолучитьЗначениеПароля(НастройкиПользователя.Пароль, НастройкиПользователя));
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваПодключения = СервисКриптографииDSSСлужебный.ПодготовитьСвойстваПодключения(НастройкиПользователя.Подключение, АдресПодключения);
|
||||
Соединение = СервисКриптографииDSSСлужебный.ПодготовитьПодключение(СвойстваПодключения, Неопределено, ПараметрыОперации);
|
||||
РезультатЗапроса = СервисКриптографииDSSСлужебный.ВыполнитьМетодСервиса(Соединение, СвойстваПодключения.АдресПодключения, ПараметрыЗапроса, "POST", , , ПараметрыОперации);
|
||||
РезультатЗапроса = СервисКриптографииDSSСлужебный.ВыполнитьМетодСервиса(Соединение, СвойстваПодключения.АдресПодключения, ПараметрыЗапроса, "POST", ЗаголовкиЗапроса, , ПараметрыОперации);
|
||||
СохранитьНастройки = Ложь;
|
||||
|
||||
Если РезультатЗапроса.Выполнено Тогда
|
||||
@@ -1006,7 +1015,8 @@
|
||||
Если ВРег(ДанныеТокена.Логин) = ВРег(НастройкиПользователя.Логин) Тогда
|
||||
ТокенАвторизации.Токен = СервисКриптографииDSSКлиентСервер.ОбъектПароля(Токен, 0);
|
||||
ТокенАвторизации.ТипТокена = ТипТокена;
|
||||
ТокенАвторизации.ТокенОбновления= СервисКриптографииDSSКлиентСервер.ОбъектПароля(ТокенОбновления, 0);
|
||||
ТокенАвторизации.ТокенОбновления= СервисКриптографииDSSКлиентСервер.ОбъектПароля(ТокенОбновления,
|
||||
?(ЗначениеЗаполнено(ТокенОбновления), 0, 3));
|
||||
НастройкиПользователя.ЭлектроннаяПочта = ДанныеТокена.ЭлектроннаяПочта;
|
||||
НастройкиПользователя.Телефон = ДанныеТокена.Телефон;
|
||||
НастройкиПользователя.ИдентификаторНаСервере = ДанныеТокена.Идентификатор;
|
||||
@@ -1130,6 +1140,7 @@
|
||||
Представление = СвойствоСтруктуры(СтрокаМассива, "FriendlyName", "");
|
||||
Представление = ?(ПустаяСтрока(Представление), СвойстваСертификата.Наименование, Представление);
|
||||
Представление = ?(ПустаяСтрока(Представление), НСтр("ru = 'Не задано имя'"), Представление);
|
||||
МобильныйЗакрытыКлюч= СвойствоСтруктуры(СтрокаМассива, "Storage", "") = "Mobile";
|
||||
|
||||
НоваяСтрока = СервисКриптографииDSSКлиентСервер.СвойстваСертификатаПользователя();
|
||||
НоваяСтрока.Идентификатор = ВнутреннийНомер;
|
||||
@@ -1144,6 +1155,7 @@
|
||||
НоваяСтрока.ДатаОкончания = СвойстваСертификата.ДатаОкончания;
|
||||
НоваяСтрока.АлгоритмыХеширования = АлгоритмыХеширования;
|
||||
НоваяСтрока.КомуВыдан = КомуВыдан;
|
||||
НоваяСтрока.МобильныйЗакрытыйКлюч = МобильныйЗакрытыКлюч;
|
||||
|
||||
СписокСертификатов.Вставить(ОтпечатокСертификата, НоваяСтрока);
|
||||
КонецЦикла;
|
||||
@@ -1733,6 +1745,7 @@
|
||||
|
||||
НастройкиПользователя = ПолучитьНастройкиПользователя(ИдентификаторПользователя, ПараметрыОперации);
|
||||
РезультатВызова = СервисКриптографииDSSКлиентСервер.ОтветСервисаПоУмолчанию(Ложь);
|
||||
ПодтверждатьОперации = НастройкиПользователя.ПервичнаяАутентификация = Перечисления.СпособыАвторизацииDSS.Первичный_СервисныйКлиент;
|
||||
|
||||
Если НЕ НастройкиПользователя.Политика.Заполнено ИЛИ Принудительно Тогда
|
||||
|
||||
@@ -1740,7 +1753,7 @@
|
||||
РезультатЗапроса= ПолучитьПараметрыПолитики(НастройкиПользователя, ПараметрыОперации);
|
||||
|
||||
Если РезультатЗапроса.Выполнено Тогда
|
||||
СервисКриптографииDSSСлужебный.НастройкиРаботыАнализПолитикиПользователя(НастройкиПользователя.Политика, РезультатЗапроса.Результат);
|
||||
СервисКриптографииDSSСлужебный.НастройкиРаботыАнализПолитикиПользователя(НастройкиПользователя.Политика, РезультатЗапроса.Результат, ПодтверждатьОперации);
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыПоиска = Новый Структура("ПроверитьНаличиеВБазе", ЗначениеЗаполнено(НастройкиПользователя.Ссылка));
|
||||
@@ -2734,25 +2747,37 @@
|
||||
Если РезультатЗапроса.Выполнено Тогда
|
||||
Выжимка = ОписаниеАсинхроннойОперации(РезультатЗапроса.Результат.Operation, "Result.ProcessedDocuments");
|
||||
РезультатОперации = Выжимка.ОписаниеОперации;
|
||||
ЕстьСортировка = Ложь;
|
||||
|
||||
Если НЕ Выжимка.Выполнено Тогда
|
||||
РезультатЗапроса.Выполнено = Ложь;
|
||||
РезультатЗапроса.Ошибка = Выжимка.Ошибка;
|
||||
РезультатЗапроса.СтатусОшибки.Представление = Выжимка.Ошибка;
|
||||
ИначеЕсли НЕ РезультатОперации.ТребуетПодтверждения Тогда
|
||||
МассивИдентификаторов = Новый Массив;
|
||||
МассивСодержимого = Новый Массив;
|
||||
МассивИдентификаторов = Новый СписокЗначений;
|
||||
МассивСодержимого = Новый СписокЗначений;
|
||||
Для Каждого СтрокаОтвета Из Выжимка.Действия Цикл
|
||||
ИдентификаторДокумента = СвойствоСтруктуры(СтрокаОтвета, "RefId", "");
|
||||
СодержимоеДокумента = СвойствоСтруктуры(СтрокаОтвета, "Content", "");
|
||||
ИмяДокумента = СвойствоСтруктуры(СтрокаОтвета, "OriginalContentInfo", "");
|
||||
Позиция = СтрНайти(ИмяДокумента, " #", НаправлениеПоиска.СКонца);
|
||||
Если Позиция > 0 Тогда
|
||||
ИмяДокумента = Сред(ИмяДокумента, Позиция + 2);
|
||||
ЕстьСортировка = ЕстьСортировка ИЛИ ЗначениеЗаполнено(ИмяДокумента);
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(ИдентификаторДокумента) Тогда
|
||||
МассивИдентификаторов.Добавить(ИдентификаторДокумента);
|
||||
МассивИдентификаторов.Добавить(ИдентификаторДокумента, ИмяДокумента);
|
||||
ИначеЕсли ЗначениеЗаполнено(СодержимоеДокумента) Тогда
|
||||
МассивСодержимого.Добавить(СодержимоеДокумента);
|
||||
МассивСодержимого.Добавить(СодержимоеДокумента, ИмяДокумента);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
РезультатОперации.Вставить("ИдентификаторыДокументов", МассивИдентификаторов);
|
||||
РезультатОперации.Вставить("СодержимоеДокументов", МассивСодержимого);
|
||||
|
||||
Если ЕстьСортировка Тогда
|
||||
МассивИдентификаторов.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
|
||||
МассивСодержимого.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
|
||||
КонецЕсли;
|
||||
|
||||
РезультатОперации.Вставить("ИдентификаторыДокументов", МассивИдентификаторов.ВыгрузитьЗначения());
|
||||
РезультатОперации.Вставить("СодержимоеДокументов", МассивСодержимого.ВыгрузитьЗначения());
|
||||
Иначе
|
||||
ПолучитьДокументы = Ложь;
|
||||
КонецЕсли;
|
||||
@@ -3933,6 +3958,7 @@
|
||||
Результат.Вставить("СервисПроверки", "");
|
||||
Результат.Вставить("СервисОбработкиДокументов", "");
|
||||
Результат.Вставить("СервисАудита", "");
|
||||
Результат.Вставить("СервисныйКлиент", "");
|
||||
Результат.Вставить("ВнутреннийИдентификатор", "");
|
||||
Результат.Вставить("ИдентификаторЦИ", "");
|
||||
Результат.Вставить("ИдентификаторСЭП", "");
|
||||
@@ -4235,6 +4261,7 @@
|
||||
ВидАутентификации = НастройкиПользователя.ПервичнаяАутентификация;
|
||||
|
||||
Если ВидАутентификации = Перечисления.СпособыАвторизацииDSS.Первичный_УчетныеДанные // основной сценарий
|
||||
ИЛИ ВидАутентификации = Перечисления.СпособыАвторизацииDSS.Первичный_СервисныйКлиент
|
||||
ИЛИ ВидАутентификации = Перечисления.СпособыАвторизацииDSS.Первичный_ДвухФакторная // возможно, если не подтверждается выпуск маркера безопасности
|
||||
ИЛИ ВидАутентификации = Перечисления.СпособыАвторизацииDSS.Первичный_КодАвторизации Тогда // возможно, если не подтверждается выпуск маркера безопасности
|
||||
Результат = АутентификацияПоЛогину(НастройкиПользователя, ПараметрыОперации);
|
||||
@@ -4345,6 +4372,7 @@
|
||||
// Служебная функция для формирования секрета пользователя в заголовке запроса
|
||||
// Параметры:
|
||||
// НастройкиПользователя - см. НастройкиПользователяПоУмолчанию
|
||||
// - Строка
|
||||
// ПарольКлиента - Строка - пароль в закрытом виде
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@@ -4354,7 +4382,13 @@
|
||||
|
||||
Результат = "";
|
||||
|
||||
ИсходныеДанные = ПолучитьДвоичныеДанныеИзСтроки(НастройкиПользователя.Логин
|
||||
Если ТипЗнч(НастройкиПользователя) = Тип("Строка") Тогда
|
||||
Владелец = НастройкиПользователя;
|
||||
Иначе
|
||||
Владелец = НастройкиПользователя.Логин;
|
||||
КонецЕсли;
|
||||
|
||||
ИсходныеДанные = ПолучитьДвоичныеДанныеИзСтроки(Владелец
|
||||
+ ":"
|
||||
+ ПарольКлиента,
|
||||
"UTF-8");
|
||||
@@ -4806,4 +4840,19 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Формирует путь хранения в безопасном хранилище для сервисного клиента.
|
||||
//
|
||||
// Параметры:
|
||||
// НастройкиПользователя - Структура
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
Функция КлючСервисногоКлиента(НастройкиПользователя) Экспорт
|
||||
|
||||
Возврат СтрЗаменить(
|
||||
НастройкиПользователя.Методы.СервисИдентификации + НастройкиПользователя.Подключение.СервисныйКлиент, "/", "");
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -28,6 +28,7 @@
|
||||
// * ДатаОкончания - Дата - окончание срока действия сертификата
|
||||
// * Издатель - Строка - представление издателя сертификата
|
||||
// * АлгоритмыХеширования - Массив - элементы массива содержат описание алгоритма хеширования
|
||||
// * МобильныйЗакрытыйКлюч - Булево - закрытый ключ храниться на мобильном устройстве
|
||||
//
|
||||
Функция СвойстваСертификатаПользователя() Экспорт
|
||||
|
||||
@@ -44,6 +45,7 @@
|
||||
Результат.Вставить("ДатаОкончания", '00010101');
|
||||
Результат.Вставить("Издатель", "");
|
||||
Результат.Вставить("АлгоритмыХеширования", Новый Массив);
|
||||
Результат.Вставить("МобильныйЗакрытыйКлюч", Ложь);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
@@ -408,7 +410,9 @@
|
||||
|
||||
Если ТипЗнч(ОбъектПароля) = Тип("Структура") Тогда
|
||||
|
||||
Если ОбъектПароля.Состояние = 0 Тогда
|
||||
Если ОбъектПароля.Состояние = 0 И АвторизованныйПользователь = Неопределено Тогда
|
||||
Результат = ОбъектПароля.Значение;
|
||||
ИначеЕсли ОбъектПароля.Состояние = 0 Тогда
|
||||
Результат = ЗакрытьСекретПользователя(ОбъектПароля.Значение, АвторизованныйПользователь);
|
||||
ИначеЕсли ОбъектПароля.Состояние = 1 Тогда
|
||||
Результат = ОбъектПароля.Значение;
|
||||
@@ -443,7 +447,8 @@
|
||||
Результат = Истина;
|
||||
ИначеЕсли НЕ ТребуетсяВводКонфиденциальныхДанных(НастройкиПользователя.ТокенАвторизации.ТокенОбновления) Тогда
|
||||
Результат = Истина;
|
||||
ИначеЕсли НастройкиПользователя.ЗапоминатьПароли Тогда
|
||||
ИначеЕсли НастройкиПользователя.ЗапоминатьПароли
|
||||
И НастройкиПользователя.ПервичнаяАутентификация <> ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_ДвухФакторная") Тогда
|
||||
Результат = Истина;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
@@ -699,8 +704,10 @@
|
||||
Функция ПодготовитьПакетДляПодписи(МассивДокументов) Экспорт
|
||||
|
||||
Результат = Новый Массив;
|
||||
НесколькоФайлов = МассивДокументов.Количество() > 1;
|
||||
|
||||
Для каждого СтрокаМассива Из МассивДокументов Цикл
|
||||
Для Счетчик = 1 По МассивДокументов.Количество() Цикл
|
||||
СтрокаМассива = МассивДокументов[Счетчик - 1];
|
||||
|
||||
НоваяСтрока = Новый Структура();
|
||||
НоваяСтрока.Вставить("Content", "");
|
||||
@@ -738,6 +745,10 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если НесколькоФайлов Тогда
|
||||
НоваяСтрока.ContentInfo = НоваяСтрока.ContentInfo + " #" + Формат(Счетчик, "ЧЦ=3; ЧВН=; ЧГ=0");
|
||||
КонецЕсли;
|
||||
|
||||
Результат.Добавить(НоваяСтрока);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@@ -691,9 +691,9 @@
|
||||
УправлениеЭлементамиОбщее(КонтекстФормы, 4);
|
||||
КонецЕсли;
|
||||
|
||||
КлючДействия = КлючДействияОперации(ТипОперации, НастройкиПользователя, ДанныеПодтверждения);
|
||||
Подтверждать = КлючДействияОперации(ТипОперации, НастройкиПользователя, ДанныеПодтверждения);
|
||||
|
||||
Если КлючДействия.Подтверждать Тогда
|
||||
Если Подтверждать Тогда
|
||||
ПодключитьОжидание(КонтекстФормы, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
@@ -712,6 +712,7 @@
|
||||
Если ЗначениеЗаполнено(ДанныеПодтверждения) Тогда
|
||||
КонтекстФормы[РеестрИмен.ДанныеПодтверждения].ПараметрыВариантаВстроенного.ПарольВПамяти = ПарольУстановлен;
|
||||
ДанныеПодтверждения.ПараметрыВариантаВстроенного.ПакетнаяОперация = ПроверитьПакетнуюОперацию(ТипОперации, ОписаниеДанных, ДанныеПодтверждения);
|
||||
ДанныеПодтверждения.ПараметрыВариантаВстроенного.ПодтверждатьПринудительно = СервисКриптографииDSSКлиентСервер.ПолучитьПолеСтруктуры(ОписаниеДанных, "ПринудительноПодтверждатьОблачнуюОперацию", Ложь);
|
||||
КонецЕсли;
|
||||
УправлениеЭлементамиОбщее(КонтекстФормы, 5);
|
||||
Если ТипОперации <> "Проверка" Тогда
|
||||
@@ -761,7 +762,7 @@
|
||||
ДанныеПодтверждения = КонтекстФормы[РеестрИмен.ДанныеПодтверждения];
|
||||
ДатаСеанса = СервисКриптографииDSSСлужебныйКлиент.ДатаСеанса();
|
||||
Авторизован = СервисКриптографииDSSКлиентСервер.УчетнаяЗаписьАвторизована(НастройкиПользователя, ДатаСеанса);
|
||||
КлючДействия = КлючДействияОперации(ТипОперации, НастройкиПользователя, ДанныеПодтверждения);
|
||||
Подтверждать = КлючДействияОперации(ТипОперации, НастройкиПользователя, ДанныеПодтверждения);
|
||||
ТребуетПинКод = ТипОперации <> "Шифрование";
|
||||
|
||||
Если Авторизован И ТипОперации <> "Шифрование" Тогда
|
||||
@@ -770,9 +771,9 @@
|
||||
КонецЕсли;
|
||||
|
||||
Если УчетАвторизации Тогда
|
||||
Результат = Авторизован И КлючДействия.Подтверждать;
|
||||
Результат = Авторизован И Подтверждать;
|
||||
Иначе
|
||||
Результат = ТребуетПинКод ИЛИ НЕ Авторизован ИЛИ КлючДействия.Подтверждать;
|
||||
Результат = ТребуетПинКод ИЛИ НЕ Авторизован ИЛИ Подтверждать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
@@ -861,7 +862,7 @@
|
||||
ДатаСеанса = СервисКриптографииDSSСлужебныйКлиент.ДатаСеанса();
|
||||
ДанныеПодтверждения = КонтекстФормы[РеестрИмен.ДанныеПодтверждения];
|
||||
Авторизован = СервисКриптографииDSSКлиентСервер.УчетнаяЗаписьАвторизована(НастройкиПользователя, ДатаСеанса);
|
||||
КлючДействия = КлючДействияОперации(ТипОперации, НастройкиПользователя, ДанныеПодтверждения);
|
||||
Подтверждать = КлючДействияОперации(ТипОперации, НастройкиПользователя, ДанныеПодтверждения);
|
||||
ТребуетПинКод = ТипОперации <> "Шифрование";
|
||||
ВыбранСпособ = Истина;
|
||||
|
||||
@@ -874,7 +875,7 @@
|
||||
ТребуетПинКод = ТекущийСертификат.ТребуетсяПинКод И НЕ ЗначениеЗаполнено(ЗначениеПароля);
|
||||
КонецЕсли;
|
||||
|
||||
Если КлючДействия.Подтверждать И НЕ ВыбранСпособ Тогда
|
||||
Если Подтверждать И НЕ ВыбранСпособ Тогда
|
||||
ТекстОшибки = ТекстОшибки + Символы.ПС + НСтр("ru = 'Не указан способ подтверждения'", КодЯзыка);
|
||||
КонецЕсли;
|
||||
|
||||
@@ -1395,6 +1396,8 @@
|
||||
//
|
||||
Функция КлючДействияОперации(ТипОперации, НастройкиПользователя, ДанныеПодтверждения)
|
||||
|
||||
Обязательно = Ложь;
|
||||
|
||||
Если ТипОперации = "Подтверждение"
|
||||
ИЛИ ТипОперации = "Аутентификация" Тогда
|
||||
КлючДействия = СервисКриптографииDSSКлиентСервер.СвойствоВыполняемойОперации(НастройкиПользователя, ТипОперации);
|
||||
@@ -1404,6 +1407,7 @@
|
||||
Если ТипОперации = "Подписание" Тогда
|
||||
Если ДанныеПодтверждения.ВерсияПодтверждения = 2 Тогда
|
||||
ВидОперации = "ПодписьДокумента";
|
||||
Обязательно = ДанныеПодтверждения.Сертификат.МобильныйЗакрытыйКлюч;
|
||||
ИначеЕсли ДанныеПодтверждения.ПараметрыВариантаВстроенного.ПакетнаяОперация Тогда
|
||||
ВидОперации = "ПодписьПакета";
|
||||
Иначе
|
||||
@@ -1411,6 +1415,9 @@
|
||||
КонецЕсли;
|
||||
ИначеЕсли ТипОперации = "Расшифрование" Тогда
|
||||
ВидОперации = "Расшифрование";
|
||||
Если ДанныеПодтверждения.ВерсияПодтверждения = 2 Тогда
|
||||
Обязательно = ДанныеПодтверждения.Сертификат.МобильныйЗакрытыйКлюч;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
ВидОперации = ТипОперации;
|
||||
КонецЕсли;
|
||||
@@ -1419,7 +1426,9 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат КлючДействия;
|
||||
Возврат Обязательно
|
||||
ИЛИ КлючДействия.Подтверждать
|
||||
ИЛИ ПолучитьПолеСтруктуры(ДанныеПодтверждения, "ПараметрыВариантаВстроенного.ПодтверждатьПринудительно", Ложь);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -2175,9 +2184,9 @@
|
||||
НуженПинКод = ?(ЗначениеЗаполнено(ДанныеПодтверждения.Сертификат), ДанныеПодтверждения.Сертификат.ТребуетсяПинКод, Истина);
|
||||
СертификатАвторизации = НастройкиПользователя.СертификатАвторизации
|
||||
ИЛИ НастройкиПользователя.ПервичнаяАутентификация <> ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_СертификатАвторизации");
|
||||
ПарольНеНужен = НастройкиПользователя.ПервичнаяАутентификация = ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_СервисныйКлиент");
|
||||
|
||||
КлючДействия = КлючДействияОперации(ФормаИсточник, НастройкиПользователя, ДанныеПодтверждения);
|
||||
ТребуетсяПодтверждение = КлючДействия.Подтверждать;
|
||||
ТребуетсяПодтверждение = КлючДействияОперации(ФормаИсточник, НастройкиПользователя, ДанныеПодтверждения);
|
||||
|
||||
Если НайтиЭлементФормы(ЭлементыФормы, "Комментарий") Тогда
|
||||
ЕстьКомментарий = ЭлементыФормы.Комментарий.Видимость;
|
||||
@@ -2213,7 +2222,7 @@
|
||||
|
||||
УстановитьСвойствоЭлемента(ЭлементыФормы, "ГруппаПодтвержденияУчетнаяЗапись", "Видимость", НЕ ОтдельнаяАвторизация И БылаАвторизация, ИменаЭлементов);
|
||||
УстановитьСвойствоЭлемента(ЭлементыФормы, "ПодтверждениеЛогин", "Видимость", ЗначениеЗаполнено(КонтекстФормы[РеестрИмен.Логин]), ИменаЭлементов);
|
||||
УстановитьСвойствоЭлемента(ЭлементыФормы, "ГруппаПодтверждениеПарольЗапомнить", "Видимость", НЕ ОтдельнаяАвторизация И БылаАвторизация, ИменаЭлементов);
|
||||
УстановитьСвойствоЭлемента(ЭлементыФормы, "ГруппаПодтверждениеПарольЗапомнить", "Видимость", НЕ ОтдельнаяАвторизация И БылаАвторизация И НЕ ПарольНеНужен, ИменаЭлементов);
|
||||
УстановитьСвойствоЭлемента(ЭлементыФормы, "ПодтверждениеЗапомнитьПарольЛогина", "Видимость", ЗначениеЗаполнено(КонтекстФормы[РеестрИмен.Логин]), ИменаЭлементов);
|
||||
УстановитьСвойствоЭлемента(ЭлементыФормы, "ГруппаПодтвержденияУчетнаяЗаписьВеб", "Видимость", ОтдельнаяАвторизация И БылаАвторизация, ИменаЭлементов);
|
||||
УстановитьСвойствоЭлемента(ЭлементыФормы, "ПодтверждениеПредставлениеСертификата", "Видимость", НЕ ОтдельнаяАвторизация И БылаАвторизация И НЕ СертификатАвторизации, ИменаЭлементов);
|
||||
@@ -2230,6 +2239,7 @@
|
||||
|
||||
УстановитьСвойствоЭлемента(ЭлементыФормы, "ПодтверждениеПредставлениеСертификата", "ТолькоПросмотр", ЕстьАвторизация ИЛИ (ОперацияАутентификации И НЕ НеНачалось), ИменаЭлементов);
|
||||
УстановитьСвойствоЭлемента(ЭлементыФормы, "ПодтверждениеПароль", "ТолькоПросмотр", ЕстьАвторизация И НЕ ОперацияАутентификации, ИменаЭлементов);
|
||||
УстановитьСвойствоЭлемента(ЭлементыФормы, "ПодтверждениеПароль", "Видимость", НЕ ПарольНеНужен, ИменаЭлементов);
|
||||
УстановитьСвойствоЭлемента(ЭлементыФормы, "ГруппаПодтвержденияУчетнаяЗаписьВеб", "ТолькоПросмотр", ЕстьАвторизация, ИменаЭлементов);
|
||||
|
||||
УстановитьСвойствоЭлемента(ЭлементыФормы, "ПодтверждениеОК", "КнопкаПоУмолчанию", НЕ НеНачалось, ИменаЭлементов);
|
||||
|
||||
@@ -720,6 +720,7 @@
|
||||
ДанныеПодтверждения.ПараметрыВариантаВстроенного.Вставить("ПакетнаяОперация", Ложь);
|
||||
ДанныеПодтверждения.ПараметрыВариантаВстроенного.Вставить("ТипРезультата", Неопределено);
|
||||
ДанныеПодтверждения.ПараметрыВариантаВстроенного.Вставить("ПарольВПамяти", Ложь);
|
||||
ДанныеПодтверждения.ПараметрыВариантаВстроенного.Вставить("ПодтверждатьПринудительно", Ложь);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -415,6 +415,7 @@
|
||||
| ЭкземплярыСервераDSS.СервисПроверки КАК СервисПроверки,
|
||||
| ЭкземплярыСервераDSS.СервисАудита КАК СервисАудита,
|
||||
| ЭкземплярыСервераDSS.СервисОбработкиДокументов КАК СервисОбработкиДокументов,
|
||||
| ЭкземплярыСервераDSS.СервисныйКлиент КАК СервисныйКлиент,
|
||||
| ЭкземплярыСервераDSS.ВнутреннийИдентификатор КАК ВнутреннийИдентификатор,
|
||||
| ЭкземплярыСервераDSS.ИдентификаторЦИ КАК ИдентификаторЦИ,
|
||||
| ЭкземплярыСервераDSS.ИдентификаторСЭП КАК ИдентификаторСЭП,
|
||||
@@ -2231,8 +2232,9 @@
|
||||
// * ТипыПодписей - Массив - массив из чисел, идентификаторов типов подписи
|
||||
// * РежимПинКода - Строка - строковая константа режим применения пин-кодов для сертификатов варианты: Обязательно, Запрещено, Опционально
|
||||
// ДанныеПолитики - Структура - сформированная структура на основе данных JSON, которые вернул сервер DSS
|
||||
// ЭтоСервисныйКлиент - Булево
|
||||
//
|
||||
Процедура НастройкиРаботыАнализПолитикиПользователя(ПолитикаПользователя, ДанныеПолитики) Экспорт
|
||||
Процедура НастройкиРаботыАнализПолитикиПользователя(ПолитикаПользователя, ДанныеПолитики, ЭтоСервисныйКлиент = Ложь) Экспорт
|
||||
|
||||
// По документации API сервиса, поля
|
||||
// "CAPolicy" Массив Для формирования сертификатов
|
||||
@@ -2277,7 +2279,7 @@
|
||||
ЗначениеПолитики= ПолучитьПолеСтруктуры(СтрокаМассива, "MfaRequired");
|
||||
КлючПоиска = "";
|
||||
Если КлючПолитики <> Неопределено И СписокДействий.Свойство(КлючПолитики, КлючПоиска) Тогда
|
||||
ПолитикаПользователя.Действия[КлючПоиска[0]].Подтверждать = ЗначениеПолитики;
|
||||
ПолитикаПользователя.Действия[КлючПоиска[0]].Подтверждать = ЗначениеПолитики ИЛИ ЭтоСервисныйКлиент;
|
||||
ВсегоПолей = ВсегоПолей + 1;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
@@ -2380,14 +2382,15 @@
|
||||
// НастройкиПользователя - Структура - структура хранящая сессионные данные учетной записи
|
||||
// - Строка - GUID полученный для пользователя
|
||||
// ИмяЗначения - Строка - необязательно, если передано, то возвращается значение из структуры хранения
|
||||
// ОбщиеНастройки - Булево - настройки для всех пользователей
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
Функция ПолучитьЗакрытыеДанные(НастройкиПользователя, ИмяЗначения = Неопределено) Экспорт
|
||||
Функция ПолучитьЗакрытыеДанные(НастройкиПользователя, ИмяЗначения = Неопределено, ОбщиеНастройки = Ложь) Экспорт
|
||||
|
||||
Результат = "";
|
||||
КлючЗначения = КлючЗаписиКонфиденциальныхДанных(НастройкиПользователя);
|
||||
КлючЗначения = КлючЗаписиКонфиденциальныхДанных(НастройкиПользователя, ОбщиеНастройки);
|
||||
ДанныеХранилища = ПрочитатьДанныеБезопасногоХранилища(КлючЗначения);
|
||||
ЗначениеПоУмолчанию = КонфиденциальныеДанныеПользователя();
|
||||
ТекущиеНастройки = ПолучитьКонтейнерНастроек(ПолучитьИсточникНастроек(Неопределено));
|
||||
@@ -2396,6 +2399,9 @@
|
||||
ЗаполнитьЗначенияСвойств(ЗначениеПоУмолчанию, ДанныеХранилища);
|
||||
КонецЕсли;
|
||||
|
||||
Если ОбщиеНастройки Тогда
|
||||
КонецЕсли;
|
||||
|
||||
Если ПолучитьПолеСтруктуры(ЗначениеПоУмолчанию.Пароль, "Состояние") = 5
|
||||
И ТекущиеНастройки.Параметры[ЗначениеПоУмолчанию.Пароль.Значение] = Неопределено Тогда
|
||||
ЗначениеПоУмолчанию.Пароль = "";
|
||||
@@ -2406,6 +2412,11 @@
|
||||
ЗначениеПоУмолчанию.ПарольСертификата = "";
|
||||
КонецЕсли;
|
||||
|
||||
Если ПолучитьПолеСтруктуры(ЗначениеПоУмолчанию.СекретСервисногоКлиента, "Состояние") = 5
|
||||
И ТекущиеНастройки.Параметры[ЗначениеПоУмолчанию.СекретСервисногоКлиента.Значение] = Неопределено Тогда
|
||||
ЗначениеПоУмолчанию.СекретСервисногоКлиента = "";
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(ЗначениеПоУмолчанию.Пароль) = Тип("Строка") Тогда
|
||||
Если ЗначениеЗаполнено(ЗначениеПоУмолчанию.Пароль) Тогда
|
||||
ЗначениеПоУмолчанию.Пароль = СервисКриптографииDSSКлиентСервер.ОбъектПароля(ЗначениеПоУмолчанию.Пароль, 1);
|
||||
@@ -2422,6 +2433,14 @@
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(ЗначениеПоУмолчанию.СекретСервисногоКлиента) = Тип("Строка") Тогда
|
||||
Если ЗначениеЗаполнено(ЗначениеПоУмолчанию.СекретСервисногоКлиента) Тогда
|
||||
ЗначениеПоУмолчанию.СекретСервисногоКлиента = СервисКриптографииDSSКлиентСервер.ОбъектПароля(ЗначениеПоУмолчанию.СекретСервисногоКлиента, 0);
|
||||
Иначе
|
||||
ЗначениеПоУмолчанию.СекретСервисногоКлиента = СервисКриптографииDSSКлиентСервер.ОбъектПароля("", 3);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого СтрокаКлюча Из ЗначениеПоУмолчанию.Сертификаты Цикл
|
||||
Если ПолучитьПолеСтруктуры(СтрокаКлюча.Значение, "Состояние") = 5
|
||||
И ТекущиеНастройки.Параметры[СтрокаКлюча.Значение.Значение] = Неопределено Тогда
|
||||
@@ -2454,14 +2473,15 @@
|
||||
// - Строка - GUID полученный для пользователя
|
||||
// Значение - Строка, Структура, Соответствие - данные сохраняемые в безопасном хранилище
|
||||
// ИмяЗначения - Строка - имя свойства в структуре конфиденциальных данных
|
||||
// ОбщиеНастройки - Булево - настройки для всех пользователей
|
||||
//
|
||||
Процедура СохранитьЗакрытыеДанные(НастройкиПользователя, Значение, ИмяЗначения = Неопределено) Экспорт
|
||||
Процедура СохранитьЗакрытыеДанные(НастройкиПользователя, Значение, ИмяЗначения = Неопределено, ОбщиеНастройки = Ложь) Экспорт
|
||||
|
||||
КлючЗначения = КлючЗаписиКонфиденциальныхДанных(НастройкиПользователя);
|
||||
КлючЗначения = КлючЗаписиКонфиденциальныхДанных(НастройкиПользователя, ОбщиеНастройки);
|
||||
НовоеЗначение = Значение;
|
||||
|
||||
Если ЗначениеЗаполнено(ИмяЗначения) Тогда
|
||||
ВсеДанные = ПолучитьЗакрытыеДанные(НастройкиПользователя);
|
||||
ВсеДанные = ПолучитьЗакрытыеДанные(НастройкиПользователя, , ОбщиеНастройки);
|
||||
ВсеДанные.Вставить(ИмяЗначения, Значение);
|
||||
НовоеЗначение = ВсеДанные;
|
||||
КонецЕсли;
|
||||
@@ -2825,6 +2845,7 @@
|
||||
| ЭкземплярыСервераDSS.СервисПодписи КАК СервисПодписи,
|
||||
| ЭкземплярыСервераDSS.СервисПроверки КАК СервисПроверки,
|
||||
| ЭкземплярыСервераDSS.СервисИдентификации КАК СервисИдентификации,
|
||||
| ЭкземплярыСервераDSS.СервисныйКлиент КАК СервисныйКлиент,
|
||||
| ЭкземплярыСервераDSS.ИдентификаторЦИ КАК ИдентификаторЦИ,
|
||||
| ЭкземплярыСервераDSS.ИдентификаторСЭП КАК ИдентификаторСЭП,
|
||||
| ЭкземплярыСервераDSS.ШаблонПодтверждения КАК ШаблонПодтверждения
|
||||
@@ -3066,6 +3087,7 @@
|
||||
Результат.Добавить(Перечисления.СпособыАвторизацииDSS.Первичный_ДвухФакторная);
|
||||
Результат.Добавить(Перечисления.СпособыАвторизацииDSS.Первичный_СертификатАвторизации);
|
||||
Результат.Добавить(Перечисления.СпособыАвторизацииDSS.Первичный_КодАвторизации);
|
||||
Результат.Добавить(Перечисления.СпособыАвторизацииDSS.Первичный_СервисныйКлиент);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
@@ -5549,8 +5571,14 @@
|
||||
РезультатЗапроса = ОтветСервисаПоУмолчанию(Истина);
|
||||
РезультатЗапроса.Вставить("Результат", Результат);
|
||||
|
||||
ДанныеПодтверждения = ПараметрыВыполнения.ДанныеПодтверждения;
|
||||
Если ДанныеПодтверждения = Неопределено Тогда
|
||||
ДанныеПодтверждения = СервисКриптографииDSSПодтверждениеСервер.ДанныеВторичнойАвторизацииПоУмолчанию(НастройкиПользователя);
|
||||
КонецЕсли;
|
||||
|
||||
ОтдельныйВыбор = ПолучитьПолеСтруктуры(ВходящиеПараметры, "ОтдельныйВыбор", Ложь);
|
||||
ПодтверждатьПринудительно = ПолучитьПолеСтруктуры(ВходящиеПараметры, "ПодтверждатьПринудительно", Ложь);
|
||||
ПодтверждатьПринудительно = ПолучитьПолеСтруктуры(ВходящиеПараметры, "ПодтверждатьПринудительно", Ложь)
|
||||
ИЛИ ДанныеПодтверждения.ПараметрыВариантаВстроенного.ПодтверждатьПринудительно;
|
||||
ТипОперации = ПараметрыВыполнения.ТипОперации;
|
||||
Сертификат = ПараметрыВыполнения.Сертификат;
|
||||
ДанныеДокумента = ПараметрыВыполнения.ДанныеДокумента;
|
||||
@@ -5559,11 +5587,7 @@
|
||||
ДатаСеанса = ПараметрыВыполнения.ДатаСеанса;
|
||||
ТипДокумента = ПараметрыВыполнения.ТипДокумента;
|
||||
ОписаниеДокумента = ПараметрыВыполнения.ОписаниеДокумента;
|
||||
ДанныеПодтверждения = ПараметрыВыполнения.ДанныеПодтверждения;
|
||||
|
||||
Если ДанныеПодтверждения = Неопределено Тогда
|
||||
ДанныеПодтверждения = СервисКриптографииDSSПодтверждениеСервер.ДанныеВторичнойАвторизацииПоУмолчанию(НастройкиПользователя);
|
||||
КонецЕсли;
|
||||
ЭтоМассивДокументов = ТипЗнч(ДанныеДокумента) = Тип("Массив");
|
||||
|
||||
ВерсияПодтверждения = ДанныеПодтверждения.ВерсияПодтверждения;
|
||||
СвойствоТранзакции = Неопределено;
|
||||
@@ -5600,6 +5624,8 @@
|
||||
НастройкиПользователя = ПроверитьМаркерОбновления(РезультатЗапроса, НастройкиПользователя, МаркерОбновлен);
|
||||
|
||||
ТекущийСертификат = СервисКриптографииDSSКлиентСервер.НайтиСертификат(НастройкиПользователя, Сертификат);
|
||||
ДанныеПодтверждения.Сертификат = ТекущийСертификат;
|
||||
ПодтверждатьПринудительно = ПодтверждатьПринудительно ИЛИ ТекущийСертификат.МобильныйЗакрытыйКлюч;
|
||||
|
||||
Если ТекущийСертификат.ДатаОкончания < ДатаСеанса И ТипОперации = "Подписание" Тогда
|
||||
РезультатЗапроса = ОтветСервисаПоУмолчанию(Ложь);
|
||||
@@ -5620,7 +5646,7 @@
|
||||
КлючДействия = СервисКриптографииDSSКлиентСервер.СвойствоВыполняемойОперации(НастройкиПользователя, "ПодписьДокумента");
|
||||
СвойствоПодписи = СервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиCMS(Истина, Ложь);
|
||||
СервисКриптографииDSSКлиентСервер.ПолучитьИнформациюДокументаДляПодписи(СвойствоПодписи, ОписаниеДокумента, ТипДокумента);
|
||||
Если ТипЗнч(ДанныеДокумента) = Тип("Массив") И ВерсияПодтверждения = 1 Тогда
|
||||
Если ЭтоМассивДокументов И ВерсияПодтверждения = 1 Тогда
|
||||
КлючДействия = СервисКриптографииDSSКлиентСервер.СвойствоВыполняемойОперации(НастройкиПользователя, "ПодписьПакета");
|
||||
КонецЕсли;
|
||||
СвойствоТранзакции = СервисКриптографииDSSКлиентСервер.СвойстваТранзакцииПодписания(СвойствоПодписи, ТекущийСертификат.Идентификатор);
|
||||
@@ -5658,9 +5684,39 @@
|
||||
Если ТипОперации = "Подтверждение" ИЛИ ТипОперации = "Аутентификация" Тогда
|
||||
РезультатЗапроса.Вставить("Результат", "");
|
||||
ИначеЕсли ТипОперации = "Подписание" И ВерсияПодтверждения = 2 Тогда
|
||||
Если ТекущийСертификат.МобильныйЗакрытыйКлюч Тогда
|
||||
СписокДокументов = СервисКриптографииDSSКлиентСервер.ЗначениеВМассиве(ДанныеДокумента);
|
||||
ПараметрыДокументов = Новый Массив;
|
||||
Для Счетчик = 0 По СписокДокументов.Количество() - 1 Цикл
|
||||
СтрокаМассива = СписокДокументов[Счетчик];
|
||||
ИмяДокумента = ПолучитьПолеСтруктуры(СтрокаМассива, "ИмяДокумента", "Подпись");
|
||||
ТипДокумента = ПолучитьПолеСтруктуры(СтрокаМассива, "ТипДокумента", "bin");
|
||||
НоваяСтрока = СервисКриптографииDSSКлиентСервер.ПолучитьСвойстваДокумента(ИмяДокумента, ТипДокумента, Истина, "");
|
||||
РезультатЗапроса = СервисКриптографииDSS.ЗагрузитьДокумент(НастройкиПользователя, СтрокаМассива.Содержание, НоваяСтрока, ВходящиеПараметры);
|
||||
Если РезультатЗапроса.Выполнено Тогда
|
||||
СписокДокументов[Счетчик] = РезультатЗапроса.Результат;
|
||||
Иначе
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если РезультатЗапроса.Выполнено Тогда
|
||||
Если НЕ ЭтоМассивДокументов Тогда
|
||||
ДанныеДокумента = СписокДокументов[Счетчик];
|
||||
Иначе
|
||||
Для Счетчик = 0 По СписокДокументов.Количество() - 1 Цикл
|
||||
ДанныеДокумента[Счетчик] = СписокДокументов[Счетчик];
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если РезультатЗапроса.Выполнено Тогда
|
||||
РезультатЗапроса = СервисКриптографииDSS.ПодписатьАсинхронно(НастройкиПользователя, ДанныеДокумента, СвойствоПодписи, ТекущийСертификат.Идентификатор, "", ВходящиеПараметры);
|
||||
ТипРезультата = ПолучитьПолеСтруктуры(РезультатЗапроса, "ТипРезультата");
|
||||
ИдентификаторТранзакции = ПолучитьПолеСтруктуры(РезультатЗапроса, "Результат.ИдентификаторОперации", "");
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли ТипОперации = "Расшифрование" И ВерсияПодтверждения = 2 Тогда
|
||||
РезультатЗапроса = СервисКриптографииDSS.РасшифроватьАсинхронно(НастройкиПользователя, ДанныеДокумента, ТекущийСертификат.Идентификатор, "CMS", "", ВходящиеПараметры);
|
||||
ТипРезультата = ПолучитьПолеСтруктуры(РезультатЗапроса, "ТипРезультата");
|
||||
@@ -6316,6 +6372,7 @@
|
||||
ОтборСпособов.Вставить(Перечисления.СпособыАвторизацииDSS.Вторичный_ЭлектроннаяПочта, 8);
|
||||
ОтборСпособов.Вставить(Перечисления.СпособыАвторизацииDSS.Вторичный_AirKeyLite, 9);
|
||||
ОтборСпособов.Вставить(Перечисления.СпособыАвторизацииDSS.Вторичный_DSSSDK, 10);
|
||||
ОтборСпособов.Вставить(Перечисления.СпособыАвторизацииDSS.Первичный_СервисныйКлиент, 11);
|
||||
|
||||
Если ТипЗнч(СпособАвторизации) = Тип("Число") Тогда
|
||||
Результат = Перечисления.СпособыАвторизацииDSS.Вторичный_МобильноеПриложение;
|
||||
@@ -6659,6 +6716,7 @@
|
||||
ДанныеПодключения.Вставить("ЗащищенноеСоединение", Истина);
|
||||
ДанныеПодключения.Вставить("ТаймАут", ВыборкаПользователей.ТаймАут);
|
||||
ДанныеПодключения.Вставить("Заглушка", "urn:ietf:wg:oauth:2.0:oob:auto");
|
||||
ДанныеПодключения.Вставить("СервисныйКлиент", ВыборкаПользователей.СервисныйКлиент);
|
||||
|
||||
Если ВыборкаПользователей <> Неопределено Тогда
|
||||
ДанныеПодключения = Новый ФиксированнаяСтруктура(ДанныеПодключения);
|
||||
@@ -6754,7 +6812,8 @@
|
||||
ДанныеПользователя.Методы = НастройкиРаботыТочкиПодключения(ВыборкаПользователей);
|
||||
ДанныеПользователя.ШаблонПодтверждения = ВыборкаПользователей.ШаблонПодтверждения;
|
||||
|
||||
НастройкиРаботыАнализПолитикиПользователя(ДанныеПользователя.Политика, Неопределено);
|
||||
НастройкиРаботыАнализПолитикиПользователя(ДанныеПользователя.Политика,
|
||||
Неопределено, ДанныеПользователя.ПервичнаяАутентификация = Перечисления.СпособыАвторизацииDSS.Первичный_СервисныйКлиент);
|
||||
|
||||
Возврат ДанныеПользователя;
|
||||
|
||||
@@ -6912,13 +6971,16 @@
|
||||
// Параметры:
|
||||
// НастройкиПользователя - см. СервисКриптографииDSS.НастройкиПользователяПоУмолчанию
|
||||
// - Строка - идентификатор поиска
|
||||
// ОбщиеНастройки - Булево - общие настройки пользователей
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - полный путь поиска в регистре БезопасноеХранилище, включает в себя данные об учетной записи и пользователе 1С
|
||||
//
|
||||
Функция КлючЗаписиКонфиденциальныхДанных(НастройкиПользователя)
|
||||
Функция КлючЗаписиКонфиденциальныхДанных(НастройкиПользователя, ОбщиеНастройки = Ложь)
|
||||
|
||||
Если ТипЗнч(НастройкиПользователя) = Тип("Строка")
|
||||
Если ОбщиеНастройки Тогда
|
||||
КлючЗначения = "ЭП_DSS." + НастройкиПользователя;
|
||||
ИначеЕсли ТипЗнч(НастройкиПользователя) = Тип("Строка")
|
||||
ИЛИ ТипЗнч(НастройкиПользователя) = Тип("УникальныйИдентификатор") Тогда
|
||||
ТекущийПользователь = Пользователи.АвторизованныйПользователь();
|
||||
КлючЗначения = "ЭлектроннаяПодписьDSS." + ТекущийПользователь.УникальныйИдентификатор() + "." + НастройкиПользователя;
|
||||
@@ -6950,6 +7012,7 @@
|
||||
Результат.Вставить("Пароль", ЗакрытьКонфиденциальноеЗначение(""));
|
||||
Результат.Вставить("ПарольСертификата", ЗакрытьКонфиденциальноеЗначение(""));
|
||||
Результат.Вставить("Сертификаты", Новый Соответствие);
|
||||
Результат.Вставить("СекретСервисногоКлиента", ЗакрытьКонфиденциальноеЗначение(""));
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
@@ -7211,6 +7274,8 @@
|
||||
Варианты = Новый Соответствие();
|
||||
Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_УчетныеДанные"),
|
||||
НСтр("ru = 'Логин и пароль'"));
|
||||
Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_СервисныйКлиент"),
|
||||
НСтр("ru = 'Логин'"));
|
||||
Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_ДвухФакторная"),
|
||||
НСтр("ru = 'Логин и пароль с дополнительным подтверждением'"));
|
||||
Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_СертификатАвторизации"),
|
||||
|
||||
@@ -811,6 +811,8 @@
|
||||
ВызватьДиалог = ПустойПароль;
|
||||
ИначеЕсли ВидАутентификации = ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_УчетныеДанные") Тогда
|
||||
ВызватьДиалог = ПустойПароль;
|
||||
ИначеЕсли ВидАутентификации = ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_СервисныйКлиент") Тогда
|
||||
ВызватьДиалог = Ложь;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Если ТокенУстарел = Неопределено Тогда
|
||||
@@ -836,6 +838,9 @@
|
||||
ИначеЕсли ВидАутентификации = ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_УчетныеДанные") Тогда
|
||||
ВызватьДиалог = ПустойПароль ИЛИ ЭтоОшибка;
|
||||
ВызватьФоновоеЗадание = НЕ ВызватьДиалог;
|
||||
ИначеЕсли ВидАутентификации = ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_СервисныйКлиент") Тогда
|
||||
ВызватьДиалог = ЭтоОшибка;
|
||||
ВызватьФоновоеЗадание = Ложь;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
@@ -901,6 +906,9 @@
|
||||
АутентификацияПоСертификату(НастройкиПользователя, ОписаниеСледующее, ПараметрыОперации);
|
||||
ИначеЕсли ВидАутентификации = ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_УчетныеДанные") Тогда
|
||||
АутентификацияПоЛогину(НастройкиПользователя, ОписаниеСледующее, ПараметрыОперации);
|
||||
ИначеЕсли ВидАутентификации = ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_СервисныйКлиент") Тогда
|
||||
ОтветПользователю = ОтветСервисаПоУмолчанию(Ложь);
|
||||
ПроверкаАутентификацииПользователяРезультат(ОтветПользователю, ВходящийКонтекст);
|
||||
Иначе
|
||||
ОтветПользователю = ОтветСервисаПоУмолчанию(Ложь);
|
||||
СформироватьОтказАутентификации(ОтветПользователю);
|
||||
@@ -1550,7 +1558,7 @@
|
||||
ПодтверждатьОперацию = Ложь;
|
||||
ВходящийКонтекст.Вставить("Транзакция", Истина);
|
||||
Иначе
|
||||
ПодтверждатьОперацию = КлючДействия.Подтверждать ИЛИ ВходящийКонтекст.ПодтверждатьПринудительно;
|
||||
ПодтверждатьОперацию = КлючДействия.Подтверждать ИЛИ ВходящийКонтекст.ПодтверждатьПринудительно ИЛИ ОписаниеСертификата.МобильныйЗакрытыйКлюч;
|
||||
ВходящийКонтекст.Вставить("Транзакция", ПодтверждатьОперацию);
|
||||
КонецЕсли;
|
||||
|
||||
@@ -2127,25 +2135,46 @@
|
||||
КонецЕсли;
|
||||
|
||||
ОписаниеСертификата = ВходящийКонтекст.ОписаниеСертификата;
|
||||
СвойствоПодписи = ВходящийКонтекст.СвойствоПодписи;
|
||||
|
||||
Если ПодтверждатьОперацию И ВерсияПодтверждения = 2 Тогда
|
||||
ОбъектОповещения = Новый ОписаниеОповещения("ПодписатьАсинхронноПодтверждение", ЭтотОбъект);
|
||||
Если ВерсияПодтверждения = 2 И НЕ ЗначениеЗаполнено(ВходящийКонтекст.ИдентификаторТранзакции) Тогда
|
||||
ВходящийКонтекст.Вставить("ПодтверждатьОперацию", ПодтверждатьОперацию);
|
||||
ОбъектОповещения = Новый ОписаниеОповещения("ПодписатьАсинхронноПослеВыгрузкиДокументов", ЭтотОбъект);
|
||||
СледующееОповещение = ОбработчикОповещения(ОбъектОповещения, ВходящийКонтекст);
|
||||
|
||||
ПараметрыОперации = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ВходящийКонтекст.ПараметрыОперации); // Структура
|
||||
ПараметрыОперации.Вставить("Сертификат", ВходящийКонтекст.ПредставлениеСертификата);
|
||||
ПараметрыОперации.Вставить("ПодтверждатьПринудительно", Истина);
|
||||
Если ОписаниеСертификата.МобильныйЗакрытыйКлюч И ВходящийКонтекст.ПакетнаяПодпись Тогда
|
||||
ПараметрыДокументов = Новый Массив;
|
||||
Для Каждого СтрокаМассива Из ВходящийКонтекст.ДанныеДокумента Цикл
|
||||
ИмяДокумента = СвойствоСтруктуры(СтрокаМассива, "Name", "Подпись");
|
||||
ТипДокумента = СвойствоСтруктуры(СтрокаМассива, "Type", "bin");
|
||||
НоваяСтрока = СервисКриптографииDSSКлиентСервер.ПолучитьСвойстваДокумента(ИмяДокумента, ТипДокумента, Истина, "");
|
||||
НоваяСтрока.Вставить("Content", Base64Строка(СтрокаМассива.Содержание));
|
||||
ПараметрыДокументов.Добавить(НоваяСтрока);
|
||||
КонецЦикла;
|
||||
|
||||
ОжидатьЗавершенияВыполненияВФоне(
|
||||
СледующееОповещение,
|
||||
СервисКриптографииDSSСлужебныйВызовСервера.ПодписатьАсинхронно(
|
||||
ВходящийКонтекст.НастройкиПользователя,
|
||||
ВходящийКонтекст.ДанныеДокумента,
|
||||
ВходящийКонтекст.СвойствоПодписи,
|
||||
ОписаниеСертификата.Идентификатор,
|
||||
ОписаниеСертификата.ПинКод,
|
||||
ПараметрыОперации),
|
||||
СервисКриптографииDSSСлужебныйВызовСервера.ЗагрузитьПакетДокументов(
|
||||
НастройкиПользователя,
|
||||
ПараметрыДокументов,
|
||||
ВходящийКонтекст.ПараметрыОперации),
|
||||
ВходящийКонтекст.ПараметрыОперации);
|
||||
ИначеЕсли ОписаниеСертификата.МобильныйЗакрытыйКлюч Тогда
|
||||
ИмяДокумента = СвойствоСтруктуры(СвойствоПодписи, "DocumentInfo", "Подпись");
|
||||
ТипДокумента = СвойствоСтруктуры(СвойствоПодписи, "DocumentType", "bin");
|
||||
ПараметрыДокументов = СервисКриптографииDSSКлиентСервер.ПолучитьСвойстваДокумента(ИмяДокумента, ТипДокумента, Истина, "");
|
||||
|
||||
ОжидатьЗавершенияВыполненияВФоне(
|
||||
СледующееОповещение,
|
||||
СервисКриптографииDSSСлужебныйВызовСервера.ЗагрузитьДокумент(
|
||||
НастройкиПользователя,
|
||||
ВходящийКонтекст.ДанныеДокумента,
|
||||
ПараметрыДокументов,
|
||||
ВходящийКонтекст.ПараметрыОперации),
|
||||
ВходящийКонтекст.ПараметрыОперации);
|
||||
Иначе
|
||||
ПодписатьАсинхронноПослеВыгрузкиДокументов(Неопределено, ВходящийКонтекст);
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли ПодтверждатьОперацию Тогда
|
||||
ОбъектОповещения = Новый ОписаниеОповещения("ПодписатьФоновымЗаданием", ЭтотОбъект);
|
||||
@@ -2173,6 +2202,57 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры Подписать.
|
||||
Процедура ПодписатьАсинхронноПослеВыгрузкиДокументов(ДлительнаяОперация, ВходящийКонтекст) Экспорт
|
||||
|
||||
РезультатВыполнения = ПолучитьРезультатВыполненияВФоне(ДлительнаяОперация, ВходящийКонтекст);
|
||||
НастройкиПользователя = ВходящийКонтекст.НастройкиПользователя;
|
||||
ПодтверждатьОперацию = ВходящийКонтекст.ПодтверждатьОперацию;
|
||||
ОписаниеСертификата = ВходящийКонтекст.ОписаниеСертификата;
|
||||
|
||||
Если ДлительнаяОперация = Неопределено Тогда
|
||||
РезультатВыполнения = ОтветСервисаПоУмолчанию(Истина);
|
||||
ИначеЕсли РезультатВыполнения <> Неопределено Тогда
|
||||
Если РезультатВыполнения.Выполнено Тогда
|
||||
Если ВходящийКонтекст.ПакетнаяПодпись Тогда
|
||||
Для Счетчик = 0 По РезультатВыполнения.Результат.Количество() - 1 Цикл
|
||||
ВходящийКонтекст.ДанныеДокумента[Счетчик] = РезультатВыполнения.Результат[Счетчик];
|
||||
КонецЦикла;
|
||||
Иначе
|
||||
ВходящийКонтекст.ДанныеДокумента = РезультатВыполнения.Результат;
|
||||
КонецЕсли;
|
||||
ИначеЕсли НеОбрабатыватьОшибкиСервиса(ВходящийКонтекст) Тогда
|
||||
ПодписатьРезультат(РезультатВыполнения, ВходящийКонтекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ПодтверждатьОперацию ИЛИ ОписаниеСертификата.МобильныйЗакрытыйКлюч Тогда
|
||||
ОбъектОповещения = Новый ОписаниеОповещения("ПодписатьАсинхронноПодтверждение", ЭтотОбъект);
|
||||
СледующееОповещение = ОбработчикОповещения(ОбъектОповещения, ВходящийКонтекст);
|
||||
|
||||
ПараметрыОперации = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ВходящийКонтекст.ПараметрыОперации); // Структура
|
||||
ПараметрыОперации.Вставить("Сертификат", ВходящийКонтекст.ПредставлениеСертификата);
|
||||
ПараметрыОперации.Вставить("ПодтверждатьПринудительно", Истина);
|
||||
|
||||
ОжидатьЗавершенияВыполненияВФоне(
|
||||
СледующееОповещение,
|
||||
СервисКриптографииDSSСлужебныйВызовСервера.ПодписатьАсинхронно(
|
||||
НастройкиПользователя,
|
||||
ВходящийКонтекст.ДанныеДокумента,
|
||||
ВходящийКонтекст.СвойствоПодписи,
|
||||
ОписаниеСертификата.Идентификатор,
|
||||
ОписаниеСертификата.ПинКод,
|
||||
ПараметрыОперации),
|
||||
ВходящийКонтекст.ПараметрыОперации);
|
||||
|
||||
Иначе
|
||||
ПодписатьФоновымЗаданием(РезультатВыполнения, ВходящийКонтекст);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры Подписать.
|
||||
Процедура ПодписатьАсинхронноПодтверждение(ДлительнаяОперация, ВходящийКонтекст) Экспорт
|
||||
|
||||
|
||||
@@ -224,6 +224,8 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область ОбработкаОшибок
|
||||
|
||||
// Вызывает метод ПоказатьИнформациюОбОшибке объекта ОбработкаОшибок.
|
||||
// Требуется использовать для возможности автоматического тестирования,
|
||||
// чтобы перехватывать ошибки с помощью расширения.
|
||||
@@ -429,6 +431,8 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбработкаСобытийПриложения
|
||||
|
||||
// Отключает выдачу предупреждения пользователю при завершении работы программы.
|
||||
@@ -1206,14 +1210,14 @@
|
||||
// то есть с некоторой минимальной задержкой.
|
||||
//
|
||||
// Параметры:
|
||||
// Оповещение - ОписаниеОповещения - оповещение, которое нужно выполнить.
|
||||
// ОписаниеОповещения - ОписаниеОповещения - оповещение, которое нужно выполнить.
|
||||
// Результат - Произвольный - значение, которое передается в параметр Результат
|
||||
// метода платформы ВыполнитьОбработкуОповещения.
|
||||
//
|
||||
Процедура НачатьВыполнениеОбработкиОповещения(Оповещение, Результат = Неопределено) Экспорт
|
||||
Процедура НачатьВыполнениеОбработкиОповещения(ОписаниеОповещения, Результат = Неопределено) Экспорт
|
||||
|
||||
Контекст = Новый Структура;
|
||||
Контекст.Вставить("Оповещение", Оповещение);
|
||||
Контекст.Вставить("Оповещение", ОписаниеОповещения);
|
||||
Контекст.Вставить("Результат", Результат);
|
||||
|
||||
Поток = Новый ПотокВПамяти;
|
||||
@@ -1222,6 +1226,24 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Открыть выбор объектов метаданных.
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыФормы - см. СтандартныеПодсистемыКлиентСервер.ПараметрыВыбораОбъектовМетаданных
|
||||
// ОписаниеОповещенияОЗакрытии - ОписаниеОповещения - оповещение, вызываемое при закрытии формы с параметрами:
|
||||
// # ВыбранныеОбъектыМетаданных - СписокЗначений - полные имена выбранных объектов метаданных,
|
||||
// или ссылки на идентификаторы объектов метаданных, если параметр ВыбиратьСсылки установлен в Истина.
|
||||
// # ДополнительныеПараметры - Произвольный - дополнительные параметры, переданные при создании оповещения.
|
||||
// Если ОписаниеОповещенияОЗакрытии не указано, то будет вызвано оповещение, которое можно получить
|
||||
// с помощью обработчика ОбработкаОповещения:
|
||||
// # ИмяСобытия - Строка - "ВыборОбъектовМетаданных"
|
||||
// # Параметр - СписокЗначений - выбранные объекты метаданных.
|
||||
// # Источник - см. СтандартныеПодсистемыКлиентСервер.ПараметрыВыбораОбъектовМетаданных.УникальныйИдентификаторИсточник
|
||||
//
|
||||
Процедура ВыбратьОбъектыМетаданных(ПараметрыФормы, ОписаниеОповещенияОЗакрытии = Неопределено) Экспорт
|
||||
ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыФормы,,,,, ОписаниеОповещенияОЗакрытии);
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (c) 2024, ООО 1С-Софт
|
||||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||
// Текст лицензии доступен по ссылке:
|
||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// Возвращает параметры выбора объектов метаданных для процедуры
|
||||
// СтандартныеПодсистемыКлиент.ВыбратьОбъектыМетаданных.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * КоллекцииВыбираемыхОбъектовМетаданных - СписокЗначений - фильтр по типам объектов метаданных,
|
||||
// которые могут быть выбраны. Например, выбирать только объекты метаданных справочники и документы:
|
||||
// КоллекцииВыбираемыхОбъектовМетаданных = Новый СписокЗначений;
|
||||
// КоллекцииВыбираемыхОбъектовМетаданных.Добавить("Справочники");
|
||||
// КоллекцииВыбираемыхОбъектовМетаданных.Добавить("Документы");
|
||||
//
|
||||
// * ФильтрПоОбъектамМетаданных - СписокЗначений - фильтр по объектам метаданных,
|
||||
// которые могут быть выбраны. Например:
|
||||
// ФильтрПоОбъектамМетаданных = Новый СписокЗначений;
|
||||
// ФильтрПоОбъектамМетаданных.Добавить("Справочник.Товары");
|
||||
// ФильтрПоОбъектамМетаданных.Добавить("Документ.СчетНаОплату");
|
||||
// * ВыбранныеОбъектыМетаданных - СписокЗначений - полные имена выбранных объектов метаданных, которые
|
||||
// в дереве метаданных должны быть отмечены флажком.
|
||||
// * НачальноеЗначениеВыбора - Строка - полное имя метаданных, на котором будет спозиционирован
|
||||
// список при открытии формы. Например, "Справочник.Партнеры".
|
||||
// * ВыборЕдинственного - Булево - по умолчанию Ложь. Укажите Истина, если нужно выбрать один объект метаданных.
|
||||
// При этом пометка нескольких строк будет невозможна, а выбирать можно по двойному клик по строке.
|
||||
// * ВыбиратьСсылки - Булево - по умолчанию Ложь. Укажите Истина, чтобы в возвращаемом значении вместо
|
||||
// полных имен выбранных метаданных содержались ссылки на их идентификаторы,
|
||||
// см. ОбщегоНазначения.ИдентификаторыОбъектовМетаданных.
|
||||
// * ВыбиратьКоллекцииКогдаВыбраныВсеОбъекты - Булево - по умолчанию Ложь. При группировке объектов по видам,
|
||||
// укажите Истина, чтобы в возвращаемое значение включать также типы объектов метаданных
|
||||
// (Конфигурация, Справочники, Документы...), если у них выбраны все подчиненные строки.
|
||||
// * ВыбиратьТаблицыВнешнихИсточниковДанных - Булево - по умолчанию Ложь для совместимости.
|
||||
// * Заголовок - Строка - если не указано, то форма откроется со стандартным заголовком "Выбор объектов метаданных".
|
||||
// * СпособГруппировкиОбъектов - Строка - по умолчанию "ПоВидам". Укажите "ПоРазделам", чтобы вывести дерево
|
||||
// объектов метаданных по разделам командного интерфейса (подсистемам, включенным в командный интерфейс)
|
||||
// вместо группировки по технологическим типам: Справочники, Документы и т.п.
|
||||
// Также можно указать "ПоРазделам,ПоВидам" или "ПоВидам,ПоРазделам", чтобы в форме был доступен
|
||||
// переключатель группировки объектов метаданных.
|
||||
// * РодительскиеПодсистемы - СписокЗначений - можно указать список подсистемы, только подчиненные подсистемы
|
||||
// которых нужно отобразить в форме.
|
||||
// * ТолькоПодсистемыСКИ - Булево - по умолчанию Ложь. Укажите Истина, чтобы в списке оставить только подсистемы,
|
||||
// которые включены в командный интерфейс (разделы командного интерфейса).
|
||||
// * УникальныйИдентификаторИсточник - УникальныйИдентификатор - опционально. Уникальный идентификатор формы,
|
||||
// передаваемый в оповещение ВыборОбъектовМетаданных в качестве параметра Источник.
|
||||
// Это оповещение вызывается, если
|
||||
//
|
||||
Функция ПараметрыВыбораОбъектовМетаданных() Экспорт
|
||||
|
||||
ПараметрыФормы = Новый Структура;
|
||||
ПараметрыФормы.Вставить("КоллекцииВыбираемыхОбъектовМетаданных", Новый СписокЗначений);
|
||||
ПараметрыФормы.Вставить("ФильтрПоОбъектамМетаданных", Новый СписокЗначений);
|
||||
ПараметрыФормы.Вставить("ВыбранныеОбъектыМетаданных", Новый СписокЗначений);
|
||||
ПараметрыФормы.Вставить("НачальноеЗначениеВыбора", "");
|
||||
ПараметрыФормы.Вставить("ВыборЕдинственного", Ложь);
|
||||
ПараметрыФормы.Вставить("ВыбиратьСсылки", Ложь);
|
||||
ПараметрыФормы.Вставить("ВыбиратьКоллекцииКогдаВыбраныВсеОбъекты", Ложь);
|
||||
ПараметрыФормы.Вставить("ВыбиратьТаблицыВнешнихИсточниковДанных", Ложь);
|
||||
ПараметрыФормы.Вставить("Заголовок", "");
|
||||
ПараметрыФормы.Вставить("СпособГруппировкиОбъектов", "ПоВидам");
|
||||
ПараметрыФормы.Вставить("РодительскиеПодсистемы", Новый СписокЗначений);
|
||||
ПараметрыФормы.Вставить("ТолькоПодсистемыСКИ", Ложь);
|
||||
ПараметрыФормы.Вставить("УникальныйИдентификаторИсточник", Неопределено);
|
||||
Возврат ПараметрыФормы;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="6a8de94b-7b62-4d91-80df-e47c4ef90864">
|
||||
<name>СтандартныеПодсистемыКлиентСервер</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Стандартные подсистемы клиент сервер</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
||||
@@ -627,6 +627,15 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ИнформационнаяБазаФайловая() Экспорт
|
||||
|
||||
СтрокаСоединенияИнформационнойБазы = СтрокаСоединенияИнформационнойБазы();
|
||||
|
||||
Возврат СтрНайти(ВРег(СтрокаСоединенияИнформационнойБазы), "FILE=") = 1;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
Функция РазделениеВключено() Экспорт
|
||||
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
|
||||
|
||||
@@ -348,7 +348,7 @@
|
||||
|
||||
// Получает настройку необходимости выводить подтверждение при завершении работы программы
|
||||
// для текущего пользователя. Предназначена для использования в форме персональных настроек
|
||||
// пользователя. Пример использования см. в общей форме _ДемоМоиНастройки.
|
||||
// пользователя.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - если Истина, то пользователю при закрытии программы будет показано
|
||||
@@ -739,7 +739,17 @@
|
||||
// Вызывает исключение с требованием перезапустить сеанс из-за обновления расширений программы.
|
||||
Процедура ПотребоватьПерезапускСеансаПоПричинеДинамическогоОбновленияРасширенийПрограммы() Экспорт
|
||||
|
||||
Если ЭтоРазделенныйРежимСеансаБезРазделителей() Тогда
|
||||
ЭтоРазделенныйРежимБезРасширенийОбластиДанных = ЭтоРазделенныйРежимСеансаБезРазделителей();
|
||||
|
||||
Если ЭтоРазделенныйРежимБезРасширенийОбластиДанных Тогда
|
||||
ФоновоеЗадание = ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание();
|
||||
Если ФоновоеЗадание <> Неопределено
|
||||
И ФоновоеЗадание.РазделениеДанных.Количество() > 0 Тогда
|
||||
ЭтоРазделенныйРежимБезРасширенийОбластиДанных = Ложь;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоРазделенныйРежимБезРасширенийОбластиДанных Тогда
|
||||
ТекстОшибки =
|
||||
НСтр("ru = 'Для выполнения требуемых действий следует
|
||||
|запустить сеанс с установленными разделителями.
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
// Параметры:
|
||||
// ОтборМетаданных - СписокЗначений из Строка - список из полных имен метаданных, в которых будет
|
||||
// выполнен поиск помеченных на удаление.
|
||||
// Например, "Справочник._ДемоНоменклатура".
|
||||
// Например, "Справочник.Номенклатура".
|
||||
// - Неопределено - отбор по объектам метаданных накладываться не будет.
|
||||
//
|
||||
// ИскатьТехнологическиеОбъекты - Булево - если Истина, то поиск будет осуществляться в объектах метаданных,
|
||||
@@ -143,7 +143,7 @@
|
||||
// // Установка основной таблицы необходима для перехода к спискам помеченных объектов
|
||||
// // с предустановленным отбором
|
||||
// ОсновныеТаблицыСписка = Новый СписокЗначений();
|
||||
// ОсновныеТаблицыСписка.Добавить("Справочник._ДемоНоменклатура");
|
||||
// ОсновныеТаблицыСписка.Добавить("Справочник.Номенклатура");
|
||||
// Настройка.ТипыМетаданных = ОсновныеТаблицыСписка;
|
||||
// УдалениеПомеченныхОбъектов.ПриСозданииНаСервере(ЭтотОбъект, НастройкиОтображенияПомеченных);
|
||||
//
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
// помеченных на удаления.
|
||||
//
|
||||
// Пример:
|
||||
// Объекты.Добавить(Метаданные.Справочники._ДемоНоменклатура);
|
||||
// Объекты.Добавить(Метаданные.Справочники._ДемоПартнеры);
|
||||
// Объекты.Добавить(Метаданные.Справочники.Номенклатура);
|
||||
// Объекты.Добавить(Метаданные.Справочники.Партнеры);
|
||||
//
|
||||
Процедура ПриОпределенииОбъектовСКомандойПоказатьПомеченные(Объекты) Экспорт
|
||||
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1165,19 +1165,19 @@
|
||||
Выбранные = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(УсловияВыбора.Отмеченные);
|
||||
УдалитьОтключенныеЗначения(Выбранные);
|
||||
|
||||
ПараметрыПодбора = Новый Структура;
|
||||
ПараметрыПодбора.Вставить("ВыбиратьСсылки", Истина);
|
||||
ПараметрыПодбора.Вставить("ВыбранныеОбъектыМетаданных", Выбранные);
|
||||
ПараметрыПодбора.Вставить("КоллекцииВыбираемыхОбъектовМетаданных", Коллекции);
|
||||
ПараметрыПодбора.Вставить("СпособГруппировкиОбъектов", "ПоРазделам,ПоВидам");
|
||||
ПараметрыПодбора.Вставить("Заголовок", НСтр("ru = 'Подбор таблиц'"));
|
||||
ПараметрыПодбора = СтандартныеПодсистемыКлиентСервер.ПараметрыВыбораОбъектовМетаданных();
|
||||
ПараметрыПодбора.ВыбиратьСсылки = Истина;
|
||||
ПараметрыПодбора.ВыбранныеОбъектыМетаданных = Выбранные;
|
||||
ПараметрыПодбора.КоллекцииВыбираемыхОбъектовМетаданных = Коллекции;
|
||||
ПараметрыПодбора.СпособГруппировкиОбъектов = "ПоРазделам,ПоВидам";
|
||||
ПараметрыПодбора.Заголовок = НСтр("ru = 'Подбор таблиц'");
|
||||
|
||||
Контекст = Новый Структура;
|
||||
Контекст.Вставить("УсловияВыбора", УсловияВыбора);
|
||||
Контекст.Вставить("ОповещениеОЗакрытии", ОповещениеОЗакрытии);
|
||||
|
||||
Обработчик = Новый ОписаниеОповещения("ПослеВыбораОбъектовМетаданных", ЭтотОбъект, Контекст);
|
||||
ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыПодбора,,,,, Обработчик);
|
||||
СтандартныеПодсистемыКлиент.ВыбратьОбъектыМетаданных(ПараметрыПодбора, Обработчик);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -1195,21 +1195,21 @@
|
||||
УдалитьОтключенныеЗначения(Выбранные);
|
||||
Коллекции = Новый СписокЗначений;
|
||||
|
||||
ПараметрыПодбора = Новый Структура;
|
||||
ПараметрыПодбора.Вставить("ВыбранныеОбъектыМетаданных", Выбранные);
|
||||
ПараметрыПодбора.Вставить("КоллекцииВыбираемыхОбъектовМетаданных", Коллекции);
|
||||
ПараметрыПодбора = СтандартныеПодсистемыКлиентСервер.ПараметрыВыбораОбъектовМетаданных();
|
||||
ПараметрыПодбора.ВыбранныеОбъектыМетаданных = Выбранные;
|
||||
ПараметрыПодбора.КоллекцииВыбираемыхОбъектовМетаданных = Коллекции;
|
||||
|
||||
Если УсловияВыбора.ИмяПоля = "Роль" Тогда
|
||||
Для Каждого ЭлементСписка Из Выбранные Цикл
|
||||
ЭлементСписка.Значение = "Роль." + ЭлементСписка.Значение;
|
||||
КонецЦикла;
|
||||
ПараметрыПодбора.Вставить("СпособГруппировкиОбъектов", "ПоВидам");
|
||||
ПараметрыПодбора.Вставить("Заголовок", НСтр("ru = 'Подбор ролей'"));
|
||||
ПараметрыПодбора.СпособГруппировкиОбъектов = "ПоВидам";
|
||||
ПараметрыПодбора.Заголовок = НСтр("ru = 'Подбор ролей'");
|
||||
Коллекции.Добавить("Роли");
|
||||
Иначе
|
||||
ПараметрыПодбора.Вставить("СпособГруппировкиОбъектов", "ПоВидам,ПоРазделам");
|
||||
ПараметрыПодбора.Вставить("Заголовок", НСтр("ru = 'Подбор объектов метаданных'"));
|
||||
ПараметрыПодбора.Вставить("ВыбиратьКоллекцииКогдаВыбраныВсеОбъекты", Истина);
|
||||
ПараметрыПодбора.СпособГруппировкиОбъектов = "ПоВидам,ПоРазделам";
|
||||
ПараметрыПодбора.Заголовок = НСтр("ru = 'Подбор объектов метаданных'");
|
||||
ПараметрыПодбора.ВыбиратьКоллекцииКогдаВыбраныВсеОбъекты = Истина;
|
||||
ДобавитьКоллекцииОбъектовМетаданныхСПравами(Коллекции);
|
||||
КонецЕсли;
|
||||
|
||||
@@ -1218,7 +1218,7 @@
|
||||
Контекст.Вставить("ОповещениеОЗакрытии", ОповещениеОЗакрытии);
|
||||
|
||||
Обработчик = Новый ОписаниеОповещения("ПослеВыбораОбъектовМетаданных", ЭтотОбъект, Контекст);
|
||||
ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыПодбора,,,,, Обработчик);
|
||||
СтандартныеПодсистемыКлиент.ВыбратьОбъектыМетаданных(ПараметрыПодбора, Обработчик);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -1127,6 +1127,30 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает строку символов.
|
||||
//
|
||||
// Параметры:
|
||||
// Символ - Строка - строка длиной 1 символ.
|
||||
// Количество - Число - количество символов, которые требуется вернуть.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
Функция СтрокаСимволов(Символ = " ", Количество = 50) Экспорт
|
||||
|
||||
Шаблон = " ";
|
||||
Если Количество > 50 Тогда
|
||||
Шаблоны = Новый Массив;
|
||||
Пока Шаблоны.Количество() * 50 < Количество Цикл
|
||||
Шаблоны.Добавить(Шаблон);
|
||||
КонецЦикла;
|
||||
Шаблон = СтрСоединить(Шаблоны, "");
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Лев(СтрЗаменить(Шаблон, " ", Символ), Количество);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДоступнаБалансировкаНагрузкиНаДиск() Экспорт
|
||||
|
||||
Возврат Не ОбщегоНазначения.ИнформационнаяБазаФайловая();
|
||||
|
||||
@@ -3765,7 +3765,7 @@
|
||||
// Подсказка - Строка - подсказка команды.
|
||||
// Картинка - Картинка - картинка команды.
|
||||
// Действие - Строка - полный путь к процедуре, которую необходимо выполнить.
|
||||
// Например, "_ДемоСтандартныеПодсистемыКлиент.ОткрытьФормуДокументаВстреча".
|
||||
// Например, "СтандартныеПодсистемыКлиент.ОткрытьФормуДокументаВстреча".
|
||||
// ИзменяетСохраняемыеДанные - Булево
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
||||
@@ -1972,7 +1972,7 @@
|
||||
|
||||
// Параметры:
|
||||
// ИмяОбработчика - Строка - полный путь к функции, которую необходимо выполнить.
|
||||
// Например, "_ДемоСтандартныеПодсистемыКлиент.ОткрытьФормуДокументаВстреча".
|
||||
// Например, "СтандартныеПодсистемыКлиент.ОткрытьФормуДокументаВстреча".
|
||||
// Параметры - Структура:
|
||||
// * КонтактнаяИнформация - см. ПараметрКонтактнаяИнформацияДляВыполненияКоманд
|
||||
// * ДополнительныеПараметры - см. ДополнительныеПараметрыДляВыполненияКоманд
|
||||
|
||||
@@ -39,12 +39,12 @@
|
||||
// Настройки.ОписаниеКоманд[Адрес].ЗапланироватьВстречу.Заголовок = НСтр("ru='Встреча'");
|
||||
// Настройки.ОписаниеКоманд[Адрес].ЗапланироватьВстречу.Подсказка = НСтр("ru='Создать событие встречи'");
|
||||
// Настройки.ОписаниеКоманд[Адрес].ЗапланироватьВстречу.Картинка = БиблиотекаКартинок.ЗапланированноеВзаимодействие;
|
||||
// Настройки.ОписаниеКоманд[Адрес].ЗапланироватьВстречу.Действие = "_ДемоСтандартныеПодсистемыКлиент.ОткрытьФормуДокументаВстреча";
|
||||
// Настройки.ОписаниеКоманд[Адрес].ЗапланироватьВстречу.Действие = "СтандартныеПодсистемыКлиент.ОткрытьФормуДокументаВстреча";
|
||||
//
|
||||
// _ДемоФактическийАдресОрганизации = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("_ДемоФактическийАдресОрганизации");
|
||||
// Настройки.ОписаниеКоманд[_ДемоФактическийАдресОрганизации] =
|
||||
// ФактическийАдресОрганизации = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("ФактическийАдресОрганизации");
|
||||
// Настройки.ОписаниеКоманд[ФактическийАдресОрганизации] =
|
||||
// ОбщегоНазначения.СкопироватьРекурсивно(УправлениеКонтактнойИнформацией.КомандыТипаКонтактнойИнформации(Перечисления.ТипыКонтактнойИнформации.Адрес));
|
||||
// Настройки.ОписаниеКоманд[_ДемоФактическийАдресОрганизации].ЗапланироватьВстречу.Действие = ""; // Отключение действия команды для вида
|
||||
// Настройки.ОписаниеКоманд[ФактическийАдресОрганизации].ЗапланироватьВстречу.Действие = ""; // Отключение действия команды для вида
|
||||
//
|
||||
// Процедурам, указанных в свойстве Действие, передаются 2 параметра:
|
||||
// КонтактнаяИнформация - Структура:
|
||||
@@ -59,7 +59,7 @@
|
||||
// Процедура ОткрытьФормуДокументаВстреча(КонтактнаяИнформация, ДополнительныеПараметры) Экспорт
|
||||
// ЗначенияЗаполнения = Новый Структура;
|
||||
// ЗначенияЗаполнения.Вставить("МестоПроведенияВстречи", КонтактнаяИнформация.Представление);
|
||||
// Если ТипЗнч(ДополнительныеПараметры.ВладелецКонтактнойИнформации) = Тип("ДокументСсылка._ДемоЗаказПокупателя") Тогда
|
||||
// Если ТипЗнч(ДополнительныеПараметры.ВладелецКонтактнойИнформации) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
|
||||
// ЗначенияЗаполнения.Вставить("Предмет", ДополнительныеПараметры.ВладелецКонтактнойИнформации);
|
||||
// ЗначенияЗаполнения.Вставить("Контакт", "");
|
||||
// Иначе
|
||||
@@ -81,12 +81,12 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Наименования - Соответствие из КлючИЗначение - представление вида контактной информации на переданном языке:
|
||||
// * Ключ - Строка - имя вида контактной информации. Например, "_ДемоАдресПартнера".
|
||||
// * Ключ - Строка - имя вида контактной информации. Например, "АдресПартнера".
|
||||
// * Значение - Строка - наименование вида контактной информации для переданного кода языка.
|
||||
// КодЯзыка - Строка - код языка. Например, "en".
|
||||
//
|
||||
// Пример:
|
||||
// Наименования["_ДемоАдресПартнера"] = НСтр("ru='Адрес'; en='Address';", КодЯзыка);
|
||||
// Наименования["АдресПартнера"] = НСтр("ru='Адрес'; en='Address';", КодЯзыка);
|
||||
//
|
||||
Процедура ПриПолученииНаименованийВидовКонтактнойИнформации(Наименования, КодЯзыка) Экспорт
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
// Если ПечатнаяФорма <> Неопределено Тогда
|
||||
// ПечатнаяФорма.ТабличныйДокумент = ПечатьКвитанции(МассивОбъектов);
|
||||
// ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Квитанция (с QR кодом)'");
|
||||
// ПечатнаяФорма.ПолныйПутьКМакету = "Документ._ДемоСчетНаОплатуПокупателю.ПФ_MXL_Квитанция";
|
||||
// ПечатнаяФорма.ПолныйПутьКМакету = "Документ.СчетНаОплатуПокупателю.ПФ_MXL_Квитанция";
|
||||
// КонецЕсли;
|
||||
//
|
||||
Функция СведенияОПечатнойФорме(КоллекцияПечатныхФорм, Идентификатор) Экспорт
|
||||
@@ -356,7 +356,7 @@
|
||||
//
|
||||
// Для печатных форм, менеджером печати которых является общий модуль
|
||||
// "УправлениеПечатью", в качестве идентификатора необходимо указать полный путь к макету.
|
||||
// Например, "Документ._ДемоСчетНаОплатуПокупателю.ПФ_MXL_СчетНаОплату".
|
||||
// Например, "Документ.СчетНаОплатуПокупателю.ПФ_MXL_СчетНаОплату".
|
||||
//
|
||||
// - Массив - список идентификаторов команд печати.
|
||||
//
|
||||
@@ -384,7 +384,7 @@
|
||||
// Формат "<ИмяПроцедуры>" используется, когда процедура размещена
|
||||
// в модуле основной формы отчета или обработки, указанной в МенеджерПечати.
|
||||
// Например,
|
||||
// КомандаПечати.Обработчик = "_ДемоСтандартныеПодсистемыКлиент.ПечатьСчетовНаОплатуПокупателю";
|
||||
// КомандаПечати.Обработчик = "ЗащитаПерсональныхДанныхКлиент.ОткрытьФормуСогласиеНаОбработкуПерсональныхДанных";
|
||||
// Пример обработчика в модуле формы:
|
||||
// // Формирует печатную форму <представление печатной формы>.
|
||||
// //
|
||||
@@ -5861,6 +5861,8 @@
|
||||
|
||||
ОбработанныеЯчейки = Новый Соответствие;
|
||||
|
||||
ФункцииСРазделениемПараметров = ФункцииСРазделениемПараметров();
|
||||
|
||||
Для НомерСтроки = Область.Верх По Область.Низ Цикл
|
||||
Для НомерСтолбца = 1 По Макет.ШиринаТаблицы Цикл
|
||||
ОбластьЯчейки = Макет.Область(НомерСтроки, НомерСтолбца, НомерСтроки, НомерСтолбца);
|
||||
@@ -5876,12 +5878,25 @@
|
||||
Для Каждого Параметр Из ПараметрыВТексте Цикл
|
||||
Выражение = ОчиститьКвадратныеСкобки(Параметр);
|
||||
ЭлементыФормулы =КонструкторФормулСлужебный.ЭлементыФормулы(Выражение);
|
||||
|
||||
НайденаФункцияИтогов = Ложь;
|
||||
|
||||
Для Каждого Элемент Из ЭлементыФормулы.ВсеЭлементы Цикл
|
||||
Если СтрНачинаетсяС(Элемент, ИмяМодуляПечати() + РазделительКоманды())
|
||||
И ФункцииСРазделениемПараметров.Найти(Элемент) <> Неопределено Тогда
|
||||
НайденаФункцияИтогов = Истина;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Таблица Из Таблицы Цикл
|
||||
СтрокаПоиска = Таблица + ".";
|
||||
Если СтрНачинаетсяС(Элемент, СтрокаПоиска) Тогда
|
||||
Если НайденаФункцияИтогов Тогда
|
||||
НайденаФункцияИтогов = Ложь;
|
||||
Иначе
|
||||
Возврат Таблица;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
@@ -7054,7 +7069,7 @@
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
СоответствиеСтроки = Новый Соответствие();
|
||||
СоответствиеСтроки = ОбщегоНазначения.СкопироватьРекурсивно(ИсточникДанных);
|
||||
Для Каждого ПараметрОбласти Из МассивПараметровОбласти Цикл
|
||||
|
||||
Представление = УстановитьПредставлениеКартинку(КодЯзыка, ПараметрОбласти, НастройкиФорматаПолей, ИсточникДанных, ПараметрыПечати);
|
||||
|
||||
@@ -366,7 +366,7 @@
|
||||
// Формат "<ИмяПроцедуры>" используется, когда процедура размещена
|
||||
// в модуле основной формы отчета или обработки, указанной в МенеджерПечати.
|
||||
// Например,
|
||||
// КомандаПечати.Обработчик = "_ДемоСтандартныеПодсистемыКлиент.ПечатьСчетовНаОплатуПокупателю";
|
||||
// КомандаПечати.Обработчик = "ЗащитаПерсональныхДанныхКлиент.ОткрытьФормуСогласиеНаОбработкуПерсональныхДанных";
|
||||
// Пример обработчика в модуле формы:
|
||||
// // Формирует печатную форму <представление печатной формы>.
|
||||
// //
|
||||
|
||||
@@ -1220,14 +1220,10 @@
|
||||
СтрокаДерева.Текст = СтрЗаменить(ЧтениеXML.Значение, Символ(160), " ");
|
||||
Если СтрНачинаетсяС(СтрокаДерева.Текст, "HYPERLINK ") Тогда
|
||||
СтрокаДерева.Текст = РаскодироватьСтроку(ЧтениеXML.Значение, СпособКодированияСтроки.КодировкаURL);
|
||||
Иначе
|
||||
СтрокаДерева.Текст = СтрЗаменить(ЧтениеXML.Значение, Символ(160), " ");
|
||||
КонецЕсли;
|
||||
|
||||
СтрокаДерева.ПолныйТекст = СтрокаДерева.Текст;
|
||||
ПолныйТекст = ПолныйТекст + СтрокаДерева.ПолныйТекст;
|
||||
ЧтениеXML.Прочитать();
|
||||
Возврат ПолныйТекст;
|
||||
Иначе
|
||||
ВызватьИсключение (НСтр("ru = 'Не известный:'") + " " + ЧтениеXML.ТипУзла);
|
||||
КонецЕсли;
|
||||
|
||||
@@ -299,6 +299,7 @@
|
||||
ВладелецФормы = ПараметрыОткрытия.ВладелецФормы;
|
||||
ПараметрыОткрытия.ВладелецФормы = Неопределено;
|
||||
СписокПереданныхПараметров.Удалить(0);
|
||||
ПодключитьОбработчикОжидания("ПродолжитьВыполнениеКомандыПечатиСПереданнымиПараметрами", 0.1, Истина);
|
||||
|
||||
Если ТипЗнч(ПараметрыПечати) = Тип("Структура")
|
||||
И ПараметрыПечати.Свойство("ВыполнятьВФоновомЗадании")
|
||||
|
||||
@@ -196,6 +196,8 @@
|
||||
| КОНЕЦ
|
||||
| ИНАЧЕ ИСТИНА
|
||||
| КОНЕЦ
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ЕСТЬNULL(НепринятыеКОбработкеПочтовымСерверомИсходящиеПисьма.КоличествоПопыток, 0)
|
||||
|ИТОГИ ПО
|
||||
| УчетнаяЗапись";
|
||||
|
||||
@@ -226,7 +228,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
Письма = Новый Массив;
|
||||
СсылкиПисем = Новый Соответствие;
|
||||
ДанныеПисем = Новый Соответствие;
|
||||
|
||||
ВыборкаПисьма = ВыборкаУчетныеЗаписи.Выбрать();
|
||||
Пока ВыборкаПисьма.Следующий() Цикл
|
||||
@@ -257,7 +259,13 @@
|
||||
КонецПопытки;
|
||||
|
||||
Письма.Добавить(Письмо);
|
||||
СсылкиПисем.Вставить(ВыборкаПисьма.Ссылка, Письмо);
|
||||
|
||||
ДанныеПисьма = Новый Структура;
|
||||
ДанныеПисьма.Вставить("Письмо", Письмо);
|
||||
ДанныеПисьма.Вставить("КоличествоПопыток", ВыборкаПисьма.КоличествоПопыток);
|
||||
ДанныеПисьма.Вставить("ПредставлениеПисьма", ВыборкаПисьма.ПредставлениеПисьма);
|
||||
|
||||
ДанныеПисем.Вставить(ВыборкаПисьма.Ссылка, ДанныеПисьма);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@@ -274,20 +282,44 @@
|
||||
ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщенияОбОшибке,
|
||||
УчетнаяЗапись, РаботаСПочтовымиСообщениями.РасширенноеПредставлениеОшибки(ИнформацияОбОшибке(), ОбщегоНазначения.КодОсновногоЯзыка()));
|
||||
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , ТекстСообщенияОбОшибке);
|
||||
|
||||
Если Не ЗначениеЗаполнено(РезультатОтправки) Тогда
|
||||
Продолжить;
|
||||
|
||||
Если Письма.Количество() <> 0 Тогда
|
||||
ДанныеПервогоПисьма = СсылкаНаПисьмоПоОтправляемомуПочтовомуСообщению(ДанныеПисем, Письма[0]);
|
||||
|
||||
Если ДанныеПервогоПисьма <> Неопределено Тогда
|
||||
|
||||
ПараметрыОбработкиОшибки = ПараметрыОбработкиОшибкиОтправки();
|
||||
ПараметрыОбработкиОшибки.ПисьмоОбъект = ДанныеПервогоПисьма.Ключ.ПолучитьОбъект();
|
||||
ПараметрыОбработкиОшибки.Ссылка = ДанныеПервогоПисьма.Ключ;
|
||||
ПараметрыОбработкиОшибки.ПредставлениеПисьма = ДанныеПервогоПисьма.Значение.ПредставлениеПисьма;
|
||||
ПараметрыОбработкиОшибки.КоличествоПопыток = ДанныеПервогоПисьма.Значение.КоличествоПопыток;
|
||||
ПараметрыОбработкиОшибки.ИнкрементироватьКоличествоПопыток = Истина;
|
||||
ПараметрыОбработкиОшибки.СообщатьПользователю = Интерактивно;
|
||||
ПараметрыОбработкиОшибки.ТекстОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
|
||||
РезультатОбработкиОшибки = ОбработатьОшибкуОтправкиПисьма(ПараметрыОбработкиОшибки, Новый Массив);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Продолжить;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
ТекстыОшибок = Новый Массив;
|
||||
ВыборкаПисьма = ВыборкаУчетныеЗаписи.Выбрать();
|
||||
Пока ВыборкаПисьма.Следующий() Цикл
|
||||
ПисьмоСсылка = ВыборкаПисьма.Ссылка;
|
||||
РезультатОтправкиПисьма = РезультатОтправки[СсылкиПисем[ПисьмоСсылка]];
|
||||
РезультатОтправкиПисьма = РезультатОтправки[ДанныеПисем[ПисьмоСсылка].Письмо];
|
||||
ОшибочныеПолучатели = Неопределено;
|
||||
Если РезультатОтправкиПисьма <> Неопределено Тогда
|
||||
ОшибочныеПолучатели = РезультатОтправкиПисьма.ОшибочныеПолучатели;
|
||||
Если ЗначениеЗаполнено(ОшибочныеПолучатели) Тогда
|
||||
|
||||
ПараметрыОбработкиОшибки = ПараметрыОбработкиОшибкиОтправки();
|
||||
ПараметрыОбработкиОшибки.ПисьмоОбъект = ВыборкаПисьма.Ссылка.ПолучитьОбъект();
|
||||
ПараметрыОбработкиОшибки.Ссылка = ВыборкаПисьма.Ссылка;
|
||||
@@ -300,6 +332,7 @@
|
||||
Если Не РезультатОбработкиОшибки.ПисьмоОтправлено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ОтправленоПисем = ОтправленоПисем + 1;
|
||||
@@ -322,6 +355,36 @@
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если РезультатОтправки.Количество() <> Письма.Количество() Тогда
|
||||
|
||||
Для Каждого ОтправляемоеПисьмо Из Письма Цикл
|
||||
|
||||
Если РезультатОтправки[ОтправляемоеПисьмо] = Неопределено Тогда
|
||||
|
||||
ДанныеПервогоНеотправленногоПисьма = СсылкаНаПисьмоПоОтправляемомуПочтовомуСообщению(ДанныеПисем, ОтправляемоеПисьмо);
|
||||
|
||||
Если ДанныеПервогоНеотправленногоПисьма <> Неопределено Тогда
|
||||
|
||||
ПараметрыОбработкиОшибки = ПараметрыОбработкиОшибкиОтправки();
|
||||
ПараметрыОбработкиОшибки.ПисьмоОбъект = ДанныеПервогоНеотправленногоПисьма.Ключ.ПолучитьОбъект();
|
||||
ПараметрыОбработкиОшибки.Ссылка = ДанныеПервогоНеотправленногоПисьма.Ключ;
|
||||
ПараметрыОбработкиОшибки.ПредставлениеПисьма = ДанныеПервогоНеотправленногоПисьма.Значение.ПредставлениеПисьма;
|
||||
ПараметрыОбработкиОшибки.КоличествоПопыток = ДанныеПервогоНеотправленногоПисьма.Значение.КоличествоПопыток;
|
||||
ПараметрыОбработкиОшибки.ИнкрементироватьКоличествоПопыток = Истина;
|
||||
ПараметрыОбработкиОшибки.СообщатьПользователю = Интерактивно;
|
||||
ПараметрыОбработкиОшибки.ТекстОшибки = НСтр("ru = 'Непредвиденная ошибка при отправке письма'");
|
||||
ПараметрыОбработкиОшибки.ВыполнятьЗаписьВЖурналРегистрации = Ложь;
|
||||
|
||||
РезультатОбработкиОшибки = ОбработатьОшибкуОтправкиПисьма(ПараметрыОбработкиОшибки, Новый Массив);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ТекстыОшибок) Тогда
|
||||
ВызватьИсключение СтрСоединить(ТекстыОшибок, Символы.ПС);
|
||||
КонецЕсли;
|
||||
@@ -330,6 +393,22 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СсылкаНаПисьмоПоОтправляемомуПочтовомуСообщению(ДанныеПисем, ОтправляемоеПисьмо)
|
||||
|
||||
Для Каждого ДанныеПисьма Из ДанныеПисем Цикл
|
||||
|
||||
Если ДанныеПисьма.Значение.Письмо = ОтправляемоеПисьмо Тогда
|
||||
|
||||
Возврат ДанныеПисьма;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Неопределено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция РасширениеДляЗашифрованныхФайлов()
|
||||
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
|
||||
@@ -398,6 +477,8 @@
|
||||
Параметры.Вставить("КоличествоПопыток", 0);
|
||||
Параметры.Вставить("ИнкрементироватьКоличествоПопыток" , Ложь);
|
||||
Параметры.Вставить("СообщатьПользователю", Ложь);
|
||||
Параметры.Вставить("ТекстОшибки", "");
|
||||
Параметры.Вставить("ВыполнятьЗаписьВЖурналРегистрации", Истина);
|
||||
|
||||
Возврат Параметры;
|
||||
|
||||
@@ -421,6 +502,9 @@
|
||||
РезультатАнализа = РезультатАнализаОшибочныхПолучателей(ПараметрыОбработкиОшибки.ПисьмоОбъект, ОшибочныеПолучатели);
|
||||
ВсеАдресатыПисьмаОтвергнутыСервером = РезультатАнализа.ВсеАдресатыПисьмаОтвергнутыСервером;
|
||||
ПредставлениеОшибочныхАдресатов = РезультатАнализа.ПредставлениеОшибочныхАдресатов;
|
||||
ЭтоПроблемаОтвергнутыхСерверомПочтовыхАдресов = РезультатАнализа.ЭтоПроблемаОтвергнутыхСерверомПочтовыхАдресов;
|
||||
|
||||
Если ЭтоПроблемаОтвергнутыхСерверомПочтовыхАдресов Тогда
|
||||
|
||||
Если Не ВсеАдресатыПисьмаОтвергнутыСервером Тогда
|
||||
ШаблонСообщенияОбОшибке = НСтр("ru = 'Следующие адресаты письма ""%1"" не приняты почтовым сервером:
|
||||
@@ -430,11 +514,31 @@
|
||||
|Следующие адресаты письма не приняты почтовым сервером:
|
||||
|%2.'", ОбщегоНазначения.КодОсновногоЯзыка());
|
||||
КонецЕсли;
|
||||
ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщенияОбОшибке,
|
||||
ПараметрыОбработкиОшибки.ПредставлениеПисьма, ПредставлениеОшибочныхАдресатов);
|
||||
|
||||
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,
|
||||
ПараметрыОбработкиОшибки.Ссылка, ТекстСообщенияОбОшибке);
|
||||
ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщенияОбОшибке,
|
||||
ПараметрыОбработкиОшибки.ПредставлениеПисьма,
|
||||
ПредставлениеОшибочныхАдресатов);
|
||||
|
||||
Иначе
|
||||
|
||||
ШаблонСообщенияОбОшибке = НСтр("ru = 'Не удалось отправить письмо ""%1"".
|
||||
|По причине: %2.'", ОбщегоНазначения.КодОсновногоЯзыка());
|
||||
|
||||
ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщенияОбОшибке,
|
||||
ПараметрыОбработкиОшибки.ПредставлениеПисьма,
|
||||
ПараметрыОбработкиОшибки.ТекстОшибки)
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ПараметрыОбработкиОшибки.ВыполнятьЗаписьВЖурналРегистрации Тогда
|
||||
|
||||
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(),
|
||||
УровеньЖурналаРегистрации.Ошибка,
|
||||
ПараметрыОбработкиОшибки.Ссылка.Метаданные(),
|
||||
ПараметрыОбработкиОшибки.Ссылка,
|
||||
ТекстСообщенияОбОшибке);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Результат.ТекстСообщения = ТекстСообщенияОбОшибке;
|
||||
|
||||
@@ -442,15 +546,8 @@
|
||||
ОбщегоНазначения.СообщитьПользователю(ТекстСообщенияОбОшибке, ПараметрыОбработкиОшибки.Ссылка);
|
||||
КонецЕсли;
|
||||
|
||||
Если ВсеАдресатыПисьмаОтвергнутыСервером Тогда
|
||||
|
||||
ПисьмоОбъект = ПараметрыОбработкиОшибки.ПисьмоОбъект; // ДокументОбъект.ЭлектронноеПисьмоИсходящее
|
||||
|
||||
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(),
|
||||
УровеньЖурналаРегистрации.Ошибка,
|
||||
ПисьмоОбъект.Ссылка.Метаданные(),
|
||||
ПараметрыОбработкиОшибки.Ссылка,
|
||||
ТекстСообщенияОбОшибке);
|
||||
Если ВсеАдресатыПисьмаОтвергнутыСервером
|
||||
Или Не ЭтоПроблемаОтвергнутыхСерверомПочтовыхАдресов Тогда
|
||||
|
||||
Если ПараметрыОбработкиОшибки.ИнкрементироватьКоличествоПопыток Тогда
|
||||
|
||||
@@ -675,6 +772,8 @@
|
||||
| ИНАЧЕ ЭлектронноеПисьмоИсходящее.ДатаАктуальностиОтправки > &ТекущаяДата
|
||||
| КОНЕЦ
|
||||
| И ЕСТЬNULL(НепринятыеКОбработкеПочтовымСерверомИсходящиеПисьма.КоличествоПопыток, 0) < 5
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ЕСТЬNULL(НепринятыеКОбработкеПочтовымСерверомИсходящиеПисьма.КоличествоПопыток, 0)
|
||||
|ИТОГИ ПО
|
||||
| УчетнаяЗапись";
|
||||
|
||||
@@ -1020,23 +1119,24 @@
|
||||
Попытка
|
||||
ЗаголовкиПисемДляЗагрузки = Почта.ПолучитьЗаголовки(ПараметрыОтбора);
|
||||
Исключение
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось получить заголовки писем для папки ""%1"" учетной записи ""%2"", по причине: %3'"),
|
||||
ИмяАктивнойПапки, ДанныеУчетнойЗаписи.АдресЭлектроннойПочты,
|
||||
РаботаСПочтовымиСообщениями.РасширенноеПредставлениеОшибки(ИнформацияОбОшибке(), ОбщегоНазначения.КодОсновногоЯзыка(), Ложь));
|
||||
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,
|
||||
Метаданные.Справочники.ПапкиЭлектронныхПисем,, ТекстСообщения);
|
||||
Продолжить;
|
||||
КонецПопытки;
|
||||
|
||||
КоличествоПисемКЗагрузке = ЗаголовкиПисемДляЗагрузки.Количество();
|
||||
|
||||
Если КоличествоПисемКЗагрузке = 0 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ТекстСообщения = СтрШаблон(НСтр("ru = 'Начало получения писем из папки ""%1"" учетной записи ""%2"". Писем к загрузке: %3'"),
|
||||
ИмяАктивнойПапки, ДанныеУчетнойЗаписи.АдресЭлектроннойПочты, КоличествоПисемКЗагрузке);
|
||||
|
||||
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(),
|
||||
УровеньЖурналаРегистрации.Информация,
|
||||
Метаданные.Справочники.ПапкиЭлектронныхПисем,
|
||||
,
|
||||
ТекстСообщения);
|
||||
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
|
||||
Метаданные.Справочники.ПапкиЭлектронныхПисем,, ТекстСообщения);
|
||||
|
||||
ЗаголовкиСПустымИдентификатором = Новый Массив;
|
||||
ТаблицаИдентификаторов.Очистить();
|
||||
|
||||
@@ -134,25 +134,17 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого СтрокаСписка Из СтрокиСписка Цикл
|
||||
СтрокаСписка = СтрокиСписка[СтрокаСписка.Ключ];
|
||||
Если СтрокаСписка.Оформление.Получить("СостояниеОригиналаПервичногоДокумента") = Неопределено
|
||||
Или СтрокаСписка.Оформление.Получить("СостояниеОригиналПолучен") = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Прервать;
|
||||
КонецЦикла;
|
||||
|
||||
Ключи = СтрокиСписка.ПолучитьКлючи(); // Массив из ДокументСсылка, Массив из РегистрСведенийКлючЗаписи
|
||||
Ссылки = Новый Массив;
|
||||
ИмяКлючевогоПоля = "Ссылка";
|
||||
Для Каждого Ключ Из Ключи Цикл
|
||||
ЭтоСсылка = ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Ключ));
|
||||
Если ЭтоСсылка Тогда
|
||||
Ссылки.Добавить(Ключ);
|
||||
Иначе
|
||||
Ссылки.Добавить(Ключ[ИмяКлючевогоПоля]);
|
||||
|
||||
Для Каждого СтрокаСписка Из СтрокиСписка Цикл
|
||||
СтрокаСписка = СтрокиСписка[СтрокаСписка.Ключ];
|
||||
Если Не СтрокаСписка.Данные.Свойство("Ссылка")
|
||||
Или (СтрокаСписка.Оформление.Получить("СостояниеОригиналаПервичногоДокумента") = Неопределено
|
||||
И СтрокаСписка.Оформление.Получить("СостояниеОригиналПолучен") = Неопределено) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Ссылки.Добавить(СтрокаСписка.Данные[ИмяКлючевогоПоля]);
|
||||
КонецЦикла;
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
@@ -170,23 +162,34 @@
|
||||
|ГДЕ
|
||||
| СостоянияОригиналовПервичныхДокументов.ОбщееСостояние
|
||||
| И СостоянияОригиналовПервичныхДокументов.Владелец В(&Ссылка)";
|
||||
|
||||
Запрос.УстановитьПараметр("Ссылка", Ссылки);
|
||||
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
Для Каждого СтрокаСписка Из СтрокиСписка Цикл
|
||||
СтрокаСписка = СтрокиСписка[СтрокаСписка.Ключ];
|
||||
Если Не СтрокаСписка.Оформление.Получить("СостояниеОригиналаПервичногоДокумента") = Неопределено Тогда
|
||||
Для Каждого Строка Из СтрокиСписка Цикл
|
||||
Строка = СтрокиСписка[Строка.Ключ];
|
||||
Выборка.Сбросить();
|
||||
Если Выборка.НайтиСледующий(СтрокаСписка.Данные["Ссылка"], "Ссылка") Тогда
|
||||
СтрокаСписка.Данные["СостояниеОригиналаПервичногоДокумента"] = Выборка.СостояниеОригиналаПервичногоДокумента;
|
||||
СтрокаСписка.Оформление["СостояниеОригиналаПервичногоДокумента"].УстановитьЗначениеПараметра("ЦветТекста",
|
||||
ЦветаСтиля.ГиперссылкаЦвет);
|
||||
СтрокаСписка.Данные["СостояниеОригиналПолучен"] = Выборка.СостояниеОригиналПолучен;
|
||||
Если Выборка.НайтиСледующий(Строка.Данные["Ссылка"], "Ссылка") Тогда
|
||||
|
||||
Строка.Данные["СостояниеОригиналаПервичногоДокумента"] = Выборка.СостояниеОригиналаПервичногоДокумента;
|
||||
Строка.Оформление["СостояниеОригиналаПервичногоДокумента"].УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
|
||||
Иначе
|
||||
СтрокаСписка.Данные["СостояниеОригиналаПервичногоДокумента"] = НСтр("ru = '<Неизвестно>'");
|
||||
СтрокаСписка.Оформление["СостояниеОригиналаПервичногоДокумента"].УстановитьЗначениеПараметра("ЦветТекста",
|
||||
ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
|
||||
Строка.Данные["СостояниеОригиналаПервичногоДокумента"] = НСтр("ru = '<Неизвестно>'");
|
||||
Строка.Оформление["СостояниеОригиналаПервичногоДокумента"].УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не СтрокаСписка.Оформление.Получить("СостояниеОригиналПолучен") = Неопределено Тогда
|
||||
Для Каждого Строка Из СтрокиСписка Цикл
|
||||
Строка = СтрокиСписка[Строка.Ключ];
|
||||
Выборка.Сбросить();
|
||||
Если Выборка.НайтиСледующий(Строка.Данные["Ссылка"], "Ссылка") Тогда
|
||||
Строка.Данные["СостояниеОригиналПолучен"] = Выборка.СостояниеОригиналПолучен;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
//
|
||||
// Пример:
|
||||
// НоваяСтрока = ТаблицаУчетаОригиналов.Добавить();
|
||||
// НоваяСтрока.ОбъектМетаданных = Метаданные.Документы._ДемоРеализацияТоваров;
|
||||
// НоваяСтрока.ОбъектМетаданных = Метаданные.Документы.РеализацияТоваров;
|
||||
// НоваяСтрока.Идентификатор = "РасходнаяНакладная";
|
||||
//
|
||||
Процедура ЗаполнитьТаблицуУчетаОригиналов(ТаблицаУчетаОригиналов) Экспорт
|
||||
|
||||
@@ -2096,6 +2096,15 @@
|
||||
Соответствие.Вставить("SendReport","ОтправлятьОтчет");
|
||||
Соответствие.Вставить("IncludeDetailErrorDescriptionInReport","ВключатьПодробныйТекстОшибкиВОтчет");
|
||||
Соответствие.Вставить("IncludeInfobaseInformationInReport","ВключатьСведенияОбИнформационнойБазеВОтчет");
|
||||
|
||||
Соответствие.Вставить("ErrorMessageDisplayVariant","ВариантОтображенияСообщенияОбОшибке");
|
||||
Соответствие.Вставить("ErrorProcessingServiceURL","АдресСервисаОбработкиОшибок");
|
||||
Соответствие.Вставить("SendReportOnClient","ОтправлятьОтчетНаКлиенте");
|
||||
Соответствие.Вставить("SendReportOnServer","ОтправлятьОтчетНаСервере");
|
||||
Соответствие.Вставить("IncludeDetailErrorDescriptionInReportOnClient","ВключатьПодробныйТекстОшибкиВОтчетНаКлиенте");
|
||||
Соответствие.Вставить("IncludeDetailErrorDescriptionInReportOnServer","ВключатьПодробныйТекстОшибкиВОтчетНаСервере");
|
||||
Соответствие.Вставить("IncludeInfobaseInformationInReportOnClient","ВключатьСведенияОбИнформационнойБазеВОтчетНаКлиенте");
|
||||
Соответствие.Вставить("IncludeInfobaseInformationInReportOnServer","ВключатьСведенияОбИнформационнойБазеВОтчетНаСервере");
|
||||
Значение = Соответствие.Получить(Ключ);
|
||||
Если Значение = Неопределено Тогда
|
||||
Возврат Ключ
|
||||
@@ -3962,6 +3971,7 @@
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
ОбщиеНастройки = Параметры.ОбработкаОшибок.ПолучитьОбщиеНастройки();
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
|
||||
ДополнительнаяИнформация = Новый Структура;
|
||||
Если ЗначениеЗаполнено(ОбщиеНастройки.ДополнительнаяИнформацияОтчета) Тогда
|
||||
// Считаем, что внутри json. Если нет, то кто-то установил руками. Тогда ничего не меняем - так и должно быть.
|
||||
@@ -3977,6 +3987,7 @@
|
||||
ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет));
|
||||
ЗаписатьJSON(ЗаписьJSON, ДополнительнаяИнформация);
|
||||
ОбщиеНастройки.ДополнительнаяИнформацияОтчета = ЗаписьJSON.Закрыть();
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
Параметры.ОбработкаОшибок.УстановитьОбщиеНастройки(ОбщиеНастройки);
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
@@ -3991,76 +4002,60 @@
|
||||
|
||||
РезультатОбработки = Новый Структура;
|
||||
|
||||
Параметры = Новый Структура;
|
||||
Параметры.Вставить("КодВыполнен", Ложь);
|
||||
Параметры.Вставить("ОбработкаОшибок", Неопределено);
|
||||
Параметры.Вставить("РежимОтправкиИнформацииОбОшибке", Неопределено);
|
||||
Параметры.Вставить("ВариантОтображенияСообщенияОбОшибке", Неопределено);
|
||||
КодДляВыполнения = "Параметры.ОбработкаОшибок = ОбработкаОшибок;
|
||||
|Параметры.КодВыполнен = Истина;
|
||||
|Параметры.РежимОтправкиИнформацииОбОшибке = РежимОтправкиИнформацииОбОшибке;
|
||||
|Параметры.ВариантОтображенияСообщенияОбОшибке = ВариантОтображенияСообщенияОбОшибке;";
|
||||
// Инициализируем менеджер обработки ошибок.
|
||||
// АПК:280-выкл обработка исключения не требуется
|
||||
Попытка
|
||||
ОбщегоНазначения.ВыполнитьВБезопасномРежиме(КодДляВыполнения, Параметры);
|
||||
Исключение
|
||||
// Исключение не выбрасываем.
|
||||
КонецПопытки;
|
||||
Если Параметры.КодВыполнен Тогда
|
||||
Попытка
|
||||
Если БезопасныйРежим() = Истина Тогда
|
||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||
КонецЕсли;
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
ОбщиеНастройки = Параметры.ОбработкаОшибок.ПолучитьОбщиеНастройки();
|
||||
ПеречислениеРежимОтправкиИнформацииОбОшибке = Параметры.РежимОтправкиИнформацииОбОшибке;
|
||||
ПеречислениеВариантОтображенияСообщенияОбОшибке = Параметры.ВариантОтображенияСообщенияОбОшибке;
|
||||
ОбщиеНастройки = ОбработкаОшибок.ПолучитьОбщиеНастройки();
|
||||
ПеречислениеРежимОтправкиИнформацииОбОшибке = РежимОтправкиИнформацииОбОшибке;
|
||||
ПеречислениеВариантОтображенияСообщенияОбОшибке = ВариантОтображенияСообщенияОбОшибке;
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
Если ОбщиеНастройки.АдресСервисаРегистрацииОшибок = СохраненныеПараметры.АдресСервисаРегистрацииОшибок
|
||||
ИЛИ ПолученныеПараметры.УстановитьНастройкиОбработкиОшибокПринудительно Тогда
|
||||
ОбщиеНастройки.АдресСервисаРегистрацииОшибок = ПолученныеПараметры.АдресСервисаРегистрацииОшибок;
|
||||
// Сравниваем с сохраненными параметрами, чтобы убедиться, что руками пользователь ничего не менял.
|
||||
Если ПолученныеПараметры.Свойство("АдресСервисаРегистрацииОшибок")
|
||||
И (ОбщиеНастройки.АдресСервисаОбработкиОшибок = СохраненныеПараметры.АдресСервисаРегистрацииОшибок
|
||||
ИЛИ ПолученныеПараметры.УстановитьНастройкиОбработкиОшибокПринудительно) Тогда
|
||||
ОбщиеНастройки.АдресСервисаОбработкиОшибок = ПолученныеПараметры.АдресСервисаРегистрацииОшибок;
|
||||
РезультатОбработки.Вставить("АдресСервисаРегистрацииОшибок", ПолученныеПараметры.АдресСервисаРегистрацииОшибок);
|
||||
КонецЕсли;
|
||||
// АПК:1036-выкл
|
||||
Если ОбщиеНастройки.ОтправлятьОчет = ПеречислениеРежимОтправкиИнформацииОбОшибке[СохраненныеПараметры.ОтправлятьОтчет]
|
||||
ИЛИ ПолученныеПараметры.УстановитьНастройкиОбработкиОшибокПринудительно Тогда
|
||||
ОбщиеНастройки.ОтправлятьОчет = ПеречислениеРежимОтправкиИнформацииОбОшибке[ПолученныеПараметры.ОтправлятьОтчет];
|
||||
Если ПолученныеПараметры.Свойство("ОтправлятьОтчет")
|
||||
И (ОбщиеНастройки.ОтправлятьОтчетНаКлиенте = ПеречислениеРежимОтправкиИнформацииОбОшибке[СохраненныеПараметры.ОтправлятьОтчет]
|
||||
ИЛИ ПолученныеПараметры.УстановитьНастройкиОбработкиОшибокПринудительно) Тогда
|
||||
ОбщиеНастройки.ОтправлятьОтчетНаКлиенте = ПеречислениеРежимОтправкиИнформацииОбОшибке[ПолученныеПараметры.ОтправлятьОтчет];
|
||||
РезультатОбработки.Вставить("ОтправлятьОтчет", ПолученныеПараметры.ОтправлятьОтчет);
|
||||
КонецЕсли;
|
||||
// АПК:1036-вкл
|
||||
Если ОбщиеНастройки.ВариантОтображенияСообщения = ПеречислениеВариантОтображенияСообщенияОбОшибке[СохраненныеПараметры.ВариантОтображенияСообщенияОбОшибке]
|
||||
ИЛИ ПолученныеПараметры.УстановитьНастройкиОбработкиОшибокПринудительно Тогда
|
||||
Если ПолученныеПараметры.Свойство("ВариантОтображенияСообщенияОбОшибке")
|
||||
И (ОбщиеНастройки.ВариантОтображенияСообщения = ПеречислениеВариантОтображенияСообщенияОбОшибке[СохраненныеПараметры.ВариантОтображенияСообщенияОбОшибке]
|
||||
ИЛИ ПолученныеПараметры.УстановитьНастройкиОбработкиОшибокПринудительно) Тогда
|
||||
ОбщиеНастройки.ВариантОтображенияСообщения = ПеречислениеВариантОтображенияСообщенияОбОшибке[ПолученныеПараметры.ВариантОтображенияСообщенияОбОшибке];
|
||||
// Текст сообщения.
|
||||
ПараметрыДляТекстаСообщения = Новый Структура("ОбщиеНастройки", ОбщиеНастройки);
|
||||
КодДляВыполнения = "СтрокаСообщения = Новый ФорматированнаяСтрока(НСтр(""ru = 'К сожалению, возникла непредвиденная ситуация'""), ШрифтыСтиля.ОченьКрупныйШрифтТекста);
|
||||
|ТекстыСообщенияОбОшибке = Новый ТекстыСообщенияОбОшибке(СтрокаСообщения, СтрокаСообщения);
|
||||
|Параметры.ОбщиеНастройки.ТекстыСообщенийОбОшибках.Вставить(КатегорияОшибки.ПрочаяОшибка, ТекстыСообщенияОбОшибке);";
|
||||
ОбщегоНазначения.ВыполнитьВБезопасномРежиме(КодДляВыполнения, ПараметрыДляТекстаСообщения);
|
||||
СтрокаСообщения = СтроковыеФункции.ФорматированнаяСтрока(
|
||||
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = '<span style=""font:%1"">К сожалению, возникла непредвиденная ситуация</span>'"),
|
||||
"ШрифтОченьКрупныйШрифтТекста"));
|
||||
ТекстыСообщенияОбОшибке = Новый ТекстыСообщенияОбОшибке(СтрокаСообщения, СтрокаСообщения);
|
||||
ОбщиеНастройки.ТекстыСообщенийОбОшибках.Вставить(КатегорияОшибки.ПрочаяОшибка, ТекстыСообщенияОбОшибке);
|
||||
РезультатОбработки.Вставить("ВариантОтображенияСообщенияОбОшибке", ПолученныеПараметры.ВариантОтображенияСообщенияОбОшибке);
|
||||
КонецЕсли;
|
||||
Если ОбщиеНастройки.ВключатьПодробныйТекстОшибкиВОтчет = ПеречислениеРежимОтправкиИнформацииОбОшибке[СохраненныеПараметры.ВключатьПодробныйТекстОшибкиВОтчет]
|
||||
ИЛИ ПолученныеПараметры.УстановитьНастройкиОбработкиОшибокПринудительно Тогда
|
||||
ОбщиеНастройки.ВключатьПодробныйТекстОшибкиВОтчет = ПеречислениеРежимОтправкиИнформацииОбОшибке[ПолученныеПараметры.ВключатьПодробныйТекстОшибкиВОтчет];
|
||||
Если ПолученныеПараметры.Свойство("ВключатьПодробныйТекстОшибкиВОтчет")
|
||||
И (ОбщиеНастройки.ВключатьПодробныйТекстОшибкиВОтчетНаКлиенте = ПеречислениеРежимОтправкиИнформацииОбОшибке[СохраненныеПараметры.ВключатьПодробныйТекстОшибкиВОтчет]
|
||||
ИЛИ ПолученныеПараметры.УстановитьНастройкиОбработкиОшибокПринудительно) Тогда
|
||||
ОбщиеНастройки.ВключатьПодробныйТекстОшибкиВОтчетНаКлиенте = ПеречислениеРежимОтправкиИнформацииОбОшибке[ПолученныеПараметры.ВключатьПодробныйТекстОшибкиВОтчет];
|
||||
РезультатОбработки.Вставить("ВключатьПодробныйТекстОшибкиВОтчет", ПолученныеПараметры.ВключатьПодробныйТекстОшибкиВОтчет);
|
||||
КонецЕсли;
|
||||
Если ОбщиеНастройки.ВключатьСведенияОбИнформационнойБазеВОтчет = ПеречислениеРежимОтправкиИнформацииОбОшибке[СохраненныеПараметры.ВключатьСведенияОбИнформационнойБазеВОтчет]
|
||||
ИЛИ ПолученныеПараметры.УстановитьНастройкиОбработкиОшибокПринудительно Тогда
|
||||
ОбщиеНастройки.ВключатьСведенияОбИнформационнойБазеВОтчет = ПеречислениеРежимОтправкиИнформацииОбОшибке[ПолученныеПараметры.ВключатьСведенияОбИнформационнойБазеВОтчет];
|
||||
Если ПолученныеПараметры.Свойство("ВключатьСведенияОбИнформационнойБазеВОтчет")
|
||||
И (ОбщиеНастройки.ВключатьСведенияОбИнформационнойБазеВОтчетНаКлиенте = ПеречислениеРежимОтправкиИнформацииОбОшибке[СохраненныеПараметры.ВключатьСведенияОбИнформационнойБазеВОтчет]
|
||||
ИЛИ ПолученныеПараметры.УстановитьНастройкиОбработкиОшибокПринудительно) Тогда
|
||||
ОбщиеНастройки.ВключатьСведенияОбИнформационнойБазеВОтчетНаКлиенте = ПеречислениеРежимОтправкиИнформацииОбОшибке[ПолученныеПараметры.ВключатьСведенияОбИнформационнойБазеВОтчет];
|
||||
РезультатОбработки.Вставить("ВключатьСведенияОбИнформационнойБазеВОтчет", ПолученныеПараметры.ВключатьСведенияОбИнформационнойБазеВОтчет);
|
||||
КонецЕсли;
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
Параметры.ОбработкаОшибок.УстановитьОбщиеНастройки(ОбщиеНастройки);
|
||||
ОбработкаОшибок.УстановитьОбщиеНастройки(ОбщиеНастройки);
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
|
||||
РезультатОбработки.Вставить("УстановитьНастройкиОбработкиОшибокПринудительно", ПолученныеПараметры.УстановитьНастройкиОбработкиОшибокПринудительно);
|
||||
РезультатОбработки.Вставить("ВариантОтображенияСообщенияОбОшибке", ПолученныеПараметры.ВариантОтображенияСообщенияОбОшибке);
|
||||
РезультатОбработки.Вставить("АдресСервисаРегистрацииОшибок", ПолученныеПараметры.АдресСервисаРегистрацииОшибок);
|
||||
РезультатОбработки.Вставить("ОтправлятьОтчет", ПолученныеПараметры.ОтправлятьОтчет);
|
||||
РезультатОбработки.Вставить("ВключатьПодробныйТекстОшибкиВОтчет", ПолученныеПараметры.ВключатьПодробныйТекстОшибкиВОтчет);
|
||||
РезультатОбработки.Вставить("ВключатьСведенияОбИнформационнойБазеВОтчет", ПолученныеПараметры.ВключатьСведенияОбИнформационнойБазеВОтчет);
|
||||
Исключение
|
||||
// Исключение не выбрасываем.
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
// АПК:280-вкл
|
||||
|
||||
Возврат РезультатОбработки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -1921,7 +1921,7 @@
|
||||
|
||||
Если ОбщиеНастройки().ДоступнаУсовершенствованнаяПодпись Тогда
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебный.СвойстваПодписиЧтениеМенеджеромКриптографии(
|
||||
ПодписьДляПроверки, МенеджерКриптографииДляПроверки, Ложь);
|
||||
ПодписьДляПроверки, МенеджерКриптографииДляПроверки, Сертификат = Неопределено);
|
||||
Если ПустаяСтрока(ОшибкаПроверкиПодписи) И СвойстваПодписи.ТипПодписи <> Перечисления.ТипыПодписиКриптографии.ОбычнаяCMS
|
||||
И СвойстваПодписи.ТипПодписи <> Перечисления.ТипыПодписиКриптографии.БазоваяCAdESBES Тогда
|
||||
Попытка
|
||||
@@ -1932,13 +1932,14 @@
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебный.СвойстваПодписиИзДвоичныхДанных(ПодписьДляПроверки, Ложь);
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебный.СвойстваПодписиИзДвоичныхДанных(ПодписьДляПроверки, Сертификат = Неопределено);
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваСертификата = Неопределено;
|
||||
Если РезультатСтруктура <> Неопределено Тогда
|
||||
ЗаполнитьЗначенияСвойств(РезультатСтруктура, СвойстваПодписи);
|
||||
Если ЭлектроннаяПодписьСлужебныйКлиентСервер.СертификатСуществует(Сертификат) Тогда
|
||||
Если Не ЗначениеЗаполнено(РезультатСтруктура.Сертификат)
|
||||
И ЭлектроннаяПодписьСлужебныйКлиентСервер.СертификатСуществует(Сертификат) Тогда
|
||||
СвойстваСертификата = СвойстваСертификата(Сертификат);
|
||||
РезультатСтруктура.Сертификат = Сертификат.Выгрузить();
|
||||
РезультатСтруктура.Отпечаток = СвойстваСертификата.Отпечаток;
|
||||
|
||||
@@ -2168,6 +2168,24 @@
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// Открывает ссылку с поиском по ошибкам при работе с электронной подписью
|
||||
// и вариантами их решения.
|
||||
//
|
||||
// Параметры:
|
||||
// СтрокаПоиска - Строка - строка для поиска.
|
||||
//
|
||||
Процедура ОткрытьПоискПоОшибкамПриРаботеСЭлектроннойПодписью(СтрокаПоиска = "") Экспорт
|
||||
|
||||
НавигационнаяСсылка = "";
|
||||
ЭлектроннаяПодписьКлиентСерверЛокализация.ПриОпределенииСсылкиНаПоискПоОшибкамПриРаботеСЭлектроннойПодписью(
|
||||
НавигационнаяСсылка, СтрокаПоиска);
|
||||
|
||||
Если Не ПустаяСтрока(НавигационнаяСсылка) Тогда
|
||||
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(НавигационнаяСсылка);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Открывает форму просмотра подписи ЭП.
|
||||
Процедура ОткрытьПодпись(ТекущиеДанные) Экспорт
|
||||
|
||||
@@ -2206,9 +2224,9 @@
|
||||
|
||||
|
||||
// Сохраняет подпись на компьютер.
|
||||
Процедура СохранитьПодпись(АдресПодписи) Экспорт
|
||||
Процедура СохранитьПодпись(АдресПодписи, ИмяФайлаПодписи = "") Экспорт
|
||||
|
||||
ЭлектроннаяПодписьСлужебныйКлиент.СохранитьПодпись(АдресПодписи);
|
||||
ЭлектроннаяПодписьСлужебныйКлиент.СохранитьПодпись(АдресПодписи, ИмяФайлаПодписи);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (c) 2024, ООО 1С-Софт
|
||||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||
// Текст лицензии доступен по ссылке:
|
||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ПриПолученииФильтраДляВыбораПодписей(Фильтр) Экспорт
|
||||
|
||||
// Локализация
|
||||
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.МашиночитаемыеДоверенности") Тогда
|
||||
Фильтр = НСтр("ru = 'Файлы подписи (*.p7s, *.sig%1), МЧД (*.xml, *.zip)|*.p7s;*.sig%2;*.xml;*.zip'");
|
||||
КонецЕсли;
|
||||
// Конец Локализация
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПриПолученииСпискаВыбораМашиночитаемыхДоверенностей(Форма, ТекущиеДанные, СписокВыбора) Экспорт
|
||||
|
||||
// Локализация
|
||||
|
||||
Доверенности = Форма.Доверенности;
|
||||
Если ЗначениеЗаполнено(ТекущиеДанные.ПоляОтбора) Тогда
|
||||
ПоляОтбора = СтрРазделить(ТекущиеДанные.ПоляОтбора, ";");
|
||||
|
||||
Для Каждого Доверенность Из Доверенности Цикл
|
||||
Для Каждого Элемент Из ПоляОтбора Цикл
|
||||
Если СтрНайти(Доверенность.ПоляОтбора, Элемент) <> 0 Тогда
|
||||
СписокВыбора.Добавить(Доверенность.НомерДоверенности, Доверенность.МашиночитаемаяДоверенность);
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПриВыбореМашиночитаемойДоверенности(ОбработчикЗавершения, ТекущиеДанные) Экспорт
|
||||
|
||||
// Локализация
|
||||
|
||||
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.МашиночитаемыеДоверенности") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваПодписи = ПолучитьИзВременногоХранилища(ТекущиеДанные.АдресСвойствПодписи);
|
||||
|
||||
ПараметрыФормы = Новый Структура;
|
||||
ПараметрыФормы.Вставить("СертификатПредставителя", СвойстваПодписи.Сертификат);
|
||||
ПараметрыФормы.Вставить("НаДату", СвойстваПодписи.ДатаПодписи);
|
||||
ПараметрыФормы.Вставить("ТолькоДействующие", Истина);
|
||||
ПараметрыФормы.Вставить("РежимВыбора", Истина);
|
||||
|
||||
МодульМашиночитаемыеДоверенностиФНСКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МашиночитаемыеДоверенностиФНСКлиент");
|
||||
МодульМашиночитаемыеДоверенностиФНСКлиент.ОткрытьСписокМЧД(ПараметрыФормы, ОбработчикЗавершения);
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПриОпределенииФайловМашиночитаемыхДоверенностей(ФайлыМашиночитаемыхДоверенностей,
|
||||
КоллекцияПодписей) Экспорт
|
||||
|
||||
// Локализация
|
||||
|
||||
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.МашиночитаемыеДоверенности") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
МашиночитаемыеДоверенности = Новый Массив;
|
||||
|
||||
Для Каждого Подпись Из КоллекцияПодписей Цикл
|
||||
Для Каждого МашиночитаемаяДоверенность Из Подпись.МашиночитаемаяДоверенность Цикл
|
||||
Если МашиночитаемыеДоверенности.Найти(МашиночитаемаяДоверенность.Значение) = Неопределено Тогда
|
||||
МашиночитаемыеДоверенности.Добавить(МашиночитаемаяДоверенность.Значение);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
Если МашиночитаемыеДоверенности.Количество() > 0 Тогда
|
||||
МодульМашиночитаемыеДоверенностиФНССлужебныйВызовСервера = ОбщегоНазначенияКлиент.ОбщийМодуль(
|
||||
"МашиночитаемыеДоверенностиФНССлужебныйВызовСервера");
|
||||
ФайлыМашиночитаемыхДоверенностей = МодульМашиночитаемыеДоверенностиФНССлужебныйВызовСервера.ФайлыДоверенностей(
|
||||
МашиночитаемыеДоверенности, Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
#КонецОбласти
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="398cd724-3c08-49b3-a5b4-4186f1d6b32d">
|
||||
<name>ЭлектроннаяПодписьКлиентЛокализация</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Электронная подпись клиент локализация</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
||||
@@ -201,6 +201,7 @@
|
||||
СвойстваПодписи.Вставить("ПодписьВерна");
|
||||
СвойстваПодписи.Вставить("ДатаПроверкиПодписи");
|
||||
СвойстваПодписи.Вставить("КомуВыданСертификат");
|
||||
СвойстваПодписи.Вставить("ИмяФайлаПодписи");
|
||||
СвойстваПодписи.Вставить("ТребуетсяПроверка");
|
||||
СвойстваПодписи.Вставить("УстановившийПодпись");
|
||||
СвойстваПодписи.Вставить("ТипПодписи");
|
||||
|
||||
@@ -314,6 +314,17 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПриОпределенииСсылкиНаПоискПоОшибкамПриРаботеСЭлектроннойПодписью(НавигационнаяСсылка, СтрокаПоиска = "") Экспорт
|
||||
|
||||
// Локализация
|
||||
|
||||
НавигационнаяСсылка = "https://edo.1c.ru/handbook"
|
||||
+ ?(ПустаяСтрока(СтрокаПоиска), "", "//?q=" + СтрокаПоиска);
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Локализация
|
||||
|
||||
#Область ШаблоныКонвертаXML
|
||||
@@ -670,6 +681,22 @@
|
||||
// Аккредитация удостоверяющего центра прекращена.
|
||||
Если Не РезультатПроверкиУдостоверяющегоЦентра.Действует Тогда
|
||||
|
||||
Если СтрНачинаетсяС(КонтекстПроверки.ЗначенияПоиска, "1024001434049")
|
||||
И ЗначениеЗаполнено(ДатаПрекращенияАккредитацииУЦ)
|
||||
И ДатаПрекращенияАккредитацииУЦ - КонтекстПроверки.РазницаСУниверсальнымВременем = Дата(2024, 7, 20, 21, 0, 0) Тогда
|
||||
|
||||
РезультатПроверкиУдостоверяющегоЦентра.Действует = Ложь;
|
||||
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.РазрешитьПодписание = Ложь;
|
||||
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Сертификат не действует с %1, так как аккредитация удостоверяющего центра %2, выдавшего сертификат, прекращена.'"),
|
||||
Формат(ДатаПрекращенияАккредитацииУЦ, "ДЛФ=DT"), КонтекстПроверки.НаименованиеУдостоверяющегоЦентра);
|
||||
Если Не КонтекстПроверки.ЭтоПроверкаПодписи Тогда
|
||||
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.Решение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Подайте <a href = ""%1"">заявление</a> на новый сертификат.'"), "ПодатьЗаявлениеНаСертификат");
|
||||
КонецЕсли;
|
||||
Возврат РезультатПроверкиУдостоверяющегоЦентра;
|
||||
КонецЕсли;
|
||||
|
||||
Если ДанныеУдостоверяющегоЦентра.РазрешенныйНеаккредитованный Тогда
|
||||
РезультатПроверкиУдостоверяющегоЦентра.Действует = Истина;
|
||||
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ДополнительныеСведения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
@@ -683,18 +710,20 @@
|
||||
НСтр("ru = 'Сертификат не действует с %1, так как аккредитация удостоверяющего центра %2, выдавшего сертификат, прекращена.'"),
|
||||
Формат(ДатаПрекращенияАккредитацииУЦ, "ДЛФ=DT"), КонтекстПроверки.НаименованиеУдостоверяющегоЦентра);
|
||||
|
||||
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.РазрешитьПодписание = Ложь;
|
||||
|
||||
Если Не КонтекстПроверки.ЭтоПроверкаПодписи Тогда
|
||||
|
||||
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ВозможенПеревыпуск = ВозможенПеревыпуск;
|
||||
|
||||
Если ВозможенПеревыпуск Тогда
|
||||
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.Решение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Подайте <a href = ""%1"">заявление</a> на новый сертификат или добавьте удостоверяющий центр %2 в <a href = ""%3"">список разрешенных</a> неаккредитованных УЦ.'"),
|
||||
НСтр("ru = 'Подайте <a href = ""%1"">заявление</a> на новый сертификат. Если юридическая значимость подписей не требуется, добавьте удостоверяющий центр %2 в <a href = ""%3"">список разрешенных</a> неаккредитованных УЦ.'"),
|
||||
"ПодатьЗаявлениеНаСертификат", КонтекстПроверки.НаименованиеУдостоверяющегоЦентра,
|
||||
"ДобавитьУдостоверяющийЦентрВСписокРазрешенныхНеаккредитованных");
|
||||
Иначе
|
||||
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.Решение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Получите новый сертификат в <a href = ""%1"">соответствующем удостоверяющем центре</a> или добавьте удостоверяющий центр %2 в <a href = ""%3"">список разрешенных</a> неаккредитованных УЦ.'"),
|
||||
НСтр("ru = 'Получите новый сертификат в <a href = ""%1"">соответствующем удостоверяющем центре</a>. Если юридическая значимость подписей не требуется, добавьте удостоверяющий центр %2 в <a href = ""%3"">список разрешенных</a> неаккредитованных УЦ.'"),
|
||||
СсылкаНаСтатьюОбУдостоверяющихЦентрах(), КонтекстПроверки.НаименованиеУдостоверяющегоЦентра,
|
||||
"ДобавитьУдостоверяющийЦентрВСписокРазрешенныхНеаккредитованных");
|
||||
КонецЕсли;
|
||||
|
||||
@@ -0,0 +1,271 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (c) 2024, ООО 1С-Софт
|
||||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||
// Текст лицензии доступен по ссылке:
|
||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// При создании на сервере.
|
||||
//
|
||||
// Параметры:
|
||||
// Форма - ФормаКлиентскогоПриложения
|
||||
//
|
||||
Процедура ПриСозданииНаСервере(Форма) Экспорт
|
||||
|
||||
// Локализация
|
||||
|
||||
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.МашиночитаемыеДоверенности") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Форма.ИмяФормы = "ОбщаяФорма.ДобавлениеЭлектроннойПодписиИзФайла" Тогда
|
||||
Форма.Элементы.ПодписиМашиночитаемаяДоверенность.Видимость = Истина;
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Форма.ИмяФормы = "ОбщаяФорма.СохранениеВместеСЭлектроннойПодписью" Тогда
|
||||
Форма.Элементы.ТаблицаПодписейМашиночитаемаяДоверенность.Видимость = Истина;
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
Процедура ПриЗагрузкеМашиночитаемыхДоверенностей(Форма) Экспорт
|
||||
|
||||
// Локализация
|
||||
|
||||
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.МашиночитаемыеДоверенности") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Подписи = Форма.Подписи;
|
||||
Доверенности = Форма.Доверенности;
|
||||
|
||||
МодульМашиночитаемыеДоверенностиСлужебный = ОбщегоНазначения.ОбщийМодуль(
|
||||
"МашиночитаемыеДоверенностиФНССлужебный");
|
||||
|
||||
Для Каждого Подпись Из Подписи Цикл
|
||||
|
||||
Если ТипЗнч(Подпись.МашиночитаемаяДоверенность) = Тип("Строка") И ЗначениеЗаполнено(
|
||||
Подпись.МашиночитаемаяДоверенность) Тогда
|
||||
|
||||
Найдено = Доверенности.НайтиСтроки(Новый Структура("НомерДоверенности", Подпись.НомерДоверенности));
|
||||
|
||||
ФайлыДоверенности = ПолучитьИзВременногоХранилища(Найдено[0].ФайлыДоверенности);
|
||||
Результат = МодульМашиночитаемыеДоверенностиСлужебный.ЗагрузитьДоверенностиВИнформационнуюБазу(
|
||||
ФайлыДоверенности);
|
||||
|
||||
МашиночитаемаяДоверенность = Результат.Доверенности[0];
|
||||
|
||||
СвойстваПодписи = ПолучитьИзВременногоХранилища(Подпись.АдресСвойствПодписи);
|
||||
СвойстваПодписи.РезультатПроверкиПодписиПоМЧД = МодульМашиночитаемыеДоверенностиСлужебный.НовыйРезультатПроверкиПодписиПоМЧД(
|
||||
МашиночитаемаяДоверенность);
|
||||
ПоместитьВоВременноеХранилище(СвойстваПодписи, Подпись.АдресСвойствПодписи);
|
||||
|
||||
Подпись.МашиночитаемаяДоверенность = МашиночитаемаяДоверенность;
|
||||
Найдено = Подписи.НайтиСтроки(Новый Структура("НомерДоверенности", Подпись.НомерДоверенности));
|
||||
Для Каждого Строка Из Найдено Цикл
|
||||
Строка.МашиночитаемаяДоверенность = МашиночитаемаяДоверенность;
|
||||
СвойстваПодписи = ПолучитьИзВременногоХранилища(Строка.АдресСвойствПодписи);
|
||||
СвойстваПодписи.РезультатПроверкиПодписиПоМЧД = МодульМашиночитаемыеДоверенностиСлужебный.НовыйРезультатПроверкиПодписиПоМЧД(
|
||||
МашиночитаемаяДоверенность);
|
||||
ПоместитьВоВременноеХранилище(СвойстваПодписи, Строка.АдресСвойствПодписи);
|
||||
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПриЗаполненииМашиночитаемыхДоверенностей(Форма, ПодписанныйОбъект = Неопределено) Экспорт
|
||||
|
||||
// Локализация
|
||||
|
||||
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.МашиночитаемыеДоверенности") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Подписи = Форма.Подписи;
|
||||
Доверенности = Форма.Доверенности;
|
||||
|
||||
МодульМашиночитаемыеДоверенностиФНС = ОбщегоНазначения.ОбщийМодуль("МашиночитаемыеДоверенностиФНС");
|
||||
МодульМашиночитаемыеДоверенностиФНССлужебный = ОбщегоНазначения.ОбщийМодуль("МашиночитаемыеДоверенностиФНССлужебный");
|
||||
|
||||
Для Каждого ТекущаяСтрока Из Подписи Цикл
|
||||
ТекущаяСтрока.МашиночитаемаяДоверенность = Неопределено;
|
||||
|
||||
СвойстваПодписи = ПолучитьИзВременногоХранилища(ТекущаяСтрока.АдресСвойствПодписи);
|
||||
Сертификат = СвойстваПодписи.Сертификат;
|
||||
|
||||
ОтборПоСертификату = МодульМашиночитаемыеДоверенностиФНС.ОтборДляДоверенностейПоСертификату(Сертификат, "Представитель");
|
||||
ПоляОтбора = Новый Массив;
|
||||
Для Каждого Элемент Из ОтборПоСертификату Цикл
|
||||
Если Элемент.Ключ = "ПредставительИНН" Или Элемент.Ключ = "ПредставительИННФЛ" Тогда
|
||||
Если Не ЗначениеЗаполнено(ТекущаяСтрока.МашиночитаемаяДоверенность) Тогда
|
||||
Для Каждого Доверенность Из Доверенности Цикл
|
||||
Если СтрНайти(Доверенность.ПоляОтбора, Элемент.Значение) Тогда
|
||||
ТекущаяСтрока.МашиночитаемаяДоверенность = Доверенность.МашиночитаемаяДоверенность;
|
||||
ТекущаяСтрока.НомерДоверенности = Доверенность.НомерДоверенности;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
ПоляОтбора.Добавить(Элемент.Значение);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
ТекущаяСтрока.ПоляОтбора = СтрСоединить(ПоляОтбора, ";");
|
||||
|
||||
Если Не ЗначениеЗаполнено(ТекущаяСтрока.МашиночитаемаяДоверенность) Тогда
|
||||
Результат = МодульМашиночитаемыеДоверенностиФНС.ДоверенностиСОтбором(
|
||||
ОтборПоСертификату, "МашиночитаемаяДоверенность", СвойстваПодписи.ДатаПодписи);
|
||||
Если Результат.Количество() > 0 Тогда
|
||||
|
||||
Для Каждого Доверенность Из Результат Цикл
|
||||
Найдено = Доверенности.НайтиСтроки(Новый Структура("МашиночитаемаяДоверенность",
|
||||
Доверенность.МашиночитаемаяДоверенность));
|
||||
Если Найдено.Количество() > 0 Тогда
|
||||
ТекущаяСтрока.МашиночитаемаяДоверенность = Найдено[0].МашиночитаемаяДоверенность;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если Не ЗначениеЗаполнено(ТекущаяСтрока.МашиночитаемаяДоверенность) Тогда
|
||||
ТекущаяСтрока.МашиночитаемаяДоверенность = Результат[0].МашиночитаемаяДоверенность;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ТекущаяСтрока.МашиночитаемаяДоверенность) Тогда
|
||||
Если ПодписанныйОбъект = Неопределено Тогда
|
||||
СвойстваПодписи.РезультатПроверкиПодписиПоМЧД = МодульМашиночитаемыеДоверенностиФНССлужебный.НовыйРезультатПроверкиПодписиПоМЧД(
|
||||
ТекущаяСтрока.МашиночитаемаяДоверенность);
|
||||
ИначеЕсли МодульМашиночитаемыеДоверенностиФНССлужебный.ЭтоМашиночитаемаяДоверенность(
|
||||
ТекущаяСтрока.МашиночитаемаяДоверенность) Тогда
|
||||
СвойстваПодписи.РезультатПроверкиПодписиПоМЧД = МодульМашиночитаемыеДоверенностиФНССлужебный.РезультатПроверкиПодписиПоМЧД(
|
||||
ТекущаяСтрока.МашиночитаемаяДоверенность, ПодписанныйОбъект, СвойстваПодписи.Сертификат,
|
||||
СвойстваПодписи.ДатаПодписи);
|
||||
Иначе
|
||||
СвойстваПодписи.РезультатПроверкиПодписиПоМЧД = Неопределено;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
СвойстваПодписи.РезультатПроверкиПодписиПоМЧД = Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
ПоместитьВоВременноеХранилище(СвойстваПодписи, ТекущаяСтрока.АдресСвойствПодписи);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПриЗаполненииМашиночитаемойДоверенностиВСтроке(Форма, ИдентификаторСтроки, ПодписанныйОбъект) Экспорт
|
||||
|
||||
// Локализация
|
||||
|
||||
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.МашиночитаемыеДоверенности") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Подписи = Форма.Подписи;
|
||||
МодульМашиночитаемыеДоверенностиФНССлужебный = ОбщегоНазначения.ОбщийМодуль("МашиночитаемыеДоверенностиФНССлужебный");
|
||||
ТекущаяСтрока = Подписи.НайтиПоИдентификатору(ИдентификаторСтроки);
|
||||
СвойстваПодписи = ПолучитьИзВременногоХранилища(ТекущаяСтрока.АдресСвойствПодписи);
|
||||
|
||||
Если ЗначениеЗаполнено(ТекущаяСтрока.МашиночитаемаяДоверенность) Тогда
|
||||
Если ПодписанныйОбъект = Неопределено Тогда
|
||||
СвойстваПодписи.РезультатПроверкиПодписиПоМЧД = МодульМашиночитаемыеДоверенностиФНССлужебный.НовыйРезультатПроверкиПодписиПоМЧД(
|
||||
ТекущаяСтрока.МашиночитаемаяДоверенность);
|
||||
ИначеЕсли МодульМашиночитаемыеДоверенностиФНССлужебный.ЭтоМашиночитаемаяДоверенность(
|
||||
ТекущаяСтрока.МашиночитаемаяДоверенность) Тогда
|
||||
СвойстваПодписи.РезультатПроверкиПодписиПоМЧД = МодульМашиночитаемыеДоверенностиФНССлужебный.РезультатПроверкиПодписиПоМЧД(
|
||||
ТекущаяСтрока.МашиночитаемаяДоверенность, ПодписанныйОбъект, СвойстваПодписи.Сертификат,
|
||||
СвойстваПодписи.ДатаПодписи);
|
||||
Иначе
|
||||
СвойстваПодписи.РезультатПроверкиПодписиПоМЧД = Неопределено;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
СвойстваПодписи.РезультатПроверкиПодписиПоМЧД = Неопределено;
|
||||
КонецЕсли;
|
||||
ПоместитьВоВременноеХранилище(СвойстваПодписи, ТекущаяСтрока.АдресСвойствПодписи);
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПриДобавленииСтрокНаСервере(Форма, ПомещенныеФайлы, ДругиеФайлы, ОшибкиПриЗагрузкеДоверенностей, УникальныйИдентификатор) Экспорт
|
||||
|
||||
// Локализация
|
||||
|
||||
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.МашиночитаемыеДоверенности") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Доверенности = Форма.Доверенности;
|
||||
|
||||
МодульМашиночитаемыеДоверенностиСлужебный = ОбщегоНазначения.ОбщийМодуль(
|
||||
"МашиночитаемыеДоверенностиФНССлужебный");
|
||||
|
||||
СвойстваДоверенностей = МодульМашиночитаемыеДоверенностиСлужебный.СвойстваДоверенностейИзФайлов(
|
||||
ПомещенныеФайлы, УникальныйИдентификатор);
|
||||
Для Каждого СвойстваДоверенности Из СвойстваДоверенностей.Доверенности Цикл
|
||||
|
||||
НоваяСтрока = Доверенности.Добавить();
|
||||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СвойстваДоверенности);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ОшибкиПриЗагрузкеДоверенностей = СтрСоединить(СвойстваДоверенностей.ТекстыОшибок, Символы.ПС);
|
||||
ДругиеФайлы = СвойстваДоверенностей.ДругиеФайлы;
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПриПроверкеПодписейПоМЧД(Подписи, ПодписанныйОбъект, РезультатыПроверок) Экспорт
|
||||
|
||||
// Локализация
|
||||
|
||||
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.МашиночитаемыеДоверенности") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
РезультатыПроверок = Новый Массив;
|
||||
МодульМашиночитаемыеДоверенностиФНССлужебный = ОбщегоНазначения.ОбщийМодуль(
|
||||
"МашиночитаемыеДоверенностиФНССлужебный");
|
||||
Для Каждого Подпись Из Подписи Цикл
|
||||
|
||||
РезультатПроверкиДоверенностей = ПолучитьИзВременногоХранилища(Подпись.РезультатПроверкиПодписиПоМЧД);
|
||||
НовыйРезультатПроверкиДоверенностей = Новый Массив;
|
||||
Для Каждого Результат Из РезультатПроверкиДоверенностей Цикл
|
||||
Если Не ЗначениеЗаполнено(Подпись.Сертификат) Тогда
|
||||
НовыйРезультатПроверкиДоверенностей.Добавить(
|
||||
МодульМашиночитаемыеДоверенностиФНССлужебный.НовыйРезультатПроверкиПодписиПоМЧД(Результат.МашиночитаемаяДоверенность));
|
||||
Иначе
|
||||
РезультатПроверкиПодписиПоМЧД = МодульМашиночитаемыеДоверенностиФНССлужебный.РезультатПроверкиПодписиПоМЧД(
|
||||
Результат.МашиночитаемаяДоверенность, ПодписанныйОбъект, Подпись.Сертификат, Подпись.ДатаПодписи);
|
||||
НовыйРезультатПроверкиДоверенностей.Добавить(РезультатПроверкиПодписиПоМЧД);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
РезультатПроверки = Новый Структура("Индекс, РезультатПроверкиПодписиПоМЧД", Подпись.Индекс,
|
||||
НовыйРезультатПроверкиДоверенностей);
|
||||
МодульМашиночитаемыеДоверенностиФНССлужебный.ДобавитьИнформациюМЧД(РезультатПроверки,
|
||||
Подпись.РезультатПроверкиПодписиПоМЧД);
|
||||
РезультатыПроверок.Добавить(РезультатПроверки);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
// Конец Локализация
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1d1248ce-c31a-41f9-85b2-0d97ae2bea82">
|
||||
<name>ЭлектроннаяПодписьЛокализация</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Электронная подпись локализация</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
||||
@@ -1000,6 +1000,18 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПроверитьПодписиПоМЧД(Подписи, ПодписанныйОбъект) Экспорт
|
||||
|
||||
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.МашиночитаемыеДоверенности") Тогда
|
||||
Возврат Новый Массив;
|
||||
КонецЕсли;
|
||||
|
||||
РезультатыПроверок = Новый Массив;
|
||||
ЭлектроннаяПодписьЛокализация.ПриПроверкеПодписейПоМЧД(Подписи, ПодписанныйОбъект, РезультатыПроверок);
|
||||
Возврат РезультатыПроверок;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область ПоставляемыеДанные
|
||||
|
||||
// См. ПоставляемыеДанныеПереопределяемый.ПолучитьОбработчикиПоставляемыхДанных
|
||||
@@ -1515,6 +1527,7 @@
|
||||
СертификатСуществует = ЭлектроннаяПодписьСлужебныйКлиентСервер.СертификатСуществует(Подпись.СертификатПодписи);
|
||||
|
||||
Если СертификатСуществует Тогда
|
||||
ПараметрыПодписи.Сертификат = Подпись.СертификатПодписи;
|
||||
ПараметрыПодписи.ОписаниеСертификата = ЭлектроннаяПодпись.СвойстваСертификата(Подпись.СертификатПодписи);
|
||||
КонецЕсли;
|
||||
|
||||
@@ -2506,9 +2519,14 @@
|
||||
АдресСпискаОтзываВнутренний.АдресВнешний, АдресСпискаОтзываВнутренний.АдресВнутренний);
|
||||
Исключение
|
||||
|
||||
СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатДляПроверки);
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось установить список отзыва %1 при проверке сертификата: %2'"),
|
||||
АдресСпискаОтзываВнутренний.АдресВнутренний, ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
НСтр("ru = 'Не удалось установить список отзыва при проверке сертификата: %1
|
||||
|%2.'"),
|
||||
|
||||
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),
|
||||
ЭлектроннаяПодписьСлужебныйКлиентСервер.СведенияОСертификатеСтрокой(СвойстваСертификата));
|
||||
|
||||
ЗаписьЖурналаРегистрации(
|
||||
НСтр("ru = 'Электронная подпись.Обновление списков отзыва'",
|
||||
@@ -7491,7 +7509,7 @@
|
||||
РезультатЗагрузки.АдресФайла = Неопределено;
|
||||
РезультатЗагрузки.ИмяФайла = Неопределено;
|
||||
РезультатЗагрузки.ДанныеФайла = Неопределено;
|
||||
РезультатЗагрузки.СообщениеОбОшибке = НСтр("ru = 'Список отзыва просрочен.'");
|
||||
РезультатЗагрузки.СообщениеОбОшибке = НСтр("ru = 'Список отзыва просрочен. Обратитесь в удостоверяющий центр, выдавший сертификат.'");
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
@@ -7839,8 +7857,22 @@
|
||||
ОписаниеОшибки = "";
|
||||
|
||||
ДанныеФайла = Результат.ДанныеФайла;
|
||||
|
||||
СвойстваСпискаОтзыва = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСпискаОтзыва(ДанныеФайла);
|
||||
|
||||
Если СвойстваСпискаОтзыва = Неопределено Тогда
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Файл %1 не является списком отзыва.'"), Результат.АдресФайла);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(СвойстваСпискаОтзыва.ДатаОкончания) И СвойстваСпискаОтзыва.ДатаОкончания < ТекущаяУниверсальнаяДата() Тогда
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Список отзыва %1 просрочен. Обратитесь в удостоверяющий центр, выдавший сертификат.'"), Результат.АдресФайла);
|
||||
КонецЕсли;
|
||||
|
||||
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(".crl");
|
||||
ДанныеФайла.Записать(ИмяВременногоФайла);
|
||||
|
||||
Попытка
|
||||
ОбъектКомпоненты.ИмпортироватьСписокОтзываСертификатов(ИмяВременногоФайла, "CA");
|
||||
РезультатУстановки = Истина;
|
||||
|
||||
@@ -1092,7 +1092,7 @@
|
||||
КонецПроцедуры
|
||||
|
||||
// Сохраняет подпись на компьютер.
|
||||
Процедура СохранитьПодпись(АдресПодписи) Экспорт
|
||||
Процедура СохранитьПодпись(АдресПодписи, ИмяФайлаПодписи = "") Экспорт
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("СохранитьПодписьПослеПолученияФайла", ЭтотОбъект, Неопределено);
|
||||
Фильтр = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
@@ -1104,7 +1104,7 @@
|
||||
ПараметрыСохранения.Диалог.Фильтр = Фильтр;
|
||||
ПараметрыСохранения.Диалог.Заголовок = НСтр("ru = 'Выберите файл для сохранения подписи'");
|
||||
|
||||
ФайловаяСистемаКлиент.СохранитьФайл(Оповещение, АдресПодписи, "", ПараметрыСохранения);
|
||||
ФайловаяСистемаКлиент.СохранитьФайл(Оповещение, АдресПодписи, ИмяФайлаПодписи, ПараметрыСохранения);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -2203,12 +2203,13 @@
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ОшибкаПоКлассификатору <> Неопределено Тогда
|
||||
ОбработатьОшибкуПоКлассификатору(ОписаниеОшибки, Контекст.ТребуетПроверкиНаКлиенте, Контекст, ОшибкаПоКлассификатору);
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
ОписаниеОшибки = Строка(ИнформацияОбОшибке);
|
||||
ОшибкаПоКлассификатору = ЭлектроннаяПодписьСлужебныйКлиентПовтИсп.ОшибкаПоКлассификатору(ОписаниеОшибки);
|
||||
КонецЕсли;
|
||||
|
||||
Если ОшибкаПоКлассификатору <> Неопределено Тогда
|
||||
ОбработатьОшибкуПоКлассификатору(ОписаниеОшибки, Контекст.ТребуетПроверкиНаКлиенте, Контекст, ОшибкаПоКлассификатору);
|
||||
КонецЕсли;
|
||||
|
||||
Контекст.ОписаниеОшибкиНаКлиенте = ОписаниеОшибки;
|
||||
@@ -2231,14 +2232,16 @@
|
||||
Если Не Результат.УстановкаВыполнена Тогда
|
||||
|
||||
ТекстПредыдущейОшибки = Контекст.ДействияДляУстраненияОшибок.Получить("УстановитьСписокОтзываСертификата");
|
||||
ПроверитьСертификатНаКлиентеПослеОшибкиПроверки(ТекстПредыдущейОшибки, Ложь, Контекст);
|
||||
|
||||
ТекстОшибкиУстановкиСпискаОтзыва = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось установить список отзыва при проверке сертификата: %1'"), Результат.Сообщение);
|
||||
НСтр("ru = 'Не удалось установить список отзыва при проверке сертификата: %1
|
||||
|%2.'"), Результат.Сообщение, СвойстваСертификатаСтрокой(Контекст.СертификатКриптографии));
|
||||
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
|
||||
НСтр("ru = 'Электронная подпись.Обновление списков отзыва'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
|
||||
"Предупреждение", ТекстОшибкиУстановкиСпискаОтзыва,, Истина);
|
||||
|
||||
ПроверитьСертификатНаКлиентеПослеОшибкиПроверки(ТекстПредыдущейОшибки, Ложь, Контекст);
|
||||
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -4238,6 +4241,13 @@
|
||||
|
||||
Контекст.Вставить("КоллекцияПодписей", КоллекцияПодписей);
|
||||
|
||||
МашиночитаемыеДоверенности = Новый Массив;
|
||||
ЭлектроннаяПодписьКлиентЛокализация.ПриОпределенииФайловМашиночитаемыхДоверенностей(МашиночитаемыеДоверенности,
|
||||
Контекст.КоллекцияПодписей);
|
||||
|
||||
Контекст.Вставить("МашиночитаемыеДоверенности", МашиночитаемыеДоверенности);
|
||||
Контекст.Вставить("ВыгруженныеСертификаты", Новый Соответствие);
|
||||
|
||||
ПараметрыВыполнения = Новый Структура;
|
||||
ПараметрыВыполнения.Вставить("ОписаниеДанных", Контекст.ОписаниеДанных);
|
||||
ПараметрыВыполнения.Вставить("Оповещение", Новый ОписаниеОповещения(
|
||||
@@ -4326,6 +4336,7 @@
|
||||
СохранитьДанныеВместеСПодписьюПослеЦикла(Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Контекст.Индекс = Контекст.Индекс + 1;
|
||||
Контекст.Вставить("ОписаниеПодписи", Контекст.КоллекцияПодписей[Контекст.Индекс]);
|
||||
|
||||
@@ -4424,7 +4435,9 @@
|
||||
// Продолжение процедуры ЭлектроннаяПодписьКлиент.СохранитьДанныеВместеСПодписью.
|
||||
Процедура СохранитьДанныеВместеСПодписьюЦиклПослеСохраненияПодписи(Результат, Контекст) Экспорт
|
||||
|
||||
Если Контекст.СохранятьСертификатВместеСПодписью Тогда
|
||||
Если Контекст.СохранятьСертификатВместеСПодписью И Контекст.ВыгруженныеСертификаты.Получить(
|
||||
Контекст.ОписаниеПодписи.Отпечаток) = Неопределено Тогда
|
||||
Контекст.Вставить("Счетчик", 1);
|
||||
СохранитьДанныеСертификатаВместеСПодписьюЦиклНачало(Контекст);
|
||||
Иначе
|
||||
СохранитьДанныеВместеСПодписьюЦиклНачало(Контекст);
|
||||
@@ -4465,6 +4478,7 @@
|
||||
Контекст.ИмяФайлаСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.ИмяФайлаСертификата(Контекст.ИмяФайлаСертификатаБезРасширения,
|
||||
"(" + Строка(Контекст.Счетчик) + ")", Контекст.ОписаниеПодписи.РасширениеСертификата, Ложь);
|
||||
|
||||
Контекст.Счетчик = Контекст.Счетчик + 1;
|
||||
СохранитьДанныеСертификатаВместеСПодписьюЦиклВнутреннийЦиклНачало(Контекст);
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -4494,6 +4508,7 @@
|
||||
|
||||
СоставИмениФайлаСертификата = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Контекст.ПолноеИмяФайлаСертификата);
|
||||
Контекст.ИменаФайлов.Вставить(СоставИмениФайлаСертификата.Имя, Ложь);
|
||||
Контекст.ВыгруженныеСертификаты.Вставить(Контекст.ОписаниеПодписи.Отпечаток, Истина);
|
||||
|
||||
Если Контекст.Подключено Тогда
|
||||
Описание = Новый ОписаниеПередаваемогоФайла(СоставИмениФайлаСертификата.Имя, Контекст.ОписаниеПодписи.АдресСертификата);
|
||||
@@ -4518,6 +4533,45 @@
|
||||
// Продолжение процедуры ЭлектроннаяПодписьКлиент.СохранитьДанныеВместеСПодписью.
|
||||
Процедура СохранитьДанныеВместеСПодписьюПослеЦикла(Контекст)
|
||||
|
||||
Контекст.Вставить("ИндексДоверенности", -1);
|
||||
СохранитьМашиночитаемыеДоверенностиЦиклНачало(Контекст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ЭлектроннаяПодписьКлиент.СохранитьДанныеВместеСПодписью.
|
||||
Процедура СохранитьМашиночитаемыеДоверенностиЦиклНачало(Контекст)
|
||||
|
||||
Если Контекст.МашиночитаемыеДоверенности.Количество() <= Контекст.ИндексДоверенности + 1 Тогда
|
||||
СохранитьДанныеВместеСПодписьюПослеЦиклаСохраненияМашиночитаемыхДоверенностей(Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Контекст.ИндексДоверенности = Контекст.ИндексДоверенности + 1;
|
||||
ВыгружаемаяДоверенность = Контекст.МашиночитаемыеДоверенности[Контекст.ИндексДоверенности];
|
||||
|
||||
Если Контекст.Подключено Тогда
|
||||
Описание = Новый ОписаниеПередаваемогоФайла(ВыгружаемаяДоверенность.Имя, ВыгружаемаяДоверенность.Хранение);
|
||||
Контекст.ПолучаемыеФайлы.Добавить(Описание);
|
||||
СохранитьМашиночитаемыеДоверенностиЦиклНачало(Контекст);
|
||||
Иначе
|
||||
// Сохранение файла из программы на компьютер.
|
||||
ФайловаяСистемаКлиент.СохранитьФайл(
|
||||
Новый ОписаниеОповещения("СохранитьДанныеВместеСПодписьюПослеЦиклаСохраненияМашиночитаемойДоверенности", ЭтотОбъект, Контекст),
|
||||
ВыгружаемаяДоверенность.Хранение, ВыгружаемаяДоверенность.Имя);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ЭлектроннаяПодписьКлиент.СохранитьДанныеВместеСПодписью.
|
||||
Процедура СохранитьДанныеВместеСПодписьюПослеЦиклаСохраненияМашиночитаемойДоверенности(Результат, Контекст) Экспорт
|
||||
|
||||
СохранитьМашиночитаемыеДоверенностиЦиклНачало(Контекст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ЭлектроннаяПодписьКлиент.СохранитьДанныеВместеСПодписью.
|
||||
Процедура СохранитьДанныеВместеСПодписьюПослеЦиклаСохраненияМашиночитаемыхДоверенностей(Контекст)
|
||||
|
||||
Если Не Контекст.Подключено Тогда
|
||||
Если Контекст.ОбработкаРезультата <> Неопределено Тогда
|
||||
ВыполнитьОбработкуОповещения(Контекст.ОбработкаРезультата, Истина);
|
||||
@@ -8759,10 +8813,12 @@
|
||||
ЭлектроннаяПодписьСлужебныйВызовСервера.ЗарегистрироватьПодписаниеДанныхВЖурнале(
|
||||
СвойстваТекущегоЭлементаДанных(Контекст, СвойстваПодписи));
|
||||
|
||||
Контекст.ОписаниеДанных.Вставить("ТекущийЭлементНабораДанных", ЭлементДанных);
|
||||
|
||||
ПараметрыВыполнения = Новый Структура;
|
||||
ПараметрыВыполнения.Вставить("ОписаниеДанных", Контекст.ОписаниеДанных);
|
||||
ПараметрыВыполнения.Вставить("Оповещение", Новый ОписаниеОповещения(
|
||||
"ВыполнитьНаСторонеЦиклПослеЗаписиПодписи", ЭтотОбъект, Контекст));
|
||||
"ВыполнитьНаСторонеЦиклПослеЗаписиПакетнойПодписи", ЭтотОбъект, Контекст));
|
||||
|
||||
Попытка
|
||||
ВыполнитьОбработкуОповещения(ЭлементДанных.Объект, ПараметрыВыполнения);
|
||||
@@ -8784,6 +8840,13 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВыполнитьНаСторонеЦиклПослеЗаписиПакетнойПодписи(Результат, Контекст) Экспорт
|
||||
|
||||
// Заглушка для пакетного режима, не требуется выполнять цикл выполнения операций.
|
||||
Контекст.Индекс = 0;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПроверятьСертификатыОблачнойПодписью()
|
||||
|
||||
Результат = ИспользоватьСервисОблачнойПодписи()
|
||||
@@ -9818,7 +9881,13 @@
|
||||
|
||||
Если СвойстваСпискаОтзыва = Неопределено Тогда
|
||||
ОбработатьОшибкуУстановкиСпискаОтзыва(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Файл %1 не является списком отзыва.'"), Результат.АдресФайла), Контекст);
|
||||
НСтр("ru = 'Файл %1 не является списком отзыва.'"), Результат.АдресФайла), Результат, Истина);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(СвойстваСпискаОтзыва.ДатаОкончания) И СвойстваСпискаОтзыва.ДатаОкончания < ОбщегоНазначенияКлиент.ДатаУниверсальная() Тогда
|
||||
ОбработатьОшибкуУстановкиСпискаОтзыва(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Список отзыва %1 просрочен. Обратитесь в удостоверяющий центр, выдавший сертификат.'"), Результат.АдресФайла), Результат, Истина);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
@@ -85,6 +85,7 @@
|
||||
// * ВозможенПеревыпуск - Булево - можно подать заявление на новый сертификат из программы.
|
||||
// * Причина - Строка - причина ошибки для отображения в расширенной форме ошибки.
|
||||
// * Решение - Строка - рекомендация для отображения в расширенной форме ошибки.
|
||||
// * РазрешитьПодписание - Булево - можно разрешить подписание в пользовательских настройках.
|
||||
//
|
||||
Функция ПредупреждениеПриПроверкеУдостоверяющегоЦентраСертификата() Экспорт
|
||||
|
||||
@@ -93,6 +94,7 @@
|
||||
Предупреждение.Вставить("ВозможенПеревыпуск", Ложь);
|
||||
Предупреждение.Вставить("Причина", "");
|
||||
Предупреждение.Вставить("Решение", "");
|
||||
Предупреждение.Вставить("РазрешитьПодписание", Истина);
|
||||
Предупреждение.Вставить("ДополнительныеСведения", "");
|
||||
|
||||
Возврат Предупреждение;
|
||||
@@ -4786,11 +4788,18 @@
|
||||
Буфер = АнализДанных.Буфер;
|
||||
|
||||
Если ОбщийБлок Тогда
|
||||
Смещение = Буфер.Размер - 2;
|
||||
|
||||
ЛишниеСимволыВКонце = 0;
|
||||
Пока Буфер[Буфер.Размер - ЛишниеСимволыВКонце -1] <> 0 И ЛишниеСимволыВКонце < Буфер.Размер Цикл
|
||||
ЛишниеСимволыВКонце = ЛишниеСимволыВКонце + 1;
|
||||
КонецЦикла;
|
||||
|
||||
Смещение = Буфер.Размер - ЛишниеСимволыВКонце - 2;
|
||||
Если Смещение < 2 Тогда
|
||||
ПриОшибкеКодированияASN1(АнализДанных);
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
Смещение = АнализДанных.Смещение;
|
||||
Если Смещение + 2 > АнализДанных.Родители[0].СмещениеСледующего Тогда
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
|
||||
<td height="30">
|
||||
<p>
|
||||
<span class="Text">Сохраните макет и закройте редактор, затем нажмите кнопку </span><span class="boldText">Завершить изменения<span class="Text">.</span>
|
||||
<span class="Text">Сохраните макет и закройте редактор, затем нажмите </span><span class="boldText">Записать и закрыть<span class="Text">.</span>
|
||||
</span></p>
|
||||
</td>
|
||||
</tr><tr class="webclient"><td height="30">
|
||||
@@ -139,7 +139,7 @@
|
||||
|
||||
<td height="30">
|
||||
<p>
|
||||
<span class="Text">Сохраните макет и закройте редактор, затем нажмите кнопку </span><span class="boldText">Завершить изменения<span class="Text">.</span>
|
||||
<span class="Text">Сохраните макет и закройте редактор, затем нажмите </span><span class="boldText">Записать и закрыть<span class="Text">.</span>
|
||||
</span></p>
|
||||
</td>
|
||||
</tr><tr><td height="30">
|
||||
|
||||
Loaded 100 of 210 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user