3_1_3_250

This commit is contained in:
Компания 1С committed 2020-08-25 12:45:00 +03:00
1 parent 5c7c3489ca
commit eff646d7ea
89 files changed
+7371 -4162

No files matched your search

@@ -92,14 +92,6 @@
<key>ru</key>
<value>Наименование</value>
</synonym>
<synonym>
<key>en</key>
<value>Name</value>
</synonym>
<synonym>
<key>de</key>
<value>Benennung</value>
</synonym>
<toolTip>
<key>ru</key>
<value>Наименование вида контактной информации</value>
@@ -613,10 +605,6 @@
<key>ru</key>
<value>Идентификатор для формул</value>
</synonym>
<synonym>
<key>en</key>
<value>Идентификатор для формул</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
@@ -535,6 +535,10 @@
<id>-1</id>
<horizontalAlign>Right</horizontalAlign>
</autoCommandBar>
<handlers>
<event>OnOpen</event>
<name>ПриОткрытии</name>
</handlers>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
@@ -666,6 +670,56 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ПоказатьИнструкцию</name>
<id>3</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ПоказатьПереходКНастройкеПрограмм</name>
<id>4</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ПоказатьУстановкуРасширения</name>
<id>5</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ДополнительныеДанные</name>
<id>6</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ПерейтиКНастройкеПрограмм</name>
<title>
@@ -756,6 +810,10 @@
<name>НеподписанныеДанные</name>
<valueType/>
</parameters>
<parameters>
<name>ДополнительныеДанные</name>
<valueType/>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -11,15 +11,8 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Заголовок = Параметры.ЗаголовокФормы;
ШиринаЗаголовка = СтрДлина(Заголовок);
Если ШиринаЗаголовка > 80 Тогда
ШиринаЗаголовка = 80;
КонецЕсли;
Если ШиринаЗаголовка > Ширина Тогда
Ширина = ШиринаЗаголовка;
КонецЕсли;
ЭлектроннаяПодписьСлужебный.УстановитьЗаголовокОшибки(ЭтотОбъект,
Параметры.ЗаголовокФормы);
ЭтоПолноправныйПользователь = Пользователи.ЭтоПолноправныйПользователь(,, Ложь);
@@ -62,11 +55,34 @@
Элементы.ФормаПерейтиКНастройкеПрограмм.Видимость = Ложь;
КонецЕсли;
СброситьРазмерыИПоложениеОкна();
ДополнительныеДанные = Параметры.ДополнительныеДанные;
Если ТипЗнч(Параметры.НеподписанныеДанные) = Тип("Структура") Тогда
Если ЗначениеЗаполнено(ДополнительныеДанные)
И ТипЗнч(ДополнительныеДанные.НеподписанныеДанные) = Тип("Структура") Тогда
ЭлектроннаяПодписьСлужебный.ЗарегистрироватьПодписаниеДанныхВЖурнале(
Параметры.НеподписанныеДанные, ОписаниеОшибки);
ДополнительныеДанные.НеподписанныеДанные, ОписаниеОшибки);
ДополнительныеДанные.НеподписанныеДанные = Неопределено;
КонецЕсли;
ЭлектроннаяПодписьСлужебный.СброситьРазмерыИПоложениеОкна(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Ошибки.Количество() = 1
Или Ошибки.Количество() = 2
И Ошибки[0].ОшибкаНаСервере <> Ошибки[1].ОшибкаНаСервере Тогда
Отказ = Истина;
Поток = Новый ПотокВПамяти;
Поток.НачатьПолучениеРазмера(
Новый ОписаниеОповещения("ПриОткрытииПродолжение", ЭтотОбъект));
КонецЕсли;
КонецПроцедуры
@@ -87,7 +103,16 @@
Процедура ИнформацияДляПоддержкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЭлектроннаяПодписьСлужебныйКлиент.СформироватьТехническуюИнформацию(ОписаниеОшибки);
ТекстОшибок = "";
ОписаниеФайлов = Новый Массив;
Если ЗначениеЗаполнено(ДополнительныеДанные) Тогда
ЭлектроннаяПодписьСлужебныйВызовСервера.ДобавитьОписаниеДополнительныхДанных(
ДополнительныеДанные, ОписаниеФайлов, ТекстОшибок);
КонецЕсли;
ТекстОшибок = ТекстОшибок + ОписаниеОшибки;
ЭлектроннаяПодписьСлужебныйКлиент.СформироватьТехническуюИнформацию(ТекстОшибок, , ОписаниеФайлов);
КонецПроцедуры
@@ -138,16 +163,30 @@
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СброситьРазмерыИПоложениеОкна()
// Продолжение процедуры ПриОткрытии.
&НаКлиенте
Процедура ПриОткрытииПродолжение(Результат, Контекст) Экспорт
ИмяПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
ПараметрыОшибки = Новый Структура;
ПараметрыОшибки.Вставить("ЗаголовокПредупреждения", Заголовок);
ПараметрыОшибки.Вставить(?(Ошибки[0].ОшибкаНаСервере,
"ТекстОшибкиСервер", "ТекстОшибкиКлиент"), Ошибки[0].ОписаниеСЗаголовком);
Если ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда
ХранилищеСистемныхНастроек.Удалить(ИмяФормы, "", ИмяПользователя);
Если Ошибки.Количество() > 1 Тогда
ПараметрыОшибки.Вставить(?(Ошибки[1].ОшибкаНаСервере,
"ТекстОшибкиСервер", "ТекстОшибкиКлиент"), Ошибки[1].ОписаниеСЗаголовком);
КонецЕсли;
КлючСохраненияПоложенияОкна = Строка(Новый УникальныйИдентификатор);
ПараметрыОшибки.Вставить("ПоказатьТребуетсяПомощь", Истина);
ПараметрыОшибки.Вставить("ПоказатьИнструкцию", ПоказатьИнструкцию);
ПараметрыОшибки.Вставить("ПоказатьПереходКНастройкеПрограмм", ПоказатьПереходКНастройкеПрограмм);
ПараметрыОшибки.Вставить("ПоказатьУстановкуРасширения", ПоказатьУстановкуРасширения);
ПараметрыОшибки.Вставить("ОписаниеОшибки", ОписаниеОшибки);
ПараметрыОшибки.Вставить("ДополнительныеДанные", ДополнительныеДанные);
ОбработкаПродолжения = ОписаниеОповещенияОЗакрытии;
ОписаниеОповещенияОЗакрытии = Неопределено;
ОткрытьФорму("ОбщаяФорма.РасширенноеПредставлениеОшибки", ПараметрыОшибки, ЭтотОбъект,,,, ОбработкаПродолжения);
КонецПроцедуры
@@ -24,11 +24,13 @@
Элементы.НадписьНастройкаВЦентральномУзле.Видимость = Ложь;
КонецЕсли;
Элементы.Наименование.СписокВыбора.Добавить("", НСтр("ru = '<Другая программа>'"));
ПоставляемыеНастройки = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПоставляемыеНастройкиПрограмм();
Для каждого ПоставляемаяНастройка Из ПоставляемыеНастройки Цикл
Элементы.Наименование.СписокВыбора.Добавить(ПоставляемаяНастройка.Представление);
Если ЕстьВОСКлиентаИлиВОССервера(ПоставляемаяНастройка) Тогда
Элементы.Наименование.СписокВыбора.Добавить(ПоставляемаяНастройка.Представление);
КонецЕсли;
КонецЦикла;
Элементы.Наименование.СписокВыбора.Добавить("", НСтр("ru = '<Другая программа>'"));
// Заполнение нового объекта по поставляемой настройке.
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
@@ -56,6 +58,12 @@
ЗаполнитьАлгоритмыВыбраннойПрограммы();
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Возврат;
КонецЕсли;
ПодключитьОбработчикОжидания("ОбработчикОжиданияНачатьВыборПрограммыПослеОткрытия", 0.1, Истина);
КонецПроцедуры
&НаСервере
@@ -219,18 +227,20 @@
Возврат;
КонецЕсли;
Если ЭлектроннаяПодписьСлужебныйКлиент.ТребуетсяПутьКПрограмме() Тогда
ПерсональныеНастройки = ЭлектроннаяПодписьКлиент.ПерсональныеНастройки();
ПутьКПрограмме = ПерсональныеНастройки.ПутиКПрограммамЭлектроннойПодписиИШифрования.Получить(
Объект.Ссылка);
Иначе
ПутьКПрограмме = "";
КонецЕсли;
ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьПутьКПрограмме(
Новый ОписаниеОповещения("ЗаполнитьАлгоритмыВыбраннойПрограммыПослеПолученияПутиКПрограмме",
ЭтотОбъект, Контекст), Объект.Ссылка);
КонецПроцедуры
// Продолжение процедуры ЗаполнитьАлгоритмыВыбраннойПрограммы.
&НаКлиенте
Процедура ЗаполнитьАлгоритмыВыбраннойПрограммыПослеПолученияПутиКПрограмме(ОписаниеПути, Контекст) Экспорт
СредстваКриптографии.НачатьПолучениеИнформацииМодуляКриптографии(Новый ОписаниеОповещения(
"ЗаполнитьАлгоритмыВыбраннойПрограммыПослеПолученияИнформации", ЭтотОбъект, ,
"ЗаполнитьАлгоритмыВыбраннойПрограммыПослеОшибкиПолученияИнформации", ЭтотОбъект),
Объект.ИмяПрограммы, ПутьКПрограмме, Объект.ТипПрограммы);
Объект.ИмяПрограммы, ОписаниеПути.ПутьКПрограмме, Объект.ТипПрограммы);
КонецПроцедуры
@@ -314,6 +324,25 @@
КонецПроцедуры
&НаКлиенте
Процедура ОбработчикОжиданияНачатьВыборПрограммыПослеОткрытия()
ПоказатьВыборИзМеню(Новый ОписаниеОповещения("ПослеВыбораПрограммы", ЭтотОбъект),
Элементы.Наименование.СписокВыбора, Элементы.Наименование);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораПрограммы(ВыбранныйЭлемент, Контекст) Экспорт
Если ВыбранныйЭлемент = Неопределено Тогда
Возврат
КонецЕсли;
НаименованиеОбработкаВыбора(Элементы.Наименование, ВыбранныйЭлемент.Значение, Ложь);
КонецПроцедуры
// Продолжение процедуры НаименованиеОбработкаВыбора.
&НаКлиенте
Процедура ОбработчикОжиданияНаименованиеОбработкаВыбора()
@@ -323,4 +352,16 @@
КонецПроцедуры
&НаСервере
Функция ЕстьВОСКлиентаИлиВОССервера(Настройка)
Возврат Не Настройка.НетВWindows
И (ОбщегоНазначения.ЭтоWindowsКлиент() Или ОбщегоНазначения.ЭтоWindowsСервер())
Или Не Настройка.НетВLinux
И (ОбщегоНазначения.ЭтоLinuxКлиент() Или ОбщегоНазначения.ЭтоLinuxСервер())
Или Не Настройка.НетВMacOS
И ОбщегоНазначения.ЭтоMacOSКлиент();
КонецФункции
#КонецОбласти
@@ -100,9 +100,24 @@
Настройка.АлгоритмыШифрования.Добавить("RC4");
Настройка.АлгоритмыШифрования.Добавить("DES");
Настройка.АлгоритмыШифрования.Добавить("3DES");
Настройка.НетВLinux = Истина;
Настройка.НетВMacOS = Истина;
КонецПроцедуры
Функция ПоставляемыеПутиКМодулямПрограмм() Экспорт
ПутиКМодулям = ЭлектроннаяПодписьСлужебный.ПоставляемыеПутиКМодулямПрограмм();
Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда
ОбработкаПрограммыЭлектроннойПодписиИШифрования = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
"Обработка.ПрограммыЭлектроннойПодписиИШифрования");
ОбработкаПрограммыЭлектроннойПодписиИШифрования.ДобавитьПоставляемыеПутиКМодулямПрограмм(ПутиКМодулям);
КонецЕсли;
Возврат ПутиКМодулям;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Обновление информационной базы.
@@ -207,7 +222,7 @@
КонецПроцедуры
// Параметры:
// Программа - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
// Программа - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
//
Процедура ОбновитьПредставлениеПрограммыОтложенно(Программа, ОбъектовОбработано, ПроблемныхОбъектов, ПоставляемыеНастройки)
@@ -77,7 +77,6 @@
<excludedCommands>Print</excludedCommands>
<excludedCommands>Redo</excludedCommands>
<excludedCommands>SaveAs</excludedCommands>
<excludedCommands>SearchEverywhere</excludedCommands>
<excludedCommands>SelectAll</excludedCommands>
<excludedCommands>Strikeout</excludedCommands>
<excludedCommands>TextColor</excludedCommands>
@@ -46,7 +46,7 @@
</li>
<li>В поле <strong>Автор</strong> выберите пользователя из списка. По умолчанию программа выбирает в качестве автора текущего пользователя, который создает рассылку.
<ul><li>При запуске по расписанию рассылка выполняется от имени автора. </li></ul></li></ul><h3>Доставка</h3>
<ul dir="ltr"><li>На вкладке описываются все возможные способы доставки настраиваемой рассылки. Содержимое вкладки может меняться, в зависимости от <a href="#ВидРассылки">вида рассылки</a>.
<ul dir="ltr"><li>На вкладке описываются все возможные способы доставки настраиваемой рассылки. Содержимое вкладки может меняться, в зависимости от <a href="#&amp;#1042;&amp;#1080;&amp;#1076;&amp;#1056;&amp;#1072;&amp;#1089;&amp;#1089;&amp;#1099;&amp;#1083;&amp;#1082;&amp;#1080;">вида рассылки</a>.
</li>
<li>Если выбрана <strong>личная рассылка автора</strong>, то доставка выполняется только по электронной почте по единственному адресу, который указывается в поле <strong>Почтовый адрес</strong>.
</li>
@@ -70,13 +70,13 @@
<li>Если используются оба способа доставки (и публикация, и отправка по почте), то можно указать, что по почте нужно <strong>Отправлять только уведомление</strong> о том, что отчет сформирован. Сами отчеты не будут присоединяться к письму, а будут помещаться в каталог публикации. В этом случае письмо-уведомление будет содержать адрес, по которому находится сформированный отчет.
</li>
<li>После установки флажка <strong>Отправлять по электронной почте</strong> становятся доступными <a name="ТемаИТекстПисьма"><strong>Тема и текст письма</strong></a>. Могут содержать шаблоны <a name="Параметр"><strong>параметров</strong></a> рассылки. По умолчанию шаблон письма уже сформирован автоматически. Для добавления параметров в письмо нажмите <strong>Параметр</strong>, выберите нужное значение:
<ul><li><strong>[</strong><strong>ДатаВыполнения]</strong> - дата рассылки. Параметр может быть указан в <u><a href="#НаименованиеАрхива">имени архива</a></u>.
<ul><li><strong>[</strong><strong>ДатаВыполнения]</strong> - дата рассылки. Параметр может быть указан в <u><a href="#&amp;#1053;&amp;#1072;&amp;#1080;&amp;#1084;&amp;#1077;&amp;#1085;&amp;#1086;&amp;#1074;&amp;#1072;&amp;#1085;&amp;#1080;&amp;#1077;&amp;#1040;&amp;#1088;&amp;#1093;&amp;#1080;&amp;#1074;&amp;#1072;">имени архива</a></u>.
</li>
<li>
<div style="MARGIN-RIGHT: 0px"><strong>[Автор]</strong> - пользователь, запустивший рассылку. </div>
</li>
<li>
<div style="MARGIN-RIGHT: 0px"><strong>[Получатель]</strong> - представление получателя рассылки. Доступен только для вида рассылки <a href="#ВидРассылки">свой отчет для каждого получателя</a>. </div>
<div style="MARGIN-RIGHT: 0px"><strong>[Получатель]</strong> - представление получателя рассылки. Доступен только для вида рассылки <a href="#&amp;#1042;&amp;#1080;&amp;#1076;&amp;#1056;&amp;#1072;&amp;#1089;&amp;#1089;&amp;#1099;&amp;#1083;&amp;#1082;&amp;#1080;">свой отчет для каждого получателя</a>. </div>
</li>
<li>
<div style="MARGIN-RIGHT: 0px"><strong>[НаименованиеРассылки]</strong> - наименование рассылки. Параметр может быть указан в имени архива. </div>
@@ -417,8 +417,9 @@
Иначе
ЗаголовокФормы = НСтр("ru = 'Проверка установки электронной подписи'");
КонецЕсли;
ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме(
ЗаголовокФормы, "", Новый Структура("ОписаниеОшибки", ОписаниеОшибки), Новый Структура);
ДополнительныеПараметры = Новый Структура("Сертификат", СертификатАдрес);
ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме(ЗаголовокФормы,
"", Новый Структура("ОписаниеОшибки", ОписаниеОшибки), Новый Структура, ДополнительныеПараметры);
Возврат;
КонецЕсли;
@@ -325,6 +325,15 @@
КонецПроцедуры
&НаКлиенте
Функция ПеременныеОчищены()
Возврат ОписаниеДанных = Неопределено
И ФормаОбъекта = Неопределено
И ТекущийСписокПредставлений = Неопределено;
КонецФункции
// АПК:78-выкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер.
&НаКлиенте
Процедура ВыполнитьПодписание(КлиентскиеПараметры, ОбработкаЗавершения) Экспорт
@@ -435,6 +444,10 @@
&НаКлиенте
Процедура ПодписатьДанныеПослеОбработкиПередВыполнением(Результат, Контекст) Экспорт
Если ПеременныеОчищены() Тогда
Возврат;
КонецЕсли;
Если Результат.Свойство("ОписаниеОшибки") Тогда
ОбработатьОшибку(Контекст.Оповещение, Новый Структура("ОписаниеОшибки", Результат.ОписаниеОшибки), Новый Структура);
Возврат;
@@ -457,6 +470,10 @@
&НаКлиенте
Процедура ПодписатьДанныеПослеПроверкиСертификата(Результат, Контекст) Экспорт
Если ПеременныеОчищены() Тогда
Возврат;
КонецЕсли;
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("ОписаниеДанных", ОписаниеДанных);
ПараметрыВыполнения.Вставить("Форма", ЭтотОбъект);
@@ -493,6 +510,10 @@
&НаКлиенте
Процедура ПодписатьДанныеПослеВыполненияНаСторонеСервера(Результат, Контекст) Экспорт
Если ПеременныеОчищены() Тогда
Возврат;
КонецЕсли;
Если Результат <> Неопределено Тогда
ПодписатьДанныеПослеВыполнения(Результат);
КонецЕсли;
@@ -516,6 +537,10 @@
&НаКлиенте
Процедура ПодписатьДанныеПослеВыполненияНаСторонеКлиента(Результат, Контекст) Экспорт
Если ПеременныеОчищены() Тогда
Возврат;
КонецЕсли;
ПодписатьДанныеПослеВыполнения(Результат);
Если Результат.Свойство("Ошибка") Тогда
@@ -598,6 +623,7 @@
Если НеподписанныеДанные <> Неопределено Тогда
ДополнительныеПараметры.Вставить("НеподписанныеДанные", НеподписанныеДанные);
КонецЕсли;
ДополнительныеПараметры.Вставить("Сертификат", Сертификат);
ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме(
НСтр("ru = 'Не удалось подписать данные'"), "",
@@ -4561,6 +4561,20 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ИмяСервера</name>
<id>21</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>Проверить</name>
<title>
@@ -112,10 +112,8 @@
Элементы[Проверка + "РешениеКлиент"].Видимость = Ложь;
Элементы[Проверка + "РешениеСервер"].Видимость = Ложь;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
Проверка + "Надпись",
"Заголовок",
СтандартныйЗаголовокЭлемента(Проверка + "Надпись"));
Элементы[Проверка + "Надпись"].Заголовок =
СтандартныйЗаголовокЭлемента(Проверка + "Надпись");
Если ПроверкиНаКлиенте <> Неопределено Тогда
ВывестиРезультатПроверки(Проверка);
@@ -249,12 +247,11 @@
Процедура ИнформацияДляПоддержкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Не ПроверкаВыполнена Тогда
ПоказатьПредупреждение(,
НСтр("ru = 'Для сбора технической информации о возникшей проблеме необходимо выполнить проверку сертификата.'"));
Возврат;
КонецЕсли;
СоставПроверок = СтандартныеПроверки();
@@ -262,15 +259,20 @@
СоставПроверок.Добавить(Проверка.Имя);
КонецЦикла;
ТекстОшибок = НСтр("ru = 'Результат поверки на клиенте'") + ":" + Символы.ПС;
ТекстОшибок = "";
ОписаниеФайлов = Новый Массив;
ЭлектроннаяПодписьСлужебныйВызовСервера.ДобавитьОписаниеДополнительныхДанных(
Новый Структура("Сертификат", Сертификат), ОписаниеФайлов, ТекстОшибок);
ТекстОшибок = ТекстОшибок + НСтр("ru = 'Результат поверки на клиенте'") + ":" + Символы.ПС;
ДополнитьТекстОшибками(ТекстОшибок, СоставПроверок);
ТекстОшибок = ТекстОшибок + Символы.ПС
+ НСтр("ru = 'Результат поверки на сервере'") + ":" + Символы.ПС;
ТекстОшибок = ТекстОшибок + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Результат поверки на сервере ""%1"":'"), ИмяСервера) + Символы.ПС;
ДополнитьТекстОшибками(ТекстОшибок, СоставПроверок, Истина);
ЭлектроннаяПодписьСлужебныйКлиент.СформироватьТехническуюИнформацию(
ТекстОшибок, Неопределено, ДанныеСертификата(Сертификат));
ТекстОшибок, Неопределено, ОписаниеФайлов);
КонецПроцедуры
@@ -480,8 +482,8 @@
Процедура ПроверитьНаСторонеКлиента(Оповещение)
ПроверкаВыполнена = Истина;
Контекст = Новый Структура("Оповещение", Оповещение);
Если СтандартныеПроверки Тогда
ЭлектроннаяПодписьКлиент.УстановитьРасширение(Ложь, Новый ОписаниеОповещения(
"ПроверитьНаСторонеКлиентаПослеПодключенияРасширенияРаботыСКриптографией", ЭтотОбъект, Контекст),
@@ -553,6 +555,8 @@
Процедура ПроверитьНаСторонеКлиентаПослеИнициализацииСертификата(СертификатКриптографии, Контекст) Экспорт
Контекст.Вставить("СертификатКриптографии", СертификатКриптографии);
// Законный сертификат.
ПроверитьЗаконныйСертификатНаКлиенте(Контекст);
// Наличие сертификата в личном списке.
@@ -574,7 +578,7 @@
Процедура ПроверитьЗаконныйСертификатНаКлиенте(Контекст)
Если Не Элементы.ГруппаЗаконныйСертификат.Видимость
Или Контекст.СертификатКриптографии.Субъект.Свойство("SN") Тогда
Или Контекст.СертификатКриптографии.Субъект.Свойство("SN") Тогда
ОписаниеОшибки = "";
Иначе
@@ -611,9 +615,9 @@
// Продолжение процедуры ПроверитьНаСторонеКлиента.
//
// Параметры:
// Результат - Структура:
// * ОписаниеОшибки - Структура:
// ** Описание - Строка
// Результат - Структура:
// * ОписаниеОшибки - Структура:
// ** Описание - Строка
//
&НаКлиенте
Процедура ПроверитьНаСторонеКлиентаПослеПоискаСертификатаВМоделиСервиса(Результат, Контекст) Экспорт
@@ -690,10 +694,10 @@
// Продолжение процедуры ПроверитьНаСторонеКлиента.
//
// Параметры:
// Результат - Структура:
// * ИнформацияОбОшибке - Структура:
// ** Описание - Строка
// Контекст - Структура
// Результат - Структура:
// * ИнформацияОбОшибке - Структура:
// ** Описание - Строка
// Контекст - Структура
//
&НаКлиенте
Процедура ПроверитьНаСторонеКлиентаПослеПроверкиСертификатаВМоделиСервиса(Результат, Контекст) Экспорт
@@ -827,10 +831,10 @@
// Продолжение процедуры ПроверитьНаСторонеКлиента.
//
// Параметры:
// ДанныеПодписи - Структура:
// * ИнформацияОбОшибке - Структура:
// ** Описание - Строка
// Контекст - Структура
// ДанныеПодписи - Структура:
// * ИнформацияОбОшибке - Структура:
// ** Описание - Строка
// Контекст - Структура
//
&НаКлиенте
Процедура ПроверитьНаСторонеКлиентаПослеПодписанияВМоделиСервиса(ДанныеПодписи, Контекст) Экспорт
@@ -891,14 +895,14 @@
Контекст.ДанныеСертификата, Контекст.СертификатКриптографии);
КонецПроцедуры
// Продолжение процедуры ПроверитьНаСторонеКлиента.
//
// Параметры:
// Результат - Структура:
// * ИнформацияОбОшибке - Структура:
// ** Описание - Строка
// Контекст - Структура
// Результат - Структура:
// * ИнформацияОбОшибке - Структура:
// ** Описание - Строка
// Контекст - Структура
//
&НаКлиенте
Процедура ПроверитьНаСторонеКлиентаПослеПроверкиПодписиВМоделиСервиса(Результат, Контекст) Экспорт
@@ -956,10 +960,10 @@
// Продолжение процедуры ПроверитьНаСторонеКлиента.
//
// Параметры:
// Результат - Структура:
// * ИнформацияОбОшибке - Структура:
// ** Описание - Строка
// Контекст - Структура
// Результат - Структура:
// * ИнформацияОбОшибке - Структура:
// ** Описание - Строка
// Контекст - Структура
//
&НаКлиенте
Процедура ПроверитьНаСторонеКлиентаПослеШифрованияВМоделиСервиса(Результат, Контекст) Экспорт
@@ -1016,10 +1020,10 @@
// Продолжение процедуры ПроверитьНаСторонеКлиента.
//
// Параметры:
// Результат - Структура:
// * ИнформацияОбОшибке - Структура:
// ** Описание - Строка
// Контекст - Структура
// Результат - Структура:
// * ИнформацияОбОшибке - Структура:
// ** Описание - Строка
// Контекст - Структура
//
&НаКлиенте
Процедура ПроверитьНаСторонеКлиентаПослеРасшифровкиВМоделиСервиса(Результат, Контекст) Экспорт
@@ -1116,6 +1120,8 @@
ПроверкаВыполнена = Истина;
ИмяСервера = ИмяКомпьютера();
ДанныеСертификата = ПолучитьИзВременногоХранилища(АдресСертификата);
АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(ДанныеСертификата);
@@ -1127,7 +1133,7 @@
Возврат;
КонецПопытки;
// Законный сертификат
// Законный сертификат.
ПроверитьЗаконныйСертификатНаСервере(СертификатКриптографии);
// Наличие сертификата в личном списке.
@@ -1155,16 +1161,13 @@
КонецЕсли;
УстановитьЭлемент(ЭтотОбъект, "ДанныеСертификата", Истина, ОписаниеОшибки, Истина, ОбъединятьРезультаты);
// Наличие программы
// Наличие программы.
Если ЗначениеЗаполнено(Программа) Тогда
ПараметрыСоздания = ЭлектроннаяПодписьСлужебный.ПараметрыСозданияМенеджераКриптографии();
ПараметрыСоздания.Программа = Программа;
МенеджерКриптографии = ЭлектроннаяПодписьСлужебный.МенеджерКриптографии("ПроверкаСертификата", ПараметрыСоздания);
ОписаниеОшибки = ПараметрыСоздания.ОписаниеОшибки;
Иначе
МенеджерКриптографии = Неопределено;
ОписаниеОшибки = НСтр("ru = 'Программа для использования закрытого ключа не указана в сертификате.'");
@@ -1279,17 +1282,17 @@
КонецПроцедуры
&НаСервере
Процедура ПроверитьНаСторонеСервераДополнительныеПроверки(ЗначениеПароля, МенеджерКриптографии = Неопределено)
ИмяСервера = ИмяКомпьютера();
// Дополнительные проверки.
Для Каждого ЭлементСписка Из ДополнительныеПроверки Цикл
ОписаниеОшибки = "";
ЭтоПредупреждение = Ложь;
Попытка
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("Сертификат", Сертификат);
ПараметрыВыполнения.Вставить("Проверка", ЭлементСписка.Имя);
@@ -1333,8 +1336,6 @@
&НаСервере
Процедура ДобавитьГруппуОписанияРешения(ИмяПроверки, Родитель, НаСервере = Ложь)
Суффикс = ?(НаСервере, "Сервер", "Клиент");
ГруппаРешение = ГруппаФормыБезОтображения(
ИмяПроверки + ?(НаСервере, "РешениеСервер", "РешениеКлиент"), Родитель);
@@ -1407,7 +1408,7 @@
Процедура УстановитьЭлемент(Форма, НачалоЭлемента, НаСервере,
ОписаниеОшибки = Неопределено, ЭтоОшибка = Ложь, ОбъединятьРезультаты = "НеОбъединять")
ЭлементНадпись = Форма.Элементы[НачалоЭлемента + "Надпись"]; // Label
ЭлементНадпись = Форма.Элементы[НачалоЭлемента + "Надпись"]; // ДекорацияФормы, Надпись
Если ОбъединятьРезультаты = "ОбъединятьПоИ"
Или ОбъединятьРезультаты = "ОбъединятьПоИли" Тогда
@@ -1452,8 +1453,7 @@
Форма.Элементы[ИмяГруппыРешение].Видимость = ЭтоИзвестнаяОшибка;
Если ЭтоИзвестнаяОшибка Тогда
ИмяГруппыРешениеНадпись = НачалоЭлемента + ?(НаСервере, "РешениеСерверНадпись", "РешениеКлиентНадпись");
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы,
ИмяГруппыРешениеНадпись, "Заголовок", ОписаниеИзвестнойОшибки.Решение);
Форма.Элементы[ИмяГруппыРешениеНадпись].Заголовок = ОписаниеИзвестнойОшибки.Решение;
КонецЕсли;
КонецЕсли;
Иначе
@@ -1471,8 +1471,7 @@
ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка не выполнялась.'");
ЭлементНадпись.Гиперссылка = Ложь;
ЭлементНадпись.Заголовок = ЗаголовокЭлемента(
Форма.ДополнительныеПроверки,
ЭлементНадпись.Имя);
Форма.ДополнительныеПроверки, ЭлементНадпись.Имя);
ИначеЕсли ЗначениеПроверки = Неопределено
И ЗначениеПроверкиВторогоКонтекста <> Неопределено Тогда
@@ -1528,7 +1527,7 @@
Проверки.Вставить(НачалоЭлемента, ЗначениеПроверки);
Проверки.Вставить(НачалоЭлемента + "Ошибка",
?(ОписаниеОшибки = Неопределено, "", ОписаниеОшибки));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
@@ -1600,12 +1599,12 @@
ПроверкиНаКлиенте[Проверка], Неопределено);
ТекстОшибкиПроверки = ?(СоставПроверок.Свойство(Проверка + "Ошибка"),
ПроверкиНаКлиенте[Проверка + "Ошибка"], "");
СокрЛП(ПроверкиНаКлиенте[Проверка + "Ошибка"]), "");
ТекстОшибок = ТекстОшибок + Проверка + ": "
+ ?(РезультатПроверки = Неопределено, НСтр("ru = 'Не выполнялась из-за предыдущих ошибок'"),
Формат(РезультатПроверки, НСтр("ru = 'БЛ=Ошибка; БИ=Успех'")))
+ ?(ПустаяСтрока(ТекстОшибкиПроверки), "", ": ") + ТекстОшибкиПроверки + Символы.ПС;
+ ?(ПустаяСтрока(ТекстОшибкиПроверки), "", " """ + ТекстОшибкиПроверки + """") + Символы.ПС;
КонецЕсли;
@@ -1616,25 +1615,7 @@
&НаСервереБезКонтекста
Функция ОшибкаПоКлассификатору(ОписаниеОшибки)
Возврат ЭлектроннаяПодпись.ОшибкаПоКлассификатору(ОписаниеОшибки);
КонецФункции
&НаСервереБезКонтекста
Функция ДанныеСертификата(Сертификат)
Если Не ЗначениеЗаполнено(Сертификат) Тогда
Возврат Неопределено;
КонецЕсли;
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Сертификат, "Наименование, ДанныеСертификата");
ДанныеСертификата = Новый Структура;
ДанныеСертификата.Вставить("Имя", ЗначенияРеквизитов.Наименование + ".cer");
ДанныеСертификата.Вставить("Данные", ЗначенияРеквизитов.ДанныеСертификата.Получить());
Возврат ДанныеСертификата;
Возврат ЭлектроннаяПодписьСлужебный.ОшибкаПоКлассификатору(ОписаниеОшибки);
КонецФункции
@@ -78,7 +78,8 @@
Процедура СертификатПриИзменении(Элемент)
ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьОтпечаткиСертификатовНаКлиенте(
Новый ОписаниеОповещения("СертификатПриИзмененииЗавершение", ЭтотОбъект));
Новый ОписаниеОповещения("СертификатПриИзмененииЗавершение", ЭтотОбъект),
ЗначениеЗаполнено(ОтборОтпечатков));
КонецПроцедуры
@@ -146,7 +147,8 @@
КонецЕсли;
ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьОтпечаткиСертификатовНаКлиенте(
Новый ОписаниеОповещения("СертификатОбработкаВыбораЗавершение", ЭтотОбъект, ВыбранноеЗначение));
Новый ОписаниеОповещения("СертификатОбработкаВыбораЗавершение", ЭтотОбъект, ВыбранноеЗначение),
ЗначениеЗаполнено(ОтборОтпечатков));
КонецПроцедуры
@@ -362,6 +364,15 @@
КонецПроцедуры
&НаКлиенте
Функция ПеременныеОчищены()
Возврат ОписаниеДанных = Неопределено
И ФормаОбъекта = Неопределено
И ТекущийСписокПредставлений = Неопределено;
КонецФункции
// АПК:78-выкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер.
&НаКлиенте
Процедура ВыполнитьРасшифровку(КлиентскиеПараметры, ОбработкаЗавершения) Экспорт
@@ -394,7 +405,8 @@
Процедура ПриИзмененииСпискаСертификатов()
ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьОтпечаткиСертификатовНаКлиенте(
Новый ОписаниеОповещения("ПриИзмененииСпискаСертификатовЗавершение", ЭтотОбъект));
Новый ОписаниеОповещения("ПриИзмененииСпискаСертификатовЗавершение", ЭтотОбъект),
ЗначениеЗаполнено(ОтборОтпечатков));
КонецПроцедуры
@@ -465,6 +477,10 @@
&НаКлиенте
Процедура РасшифроватьДанныеПослеОбработкиПередВыполнением(Результат, Контекст) Экспорт
Если ПеременныеОчищены() Тогда
Возврат;
КонецЕсли;
Если Результат.Свойство("ОписаниеОшибки") Тогда
ОбработатьОшибку(Контекст.Оповещение, Новый Структура("ОписаниеОшибки", Результат.ОписаниеОшибки), Новый Структура);
Возврат;
@@ -506,6 +522,10 @@
&НаКлиенте
Процедура РасшифроватьДанныеПослеВыполненияНаСторонеСервера(Результат, Контекст) Экспорт
Если ПеременныеОчищены() Тогда
Возврат;
КонецЕсли;
Если Результат <> Неопределено Тогда
РасшифроватьДанныеПослеВыполнения(Результат);
КонецЕсли;
@@ -529,6 +549,10 @@
&НаКлиенте
Процедура РасшифроватьДанныеПослеВыполненияНаСторонеКлиента(Результат, Контекст) Экспорт
Если ПеременныеОчищены() Тогда
Возврат;
КонецЕсли;
РасшифроватьДанныеПослеВыполнения(Результат);
Если Результат.Свойство("Ошибка") Тогда
@@ -667,9 +691,11 @@
Открыть();
КонецЕсли;
ДополнительныеПараметры = Новый Структура("Сертификат", Сертификат);
ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме(
НСтр("ru = 'Не удалось расшифровать данные'"), "",
ОшибкаНаКлиенте, ОшибкаНаСервере, , ОбработкаПослеПредупреждения);
ОшибкаНаКлиенте, ОшибкаНаСервере, ДополнительныеПараметры, ОбработкаПослеПредупреждения);
ВыполнитьОбработкуОповещения(Оповещение, Ложь);
@@ -460,7 +460,7 @@
ПараметрыСоздания.Программа = ОписаниеПрограммы.Ссылка;
ПараметрыСоздания.АлгоритмПодписи = АлгоритмПодписи;
МенеджерКриптографии = ЭлектроннаяПодписьСлужебный.МенеджерКриптографии("", ПараметрыСоздания);
МенеджерКриптографии = ЭлектроннаяПодписьСлужебный.МенеджерКриптографии("Шифрование", ПараметрыСоздания);
Если МенеджерКриптографии = Неопределено Тогда
Продолжить;
@@ -715,6 +715,15 @@
КонецПроцедуры
&НаКлиенте
Функция ПеременныеОчищены()
Возврат ОписаниеДанных = Неопределено
И ФормаОбъекта = Неопределено
И ТекущийСписокПредставлений = Неопределено;
КонецФункции
// АПК:78-выкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер.
&НаКлиенте
Процедура ВыполнитьШифрование(КлиентскиеПараметры, ОбработкаЗавершения) Экспорт
@@ -782,14 +791,6 @@
Контекст.Вставить("ОшибкаНаСервере", Новый Структура);
Если ЗначениеЗаполнено(Сертификат) Тогда
Если СертификатДействителенДо < ОбщегоНазначенияКлиент.ДатаСеанса() Тогда
Контекст.ОшибкаНаКлиенте.Вставить("ОписаниеОшибки",
НСтр("ru = 'У выбранного личного сертификата истек срок действия.
|Выберите другой сертификат.'"));
ОбработатьОшибку(Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере);
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(СертификатПрограмма) Тогда
Контекст.ОшибкаНаКлиенте.Вставить("ОписаниеОшибки",
НСтр("ru = 'У выбранного личного сертификата не указана программа для закрытого ключа.
@@ -851,6 +852,10 @@
&НаКлиенте
Процедура ЗашифроватьДанныеПослеВыполненияНаСторонеСервера(Результат, Контекст) Экспорт
Если ПеременныеОчищены() Тогда
Возврат;
КонецЕсли;
Если Результат <> Неопределено Тогда
ЗашифроватьДанныеПослеВыполнения(Результат);
КонецЕсли;
@@ -874,6 +879,10 @@
&НаКлиенте
Процедура ЗашифроватьДанныеПослеВыполненияНаСторонеКлиента(Результат, Контекст) Экспорт
Если ПеременныеОчищены() Тогда
Возврат;
КонецЕсли;
ЗашифроватьДанныеПослеВыполнения(Результат);
Если Результат.Свойство("Ошибка") Тогда
@@ -1073,9 +1082,20 @@
Открыть();
КонецЕсли;
ВсеСертификаты = Новый Массив;
ВсеСертификаты.Добавить(Сертификат);
Для Каждого Строка Из СертификатыШифрования Цикл
Если Не ЗначениеЗаполнено(Строка.Сертификат)
Или ВсеСертификаты.Найти(Строка.Сертификат) <> Неопределено Тогда
Продолжить;
КонецЕсли;
ВсеСертификаты.Добавить(Строка.Сертификат);
КонецЦикла;
ДополнительныеПараметры = Новый Структура("Сертификат", ВсеСертификаты);
ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме(
НСтр("ru = 'Не удалось зашифровать данные'"), "",
ОшибкаНаКлиенте, ОшибкаНаСервере, , ОбработкаПослеПредупреждения);
ОшибкаНаКлиенте, ОшибкаНаСервере, ДополнительныеПараметры, ОбработкаПослеПредупреждения);
ВыполнитьОбработкуОповещения(Оповещение, Ложь);
@@ -96,13 +96,7 @@
ПодключитьОбработчикОжидания("ПриИзмененияИспользованияПодписанияИлиШифрования", 0.3, Истина);
КонецЕсли;
Если ИмяСобытия = "Запись_Файл"
И Источник = Объект.Ссылка
И Параметр <> Неопределено
И ТипЗнч(Параметр) = Тип("Структура")
И Параметр.Свойство("Событие")
И (Параметр.Событие = "ЗаконченоРедактирование"
Или Параметр.Событие = "РедактированиеОтменено") Тогда
Если ИмяСобытия = "Запись_Файл" И Источник = Объект.Ссылка И Не Модифицированность Тогда
Прочитать();
КонецЕсли;
@@ -83,24 +83,21 @@
УстановитьТекстШаблона(ТекущийОбъект);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью");
Если ВыбранныеФорматыСохранения.Количество() = 0 Тогда
Для Каждого ФорматСохранения Из МодульУправлениеПечатью.ФорматыСохраненияТабличногоДокумента() Цикл
ВыбранныеФорматыСохранения.Добавить(Строка(ФорматСохранения.ТипФайлаТабличногоДокумента), Строка(ФорматСохранения.Ссылка), Ложь, ФорматСохранения.Картинка);
КонецЦикла;
КонецЕсли;
Если ВыбранныеФорматыСохранения.Количество() = 0 Тогда
Для Каждого ФорматСохранения Из СтандартныеПодсистемыСервер.НастройкиФорматовСохраненияТабличногоДокумента() Цикл
ВыбранныеФорматыСохранения.Добавить(Строка(ФорматСохранения.ТипФайлаТабличногоДокумента), Строка(ФорматСохранения.Ссылка), Ложь, ФорматСохранения.Картинка);
КонецЦикла;
КонецЕсли;
СписокФорматов = ТекущийОбъект.ФорматВложений.Получить();
Если СписокФорматов <> Неопределено Тогда
ВыбранныеФорматыСохранения.ЗаполнитьПометки(Ложь);
Для Каждого ЭлементСписка Из СписокФорматов Цикл
НайденноеЗначение = ВыбранныеФорматыСохранения.НайтиПоЗначению(ЭлементСписка.Значение);
Если НайденноеЗначение <> Неопределено Тогда
НайденноеЗначение.Пометка = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
СписокФорматов = ТекущийОбъект.ФорматВложений.Получить();
Если СписокФорматов <> Неопределено Тогда
ВыбранныеФорматыСохранения.ЗаполнитьПометки(Ложь);
Для Каждого ЭлементСписка Из СписокФорматов Цикл
НайденноеЗначение = ВыбранныеФорматыСохранения.НайтиПоЗначению(ЭлементСписка.Значение);
Если НайденноеЗначение <> Неопределено Тогда
НайденноеЗначение.Пометка = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ЗаполнитьПроизвольныеПараметрыИзОбъекта(ТекущийОбъект);
@@ -1065,15 +1062,12 @@
&НаСервере
Процедура ИнициализироватьФорматыСохранения()
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью");
Если ВыбранныеФорматыСохранения.Количество() = 0 Тогда
Для Каждого ФорматСохранения Из МодульУправлениеПечатью.ФорматыСохраненияТабличногоДокумента() Цикл
ВыбранныеФорматыСохранения.Добавить(Строка(ФорматСохранения.ТипФайлаТабличногоДокумента), Строка(ФорматСохранения.Ссылка), Ложь, ФорматСохранения.Картинка);
КонецЦикла;
КонецЕсли;
Если ВыбранныеФорматыСохранения.Количество() = 0 Тогда
Для Каждого ФорматСохранения Из СтандартныеПодсистемыСервер.НастройкиФорматовСохраненияТабличногоДокумента() Цикл
ВыбранныеФорматыСохранения.Добавить(Строка(ФорматСохранения.ТипФайлаТабличногоДокумента), Строка(ФорматСохранения.Ссылка), Ложь, ФорматСохранения.Картинка);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -120,16 +120,16 @@
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
ИмяСправочника = Метаданные.Справочники["ВидыКонтактнойИнформации"].ПолноеИмя();
Если ОбновлениеИнформационнойБазы.ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Параметры.Очередь, ИмяСправочника) Тогда
МодульУправлениеКонтактнойИнформациейСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформациейСлужебный");
Если МодульУправлениеКонтактнойИнформациейСлужебный.ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Параметры.Очередь) Тогда
Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ШаблоныСообщений");
Возврат;
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
ИмяСправочника = Метаданные.Справочники["ДополнительныеОтчетыИОбработки"].ПолноеИмя();
Если ОбновлениеИнформационнойБазы.ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Параметры.Очередь,ИмяСправочника) Тогда
МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки");
Если МодульДополнительныеОтчетыИОбработки.ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Параметры.Очередь) Тогда
Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ШаблоныСообщений");
Возврат;
КонецЕсли;
@@ -485,10 +485,6 @@
<key>ru</key>
<value>Идентификатор для формул</value>
</synonym>
<synonym>
<key>en</key>
<value>Идентификатор для формул</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
@@ -91,7 +91,7 @@
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InCommandBar</locationInCommandBar>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаВариантыПоиска</name>
@@ -121,7 +121,7 @@
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InCommandBar</locationInCommandBar>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</items>
<items xsi:type="form:Button">
<name>ВариантПоискаВАдресах</name>
@@ -2278,9 +2278,6 @@
<color>Windows.Highlight</color>
</textColor>
<textSize>Normal</textSize>
<font xsi:type="core:FontRef">
<font>0</font>
</font>
</extInfo>
</items>
<visible>true</visible>
@@ -295,7 +295,11 @@
|%1'"),
КраткоеПредставлениеОшибки(ИнформацияОбОшибке)));
ПоказатьОшибку(ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПоказатьИнструкцию", Истина);
ДополнительныеПараметры.Вставить("Подпись", Контекст.ДанныеПодписи);
ПоказатьОшибку(ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере, ДополнительныеПараметры);
КонецПроцедуры
@@ -489,10 +493,11 @@
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьОшибку(ОшибкаНаКлиенте, ОшибкаНаСервере)
Процедура ПоказатьОшибку(ОшибкаНаКлиенте, ОшибкаНаСервере, ДополнительныеПараметры = Неопределено)
ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме(
НСтр("ru = 'Не удалось получить подпись из файла'"), "", ОшибкаНаКлиенте, ОшибкаНаСервере);
НСтр("ru = 'Не удалось получить подпись из файла'"),
"", ОшибкаНаКлиенте, ОшибкаНаСервере, ДополнительныеПараметры);
КонецПроцедуры
@@ -341,6 +341,10 @@
<items xsi:type="form:Button">
<name>ПеревыпуститьСертификат</name>
<id>353</id>
<title>
<key>ru</key>
<value>Перевыпустить...</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -349,6 +353,10 @@
<extendedTooltip>
<name>ПеревыпуститьСертификатРасширеннаяПодсказка</name>
<id>354</id>
<title>
<key>ru</key>
<value>Перевыпустить сертификат, у которого закончился срок действия</value>
</title>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -356,7 +364,7 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ПеревыпуститьСертификат</commandName>
<commandName>Form.Item.Сертификаты.StandardCommand.Copy</commandName>
<buttonImportance>Normal</buttonImportance>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -430,7 +438,6 @@
</dataPath>
<defaultItem>true</defaultItem>
<titleLocation>None</titleLocation>
<excludedCommands>Copy</excludedCommands>
<excludedCommands>Delete</excludedCommands>
<items xsi:type="form:FormField">
<name>СертификатыНаименование</name>
@@ -1216,6 +1223,7 @@
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<autoCellHeight>true</autoCellHeight>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
@@ -1308,6 +1316,7 @@
<readOnly>true</readOnly>
<editMode>Auto</editMode>
<cellHyperlink>true</cellHyperlink>
<autoCellHeight>true</autoCellHeight>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<cellHyperlinkRepresentation>Show</cellHyperlinkRepresentation>
@@ -1655,7 +1664,7 @@
<id>216</id>
<title>
<key>ru</key>
<value>Путь к программе на компьютере ОС Linux</value>
<value>Путь к программе на клиентском компьютере ОС Linux и macOS</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -1668,7 +1677,7 @@
<titleLocation>None</titleLocation>
<toolTip>
<key>ru</key>
<value>Путь к программе, который требуется на компьютерах с операционной системой Linux</value>
<value>Путь к программе, который требуется на клиентских компьютерах с операционной системой Linux и macOS</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<handlers>
@@ -1696,6 +1705,10 @@
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>StartChoice</event>
<name>ПрограммыLinuxПутьКПрограммеНачалоВыбора</name>
</handlers>
<handlers>
<event>ChoiceProcessing</event>
<name>ПрограммыLinuxПутьКПрограммеОбработкаВыбора</name>
@@ -1703,9 +1716,8 @@
<height>1</height>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<dropListButton>true</dropListButton>
<clearButton>true</clearButton>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
@@ -2896,14 +2908,43 @@
</attributes>
<attributes>
<name>ПутиКПрограммамПоУмолчанию</name>
<id>15</id>
<valueType/>
<id>16</id>
<valueType>
<types>ValueTable</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<columns>
<name>Программа</name>
<id>2</id>
<valueType>
<types>CatalogRef.ПрограммыЭлектроннойПодписиИШифрования</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>Путь</name>
<id>1</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
</attributes>
<formCommands>
<name>Обновить</name>
@@ -3023,33 +3064,6 @@
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>ПеревыпуститьСертификат</name>
<title>
<key>ru</key>
<value>Перевыпустить...</value>
</title>
<id>6</id>
<toolTip>
<key>ru</key>
<value>Перевыпустить сертификат, у которого закончился срок действия</value>
</toolTip>
<use>
<common>true</common>
</use>
<shortcut>F9</shortcut>
<picture xsi:type="core:PictureRef">
<picture>StdPicture.CloneListItem</picture>
</picture>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ПеревыпуститьСертификат</name>
</handler>
</action>
<representation>Picture</representation>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -101,25 +101,7 @@
Элементы.НадписьНастройкаВЦентральномУзле.Видимость = Ложь;
КонецЕсли;
ПутиКПрограммамПоУмолчанию = Новый Структура;
Если ОбщегоНазначения.ЭтоMacOSКлиент() Тогда
ПутьПоУмолчанию = "/opt/cprocsp/lib/libcapi10.dylib:/opt/cprocsp/lib/libcapi20.dylib:"
+ "/opt/cprocsp/lib/libcapi10.4.dylib:/opt/cprocsp/lib/libcapi20.4.dylib";
ПутиКПрограммамПоУмолчанию.Вставить("ПутьMac", ПутьПоУмолчанию);
Элементы.ПрограммыLinuxПутьКПрограмме.СписокВыбора.Добавить(
"ПутьMac", НСтр("ru = 'Путь для Mac OS'") + ": " + ПутьПоУмолчанию);
ИначеЕсли ОбщегоНазначения.ЭтоLinuxКлиент() Тогда
ПутьПоУмолчанию = "/opt/cprocsp/lib/amd64/libcapilite.so:"
+ "/opt/cprocsp/lib/amd64/libcapi10.so:/opt/cprocsp/lib/amd64/libcapi20.so";
ПутиКПрограммамПоУмолчанию.Вставить("ПутьLinux", ПутьПоУмолчанию);
Элементы.ПрограммыLinuxПутьКПрограмме.СписокВыбора.Добавить(
"ПутьLinux", НСтр("ru = 'Путь для Linux'") + ": " + ПутьПоУмолчанию);
Иначе // Не ЭлектроннаяПодписьСлужебныйКлиент.ТребуетсяПутьКПрограмме.
Если Не ЭлектроннаяПодписьСлужебный.ТребуетсяПутьКПрограмме(Истина) Тогда
Элементы.ГруппаПрограммыLinuxПутьКПрограмме.Видимость = Ложь;
КонецЕсли;
@@ -275,6 +257,26 @@
КонецПроцедуры
&НаКлиенте
Процедура ПрограммыLinuxПутьКПрограммеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТекущиеДанные = Элементы.Программы.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
ДанныеВыбора = Неопределено;
СтандартнаяОбработка = Ложь;
Возврат;
КонецЕсли;
Отбор = Новый Структура("Программа", ТекущиеДанные.Ссылка);
Строки = ПутиКПрограммамПоУмолчанию.НайтиСтроки(Отбор);
Если Строки.Количество() = 0 Тогда
ДанныеВыбора = Неопределено;
СтандартнаяОбработка = Ложь;
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПрограммыLinuxПутьКПрограммеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
@@ -287,7 +289,10 @@
Возврат;
КонецЕсли;
ТекущиеДанные.LinuxПутьКПрограмме = ПутиКПрограммамПоУмолчанию[ВыбранноеЗначение];
Отбор = Новый Структура("Программа", ТекущиеДанные.Ссылка);
Строки = ПутиКПрограммамПоУмолчанию.НайтиСтроки(Отбор);
ТекущиеДанные.LinuxПутьКПрограмме = ?(Строки.Количество() = 0, "", Строки[0].Путь);
СохранитьПутьКПрограмме();
КонецПроцедуры
@@ -300,12 +305,22 @@
Процедура СертификатыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Отказ = Истина;
Если Не Копирование Тогда
ПараметрыСоздания = Новый Структура;
Если Копирование Тогда
Если Элементы.Сертификаты.ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = СертификатыТекущиеДанные(Элементы.Сертификаты);
ПараметрыСоздания.Вставить("СоздатьЗаявление", Истина);
ПараметрыСоздания.Вставить("СертификатОснование", ТекущиеДанные.Ссылка);
Иначе
ПараметрыСоздания = Новый Структура;
ПараметрыСоздания.Вставить("СкрытьЗаявление", Ложь);
ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификат(ПараметрыСоздания);
КонецЕсли;
ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификат(ПараметрыСоздания);
КонецПроцедуры
#КонецОбласти
@@ -322,6 +337,8 @@
LinuxПутьКТекущейПрограмме = Элементы.Программы.ТекущиеДанные.LinuxПутьКПрограмме;
КонецЕсли;
ОбновитьLinuxПутьКПрограмме();
КонецПроцедуры
&НаКлиенте
@@ -377,11 +394,13 @@
СтандартнаяОбработка = Ложь;
ПараметрыОшибки = Новый Структура;
ПараметрыОшибки.Вставить("ЗаголовокПредупреждения", НСтр("ru = 'Результат проверки программы'"));
ПараметрыОшибки.Вставить("ТекстОшибкиКлиент", ТекущиеДанные.РезультатПроверки);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗаголовокПредупреждения", НСтр("ru = 'Результат проверки программы'"));
ПараметрыФормы.Вставить("ТекстОшибкиКлиент", ТекущиеДанные.РезультатПроверки);
ПараметрыФормы.Вставить("ПоказатьТребуетсяПомощь", Истина);
ПараметрыФормы.Вставить("ПоказатьИнструкцию", Истина);
ОткрытьФорму("ОбщаяФорма.РасширенноеПредставлениеОшибки", ПараметрыОшибки, ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.РасширенноеПредставлениеОшибки", ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
@@ -451,22 +470,6 @@
КонецПроцедуры
&НаКлиенте
Процедура ПеревыпуститьСертификат(Команда)
Если Элементы.Сертификаты.ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = СертификатыТекущиеДанные(Элементы.Сертификаты);
ПараметрыСоздания = Новый Структура;
ПараметрыСоздания.Вставить("СоздатьЗаявление", Истина);
ПараметрыСоздания.Вставить("СертификатОснование", ТекущиеДанные.Ссылка);
ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификат(ПараметрыСоздания);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -522,7 +525,7 @@
// ТаблицаФормы - ДанныеФормыКоллекция
//
// Возвращаемое значение:
// ДанныеФормыСтруктура:
// Структура:
// * Ссылка - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования
//
&НаКлиенте
@@ -749,6 +752,8 @@
УстановитьВидимостьГруппаВебКлиентРасширениеНеУстановлено(Ложь);
КонецЕсли;
ПутиКПрограммамПоУмолчанию.Очистить();
Контекст = Новый Структура;
Контекст.Вставить("Индекс", -1);
@@ -764,6 +769,7 @@
// После цикла.
Элементы.СтраницыПрограммыИОбновление.ТекущаяСтраница = Элементы.СтраницаПрограммыСписок;
ТекущийЭлемент = Элементы.Программы;
ОбновитьLinuxПутьКПрограмме();
Возврат;
КонецЕсли;
Контекст.Индекс = Контекст.Индекс + 1;
@@ -771,6 +777,24 @@
Контекст.Вставить("ОписаниеПрограммы", ОписаниеПрограммы);
ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьПутьКПрограммеПоУмолчанию(Новый ОписаниеОповещения(
"ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклПослеПолученияПутиКПрограмме", ЭтотОбъект, Контекст),
ОписаниеПрограммы.Ссылка);
КонецПроцедуры
// Продолжение процедуры ОбработчикОжиданияОпределитьУстановленныеПрограммы.
&НаКлиенте
Процедура ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклПослеПолученияПутиКПрограмме(ОписаниеПути, Контекст) Экспорт
ОписаниеПрограммы = Контекст.ОписаниеПрограммы;
Если ЗначениеЗаполнено(ОписаниеПути.ПутьКПрограмме) Тогда
НоваяСтрока = ПутиКПрограммамПоУмолчанию.Добавить();
НоваяСтрока.Программа = ОписаниеПрограммы.Ссылка;
НоваяСтрока.Путь = ОписаниеПути.ПутьКПрограмме;
КонецЕсли;
Если ОписаниеПрограммы.ПометкаУдаления Тогда
ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, "");
ОбновитьЗначение(ОписаниеПрограммы.Подробнее, "");
@@ -812,7 +836,7 @@
Процедура ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклПродолжение(Менеджер, Контекст) Экспорт
ОписаниеПрограммы = Контекст.ОписаниеПрограммы;
Ошибки = Контекст.ПараметрыВыполнения.ОписаниеОшибок.Ошибки; // Массив Из см. ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеСвойстваОшибки
Ошибки = Контекст.ПараметрыВыполнения.ОписаниеОшибок.Ошибки; // Массив Из см. ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеСвойстваОшибки
Если Менеджер <> Неопределено Тогда
ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, НСтр("ru = 'Установлена на компьютере.'"));
@@ -827,7 +851,7 @@
КонецЦикла;
Если Ошибка.НеУказанПуть Тогда
ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, НСтр("ru = 'Не указан путь к программе.'"));
ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, Ошибка.Описание);
ОбновитьЗначение(ОписаниеПрограммы.Подробнее, НСтр("ru = 'Подробнее'") + "...");
ОбновитьЗначение(ОписаниеПрограммы.Установлена, "");
Иначе
@@ -844,6 +868,35 @@
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьLinuxПутьКПрограмме()
ТекущиеДанные = Элементы.Программы.ТекущиеДанные;
ПутьПоУмолчанию = "";
Если ТекущиеДанные <> Неопределено Тогда
Отбор = Новый Структура("Программа", ТекущиеДанные.Ссылка);
Строки = ПутиКПрограммамПоУмолчанию.НайтиСтроки(Отбор);
Если Строки.Количество() > 0 Тогда
ПутьПоУмолчанию = Строки[0].Путь;
КонецЕсли;
КонецЕсли;
Элементы.ПрограммыLinuxПутьКПрограмме.КнопкаВыпадающегоСписка = ЗначениеЗаполнено(ПутьПоУмолчанию);
Элементы.ПрограммыLinuxПутьКПрограмме.ПодсказкаВвода = ПутьПоУмолчанию;
СписокВыбораПутей = Элементы.ПрограммыLinuxПутьКПрограмме.СписокВыбора;
СписокВыбораПутей.Очистить();
Если ЗначениеЗаполнено(ПутьПоУмолчанию) Тогда
Если ОбщегоНазначенияКлиент.ЭтоLinuxКлиент() Тогда
СписокВыбораПутей.Добавить("ПутьLinux", НСтр("ru = 'Стандартный путь для Linux'"));
Иначе
СписокВыбораПутей.Добавить("ПутьMac", НСтр("ru = 'Стандартный путь для Mac OS'"));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьГруппаВебКлиентРасширениеНеУстановлено(Знач ВидимостьЭлемента)
@@ -876,6 +929,7 @@
РасширениеДляФайловПодписи = ПерсональныеНастройки.РасширениеДляФайловПодписи;
ПутиКПрограммам = ПерсональныеНастройки.ПутиКПрограммамЭлектроннойПодписиИШифрования;
СохранятьСертификатВместеСПодписью = ПерсональныеНастройки.СохранятьСертификатВместеСПодписью;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
@@ -1388,6 +1388,11 @@
Результат.Вставить("Вложения", СписокВложений);
Результат.Вставить("УдалятьФайлыПослеОтправки", Истина);
Если ОбъектыПечати.Количество() = 1 И ОбщегоНазначения.ЭтоСсылка(ТипЗнч(ОбъектыПечати[0].Значение)) Тогда
Результат.Вставить("Предмет", ОбъектыПечати[0].Значение);
КонецЕсли;
ПечатныеФормы = Новый ТаблицаЗначений;
ПечатныеФормы.Колонки.Добавить("Название");
ПечатныеФормы.Колонки.Добавить("ТабличныйДокумент");
@@ -100,6 +100,7 @@
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>AlwaysHorizontal</group>
<verticalAlign>Center</verticalAlign>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -212,7 +213,6 @@
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>auto</showTitle>
@@ -279,7 +279,6 @@
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>auto</showTitle>
@@ -386,6 +385,7 @@
<items xsi:type="form:Decoration">
<name>ДекорацияРазделитель</name>
<id>57</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
@@ -408,6 +408,10 @@
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<font xsi:type="core:FontRef">
<font>Style.NormalTextFont</font>
<scale>10</scale>
</font>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
@@ -512,6 +516,7 @@
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>AlwaysHorizontal</group>
<verticalAlign>Center</verticalAlign>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -624,7 +629,6 @@
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>auto</showTitle>
@@ -691,7 +695,6 @@
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>auto</showTitle>
@@ -795,6 +798,293 @@
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ДекорацияРазделитель2</name>
<id>78</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДекорацияРазделитель2РасширеннаяПодсказка</name>
<id>80</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДекорацияРазделитель2КонтекстноеМеню</name>
<id>79</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<font xsi:type="core:FontRef">
<font>Style.NormalTextFont</font>
<scale>10</scale>
</font>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаПодвал</name>
<id>60</id>
<items xsi:type="form:FormGroup">
<name>Инструкция</name>
<id>62</id>
<items xsi:type="form:Decoration">
<name>ТипичныеПроблемы</name>
<id>64</id>
<title>
<key>ru</key>
<value>При возникновении затруднений ознакомьтесь со списком &lt;link ТипичныеПроблемы>типичных проблем при &lt;/>&lt;link ИнструкцияНажатие>работе&lt;/>&lt;link ТипичныеПроблемы> с программой электронной подписи и их решений&lt;/>.</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ТипичныеПроблемыРасширеннаяПодсказка</name>
<id>66</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ТипичныеПроблемыКонтекстноеМеню</name>
<id>65</id>
<autoFill>true</autoFill>
</contextMenu>
<formatted>true</formatted>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<handlers>
<event>URLProcessing</event>
<name>ТипичныеПроблемыОбработкаНавигационнойСсылки</name>
</handlers>
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ИнформацияДляПоддержки</name>
<id>67</id>
<title>
<key>ru</key>
<value>В иных случаях обратитесь в службу поддержки фирмы &quot;1С&quot;, предоставив &lt;link Ссылка>техническую информацию о возникшей проблеме&lt;/>.</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ИнформацияДляПоддержкиРасширеннаяПодсказка</name>
<id>69</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИнформацияДляПоддержкиКонтекстноеМеню</name>
<id>68</id>
<autoFill>true</autoFill>
</contextMenu>
<formatted>true</formatted>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<handlers>
<event>URLProcessing</event>
<name>ИнформацияДляПоддержкиОбработкаНавигационнойСсылки</name>
</handlers>
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Требуется помощь?</value>
</title>
<extendedTooltip>
<name>ИнструкцияРасширеннаяПодсказка</name>
<id>63</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>PopUp</behavior>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>auto</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>КоманднаяПанель</name>
<id>70</id>
<items xsi:type="form:Button">
<name>ФормаУстановитьРасширение</name>
<id>72</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаУстановитьРасширениеРасширеннаяПодсказка</name>
<id>73</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.УстановитьРасширение</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>ФормаПерейтиКНастройкеПрограмм</name>
<id>74</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаПерейтиКНастройкеПрограммРасширеннаяПодсказка</name>
<id>75</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ПерейтиКНастройкеПрограмм</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>ФормаЗакрыть</name>
<id>76</id>
<title>
<key>ru</key>
<value>Закрыть</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<defaultItem>true</defaultItem>
<extendedTooltip>
<name>ФормаЗакрытьРасширеннаяПодсказка</name>
<id>77</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.StandardCommand.Close</commandName>
<defaultButton>true</defaultButton>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Командная панель</value>
</title>
<extendedTooltip>
<name>КоманднаяПанельРасширеннаяПодсказка</name>
<id>71</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>CommandBar</type>
<extInfo xsi:type="form:CommandBarExtInfo">
<horizontalAlign>Right</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Подвал</value>
</title>
<extendedTooltip>
<name>ГруппаПодвалРасширеннаяПодсказка</name>
<id>61</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>AlwaysHorizontal</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<commandBarLocation>None</commandBarLocation>
<showCommandBar>false</showCommandBar>
<autoCommandBar>
@@ -807,10 +1097,9 @@
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
</handlers>
<width>45</width>
<width>55</width>
<windowOpeningMode>LockOwner</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoTitle>true</autoTitle>
<autoUrl>true</autoUrl>
<group>Vertical</group>
<autoFillCheck>true</autoFillCheck>
@@ -882,6 +1171,71 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ОписаниеОшибки</name>
<id>5</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ДополнительныеДанные</name>
<id>6</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ПерейтиКНастройкеПрограмм</name>
<title>
<key>ru</key>
<value>Перейти к настройке программ</value>
</title>
<id>1</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ПерейтиКНастройкеПрограмм</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>УстановитьРасширение</name>
<title>
<key>ru</key>
<value>Установить расширение</value>
</title>
<id>2</id>
<toolTip>
<key>ru</key>
<value>Установить расширение</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>УстановитьРасширение</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<parameters>
<name>ЗаголовокПредупреждения</name>
<valueType>
@@ -903,6 +1257,41 @@
<stringQualifiers/>
</valueType>
</parameters>
<parameters>
<name>ПоказатьИнструкцию</name>
<valueType>
<types>Boolean</types>
</valueType>
</parameters>
<parameters>
<name>ПоказатьПереходКНастройкеПрограмм</name>
<valueType>
<types>Boolean</types>
</valueType>
</parameters>
<parameters>
<name>ПоказатьУстановкуРасширения</name>
<valueType>
<types>Boolean</types>
</valueType>
</parameters>
<parameters>
<name>ПоказатьТребуетсяПомощь</name>
<valueType>
<types>Boolean</types>
</valueType>
</parameters>
<parameters>
<name>ОписаниеОшибки</name>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
</parameters>
<parameters>
<name>ДополнительныеДанные</name>
<valueType/>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -11,28 +11,43 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Заголовок = Параметры.ЗаголовокПредупреждения;
АвтоЗаголовок = Ложь;
ЭлектроннаяПодписьСлужебный.УстановитьЗаголовокОшибки(ЭтотОбъект,
Параметры.ЗаголовокПредупреждения);
ТекстОшибкиКлиент = Параметры.ТекстОшибкиКлиент;
ТекстОшибкиСервер = Параметры.ТекстОшибкиСервер;
КлючНазначенияИспользования = "";
УстановитьЭлементы(ТекстОшибкиКлиент);
УстановитьЭлементы(ТекстОшибкиСервер, Истина);
ДвеОшибки = Не ПустаяСтрока(ТекстОшибкиКлиент)
И Не ПустаяСтрока(ТекстОшибкиСервер);
Если Не ПустаяСтрока(ТекстОшибкиКлиент)
И Не ПустаяСтрока(ТекстОшибкиСервер) Тогда
Элементы.ДекорацияРазделитель.Видимость = Истина;
Если ПустаяСтрока(ЯкорьОшибкиКлиент)
И ПустаяСтрока(ЯкорьОшибкиСервер) Тогда
Элементы.ИнструкцияКлиент.Видимость = Ложь;
КонецЕсли;
УстановитьЭлементы(ТекстОшибкиКлиент, ДвеОшибки, Ложь);
УстановитьЭлементы(ТекстОшибкиСервер, ДвеОшибки, Истина);
Элементы.ДекорацияРазделитель.Видимость = ДвеОшибки;
Если ДвеОшибки
И ПустаяСтрока(ЯкорьОшибкиКлиент)
И ПустаяСтрока(ЯкорьОшибкиСервер) Тогда
Элементы.ИнструкцияКлиент.Видимость = Ложь;
КонецЕсли;
Элементы.ГруппаПодвал.Видимость = Параметры.ПоказатьТребуетсяПомощь;
Элементы.ДекорацияРазделитель2.Видимость = Параметры.ПоказатьТребуетсяПомощь;
Если Параметры.ПоказатьТребуетсяПомощь Тогда
Элементы.Инструкция.Видимость = Параметры.ПоказатьИнструкцию;
Элементы.ФормаПерейтиКНастройкеПрограмм.Видимость = Параметры.ПоказатьПереходКНастройкеПрограмм;
Элементы.ФормаУстановитьРасширение.Видимость = Параметры.ПоказатьУстановкуРасширения;
Элементы.ИнструкцияКлиент.Видимость = ЗначениеЗаполнено(ЯкорьОшибкиКлиент);
Элементы.ИнструкцияСервер.Видимость = ЗначениеЗаполнено(ЯкорьОшибкиСервер);
ОписаниеОшибки = Параметры.ОписаниеОшибки;
КонецЕсли;
ДополнительныеДанные = Параметры.ДополнительныеДанные;
ЭлектроннаяПодписьСлужебный.СброситьРазмерыИПоложениеОкна(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
@@ -57,21 +72,68 @@
КонецПроцедуры
&НаКлиенте
Процедура ТипичныеПроблемыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЭлектроннаяПодписьКлиент.ОткрытьИнструкциюПоТипичнымПроблемамПриРаботеСПрограммами();
КонецПроцедуры
&НаКлиенте
Процедура ИнформацияДляПоддержкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекстОшибок = "";
ОписаниеФайлов = Новый Массив;
Если ЗначениеЗаполнено(ДополнительныеДанные) Тогда
ЭлектроннаяПодписьСлужебныйВызовСервера.ДобавитьОписаниеДополнительныхДанных(
ДополнительныеДанные, ОписаниеФайлов, ТекстОшибок);
КонецЕсли;
ТекстОшибок = ТекстОшибок + ОписаниеОшибки;
ЭлектроннаяПодписьСлужебныйКлиент.СформироватьТехническуюИнформацию(ТекстОшибок, , ОписаниеФайлов);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПерейтиКНастройкеПрограмм(Команда)
Закрыть();
ЭлектроннаяПодписьКлиент.ОткрытьНастройкиЭлектроннойПодписиИШифрования("Программы");
КонецПроцедуры
&НаКлиенте
Процедура УстановитьРасширение(Команда)
ЭлектроннаяПодписьКлиент.УстановитьРасширение(Истина);
Закрыть();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьЭлементы(ТекстОшибки, ОшибкаНаСервере = Ложь)
Процедура УстановитьЭлементы(ТекстОшибки, ДвеОшибки, ОшибкаНаСервере)
Если ОшибкаНаСервере Тогда
ЭлементОшибка = Элементы.ОшибкаСервер;
ЭлементТекстОшибки = Элементы.ТекстОшибкиСервер;
ЭлементИнструкция = Элементы.ИнструкцияСервер;
ЭлементПричиныТекст = Элементы.ПричиныСерверТекст;
ЭлементРешенияТекст = Элементы.РешенияСерверТекст;
ГруппаПричиныИРешения = Элементы.ВозможныеПричиныИРешенияСервер;
Иначе
ЭлементОшибка = Элементы.ОшибкаКлиент;
ЭлементТекстОшибки = Элементы.ТекстОшибкиКлиент;
ЭлементИнструкция = Элементы.ИнструкцияКлиент;
ЭлементПричиныТекст = Элементы.ПричиныКлиентТекст;
ЭлементРешенияТекст = Элементы.РешенияКлиентТекст;
@@ -81,12 +143,8 @@
ЭлементОшибка.Видимость = Не ПустаяСтрока(ТекстОшибки);
Если Не ПустаяСтрока(ТекстОшибки) Тогда
ОписаниеОшибки = ЭлектроннаяПодпись.ОшибкаПоКлассификатору(ТекстОшибки);
ЭтоИзвестнаяОшибка = ОписаниеОшибки <> Неопределено;
КлючНазначенияИспользования = КлючНазначенияИспользования
+ ?(ЭтоИзвестнаяОшибка, "ИзвестнаяОшибка", "НеизвестнаяОшибка")
+ ?(ОшибкаНаСервере, "Сервер", "Клиент");
ОшибкаПоКлассификатору = ЭлектроннаяПодписьСлужебный.ОшибкаПоКлассификатору(ТекстОшибки);
ЭтоИзвестнаяОшибка = ОшибкаПоКлассификатору <> Неопределено;
ГруппаПричиныИРешения.Видимость = ЭтоИзвестнаяОшибка;
Если ЭтоИзвестнаяОшибка Тогда
@@ -94,20 +152,36 @@
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
ЭлементИнструкция.Имя, "Заголовок", НСтр("ru = 'Подробнее'"));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
ЭлементПричиныТекст.Имя, "Заголовок", ОписаниеОшибки.Причина);
ЭлементПричиныТекст.Имя, "Заголовок", ОшибкаПоКлассификатору.Причина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
ЭлементРешенияТекст.Имя, "Заголовок", ОписаниеОшибки.Решение);
ЭлементРешенияТекст.Имя, "Заголовок", ОшибкаПоКлассификатору.Решение);
Если ОшибкаНаСервере Тогда
ЯкорьОшибкиСервер = ОписаниеОшибки.Ссылка;
ЯкорьОшибкиСервер = ОшибкаПоКлассификатору.Ссылка;
Иначе
ЯкорьОшибкиКлиент = ОписаниеОшибки.Ссылка;
ЯкорьОшибкиКлиент = ОшибкаПоКлассификатору.Ссылка;
КонецЕсли;
КонецЕсли;
ТребуемоеКоличествоСтрок = 0;
ШиринаПоля = Цел(?(Ширина < 20, 20, Ширина) * 1.4);
Для НомерСтроки = 1 По СтрЧислоСтрок(ТекстОшибки) Цикл
ТребуемоеКоличествоСтрок = ТребуемоеКоличествоСтрок + 1
+ Цел(СтрДлина(СтрПолучитьСтроку(ТекстОшибки, НомерСтроки)) / ШиринаПоля);
КонецЦикла;
Если ТребуемоеКоличествоСтрок > 5 И Не ДвеОшибки Тогда
ЭлементТекстОшибки.Высота = 4;
ИначеЕсли ТребуемоеКоличествоСтрок > 3 Тогда
ЭлементТекстОшибки.Высота = 3;
ИначеЕсли ТребуемоеКоличествоСтрок > 1 Тогда
ЭлементТекстОшибки.Высота = 2;
Иначе
ЭлементТекстОшибки.Высота = 1;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -357,7 +357,7 @@
+ " " + Выборка.Валюта;
КонецЕсли;
Иначе
ПредставлениеОбъекта = ПредставлениеОбъекта + " (" + МетаданныеОбъекта.ПредставлениеОбъекта + ")";
ПредставлениеОбъекта = ПредставлениеОбъекта + " (" + ОбщегоНазначения.ПредставлениеОбъекта(МетаданныеОбъекта) + ")";
КонецЕсли;
Возврат ПредставлениеОбъекта;
@@ -662,8 +662,12 @@
Выборка = ПолучитьВыборкуПоРеквизитамОбъекта(ЭлементСписка.Значение);
Если Выборка.Следующий() Тогда
НоваяСтрока = ДобавитьСтрокуВДерево(ДеревоРодитель, Выборка, ВыведенныеОбъекты);
Если Не ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, ЭлементСписка.Значение) Тогда
Если НоваяСтрока <> Неопределено
И Не ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, ЭлементСписка.Значение) Тогда
ВывестиРодительскиеОбъекты(ЭлементСписка.Значение, НоваяСтрока, ВыведенныеОбъекты);
КонецЕсли;
КонецЕсли;
@@ -884,7 +888,10 @@
Пока Выборка.Следующий() Цикл
НоваяСтрока = ДобавитьСтрокуВДерево(ДеревоРодитель, Выборка, ВыведенныеОбъекты, Истина);
Если Не ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, Выборка.Ссылка) Тогда
Если НоваяСтрока <> Неопределено
И Не ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, Выборка.Ссылка) Тогда
ВывестиПодчиненныеОбъекты(Выборка.Ссылка, НоваяСтрока, ВыведенныеОбъекты);
КонецЕсли;
@@ -896,7 +903,7 @@
Функция ДобавитьСтрокуВДерево(Родитель, Данные, ВыведенныеОбъекты, ЭтоПодчиненный = Ложь)
Если Не ВыводитьТекущийОбъект(Данные.Ссылка, ВыведенныеОбъекты, ЭтоПодчиненный) Тогда
Возврат Родитель;
Возврат Неопределено;
КонецЕсли;
НоваяСтрока = Родитель.ПолучитьЭлементы().Добавить();
@@ -303,6 +303,133 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ТехническаяИнформация</name>
<id>41</id>
<items xsi:type="form:FormField">
<name>АлгоритмПодписи</name>
<id>43</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>АлгоритмПодписи</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Алгоритм, которым с помощью закрытой части ключа подписана криптостойкая хеш-сумма данных, вычисленная с помощью алгоритма хеширования.</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>АлгоритмПодписиРасширеннаяПодсказка</name>
<id>45</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>АлгоритмПодписиКонтекстноеМеню</name>
<id>44</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">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>АлгоритмХеширования</name>
<id>46</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>АлгоритмХеширования</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Алгоритм, которым вычислена криптостойкая хеш-сумма данных и затем подписана закрытой частью ключа с помощью алгоритма подписи.</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>АлгоритмХешированияРасширеннаяПодсказка</name>
<id>48</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>АлгоритмХешированияКонтекстноеМеню</name>
<id>47</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">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Техническая информация</value>
</title>
<extendedTooltip>
<name>ТехническаяИнформацияРасширеннаяПодсказка</name>
<id>42</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Collapsible</behavior>
<collapsed>true</collapsed>
<controlRepresentation>Button</controlRepresentation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>auto</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>Инструкция</name>
<id>38</id>
@@ -615,6 +742,42 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>АлгоритмПодписи</name>
<title>
<key>ru</key>
<value>Алгоритм подписи</value>
</title>
<id>8</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>АлгоритмХеширования</name>
<title>
<key>ru</key>
<value>Алгоритм хеширования</value>
</title>
<id>13</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>СохранитьВФайл</name>
<title>
@@ -21,6 +21,16 @@
СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ОписаниеОшибки");
КонецЕсли;
Если Не ЭтоАдресВременногоХранилища(АдресПодписи) Тогда
Возврат;
КонецЕсли;
АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмСформированнойПодписи(
АдресПодписи, Истина);
АлгоритмХеширования = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмХеширования(
АдресПодписи, Истина);
КонецПроцедуры
#КонецОбласти
@@ -922,6 +922,8 @@
ДанныеНачальногоОбраза.Прочитать();
ДанныеНачальногоОбраза.Прочитать();
ОбменДаннымиСлужебный.ОтключитьОбновлениеКлючейДоступа(Истина, Ложь);
Попытка
УстановитьИспользованиеИтоговРегистров(Ложь);
@@ -937,7 +939,13 @@
КонецЦикла;
УстановитьИспользованиеИтоговРегистров(Истина);
ОбменДаннымиСлужебный.ОтключитьОбновлениеКлючейДоступа(Ложь, Ложь);
Исключение
ОбменДаннымиСлужебный.ОтключитьОбновлениеКлючейДоступа(Ложь, Ложь);
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(),
УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
@@ -4510,9 +4510,10 @@
ВариантыАдресов = РезультатЗапроса[8];
Дома = РезультатЗапроса[9];
ДополнительныеСведения = РезультатЗапроса[11];
Участки = РезультатЗапроса[12];
АнализАдресныхОбъектов(Результаты, Адреса, ДанныеДляПроверкиАдресов.ПроверяемыеУровни, ВариантыАдресов, ПроверятьУстареваниеАдресов);
АнализДомовИДополнительныхСведений(Результаты, Адреса, Дома, ДополнительныеСведения);
АнализДомовИДополнительныхСведений(Результаты, Адреса, Дома, Участки, ДополнительныеСведения);
Возврат Результаты;
@@ -5006,10 +5007,26 @@
|ИЗ
| АдресныйОбъект КАК КодыАдресногоОбъекта
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеАдресныеСведения КАК ДополнительныеСведения
| ПО (ДополнительныеСведения.Идентификатор = КодыАдресногоОбъекта.ДополнительныеАдресныеСведения)";
| ПО (ДополнительныеСведения.Идентификатор = КодыАдресногоОбъекта.ДополнительныеАдресныеСведения)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1000
| ЗемельныеУчастки.АдресныйОбъект КАК АдресныйОбъект,
| ЗемельныеУчастки.КодСубъектаРФ КАК КодСубъектаРФ,
| ЗемельныеУчастки.ДополнительныеАдресныеСведения КАК ДополнительныеАдресныеСведения,
| ЗемельныеУчастки.Участки КАК Участки,
| ДомаАдресныхОбъектов.Идентификатор КАК Идентификатор,
| ДомаАдресныхОбъектов.Ключ КАК Ключ
|ИЗ
| АдресныеОбъекты КАК ДомаАдресныхОбъектов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗемельныеУчастки КАК ЗемельныеУчастки
| ПО (ЗемельныеУчастки.АдресныйОбъект = ДомаАдресныхОбъектов.Идентификатор)
|ГДЕ
| НЕ ЗемельныеУчастки.Участки ЕСТЬ NULL";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаУстановкиИдентификаторовАдресов()
@@ -5444,11 +5461,12 @@
КонецПроцедуры
Процедура АнализДомовИДополнительныхСведений(Результаты, Знач Адреса, Знач Дома, Знач ДополнительныеСведения)
Процедура АнализДомовИДополнительныхСведений(Результаты, Знач Адреса, Знач Дома, Знач Участки, Знач ДополнительныеСведения)
ТаблицаДомов = Дома.Выгрузить();
ТаблицаДополнительныеСведения = ДополнительныеСведения.Выгрузить();
Для Каждого КлючЗначение Из Адреса Цикл
ТаблицаУчастков = Участки.Выгрузить();
Для Каждого КлючЗначение Из Адреса Цикл
Результат = Результаты[КлючЗначение.Ключ];
Если Не Результат.АдресКорректный Тогда
@@ -5462,6 +5480,11 @@
Адрес = КлючЗначение.Значение;
ОшибкиПроверки = Результат.Ошибки;
Если ЗначениеЗаполнено(Адрес.stead) Тогда
ПроверитьУчастки(Адрес.stead, КлючЗначение.Ключ, ОшибкиПроверки, Результат, ТаблицаУчастков);
Продолжить;
КонецЕсли;
// Проверяем дома
НомерДомаАдрес = Адрес.HouseNumber;
ТипДомаАдрес = ?(ЗначениеЗаполнено(НомерДомаАдрес), Адрес.HouseType, "");
@@ -5654,6 +5677,45 @@
КонецПроцедуры
Процедура ПроверитьУчастки(Знач Участок, Знач ИндексАдреса, Знач ОшибкиПроверки, Знач Результат, Знач ТаблицаУчастков)
// Проверка участка
НайденныеУчастки = ТаблицаУчастков.НайтиСтроки(Новый Структура("Ключ", ИндексАдреса));
Для каждого ИнформацияОУчастках Из НайденныеУчастки Цикл
Если ПустаяСтрока(ИнформацияОУчастках.Участки) Тогда
Продолжить;
КонецЕсли;
СтрокаСоСпискомУчастков = ИнформацияОУчастках.Участки.Получить();
Если ЗначениеЗаполнено(СтрокаСоСпискомУчастков) Тогда
ТипЧисло = Новый ОписаниеТипов("Число");
НаборУчастков = СтрРазделить(СтрокаСоСпискомУчастков, Символы.Таб, Ложь);
Для каждого СтрокаУчасток Из НаборУчастков Цикл
НомерУчастка = Сред(СтрокаУчасток, 25);
Если СтрСравнить(НомерУчастка, Участок) = 0 Тогда
Результат.АдресКорректный = Истина;
Результат.АдресПроверен = Истина;
Возврат;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ДобавитьОшибкуПроверкиАдресаПоКлассификатору(ОшибкиПроверки, "Дом",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Земельный участок %1 отсутствует в ФИАС'"),
Участок));
Результат.АдресКорректный = Ложь;
Результат.АдресПроверен = Истина;
КонецПроцедуры
#Область КонвертацияАдресаБазыВАдресВебСервиса
Функция АдресДляПередачиВСервис(Адрес)
@@ -6647,7 +6709,14 @@
Если ЭтоУстановкаИдентификаторов Или РезультатПроверки.АдресУстарел Тогда
Если ЭлементПроверки.Свойство("value") И ЗначениеЗаполнено(ЭлементПроверки.value) Тогда
РезультатПроверки.Варианты.Добавить(ЭлементПроверки.value);
Вариант = ОбщегоНазначения.СкопироватьРекурсивно(ЭлементПроверки.value);
ШаблонКонтактнойИнформации = ОписаниеНовойКонтактнойИнформации();
Для каждого СвойствоСтруктуры Из Вариант Цикл
Если ШаблонКонтактнойИнформации.Свойство(СвойствоСтруктуры.Ключ) И СвойствоСтруктуры.Значение = Неопределено Тогда
Вариант[СвойствоСтруктуры.Ключ] = ШаблонКонтактнойИнформации[СвойствоСтруктуры.Ключ];
КонецЕсли;
КонецЦикла;
РезультатПроверки.Варианты.Добавить(Вариант);
КонецЕсли;
КонецЕсли;
@@ -3051,7 +3051,7 @@
Если ОбщегоНазначения.ЭтоДокумент(Объект.Метаданные()) И Объект.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
Если Объект.Проведен И Не ОтменаПроведения Тогда
РежимЗаписи = РежимЗаписиДокумента.Проведение;
Иначе
ИначеЕсли Не Объект.Ссылка.Пустая() Тогда
РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения;
КонецЕсли;
ИдентификаторОшибки = "ОшибкаПроведения";
@@ -657,6 +657,8 @@
Если НЕ Письмо.УдалятьПослеОтправки Тогда
Попытка
Письмо.Прочитать();
Письмо.ИдентификаторСообщения = ИдентификаторПисьма;
Письмо.СтатусПисьма = Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Отправлено;
Письмо.ДатаОтправления = ТекущаяДатаСеанса();
@@ -1691,6 +1691,10 @@
КонецПроцедуры
Функция ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Очередь) Экспорт
Возврат ОбновлениеИнформационнойБазы.ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Очередь, "Справочник.ДополнительныеОтчетыИОбработки");
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -476,10 +476,14 @@
Возврат;
КонецЕсли;
НаборЧастейПутиОбъектаМетаданных = СтрРазделить(Форма.ИмяФормы, ".");
ИмяОбъектаМетаданных = НаборЧастейПутиОбъектаМетаданных[0] + "." + НаборЧастейПутиОбъектаМетаданных[1];
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяОбъектаМетаданных);
Если ЗначениеЗаполнено(Список.ОсновнаяТаблица) Тогда
ИмяОбъектаМетаданных = Список.ОсновнаяТаблица;
Иначе
НаборЧастейПутиОбъектаМетаданных = СтрРазделить(Форма.ИмяФормы, ".");
ИмяОбъектаМетаданных = НаборЧастейПутиОбъектаМетаданных[0] + "." + НаборЧастейПутиОбъектаМетаданных[1];
КонецЕсли;
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяОбъектаМетаданных);
ЛокализуемыеРеквизиты = ЛокализуемыеРеквизитыОбъектаДляТекущегоЯзыка(ОбъектМетаданных);
МодельЗапроса = Новый СхемаЗапроса;
@@ -943,12 +947,13 @@
СписокРеквизитовОбъекта.Вставить(Реквизит.Имя, Реквизит);
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 0
ТекстЗапроса = "ВЫБРАТЬ ПЕРВЫЕ 0
| *
|ИЗ
| " + ОбъектМетаданных.ПолноеИмя();
| &ОбъектМетаданныхПолноеИмя КАК ДанныеИсточника";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОбъектМетаданныхПолноеИмя", ОбъектМетаданных.ПолноеИмя());
Запрос = Новый Запрос(ТекстЗапроса);
РезультатЗапроса = Запрос.Выполнить();
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.3.229";
Описание.Версия = "3.1.3.250";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -164,22 +164,26 @@
ИначеЕсли ЗначениеЗаполнено(Ячейка.Текст) Тогда
ОписаниеТипаЧисло = Новый ОписаниеТипов("Число");
ТекстЯчейки = СтрЗаменить(Ячейка.Текст, " ", "");
Если СтрНачинаетсяС(ТекстЯчейки, "(")
И СтрЗаканчиваетсяНа(ТекстЯчейки, ")") Тогда
ТекстЯчейки = СтрЗаменить(ТекстЯчейки, "(", "");
ТекстЯчейки = СтрЗаменить(ТекстЯчейки, ")", "");
Число = ОписаниеТипаЧисло.ПривестиЗначение(ТекстЯчейки);
Если Число > 0 Тогда
Число = -Число;
КонецЕсли;
Если ТекстЯчейкиВидаЭкспоненциальнойЗаписи(ТекстЯчейки) Тогда
Число = 0;
Иначе
Число = ОписаниеТипаЧисло.ПривестиЗначение(ТекстЯчейки);
ОписаниеТипаЧисло = Новый ОписаниеТипов("Число");
Если СтрНачинаетсяС(ТекстЯчейки, "(")
И СтрЗаканчиваетсяНа(ТекстЯчейки, ")") Тогда
ТекстЯчейки = СтрЗаменить(ТекстЯчейки, "(", "");
ТекстЯчейки = СтрЗаменить(ТекстЯчейки, ")", "");
Число = ОписаниеТипаЧисло.ПривестиЗначение(ТекстЯчейки);
Если Число > 0 Тогда
Число = -Число;
КонецЕсли;
Иначе
Число = ОписаниеТипаЧисло.ПривестиЗначение(ТекстЯчейки);
КонецЕсли;
КонецЕсли;
Иначе
@@ -677,6 +681,42 @@
КонецФункции
// Возвращает признак соответствия текста ячейки формату экспоненциальной записи.
// Это позволяет принять решение, рассчитывать ли данное значение методом ПривестиЗначение
// или отказаться от расчета, поскольку приведение к числу может потребовать значительных
// вычислительных ресурсов процессора.
//
// Параметры:
// ТекстЯчейки - Строка - значение выделенной ячейки.
//
// Возвращаемое значение:
// Булево - если Истина, то текст имеет вид экспоненциальной записи.
//
Функция ТекстЯчейкиВидаЭкспоненциальнойЗаписи(Знач ТекстЯчейки)
ЧислоВхождений = 0;
ТекстЯчейки = СтрЗаменить(ВРег(ТекстЯчейки), Символы.НПП, "");
// Замена символов разделителей дробной части.
ТекстЯчейки = СтрЗаменить(ТекстЯчейки, Символ(44), ""); // Запятая ','
ТекстЯчейки = СтрЗаменить(ТекстЯчейки, Символ(46), ""); // Точка '.'
КодыСимволовЭкспоненты = Новый Массив;
КодыСимволовЭкспоненты.Добавить(1045); // Кириллическая 'E'
КодыСимволовЭкспоненты.Добавить(69); // Латинская 'E'
Для Каждого Код Из КодыСимволовЭкспоненты Цикл
СимволЭкспоненты = Символ(Код);
ЧислоВхождений = ЧислоВхождений + СтрЧислоВхождений(ТекстЯчейки, СимволЭкспоненты);
ТекстЯчейки = СтрЗаменить(ТекстЯчейки, СимволЭкспоненты, "");
КонецЦикла;
Возврат ЧислоВхождений = 1 И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(ТекстЯчейки);
КонецФункции
#КонецОбласти
#КонецОбласти
@@ -87,7 +87,7 @@
//
// Параметры:
// ПрисоединенныйФайл - ОпределяемыйТип.ПрисоединенныйФайл - ссылка на элемент справочника с файлом.
// ДополнительныеПараметры - см. работаСФайламиКлиентСервер.ПараметрыДанныхФайла.
// ДополнительныеПараметры - см. РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла.
// УдалитьПолучатьСсылкуНаДвоичныеДанные - Булево - устарел, следует использовать ДополнительныеПараметры.
// УдалитьДляРедактирования - Булево - устарел, следует использовать ДополнительныеПараметры.
//
@@ -1857,11 +1857,15 @@
Возврат;
КонецЕсли;
Если ТипЗнч(Источник) = Тип("СправочникОбъект.ВерсииФайлов") Тогда
Если Источник.ДополнительныеСвойства.Свойство("КонвертацияФайлов") Тогда
Возврат;
КонецЕсли;
Если Источник.ДополнительныеСвойства.Свойство("КонвертацияФайлов") Тогда
Если ТипЗнч(Источник) = Тип("СправочникОбъект.ВерсииФайлов") Тогда
Если Не Источник.ЭтоНовый() И Не Пользователи.ЭтоПолноправныйПользователь() Тогда
ПрежниеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Источник.Ссылка, "Автор");
ПроверитьИзменениеАвтораФайла(ПрежниеЗначения, Источник);
КонецЕсли;
Возврат;
КонецЕсли;
@@ -1874,9 +1878,14 @@
КонецЕсли;
Иначе
ИзмененаПометкаУдаления =
Источник.ПометкаУдаления <> ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Источник.Ссылка, "ПометкаУдаления");
Если Пользователи.ЭтоПолноправныйПользователь() Тогда
ПрежниеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Источник.Ссылка, "ПометкаУдаления");
Иначе
ПрежниеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Источник.Ссылка, "ПометкаУдаления, Автор, Редактирует, Изменил");
ПроверитьИзменениеАвтораФайла(ПрежниеЗначения, Источник);
КонецЕсли;
ИзмененаПометкаУдаления = Источник.ПометкаУдаления <> ПрежниеЗначения.ПометкаУдаления;
Если ИзмененаПометкаУдаления Тогда
// Проверка права "Пометка на удаление".
Если НЕ РаботаСФайламиСлужебный.ЕстьПраво("ПометкаУдаленияФайлов", Источник.ВладелецФайла) Тогда
@@ -1889,17 +1898,13 @@
Если ИзмененаПометкаУдаления И ЗначениеЗаполнено(Источник.Редактирует) Тогда
Если Источник.Редактирует = Пользователи.АвторизованныйПользователь() Тогда
ТекстОшибки = НСтр("ru = 'Действие недоступно, так как файл ""%1"" занят для редактирования.'");
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, Источник.Наименование);
Иначе
ТекстОшибки = НСтр("ru = 'Действие недоступно, так как файл ""%1"" занят для редактирования
|пользователем %2.'");
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки,
Источник.Наименование,
Строка(Источник.Редактирует));
Источник.Наименование, Строка(Источник.Редактирует));
КонецЕсли;
КонецЕсли;
@@ -1965,20 +1970,12 @@
Если Не ЗначениеЗаполнено(Источник.ВладелецФайла) Тогда
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не заполнен владелец в файле
|""%1"".'"),
Источник.Наименование);
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не заполнен владелец в файле
|""%1"".'"), Источник.Наименование);
Если ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() Тогда
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Файлы.Ошибка записи файла при обновлении ИБ'",
ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,
,
Источник.Ссылка,
ОписаниеОшибки);
ЗаписьЖурналаРегистрации(НСтр("ru = 'Файлы.Ошибка записи файла при обновлении ИБ'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,, Источник.Ссылка, ОписаниеОшибки);
Иначе
ВызватьИсключение ОписаниеОшибки;
КонецЕсли;
@@ -2108,6 +2105,41 @@
КонецПроцедуры
Процедура ПроверитьИзменениеАвтораФайла(Знач ПрежниеЗначения, Знач Источник)
ИзмененАвтор = Источник.Автор <> ПрежниеЗначения.Автор;
Если ИзмененАвтор Тогда
ВызватьИсключение НСтр("ru = 'Недостаточно прав для изменения автора файла.'");
КонецЕсли;
Если ТипЗнч(Источник) = Тип("СправочникОбъект.ВерсииФайлов") Тогда
Возврат;
КонецЕсли;
ТекущийПользователь = Пользователи.АвторизованныйПользователь();
Если Источник.Редактирует <> ПрежниеЗначения.Редактирует
И (НедопустимыйАвтор(Источник.Редактирует, ТекущийПользователь)
Или НедопустимыйАвтор(ПрежниеЗначения.Редактирует, ТекущийПользователь)) Тогда
ВызватьИсключение НСтр("ru = 'Недостаточно прав для редактирования файла.'");
КонецЕсли;
Если Источник.Изменил <> ПрежниеЗначения.Изменил
И (НедопустимыйАвтор(Источник.Изменил, ТекущийПользователь)
Или НедопустимыйАвтор(ПрежниеЗначения.Изменил, ТекущийПользователь)) Тогда
ВызватьИсключение НСтр("ru = 'Недостаточно прав для редактирования файла.'");
КонецЕсли;
КонецПроцедуры
Функция НедопустимыйАвтор(АвторСсылка, ТекущийПользователь)
// Можно изменять только с пустого значения на себя и наоборот.
Возврат АвторСсылка <> Неопределено И Не АвторСсылка.Пустая()
И ТипЗнч(АвторСсылка) <> Тип("СправочникСсылка.УчетныеЗаписиСинхронизацииФайлов")
И АвторСсылка <> ТекущийПользователь;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Управление присоединенными файлами.
@@ -8288,7 +8288,11 @@
Источник.ДополнительныеСвойства.ЗаписьПодписанногоОбъекта);
КонецЕсли;
// Проверка прав доступа не требуется.
УстановитьПривилегированныйРежим(Истина);
ФайлОбъект.Записать();
УстановитьПривилегированныйРежим(Ложь);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
@@ -5417,11 +5417,11 @@
//
Процедура ПолучитьССервераИЗарегистрироватьВЛокальномКэшеФайловПродолжение(ПараметрыВыполнения)
#Если Не ВебКлиент Тогда
Если ПараметрыВыполнения.ВРабочемКаталогеВладельца = Ложь Тогда
ОсвободитьМестоВРабочемКаталоге(Неопределено, ПараметрыВыполнения.ДанныеФайла);
КонецЕсли;
#КонецЕсли
#Если Не ВебКлиент Тогда
Если ПараметрыВыполнения.ВРабочемКаталогеВладельца = Ложь Тогда
ОсвободитьМестоВРабочемКаталоге(Неопределено, ПараметрыВыполнения.ДанныеФайла);
КонецЕсли;
#КонецЕсли
// Запись Файл в каталог
ПараметрыВыполнения.ИмяФайла = ОбщегоНазначенияКлиентСервер.ПолучитьИмяСРасширением(
@@ -5518,8 +5518,8 @@
Описание = Новый ОписаниеПередаваемогоФайла(ПараметрыВыполнения.ПолноеИмяФайла, АдресФайла);
ПередаваемыеФайлы.Добавить(Описание);
#Если ВебКлиент Тогда
Если ПараметрыВыполнения.ДополнительныеПараметры <> Неопределено И ПараметрыВыполнения.ДополнительныеПараметры.Свойство("ОткрытьФайл") Тогда
#Если ВебКлиент Тогда
Если ПараметрыВыполнения.ДополнительныеПараметры <> Неопределено И ПараметрыВыполнения.ДополнительныеПараметры.Свойство("ОткрытьФайл") Тогда
МассивОпераций = Новый Массив;
@@ -5543,8 +5543,8 @@
Возврат;
КонецЕсли;
КонецЕсли;
#КонецЕсли
КонецЕсли;
#КонецЕсли
ПолученныеФайлы = Новый Массив;
Если Не ПолучитьФайлы(ПередаваемыеФайлы, ПолученныеФайлы , , Ложь) Тогда
@@ -652,21 +652,19 @@
ПроверитьПараметрыСклонения(ПараметрыСклонения, ИмяПроцедурыИлиФункции);
Если Не ПараметрыСклонения.ЭтоФИО Тогда
Возврат;
ПараметрыСтроки = Новый Массив;
ПараметрыСтроки.Добавить("Л=ru_RU");
Если ПараметрыСклонения.ЭтоФИО Тогда
Если ПараметрыСклонения.Пол = 1 Тогда
ПараметрыСтроки.Добавить("ПЛ=Мужской");
КонецЕсли;
Если ПараметрыСклонения.Пол = 2 Тогда
ПараметрыСтроки.Добавить("ПЛ=Женский");
КонецЕсли;
КонецЕсли;
Если ПараметрыСклонения.Пол = Неопределено Тогда
Возврат;
КонецЕсли;
Если ПараметрыСклонения.Пол = 1 Тогда
ОписаниеСтроки = "ПЛ=Мужской";
КонецЕсли;
Если ПараметрыСклонения.Пол = 2 Тогда
ОписаниеСтроки = "ПЛ=Женский";
КонецЕсли;
ОписаниеСтроки = СтрСоединить(ПараметрыСтроки, ";");
КонецПроцедуры
@@ -769,6 +767,11 @@
ОписаниеСлова.ВариантРегистра = ВидРегистраСлова(Слово);
ПредставленияСлов.Вставить(ЧастиФИО.ВГраница(), ОписаниеСлова);
КонецЕсли;
Если ОписаниеСлова = Неопределено Тогда
ЧастиФИО.Добавить("");
ОписаниеСлова = ПредставлениеСлова();
ПредставленияСлов.Вставить(ЧастиФИО.ВГраница(), ОписаниеСлова);
КонецЕсли;
ОписаниеСлова.Разделители = ОписаниеСлова.Разделители + Символ(КодСимвола);
НачалоСлова = Позиция + 1;
КонецЕсли;
@@ -789,7 +792,7 @@
Процедура ВосстановитьФИОПослеСклонения(ФИО, ПредставленияСлов)
ЧастиФИО = СтрРазделить(ФИО, " ");
Индекс= 0;
Индекс = 0;
Пока Индекс < ЧастиФИО.Количество() Цикл
ОписаниеСлова = ПредставленияСлов[Индекс];
Если ОписаниеСлова <> Неопределено Тогда
@@ -275,14 +275,20 @@
Для Каждого Элемент Из ОбъектыСКомандамиСозданияНаОсновании() Цикл
ИменаАвтогенерируемыхКоманд.Вставить("Форма" + СтрЗаменить(Элемент.Ключ, ".", "") + "СоздатьНаОсновании", Истина);
КонецЦикла;
ПеремещаемыеЭлементы = Новый Массив;
Для Каждого Элемент Из ПодменюСоздатьНаОсновании.ПодчиненныеЭлементы Цикл
Если ИменаАвтогенерируемыхКоманд[Элемент.Имя] = Неопределено Тогда
Форма.Элементы.Переместить(Элемент, ДинамическоеПодменюСозданияНаОсновании.Группы.Обычное);
ДинамическоеПодменюСозданияНаОсновании.ВыведеноКоманд = ДинамическоеПодменюСозданияНаОсновании.ВыведеноКоманд + 1;
ПеремещаемыеЭлементы.Добавить(Элемент);
КонецЕсли;
КонецЦикла;
Для Каждого Элемент Из ПеремещаемыеЭлементы Цикл
Форма.Элементы.Переместить(Элемент, ДинамическоеПодменюСозданияНаОсновании.Группы.Обычное);
ДинамическоеПодменюСозданияНаОсновании.ВыведеноКоманд = ДинамическоеПодменюСозданияНаОсновании.ВыведеноКоманд + 1;
КонецЦикла;
КонецПроцедуры
Функция ОбъектыПодключеныКПодсистеме(Типы) Экспорт
@@ -1613,7 +1613,8 @@
КонецЕсли;
Если ОграничиватьДоступНаУровнеЗаписейУниверсально()
И ОбщегоНазначения.ЭтоПодчиненныйУзелРИБСФильтром() Тогда
И (ОбщегоНазначения.ЭтоПодчиненныйУзелРИБСФильтром()
Или ОбщегоНазначения.ЭтоАвтономноеРабочееМесто()) Тогда
ПараметрыПланирования = ПараметрыПланированияОбновленияДоступа();
ПараметрыПланирования.Описание = "ПриНастройкеПодчиненногоУзлаРИБ";
@@ -3602,16 +3602,15 @@
Иначе
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Если ИнформацияОВидеКИ.ВидРедактирования = "Диалог" Тогда
Если ИнформацияОВидеКИ.ВидРедактирования = "Диалог" И ИнформацияОВидеКИ.Тип <> Перечисления.ТипыКонтактнойИнформации.ВебСтраница Тогда
Элемент.РедактированиеТекста = Ложь;
КонецЕсли;
Элемент.УстановитьДействие("Очистка", "Подключаемый_КонтактнаяИнформацияОчистка");
Элемент.УстановитьДействие("Очистка", "Подключаемый_КонтактнаяИнформацияОчистка");
Если ИнформацияОВидеКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
Элемент.УстановитьДействие("Автоподбор", "Подключаемый_КонтактнаяИнформацияАвтоподбор");
Элемент.УстановитьДействие("ОбработкаВыбора", "Подключаемый_КонтактнаяИнформацияОбработкаВыбора");
КонецЕсли;
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
Элемент.МногострочныйРежим = Истина;
@@ -286,6 +286,10 @@
СоответствиеИменПсевдонимам.Вставить("УправлениеКонтактнойИнформациейСлужебный.ИсправлениеУстаревшихАдресов");
КонецПроцедуры
Функция ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Очередь) Экспорт
Возврат ОбновлениеИнформационнойБазы.ЕстьЗаблокированныеПредыдущимиОчередямиДанные(Очередь, "Справочник.ВидыКонтактнойИнформации");
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -1595,12 +1595,6 @@
////////////////////////////////////////////////////////////////////////////////
// Шаблоны сообщений.
// Возвращает допустимые для сохранения форматы печатных форм для шаблонов сообщений.
//
Функция ФорматыСохраненияТабличногоДокумента() Экспорт
Возврат НастройкиФорматовСохраненияТабличногоДокумента();
КонецФункции
Функция КомандыПечатиОбъектаДоступныеДляВложений(ОбъектМетаданных) Экспорт
Если ИсточникиКомандПечати().Найти(ОбъектМетаданных) <> Неопределено Тогда
@@ -2991,6 +2985,8 @@
Если ТипЗнч(ТипФайла) = Тип("Строка") Тогда
ТипФайла = ТипФайлаТабличногоДокумента[ТипФайла];
КонецЕсли;
ТипФайла = ИспользуемыйТипФайлаТабличногоДокумента(ТипФайла);
НастройкиФормата = ТаблицаФорматов.НайтиСтроки(Новый Структура("ТипФайлаТабличногоДокумента", ТипФайла))[0];
РасширениеФайла = НастройкиФормата.Расширение;
@@ -3012,6 +3008,32 @@
КонецПроцедуры
Функция ИспользуемыйТипФайлаТабличногоДокумента(ТипФайла)
Если ТипФайла = ТипФайлаТабличногоДокумента.PDF
Или Строка(ТипФайла) = "PDF_A_1"
Или Строка(ТипФайла) = "PDF_A_2"
Или Строка(ТипФайла) = "PDF_A_3" Тогда
Возврат СтандартныеПодсистемыСервер.ТипФайлаТабличногоДокументаPDF();
КонецЕсли;
ЗаменяемыеТипы = Новый Соответствие;
ЗаменяемыеТипы.Вставить(ТипФайлаТабличногоДокумента.HTML, ТипФайлаТабличногоДокумента.HTML5);
ЗаменяемыеТипы.Вставить(ТипФайлаТабличногоДокумента.HTML3, ТипФайлаТабличногоДокумента.HTML5);
ЗаменяемыеТипы.Вставить(ТипФайлаТабличногоДокумента.HTML4, ТипФайлаТабличногоДокумента.HTML5);
ЗаменяемыеТипы.Вставить(ТипФайлаТабличногоДокумента.MXL7, ТипФайлаТабличногоДокумента.MXL);
ЗаменяемыеТипы.Вставить(ТипФайлаТабличногоДокумента.XLS95, ТипФайлаТабличногоДокумента.XLS);
ЗаменяемыеТипы.Вставить(ТипФайлаТабличногоДокумента.XLS97, ТипФайлаТабличногоДокумента.XLS);
Результат = ЗаменяемыеТипы[ТипФайла];
Если Результат = Неопределено Тогда
Результат = ТипФайла;
КонецЕсли;
Возврат Результат;
КонецФункции
Функция МакетыПечатныхФорм() Экспорт
Результат = Новый Соответствие;
@@ -319,10 +319,12 @@
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
Обработчик.Комментарий = НСтр("ru = 'Обновление шаблонов сообщений.
|До завершения обработки формирование писем и сообщений SMS на основании шаблонов будет недоступно.'");
Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика();
Приоритет = Обработчик.ПриоритетыВыполнения.Добавить();
Приоритет.Процедура = "Справочники.ВидыКонтактнойИнформации.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Приоритет.Порядок = "После";
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика();
Приоритет = Обработчик.ПриоритетыВыполнения.Добавить();
Приоритет.Процедура = "Справочники.ВидыКонтактнойИнформации.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Приоритет.Порядок = "После";
КонецЕсли;
КонецПроцедуры
@@ -2122,21 +2124,31 @@
// * СписокРеквизитов
// * СписокСодержитДанные
//
Процедура ДобавитьРеквизитПоМетаданнымОбъекта(Реквизиты, Реквизит, Префикс, СведенияОСпискеРеквизитов, СведенияОИсключаемыхРеквизитах);
Процедура ДобавитьРеквизитПоМетаданнымОбъекта(Реквизиты, Реквизит, Префикс, СведенияОСпискеРеквизитов, СведенияОИсключаемыхРеквизитах)
Если ТипЗнч(Реквизит) = Тип("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения") Тогда
ЗначенияСвойство = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Реквизит, "ИдентификаторДляФормул, ТипЗначения, ФорматСвойства");
ИмяРеквизита = "~Свойство." + ЗначенияСвойство.ИдентификаторДляФормул;
Представление = Строка(Реквизит);
Тип = ЗначенияСвойство.ТипЗначения;
Формат = ЗначенияСвойство.ФорматСвойства;
ИначеЕсли ТипЗнч(Реквизит) = Тип("СправочникСсылка.ВидыКонтактнойИнформации") Тогда
ИдентификаторДляФормул = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Реквизит, "ИдентификаторДляФормул");
ИмяРеквизита = "~КИ." + ИдентификаторДляФормул;
Представление = Строка(Реквизит);
Тип = Новый ОписаниеТипов("Строка");
Формат = "";
Иначе
ИмяРеквизита = Неопределено;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
Если ТипЗнч(Реквизит) = Тип("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения") Тогда
ЗначенияСвойство = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Реквизит, "ИдентификаторДляФормул, ТипЗначения, ФорматСвойства");
ИмяРеквизита = "~Свойство." + ЗначенияСвойство.ИдентификаторДляФормул;
Представление = Строка(Реквизит);
Тип = ЗначенияСвойство.ТипЗначения;
Формат = ЗначенияСвойство.ФорматСвойства;
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
Если ТипЗнч(Реквизит) = Тип("СправочникСсылка.ВидыКонтактнойИнформации") Тогда
ИдентификаторДляФормул = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Реквизит, "ИдентификаторДляФормул");
ИмяРеквизита = "~КИ." + ИдентификаторДляФормул;
Представление = Строка(Реквизит);
Тип = Новый ОписаниеТипов("Строка");
Формат = "";
КонецЕсли;
КонецЕсли;
Если ИмяРеквизита = Неопределено Тогда
ИмяРеквизита = Реквизит.Имя;
Представление = Реквизит.Представление();
Тип = Реквизит.Тип;
@@ -1530,14 +1530,20 @@
// Возвращает общие настройки всех пользователей для работы с электронной подписью.
//
// Возвращаемое значение:
// Структура - общие настройки подсистемы для работы с электронной подписью:
// ФиксированнаяСтруктура - общие настройки подсистемы для работы с электронной подписью:
// * ИспользоватьЭлектронныеПодписи - Булево - если Истина, то электронный подписи используются.
// * ИспользоватьШифрование - Булево - если Истина, то шифрование используются.
// * ПроверятьЭлектронныеПодписиНаСервере - Булево - если Истина, то электронные подписи и
// сертификаты проверяются на сервере.
// * СоздаватьЭлектронныеПодписиНаСервере - Булево - если Истина, то электронные подписи создаются
// сначала на сервере, а в случае неудачи на клиенте.
// * ОписанияПрограмм - Массив из см. ОписаниеПрограмм - сведения о поддерживаемых программах криптографии.
//
// * ОписанияПрограмм - ФиксированныйМассив из см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы -
// сведения о поддерживаемых программах криптографии.
//
// * ОписанияПрограммПоСсылке - ФиксированноеСоответствие:
// ** Ключ - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
// ** Значение - см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
//
// См. также:
// ОбщаяФорма.НастройкиЭлектроннойПодписиИШифрования - место определения данных параметров и
@@ -229,9 +229,9 @@
Обработчик.РежимВыполнения = "Монопольно";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.0.1.69";
Обработчик.Версия = "3.1.3.241";
Обработчик.Комментарий =
НСтр("ru = 'Заполнение справочника Программы электронной подписи и шифрования.'");
НСтр("ru = 'Обновление справочника Программы электронной подписи и шифрования.'");
Обработчик.Идентификатор = Новый УникальныйИдентификатор("8e76369a-e16c-415d-bfeb-95e7e5f07a00");
Обработчик.Процедура = "Справочники.ПрограммыЭлектроннойПодписиИШифрования.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.РежимВыполнения = "Отложенно";
@@ -432,7 +432,8 @@
ИмяКомпьютера = ИмяКомпьютера();
ОписаниеОшибок = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовоеОписаниеОшибок(ИмяКомпьютера);
Менеджер = НовыйМенеджерКриптографии(Программа, ОписаниеОшибок.Ошибки, ИмяКомпьютера, АлгоритмПодписи);
Менеджер = НовыйМенеджерКриптографии(Программа,
ОписаниеОшибок.Ошибки, АлгоритмПодписи, Операция);
Если Менеджер <> Неопределено Тогда
Возврат Менеджер;
@@ -1063,7 +1064,12 @@
// Возвращаемое значение:
// Булево
//
Функция ТребуетсяПутьКПрограмме() Экспорт
Функция ТребуетсяПутьКПрограмме(НаКлиенте = Ложь) Экспорт
Если НаКлиенте Тогда
Возврат ОбщегоНазначения.ЭтоLinuxКлиент()
Или ОбщегоНазначения.ЭтоMacOSКлиент();
КонецЕсли;
СистемнаяИнформация = Новый СистемнаяИнформация;
@@ -1123,7 +1129,7 @@
КонецЕсли;
ЗаполнитьСуществующиеСертификатыПользователя(Форма.СертификатСписокВыбора,
Параметры.ОтпечаткиСертификатовНаКлиенте, Форма.ОтборСертификатов, Форма.ОтборОтпечатков);
Параметры.ОтпечаткиСертификатовНаКлиенте, Форма.ОтборСертификатов, Форма.ОтборОтпечатков, Расшифровка);
Сертификат = Неопределено;
@@ -1176,26 +1182,10 @@
ЗаполнитьДополнительныеСвойстваСертификата(Форма);
АлгоритмПодписи = "";
Если ЗначениеЗаполнено(Форма.Сертификат) Тогда
ХранилищеДанныхСертификата = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Форма.Сертификат, "ДанныеСертификата");
Если ЗначениеЗаполнено(ХранилищеДанныхСертификата) Тогда
ДанныеСертификата = ХранилищеДанныхСертификата.Получить();
Если ЗначениеЗаполнено(ДанныеСертификата) Тогда
АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(ДанныеСертификата);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Форма.МенеджерКриптографииНаСервереОписаниеОшибки = Новый Структура;
Если ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере() Тогда
ПараметрыСоздания = ПараметрыСозданияМенеджераКриптографии();
ПараметрыСоздания.АлгоритмПодписи = АлгоритмПодписи;
ПараметрыСоздания.ОписаниеОшибки = Новый Структура;
МенеджерКриптографии("ПолучениеСертификатов", ПараметрыСоздания);
@@ -1224,7 +1214,7 @@
КонецЕсли;
ЗаполнитьСуществующиеСертификатыПользователя(Форма.СертификатСписокВыбора,
ОтпечаткиСертификатовНаКлиенте, Форма.ОтборСертификатов, Форма.ОтборОтпечатков);
ОтпечаткиСертификатовНаКлиенте, Форма.ОтборСертификатов, Форма.ОтборОтпечатков, Расшифровка);
ЗаполнитьДополнительныеСвойстваСертификата(Форма);
@@ -1497,6 +1487,36 @@
КонецПроцедуры
// Параметры:
// Форма - ФормаКлиентскогоПриложения
// Заголовок - Строка
//
Процедура УстановитьЗаголовокОшибки(Форма, Заголовок) Экспорт
Форма.Заголовок = Заголовок;
ШиринаЗаголовка = СтрДлина(Форма.Заголовок);
Если ШиринаЗаголовка > 80 Тогда
ШиринаЗаголовка = 80;
КонецЕсли;
Если ШиринаЗаголовка > Форма.Ширина Тогда
Форма.Ширина = ШиринаЗаголовка;
КонецЕсли;
КонецПроцедуры
Процедура СброситьРазмерыИПоложениеОкна(Форма) Экспорт
ИмяПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
Если ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда
ХранилищеСистемныхНастроек.Удалить(Форма.ИмяФормы, "", ИмяПользователя);
КонецЕсли;
Форма.КлючСохраненияПоложенияОкна = Строка(Новый УникальныйИдентификатор);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Обновление информационной базы.
@@ -1695,20 +1715,14 @@
ИмяКриптопровайдера = ИнформацияМодуляКриптографии.Имя;
ОписаниеПрограммы = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеПрограммыПоИмениКриптопровайдера(ИмяКриптопровайдера,
ЭлектроннаяПодпись.ОбщиеНастройки().ОписанияПрограмм);// см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограмм
ЭлектроннаяПодпись.ОбщиеНастройки().ОписанияПрограмм); // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
Если ОписаниеПрограммы = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось определить тип криптопровайдера %1'"), ИмяКриптопровайдера);
КонецЕсли;
Свойства = Новый Структура("Тип, Путь", ОписаниеПрограммы.ТипПрограммы, "");
Если ТребуетсяПутьКПрограмме() Тогда
ПутиКПрограммамНаСерверахLinux = ПутиКПрограммамНаСерверахLinux(ИмяКомпьютера());
Свойства.Путь = ПутиКПрограммамНаСерверахLinux.Получить(ОписаниеПрограммы.Ссылка);
Иначе
Свойства.Путь = "";
КонецЕсли;
Свойства.Путь = ПутьКПрограмме(ОписаниеПрограммы.Ссылка).ПутьКПрограмме;
Возврат Свойства;
@@ -2082,9 +2096,10 @@
// Для процедур НастроитьФормуПодписанияШифрованияРасшифровки, СертификатПриИзмененииНаСервере.
Процедура ЗаполнитьСуществующиеСертификатыПользователя(СписокВыбора, ОтпечаткиСертификатовНаКлиенте,
ОтборСертификатов, ОтборОтпечатков = Неопределено)
ОтборСертификатов, ОтборОтпечатков, Расшифровка)
СписокВыбора.Очистить();
ТекущаяДатаСеанса = ?(Расшифровка И ЗначениеЗаполнено(ОтборОтпечатков), Неопределено, ТекущаяДатаСеанса());
Если ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере() Тогда
@@ -2094,8 +2109,8 @@
ТипХранилища = ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты;
МассивСертификатов = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилища).ПолучитьВсе();
ЭлектроннаяПодписьСлужебныйКлиентСервер.ДобавитьОтпечаткиСертификатов(
ОтпечаткиСертификатовНаКлиенте, МассивСертификатов, ДобавкаВремени(), ТекущаяДатаСеанса());
ЭлектроннаяПодписьСлужебныйКлиентСервер.ДобавитьОтпечаткиСертификатов(ОтпечаткиСертификатовНаКлиенте,
МассивСертификатов, ДобавкаВремени(), ТекущаяДатаСеанса);
КонецЕсли;
КонецЕсли;
@@ -2105,7 +2120,7 @@
МассивСертификатов = МодульХранилищеСертификатов.Получить("ПерсональныеСертификаты");
ЭлектроннаяПодписьСлужебныйКлиентСервер.ДобавитьОтпечаткиСертификатов(
ОтпечаткиСертификатовНаКлиенте, МассивСертификатов, ДобавкаВремени(), ТекущаяДатаСеанса());
ОтпечаткиСертификатовНаКлиенте, МассивСертификатов, ДобавкаВремени(), ТекущаяДатаСеанса);
КонецЕсли;
ОтборПоОрганизации = Ложь;
@@ -2258,7 +2273,7 @@
КонецПроцедуры
// Для функции МенеджерКриптографии.
Функция НовыйМенеджерКриптографии(Программа, Ошибки, ИмяКомпьютера, АлгоритмПодписи = "")
Функция НовыйМенеджерКриптографии(Программа, Ошибки, АлгоритмПодписи = "", Операция = "")
ОписанияПрограмм = ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииОписанияПрограмм(
Программа, Ошибки, ЭлектроннаяПодпись.ОбщиеНастройки().ОписанияПрограмм);
@@ -2269,17 +2284,22 @@
ЭтоLinux = ТребуетсяПутьКПрограмме();
Если ЭтоLinux Тогда
ПутиКПрограммамНаСерверахLinux = ПутиКПрограммамНаСерверахLinux(ИмяКомпьютера);
Иначе
ПутиКПрограммамНаСерверахLinux = Неопределено;
КонецЕсли;
Менеджер = Неопределено;
Для Каждого ОписаниеПрограммы Из ОписанияПрограмм Цикл
Если ЗначениеЗаполнено(АлгоритмПодписи) Тогда
АлгоритмПодписиПоддерживается =
ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииАлгоритмПодписиПоддерживается(ОписаниеПрограммы,
Операция, АлгоритмПодписи, Ошибки, Истина, Программа <> Неопределено);
Если Не АлгоритмПодписиПоддерживается Тогда
Менеджер = Неопределено;
Продолжить;
КонецЕсли;
КонецЕсли;
СвойстваПрограммы = ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииСвойстваПрограммы(
ОписаниеПрограммы, ЭтоLinux, Ошибки, Истина, ПутиКПрограммамНаСерверахLinux);
ОписаниеПрограммы, ЭтоLinux, Ошибки, Истина, ПутьКПрограмме(ОписаниеПрограммы.Ссылка));
Если СвойстваПрограммы = Неопределено Тогда
Продолжить;
@@ -2317,17 +2337,6 @@
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(АлгоритмПодписи) Тогда
АлгоритмПодписиПоддерживается =
ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииАлгоритмПодписиПоддерживается(ОписаниеПрограммы,
ИнформацияМодуля.АлгоритмыПодписи, АлгоритмПодписи, Ошибки, Истина, Программа <> Неопределено);
Если Не АлгоритмПодписиПоддерживается Тогда
Менеджер = Неопределено;
Продолжить;
КонецЕсли;
КонецЕсли;
Попытка
Менеджер = Новый МенеджерКриптографии(
СвойстваПрограммы.ИмяПрограммы,
@@ -2367,26 +2376,22 @@
КонецФункции
Функция ПутиКПрограммамНаСерверахLinux(ИмяКомпьютера)
Функция ПутьКПрограмме(ПрограммаСсылка) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИмяКомпьютера", ИмяКомпьютера);
Запрос.Текст =
"ВЫБРАТЬ
| ПутиКПрограмме.Программа,
| ПутиКПрограмме.ПутьКПрограмме
|ИЗ
| РегистрСведений.ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux КАК ПутиКПрограмме
|ГДЕ
| ПутиКПрограмме.ИмяКомпьютера = &ИмяКомпьютера";
Результат = Новый Структура("ПутьКПрограмме, Существует", "", Ложь);
ПутиКПрограммамНаСерверахLinux = Новый Соответствие;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ПутиКПрограммамНаСерверахLinux.Вставить(Выборка.Программа, Выборка.ПутьКПрограмме);
КонецЦикла;
Если Не ТребуетсяПутьКПрограмме() Тогда
Возврат Результат;
КонецЕсли;
Возврат ПутиКПрограммамНаСерверахLinux;
ПутиКПрограммам = ЭлектроннаяПодписьСлужебныйПовтИсп.ПутиКПрограммамНаСерверахLinux(ИмяКомпьютера());
ОписаниеПути = ПутиКПрограммам.Получить(ПрограммаСсылка);
Если ОписаниеПути <> Неопределено Тогда
Результат = ОписаниеПути;
КонецЕсли;
Возврат Результат;
КонецФункции
@@ -2521,6 +2526,10 @@
// * АлгоритмыПодписи - Массив
// * АлгоритмыХеширования - Массив
// * АлгоритмыШифрования - Массив
// * АлгоритмыПроверкиПодписи - Массив
// * НетВWindows - Булево
// * НетВLinux - Булево
// * НетВMacOS - Булево
//
Функция ПоставляемыеНастройкиПрограмм() Экспорт
@@ -2536,11 +2545,29 @@
Настройки.Колонки.Добавить("АлгоритмыПодписи", Новый ОписаниеТипов("Массив"));
Настройки.Колонки.Добавить("АлгоритмыХеширования", Новый ОписаниеТипов("Массив"));
Настройки.Колонки.Добавить("АлгоритмыШифрования", Новый ОписаниеТипов("Массив"));
Настройки.Колонки.Добавить("АлгоритмыПроверкиПодписи", Новый ОписаниеТипов("Массив"));
Настройки.Колонки.Добавить("НетВWindows", Новый ОписаниеТипов("Булево"));
Настройки.Колонки.Добавить("НетВLinux", Новый ОписаниеТипов("Булево"));
Настройки.Колонки.Добавить("НетВMacOS", Новый ОписаниеТипов("Булево"));
Возврат Настройки;
КонецФункции
// Возвращаемое значение:
// Структура:
// * Ключ - Строка - начало идентификатора программы, например, CryptoPro.
// * Значение - ФиксированноеСоответствие:
// * Ключ - ТипПлатформы
// * Значение - ФиксированныйМассив из Строка - пути
// с именами модулей, разделенные символом двоеточие.
//
Функция ПоставляемыеПутиКМодулямПрограмм() Экспорт
Возврат Новый Структура;
КонецФункции
#Область КлассификаторОшибокКриптографии
Функция ОшибкаПоКлассификатору(ТекстДляПоискаВКлассификаторе) Экспорт
@@ -2768,24 +2795,23 @@
#Область ДиагностикаЭлектроннойПодписи
Процедура ДополнитьТехническойИнформациейОСервере(ТехническаяИнформация) Экспорт
Процедура ДополнитьТехническойИнформациейОСервере(ТехническаяИнформация,
ПроверенныеПутиКМодулямПрограммНаКлиенте) Экспорт
Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая()
Или ОбщегоНазначения.КлиентПодключенЧерезВебСервер() Тогда
Если Не ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере()
И Не ЭлектроннаяПодпись.ПроверятьЭлектронныеПодписиНаСервере() Тогда
ТехническаяИнформация = ТехническаяИнформация + Символы.ПС
+ НСтр("ru = 'Электронная подпись на сервере не используется.'") + Символы.ПС;
Иначе
ТехническаяИнформация = ТехническаяИнформация
+ Символы.ПС + ТехническаяИнформацияОКомпьютере()
+ Символы.ПС + ТехническаяИнформацияОПрограммах();
КонецЕсли;
Если Не ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере()
И Не ЭлектроннаяПодпись.ПроверятьЭлектронныеПодписиНаСервере() Тогда
ТехническаяИнформация = ТехническаяИнформация + Символы.ПС
+ НСтр("ru = 'Электронная подпись на сервере не используется.'") + Символы.ПС;
Иначе
ТехническаяИнформация = ТехническаяИнформация
+ Символы.ПС + ТехническаяИнформацияОКомпьютере()
+ Символы.ПС + ТехническаяИнформацияОПрограммах();
КонецЕсли;
ТехническаяИнформация = ТехническаяИнформация + Символы.ПС
+ ТехническаяИнформацияОНастройкахПрограммВСправочнике(ПроверенныеПутиКМодулямПрограммНаКлиенте);
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
РежимРаботы = ?(ОбщегоНазначения.КлиентПодключенЧерезВебСервер(),
НСтр("ru = 'Файловый через веб'"), НСтр("ru = 'Файловый'"));
@@ -2802,7 +2828,26 @@
Функция ТехническаяИнформацияОКомпьютере()
Возврат НСтр("ru = 'Сервер:'") + Символы.ПС
ПараметрыЗапуска = ФайловаяСистема.ПараметрыЗапускаПрограммы();
ПараметрыЗапуска.ДождатьсяЗавершения = Истина;
ПараметрыЗапуска.ПолучитьПотокВывода = Истина;
ПараметрыЗапуска.КодировкаПотоков = КодировкаТекста.UTF8;
Если ОбщегоНазначения.ЭтоWindowsСервер() Тогда
Команда = "echo %username%";
Иначе
Команда = "whoami";
КонецЕсли;
Результат = ФайловаяСистема.ЗапуститьПрограмму(Команда, ПараметрыЗапуска);
Если Результат.КодВозврата = 0 Тогда
ИмяПользователяОС = СокрЛП(Результат.ПотокВывода);
Иначе
ИмяПользователяОС = "";
КонецЕсли;
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Сервер (%1):'"), ИмяКомпьютера() + "\" + ИмяПользователяОС) + Символы.ПС
+ ЭлектроннаяПодписьСлужебныйКлиентСервер.ДиагностическаяИнформацияОКомпьютере();
КонецФункции
@@ -2810,24 +2855,86 @@
Функция ТехническаяИнформацияОПрограммах()
ИспользуемыеПрограммы = ЭлектроннаяПодписьСлужебныйВызовСервера.ИспользуемыеПрограммы();
ДиагностическаяИнформация = Символы.ПС + НСтр("ru = 'Программы на сервере'") + ":" + Символы.ПС;
Если ИспользуемыеПрограммы.Количество() = 0 Тогда
Возврат "";
КонецЕсли;
ДиагностическаяИнформация = Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Программы на сервере ""%1"":'"), ИмяКомпьютера()) + Символы.ПС;
Для Каждого Программа Из ИспользуемыеПрограммы Цикл
ОписаниеОшибки = "";
МенеджерКриптографии = ЭлектроннаяПодпись.МенеджерКриптографии(
"", Ложь, ОписаниеОшибки, Программа.Ссылка);
ПараметрыСоздания = ПараметрыСозданияМенеджераКриптографии();
ПараметрыСоздания.Программа = Программа.Ссылка;
ПараметрыСоздания.ПоказатьОшибку = Ложь;
ПараметрыСоздания.ОписаниеОшибки = Новый Структура;
МенеджерКриптографии = МенеджерКриптографии("", ПараметрыСоздания);
ДиагностическаяИнформация = ДиагностическаяИнформация
+ Программа.Представление + " - "
+ ?(ТипЗнч(МенеджерКриптографии) = Тип("МенеджерКриптографии"),
"OK", НСтр("ru = 'Ошибка'") + " : " + ОписаниеОшибки) + Символы.ПС;
+ ЭлектроннаяПодписьСлужебныйКлиентСервер.ДиагностическаяИнформацияПоПрограмме(Программа,
МенеджерКриптографии, ПараметрыСоздания.ОписаниеОшибки);
КонецЦикла;
Возврат ДиагностическаяИнформация;
КонецФункции
Функция ТехническаяИнформацияОНастройкахПрограммВСправочнике(ПроверенныеПутиКМодулямПрограммНаКлиенте)
ДиагностическаяИнформация = Символы.ПС
+ НСтр("ru = 'Настройки программ в справочнике:'") + Символы.ПС;
ИспользуемыеПрограммы = ЭлектроннаяПодписьСлужебныйВызовСервера.ИспользуемыеПрограммы();
Если ИспользуемыеПрограммы.Количество() = 0 Тогда
ДиагностическаяИнформация = ДиагностическаяИнформация
+ НСтр("ru = 'В справочник не добавлено ни одной программы.'");
Возврат ДиагностическаяИнформация;
КонецЕсли;
Для Каждого Программа Из ИспользуемыеПрограммы Цикл
ДиагностическаяИнформация = ДиагностическаяИнформация + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1:
| Имя программы: %2
| Тип программы: %3
| Алгоритм подписи: %4
| Алгоритм хеширования: %5
| Алгоритм шифрования: %6'"),
Программа.Представление,
Программа.ИмяПрограммы,
Программа.ТипПрограммы,
Программа.АлгоритмПодписи,
Программа.АлгоритмХеширования,
Программа.АлгоритмШифрования) + Символы.ПС;
Если ТребуетсяПутьКПрограмме(Истина) Тогда
ДобавитьИнформациюОПутиКПрограмме(ДиагностическаяИнформация,
НСтр("ru = 'Пути к модулям программы на клиенте:'"),
ПроверенныеПутиКМодулямПрограммНаКлиенте.Получить(Программа.Ссылка).ПутьКПрограмме);
КонецЕсли;
Если ТребуетсяПутьКПрограмме() Тогда
ДобавитьИнформациюОПутиКПрограмме(ДиагностическаяИнформация,
НСтр("ru = 'Пути к модулям программы на сервере:'"),
ПутьКПрограмме(Программа.Ссылка).ПутьКПрограмме);
КонецЕсли;
КонецЦикла;
Возврат ДиагностическаяИнформация;
КонецФункции
Процедура ДобавитьИнформациюОПутиКПрограмме(ДиагностическаяИнформация, Заголовок, ПутьКПрограмме)
ПутиКМодулям = СтрРазделить(ПутьКПрограмме, ":", Ложь);
ДиагностическаяИнформация = ДиагностическаяИнформация
+ Символы.Таб + Заголовок + Символы.ПС
+ Символы.Таб + Символы.Таб + """" + СтрСоединить(ПутиКМодулям,
"""" + Символы.ПС + Символы.Таб + Символы.Таб + """") + """"
+ Символы.ПС;
КонецПроцедуры
Функция ТехническаяИнформацияОВерсияхПодсистем()
УстановитьОтключениеБезопасногоРежима(Истина);
@@ -224,8 +224,7 @@
Если Параметры.Операция <> "Подписание" Тогда
ОшибкаНаСервере.Вставить("ОписаниеОшибки",
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаголовокОшибкиПолученияДанных(Параметры.Операция)
+ Символы.ПС + НСтр("ru = 'Внешняя компонента XMLDSig может использоваться только для подписания.'"));
НСтр("ru = 'Внешняя компонента XMLDSig может использоваться только для подписания.'"));
Возврат Ложь;
КонецЕсли;
@@ -244,8 +243,7 @@
Если Параметры.Операция <> "Подписание" Тогда
ОшибкаНаСервере.Вставить("ОписаниеОшибки",
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаголовокОшибкиПолученияДанных(Параметры.Операция)
+ Символы.ПС + НСтр("ru = 'Внешняя компонента XMLDSig (включающая CMS) может использоваться только для подписания.'"));
НСтр("ru = 'Внешняя компонента XMLDSig (включающая CMS) может использоваться только для подписания.'"));
Возврат Ложь;
КонецЕсли;
@@ -426,20 +424,21 @@
Процедура СоздатьМенеджерКриптографииЦиклНачало(Контекст, ПараметрыВыполнения)
Контекст.Вставить("ОписаниеПрограммы", Контекст.ОписанияПрограмм[0]);
ОписаниеПрограммы = Контекст.ОписанияПрограмм[0]; // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
Контекст.Вставить("ОписаниеПрограммы", ОписаниеПрограммы);
СвойстваПрограммы = ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииСвойстваПрограммы(
Контекст.ОписаниеПрограммы,
Контекст.ЭтоLinux,
Контекст.ОписаниеОшибок.Ошибки,
Ложь,
ЭлектроннаяПодпись.ПерсональныеНастройки().ПутиКПрограммамЭлектроннойПодписиИШифрования);
ЭлектроннаяПодписьСлужебный.ПутьКПрограмме(Контекст.ОписаниеПрограммы.Ссылка));
Если СвойстваПрограммы = Неопределено Тогда
НайтиУстановленныеПрограммыНаСервереЦиклНачало(ПараметрыВыполнения);
Возврат;
КонецЕсли;
Попытка
ИнформацияМодуля = СредстваКриптографии.ПолучитьИнформациюМодуляКриптографии(
СвойстваПрограммы.ИмяПрограммы,
@@ -549,7 +548,7 @@
КонецЕсли;
КонецЦикла;
ОписанияНастроенныхПрограмм = ЭлектроннаяПодпись.ОбщиеНастройки().ОписанияПрограмм; // Массив из см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограмм
ОписанияНастроенныхПрограмм = ЭлектроннаяПодпись.ОбщиеНастройки().ОписанияПрограмм; // Массив из см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
Для Каждого ПоставляемаяПрограмма Из ПоставляемыеНастройки Цикл
ОписаниеПрограммы = РасширенноеОписаниеПрограммы();
@@ -596,6 +595,163 @@
#Область ДиагностикаЭлектроннойПодписи
Процедура ДобавитьОписаниеДополнительныхДанных(ДополнительныеДанные, ОписаниеФайлов, Сведения) Экспорт
Текст = "";
Сертификаты = Неопределено;
ДополнительныеДанные.Свойство("Сертификат", Сертификаты);
Если ТипЗнч(Сертификаты) = Тип("Массив") Тогда
Номер = 1;
Для Каждого Сертификат Из Сертификаты Цикл
ДобавитьОписаниеСертификата(Сертификат, ОписаниеФайлов, Текст, Номер);
Номер = Номер + 1;
КонецЦикла;
ИначеЕсли Сертификаты <> Неопределено Тогда
ДобавитьОписаниеСертификата(Сертификаты, ОписаниеФайлов, Текст, 1);
КонецЕсли;
Подписи = Неопределено;
ДополнительныеДанные.Свойство("Подпись", Подписи);
Если ТипЗнч(Подписи) = Тип("Массив") Тогда
Номер = 1;
Для Каждого Подпись Из Подписи Цикл
ДобавитьОписаниеПодписи(Подпись, ОписаниеФайлов, Текст, Номер);
Номер = Номер + 1;
КонецЦикла;
ИначеЕсли Подписи <> Неопределено Тогда
ДобавитьОписаниеПодписи(Подписи, ОписаниеФайлов, Текст, 1);
КонецЕсли;
Если ЗначениеЗаполнено(Текст) Тогда
Сведения = Сведения + Текст + Символы.ПС;
КонецЕсли;
КонецПроцедуры
// Параметры:
// Сертификат - ДвоичныеДанные
// - Строка
// ОписаниеФайлов - Массив
// Сведения - Строка
// Номер - Число
//
Процедура ДобавитьОписаниеСертификата(Сертификат, ОписаниеФайлов, Сведения, Номер)
Если ТипЗнч(Сертификат) = Тип("СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Сертификат, "Наименование, Программа, УсиленнаяЗащитаЗакрытогоКлюча, ДанныеСертификата");
Если ТипЗнч(ЗначенияРеквизитов.ДанныеСертификата) = Тип("ХранилищеЗначения") Тогда
ДанныеСертификата = ЗначенияРеквизитов.ДанныеСертификата.Получить();
Иначе
ДанныеСертификата = Null;
КонецЕсли;
ПредставлениеСертификата = ЗначенияРеквизитов.Наименование;
Иначе
Если ТипЗнч(Сертификат) = Тип("Строка") И ЭтоАдресВременногоХранилища(Сертификат) Тогда
ДанныеСертификата = ПолучитьИзВременногоХранилища(Сертификат);
Иначе
ДанныеСертификата = Сертификат;
КонецЕсли;
КонецЕсли;
Если ТипЗнч(ДанныеСертификата) = Тип("ДвоичныеДанные") Тогда
Если Не ЗначениеЗаполнено(ПредставлениеСертификата) Тогда
Попытка
СертификатКриптографии = Новый СертификатКриптографии(ДанныеСертификата);
ПредставлениеСертификата = ЭлектроннаяПодпись.ПредставлениеСертификата(СертификатКриптографии);
Исключение
ПредставлениеСертификата = "";
КонецПопытки;
КонецЕсли;
Расширение = ".cer";
АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(
ДанныеСертификата, Истина);
Иначе
Расширение = ".txt";
XMLДанныеСертификата = XMLСтрока(Новый ХранилищеЗначения(ДанныеСертификата));
ДанныеСертификата = ПолучитьДвоичныеДанныеИзСтроки(XMLДанныеСертификата, КодировкаТекста.ANSI, Ложь);
АлгоритмПодписи = "";
КонецЕсли;
Если Не ЗначениеЗаполнено(ПредставлениеСертификата) Тогда
ПредставлениеСертификата = НСтр("ru = 'Сертификат'") + Формат(Номер, "ЧГ=");
КонецЕсли;
ИмяФайлаСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПодготовитьСтрокуДляИмениФайла(
ПредставлениеСертификата) + Расширение;
ОписаниеФайла = Новый Структура;
ОписаниеФайла.Вставить("Данные", ДанныеСертификата);
ОписаниеФайла.Вставить("Имя", ИмяФайлаСертификата);
Сведения = Сведения + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Сертификат: ""%1""'"), ИмяФайлаСертификата) + Символы.ПС;
Сведения = Сведения + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Символы.Таб + НСтр("ru = 'Алгоритм подписи: %1'"), АлгоритмПодписи) + Символы.ПС;
Если ТипЗнч(Сертификат) = Тип("СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда
Сведения = Сведения + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Символы.Таб + НСтр("ru = 'Программа: %1'"), Строка(ЗначенияРеквизитов.Программа)) + Символы.ПС;
Сведения = Сведения + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Символы.Таб + НСтр("ru = 'Вводить пароль в программе электронной подписи: %1'"),
?(ЗначенияРеквизитов.УсиленнаяЗащитаЗакрытогоКлюча = Истина, НСтр("ru = 'Да'"), НСтр("ru = 'Нет'"))) + Символы.ПС;
КонецЕсли;
ОписаниеФайлов.Добавить(ОписаниеФайла);
КонецПроцедуры
// Параметры:
// Подпись - ДвоичныеДанные
// - Строка
// ОписаниеФайлов - Массив
// Номер - Число
//
Процедура ДобавитьОписаниеПодписи(Подпись, ОписаниеФайлов, Сведения, Номер)
Если ТипЗнч(Подпись) = Тип("Строка") И ЭтоАдресВременногоХранилища(Подпись) Тогда
ДанныеПодписи = ПолучитьИзВременногоХранилища(Подпись);
Иначе
ДанныеПодписи = Подпись;
КонецЕсли;
Если ТипЗнч(ДанныеПодписи) = Тип("ДвоичныеДанные") Тогда
Расширение = ".p7s";
АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмСформированнойПодписи(
ДанныеПодписи, Истина);
АлгоритмХеширования = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмХеширования(
ДанныеПодписи, Истина);
Иначе
Расширение = ".txt";
XMLДанныеПодписи = XMLСтрока(Новый ХранилищеЗначения(ДанныеПодписи));
ДанныеПодписи = ПолучитьДвоичныеДанныеИзСтроки(XMLДанныеПодписи, КодировкаТекста.ANSI, Ложь);
АлгоритмПодписи = "";
АлгоритмХеширования = "";
КонецЕсли;
ИмяФайлаПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПодготовитьСтрокуДляИмениФайла(
НСтр("ru = 'Подпись'") + Формат(Номер, "ЧГ=")) + Расширение;
ОписаниеФайла = Новый Структура;
ОписаниеФайла.Вставить("Данные", ДанныеПодписи);
ОписаниеФайла.Вставить("Имя", ИмяФайлаПодписи);
Сведения = Сведения + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Подпись: ""%1""'"), ИмяФайлаПодписи) + Символы.ПС;
Сведения = Сведения + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Символы.Таб + НСтр("ru = 'Алгоритм подписи: %1'"), АлгоритмПодписи) + Символы.ПС;
Сведения = Сведения + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Символы.Таб + НСтр("ru = 'Алгоритм хеширования: %1'"), АлгоритмХеширования) + Символы.ПС;
ОписаниеФайлов.Добавить(ОписаниеФайла);
КонецПроцедуры
// Возвращаемое значение:
// Массив Из Структура:
// * Ссылка - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
@@ -607,7 +763,12 @@
Запрос.Текст =
"ВЫБРАТЬ
| ПрограммыЭлектроннойПодписиИШифрования.Ссылка КАК Ссылка,
| ПрограммыЭлектроннойПодписиИШифрования.Представление КАК Представление
| ПрограммыЭлектроннойПодписиИШифрования.Представление КАК Представление,
| ПрограммыЭлектроннойПодписиИШифрования.ИмяПрограммы КАК ИмяПрограммы,
| ПрограммыЭлектроннойПодписиИШифрования.ТипПрограммы КАК ТипПрограммы,
| ПрограммыЭлектроннойПодписиИШифрования.АлгоритмПодписи КАК АлгоритмПодписи,
| ПрограммыЭлектроннойПодписиИШифрования.АлгоритмХеширования КАК АлгоритмХеширования,
| ПрограммыЭлектроннойПодписиИШифрования.АлгоритмШифрования КАК АлгоритмШифрования
|ИЗ
| Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК ПрограммыЭлектроннойПодписиИШифрования
|ГДЕ
@@ -618,9 +779,11 @@
КонецФункции
Функция АдресАрхиваТехническойИнформации(СопроводительныйТекст, ДополнительныеФайлы = Неопределено) Экспорт
Функция АдресАрхиваТехническойИнформации(Знач СопроводительныйТекст,
Знач ДополнительныеФайлы, Знач ПроверенныеПутиКМодулямПрограммНаКлиенте) Экспорт
ЭлектроннаяПодписьСлужебный.ДополнитьТехническойИнформациейОСервере(СопроводительныйТекст);
ЭлектроннаяПодписьСлужебный.ДополнитьТехническойИнформациейОСервере(СопроводительныйТекст,
ПроверенныеПутиКМодулямПрограммНаКлиенте);
АрхивИнформации = Новый ЗаписьZipФайла();
@@ -668,7 +831,6 @@
+ ?(СтрЗаканчиваетсяНа(ВременныйКаталог, Разделитель), "", Разделитель)
+ ИнформацияОФайле.Имя;
ВременныеФайлы.Добавить(ВременныйФайл);
Если ТипЗнч(ИнформацияОФайле.Данные) = Тип("Строка") Тогда
Если ЭтоАдресВременногоХранилища(ИнформацияОФайле.Данные) Тогда
@@ -684,9 +846,11 @@
ДанныеФайла = ИнформацияОФайле.Данные;
КонецЕсли;
ДанныеДляЗаписи = ИнформацияОФайле.Данные; // ДвоичныеДанные
ДанныеДляЗаписи.Записать(ВременныйФайл);
Архив.Добавить(ВременныйФайл);
Если ТипЗнч(ДанныеФайла) = Тип("ДвоичныеДанные") Тогда
ВременныеФайлы.Добавить(ВременныйФайл);
ДанныеФайла.Записать(ВременныйФайл);
Архив.Добавить(ВременныйФайл);
КонецЕсли;
КонецПроцедуры
@@ -31,6 +31,244 @@
КонецФункции
Процедура ПолучитьПутьКПрограмме(ОбработкаЗавершения, ПрограммаСсылка) Экспорт
Результат = Новый Структура("ПутьКПрограмме, Существует", "", Ложь);
Если Не ТребуетсяПутьКПрограмме() Тогда
ВыполнитьОбработкуОповещения(ОбработкаЗавершения, Результат);
Возврат;
КонецЕсли;
Контекст = Новый Структура;
Контекст.Вставить("ОбработкаЗавершения", ОбработкаЗавершения);
Контекст.Вставить("ПрограммаСсылка", ПрограммаСсылка);
ПроверенныеПутиКМодулямПрограмм = ПроверенныеПутиКМодулямПрограмм();
ОписаниеПути = ПроверенныеПутиКМодулямПрограмм.Получить(ПрограммаСсылка);
Если ОписаниеПути <> Неопределено Тогда
ПолучитьПутьКПрограммеЗавершение(ОписаниеПути, Контекст);
Возврат;
КонецЕсли;
Контекст.Вставить("ПроверенныеПутиКМодулямПрограмм", ПроверенныеПутиКМодулямПрограмм);
ПерсональныеНастройки = ЭлектроннаяПодписьКлиент.ПерсональныеНастройки();
ПутьКПрограмме = ПерсональныеНастройки.ПутиКПрограммамЭлектроннойПодписиИШифрования.Получить(
ПрограммаСсылка);
Если ЗначениеЗаполнено(ПутьКПрограмме) Тогда
Контекст.Вставить("Результат", Результат);
Результат.ПутьКПрограмме = ПутьКПрограмме;
ПроверитьПутьКПрограмме(Новый ОписаниеОповещения(
"ПолучитьПутьКПрограммеПослеПроверкиПути", ЭтотОбъект, Контекст), ПутьКПрограмме);
Иначе
ПолучитьПутьКПрограммеПоУмолчанию(Новый ОписаниеОповещения(
"ПолучитьПутьКПрограммеЗавершение", ЭтотОбъект, Контекст), ПрограммаСсылка);
КонецЕсли;
КонецПроцедуры
// Продолжение процедуры ПолучитьПутьКПрограмме.
Процедура ПолучитьПутьКПрограммеПослеПроверкиПути(Существует, Контекст) Экспорт
Контекст.Результат.Существует = Существует;
ПолучитьПутьКПрограммеЗавершение(Контекст.Результат, Контекст);
КонецПроцедуры
// Продолжение процедуры ПолучитьПутьКПрограмме.
Процедура ПолучитьПутьКПрограммеЗавершение(ОписаниеПути, Контекст) Экспорт
Если Контекст.Свойство("ПроверенныеПутиКМодулямПрограмм") Тогда
Контекст.ПроверенныеПутиКМодулямПрограмм.Вставить(Контекст.ПрограммаСсылка, ОписаниеПути);
КонецЕсли;
Результат = Новый Структура("ПутьКПрограмме, Существует",
ОписаниеПути.ПутьКПрограмме, ОписаниеПути.Существует <> Ложь);
ВыполнитьОбработкуОповещения(Контекст.ОбработкаЗавершения, Результат);
КонецПроцедуры
Функция ПроверенныеПутиКМодулямПрограмм()
ОбщиеНастройки = ЭлектроннаяПодписьКлиент.ОбщиеНастройки();
ИмяПараметра = "СтандартныеПодсистемы.ЭлектроннаяПодпись.ОписаниеПутейКМодулямПрограмм";
ОписаниеПутейКМодулямПрограмм = ПараметрыПриложения.Получить(ИмяПараметра);
Если ОписаниеПутейКМодулямПрограмм = Неопределено
Или ОписаниеПутейКМодулямПрограмм.ВерсияНастроек <> ОбщиеНастройки.ВерсияНастроек Тогда
ОписаниеПутейКМодулямПрограмм = Новый Структура("ПутиКМодулямПрограмм, ВерсияНастроек",
Новый Соответствие, ОбщиеНастройки.ВерсияНастроек);
ПараметрыПриложения.Вставить(ИмяПараметра, ОписаниеПутейКМодулямПрограмм);
КонецЕсли;
Возврат ОписаниеПутейКМодулямПрограмм.ПутиКМодулямПрограмм;
КонецФункции
Процедура ПроверитьПутьКПрограмме(ОбработкаЗавершения, ПутьКПрограмме)
Контекст = Новый Структура;
Контекст.Вставить("ОбработкаЗавершения", ОбработкаЗавершения);
Контекст.Вставить("ПутьКПрограмме", ПутьКПрограмме);
ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами(Новый ОписаниеОповещения(
"ПроверитьПутьКПрограммеПослеПодключенияРасширенияРаботыСФайлами", ЭтотОбъект, Контекст));
КонецПроцедуры
// Продолжение процедуры ПроверитьПутьКПрограмме.
Процедура ПроверитьПутьКПрограммеПослеПодключенияРасширенияРаботыСФайлами(РасширениеПодключено, Контекст) Экспорт
Если Не РасширениеПодключено Тогда
ВыполнитьОбработкуОповещения(Контекст.ОбработкаЗавершения, Неопределено);
Возврат;
КонецЕсли;
Контекст.Вставить("ПутиКМодулям", СтрРазделить(Контекст.ПутьКПрограмме, ":", Ложь));
Контекст.Вставить("Индекс", -1);
ПроверитьПутьКПрограммеЦиклНачало(Контекст);
КонецПроцедуры
// Продолжение процедуры ПроверитьПутьКПрограмме.
//
// Параметры:
// Контекст - Структура
//
Процедура ПроверитьПутьКПрограммеЦиклНачало(Контекст)
Если Контекст.ПутиКМодулям.Количество() <= Контекст.Индекс + 1 Тогда
// После цикла.
ВыполнитьОбработкуОповещения(Контекст.ОбработкаЗавершения, Ложь);
Возврат;
КонецЕсли;
Контекст.Индекс = Контекст.Индекс + 1;
Файл = Новый Файл;
Файл.НачатьИнициализацию(Новый ОписаниеОповещения(
"ПроверитьПутьКПрограммеЦиклПослеИнициализацииФайла", ЭтотОбъект, Контекст),
Контекст.ПутиКМодулям[Контекст.Индекс]);
КонецПроцедуры
// Продолжение процедуры ПроверитьПутьКПрограмме.
Процедура ПроверитьПутьКПрограммеЦиклПослеИнициализацииФайла(Файл, Контекст) Экспорт
Файл.НачатьПроверкуСуществования(Новый ОписаниеОповещения(
"ПроверитьПутьКПрограммеЦиклПослеПроверкиСуществованияФайла", ЭтотОбъект, Контекст));
КонецПроцедуры
// Продолжение процедуры ПроверитьПутьКПрограмме.
Процедура ПроверитьПутьКПрограммеЦиклПослеПроверкиСуществованияФайла(Существует, Контекст) Экспорт
Если Существует Тогда
ВыполнитьОбработкуОповещения(Контекст.ОбработкаЗавершения, Истина);
Возврат;
КонецЕсли;
ПроверитьПутьКПрограммеЦиклНачало(Контекст);
КонецПроцедуры
Процедура ПолучитьПутьКПрограммеПоУмолчанию(ОбработкаЗавершения, ПрограммаСсылка) Экспорт
Результат = Новый Структура("ПутьКПрограмме, Существует", "", Ложь);
Если Не ТребуетсяПутьКПрограмме() Тогда
ВыполнитьОбработкуОповещения(ОбработкаЗавершения, Результат);
Возврат;
КонецЕсли;
ОбщиеНастройки = ЭлектроннаяПодписьКлиент.ОбщиеНастройки();
ОписаниеПрограммы = ОбщиеНастройки.ОписанияПрограммПоСсылке.Получить(ПрограммаСсылка); // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
Если ОписаниеПрограммы = Неопределено Тогда
ВыполнитьОбработкуОповещения(ОбработкаЗавершения, Результат);
Возврат;
КонецЕсли;
ПутиНайдены = Ложь;
Для Каждого ПутиКМодулямПрограмм Из ОбщиеНастройки.ПоставляемыеПутиКМодулямПрограмм Цикл
Если СтрНачинаетсяС(ОписаниеПрограммы.Идентификатор, ПутиКМодулямПрограмм.Ключ) Тогда
ПутиНайдены = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не ПутиНайдены Тогда
ВыполнитьОбработкуОповещения(ОбработкаЗавершения, Результат);
Возврат;
КонецЕсли;
ПутиКМодулямПрограммы = ПутиКМодулямПрограмм.Значение.Получить(
ЭлектроннаяПодписьСлужебныйКлиентСервер.ТипПлатформыСтрокой());
Если ПутиКМодулямПрограммы = Неопределено Тогда
ВыполнитьОбработкуОповещения(ОбработкаЗавершения, Результат);
Возврат;
КонецЕсли;
Контекст = Новый Структура;
Контекст.Вставить("ОбработкаЗавершения", ОбработкаЗавершения);
Контекст.Вставить("ПутиКМодулямПрограммы", ПутиКМодулямПрограммы);
Контекст.Вставить("Индекс", -1);
ПолучитьПутьКПрограммеПоУмолчаниюЦиклНачало(Контекст);
КонецПроцедуры
// Продолжение процедуры ПолучитьПутьКПрограммеПоУмолчанию.
Процедура ПолучитьПутьКПрограммеПоУмолчаниюЦиклНачало(Контекст)
Если Контекст.ПутиКМодулямПрограммы.Количество() <= Контекст.Индекс + 1 Тогда
// После цикла.
ПолучитьПутьКПрограммеПоУмолчаниюЦиклЗавершение(Контекст, Ложь);
Возврат;
КонецЕсли;
Контекст.Индекс = Контекст.Индекс + 1;
ПроверитьПутьКПрограмме(Новый ОписаниеОповещения(
"ПолучитьПутьКПрограммеПоУмолчаниюЦиклПослеПроверкиПути", ЭтотОбъект, Контекст),
Контекст.ПутиКМодулямПрограммы.Получить(Контекст.Индекс))
КонецПроцедуры
// Продолжение процедуры ПолучитьПутьКПрограммеПоУмолчанию.
Процедура ПолучитьПутьКПрограммеПоУмолчаниюЦиклПослеПроверкиПути(Существует, Контекст) Экспорт
Если Существует <> Ложь Тогда
ПолучитьПутьКПрограммеПоУмолчаниюЦиклЗавершение(Контекст, Существует);
Возврат;
КонецЕсли;
ПолучитьПутьКПрограммеПоУмолчаниюЦиклНачало(Контекст);
КонецПроцедуры
// Продолжение процедуры ПолучитьПутьКПрограммеПоУмолчанию.
Процедура ПолучитьПутьКПрограммеПоУмолчаниюЦиклЗавершение(Контекст, Существует)
ТекущийПуть = Контекст.ПутиКМодулямПрограммы.Получить(
?(Существует <> Истина, 0, Контекст.Индекс));
Результат = Новый Структура("ПутьКПрограмме, Существует", ТекущийПуть, Существует);
ВыполнитьОбработкуОповещения(Контекст.ОбработкаЗавершения, Результат);
КонецПроцедуры
// Продолжение процедуры ДатаПодписания.
Процедура ДатаПодписанияПослеЧтенияВБуферДвоичныхДанных(БуферДанныхПодписи, Контекст) Экспорт
@@ -415,7 +653,9 @@
Контекст.ИмяФайлаБезРасширения = ЭлектроннаяПодписьСлужебныйВызовСервера.ПредставлениеСубъекта(Контекст.АдресСертификата);
КонецЕсли;
ИмяФайла = ПодготовитьСтрокуДляИмениФайла(Контекст.ИмяФайлаБезРасширения) + ".cer";
ИмяФайла = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПодготовитьСтрокуДляИмениФайла(
Контекст.ИмяФайлаБезРасширения) + ".cer";
Оповещение = Новый ОписаниеОповещения("СохранитьСертификатПослеПолученияФайлов", ЭтотОбъект, Контекст);
ПараметрыСохранения = ФайловаяСистемаКлиент.ПараметрыСохраненияФайла();
@@ -742,15 +982,22 @@
Контекст.Подпись = ПолучитьИзВременногоХранилища(Подпись);
КонецЕсли;
Если Не ЭлектроннаяПодписьКлиент.ПроверятьЭлектронныеПодписиНаСервере()
И ТипЗнч(Контекст.ИсходныеДанные) = Тип("Строка")
И ЭтоАдресВременногоХранилища(Контекст.ИсходныеДанные) Тогда
Контекст.ИсходныеДанные = ПолучитьИзВременногоХранилища(Контекст.ИсходныеДанные);
КонецЕсли;
Если ТипЗнч(Контекст.Подпись) = Тип("ДвоичныеДанные") Тогда
Контекст.Вставить("АлгоритмПодписи",
ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмСформированнойПодписи(Контекст.Подпись));
ИначеЕсли ТипЗнч(ИсходныеДанные) = Тип("Структура")
И ИсходныеДанные.Свойство("ПараметрыXMLDSig") Тогда // ЭтоXMLDSig.
ИначеЕсли ТипЗнч(Контекст.ИсходныеДанные) = Тип("Структура")
И Контекст.ИсходныеДанные.Свойство("ПараметрыXMLDSig") Тогда // ЭтоXMLDSig.
ДанныеСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.СертификатИзКонвертаSOAP(
ИсходныеДанные.КонвертSOAP, Ложь);
Контекст.ИсходныеДанные.КонвертSOAP, Ложь);
Контекст.Вставить("АлгоритмПодписи",
ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(ДанныеСертификата));
Иначе
@@ -802,14 +1049,7 @@
КонецЕсли;
Если ТипЗнч(Контекст.ИсходныеДанные) = Тип("Строка")
И ЭтоАдресВременногоХранилища(Контекст.ИсходныеДанные) Тогда
Контекст.ИсходныеДанные = ПолучитьИзВременногоХранилища(Контекст.ИсходныеДанные);
КонецЕсли;
Контекст.Вставить("ПроверитьСертификатНаКлиенте");
ПроверитьПодписьНаКлиенте(Контекст);
Возврат;
КонецЕсли;
@@ -1355,16 +1595,16 @@
КонецПроцедуры
// Возвращаемое значение:
// Структура:
// * ИнтерактивныйРежим - Булево
// * АлгоритмПодписи - Строка
// * ПоказатьОшибку - Булево
// * Программа - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
// * Оповещение - ОписаниеОповещения
// * Операция - см. СоздатьМенеджерКриптографии.Операция
// * ОписаниеПрограмм - Массив из см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограмм
// * СвойстваОшибки - Массив из Структура:
// ** Описание - Строка
// Структура:
// * ИнтерактивныйРежим - Булево
// * АлгоритмПодписи - Строка
// * ПоказатьОшибку - Булево
// * Программа - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
// * Оповещение - ОписаниеОповещения
// * Операция - см. СоздатьМенеджерКриптографии.Операция
// * ОписаниеПрограмм - Массив из см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
// * СвойстваОшибки - Массив из Структура:
// ** Описание - Строка
//
Функция КонтекстСоздатьМенеджерКриптографии()
@@ -1487,14 +1727,39 @@
Возврат;
КонецЕсли;
Контекст.Индекс = Контекст.Индекс + 1;
Контекст.Вставить("ОписаниеПрограммы", Контекст.ОписанияПрограмм[Контекст.Индекс]);
ОписаниеПрограммы = Контекст.ОписанияПрограмм[Контекст.Индекс]; // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
Контекст.Вставить("ОписаниеПрограммы", ОписаниеПрограммы);
Если ЗначениеЗаполнено(Контекст.АлгоритмПодписи) Тогда
АлгоритмПодписиПоддерживается =
ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииАлгоритмПодписиПоддерживается(
ОписаниеПрограммы,
?(Контекст.Свойство("Операция"), Контекст.Операция, ""),
Контекст.АлгоритмПодписи,
Контекст.ОписаниеОшибок.Ошибки,
Ложь,
Контекст.Программа <> Неопределено);
Если Не АлгоритмПодписиПоддерживается Тогда
Контекст.Менеджер = Неопределено;
СоздатьМенеджерКриптографииЦиклНачало(Контекст);
Возврат;
КонецЕсли;
КонецЕсли;
ПолучитьПутьКПрограмме(Новый ОписаниеОповещения("СоздатьМенеджерКриптографииЦиклПослеПолученияПутиКПрограмме",
ЭтотОбъект, Контекст), ОписаниеПрограммы.Ссылка);
КонецПроцедуры
Процедура СоздатьМенеджерКриптографииЦиклПослеПолученияПутиКПрограмме(ОписаниеПути, Контекст) Экспорт
СвойстваПрограммы = ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииСвойстваПрограммы(
Контекст.ОписаниеПрограммы,
Контекст.ЭтоLinux,
Контекст.ОписаниеОшибок.Ошибки,
Ложь,
ЭлектроннаяПодписьКлиент.ПерсональныеНастройки().ПутиКПрограммамЭлектроннойПодписиИШифрования);
ОписаниеПути);
Если СвойстваПрограммы = Неопределено Тогда
СоздатьМенеджерКриптографииЦиклНачало(Контекст);
@@ -1549,23 +1814,6 @@
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Контекст.АлгоритмПодписи) Тогда
АлгоритмПодписиПоддерживается =
ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииАлгоритмПодписиПоддерживается(
Контекст.ОписаниеПрограммы,
ИнформацияМодуля.АлгоритмыПодписи,
Контекст.АлгоритмПодписи,
Контекст.ОписаниеОшибок.Ошибки,
Ложь,
Контекст.Программа <> Неопределено);
Если Не АлгоритмПодписиПоддерживается Тогда
Контекст.Менеджер = Неопределено;
СоздатьМенеджерКриптографииЦиклНачало(Контекст);
Возврат;
КонецЕсли;
КонецЕсли;
Контекст.Менеджер = Новый МенеджерКриптографии;
Если Не Контекст.ИнтерактивныйРежим Тогда
@@ -1593,7 +1841,7 @@
СтандартнаяОбработка = Ложь;
Контекст.Менеджер = Неопределено;
ОписаниеПрограммы = Контекст.ОписаниеПрограммы; // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограмм
ОписаниеПрограммы = Контекст.ОписаниеПрограммы; // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
ЭлектроннаяПодписьСлужебныйКлиентСервер.МенеджерКриптографииДобавитьОшибку(
Контекст.ОписаниеОшибок.Ошибки,
ОписаниеПрограммы.Ссылка,
@@ -1962,12 +2210,19 @@
ПараметрыФормы.Вставить("ПоказатьИнструкцию", Ложь);
ПараметрыФормы.Вставить("ПоказатьПереходКНастройкеПрограмм", Ложь);
ПараметрыФормы.Вставить("ПоказатьУстановкуРасширения", Ложь);
ПараметрыФормы.Вставить("НеподписанныеДанные");
ДополнительныеДанные = Новый Структура;
ДополнительныеДанные.Вставить("НеподписанныеДанные");
ДополнительныеДанные.Вставить("Сертификат");
ДополнительныеДанные.Вставить("Подпись");
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(ПараметрыФормы, ДополнительныеПараметры);
ЗаполнитьЗначенияСвойств(ДополнительныеДанные, ДополнительныеПараметры);
КонецЕсли;
ПараметрыФормы.Вставить("ДополнительныеДанные", ДополнительныеДанные);
ПараметрыФормы.Вставить("ЗаголовокФормы", ЗаголовокФормы);
ПараметрыФормы.Вставить("ЗаголовокОшибки", ЗаголовокОшибки);
@@ -2033,7 +2288,7 @@
Контекст.Вставить("ОбработкаЗавершения", ОбработкаЗавершения);
ПолучитьОтпечаткиСертификатовНаКлиенте(Новый ОписаниеОповещения(
"ОткрытьНовуюФормуЗавершение", ЭтотОбъект, Контекст));
"ОткрытьНовуюФормуЗавершение", ЭтотОбъект, Контекст), ВидФормы = "РасшифровкаДанных");
КонецПроцедуры
@@ -2923,10 +3178,11 @@
// Только для внутреннего использования.
Процедура ПолучитьОтпечаткиСертификатовНаКлиенте(Оповещение) Экспорт
Процедура ПолучитьОтпечаткиСертификатовНаКлиенте(Оповещение, ВключаяПросроченные = Ложь) Экспорт
Контекст = Новый Структура;
Контекст.Вставить("Оповещение", Оповещение);
Контекст.Вставить("ВключаяПросроченные", ВключаяПросроченные);
ПараметрыСоздания = ПараметрыСозданияМенеджераКриптографии();
ПараметрыСоздания.ПоказатьОшибку = Ложь;
@@ -2966,7 +3222,9 @@
ОтпечаткиСертификатовНаКлиенте = Новый Массив;
ЭлектроннаяПодписьСлужебныйКлиентСервер.ДобавитьОтпечаткиСертификатов(ОтпечаткиСертификатовНаКлиенте,
МассивСертификатов, ДобавкаВремени(), ОбщегоНазначенияКлиент.ДатаСеанса());
МассивСертификатов,
ДобавкаВремени(),
?(Контекст.ВключаяПросроченные, Неопределено, ОбщегоНазначенияКлиент.ДатаСеанса()));
ВыполнитьОбработкуОповещения(Контекст.Оповещение, ОтпечаткиСертификатовНаКлиенте);
@@ -3205,6 +3463,7 @@
Контекст.Вставить("Оповещение", Оповещение);
Контекст.Вставить("Операция", Операция); // Подписание, Шифрование, Расшифровка.
Контекст.Вставить("НаСторонеКлиента", СторонаВыполнения = "НаСторонеКлиента");
Контекст.Вставить("ОперацияНачалась", Ложь);
Если Контекст.НаСторонеКлиента Тогда
Если Контекст.Операция = "Шифрование" И ИспользоватьЭлектроннуюПодписьВМоделиСервиса() Тогда
@@ -3345,8 +3604,6 @@
// Продолжение процедуры ВыполнитьНаСтороне.
Процедура ВыполнитьНаСторонеЦиклЗапуск(Контекст)
Контекст.Вставить("ОперацияНачалась", Ложь);
Если Контекст.ОписаниеДанных.Свойство("Данные") Тогда
ЭлементыДанных = Новый Массив;
ЭлементыДанных.Добавить(Контекст.ОписаниеДанных);
@@ -3458,8 +3715,7 @@
Если Контекст.Операция <> "Подписание" Тогда
Ошибка = Новый Структура("ОписаниеОшибки",
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаголовокОшибкиПолученияДанных(Контекст.Операция)
+ Символы.ПС + НСтр("ru = 'Внешняя компонента XMLDSig может использоваться только для подписания.'"));
НСтр("ru = 'Внешняя компонента XMLDSig может использоваться только для подписания.'"));
ВыполнитьНаСторонеПослеЦикла(Ошибка, Контекст);
Возврат;
КонецЕсли;
@@ -3484,8 +3740,7 @@
ИначеЕсли ЭтоCMS Тогда
Если Контекст.Операция <> "Подписание" Тогда
Ошибка = Новый Структура("ОписаниеОшибки",
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаголовокОшибкиПолученияДанных(Контекст.Операция)
+ Символы.ПС + НСтр("ru = 'Внешняя компонента XMLDSig может использоваться только для подписания.'"));
НСтр("ru = 'Внешняя компонента XMLDSig может использоваться только для подписания.'"));
ВыполнитьНаСторонеПослеЦикла(Ошибка, Контекст);
Возврат;
КонецЕсли;
@@ -4204,31 +4459,32 @@
ИмяКриптопровайдера = ИнформацияМодуляКриптографии.Имя;
ОписаниеПрограммы = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеПрограммыПоИмениКриптопровайдера(
ИмяКриптопровайдера, ЭлектроннаяПодписьКлиент.ОбщиеНастройки().ОписанияПрограмм); // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограмм
ИмяКриптопровайдера, ЭлектроннаяПодписьКлиент.ОбщиеНастройки().ОписанияПрограмм); // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
Если ОписаниеПрограммы <> Неопределено Тогда
Контекст.ТипКриптопровайдера = ОписаниеПрограммы.ТипПрограммы;
Контекст.ИмяКриптопровайдера = ИмяКриптопровайдера;
Если Не ТребуетсяПутьКПрограмме() Тогда
ПутьКПрограмме = "";
Иначе
ПерсональныеНастройки = ЭлектроннаяПодписьКлиент.ПерсональныеНастройки();
ПутьКПрограмме = ПерсональныеНастройки.ПутиКПрограммамЭлектроннойПодписиИШифрования.Получить(
ОписаниеПрограммы.Ссылка);
КонецЕсли;
Контекст.ПутьКриптопровайдера = ПутьКПрограмме;
Контекст.ОбъектКомпоненты.НачатьУстановкуПутьККриптопровайдеру(
Новый ОписаниеОповещения("ПослеУстановкиСвойстваКомпонентыПутьККриптопровайдеру", ЭтотОбъект, Контекст),
Контекст.ПутьКриптопровайдера);
Иначе
Если ОписаниеПрограммы = Неопределено Тогда
ЗавершитьОперациюСОшибкой(Контекст,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось определить тип криптопровайдера %1'"),
ИнформацияМодуляКриптографии.Имя));
Возврат;
КонецЕсли;
Контекст.ТипКриптопровайдера = ОписаниеПрограммы.ТипПрограммы;
Контекст.ИмяКриптопровайдера = ИмяКриптопровайдера;
ПолучитьПутьКПрограмме(Новый ОписаниеОповещения("ПослеПолученияПутиКПрограмме",
ЭтотОбъект, Контекст), ОписаниеПрограммы.Ссылка);
КонецПроцедуры
Процедура ПослеПолученияПутиКПрограмме(ОписаниеПути, Контекст) Экспорт
Контекст.ПутьКриптопровайдера = ОписаниеПути.ПутьКПрограмме;
Контекст.ОбъектКомпоненты.НачатьУстановкуПутьККриптопровайдеру(
Новый ОписаниеОповещения("ПослеУстановкиСвойстваКомпонентыПутьККриптопровайдеру", ЭтотОбъект, Контекст),
Контекст.ПутьКриптопровайдера);
КонецПроцедуры
Процедура ПослеУстановкиСвойстваКомпонентыПутьККриптопровайдеру(Контекст) Экспорт
@@ -5118,67 +5374,11 @@
// Для процедур СохранитьСертификатПродолжение, СохранитьЗапросНаСертификатПослеУстановкиРасширения.
// Готовит строку для использования в качестве имени файла.
Функция ПодготовитьСтрокуДляИмениФайла(Строка, ЗаменаПробела = Неопределено)
ЗаменаСимволов = Новый Соответствие;
ЗаменаСимволов.Вставить("\", " ");
ЗаменаСимволов.Вставить("/", " ");
ЗаменаСимволов.Вставить("*", " ");
ЗаменаСимволов.Вставить("<", " ");
ЗаменаСимволов.Вставить(">", " ");
ЗаменаСимволов.Вставить("|", " ");
ЗаменаСимволов.Вставить(":", "");
ЗаменаСимволов.Вставить("""", "");
ЗаменаСимволов.Вставить("?", "");
ЗаменаСимволов.Вставить(Символы.ВК, "");
ЗаменаСимволов.Вставить(Символы.ПС, " ");
ЗаменаСимволов.Вставить(Символы.Таб, " ");
ЗаменаСимволов.Вставить(Символы.НПП, " ");
// замена символов кавычек
ЗаменаСимволов.Вставить(Символ(171), "");
ЗаменаСимволов.Вставить(Символ(187), "");
ЗаменаСимволов.Вставить(Символ(8195), "");
ЗаменаСимволов.Вставить(Символ(8194), "");
ЗаменаСимволов.Вставить(Символ(8216), "");
ЗаменаСимволов.Вставить(Символ(8218), "");
ЗаменаСимволов.Вставить(Символ(8217), "");
ЗаменаСимволов.Вставить(Символ(8220), "");
ЗаменаСимволов.Вставить(Символ(8222), "");
ЗаменаСимволов.Вставить(Символ(8221), "");
СтрокаПодготовленная = "";
КоличествоСимволов = СтрДлина(Строка);
Для НомерСимвола = 1 По КоличествоСимволов Цикл
Символ = Сред(Строка, НомерСимвола, 1);
Если ЗаменаСимволов[Символ] <> Неопределено Тогда
Символ = ЗаменаСимволов[Символ];
КонецЕсли;
СтрокаПодготовленная = СтрокаПодготовленная + Символ;
КонецЦикла;
Если ЗаменаПробела <> Неопределено Тогда
СтрокаПодготовленная = СтрЗаменить(ЗаменаПробела, " ", ЗаменаПробела);
КонецЕсли;
Возврат СокрЛП(СтрокаПодготовленная);
КонецФункции
// Продолжение процедуры ПроверитьПодпись.
Процедура ПроверитьПодписьВМоделиСервиса(Контекст)
Если Не ЭлектроннаяПодписьКлиент.ПроверятьЭлектронныеПодписиНаСервере() Тогда
Если ТипЗнч(Контекст.ИсходныеДанные) = Тип("Строка")
И ЭтоАдресВременногоХранилища(Контекст.ИсходныеДанные) Тогда
Контекст.ИсходныеДанные = ПолучитьИзВременногоХранилища(Контекст.ИсходныеДанные);
КонецЕсли;
Контекст.Вставить("ПроверитьСертификатНаКлиенте");
ПроверитьПодписьНаКлиентеВМоделиСервиса(Контекст);
Возврат;
КонецЕсли;
@@ -5260,8 +5460,8 @@
Контекст.Вставить("СертификатКриптографии", Результат);
Если Контекст.Операция = "Подписание" Тогда
СертификатПодписи = Контекст.ОписаниеДанных.ВыбранныйСертификат;
СертификатПодписи.Отпечаток = Base64Значение(СертификатПодписи.Отпечаток);
СертификатПодписи = Новый Структура("Отпечаток",
Base64Значение(Контекст.ОписаниеДанных.ВыбранныйСертификат.Отпечаток));
МодульХранилищеСертификатовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХранилищеСертификатовКлиент");
МодульХранилищеСертификатовКлиент.НайтиСертификат(Новый ОписаниеОповещения(
"ВыполнитьНаСторонеПослеВыгрузкиСертификатаВМоделиСервиса", ЭтотОбъект, Контекст), СертификатПодписи);
@@ -5315,16 +5515,15 @@
Процедура ВыполнитьНаСторонеПослеВыгрузкиСертификатаВМоделиСервиса(РезультатПоиска, Контекст) Экспорт
Если Не РезультатПоиска.Выполнено Тогда
Ошибка = Новый Структура("ОписаниеОшибки",
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаголовокОшибкиПолученияДанных(Контекст.Операция) + Символы.ПС
+ РезультатПоиска.ОписаниеОшибки.Описание);
Ошибка = Новый Структура("ОписаниеОшибки", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось найти сертификат в облачном сервисе по причине:
|%1'"), РезультатПоиска.ОписаниеОшибки.Описание));
ВыполнитьНаСторонеПослеЦикла(Ошибка, Контекст);
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(РезультатПоиска.Сертификат) Тогда
Ошибка = Новый Структура("ОписаниеОшибки",
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаголовокОшибкиПолученияДанных(Контекст.Операция) + Символы.ПС
+ НСтр("ru = 'Сертификат отсутствует в облачном сервисе (возможно удален).'"));
НСтр("ru = 'Сертификат отсутствует в облачном сервисе (возможно удален).'"));
ВыполнитьНаСторонеПослеЦикла(Ошибка, Контекст);
Возврат;
КонецЕсли;
@@ -5405,10 +5604,10 @@
// Продолжение процедуры ЭлектроннаяПодписьКлиент.ДобавитьСертификат.
//
// Параметры:
// Контекст - Структура:
// Контекст - Структура:
// * ОшибкаНаКлиенте - Структура:
// ** Ошибки - Массив - ИнформацияОбОшибке
// * ОписаниеПрограмм - см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограмм
// ** Ошибки - Массив - ИнформацияОбОшибке
// * ОписаниеПрограмм - см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
//
Процедура ДобавитьСертификатЦиклНачало(Контекст)
@@ -5422,8 +5621,8 @@
КонецЕсли;
Контекст.Индекс = Контекст.Индекс + 1;
Контекст.ОписаниеПрограммы = Контекст.ОписанияПрограмм[Контекст.Индекс];
ОписаниеПрограммы = Контекст.ОписаниеПрограммы; // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограмм
ОписаниеПрограммы = Контекст.ОписанияПрограмм[Контекст.Индекс]; // см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
Контекст.ОписаниеПрограммы = ОписаниеПрограммы;
ПараметрыСоздания = ПараметрыСозданияМенеджераКриптографии();
ПараметрыСоздания.ПоказатьОшибку = Неопределено;
@@ -5496,7 +5695,7 @@
// Контекст - Структура:
// * ОшибкаНаКлиенте - Структура:
// ** Ошибки - Массив
// * ОписаниеПрограмм - см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограмм
// * ОписаниеПрограмм - см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
//
Процедура ДобавитьСертификатЦиклПослеОшибкиШифрования(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
@@ -5517,7 +5716,7 @@
//
// Параметры:
// Контекст - Структура:
// * ОписаниеОшибки - см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограмм
// * ОписаниеОшибки - см. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеПрограммы
//
Процедура ДобавитьСертификатЦиклПослеПодписания(ДанныеПодписи, Контекст) Экспорт
@@ -5633,8 +5832,11 @@
ОшибкаНаСервере = ?(КонтекстДобавления.Свойство("ОшибкаНаСервере"),
КонтекстДобавления.ОшибкаНаСервере, Новый Структура);
ДополнительныеПараметры = Новый Структура("Сертификат",
КонтекстДобавления.ДанныеСертификата);
ПоказатьОшибкуОбращенияКПрограмме(КонтекстДобавления.ЗаголовокФормы,
"", ОшибкаНаКлиенте, ОшибкаНаСервере);
"", ОшибкаНаКлиенте, ОшибкаНаСервере, ДополнительныеПараметры);
КонецПроцедуры
@@ -5663,8 +5865,9 @@
ОбработчикЗавершения = Неопределено,
ДополнительныеФайлы = Неопределено) Экспорт
СопроводительныйТекст = Причина + Символы.ПС + НСтр("ru = 'Информация о компьютере:'")
+ Символы.ПС + Символы.ПС + ДиагностическаяИнформацияОКомпьютере() + Символы.ПС;
СопроводительныйТекст = СокрЛ(СокрП(Причина) + Символы.ПС + Символы.ПС)
+ НСтр("ru = 'Информация о компьютере:'") + Символы.ПС + Символы.ПС
+ ДиагностическаяИнформацияОКомпьютере() + Символы.ПС;
Контекст = Новый Структура;
Контекст.Вставить("ДополнительныеФайлы", ДополнительныеФайлы);
@@ -5685,11 +5888,11 @@
Функция ДиагностическаяИнформацияОПрограммах(Оповещение)
Заголовок = Символы.ПС + НСтр("ru = 'Программы на клиенте:'") + Символы.ПС;
ИспользуемыеПрограммы = ЭлектроннаяПодписьСлужебныйВызовСервера.ИспользуемыеПрограммы();
Если ИспользуемыеПрограммы.Количество() = 0 Тогда
ВыполнитьОбработкуОповещения(Оповещение, Заголовок + НСтр("ru = 'Не используется'"));
ВыполнитьОбработкуОповещения(Оповещение, "");
КонецЕсли;
Заголовок = Символы.ПС + НСтр("ru = 'Программы на клиенте:'") + Символы.ПС;
Контекст = Новый Структура;
Контекст.Вставить("Индекс", 0);
@@ -5703,14 +5906,14 @@
Функция ИнформацияОПрограммахЦиклНачало(Контекст)
ПараметрыСоздания = ПараметрыСозданияМенеджераКриптографии();
ПараметрыСоздания.ПоказатьОшибку = Неопределено;
ПараметрыСоздания.Программа = Контекст.ИспользуемыеПрограммы[Контекст.Индекс].Ссылка;
Оповещение = Новый ОписаниеОповещения(
"ИнформацияОПрограммахПослеСозданияМенеджераКриптографии",
ЭтотОбъект, Контекст);
ПараметрыСоздания = ПараметрыСозданияМенеджераКриптографии();
ПараметрыСоздания.ПоказатьОшибку = Ложь;
ПараметрыСоздания.Программа = Контекст.ИспользуемыеПрограммы[Контекст.Индекс].Ссылка;
СоздатьМенеджерКриптографии(Оповещение, "", ПараметрыСоздания);
КонецФункции
@@ -5726,9 +5929,10 @@
Процедура ИнформацияОПрограммахПослеСозданияМенеджераКриптографии(МенеджерКриптографии, Контекст) Экспорт
Контекст.ДиагностическаяИнформация = Контекст.ДиагностическаяИнформация
+ Контекст.ИспользуемыеПрограммы[Контекст.Индекс].Представление + " - "
+ ?(ТипЗнч(МенеджерКриптографии) = Тип("Строка"), МенеджерКриптографии, "OK")
+ Символы.ПС;
+ ЭлектроннаяПодписьСлужебныйКлиентСервер.ДиагностическаяИнформацияПоПрограмме(
Контекст.ИспользуемыеПрограммы[Контекст.Индекс],
МенеджерКриптографии,
МенеджерКриптографии);
Если Контекст.Индекс = Контекст.ИспользуемыеПрограммы.Количество() - 1 Тогда
ВыполнитьОбработкуОповещения(Контекст.Оповещение, Контекст.ДиагностическаяИнформация);
@@ -5744,7 +5948,7 @@
Контекст.СопроводительныйТекст = Контекст.СопроводительныйТекст + ИнформацияОПрограммах;
Контекст.Вставить("АдресАрхива", ЭлектроннаяПодписьСлужебныйВызовСервера.АдресАрхиваТехническойИнформации(
Контекст.СопроводительныйТекст, Контекст.ДополнительныеФайлы));
Контекст.СопроводительныйТекст, Контекст.ДополнительныеФайлы, ПроверенныеПутиКМодулямПрограмм()));
ФайловаяСистемаКлиент.СохранитьФайл(Новый ОписаниеОповещения(
"СформироватьТехническуюИнформациюПослеСохраненияФайла", ЭтотОбъект, Контекст),
@@ -11,13 +11,16 @@
// Только для внутреннего использования.
//
// Возвращаемое значение:
// ФиксированнаяСтруктура:
// * ИспользоватьЭлектронныеПодписи - Булево
// * ИспользоватьШифрование - Булево
// * ПроверятьЭлектронныеПодписиНаСервере - Булево
// * СоздаватьЭлектронныеПодписиНаСервере - Булево
// * ЗаявлениеНаВыпускСертификатаДоступно - Булево
// * ОписанияПрограмм - Массив из см. ОписаниеПрограмм
// ФиксированнаяСтруктура:
// * ИспользоватьЭлектронныеПодписи - Булево
// * ИспользоватьШифрование - Булево
// * ПроверятьЭлектронныеПодписиНаСервере - Булево
// * СоздаватьЭлектронныеПодписиНаСервере - Булево
// * ЗаявлениеНаВыпускСертификатаДоступно - Булево
// * ОписанияПрограмм - ФиксированныйМассив из см. ОписаниеПрограммы
// * ОписанияПрограммПоСсылке - ФиксированноеСоответствие:
// ** Ключ - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
// ** Значение - см. ОписаниеПрограммы
//
Функция ОбщиеНастройки() Экспорт
@@ -73,37 +76,62 @@
Выборка = Запрос.Выполнить().Выбрать();
ОписанияПрограмм = Новый Массив;
ОписанияПрограммПоСсылке = Новый Соответствие;
ПоставляемыеНастройки = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПоставляемыеНастройкиПрограмм();
Пока Выборка.Следующий() Цикл
Отбор = Новый Структура("ИмяПрограммы, ТипПрограммы", Выборка.ИмяПрограммы, Выборка.ТипПрограммы);
Строки = ПоставляемыеНастройки.НайтиСтроки(Отбор);
Идентификатор = ?(Строки.Количество() = 0, "", Строки[0].Идентификатор);
Если Строки.Количество() = 0 Тогда
Идентификатор = "";
АлгоритмыПроверкиПодписи = Новый Массив;
Иначе
Идентификатор = Строки[0].Идентификатор;
АлгоритмыПроверкиПодписи = Строки[0].АлгоритмыПроверкиПодписи;
Если АлгоритмыПроверкиПодписи.Найти(Строки[0].АлгоритмПодписи) = Неопределено Тогда
АлгоритмыПроверкиПодписи.Вставить(0, Строки[0].АлгоритмПодписи);
КонецЕсли;
Для Каждого АлгоритмПодписи Из Строки[0].АлгоритмыПодписи Цикл
Если АлгоритмыПроверкиПодписи.Найти(АлгоритмПодписи) = Неопределено Тогда
АлгоритмыПроверкиПодписи.Добавить(АлгоритмПодписи);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Описание = ОписаниеПрограмм();
Описание = ОписаниеПрограммы();
ЗаполнитьЗначенияСвойств(Описание, Выборка);
Описание.Идентификатор = Идентификатор;
ОписанияПрограмм.Добавить(Новый ФиксированнаяСтруктура(Описание));
Описание.АлгоритмыПроверкиПодписи = АлгоритмыПроверкиПодписи;
ФиксированноеОписание = Новый ФиксированнаяСтруктура(Описание);
ОписанияПрограмм.Добавить(ФиксированноеОписание);
ОписанияПрограммПоСсылке.Вставить(Описание.Ссылка, ФиксированноеОписание);
КонецЦикла;
ОбщиеНастройки.Вставить("ОписанияПрограмм", Новый ФиксированныйМассив(ОписанияПрограмм));
ОбщиеНастройки.Вставить("ОписанияПрограммПоСсылке", Новый ФиксированноеСоответствие(ОписанияПрограммПоСсылке));
ОбщиеНастройки.Вставить("ПоставляемыеПутиКМодулямПрограмм",
Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПоставляемыеПутиКМодулямПрограмм());
ОбщиеНастройки.Вставить("ВерсияНастроек", Строка(Новый УникальныйИдентификатор));
Возврат Новый ФиксированнаяСтруктура(ОбщиеНастройки);
КонецФункции
// Возвращаемое значение:
// Структура:
// * Ссылка - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
// * Наименование - Строка
// * ИмяПрограммы - Строка
// * ТипПрограммы - Число
// * АлгоритмПодписи - Строка
// * АлгоритмХеширования - Строка
// * АлгоритмШифрования - Строка
// * Идентификатор - Строка
// Структура:
// * Ссылка - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
// * Наименование - Строка
// * ИмяПрограммы - Строка
// * ТипПрограммы - Число
// * АлгоритмПодписи - Строка
// * АлгоритмХеширования - Строка
// * АлгоритмШифрования - Строка
// * Идентификатор - Строка
//
Функция ОписаниеПрограмм() Экспорт
Функция ОписаниеПрограммы() Экспорт
Описание = Новый Структура;
Описание.Вставить("Ссылка");
Описание.Вставить("Наименование");
@@ -113,7 +141,10 @@
Описание.Вставить("АлгоритмХеширования");
Описание.Вставить("АлгоритмШифрования");
Описание.Вставить("Идентификатор");
Описание.Вставить("АлгоритмыПроверкиПодписи");
Возврат Описание;
КонецФункции
Функция ТипыВладельцев(ТолькоСсылки = Ложь) Экспорт
@@ -150,4 +181,74 @@
КонецФункции
Функция ПутиКПрограммамНаСерверахLinux(ИмяКомпьютера) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИмяКомпьютера", ИмяКомпьютера);
Запрос.Текст =
"ВЫБРАТЬ
| ПутиКПрограмме.Программа,
| ПутиКПрограмме.ПутьКПрограмме
|ИЗ
| РегистрСведений.ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux КАК ПутиКПрограмме
|ГДЕ
| ПутиКПрограмме.ИмяКомпьютера = &ИмяКомпьютера";
ПутиКПрограммамНаСерверахLinux = Новый Соответствие;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ОписаниеПути = Новый Структура;
ОписаниеПути.Вставить("ПутьКПрограмме", Выборка.ПутьКПрограмме);
ОписаниеПути.Вставить("Существует", ОдинИзМодулейСуществует(Выборка.ПутьКПрограмме));
ПутиКПрограммамНаСерверахLinux.Вставить(Выборка.Программа, ОписаниеПути);
КонецЦикла;
ОбщиеНастройки = ЭлектроннаяПодпись.ОбщиеНастройки();
ТипПлатформыСтрокой = ЭлектроннаяПодписьСлужебныйКлиентСервер.ТипПлатформыСтрокой();
Для Каждого ОписаниеПрограммы Из ОбщиеНастройки.ОписанияПрограмм Цикл
Если ПутиКПрограммамНаСерверахLinux.Получить(ОписаниеПрограммы.Ссылка) <> Неопределено Тогда
Продолжить;
КонецЕсли;
Для Каждого ПутиКМодулямПрограмм Из ОбщиеНастройки.ПоставляемыеПутиКМодулямПрограмм Цикл
Если Не СтрНачинаетсяС(ОписаниеПрограммы.Идентификатор, ПутиКМодулямПрограмм.Ключ) Тогда
Продолжить;
КонецЕсли;
ПутиКМодулямПрограммы = ПутиКМодулямПрограмм.Значение.Получить(ТипПлатформыСтрокой);
Если ПутиКМодулямПрограммы = Неопределено Тогда
Продолжить;
КонецЕсли;
ОписаниеПути = Новый Структура("ПутьКПрограмме, Существует", ПутиКМодулямПрограммы[0], Ложь);
ПутиКПрограммамНаСерверахLinux.Вставить(ОписаниеПрограммы.Ссылка, ОписаниеПути);
Для Каждого ПутиКМодулям Из ПутиКМодулямПрограммы Цикл
Если Не ОдинИзМодулейСуществует(ПутиКМодулям) Тогда
Продолжить;
КонецЕсли;
ОписаниеПути.ПутьКПрограмме = ПутиКМодулям;
ОписаниеПути.Существует = Истина;
Прервать;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Возврат Новый ФиксированноеСоответствие(ПутиКПрограммамНаСерверахLinux);
КонецФункции
Функция ОдинИзМодулейСуществует(ПутиКМодулям)
МодулиПрограммы = СтрРазделить(ПутиКМодулям, ":");
Результат = Ложь;
Для Каждого МодульПрограммы Из МодулиПрограммы Цикл
Файл = Новый Файл(МодульПрограммы);
Если Файл.Существует() Тогда
Результат = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
#КонецОбласти
+15 -15
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="fcbdb199-c924-4fec-a654-1037a7a976c6">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1e2f928c-e6b6-11ea-9290-0242ac110002">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="53518cf9-bee2-4a7b-a4e2-12dae12b3cef"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="86ab0387-1c81-44a3-9a11-80b98df5e6a5"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="fc2f6f1a-c98f-4362-969e-de2fadec9f82"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="388272c4-c08c-413d-ade8-29533b57d595"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="0f9f6d5f-a18a-44b0-b3a1-64f2b9da72d2"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="5d57e676-4d3c-48b8-8af9-f55e3a4a0194"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="44bce8fe-b912-4c30-9aba-cd13dfe134d1"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="1e2f928d-e6b6-11ea-9290-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="1e2f92be-e6b6-11ea-9290-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="1e2f92bf-e6b6-11ea-9290-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="1e2f92c8-e6b6-11ea-9290-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="1e2f92c9-e6b6-11ea-9290-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="1e2f92d2-e6b6-11ea-9290-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="dbc9ff47-da7a-452c-a80b-54deba3778a9"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.3.229</version>
<version>3.1.3.250</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -1423,9 +1423,9 @@
<commonCommands>CommonCommand.СоздатьЗаметкуПоПредмету</commonCommands>
<commonCommands>CommonCommand.СоставОтправляемыхДанных</commonCommands>
<commonCommands>CommonCommand.СценарииСинхронизации</commonCommands>
<commonCommands>CommonCommand.УдалитьНастройкуСинхронизации</commonCommands>
<commonCommands>CommonCommand.УстановитьРасширениеДляРаботыС1СПредприятием</commonCommands>
<commonCommands>CommonCommand.ФайлыВТоме</commonCommands>
<commonCommands>CommonCommand.УдалитьНастройкуСинхронизации</commonCommands>
<commandGroups>CommandGroup.Взаимодействия</commandGroups>
<commandGroups>CommandGroup.Информация</commandGroups>
<commandGroups>CommandGroup.Органайзер</commandGroups>
@@ -1559,9 +1559,9 @@
<constants>Constant.СписокРасширенийФайловOpenDocumentОбластиДанных</constants>
<constants>Constant.СпособХраненияФайлов</constants>
<constants>Constant.СтатусОбновленияКонфигурации</constants>
<constants>Constant.УдалитьЛогинДоступаКСервисуMorpher</constants>
<constants>Constant.ХранитьФайлыВТомахНаДиске</constants>
<constants>Constant.ЭтоАвтономноеРабочееМесто</constants>
<constants>Constant.УдалитьЛогинДоступаКСервисуMorpher</constants>
<commonForms>CommonForm.АвтономнаяРабота</commonForms>
<commonForms>CommonForm.АвтономнаяРаботаВМоделиСервиса</commonForms>
<commonForms>CommonForm.АдреснаяКнига</commonForms>
@@ -2034,15 +2034,15 @@
<informationRegisters>InformationRegister.СубъектыДляСкрытияПерсональныхДанных</informationRegisters>
<informationRegisters>InformationRegister.ТаблицыГруппДоступа</informationRegisters>
<informationRegisters>InformationRegister.УведомленияОПрочтении</informationRegisters>
<informationRegisters>InformationRegister.УдаляемыеОбъекты</informationRegisters>
<informationRegisters>InformationRegister.УровниСокращенийАдресныхСведений</informationRegisters>
<informationRegisters>InformationRegister.ФайлыВРабочемКаталоге</informationRegisters>
<informationRegisters>InformationRegister.ЭлектронныеПодписи</informationRegisters>
<informationRegisters>InformationRegister.УдалитьЗамерыВремени3</informationRegisters>
<informationRegisters>InformationRegister.УдалитьНастройкиТранспортаОбмена</informationRegisters>
<informationRegisters>InformationRegister.УдалитьОбластиПерсональныхДанных</informationRegisters>
<informationRegisters>InformationRegister.УдалитьРезультатыОбменаДанными</informationRegisters>
<informationRegisters>InformationRegister.УдалитьХранимыеФайлыВерсий</informationRegisters>
<informationRegisters>InformationRegister.УдаляемыеОбъекты</informationRegisters>
<informationRegisters>InformationRegister.УровниСокращенийАдресныхСведений</informationRegisters>
<informationRegisters>InformationRegister.ФайлыВРабочемКаталоге</informationRegisters>
<informationRegisters>InformationRegister.ЭлектронныеПодписи</informationRegisters>
<chartsOfCharacteristicTypes>ChartOfCharacteristicTypes.ВопросыДляАнкетирования</chartsOfCharacteristicTypes>
<chartsOfCharacteristicTypes>ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения</chartsOfCharacteristicTypes>
<chartsOfCharacteristicTypes>ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач</chartsOfCharacteristicTypes>
@@ -1 +1 @@
{6,1,1,bfa0f7e8-dcfc-445f-8593-f06d87d6cd0d,1,3e1eba82-8f41-433a-a8da-a871f48f3d7a,"3.1.3.229","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6172,1,0,fcbdb199-c924-4fec-a654-1037a7a976c6,fcbdb199-c924-4fec-a654-1037a7a976c6,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5Line truncated
{6,1,1,634d1ef2-e6b6-11ea-7c96-0242ac110002,1,56a04cf6-e6b6-11ea-0686-0242ac110002,"3.1.3.250","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6172,1,0,1e2f928c-e6b6-11ea-9290-0242ac110002,1e2f928c-e6b6-11ea-9290-0242ac110002,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5Line truncated
@@ -462,7 +462,7 @@
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InCommandBar</locationInCommandBar>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</items>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
@@ -45,7 +45,7 @@
Функция ВерсияКалендарей() Экспорт
Возврат 12;
Возврат 13;
КонецФункции
@@ -57,7 +57,7 @@
Функция ВерсияОбновленияДанныхПроизводственныхКалендарей() Экспорт
Возврат "3.1.3.195";
Возврат "3.1.3.235";
КонецФункции
@@ -453,7 +453,8 @@
<Item Calendar="20" Year="2020" DayType="Праздник" Date="20200526" SwapDate=""/>
<Item Calendar="20" Year="2020" DayType="Суббота" Date="20200527" SwapDate="20200523"/>
<Item Calendar="20" Year="2020" DayType="Воскресенье" Date="20200528" SwapDate="20200524"/>
<Item Calendar="20" Year="2020" DayType="Предпраздничный" Date="20200730" SwapDate=""/>
<Item Calendar="20" Year="2020" DayType="Предпраздничный" Date="20200729" SwapDate=""/>
<Item Calendar="20" Year="2020" DayType="Праздник" Date="20200730" SwapDate=""/>
<Item Calendar="20" Year="2020" DayType="Праздник" Date="20200731" SwapDate=""/>
<Item Calendar="21" Year="2016" DayType="Предпраздничный" Date="20160623" SwapDate=""/>
<Item Calendar="21" Year="2016" DayType="Праздник" Date="20160624" SwapDate=""/>
@@ -11,21 +11,12 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СведенияОВладельце = Параметры.СведенияОВладельце;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, СведенияОВладельце);
ЗаполнитьСведенияОВладельце(ЭтотОбъект, Параметры.СведенияОВладельце);
Если СведенияОВладельце.Пол = "Мужской" Тогда
Пол = 1;
ИначеЕсли СведенияОВладельце.Пол = "Женский" Тогда
Пол = 2;
Если Параметры.ТолькоПросмотр Тогда
Элементы.ВсеЭлементы.ТолькоПросмотр = Истина;
КонецЕсли;
Элементы.Должность.Видимость = Не СведенияОВладельце.ЭтоИндивидуальныйПредприниматель;
Элементы.Подразделение.Видимость = Не СведенияОВладельце.ЭтоИндивидуальныйПредприниматель;
ПриИзмененииВидаДокументаНаСервере();
УстановитьТолькоПросмотр();
КонецПроцедуры
&НаКлиенте
@@ -41,6 +32,18 @@
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия <> "ИзменениеВладельцаВЗаявленииНаВыпускСертификата" Тогда
Возврат;
КонецЕсли;
ОчиститьСообщения();
ЗаполнитьСведенияОВладельце(ЭтотОбъект, Параметр);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
@@ -58,6 +61,8 @@
&НаКлиенте
Процедура СтраховойНомерПФРПриИзменении(Элемент)
Модифицированность = Истина;
СтраховойНомерПФР = ТолькоЦифры(СтраховойНомерПФР);
КонецПроцедуры
@@ -85,7 +90,7 @@
Процедура ДокументВидПриИзменении(Элемент)
Модифицированность = Истина;
ПриИзмененииВидаДокументаНаСервере();
ПриИзмененииВидаДокумента(ЭтотОбъект);
КонецПроцедуры
@@ -107,6 +112,13 @@
КонецПроцедуры
&НаКлиенте
Процедура ДокументДатаВыдачиПриИзменении(Элемент)
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ДокументКодПодразделенияПриИзменении(Элемент)
@@ -165,23 +177,50 @@
&НаКлиенте
Процедура СохранитьИзмененияИЗакрыть()
Если Не Модифицированность Тогда
Закрыть(Новый Структура("СведенияОВладельце, Обновить", СведенияОВладельце, Ложь));
ИначеЕсли СохранитьИзмененияНаСервере() Тогда
Модифицированность = Ложь;
Закрыть(Новый Структура("СведенияОВладельце, Обновить", СведенияОВладельце, Истина));
ОчиститьСообщения();
Если Не ПроверитьСведенияОВладельце() Тогда
Если Не Элементы.ВсеЭлементы.ТолькоПросмотр Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("СохранениеПослеОтветаНаВопрос", ЭтотОбъект),
НСтр("ru = 'Есть ошибки. Все равно сохранить изменения?'"),
РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет);
КонецЕсли;
Возврат;
КонецЕсли;
Если Не Модифицированность Тогда
Закрыть(Неопределено);
Возврат;
КонецЕсли;
СохранениеПослеОтветаНаВопрос(КодВозвратаДиалога.Да, Неопределено);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииВидаДокументаНаСервере()
&НаКлиенте
Процедура СохранениеПослеОтветаНаВопрос(Ответ, Контекст) Экспорт
Если ДокументВид = "" Тогда
ДокументВид = "21";
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Если ДокументВид = "21" Тогда
ПодготовитьИзмененияНаСервере();
Модифицированность = Ложь;
Закрыть(СведенияОВладельце);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПриИзмененииВидаДокумента(Форма)
Если Форма.ДокументВид = "" Тогда
Форма.ДокументВид = "21";
КонецЕсли;
Элементы = Форма.Элементы;
Если Форма.ДокументВид = "21" Тогда
Элементы.ДокументНомер.Заголовок = НСтр("ru = 'Серия и номер'");
Элементы.ДокументНомер.Маска = "99 99 999999";
Элементы.ДокументКодПодразделения.Видимость = Истина;
@@ -189,21 +228,17 @@
Элементы.ДокументНомер.Заголовок = НСтр("ru = 'Номер'");
Элементы.ДокументНомер.Маска = "";
Элементы.ДокументКодПодразделения.Видимость = Ложь;
ДокументКодПодразделения = "";
Форма.ДокументКодПодразделения = "";
КонецЕсли;
Если ДокументВид = 91 Тогда
ДокументВид = "";
Если Форма.ДокументВид = 91 Тогда
Форма.ДокументВид = "";
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СохранитьИзмененияНаСервере()
Если Не ПроверитьСведенияОВладельце() Тогда
Возврат Ложь;
КонецЕсли;
Функция ПодготовитьИзмененияНаСервере()
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
@@ -230,60 +265,37 @@
&НаСервере
Функция ПроверитьСведенияОВладельце()
ИсключаемыеРеквизиты = Новый Массив;
ИсключаемыеРеквизиты.Добавить("ЭтоИндивидуальныйПредприниматель");
ИсключаемыеРеквизиты.Добавить("ГражданствоОКСМКодАльфа3");
ИсключаемыеРеквизиты.Добавить("ГражданствоПредставление");
ИсключаемыеРеквизиты.Добавить("Подразделение");
ИсключаемыеРеквизиты.Добавить("Отчество");
Если СведенияОВладельце.ЭтоИндивидуальныйПредприниматель Тогда
ИсключаемыеРеквизиты.Добавить("Должность");
КонецЕсли;
Если ДокументВид <> "21" Тогда
ИсключаемыеРеквизиты.Добавить("ДокументНомер");
ИсключаемыеРеквизиты.Добавить("ДокументКодПодразделения");
КонецЕсли;
ОбработкаМодуль = Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата;
ЭтоИП = СведенияОВладельце.ЭтоИндивидуальныйПредприниматель;
ПроверяемыеРеквизиты = Новый Массив;
Для Каждого Реквизит Из СведенияОВладельце Цикл
ИмяРеквизита = Реквизит.Ключ;
Если ИсключаемыеРеквизиты.Найти(ИмяРеквизита) <> Неопределено Тогда
Продолжить;
КонецЕсли;
ПараметрыРеквизитаДляПроверки = Новый Структура;
ПараметрыРеквизитаДляПроверки.Вставить("Имя", ИмяРеквизита);
ПараметрыРеквизитаДляПроверки.Вставить("Значение", ЭтотОбъект[ИмяРеквизита]);
ПараметрыРеквизитаДляПроверки.Вставить("ПолеСообщения", ИмяРеквизита);
Элемент = Элементы[ИмяРеквизита]; // ПолеФормы
ПараметрыРеквизитаДляПроверки.Вставить("ТекстНезаполненного",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Поле ""%1"" не заполнено'"),
?(ИмяРеквизита = "Фамилия", "Фамилия", Элемент.Заголовок)));
ПроверяемыеРеквизиты.Добавить(ПараметрыРеквизитаДляПроверки);
КонецЦикла;
ОбработкаМодуль.ДобавитьРеквизитыДляПроверки(ЭтотОбъект,
ПроверяемыеРеквизиты, ОбработкаМодуль.РеквизитыВладельцаСертификата(ЭтотОбъект, ЭтоИП));
Возврат Не Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ПроверитьЗаполнениеРеквизитов(
ПроверяемыеРеквизиты);
ПроверяемыеРеквизиты, ЭтоИП);
КонецФункции
&НаСервере
Процедура УстановитьТолькоПросмотр()
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьСведенияОВладельце(Форма, СведенияОВладельце)
Элементы.ГруппаФИО.ТолькоПросмотр = Параметры.ТолькоПросмотр;
Элементы.ГруппаДатаРожденияПол.ТолькоПросмотр = Параметры.ТолькоПросмотр;
Элементы.СтраховойНомерПФР.ТолькоПросмотр = Параметры.ТолькоПросмотр;
Элементы.ГруппаГражданство.ТолькоПросмотр = Параметры.ТолькоПросмотр;
Элементы.Должность.ТолькоПросмотр = Параметры.ТолькоПросмотр;
Элементы.Подразделение.ТолькоПросмотр = Параметры.ТолькоПросмотр;
Элементы.ГруппаУдостоверениеЛичности.ТолькоПросмотр = Параметры.ТолькоПросмотр;
Элементы.ГруппаКонтактнаяИнформация.ТолькоПросмотр = Параметры.ТолькоПросмотр;
ЗаполнитьЗначенияСвойств(Форма, СведенияОВладельце);
Форма.СведенияОВладельце = СведенияОВладельце;
Если Форма.СведенияОВладельце.Пол = "Мужской" Тогда
Форма.Пол = 1;
ИначеЕсли Форма.СведенияОВладельце.Пол = "Женский" Тогда
Форма.Пол = 2;
КонецЕсли;
Элементы = Форма.Элементы;
Элементы.Должность.Видимость = Не Форма.СведенияОВладельце.ЭтоИндивидуальныйПредприниматель;
Элементы.Подразделение.Видимость = Не Форма.СведенияОВладельце.ЭтоИндивидуальныйПредприниматель;
ПриИзмененииВидаДокумента(Форма);
Форма.Модифицированность = Ложь;
КонецПроцедуры
@@ -18,10 +18,7 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СведенияОбОрганизации = Параметры.СведенияОбОрганизации;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, СведенияОбОрганизации);
Элементы.КПП.Видимость = Не ЭтоИндивидуальныйПредприниматель;
ЗаполнитьСведенияОбОрганизации(ЭтотОбъект, Параметры.СведенияОбОрганизации);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
@@ -39,7 +36,9 @@
ПроверитьАдрес("ЮридическийАдрес");
ПроверитьАдрес("ФактическийАдрес");
УстановитьТолькоПросмотр();
Если Параметры.ТолькоПросмотр Тогда
Элементы.ВсеЭлементы.ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
@@ -65,6 +64,22 @@
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия <> "ИзменениеОрганизацииВЗаявленииНаВыпускСертификата" Тогда
Возврат;
КонецЕсли;
ОчиститьСообщения();
ЗаполнитьСведенияОбОрганизации(ЭтотОбъект, Параметр);
РеквизитыПроверкиАдреса.ЮридическийАдрес = Истина;
РеквизитыПроверкиАдреса.ФактическийАдрес = Истина;
ПодключитьОбработчикОжидания("ПроверитьАдресОбработчикОжидания", 0.1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
@@ -193,14 +208,14 @@
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьТолькоПросмотр()
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьСведенияОбОрганизации(Форма, СведенияОбОрганизации)
Элементы.ЭтоИндивидуальныйПредприниматель.ТолькоПросмотр = Параметры.ТолькоПросмотр;
Элементы.НаименованиеСокращенное.ТолькоПросмотр = Параметры.ТолькоПросмотр;
Элементы.НаименованиеПолное.ТолькоПросмотр = Параметры.ТолькоПросмотр;
Элементы.ГруппаНомеров.ТолькоПросмотр = Параметры.ТолькоПросмотр;
Элементы.ГруппаКонтактнаяИнформацияОрганизации.ТолькоПросмотр = Параметры.ТолькоПросмотр;
ЗаполнитьЗначенияСвойств(Форма, СведенияОбОрганизации);
Форма.СведенияОбОрганизации = СведенияОбОрганизации;
Форма.Элементы.КПП.Видимость = Не Форма.ЭтоИндивидуальныйПредприниматель;
Форма.Модифицированность = Ложь;
КонецПроцедуры
@@ -232,20 +247,40 @@
&НаКлиенте
Процедура СохранитьИзмененияИЗакрыть()
ОчиститьСообщения();
Если Не ПроверитьСведенияОбОрганизации() Тогда
Если Не Элементы.ВсеЭлементы.ТолькоПросмотр Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("СохранениеПослеОтветаНаВопрос", ЭтотОбъект),
НСтр("ru = 'Есть ошибки. Все равно сохранить изменения?'"),
РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет);
КонецЕсли;
Возврат;
КонецЕсли;
Если Не Модифицированность Тогда
Закрыть(Неопределено);
Возврат;
ИначеЕсли Не ПроверитьСведенияОбОрганизации() Тогда
КонецЕсли;
СохранениеПослеОтветаНаВопрос(КодВозвратаДиалога.Да, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура СохранениеПослеОтветаНаВопрос(Ответ, Контекст) Экспорт
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Модифицированность = Ложь;
ЗаполнитьЗначенияСвойств(СведенияОбОрганизации, ЭтотОбъект);
СведенияОбОрганизации.Телефон = ЭтотОбъект.ТелефонXML;
СведенияОбОрганизации.ФактическийАдрес = ЭтотОбъект.ФактическийАдресXML;
СведенияОбОрганизации.ЮридическийАдрес = ЭтотОбъект.ЮридическийАдресXML;
Модифицированность = Ложь;
Закрыть(СведенияОбОрганизации);
КонецПроцедуры
@@ -269,8 +304,8 @@
КонецПроцедуры
// Параметры:
// ВидКИ - см. УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации
// ЗаголовокФормы - Строка
// ВидКИ - см. УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации
// ЗаголовокФормы - Строка
//
&НаКлиенте
Процедура УстановитьНаименованиеКонтактнойИнформации(ВидКИ, ЗаголовокФормы)
@@ -375,46 +410,15 @@
&НаСервере
Функция ПроверитьСведенияОбОрганизации()
ПроверяемыеРеквизиты = Новый Массив;
НеобязательныеРеквизиты = Новый Структура(
"ЭтоИндивидуальныйПредприниматель, Организация, БИК, РасчетныйСчет, КорреспондентскийСчет");
ОбработкаМодуль = Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата;
Для Каждого Реквизит Из СведенияОбОрганизации Цикл
ИмяРеквизита = Реквизит.Ключ;
Если СтрНайти(ИмяРеквизита, "XML") > 0
Или НеобязательныеРеквизиты.Свойство(ИмяРеквизита)
Или (ЭтоИндивидуальныйПредприниматель
И ИмяРеквизита = "КПП") Тогда
Продолжить;
КонецЕсли;
ПараметрыРеквизитаДляПроверки = Новый Структура;
ПараметрыРеквизитаДляПроверки.Вставить("Имя", ИмяРеквизита);
Если ИмяРеквизита = "Телефон"
Или ИмяРеквизита = "ФактическийАдрес"
Или ИмяРеквизита = "ЮридическийАдрес" Тогда
ПараметрыРеквизитаДляПроверки.Вставить("Значение", ЭтотОбъект[ИмяРеквизита + "XML"]);
Иначе
ПараметрыРеквизитаДляПроверки.Вставить("Значение", ЭтотОбъект[ИмяРеквизита]);
КонецЕсли;
ПараметрыРеквизитаДляПроверки.Вставить("ПолеСообщения", ИмяРеквизита);
Элемент = Элементы[ИмяРеквизита]; // ПолеФормы
ПараметрыРеквизитаДляПроверки.Вставить("ТекстНезаполненного",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Поле ""%1"" не заполнено'"), Элемент.Заголовок));
ПроверяемыеРеквизиты.Добавить(ПараметрыРеквизитаДляПроверки);
КонецЦикла;
ПроверяемыеРеквизиты = Новый Массив;
ОбработкаМодуль.ДобавитьРеквизитыДляПроверки(ЭтотОбъект,
ПроверяемыеРеквизиты, ОбработкаМодуль.РеквизитыОрганизации(ЭтотОбъект));
Возврат Не Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ПроверитьЗаполнениеРеквизитов(
ПроверяемыеРеквизиты, ЭтоИндивидуальныйПредприниматель);
КонецФункции
#КонецОбласти
@@ -272,13 +272,53 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>СостояниеОбработкиЗаявленияАктуально</name>
<id>1</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ИдентификаторДокументооборота</name>
<id>8</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ДатаОбновленияСостояния</name>
<id>9</id>
<valueType>
<types>Date</types>
<dateQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<parameters>
<name>СостояниеОбработкиЗаявления</name>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<keyParameter>true</keyParameter>
</parameters>
<parameters>
<name>АдресЗапросаНаСертификат</name>
@@ -286,7 +326,6 @@
<types>String</types>
<stringQualifiers/>
</valueType>
<keyParameter>true</keyParameter>
</parameters>
<parameters>
<name>ИмяФайла</name>
@@ -294,7 +333,6 @@
<types>String</types>
<stringQualifiers/>
</valueType>
<keyParameter>true</keyParameter>
</parameters>
<parameters>
<name>АдресСертификата</name>
@@ -302,7 +340,6 @@
<types>String</types>
<stringQualifiers/>
</valueType>
<keyParameter>true</keyParameter>
</parameters>
<parameters>
<name>АдресКорневогоСертификата</name>
@@ -310,7 +347,6 @@
<types>String</types>
<stringQualifiers/>
</valueType>
<keyParameter>true</keyParameter>
</parameters>
<parameters>
<name>АдресОтветаСервиса</name>
@@ -318,7 +354,32 @@
<types>String</types>
<stringQualifiers/>
</valueType>
<keyParameter>true</keyParameter>
</parameters>
<parameters>
<name>СостояниеЗаявления</name>
<valueType>
<types>EnumRef.СостоянияЗаявленияНаВыпускСертификата</types>
</valueType>
</parameters>
<parameters>
<name>СостояниеОбработкиЗаявленияАктуально</name>
<valueType>
<types>Boolean</types>
</valueType>
</parameters>
<parameters>
<name>ИдентификаторДокументооборота</name>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
</parameters>
<parameters>
<name>ДатаОбновленияСостояния</name>
<valueType>
<types>Date</types>
<dateQualifiers/>
</valueType>
</parameters>
<commandInterface>
<navigationPanel/>
@@ -12,16 +12,14 @@
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры,
"ИмяФайла, АдресЗапросаНаСертификат, АдресСертификата,"
+ "АдресКорневогоСертификата, АдресОтветаСервиса, СостояниеОбработкиЗаявления");
"ИмяФайла, ИдентификаторДокументооборота, АдресЗапросаНаСертификат, АдресСертификата,"
+ "АдресКорневогоСертификата, АдресОтветаСервиса, СостояниеОбработкиЗаявления,"
+ "ДатаОбновленияСостояния, СостояниеОбработкиЗаявленияАктуально");
Если ПустаяСтрока(АдресСертификата)
Или ПустаяСтрока(АдресКорневогоСертификата) Тогда
Если Параметры.СостояниеЗаявления <> Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено Тогда
Элементы.ДекорацияСертификаты.Видимость = Ложь;
Элементы.ДекорацияИнформацияДляПоддержки.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(
НСтр("ru = 'В случае ошибки обратитесь в службу поддержки фирмы ""1С"", предоставив <a href = ""ИнформацияДляПоддержки"">техническую информацию о возникшей проблеме</a>.'"));
КонецЕсли;
КонецПроцедуры
@@ -37,7 +35,7 @@
ЭлектроннаяПодписьСлужебныйКлиент.СохранитьСертификат(
Неопределено,
?(НавигационнаяСсылка = "Сертификат", АдресСертификата, АдресКорневогоСертификата),
?(НавигационнаяСсылка = "Сертификат", ИмяФайла, НСтр("ru = 'Корневой сертификат ООО НПЦ 1С'")));
?(НавигационнаяСсылка = "Сертификат", ИмяФайла, НСтр("ru = 'Корневой сертификат'")));
КонецПроцедуры
@@ -45,6 +43,13 @@
Процедура ДекорацияИнформацияДляПоддержкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Не СостояниеОбработкиЗаявленияАктуально Тогда
ПоказатьПредупреждение(,
НСтр("ru = 'Для сбора технической информации о возникшей проблеме необходимо обновить состояние заявления.'"));
Возврат;
КонецЕсли;
ФайловаяСистемаКлиент.СохранитьФайл(
Неопределено, АдресАрхиваИнформацииДляПоддержки(), "service_info.zip");
@@ -63,10 +68,20 @@
ВременныеФайлы.Добавить(ПолучитьИмяВременногоФайла("txt"));
ТекстСостояния = Новый ТекстовыйДокумент;
ТекстСостояния.УстановитьТекст(СостояниеОбработкиЗаявления);
ТекстСостояния.ДобавитьСтроку(НСтр("ru = 'Идентификатор документооборота'")
+ ": " + Строка(ИдентификаторДокументооборота));
ТекстСостояния.ДобавитьСтроку(НСтр("ru = 'Состояние обработки заявления'")
+ " (" + Формат(ДатаОбновленияСостояния, "ДЛФ=DT") + ")"
+ ":" + Символы.ПС + СостояниеОбработкиЗаявления + Символы.ПС);
ДобавитьДанныеВАрхив(АрхивИнформации, АдресЗапросаНаСертификат, "p10", ВременныеФайлы, ТекстСостояния);
ДобавитьДанныеВАрхив(АрхивИнформации, АдресОтветаСервиса, "zip", ВременныеФайлы, ТекстСостояния);
ДобавитьДанныеВАрхив(АрхивИнформации, АдресЗапросаНаСертификат, "p10", ВременныеФайлы, ТекстСостояния,
НСтр("ru = 'Запрос на сертификат'"));
ДобавитьДанныеВАрхив(АрхивИнформации, АдресОтветаСервиса, "zip", ВременныеФайлы, ТекстСостояния,
НСтр("ru = 'Ответ сервиса 1С: Подпись'"));
ДобавитьДанныеВАрхив(АрхивИнформации, АдресКорневогоСертификата, "cer", ВременныеФайлы, ТекстСостояния,
НСтр("ru = 'Полученный корневой сертификат'"));
ДобавитьДанныеВАрхив(АрхивИнформации, АдресСертификата, "cer", ВременныеФайлы, ТекстСостояния,
НСтр("ru = 'Полученный сертификат'"));
ТекстСостояния.Записать(ВременныеФайлы[0]);
АрхивИнформации.Добавить(ВременныеФайлы[0]);
@@ -82,32 +97,26 @@
КонецФункции
&НаСервереБезКонтекста
Процедура ДобавитьДанныеВАрхив(Архив, АдресДанных, Расширение, ВременныеФайлы, ТекстСостояния)
Процедура ДобавитьДанныеВАрхив(Архив, АдресДанных, Расширение, ВременныеФайлы, ТекстСостояния, ПредставлениеДанных)
ТипФайла = ?(Расширение = "p10",
НСтр("ru = 'Запрос на сертификат'"), НСтр("ru = 'Ответ сервиса 1С: Подпись'"));
Если ЗначениеЗаполнено(АдресДанных) Тогда
Если Не ЗначениеЗаполнено(АдресДанных) Тогда
Возврат;
КонецЕсли;
Данные = ПолучитьИзВременногоХранилища(АдресДанных);
Если ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда
ФайлДанных = ПолучитьИмяВременногоФайла(Расширение);
Данные.Записать(ФайлДанных);
Архив.Добавить(ФайлДанных);
ВременныеФайлы.Добавить(ФайлДанных);
Данные = ПолучитьИзВременногоХранилища(АдресДанных);
Если ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда
ФайлДанных = ПолучитьИмяВременногоФайла(Расширение);
Данные.Записать(ФайлДанных);
Архив.Добавить(ФайлДанных);
ВременныеФайлы.Добавить(ФайлДанных);
Иначе
ТекстСостояния.ДобавитьСтроку(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось добавить %1. Данные во временном хранилище содержат тип %2.'"),
ТипФайла, Строка(ТипЗнч(Данные))));
КонецЕсли;
Иначе
ТекстСостояния.ДобавитьСтроку(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось добавить %1. Не заполнен адрес файла во временном хранилище.'"), ТипФайла));
НСтр("ru = 'Не удалось добавить %1. Данные во временном хранилище содержат тип %2.'"),
ПредставлениеДанных, Строка(ТипЗнч(Данные))));
КонецЕсли;
КонецПроцедуры
@@ -176,6 +176,7 @@
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<markRequiredComplete>true</markRequiredComplete>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
@@ -185,6 +186,10 @@
<event>StartChoice</event>
<name>НаименованиеСокращенноеНачалоВыбора</name>
</handlers>
<handlers>
<event>Opening</event>
<name>НаименованиеСокращенноеОткрытие</name>
</handlers>
<handlers>
<event>Clearing</event>
<name>НаименованиеСокращенноеОчистка</name>
@@ -197,6 +202,8 @@
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<choiceButton>true</choiceButton>
<openButton>true</openButton>
<autoMarkIncomplete>true</autoMarkIncomplete>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textSize>Normal</textSize>
@@ -216,7 +223,6 @@
<dataPath xsi:type="form:DataPath">
<segments>Организация</segments>
</dataPath>
<titleLocation>Left</titleLocation>
<handlers>
<event>OnChange</event>
<name>ОрганизацияПриИзменении</name>
@@ -243,14 +249,19 @@
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>StartChoice</event>
<name>ОрганизацияНачалоВыбора</name>
</handlers>
<handlers>
<event>Clearing</event>
<name>ОрганизацияОчистка</name>
</handlers>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<dropListButton>true</dropListButton>
<choiceButtonRepresentation>ShowInDropList</choiceButtonRepresentation>
<autoMarkIncomplete>true</autoMarkIncomplete>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
@@ -356,6 +367,7 @@
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<markRequiredComplete>true</markRequiredComplete>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
@@ -365,6 +377,10 @@
<event>StartChoice</event>
<name>ВладелецСертификатаСтрокойНачалоВыбора</name>
</handlers>
<handlers>
<event>Opening</event>
<name>ВладелецСертификатаСтрокойОткрытие</name>
</handlers>
<handlers>
<event>Clearing</event>
<name>ВладелецСертификатаСтрокойОчистка</name>
@@ -376,9 +392,9 @@
<width>18</width>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<dropListButton>true</dropListButton>
<choiceButton>true</choiceButton>
<choiceButtonRepresentation>ShowInDropList</choiceButtonRepresentation>
<openButton>true</openButton>
<autoMarkIncomplete>true</autoMarkIncomplete>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textSize>Normal</textSize>
@@ -1597,7 +1613,7 @@
</title>
<id>5</id>
<valueType>
<types>DefinedType.Организация</types>
<types>AnyRef</types>
</valueType>
<view>
<common>true</common>
@@ -1616,7 +1632,7 @@
<valueType>
<types>String</types>
<stringQualifiers>
<length>64</length>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
@@ -1738,7 +1754,7 @@
<valueType>
<types>String</types>
<stringQualifiers>
<length>64</length>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
@@ -1754,7 +1770,7 @@
<valueType>
<types>String</types>
<stringQualifiers>
<length>64</length>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
@@ -1770,7 +1786,7 @@
<valueType>
<types>String</types>
<stringQualifiers>
<length>64</length>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
@@ -1802,7 +1818,7 @@
<valueType>
<types>String</types>
<stringQualifiers>
<length>64</length>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
@@ -1818,7 +1834,7 @@
<valueType>
<types>String</types>
<stringQualifiers>
<length>64</length>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
@@ -2453,7 +2469,7 @@
<valueType>
<types>String</types>
<stringQualifiers>
<length>128</length>
<length>255</length>
</stringQualifiers>
</valueType>
<view>
@@ -2869,9 +2885,7 @@
<id>4</id>
<valueType>
<types>String</types>
<stringQualifiers>
<length>200</length>
</stringQualifiers>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
@@ -2899,9 +2913,7 @@
<attributes>
<name>ПрограммаОблачногоСервиса</name>
<id>27</id>
<valueType>
<types>CatalogRef.ПрограммыЭлектроннойПодписиИШифрования</types>
</valueType>
<valueType/>
<view>
<common>true</common>
</view>
@@ -2951,6 +2963,32 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ЭтоОбработкаОповещения</name>
<id>92</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>СостояниеОбработкиЗаявленияАктуально</name>
<id>91</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>УказатьСведенияОбОрганизации</name>
<title>
@@ -69,7 +69,7 @@
КонецПроцедуры
// Параметры:
// ЭлементУсловногоОформления - ЭлементУсловногоОформленияКомпоновкиДанных
// ЭлементУсловногоОформления - ЭлементУсловногоОформленияКомпоновкиДанных
//
Процедура УстановитьУсловноеОформлениеСпискаСертификатов(ЭлементУсловногоОформления) Экспорт
@@ -110,7 +110,7 @@
КонецПроцедуры
// Параметры:
// НеРедактируемыеРеквизиты - Массив
// НеРедактируемыеРеквизиты - Массив
//
Процедура РеквизитыНеРедактируемыеВГрупповойОбработке(НеРедактируемыеРеквизиты) Экспорт
@@ -120,7 +120,7 @@
КонецПроцедуры
// Параметры:
// Гражданство - СправочникСсылка.СтраныМира
// Гражданство - СправочникСсылка.СтраныМира
//
Функция ГражданствоСвойства(Гражданство) Экспорт
@@ -173,7 +173,108 @@
КонецФункции
Функция ПроверитьЗаполнениеРеквизитов(Реквизиты, ЭтоИП = Ложь) Экспорт
Функция РеквизитыОрганизации(Форма) Экспорт
Реквизиты = Новый СписокЗначений;
Реквизиты.Добавить("ЭтоИндивидуальныйПредприниматель", НСтр("ru = 'Вид'"), Истина);
Реквизиты.Добавить("НаименованиеСокращенное", НСтр("ru = 'Наименование (сокращенное)'"));
Реквизиты.Добавить("НаименованиеПолное", НСтр("ru = 'Наименование (полное)'"));
Реквизиты.Добавить("ИНН", НСтр("ru = 'ИНН'"));
Реквизиты.Добавить("КПП", НСтр("ru = 'КПП'"));
Реквизиты.Добавить("ОГРН", НСтр("ru = 'ОГРН'"));
Реквизиты.Добавить("РасчетныйСчет", НСтр("ru = 'Расчетный счет'"), Истина);
Реквизиты.Добавить("БИК", НСтр("ru = 'БИК'"), Истина);
Реквизиты.Добавить("КорреспондентскийСчет", НСтр("ru = 'Корреспондентский счет'"), Истина);
Реквизиты.Добавить("ЮридическийАдрес", НСтр("ru = 'Юридический адрес'"));
Реквизиты.Добавить("ФактическийАдрес", НСтр("ru = 'Фактический адрес'"));
Реквизиты.Добавить("Телефон", НСтр("ru = 'Телефон'"));
Если Форма <> Неопределено И Форма.ЭтоИндивидуальныйПредприниматель Тогда
Реквизиты.НайтиПоЗначению("КПП").Пометка = Истина;
КонецЕсли;
Возврат Реквизиты;
КонецФункции
Функция РеквизитыВладельцаСертификата(Форма, ЭтоИП = Неопределено) Экспорт
Реквизиты = Новый СписокЗначений;
Реквизиты.Добавить("Фамилия", НСтр("ru = 'Фамилия'"));
Реквизиты.Добавить("Имя", НСтр("ru = 'Имя'"));
Реквизиты.Добавить("Отчество", НСтр("ru = 'Отчество'"), Истина);
Реквизиты.Добавить("ДатаРождения", НСтр("ru = 'Дата рождения'"));
Реквизиты.Добавить("Пол", НСтр("ru = 'Пол'"));
Реквизиты.Добавить("СтраховойНомерПФР", НСтр("ru = 'СНИЛС'"));
Реквизиты.Добавить("Гражданство", НСтр("ru = 'Гражданство'"));
Реквизиты.Добавить("МестоРождения", НСтр("ru = 'Место рождения'"));
Реквизиты.Добавить("Должность", НСтр("ru = 'Должность'"));
Реквизиты.Добавить("Подразделение", НСтр("ru = 'Подразделение'"), Истина);
Реквизиты.Добавить("ДокументВид", НСтр("ru = 'Вид документа'"));
Реквизиты.Добавить("ДокументНомер", НСтр("ru = 'Серия и номер'"));
Реквизиты.Добавить("ДокументКемВыдан", НСтр("ru = 'Кем выдан'"));
Реквизиты.Добавить("ДокументДатаВыдачи", НСтр("ru = 'Дата выдачи'"));
Реквизиты.Добавить("ДокументКодПодразделения", НСтр("ru = 'Код подразделения'"));
Реквизиты.Добавить("ЭлектроннаяПочта", НСтр("ru = 'Электронная почта'"));
Если Форма <> Неопределено Тогда
Если ЭтоИП = Неопределено И Форма.ЭтоИндивидуальныйПредприниматель
Или ЭтоИП <> Неопределено И ЭтоИП Тогда
Реквизиты.НайтиПоЗначению("Должность").Пометка = Истина;
КонецЕсли;
Если Форма.ДокументВид <> "21" Тогда
Реквизиты.НайтиПоЗначению("ДокументНомер").Пометка = Истина;
Реквизиты.НайтиПоЗначению("ДокументКодПодразделения").Пометка = Истина;
КонецЕсли;
КонецЕсли;
Возврат Реквизиты;
КонецФункции
// Параметры:
// Форма - ФормаКлиентскогоПриложения
// ПроверяемыеРеквизиты - Массив
// РеквизитыДляПроверки - СписокЗначений
// ПолеСообщения - Строка
// ШаблонСообщения - Строка
//
Процедура ДобавитьРеквизитыДляПроверки(Форма, ПроверяемыеРеквизиты, РеквизитыДляПроверки,
ПолеСообщения = "", ШаблонСообщения = "%1:") Экспорт
Для Каждого Реквизит Из РеквизитыДляПроверки Цикл
ИмяРеквизита = Реквизит.Значение;
ПараметрыРеквизитаДляПроверки = Новый Структура;
ПараметрыРеквизитаДляПроверки.Вставить("Имя", ИмяРеквизита);
Если ИмяРеквизита = "Телефон"
Или ИмяРеквизита = "ФактическийАдрес"
Или ИмяРеквизита = "ЮридическийАдрес" Тогда
ПараметрыРеквизитаДляПроверки.Вставить("Значение", Форма[ИмяРеквизита + "XML"]);
Иначе
ПараметрыРеквизитаДляПроверки.Вставить("Значение", Форма[ИмяРеквизита]);
КонецЕсли;
ПараметрыРеквизитаДляПроверки.Вставить("ПолеСообщения",
?(ЗначениеЗаполнено(ПолеСообщения), ПолеСообщения, ИмяРеквизита));
Если Реквизит.Пометка Тогда
ТекстНезаполненного = "";
Иначе
ТекстНезаполненного = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонСообщения, Реквизит.Представление);
КонецЕсли;
ПараметрыРеквизитаДляПроверки.Вставить("ТекстНезаполненного", ТекстНезаполненного);
ПараметрыРеквизитаДляПроверки.Вставить("ТекстПроверкиЗначения",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Реквизит.Представление));
ПроверяемыеРеквизиты.Добавить(ПараметрыРеквизитаДляПроверки);
КонецЦикла;
КонецПроцедуры
Функция ПроверитьЗаполнениеРеквизитов(Реквизиты, ЭтоИП) Экспорт
Отказ = Ложь;
ВидДокумента = "";
@@ -199,10 +300,11 @@
КонецЦикла;
Если РасчетныйСчет <> Неопределено Тогда
Если ЗначениеЗаполнено(РасчетныйСчет) И ЗначениеЗаполнено(РасчетныйСчет.Значение) Тогда
ТекстОшибки = ОшибкиПроверкиКонтрольногоЧислаРасчетногоСчета(РасчетныйСчет.Значение, БИК, КорреспондентскийСчет);
Если Не ПустаяСтрока(ТекстОшибки) Тогда
ТекстОшибки = РасчетныйСчет.ТекстПроверкиЗначения + " " + ТекстОшибки;
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , РасчетныйСчет.ПолеСообщения, , Отказ);
КонецЕсли;
@@ -212,11 +314,13 @@
ТекстОшибки = ОшибкиПроверкиКодаПодразделения(КодПодразделения.Значение);
Если Не ПустаяСтрока(ТекстОшибки) Тогда
ТекстОшибки = КодПодразделения.ТекстПроверкиЗначения + " " + ТекстОшибки;
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , КодПодразделения.ПолеСообщения, , Отказ);
КонецЕсли;
ТекстОшибки = ОшибкиПроверкиНомераПаспорта(НомерДокумента.Значение);
Если Не ПустаяСтрока(ТекстОшибки) Тогда
ТекстОшибки = НомерДокумента.ТекстПроверкиЗначения + " " + ТекстОшибки;
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , НомерДокумента.ПолеСообщения, , Отказ);
КонецЕсли;
@@ -231,72 +335,87 @@
ИмяРеквизита = Реквизит.Имя;
ПолеСообщения = Реквизит.ПолеСообщения;
ЗначениеРеквизита = Реквизит.Значение;
ТекстНезаполненного = Реквизит.ТекстНезаполненного;
ПродолжитьПриОшибке = Ложь;
Если Не ЗначениеЗаполнено(ЗначениеРеквизита) Тогда
Если СтрНайти(ТекстНезаполненного, "%1") > 0 Тогда
ТекстНезаполненного = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстНезаполненного, НСтр("ru = 'поле не заполнено.'"));
Если ЗначениеЗаполнено(Реквизит.ТекстНезаполненного) Тогда
ТекстОшибки = Реквизит.ТекстНезаполненного + " " + ТекстОшибкиПолеНеЗаполнено();
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , ПолеСообщения, , Отказ);
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстНезаполненного, , ПолеСообщения, , Отказ);
Иначе
ТекстСообщения = "";
Если ИмяРеквизита = "ИНН"
Или ИмяРеквизита = "ДокументыПартнерИНН" Тогда
РегламентированныеДанныеКлиентСервер.ИННСоответствуетТребованиям(ЗначениеРеквизита, Не ЭтоИП, ТекстСообщения);
ИначеЕсли (ИмяРеквизита = "ДокументыПартнерКПП"
Или ИмяРеквизита = "КПП")
И Не ЭтоИП Тогда
РегламентированныеДанныеКлиентСервер.КППСоответствуетТребованиям(ЗначениеРеквизита, ТекстСообщения);
ИначеЕсли ИмяРеквизита = "ОГРН" Тогда
РегламентированныеДанныеКлиентСервер.ОГРНСоответствуетТребованиям(ЗначениеРеквизита, Не ЭтоИП, ТекстСообщения);
ИначеЕсли ИмяРеквизита = "РасчетныйСчет" Тогда
ТекстСообщения = ОшибкиПроверкиРасчетногоСчета(ЗначениеРеквизита);
ИначеЕсли ИмяРеквизита = "БИК" Тогда
ТекстСообщения = ОшибкиПроверкиБИК(ЗначениеРеквизита);
ИначеЕсли ИмяРеквизита = "КорреспондентскийСчет" Тогда
ТекстСообщения = ОшибкиПроверкиКорреспондентскогоСчета(ЗначениеРеквизита);
ИначеЕсли ИмяРеквизита = "ЮридическийАдрес"
Или ИмяРеквизита = "ФактическийАдрес" Тогда
ТекстСообщения = ОшибкиПроверкиАдреса(ЗначениеРеквизита);
Если ПустаяСтрока(ТекстСообщения) Тогда
ПродолжитьПриОшибке = Истина;
ТекстСообщения = ПроверитьАдрес(ЗначениеРеквизита);
КонецЕсли;
ИначеЕсли ИмяРеквизита = "Телефон" Тогда
ТекстСообщения = ОшибкиПроверкиТелефона(ЗначениеРеквизита);
ИначеЕсли ИмяРеквизита = "СтраховойНомерПФР" Тогда
РегламентированныеДанныеКлиентСервер.СтраховойНомерПФРСоответствуетТребованиям(
ЗначениеРеквизита, ТекстСообщения);
ИначеЕсли ИмяРеквизита = "ЭлектроннаяПочта" Тогда
Попытка
ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(ЗначениеРеквизита);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстСообщения = КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
КонецПопытки;
КонецЕсли;
Если ЗначениеЗаполнено(ТекстСообщения) Тогда
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , ПолеСообщения, ,
?(ПродолжитьПриОшибке, Неопределено, Отказ));
КонецЕсли;
Возврат;
КонецЕсли;
ТекстСообщения = "";
ПродолжитьПриОшибке = Ложь;
Если ИмяРеквизита = "ИНН"
Или ИмяРеквизита = "ДокументыПартнерИНН" Тогда
РегламентированныеДанныеКлиентСервер.ИННСоответствуетТребованиям(ЗначениеРеквизита, Не ЭтоИП, ТекстСообщения);
ИначеЕсли ИмяРеквизита = "ДокументыПартнерКПП"
Или ИмяРеквизита = "КПП" Тогда
РегламентированныеДанныеКлиентСервер.КППСоответствуетТребованиям(ЗначениеРеквизита, ТекстСообщения);
ИначеЕсли ИмяРеквизита = "ОГРН" Тогда
РегламентированныеДанныеКлиентСервер.ОГРНСоответствуетТребованиям(ЗначениеРеквизита, Не ЭтоИП, ТекстСообщения);
ИначеЕсли ИмяРеквизита = "РасчетныйСчет" Тогда
ТекстСообщения = ОшибкиПроверкиРасчетногоСчета(ЗначениеРеквизита);
ИначеЕсли ИмяРеквизита = "БИК" Тогда
ТекстСообщения = ОшибкиПроверкиБИК(ЗначениеРеквизита);
ИначеЕсли ИмяРеквизита = "КорреспондентскийСчет" Тогда
ТекстСообщения = ОшибкиПроверкиКорреспондентскогоСчета(ЗначениеРеквизита);
ИначеЕсли ИмяРеквизита = "ЮридическийАдрес"
Или ИмяРеквизита = "ФактическийАдрес" Тогда
ТекстСообщения = ОшибкиПроверкиАдреса(ЗначениеРеквизита);
Если ПустаяСтрока(ТекстСообщения) Тогда
ПродолжитьПриОшибке = Истина;
ТекстСообщения = ПроверитьАдрес(ЗначениеРеквизита);
КонецЕсли;
ИначеЕсли ИмяРеквизита = "Телефон" Тогда
ТекстСообщения = ОшибкиПроверкиТелефона(ЗначениеРеквизита);
ИначеЕсли ИмяРеквизита = "СтраховойНомерПФР" Тогда
РегламентированныеДанныеКлиентСервер.СтраховойНомерПФРСоответствуетТребованиям(
ЗначениеРеквизита, ТекстСообщения);
ИначеЕсли ИмяРеквизита = "ЭлектроннаяПочта" Тогда
Попытка
ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(ЗначениеРеквизита);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстСообщения = КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
КонецПопытки;
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекстСообщения) Тогда
Возврат;
КонецЕсли;
ТекстыОшибок = СтрРазделить(ТекстСообщения, Символы.ПС + Символы.ВК, Ложь);
Для Каждого ТекстОшибки Из ТекстыОшибок Цикл
ТекстОшибки = Реквизит.ТекстПроверкиЗначения + " " + ТекстОшибки;
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , ПолеСообщения, ,
?(ПродолжитьПриОшибке, Неопределено, Отказ));
КонецЦикла;
КонецПроцедуры
Функция ТекстОшибкиПолеНеЗаполнено() Экспорт
Возврат НСтр("ru = 'Поле не заполнено'");
КонецФункции
Функция ОшибкиПроверкиРасчетногоСчета(РасчетныйСчет)
Значение = СокрЛП(РасчетныйСчет);
@@ -13,7 +13,7 @@
13 Республика Мордовия
14 Республика Саха (Якутия)
15 Республика Северная Осетия – Алания
16 Республика Татарстан
16 Республика Татарстан (Татарстан)
17 Республика Тыва
18 Удмуртская Республика
19 Республика Хакасия
@@ -39,7 +39,7 @@
39 Калининградская область
40 Калужская область
41 Камчатский край
42 Кемеровская область
42 Кемеровская область - Кузбасс
43 Кировская область
44 Костромская область
45 Курганская область
@@ -1475,8 +1475,10 @@
Если БросатьИсключение Тогда
ИмяСобытия = НСтр("ru='Построение очереди обработчиков обновления'", ОбщегоНазначения.КодОсновногоЯзыка());
СписокПроблемныхОбработчиков = "";
Для Каждого Ошибка Из Ошибки Цикл
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(Ошибка.ОбъектМетаданных);
СписокПроблемныхОбработчиков = СписокПроблемныхОбработчиков + Ошибка.Обработчик + Символы.ПС;
ЗаписьЖурналаРегистрации(
ИмяСобытия,
УровеньЖурналаРегистрации.Ошибка,
@@ -1487,7 +1489,9 @@
ВызватьИсключение НСтр("ru = 'При построении очереди отложенных обработчиков обнаружены ошибки.
|Необходимо их исправить с помощью встроенной обработки ""Описание обработчиков обновления"".
|Для этого требуется запустить конфигурацию с параметром запуска ""ОтключитьЛогикуНачалаРаботыСистемы"".
|Ошибки перечислены в журнале регистрации.'");
|Ошибки перечислены в журнале регистрации.
|
|Список проблемных обработчиков обновления:'") + Символы.ПС + СписокПроблемныхОбработчиков;
Иначе
Для Каждого Ошибка Из Ошибки Цикл
ОбщегоНазначения.СообщитьПользователю(Ошибка.Сообщение);
@@ -1112,7 +1112,7 @@
</extInfo>
</extendedTooltip>
<type>Hyperlink</type>
<commandName>Form.Command.ОткрытьСостоянияОригиналовПервичныхДокументов</commandName>
<commandName>Catalog.СостоянияОригиналовПервичныхДокументов.StandardCommand.OpenList</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
@@ -1260,28 +1260,6 @@
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>ОткрытьСостоянияОригиналовПервичныхДокументов</name>
<title>
<key>ru</key>
<value>Открыть состояния оригиналов первичных документов</value>
</title>
<id>2</id>
<toolTip>
<key>ru</key>
<value>Открыть состояния оригиналов первичных документов</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ОткрытьСостоянияОригиналовПервичныхДокументов</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -37,7 +37,7 @@
Иначе
Элементы.ГруппаРассылкиОтчетов.Видимость = Ложь;
КонецЕсли;
// Обновление состояния элементов.
УстановитьДоступность();
@@ -83,17 +83,6 @@
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСостоянияОригиналовПервичныхДокументов(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов") Тогда
МодульУчетОригиналовПервичныхДокументовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УчетОригиналовПервичныхДокументовКлиент");
МодульУчетОригиналовПервичныхДокументовКлиент.ОткрытьФормуНастройкиСостояний();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -318,8 +318,12 @@
Для Каждого ПолеТаблицы Из ПоляДляСравненияНаПодобие Цикл
ИмяПоля = ПолеТаблицы.Ключ;
ИскомыеСтроки = СтрСоединить(КандидатыДублей.ВыгрузитьКолонку(ИмяПоля), "~");
ИмяПоля = ПолеТаблицы.Ключ;
ЗначенияПоля = Новый Массив;
Для каждого СтрокаТаблицы Из КандидатыДублей Цикл
ЗначенияПоля.Добавить(СтрЗаменить(СтрокаТаблицы[ИмяПоля], "~", "\u126"));
КонецЦикла;
ИскомыеСтроки = СтрСоединить(ЗначенияПоля, "~");
СтрокаДляПоиска = ЭталонныйЭлемент[ИмяПоля];
ИндексыСтрок = НечеткийПоиск.StringSearch(НРег(СтрокаДляПоиска), НРег(ИскомыеСтроки), "~",
СравнениеСтрокНаПодобие.ДлинаНебольшихСтрок, СравнениеСтрокНаПодобие.ПроцентСовпаденияНебольшихСтрок,
@@ -15,9 +15,9 @@
//
Процедура ДобавитьПоставляемыеНастройкиПрограмм(Настройки) Экспорт
// ViPNet CSP (ГОСТ 2012)
// ViPNet CSP (ГОСТ 2012/256).
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'ViPNet CSP (ГОСТ 2012)'");
Настройка.Представление = НСтр("ru = 'ViPNet CSP (ГОСТ 2012/256)'");
Настройка.ИмяПрограммы = "Infotecs GOST 2012/512 Cryptographic Service Provider";
Настройка.ТипПрограммы = 77;
// Варианты: GOST 34.10-2012 256, GOST R 34.10-2001, GOST 34.11-2012 512.
@@ -35,9 +35,29 @@
Настройка.АлгоритмыХеширования.Добавить("GOST 34.11-2012 512");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// КриптоПро CSP (ГОСТ 2012)
// ViPNet CSP (ГОСТ 2012/512).
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'КриптоПро CSP (ГОСТ 2012)'");
Настройка.Представление = НСтр("ru = 'ViPNet CSP (ГОСТ 2012/512)'");
Настройка.ИмяПрограммы = "Infotecs GOST 2012/1024 Cryptographic Service Provider";
Настройка.ТипПрограммы = 78;
// Варианты: GOST 34.10-2012 512, GOST R 34.10-2001, GOST 34.11-2012 256.
Настройка.АлгоритмПодписи = "GOST 34.10-2012 512";
// Варианты: GOST 34.11-2012 512, GOST R 34.11-94, GOST 34.11-2012 256.
Настройка.АлгоритмХеширования = "GOST 34.11-2012 512";
Настройка.АлгоритмШифрования = "GOST 28147-89"; // Один вариант.
Настройка.Идентификатор = "VipNet2012_512";
Настройка.АлгоритмыПодписи.Добавить("GOST 34.10-2012 512");
Настройка.АлгоритмыПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыПодписи.Добавить("GOST 34.10-2012 256");
Настройка.АлгоритмыХеширования.Добавить("GOST 34.11-2012 512");
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-94");
Настройка.АлгоритмыХеширования.Добавить("GOST 34.11-2012 256");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// КриптоПро CSP (ГОСТ 2012/256).
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'КриптоПро CSP (ГОСТ 2012/256)'");
Настройка.ИмяПрограммы = "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider";
Настройка.ТипПрограммы = 80;
Настройка.АлгоритмПодписи = "GR 34.10-2012 256";
@@ -48,10 +68,110 @@
Настройка.АлгоритмыПодписи.Добавить("GR 34.10-2012 256");
Настройка.АлгоритмыХеширования.Добавить("GR 34.11-2012 256");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GR 34.10-2012 512");
// ЛИССИ CSP (ГОСТ 2012)
// КриптоПро CSP (ГОСТ 2012/256) KC1.
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'ЛИССИ CSP (ГОСТ 2012)'");
Настройка.Представление = НСтр("ru = 'КриптоПро CSP (ГОСТ 2012/256) KC1'");
Настройка.ИмяПрограммы = "Crypto-Pro GOST R 34.10-2012 KC1 CSP";
Настройка.ТипПрограммы = 80;
Настройка.АлгоритмПодписи = "GR 34.10-2012 256";
Настройка.АлгоритмХеширования = "GR 34.11-2012 256";
Настройка.АлгоритмШифрования = "GOST 28147-89";
Настройка.Идентификатор = "CryptoPro2012_KC1";
Настройка.АлгоритмыПодписи.Добавить("GR 34.10-2012 256");
Настройка.АлгоритмыХеширования.Добавить("GR 34.11-2012 256");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GR 34.10-2012 512");
Настройка.НетВWindows = Истина;
// КриптоПро CSP (ГОСТ 2012/256) KC2.
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'КриптоПро CSP (ГОСТ 2012/256) KC2'");
Настройка.ИмяПрограммы = "Crypto-Pro GOST R 34.10-2012 KC2 CSP";
Настройка.ТипПрограммы = 80;
Настройка.АлгоритмПодписи = "GR 34.10-2012 256";
Настройка.АлгоритмХеширования = "GR 34.11-2012 256";
Настройка.АлгоритмШифрования = "GOST 28147-89";
Настройка.Идентификатор = "CryptoPro2012_KC2";
Настройка.АлгоритмыПодписи.Добавить("GR 34.10-2012 256");
Настройка.АлгоритмыХеширования.Добавить("GR 34.11-2012 256");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GR 34.10-2012 512");
Настройка.НетВWindows = Истина;
// КриптоПро CSP (ГОСТ 2012/512).
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'КриптоПро CSP (ГОСТ 2012/512)'");
Настройка.ИмяПрограммы = "Crypto-Pro GOST R 34.10-2012 Strong Cryptographic Service Provider";
Настройка.ТипПрограммы = 81;
Настройка.АлгоритмПодписи = "GR 34.10-2012 512";
Настройка.АлгоритмХеширования = "GR 34.11-2012 512";
Настройка.АлгоритмШифрования = "GOST 28147-89";
Настройка.Идентификатор = "CryptoPro2012_512";
Настройка.АлгоритмыПодписи.Добавить("GR 34.10-2012 512");
Настройка.АлгоритмыХеширования.Добавить("GR 34.11-2012 512");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GR 34.10-2012 256");
// КриптоПро CSP (ГОСТ 2012/512) KC1.
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'КриптоПро CSP (ГОСТ 2012/512) KC1'");
Настройка.ИмяПрограммы = "Crypto-Pro GOST R 34.10-2012 KC1 Strong CSP";
Настройка.ТипПрограммы = 81;
Настройка.АлгоритмПодписи = "GR 34.10-2012 512";
Настройка.АлгоритмХеширования = "GR 34.11-2012 512";
Настройка.АлгоритмШифрования = "GOST 28147-89";
Настройка.Идентификатор = "CryptoPro2012_512_KC1";
Настройка.АлгоритмыПодписи.Добавить("GR 34.10-2012 512");
Настройка.АлгоритмыХеширования.Добавить("GR 34.11-2012 512");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GR 34.10-2012 256");
Настройка.НетВWindows = Истина;
// КриптоПро CSP (ГОСТ 2012/512) KC2.
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'КриптоПро CSP (ГОСТ 2012/512) KC2'");
Настройка.ИмяПрограммы = "Crypto-Pro GOST R 34.10-2012 KC2 Strong CSP";
Настройка.ТипПрограммы = 81;
Настройка.АлгоритмПодписи = "GR 34.10-2012 512";
Настройка.АлгоритмХеширования = "GR 34.11-2012 512";
Настройка.АлгоритмШифрования = "GOST 28147-89";
Настройка.Идентификатор = "CryptoPro2012_512_KC2";
Настройка.АлгоритмыПодписи.Добавить("GR 34.10-2012 512");
Настройка.АлгоритмыХеширования.Добавить("GR 34.11-2012 512");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GR 34.10-2012 256");
Настройка.НетВWindows = Истина;
// КриптоПро eToken CSP.
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'eToken Base CSP'");
Настройка.ИмяПрограммы = "eToken Base Cryptographic Provider";
Настройка.ТипПрограммы = 1;
Настройка.АлгоритмПодписи = "RSA_SIGN";
Настройка.АлгоритмХеширования = "SHA-1";
Настройка.АлгоритмШифрования = "DES";
Настройка.Идентификатор = "eToken";
// Microsoft Enhanced CSP.
Справочники.ПрограммыЭлектроннойПодписиИШифрования.ДобавитьНастройкиMicrosoftEnhancedCSP(Настройки);
// ЛИССИ CSP (ГОСТ 2012/256).
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'ЛИССИ CSP (ГОСТ 2012/256)'");
Настройка.ИмяПрограммы = "LISSI GOST R 34.10-2012 (256) CSP";
Настройка.ТипПрограммы = 80;
Настройка.АлгоритмПодписи = "GOST R 34.10-12 256";
@@ -63,9 +183,9 @@
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-12 256");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// Сигнал-КОМ CSP (RFC 4357, ГОСТ 2012)
// Сигнал-КОМ CSP (RFC 4357, ГОСТ 2012/256).
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'Сигнал-КОМ CSP (ГОСТ 2012)'");
Настройка.Представление = НСтр("ru = 'Сигнал-КОМ CSP (ГОСТ 2012/256)'");
Настройка.ИмяПрограммы = "Signal-COM GOST R 34.10-2012 (256) Cryptographic Provider";
Настройка.ТипПрограммы = 80;
Настройка.АлгоритмПодписи = "GOST3410-12-256";
@@ -77,10 +197,7 @@
Настройка.АлгоритмыХеширования.Добавить("GOST3411-12-256");
Настройка.АлгоритмыШифрования.Добавить("GOST28147");
// Microsoft Enhanced CSP
Справочники.ПрограммыЭлектроннойПодписиИШифрования.ДобавитьНастройкиMicrosoftEnhancedCSP(Настройки);
// ViPNet CSP (ГОСТ 2001)
// ViPNet CSP (ГОСТ 2001).
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'ViPNet CSP (ГОСТ 2001)'");
Настройка.ИмяПрограммы = "Infotecs Cryptographic Service Provider";
@@ -100,7 +217,8 @@
Настройка.АлгоритмыХеширования.Добавить("GOST 34.11-2012 512");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// КриптоПро CSP (ГОСТ 2001)
// КриптоПро CSP (ГОСТ 2001).
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'КриптоПро CSP (ГОСТ 2001)'");
Настройка.ИмяПрограммы = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider";
@@ -113,8 +231,44 @@
Настройка.АлгоритмыПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-94");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GR 34.10-2012 256");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GR 34.10-2012 512");
// ЛИССИ CSP (ГОСТ 2001)
// КриптоПро CSP (ГОСТ 2001) KC1.
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'КриптоПро CSP (ГОСТ 2001) KC1'");
Настройка.ИмяПрограммы = "Crypto-Pro GOST R 34.10-2001 KC1 CSP";
Настройка.ТипПрограммы = 75;
Настройка.АлгоритмПодписи = "GOST R 34.10-2001";
Настройка.АлгоритмХеширования = "GOST R 34.11-94";
Настройка.АлгоритмШифрования = "GOST 28147-89";
Настройка.Идентификатор = "CryptoPro2001";
Настройка.АлгоритмыПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-94");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GR 34.10-2012 256");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GR 34.10-2012 512");
Настройка.НетВWindows = Истина;
// КриптоПро CSP (ГОСТ 2001) KC2.
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'КриптоПро CSP (ГОСТ 2001) KC2'");
Настройка.ИмяПрограммы = "Crypto-Pro GOST R 34.10-2001 KC2 CSP";
Настройка.ТипПрограммы = 75;
Настройка.АлгоритмПодписи = "GOST R 34.10-2001";
Настройка.АлгоритмХеширования = "GOST R 34.11-94";
Настройка.АлгоритмШифрования = "GOST 28147-89";
Настройка.Идентификатор = "CryptoPro2001";
Настройка.АлгоритмыПодписи.Добавить("GOST R 34.10-2001");
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-94");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GR 34.10-2012 256");
Настройка.АлгоритмыПроверкиПодписи.Добавить("GR 34.10-2012 512");
Настройка.НетВWindows = Истина;
// ЛИССИ CSP (ГОСТ 2001).
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'ЛИССИ CSP (ГОСТ 2001)'");
Настройка.ИмяПрограммы = "LISSI-CSP";
@@ -128,7 +282,7 @@
Настройка.АлгоритмыХеширования.Добавить("GOST R 34.11-94");
Настройка.АлгоритмыШифрования.Добавить("GOST 28147-89");
// Сигнал-КОМ CSP (RFC 4357, ГОСТ 2001)
// Сигнал-КОМ CSP (RFC 4357, ГОСТ 2001).
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'Сигнал-КОМ CSP (RFC 4357, ГОСТ 2001)'");
Настройка.ИмяПрограммы = "Signal-COM CPGOST Cryptographic Provider";
@@ -156,25 +310,67 @@
Настройка.АлгоритмыХеширования.Добавить("RUS-HASH");
Настройка.АлгоритмыШифрования.Добавить("GOST28147");
Настройка = Настройки.Добавить();
Настройка.Представление = НСтр("ru = 'КриптоПро eToken CSP'");
Настройка.ИмяПрограммы = "eToken Base Cryptographic Provider";
Настройка.ТипПрограммы = 1;
Настройка.АлгоритмПодписи = "RSA_SIGN";
Настройка.АлгоритмХеширования = "SHA-1";
Настройка.АлгоритмШифрования = "DES";
Настройка.Идентификатор = "eToken";
КонецПроцедуры
Процедура ДобавитьПоставляемыеПутиКМодулямПрограмм(ПутиКМодулям) Экспорт
ПутиКриптоПро = Новый Соответствие;
ПутиКриптоПро.Вставить("Linux_x86", ПутиКМодулямПрограммыКриптоПроНаLinux32());
ПутиКриптоПро.Вставить("Linux_x86_64", ПутиКМодулямПрограммыКриптоПроНаLinux64());
ПутиКриптоПро.Вставить("MacOS_x86", ПутиКМодулямПрограммыКриптоПроНаMacOS());
ПутиКриптоПро.Вставить("MacOS_x86_64", ПутиКМодулямПрограммыКриптоПроНаMacOS());
ПутиКМодулям.Вставить("CryptoPro", Новый ФиксированноеСоответствие(ПутиКриптоПро));
КонецПроцедуры
Функция ПутиКМодулямПрограммыКриптоПроНаLinux64()
МодулиПрограммы = Новый Массив;
МодулиПрограммы.Добавить("/opt/cprocsp/lib/amd64/libcapilite.so");
МодулиПрограммы.Добавить("/opt/cprocsp/lib/amd64/libcapi10.so");
МодулиПрограммы.Добавить("/opt/cprocsp/lib/amd64/libcapi20.so");
ПутиКМодулям = Новый Массив;
ПутиКМодулям.Добавить(СтрСоединить(МодулиПрограммы, ":"));
Возврат Новый ФиксированныйМассив(ПутиКМодулям);
КонецФункции
Функция ПутиКМодулямПрограммыКриптоПроНаLinux32()
МодулиПрограммы = Новый Массив;
МодулиПрограммы.Добавить("/opt/cprocsp/lib/ia32/libcapilite.so");
МодулиПрограммы.Добавить("/opt/cprocsp/lib/ia32/libcapi10.so");
МодулиПрограммы.Добавить("/opt/cprocsp/lib/ia32/libcapi20.so");
ПутиКМодулям = Новый Массив;
ПутиКМодулям.Добавить(СтрСоединить(МодулиПрограммы, ":"));
Возврат Новый ФиксированныйМассив(ПутиКМодулям);
КонецФункции
Функция ПутиКМодулямПрограммыКриптоПроНаMacOS()
МодулиПрограммы = Новый Массив;
МодулиПрограммы.Добавить("/opt/cprocsp/lib/libcapi10.dylib");
МодулиПрограммы.Добавить("/opt/cprocsp/lib/libcapi20.dylib");
МодулиПрограммы.Добавить("/opt/cprocsp/lib/libcapi10.4.dylib");
МодулиПрограммы.Добавить("/opt/cprocsp/lib/libcapi20.4.dylib");
ПутиКМодулям = Новый Массив;
ПутиКМодулям.Добавить(СтрСоединить(МодулиПрограммы, ":"));
Возврат Новый ФиксированныйМассив(ПутиКМодулям);
КонецФункции
#Область ОбновлениеИнформационнойБазы
Процедура ДобавитьПрограммыНачальногоЗаполнения(Программы) Экспорт
Программы.Вставить("Infotecs GOST 2012/512 Cryptographic Service Provider", 77);
Программы.Вставить("Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", 80);
Программы.Вставить("Infotecs Cryptographic Service Provider", 2);
Программы.Вставить("Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider", 75);
КонецПроцедуры
@@ -1846,6 +1846,7 @@
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<readOnly>true</readOnly>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
@@ -180,6 +180,7 @@
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Файлы", ИмяСправочникаХранилищаФайлов);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекущаяВерсия", ИмяСправочникаХранилищаФайлов + ".Ссылка");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВладелецФайла", "Родитель");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ПапкиФайлов", ИмяСправочникаХранилищаФайлов);
Иначе
@@ -3,9 +3,9 @@
<p>Ряд действий в программе может выполняться автоматически в фоновом режиме, по определенному расписанию. Такие действия называются регламентными заданиями, например, это ежедневная загрузка курсов валют, регулярная рассылка отчетов, отложенное проведение документов и т.п. Регламентные задания облегчают работу в программе, позволяя перенести выполнение рутинных задач в саму программу, и в то же время они снижают человеческий фактор (например, можно забыть загрузить курсы валют в один из перегруженных другими задачами дней).</p>
<p>Открывается по команде <strong>Регламентные и фоновые задания</strong> в разделе <strong>Администрирование - Обслуживание - Регламентные операции</strong>.</p>
<p>Список предоставляет следующие возможности: </p>
<ul><li><a href="#Работа_с_РЗ">Регламентные задания</a>;
</li><li><a href="#Работа_с_ФЗ">Фоновые задания</a>;
</li><li><a href="#КонтрольРЗ">Контроль выполнения регламентных заданий</a>.</li></ul><h2><a name="#Работа_с_РЗ">Регламентные задания</a></h2>
<ul><li><a href="#&amp;#1056;&amp;#1072;&amp;#1073;&amp;#1086;&amp;#1090;&amp;#1072;_&amp;#1089;_&amp;#1056;&amp;#1047;">Регламентные задания</a>;
</li><li><a href="#&amp;#1056;&amp;#1072;&amp;#1073;&amp;#1086;&amp;#1090;&amp;#1072;_&amp;#1089;_&amp;#1060;&amp;#1047;">Фоновые задания</a>;
</li><li><a href="#&amp;#1050;&amp;#1086;&amp;#1085;&amp;#1090;&amp;#1088;&amp;#1086;&amp;#1083;&amp;#1100;&amp;#1056;&amp;#1047;">Контроль выполнения регламентных заданий</a>.</li></ul><h2><a name="#Работа_с_РЗ">Регламентные задания</a></h2>
<p>В списке можно включить (или отключить) то или иное <a href="DataProcessor.РегламентныеИФоновыеЗадания.Form.РегламентноеЗадание/Help">регламентное задание</a> и поменять расписание.</p>
<p>В списке выводится:</p>
<ul><li><img src="StdPicture.ScheduledJob"></img> - флажок в колонке означает, что регламентное задание <strong>Включено</strong> и выполняется в соответствии с заданным расписанием;
@@ -65,7 +65,7 @@
<h3>Просмотр информации о фоновом задании</h3>
<ul><li>Для того чтобы просмотреть свойства фонового задания, дважды щелкните мышью по нужной строке. Также можно нажать <strong>Открыть</strong>.</li></ul><h3><a name="#КонтрольРЗ">Контроль выполнения регламентных заданий</a></h3>
<ul><li>Контроль может быть либо простым, либо детальным.
</li><li>Простой контроль - это анализ колонок <strong>Состояние</strong> и <strong>Дата окончания</strong> на вкладке <a href="#Работа_с_РЗ" name="#Работа_с_РЗ">Регламентные задания</a>, а также анализ текста поля <strong>Сообщения пользователю и описание информации об ошибке</strong> в окне редактирования регламентного задания.
</li><li>Простой контроль - это анализ колонок <strong>Состояние</strong> и <strong>Дата окончания</strong> на вкладке <a href="#&amp;#1056;&amp;#1072;&amp;#1073;&amp;#1086;&amp;#1090;&amp;#1072;_&amp;#1089;_&amp;#1056;&amp;#1047;" name="#Работа_с_РЗ">Регламентные задания</a>, а также анализ текста поля <strong>Сообщения пользователю и описание информации об ошибке</strong> в окне редактирования регламентного задания.
</li><li>Детальный контроль - это анализ списка фоновых заданий (на вкладке <strong>Фоновые задания</strong>), которые были созданы и выполнены для выполнения регламентного задания.
</li><li>Детальный контроль производится отбором фоновых заданий по интересующему регламентному заданию, и анализом реквизитов фоновых заданий. Следует учитывать, что сведения о выполнении регламентного задания получаются выборкой части сведений о выполнении последнего фонового задания.
</li><li>Отбор фоновых заданий производится только по команде <strong>Обновить</strong>, поэтому после изменения настройки отбора нужно выполнить эту команду.
@@ -497,6 +497,19 @@
ИначеЕсли СтрокаТаблицыВложений.Расположение = 3 Тогда
// из файла на сервере
ИначеЕсли СтрокаТаблицыВложений.Расположение = 2 Тогда
// из файла на компьютере
ДвоичныеДанные = Новый ДвоичныеДанные(СтрокаТаблицыВложений.ИмяФайлаНаКомпьютере);
АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
ПараметрыВложения = Новый Структура;
ПараметрыВложения.Вставить("ИмяФайла", ИмяФайла);
ПараметрыВложения.Вставить("Размер", Размер);
УправлениеЭлектроннойПочтой.ЗаписатьВложениеЭлектронногоПисьмаИзВременногоХранилища(
Письмо, АдресВременногоХранилищаФайла, ПараметрыВложения);
ИначеЕсли СтрокаТаблицыВложений.Расположение = 1 Тогда
УправлениеЭлектроннойПочтой.ЗаписатьВложениеЭлектронногоПисьмаСкопировавВложениеДругогоПисьма(
@@ -1826,10 +1839,12 @@
Возврат;
КонецЕсли;
УстановитьТекстПисьма();
УстановитьТекстПисьмаПоПереданнымПараметрам(ПереданныеПараметры);
Если ПереданныеПараметры.Свойство("Вложения") И ПереданныеПараметры.Вложения <> Неопределено Тогда
Вложения.Очистить();
Если ТипЗнч(ПереданныеПараметры.Вложения) = Тип("СписокЗначений") Или ТипЗнч(ПереданныеПараметры.Вложения) = Тип("Массив") Тогда
Для Каждого Вложение Из ПереданныеПараметры.Вложения Цикл
ОписаниеВложения = Вложения.Добавить();
@@ -1871,6 +1886,7 @@
// Если передан параметр "Получатель", то эта табличная часть очищается перед заполнением согласно данным параметра.
Объект.ПолучателиПисьма.Очистить();
СписокПолучателей.Очистить();
Если ТипЗнч(ПереданныеПараметры.Получатель) = Тип("Строка") И НЕ ПустаяСтрока(ПереданныеПараметры.Получатель) Тогда
Объект.СписокПолучателейПисьма = ПереданныеПараметры.Получатель;
@@ -1918,7 +1934,7 @@
ОчиститьДублиАдресатов(Объект.ПолучателиПисьма);
Если ПереданныеПараметры.Свойство("Отправитель") И НЕ ПереданныеПараметры.Отправитель.Пустая() Тогда
Если ПереданныеПараметры.Свойство("Отправитель") И ЗначениеЗаполнено(ПереданныеПараметры.Отправитель) Тогда
Объект.УчетнаяЗапись = ПереданныеПараметры.Отправитель;
РеквизитыОтправителя = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
@@ -1941,13 +1957,13 @@
КонецФункции
&НаСервере
Процедура УстановитьТекстПисьма()
Процедура УстановитьТекстПисьмаПоПереданнымПараметрам(ПереданныеПараметры)
Если НЕ Параметры.Свойство("Текст") Тогда
Если НЕ ПереданныеПараметры.Свойство("Текст") Тогда
Возврат;
КонецЕсли;
Текст = Параметры.Текст;
Текст = ПереданныеПараметры.Текст;
Если ТипЗнч(Текст) = Тип("Структура") Тогда
@@ -1959,13 +1975,13 @@
Если СтрЗаканчиваетсяНа(НРег(СокрП(Текст)), НРег("</html>")) Тогда
Картинки = Новый Структура;
Если ТипЗнч(Параметры.Вложения) = Тип("Массив") Тогда
Для Индекс = -Параметры.Вложения.ВГраница() По 0 Цикл
Вложение = Параметры.Вложения[-Индекс];
Если ТипЗнч(ПереданныеПараметры.Вложения) = Тип("Массив") Тогда
Для Индекс = -ПереданныеПараметры.Вложения.ВГраница() По 0 Цикл
Вложение = ПереданныеПараметры.Вложения[-Индекс];
Если Вложение.Свойство("Идентификатор") И ЗначениеЗаполнено(Вложение.Идентификатор) Тогда
КартинкаВложение = Новый Картинка(ПолучитьИзВременногоХранилища(Вложение.АдресВоВременномХранилище));
Картинки.Вставить(Вложение.Представление, КартинкаВложение);
Параметры.Вложения.Удалить(-Индекс);
ПереданныеПараметры.Вложения.Удалить(-Индекс);
КонецЕсли;
КонецЦикла;
КонецЕсли;
@@ -2900,32 +2916,28 @@
&НаКлиенте
Процедура ЗаполнитьПоШаблонуПослеВыбораШаблона(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено И ТипЗнч(Результат) = Тип("Структура") И Результат.Свойство("Шаблон") Тогда
ЗаполнитьШаблонПослеВыбора(Результат.Шаблон);
ЗаполнитьШаблонПослеВыбора(Результат);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьШаблонПослеВыбора(ШаблонСсылка)
Процедура ЗаполнитьШаблонПослеВыбора(ПараметрыПисьма)
ОбъектПисьмо = РеквизитФормыВЗначение("Объект");
ОбъектПисьмо.Заполнить(ШаблонСсылка);
ЗначениеВРеквизитФормы(ОбъектПисьмо, "Объект");
ПриСозданииИПриЧтенииНаСервере();
ОбработатьПереданныеПараметры(ПараметрыПисьма);
СформироватьСпискиПолучателейПисьма();
ОпределитьВидимостьДоступностьЭлементовВЗависимостиОтСтатусаПисьма();
КонецПроцедуры
&НаСервере
Процедура ОпределитьВозможностьЗаполненияПисьмаПоШаблону()
ИспользуютсяШаблоныСообщений = Ложь;
Если Объект.СтатусПисьма = Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Черновик
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ШаблоныСообщений") Тогда
МодульШаблоныСообщенийСлужебный = ОбщегоНазначения.ОбщийМодуль("ШаблоныСообщенийСлужебный");
Если МодульШаблоныСообщенийСлужебный.ИспользуютсяШаблоныСообщений() Тогда
ИспользуютсяШаблоныСообщений = МодульШаблоныСообщенийСлужебный.ЕстьДоступныеШаблоны("Письмо", Предмет);
Если Объект.СтатусПисьма = Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Черновик Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ШаблоныСообщений") Тогда
МодульШаблоныСообщенийСлужебный = ОбщегоНазначения.ОбщийМодуль("ШаблоныСообщенийСлужебный");
Элементы.ФормаСформироватьПоШаблону.Видимость = МодульШаблоныСообщенийСлужебный.ИспользуютсяШаблоныСообщений();
КонецЕсли;
КонецЕсли;
Элементы.ФормаСформироватьПоШаблону.Видимость = ИспользуютсяШаблоныСообщений;
КонецПроцедуры
@@ -167,6 +167,9 @@
<content>
<mdObject>ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения</mdObject>
</content>
<content>
<mdObject>InformationRegister.НеудаленныеОбъекты</mdObject>
</content>
<content>
<mdObject>Constant.ПериодХраненияЗамеров</mdObject>
</content>
@@ -251,6 +254,9 @@
<content>
<mdObject>InformationRegister.УровниСокращенийАдресныхСведений</mdObject>
</content>
<content>
<mdObject>InformationRegister.СостоянияОригиналовПервичныхДокументов</mdObject>
</content>
<content>
<mdObject>InformationRegister.СоответствияОбъектовИнформационныхБаз</mdObject>
</content>
@@ -335,6 +341,9 @@
<content>
<mdObject>InformationRegister.ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux</mdObject>
</content>
<content>
<mdObject>InformationRegister.СостоянияПроверокВеденияУчета</mdObject>
</content>
<content>
<mdObject>Document.НазначениеОпросов</mdObject>
</content>
@@ -356,6 +365,9 @@
<content>
<mdObject>InformationRegister.ДанныеОбработанныеВЦентральномУзлеРИБ</mdObject>
</content>
<content>
<mdObject>InformationRegister.ОбработчикиОбновления</mdObject>
</content>
<content>
<mdObject>InformationRegister.ИсполнителиЗадач</mdObject>
</content>
@@ -608,6 +620,9 @@
<content>
<mdObject>InformationRegister.СоставыГруппПользователей</mdObject>
</content>
<content>
<mdObject>InformationRegister.ПотокиОбновления</mdObject>
</content>
<content>
<mdObject>InformationRegister.ПользовательскиеМакетыПечати</mdObject>
</content>
@@ -620,6 +635,9 @@
<content>
<mdObject>Catalog.ЗакладкиВзаимодействий</mdObject>
</content>
<content>
<mdObject>Catalog.СостоянияОригиналовПервичныхДокументов</mdObject>
</content>
<content>
<mdObject>InformationRegister.ИзмененияОбщихДанныхУзлов</mdObject>
</content>
@@ -839,6 +857,9 @@
<content>
<mdObject>Constant.СписокЗапрещенныхРасширений</mdObject>
</content>
<content>
<mdObject>InformationRegister.СвязиАдресныхОбъектов</mdObject>
</content>
<content>
<mdObject>InformationRegister.СообщенияОбменаДаннымиОбластейДанных</mdObject>
</content>
@@ -917,6 +938,9 @@
<content>
<mdObject>Catalog.ГруппыДоступа</mdObject>
</content>
<content>
<mdObject>InformationRegister.ОбщиеПоставляемыеМакетыПечати</mdObject>
</content>
<content>
<mdObject>Constant.КоличествоПотоковОбновленияИнформационнойБазы</mdObject>
</content>
@@ -929,6 +953,9 @@
<content>
<mdObject>InformationRegister.ДатыЗапретаИзменения</mdObject>
</content>
<content>
<mdObject>InformationRegister.УдаляемыеОбъекты</mdObject>
</content>
<content>
<mdObject>Catalog.ВстречаПрисоединенныеФайлы</mdObject>
</content>
@@ -1028,6 +1055,9 @@
<content>
<mdObject>InformationRegister.ДвоичныеДанныеФайлов</mdObject>
</content>
<content>
<mdObject>InformationRegister.ОбработчикиОбновленияОбщихДанных</mdObject>
</content>
<content>
<mdObject>Constant.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском</mdObject>
</content>
@@ -1058,6 +1088,9 @@
<content>
<mdObject>Constant.ИдентификаторИнформационнойБазы</mdObject>
</content>
<content>
<mdObject>InformationRegister.ПоставляемыеМакетыПечати</mdObject>
</content>
<content>
<mdObject>Constant.ИзменятьЗаданияЗаднимЧислом</mdObject>
</content>
@@ -229,6 +229,19 @@
Процедура ЗаписатьНаборИсключивСтандартнуюРегистрациюИзменений(НаборДанных, УзлыРИБ)
// Записываем набор, заменяя стандартную логику регистрации собственной.
Для Каждого Элемент Из НаборДанных Цикл
ЗаписываемыйНабор = СоздатьНаборЗаписей();
Для Каждого ЭлементОтбора Из НаборДанных.Отбор Цикл
ЗаписываемыйНабор.Отбор[ЭлементОтбора.Имя].Установить(ЭлементОтбора.Значение);
КонецЦикла;
ЗаписываемыйНабор.Отбор.УзелПланаОбмена.Установить(Элемент.УзелПланаОбмена);
ЗаполнитьЗначенияСвойств(ЗаписываемыйНабор.Добавить(), Элемент);
ЗаписываемыйНабор.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов");
ЗаписываемыйНабор.Записать();
КонецЦикла;
РегистрируемыйНабор = СоздатьНаборЗаписей();
Для Каждого ЭлементОтбора Из НаборДанных.Отбор Цикл
РегистрируемыйНабор.Отбор[ЭлементОтбора.Имя].Установить(ЭлементОтбора.Значение);
@@ -241,10 +254,6 @@
ПланыОбмена.ЗарегистрироватьИзменения(УзелРИБ, РегистрируемыйНабор);
КонецЦикла;
НаборДанных.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов");
НаборДанных.Записать();
КонецПроцедуры
#КонецОбласти
@@ -531,7 +531,7 @@
<groupHorizontalAlign>Right</groupHorizontalAlign>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InCommandBar</locationInCommandBar>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</items>
<items xsi:type="form:Button">
<name>ПоказатьВсе</name>
@@ -561,7 +561,7 @@
<autoMaxHeight>true</autoMaxHeight>
<groupHorizontalAlign>Right</groupHorizontalAlign>
<placementArea>UserCmds</placementArea>
<locationInCommandBar>InCommandBar</locationInCommandBar>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</items>
<visible>true</visible>
<enabled>true</enabled>
@@ -140,10 +140,6 @@
<key>ru</key>
<value>Ссылка</value>
</synonym>
<synonym>
<key>en</key>
<value>Reference</value>
</synonym>
<type>
<types>DefinedType.ОбъектСУчетомОригиналовПервичныхДокументов</types>
</type>
@@ -683,6 +683,93 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.СпособХраненияФайлов</name>
<right>
@@ -5264,91 +5351,4 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -14,6 +14,37 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.РассылкиОтчетов.Command.СобытияРассылки</name>
<right>
@@ -76,37 +107,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -1057,6 +1057,45 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>Constant.СпособХраненияФайлов</name>
<right>
@@ -7071,43 +7110,4 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
</Rights>
@@ -3,24 +3,6 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -52,4 +34,22 @@
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -105,4 +105,5 @@
<content>Catalog.ВнешниеКомпоненты</content>
<content>Catalog.ШаблоныСообщений</content>
<content>Report.АнализПравДоступа</content>
<content>Catalog.СостоянияОригиналовПервичныхДокументов</content>
</mdclass:Subsystem>
@@ -86,8 +86,10 @@
МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Истина, СтрокаСценария.ЗначениеРазделителяПервойИнформационнойБазы);
УстановитьПривилегированныйРежим(Ложь);
ФоновыеЗадания.Выполнить("ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВПервойИнформационнойБазе",
Параметры, Ключ);
РасширенияКонфигурации.ВыполнитьФоновоеЗаданиеСРасширениямиБазыДанных(
"ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВПервойИнформационнойБазе",
Параметры,
Ключ);
УстановитьПривилегированныйРежим(Истина);
МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);
@@ -152,8 +154,10 @@
МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Истина, СтрокаСценария.ЗначениеРазделителяВторойИнформационнойБазы);
УстановитьПривилегированныйРежим(Ложь);
ФоновыеЗадания.Выполнить("ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВоВторойИнформационнойБазе",
Параметры, Ключ);
РасширенияКонфигурации.ВыполнитьФоновоеЗаданиеСРасширениямиБазыДанных(
"ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВоВторойИнформационнойБазе",
Параметры,
Ключ);
УстановитьПривилегированныйРежим(Истина);
МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);
@@ -108,8 +108,10 @@
МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Истина, СтрокаСценария.ЗначениеРазделителяПервойИнформационнойБазы);
УстановитьПривилегированныйРежим(Ложь);
ФоновыеЗадания.Выполнить("ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВПервойИнформационнойБазе",
Параметры, Ключ);
РасширенияКонфигурации.ВыполнитьФоновоеЗаданиеСРасширениямиБазыДанных(
"ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВПервойИнформационнойБазе",
Параметры,
Ключ);
УстановитьПривилегированныйРежим(Истина);
МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);
@@ -174,8 +176,10 @@
МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Истина, СтрокаСценария.ЗначениеРазделителяВторойИнформационнойБазы);
УстановитьПривилегированныйРежим(Ложь);
ФоновыеЗадания.Выполнить("ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВоВторойИнформационнойБазе",
Параметры, Ключ);
РасширенияКонфигурации.ВыполнитьФоновоеЗаданиеСРасширениямиБазыДанных(
"ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВоВторойИнформационнойБазе",
Параметры,
Ключ);
УстановитьПривилегированныйРежим(Истина);
МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);
@@ -138,8 +138,10 @@
МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Истина, СтрокаСценария.ЗначениеРазделителяПервойИнформационнойБазы);
УстановитьПривилегированныйРежим(Ложь);
ФоновыеЗадания.Выполнить("ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВПервойИнформационнойБазе",
Параметры, Ключ);
РасширенияКонфигурации.ВыполнитьФоновоеЗаданиеСРасширениямиБазыДанных(
"ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВПервойИнформационнойБазе",
Параметры,
Ключ);
УстановитьПривилегированныйРежим(Истина);
МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);
@@ -204,8 +206,10 @@
МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Истина, СтрокаСценария.ЗначениеРазделителяВторойИнформационнойБазы);
УстановитьПривилегированныйРежим(Ложь);
ФоновыеЗадания.Выполнить("ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВоВторойИнформационнойБазе",
Параметры, Ключ);
РасширенияКонфигурации.ВыполнитьФоновоеЗаданиеСРасширениямиБазыДанных(
"ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВоВторойИнформационнойБазе",
Параметры,
Ключ);
УстановитьПривилегированныйРежим(Истина);
МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);