3_1_6_159
This commit is contained in:
1 parent
6bf07ee90b
commit
9623494cce
191 files changed
+4864
-3075
No files matched your search
@@ -18,6 +18,13 @@
|
||||
МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект);
|
||||
КонецЕсли;
|
||||
|
||||
// СтандартныеПодсистемы.ВерсионированиеОбъектов
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда
|
||||
МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов");
|
||||
МодульВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
|
||||
КонецЕсли;
|
||||
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -13,6 +13,13 @@
|
||||
|
||||
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "ЭтоГруппа", Истина);
|
||||
|
||||
// СтандартныеПодсистемы.ВерсионированиеОбъектов
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда
|
||||
МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов");
|
||||
МодульВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
|
||||
КонецЕсли;
|
||||
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@@ -97,6 +97,13 @@
|
||||
МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект);
|
||||
КонецЕсли;
|
||||
|
||||
// СтандартныеПодсистемы.ВерсионированиеОбъектов
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда
|
||||
МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов");
|
||||
МодульВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
|
||||
КонецЕсли;
|
||||
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -93,6 +93,13 @@
|
||||
МодульРаботаСАдресами.ЗаполнитьМаскиНомераТелефона(Элементы.ШаблонМаскиНомераТелефона.СписокВыбора);
|
||||
КонецЕсли;
|
||||
|
||||
// СтандартныеПодсистемы.ВерсионированиеОбъектов
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда
|
||||
МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов");
|
||||
МодульВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
|
||||
КонецЕсли;
|
||||
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
|
||||
@@ -114,6 +114,20 @@
|
||||
|
||||
// Конец СтандартныеПодсистемы.ПоискИУдалениеДублей
|
||||
|
||||
// СтандартныеПодсистемы.ВерсионированиеОбъектов
|
||||
|
||||
//
|
||||
// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
|
||||
//
|
||||
// Параметры:
|
||||
// Настройки - Структура - настройки подсистемы.
|
||||
//
|
||||
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -225,10 +225,6 @@
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Addition">
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Список поиск управление</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
|
||||
@@ -630,10 +630,6 @@
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Addition">
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Список поиск управление</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
|
||||
@@ -596,10 +596,6 @@
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Addition">
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Список поиск управление</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
|
||||
@@ -490,10 +490,6 @@
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Addition">
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Список поиск управление</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
|
||||
@@ -490,10 +490,6 @@
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Addition">
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Список поиск управление</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
|
||||
@@ -163,11 +163,7 @@
|
||||
ОтменитьТранзакцию();
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
Если ОбновляемыйНабор.ДополнительныеРеквизиты.Количество() = 0
|
||||
И ОбновляемыйНабор.ДополнительныеСведения.Количество() = 0 Тогда
|
||||
ОтменитьТранзакцию();
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ДлинаПрефикса = СтрДлина("Удалить");
|
||||
ИмяНабора = Сред(ОбновляемыйНабор.ИмяПредопределенныхДанных, ДлинаПрефикса + 1, СтрДлина(ОбновляемыйНабор.ИмяПредопределенныхДанных) - ДлинаПрефикса);
|
||||
ОписаниеНовогоНабора = ПредопределенныеНаборыСвойств.Получить(ИмяНабора); // см. Справочники.НаборыДополнительныхРеквизитовИСведений.СвойстваНабора
|
||||
@@ -281,7 +277,8 @@
|
||||
КонецЦикла;
|
||||
|
||||
Если ПроблемныхОбъектов <> 0 Тогда
|
||||
ТекстСообщения = НСтр("ru = 'Процедура ОбработатьНаборыСвойствДляПереходаНаНовуюВерсию завершилась с ошибкой. Не все наборы свойств удалось обновить.'");
|
||||
ТекстСообщения = НСтр("ru = 'Процедура %1 завершилась с ошибкой. Не все наборы свойств удалось обновить.'");
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, "ОбработатьНаборыСвойствДляПереходаНаНовуюВерсию");
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -401,6 +398,14 @@
|
||||
|
||||
// Только для внутреннего использования.
|
||||
//
|
||||
// Параметры:
|
||||
// НаборыСвойств - Соответствие
|
||||
// Набор - СтрокаДереваЗначений:
|
||||
// * Имя - Строка
|
||||
// * ЭтоГруппа - Булево
|
||||
// * Используется - Булево
|
||||
// * Идентификатор - УникальныйИдентификатор
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * Имя - Строка
|
||||
@@ -416,11 +421,13 @@
|
||||
Функция СвойстваНабора(НаборыСвойств, Набор, Родитель = Неопределено, Наименования = Неопределено) Экспорт
|
||||
|
||||
ЗаголовокОшибки =
|
||||
НСтр("ru = 'Ошибка в процедуре ПриСозданииПредопределенныхНаборовСвойств
|
||||
|общего модуля УправлениеСвойствамиПереопределяемый.'")
|
||||
НСтр("ru = 'Ошибка в процедуре %1
|
||||
|общего модуля %2.'")
|
||||
+ Символы.ПС
|
||||
+ Символы.ПС;
|
||||
|
||||
ЗаголовокОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ЗаголовокОшибки, "ПриСозданииПредопределенныхНаборовСвойств", "УправлениеСвойствамиПереопределяемый");
|
||||
|
||||
Если Не ЗначениеЗаполнено(Набор.Имя) Тогда
|
||||
ВызватьИсключение ЗаголовокОшибки + НСтр("ru = 'Имя набора свойств не заполнено.'");
|
||||
КонецЕсли;
|
||||
|
||||
@@ -188,6 +188,88 @@
|
||||
<textSize>Normal</textSize>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>АдресРегистрацииУстройства</name>
|
||||
<id>49</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<dataPath xsi:type="form:DataPath">
|
||||
<segments>Объект.АдресРегистрацииУстройства</segments>
|
||||
</dataPath>
|
||||
<extendedTooltip>
|
||||
<name>АдресРегистрацииУстройстваРасширеннаяПодсказка</name>
|
||||
<id>51</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>АдресРегистрацииУстройстваКонтекстноеМеню</name>
|
||||
<id>50</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>
|
||||
<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>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>АдресПолученияКлюча</name>
|
||||
<id>7</id>
|
||||
|
||||
@@ -53,13 +53,13 @@
|
||||
НастройкиАвторизации.Вставить("ПарольПриложения");
|
||||
НастройкиАвторизации.Вставить("ДополнительныеПараметрыАвторизации");
|
||||
НастройкиАвторизации.Вставить("ДополнительныеПараметрыПолученияТокена");
|
||||
НастройкиАвторизации.Вставить("ПояснениеПоАдресуПеренаправления");
|
||||
НастройкиАвторизации.Вставить("ПояснениеПоИдентификаторуПриложения");
|
||||
НастройкиАвторизации.Вставить("ПояснениеПоПаролюПриложения");
|
||||
НастройкиАвторизации.Вставить("ПсевдонимАдресаПеренаправления");
|
||||
НастройкиАвторизации.Вставить("ПсевдонимИдентификатораПриложения");
|
||||
НастройкиАвторизации.Вставить("ПсевдонимПароляПриложения");
|
||||
НастройкиАвторизации.Вставить("АдресПеренаправленияПоУмолчанию");
|
||||
НастройкиАвторизации.Вставить("ПояснениеПоАдресуПеренаправления", "");
|
||||
НастройкиАвторизации.Вставить("ПояснениеПоИдентификаторуПриложения", "");
|
||||
НастройкиАвторизации.Вставить("ПояснениеПоПаролюПриложения", "");
|
||||
НастройкиАвторизации.Вставить("ПсевдонимАдресаПеренаправления", "");
|
||||
НастройкиАвторизации.Вставить("ПсевдонимИдентификатораПриложения", "");
|
||||
НастройкиАвторизации.Вставить("ПсевдонимПароляПриложения", "");
|
||||
НастройкиАвторизации.Вставить("АдресПеренаправленияПоУмолчанию", "");
|
||||
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
@@ -109,17 +109,14 @@
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
Блокировка = Новый БлокировкаДанных;
|
||||
ЭлементБлокировки = Блокировка.Добавить("Справочник.НастройкиАвторизацииИнтернетСервисов");
|
||||
Если ЗначениеЗаполнено(НастройкиАвторизации.Ссылка) Тогда
|
||||
ЭлементБлокировки.УстановитьЗначение("Ссылка", НастройкиАвторизации.Ссылка);
|
||||
КонецЕсли;
|
||||
|
||||
НачатьТранзакцию();
|
||||
Попытка
|
||||
Если ЗначениеЗаполнено(НастройкиАвторизации.Ссылка) Тогда
|
||||
Блокировка = Новый БлокировкаДанных;
|
||||
ЭлементБлокировки = Блокировка.Добавить("Справочник.НастройкиАвторизацииИнтернетСервисов");
|
||||
ЭлементБлокировки.УстановитьЗначение("Ссылка", НастройкиАвторизации.Ссылка);
|
||||
Блокировка.Заблокировать();
|
||||
|
||||
Если ЗначениеЗаполнено(НастройкиАвторизации.Ссылка) Тогда
|
||||
НастройкиАвторизацииОбъект = НастройкиАвторизации.Ссылка.ПолучитьОбъект();
|
||||
Иначе
|
||||
НастройкиАвторизацииОбъект = СоздатьЭлемент();
|
||||
|
||||
@@ -732,10 +732,6 @@
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Addition">
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Пользователи поиск управление</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
|
||||
@@ -462,6 +462,10 @@
|
||||
<segments>АдресФотографии</segments>
|
||||
</dataPath>
|
||||
<titleLocation>None</titleLocation>
|
||||
<toolTip>
|
||||
<key>ru</key>
|
||||
<value>Выбрать фото</value>
|
||||
</toolTip>
|
||||
<extendedTooltip>
|
||||
<name>ФотографияРасширеннаяПодсказка</name>
|
||||
<id>355</id>
|
||||
@@ -475,6 +479,58 @@
|
||||
<contextMenu>
|
||||
<name>ФотографияКонтекстноеМеню</name>
|
||||
<id>354</id>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ФотографияКонтекстноеМенюВыбратьФотографию</name>
|
||||
<id>371</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ФотографияКонтекстноеМенюВыбратьФотографиюРасширеннаяПодсказка</name>
|
||||
<id>372</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>369</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ФотографияКонтекстноеМенюОчиститьФотографиюРасширеннаяПодсказка</name>
|
||||
<id>370</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>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>PictureField</type>
|
||||
@@ -2650,16 +2706,16 @@
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ФормаСправка</name>
|
||||
<id>349</id>
|
||||
<name>ФормаВыбратьФотографию</name>
|
||||
<id>373</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ФормаСправкаРасширеннаяПодсказка</name>
|
||||
<id>350</id>
|
||||
<name>ФормаВыбратьФотографиюРасширеннаяПодсказка</name>
|
||||
<id>374</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
@@ -2667,7 +2723,7 @@
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<commandName>Form.StandardCommand.Help</commandName>
|
||||
<commandName>Form.Command.ВыбратьФотографию</commandName>
|
||||
<buttonImportance>Normal</buttonImportance>
|
||||
<representation>Auto</representation>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
@@ -2813,6 +2869,32 @@
|
||||
<importance>Normal</importance>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ФормаСправка</name>
|
||||
<id>349</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ФормаСправкаРасширеннаяПодсказка</name>
|
||||
<id>350</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<commandName>Form.StandardCommand.Help</commandName>
|
||||
<buttonImportance>Normal</buttonImportance>
|
||||
<representation>Auto</representation>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<placementArea>UserCmds</placementArea>
|
||||
<representationInContextMenu>Auto</representationInContextMenu>
|
||||
</items>
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</autoCommandBar>
|
||||
<handlers>
|
||||
@@ -3884,6 +3966,24 @@
|
||||
<currentRowUse>Auto</currentRowUse>
|
||||
<selectedRowsUse>Auto</selectedRowsUse>
|
||||
</formCommands>
|
||||
<formCommands>
|
||||
<name>ВыбратьФотографию</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Выбрать фотографию...</value>
|
||||
</title>
|
||||
<id>10</id>
|
||||
<use>
|
||||
<common>true</common>
|
||||
</use>
|
||||
<action xsi:type="form:FormCommandHandlerContainer">
|
||||
<handler>
|
||||
<name>ВыбратьФотографию</name>
|
||||
</handler>
|
||||
</action>
|
||||
<currentRowUse>Auto</currentRowUse>
|
||||
<selectedRowsUse>Auto</selectedRowsUse>
|
||||
</formCommands>
|
||||
<parameters>
|
||||
<name>ГруппаНовогоПользователя</name>
|
||||
<valueType>
|
||||
|
||||
@@ -37,9 +37,7 @@
|
||||
|
||||
Если НЕ ДоступноИзменениеПользователей Тогда
|
||||
Если Объект.Ссылка.Пустая() Тогда
|
||||
ВызватьИсключение
|
||||
НСтр("ru = 'В демонстрационном режиме не поддерживается
|
||||
|создание новых пользователей.'");
|
||||
ВызватьИсключение НСтр("ru = 'В демонстрационном режиме создание новых учетных записей пользователей недоступно.'");
|
||||
КонецЕсли;
|
||||
ТолькоПросмотр = Истина;
|
||||
КонецЕсли;
|
||||
@@ -894,7 +892,6 @@
|
||||
&НаКлиенте
|
||||
Процедура ПотребоватьСменуПароляПриВходеРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
|
||||
СтандартнаяОбработка = Ложь;
|
||||
|
||||
ОткрытьФорму("ОбщаяФорма.НастройкиВходаПользователей", , ЭтотОбъект);
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -904,7 +901,8 @@
|
||||
ОповещениеОЗавершение = Новый ОписаниеОповещения("ФотографияНажатиеЗавершение", ЭтотОбъект);
|
||||
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
|
||||
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
|
||||
ФайловаяСистемаКлиент.ЗагрузитьФайл(ОповещениеОЗавершение,ПараметрыЗагрузки);
|
||||
ПараметрыЗагрузки.Диалог.Фильтр = НСтр("ru = 'Изображения'") + "|*.JPG;*.JPEG;*.JP2;*.JPG2;*.PNG;*.BMP;*.TIFF";
|
||||
ФайловаяСистемаКлиент.ЗагрузитьФайл(ОповещениеОЗавершение, ПараметрыЗагрузки);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
@@ -913,6 +911,17 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Картинка = Новый Картинка(ПолучитьИзВременногоХранилища(Результат.Хранение));
|
||||
Если Картинка.Формат() = ФорматКартинки.НеизвестныйФормат Тогда
|
||||
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать файл с изображением.'"));
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Картинка.РазмерФайла() > 2 * 1024 * 1024 Тогда
|
||||
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать файл с изображением меньше 2 Мб.'"));
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоАдресВременногоХранилища(АдресФотографии) Тогда
|
||||
УдалитьИзВременногоХранилища(АдресФотографии);
|
||||
КонецЕсли;
|
||||
@@ -1191,10 +1200,16 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ВыбратьФотографию(Команда)
|
||||
ФотографияНажатие(Элементы.Фотография, Ложь);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОчиститьФотографию(Команда)
|
||||
АдресФотографии = ПоместитьВоВременноеХранилище(БиблиотекаКартинок.ПользовательБезФотографии, УникальныйИдентификатор);
|
||||
ФотографияЗадана = Ложь;
|
||||
Модифицированность = Истина;
|
||||
КонецПроцедуры
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -1220,7 +1235,6 @@
|
||||
Процедура ВключитьРоли(Команда)
|
||||
|
||||
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВсе");
|
||||
|
||||
ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект, Ложь);
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -1232,9 +1246,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Поддержка дополнительных реквизитов.
|
||||
|
||||
&НаКлиенте
|
||||
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
|
||||
|
||||
|
||||
@@ -360,10 +360,6 @@
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Addition">
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Список поиск управление</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
|
||||
@@ -138,6 +138,63 @@
|
||||
<placementArea>UserCmds</placementArea>
|
||||
<representationInContextMenu>Auto</representationInContextMenu>
|
||||
</items>
|
||||
<items xsi:type="form:Addition">
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<name>СписокПоиск</name>
|
||||
<id>39</id>
|
||||
<extendedTooltip>
|
||||
<name>СписокПоискРасширеннаяПодсказка</name>
|
||||
<id>41</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>СписокПоискКонтекстноеМеню</name>
|
||||
<id>40</id>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<source>Список</source>
|
||||
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Addition">
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<name>СписокПоискУправление</name>
|
||||
<id>42</id>
|
||||
<extendedTooltip>
|
||||
<name>СписокПоискУправлениеРасширеннаяПодсказка</name>
|
||||
<id>44</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>СписокПоискУправлениеКонтекстноеМеню</name>
|
||||
<id>43</id>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>SearchControlAddition</type>
|
||||
<source>Список</source>
|
||||
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
</extInfo>
|
||||
</items>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
|
||||
@@ -485,10 +485,6 @@
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Addition">
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Список поиск управление</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
|
||||
НачатьТранзакцию();
|
||||
Попытка
|
||||
ЕстьУдаленные = Ложь;
|
||||
Удаленные = Новый Массив;
|
||||
ЕстьТекущиеИзменения = Ложь;
|
||||
СтароеЗначение = Неопределено;
|
||||
|
||||
@@ -162,14 +162,14 @@
|
||||
"СтандартныеПодсистемы.УправлениеДоступом.ПредопределенныеПрофилиГруппДоступа",
|
||||
ПредопределенныеПрофили, , СтароеЗначение);
|
||||
|
||||
Если Не ПредопределенныеПрофилиСовпадают(ПредопределенныеПрофили, СтароеЗначение, ЕстьУдаленные) Тогда
|
||||
Если Не ПредопределенныеПрофилиСовпадают(ПредопределенныеПрофили, СтароеЗначение, Удаленные) Тогда
|
||||
ЕстьТекущиеИзменения = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
СтандартныеПодсистемыСервер.ДобавитьИзмененияПараметраРаботыПрограммы(
|
||||
"СтандартныеПодсистемы.УправлениеДоступом.ПредопределенныеПрофилиГруппДоступа",
|
||||
?(ЕстьУдаленные,
|
||||
Новый ФиксированнаяСтруктура("ЕстьУдаленные", Истина),
|
||||
?(ЗначениеЗаполнено(Удаленные),
|
||||
Новый ФиксированнаяСтруктура("Удаленные", Новый ФиксированныйМассив(Удаленные)),
|
||||
Новый ФиксированнаяСтруктура()) );
|
||||
|
||||
ЗафиксироватьТранзакцию();
|
||||
@@ -199,9 +199,29 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Удаленные = Новый Массив;
|
||||
|
||||
Если ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() Тогда
|
||||
ПоследниеИзменения = СтандартныеПодсистемыСервер.ИзмененияПараметраРаботыПрограммы(
|
||||
"СтандартныеПодсистемы.УправлениеДоступом.ПредопределенныеПрофилиГруппДоступа");
|
||||
|
||||
Если ПоследниеИзменения <> Неопределено Тогда
|
||||
Для Каждого ЧастьИзменений Из ПоследниеИзменения Цикл
|
||||
Если ТипЗнч(ЧастьИзменений) = Тип("ФиксированнаяСтруктура")
|
||||
И ЧастьИзменений.Свойство("Удаленные")
|
||||
И ТипЗнч(ЧастьИзменений.Удаленные) = Тип("ФиксированныйМассив") Тогда
|
||||
|
||||
Для Каждого Удаленный Из ЧастьИзменений.Удаленные Цикл
|
||||
Удаленные.Добавить(Удаленный);
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
УправлениеДоступомСлужебный.ПроверитьАктуальностьМетаданных();
|
||||
|
||||
ОбновитьПоставляемыеПрофили();
|
||||
ОбновитьПоставляемыеПрофили(, Удаленные);
|
||||
СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(ИмяПараметра, НовоеЗначение, Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -238,19 +258,22 @@
|
||||
// Параметры:
|
||||
// ЕстьИзменения - Булево - возвращаемое значение. Если производилась запись,
|
||||
// устанавливается Истина, иначе не изменяется.
|
||||
// Удаленные - Массив - имена предопределенных элементов, которые были удалены,
|
||||
// используются для снятия пометки удаления с поставляемых данных с теми же именами.
|
||||
// - Неопределено
|
||||
//
|
||||
Процедура ОбновитьПоставляемыеПрофили(ЕстьИзменения = Неопределено) Экспорт
|
||||
Процедура ОбновитьПоставляемыеПрофили(ЕстьИзменения = Неопределено, Удаленные = Неопределено) Экспорт
|
||||
|
||||
ПоставляемыеПрофили = УправлениеДоступомСлужебный.ПоставляемыеПрофили();
|
||||
|
||||
ТекущиеПапкиПрофилей = ТекущиеПапкиПрофилей();
|
||||
ОбновитьПоставляемыеПапкиПрофилей("", ТекущиеПапкиПрофилей, ПоставляемыеПрофили, ЕстьИзменения);
|
||||
ОбновитьПоставляемыеПапкиПрофилей("", ТекущиеПапкиПрофилей, ПоставляемыеПрофили, Удаленные, ЕстьИзменения);
|
||||
ПометитьНаУдалениеУстаревшиеПоставляемыеДанные(ТекущиеПапкиПрофилей, ЕстьИзменения);
|
||||
|
||||
ТекущиеПрофили = ТекущиеПрофили();
|
||||
ОбновленныеПрофили = Новый Массив;
|
||||
ОбновитьПоставляемыеПрофилиБезПапок(ОбновленныеПрофили,
|
||||
ТекущиеПрофили, ТекущиеПапкиПрофилей, ПоставляемыеПрофили, ЕстьИзменения);
|
||||
ТекущиеПрофили, ТекущиеПапкиПрофилей, ПоставляемыеПрофили, Удаленные, ЕстьИзменения);
|
||||
ПометитьНаУдалениеУстаревшиеПоставляемыеДанные(ТекущиеПрофили, ЕстьИзменения, ОбновленныеПрофили);
|
||||
ОбновитьВспомогательныеДанныеПрофилей(ОбновленныеПрофили, ЕстьИзменения);
|
||||
|
||||
@@ -956,7 +979,11 @@
|
||||
|
||||
Если СтароеЗначение <> НовоеЗначение Тогда
|
||||
УправлениеДоступомСлужебный.ПроверитьАктуальностьМетаданных();
|
||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(ИмяПараметра, НовоеЗначение, Истина);
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
Кэш.Проверка.Дата = ТекущаяДатаСеанса;
|
||||
@@ -1301,7 +1328,11 @@
|
||||
|
||||
Если СтароеЗначение <> НовоеЗначение Тогда
|
||||
УправлениеДоступомСлужебный.ПроверитьАктуальностьМетаданных();
|
||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(ИмяПараметра, НовоеЗначение, Истина);
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
Кэш.Проверка.Дата = ТекущаяДатаСеанса;
|
||||
@@ -1879,7 +1910,11 @@
|
||||
//
|
||||
Функция ХешСуммаПоставляемыхПрофилей(ПоставляемыеПрофили) Экспорт
|
||||
|
||||
Возврат УправлениеДоступомСлужебный.ХешСуммаДанных(ПоставляемыеПрофили);
|
||||
ДанныеДляХеширования = Новый Структура(ПоставляемыеПрофили);
|
||||
ДанныеДляХеширования.Вставить("ИменаПредопределенных",
|
||||
Метаданные.Справочники.ПрофилиГруппДоступа.ПолучитьИменаПредопределенных());
|
||||
|
||||
Возврат УправлениеДоступомСлужебный.ХешСуммаДанных(ДанныеДляХеширования);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -2229,10 +2264,9 @@
|
||||
КонецФункции
|
||||
|
||||
// Для процедуры ОбновитьСоставПредопределенныхПрофилей.
|
||||
Функция ПредопределенныеПрофилиСовпадают(НовыеПрофили, СтарыеПрофили, ЕстьУдаленные)
|
||||
Функция ПредопределенныеПрофилиСовпадают(НовыеПрофили, СтарыеПрофили, Удаленные)
|
||||
|
||||
Если ТипЗнч(НовыеПрофили) <> ТипЗнч(СтарыеПрофили) Тогда
|
||||
ЕстьУдаленные = Истина;
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -2242,8 +2276,7 @@
|
||||
Для Каждого Профиль Из СтарыеПрофили Цикл
|
||||
Если НовыеПрофили.Найти(Профиль) = Неопределено Тогда
|
||||
ПредопределенныеПрофилиСовпадают = Ложь;
|
||||
ЕстьУдаленные = Истина;
|
||||
Прервать;
|
||||
Удаленные.Добавить(Профиль);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
@@ -2252,7 +2285,7 @@
|
||||
КонецФункции
|
||||
|
||||
// Для процедуры ОбновитьПоставляемыеПрофили.
|
||||
Процедура ОбновитьПоставляемыеПапкиПрофилей(Родитель, ТекущиеПапкиПрофилей, ПоставляемыеПрофили, ЕстьИзменения)
|
||||
Процедура ОбновитьПоставляемыеПапкиПрофилей(Родитель, ТекущиеПапкиПрофилей, ПоставляемыеПрофили, Удаленные, ЕстьИзменения)
|
||||
|
||||
ПапкиРодителя = ПоставляемыеПрофили.ПапкиПоРодителям.Получить(Родитель);
|
||||
Если Не ЗначениеЗаполнено(ПапкиРодителя) Тогда
|
||||
@@ -2268,12 +2301,12 @@
|
||||
СтрокаТекущейПапки.Найден = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если ОбновитьПрофильИлиПапкуПрофилей(СвойстваПрофиля, Истина) Тогда
|
||||
Если ОбновитьПрофильИлиПапкуПрофилей(СвойстваПрофиля, Удаленные, Истина) Тогда
|
||||
ЕстьИзменения = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
ОбновитьПоставляемыеПапкиПрофилей(КлючИЗначение.Ключ,
|
||||
ТекущиеПапкиПрофилей, ПоставляемыеПрофили, ЕстьИзменения);
|
||||
ТекущиеПапкиПрофилей, ПоставляемыеПрофили, Удаленные, ЕстьИзменения);
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -2320,7 +2353,7 @@
|
||||
|
||||
// Для процедуры ОбновитьПоставляемыеПрофили.
|
||||
Процедура ОбновитьПоставляемыеПрофилиБезПапок(ОбновленныеПрофили, ТекущиеПрофили,
|
||||
ТекущиеПапкиПрофилей, ПоставляемыеПрофили, ЕстьИзменения)
|
||||
ТекущиеПапкиПрофилей, ПоставляемыеПрофили, Удаленные, ЕстьИзменения)
|
||||
|
||||
ОписанияПрофилей = ПоставляемыеПрофили.ОписанияПрофилейМассив;
|
||||
ПараметрыОбновления = ПоставляемыеПрофили.ПараметрыОбновления;
|
||||
@@ -2338,7 +2371,7 @@
|
||||
|
||||
Если СтрокаТекущегоПрофиля = Неопределено Тогда
|
||||
// Создание нового поставляемого профиля.
|
||||
Если ОбновитьПрофильИлиПапкуПрофилей(СвойстваПрофиля, Истина) Тогда
|
||||
Если ОбновитьПрофильИлиПапкуПрофилей(СвойстваПрофиля, Удаленные, Истина) Тогда
|
||||
ЕстьИзменения = Истина;
|
||||
КонецЕсли;
|
||||
Профиль = ПоставляемыйПрофильПоИдентификатору(СвойстваПрофиля.Идентификатор);
|
||||
@@ -2350,7 +2383,7 @@
|
||||
Если Не СтрокаТекущегоПрофиля.ПоставляемыйПрофильИзменен
|
||||
Или ПараметрыОбновления.ОбновлятьИзмененныеПрофили Тогда
|
||||
// Обновление поставляемого профиля.
|
||||
ПрофильОбновлен = ОбновитьПрофильИлиПапкуПрофилей(СвойстваПрофиля, Истина);
|
||||
ПрофильОбновлен = ОбновитьПрофильИлиПапкуПрофилей(СвойстваПрофиля, Удаленные, Истина);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -2376,13 +2409,18 @@
|
||||
//
|
||||
// Параметры:
|
||||
// СвойстваПрофиля - см. СвойстваПоставляемогоПрофиля
|
||||
// Удаленные - Массив
|
||||
// - Неопределено
|
||||
// НеОбновлятьРолиПользователей - Булево
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Истина - профиль изменен.
|
||||
//
|
||||
Функция ОбновитьПрофильИлиПапкуПрофилей(СвойстваПрофиля, НеОбновлятьРолиПользователей = Ложь)
|
||||
Функция ОбновитьПрофильИлиПапкуПрофилей(СвойстваПрофиля, Удаленные = Неопределено, НеОбновлятьРолиПользователей = Ложь)
|
||||
|
||||
ПрофильИзменен = Ложь;
|
||||
УдаленПредопределенныйЭлементПапкиИлиПрофиля = ТипЗнч(Удаленные) = Тип("Массив")
|
||||
И Удаленные.Найти(СвойстваПрофиля.Имя) <> Неопределено;
|
||||
|
||||
ПрофильСсылка = ПоставляемыйПрофильПоИдентификатору(СвойстваПрофиля.Идентификатор);
|
||||
Если ПрофильСсылка = Неопределено Тогда
|
||||
@@ -2467,7 +2505,8 @@
|
||||
ПрофильИзменен = Истина;
|
||||
Иначе
|
||||
ПрофильОбъект = ПрофильСсылка.ПолучитьОбъект();
|
||||
ПрофильИзменен = ПоставляемыйПрофильИзменен(ПрофильОбъект);
|
||||
ПрофильИзменен = ПоставляемыйПрофильИзменен(ПрофильОбъект)
|
||||
Или УдаленПредопределенныйЭлементПапкиИлиПрофиля;
|
||||
КонецЕсли;
|
||||
|
||||
Если ПрофильИзменен Тогда
|
||||
@@ -2478,6 +2517,10 @@
|
||||
ЗаблокироватьДанныеДляРедактирования(ПрофильОбъект.Ссылка, ПрофильОбъект.ВерсияДанных);
|
||||
КонецЕсли;
|
||||
|
||||
Если УдаленПредопределенныйЭлементПапкиИлиПрофиля Тогда
|
||||
ПрофильОбъект.ПометкаУдаления = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
ПрофильОбъект.Наименование = СвойстваПрофиля.Наименование;
|
||||
|
||||
Если ЗначениеЗаполнено(СвойстваПрофиля.Родитель) Тогда
|
||||
|
||||
@@ -1118,10 +1118,6 @@
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Addition">
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Список поиск управление</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
|
||||
+1
-1
@@ -763,7 +763,7 @@
|
||||
УстановитьЭлемент(ЭтотОбъект, "НаличиеСертификата", Истина, ОписаниеОшибки, , ОбъединятьРезультаты);
|
||||
|
||||
// Если не нашли сертификат в хранилище сертификатов, проверки прекращаются.
|
||||
Если Не Результат.Выполнено Тогда
|
||||
Если Не ПустаяСтрока(ОписаниеОшибки) Тогда
|
||||
ВыполнитьОбработкуОповещения(Контекст.Оповещение);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
-4
@@ -499,10 +499,6 @@
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Addition">
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Список поиск управление</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
|
||||
BIN
Binary file not shown.
+1
-1
@@ -809,7 +809,7 @@
|
||||
<usePurposes>MobileDevice</usePurposes>
|
||||
</forms>
|
||||
<templates uuid="5189beb9-b939-4f97-aca0-c2f3492ac8b9">
|
||||
<name>КомпонентаExtraCryptoAPI_3_0_1_26</name>
|
||||
<name>КомпонентаExtraCryptoAPI_3_0_1_27</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Компонента ExtraCryptoAPI</value>
|
||||
|
||||
@@ -727,6 +727,16 @@
|
||||
<Value>false</Value>
|
||||
<Value>Djibouti</Value>
|
||||
</row>
|
||||
<row>
|
||||
<Value>ДОНЕЦКАЯ НАРОДНАЯ РЕСПУБЛИКА</Value>
|
||||
<Value>DN</Value>
|
||||
<Value>DNR</Value>
|
||||
<Value>897</Value>
|
||||
<Value>Донецкая Народная Республика</Value>
|
||||
<Value>false</Value>
|
||||
<Value>false</Value>
|
||||
<Value>Donetskaya Narodnaya Respublika</Value>
|
||||
</row>
|
||||
<row>
|
||||
<Value>ДОМИНИКА</Value>
|
||||
<Value>DM</Value>
|
||||
@@ -775,7 +785,7 @@
|
||||
<Value/>
|
||||
<Value>false</Value>
|
||||
<Value>false</Value>
|
||||
<Value>Western Sahara*</Value>
|
||||
<Value>Western Sahara</Value>
|
||||
</row>
|
||||
<row>
|
||||
<Value>ЗИМБАБВЕ</Value>
|
||||
@@ -1207,6 +1217,16 @@
|
||||
<Value>false</Value>
|
||||
<Value>Liechtenstein</Value>
|
||||
</row>
|
||||
<row>
|
||||
<Value>ЛУГАНСКАЯ НАРОДНАЯ РЕСПУБЛИКА</Value>
|
||||
<Value>LN</Value>
|
||||
<Value>LNR</Value>
|
||||
<Value>898</Value>
|
||||
<Value>Луганская Народная Республика</Value>
|
||||
<Value>false</Value>
|
||||
<Value>false</Value>
|
||||
<Value>Luganskaya Narodnaya Respublika</Value>
|
||||
</row>
|
||||
<row>
|
||||
<Value>ЛЮКСЕМБУРГ</Value>
|
||||
<Value>LU</Value>
|
||||
|
||||
@@ -199,24 +199,23 @@
|
||||
ТекстПротокола = РезультатДиагностики.ЖурналДиагностики;
|
||||
|
||||
ИначеЕсли СтруктураРезультата.КодОшибки = 404 Тогда
|
||||
ТекстОшибки = НСтр("ru = 'Проверьте правильность указанной корневой папки.'");
|
||||
ТекстОшибки = НСтр("ru = 'Проверьте, что указанная корневая папка существует в облачном сервисе.'");
|
||||
ИначеЕсли СтруктураРезультата.КодОшибки = 401 Тогда
|
||||
ТекстОшибки = НСтр("ru = 'Проверьте правильность введенных логина/пароля.'");
|
||||
ТекстОшибки = НСтр("ru = 'Проверьте правильность введенных логина и пароля.'");
|
||||
Иначе
|
||||
ТекстОшибки = НСтр("ru = 'Проверьте правильность введенных данных.'");
|
||||
КонецЕсли;
|
||||
|
||||
ПоказатьПредупреждение(Неопределено, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Проверка параметров учетной записи завершилась с ошибками.
|
||||
|%1
|
||||
НСтр("ru = 'Некорректные параметры для синхронизации файлов.
|
||||
|Сервис %1 вернул код ошибки %2. %3
|
||||
|
|
||||
|Технические подробности:
|
||||
|%2'"),
|
||||
ТекстОшибки,
|
||||
ТекстПротокола));
|
||||
|%4'"),
|
||||
Сервис, СтруктураРезультата.КодОшибки, ТекстОшибки, ТекстПротокола));
|
||||
Иначе
|
||||
ПоказатьПредупреждение(Неопределено, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Проверка параметров учетной записи завершилась успешно.
|
||||
НСтр("ru = 'Проверка параметров для синхронизации файлов завершилась успешно.
|
||||
|%1'"),
|
||||
РезультатТекст));
|
||||
КонецЕсли;
|
||||
|
||||
+60
-7
@@ -298,8 +298,63 @@
|
||||
<textSize>Normal</textSize>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>СпособАутентификации</name>
|
||||
<id>362</id>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<dataPath xsi:type="form:DataPath">
|
||||
<segments>СпособАутентификации</segments>
|
||||
</dataPath>
|
||||
<titleLocation>None</titleLocation>
|
||||
<extendedTooltip>
|
||||
<name>СпособАутентификацииРасширеннаяПодсказка</name>
|
||||
<id>364</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>СпособАутентификацииКонтекстноеМеню</name>
|
||||
<id>363</id>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>RadioButtonField</type>
|
||||
<editMode>Enter</editMode>
|
||||
<showInHeader>true</showInHeader>
|
||||
<headerHorizontalAlign>Left</headerHorizontalAlign>
|
||||
<showInFooter>true</showInFooter>
|
||||
<extInfo xsi:type="form:RadioButtonsFieldExtInfo">
|
||||
<radioButtonsType>RadioButtons</radioButtonsType>
|
||||
<columnsCount>1</columnsCount>
|
||||
<choiceList>
|
||||
<presentation>
|
||||
<key>ru</key>
|
||||
<value>Авторизоваться на почтовом сервисе</value>
|
||||
</presentation>
|
||||
<value xsi:type="core:StringValue">
|
||||
<value>OAuth</value>
|
||||
</value>
|
||||
</choiceList>
|
||||
<choiceList>
|
||||
<presentation>
|
||||
<key>ru</key>
|
||||
<value>Ввести пароль</value>
|
||||
</presentation>
|
||||
<value xsi:type="core:StringValue">
|
||||
<value>Пароль</value>
|
||||
</value>
|
||||
</choiceList>
|
||||
<orientation>Vertical</orientation>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>Группа1</name>
|
||||
<name>ГруппаСпособАутентификацииПароль</name>
|
||||
<id>298</id>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>СпособАутентификацииПароль</name>
|
||||
@@ -422,10 +477,10 @@
|
||||
</userVisible>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Группа1</value>
|
||||
<value>Способ аутентификации пароль</value>
|
||||
</title>
|
||||
<extendedTooltip>
|
||||
<name>Группа1РасширеннаяПодсказка</name>
|
||||
<name>ГруппаСпособАутентификацииПарольРасширеннаяПодсказка</name>
|
||||
<id>299</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
@@ -456,6 +511,7 @@
|
||||
<segments>СпособАутентификации</segments>
|
||||
</dataPath>
|
||||
<titleLocation>None</titleLocation>
|
||||
<shortcut>Ctrl+S</shortcut>
|
||||
<handlers>
|
||||
<event>OnChange</event>
|
||||
<name>СпособАутентификацииПриИзменении</name>
|
||||
@@ -485,7 +541,7 @@
|
||||
<choiceList>
|
||||
<presentation>
|
||||
<key>ru</key>
|
||||
<value>Авторизоваться с помощью почтового сервиса</value>
|
||||
<value>Авторизоваться на почтовом сервисе</value>
|
||||
</presentation>
|
||||
<value xsi:type="core:StringValue">
|
||||
<value>OAuth</value>
|
||||
@@ -1636,7 +1692,6 @@
|
||||
<formatted>true</formatted>
|
||||
<type>Label</type>
|
||||
<maxWidth>50</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
@@ -1714,7 +1769,6 @@
|
||||
<formatted>true</formatted>
|
||||
<type>Label</type>
|
||||
<maxWidth>50</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
@@ -1792,7 +1846,6 @@
|
||||
<formatted>true</formatted>
|
||||
<type>Label</type>
|
||||
<maxWidth>50</maxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
|
||||
+35
-11
@@ -71,7 +71,7 @@
|
||||
Элементы.Пароль.Доступность = Ложь;
|
||||
Если ТолькоАвторизация Тогда
|
||||
НастройкиАвторизации = НастройкиАвторизацииНаПочтовомСервере();
|
||||
Если ЗначениеЗаполнено(НастройкиАвторизации.ИдентификаторПриложения) Тогда
|
||||
Если ЗначениеЗаполнено(НастройкиАвторизации) И ЗначениеЗаполнено(НастройкиАвторизации.ИдентификаторПриложения) Тогда
|
||||
ИдентификаторПриложения = НастройкиАвторизации.ИдентификаторПриложения;
|
||||
АдресПеренаправления = НастройкиАвторизации.АдресПеренаправления;
|
||||
Если ЭтоВебКлиент() Тогда
|
||||
@@ -79,9 +79,8 @@
|
||||
КонецЕсли;
|
||||
|
||||
ПарольПриложения = НастройкиАвторизации.ПарольПриложения;
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(НастройкиАвторизации.ИдентификаторПриложения) Тогда
|
||||
Элементы.Страницы.ТекущаяСтраница = Элементы.Авторизация;
|
||||
|
||||
Если ЭтоВебКлиент() Тогда
|
||||
Элементы.ВариантыАвторизации.ТекущаяСтраница = Элементы.БраузерОперационнойСистемы;
|
||||
Иначе
|
||||
@@ -119,19 +118,21 @@
|
||||
|
||||
ТребуетсяАвторизацияПриОтправкеПисем = Истина;
|
||||
|
||||
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
|
||||
Элементы.Пароль.РастягиватьПоГоризонтали = Истина;
|
||||
Элементы.СпособАутентификации.Видимость = Истина;
|
||||
Элементы.СпособАутентификацииПароль.Видимость = Ложь;
|
||||
Элементы.СпособАутентификацииПочтовыйСервис.Видимость = Ложь;
|
||||
Элементы.ГруппаСпособАутентификацииПароль.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
|
||||
Элементы.Пароль.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПриОткрытии(Отказ)
|
||||
|
||||
Если ТолькоАвторизация Тогда
|
||||
УстановитьТекстыПоясненийПоРегистрацииПриложения();
|
||||
Если Элементы.Страницы.ТекущаяСтраница = Элементы.Авторизация Тогда
|
||||
АвторизоватьсяНаПочтовомСервере();
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
НастроитьЭлементыТекущейСтраницы();
|
||||
ПодключитьОбработчикОжидания("НастроитьЭлементыТекущейСтраницыПриОткрытии", 0.1, Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -431,6 +432,10 @@
|
||||
&НаКлиенте
|
||||
Процедура УстановитьТекстыПоясненийПоРегистрацииПриложения()
|
||||
|
||||
Если Не ЗначениеЗаполнено(НастройкиАвторизации) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(НастройкиАвторизации.ПояснениеПоАдресуПеренаправления)
|
||||
И Не ЗначениеЗаполнено(НастройкиАвторизации.ПояснениеПоИдентификаторуПриложения)
|
||||
И Не ЗначениеЗаполнено(НастройкиАвторизации.ПояснениеПоПаролюПриложения) Тогда
|
||||
@@ -1461,4 +1466,23 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Процедура НастроитьЭлементыТекущейСтраницыПриОткрытии()
|
||||
|
||||
Если ТолькоАвторизация Тогда
|
||||
Если Не ЗначениеЗаполнено(НастройкиАвторизации) Тогда
|
||||
Закрыть(НСтр("ru = 'Не найдены настройки авторизации для указанного адреса электронной почты.
|
||||
|Используйте авторизацию по логину и паролю.'"));
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
УстановитьТекстыПоясненийПоРегистрацииПриложения();
|
||||
Если Элементы.Страницы.ТекущаяСтраница = Элементы.Авторизация Тогда
|
||||
АвторизоватьсяНаПочтовомСервере();
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
НастроитьЭлементыТекущейСтраницы();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@@ -3,6 +3,7 @@
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>Шапка</name>
|
||||
<id>86</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>Наименование</name>
|
||||
<id>1</id>
|
||||
@@ -184,6 +185,7 @@
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ИспользоватьУчетнуюЗапись</name>
|
||||
<id>88</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>ДляОтправки</name>
|
||||
<id>90</id>
|
||||
@@ -302,6 +304,7 @@
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ГруппаДляКогоУчетнаяЗапись</name>
|
||||
<id>222</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>ДляКогоУчетнаяЗапись</name>
|
||||
<id>224</id>
|
||||
@@ -449,9 +452,11 @@
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>НастройкиСоединения</name>
|
||||
<id>96</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>Протокол</name>
|
||||
<id>108</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Тип учетной записи</value>
|
||||
@@ -516,12 +521,10 @@
|
||||
<dropListWidth>4</dropListWidth>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ЛогинПароль</name>
|
||||
<id>263</id>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>Логин</name>
|
||||
<id>102</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Логин</value>
|
||||
@@ -566,18 +569,26 @@
|
||||
<textSize>Normal</textSize>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>СпособАутентификацииПочтовыйСервис</name>
|
||||
<id>296</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Логин пароль</value>
|
||||
</title>
|
||||
<dataPath xsi:type="form:DataPath">
|
||||
<segments>СпособАутентификации</segments>
|
||||
</dataPath>
|
||||
<titleLocation>None</titleLocation>
|
||||
<handlers>
|
||||
<event>OnChange</event>
|
||||
<name>СпособАутентификацииПриИзменении</name>
|
||||
</handlers>
|
||||
<extendedTooltip>
|
||||
<name>ЛогинПарольРасширеннаяПодсказка</name>
|
||||
<id>264</id>
|
||||
<name>СпособАутентификацииПочтовыйСервисРасширеннаяПодсказка</name>
|
||||
<id>298</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
@@ -585,22 +596,38 @@
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<type>UsualGroup</type>
|
||||
<extInfo xsi:type="form:UsualGroupExtInfo">
|
||||
<group>HorizontalIfPossible</group>
|
||||
<behavior>Auto</behavior>
|
||||
<showLeftMargin>true</showLeftMargin>
|
||||
<united>true</united>
|
||||
<throughAlign>Auto</throughAlign>
|
||||
<currentRowUse>Auto</currentRowUse>
|
||||
<contextMenu>
|
||||
<name>СпособАутентификацииПочтовыйСервисКонтекстноеМеню</name>
|
||||
<id>297</id>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>RadioButtonField</type>
|
||||
<editMode>Enter</editMode>
|
||||
<showInHeader>true</showInHeader>
|
||||
<headerHorizontalAlign>Left</headerHorizontalAlign>
|
||||
<showInFooter>true</showInFooter>
|
||||
<extInfo xsi:type="form:RadioButtonsFieldExtInfo">
|
||||
<radioButtonsType>RadioButtons</radioButtonsType>
|
||||
<choiceList>
|
||||
<presentation>
|
||||
<key>ru</key>
|
||||
<value>Авторизация на почтовом сервисе</value>
|
||||
</presentation>
|
||||
<value xsi:type="core:StringValue">
|
||||
<value>OAuth</value>
|
||||
</value>
|
||||
</choiceList>
|
||||
<orientation>Vertical</orientation>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>Группа1</name>
|
||||
<id>283</id>
|
||||
<name>ВыборСпособаАутентификации</name>
|
||||
<id>291</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>СпособАутентификацииПароль</name>
|
||||
<id>280</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
@@ -635,6 +662,7 @@
|
||||
<headerHorizontalAlign>Left</headerHorizontalAlign>
|
||||
<showInFooter>true</showInFooter>
|
||||
<extInfo xsi:type="form:RadioButtonsFieldExtInfo">
|
||||
<radioButtonsType>RadioButtons</radioButtonsType>
|
||||
<choiceList>
|
||||
<presentation>
|
||||
<key>ru</key>
|
||||
@@ -650,6 +678,7 @@
|
||||
<items xsi:type="form:FormField">
|
||||
<name>Пароль</name>
|
||||
<id>105</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
@@ -714,11 +743,11 @@
|
||||
</userVisible>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Группа1</value>
|
||||
<value>Атата</value>
|
||||
</title>
|
||||
<extendedTooltip>
|
||||
<name>Группа1РасширеннаяПодсказка</name>
|
||||
<id>284</id>
|
||||
<name>ВыборСпособаАутентификацииРасширеннаяПодсказка</name>
|
||||
<id>292</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
@@ -736,58 +765,10 @@
|
||||
<currentRowUse>Auto</currentRowUse>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>СпособАутентификации</name>
|
||||
<id>285</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<dataPath xsi:type="form:DataPath">
|
||||
<segments>СпособАутентификации</segments>
|
||||
</dataPath>
|
||||
<titleLocation>None</titleLocation>
|
||||
<handlers>
|
||||
<event>OnChange</event>
|
||||
<name>СпособАутентификацииПриИзменении</name>
|
||||
</handlers>
|
||||
<extendedTooltip>
|
||||
<name>СпособАутентификацииРасширеннаяПодсказка</name>
|
||||
<id>287</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>СпособАутентификацииКонтекстноеМеню</name>
|
||||
<id>286</id>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>RadioButtonField</type>
|
||||
<editMode>Enter</editMode>
|
||||
<showInHeader>true</showInHeader>
|
||||
<headerHorizontalAlign>Left</headerHorizontalAlign>
|
||||
<showInFooter>true</showInFooter>
|
||||
<extInfo xsi:type="form:RadioButtonsFieldExtInfo">
|
||||
<choiceList>
|
||||
<presentation>
|
||||
<key>ru</key>
|
||||
<value>Авторизоваться с помощью почтового сервиса</value>
|
||||
</presentation>
|
||||
<value xsi:type="core:StringValue">
|
||||
<value>OAuth</value>
|
||||
</value>
|
||||
</choiceList>
|
||||
<orientation>Vertical</orientation>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ОставлятьПисьмаНаСервере</name>
|
||||
<id>185</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>ОставлятьКопииПисемНаСервере</name>
|
||||
<id>130</id>
|
||||
@@ -1043,6 +1024,7 @@
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>НастройкиСервераВходящейПочты</name>
|
||||
<id>125</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>СерверВходящейПочты</name>
|
||||
<id>113</id>
|
||||
@@ -1229,6 +1211,7 @@
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>НастройкиСервераИсходящейПочты</name>
|
||||
<id>158</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>СерверИсходящейПочты</name>
|
||||
<id>174</id>
|
||||
@@ -1455,6 +1438,7 @@
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ОтправкаПисем</name>
|
||||
<id>100</id>
|
||||
<displayImportance>VeryHigh</displayImportance>
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ГруппаТребуетсяАвторизация</name>
|
||||
<id>258</id>
|
||||
@@ -2288,12 +2272,7 @@
|
||||
</parameters>
|
||||
<commandInterface>
|
||||
<navigationPanel/>
|
||||
<commandBar>
|
||||
<cmiFragmentRecord>
|
||||
<command>0</command>
|
||||
<userVisible/>
|
||||
</cmiFragmentRecord>
|
||||
</commandBar>
|
||||
<commandBar/>
|
||||
</commandInterface>
|
||||
<extInfo xsi:type="form:CatalogFormExtInfo">
|
||||
<handlers>
|
||||
|
||||
@@ -40,6 +40,19 @@
|
||||
ЦветПодсветки = ЦветаСтиля.ПоясняющийОшибкуТекст;
|
||||
ИдентификаторИсправления = Параметры.ИдентификаторИсправления;
|
||||
|
||||
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
|
||||
Элементы.СпособАутентификацииПочтовыйСервис.Видимость = Ложь;
|
||||
|
||||
Элементы.СпособАутентификацииПароль.СписокВыбора.Очистить();
|
||||
Элементы.СпособАутентификацииПароль.СписокВыбора.Добавить("OAuth", НСтр("ru = 'Авторизация на почтовом сервисе'"));
|
||||
Элементы.СпособАутентификацииПароль.СписокВыбора.Добавить("Пароль", НСтр("ru = 'Использовать пароль'"));
|
||||
|
||||
Элементы.Пароль.РастягиватьПоГоризонтали = Истина;
|
||||
Элементы.Пароль.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
|
||||
|
||||
Элементы.Пароль.Видимость = Не Объект.АвторизацияСПомощьюПочтовогоСервиса;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
@@ -322,7 +335,12 @@
|
||||
Процедура СпособАутентификацииПриИзменении(Элемент)
|
||||
|
||||
Объект.АвторизацияСПомощьюПочтовогоСервиса = СпособАутентификации = "OAuth";
|
||||
|
||||
#Если МобильныйКлиент Тогда
|
||||
Элементы.Пароль.Видимость = Не Объект.АвторизацияСПомощьюПочтовогоСервиса;
|
||||
#Иначе
|
||||
Элементы.Пароль.Доступность = Не Объект.АвторизацияСПомощьюПочтовогоСервиса;
|
||||
#КонецЕсли
|
||||
|
||||
Если Объект.АвторизацияСПомощьюПочтовогоСервиса Тогда
|
||||
ОткрытьФормуПомощникаНастроек(Истина);
|
||||
@@ -588,7 +606,16 @@
|
||||
Если Результат <> Истина Тогда
|
||||
Объект.АвторизацияСПомощьюПочтовогоСервиса = Ложь;
|
||||
СпособАутентификации = "Пароль";
|
||||
ПоказатьПредупреждение(Неопределено, НСтр("ru = 'Не удалось авторизоваться на почтовом сервере.'"));
|
||||
#Если МобильныйКлиент Тогда
|
||||
Элементы.Пароль.Видимость = Не Объект.АвторизацияСПомощьюПочтовогоСервиса;
|
||||
#Иначе
|
||||
Элементы.Пароль.Доступность = Не Объект.АвторизацияСПомощьюПочтовогоСервиса;
|
||||
#КонецЕсли
|
||||
ТекстПредупреждения = НСтр("ru = 'Не удалось авторизоваться на почтовом сервисе.'");
|
||||
Если ТипЗнч(Результат) = Тип("Строка") Тогда
|
||||
ТекстПредупреждения = ТекстПредупреждения + Символы.ПС + Результат;
|
||||
КонецЕсли;
|
||||
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
|
||||
КонецЕсли;
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
@@ -646,7 +673,12 @@
|
||||
Иначе
|
||||
СпособАутентификации = "Пароль";
|
||||
КонецЕсли;
|
||||
|
||||
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
|
||||
Элементы.Пароль.Видимость = Не Объект.АвторизацияСПомощьюПочтовогоСервиса;
|
||||
Иначе
|
||||
Элементы.Пароль.Доступность = Не Объект.АвторизацияСПомощьюПочтовогоСервиса;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -312,84 +312,6 @@
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ФормаГруппаКомандЭлектроннаяПодпись</name>
|
||||
<id>129</id>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ФормаПодписатьФайлЭП</name>
|
||||
<id>289</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ФормаПодписатьФайлЭПРасширеннаяПодсказка</name>
|
||||
<id>292</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>290</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ФормаДобавитьЭПИзФайлаРасширеннаяПодсказка</name>
|
||||
<id>293</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>291</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ФормаСохранитьВместеСЭПРасширеннаяПодсказка</name>
|
||||
<id>294</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>19</id>
|
||||
|
||||
@@ -353,10 +353,6 @@
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Addition">
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Список поиск управление</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
|
||||
@@ -40,14 +40,15 @@
|
||||
|
|
||||
|%1
|
||||
|
|
||||
|<a href = ""ЖурналРегистрации"">Техническая информация о причине блокировки</a>
|
||||
|<a href = ""%2"">Техническая информация о причине блокировки</a>
|
||||
|
|
||||
|• Если информационная база будет использоваться для ведения учета, нажмите <b>Информационная база перемещена</b>.
|
||||
|• Если это копия информационной базы, нажмите <b>Это копия информационной базы</b>.
|
||||
|%2
|
||||
|%3
|
||||
|
|
||||
|%3'"),
|
||||
|%4'"),
|
||||
ПараметрыБлокировки.ПричинаБлокировки,
|
||||
"ЖурналРегистрации",
|
||||
УточнениеМасштабируемыйКластер,
|
||||
ТекстСнятияБлокировки);
|
||||
ИначеЕсли Не РазделениеВключено И ИзменилосьРазделение Тогда
|
||||
|
||||
@@ -569,6 +569,7 @@
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<wrap>true</wrap>
|
||||
<multiLine>true</multiLine>
|
||||
<openButton>true</openButton>
|
||||
<chooseType>true</chooseType>
|
||||
<typeDomainEnabled>true</typeDomainEnabled>
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
Элементы.ПредставлениеДанных.Гиперссылка = Параметры.ПредставлениеДанныхОткрывается;
|
||||
|
||||
Если ЗначениеЗаполнено(Параметры.ТипПодписи) Тогда
|
||||
Если Параметры.ТипПодписи = Перечисления.ТипыПодписиКриптографии.CAdESAv3
|
||||
Если Параметры.ТипПодписи = Перечисления.ТипыПодписиКриптографии.АрхивнаяCAdESAv3
|
||||
Или Параметры.ТипПодписи = Перечисления.ТипыПодписиКриптографии.CAdESAv2 Тогда
|
||||
|
||||
Элементы.ДобавитьАрхивнуюМеткуВремени.Видимость = Ложь;
|
||||
@@ -96,9 +96,9 @@
|
||||
|%1'"), ТипПодписи);
|
||||
Иначе
|
||||
ТипПодписи = Константы.ТипПодписиКриптографииПоУмолчанию.Получить();
|
||||
Если ТипПодписи = Перечисления.ТипыПодписиКриптографии.CAdESBES
|
||||
Если ТипПодписи = Перечисления.ТипыПодписиКриптографии.БазоваяCAdESBES
|
||||
Или ТипПодписи = Перечисления.ТипыПодписиКриптографии.ПустаяСсылка()
|
||||
Или ТипПодписи = Перечисления.ТипыПодписиКриптографии.CMS Тогда
|
||||
Или ТипПодписи = Перечисления.ТипыПодписиКриптографии.ОбычнаяCMS Тогда
|
||||
ТипПодписи = Элементы.ТипПодписи.СписокВыбора[0].Значение;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
@@ -164,6 +164,7 @@
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("ПослеВыполнения", ЭтотОбъект);
|
||||
ЭлектроннаяПодписьКлиент.УсовершенствоватьПодпись(ОписаниеДанных, ЭтотОбъект, Оповещение, Ложь);
|
||||
Элементы.ВыполнитьДействия.Доступность = Ложь;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -230,14 +231,18 @@
|
||||
&НаКлиенте
|
||||
Процедура ПослеВыполнения(Результат, Контекст) Экспорт
|
||||
|
||||
Элементы.ВыполнитьДействия.Доступность = Истина;
|
||||
Оповестить("Запись_Подпись");
|
||||
Если Не Результат.Успех Тогда
|
||||
Если Результат.СвойстваПодписей <> Неопределено Тогда
|
||||
Для Каждого СвойствоПодписи Из Результат.СвойстваПодписей Цикл
|
||||
Если СвойствоПодписи.Свойство("Ошибка") Тогда
|
||||
НоваяСтрока = Ошибки.Добавить();
|
||||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СвойствоПодписи);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
Элементы.Ошибки.Видимость = Ошибки.Количество() > 0;
|
||||
|
||||
Если ЗначениеЗаполнено(Результат.ТекстОшибки) Тогда
|
||||
|
||||
@@ -11,6 +11,11 @@
|
||||
&НаСервере
|
||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||
|
||||
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
|
||||
ВызватьИсключение НСтр("ru = 'Редактирование табличного документа недоступно в мобильном клиенте.
|
||||
|Используйте тонкий клиент или веб-клиент.'");
|
||||
КонецЕсли;
|
||||
|
||||
Если Параметры.РежимОткрытияОкна <> Неопределено Тогда
|
||||
РежимОткрытияОкна = Параметры.РежимОткрытияОкна;
|
||||
КонецЕсли;
|
||||
@@ -636,8 +641,20 @@
|
||||
Процедура ЗаписатьТабличныйДокументИмяФайлаВыбрано(Знач ОбработчикЗавершения)
|
||||
|
||||
Если ПустаяСтрока(Параметры.ПутьКФайлу) Тогда
|
||||
ЗаписатьМакет();
|
||||
ПослеЗаписиТабличногоДокумента(ОбработчикЗавершения);
|
||||
АдресМакетаВоВременномХранилище = "";
|
||||
|
||||
ДополнительныеПараметры = Новый Структура;
|
||||
ДополнительныеПараметры.Вставить("АдресМакетаВоВременномХранилище", АдресМакетаВоВременномХранилище);
|
||||
ДополнительныеПараметры.Вставить("ОбработчикЗавершения", ОбработчикЗавершения);
|
||||
|
||||
ОчиститьСообщения();
|
||||
|
||||
Если ЗаписатьМакет(Истина, ДополнительныеПараметры.АдресМакетаВоВременномХранилище) Тогда
|
||||
ПослеЗаписиТабличногоДокумента(ДополнительныеПараметры.ОбработчикЗавершения);
|
||||
Иначе
|
||||
ОписаниеОповещения = Новый ОписаниеОповещения("ПродолжитьЗаписьТабличногоДокумента", ЭтотОбъект, ДополнительныеПараметры);
|
||||
ПоказатьВопрос(ОписаниеОповещения, НСтр("ru = 'Макет содержит ошибки. Продолжить запись?'"), РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет);
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
ТабличныйДокумент.НачатьЗапись(
|
||||
Новый ОписаниеОповещения("ОбработатьРезультатЗаписиТабличногоДокумента", ЭтотОбъект, ОбработчикЗавершения),
|
||||
@@ -646,6 +663,16 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПродолжитьЗаписьТабличногоДокумента(РезультатДиалога, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Если РезультатДиалога = КодВозвратаДиалога.Да Тогда
|
||||
ЗаписатьМакет(Ложь, ДополнительныеПараметры.АдресМакетаВоВременномХранилище);
|
||||
ПослеЗаписиТабличногоДокумента(ДополнительныеПараметры.ОбработчикЗавершения);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОбработатьРезультатЗаписиТабличногоДокумента(Результат, ОбработчикЗавершения) Экспорт
|
||||
Если Результат <> Истина Тогда
|
||||
@@ -1685,7 +1712,7 @@
|
||||
#КонецОбласти
|
||||
|
||||
&НаСервере
|
||||
Функция ПодготовитьМакетДляЗаписи(УстановитьКодЯзыка = Истина)
|
||||
Функция ПодготовитьМакетДляЗаписи(УстановитьКодЯзыка = Истина, Отказ = Ложь)
|
||||
|
||||
КодЯзыка = Неопределено;
|
||||
Если УстановитьКодЯзыка Тогда
|
||||
@@ -1713,23 +1740,24 @@
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Область.Текст) Тогда
|
||||
ЗаменитьПредставленияПараметров(Область.Текст);
|
||||
ПредставлениеПоля = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'стр. %1 кол. %2'"), НомерСтроки, НомерКолонки);
|
||||
ЗаменитьПредставленияПараметров(Область.Текст, , Отказ, ПредставлениеПоля);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
ЗаменитьПредставленияПараметров(Макет.ВерхнийКолонтитул.ТекстСлева);
|
||||
ЗаменитьПредставленияПараметров(Макет.ВерхнийКолонтитул.ТекстВЦентре);
|
||||
ЗаменитьПредставленияПараметров(Макет.ВерхнийКолонтитул.ТекстСправа);
|
||||
ЗаменитьПредставленияПараметров(Макет.НижнийКолонтитул.ТекстСлева);
|
||||
ЗаменитьПредставленияПараметров(Макет.НижнийКолонтитул.ТекстВЦентре);
|
||||
ЗаменитьПредставленияПараметров(Макет.НижнийКолонтитул.ТекстСправа);
|
||||
ЗаменитьПредставленияПараметров(Макет.ВерхнийКолонтитул.ТекстСлева, "ТекстСлеваСверху", Отказ, НСтр("ru = 'верхний колонтитул слева'"));
|
||||
ЗаменитьПредставленияПараметров(Макет.ВерхнийКолонтитул.ТекстВЦентре, "ТекстВЦентреСверху", Отказ, НСтр("ru = 'верхний колонтитул в центре'"));
|
||||
ЗаменитьПредставленияПараметров(Макет.ВерхнийКолонтитул.ТекстСправа, "ТекстСправаСверху", Отказ, НСтр("ru = 'верхний колонтитул справа'"));
|
||||
ЗаменитьПредставленияПараметров(Макет.НижнийКолонтитул.ТекстСлева, "ТекстСлеваСнизу", Отказ, НСтр("ru = 'нижний колонтитул слева'"));
|
||||
ЗаменитьПредставленияПараметров(Макет.НижнийКолонтитул.ТекстВЦентре, "ТекстВЦентреСнизу", Отказ, НСтр("ru = 'нижний колонтитул в центре'"));
|
||||
ЗаменитьПредставленияПараметров(Макет.НижнийКолонтитул.ТекстСправа, "ТекстСправаСнизу", Отказ, НСтр("ru = 'нижний колонтитул справа'"));
|
||||
|
||||
Для Каждого Область Из Макет.Области Цикл
|
||||
Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента")
|
||||
И Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки Тогда
|
||||
ЗаменитьПредставленияПараметров(Область.ПараметрРасшифровки);
|
||||
ЗаменитьПредставленияПараметров(Область.ПараметрРасшифровки, , Отказ, Область.Имя);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
@@ -1738,10 +1766,34 @@
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Процедура ЗаменитьПредставленияПараметров(Строка)
|
||||
Процедура ЗаменитьПредставленияПараметров(Строка, Поле = Неопределено, Отказ = Ложь, ПредставлениеПоля = "")
|
||||
|
||||
ПараметрыЗамены = ФормулыИзТекста(Строка(Строка));
|
||||
|
||||
Для Каждого Параметр Из ПараметрыЗамены Цикл
|
||||
Формула = Параметр.Ключ;
|
||||
Если СтрЧислоВхождений(Формула, "[") > 1 Тогда
|
||||
Формула = Сред(Формула, 2, СтрДлина(Формула) - 2);
|
||||
КонецЕсли;
|
||||
|
||||
ТекстОшибки = "";
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда
|
||||
МодульКонструкторФормулСлужебный = ОбщегоНазначения.ОбщийМодуль("КонструкторФормулСлужебный");
|
||||
ТекстОшибки = МодульКонструкторФормулСлужебный.ПроверитьФормулу(ЭтотОбъект, Формула);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
|
||||
Если ЗначениеЗаполнено(ПредставлениеПоля) Тогда
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = '%1 (%2)'"),
|
||||
ТекстОшибки,
|
||||
ПредставлениеПоля);
|
||||
КонецЕсли;
|
||||
|
||||
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , Поле, , Отказ);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если ТипЗнч(Строка) = Тип("ФорматированнаяСтрока") Тогда
|
||||
Строка = ЗаменитьВФорматированнойСтроке(Строка, ПараметрыЗамены);
|
||||
Иначе
|
||||
@@ -1958,17 +2010,24 @@
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ЗаписатьМакет()
|
||||
Функция ЗаписатьМакет(ПрерватьЗаписьПриНаличииОшибокВМакете = Ложь, АдресМакетаВоВременномХранилище = "")
|
||||
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
|
||||
Отказ = Ложь;
|
||||
|
||||
Если Не ЗначениеЗаполнено(АдресМакетаВоВременномХранилище) Тогда
|
||||
Если ЭтоПечатнаяФорма Тогда
|
||||
Макет = ПодготовитьМакетДляЗаписи();
|
||||
Макет = ПодготовитьМакетДляЗаписи(, Отказ);
|
||||
Иначе
|
||||
Макет = ТабличныйДокумент;
|
||||
КонецЕсли;
|
||||
|
||||
АдресМакетаВоВременномХранилище = ПоместитьВоВременноеХранилище(Макет);
|
||||
АдресМакетаВоВременномХранилище = ПоместитьВоВременноеХранилище(Макет, УникальныйИдентификатор);
|
||||
КонецЕсли;
|
||||
|
||||
Если Отказ И ПрерватьЗаписьПриНаличииОшибокВМакете Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью");
|
||||
ОписаниеМакета = МодульУправлениеПечатью.ОписаниеМакета();
|
||||
@@ -1989,7 +2048,9 @@
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Процедура РасширитьСписокПолей()
|
||||
|
||||
@@ -860,7 +860,7 @@
|
||||
Конструктор = Новый КонструкторСхемыКомпоновкиДанных(СхемаКомпоновкиДанных);
|
||||
Конструктор.Редактировать(ЭтотОбъект);
|
||||
#Иначе
|
||||
ПоказатьПредупреждение(, (НСтр("ru = 'Для того чтобы редактировать схему компоновки, необходимо запустить приложение в режиме толстого клиента.'")));
|
||||
ПоказатьПредупреждение(, (НСтр("ru = 'Для того чтобы редактировать схему компоновки, запустите приложение в режиме толстого клиента.'")));
|
||||
#КонецЕсли
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -4517,33 +4517,31 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Запрос = Новый Запрос(
|
||||
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
|
||||
| ВариантыОтчетов.Ссылка КАК ВариантСсылка,
|
||||
| ВариантыОтчетов.Представление КАК Наименование,
|
||||
| ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров КАК КлючЗамеров,
|
||||
| ВариантыОтчетов.ПредопределенныйВариант КАК ПредопределенныйСсылка,
|
||||
| ВЫБОР
|
||||
| КОГДА ВариантыОтчетов.Пользовательский
|
||||
| ТОГДА ЕСТЬNULL(ВариантыОтчетов.Родитель.КлючВарианта, НЕОПРЕДЕЛЕНО)
|
||||
| ИНАЧЕ ВариантыОтчетов.КлючВарианта
|
||||
| КОНЕЦ КАК КлючПредопределенногоВарианта,
|
||||
| ВариантыОтчетов.Пользовательский КАК Пользовательский,
|
||||
| ВариантыОтчетов.ТипОтчета
|
||||
|ИЗ
|
||||
| Справочник.ВариантыОтчетов КАК ВариантыОтчетов
|
||||
|ГДЕ
|
||||
| ВариантыОтчетов.Отчет = &Отчет
|
||||
| И ВариантыОтчетов.КлючВарианта = &КлючВарианта");
|
||||
|
||||
Запрос.УстановитьПараметр("Отчет", НастройкиОтчета.ОтчетСсылка);
|
||||
Запрос.УстановитьПараметр("КлючВарианта", КлючТекущегоВарианта);
|
||||
Запрос = ВариантОтчетаПоСсылкеИКлючу(НастройкиОтчета.ОтчетСсылка, КлючТекущегоВарианта);
|
||||
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
Если Не Выборка.Следующий() Тогда
|
||||
|
||||
Если НастройкиОтчета.Внешний Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Запрос = ВариантОтчетаПоСсылкеИКлючу(НастройкиОтчета.ОтчетСсылка);
|
||||
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
Если Не Выборка.Следующий() Тогда
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Несуществующий вариант отчета %1 (%2).
|
||||
|Необходимо выполнить обновление информационной базы или очистить настройки отчета.'"),
|
||||
КлючТекущегоВарианта, НастройкиОтчета.ОтчетСсылка);
|
||||
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КлючЗамеров = Выборка.КлючЗамеров;
|
||||
Если Не ЗначениеЗаполнено(КлючЗамеров) Тогда
|
||||
КлючЗамеров = ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой(
|
||||
@@ -4564,6 +4562,41 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
Функция ВариантОтчетаПоСсылкеИКлючу(ОтчетСсылка, КлючВарианта = Неопределено)
|
||||
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
|
||||
| ВариантыОтчетов.Ссылка КАК ВариантСсылка,
|
||||
| ВариантыОтчетов.Представление КАК Наименование,
|
||||
| ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров КАК КлючЗамеров,
|
||||
| ВариантыОтчетов.ПредопределенныйВариант КАК ПредопределенныйСсылка,
|
||||
| ВЫБОР
|
||||
| КОГДА ВариантыОтчетов.Пользовательский
|
||||
| ТОГДА ЕСТЬNULL(ВариантыОтчетов.Родитель.КлючВарианта, НЕОПРЕДЕЛЕНО)
|
||||
| ИНАЧЕ ВариантыОтчетов.КлючВарианта
|
||||
| КОНЕЦ КАК КлючПредопределенногоВарианта,
|
||||
| ВариантыОтчетов.Пользовательский КАК Пользовательский,
|
||||
| ВариантыОтчетов.ТипОтчета
|
||||
|ИЗ
|
||||
| Справочник.ВариантыОтчетов КАК ВариантыОтчетов
|
||||
|ГДЕ
|
||||
| ВариантыОтчетов.Отчет = &Отчет";
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.УстановитьПараметр("Отчет", ОтчетСсылка);
|
||||
|
||||
Если КлючВарианта <> Неопределено Тогда
|
||||
ТекстЗапроса = ТекстЗапроса +" И ВариантыОтчетов.КлючВарианта = &КлючВарианта"; // @Query-part1
|
||||
Запрос.УстановитьПараметр("КлючВарианта", КлючВарианта);
|
||||
КонецЕсли;
|
||||
|
||||
Запрос.Текст = ТекстЗапроса;
|
||||
|
||||
Возврат Запрос;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция ПустойКлючВарианта()
|
||||
Возврат " - ";
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
|
||||
Если ЭлектроннаяПодпись.ДоступнаУсовершенствованнаяПодпись() И ЭлектроннаяПодпись.ДобавлениеИзменениеЭлектронныхПодписей() Тогда
|
||||
Если (ЗначениеЗаполнено(СрокДействияПоследнейМеткиВремени) И СрокДействияПоследнейМеткиВремени <= ТекущаяДатаСеанса())
|
||||
Или ТипПодписи = Перечисления.ТипыПодписиКриптографии.CMS Тогда
|
||||
Или ТипПодписи = Перечисления.ТипыПодписиКриптографии.ОбычнаяCMS Тогда
|
||||
Элементы.ФормаПродлитьДействиеПодписи.Видимость = Ложь;
|
||||
Иначе
|
||||
Элементы.ФормаПродлитьДействиеПодписи.Видимость = Истина;
|
||||
@@ -116,8 +116,8 @@
|
||||
Элементы.ФормаПродлитьДействиеПодписи.Видимость = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипПодписи = Перечисления.ТипыПодписиКриптографии.CAdESBES
|
||||
Или ТипПодписи = Перечисления.ТипыПодписиКриптографии.CMS Тогда
|
||||
Если ТипПодписи = Перечисления.ТипыПодписиКриптографии.БазоваяCAdESBES
|
||||
Или ТипПодписи = Перечисления.ТипыПодписиКриптографии.ОбычнаяCMS Тогда
|
||||
Если ЗначениеЗаполнено(СрокДействияПоследнейМеткиВремени) Тогда
|
||||
Элементы.СрокДействияПоследнейМеткиВремени.Заголовок = НСтр("ru='Срок действия сертификата подписи истек'");
|
||||
Иначе
|
||||
|
||||
@@ -258,7 +258,19 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьМуниципальныеСведения(Адрес, ОКТМО) Экспорт
|
||||
Процедура УстановитьМуниципальныеСведения(Адрес, ОКТМО, ИдентификаторАдреса = Неопределено) Экспорт
|
||||
|
||||
Если ЗначениеЗаполнено(ИдентификаторАдреса) Тогда
|
||||
|
||||
Результат = АктуальныеАдресныеСведения(Новый Структура("Идентификатор", ИдентификаторАдреса));
|
||||
Если Не Результат.Отказ Тогда
|
||||
|
||||
ЗаполнитьЗначенияСвойств(Адрес, Результат.Данные,
|
||||
"munDistrict, munDistrictType,munDistrictId,settlement,settlementType,settlementId");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЭтоГородФедеральногоЗначения(ПолноеНаименованиеРегиона(Адрес.Area, Адрес.AreaType)) Тогда
|
||||
Возврат;
|
||||
|
||||
@@ -509,7 +509,8 @@
|
||||
// поэтому проверку перемещения базы осуществляем через файл проверки.
|
||||
|
||||
Если Не ФайлПроверкиИдентификатораФайловойБазыСуществует() Тогда
|
||||
ТекстСообщения = НСтр("ru = 'В папке информационной базы отсутствует файл проверки DoNotCopy.txt.'");
|
||||
ТекстСообщения = НСтр("ru = 'В папке информационной базы отсутствует файл проверки %1.'");
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, "DoNotCopy.txt");
|
||||
УстановитьПризнакНеобходимостиПринятияРешенияОБлокировке(ПараметрыБлокировки, ТекстСообщения);
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
@@ -518,7 +519,8 @@
|
||||
|
||||
Если ИзменилсяИдентификаторИнформационнойБазы Тогда
|
||||
ТекстСообщения =
|
||||
НСтр("ru = 'Идентификатор информационной базы в файле проверки DoNotCopy.txt не соответствует идентификатору в текущей базе.'");
|
||||
НСтр("ru = 'Идентификатор информационной базы в файле проверки %1 не соответствует идентификатору в текущей базе.'");
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, "DoNotCopy.txt");
|
||||
УстановитьПризнакНеобходимостиПринятияРешенияОБлокировке(ПараметрыБлокировки, ТекстСообщения);
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -613,9 +613,12 @@
|
||||
Обработчик.Комментарий = НСтр("ru = 'Исправление включения в график рабочих и предпраздничных дней, выпадающих на субботу или воскресенье.'");
|
||||
Обработчик.БлокируемыеОбъекты = "Справочник.Календари";
|
||||
Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика();
|
||||
|
||||
Если КалендарныеГрафики.ЕстьИзменяемыеОбъектыЗависимыеОтПроизводственныхКалендарей() Тогда
|
||||
Приоритет = Обработчик.ПриоритетыВыполнения.Добавить();
|
||||
Приоритет.Процедура = "КалендарныеГрафики.ОбновитьДанныеЗависимыеОтПроизводственныхКалендарей";
|
||||
Приоритет.Порядок = "После";
|
||||
КонецЕсли;
|
||||
|
||||
Обработчик = Обработчики.Добавить();
|
||||
Обработчик.Версия = "3.1.3.94";
|
||||
@@ -631,9 +634,12 @@
|
||||
Обработчик.Комментарий = НСтр("ru = 'Установка нового признака «Учитывать нерабочие периоды» в положение по умолчанию.'");
|
||||
Обработчик.БлокируемыеОбъекты = "Справочник.Календари";
|
||||
Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика();
|
||||
|
||||
Если КалендарныеГрафики.ЕстьИзменяемыеОбъектыЗависимыеОтПроизводственныхКалендарей() Тогда
|
||||
Приоритет = Обработчик.ПриоритетыВыполнения.Добавить();
|
||||
Приоритет.Процедура = "КалендарныеГрафики.ОбновитьДанныеЗависимыеОтПроизводственныхКалендарей";
|
||||
Приоритет.Порядок = "До";
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
ЗаписатьПримечание(Ссылка,
|
||||
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Подключение, БезопасныйРежим = ""%1"".'"), БезопасныйРежим));
|
||||
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Подключение, %1 = ""%2"".'"), "БезопасныйРежим", БезопасныйРежим));
|
||||
ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, , БезопасныйРежим,
|
||||
ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений());
|
||||
Возврат ИмяОбработки;
|
||||
|
||||
@@ -1289,8 +1289,10 @@
|
||||
Функция ПоставляемаяОбработка(ИспользуемаяОбработка)
|
||||
|
||||
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
|
||||
ВызватьИсключение НСтр("ru = 'Использование функции ДополнительныеОтчетыИОбработкиВМоделиСервиса.ПоставляемаяОбработка
|
||||
|доступно только сеансов с установленным разделением данных.'");
|
||||
ТекстСообщения = НСтр("ru = 'Использование функции %1 доступно только сеансов с установленным разделением данных.'");
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения,
|
||||
"ДополнительныеОтчетыИОбработкиВМоделиСервиса.ПоставляемаяОбработка");
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецЕсли;
|
||||
|
||||
ТекстЗапроса = "ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
@@ -1324,8 +1326,10 @@
|
||||
Функция ИспользуемаяОбработка(ПоставляемаяОбработка)
|
||||
|
||||
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
|
||||
ВызватьИсключение НСтр("ru = 'Использование функции ДополнительныеОтчетыИОбработкиВМоделиСервиса.ИспользуемаяОбработка
|
||||
|доступно только сеансов с установленным разделением данных.'");
|
||||
ТекстСообщения = НСтр("ru = 'Использование функции %1 доступно только сеансов с установленным разделением данных.'");
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения,
|
||||
"ДополнительныеОтчетыИОбработкиВМоделиСервиса.ИспользуемаяОбработка");
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецЕсли;
|
||||
|
||||
ТекстЗапроса = "ВЫБРАТЬ
|
||||
|
||||
+1
-1
@@ -93,7 +93,7 @@
|
||||
ИмяНачальнойСтраницы = ДополнительныеОтчетыИОбработкиКлиентСервер.ИмяНачальнойСтраницы();
|
||||
|
||||
НазначениеXDTO = ФабрикаXDTO.Создать(
|
||||
ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс.ТипНазначениеРазделам(Пакет)); // см. ПакетXDTO.ApplicationExtensionsManifest_1_0_0_2
|
||||
ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс.ТипНазначениеРазделам(Пакет));
|
||||
|
||||
Для Каждого Раздел Из ВозможныеРазделы Цикл
|
||||
|
||||
|
||||
@@ -640,6 +640,12 @@
|
||||
МодульКонтрольВеденияУчетаСлужебный = ОбщегоНазначения.ОбщийМодуль("КонтрольВеденияУчетаСлужебный");
|
||||
МодульКонтрольВеденияУчетаСлужебный.ПриПолученииСпискаШаблонов(ШаблоныЗаданий);
|
||||
КонецЕсли;
|
||||
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
|
||||
МодульЭлектроннаяПодписьСлужебный = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебный");
|
||||
МодульЭлектроннаяПодписьСлужебный.ПриПолученииСпискаШаблонов(ШаблоныЗаданий);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// См. ОчередьЗаданийПереопределяемый.ПриОпределенииПсевдонимовОбработчиков.
|
||||
@@ -697,6 +703,11 @@
|
||||
МодульРаботаСФайламиСлужебныйВМоделиСервиса.ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам);
|
||||
КонецЕсли;
|
||||
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
|
||||
МодульЭлектроннаяПодписьСлужебный = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебный");
|
||||
МодульЭлектроннаяПодписьСлужебный.ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам);
|
||||
КонецЕсли;
|
||||
|
||||
ОбновлениеИнформационнойБазыСлужебный.ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам);
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -1590,6 +1601,11 @@
|
||||
|
||||
ПользователиСлужебный.ПриОпределенииПоддерживаемыхВерсийПрограммныхИнтерфейсов(ПоддерживаемыеВерсии);
|
||||
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодписьСервисаDSS") Тогда
|
||||
МодульСервисКриптографииDSSСлужебный = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSСлужебный");
|
||||
МодульСервисКриптографииDSSСлужебный.ПриОпределенииПоддерживаемыхВерсийПрограммныхИнтерфейсов(ПоддерживаемыеВерсии);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске.
|
||||
|
||||
@@ -376,8 +376,8 @@
|
||||
ДвоичныеДанные.Записать(АрхивПолноеИмя);
|
||||
Исключение
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось извлечь файл из макета %1 (ЛокализованноеИмяМакета: %2) обработки ИнформацияПриЗапуске по причине:'"),
|
||||
ИмяМакета, ЛокализованноеИмяМакета) + Символы.ПС;
|
||||
НСтр("ru = 'Не удалось извлечь файл из макета %1 (%2: %3) обработки %4 по причине:'"),
|
||||
ИмяМакета, "ЛокализованноеИмяМакета", ЛокализованноеИмяМакета, "ИнформацияПриЗапуске") + Символы.ПС;
|
||||
Если НосительМакетов.Метаданные().Макеты.Найти(ЛокализованноеИмяМакета) = Неопределено Тогда
|
||||
ТекстСообщения = ТекстСообщения + НСтр("ru = 'Макет с таким именем не существует.'") + Символы.ПС;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -1022,6 +1022,14 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ЕстьИзменяемыеОбъектыЗависимыеОтПроизводственныхКалендарей() Экспорт
|
||||
|
||||
ИзменяемыеОбъекты = Новый Массив;
|
||||
ЗаполнитьИзменяемыеОбъектыЗависимыеОтПроизводственныхКалендарей(ИзменяемыеОбъекты);
|
||||
Возврат ИзменяемыеОбъекты.Количество() > 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
@@ -210,6 +210,58 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПроверитьФормулу(Форма, ПредставлениеФормулы) Экспорт
|
||||
|
||||
ЭлементыФормулы = КонструкторФормулКлиентСервер.ЭлементыФормулы(ПредставлениеФормулы);
|
||||
Выражение = ПредставлениеФормулы;
|
||||
|
||||
НайденныеОперанды = Новый Соответствие;
|
||||
|
||||
Для Каждого Элемент Из Форма.ПодключенныеСпискиПолей Цикл
|
||||
ИмяСпискаПолей = Элемент.ИмяСпискаПолей;
|
||||
КоллекцияПолей = Форма[ИмяСпискаПолей];
|
||||
СкобкиИдентификаторов = Элемент.СкобкиИдентификаторов;
|
||||
|
||||
Для Каждого ПредставлениеОперанда Из ЭлементыФормулы.Операнды Цикл
|
||||
ПутьКДанным = ОчиститьКвадратныеСкобки(ПредставлениеОперанда);
|
||||
Реквизит = НайтиРеквизит(Форма, ИмяСпискаПолей, ПутьКДанным, КоллекцияПолей.ПолучитьЭлементы(), Истина);
|
||||
Если Реквизит <> Неопределено Тогда
|
||||
Операнд = Реквизит.ПутьКДанным;
|
||||
Если СкобкиИдентификаторов Тогда
|
||||
Операнд = ОбернутьВКвадратныеСкобки(Операнд);
|
||||
КонецЕсли;
|
||||
НайденныеОперанды.Вставить(ПредставлениеОперанда, Операнд);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
Ошибки = Новый Массив;
|
||||
|
||||
Для Каждого Операнд Из ЭлементыФормулы.Операнды Цикл
|
||||
Позиция = СтрНайти(Выражение, Операнд);
|
||||
Если Позиция = 0 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Если НайденныеОперанды[Операнд] = Неопределено Тогда
|
||||
Если ЭлементыФормулы.Функции.Найти(Операнд) = Неопределено Тогда
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Поле %1 не найдено в списке доступных полей'"),
|
||||
Операнд);
|
||||
Иначе
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Неизвестная функция в выражении - ""%1""'"),
|
||||
Операнд);
|
||||
КонецЕсли;
|
||||
Ошибки.Добавить(ТекстОшибки);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Результат = СтрСоединить(Ошибки, Символы.ПС);
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@@ -1475,12 +1527,12 @@
|
||||
Если СкобкиИдентификаторов Тогда
|
||||
Операнд = ОбернутьВКвадратныеСкобки(Операнд);
|
||||
КонецЕсли;
|
||||
Выражение = СтрЗаменить(Выражение, ПредставлениеОперанда, Операнд);
|
||||
НайденныеОперанды.Вставить(ПредставлениеОперанда, Истина);
|
||||
НайденныеОперанды.Вставить(ПредставлениеОперанда, Операнд);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
ЗаменитьЭлементыФормулы(Выражение, ЭлементыФормулы, НайденныеОперанды);
|
||||
Возврат Выражение;
|
||||
|
||||
КонецФункции
|
||||
@@ -1489,6 +1541,7 @@
|
||||
|
||||
ЭлементыФормулы = КонструкторФормулКлиентСервер.ЭлементыФормулы(Формула);
|
||||
Выражение = Формула;
|
||||
НайденныеОперанды = Новый Соответствие;
|
||||
|
||||
Для Каждого Элемент Из Форма.ПодключенныеСпискиПолей Цикл
|
||||
ИмяСпискаПолей = Элемент.ИмяСпискаПолей;
|
||||
@@ -1503,11 +1556,12 @@
|
||||
Если СкобкиПредставлений Тогда
|
||||
ПредставлениеОперанда = ОбернутьВКвадратныеСкобки(Реквизит.ПредставлениеПутиКДанным);
|
||||
КонецЕсли;
|
||||
Выражение = СтрЗаменить(Выражение, Операнд, ПредставлениеОперанда);
|
||||
НайденныеОперанды.Вставить(Операнд, ПредставлениеОперанда);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
ЗаменитьЭлементыФормулы(Выражение, ЭлементыФормулы, НайденныеОперанды);
|
||||
Возврат Выражение;
|
||||
|
||||
КонецФункции
|
||||
@@ -1516,6 +1570,7 @@
|
||||
|
||||
ЭлементыФормулы = КонструкторФормулКлиентСервер.ЭлементыФормулы(Выражение);
|
||||
Результат = Выражение;
|
||||
НайденныеПоля = Новый Соответствие;
|
||||
|
||||
Для Каждого НастройкиСписка Из СпискиПолей Цикл
|
||||
КоллекцияПолей = НастройкиСписка.КоллекцияПолей;
|
||||
@@ -1533,11 +1588,12 @@
|
||||
Если НастройкиСписка.СкобкиПредставлений Тогда
|
||||
ПредставлениеОперанда = ОбернутьВКвадратныеСкобки(Реквизит.ПредставлениеПутиКДанным);
|
||||
КонецЕсли;
|
||||
Результат = СтрЗаменить(Результат, Операнд, ПредставлениеОперанда);
|
||||
НайденныеПоля.Вставить(Операнд, ПредставлениеОперанда);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
ЗаменитьЭлементыФормулы(Результат, ЭлементыФормулы, НайденныеПоля);
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
@@ -1569,6 +1625,8 @@
|
||||
ЭлементыФормулы = КонструкторФормулКлиентСервер.ЭлементыФормулы(ПредставлениеФормулы);
|
||||
Выражение = ПредставлениеФормулы;
|
||||
|
||||
НайденныеОперанды = Новый Соответствие;
|
||||
|
||||
Для Каждого Элемент Из Форма.ПодключенныеСпискиПолей Цикл
|
||||
ИмяСпискаПолей = Элемент.ИмяСпискаПолей;
|
||||
КоллекцияПолей = Форма[ИмяСпискаПолей];
|
||||
@@ -1589,22 +1647,68 @@
|
||||
Если ТипЗнч(Операнд) = Тип("Дата") Тогда
|
||||
Операнд = "'" + Формат(ТекущаяДатаСеанса(), "ДФ=ггггММддЧЧмм") + "'"; // Для использования в выражении Вычислить().
|
||||
КонецЕсли;
|
||||
Если ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Операнд)) Тогда
|
||||
Операнд = "1";
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Операнд = ОчиститьКвадратныеСкобки(Реквизит.ПутьКДанным);
|
||||
Если СкобкиИдентификаторов Тогда
|
||||
Операнд = ОбернутьВКвадратныеСкобки(Операнд);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
Выражение = СтрЗаменить(Выражение, ПредставлениеОперанда, Операнд);
|
||||
|
||||
НайденныеОперанды.Вставить(ПредставлениеОперанда, Операнд);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
ЗаменитьЭлементыФормулы(Выражение, ЭлементыФормулы, НайденныеОперанды);
|
||||
Выражение = ФорматироватьЧисла(Выражение);
|
||||
|
||||
Возврат Выражение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаменитьЭлементыФормулы(Выражение, ЭлементыФормулы, Значения) Экспорт
|
||||
|
||||
ЧастиСтроки = Новый Массив;
|
||||
|
||||
Для Каждого Операнд Из ЭлементыФормулы.Операнды Цикл
|
||||
Позиция = СтрНайти(Выражение, Операнд);
|
||||
Если Позиция = 0 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Если Позиция > 1 Тогда
|
||||
ЧастиСтроки.Добавить(Лев(Выражение, Позиция - 1));
|
||||
КонецЕсли;
|
||||
|
||||
Значение = Значения[Операнд];
|
||||
Если Значение = Неопределено Тогда
|
||||
Если ЭлементыФормулы.Функции.Найти(Операнд) <> Неопределено
|
||||
И Не СтрЗаканчиваетсяНа(Операнд, СуффиксОтключеннойФункции()) Тогда
|
||||
Значение = Операнд + СуффиксОтключеннойФункции();
|
||||
Иначе
|
||||
Значение = Операнд;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ЧастиСтроки.Добавить(Значение);
|
||||
|
||||
Выражение = Сред(Выражение, Позиция + СтрДлина(Операнд));
|
||||
КонецЦикла;
|
||||
|
||||
ЧастиСтроки.Добавить(Выражение);
|
||||
Выражение = СтрСоединить(ЧастиСтроки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СуффиксОтключеннойФункции()
|
||||
|
||||
Возврат "__";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОчиститьКвадратныеСкобки(Строка)
|
||||
|
||||
Если СтрНачинаетсяС(Строка, "[") И СтрЗаканчиваетсяНа(Строка, "]") Тогда
|
||||
|
||||
@@ -61,8 +61,9 @@
|
||||
ВыполняемаяПроверка = ПроверкаПоИдентификатору(Проверка);
|
||||
Если ВыполняемаяПроверка.Пустая() Тогда
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Проверка ведения учета с идентификатором ""%1"" не существует (см. КонтрольВеденияУчетаПереопределяемый.ПриОпределенииПроверок)'"),
|
||||
Проверка);
|
||||
НСтр("ru = 'Проверка ведения учета с идентификатором ""%1"" не существует (см. %2)'"),
|
||||
Проверка,
|
||||
"КонтрольВеденияУчетаПереопределяемый.ПриОпределенииПроверок");
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("КонтрольВеденияУчета.ВыполнитьПроверку", "Проверка",
|
||||
|
||||
@@ -31,8 +31,9 @@
|
||||
Обработчик.БлокируемыеОбъекты = "РегистрСведений.РезультатыПроверкиУчета";
|
||||
Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика();
|
||||
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
|
||||
Обработчик.Комментарий =
|
||||
НСтр("ru = 'Начальное заполнение признака ИгнорироватьПроблему и расчет контрольных сумм в регистре сведений ""Результаты проверки учета"" для повышение производительности.'");
|
||||
Обработчик.Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Начальное заполнение признака %1 и расчет контрольных сумм в регистре сведений ""Результаты проверки учета"" для повышение производительности.'"),
|
||||
"ИгнорироватьПроблему");
|
||||
|
||||
Обработчик = Обработчики.Добавить();
|
||||
Обработчик.Версия = "3.0.1.195";
|
||||
@@ -1301,8 +1302,8 @@
|
||||
Запрос.МенеджерВременныхТаблиц.Закрыть();
|
||||
|
||||
Если ЗначениеЗаполнено(ТекстИсключения) Тогда
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'В процедуре КонтрольВеденияУчетаПереопределяемый.ПриОпределенииПроверок у следующих проверок совпадают идентификаторы:
|
||||
|%1'"), ТекстИсключения);
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'В процедуре %1 у следующих проверок совпадают идентификаторы:
|
||||
|%2'"), "КонтрольВеденияУчетаПереопределяемый.ПриОпределенииПроверок", ТекстИсключения);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -1557,7 +1558,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
Проблема = ОписаниеПроблемы(ОбщегоНазначения.ИдентификаторОбъектаМетаданных(МетаданныеПланОбмена.ПолноеИмя()), ПараметрыПроверки);
|
||||
Проблема.УточнениеПроблемы = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'В плане обмена ""%1"" отсутствует предопределенный узел (ЭтотУзел() = Неопределено).'"), МетаданныеПланОбмена.Имя);
|
||||
Проблема.УточнениеПроблемы = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'В плане обмена ""%1"" отсутствует предопределенный узел (%2 = Неопределено).'"), МетаданныеПланОбмена.Имя, "ЭтотУзел()");
|
||||
ЗаписатьПроблему(Проблема, ПараметрыПроверки);
|
||||
|
||||
КонецЦикла;
|
||||
@@ -1949,13 +1950,17 @@
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Если НайденКрайнийЗначащийПараметр Тогда
|
||||
ВызватьИсключение НСтр("ru = 'Параметры выполнения проверки заданы не по порядку в КонтрольВеденияУчета.ПараметрыВыполненияПроверки.'");
|
||||
ТекстСообщения = НСтр("ru = 'Параметры выполнения проверки заданы не по порядку в %1.'");
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, "КонтрольВеденияУчета.ПараметрыВыполненияПроверки");
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если ДополнительныеСвойства <> Неопределено И Свойство5 = Неопределено Тогда
|
||||
ВызватьИсключение НСтр("ru = 'Параметры выполнения проверки заданы не по порядку в КонтрольВеденияУчета.ПараметрыВыполненияПроверки.'");
|
||||
ТекстСообщения = НСтр("ru = 'Параметры выполнения проверки заданы не по порядку в %1.'");
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, "КонтрольВеденияУчета.ПараметрыВыполненияПроверки");
|
||||
ВызватьИсключение ТекстСообщения;
|
||||
КонецЕсли;
|
||||
|
||||
ВсеПараметры = Новый Массив;
|
||||
@@ -2558,9 +2563,14 @@
|
||||
|ИЗ
|
||||
| &ОбъектМетаданных КАК ИмяТаблицы
|
||||
|ГДЕ
|
||||
| ИмяТаблицы.Период > &Период
|
||||
| (ИмяТаблицы.Период > &Период
|
||||
| И НЕ &ТолькоУказанныйПериод
|
||||
| ИЛИ ИмяТаблицы.Период = &Период
|
||||
| И &ТолькоУказанныйПериод)
|
||||
| И &Условие
|
||||
| УПОРЯДОЧИТЬ ПО &ПоляУпорядочивания";
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| &ПоляУпорядочивания";
|
||||
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПоляУпорядочивания", ПоляУпорядочивания);
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПоляВыборки КАК ПоляВыборки", ПоляВыборки);
|
||||
@@ -2572,6 +2582,7 @@
|
||||
|
||||
Запрос = Новый Запрос(ТекстПервогоЗапроса);
|
||||
Запрос.УстановитьПараметр("Период", ПараметрыПроверки.ДатаНачалаПроверки);
|
||||
Запрос.УстановитьПараметр("ТолькоУказанныйПериод", Ложь);
|
||||
Результат = Запрос.Выполнить().Выгрузить();
|
||||
ЭтоПервыйПроход = Истина;
|
||||
|
||||
@@ -2587,7 +2598,6 @@
|
||||
Если Не ЭтоПервыйПроход И Результат.Индекс(СтрокаРезультата) = 0 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого ИнформацияОРеквизите Из ИнформацияОРегистре Цикл
|
||||
|
||||
ТекущаяСсылка = СтрокаРезультата[ИнформацияОРеквизите.ИмяМетаданных + ИнформацияОРеквизите.ТипМетаданныхВИменительномПадеже + "Ссылка"];
|
||||
@@ -2621,14 +2631,24 @@
|
||||
|
||||
Если ЭтоПервыйПроход Тогда
|
||||
ЭтоПервыйПроход = Ложь;
|
||||
Запрос.Текст = ТекстЗапросаСУсловием;
|
||||
КонецЕсли;
|
||||
|
||||
// После прохода по всем периодам делаем дообработку по последнему периоду.
|
||||
Запрос.Текст = ТекстЗапросаСУсловием;
|
||||
Запрос.УстановитьПараметр("Период", СтрокаРезультата["Период"]);
|
||||
Запрос.УстановитьПараметр("ТолькоУказанныйПериод", Истина);
|
||||
Для Каждого Измерение Из Измерения Цикл
|
||||
Запрос.УстановитьПараметр(Измерение.Имя, СтрокаРезультата[Измерение.Имя + "ИзмерениеСсылка"]);
|
||||
КонецЦикла;
|
||||
Результат = Запрос.Выполнить().Выгрузить();
|
||||
// Если по последнему периоду все записи обработаны, то выбираем все записи по следующим периодам.
|
||||
Если Результат.Количество() = 0 Или Результат.Количество() = 1 Тогда
|
||||
Запрос.Текст = ТекстПервогоЗапроса;
|
||||
Запрос.УстановитьПараметр("Период", СтрокаРезультата["Период"]);
|
||||
Запрос.УстановитьПараметр("ТолькоУказанныйПериод", Ложь);
|
||||
Результат = Запрос.Выполнить().Выгрузить();
|
||||
ЭтоПервыйПроход = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@@ -3606,7 +3626,10 @@
|
||||
|ИЗ
|
||||
| &ОбъектМетаданных КАК ИмяТаблицы
|
||||
|ГДЕ
|
||||
| ИмяТаблицы.Период >= &Период
|
||||
| (ИмяТаблицы.Период > &Период
|
||||
| И НЕ &ТолькоУказанныйПериод
|
||||
| ИЛИ ИмяТаблицы.Период = &Период
|
||||
| И &ТолькоУказанныйПериод)
|
||||
| И &Условие
|
||||
|УПОРЯДОЧИТЬ ПО &ПоляУпорядочивания";
|
||||
|
||||
@@ -3620,11 +3643,12 @@
|
||||
|
||||
Запрос = Новый Запрос(ТекстПервогоЗапроса);
|
||||
Запрос.УстановитьПараметр("Период", ПараметрыПроверки.ДатаНачалаПроверки);
|
||||
Запрос.УстановитьПараметр("ТолькоУказанныйПериод", Ложь);
|
||||
|
||||
Результат = Запрос.Выполнить().Выгрузить();
|
||||
ЭтоПервыйПроход = Истина;
|
||||
|
||||
ОбщееКоличествоДанных = 0;
|
||||
ОбщееКоличествоДанных = Результат.Количество();
|
||||
Пока Результат.Количество() > 0 Цикл
|
||||
|
||||
// Последняя запись уже проверена на предыдущей итерации.
|
||||
@@ -3685,21 +3709,30 @@
|
||||
|
||||
Если ЭтоПервыйПроход Тогда
|
||||
ЭтоПервыйПроход = Ложь;
|
||||
Запрос.Текст = ТекстЗапросаСУсловием;
|
||||
КонецЕсли;
|
||||
|
||||
// После прохода по всем периодам делаем дообработку по последнему периоду.
|
||||
Запрос.Текст = ТекстЗапросаСУсловием;
|
||||
Запрос.УстановитьПараметр("Период", СтрокаРезультата.Период);
|
||||
Запрос.УстановитьПараметр("ТолькоУказанныйПериод", Истина);
|
||||
Для Каждого Измерение Из Измерения Цикл
|
||||
Запрос.УстановитьПараметр(Измерение.Имя, СтрокаРезультата[Измерение.Имя + "ИзмерениеСсылка"]);
|
||||
КонецЦикла;
|
||||
Результат = Запрос.Выполнить().Выгрузить();
|
||||
// Если по последнему периоду все записи обработаны, то выбираем все записи по следующим периодам.
|
||||
Если Результат.Количество() = 0 Или Результат.Количество() = 1 Тогда
|
||||
Запрос.Текст = ТекстПервогоЗапроса;
|
||||
Запрос.УстановитьПараметр("Период", СтрокаРезультата.Период);
|
||||
Запрос.УстановитьПараметр("ТолькоУказанныйПериод", Ложь);
|
||||
Результат = Запрос.Выполнить().Выгрузить();
|
||||
ЭтоПервыйПроход = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
ОбщееКоличествоДанных = ОбщееКоличествоДанных + Результат.Количество();
|
||||
Если МодульОценкаПроизводительности <> Неопределено Тогда
|
||||
МодульОценкаПроизводительности.ЗакончитьЗамерДлительнойОперации(ОписаниеЗамера, ОбщееКоличествоДанных);
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Запрос.Выполнить().Выгрузить();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -78,27 +78,6 @@
|
||||
Форма.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Форма.Объект.Наименование + " (%1)",
|
||||
ПредставлениеПланаОбмена);
|
||||
|
||||
Если ОбщегоНазначения.РазделениеВключено() Тогда
|
||||
|
||||
ВидимостьНастройкиПодключения = Ложь;
|
||||
|
||||
Если Не Форма.Объект.Ссылка.Пустая() Тогда
|
||||
|
||||
ВидТранспорта = РегистрыСведений.НастройкиТранспортаОбменаДанными.ВидТранспортаСообщенийОбменаПоУмолчанию(Форма.Объект.Ссылка);
|
||||
|
||||
ВидимостьНастройкиПодключения = (ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.WS
|
||||
Или ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.WSПассивныйРежим);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
|
||||
Форма.Элементы,
|
||||
"ФормаОбщаяКомандаНастройкиПодключения",
|
||||
"Видимость",
|
||||
ВидимостьНастройкиПодключения);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Процедура-обработчик события "ПриЗаписиНаСервере" для формы узла плана обмена.
|
||||
|
||||
@@ -65,7 +65,9 @@
|
||||
|
||||
Если ДокументРежимЗаписи <> Неопределено Тогда
|
||||
Если ТипЗнч(ДокументРежимЗаписи) <> Тип("РежимЗаписиДокумента") Тогда
|
||||
ТекстИсключения = НСтр("ru = 'Неправильный тип параметра ДокументРежимЗаписи'");
|
||||
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Неправильный тип параметра %1'"),
|
||||
"ДокументРежимЗаписи");
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
КонецЕсли;
|
||||
Объект.ОбменДанными.Загрузка = Объект.ОбменДанными.Загрузка
|
||||
@@ -417,7 +419,8 @@
|
||||
Или ТипЗнч(Данные) = Тип("ТаблицаЗначений"))
|
||||
И Данные.Количество() = 0 Тогда
|
||||
|
||||
ТекстИсключения = НСтр("ru = 'В процедуру ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки передан пустой массив. Не возможно отметить выполнение обработки.'");
|
||||
ТекстИсключения = НСтр("ru = 'В процедуру %1 передан пустой массив. Не возможно отметить выполнение обработки.'");
|
||||
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения, "ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки");
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
|
||||
КонецЕсли;
|
||||
@@ -617,7 +620,8 @@
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
ТекстИсключения = НСтр("ru = 'Процедура ОбновлениеИнформационнойБазы.МетаданныеИОтборПоДанным не может быть использована для этой формы.'");
|
||||
ТекстИсключения = НСтр("ru = 'Процедура %1 не может быть использована для этой формы.'");
|
||||
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения, "ОбновлениеИнформационнойБазы.МетаданныеИОтборПоДанным");
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
@@ -656,7 +660,8 @@
|
||||
Отбор = Данные.Отбор.Регистратор.Значение;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
ТекстИсключения = НСтр("ru = 'Для этого типа метаданных не поддерживается анализ в функции ОбновлениеИнформационнойБазы.МетаданныеИОтборПоДанным.'");
|
||||
ТекстИсключения = НСтр("ru = 'Для этого типа метаданных не поддерживается анализ в функции %1.'");
|
||||
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения, "ОбновлениеИнформационнойБазы.МетаданныеИОтборПоДанным");
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -754,7 +759,7 @@
|
||||
ИначеЕсли ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Данные)) Тогда
|
||||
МетаданныеДокумента = Данные.Метаданные();
|
||||
Иначе
|
||||
ТекстИсключения = НСтр("ru = 'Для регистрации всех регистраторов регистра необходимо в параметре ""Данные"" передать ОбъектМетаданных:Документ или ДокументСсылка.'");
|
||||
ТекстИсключения = НСтр("ru = 'Для регистрации всех регистраторов регистра необходимо в параметре ""Данные"" передать объект метаданных документ или ссылку на документ.'");
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
КонецЕсли;
|
||||
ПолноеИмяДокумента = МетаданныеДокумента.ПолноеИмя();
|
||||
@@ -1769,7 +1774,8 @@
|
||||
ПолныеИменаОбрабатываемыхОбъектов = Новый Массив;
|
||||
ПолныеИменаОбрабатываемыхОбъектов.Добавить(ПолноеИмяМетаданныеОбъекта.ПолноеИмя());
|
||||
Иначе
|
||||
ТекстИсключения = НСтр("ru = 'Передан неправильный тип параметра ""ПолноеИмяМетаданныеОбъекта"" в функцию ОбновлениеИнформационнойБазы.ЕстьДанныеДляОбработки'");
|
||||
ТекстИсключения = НСтр("ru = 'Передан неправильный тип параметра ""%1"" в функцию %2'");
|
||||
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения, "ПолноеИмяМетаданныеОбъекта", "ОбновлениеИнформационнойБазы.ЕстьДанныеДляОбработки");
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -1820,7 +1826,9 @@
|
||||
И МетаданныеОбъекта.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый Тогда
|
||||
|
||||
Если ПолныеИменаОбрабатываемыхОбъектов.Количество() > 1 Тогда
|
||||
ТекстИсключения = НСтр("ru = 'В массиве имен в параметре ""ПолноеИмяМетаданныеОбъекта"" в функцию ОбновлениеИнформационнойБазы.ЕстьДанныеДляОбработки передан независимый регистр сведений.'");
|
||||
ТекстИсключения = НСтр("ru = 'В массиве имен в параметре ""%1"" в функцию %2 передан независимый регистр сведений.'");
|
||||
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения,
|
||||
"ПолноеИмяМетаданныеОбъекта", "ОбновлениеИнформационнойБазы.ЕстьДанныеДляОбработки");
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -1907,8 +1915,9 @@
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
ТекстИсключения = НСтр("ru = 'Для типа метаданных ""%МетаданныеОбъекта%"" не поддерживается проверка в функции ОбновлениеИнформационнойБазы.ЕстьДанныеДляОбработки'");
|
||||
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%МетаданныеОбъекта%", Строка(МетаданныеОбъекта));
|
||||
ТекстИсключения = НСтр("ru = 'Для типа метаданных ""%1"" не поддерживается проверка в функции %2'");
|
||||
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения,
|
||||
Строка(МетаданныеОбъекта), "ОбновлениеИнформационнойБазы.ЕстьДанныеДляОбработки");
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -2202,7 +2211,8 @@
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Регистратор", ИмяИзмеренияДляОтбора);
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
ТекстИсключения = НСтр("ru = 'Для этого типа метаданных не поддерживается проверка в функции ОбновлениеИнформационнойБазы.СоздатьВременнуюТаблицуЗаблокированныхДляЧтенияИИзмененияДанных.'");
|
||||
ТекстИсключения = НСтр("ru = 'Для этого типа метаданных не поддерживается проверка в функции %1.'");
|
||||
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения, "ОбновлениеИнформационнойБазы.СоздатьВременнуюТаблицуЗаблокированныхДляЧтенияИИзмененияДанных");
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -2347,8 +2357,9 @@
|
||||
ЕстьРегистры = Истина;
|
||||
|
||||
Иначе
|
||||
ТекстИсключения = НСтр("ru = 'Для типа метаданных ""%МетаданныеОбъекта%"" не поддерживается проверка в функции ОбновлениеИнформационнойБазы.СоздатьВременнуюТаблицуЗаблокированныхДляЧтенияИИзмененияСсылок'");
|
||||
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%МетаданныеОбъекта%", Строка(МетаданныеОбъекта));
|
||||
ТекстИсключения = НСтр("ru = 'Для типа метаданных ""%1"" не поддерживается проверка в функции %2'");
|
||||
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения,
|
||||
Строка(МетаданныеОбъекта), "ОбновлениеИнформационнойБазы.СоздатьВременнуюТаблицуЗаблокированныхДляЧтенияИИзмененияСсылок");
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -5941,7 +5952,8 @@
|
||||
КонецЦикла;
|
||||
|
||||
Если ПростойИсточник И СложныйИсточник Тогда
|
||||
Ошибка = НСтр("ru = 'Источник данных задан неверно (см. ДополнительныеПараметрыВыборкиДанныхДляОбработки()).'");
|
||||
Ошибка = НСтр("ru = 'Источник данных задан неверно (см. %1).'");
|
||||
Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Ошибка, "ДополнительныеПараметрыВыборкиДанныхДляОбработки()");
|
||||
ВызватьИсключение Ошибка;
|
||||
Иначе
|
||||
Возврат ПростойИсточник;
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
|
||||
|
||||
Описание.Имя = "СтандартныеПодсистемы";
|
||||
Описание.Версия = "3.1.6.137";
|
||||
Описание.Версия = "3.1.6.159";
|
||||
Описание.ИдентификаторИнтернетПоддержки = "SSL";
|
||||
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
|
||||
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
|
||||
|
||||
@@ -257,9 +257,9 @@
|
||||
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("ПриОпределенииРежимаОбновленияДанных", "РежимОбновленияДанных",
|
||||
РежимОбновленияДанных, Тип("Строка"));
|
||||
Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Недопустимое значение параметра %1 в %2.
|
||||
|Ожидалось: %3; передано значение: %4 (тип %5).'"),
|
||||
|Ожидалось: %3, %4 или %5; передано значение: %6 (тип %7).'"),
|
||||
"РежимОбновленияДанных", "ПриОпределенииРежимаОбновленияДанных",
|
||||
НСтр("ru = 'НачальноеЗаполнение, ОбновлениеВерсии или ПереходСДругойПрограммы'"),
|
||||
"НачальноеЗаполнение", "ОбновлениеВерсии", "ПереходСДругойПрограммы",
|
||||
РежимОбновленияДанных, ТипЗнч(РежимОбновленияДанных));
|
||||
ОбщегоНазначенияКлиентСервер.Проверить(РежимОбновленияДанных = "НачальноеЗаполнение"
|
||||
Или РежимОбновленияДанных = "ОбновлениеВерсии" Или РежимОбновленияДанных = "ПереходСДругойПрограммы", Сообщение);
|
||||
@@ -1017,8 +1017,9 @@
|
||||
Количество = Число(ПотокиОбновления[1]);
|
||||
Исключение
|
||||
ТекстИсключения = НСтр(
|
||||
"ru = 'Укажите параметр запуска программы ""ЧислоПотоковОбновления"" в формате
|
||||
|""ЧислоПотоковОбновления=Х"", где ""Х"" - максимальное количество потоков обновления.'");
|
||||
"ru = 'Укажите параметр запуска программы ""%1"" в формате
|
||||
|""%1=Х"", где ""Х"" - максимальное количество потоков обновления.'");
|
||||
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения, "ЧислоПотоковОбновления");
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
@@ -3689,7 +3690,8 @@
|
||||
Пока Истина Цикл
|
||||
Результат = ОбработчикДляВыполнения(Обработчики, ГруппыОбработчиковИЗависимость, СведенияОбОбновлении);
|
||||
Если Результат.ОбработчикДляВыполнения = Неопределено
|
||||
И Результат.ЕстьНевыполненные Тогда
|
||||
И Результат.ЕстьНевыполненные
|
||||
И Не Результат.ПрерватьВыполнение Тогда
|
||||
СведенияОбОбновлении.ТекущаяИтерацияОбновления = СведенияОбОбновлении.ТекущаяИтерацияОбновления + 1;
|
||||
ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении);
|
||||
Иначе
|
||||
@@ -3698,8 +3700,8 @@
|
||||
КонецЦикла;
|
||||
|
||||
ОбработчикДляВыполнения = Результат.ОбработчикДляВыполнения;
|
||||
Если ОбработчикДляВыполнения = Неопределено Тогда
|
||||
Если Результат.ЕстьВыполняющиеся Тогда
|
||||
Если ОбработчикДляВыполнения = Неопределено Или Результат.ПрерватьВыполнение Тогда
|
||||
Если Результат.ЕстьВыполняющиеся И Не Результат.ПрерватьВыполнение Тогда
|
||||
Возврат Истина;
|
||||
Иначе
|
||||
СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления = ТекущаяДатаСеанса();
|
||||
@@ -3788,8 +3790,9 @@
|
||||
|
||||
Если Обработчик.МонопольныйРежим = Истина Тогда
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'У отложенного обработчика ""%1""
|
||||
|не должен быть установлен признак ""МонопольныйРежим"".'"),
|
||||
Обработчик.ИмяОбработчика);
|
||||
|не должен быть установлен признак ""%2"".'"),
|
||||
Обработчик.ИмяОбработчика,
|
||||
"МонопольныйРежим");
|
||||
ЗаписатьОшибку(ТекстОшибки);
|
||||
ТекстОшибок = ТекстОшибок + ТекстОшибки + Символы.ПС;
|
||||
КонецЕсли;
|
||||
@@ -3799,21 +3802,23 @@
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'У отложенного обработчика ""%1""
|
||||
|некорректно заполнены значения свойств:
|
||||
| - ""ЗапускатьТолькоВГлавномУзле""
|
||||
| - ""ЗапускатьИВПодчиненномУзлеРИБСФильтрами"".
|
||||
| - ""%2""
|
||||
| - ""%3"".
|
||||
|
|
||||
|Данные свойства не могут одновременно принимать значение ""Истина"".'"),
|
||||
Обработчик.ИмяОбработчика);
|
||||
Обработчик.ИмяОбработчика,
|
||||
"ЗапускатьТолькоВГлавномУзле",
|
||||
"ЗапускатьИВПодчиненномУзлеРИБСФильтрами");
|
||||
ЗаписатьОшибку(ТекстОшибки);
|
||||
ТекстОшибок = ТекстОшибок + ТекстОшибки + Символы.ПС;
|
||||
КонецЕсли;
|
||||
|
||||
Если Обработчик.ОбщиеДанные = Истина Тогда
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'У отложенного обработчика ""%1""
|
||||
|указано недопустимое значение свойства ""ОбщиеДанные"".
|
||||
|указано недопустимое значение свойства ""%2"".
|
||||
|
|
||||
|Данное свойство не может принимать значение ""Истина"" у отложенного обработчика.'"),
|
||||
Обработчик.ИмяОбработчика);
|
||||
Обработчик.ИмяОбработчика, "ОбщиеДанные");
|
||||
ЗаписатьОшибку(ТекстОшибки);
|
||||
ТекстОшибок = ТекстОшибок + ТекстОшибки + Символы.ПС;
|
||||
КонецЕсли;
|
||||
@@ -4151,6 +4156,7 @@
|
||||
ЕстьВыполняющиеся = Ложь;
|
||||
ЕстьОшибки = Ложь;
|
||||
ЕстьНевыполненные = Ложь;
|
||||
ПрерватьВыполнение = Ложь;
|
||||
ВыполняющийсяМногопоточныйОбработчик = Неопределено;
|
||||
Для Каждого Обработчик Из Обработчики Цикл
|
||||
Если Обработчик.ИтерацияЗапуска = ТекущаяИтерация Тогда
|
||||
@@ -4208,11 +4214,11 @@
|
||||
МаксимумПопытокОбновления = МаксимумПопытокОбновления(Обработчик);
|
||||
Если Обработчик.ЧислоПопыток >= МаксимумПопытокОбновления Тогда
|
||||
Если Обработчик.Статус = Перечисления.СтатусыОбработчиковОбновления.Ошибка Тогда
|
||||
ЕстьОшибки = Истина;
|
||||
ПрерватьВыполнение = Истина;
|
||||
Продолжить;
|
||||
ИначеЕсли ВсеОбработчикиЗациклились() Тогда
|
||||
ОтметитьЗациклившиесяОбработчики();
|
||||
ЕстьОшибки = Истина;
|
||||
ПрерватьВыполнение = Истина;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
@@ -4225,13 +4231,14 @@
|
||||
ОбработчикДляВыполнения = ВыполняющийсяМногопоточныйОбработчик;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЕстьОшибки Тогда
|
||||
Если ЕстьОшибки Или ПрерватьВыполнение Тогда
|
||||
ЗавершеноУспешно = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("ОбработчикДляВыполнения", ОбработчикДляВыполнения);
|
||||
Результат.Вставить("ЗавершеноУспешно", ЗавершеноУспешно);
|
||||
Результат.Вставить("ПрерватьВыполнение", ПрерватьВыполнение);
|
||||
Результат.Вставить("ЕстьВыполняющиеся", ЕстьВыполняющиеся);
|
||||
Результат.Вставить("ЕстьНевыполненные", ЕстьНевыполненные);
|
||||
|
||||
@@ -5382,18 +5389,20 @@
|
||||
Если Не ИзвестныйСпособ Тогда
|
||||
ШаблонСообщения = НСтр(
|
||||
"ru = 'Укажите способ выборки в процедуре регистрации данных к обновлению.
|
||||
|Указывается в ""Параметры.ПараметрыВыборки.СпособВыборки"".
|
||||
|Сейчас указан неизвестный способ выборки ""%1"".'");
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, СпособВыборки);
|
||||
|Указывается в ""%1"".
|
||||
|Сейчас указан неизвестный способ выборки ""%2"".'");
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, СпособВыборки, "Параметры.ПараметрыВыборки.СпособВыборки");
|
||||
КонецЕсли;
|
||||
|
||||
ТаблицыУказаны = Не ПустаяСтрока(ПараметрыВыборки.ПолныеИменаОбъектов)
|
||||
Или Не ПустаяСтрока(ПараметрыВыборки.ПолныеИменаРегистров);
|
||||
Если Не ТаблицыУказаны Тогда
|
||||
ВызватьИсключение НСтр(
|
||||
ШаблонСообщения = НСтр(
|
||||
"ru = 'Укажите обрабатываемые таблицы в процедуре регистрации данных к обновлению.
|
||||
|Указывается в ""Параметры.ПараметрыВыборки.ПолныеИменаОбъектов"" и/или
|
||||
|""Параметры.ПараметрыВыборки.ПолныеИменаРегистров"".'");
|
||||
|Указывается в ""%1"" и/или
|
||||
|""%2"".'");
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения,
|
||||
"Параметры.ПараметрыВыборки.ПолныеИменаОбъектов", "Параметры.ПараметрыВыборки.ПолныеИменаРегистров");
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -7370,7 +7379,9 @@
|
||||
Если ПустаяСтрока(Обработчик.Версия) Тогда
|
||||
|
||||
Если Обработчик.НачальноеЗаполнение <> Истина Тогда
|
||||
ОписаниеОшибки = НСтр("ru = 'У обработчика не заполнено свойство Версия или свойство НачальноеЗаполнение.'");
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'У обработчика не заполнено свойство %1 или свойство %2.'"),
|
||||
"Версия", "НачальноеЗаполнение");
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли Обработчик.Версия <> "*"
|
||||
@@ -7381,24 +7392,26 @@
|
||||
Исключение
|
||||
НулеваяВерсия = Ложь;
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'У обработчика неправильно заполнено свойство Версия: ""%1"".
|
||||
НСтр("ru = 'У обработчика неправильно заполнено свойство %1: ""%2"".
|
||||
|Правильный формат, например: ""2.1.3.70"".'"),
|
||||
Обработчик.Версия);
|
||||
"Версия", Обработчик.Версия);
|
||||
КонецПопытки;
|
||||
|
||||
Если НулеваяВерсия Тогда
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'У обработчика неправильно заполнено свойство Версия: ""%1"".
|
||||
НСтр("ru = 'У обработчика неправильно заполнено свойство %1: ""%2"".
|
||||
|Версия не может быть нулевой.'"),
|
||||
Обработчик.Версия);
|
||||
"Версия", Обработчик.Версия);
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(ОписаниеОшибки)
|
||||
И Обработчик.ВыполнятьВГруппеОбязательных <> Истина
|
||||
И Обработчик.Приоритет <> 0 Тогда
|
||||
|
||||
ОписаниеОшибки = НСтр("ru = 'У обработчика неправильно заполнено свойство Приоритет или
|
||||
|свойство ВыполнятьВГруппеОбязательных.'");
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'У обработчика неправильно заполнено свойство %1 или
|
||||
|свойство %2.'"),
|
||||
"Приоритет", "ВыполнятьВГруппеОбязательных");
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -7407,17 +7420,19 @@
|
||||
И Обработчик.РежимВыполнения <> "Оперативно"
|
||||
И Обработчик.РежимВыполнения <> "Отложенно" Тогда
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'У обработчика ""%1"" неправильно заполнено свойство РежимВыполнения.
|
||||
|Допустимое значение: ""Монопольно"", ""Отложенно"", ""Оперативно"".'"),
|
||||
Обработчик.Процедура);
|
||||
НСтр("ru = 'У обработчика ""%1"" неправильно заполнено свойство %2.
|
||||
|Допустимое значение: ""%3"", ""%4"", ""%5"".'"),
|
||||
Обработчик.Процедура, "РежимВыполнения", "Монопольно", "Отложенно", "Оперативно");
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(ОписаниеОшибки)
|
||||
И Обработчик.Опциональный = Истина
|
||||
И Обработчик.НачальноеЗаполнение = Истина Тогда
|
||||
|
||||
ОписаниеОшибки = НСтр("ru = 'У обработчика не правильно заполнено свойство Опциональный или
|
||||
|свойство НачальноеЗаполнение.'");
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'У обработчика не правильно заполнено свойство %1 или
|
||||
|свойство %2.'"),
|
||||
"Опциональный", "НачальноеЗаполнение");
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда
|
||||
@@ -7924,10 +7939,10 @@
|
||||
+ Число(РазрядыВерсииСтроками[3]);
|
||||
|
||||
Если ВесВерсии > ВесВерсииМетаданных Тогда
|
||||
ТекстИсключения = НСтр("ru = 'В общем макете ОписаниеИзмененийСистемы для одного из разделов изменений
|
||||
|установлена версия выше, чем в метаданных. (%1, должна быть %2)'");
|
||||
ТекстИсключения = НСтр("ru = 'В общем макете %1 для одного из разделов изменений
|
||||
|установлена версия выше, чем в метаданных. (%2, должна быть %3)'");
|
||||
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения,
|
||||
Версия, Метаданные.Версия);
|
||||
"ОписаниеИзмененийСистемы", Версия, Метаданные.Версия);
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -8451,8 +8466,9 @@
|
||||
ЗавершениеОбработкиДанных = ТекущаяУниверсальнаяДатаВМиллисекундах();
|
||||
|
||||
Если Параметры.ОбработкаЗавершена = Неопределено Тогда
|
||||
ТекстОшибки = НСтр("ru = 'Обработчик обновления не инициализировал параметр ОбработкаЗавершена.
|
||||
ТекстОшибки = НСтр("ru = 'Обработчик обновления не инициализировал параметр %1.
|
||||
|Выполнение прервано из-за явной ошибки в коде обработчика.'");
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, "ОбработкаЗавершена");
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -8602,9 +8618,9 @@
|
||||
КонецЦикла;
|
||||
ИначеЕсли ЗначениеЗаполнено(БлокируемыеОбъекты) И Не ЗначениеЗаполнено(ПроцедураПроверки) Тогда
|
||||
ТекстИсключения = НСтр("ru = 'У отложенного обработчика обновления ""%1""
|
||||
|заполнен список блокируемых объектов, но не задано свойство ""ПроцедураПроверки"".'");
|
||||
|заполнен список блокируемых объектов, но не задано свойство ""%2"".'");
|
||||
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения, Обработчик.ИмяОбработчика);
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения, Обработчик.ИмяОбработчика, "ПроцедураПроверки");
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
|
||||
+5
-2
@@ -1116,9 +1116,12 @@
|
||||
|
||||
Если ОбщегоНазначения.РазделениеВключено()
|
||||
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
|
||||
|
||||
ВызватьИсключение НСтр("ru = 'Вызов функции ОбновлениеИнформационнойБазыСлужебныйПовтИсп.МинимальнаяВерсияОбластейДанных()
|
||||
ТекстИсключения = НСтр("ru = 'Вызов функции %1
|
||||
|недоступен из сеансов с установленным значением разделителей модели сервиса.'");
|
||||
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения,
|
||||
"ОбновлениеИнформационнойБазыСлужебныйПовтИсп.МинимальнаяВерсияОбластейДанных()");
|
||||
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
КонецЕсли;
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
|
||||
@@ -554,8 +554,9 @@
|
||||
Процедура ПроверитьНаличиеУстаревшихИсправлений() Экспорт
|
||||
Результат = ИсправленияИзменены(Истина);
|
||||
Если Результат.ЕстьИзменения Тогда
|
||||
ТекстСообщения = НСтр("ru = 'Некорректный вызов функции ""ОбновлениеИнформационнойБазы.ВыполнитьОбновлениеИнформационнойБазы"".
|
||||
ТекстСообщения = НСтр("ru = 'Некорректный вызов функции ""%1"".
|
||||
|Перед вызовом не были удалены устаревшие патчи, возможно, обновление выполняется нештатными средствами.'");
|
||||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, "ОбновлениеИнформационнойБазы.ВыполнитьОбновлениеИнформационнойБазы");
|
||||
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,, ТекстСообщения);
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -1117,7 +1117,7 @@
|
||||
МестаИспользования = Новый ТаблицаЗначений;
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
МестаИспользования = НайтиПоСсылкам(НаборСсылок); // см. МестаИспользования;
|
||||
МестаИспользования = НайтиПоСсылкам(НаборСсылок); // см. МестаИспользования.
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
|
||||
// МестаИспользования - ТаблицаЗначений - где:
|
||||
|
||||
@@ -865,7 +865,7 @@
|
||||
СведенияОКоманде = Новый Структура("ИмяВФорме, ТипПараметра, УсловияВидимости, УсловияВидимостиПоТипамОбъектов");
|
||||
ЗаполнитьЗначенияСвойств(СведенияОКоманде, Команда);
|
||||
СведенияОПодменюКоманды.КомандыСУсловиямиВидимости.Добавить(СведенияОКоманде);
|
||||
ИначеЕсли Команда.Важность <> "СмТакже" Тогда
|
||||
ИначеЕсли Не Команда.ТолькоВоВсехДействиях Тогда
|
||||
СведенияОПодменюКоманды.ЕстьКомандыБезУсловийВидимости = Истина;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
@@ -277,11 +277,11 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Находит все присоединенные к объекту файлы и добавляет ссылки на них в свойство Файлы.
|
||||
// Находит все присоединенные к объекту файлы и добавляет ссылки на них в параметр Файлы.
|
||||
//
|
||||
// Параметры:
|
||||
// ВладелецФайла - ОпределяемыйТип.ВладелецПрисоединенныхФайлов - ссылка на объект-владелец файлов.
|
||||
// Файлы - Массив из ОпределяемыйТип.ПрисоединенныйФайл - массив в который будут добавлены ссылки на файлы объекта.
|
||||
// ВладелецФайла - ОпределяемыйТип.ВладелецПрисоединенныхФайлов
|
||||
// Файлы - Массив из ОпределяемыйТип.ПрисоединенныйФайл - массив, в который будут добавлены ссылки на файлы объекта.
|
||||
//
|
||||
Процедура ЗаполнитьПрисоединенныеФайлыКОбъекту(Знач ВладелецФайла, Знач Файлы) Экспорт
|
||||
|
||||
@@ -290,16 +290,11 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ТипыВладельцев = Метаданные.РегистрыСведений.НаличиеФайлов.Измерения.ОбъектСФайлами.Тип.Типы();
|
||||
Если ТипыВладельцев.Найти(ТипЗнч(ВладелецФайла)) <> Неопределено Тогда
|
||||
|
||||
МассивФайловЛокальный = РаботаСФайламиСлужебный.ВсеПодчиненныеФайлы(ВладелецФайла);
|
||||
Для Каждого СсылкаНаФайл Из МассивФайловЛокальный Цикл
|
||||
Файлы.Добавить(СсылкаНаФайл);
|
||||
ПрисоединенныеФайлы = РаботаСФайламиСлужебный.ПрисоединенныеФайлыКОбъекту(ВладелецФайла);
|
||||
Для Каждого ПрисоединенныйФайл Из ПрисоединенныеФайлы Цикл
|
||||
Файлы.Добавить(ПрисоединенныйФайл);
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Возвращает новую ссылку на файл для указанного владельца файла.
|
||||
@@ -621,7 +616,7 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ХранитьВерсии = СтрСравнить(ИмяСправочника, "Файлы") = 0;
|
||||
ХранитьВерсии = СтрСравнить(ИмяСправочника, Метаданные.Справочники.Файлы.Имя) = 0;
|
||||
|
||||
ПрисоединенныйФайл = Справочники[ИмяСправочника].СоздатьЭлемент(); // ОпределяемыйТип.ПрисоединенныйФайлОбъект
|
||||
ПрисоединенныйФайл.УстановитьСсылкуНового(НоваяСсылкаНаФайл);
|
||||
@@ -633,10 +628,8 @@
|
||||
ПрисоединенныйФайл.Наименование = ИмяБезРасширения;
|
||||
ПрисоединенныйФайл.Размер = ДвоичныеДанные.Размер();
|
||||
ПрисоединенныйФайл.Расширение = РасширениеБезТочки;
|
||||
ПрисоединенныйФайл.ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайлов(
|
||||
ПрисоединенныйФайл.Размер,
|
||||
ПрисоединенныйФайл.ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайла(ПрисоединенныйФайл.Размер,
|
||||
ПрисоединенныйФайл.Расширение);
|
||||
|
||||
ПрисоединенныйФайл.Изменил = ПараметрыФайла.Автор;
|
||||
ПрисоединенныйФайл.ХранитьВерсии = ХранитьВерсии;
|
||||
|
||||
|
||||
@@ -226,7 +226,7 @@
|
||||
РазмерФайла = ПрисоединенныйФайл.Размер;
|
||||
ТипХраненияФайла = ПрисоединенныйФайл.ТипХраненияФайла;
|
||||
Если НЕ ЗначениеЗаполнено(ТипХраненияФайла) Тогда
|
||||
ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайлов(ПрисоединенныйФайл.Размер, ПрисоединенныйФайл.Расширение);
|
||||
ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайла(ПрисоединенныйФайл.Размер, ПрисоединенныйФайл.Расширение);
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
|
||||
@@ -287,21 +287,29 @@
|
||||
// Копирует данные присоединенного файла по указанному пути.
|
||||
//
|
||||
// Параметры:
|
||||
// ПрисоединенныйФайл - ОпределяемыйТип.ПрисоединенныйФайл - ссылка на элемент справочника с файлом.
|
||||
// Путь - Строка - полный путь (включая имя файла), куда будет скопирован файл из тома.
|
||||
// ПрисоединенныйФайл - ОпределяемыйТип.ПрисоединенныйФайл
|
||||
// ПутьФайлаПриемник - Строка - полный путь (включая имя файла), куда будет скопирован файл из тома.
|
||||
//
|
||||
Процедура СкопироватьФайл(ПрисоединенныйФайл, Путь) Экспорт
|
||||
Процедура СкопироватьФайл(ПрисоединенныйФайл, ПутьФайлаПриемник) Экспорт
|
||||
|
||||
СвойстваФайла = СвойстваФайлаВТоме(ПрисоединенныйФайл);
|
||||
КопироватьФайл(ПолноеИмяФайлаВТоме(СвойстваФайла), Путь);
|
||||
ПутьФайлаИсточник = ПолноеИмяФайлаВТоме(СвойстваФайла);
|
||||
|
||||
// Исходному файлу мог быть установлен атрибут "Только чтение".
|
||||
// Унаследованный при копировании атрибут снимается, чтобы файл можно было удалить.
|
||||
СвойстваФайла = Новый Файл(Путь);
|
||||
Если СвойстваФайла.Существует()
|
||||
И СвойстваФайла.ПолучитьТолькоЧтение() Тогда
|
||||
ФайлИсточник = Новый Файл(ПутьФайлаИсточник);
|
||||
Если Не ФайлИсточник.Существует() Тогда
|
||||
СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='Данные файла были удалены. Возможно, файл очищен как ненужный или удален антивирусной программой.
|
||||
|%1'"), Строка(ПрисоединенныйФайл));
|
||||
ВызватьИсключение СообщениеОбОшибке;
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваФайла.УстановитьТолькоЧтение(Ложь);
|
||||
КопироватьФайл(ПутьФайлаИсточник, ПутьФайлаПриемник);
|
||||
|
||||
// Если у исходного файла был установлен атрибут "Только чтение",
|
||||
// то он снимается у файла-приемника, чтобы в дальнейшем его можно было отредактировать или удалить.
|
||||
ФайлПриемник = Новый Файл(ПутьФайлаПриемник);
|
||||
Если ФайлПриемник.Существует() И ФайлПриемник.ПолучитьТолькоЧтение() Тогда
|
||||
ФайлПриемник.УстановитьТолькоЧтение(Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -715,11 +723,10 @@
|
||||
// Имеет смысл в случае хранения файлов в томах и информационной базе.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - настройки хранения файлов в ИБ. Свойства:
|
||||
// Структура::
|
||||
// * РасширенияФайлов - Строка - расширения файлов, которые хранятся в ИБ.
|
||||
// Разделены пробелом.
|
||||
// * МаксимальныйРазмер - Число - максимальный размер файла, сохраняемого
|
||||
// в ИБ, в байтах.
|
||||
// * МаксимальныйРазмер - Число - максимальный размер файла, сохраняемого в ИБ, в байтах.
|
||||
//
|
||||
Функция ПараметрыХраненияФайловВИнформационнойБазе() Экспорт
|
||||
|
||||
@@ -1292,7 +1299,7 @@
|
||||
БлокировкаДанных.Заблокировать();
|
||||
|
||||
Объект = СсылкаНаФайл.ПолучитьОбъект(); // ОпределяемыйТип.ПрисоединенныйФайлОбъект
|
||||
Объект.ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайлов(Объект.Размер, Объект.Расширение);
|
||||
Объект.ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайла(Объект.Размер, Объект.Расширение);
|
||||
|
||||
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
|
||||
|
||||
@@ -1824,29 +1831,34 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает тип хранения добавляемого файла в зависимости от расширения и размера.
|
||||
// Возвращает тип хранения добавляемого файла в зависимости от его расширения и размера.
|
||||
//
|
||||
// Параметры:
|
||||
// Расширение - Строка - расширение добавляемого файла.
|
||||
// Размер - Число - размер добавляемого файла в байтах.
|
||||
// РасширениеФайла - Строка - расширение добавляемого файла.
|
||||
// РазмерФайла - Число - размер добавляемого файла в байтах.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ПеречислениеСсылка.ТипыХраненияФайлов - если способ хранения файлов в настройках
|
||||
// указан "ВТомахНаДиске", всегда возвращает значение "ВТомахНаДиске". Если способ хранения
|
||||
// файлов указан "ВИнформационнойБазеИТомахНаДиске", возвращает "ВИнформационнойБазе", если
|
||||
// файл соответствует параметрам хранения в информационной базе и "ВТомахНаДиске", если нет.
|
||||
// указан ВТомахНаДиске, возвращает значение ВТомахНаДиске. Если способ хранения
|
||||
// файлов указан ВИнформационнойБазеИТомахНаДиске, то возвращает ВИнформационнойБазе, если
|
||||
// файл соответствует параметрам хранения в информационной базе, иначе ВТомахНаДиске.
|
||||
//
|
||||
Функция ТипХраненияФайла(Расширение, Размер) Экспорт
|
||||
Функция ТипХраненияФайла(Знач РасширениеФайла, Знач РазмерФайла) Экспорт
|
||||
|
||||
ТипХранения = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске;
|
||||
Если ХранитьФайлыВТомахНаДискеИИнформационнойБазе() Тогда
|
||||
|
||||
ПараметрыХранения = ПараметрыХраненияФайловВИнформационнойБазе();
|
||||
Если Размер <= ПараметрыХранения.МаксимальныйРазмер
|
||||
И СтрНайти(НРег(ПараметрыХранения.РасширенияФайлов), НРег(Расширение)) > 0 Тогда
|
||||
|
||||
Если РазмерФайла <= ПараметрыХранения.МаксимальныйРазмер Тогда
|
||||
ТипХранения = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе;
|
||||
|
||||
Иначе
|
||||
РасширениеФайла = НРег(СокрЛП(РасширениеФайла));
|
||||
Если СтрНачинаетсяС(РасширениеФайла, ".") Тогда
|
||||
РасширениеФайла = Сред(РасширениеФайла, 2, СтрДлина(РасширениеФайла) - 1);
|
||||
КонецЕсли;
|
||||
Если СтрНайти(НРег(ПараметрыХранения.РасширенияФайлов), РасширениеФайла) > 0 Тогда
|
||||
ТипХранения = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -37,28 +37,17 @@
|
||||
Процедура ВыгрузитьФайл(Знач ОбъектФайла, Знач ИмяНовогоФайла) Экспорт
|
||||
|
||||
Если ОбъектФайла.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
|
||||
|
||||
РаботаСФайламиВТомахСлужебный.СкопироватьФайл(ОбъектФайла.Ссылка, ИмяНовогоФайла);
|
||||
|
||||
Иначе
|
||||
|
||||
ДвоичныеДанныеФайла = РаботаСФайлами.ДвоичныеДанныеФайла(ОбъектФайла.Ссылка);
|
||||
|
||||
Попытка
|
||||
|
||||
ДвоичныеДанныеФайла.Записать(ИмяНовогоФайла);
|
||||
|
||||
Исключение
|
||||
|
||||
СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='Двоичные данные файла %1 были удалены. Возможно, файл очищен как ненужный или удален антивирусной программой.
|
||||
|Обратитесь к администратору.'"), Строка(ОбъектФайла.Ссылка));
|
||||
|
||||
НСтр("ru='Данные файла были удалены. Возможно, файл очищен как ненужный.
|
||||
|%1'"), Строка(ОбъектФайла.Ссылка));
|
||||
ВызватьИсключение СообщениеОбОшибке;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -72,10 +61,10 @@
|
||||
Процедура ЗагрузитьФайл(Знач ОбъектФайла, Знач ПутьКФайлу) Экспорт
|
||||
|
||||
ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКФайлу);
|
||||
ТипХранения = ТипХраненияФайлов(ОбъектФайла.Размер, ОбъектФайла.Расширение);
|
||||
ОбъектФайла.ТипХраненияФайла = ТипХранения;
|
||||
ТипХраненияФайла = ТипХраненияФайла(ОбъектФайла.Размер, ОбъектФайла.Расширение);
|
||||
ОбъектФайла.ТипХраненияФайла = ТипХраненияФайла;
|
||||
ОбъектФайла.ПутьКФайлу = "";
|
||||
Если ТипХранения = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
|
||||
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
|
||||
РаботаСФайламиВТомахСлужебный.ДобавитьФайл(ОбъектФайла, ДвоичныеДанные, , Истина);
|
||||
Иначе
|
||||
ОбъектФайла.ДополнительныеСвойства.Вставить("ДвоичныеДанныеФайла", ДвоичныеДанные);
|
||||
@@ -667,7 +656,7 @@
|
||||
Если Метаданные.Справочники.Найти(ИмяСтандартногоОсновногоСправочника) <> Неопределено Тогда
|
||||
ИменаСправочников.Вставить(ИмяСтандартногоОсновногоСправочника, Истина);
|
||||
ИначеЕсли Метаданные.ОпределяемыеТипы.ВладелецФайлов.Тип.СодержитТип(ТипВладельцаФайлов) Тогда
|
||||
ИменаСправочников.Вставить("Файлы", Истина);
|
||||
ИменаСправочников.Вставить(Метаданные.Справочники.Файлы.Имя, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
// Переопределение стандартного справочника хранения присоединенных файлов.
|
||||
@@ -747,15 +736,13 @@
|
||||
МодульЭлектроннаяПодписьСлужебный = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебный");
|
||||
КонецЕсли;
|
||||
|
||||
КопируемыеФайлы = ВсеПодчиненныеФайлы(Источник.Ссылка);
|
||||
КопируемыеФайлы = ПрисоединенныеФайлыКОбъекту(Источник.Ссылка, Истина);
|
||||
Для Каждого КопируемыйФайл Из КопируемыеФайлы Цикл
|
||||
Если ДоступнаЭлектроннаяПодпись = Неопределено Тогда
|
||||
ДоступнаЭлектроннаяПодпись = (МодульЭлектроннаяПодписьСлужебный <> Неопределено)
|
||||
И (МодульЭлектроннаяПодписьСлужебный.ДоступнаЭлектроннаяПодпись(ТипЗнч(КопируемыйФайл)));
|
||||
КонецЕсли;
|
||||
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(КопируемыйФайл, "ПометкаУдаления") Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
НачатьТранзакцию();
|
||||
Попытка
|
||||
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоСсылке(КопируемыйФайл);
|
||||
@@ -771,18 +758,15 @@
|
||||
|
||||
ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(КопируемыйФайл);
|
||||
|
||||
ТипХраненияФайла = ТипХраненияФайлов();
|
||||
ТипХраненияФайла = ТипХраненияФайла(КопияФайла.Размер, КопияФайла.Расширение);
|
||||
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
|
||||
КопияФайла.ТипХраненияФайла = ТипХраненияФайла;
|
||||
ЗаписатьФайлВИнформационнуюБазу(КопияФайлаСсылка, ДвоичныеДанные);
|
||||
Иначе
|
||||
|
||||
КопияФайла.Том = Неопределено;
|
||||
КопияФайла.ПутьКФайлу = Неопределено;
|
||||
КопияФайла.ТипХраненияФайла = Неопределено;
|
||||
|
||||
РаботаСФайламиВТомахСлужебный.ДобавитьФайл(КопияФайла, ДвоичныеДанные);
|
||||
|
||||
КонецЕсли;
|
||||
КопияФайла.Записать();
|
||||
|
||||
@@ -921,29 +905,35 @@
|
||||
// Возвращает тип хранения файлов с учетом наличия томов.
|
||||
// Если томов хранения файлов нет, тогда хранение в ИБ.
|
||||
//
|
||||
// Если Размер или Расширение имеют значение неопределено,
|
||||
// то настройка смешенного хранения не учитывается.
|
||||
// Возвращаемое значение:
|
||||
// ПеречислениеСсылка.ТипыХраненияФайлов
|
||||
//
|
||||
Функция ТипХраненияФайлов() Экспорт
|
||||
|
||||
Если РаботаСФайламиВТомахСлужебный.ХранитьФайлыВТомахНаДиске()
|
||||
И РаботаСФайламиВТомахСлужебный.ЕстьТомаХраненияФайлов() Тогда
|
||||
Возврат Перечисления.ТипыХраненияФайлов.ВТомахНаДиске;
|
||||
Иначе
|
||||
Возврат Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает тип хранения файла с учетом наличия томов или смешанного хранения.
|
||||
// Если томов хранения файлов нет, тогда хранение в ИБ.
|
||||
//
|
||||
// Параметры:
|
||||
// Размер - Число
|
||||
// - Неопределено
|
||||
// Расширение - Строка
|
||||
// - Неопределено
|
||||
// РазмерФайла - Число
|
||||
// РасширениеФайла - Строка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ПеречислениеСсылка.ТипыХраненияФайлов
|
||||
//
|
||||
Функция ТипХраненияФайлов(Размер = Неопределено, Расширение = Неопределено) Экспорт
|
||||
Функция ТипХраненияФайла(Знач РазмерФайла, Знач РасширениеФайла) Экспорт
|
||||
|
||||
Если РаботаСФайламиВТомахСлужебный.ХранитьФайлыВТомахНаДиске()
|
||||
И РаботаСФайламиВТомахСлужебный.ЕстьТомаХраненияФайлов() Тогда
|
||||
|
||||
Если Размер <> Неопределено И Расширение <> Неопределено Тогда
|
||||
Возврат РаботаСФайламиВТомахСлужебный.ТипХраненияФайла(Расширение, Размер);
|
||||
Иначе
|
||||
Возврат Перечисления.ТипыХраненияФайлов.ВТомахНаДиске;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат РаботаСФайламиВТомахСлужебный.ТипХраненияФайла(РасширениеФайла, РазмерФайла);
|
||||
Иначе
|
||||
Возврат Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе;
|
||||
КонецЕсли;
|
||||
@@ -3284,7 +3274,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
ДвоичныеДанные = ЭлементДанных.ФайлХранилище.Получить();
|
||||
НовыйТипХраненияФайла = ТипХраненияФайлов(ЭлементДанных.Размер, ЭлементДанных.Расширение);
|
||||
НовыйТипХраненияФайла = ТипХраненияФайла(ЭлементДанных.Размер, ЭлементДанных.Расширение);
|
||||
ЭлементДанных.ТипХраненияФайла = НовыйТипХраненияФайла;
|
||||
|
||||
Если Не ЭлементДанных.ЭтоНовый() Тогда
|
||||
@@ -3319,9 +3309,9 @@
|
||||
ЭлементДанных.ПутьКФайлу = Неопределено;
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось добавить файл ""%1"" ни в один из томов, т.к. он отсутствует.
|
||||
НСтр("ru = 'Не удалось добавить файл ни в один из томов, т.к. он не существует.
|
||||
|Возможно, файл удален антивирусной программой.
|
||||
|Обратитесь к администратору.'"),
|
||||
|%1.'"),
|
||||
ОбщегоНазначенияКлиентСервер.ПолучитьИмяСРасширением(ЭлементДанных.Наименование, ЭлементДанных.Расширение));
|
||||
|
||||
ЗаписьЖурналаРегистрации(НСтр("ru = 'Файлы.Добавление файла в том'", ОбщегоНазначения.КодОсновногоЯзыка()),
|
||||
@@ -4040,8 +4030,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает стандартный текст ошибки.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
@@ -4053,8 +4041,8 @@
|
||||
|%1
|
||||
|который присоединен к:
|
||||
|%2
|
||||
|по причине: двоичные данные файла были удалены. Возможно, файл очищен как ненужный или удален антивирусной программой.
|
||||
|Обратитесь к администратору.'"),
|
||||
|
|
||||
|Данные файла были удалены. Возможно, файл очищен как ненужный или удален антивирусной программой.'"),
|
||||
ИмяФайла,
|
||||
ВладелецФайла);
|
||||
|
||||
@@ -4064,8 +4052,8 @@
|
||||
|%1
|
||||
|который присоединен к:
|
||||
|%2
|
||||
|по причине: двоичные данные файла были удалены. Возможно, файл очищен как ненужный.
|
||||
|Обратитесь к администратору.'"),
|
||||
|
|
||||
|Данные файла были удалены. Возможно, файл очищен как ненужный.'"),
|
||||
ИмяФайла,
|
||||
ВладелецФайла);
|
||||
КонецЕсли;
|
||||
@@ -4429,20 +4417,22 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Возвращает массив присоединенных файлов для указанного владельца.
|
||||
// ссылок на присоединенные файлы.
|
||||
// Возвращает ссылки на присоединенные файлы для указанного владельца.
|
||||
//
|
||||
// Параметры:
|
||||
// ВладелецФайлов - ОпределяемыйТип.ПрисоединенныйФайл
|
||||
// КромеПомеченныхНаУдаление - Булево
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из ОпределяемыйТип.ПрисоединенныйФайл
|
||||
//
|
||||
Функция ВсеПодчиненныеФайлы(Знач ВладелецФайлов) Экспорт
|
||||
Функция ПрисоединенныеФайлыКОбъекту(Знач ВладелецФайлов, Знач КромеПомеченныхНаУдаление = Ложь) Экспорт
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
ИменаСправочников = ИменаСправочниковХраненияФайлов(ВладелецФайлов, Истина);
|
||||
Если ИменаСправочников.Количество() = 0 Тогда
|
||||
Возврат Новый Массив;
|
||||
КонецЕсли;
|
||||
|
||||
ИменаСправочников = ИменаСправочниковХраненияФайлов(ВладелецФайлов);
|
||||
ТекстЗапросов = "";
|
||||
|
||||
Для каждого КлючИЗначение Из ИменаСправочников Цикл
|
||||
@@ -4466,7 +4456,11 @@
|
||||
|
||||
Если Метаданные.Справочники[КлючИЗначение.Ключ].Иерархический = Истина Тогда
|
||||
ТекстЗапроса = ТекстЗапроса + "
|
||||
| И Не ПрисоединенныеФайлы.ЭтоГруппа";
|
||||
| И НЕ ПрисоединенныеФайлы.ЭтоГруппа";
|
||||
КонецЕсли;
|
||||
Если КромеПомеченныхНаУдаление Тогда
|
||||
ТекстЗапроса = ТекстЗапроса + "
|
||||
| И НЕ ПрисоединенныеФайлы.ПометкаУдаления";
|
||||
КонецЕсли;
|
||||
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяСправочника", "Справочник." + КлючИЗначение.Ключ);
|
||||
@@ -4477,6 +4471,7 @@
|
||||
Запрос = Новый Запрос(ТекстЗапросов);
|
||||
Запрос.УстановитьПараметр("ВладелецФайлов", ВладелецФайлов);
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
|
||||
|
||||
КонецФункции
|
||||
@@ -4604,7 +4599,7 @@
|
||||
Версия.Наименование = СведенияОФайле.ИмяБезРасширения;
|
||||
Версия.ПолноеНаименование = Версия.Наименование;
|
||||
|
||||
ТипХраненияФайлов = ТипХраненияФайлов(Версия.Размер, Версия.Расширение );
|
||||
ТипХраненияФайлов = ТипХраненияФайла(Версия.Размер, Версия.Расширение);
|
||||
Версия.ТипХраненияФайла = ТипХраненияФайлов;
|
||||
|
||||
Если СведенияОФайле.СсылкаНаВерсиюИсточник <> Неопределено Тогда // создание Файла из шаблона
|
||||
@@ -4854,8 +4849,6 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ТипХраненияФайлов = ТипХраненияФайлов(СведенияОФайле.Размер, СведенияОФайле.РасширениеБезТочки);
|
||||
|
||||
Версия.Владелец = ФайлСсылка;
|
||||
Если Пользователь = Неопределено Тогда
|
||||
Версия.Автор = Пользователи.АвторизованныйПользователь();
|
||||
@@ -4871,7 +4864,8 @@
|
||||
Версия.Комментарий = СведенияОФайле.Комментарий;
|
||||
Версия.Расширение = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(СведенияОФайле.РасширениеБезТочки);
|
||||
|
||||
Версия.ТипХраненияФайла = ТипХраненияФайлов;
|
||||
ТипХраненияФайла = ТипХраненияФайла(СведенияОФайле.Размер, СведенияОФайле.РасширениеБезТочки);
|
||||
Версия.ТипХраненияФайла = ТипХраненияФайла;
|
||||
|
||||
Если ДвоичныеДанные = Неопределено Тогда
|
||||
ДвоичныеДанные = ДвоичныеДанныеИзСведенийОФайле(СведенияОФайле);
|
||||
@@ -4882,7 +4876,7 @@
|
||||
ПроверитьРазмерФайлаДляЗагрузки(Версия);
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипХраненияФайлов = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
|
||||
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
|
||||
Версия.ПутьКФайлу = "";
|
||||
Версия.Том = Справочники.ТомаХраненияФайлов.ПустаяСсылка();
|
||||
КонецЕсли;
|
||||
@@ -4901,8 +4895,8 @@
|
||||
|
||||
Версия.Заполнить(Неопределено);
|
||||
|
||||
Контекст = КонтекстОбновленияФайла(Версия, СведенияОФайле.АдресВременногоХранилищаФайла, СсылкаНаВерсию, ТипХраненияФайлов);
|
||||
МенеджерФайлов = МенеджерФайловПоТипу(ТипХраненияФайлов);
|
||||
Контекст = КонтекстОбновленияФайла(Версия, СведенияОФайле.АдресВременногоХранилищаФайла, СсылкаНаВерсию, ТипХраненияФайла);
|
||||
МенеджерФайлов = МенеджерФайловПоТипу(ТипХраненияФайла);
|
||||
МенеджерФайлов.ПередОбновлениемДанныхФайла(Контекст);
|
||||
НачатьТранзакцию();
|
||||
Попытка
|
||||
@@ -5141,9 +5135,9 @@
|
||||
Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
|
||||
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Параметры.ЗначениеКопирования);
|
||||
Если Параметры.РежимСоздания = "ИзШаблона" Тогда
|
||||
ОбъектЗначение = ЗаполнитьДанныеФайлаПоШаблону(Контекст, Параметры, НастраиватьОбъектФормы)
|
||||
ОбъектЗначение = ЗаполнитьДанныеФайлаПоШаблону(Контекст, Параметры)
|
||||
Иначе
|
||||
ОбъектЗначение = ЗаполнитьДанныеФайлаИзКопии(Контекст, Параметры, НастраиватьОбъектФормы);
|
||||
ОбъектЗначение = ЗаполнитьДанныеФайлаИзКопии(Контекст, Параметры);
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Если ЗначениеЗаполнено(Параметры.ПрисоединенныйФайл) Тогда
|
||||
@@ -5243,17 +5237,24 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ЗаполнитьДанныеФайлаПоШаблону(Контекст, Параметры, НастраиватьОбъектФормы)
|
||||
// Параметры:
|
||||
// Контекст - ФормаКлиентскогоПриложения:
|
||||
// * Объект - ОпределяемыйТип.ПрисоединенныйФайлОбъект
|
||||
// * ЗначениеКопирования - ОпределяемыйТип.ПрисоединенныйФайл
|
||||
// Параметры - Структура:
|
||||
// * ЗначениеКопирования - ОпределяемыйТип.ПрисоединенныйФайл
|
||||
// * ИмяСправочникаХранилищаФайлов - Строка
|
||||
// * ВладелецФайла - ОпределяемыйТип.ВладелецПрисоединенныхФайлов
|
||||
//
|
||||
Функция ЗаполнитьДанныеФайлаПоШаблону(Контекст, Параметры)
|
||||
|
||||
КопируемыйОбъект = Параметры.ЗначениеКопирования.ПолучитьОбъект();
|
||||
ДатаСоздания = ТекущаяДатаСеанса();
|
||||
КопируемыйОбъект = Параметры.ЗначениеКопирования.ПолучитьОбъект(); // ОпределяемыйТип.ПрисоединенныйФайлОбъект
|
||||
Контекст.ЗначениеКопирования = Параметры.ЗначениеКопирования;
|
||||
|
||||
МенеджерСправочника = Справочники[Параметры.ИмяСправочникаХранилищаФайлов]; // СправочникМенеджер
|
||||
ОбъектЗначение = МенеджерСправочника.СоздатьЭлемент();
|
||||
|
||||
ЗаполнитьЗначенияСвойств(
|
||||
ОбъектЗначение,
|
||||
КопируемыйОбъект,
|
||||
ЗаполнитьЗначенияСвойств(ОбъектЗначение, КопируемыйОбъект,
|
||||
"Наименование,
|
||||
|Зашифрован,
|
||||
|Описание,
|
||||
@@ -5263,13 +5264,11 @@
|
||||
|ВладелецФайла,
|
||||
|ТекстХранилище,
|
||||
|ПометкаУдаления");
|
||||
|
||||
ОбъектЗначение.ВладелецФайла = Параметры.ВладелецФайла;
|
||||
ДатаСоздания = ТекущаяДатаСеанса();
|
||||
ОбъектЗначение.ДатаСоздания = ДатаСоздания;
|
||||
ОбъектЗначение.ДатаМодификацииУниверсальная = УниверсальноеВремя(ДатаСоздания);
|
||||
ОбъектЗначение.Автор = Пользователи.АвторизованныйПользователь();
|
||||
ОбъектЗначение.ТипХраненияФайла = ТипХраненияФайлов();
|
||||
ОбъектЗначение.ТипХраненияФайла = ТипХраненияФайла(КопируемыйОбъект.Размер, КопируемыйОбъект.Расширение);
|
||||
ОбъектЗначение.ХранитьВерсии = ?(Параметры.ИмяСправочникаХранилищаФайлов = "Файлы",
|
||||
КопируемыйОбъект.ХранитьВерсии, Ложь);
|
||||
|
||||
@@ -5277,7 +5276,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗаполнитьДанныеФайлаИзКопии(Контекст, Параметры, НастраиватьОбъектФормы)
|
||||
Функция ЗаполнитьДанныеФайлаИзКопии(Контекст, Параметры)
|
||||
|
||||
КопируемыйОбъект = Параметры.ЗначениеКопирования.ПолучитьОбъект();
|
||||
Контекст.ЗначениеКопирования = Параметры.ЗначениеКопирования;
|
||||
@@ -5293,7 +5292,7 @@
|
||||
|
||||
ЗаполнитьЗначенияСвойств(ОбъектЗначение,КопируемыйОбъект, , ИсключаемыеРеквизиты);
|
||||
ОбъектЗначение.Автор = Пользователи.АвторизованныйПользователь();
|
||||
ОбъектЗначение.ТипХраненияФайла = ТипХраненияФайлов();
|
||||
ОбъектЗначение.ТипХраненияФайла = ТипХраненияФайла(ОбъектЗначение.Размер, ОбъектЗначение.Расширение);
|
||||
|
||||
Возврат ОбъектЗначение;
|
||||
|
||||
@@ -8453,21 +8452,17 @@
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
|
||||
Если ИмяСправочника = "ВерсииФайлов" Тогда
|
||||
ТекстЗапроса = ТекстЗапроса + "
|
||||
| И НЕ Файлы.Владелец.Зашифрован";
|
||||
| И НЕ Файлы.Владелец.Зашифрован"; // @query-part-1
|
||||
Иначе
|
||||
ТекстЗапроса = ТекстЗапроса + "
|
||||
| И НЕ Файлы.Зашифрован";
|
||||
| И НЕ Файлы.Зашифрован"; // @query-part-1
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
СтрокаЗамены = ?(ПолучитьВсеФайлы,
|
||||
"ВЫБРАТЬ",
|
||||
"ВЫБРАТЬ ПЕРВЫЕ " + Формат(ЧислоФайловВВыборке, "ЧГ=; ЧН=")); // @query-part-1
|
||||
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВЫБРАТЬ ПЕРВЫЕ 1", СтрокаЗамены);// @query-part
|
||||
|
||||
СтрокаЗамены = ?(ПолучитьВсеФайлы, "ВЫБРАТЬ", // @query-part
|
||||
"ВЫБРАТЬ ПЕРВЫЕ " + Формат(ЧислоФайловВВыборке, "ЧГ=; ЧН=")); // @query-part
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВЫБРАТЬ ПЕРВЫЕ 1", СтрокаЗамены); // @query-part
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяСправочника", "Справочник." + ИмяСправочника);
|
||||
|
||||
Возврат ТекстЗапроса;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -738,14 +738,10 @@
|
||||
ЭлементБлокировки.УстановитьЗначение("Ссылка", СсылкаНаВерсию);
|
||||
|
||||
Расширение = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(СведенияОФайле.РасширениеБезТочки);
|
||||
ТипХраненияФайлов = РаботаСФайламиСлужебный.ТипХраненияФайлов(Расширение, СведенияОФайле.Размер);
|
||||
|
||||
МенеджерФайла = РаботаСФайламиСлужебный.МенеджерФайловПоТипу(ТипХраненияФайлов);
|
||||
Контекст = РаботаСФайламиСлужебный.КонтекстОбновленияФайла(
|
||||
СсылкаНаВерсию,
|
||||
СведенияОФайле.АдресВременногоХранилищаФайла,
|
||||
,
|
||||
ТипХраненияФайлов);
|
||||
ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайла(Расширение, СведенияОФайле.Размер);
|
||||
МенеджерФайла = РаботаСФайламиСлужебный.МенеджерФайловПоТипу(ТипХраненияФайла);
|
||||
Контекст = РаботаСФайламиСлужебный.КонтекстОбновленияФайла(СсылкаНаВерсию,
|
||||
СведенияОФайле.АдресВременногоХранилищаФайла, , ТипХраненияФайла);
|
||||
МенеджерФайла.ПередОбновлениемДанныхФайла(Контекст);
|
||||
|
||||
НачатьТранзакцию();
|
||||
@@ -756,7 +752,7 @@
|
||||
Версия = СсылкаНаВерсию.ПолучитьОбъект();
|
||||
ЗаблокироватьДанныеДляРедактирования(СсылкаНаВерсию, , УникальныйИдентификаторФормы);
|
||||
|
||||
Версия.ТипХраненияФайла = ТипХраненияФайлов;
|
||||
Версия.ТипХраненияФайла = ТипХраненияФайла;
|
||||
Если Версия.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
|
||||
СвойстваВерсии = РаботаСФайламиВТомахСлужебный.СвойстваФайлаВТоме();
|
||||
ЗаполнитьЗначенияСвойств(СвойстваВерсии, Версия);
|
||||
@@ -777,7 +773,7 @@
|
||||
ДвоичныеДанные = РаботаСФайламиСлужебный.ДвоичныеДанныеИзСведенийОФайле(СведенияОФайле);
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипХраненияФайлов = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
|
||||
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
|
||||
|
||||
ХранилищеФайла = Новый ХранилищеЗначения(ДвоичныеДанные);
|
||||
|
||||
@@ -826,7 +822,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
Если Версия.Размер = 0 Тогда
|
||||
Если ТипХраненияФайлов = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
|
||||
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
|
||||
ДвоичныеДанныеФайла = ХранилищеФайла.Получить(); // ДвоичныеДанные
|
||||
Версия.Размер = ДвоичныеДанныеФайла.Размер();
|
||||
КонецЕсли;
|
||||
@@ -1021,7 +1017,7 @@
|
||||
ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(ИсходныйФайл);
|
||||
ДвоичныеДанныеВХранилищеЗначения = Новый ХранилищеЗначения(ДвоичныеДанные);
|
||||
|
||||
ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайлов();
|
||||
ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайла(НовыйФайл.Размер, НовыйФайл.Расширение);
|
||||
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
|
||||
НовыйФайл.ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайлов();
|
||||
ЗаписатьФайлВИнформационнуюБазу(КопияФайлаСсылка, ДвоичныеДанныеВХранилищеЗначения);
|
||||
@@ -1246,9 +1242,10 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура:
|
||||
// * ДанныеПолучены - Булево - успешно ли выполнена операция получения данных;
|
||||
// * ДанныеФайла - Структура - структура с данными файла.
|
||||
// * ДанныеПолучены - Булево - Истина, если операция успешна.
|
||||
// * ДанныеФайла - Структура
|
||||
// * ТекстСообщения - Строка - описание причины в случае неуспеха, например, "Файл занят другим пользователем".
|
||||
// * ФайлУжеРедактируетТекущийПользователь - Булево - Истина, если файл уже открыт на редактирование ранее.
|
||||
///
|
||||
Функция ЗанятьФайлДляРедактирования(ФайлСсылка, УникальныйИдентификатор = Неопределено,
|
||||
РабочийКаталогВладельца = Неопределено, ВерсияСсылка = Неопределено) Экспорт
|
||||
@@ -1257,12 +1254,14 @@
|
||||
Результат.Вставить("ДанныеПолучены", Ложь);
|
||||
Результат.Вставить("ДанныеФайла", Неопределено);
|
||||
Результат.Вставить("ТекстСообщения", "");
|
||||
Результат.Вставить("ФайлУжеРедактируетТекущийПользователь", Ложь);
|
||||
|
||||
Результат.ДанныеФайла = ДанныеФайлаДляОткрытия(ФайлСсылка, ВерсияСсылка, УникальныйИдентификатор, РабочийКаталогВладельца);
|
||||
Если Не РаботаСФайламиКлиентСервер.МожноЛиЗанятьФайл(Результат.ДанныеФайла, Результат.ТекстСообщения) Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Результат.ФайлУжеРедактируетТекущийПользователь = Результат.ДанныеФайла.ФайлРедактируетТекущийПользователь;
|
||||
Если Не ЗначениеЗаполнено(Результат.ДанныеФайла.Редактирует)
|
||||
И Не ЗанятьФайл(Результат.ДанныеФайла, Результат.ТекстСообщения, УникальныйИдентификатор) Тогда
|
||||
Возврат Результат;
|
||||
|
||||
@@ -1174,16 +1174,12 @@
|
||||
|
||||
Параметры.Вставить("ДатаИзмененияУниверсальнаяВХранилищеФайлов",
|
||||
ДанныеФайла.ДатаМодификацииУниверсальная);
|
||||
|
||||
Параметры.Вставить("ДатаИзмененияУниверсальнаяВРабочемКаталоге",
|
||||
Файл.ПолучитьУниверсальноеВремяИзменения());
|
||||
|
||||
Параметры.Вставить("ДатаИзмененияВРабочемКаталоге",
|
||||
МестноеВремя(Параметры.ДатаИзмененияУниверсальнаяВРабочемКаталоге));
|
||||
|
||||
Параметры.Вставить("ДатаИзмененияВХранилищеФайлов",
|
||||
МестноеВремя(Параметры.ДатаИзмененияУниверсальнаяВХранилищеФайлов));
|
||||
|
||||
Параметры.Вставить("РазмерВРабочемКаталоге", Файл.Размер());
|
||||
Параметры.Вставить("РазмерВХранилищеФайлов", ДанныеФайла.Размер);
|
||||
|
||||
@@ -1209,7 +1205,6 @@
|
||||
|Взять файл из программы и заменить им существующий на компьютере или
|
||||
|открыть существующий без обновления?'"));
|
||||
Иначе
|
||||
// Все совпадает - и дата, и размер.
|
||||
ВернутьРезультат(ОбработчикРезультата, "ОткрытьСуществующий");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
@@ -1217,12 +1212,8 @@
|
||||
ИначеЕсли Параметры.ДатаИзмененияУниверсальнаяВРабочемКаталоге
|
||||
< Параметры.ДатаИзмененияУниверсальнаяВХранилищеФайлов Тогда
|
||||
// В хранилище файлов более новый файл.
|
||||
|
||||
Если ДанныеФайла.ВРабочемКаталогеНаЧтение = Ложь Тогда
|
||||
// Файл в рабочем каталоге для редактирования.
|
||||
|
||||
Параметры.Вставить("Заголовок", НСтр("ru = 'В программе более новая версия файла'"));
|
||||
|
||||
Параметры.Вставить("Сообщение",
|
||||
НСтр("ru = 'Файл в программе, отмеченный как занятый для редактирования,
|
||||
|имеет более позднюю дату изменения (новее), чем его копия в рабочем каталоге на компьютере.
|
||||
@@ -1230,9 +1221,6 @@
|
||||
|Взять файл из программы и заменить им существующий на компьютере или
|
||||
|открыть существующий?'"));
|
||||
Иначе
|
||||
// Файл в рабочем каталоге для чтения.
|
||||
|
||||
// Обновление из хранилища файлов без вопросов.
|
||||
ВернутьРезультат(ОбработчикРезультата, "ВзятьИзХранилищаИОткрыть");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
@@ -1249,9 +1237,7 @@
|
||||
Возврат;
|
||||
Иначе
|
||||
// Файл в рабочем каталоге для чтения.
|
||||
|
||||
Параметры.Вставить("Заголовок", НСтр("ru = 'На компьютере более новая копия файла'"));
|
||||
|
||||
Параметры.Вставить(
|
||||
"Сообщение",
|
||||
НСтр("ru = 'Копия файла в рабочем каталоге на компьютере имеет более позднюю дату изменения (новее), чем в программе. Возможно, эта копия была отредактирована.
|
||||
@@ -1261,7 +1247,6 @@
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
// ВыборДействияПриОбнаруженииОтличийФайла
|
||||
ОткрытьФорму("ОбщаяФорма.ВыборДействияПриОбнаруженииОтличийФайла", Параметры, , , , , ОбработчикРезультата, РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -1459,6 +1444,10 @@
|
||||
ДанныеСтроки.Вставить("ДатаПодписи", СтрокаПодписи.ДатаПодписи);
|
||||
ДанныеСтроки.Вставить("ОписаниеОшибки", СтрокаПодписи.ОписаниеОшибки);
|
||||
ДанныеСтроки.Вставить("ДатаПроверкиПодписи", СтрокаПодписи.ДатаПроверкиПодписи);
|
||||
ДанныеСтроки.Вставить("ТипПодписи", СтрокаПодписи.ТипПодписи);
|
||||
ДанныеСтроки.Вставить("СрокДействияПоследнейМеткиВремени",
|
||||
СтрокаПодписи.СрокДействияПоследнейМеткиВремени);
|
||||
|
||||
ДанныеСтрок.Добавить(ДанныеСтроки);
|
||||
КонецЦикла;
|
||||
|
||||
@@ -2041,41 +2030,34 @@
|
||||
ПараметрыВыполнения.ФайлНовойВерсии.УстановитьТолькоЧтение(Не ТолькоЧтение);
|
||||
ПараметрыВыполнения.ФайлНовойВерсии.УстановитьТолькоЧтение(ТолькоЧтение);
|
||||
Исключение
|
||||
ТекстОшибки = НСтр("ru = 'Не удалось поместить файл ""%1"" в рабочий каталог на компьютер,
|
||||
|так как возможно он заблокирован другой программой.'");
|
||||
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%1", Строка(ДанныеФайла.Ссылка));
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не удалось поместить файл ""%1"" в рабочий каталог на компьютер,
|
||||
|так как возможно он заблокирован другой программой.'"),
|
||||
Строка(ДанныеФайла.Ссылка));
|
||||
ВызватьИсключение ТекстОшибки + Символы.ПС + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
// Запрос комментария и признака хранения версии.
|
||||
Если ПараметрыВыполнения.СоздатьНовуюВерсию = Неопределено Тогда
|
||||
|
||||
ПараметрыВыполнения.СоздатьНовуюВерсию = Истина;
|
||||
СоздатьНовуюВерсиюДоступность = Истина;
|
||||
|
||||
ПараметрыВыполнения.СоздатьНовуюВерсию = ДанныеФайла.ХранитьВерсии;
|
||||
Если ДанныеФайла.ХранитьВерсии Тогда
|
||||
ПараметрыВыполнения.СоздатьНовуюВерсию = Истина;
|
||||
|
||||
// Если автор текущей версии не текущий пользователь, тогда
|
||||
// отключается доступность флажка «Не создавать новую версию».
|
||||
Если ДанныеФайла.АвторТекущейВерсии <> ДанныеФайла.Редактирует Тогда
|
||||
СоздатьНовуюВерсиюДоступность = Ложь;
|
||||
Иначе
|
||||
СоздатьНовуюВерсиюДоступность = Истина;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
ПараметрыВыполнения.СоздатьНовуюВерсию = Ложь;
|
||||
СоздатьНовуюВерсиюДоступность = Ложь;
|
||||
КонецЕсли;
|
||||
// отключается доступность флажка "Не создавать новую версию".
|
||||
СоздатьНовуюВерсиюДоступность = ДанныеФайла.АвторТекущейВерсии = ДанныеФайла.Редактирует;
|
||||
|
||||
СтруктураПараметров = Новый Структура;
|
||||
СтруктураПараметров.Вставить("ФайлСсылка", ДанныеФайла.Ссылка);
|
||||
СтруктураПараметров.Вставить("КомментарийКВерсии", "");
|
||||
СтруктураПараметров.Вставить("СоздатьНовуюВерсию", ПараметрыВыполнения.СоздатьНовуюВерсию);
|
||||
СтруктураПараметров.Вставить("СоздатьНовуюВерсиюДоступность", СоздатьНовуюВерсиюДоступность);
|
||||
ВозвратФайла = Новый Структура;
|
||||
ВозвратФайла.Вставить("ФайлСсылка", ДанныеФайла.Ссылка);
|
||||
ВозвратФайла.Вставить("КомментарийКВерсии", "");
|
||||
ВозвратФайла.Вставить("СоздатьНовуюВерсию", ПараметрыВыполнения.СоздатьНовуюВерсию);
|
||||
ВозвратФайла.Вставить("СоздатьНовуюВерсиюДоступность", СоздатьНовуюВерсиюДоступность);
|
||||
|
||||
Обработчик = Новый ОписаниеОповещения("ЗакончитьРедактированиеСРасширениемПослеПомещенияФайлаНаСервер", ЭтотОбъект, ПараметрыВыполнения);
|
||||
ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ФормаВозвратаФайла", СтруктураПараметров, , , , , Обработчик);
|
||||
ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ФормаВозвратаФайла", ВозвратФайла, , , , , Обработчик);
|
||||
|
||||
Иначе
|
||||
ЗакончитьРедактированиеСРасширениемПослеПроверкиНовойВерсии(ПараметрыВыполнения);
|
||||
КонецЕсли;
|
||||
|
||||
Иначе // Параметры СоздатьНовуюВерсию и КомментарийКВерсии переданы извне.
|
||||
|
||||
@@ -2850,85 +2832,67 @@
|
||||
//
|
||||
Процедура ОбновитьИзФайлаНаДискеПродолжение(ПараметрыВыполнения)
|
||||
|
||||
// Данные файла могли измениться - обновим.
|
||||
ПараметрыВыполнения.ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаИРабочийКаталог(ПараметрыВыполнения.ДанныеФайла.Ссылка);
|
||||
|
||||
ПредыдущаяВерсия = ПараметрыВыполнения.ДанныеФайла.Версия;
|
||||
|
||||
ИмяИРасширениеФайлаВБазе = ОбщегоНазначенияКлиентСервер.ПолучитьИмяСРасширением(
|
||||
ПараметрыВыполнения.ДанныеФайла.ПолноеНаименованиеВерсии, ПараметрыВыполнения.ДанныеФайла.Расширение);
|
||||
|
||||
ПараметрыВыполнения.Вставить("ДатаФайлаВБазе", ПараметрыВыполнения.ДанныеФайла.ДатаМодификацииУниверсальная);
|
||||
|
||||
Если ПараметрыВыполнения.ВремяИзмененияВыбранное < ПараметрыВыполнения.ДатаФайлаВБазе Тогда // В хранилище более новый.
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Файл ""%1""
|
||||
|на диске на компьютере имеет более позднюю дату изменения (%2),
|
||||
|чем выбранный файл (%3).
|
||||
#Если МобильныйКлиент Тогда
|
||||
ШаблонТекстаВопроса = НСтр("ru = 'Загружаемый файл с устройства ""%1""
|
||||
|имеет более раннюю дату изменения, чем файл в программе:
|
||||
|
|
||||
|Операция прервана.'"),
|
||||
|%2 изменен загружаемый файл;
|
||||
|%3 изменен файл в программе.
|
||||
|
|
||||
|Заменить файл более старой версией с устройства?'");
|
||||
#Иначе
|
||||
ШаблонТекстаВопроса = НСтр("ru = 'Загружаемый файл с компьютера ""%1""
|
||||
|имеет более раннюю дату изменения, чем файл в программе:
|
||||
|
|
||||
|%2 изменен загружаемый файл;
|
||||
|%3 изменен файл в программе.
|
||||
|
|
||||
|Заменить файл более старой версией с компьютера?'");
|
||||
#КонецЕсли
|
||||
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстаВопроса,
|
||||
Строка(ПараметрыВыполнения.ДанныеФайла.Ссылка),
|
||||
МестноеВремя(ПараметрыВыполнения.ДатаФайлаВБазе),
|
||||
МестноеВремя(ПараметрыВыполнения.ВремяИзмененияВыбранное));
|
||||
МестноеВремя(ПараметрыВыполнения.ВремяИзмененияВыбранное),
|
||||
МестноеВремя(ПараметрыВыполнения.ДатаФайлаВБазе));
|
||||
|
||||
ВернутьРезультатПослеПоказаПредупреждения(ПараметрыВыполнения.ОбработчикРезультата, ТекстОшибки, Ложь);
|
||||
ОписаниеОповещения = Новый ОписаниеОповещения("ОбновитьИзФайлаНаДискеСтараяВерсия", ЭтотОбъект, ПараметрыВыполнения);
|
||||
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
// Проверка наличия файла в рабочем каталоге.
|
||||
// Проверка редактирования копии файла в рабочем каталоге.
|
||||
ВРабочемКаталогеНаЧтение = Истина;
|
||||
ВРабочемКаталогеВладельца = Ложь;
|
||||
ПолноеИмяФайла = "";
|
||||
ФайлВРабочемКаталоге = ФайлНаходитсяВЛокальномКэшеФайлов(
|
||||
Неопределено,
|
||||
ПредыдущаяВерсия,
|
||||
ПолноеИмяФайла,
|
||||
ВРабочемКаталогеНаЧтение,
|
||||
ВРабочемКаталогеВладельца);
|
||||
ФайлВРабочемКаталоге = ФайлНаходитсяВЛокальномКэшеФайлов(Неопределено, ПредыдущаяВерсия,
|
||||
ПолноеИмяФайла, ВРабочемКаталогеНаЧтение, ВРабочемКаталогеВладельца);
|
||||
|
||||
Если ПараметрыВыполнения.ДанныеФайла.ФайлРедактируетТекущийПользователь Тогда // Файл уже был занят.
|
||||
|
||||
Если ФайлВРабочемКаталоге = Истина Тогда
|
||||
ФайлВКэше = Новый Файл(ПолноеИмяФайла);
|
||||
ВремяИзмененияВКэше = ФайлВКэше.ПолучитьУниверсальноеВремяИзменения();
|
||||
|
||||
Если ПараметрыВыполнения.ВремяИзмененияВыбранное < ВремяИзмененияВКэше Тогда // В рабочем каталоге более новый.
|
||||
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Файл ""%1""
|
||||
|в рабочем каталоге имеет более позднюю дату изменения (%2),
|
||||
|чем выбранный файл (%3).
|
||||
|
|
||||
|Операция прервана.'"),
|
||||
Строка(ПараметрыВыполнения.ДанныеФайла.Ссылка),
|
||||
МестноеВремя(ВремяИзмененияВКэше),
|
||||
МестноеВремя(ПараметрыВыполнения.ВремяИзмененияВыбранное));
|
||||
|
||||
ВернутьРезультатПослеПоказаПредупреждения(ПараметрыВыполнения.ОбработчикРезультата, ТекстОшибки, Ложь);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
#Если Не ВебКлиент И НЕ МобильныйКлиент Тогда
|
||||
#Если Не ВебКлиент И НЕ МобильныйКлиент Тогда
|
||||
Если ПараметрыВыполнения.ДанныеФайла.ФайлРедактируетТекущийПользователь И ФайлВРабочемКаталоге Тогда
|
||||
// Проверка, что файл не занят приложением.
|
||||
Попытка
|
||||
ТекстовыйДокумент = Новый ТекстовыйДокумент;
|
||||
ТекстовыйДокумент.Прочитать(ПолноеИмяФайла);
|
||||
ВыбранныйФайл = Новый Файл(ПолноеИмяФайла);
|
||||
ТолькоЧтение = ВыбранныйФайл.ПолучитьТолькоЧтение();
|
||||
ВыбранныйФайл.УстановитьТолькоЧтение(Не ТолькоЧтение);
|
||||
ВыбранныйФайл.УстановитьТолькоЧтение(ТолькоЧтение);
|
||||
Исключение
|
||||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Файл ""%1""
|
||||
|в рабочем каталоге открыт для редактирования.
|
||||
|
|
||||
|Сначала необходимо закончить редактирование, а затем повторите действие.'"),
|
||||
НСтр("ru = 'Файл ""%1"" открыт для редактирования.
|
||||
|Сначала необходимо закончить редактирование, а затем повторить действие.'"),
|
||||
ПолноеИмяФайла);
|
||||
ВернутьРезультатПослеПоказаПредупреждения(ПараметрыВыполнения.ОбработчикРезультата, ТекстОшибки, Неопределено);
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
#КонецЕсли
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
Если ФайлВРабочемКаталоге И ПараметрыВыполнения.ИмяИРасширениеФайлаНаДиске <> ИмяИРасширениеФайлаВБазе Тогда
|
||||
Обработчик = Новый ОписаниеОповещения("ОбновитьИзФайлаНаДискеПослеУдаленияФайлаИзРабочегоКаталога", ЭтотОбъект, ПараметрыВыполнения);
|
||||
@@ -2940,6 +2904,24 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры (см. выше).
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыВыполнения - Структура:
|
||||
// * ДанныеФайла - см. РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаИРабочийКаталог
|
||||
//
|
||||
Процедура ОбновитьИзФайлаНаДискеСтараяВерсия(Результат, ПараметрыВыполнения) Экспорт
|
||||
|
||||
Если Результат <> КодВозвратаДиалога.Да Тогда
|
||||
ВернутьРезультат(ПараметрыВыполнения.ОбработчикРезультата, Ложь);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыВыполнения.ВремяИзмененияВыбранное = ПараметрыВыполнения.ДатаФайлаВБазе;
|
||||
ОбновитьИзФайлаНаДискеПродолжение(ПараметрыВыполнения);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры (см. выше).
|
||||
//
|
||||
// Параметры:
|
||||
@@ -2956,7 +2938,6 @@
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыВыполнения.Вставить("ФайлРедактируетТекущийПользователь", ПараметрыВыполнения.ДанныеФайла.ФайлРедактируетТекущийПользователь);
|
||||
|
||||
Если Не ПараметрыВыполнения.ДанныеФайла.ФайлРедактируетТекущийПользователь Тогда
|
||||
|
||||
ТекстОшибки = "";
|
||||
@@ -3204,18 +3185,13 @@
|
||||
|
||||
ПараметрыВыполнения.Вставить("ДанныеФайла", Неопределено);
|
||||
ПараметрыВыполнения.Вставить("РасширениеПодключено", РасширениеРаботыСФайламиПодключено());
|
||||
ПараметрыВыполнения.Вставить("ФайлУжеРедактируетТекущийПользователь", Ложь);
|
||||
|
||||
Результат = РаботаСФайламиСлужебныйВызовСервера.ЗанятьФайлДляРедактирования(ПараметрыВыполнения.ОбъектСсылка,
|
||||
ПараметрыВыполнения.УникальныйИдентификатор, ПараметрыВыполнения.РабочийКаталогВладельца);
|
||||
|
||||
ПараметрыВыполнения.ДанныеФайла = Результат.ДанныеФайла;
|
||||
ПараметрыВыполнения.Вставить("ФайлУжеРедактируетТекущийПользователь",
|
||||
Результат.ДанныеФайла.ФайлРедактируетТекущийПользователь);
|
||||
|
||||
Если Не ПараметрыВыполнения.ФайлУжеРедактируетТекущийПользователь Тогда
|
||||
ИзменитьКоличествоЗанятыхФайлов(1);
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыВыполнения.ФайлУжеРедактируетТекущийПользователь = Результат.ФайлУжеРедактируетТекущийПользователь;
|
||||
Если Не Результат.ДанныеПолучены Тогда
|
||||
СтандартнаяОбработка = Истина;
|
||||
РаботаСФайламиКлиентПереопределяемый.ПриОшибкеЗахватаФайла(ПараметрыВыполнения.ДанныеФайла, СтандартнаяОбработка);
|
||||
@@ -3231,6 +3207,10 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ПараметрыВыполнения.ФайлУжеРедактируетТекущийПользователь Тогда
|
||||
ИзменитьКоличествоЗанятыхФайлов(1);
|
||||
КонецЕсли;
|
||||
|
||||
Если ПараметрыВыполнения.РасширениеПодключено Тогда
|
||||
НаЧтение = Ложь;
|
||||
ВРабочемКаталогеВладельца = ПараметрыВыполнения.ДанныеФайла.РабочийКаталогВладельца <> "";
|
||||
@@ -9397,17 +9377,16 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Находится ли в рабочем каталоге Файл для данной версии.
|
||||
// Параметры:
|
||||
// ДанныеФайла - Структура
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - файл находится в рабочем каталоге.
|
||||
// ДанныеФайла - Структура, Неопределено
|
||||
// ТекущаяВерсия - СправочникСсылка.ВерсииФайлов - версия файла.
|
||||
// ПолноеИмяФайла - Строка - имя файла с путем.
|
||||
// ВРабочемКаталогеНаЧтение - Булево - файл помещен на чтение.
|
||||
// ВРабочемКаталогеВладельца - Булево - файл в рабочем каталоге владельца (а не в основном рабочем каталоге).
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево
|
||||
//
|
||||
Функция ФайлНаходитсяВЛокальномКэшеФайлов(ДанныеФайла, ТекущаяВерсия, ПолноеИмяФайла, ВРабочемКаталогеНаЧтение, ВРабочемКаталогеВладельца)
|
||||
ПолноеИмяФайла = "";
|
||||
|
||||
@@ -9418,18 +9397,15 @@
|
||||
Иначе
|
||||
ВРабочемКаталогеНаЧтение = Истина;
|
||||
ИмяКаталога = РабочийКаталогПользователя();
|
||||
// Пытаемся найти такую запись в регистре сведений.
|
||||
ПолноеИмяФайла = РаботаСФайламиСлужебныйВызовСервера.ПолучитьПолноеИмяФайлаИзРегистра(ТекущаяВерсия, ИмяКаталога, ВРабочемКаталогеНаЧтение, ВРабочемКаталогеВладельца);
|
||||
КонецЕсли;
|
||||
|
||||
Если ПолноеИмяФайла <> "" Тогда
|
||||
// Тут надо еще на наличие на диске проверять.
|
||||
ФайлНаДиске = Новый Файл(ПолноеИмяФайла);
|
||||
Если ФайлНаДиске.Существует() Тогда
|
||||
Возврат Истина;
|
||||
Иначе
|
||||
ПолноеИмяФайла = "";
|
||||
// Тут же удалим из регистра - т.к. в регистре есть, а на диске нет.
|
||||
РаботаСФайламиСлужебныйВызовСервера.УдалитьИзРегистра(ТекущаяВерсия);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
@@ -9908,6 +9884,7 @@
|
||||
ПомещаемыеФайлы = Новый Массив;
|
||||
ПомещаемыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ПутьКФайлу1));
|
||||
ПомещаемыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ПутьКФайлу2));
|
||||
|
||||
ПомещенныеФайлы = Новый Массив;
|
||||
Если Не ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь) Тогда
|
||||
Возврат;
|
||||
|
||||
@@ -1022,6 +1022,17 @@
|
||||
Идентификатор = УточненныйИдентификаторЗадания(Идентификатор);
|
||||
ИдентификаторЗадания = УникальныйИдентификаторЗадания(Идентификатор);
|
||||
|
||||
Если ИдентификаторЗадания = Неопределено Тогда
|
||||
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Регламентное задание по переданному идентификатору не найдено.
|
||||
|
|
||||
|Если регламентное задание не предопределенное, то его необходимо сначала добавить
|
||||
|в список заданий при помощи метода %1.'"),
|
||||
"РегламентныеЗаданияСервер.ДобавитьЗадание");
|
||||
|
||||
ВызватьИсключение ТекстИсключения;
|
||||
КонецЕсли;
|
||||
|
||||
Блокировка = Новый БлокировкаДанных;
|
||||
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.КэшПрограммныхИнтерфейсов");
|
||||
ЭлементБлокировки.УстановитьЗначение("Идентификатор", Строка(ИдентификаторЗадания));
|
||||
|
||||
@@ -3808,6 +3808,128 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет заполнение значения СлужебнаяУчетнаяЗаписьDSS.
|
||||
// Формирует структуру необходимую для подключения к серверу DSS.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. СервисКриптографииDSSКлиентСервер.ОтветСервисаПоУмолчанию
|
||||
//
|
||||
Функция НастройкиПодключенияСлужебнойУчетнойЗаписи() Экспорт
|
||||
|
||||
ТекстОшибки = "";
|
||||
НастройкиСервера = ПолучитьОписаниеСервисаDSS();
|
||||
НастройкиСервера.Вставить("Логин", "");
|
||||
НастройкиСервера.Вставить("Пароль", "");
|
||||
|
||||
ИмяНастроек = СервисКриптографииDSSСлужебный.ИмяНастроекСлужебнойУчетнойЗаписи();
|
||||
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
|
||||
СодержимоеНастроек = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ИмяНастроек, "Настройки", Истина);
|
||||
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
|
||||
Если ТипЗнч(СодержимоеНастроек) = Тип("Строка") Тогда
|
||||
Попытка
|
||||
СодержимоеНастроек = СервисКриптографииDSSСлужебный.JsonВСтруктуру(СодержимоеНастроек);
|
||||
Исключение
|
||||
СодержимоеНастроек = Неопределено;
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(СодержимоеНастроек) <> Тип("Структура") Тогда
|
||||
ТекстОшибки = НСтр("ru = 'Не установлены настройки служебной учетной записи'");
|
||||
Иначе
|
||||
ЗаполнитьЗначенияСвойств(НастройкиСервера, СодержимоеНастроек);
|
||||
Если НЕ (ЗначениеЗаполнено(НастройкиСервера.Ссылка)
|
||||
ИЛИ (ЗначениеЗаполнено(НастройкиСервера.АдресСервера)
|
||||
И ЗначениеЗаполнено(НастройкиСервера.СервисИдентификации)
|
||||
И ЗначениеЗаполнено(НастройкиСервера.СервисПодписи)
|
||||
И ЗначениеЗаполнено(НастройкиСервера.СервисПроверки))) Тогда
|
||||
ТекстОшибки = НСтр("ru = 'Не заданы необходимые настройки подключения'");
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(НастройкиСервера.Логин) Тогда
|
||||
ТекстОшибки = НСтр("ru = 'Не задан логин служебной учетной записи'");
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
|
||||
Результат = СервисКриптографииDSSКлиентСервер.ОтветСервисаПоУмолчанию(Ложь);
|
||||
СервисКриптографииDSSСлужебный.ПолучитьОписаниеОшибки(Результат, "ОшибкаВыполнения", ТекстОшибки);
|
||||
Иначе
|
||||
НастройкиПользователя = НастройкиПроизвольногоПодключения(НастройкиСервера,
|
||||
НастройкиСервера.Логин,
|
||||
НастройкиСервера.Пароль);
|
||||
Результат = СервисКриптографииDSSКлиентСервер.ОтветСервисаПоУмолчанию(Истина);
|
||||
Результат.Вставить("Результат", НастройкиПользователя);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Формирует структуру необходимую для подключения к серверу DSS.
|
||||
// Необходим в случае использования служебных учетных записей.
|
||||
//
|
||||
// Параметры:
|
||||
// НастройкиСервера - Структура
|
||||
// ЛогинУчетнойЗаписи - Строка
|
||||
// ПарольУчетнойЗаписи - Строка
|
||||
// СпособАвторизации - Неопределено
|
||||
// - ПеречисленияСсылка.СпособыАвторизацииDSS
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. НастройкиПользователяПоУмолчанию
|
||||
//
|
||||
Функция НастройкиПроизвольногоПодключения(НастройкиСервера, ЛогинУчетнойЗаписи, ПарольУчетнойЗаписи = "", СпособАвторизации = Неопределено) Экспорт
|
||||
|
||||
НастройкиПользователя = Неопределено;
|
||||
|
||||
СервисКриптографииDSSПодтверждениеСервер.ДополнитьНастройкиПользователя(НастройкиПользователя, НастройкиСервера, ЛогинУчетнойЗаписи);
|
||||
НастройкиПользователя.Пароль = СервисКриптографииDSSКлиентСервер.ОбъектПароля(ПарольУчетнойЗаписи);
|
||||
Если ЗначениеЗаполнено(СпособАвторизации) Тогда
|
||||
НастройкиПользователя.ПервичнаяАутентификация = СпособАвторизации;
|
||||
Иначе
|
||||
НастройкиПользователя.ПервичнаяАутентификация = Перечисления.СпособыАвторизацииDSS.Первичный_УчетныеДанные;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат НастройкиПользователя;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Формирует шаблон для заполнения информации о сервере DSS
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура
|
||||
//
|
||||
Функция ПолучитьОписаниеСервисаDSS() Экспорт
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("Ссылка", Новый(СервисКриптографииDSSКлиентСервер.ПолучитьТипСервераОблачнойПодписи()));
|
||||
Результат.Вставить("Наименование", "");
|
||||
Результат.Вставить("АдресСервера", "");
|
||||
Результат.Вставить("АдресЛичногоКабинета", "");
|
||||
Результат.Вставить("СервисИдентификации", "");
|
||||
Результат.Вставить("СервисПодписи", "");
|
||||
Результат.Вставить("СервисПроверки", "");
|
||||
Результат.Вставить("СервисОбработкиДокументов", "");
|
||||
Результат.Вставить("СервисАудита", "");
|
||||
Результат.Вставить("ВнутреннийИдентификатор", "");
|
||||
Результат.Вставить("ИдентификаторЦИ", "");
|
||||
Результат.Вставить("ИдентификаторСЭП", "");
|
||||
Результат.Вставить("ШаблонПодтверждения", "");
|
||||
Результат.Вставить("ТаймАут", 120);
|
||||
Результат.Вставить("ВерсияАПИ", "");
|
||||
Результат.Вставить("Комментарий", "");
|
||||
Результат.Вставить("Используется", Истина);
|
||||
Результат.Вставить("ОграничениеАвторизации", "");
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ПоддержкаВнешнегоСоединения
|
||||
|
||||
@@ -48,13 +48,16 @@
|
||||
Процедура ПриЗаполненииТаблицыПараметровИБ(Знач ТаблицаПараметров) Экспорт
|
||||
|
||||
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
|
||||
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
|
||||
МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "ИспользоватьСервисDSS");
|
||||
|
||||
СтрокаПараметра = ТаблицаПараметров.Добавить();
|
||||
СтрокаПараметра.Имя = "СерверОблачнойПодписи";
|
||||
СтрокаПараметра.Описание = НСтр("ru = 'Сервер облачной подписи'", КодЯзыка());
|
||||
СтрокаПараметра.Тип = Новый ОписаниеТипов("Строка");
|
||||
|
||||
СтрокаПараметра = ТаблицаПараметров.Добавить();
|
||||
СтрокаПараметра.Имя = "СлужебнаяУчетнаяЗаписьDSS";
|
||||
СтрокаПараметра.Описание = НСтр("ru = 'Служебная учетная запись DSS'", КодЯзыка());
|
||||
СтрокаПараметра.Тип = Новый ОписаниеТипов("Строка");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -72,6 +75,13 @@
|
||||
НастройкиСервиса = РазобратьФайлНастроекСервера(ЗначенияПараметров.СерверОблачнойПодписи);
|
||||
СоздатьСерверОблачнойПодписи(НастройкиСервиса);
|
||||
ЗначенияПараметров.Удалить("СерверОблачнойПодписи");
|
||||
ИначеЕсли ЗначенияПараметров.Свойство("СлужебнаяУчетнаяЗаписьDSS") Тогда
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(
|
||||
ИмяНастроекСлужебнойУчетнойЗаписи(),
|
||||
ЗначенияПараметров.СлужебнаяУчетнаяЗаписьDSS, "Настройки");
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
ЗначенияПараметров.Удалить("СлужебнаяУчетнаяЗаписьDSS");
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -107,7 +117,7 @@
|
||||
|
||||
МассивВерсий = Новый Массив;
|
||||
МассивВерсий.Добавить("1.0.0.1");
|
||||
СтруктураПоддерживаемыхВерсий.Вставить("ОблачнаяПодпись", МассивВерсий);
|
||||
СтруктураПоддерживаемыхВерсий.Вставить("СервисПодписиКриптоПроDSS", МассивВерсий);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -7538,6 +7548,17 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Задает имя для чтения данных о служебной учетной записи из безопасного хранилища
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
//
|
||||
Функция ИмяНастроекСлужебнойУчетнойЗаписи() Экспорт
|
||||
|
||||
Возврат "СервисКриптографииDSS.СлужебнаяУчетнаяЗаписьDSS";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@@ -419,7 +419,11 @@
|
||||
|
||||
ОбъектОповещения = Новый ОписаниеОповещения("АутентификацияДвухФакторнаяПолучениеПароля", ЭтотОбъект);
|
||||
ОповещениеСледующее = ОбработчикОповещения(ОбъектОповещения, ВходящийКонтекст);
|
||||
|
||||
ПояснениеОперации = СвойствоСтруктуры(ВходящийКонтекст.ПараметрыОперации, "ПояснениеОперации", "");
|
||||
Если Не ЗначениеЗаполнено(ПояснениеОперации) Тогда
|
||||
ПояснениеОперации = НСтр("ru = 'Введите пароль для авторизации.'", КодЯзыка());
|
||||
КонецЕсли;
|
||||
ВходящийКонтекст.ПараметрыОперации.Вставить("ПояснениеОперации", ПояснениеОперации);
|
||||
|
||||
ОткрытьФормуВводПароля(
|
||||
|
||||
@@ -2510,6 +2510,8 @@
|
||||
Если ЭтоОбменДаннымиВМоделиСервиса
|
||||
И НовоеЗначение.Ключ = "СтандартныеПодсистемыВАвтономномРежиме" Тогда
|
||||
ПредыдущееЗначение = ОбщегоНазначения.ЭтоАвтономноеРабочееМесто();
|
||||
// Всегда синхронизируем константу СтандартныеПодсистемыВАвтономномРежиме с ЭтоАвтономноеРабочееМесто
|
||||
Константы[НовоеЗначение.Ключ].Установить(НовоеЗначение.Значение);
|
||||
Иначе
|
||||
ПредыдущееЗначение = Константы[НовоеЗначение.Ключ].Получить();
|
||||
КонецЕсли;
|
||||
|
||||
@@ -7629,7 +7629,11 @@
|
||||
|
||||
Если СтароеЗначение.ХешСумма <> НовоеЗначение.ХешСумма Тогда
|
||||
ПроверитьАктуальностьМетаданных();
|
||||
УстановитьОтключениеБезопасногоРежима(Истина);
|
||||
УстановитьПривилегированныйРежим(Истина);
|
||||
СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(ИмяПараметра, НовоеЗначение, Истина);
|
||||
УстановитьПривилегированныйРежим(Ложь);
|
||||
УстановитьОтключениеБезопасногоРежима(Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
Кэш.Проверка.Дата = ТекущаяДатаСеанса;
|
||||
@@ -16357,7 +16361,7 @@
|
||||
|
|
||||
|"); // @query-part-1
|
||||
ЗапросыПакета.Добавить(СтрЗаменить(ОписаниеЗапросов.Получить("ТекстЗапросаОберткиВыбораДанных"),
|
||||
"#ЗапросыВыбораДанных", ТекстСОтступом(ТекстыЗапросов, " ")));
|
||||
"#ЗапросыВыбораДанных", "(" + ТекстСОтступом(ТекстыЗапросов, " ") + ")"));
|
||||
КонецЕсли;
|
||||
ЗапросыПакета.Добавить(ОписаниеЗапросов.Получить("ТекстЗапросаТочечнойПроверки"));
|
||||
Запрос.Текст = СтрСоединить(ЗапросыПакета, ОбщегоНазначения.РазделительПакетаЗапросов());
|
||||
@@ -20584,9 +20588,11 @@
|
||||
РолиПрофилейГруппДоступа.Колонки.Добавить("ИмяРолиВерхнийРегистр", ТипИмениРоли);
|
||||
РолиПрофилейГруппДоступа.Индексы.Добавить("Роль");
|
||||
Отбор = Новый Структура("Роль");
|
||||
ТребуетсяПроверитьАктуальностьМетаданных = Ложь;
|
||||
|
||||
Для Каждого ОписаниеРоли Из ОбъектыМетаданныхРолей Цикл
|
||||
Если ТипЗнч(ОписаниеРоли.Значение) <> Тип("ОбъектМетаданных") Тогда
|
||||
ТребуетсяПроверитьАктуальностьМетаданных = Истина;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
ИмяРоли = ОписаниеРоли.Значение.Имя;
|
||||
@@ -20598,6 +20604,9 @@
|
||||
Строка.ИмяРолиВерхнийРегистр = ИмяРолиВерхнийРегистр;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
Если ТребуетсяПроверитьАктуальностьМетаданных Тогда
|
||||
ПроверитьАктуальностьМетаданных();
|
||||
КонецЕсли;
|
||||
РолиПрофилейГруппДоступа.Индексы.Добавить("Профиль,ИмяРолиВерхнийРегистр");
|
||||
|
||||
ГруппыДоступаПрофилей = РезультатыЗапроса[3].Выгрузить();
|
||||
@@ -21703,6 +21712,7 @@
|
||||
КлючПраваРоли = ОписаниеРоли.ИмяРоли + "/" + ПолноеИмя + "/" + Условие.ИмяПрава;
|
||||
ЕстьПравоВРоли = Контекст.ПраваРолейФункцииПравоДоступа.Получить(КлючПраваРоли);
|
||||
Если ЕстьПравоВРоли = Неопределено Тогда
|
||||
Если ЗначениеЗаполнено(ОписаниеРоли.ИмяРоли) Тогда
|
||||
ПолноеИмяРоли = "Роль." + ОписаниеРоли.ИмяРоли;
|
||||
Роль = Контекст.ОбъектыМетаданныхФункцииПравоДоступа.Получить(ПолноеИмяРоли);
|
||||
Если Роль = Неопределено Тогда
|
||||
@@ -21711,6 +21721,9 @@
|
||||
КонецЕсли;
|
||||
ЕстьПравоВРоли = ПравоДоступа(Условие.ИмяПрава, Описание.ОбъектМетаданных, Роль,
|
||||
Описание.ИмяСтандартногоРеквизита);
|
||||
Иначе
|
||||
ЕстьПравоВРоли = Ложь;
|
||||
КонецЕсли;
|
||||
Контекст.ПраваРолейФункцииПравоДоступа.Вставить(КлючПраваРоли, ЕстьПравоВРоли);
|
||||
КонецЕсли;
|
||||
Если ЕстьПравоВРоли Тогда
|
||||
@@ -31990,7 +32003,7 @@
|
||||
ИначеЕсли Результат.ДляВнешнихПользователей Тогда
|
||||
Если Результат.БезЗаписиКлючейДоступа
|
||||
И Не Результат.БезЗаписиКлючейДоступаДляПользователейИВнешнихПользователей Тогда
|
||||
ТекстЗапроса = // @query-part-1
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 995
|
||||
| КлючиДоступаКОбъектам.Объект КАК ТекущаяСсылка
|
||||
|ИЗ
|
||||
@@ -32002,12 +32015,12 @@
|
||||
| И &УточнениеПланаЗапроса
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| КлючиДоступаКОбъектам.Объект";
|
||||
| КлючиДоступаКОбъектам.Объект"; // @query-part-1
|
||||
Иначе
|
||||
ТекстЗапроса = "";
|
||||
КонецЕсли;
|
||||
ИначеЕсли Результат.БезЗаписиКлючейДоступаДляПользователейИВнешнихПользователей Тогда
|
||||
ТекстЗапроса = // @query-part-1
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 995
|
||||
| КлючиДоступаКОбъектам.Объект КАК ТекущаяСсылка
|
||||
|ИЗ
|
||||
@@ -32018,9 +32031,9 @@
|
||||
| И &УточнениеПланаЗапроса
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| КлючиДоступаКОбъектам.Объект";
|
||||
| КлючиДоступаКОбъектам.Объект"; // @query-part-1
|
||||
Иначе
|
||||
ТекстЗапроса = // @query-part-1
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 995
|
||||
| КлючиДоступаКОбъектам.Объект КАК ТекущаяСсылка,
|
||||
| ТекущийСписок.Ссылка ЕСТЬ NULL КАК Удалить
|
||||
@@ -32032,11 +32045,11 @@
|
||||
|ГДЕ
|
||||
| ТИПЗНАЧЕНИЯ(КлючиДоступаКОбъектам.Объект) = ТИП(&ТекущийСписок)
|
||||
| И ВЫРАЗИТЬ(КлючиДоступаКОбъектам.Объект КАК &ТекущийСписок) > &ПоследняяОбработаннаяСсылка
|
||||
| И #Условие
|
||||
| И &УсловиеЗапроса
|
||||
| И &УточнениеПланаЗапроса
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| КлючиДоступаКОбъектам.Объект";
|
||||
| КлючиДоступаКОбъектам.Объект"; // @query-part-1
|
||||
Если Результат.БезЗаписиКлючейДоступа Тогда
|
||||
Условие =
|
||||
"(КлючиДоступаКОбъектам.КлючДоступаПользователей <> ЗНАЧЕНИЕ(Справочник.КлючиДоступа.ПустаяСсылка)
|
||||
@@ -32044,7 +32057,7 @@
|
||||
Иначе
|
||||
Условие = "ТекущийСписок.Ссылка ЕСТЬ NULL"; // @query-part-1
|
||||
КонецЕсли;
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#Условие", Условие);
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеЗапроса", Условие);
|
||||
КонецЕсли;
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекущийСписок", Результат.Список);
|
||||
Результат.ТекстЗапросаУстаревшихЭлементовДанных = ТекстЗапроса;
|
||||
@@ -32263,7 +32276,7 @@
|
||||
Контекст.Вставить("ТекстЗапросаТочечнойПроверки");
|
||||
|
||||
Если Контекст.СписокСДатой Тогда
|
||||
Контекст.ТекстЗапросаПроверки = // @query-part-1
|
||||
Контекст.ТекстЗапросаПроверки =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 995
|
||||
| ТекущийСписок.Ссылка КАК ТекущаяСсылка,
|
||||
| ТекущийСписок.Дата КАК Дата
|
||||
@@ -32274,13 +32287,13 @@
|
||||
|ГДЕ
|
||||
| ТекущийСписок.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|
||||
| И (КлючиДоступаКОбъектам.Объект ЕСТЬ NULL
|
||||
| ИЛИ #Условие)
|
||||
| ИЛИ &УсловиеЗапроса)
|
||||
| И &УточнениеПланаЗапроса
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ТекущийСписок.Дата УБЫВ";
|
||||
|
||||
Контекст.ТекстЧастиЗапросаПроверки = // @query-part-1
|
||||
Контекст.ТекстЧастиЗапросаПроверки =
|
||||
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 995
|
||||
| ТекущийСписок.Ссылка КАК ТекущаяСсылка,
|
||||
| ТекущийСписок.Дата КАК Дата
|
||||
@@ -32291,13 +32304,13 @@
|
||||
| #Соединения
|
||||
|ГДЕ
|
||||
| ТекущийСписок.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|
||||
| И #Условие
|
||||
| И &УсловиеЗапроса
|
||||
| И &УточнениеПланаЗапроса
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ТекущийСписок.Дата УБЫВ";
|
||||
| ТекущийСписок.Дата УБЫВ"; // @query-part-1
|
||||
Иначе
|
||||
Контекст.ТекстЗапросаПроверки = // @query-part-1
|
||||
Контекст.ТекстЗапросаПроверки =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 995
|
||||
| ТекущийСписок.Ссылка КАК ТекущаяСсылка
|
||||
|ИЗ
|
||||
@@ -32307,11 +32320,11 @@
|
||||
|ГДЕ
|
||||
| ТекущийСписок.Ссылка >= &ПоследняяОбработаннаяСсылка
|
||||
| И (КлючиДоступаКОбъектам.Объект ЕСТЬ NULL
|
||||
| ИЛИ #Условие)
|
||||
| ИЛИ &УсловиеЗапроса)
|
||||
| И &УточнениеПланаЗапроса
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ТекущийСписок.Ссылка";
|
||||
| ТекущийСписок.Ссылка"; // @query-part-1
|
||||
|
||||
Контекст.ТекстЧастиЗапросаПроверки =
|
||||
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 995
|
||||
@@ -32323,7 +32336,7 @@
|
||||
| #Соединения
|
||||
|ГДЕ
|
||||
| ТекущийСписок.Ссылка >= &ПоследняяОбработаннаяСсылка
|
||||
| И #Условие
|
||||
| И &УсловиеЗапроса
|
||||
| И &УточнениеПланаЗапроса
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
@@ -32341,8 +32354,8 @@
|
||||
| ПО (КлючиДоступаКОбъектам.Объект = ТекущийСписок.Ссылка)
|
||||
|ГДЕ
|
||||
| (КлючиДоступаКОбъектам.Объект ЕСТЬ NULL
|
||||
| ИЛИ #Условие)
|
||||
| И &УточнениеПланаЗапроса"; // @query-part-1
|
||||
| ИЛИ &УсловиеЗапроса)
|
||||
| И &УточнениеПланаЗапроса";
|
||||
|
||||
Если Не Контекст.Свойство("ОписаниеЗапросовПроверкиПоВедущимОбъектам") Тогда
|
||||
Возврат;
|
||||
@@ -32353,7 +32366,7 @@
|
||||
| ТекущийСписок.Ссылка КАК Ссылка
|
||||
|ПОМЕСТИТЬ ТекущийСписокПоВедущимОбъектам
|
||||
|ИЗ
|
||||
| (#ЗапросыВыбораДанных) КАК ТекущийСписок"; // @query-part-1
|
||||
| #ЗапросыВыбораДанных КАК ТекущийСписок";
|
||||
|
||||
Контекст.ОписаниеЗапросовПроверкиПоВедущимОбъектам.Вставить("ТекстЗапросаОберткиВыбораДанных",
|
||||
ТекстЗапросаОберткиВыбораДанныхДляТочечнойПроверки);
|
||||
@@ -32474,14 +32487,14 @@
|
||||
КонецЕсли;
|
||||
|
||||
// Установка шаблонов запросов.
|
||||
ТекстЗапросаПроверкиКомбинаций = // @query-part-1
|
||||
ТекстЗапросаПроверкиКомбинаций =
|
||||
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 995
|
||||
| &ОпорныеПоляДляВыбора
|
||||
|ИЗ
|
||||
| &ТекущийСписок КАК ТекущийСписок
|
||||
|ГДЕ
|
||||
| &ОпорныеПоляДляОтбора
|
||||
| И (#Условие)
|
||||
| И (&УсловиеЗапроса)
|
||||
| И &УточнениеПланаЗапроса
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
@@ -32492,38 +32505,38 @@
|
||||
ТекстЗапросаПроверкиКомбинаций = СтрЗаменить(ТекстЗапросаПроверкиКомбинаций, "&ОпорныеПоляДляУпорядочения", ОпорныеПоля.ДляУпорядочения);
|
||||
Контекст.Вставить("ТекстЗапросаПроверки", ТекстЗапросаПроверкиКомбинаций);
|
||||
|
||||
ТекстЗапросаТочечнойПроверкиКомбинаций = // @query-part-1
|
||||
ТекстЗапросаТочечнойПроверкиКомбинаций =
|
||||
"ВЫБРАТЬ
|
||||
| &ОпорныеПоляДляВыбора
|
||||
|ИЗ
|
||||
| ТекущийСписокПоВедущимОбъектам КАК ТекущийСписок
|
||||
|ГДЕ
|
||||
| (#Условие)
|
||||
| (&УсловиеЗапроса)
|
||||
| И &УточнениеПланаЗапроса";
|
||||
|
||||
ТекстЗапросаТочечнойПроверкиКомбинаций = СтрЗаменить(ТекстЗапросаТочечнойПроверкиКомбинаций,
|
||||
"&ОпорныеПоляДляВыбора", ОпорныеПоля.ДляВыбора);
|
||||
Контекст.Вставить("ТекстЗапросаТочечнойПроверки", ТекстЗапросаТочечнойПроверкиКомбинаций);
|
||||
|
||||
ТекстЗапросаОберткиВыбораДанныхДляТочечнойПроверкиКомбинаций = // @query-part-1
|
||||
ТекстЗапросаОберткиВыбораДанныхДляТочечнойПроверкиКомбинаций =
|
||||
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 995
|
||||
| &ОпорныеПоляДляВыбора,
|
||||
| ТекущийСписок.КлючДоступа КАК КлючДоступа
|
||||
|ПОМЕСТИТЬ ТекущийСписокПоВедущимОбъектам
|
||||
|ИЗ
|
||||
| (#ЗапросыВыбораДанных) КАК ТекущийСписок";
|
||||
| #ЗапросыВыбораДанных КАК ТекущийСписок";
|
||||
|
||||
ТекстЗапросаОберткиВыбораДанныхДляТочечнойПроверкиКомбинаций = СтрЗаменить(ТекстЗапросаОберткиВыбораДанныхДляТочечнойПроверкиКомбинаций,
|
||||
"&ОпорныеПоляДляВыбора", ОпорныеПоля.ДляВыбора);
|
||||
Контекст.ОписаниеЗапросовПроверкиПоВедущимОбъектам.Вставить("ТекстЗапросаОберткиВыбораДанных",
|
||||
ТекстЗапросаОберткиВыбораДанныхДляТочечнойПроверкиКомбинаций);
|
||||
|
||||
ШаблонЗапроса = // @query-part-1
|
||||
ШаблонЗапроса =
|
||||
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 995
|
||||
| &ОпорныеПоляДляВыбора,
|
||||
| ТекущийСписок.КлючДоступа КАК КлючДоступа
|
||||
|ИЗ
|
||||
| ";
|
||||
| "; // @query-part-1
|
||||
ШаблонЗапроса = СтрЗаменить(ШаблонЗапроса, "&ОпорныеПоляДляВыбора", ОпорныеПоля.ДляВыбора);
|
||||
ДобавитьЗапросыПроверкиПоВедущимСпискам(ШаблонЗапроса, Контекст);
|
||||
|
||||
@@ -32639,14 +32652,17 @@
|
||||
Поля.Добавить(ОписаниеПоля.Ключ + " КАК " + ОписаниеПоля.Ключ);
|
||||
КонецЦикла;
|
||||
|
||||
ТекстЗапросаПараметров = // @query-part-1
|
||||
ТекстЗапросаПараметров =
|
||||
"ВЫБРАТЬ
|
||||
| ТекущиеДанныеДляОтбора." + СтрСоединить(Поля, ",
|
||||
| ТекущиеДанныеДляОтбора.") + "
|
||||
|ПОМЕСТИТЬ " // @query-part-1
|
||||
+ ВедущаяТаблицаБезТочек + "
|
||||
| &ПоляТаблицы
|
||||
|ПОМЕСТИТЬ #ВедущаяТаблицаБезТочек
|
||||
|ИЗ
|
||||
| &" + ВедущаяТаблицаБезТочек + " КАК ТекущиеДанныеДляОтбора"; // @query-part-1 @query-part-2
|
||||
| &ВедущаяТаблицаБезТочек КАК ТекущиеДанныеДляОтбора";
|
||||
ТекстЗапросаПараметров = СтрЗаменить(ТекстЗапросаПараметров, "&ПоляТаблицы", "
|
||||
| ТекущиеДанныеДляОтбора." + СтрСоединить(Поля, ",
|
||||
| ТекущиеДанныеДляОтбора."));
|
||||
ТекстЗапросаПараметров = СтрЗаменить(ТекстЗапросаПараметров, "#ВедущаяТаблицаБезТочек", ВедущаяТаблицаБезТочек);
|
||||
ТекстЗапросаПараметров = СтрЗаменить(ТекстЗапросаПараметров, "&ВедущаяТаблицаБезТочек", "&" + ВедущаяТаблицаБезТочек);
|
||||
|
||||
ОписаниеЗапросов = Новый Структура;
|
||||
ОписаниеЗапросов.Вставить("ТипыПолей", ТипыПолей);
|
||||
@@ -32676,12 +32692,14 @@
|
||||
|
||||
ИмяВременнойТаблицы = "ТекущиеДанныеДляОтбора" + ВидВедущегоСписка;
|
||||
|
||||
ТекстЗапросаПараметров = // @query-part-1
|
||||
ТекстЗапросаПараметров =
|
||||
"ВЫБРАТЬ
|
||||
| ТекущиеДанныеДляОтбора.Ссылка
|
||||
|ПОМЕСТИТЬ " + ИмяВременнойТаблицы + "
|
||||
|ПОМЕСТИТЬ #ИмяВременнойТаблицы
|
||||
|ИЗ
|
||||
| &" + ВидВедущегоСписка + " КАК ТекущиеДанныеДляОтбора"; // @query-part-1 @query-part-2
|
||||
| &ВидВедущегоСписка КАК ТекущиеДанныеДляОтбора";
|
||||
ТекстЗапросаПараметров = СтрЗаменить(ТекстЗапросаПараметров, "#ИмяВременнойТаблицы", ИмяВременнойТаблицы);
|
||||
ТекстЗапросаПараметров = СтрЗаменить(ТекстЗапросаПараметров, "&ВидВедущегоСписка", "&" + ВидВедущегоСписка);
|
||||
|
||||
ТекстыЗапросовПоКлючам = Новый Соответствие;
|
||||
Для Каждого СоединениеОтбора Из Свойства.СоединенияОтборов Цикл
|
||||
@@ -32715,11 +32733,11 @@
|
||||
Условие = ТекстСОтступом(Условие, " ");
|
||||
|
||||
Контекст.ТекстЗапросаПроверки = СтрЗаменить(Контекст.ТекстЗапросаПроверки,
|
||||
"#Условие", ?(Контекст.ЭтоСсылочныйТип, Условие, ТекстСОтступом(Условие, " ")));
|
||||
"&УсловиеЗапроса", ?(Контекст.ЭтоСсылочныйТип, Условие, ТекстСОтступом(Условие, " ")));
|
||||
ПодставитьОбщиеПараметрыВЗапрос(Контекст.ТекстЗапросаПроверки, Контекст);
|
||||
Результат.ТекстЗапросаЭлементовДанныхСУстаревшимиКлючами = Контекст.ТекстЗапросаПроверки;
|
||||
|
||||
ТекстЗапроса = СтрЗаменить(Контекст.ТекстЗапросаТочечнойПроверки, "#Условие", Условие);
|
||||
ТекстЗапроса = СтрЗаменить(Контекст.ТекстЗапросаТочечнойПроверки, "&УсловиеЗапроса", Условие);
|
||||
ПодставитьОбщиеПараметрыВЗапрос(ТекстЗапроса, Контекст);
|
||||
Контекст.ОписаниеЗапросовПроверкиПоВедущимОбъектам.Вставить("ТекстЗапросаТочечнойПроверки", ТекстЗапроса);
|
||||
|
||||
@@ -33446,11 +33464,11 @@
|
||||
| (&ТекстЗапросаСтандартнойПроверки)
|
||||
| КОНЕЦ";
|
||||
Иначе
|
||||
ТекстЗапросаСПроверкойПоВладельцамНастроекПрав = // @query-part-1
|
||||
ТекстЗапросаСПроверкойПоВладельцамНастроекПрав =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
| ЛОЖЬ КАК ЗначениеЛожь
|
||||
|ИЗ
|
||||
| " + Контекст.Список + " КАК ТекущаяТаблица
|
||||
| &ТекущаяТаблица КАК ТекущаяТаблица
|
||||
|ГДЕ
|
||||
| &ОтборПоИзмерениям
|
||||
| И ВЫБОР
|
||||
@@ -33458,7 +33476,9 @@
|
||||
| ТОГДА &УсловиеСПроверкойПоВладельцамНастроекПрав
|
||||
| ИНАЧЕ ИСТИНА В
|
||||
| (&ТекстЗапросаСтандартнойПроверки)
|
||||
| КОНЕЦ"; // @query-part-1
|
||||
| КОНЕЦ";
|
||||
ТекстЗапросаСПроверкойПоВладельцамНастроекПрав = СтрЗаменить(ТекстЗапросаСПроверкойПоВладельцамНастроекПрав,
|
||||
"&ТекущаяТаблица", Контекст.Список)
|
||||
КонецЕсли;
|
||||
УсловиеПроверкиТипа = "";
|
||||
Для Каждого СвойстваТипа Из ТипыВладельцевНастроекПравПоля Цикл
|
||||
@@ -33611,15 +33631,17 @@
|
||||
КонецЕсли;
|
||||
|
||||
Если Не Контекст.ЭтоСсылочныйТип Тогда
|
||||
ТекстЗапроса = // @query-part-1
|
||||
ТекстЗапросаРегистра =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
| ЛОЖЬ КАК ЗначениеЛожь
|
||||
|ИЗ
|
||||
| " + Контекст.Список + " КАК ТекущаяТаблица
|
||||
| &ТекущаяТаблица КАК ТекущаяТаблица
|
||||
|ГДЕ
|
||||
| &ОтборПоИзмерениям
|
||||
| И НЕ ИСТИНА В
|
||||
| (" + ТекстСОтступом(ТекстЗапроса, " ") + ")"; // @query-part-1
|
||||
| (&УсловиеЗапроса)";
|
||||
ТекстЗапросаРегистра = СтрЗаменить(ТекстЗапросаРегистра, "&ТекущаяТаблица", Контекст.Список);
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапросаРегистра, "&УсловиеЗапроса", ТекстСОтступом(ТекстЗапроса, " "));
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ТекстЗапросаСПроверкойПоВладельцамНастроекПрав) Тогда
|
||||
@@ -33852,22 +33874,22 @@
|
||||
Если НомерШапки = 0 Тогда
|
||||
Соединения = СоединенияИПоля.Соединения + "
|
||||
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиДоступа КАК Шапка0
|
||||
|ПО (Шапка0.Ссылка = #КлючиДоступаКДанным.#КлючДоступаПользователей)" + ?(Контекст.СоставПолей = 0, "
|
||||
| И (Шапка0.Список = &Список)", "") + "
|
||||
|ПО (Шапка0.Ссылка = #КлючиДоступаКДанным.#КлючДоступаПользователей)" // @query-part-1
|
||||
+ ?(Контекст.СоставПолей = 0, "
|
||||
| И (Шапка0.Список = &Список)", "") // @query-part-1
|
||||
+ "
|
||||
| И (Шапка0.СоставПолей = &СоставПолей)"; // @query-part-1
|
||||
Иначе
|
||||
Соединения = СоединенияИПоля.Соединения + "
|
||||
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиДоступа.Шапка КАК Шапка?
|
||||
|ПО (Шапка?.Ссылка = #КлючиДоступаКДанным.#КлючДоступаПользователей)
|
||||
| И (Шапка?.НомерСтроки = " + НомерШапки + ")"; // @query-part-1
|
||||
| И (Шапка?.НомерСтроки = &НомерШапки)"; // @query-part-1
|
||||
Соединения = СтрЗаменить(Соединения, "&НомерШапки", НомерШапки);
|
||||
КонецЕсли;
|
||||
|
||||
Соединения = СокрЛ(Соединения) + ТекстСОтступом(СоединенияИПоля.Поля, " ");
|
||||
Соединения = ТекстСОтступом(Соединения, " ");
|
||||
|
||||
Условие = "НЕ Шапка?.Ссылка ЕСТЬ NULL"; // @query-part-1
|
||||
Условие = ТекстСОтступом(Условие, " ");
|
||||
|
||||
ШаблонТекстаЧастиУсловия =
|
||||
"НЕ ИСТИНА В
|
||||
|(ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
@@ -33877,12 +33899,12 @@
|
||||
| ИСТИНА КАК ЗначениеИстина) КАК ЗначениеИстина
|
||||
| #Соединения
|
||||
|ГДЕ
|
||||
| #Условие)"; // @query-part-1
|
||||
| &УсловиеЗапроса)"; // @query-part-1
|
||||
|
||||
ТекстЧастиУсловия = ШаблонТекстаЧастиУсловия;
|
||||
ТекстЧастиУсловия = СтрЗаменить(ТекстЧастиУсловия, "#Соединения", Соединения);
|
||||
ТекстЧастиУсловия = СтрЗаменить(ТекстЧастиУсловия, "#Условие", Условие);
|
||||
|
||||
ТекстЧастиУсловия = СтрЗаменить(ТекстЧастиУсловия, "&УсловиеЗапроса",
|
||||
ТекстСОтступом("НЕ Шапка?.Ссылка ЕСТЬ NULL", " ")); // @query-part-1
|
||||
ТекстЧастиУсловия = СтрЗаменить(ТекстЧастиУсловия, "Шапка?", "Шапка" + НомерШапки);
|
||||
Контекст.ЧастиУсловияПроверки.Добавить(ТекстЧастиУсловия);
|
||||
|
||||
@@ -33952,12 +33974,12 @@
|
||||
| ИСТИНА КАК ЗначениеИстина) КАК ЗначениеИстина
|
||||
| #Соединения
|
||||
|ГДЕ
|
||||
| #Условие)"; // @query-part-1
|
||||
| &УсловиеЗапроса)"; // @query-part
|
||||
|
||||
// Прямое соединение (проверка наличия требуемых записей в ключе).
|
||||
Соединения = ИсходныеСоединения + "
|
||||
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиДоступа.ТабличнаяЧасть? КАК ТабличнаяЧасть?
|
||||
|ПО (ТабличнаяЧасть?.Ссылка = #КлючиДоступаКДанным.#КлючДоступаПользователей)"; // @query-part-1
|
||||
|ПО (ТабличнаяЧасть?.Ссылка = #КлючиДоступаКДанным.#КлючДоступаПользователей)"; // @query-part
|
||||
Соединения = СокрЛ(Соединения) + ТекстСОтступом(Поля, " ");
|
||||
Соединения = ТекстСОтступом(Соединения, " ");
|
||||
|
||||
@@ -33969,7 +33991,7 @@
|
||||
|
||||
ТекстЧастиУсловия = ШаблонТекстаЧастиУсловия;
|
||||
ТекстЧастиУсловия = СтрЗаменить(ТекстЧастиУсловия, "#Соединения", Соединения);
|
||||
ТекстЧастиУсловия = СтрЗаменить(ТекстЧастиУсловия, "#Условие", Условие);
|
||||
ТекстЧастиУсловия = СтрЗаменить(ТекстЧастиУсловия, "&УсловиеЗапроса", Условие);
|
||||
ТекстЧастиУсловия = СтрЗаменить(ТекстЧастиУсловия, "ТабличнаяЧасть?", ИмяТабличнойЧастиКлюча);
|
||||
Контекст.ЧастиУсловияПроверки.Добавить(ТекстЧастиУсловия);
|
||||
|
||||
@@ -34042,7 +34064,7 @@
|
||||
|
||||
ТекстЧастиУсловия = ШаблонТекстаЧастиУсловия;
|
||||
ТекстЧастиУсловия = СтрЗаменить(ТекстЧастиУсловия, "#Соединения", Соединения);
|
||||
ТекстЧастиУсловия = СтрЗаменить(ТекстЧастиУсловия, "#Условие", Условие);
|
||||
ТекстЧастиУсловия = СтрЗаменить(ТекстЧастиУсловия, "&УсловиеЗапроса", Условие);
|
||||
ТекстЧастиУсловия = СтрЗаменить(ТекстЧастиУсловия, "ТабличнаяЧасть?", ИмяТабличнойЧастиКлюча);
|
||||
Контекст.ЧастиУсловияПроверки.Добавить(ТекстЧастиУсловия);
|
||||
|
||||
@@ -34052,25 +34074,29 @@
|
||||
Процедура ДобавитьЗаполнениеШапкиКлюча(Контекст, НомерШапки)
|
||||
|
||||
Если Не Контекст.ЭтоСсылочныйТип И НомерШапки = 0 Тогда
|
||||
ТекстЗапроса = // @query-part-1
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
| ТекущийСписок.ТекущаяСсылка КАК ТекущаяСсылка,
|
||||
| " + Контекст.ОпорныеПоля.ДляВыбора + "
|
||||
| &ОпорныеПоляДляВыбора
|
||||
| ПОМЕСТИТЬ ТекущийСписок
|
||||
|ИЗ
|
||||
| &ЗначенияОпорныхПолей КАК ТекущийСписок"; // @query-part-1
|
||||
| &ЗначенияОпорныхПолей КАК ТекущийСписок";
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОпорныеПоляДляВыбора", Контекст.ОпорныеПоля.ДляВыбора);
|
||||
Контекст.ЧастиЗапросаЗначенийИзОбъектов.Добавить(ТекстЗапроса);
|
||||
|
||||
ИначеЕсли НомерШапки = 0 Тогда
|
||||
Для Каждого ОписаниеТаблицы Из Контекст.ПоляТаблицОбъекта.Результат Цикл
|
||||
ТекстЗапроса = // @query-part-1
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
| ТекущаяТаблица." + СтрСоединить(ОписаниеТаблицы.Поля, ",
|
||||
| ТекущаяТаблица.") + "
|
||||
| ПОМЕСТИТЬ " // @query-part-1
|
||||
+ ОписаниеТаблицы.ПолноеИмяТаблицы + "
|
||||
| &ПоляТаблицы
|
||||
| ПОМЕСТИТЬ #ПолноеИмяТаблицы
|
||||
|ИЗ
|
||||
| &" + ОписаниеТаблицы.ПолноеИмяТаблицы + " КАК ТекущаяТаблица"; // @query-part-1 @query-part-2
|
||||
| &ПолноеИмяТаблицы КАК ТекущаяТаблица";
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПоляТаблицы",
|
||||
"ТекущаяТаблица." + СтрСоединить(ОписаниеТаблицы.Поля, ",
|
||||
| ТекущаяТаблица."));
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ПолноеИмяТаблицы", ОписаниеТаблицы.ПолноеИмяТаблицы);
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПолноеИмяТаблицы", "&" + ОписаниеТаблицы.ПолноеИмяТаблицы);
|
||||
Контекст.ЧастиЗапросаЗначенийИзОбъектовВПамяти.Добавить(ТекстЗапроса);
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
@@ -34086,11 +34112,13 @@
|
||||
|
||||
// Выбор значений из объектов для поиска и создания ключей доступа.
|
||||
Если Контекст.ЭтоСсылочныйТип Тогда
|
||||
ТекстЗапроса = // @query-part-1 // @query-part-3
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
| ТекущийСписок.Ссылка КАК ТекущаяСсылка" + ТекстСОтступом(СоединенияИПоля.Поля, " ") + "
|
||||
| ТекущийСписок.Ссылка КАК ТекущаяСсылка
|
||||
| ,&ПоляЗапроса
|
||||
|ИЗ
|
||||
| &ТекущийСписок КАК ТекущийСписок" + ТекстСОтступом(СоединенияИПоля.Соединения, " ") + "
|
||||
| &ТекущийСписок КАК ТекущийСписок
|
||||
| #СоединенияЗапроса
|
||||
|ГДЕ
|
||||
| ТекущийСписок.Ссылка В (&СсылкиНаОбъекты)
|
||||
| И &УточнениеПланаЗапроса
|
||||
@@ -34100,28 +34128,35 @@
|
||||
|ИТОГИ ПО
|
||||
| ТекущаяСсылка"; // @query-part-1
|
||||
Иначе
|
||||
ТекстЗапроса = // @query-part-1
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
| ТекущийСписок.ТекущаяСсылка КАК ТекущаяСсылка" + ТекстСОтступом(СоединенияИПоля.Поля, " ") + "
|
||||
| ТекущийСписок.ТекущаяСсылка КАК ТекущаяСсылка
|
||||
| ,&ПоляЗапроса
|
||||
|ИЗ
|
||||
| ТекущийСписок КАК ТекущийСписок" + ТекстСОтступом(СоединенияИПоля.Соединения, " ") + "
|
||||
| ТекущийСписок КАК ТекущийСписок
|
||||
| #СоединенияЗапроса
|
||||
|ГДЕ
|
||||
| &УточнениеПланаЗапроса
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ТекущаяСсылка, " + Контекст.ОпорныеПоля.ДляУпорядочения + "
|
||||
| ТекущаяСсылка,
|
||||
| &ОпорныеПоляДляУпорядочения
|
||||
|ИТОГИ ПО
|
||||
| ТекущаяСсылка"; // @query-part-1
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОпорныеПоляДляУпорядочения", Контекст.ОпорныеПоля.ДляУпорядочения);
|
||||
КонецЕсли;
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",&ПоляЗапроса", ТекстСОтступом(СоединенияИПоля.Поля, " "));
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#СоединенияЗапроса", ТекстСОтступом(СоединенияИПоля.Соединения, " "));
|
||||
|
||||
Контекст.ЧастиЗапросаЗначенийИзОбъектов.Добавить(ТекстЗапроса);
|
||||
Контекст.ЧастиЗапросаЗначенийИзОбъектовВПамяти.Добавить(ТекстЗапроса);
|
||||
|
||||
// Выбор значений из ключей доступа для сравнения со значениями требуемых ключей.
|
||||
Если НомерШапки = 0 Тогда
|
||||
ТекстЗапроса = // @query-part-1
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
| Шапка0.Ссылка КАК ТекущаяСсылка" + ТекстСОтступом(СоединенияИПоля.Реквизиты, " ") + "
|
||||
| Шапка0.Ссылка КАК ТекущаяСсылка
|
||||
| ,&Реквизиты
|
||||
|ИЗ
|
||||
| Справочник.КлючиДоступа КАК Шапка0
|
||||
|ГДЕ
|
||||
@@ -34135,15 +34170,17 @@
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ТекущаяСсылка
|
||||
|ИТОГИ ПО
|
||||
| ТекущаяСсылка"; // @query-part-1
|
||||
| ТекущаяСсылка";
|
||||
Иначе
|
||||
ТекстЗапроса = // @query-part-1
|
||||
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
| Шапка?.Ссылка КАК ТекущаяСсылка" + ТекстСОтступом(СоединенияИПоля.Реквизиты, " ") + "
|
||||
| Шапка?.Ссылка КАК ТекущаяСсылка
|
||||
| ,&Реквизиты
|
||||
|ИЗ
|
||||
| Справочник.КлючиДоступа.Шапка КАК Шапка?
|
||||
|ГДЕ
|
||||
| Шапка?.НомерСтроки = " + НомерШапки + "
|
||||
| &УсловиеНомераШапки
|
||||
| И Шапка?.Ссылка.Хеш В(&Хеши)
|
||||
| И Шапка?.Ссылка.Список = &Список
|
||||
| И Шапка?.Ссылка.СоставПолей = &СоставПолей
|
||||
@@ -34154,9 +34191,12 @@
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ТекущаяСсылка
|
||||
|ИТОГИ ПО
|
||||
| ТекущаяСсылка"; // @query-part-1
|
||||
| ТекущаяСсылка"; // @query-part
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеНомераШапки",
|
||||
"Шапка" + НомерШапки + ".НомерСтроки = " + НомерШапки);
|
||||
КонецЕсли;
|
||||
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",&Реквизиты", ТекстСОтступом(СоединенияИПоля.Реквизиты, " "));
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Шапка?", "Шапка" + НомерШапки);
|
||||
Контекст.ЧастиЗапросаЗначенийИзКлючейДляСравнения.Добавить(ТекстЗапроса);
|
||||
|
||||
@@ -34196,7 +34236,8 @@
|
||||
Если НомерШапки = 0 Тогда
|
||||
ТекстЗапроса = // @query-part-1
|
||||
"ВЫБРАТЬ
|
||||
| ПорцияКлючей.Ссылка КАК Ссылка" + ТекстСОтступом(СоединенияИПоля.Реквизиты, " ") + "
|
||||
| ПорцияКлючей.Ссылка КАК Ссылка
|
||||
| ,&Реквизиты
|
||||
|ИЗ
|
||||
| ПорцияКлючей КАК ПорцияКлючей
|
||||
| ЛЕВОЕ СОЕДИНЕНИЕ @Справочник.КлючиДоступа КАК Шапка0
|
||||
@@ -34207,25 +34248,29 @@
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| Ссылка
|
||||
|ИТОГИ ПО
|
||||
| Ссылка"; // @query-part-1
|
||||
| Ссылка"; // @query-part
|
||||
Иначе
|
||||
ТекстЗапроса = // @query-part-1
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
| ПорцияКлючей.Ссылка КАК Ссылка" + ТекстСОтступом(СоединенияИПоля.Реквизиты, " ") + "
|
||||
| ПорцияКлючей.Ссылка КАК Ссылка
|
||||
| ,&Реквизиты
|
||||
|ИЗ
|
||||
| ПорцияКлючей КАК ПорцияКлючей
|
||||
| ЛЕВОЕ СОЕДИНЕНИЕ @Справочник.КлючиДоступа.Шапка КАК Шапка?
|
||||
| ПО
|
||||
| Шапка?.Ссылка = ПорцияКлючей.Ссылка
|
||||
| И Шапка?.НомерСтроки = " + НомерШапки + "
|
||||
| И &УсловиеНомераШапки
|
||||
| И &УточнениеПланаЗапроса
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| Ссылка
|
||||
|ИТОГИ ПО
|
||||
| Ссылка"; // @query-part-1
|
||||
| Ссылка"; // @query-part
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеНомераШапки",
|
||||
"Шапка" + НомерШапки + ".НомерСтроки = " + НомерШапки);
|
||||
КонецЕсли;
|
||||
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",&Реквизиты", ТекстСОтступом(СоединенияИПоля.Реквизиты, " "));
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Шапка?", "Шапка" + НомерШапки);
|
||||
Контекст.ЧастиЗапросаЗначенийИзКлючейДляРасчетаПрав.Добавить(ТекстЗапроса);
|
||||
|
||||
@@ -34395,35 +34440,45 @@
|
||||
ПоляУпорядочения = СоединенияИПоля.ПоляУпорядочения;
|
||||
Реквизиты = СоединенияИПоля.Реквизиты;
|
||||
Если ПсевдонимТабличнойЧастиОбъекта = Неопределено Тогда
|
||||
ТекстЗапроса = // @query-part-1
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||
| ТекущийСписок.Ссылка КАК ТекущаяСсылка" + ПоляВыбора + "
|
||||
| ТекущийСписок.Ссылка КАК ТекущаяСсылка
|
||||
| ,&ПоляВыбора
|
||||
|ИЗ
|
||||
| &ТекущийСписок КАК ТекущийСписок" + Соединения + "
|
||||
| &ТекущийСписок КАК ТекущийСписок
|
||||
| #Соединения
|
||||
|ГДЕ
|
||||
| ТекущийСписок.Ссылка В (&СсылкиНаОбъекты)
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ТекущаяСсылка" // @query-part-1
|
||||
+ ПоляУпорядочения + "
|
||||
| ТекущаяСсылка
|
||||
| ,&ПоляУпорядочения
|
||||
|ИТОГИ ПО
|
||||
| ТекущаяСсылка"; // @query-part-1
|
||||
Иначе
|
||||
ИмяТабличнойЧастиОбъекта = СтрЗаменить(ПсевдонимТабличнойЧастиОбъекта, "ТекущийСписок", "");
|
||||
ТекстЗапроса = // @query-part-1
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|
||||
| " + ПсевдонимТабличнойЧастиОбъекта + ".Ссылка КАК ТекущаяСсылка" + ПоляВыбора + "
|
||||
| ПсевдонимТабличнойЧастиОбъекта.Ссылка КАК ТекущаяСсылка
|
||||
| ,&ПоляВыбора
|
||||
|ИЗ
|
||||
| &ТекущийСписок." + ИмяТабличнойЧастиОбъекта + " КАК " + ПсевдонимТабличнойЧастиОбъекта + Соединения + "
|
||||
| ИмяТабличнойЧастиОбъекта КАК ПсевдонимТабличнойЧастиОбъекта
|
||||
| #Соединения
|
||||
|ГДЕ
|
||||
| " + ПсевдонимТабличнойЧастиОбъекта + ".Ссылка В (&СсылкиНаОбъекты)
|
||||
| ПсевдонимТабличнойЧастиОбъекта.Ссылка В (&СсылкиНаОбъекты)
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ТекущаяСсылка" // @query-part-1
|
||||
+ ПоляУпорядочения + "
|
||||
| ТекущаяСсылка
|
||||
| ,&ПоляУпорядочения
|
||||
|ИТОГИ ПО
|
||||
| ТекущаяСсылка"; // @query-part-1
|
||||
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ПсевдонимТабличнойЧастиОбъекта", ПсевдонимТабличнойЧастиОбъекта);
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ИмяТабличнойЧастиОбъекта", "&ТекущийСписок." + ИмяТабличнойЧастиОбъекта);
|
||||
КонецЕсли;
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",&ПоляВыбора", ПоляВыбора);
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",&ПоляУпорядочения", ПоляУпорядочения);
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#Соединения", Соединения);
|
||||
Иначе
|
||||
ПоляВыбора = "";
|
||||
Соединения = "";
|
||||
@@ -34545,9 +34600,10 @@
|
||||
ДобавитьУсловиеОтбораПоВедущимКлючамДоступа(Контекст, ГруппаПолей, , НомерТабличнойЧастиКлюча);
|
||||
|
||||
// Выбор значений из ключей доступа для сравнения со значениями требуемых ключей.
|
||||
ТекстЗапроса = // @query-part-1
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
| ТабличнаяЧасть?.Ссылка КАК ТекущаяСсылка" + ТекстСОтступом(Реквизиты, " ") + "
|
||||
| ТабличнаяЧасть?.Ссылка КАК ТекущаяСсылка
|
||||
| ,&Реквизиты
|
||||
|ИЗ
|
||||
| Справочник.КлючиДоступа.ТабличнаяЧасть? КАК ТабличнаяЧасть?
|
||||
|ГДЕ
|
||||
@@ -34559,17 +34615,21 @@
|
||||
| И &УточнениеПланаЗапроса
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ТекущаяСсылка" + ПоляУпорядочения + "
|
||||
| ТекущаяСсылка
|
||||
| ,&ПоляУпорядочения
|
||||
|ИТОГИ ПО
|
||||
| ТекущаяСсылка"; // @query-part-1
|
||||
| ТекущаяСсылка"; // @query-part
|
||||
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",&Реквизиты", ТекстСОтступом(Реквизиты, " "));
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",&ПоляУпорядочения", ПоляУпорядочения);
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ТабличнаяЧасть?", "ТабличнаяЧасть" + НомерТабличнойЧастиКлюча);
|
||||
Контекст.ЧастиЗапросаЗначенийИзКлючейДляСравнения.Добавить(ТекстЗапроса);
|
||||
|
||||
// Выбор значений из ключей доступа для вычисления пользователей и групп доступа, которым они разрешены.
|
||||
ТекстЗапроса = // @query-part-1
|
||||
ТекстЗапроса =
|
||||
"ВЫБРАТЬ
|
||||
| ПорцияКлючей.Ссылка КАК Ссылка" + ТекстСОтступом(Реквизиты, " ") + "
|
||||
| ПорцияКлючей.Ссылка КАК Ссылка
|
||||
| ,&Реквизиты
|
||||
|ИЗ
|
||||
| ПорцияКлючей КАК ПорцияКлючей
|
||||
| ЛЕВОЕ СОЕДИНЕНИЕ @Справочник.КлючиДоступа.ТабличнаяЧасть? КАК ТабличнаяЧасть?
|
||||
@@ -34581,6 +34641,7 @@
|
||||
|ИТОГИ ПО
|
||||
| Ссылка"; // @query-part-1
|
||||
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",&Реквизиты", ТекстСОтступом(Реквизиты, " "));
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ТабличнаяЧасть?", "ТабличнаяЧасть" + НомерТабличнойЧастиКлюча);
|
||||
Контекст.ЧастиЗапросаЗначенийИзКлючейДляРасчетаПрав.Добавить(ТекстЗапроса);
|
||||
|
||||
|
||||
@@ -4563,6 +4563,7 @@
|
||||
ЭлементыФормулы = КонструкторФормулСлужебный.ЭлементыФормулы(Выражение);
|
||||
Параметры = Новый Массив;
|
||||
ПрименятьФорматирование = ЭлементыФормулы.Операнды.Количество() = 1 И ЭлементыФормулы.Операнды[0] = Выражение;
|
||||
|
||||
Для Каждого Операнд Из ЭлементыФормулы.Операнды Цикл
|
||||
КоллекцияДанных = ДанныеПечати;
|
||||
|
||||
@@ -4606,7 +4607,11 @@
|
||||
|
||||
Функция ОчиститьКвадратныеСкобки(Строка)
|
||||
|
||||
Возврат СокрЛП(СтрСоединить(СтрРазделить(Строка, "[]", Ложь), ""));
|
||||
Если СтрНачинаетсяС(Строка, "[") И СтрЗаканчиваетсяНа(Строка, "]") Тогда
|
||||
Возврат Сред(Строка, 2, СтрДлина(Строка) - 2);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Строка;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
@@ -920,7 +920,11 @@
|
||||
КонецЕсли;
|
||||
|
||||
ИдРесурса = ЧтениеXML.ПолучитьАтрибут("Id");
|
||||
НомерРесурса = Число(СтрЗаменить(СокрЛП(ИдРесурса),"rId",""));
|
||||
|
||||
СтрокаЛишнихСимволов = СтрСоединить(СтрРазделить(ИдРесурса, "0123456789"));
|
||||
НомерРесурсаСтрокой = СтрСоединить(СтрРазделить(ИдРесурса, СтрокаЛишнихСимволов));
|
||||
|
||||
НомерРесурса = Число(НомерРесурсаСтрокой);
|
||||
|
||||
НоваяСтрока = ТаблицаСвязейКонтента.Добавить();
|
||||
НоваяСтрока.ИмяРесурса = ЧтениеXML.ПолучитьАтрибут("Target");
|
||||
|
||||
@@ -924,6 +924,42 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ДатаОтбораЗагрузкиПисемПоПротоколуIMAP(ДатаЗагрузкиПисем)
|
||||
|
||||
Возврат Мин(ДатаЗагрузкиПисем, УниверсальноеВремя(ДатаЗагрузкиПисем, ЧасовойПояс()));
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ОпределитьИдентификаторыВходящегоСообщения(ЗаголовокПисьма, ТаблицаИдентификаторов)
|
||||
|
||||
СтрокаТаблицыИдентификаторов = ТаблицаИдентификаторов.Добавить();
|
||||
СтрокаТаблицыИдентификаторов.ИдентификаторНаСервере = ?(ЗаголовокПисьма.Идентификатор.Количество() = 0,
|
||||
"",
|
||||
ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(ЗаголовокПисьма.Идентификатор[0], ""));
|
||||
|
||||
СтрокаТаблицыИдентификаторов.ИдентификаторПисьма =
|
||||
ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(ЗаголовокПисьма.ИдентификаторСообщения, "");
|
||||
|
||||
Если СтрНайти(НРег(ЗаголовокПисьма.ИдентификаторСообщения), "outlook.com") = 0 Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПозицияIDОригинальногоСообщения = СтрНайти(ЗаголовокПисьма.Заголовок, "X-Microsoft-Original-Message-ID");
|
||||
Если ПозицияIDОригинальногоСообщения = 0 Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПозицияОткрывающегосяТега = СтрНайти(ЗаголовокПисьма.Заголовок, "<", НаправлениеПоиска.СНачала, ПозицияIDОригинальногоСообщения);
|
||||
ПозицияЗакрывающегосяТега = СтрНайти(ЗаголовокПисьма.Заголовок, ">", НаправлениеПоиска.СНачала, ПозицияIDОригинальногоСообщения);
|
||||
|
||||
ОригинальныйIDСообщенияMicrosoft =
|
||||
Сред(ЗаголовокПисьма.Заголовок, ПозицияОткрывающегосяТега + 1, ПозицияЗакрывающегосяТега - ПозицияОткрывающегосяТега -1);
|
||||
|
||||
СтрокаТаблицыИдентификаторов.ИдентификаторОригинальногоПисьмаMicrosoft =
|
||||
ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(ОригинальныйIDСообщенияMicrosoft, "");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПолучитьПочтуПоПроколуIMAP(ДанныеУчетнойЗаписи, Почта, Получено, ПолученныеПисьма)
|
||||
|
||||
МассивИменАктивныхПапок = МассивИменАктивныхПапок(Почта);
|
||||
@@ -933,6 +969,7 @@
|
||||
ТаблицаИдентификаторов = Новый ТаблицаЗначений;
|
||||
ТаблицаИдентификаторов.Колонки.Добавить("ИдентификаторНаСервере", КвалификаторСтроки255);
|
||||
ТаблицаИдентификаторов.Колонки.Добавить("ИдентификаторПисьма", КвалификаторСтроки255);
|
||||
ТаблицаИдентификаторов.Колонки.Добавить("ИдентификаторОригинальногоПисьмаMicrosoft", КвалификаторСтроки255);
|
||||
|
||||
ТаблицаПустыхИдентификаторов = Новый ТаблицаЗначений;
|
||||
ТаблицаПустыхИдентификаторов.Колонки.Добавить("ИдентификаторНаСервере", КвалификаторСтроки255);
|
||||
@@ -951,7 +988,7 @@
|
||||
ПараметрыОтбора = Новый Структура;
|
||||
|
||||
Если Не ДанныеУчетнойЗаписи.ДатаЗагрузкиПисем = Дата(1,1,1) Тогда
|
||||
ПараметрыОтбора.Вставить("ПослеДатыОтправления",ДанныеУчетнойЗаписи.ДатаЗагрузкиПисем);
|
||||
ПараметрыОтбора.Вставить("ПослеДатыОтправления", ДатаОтбораЗагрузкиПисемПоПротоколуIMAP(ДанныеУчетнойЗаписи.ДатаЗагрузкиПисем));
|
||||
Иначе
|
||||
ПараметрыОтбора.Вставить("Удаленные", Ложь);
|
||||
КонецЕсли;
|
||||
@@ -971,11 +1008,7 @@
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
НоваяСтрокаТаблицыИдентификаторов = ТаблицаИдентификаторов.Добавить();
|
||||
НоваяСтрокаТаблицыИдентификаторов.ИдентификаторНаСервере = ?(ЗаголовокПисьма.Идентификатор.Количество() = 0,
|
||||
"",
|
||||
ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(ЗаголовокПисьма.Идентификатор[0], ""));
|
||||
НоваяСтрокаТаблицыИдентификаторов.ИдентификаторПисьма = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(ЗаголовокПисьма.ИдентификаторСообщения, "");
|
||||
ОпределитьИдентификаторыВходящегоСообщения(ЗаголовокПисьма, ТаблицаИдентификаторов);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@@ -987,7 +1020,8 @@
|
||||
Запрос.Текст = "
|
||||
|ВЫБРАТЬ
|
||||
| ИдентификаторыПисемКЗагрузке.ИдентификаторПисьма,
|
||||
| ИдентификаторыПисемКЗагрузке.ИдентификаторНаСервере
|
||||
| ИдентификаторыПисемКЗагрузке.ИдентификаторНаСервере,
|
||||
| ИдентификаторыПисемКЗагрузке.ИдентификаторОригинальногоПисьмаMicrosoft
|
||||
|ПОМЕСТИТЬ ИдентификаторыПисемКЗагрузке
|
||||
|ИЗ
|
||||
| &ИдентификаторыПисемКЗагрузке КАК ИдентификаторыПисемКЗагрузке
|
||||
@@ -996,7 +1030,8 @@
|
||||
|////////////////////////////////////////////////////////////////////////////////
|
||||
|ВЫБРАТЬ
|
||||
| ИдентификаторыПисемКЗагрузке.ИдентификаторПисьма,
|
||||
| ИдентификаторыПисемКЗагрузке.ИдентификаторНаСервере
|
||||
| ИдентификаторыПисемКЗагрузке.ИдентификаторНаСервере,
|
||||
| ИдентификаторыПисемКЗагрузке.ИдентификаторОригинальногоПисьмаMicrosoft
|
||||
|ИЗ
|
||||
| ИдентификаторыПисемКЗагрузке КАК ИдентификаторыПисемКЗагрузке
|
||||
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронноеПисьмоВходящее КАК ЭлектронноеПисьмоВходящее
|
||||
@@ -1005,7 +1040,8 @@
|
||||
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронноеПисьмоИсходящее КАК ЭлектронноеПисьмоИсходящее
|
||||
| ПО (ЭлектронноеПисьмоИсходящее.УчетнаяЗапись = &УчетнаяЗапись)
|
||||
| И (ИдентификаторыПисемКЗагрузке.ИдентификаторПисьма = ЭлектронноеПисьмоИсходящее.ИдентификаторСообщения
|
||||
| ИЛИ ИдентификаторыПисемКЗагрузке.ИдентификаторПисьма = ЭлектронноеПисьмоИсходящее.ИдентификаторСообщенияОтправкаIMAP)
|
||||
| ИЛИ ИдентификаторыПисемКЗагрузке.ИдентификаторПисьма = ЭлектронноеПисьмоИсходящее.ИдентификаторСообщенияОтправкаIMAP
|
||||
| ИЛИ ИдентификаторыПисемКЗагрузке.ИдентификаторОригинальногоПисьмаMicrosoft = ЭлектронноеПисьмоИсходящее.ИдентификаторСообщения)
|
||||
|ГДЕ
|
||||
| ЭлектронноеПисьмоВходящее.Ссылка ЕСТЬ NULL
|
||||
| И ЭлектронноеПисьмоИсходящее.Ссылка ЕСТЬ NULL";
|
||||
|
||||
@@ -144,8 +144,8 @@
|
||||
//
|
||||
// Параметры:
|
||||
// ОбработчикЗавершения - ОписаниеОповещения
|
||||
// - Неопределено - содержит описание процедуры, которая
|
||||
// будет вызвана после завершения со следующими параметрами:
|
||||
// - Неопределено - содержит описание процедуры, которая будет вызвана после завершения
|
||||
// со следующими параметрами:
|
||||
// * ПолученныеФайлы - Неопределено - файлы не были получены.
|
||||
// - Массив - содержит объекты типа ОписаниеПереданногоФайла. Сохраненные файлы.
|
||||
// * ДополнительныеПараметры - Произвольный - значение, которое было указано при создании объекта ОписаниеОповещения.
|
||||
@@ -189,7 +189,7 @@
|
||||
// - Массив - содержит объекты типа ОписаниеПереданногоФайла. Сохраненные файлы.
|
||||
// * ДополнительныеПараметры - Произвольный - значение, которое было указано при создании объекта
|
||||
// ОписаниеОповещения.
|
||||
// СохраняемыеФайлы - Массив из ОписаниеПереданногоФайла - содержит объекты типа ОписаниеПереданногоФайла.
|
||||
// СохраняемыеФайлы - Массив из ОписаниеПередаваемогоФайла
|
||||
// ПараметрыСохранения - см. ФайловаяСистемаКлиент.ПараметрыСохраненияФайла
|
||||
//
|
||||
// Пример:
|
||||
|
||||
@@ -402,7 +402,7 @@
|
||||
// Строка - имя общего реквизита верхнего уровня.
|
||||
//
|
||||
Функция ИмяУзлаОбщихРеквизитов() Экспорт
|
||||
Возврат НСтр("ru = 'ОбщиеРеквизиты'");
|
||||
Возврат "ОбщиеРеквизиты";
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
//
|
||||
Функция ДоступнаУсовершенствованнаяПодпись() Экспорт
|
||||
|
||||
Возврат ОбщиеНастройки().ДоступнаУсовершенствованнаяПодпись;
|
||||
Возврат ЭлектроннаяПодписьСлужебныйПовтИсп.ДоступнаУсовершенствованнаяПодпись();
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -1036,65 +1036,98 @@
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
МенеджерКриптографии.АдресаСерверовМетокВремени = ОбщиеНастройки().АдресаСерверовМетокВремени;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИнформацияОбОшибке = Неопределено;
|
||||
ОписаниеОшибки = "";
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеСвойстваПодписи();
|
||||
|
||||
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(Подпись,
|
||||
МенеджерКриптографии, ЭлектроннаяПодписьСлужебный.ДобавкаВремени(), ТекущаяДатаСеанса());
|
||||
КонтейнерПодписи = МенеджерКриптографии.ПолучитьКонтейнерПодписейКриптографии(Подпись);
|
||||
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(КонтейнерПодписи,
|
||||
ЭлектроннаяПодписьСлужебный.ДобавкаВремени(), ТекущаяДатаСеанса());
|
||||
|
||||
СвойстваПодписи.ТипПодписи = ПараметрыПодписиКриптографии.ТипПодписи;
|
||||
СвойстваПодписи.СрокДействияПоследнейМеткиВремени = ПараметрыПодписиКриптографии.СрокДействияПоследнейМеткиВремени;
|
||||
|
||||
УсовершенствованиеПроизошло = Ложь;
|
||||
Если Не ПараметрыПодписиКриптографии.СрокДействияПоследнейМеткиВремени < ТекущаяДатаСеанса() Тогда
|
||||
ОписаниеОшибки = "";
|
||||
ИнформацияОбОшибке = Неопределено;
|
||||
|
||||
Если ЗначениеЗаполнено(ПараметрыПодписиКриптографии.СрокДействияПоследнейМеткиВремени)
|
||||
И ПараметрыПодписиКриптографии.СрокДействияПоследнейМеткиВремени < ТекущаяДатаСеанса() Тогда
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='Истек срок действия подписи: %1'"), ПараметрыПодписиКриптографии.СрокДействияПоследнейМеткиВремени);
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеОшибки = "" Тогда
|
||||
РезультатПроверкиСертификата = ПроверитьСертификат(МенеджерКриптографии, ПараметрыПодписиКриптографии.СертификатПоследнейМеткиВремени, ОписаниеОшибки);
|
||||
Если РезультатПроверкиСертификата Тогда
|
||||
Если ЗначениеЗаполнено(ТипПодписи)
|
||||
И ЭлектроннаяПодписьСлужебныйКлиентСервер.ПодлежитУсовершенствованию(ПараметрыПодписиКриптографии.ТипПодписи, ТипПодписи) Тогда
|
||||
Попытка
|
||||
ДвоичныеДанныеРезультата = МенеджерКриптографии.УсовершенствоватьПодпись(Подпись,
|
||||
ЭлектроннаяПодписьСлужебныйКлиентСервер.ТипПодписиКриптографии(ТипПодписи));
|
||||
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеДанныеПодписи(ДвоичныеДанныеРезультата, ОписаниеОшибки);
|
||||
Если Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда
|
||||
УсовершенствованиеПроизошло = Истина;
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||
|
||||
КонецПопытки;
|
||||
ИначеЕсли ДобавитьАрхивнуюМеткуВремени И (ПараметрыПодписиКриптографии.ТипПодписи = Перечисления.ТипыПодписиКриптографии.CAdESAv3
|
||||
ИначеЕсли ДобавитьАрхивнуюМеткуВремени И (ПараметрыПодписиКриптографии.ТипПодписи = Перечисления.ТипыПодписиКриптографии.АрхивнаяCAdESAv3
|
||||
Или ПараметрыПодписиКриптографии.ТипПодписи = Перечисления.ТипыПодписиКриптографии.CAdESAv2) Тогда
|
||||
Попытка
|
||||
ДвоичныеДанныеРезультата = МенеджерКриптографии.ДобавитьАрхивнуюМеткуВремени(Подпись);
|
||||
ЭлектроннаяПодписьСлужебныйКлиентСервер.ПустыеДанныеПодписи(ДвоичныеДанныеРезультата, ОписаниеОшибки);
|
||||
Если Не ЗначениеЗаполнено(ОписаниеОшибки) Тогда
|
||||
УсовершенствованиеПроизошло = Истина;
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='При проверке сертификата: %1'"), ОписаниеОшибки);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ИнформацияОбОшибке <> Неопределено Тогда
|
||||
Результат.ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
|
||||
Возврат Ложь;
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='При усовершенствовании подписи: %1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||
КонецЕсли;
|
||||
|
||||
Если УсовершенствованиеПроизошло Тогда
|
||||
КонтейнерПодписи = МенеджерКриптографии.ПолучитьКонтейнерПодписейКриптографии(Подпись);
|
||||
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(КонтейнерПодписи,
|
||||
ЭлектроннаяПодписьСлужебный.ДобавкаВремени(), ТекущаяДатаСеанса());
|
||||
РезультатПроверкиСертификата = ПроверитьСертификат(МенеджерКриптографии,
|
||||
ПараметрыПодписиКриптографии.СертификатПоследнейМеткиВремени, ОписаниеОшибки);
|
||||
Если РезультатПроверкиСертификата Тогда
|
||||
СвойстваПодписи.Подпись = ДвоичныеДанныеРезультата;
|
||||
СвойстваПодписи.ТипПодписи = ПараметрыПодписиКриптографии.ТипПодписи;
|
||||
СвойстваПодписи.СрокДействияПоследнейМеткиВремени = ПараметрыПодписиКриптографии.СрокДействияПоследнейМеткиВремени;
|
||||
Иначе
|
||||
СвойстваСертификата = СвойстваСертификата(ПараметрыПодписиКриптографии.СертификатПоследнейМеткиВремени);
|
||||
СведенияОСертификате = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Сертификат: %1
|
||||
|Кем выдан: %2
|
||||
|Владелец: %3
|
||||
|Действителен: с %4 по %5'"),
|
||||
Строка(СвойстваСертификата.СерийныйНомер),
|
||||
СвойстваСертификата.КемВыдан,
|
||||
СвойстваСертификата.КомуВыдан,
|
||||
Формат(СвойстваСертификата.ДатаНачала, "ДЛФ=D"),
|
||||
Формат(СвойстваСертификата.ДатаОкончания, "ДЛФ=D"));
|
||||
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='При проверке сертификата после усовершенствования: %1
|
||||
|%2'"), ОписаниеОшибки, СведенияОСертификате);
|
||||
|
||||
ВызватьИсключение ОписаниеОшибки;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеОшибки <> "" Тогда
|
||||
Результат.ТекстОшибки = ОписаниеОшибки;
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
Результат.Успех = Истина;
|
||||
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеСвойстваПодписи();
|
||||
Если УсовершенствованиеПроизошло Тогда
|
||||
СвойстваПодписи.Подпись = ДвоичныеДанныеРезультата;
|
||||
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(ДвоичныеДанныеРезультата,
|
||||
МенеджерКриптографии, ЭлектроннаяПодписьСлужебный.ДобавкаВремени(), ТекущаяДатаСеанса());
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваПодписи.ТипПодписи = ПараметрыПодписиКриптографии.ТипПодписи;
|
||||
СвойстваПодписи.СрокДействияПоследнейМеткиВремени = ПараметрыПодписиКриптографии.СрокДействияПоследнейМеткиВремени;
|
||||
|
||||
Результат.СвойстваПодписи = СвойстваПодписи;
|
||||
|
||||
Возврат Результат;
|
||||
@@ -1138,7 +1171,7 @@
|
||||
|
||||
Результат = Новый Структура("Успех, ТекстОшибки, СвойстваПодписи", Ложь);
|
||||
|
||||
СвойстваПодписи = УстановленныеПодписи(ПодписанныйОбъект, ПорядковыйНомер);
|
||||
СвойстваПодписи = УстановленныеПодписи(ПодписанныйОбъект, ПорядковыйНомер)[0];
|
||||
Подпись = СвойстваПодписи.Подпись;
|
||||
|
||||
Если МенеджерКриптографии = Неопределено Тогда
|
||||
@@ -1155,13 +1188,13 @@
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
МенеджерКриптографии.АдресаСерверовМетокВремени = ОбщиеНастройки().АдресаСерверовМетокВремени;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Результат = УсовершенствоватьПодпись(Подпись, ТипПодписи, ДобавитьАрхивнуюМеткуВремени, МенеджерКриптографии);
|
||||
|
||||
Если Не Результат.Успех Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
Результат.СвойстваПодписи.ПодписанныйОбъект = ПодписанныйОбъект;
|
||||
Результат.СвойстваПодписи.ПорядковыйНомер = ПорядковыйНомер;
|
||||
|
||||
Если Результат.СвойстваПодписи.Подпись = Неопределено Тогда
|
||||
// Подпись не была усовершенствована, но, возможно, требуется обновление данных.
|
||||
@@ -1171,9 +1204,6 @@
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Результат.СвойстваПодписи.ПодписанныйОбъект = ПодписанныйОбъект;
|
||||
Результат.СвойстваПодписи.ПорядковыйНомер = ПорядковыйНомер;
|
||||
|
||||
ПредставлениеОшибки = ЭлектроннаяПодписьСлужебный.ОбновитьУсовершенствованнуюПодпись(
|
||||
Результат.СвойстваПодписи);
|
||||
|
||||
@@ -1184,6 +1214,10 @@
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Результат.СвойстваПодписи.Подпись) Тогда
|
||||
ЭлектроннаяПодписьСлужебный.ЗарегистрироватьУсовершенствованиеПодписиВЖурнале(Результат.СвойстваПодписи);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
@@ -1951,45 +1985,88 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ТребуетсяУсовершенствоватьПодписи = Константы.УсовершенствоватьПодписиАвтоматически.Получить() = 1;
|
||||
Если ОбщегоНазначения.РазделениеВключено() Тогда
|
||||
Если Не ОбщиеНастройки().ЭтоМодельСервисаСДоступнымУсовершенствованием Тогда
|
||||
Возврат;
|
||||
Иначе
|
||||
НастройкиСлужебнойУчетнойЗаписи = ЭлектроннаяПодписьСлужебный.НастройкиСлужебнойУчетнойЗаписиДляУсовершенствованияПодписей();
|
||||
Если ЗначениеЗаполнено(НастройкиСлужебнойУчетнойЗаписи.Ошибка) Тогда
|
||||
ВызватьИсключение(НастройкиСлужебнойУчетнойЗаписи.Ошибка);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
ТипПодписиКриптографииПоУмолчанию = Константы.ТипПодписиКриптографииПоУмолчанию.Получить();
|
||||
Если ТипПодписиКриптографииПоУмолчанию <> Перечисления.ТипыПодписиКриптографии.СМеткойДоверенногоВремениCAdEST Тогда
|
||||
ЭлектроннаяПодписьСлужебный.ИзменитьРегламентноеЗаданиеПродлениеДостоверностиПодписей(,Ложь,ТипПодписиКриптографииПоУмолчанию);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
ТребуетсяДобавитьАрхивныеМетки = Ложь;
|
||||
Иначе
|
||||
ТребуетсяДобавитьАрхивныеМетки = Константы.ДобавлятьМеткиВремениАвтоматически.Получить();
|
||||
ТипПодписиКриптографииПоУмолчанию = Константы.ТипПодписиКриптографииПоУмолчанию.Получить();
|
||||
КонецЕсли;
|
||||
|
||||
ТребуетсяУсовершенствоватьПодписи = Константы.УсовершенствоватьПодписиАвтоматически.Получить() = 1;
|
||||
|
||||
Если (Не ТребуетсяУсовершенствоватьПодписи
|
||||
Или (ТипПодписиКриптографииПоУмолчанию <> Перечисления.ТипыПодписиКриптографии.CAdEST
|
||||
И ТипПодписиКриптографииПоУмолчанию <> Перечисления.ТипыПодписиКриптографии.CAdESAv3)) И Не ТребуетсяДобавитьАрхивныеМетки Тогда
|
||||
Или (ТипПодписиКриптографииПоУмолчанию <> Перечисления.ТипыПодписиКриптографии.СМеткойДоверенногоВремениCAdEST
|
||||
И ТипПодписиКриптографииПоУмолчанию <> Перечисления.ТипыПодписиКриптографии.АрхивнаяCAdESAv3))
|
||||
И Не ТребуетсяДобавитьАрхивныеМетки Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыВыполнения = Новый Структура;
|
||||
ПараметрыВыполнения.Вставить("ТипПодписи");
|
||||
ПараметрыВыполнения.Вставить("ТребуетсяДобавитьАрхивныеМетки");
|
||||
ПараметрыВыполнения.Вставить("АдресаСерверовМетокВремени");
|
||||
ПараметрыВыполнения.Вставить("ПараметрыПодписиCAdEST");
|
||||
ПараметрыВыполнения.Вставить("СлужебнаяУчетнаяЗаписьDSS");
|
||||
|
||||
Если Не ОбщегоНазначения.РазделениеВключено() Тогда
|
||||
Если ТребуетсяУсовершенствоватьПодписи Или ТребуетсяДобавитьАрхивныеМетки Тогда
|
||||
АдресаСерверовМетокВремени = ОбщиеНастройки().АдресаСерверовМетокВремени;
|
||||
Если АдресаСерверовМетокВремени.Количество() = 0 Тогда
|
||||
ВызватьИсключение НСтр("ru = 'Не указаны адреса серверов меток времени.'");
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
ПараметрыВыполнения.АдресаСерверовМетокВремени = АдресаСерверовМетокВремени;
|
||||
Иначе
|
||||
ПараметрыВыполнения.СлужебнаяУчетнаяЗаписьDSS = НастройкиСлужебнойУчетнойЗаписи.СлужебнаяУчетнаяЗаписьDSS;
|
||||
ПараметрыВыполнения.ПараметрыПодписиCAdEST = НастройкиСлужебнойУчетнойЗаписи.ПараметрыПодписиCAdEST;
|
||||
КонецЕсли;
|
||||
|
||||
Если ТребуетсяУсовершенствоватьПодписи Тогда
|
||||
ПараметрыВыполнения.Вставить("ТипПодписи", ТипПодписиКриптографииПоУмолчанию);
|
||||
КонецЕсли;
|
||||
ПараметрыВыполнения.Вставить("ТребуетсяДобавитьАрхивныеМетки", ТребуетсяДобавитьАрхивныеМетки);
|
||||
|
||||
// Пока нет возможности в DSS определить начальный тип подписи.
|
||||
Если ПараметрыВыполнения.СлужебнаяУчетнаяЗаписьDSS = Неопределено Тогда
|
||||
// Необработанные подписи обрабатываем в первую очередь.
|
||||
ПараметрыЗапроса = Новый Структура;
|
||||
ПараметрыЗапроса.Вставить("РегламентноеЗадание", Истина);
|
||||
ПараметрыЗапроса.Вставить("НеобработанныеПодписи", Истина);
|
||||
ЭлектроннаяПодписьСлужебный.ВыполнитьОбработкуДанныхРегламентнымЗаданием(ПараметрыЗапроса, ПараметрыВыполнения);
|
||||
КонецЕсли;
|
||||
|
||||
Если ТребуетсяУсовершенствоватьПодписи
|
||||
И (ТипПодписиКриптографииПоУмолчанию = Перечисления.ТипыПодписиКриптографии.СМеткойДоверенногоВремениCAdEST
|
||||
Или ТипПодписиКриптографииПоУмолчанию = Перечисления.ТипыПодписиКриптографии.АрхивнаяCAdESAv3) Тогда
|
||||
|
||||
ПараметрыЗапроса = Новый Структура;
|
||||
ПараметрыЗапроса.Вставить("ТребуетсяУсовершенствоватьПодписи", ТребуетсяУсовершенствоватьПодписи);
|
||||
ПараметрыЗапроса.Вставить("ТребуетсяДобавитьАрхивныеМетки", ТребуетсяДобавитьАрхивныеМетки);
|
||||
ПараметрыЗапроса.Вставить("НеобработанныеПодписи", Истина);
|
||||
ПараметрыЗапроса.Вставить("ОшибкиПриАвтоматическойОбработке", Ложь);
|
||||
ПараметрыЗапроса.Вставить("ТолькоКоличество", Ложь);
|
||||
ПараметрыЗапроса.Вставить("УсовершенствоватьДоТипа", ТипПодписиКриптографииПоУмолчанию);
|
||||
ПараметрыЗапроса.Вставить("РегламентноеЗадание", Истина);
|
||||
ПараметрыЗапроса.Вставить("ТребуетсяУсовершенствоватьПодписи", ТребуетсяУсовершенствоватьПодписи);
|
||||
ПараметрыЗапроса.Вставить("УсовершенствоватьДоТипа", ТипПодписиКриптографииПоУмолчанию);
|
||||
|
||||
Запрос = ЭлектроннаяПодписьСлужебный.ЗапросДляПродленияДостоверностиПодписей(ПараметрыЗапроса);
|
||||
|
||||
Если Запрос = Неопределено Тогда
|
||||
Возврат;
|
||||
ЭлектроннаяПодписьСлужебный.ВыполнитьОбработкуДанныхРегламентнымЗаданием(ПараметрыЗапроса, ПараметрыВыполнения);
|
||||
КонецЕсли;
|
||||
|
||||
Пока Истина Цикл
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
Если РезультатЗапроса.Пустой() Тогда
|
||||
Прервать;
|
||||
Если ТребуетсяДобавитьАрхивныеМетки Тогда
|
||||
ПараметрыЗапроса = Новый Структура;
|
||||
ПараметрыЗапроса.Вставить("РегламентноеЗадание", Истина);
|
||||
ПараметрыЗапроса.Вставить("ТребуетсяДобавитьАрхивныеМетки", ТребуетсяДобавитьАрхивныеМетки);
|
||||
|
||||
ЭлектроннаяПодписьСлужебный.ВыполнитьОбработкуДанныхРегламентнымЗаданием(ПараметрыЗапроса, ПараметрыВыполнения);
|
||||
КонецЕсли;
|
||||
Выборка = РезультатЗапроса.Выбрать();
|
||||
ОперацияНачалась = Ложь;
|
||||
Результат = ЭлектроннаяПодписьСлужебный.УсовершенствоватьРегламентнымЗаданием(
|
||||
Выборка, ТипПодписиКриптографииПоУмолчанию, ТребуетсяДобавитьАрхивныеМетки, ОперацияНачалась);
|
||||
Если Не ОперацияНачалась Тогда
|
||||
// Возможно, на сервере не установлен менеджер криптографии.
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -194,7 +194,6 @@
|
||||
КлиентскиеПараметры.Вставить("ОписаниеДанных", ОписаниеДанных);
|
||||
КлиентскиеПараметры.Вставить("Форма", Форма);
|
||||
КлиентскиеПараметры.Вставить("ОбработкаРезультата", ОбработкаРезультата);
|
||||
КлиентскиеПараметры.Вставить("ТипПодписи", ТипПодписи);
|
||||
|
||||
ОбработкаЗавершения = Новый ОписаниеОповещения("СтандартноеЗавершение",
|
||||
ЭлектроннаяПодписьСлужебныйКлиент, КлиентскиеПараметры);
|
||||
@@ -224,6 +223,8 @@
|
||||
СерверныеПараметры.Вставить("ОповеститьОбОкончанииСрокаДействия", Истина);
|
||||
ЗаполнитьЗначенияСвойств(СерверныеПараметры, ОписаниеДанных);
|
||||
|
||||
СерверныеПараметры.Вставить("ТипПодписи", ТипПодписи);
|
||||
|
||||
ЭлектроннаяПодписьСлужебныйКлиент.ОткрытьНовуюФорму("ПодписаниеДанных",
|
||||
КлиентскиеПараметры, СерверныеПараметры, ОбработкаЗавершения);
|
||||
|
||||
@@ -1008,6 +1009,7 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
// Открывает ссылку на раздел ИТС "Инструкции по работе с программами электронной подписи и шифрования".
|
||||
//
|
||||
Процедура ОткрытьИнструкциюПоРаботеСПрограммами() Экспорт
|
||||
@@ -1923,6 +1925,21 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Открывает форму отчета ПродлениеСрокаДействияЭлектронныхПодписей.
|
||||
//
|
||||
// Параметры:
|
||||
// РежимПродления - Строка - вариант отчета
|
||||
// "НеобработанныеПодписи", "ТребуетсяУсовершенствоватьПодписи",
|
||||
// "ТребуетсяДобавитьАрхивныеМетки", "ОшибкиПриАвтоматическомПродлении"
|
||||
//
|
||||
Процедура ОткрытьОтчетПродлениеСрокаДействияЭлектронныхПодписей(РежимПродления) Экспорт
|
||||
|
||||
ОткрытьФорму("Отчет.ПродлениеСрокаДействияЭлектронныхПодписей.Форма",
|
||||
Новый Структура("РежимПродления", РежимПродления));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
// Сохраняет подпись на диск
|
||||
Процедура СохранитьПодпись(АдресПодписи) Экспорт
|
||||
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -336,8 +336,10 @@
|
||||
Если Параметры.Операция = "Подписание" Тогда
|
||||
МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = Параметры.ЗначениеПароля;
|
||||
Попытка
|
||||
Если ЭлектроннаяПодпись.ДоступнаУсовершенствованнаяПодпись() Тогда
|
||||
ДвоичныеДанныеРезультата = МенеджерКриптографии.Подписать(Данные, СертификатКриптографии, Параметры.ТипПодписи);
|
||||
Если ЭлектроннаяПодпись.ДоступнаУсовершенствованнаяПодпись() И ЗначениеЗаполнено(Параметры.ТипПодписи) Тогда
|
||||
МенеджерКриптографии.АдресаСерверовМетокВремени = ЭлектроннаяПодпись.ОбщиеНастройки().АдресаСерверовМетокВремени;
|
||||
ДвоичныеДанныеРезультата = МенеджерКриптографии.Подписать(Данные, СертификатКриптографии,
|
||||
ЭлектроннаяПодписьСлужебныйКлиентСервер.ТипПодписиКриптографии(Параметры.ТипПодписи));
|
||||
Иначе
|
||||
ДвоичныеДанныеРезультата = МенеджерКриптографии.Подписать(Данные, СертификатКриптографии);
|
||||
КонецЕсли;
|
||||
@@ -381,8 +383,16 @@
|
||||
СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии);
|
||||
СвойстваСертификата.Вставить("ДвоичныеДанные", СертификатКриптографии.Выгрузить());
|
||||
|
||||
Если ЭлектроннаяПодпись.ДоступнаУсовершенствованнаяПодпись() Тогда
|
||||
КонтейнерПодписи = МенеджерКриптографии.ПолучитьКонтейнерПодписейКриптографии(ДвоичныеДанныеРезультата);
|
||||
ПараметрыПодписиКриптографии = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(КонтейнерПодписи,
|
||||
ЭлектроннаяПодписьСлужебный.ДобавкаВремени(), ТекущаяДатаСеанса());
|
||||
Иначе
|
||||
ПараметрыПодписиКриптографии = Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(ДвоичныеДанныеРезультата,
|
||||
СвойстваСертификата, Параметры.Комментарий, Пользователи.АвторизованныйПользователь());
|
||||
СвойстваСертификата, Параметры.Комментарий, Пользователи.АвторизованныйПользователь(),,ПараметрыПодписиКриптографии);
|
||||
|
||||
Если Параметры.СертификатВерен <> Неопределено Тогда
|
||||
СвойстваПодписи.ДатаПодписи = ТекущаяДатаСеанса();
|
||||
@@ -411,54 +421,19 @@
|
||||
КонецФункции
|
||||
|
||||
// Только для внутреннего использования.
|
||||
Функция УсовершенствоватьНаСторонеСервера(Знач Параметры, АдресРезультата, ОперацияНачалась, ОшибкаНаСервере) Экспорт
|
||||
Функция НачатьУсовершенствованиеНаСервере(Знач Параметры) Экспорт
|
||||
|
||||
ПараметрыСоздания = ЭлектроннаяПодписьСлужебный.ПараметрыСозданияМенеджераКриптографии();
|
||||
ПараметрыСоздания.ОписаниеОшибки = Новый Структура;
|
||||
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(Параметры.ИдентификаторФормы);
|
||||
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Усовершенствование подписи'");
|
||||
|
||||
Попытка
|
||||
Подпись = ПолучитьИзВременногоХранилища(Параметры.ЭлементДанныхДляСервера.Подпись);
|
||||
Исключение
|
||||
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||||
ОшибкаНаСервере.Текст = ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаголовокОшибкиПолученияДанных("ПродлениеСрокаДействияПодписи")
|
||||
+ Символы.ПС + КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
|
||||
Возврат Ложь;
|
||||
КонецПопытки;
|
||||
Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "ЭлектроннаяПодписьСлужебный.УсовершенствоватьНаСторонеСервера", Параметры);
|
||||
|
||||
Параметры.Вставить("АлгоритмПодписи", ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмСформированнойПодписи(Подпись));
|
||||
КонецФункции
|
||||
|
||||
ПараметрыСоздания.АлгоритмПодписи = Параметры.АлгоритмПодписи;
|
||||
МенеджерКриптографии = ЭлектроннаяПодписьСлужебный.МенеджерКриптографии("ПродлениеСрокаДействияПодписи", ПараметрыСоздания);
|
||||
// Только для внутреннего использования.
|
||||
Функция НастройкиСлужебнойУчетнойЗаписиДляУсовершенствованияПодписей(ИдентификаторФормы) Экспорт
|
||||
|
||||
Если МенеджерКриптографии = Неопределено Тогда
|
||||
ОшибкаНаСервере.Текст = ПараметрыСоздания.ОписаниеОшибки;
|
||||
ОшибкаНаСервере.ОшибкаПриСозданииМенеджераКриптографии = Истина;
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Если Параметры.Свойство("ПодписанныйОбъект") Тогда
|
||||
Результат = ЭлектроннаяПодпись.УсовершенствоватьПодпись(Подпись,
|
||||
Параметры.ТипПодписи,
|
||||
Параметры.ДобавитьАрхивнуюМеткуВремени, МенеджерКриптографии);
|
||||
Иначе
|
||||
Результат = ЭлектроннаяПодпись.УсовершенствоватьПодписьОбъекта(Параметры.ЭлементДанныхДляСервера.ПодписанныйОбъект,
|
||||
Параметры.ЭлементДанныхДляСервера.ПорядковыйНомер,
|
||||
Подпись,
|
||||
Параметры.ТипПодписи,
|
||||
Параметры.ДобавитьАрхивнуюМеткуВремени, МенеджерКриптографии);
|
||||
КонецЕсли;
|
||||
|
||||
Если Не Результат.Успех Тогда
|
||||
ОшибкаНаСервере.Текст = Результат.ТекстОшибки;
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
ОперацияНачалась = Истина;
|
||||
Параметры.Вставить("СвойстваПодписи", Результат.СвойстваПодписи);
|
||||
|
||||
АдресРезультата = ПоместитьВоВременноеХранилище(Параметры, Параметры.ИдентификаторФормы);
|
||||
|
||||
Возврат Истина;
|
||||
Возврат ЭлектроннаяПодписьСлужебный.НастройкиСлужебнойУчетнойЗаписиДляУсовершенствованияПодписей(ИдентификаторФормы);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -519,9 +494,9 @@
|
||||
КонецПроцедуры
|
||||
|
||||
// Только для внутреннего использования.
|
||||
Процедура ЗарегистрироватьУсовершенствованиеПодписиВЖурнале(ЭлементДанных) Экспорт
|
||||
Процедура ЗарегистрироватьУсовершенствованиеПодписиВЖурнале(СвойстваПодписи) Экспорт
|
||||
|
||||
ЭлектроннаяПодписьСлужебный.ЗарегистрироватьУсовершенствованиеПодписиВЖурнале(ЭлементДанных);
|
||||
ЭлектроннаяПодписьСлужебный.ЗарегистрироватьУсовершенствованиеПодписиВЖурнале(СвойстваПодписи);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -4038,6 +4038,7 @@
|
||||
Если Контекст.Операция = "Подписание" Тогда
|
||||
ПараметрыДляСервера.Вставить("Комментарий", Контекст.Форма.Комментарий);
|
||||
ПараметрыДляСервера.Вставить("ЗначениеПароля", Контекст.ЗначениеПароля);
|
||||
ПараметрыДляСервера.Вставить("ТипПодписи", Контекст.ОписаниеДанных.ТипПодписи);
|
||||
|
||||
Если Контекст.ЭлементДанных.Свойство("Объект")
|
||||
И Не ТипЗнч(Контекст.ЭлементДанных.Объект) = Тип("ОписаниеОповещения") Тогда
|
||||
@@ -4151,6 +4152,15 @@
|
||||
Если ТипЗнч(ДвоичныеДанные) = Тип("Массив") Тогда
|
||||
ВыполнитьНаСторонеЦиклПослеПодписанияПакета(ДвоичныеДанные, Контекст);
|
||||
Иначе
|
||||
Если Контекст.Свойство("МенеджерКриптографии") И ТипЗнч(Контекст.МенеджерКриптографии) = Тип("МенеджерКриптографии")
|
||||
И ЭлектроннаяПодписьКлиент.ОбщиеНастройки().ДоступнаУсовершенствованнаяПодпись Тогда
|
||||
ДополнительныеПараметры = Новый Структура;
|
||||
ДополнительныеПараметры.Вставить("ДвоичныеДанныеПодписи", ДвоичныеДанные);
|
||||
ДополнительныеПараметры.Вставить("Контекст", Контекст);
|
||||
Оповещение = Новый ОписаниеОповещения("ВыполнитьПослеПолученияКонтейнераПодписи", ЭтотОбъект, ДополнительныеПараметры);
|
||||
Контекст.МенеджерКриптографии.НачатьПолучениеКонтейнераПодписейКриптографии(Оповещение, ДвоичныеДанные);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
СвойстваПодписи = ПолучитьСвойстваПодписиПослеПодписания(ДвоичныеДанные, Контекст);
|
||||
ВыполнитьНаСторонеЦиклПослеПодписания(СвойстваПодписи, Контекст);
|
||||
КонецЕсли;
|
||||
@@ -4162,17 +4172,7 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьСвойстваПодписиПослеПодписания(ДвоичныеДанные, Контекст)
|
||||
|
||||
Если ЭлектроннаяПодписьКлиент.ОбщиеНастройки().ДоступнаУсовершенствованнаяПодпись
|
||||
И ТипЗнч(Контекст.МенеджерКриптографии) = Тип("МенеджерКриптографии") Тогда
|
||||
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||
ДобавкаВремени = ДатаСеанса- ОбщегоНазначенияКлиент.ДатаУниверсальная();
|
||||
ПараметрыПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(
|
||||
ДвоичныеДанные, Контекст.МенеджерКриптографии, ДобавкаВремени, ДатаСеанса);
|
||||
Иначе
|
||||
ПараметрыПодписи = Неопределено;
|
||||
КонецЕсли;
|
||||
Функция ПолучитьСвойстваПодписиПослеПодписания(ДвоичныеДанные, Контекст, ПараметрыПодписи = Неопределено)
|
||||
|
||||
СвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи(ДвоичныеДанные,
|
||||
Контекст.СвойстваСертификата,
|
||||
@@ -4189,24 +4189,17 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьСвойстваПодписиПослеУсовершенствования(ДвоичныеДанные, Контекст)
|
||||
Процедура ВыполнитьПослеПолученияКонтейнераПодписи(КонтейнерПодписи, ДополнительныеПараметры) Экспорт
|
||||
|
||||
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||
ДобавкаВремени = ДатаСеанса - ОбщегоНазначенияКлиент.ДатаУниверсальная();
|
||||
ПараметрыПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(
|
||||
ДвоичныеДанные, Контекст.МенеджерКриптографии, ДобавкаВремени, ДатаСеанса);
|
||||
КонтейнерПодписи, ДобавкаВремени, ДатаСеанса);
|
||||
СвойстваПодписи = ПолучитьСвойстваПодписиПослеПодписания(ДополнительныеПараметры.ДвоичныеДанныеПодписи, ДополнительныеПараметры.Контекст, ПараметрыПодписи);
|
||||
|
||||
СвойстваПодписи = Новый Структура;
|
||||
СвойстваПодписи.Вставить("Подпись", ДвоичныеДанные);
|
||||
СвойстваПодписи.Вставить("ДатаПодписи", ПараметрыПодписи.ДатаПодписиИзМетки);
|
||||
СвойстваПодписи.Вставить("ДатаПроверкиПодписи", ПараметрыПодписи.ДатаПоследнейМеткиВремени);
|
||||
СвойстваПодписи.Вставить("ПодписьВерна", Истина);
|
||||
СвойстваПодписи.Вставить("ТипПодписи", ПараметрыПодписи.ТипПодписи);
|
||||
СвойстваПодписи.Вставить("СрокДействияПоследнейМеткиВремени", ПараметрыПодписи.СрокДействияПоследнейМеткиВремени);
|
||||
ВыполнитьНаСторонеЦиклПослеПодписания(СвойстваПодписи, ДополнительныеПараметры.Контекст);
|
||||
|
||||
Возврат СвойстваПодписи;
|
||||
|
||||
КонецФункции
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ВыполнитьНаСтороне.
|
||||
Процедура ВыполнитьНаСторонеЦиклПослеПодписания(СвойстваПодписи, Контекст)
|
||||
@@ -4611,23 +4604,67 @@
|
||||
ВызватьИсключение НСтр("ru='Переданные параметры не содержат данных подписи.'");
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭлектроннаяПодписьКлиент.СоздаватьЭлектронныеПодписиНаСервере() Тогда
|
||||
Если ЭлектроннаяПодписьКлиент.ОбщиеНастройки().ЭтоМодельСервисаСДоступнымУсовершенствованием
|
||||
И Контекст.ПараметрыВыполнения.ОписаниеДанных.ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.СМеткойДоверенногоВремениCAdEST") Тогда
|
||||
|
||||
НастройкиПодключенияСервиса =
|
||||
ЭлектроннаяПодписьСлужебныйВызовСервера.НастройкиСлужебнойУчетнойЗаписиДляУсовершенствованияПодписей(Контекст.ПараметрыВыполнения.ИдентификаторФормы);
|
||||
Если ЗначениеЗаполнено(НастройкиПодключенияСервиса.Ошибка) Тогда
|
||||
ОписаниеОповещения = Новый ОписаниеОповещения("ПродолжитьУсовершенствованиеПослеОтветаНаВопрос", ЭтотОбъект, Контекст);
|
||||
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='Ошибка при попытке усовершенствования через приложение в Интернете:
|
||||
|%1
|
||||
|Продолжить усовершенствование с помощью программ, установленных на компьютере?'"),
|
||||
НастройкиПодключенияСервиса.Ошибка);
|
||||
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Контекст.ПараметрыВыполнения.Вставить("ЭтоМодельСервисаСДоступнымУсовершенствованием", Истина);
|
||||
Контекст.ПараметрыВыполнения.Вставить("СлужебнаяУчетнаяЗаписьDSS", НастройкиПодключенияСервиса.СлужебнаяУчетнаяЗаписьDSS);
|
||||
Контекст.ПараметрыВыполнения.Вставить("ПараметрыПодписиCAdEST", НастройкиПодключенияСервиса.ПараметрыПодписиCAdEST);
|
||||
|
||||
УсовершенствоватьНаСтороне(Новый ОписаниеОповещения(
|
||||
"УсовершенствоватьПослеВыполненияНаСторонеСервера", ЭлектроннаяПодписьСлужебныйКлиент, Контекст),
|
||||
"НаСторонеСервера", Контекст.ПараметрыВыполнения);
|
||||
|
||||
ИначеЕсли ЭлектроннаяПодписьКлиент.СоздаватьЭлектронныеПодписиНаСервере() Тогда
|
||||
УсовершенствоватьНаСтороне(Новый ОписаниеОповещения(
|
||||
"УсовершенствоватьПослеВыполненияНаСторонеСервера", ЭлектроннаяПодписьСлужебныйКлиент, Контекст),
|
||||
"НаСторонеСервера", Контекст.ПараметрыВыполнения);
|
||||
Иначе
|
||||
УсовершенствоватьПослеВыполненияНаСторонеСервера(Неопределено, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПродолжитьУсовершенствованиеПослеОтветаНаВопрос(РезультатВопроса, Контекст) Экспорт
|
||||
|
||||
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
|
||||
УсовершенствоватьПослеВыполненияНаСторонеСервера(Неопределено, Контекст);
|
||||
Иначе
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("Ошибка", Истина);
|
||||
Результат.Вставить("ТекстОшибки", НСтр("ru='Ошибка при попытке усовершенствования через приложение в Интернете'"));
|
||||
УсовершенствоватьПослеВыполненияНаСторонеКлиента(Результат, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УсовершенствоватьНаСтороне(Оповещение, СторонаВыполнения, ПараметрыВыполнения)
|
||||
|
||||
Контекст = Новый Структура("ОписаниеДанных, ИдентификаторФормы, ПрерыватьОбработкуМассиваПриОшибке");
|
||||
ЗаполнитьЗначенияСвойств(Контекст, ПараметрыВыполнения);
|
||||
|
||||
Если ПараметрыВыполнения.Свойство("ЭтоМодельСервисаСДоступнымУсовершенствованием") Тогда
|
||||
Контекст.Вставить("ЭтоМодельСервисаСДоступнымУсовершенствованием", Истина);
|
||||
Контекст.Вставить("СлужебнаяУчетнаяЗаписьDSS", ПараметрыВыполнения.СлужебнаяУчетнаяЗаписьDSS);
|
||||
Контекст.Вставить("ПараметрыПодписиCAdEST", ПараметрыВыполнения.ПараметрыПодписиCAdEST);
|
||||
Иначе
|
||||
Контекст.Вставить("ЭтоМодельСервисаСДоступнымУсовершенствованием", Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
Контекст.Вставить("Оповещение", Оповещение);
|
||||
Контекст.Вставить("НаСторонеКлиента", СторонаВыполнения = "НаСторонеКлиента");
|
||||
Контекст.Вставить("ОперацияНачалась", Ложь);
|
||||
@@ -4678,17 +4715,12 @@
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры УсовершенствоватьНаСтороне.
|
||||
//
|
||||
// Параметры:
|
||||
// Результат - Число
|
||||
// Контекст - см. ВыполнитьНаСторонеНовыйКонтекст
|
||||
//
|
||||
Процедура УсовершенствоватьНаСторонеЦиклНачалоПродолжение(Результат, Контекст) Экспорт
|
||||
|
||||
Контекст.Индекс = Контекст.Индекс + 1;
|
||||
ЭлементДанных = Контекст.ЭлементыДанных[Контекст.Индекс];
|
||||
|
||||
Если ЭлементДанных.Свойство("НовыеСвойстваПодписи") Тогда
|
||||
Если ЭлементДанных.Свойство("СвойстваПодписи") Тогда
|
||||
УсовершенствоватьНаСторонеЦиклНачало(Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
@@ -4709,17 +4741,9 @@
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
// Для стороны сервера требуется адрес двоичных данных во временном хранилище.
|
||||
Если ТипЗнч(Подпись) = Тип("ДвоичныеДанные") Тогда
|
||||
Подпись = ПоместитьВоВременноеХранилище(Подпись, Контекст.ИдентификаторФормы);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ЭлементДанных.Подпись = Подпись;
|
||||
|
||||
Если Контекст.НаСторонеКлиента Тогда
|
||||
|
||||
ПараметрыСоздания = ПараметрыСозданияМенеджераКриптографии();
|
||||
ПараметрыСоздания.ПоказатьОшибку = Неопределено;
|
||||
Если ЭлементДанных.Свойство("АлгоритмПодписи") Тогда
|
||||
@@ -4734,35 +4758,79 @@
|
||||
"ПродлениеСрокаДействияПодписи", ПараметрыСоздания);
|
||||
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ЭлементДанныхДляСервера = Новый Структура;
|
||||
ЭлементДанныхДляСервера.Вставить("Подпись", ЭлементДанных);
|
||||
// Для стороны сервера требуется адрес двоичных данных во временном хранилище.
|
||||
Если ТипЗнч(Подпись) = Тип("ДвоичныеДанные") Тогда
|
||||
Подпись = ПоместитьВоВременноеХранилище(Подпись, Контекст.ИдентификаторФормы);
|
||||
КонецЕсли;
|
||||
ЭлементДанных.Подпись = Подпись;
|
||||
УсовершенствоватьНаСервере(ЭлементДанных, Контекст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры УсовершенствоватьНаСтороне.
|
||||
Процедура УсовершенствоватьНаСервере(ЭлементДанных, Контекст)
|
||||
|
||||
ПараметрыДляСервера = Новый Структура;
|
||||
ПараметрыДляСервера.Вставить("ЭтоМодельСервисаСДоступнымУсовершенствованием",
|
||||
Контекст.ЭтоМодельСервисаСДоступнымУсовершенствованием);
|
||||
|
||||
Если ПараметрыДляСервера.ЭтоМодельСервисаСДоступнымУсовершенствованием Тогда
|
||||
ПараметрыДляСервера.Вставить("ПараметрыПодписиCAdEST", Контекст.ПараметрыПодписиCAdEST);
|
||||
ПараметрыДляСервера.Вставить("СлужебнаяУчетнаяЗаписьDSS", Контекст.СлужебнаяУчетнаяЗаписьDSS);
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыДляСервера.Вставить("ИдентификаторФормы", Контекст.ИдентификаторФормы);
|
||||
ПараметрыДляСервера.Вставить("ЭлементДанныхДляСервера", ЭлементДанныхДляСервера);
|
||||
ПараметрыДляСервера.Вставить("ЭлементДанныхДляСервера", ЭлементДанных);
|
||||
ПараметрыДляСервера.Вставить("ТипПодписи", Контекст.ОписаниеДанных.ТипПодписи);
|
||||
ПараметрыДляСервера.Вставить("ДобавитьАрхивнуюМеткуВремени", Контекст.ОписаниеДанных.ДобавитьАрхивнуюМеткуВремени);
|
||||
ПараметрыДляСервера.Вставить("ОперацияНачалась", Контекст.ОперацияНачалась);
|
||||
|
||||
|
||||
ДлительнаяОперация = ЭлектроннаяПодписьСлужебныйВызовСервера.НачатьУсовершенствованиеНаСервере(
|
||||
ПараметрыДляСервера);
|
||||
|
||||
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(Неопределено);
|
||||
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
|
||||
|
||||
ОповещениеОЗавершении = Новый ОписаниеОповещения("ПродолжитьПослеУсовершенствованияНаСервере", ЭтотОбъект, Контекст);
|
||||
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПродолжитьПослеУсовершенствованияНаСервере(РезультатВыполнения, Контекст) Экспорт
|
||||
|
||||
Результат = ПолучитьИзВременногоХранилища(РезультатВыполнения.АдресРезультата);
|
||||
|
||||
Если ЗначениеЗаполнено(РезультатВыполнения.КраткоеПредставлениеОшибки) Тогда
|
||||
ОшибкаНаСервере = ОписаниеОшибкиПриУсовершенствовании(Ложь);
|
||||
АдресРезультата = Неопределено;
|
||||
|
||||
Если Контекст.ЭлементДанных.Свойство("ПодписанныйОбъект") Тогда
|
||||
Если Контекст.ЭлементДанных.Свойство("ВерсияОбъекта") Тогда
|
||||
ЭлементДанныхДляСервера.Свойство("ВерсияОбъекта", Контекст.ЭлементДанных.ВерсияОбъекта);
|
||||
КонецЕсли;
|
||||
ОшибкаНаСервере.Текст = РезультатВыполнения.КраткоеПредставлениеОшибки;
|
||||
УсовершенствоватьНаСторонеПослеОшибки(ОшибкаНаСервере, Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Успех = ЭлектроннаяПодписьСлужебныйВызовСервера.УсовершенствоватьНаСторонеСервера(ПараметрыДляСервера,
|
||||
АдресРезультата, Контекст.ОперацияНачалась, ОшибкаНаСервере);
|
||||
Контекст.ОперацияНачалась = Результат.ОперацияНачалась;
|
||||
|
||||
Если Не Успех Тогда
|
||||
Если ЗначениеЗаполнено(Результат.АлгоритмПодписи) Тогда
|
||||
Контекст.ЭлементыДанных[Контекст.Индекс].Вставить("АлгоритмПодписи", Результат.АлгоритмПодписи);
|
||||
КонецЕсли;
|
||||
|
||||
Если Не Результат.Успех Тогда
|
||||
ОшибкаНаСервере = ОписаниеОшибкиПриУсовершенствовании(Ложь);
|
||||
ОшибкаНаСервере.Текст = Результат.ТекстОшибки;
|
||||
Если Результат.ОшибкаПриСозданииМенеджераКриптографии = Истина Тогда
|
||||
ОшибкаНаСервере.ОшибкаПриСозданииМенеджераКриптографии = Истина;
|
||||
КонецЕсли;
|
||||
УсовершенствоватьНаСторонеПослеОшибки(ОшибкаНаСервере, Контекст);
|
||||
Иначе
|
||||
ВыполнитьНаСторонеЦиклПослеУсовершенствования(АдресРезультата, Контекст);
|
||||
ВыполнитьНаСторонеЦиклПослеУсовершенствования(Результат.СвойстваПодписи, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры УсовершенствоватьНаСтороне.
|
||||
Процедура УсовершенствоватьНаСторонеПослеСозданияМенеджераКриптографии(МенеджерКриптографии, Контекст) Экспорт
|
||||
|
||||
Если ТипЗнч(МенеджерКриптографии) <> Тип("МенеджерКриптографии") Тогда
|
||||
@@ -4774,33 +4842,75 @@
|
||||
КонецЕсли;
|
||||
|
||||
Контекст.Вставить("МенеджерКриптографии", МенеджерКриптографии);
|
||||
|
||||
Подпись = Контекст.ЭлементДанных.Подпись;
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("УсовершенствоватьНаСторонеПослеПолученияКонтейнераПодписи", ЭтотОбъект, Контекст,
|
||||
"УсовершенствоватьНаСторонеЦиклПослеОшибкиОперацииНаКлиенте", ЭтотОбъект);
|
||||
МенеджерКриптографии.НачатьПолучениеКонтейнераПодписейКриптографии(Оповещение, Подпись);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры УсовершенствоватьНаСтороне.
|
||||
Процедура УсовершенствоватьНаСторонеПослеПолученияКонтейнераПодписи(КонтейнерПодписи, Контекст) Экспорт
|
||||
|
||||
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||
ДобавкаВремени = ДатаСеанса - ОбщегоНазначенияКлиент.ДатаУниверсальная();
|
||||
ПараметрыПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(
|
||||
КонтейнерПодписи, ДобавкаВремени, ДатаСеанса);
|
||||
|
||||
Контекст.ЭлементДанных.Вставить("ПараметрыПодписи", ПараметрыПодписи);
|
||||
|
||||
Если ЗначениеЗаполнено(ПараметрыПодписи.СрокДействияПоследнейМеткиВремени)
|
||||
И ПараметрыПодписи.СрокДействияПоследнейМеткиВремени < ДатаСеанса Тогда
|
||||
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='Истек срок действия сертификата подписи: %1'"),
|
||||
СвойстваСертификатаСтрокой(ПараметрыПодписи.СертификатПоследнейМеткиВремени));
|
||||
Контекст.ЭлементДанных.Вставить("Ошибка", ОписаниеОшибки);
|
||||
УсовершенствоватьНаСторонеЦиклПослеОперацииНаКлиенте(ПараметрыПодписи, Контекст);
|
||||
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ПараметрыПодписи.СертификатПоследнейМеткиВремени <> Неопределено Тогда
|
||||
Оповещение = Новый ОписаниеОповещения("УсовершенствоватьНаСторонеПослеПроверкиСертификатаПодписи", ЭтотОбъект, Контекст);
|
||||
ПроверитьСертификат(Оповещение, ПараметрыПодписи.СертификатПоследнейМеткиВремени, Контекст.МенеджерКриптографии);
|
||||
Иначе
|
||||
УсовершенствоватьНаСторонеПослеПроверкиСертификатаПодписи(Истина, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры УсовершенствоватьНаСтороне.
|
||||
Процедура УсовершенствоватьНаСторонеПослеПроверкиСертификатаПодписи(Результат, Контекст) Экспорт
|
||||
|
||||
ПараметрыПодписи = Контекст.ЭлементДанных.ПараметрыПодписи;
|
||||
|
||||
Если Результат <> Истина Тогда
|
||||
Ошибка = ОписаниеОшибкиПриУсовершенствовании();
|
||||
Ошибка.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='При проверке сертификата подписи до усовершенствования: %1
|
||||
|%2'"), Результат, СвойстваСертификатаСтрокой(ПараметрыПодписи.СертификатПоследнейМеткиВремени));
|
||||
УсовершенствоватьНаСторонеПослеОшибки(Ошибка, Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения(
|
||||
"УсовершенствоватьНаСторонеЦиклПослеОперацииНаКлиенте", ЭтотОбъект, Контекст,
|
||||
"УсовершенствоватьНаСторонеЦиклПослеОшибкиОперацииНаКлиенте", ЭтотОбъект);
|
||||
|
||||
МенеджерКриптографии = Контекст.МенеджерКриптографии;
|
||||
МенеджерКриптографии.АдресаСерверовМетокВремени =
|
||||
ЭлектроннаяПодписьКлиент.ОбщиеНастройки().АдресаСерверовМетокВремени;
|
||||
|
||||
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||
ДобавкаВремени = ДатаСеанса - ОбщегоНазначенияКлиент.ДатаУниверсальная();
|
||||
Подпись = Контекст.ЭлементДанных.Подпись;
|
||||
|
||||
ПараметрыПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(
|
||||
Подпись, МенеджерКриптографии, ДобавкаВремени, ДатаСеанса);
|
||||
|
||||
Если ЗначениеЗаполнено(ПараметрыПодписи.СрокДействияПоследнейМеткиВремени)
|
||||
И ПараметрыПодписи.СрокДействияПоследнейМеткиВремени < ДатаСеанса Тогда
|
||||
ВыполнитьОбработкуОповещения(Оповещение, ПараметрыПодписи);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ПараметрыПодписи.ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESAv3")
|
||||
Если ПараметрыПодписи.ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.АрхивнаяCAdESAv3")
|
||||
Или ПараметрыПодписи.ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESAv2") Тогда
|
||||
Если Контекст.ОписаниеДанных.ДобавитьАрхивнуюМеткуВремени Тогда
|
||||
МенеджерКриптографии.НачатьДобавлениеАрхивнойМеткиВремени(Оповещение, Подпись);
|
||||
Иначе
|
||||
ВыполнитьОбработкуОповещения(Оповещение, ПараметрыПодписи);
|
||||
УсовершенствоватьНаСторонеЦиклПослеОперацииНаКлиенте(ПараметрыПодписи, Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
ИначеЕсли ЗначениеЗаполнено(Контекст.ОписаниеДанных.ТипПодписи)
|
||||
@@ -4808,7 +4918,7 @@
|
||||
МенеджерКриптографии.НачатьУсовершенствованиеПодписи(Оповещение, Подпись,
|
||||
ЭлектроннаяПодписьСлужебныйКлиентСервер.ТипПодписиКриптографии(Контекст.ОписаниеДанных.ТипПодписи));
|
||||
Иначе
|
||||
ВыполнитьОбработкуОповещения(Оповещение, ПараметрыПодписи);
|
||||
УсовершенствоватьНаСторонеЦиклПослеОперацииНаКлиенте(ПараметрыПодписи, Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -4839,8 +4949,63 @@
|
||||
КонецЕсли;
|
||||
|
||||
Контекст.ОперацияНачалась = Истина;
|
||||
СвойстваПодписи = ПолучитьСвойстваПодписиПослеУсовершенствования(ДвоичныеДанные, Контекст);
|
||||
Контекст.ЭлементДанных.Вставить("СвойстваПодписи", Новый Структура("Подпись", ДвоичныеДанные));
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("ВыполнитьПослеПолученияКонтейнераУсовершенствованнойПодписи", ЭтотОбъект, Контекст,
|
||||
"УсовершенствоватьНаСторонеЦиклПослеОшибкиОперацииНаКлиенте", ЭтотОбъект);
|
||||
Контекст.МенеджерКриптографии.НачатьПолучениеКонтейнераПодписейКриптографии(Оповещение, ДвоичныеДанные);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры УсовершенствоватьНаСтороне.
|
||||
Процедура ВыполнитьПослеПолученияКонтейнераУсовершенствованнойПодписи(КонтейнерПодписи, Контекст) Экспорт
|
||||
|
||||
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
|
||||
ДобавкаВремени = ДатаСеанса - ОбщегоНазначенияКлиент.ДатаУниверсальная();
|
||||
ПараметрыПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыПодписиКриптографии(
|
||||
КонтейнерПодписи, ДобавкаВремени, ДатаСеанса);
|
||||
|
||||
Контекст.ЭлементДанных.Вставить("ПараметрыПодписи", ПараметрыПодписи);
|
||||
|
||||
Если ПараметрыПодписи.СертификатПоследнейМеткиВремени <> Неопределено Тогда
|
||||
Оповещение = Новый ОписаниеОповещения("ВыполнитьНаСторонеПослеУсовершенствованияИПроверкиСертификата", ЭтотОбъект, Контекст);
|
||||
ПроверитьСертификат(Оповещение, ПараметрыПодписи.СертификатПоследнейМеткиВремени, Контекст.МенеджерКриптографии);
|
||||
Иначе
|
||||
СвойстваПодписи = Новый Структура;
|
||||
СвойстваПодписи.Вставить("Подпись", Контекст.ЭлементДанных.СвойстваПодписи.Подпись);
|
||||
СвойстваПодписи.Вставить("ДатаПодписи", ПараметрыПодписи.ДатаПодписиИзМетки);
|
||||
СвойстваПодписи.Вставить("ДатаПроверкиПодписи", ПараметрыПодписи.ДатаПоследнейМеткиВремени);
|
||||
СвойстваПодписи.Вставить("ПодписьВерна", Истина);
|
||||
СвойстваПодписи.Вставить("ТипПодписи", ПараметрыПодписи.ТипПодписи);
|
||||
СвойстваПодписи.Вставить("СрокДействияПоследнейМеткиВремени", ПараметрыПодписи.СрокДействияПоследнейМеткиВремени);
|
||||
|
||||
ВыполнитьНаСторонеЦиклПослеУсовершенствования(СвойстваПодписи, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры УсовершенствоватьНаСтороне.
|
||||
Процедура ВыполнитьНаСторонеПослеУсовершенствованияИПроверкиСертификата(Результат, Контекст) Экспорт
|
||||
|
||||
ПараметрыПодписи = Контекст.ЭлементДанных.ПараметрыПодписи;
|
||||
|
||||
СвойстваПодписи = Новый Структура;
|
||||
СвойстваПодписи.Вставить("Подпись", Контекст.ЭлементДанных.СвойстваПодписи.Подпись);
|
||||
СвойстваПодписи.Вставить("ДатаПодписи", ПараметрыПодписи.ДатаПодписиИзМетки);
|
||||
СвойстваПодписи.Вставить("ДатаПроверкиПодписи", ПараметрыПодписи.ДатаПоследнейМеткиВремени);
|
||||
СвойстваПодписи.Вставить("ПодписьВерна", Истина);
|
||||
СвойстваПодписи.Вставить("ТипПодписи", ПараметрыПодписи.ТипПодписи);
|
||||
СвойстваПодписи.Вставить("СрокДействияПоследнейМеткиВремени", ПараметрыПодписи.СрокДействияПоследнейМеткиВремени);
|
||||
|
||||
Если Результат = Истина Тогда
|
||||
ВыполнитьНаСторонеЦиклПослеУсовершенствования(СвойстваПодписи, Контекст);
|
||||
Иначе
|
||||
Ошибка = ОписаниеОшибкиПриУсовершенствовании();
|
||||
Ошибка.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='При проверке сертификата подписи после усовершенствования: %1
|
||||
|%2'"), Результат, СвойстваСертификатаСтрокой(ПараметрыПодписи.СертификатПоследнейМеткиВремени));
|
||||
УсовершенствоватьНаСторонеПослеОшибки(Ошибка, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -4858,11 +5023,10 @@
|
||||
// Продолжение процедуры УсовершенствоватьНаСтороне.
|
||||
Процедура ВыполнитьНаСторонеЦиклПослеУсовершенствования(СвойстваПодписи, Контекст)
|
||||
|
||||
Если ТипЗнч(СвойстваПодписи) = Тип("Строка") Тогда
|
||||
СвойстваПодписи = ПолучитьИзВременногоХранилища(СвойстваПодписи);
|
||||
КонецЕсли;
|
||||
|
||||
ЭлементДанных = Контекст.ЭлементыДанных[Контекст.Индекс];
|
||||
|
||||
Если Контекст.НаСторонеКлиента Тогда
|
||||
|
||||
НовыеСвойстваПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеСвойстваПодписи();
|
||||
ОбновитьПодпись = Ложь;
|
||||
|
||||
@@ -4871,13 +5035,11 @@
|
||||
ЭлементДанных.ТипПодписи = СвойстваПодписи.ТипПодписи;
|
||||
НовыеСвойстваПодписи.ТипПодписи = СвойстваПодписи.ТипПодписи;
|
||||
ОбновитьПодпись = Истина;
|
||||
ЭлементДанных.Вставить("Ошибка", НСтр("ru='Продление не требуется или не может быть осуществлено'"));
|
||||
КонецЕсли;
|
||||
Если ЭлементДанных.СрокДействияПоследнейМеткиВремени <> СвойстваПодписи.СрокДействияПоследнейМеткиВремени Тогда
|
||||
ЭлементДанных.СрокДействияПоследнейМеткиВремени = СвойстваПодписи.СрокДействияПоследнейМеткиВремени;
|
||||
НовыеСвойстваПодписи.СрокДействияПоследнейМеткиВремени = СвойстваПодписи.СрокДействияПоследнейМеткиВремени;
|
||||
ОбновитьПодпись = Истина;
|
||||
ЭлементДанных.Вставить("Ошибка", НСтр("ru='Продление не требуется или не может быть осуществлено'"));
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
НовыеСвойстваПодписи.Подпись = СвойстваПодписи.Подпись;
|
||||
@@ -4893,8 +5055,7 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Контекст.НаСторонеКлиента И ОбновитьПодпись Тогда
|
||||
|
||||
Если ОбновитьПодпись Тогда
|
||||
ЭлементДанных.СвойстваПодписи.ПодписанныйОбъект = ЭлементДанных.ПодписанныйОбъект;
|
||||
ЭлементДанных.СвойстваПодписи.ПорядковыйНомер = ЭлементДанных.ПорядковыйНомер;
|
||||
|
||||
@@ -4908,6 +5069,16 @@
|
||||
УсовершенствоватьНаСторонеПослеОшибки(Ошибка, Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ЭлементДанных.СвойстваПодписи.Подпись) Тогда
|
||||
ЭлектроннаяПодписьСлужебныйВызовСервера.ЗарегистрироватьУсовершенствованиеПодписиВЖурнале(НовыеСвойстваПодписи);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
ЭлементДанных.Вставить("СвойстваПодписи", СвойстваПодписи);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ОповеститьОбИзменении(ЭлементДанных.ПодписанныйОбъект);
|
||||
@@ -4979,20 +5150,13 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры УсовершенствоватьНаСтороне.
|
||||
Процедура УсовершенствоватьПослеВыполненияНаСторонеСервера(Результат, Контекст) Экспорт
|
||||
|
||||
Если Результат <> Неопределено И Не Результат.Свойство("Ошибка") Тогда
|
||||
УсовершенствоватьПослеВыполненияНаСторонеКлиента(Результат, Контекст);
|
||||
Иначе
|
||||
Если Результат <> Неопределено Тогда
|
||||
|
||||
Если Контекст.ВыполнятьНаСервере = Истина Тогда
|
||||
РезультатВыполнения = Новый Структура("Ошибка, СвойстваПодписей, ТекстОшибки",
|
||||
Истина, Результат.ЭлементыДанных, Результат.ТекстОшибки);
|
||||
УсовершенствоватьПослеВыполненияНаСторонеКлиента(РезультатВыполнения, Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Контекст.ПараметрыВыполнения.Вставить("ЭлементыДанных", Результат.ЭлементыДанных);
|
||||
Контекст.ПараметрыВыполнения.Вставить("ТекстОшибки", Результат.ТекстОшибки);
|
||||
КонецЕсли;
|
||||
@@ -5004,6 +5168,7 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры УсовершенствоватьНаСтороне.
|
||||
Процедура УсовершенствоватьПослеВыполненияНаСторонеКлиента(Результат, Контекст) Экспорт
|
||||
|
||||
РезультатОбработки = Новый Структура("Успех, ТекстОшибки, СвойстваПодписей");
|
||||
@@ -5020,11 +5185,38 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Результат.Свойство("ЭлементыДанных") Тогда
|
||||
РезультатОбработки.СвойстваПодписей = Результат.ЭлементыДанных;
|
||||
КонецЕсли;
|
||||
|
||||
ВыполнитьОбработкуОповещения(Контекст.ОбработкаРезультата, РезультатОбработки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры УсовершенствоватьНаСтороне.
|
||||
Функция СвойстваСертификатаСтрокой(Сертификат)
|
||||
|
||||
Если Сертификат = Неопределено Тогда
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
|
||||
СвойстваСертификата = ЭлектроннаяПодписьКлиент.СвойстваСертификата(Сертификат);
|
||||
|
||||
СведенияОСертификате = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Сертификат: %1
|
||||
|Кем выдан: %2
|
||||
|Владелец: %3
|
||||
|Действителен: с %4 по %5'"),
|
||||
Строка(СвойстваСертификата.СерийныйНомер),
|
||||
СвойстваСертификата.КемВыдан,
|
||||
СвойстваСертификата.КомуВыдан,
|
||||
Формат(СвойстваСертификата.ДатаНачала, "ДЛФ=D"),
|
||||
Формат(СвойстваСертификата.ДатаОкончания, "ДЛФ=D"));
|
||||
|
||||
Возврат СведенияОСертификате;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Работа с XMLDSig
|
||||
@@ -6327,6 +6519,17 @@
|
||||
Контекст.Вставить("СертификатКриптографии", Результат);
|
||||
|
||||
Если Контекст.Операция = "Подписание" Тогда
|
||||
|
||||
Если ЭлектроннаяПодписьКлиент.ОбщиеНастройки().ДоступнаУсовершенствованнаяПодпись И ЗначениеЗаполнено(Контекст.ОписаниеДанных.ТипПодписи) Тогда
|
||||
Если Контекст.ОписаниеДанных.ТипПодписи <> ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.БазоваяCAdESBES")
|
||||
И Контекст.ОписаниеДанных.ТипПодписи <> ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.ОбычнаяCMS") Тогда
|
||||
Ошибка = Новый Структура("ОписаниеОшибки", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='Недоступно подписание типом подписи %1 с помощью встроенного криптопровайдера.'"), Контекст.ОписаниеДанных.ТипПодписи));
|
||||
ВыполнитьНаСторонеПослеЦикла(Ошибка, Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
СертификатПодписи = Новый Структура("Отпечаток",
|
||||
Base64Значение(Контекст.ОписаниеДанных.ВыбранныйСертификат.Отпечаток));
|
||||
МодульХранилищеСертификатовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ХранилищеСертификатовКлиент");
|
||||
@@ -6437,10 +6640,10 @@
|
||||
Результат.АдресаСерверовМетокВремени = Новый Массив;
|
||||
Результат.ТипПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.ТипПодписиКриптографии(ТипПодписи);
|
||||
|
||||
Если ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdEST")
|
||||
Или ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESC")
|
||||
Или ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESXLongType2")
|
||||
Или ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESAv3") Тогда
|
||||
Если ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.СМеткойДоверенногоВремениCAdEST")
|
||||
Или ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.СПолнымНаборомПроверочныхДанныхCAdESC")
|
||||
Или ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.РасширеннаяДолгосрочнаяCAdESXLongType2")
|
||||
Или ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.АрхивнаяCAdESAv3") Тогда
|
||||
|
||||
АдресаСерверовМетокВремени = ЭлектроннаяПодписьКлиент.ОбщиеНастройки().АдресаСерверовМетокВремени;
|
||||
Если АдресаСерверовМетокВремени.Количество() = 0 Тогда
|
||||
@@ -6449,8 +6652,8 @@
|
||||
КонецЕсли;
|
||||
Результат.АдресаСерверовМетокВремени = АдресаСерверовМетокВремени;
|
||||
|
||||
ИначеЕсли ТипПодписи <> ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESBES")
|
||||
И ТипПодписи <> ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CMS") Тогда
|
||||
ИначеЕсли ТипПодписи <> ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.БазоваяCAdESBES")
|
||||
И ТипПодписи <> ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.ОбычнаяCMS") Тогда
|
||||
|
||||
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='Тип подписи криптографии %1 не поддерживается.'"), ТипПодписи);
|
||||
@@ -6908,7 +7111,23 @@
|
||||
МодульСервисКриптографииDSSКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииDSSКлиентСервер");
|
||||
МодульСервисКриптографииDSSКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииDSSКлиент");
|
||||
|
||||
Если ЭлектроннаяПодписьКлиент.ОбщиеНастройки().ДоступнаУсовершенствованнаяПодпись И ЗначениеЗаполнено(Контекст.ОписаниеДанных.ТипПодписи) Тогда
|
||||
Если Контекст.ОписаниеДанных.ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.БазоваяCAdESBES") Тогда
|
||||
СвойствоПодписи = МодульСервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиCAdES("BES", Истина, Ложь, "Подпись");
|
||||
ИначеЕсли Контекст.ОписаниеДанных.ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.СМеткойДоверенногоВремениCAdEST") Тогда
|
||||
АдресаСерверовМетокВремени = СтрСоединить(ЭлектроннаяПодписьКлиент.ОбщиеНастройки().АдресаСерверовМетокВремени, ",");
|
||||
СвойствоПодписи = МодульСервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиCAdES("T", Истина, Ложь, "Подпись" ,АдресаСерверовМетокВремени);
|
||||
ИначеЕсли Контекст.ОписаниеДанных.ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.ОбычнаяCMS") Тогда
|
||||
СвойствоПодписи = МодульСервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиCMS(Истина, Ложь);
|
||||
Иначе
|
||||
Ошибка = Новый Структура("ОписаниеОшибки", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru='Недоступно подписание типом подписи %1 с помощью учетной записи DSS.'"), Контекст.ОписаниеДанных.ТипПодписи));
|
||||
ВыполнитьНаСторонеПослеЦикла(Ошибка, Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
СвойствоПодписи = МодульСервисКриптографииDSSКлиентСервер.ПолучитьСвойствоПодписиCMS(Истина, Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипРезультата <> Неопределено Тогда
|
||||
ПараметрыОперации.Вставить("ТрансформироватьРезультат", Новый Структура("ТипРезультата", ТипРезультата));
|
||||
@@ -7494,7 +7713,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
Процедура ПослеПолученияВерсииКомпоненты(ВерсияКомпоненты, Параметры, Оповещение) Экспорт
|
||||
|
||||
ВыполнитьОбработкуОповещения(Оповещение, ВерсияКомпоненты);
|
||||
@@ -7587,5 +7805,4 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
#КонецОбласти
|
||||
@@ -1041,14 +1041,10 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПараметрыПодписиКриптографии(Знач ДвоичныеДанные, МенеджерКриптографии, ДобавкаВремени, ДатаСеанса) Экспорт
|
||||
// Только для внутреннего использования.
|
||||
Функция ПараметрыПодписиКриптографии(КонтейнерПодписи, ДобавкаВремени, ДатаСеанса) Экспорт
|
||||
|
||||
Если ЭтоАдресВременногоХранилища(ДвоичныеДанные) Тогда
|
||||
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ДвоичныеДанные);
|
||||
КонецЕсли;
|
||||
|
||||
КонтейнерПодписи = МенеджерКриптографии.ПолучитьКонтейнерПодписейКриптографии(ДвоичныеДанные);
|
||||
ПараметрыПодписи = Новый Структура("ТипПодписи, СрокДействияПоследнейМеткиВремени,
|
||||
ПараметрыПодписи = Новый Структура("ТипПодписи, СрокДействияПоследнейМеткиВремени, СертификатПоследнейМеткиВремени,
|
||||
|ДатаПодписиИзМетки, ОписаниеСертификата, НеподтвержденнаяДатаПодписи, ДатаПоследнейМеткиВремени");
|
||||
|
||||
Подпись = КонтейнерПодписи.Подписи[0];
|
||||
@@ -1062,30 +1058,34 @@
|
||||
ПараметрыПодписи.ТипПодписи = ТипПодписиКриптографии(Подпись.ТипПодписи);
|
||||
СрокДействияПоследнейМеткиВремени = Неопределено;
|
||||
Если Подпись.МеткаВремениПодписи <> Неопределено Тогда
|
||||
СертификатПодписи = Подпись.МеткаВремениПодписи.Подписи[0].СертификатПодписи; // СертификатКриптографии
|
||||
СрокДействияПоследнейМеткиВремени = СертификатПодписи.ДатаОкончания;
|
||||
СертификатПоследнейМеткиВремени = Подпись.МеткаВремениПодписи.Подписи[0].СертификатПодписи; // СертификатКриптографии
|
||||
СрокДействияПоследнейМеткиВремени = СертификатПоследнейМеткиВремени.ДатаОкончания;
|
||||
ДатаПодписиИзМетки = Мин(ДатаПодписиИзМетки, Подпись.МеткаВремениПодписи.Дата + ДобавкаВремени);
|
||||
ПараметрыПодписи.ДатаПоследнейМеткиВремени = Подпись.МеткаВремениПодписи.Дата + ДобавкаВремени;
|
||||
КонецЕсли;
|
||||
|
||||
Если Подпись.МеткаВремениДанныхПроверкиПодписи <> Неопределено Тогда
|
||||
СертификатПодписи = Подпись.МеткаВремениДанныхПроверкиПодписи.Подписи[0].СертификатПодписи; // СертификатКриптографии
|
||||
СрокДействияПоследнейМеткиВремени = СертификатПодписи.ДатаОкончания;
|
||||
СертификатПоследнейМеткиВремени = Подпись.МеткаВремениДанныхПроверкиПодписи.Подписи[0].СертификатПодписи; // СертификатКриптографии
|
||||
СрокДействияПоследнейМеткиВремени = СертификатПоследнейМеткиВремени.ДатаОкончания;
|
||||
ДатаПодписиИзМетки = Мин(ДатаПодписиИзМетки, Подпись.МеткаВремениДанныхПроверкиПодписи.Дата + ДобавкаВремени);
|
||||
ПараметрыПодписи.ДатаПоследнейМеткиВремени = Подпись.МеткаВремениДанныхПроверкиПодписи.Дата + ДобавкаВремени;
|
||||
КонецЕсли;
|
||||
|
||||
Если Подпись.АрхивныеМеткиВремени.Количество() > 0 Тогда
|
||||
СертификатПодписи = Подпись.АрхивныеМеткиВремени[Подпись.АрхивныеМеткиВремени.ВГраница()].Подписи[0].СертификатПодписи; // СертификатКриптографии
|
||||
СрокДействияПоследнейМеткиВремени = СертификатПодписи.ДатаОкончания;
|
||||
СертификатПоследнейМеткиВремени = Подпись.АрхивныеМеткиВремени[Подпись.АрхивныеМеткиВремени.ВГраница()].Подписи[0].СертификатПодписи; // СертификатКриптографии
|
||||
СрокДействияПоследнейМеткиВремени = СертификатПоследнейМеткиВремени.ДатаОкончания;
|
||||
ДатаПодписиИзМетки = Мин(ДатаПодписиИзМетки, Подпись.АрхивныеМеткиВремени[0].Дата + ДобавкаВремени);
|
||||
ПараметрыПодписи.ДатаПоследнейМеткиВремени = Подпись.АрхивныеМеткиВремени[Подпись.АрхивныеМеткиВремени.ВГраница()].Дата;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(СрокДействияПоследнейМеткиВремени) Тогда
|
||||
ПараметрыПодписи.СрокДействияПоследнейМеткиВремени = СрокДействияПоследнейМеткиВремени + ДобавкаВремени;
|
||||
ПараметрыПодписи.СертификатПоследнейМеткиВремени = СертификатПоследнейМеткиВремени;
|
||||
ИначеЕсли ПараметрыПодписи.ОписаниеСертификата.ДействителенДо < ДатаСеанса Тогда
|
||||
ПараметрыПодписи.СрокДействияПоследнейМеткиВремени = ПараметрыПодписи.ОписаниеСертификата.ДействителенДо;
|
||||
ПараметрыПодписи.СертификатПоследнейМеткиВремени = Подпись.СертификатПодписи;
|
||||
Иначе
|
||||
ПараметрыПодписи.СертификатПоследнейМеткиВремени = Подпись.СертификатПодписи;
|
||||
КонецЕсли;
|
||||
|
||||
Если ДатаПодписиИзМетки <> Дата(3999, 12, 31) Тогда
|
||||
@@ -1096,6 +1096,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Только для внутреннего использования.
|
||||
Функция ТипПодписиКриптографии(ТипПодписиЗначение) Экспорт
|
||||
|
||||
Если Ложь Тогда // Для совместимости с версиями платформы, не поддерживающими усовершенствованную подпись.
|
||||
@@ -1106,19 +1107,19 @@
|
||||
|
||||
Если ТипЗнч(ТипПодписиЗначение) = Тип(ИмяТипа) Тогда
|
||||
Если ТипПодписиЗначение = ТипПодписиКриптографии.CAdESBES Тогда
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESBES");
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.БазоваяCAdESBES");
|
||||
ИначеЕсли ТипПодписиЗначение = ТипПодписиКриптографии.CAdEST Тогда
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdEST");
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.СМеткойДоверенногоВремениCAdEST");
|
||||
ИначеЕсли ТипПодписиЗначение = ТипПодписиКриптографии.CAdESAv3 Тогда
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESAv3");
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.АрхивнаяCAdESAv3");
|
||||
ИначеЕсли ТипПодписиЗначение = ТипПодписиКриптографии.CAdESC Тогда
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESC");
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.СПолнымНаборомПроверочныхДанныхCAdESC");
|
||||
ИначеЕсли ТипПодписиЗначение = ТипПодписиКриптографии.CAdESXLongType2 Тогда
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESXLongType2");
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.РасширеннаяДолгосрочнаяCAdESXLongType2");
|
||||
ИначеЕсли ТипПодписиЗначение = ТипПодписиКриптографии.CAdESAv2 Тогда
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESAv2");
|
||||
ИначеЕсли ТипПодписиЗначение = ТипПодписиКриптографии.CMS Тогда
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CMS");
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.ОбычнаяCMS");
|
||||
ИначеЕсли ТипПодписиЗначение = ТипПодписиКриптографии.CAdESXLong Тогда
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESXLong");
|
||||
ИначеЕсли ТипПодписиЗначение = ТипПодписиКриптографии.CAdESXLongType1 Тогда
|
||||
@@ -1129,19 +1130,19 @@
|
||||
Возврат ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESXType2");
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Если ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESBES") Тогда
|
||||
Если ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.БазоваяCAdESBES") Тогда
|
||||
Возврат ТипПодписиКриптографии.CAdESBES;
|
||||
ИначеЕсли ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdEST") Тогда
|
||||
ИначеЕсли ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.СМеткойДоверенногоВремениCAdEST") Тогда
|
||||
Возврат ТипПодписиКриптографии.CAdEST;
|
||||
ИначеЕсли ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESAv3") Тогда
|
||||
ИначеЕсли ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.АрхивнаяCAdESAv3") Тогда
|
||||
Возврат ТипПодписиКриптографии.CAdESAv3;
|
||||
ИначеЕсли ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESC") Тогда
|
||||
ИначеЕсли ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.СПолнымНаборомПроверочныхДанныхCAdESC") Тогда
|
||||
Возврат ТипПодписиКриптографии.CAdESC;
|
||||
ИначеЕсли ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESXLongType2") Тогда
|
||||
ИначеЕсли ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.РасширеннаяДолгосрочнаяCAdESXLongType2") Тогда
|
||||
Возврат ТипПодписиКриптографии.CAdESXLongType2;
|
||||
ИначеЕсли ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESAv2") Тогда
|
||||
Возврат ТипПодписиКриптографии.CAdESAv2;
|
||||
ИначеЕсли ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CMS") Тогда
|
||||
ИначеЕсли ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.ОбычнаяCMS") Тогда
|
||||
Возврат ТипПодписиКриптографии.CMS;
|
||||
ИначеЕсли ТипПодписиЗначение = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESXLong") Тогда
|
||||
Возврат ТипПодписиКриптографии.CAdESXLong;
|
||||
@@ -1158,18 +1159,19 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Только для внутреннего использования.
|
||||
Функция ПодлежитУсовершенствованию(ТипПодписи, НовыйТипПодписи) Экспорт
|
||||
|
||||
Если Не ЗначениеЗаполнено(ТипПодписи)
|
||||
Или ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CMS")
|
||||
Или ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.ОбычнаяCMS")
|
||||
Или ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESAv2")
|
||||
Или ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESAv3") Тогда
|
||||
Или ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.АрхивнаяCAdESAv3") Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Если НовыйТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdEST")
|
||||
И ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESBES")
|
||||
И ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdEST") Тогда
|
||||
Если НовыйТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.СМеткойДоверенногоВремениCAdEST")
|
||||
И ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.БазоваяCAdESBES")
|
||||
И ТипПодписи = ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.СМеткойДоверенногоВремениCAdEST") Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -1177,7 +1179,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
// Только для внутреннего использования.
|
||||
Функция ЗаголовокОшибкиПолученияДанных(Операция) Экспорт
|
||||
|
||||
|
||||
@@ -121,7 +121,8 @@
|
||||
ОбщиеНастройки.Вставить("УсовершенствоватьПодписиАвтоматически", Константы.УсовершенствоватьПодписиАвтоматически.Получить());
|
||||
ОбщиеНастройки.Вставить("ДобавлятьМеткиВремениАвтоматически", Константы.ДобавлятьМеткиВремениАвтоматически.Получить());
|
||||
ОбщиеНастройки.Вставить("УсовершенствоватьПодписиСДаты", Константы.УсовершенствоватьПодписиСДаты.Получить());
|
||||
ОбщиеНастройки.Вставить("УсовершенствованиеЧерезСервис", УсовершенствованиеЧерезСервис());
|
||||
ОбщиеНастройки.Вставить("ЭтоМодельСервисаСДоступнымУсовершенствованием",
|
||||
ЭтоМодельСервисаСДоступнымУсовершенствованием());
|
||||
|
||||
ОбщиеНастройки.Вставить("ДоступнаПроверкаСертификатаВОблачномСервисеСПараметрами",
|
||||
ДоступнаПроверкаСертификатаВОблачномСервисеСПараметрами());
|
||||
@@ -325,29 +326,32 @@
|
||||
КонецФункции
|
||||
|
||||
// Функция - Доступна усовершенствованная подпись
|
||||
// Определяет наличие в платформе типа ПодписьКриптографии
|
||||
// ЗначениеВСтрокуВнутр(Тип("ПодписьКриптографии")) = "{""T"",a338a24d-6470-4101-8735-008988fb74d8}"
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево
|
||||
//
|
||||
Функция ДоступнаУсовершенствованнаяПодпись() Экспорт
|
||||
|
||||
СистемнаяИнформация = Новый СистемнаяИнформация;
|
||||
ВерсияПриложения = СистемнаяИнформация.ВерсияПриложения;
|
||||
Возврат Не ЗначениеИзСтрокиВнутр("{""T"",a338a24d-6470-4101-8735-008988fb74d8}") = Тип("Неопределено");
|
||||
|
||||
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(
|
||||
ВерсияПриложения,
|
||||
"8.3.22.895") >= 0 Тогда
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоМодельСервисаСДоступнымУсовершенствованием()
|
||||
|
||||
Если ОбщегоНазначения.РазделениеВключено() Тогда
|
||||
Если ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи() Тогда
|
||||
МодульСервисКриптографииDSS = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSS");
|
||||
НастройкиПодключения = МодульСервисКриптографииDSS.НастройкиПодключенияСлужебнойУчетнойЗаписи();
|
||||
Если НастройкиПодключения.Свойство("АдресСервера") Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УсовершенствованиеЧерезСервис()
|
||||
|
||||
Возврат ОбщегоНазначения.РазделениеВключено();
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -1,17 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e819cf68-c842-46e9-91ee-2aabb5150d65">
|
||||
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="8b1fd49b-6e40-4b98-bd18-2ef42d87a1d5">
|
||||
<name>БиблиотекаСтандартныхПодсистем</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Библиотека стандартных подсистем, редакция 3.1</value>
|
||||
</synonym>
|
||||
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="d153fa5e-1f99-4be0-a330-2376659a5261"/>
|
||||
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="ab8a9026-bd0c-4499-8bb9-ecdbda21bc03"/>
|
||||
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="a03c636b-3abd-4530-b89e-d7bfaa9d4374"/>
|
||||
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="85e31c57-5bfb-4985-ac1b-2c338751b787"/>
|
||||
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="12311153-0a95-451f-ad62-8a1f907001f9"/>
|
||||
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="74328353-2750-45b4-94e5-8160aa4ebd7a"/>
|
||||
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="85448d57-c51a-4836-ab94-e30f1fe9d859"/>
|
||||
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="f1f0721d-36f4-4e75-8b6c-0677471f79a3"/>
|
||||
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="2915fc86-be04-464b-b8c6-b00a2de69410"/>
|
||||
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="4b3a4a70-471f-4693-854c-b829a05b62c1"/>
|
||||
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="093d99e3-8096-4541-9e6d-c3ac85cff6dc"/>
|
||||
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="c98b02ae-70ac-4030-88d6-f10c2c44bbf5"/>
|
||||
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="3dd0401c-ff06-40b1-ae4c-c62d4eea87ef"/>
|
||||
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="4393ae44-8df8-4c3c-a288-1a3f90b8626b"/>
|
||||
<defaultRunMode>ManagedApplication</defaultRunMode>
|
||||
<usePurposes>PersonalComputer</usePurposes>
|
||||
<scriptVariant>Russian</scriptVariant>
|
||||
@@ -19,7 +19,7 @@
|
||||
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
|
||||
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
|
||||
<vendor>Фирма "1С"</vendor>
|
||||
<version>3.1.6.137</version>
|
||||
<version>3.1.6.159</version>
|
||||
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
|
||||
<includeHelpInContents>true</includeHelpInContents>
|
||||
<usedMobileApplicationFunctionalities>
|
||||
|
||||
@@ -1 +1 @@
|
||||
{6,1,1,7853339c-2e5d-44dd-bb12-ea8dbaa55056,1,7b112826-67b4-401f-89c0-e2d75ab0f519,"3.1.6.137","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6732,1,0,e819cf68-c842-46e9-91ee-2aabb5150d65,e819cf68-c842-46e9-91ee-2aabb5150d65,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,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,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-91c7Line truncated
|
||||
{6,1,1,fab0b14f-58ef-4b62-b1c3-ead5e29b9262,1,ec1bac89-868e-461d-9ba4-c4a8e8fb32d7,"3.1.6.159","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6732,1,0,8b1fd49b-6e40-4b98-bd18-2ef42d87a1d5,8b1fd49b-6e40-4b98-bd18-2ef42d87a1d5,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,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,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-91c7Line truncated
|
||||
@@ -16,8 +16,7 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ЭлектроннаяПодписьСлужебный.УстановитьПараметрРегламентногоЗаданияПродлениеДостоверностиПодписей("Использование",
|
||||
Значение Или Константы.УсовершенствоватьПодписиАвтоматически.Получить() <> 0);
|
||||
ЭлектроннаяПодписьСлужебный.ИзменитьРегламентноеЗаданиеПродлениеДостоверностиПодписей(, Значение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -16,14 +16,16 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Значение = Перечисления.ТипыПодписиКриптографии.CMS
|
||||
Или Значение = Перечисления.ТипыПодписиКриптографии.CAdESBES
|
||||
Если Значение = Перечисления.ТипыПодписиКриптографии.ОбычнаяCMS
|
||||
Или Значение = Перечисления.ТипыПодписиКриптографии.БазоваяCAdESBES
|
||||
Или Не ЗначениеЗаполнено(Значение) Тогда
|
||||
Если Константы.УсовершенствоватьПодписиАвтоматически.Получить() <> 0 Тогда
|
||||
Константы.УсовершенствоватьПодписиАвтоматически.Установить(0);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ЭлектроннаяПодписьСлужебный.ИзменитьРегламентноеЗаданиеПродлениеДостоверностиПодписей(,,Значение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -16,8 +16,7 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ЭлектроннаяПодписьСлужебный.УстановитьПараметрРегламентногоЗаданияПродлениеДостоверностиПодписей("Использование",
|
||||
Значение <> 0 Или Константы.ДобавлятьМеткиВремениАвтоматически.Получить());
|
||||
ЭлектроннаяПодписьСлужебный.ИзменитьРегламентноеЗаданиеПродлениеДостоверностиПодписей(Значение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (c) 2022, ООО 1С-Софт
|
||||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||
// Текст лицензии доступен по ссылке:
|
||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||||
|
||||
#Область ОбработчикиСобытий
|
||||
|
||||
Процедура ПриЗаписи(Отказ)
|
||||
|
||||
Если ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ЭлектроннаяПодписьСлужебный.УстановитьПараметрРегламентногоЗаданияПродлениеДостоверностиПодписей("Использование",
|
||||
Значение <> 0 Или Константы.ДобавлятьМеткиВремениАвтоматически.Получить());
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Иначе
|
||||
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
|
||||
#КонецЕсли
|
||||
@@ -44,7 +44,10 @@
|
||||
ОтборЖурналаРегистрации.Вставить("Событие", ОтборПоСобытию);
|
||||
КонецЕсли;
|
||||
|
||||
Если МодельСервиса Тогда
|
||||
ПереданОтборПоДате = ЗначениеЗаполнено(Параметры.ДатаНачала)
|
||||
Или ЗначениеЗаполнено(Параметры.ДатаОкончания);
|
||||
|
||||
Если МодельСервиса И Не ПереданОтборПоДате Тогда
|
||||
ОтборЖурналаРегистрации.Вставить("ДатаНачала", НачалоДня(ТекущаяДатаСеанса()));
|
||||
ОтборЖурналаРегистрации.Вставить("ДатаОкончания", КонецДня(ТекущаяДатаСеанса()));
|
||||
Иначе
|
||||
|
||||
@@ -1793,7 +1793,9 @@
|
||||
|
||||
ТабличнаяЧасть = ПолучитьИзВременногоХранилища(АдресКопииТабличнойЧасти); // см. ОписаниеТабличнойЧасти
|
||||
|
||||
Если ТабличнаяЧасть = Неопределено ИЛИ ТипЗнч(ТабличнаяЧасть) <> Тип("ТаблицаЗначений") ИЛИ ТабличнаяЧасть.Количество() = 0 Тогда
|
||||
ЭтоТаблица = ТипЗнч(ТабличнаяЧасть) = Тип("ТаблицаЗначений");
|
||||
|
||||
Если Не ЭтоТаблица Или ТабличнаяЧасть.Количество() = 0 Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -1812,7 +1814,7 @@
|
||||
КолонкиТабличнойЧасти.Вставить(Колонка.Имя, Истина);
|
||||
КонецЦикла;
|
||||
|
||||
ВременнаяТЗ = РеквизитФормыВЗначение("ТаблицаСопоставленияДанных");
|
||||
ВременнаяТЗ = РеквизитФормыВЗначение("ТаблицаСопоставленияДанных"); // см. Обработка.ЗагрузкаДанныхИзФайла.Форма.ЗагрузкаДанныхИзФайла.ТаблицаСопоставленияДанных
|
||||
Для каждого Строка Из ТабличнаяЧасть Цикл
|
||||
НоваяСтрока = ВременнаяТЗ.Добавить();
|
||||
НоваяСтрока.Идентификатор = Строка.Идентификатор;
|
||||
@@ -2749,7 +2751,8 @@
|
||||
ПараметрыВызоваСервера.Вставить("ИнформацияПоКолонкам", РеквизитФормыВЗначение("ИнформацияПоКолонкам"));
|
||||
|
||||
ПараметрыВыполненияВФоне = ДлительныеОперации.ПараметрыВыполненияВФоне(ЭтотОбъект.УникальныйИдентификатор);
|
||||
ПараметрыВыполненияВФоне.НаименованиеФоновогоЗадания = НСтр("ru = 'Подсистема ЗагрузкаДанныхИзФайла: Выполнение серверного метода загрузка данных из файла'");
|
||||
ПараметрыВыполненияВФоне.НаименованиеФоновогоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Подсистема %1: Выполнение серверного метода загрузка данных из файла'"), "ЗагрузкаДанныхИзФайла");
|
||||
|
||||
ФоновоеЗадание = ДлительныеОперации.ВыполнитьВФоне("Обработки.ЗагрузкаДанныхИзФайла.ЗагрузитьФайлВТаблицу",
|
||||
ПараметрыВызоваСервера, ПараметрыВыполненияВФоне);
|
||||
|
||||
@@ -629,7 +629,7 @@
|
||||
ИначеЕсли Реквизит.Тип.СодержитТип(Тип("Дата")) Тогда
|
||||
ОписаниеТипаКолонки = Строка(Реквизит.Тип.КвалификаторыДаты.ЧастиДаты);
|
||||
ИначеЕсли Реквизит.Тип.СодержитТип(Тип("УникальныйИдентификатор")) Тогда
|
||||
ОписаниеТипаКолонки = НСтр("ru = 'УникальныйИдентификатор'");
|
||||
ОписаниеТипаКолонки = НСтр("ru = 'Уникальный идентификатор'");
|
||||
КонецЕсли;
|
||||
|
||||
ШиринаКолонки = ШиринаКолонкиПоТипу(Реквизит.Тип);
|
||||
|
||||
@@ -763,9 +763,7 @@
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
Функция ВозможныйКодСсылки(Знач Ссылка, КэшМетаданных)
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - код справочника и т.п. если он есть по метаданным,
|
||||
// Неопределено - если кода нет.
|
||||
|
||||
Мета = Ссылка.Метаданные();
|
||||
ЕстьКод = КэшМетаданных[Мета];
|
||||
|
||||
|
||||
+16
-16
@@ -52,22 +52,6 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбработчикиКомандФормы
|
||||
|
||||
&НаКлиенте
|
||||
Процедура Подтверждаю(Команда)
|
||||
|
||||
Если Не СогласиеСПодтверждаемойИнформацией Тогда
|
||||
ОбщегоНазначенияКлиент.СообщитьПользователю(
|
||||
НСтр("ru = 'Поставьте отметку о подтверждении'"),, "СогласиеСПодтверждаемойИнформацией");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Закрыть(Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбработчикиСобытийЭлементовШапкиФормы
|
||||
|
||||
&НаКлиенте
|
||||
@@ -84,6 +68,22 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбработчикиКомандФормы
|
||||
|
||||
&НаКлиенте
|
||||
Процедура Подтверждаю(Команда)
|
||||
|
||||
Если Не СогласиеСПодтверждаемойИнформацией Тогда
|
||||
ОбщегоНазначенияКлиент.СообщитьПользователю(
|
||||
НСтр("ru = 'Поставьте отметку о подтверждении'"),, "СогласиеСПодтверждаемойИнформацией");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Закрыть(Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
&НаКлиенте
|
||||
|
||||
+6
-6
@@ -3634,7 +3634,7 @@
|
||||
ЭлектроннаяПодписьКлиент.Подписать(ОписаниеДанныхДляПодписания,
|
||||
УникальныйИдентификатор,
|
||||
Новый ОписаниеОповещения("ОтправитьЗаявлениеПослеПодписанияФайлов", ЭтотОбъект),
|
||||
ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.CAdESBES"));
|
||||
ПредопределенноеЗначение("Перечисление.ТипыПодписиКриптографии.БазоваяCAdESBES"));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -4847,13 +4847,13 @@
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
КонецЕсли;
|
||||
|
||||
ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(АдресЗапросаНаСертификат); // ДвоичныеДанные
|
||||
Если ТипЗнч(ДвоичныеДанныеФайла) <> Тип("ДвоичныеДанные") Тогда
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
КонецЕсли;
|
||||
|
||||
ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(АдресЗапросаНаСертификат);
|
||||
Если ТипЗнч(ДвоичныеДанныеФайла) = Тип("ДвоичныеДанные") Тогда
|
||||
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(".p10");
|
||||
ДвоичныеДанныеФайла.Записать(ИмяВременногоФайла);
|
||||
Иначе
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
КонецЕсли;
|
||||
|
||||
ТекстовыйДокумент = Новый ТекстовыйДокумент;
|
||||
ТекстовыйДокумент.Прочитать(ИмяВременногоФайла);
|
||||
|
||||
@@ -92,7 +92,8 @@
|
||||
Процедура ОткрытьСписокЗадачТочкиМаршрута()
|
||||
|
||||
#Если ВебКлиент ИЛИ МобильныйКлиент Тогда
|
||||
ПоказатьПредупреждение(,НСтр("ru = 'Для корректной работы необходим режим тонкого или толстого клиента.'"));
|
||||
ПоказатьПредупреждение(, НСтр("ru = 'Действие недоступно в веб-клиенте или в мобильном клиенте.
|
||||
|Запустите тонкий клиент.'"));
|
||||
Возврат;
|
||||
#КонецЕсли
|
||||
ОчиститьСообщения();
|
||||
|
||||
+5
-5
@@ -96,16 +96,16 @@
|
||||
&НаКлиенте
|
||||
Процедура ПриОткрытии(Отказ)
|
||||
|
||||
#Если МобильныйКлиент Тогда
|
||||
ПоказатьПредупреждение(, НСтр("ru = 'Для корректной работы необходим режим тонкого или толстого клиента.'"));
|
||||
#Если МобильныйКлиент Тогда
|
||||
ПоказатьПредупреждение(, НСтр("ru = 'Отчет недоступен в мобильном клиенте. Запустите тонкий клиент или веб-клиент.'"));
|
||||
Отказ = Истина;
|
||||
Возврат;
|
||||
#КонецЕсли
|
||||
#КонецЕсли
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
#Если ВебКлиент Тогда
|
||||
ПоказатьОшибкуОперацияНеПоддерживаетсяВВебКлиенте();
|
||||
Возврат;
|
||||
#КонецЕсли
|
||||
#КонецЕсли
|
||||
|
||||
Если ТребуетсяВнесениеИзмененийВПрофиляхБезопасности Тогда
|
||||
|
||||
|
||||
+2
-1
@@ -265,7 +265,8 @@
|
||||
Функция ПроверитьКаталогСРезервнымиКопиями()
|
||||
|
||||
#Если ВебКлиент ИЛИ МобильныйКлиент Тогда
|
||||
ТекстСообщения = НСтр("ru = 'Для корректной работы необходим режим тонкого или толстого клиента.'");
|
||||
ТекстСообщения = НСтр("ru = 'Действие недоступно в веб-клиенте или в мобильном клиенте.
|
||||
|Запустите тонкий клиент.'");
|
||||
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
|
||||
РеквизитыЗаполнены = Ложь;
|
||||
#Иначе
|
||||
|
||||
@@ -739,7 +739,7 @@
|
||||
ИначеЕсли ЭтоПараметрСеанса(ИмяОбъектаМетаданных) Тогда
|
||||
|
||||
ВидПрава = ВидыПрав.Добавить();
|
||||
ВидПрава.Имя = "Получение";
|
||||
ВидПрава.Имя = "Получение"; //@Access-right-1
|
||||
ВидПрава.Чтение = Истина;
|
||||
|
||||
ВидПрава = ВидыПрав.Добавить();
|
||||
@@ -785,7 +785,7 @@
|
||||
ВидПрава.Чтение = Истина;
|
||||
|
||||
ВидПрава = ВидыПрав.Добавить();
|
||||
ВидПрава.Имя = "Добавление";
|
||||
ВидПрава.Имя = "Добавление"; //@Access-right-1
|
||||
ВидПрава.Изменение = Истина;
|
||||
|
||||
ВидПрава = ВидыПрав.Добавить();
|
||||
@@ -817,7 +817,7 @@
|
||||
ВидПрава.Изменение = Истина;
|
||||
|
||||
ВидПрава = ВидыПрав.Добавить();
|
||||
ВидПрава.Имя = "ИнтерактивнаяПометкаУдаления";
|
||||
ВидПрава.Имя = "ИнтерактивнаяПометкаУдаления"; //@Access-right-1
|
||||
ВидПрава.Интерактивное = Истина;
|
||||
ВидПрава.Изменение = Истина;
|
||||
|
||||
@@ -894,7 +894,7 @@
|
||||
ВидПрава.Изменение = Истина;
|
||||
|
||||
ВидПрава = ВидыПрав.Добавить();
|
||||
ВидПрава.Имя = "Выполнение";
|
||||
ВидПрава.Имя = "Выполнение"; //@Access-right-1
|
||||
ВидПрава.Изменение = Истина;
|
||||
|
||||
ВидПрава = ВидыПрав.Добавить();
|
||||
|
||||
@@ -699,19 +699,19 @@
|
||||
| ТОГДА Приоритеты.ЗаданПорядокВыполнения
|
||||
| ИНАЧЕ
|
||||
| ВЫБОР
|
||||
| КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема
|
||||
| КОГДА (НЕ Обработчики1.РазрабатываемаяПодсистема ИЛИ НЕ Обработчики2.РазрабатываемаяПодсистема)
|
||||
| И Обработчики1.ПорядокБиблиотеки > 0 И Обработчики2.ПорядокБиблиотеки > 0
|
||||
| И Обработчики1.ПорядокБиблиотеки < Обработчики2.ПорядокБиблиотеки
|
||||
| ТОГДА &До
|
||||
| КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема
|
||||
| КОГДА (НЕ Обработчики1.РазрабатываемаяПодсистема ИЛИ НЕ Обработчики2.РазрабатываемаяПодсистема)
|
||||
| И Обработчики1.ПорядокБиблиотеки > 0 И Обработчики2.ПорядокБиблиотеки > 0
|
||||
| И Обработчики1.ПорядокБиблиотеки > Обработчики2.ПорядокБиблиотеки
|
||||
| ТОГДА &После
|
||||
| КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема
|
||||
| КОГДА (НЕ Обработчики1.РазрабатываемаяПодсистема ИЛИ НЕ Обработчики2.РазрабатываемаяПодсистема)
|
||||
| И Обработчики1.ОчередьОтложеннойОбработки > 0 И Обработчики2.ОчередьОтложеннойОбработки > 0
|
||||
| И Обработчики1.ОчередьОтложеннойОбработки < Обработчики2.ОчередьОтложеннойОбработки
|
||||
| ТОГДА &До
|
||||
| КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема
|
||||
| КОГДА (НЕ Обработчики1.РазрабатываемаяПодсистема ИЛИ НЕ Обработчики2.РазрабатываемаяПодсистема)
|
||||
| И Обработчики1.ОчередьОтложеннойОбработки > 0 И Обработчики2.ОчередьОтложеннойОбработки > 0
|
||||
| И Обработчики1.ОчередьОтложеннойОбработки > Обработчики2.ОчередьОтложеннойОбработки
|
||||
| ТОГДА &После
|
||||
@@ -724,19 +724,19 @@
|
||||
| ТОГДА Приоритеты.Порядок
|
||||
| ИНАЧЕ
|
||||
| ВЫБОР
|
||||
| КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема
|
||||
| КОГДА (НЕ Обработчики1.РазрабатываемаяПодсистема ИЛИ НЕ Обработчики2.РазрабатываемаяПодсистема)
|
||||
| И Обработчики1.ПорядокБиблиотеки > 0 И Обработчики2.ПорядокБиблиотеки > 0
|
||||
| И Обработчики1.ПорядокБиблиотеки < Обработчики2.ПорядокБиблиотеки
|
||||
| ТОГДА &До
|
||||
| КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема
|
||||
| КОГДА (НЕ Обработчики1.РазрабатываемаяПодсистема ИЛИ НЕ Обработчики2.РазрабатываемаяПодсистема)
|
||||
| И Обработчики1.ПорядокБиблиотеки > 0 И Обработчики2.ПорядокБиблиотеки > 0
|
||||
| И Обработчики1.ПорядокБиблиотеки > Обработчики2.ПорядокБиблиотеки
|
||||
| ТОГДА &После
|
||||
| КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема
|
||||
| КОГДА (НЕ Обработчики1.РазрабатываемаяПодсистема ИЛИ НЕ Обработчики2.РазрабатываемаяПодсистема)
|
||||
| И Обработчики1.ОчередьОтложеннойОбработки > 0 И Обработчики2.ОчередьОтложеннойОбработки > 0
|
||||
| И Обработчики1.ОчередьОтложеннойОбработки < Обработчики2.ОчередьОтложеннойОбработки
|
||||
| ТОГДА &До
|
||||
| КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема
|
||||
| КОГДА (НЕ Обработчики1.РазрабатываемаяПодсистема ИЛИ НЕ Обработчики2.РазрабатываемаяПодсистема)
|
||||
| И Обработчики1.ОчередьОтложеннойОбработки > 0 И Обработчики2.ОчередьОтложеннойОбработки > 0
|
||||
| И Обработчики1.ОчередьОтложеннойОбработки > Обработчики2.ОчередьОтложеннойОбработки
|
||||
| ТОГДА &После
|
||||
@@ -1537,8 +1537,18 @@
|
||||
ИмяСобытия = НСтр("ru = 'Построение очереди обработчиков обновления'", ОбщегоНазначения.КодОсновногоЯзыка());
|
||||
СписокПроблемныхОбработчиков = "";
|
||||
Для Каждого Ошибка Из Ошибки Цикл
|
||||
Если НЕ ПустаяСтрока(Ошибка.Обработчик) Тогда
|
||||
ОбработчикиОшибки = СтрРазделить(Ошибка.Обработчик, Символы.ПС);
|
||||
Если ОбработчикиОшибки.Количество() = 1 Тогда
|
||||
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(Ошибка.ОбъектМетаданных);
|
||||
СписокПроблемныхОбработчиков = СписокПроблемныхОбработчиков + Ошибка.Обработчик + Символы.ПС;
|
||||
КонецЕсли;
|
||||
ОбработчикиОшибки = СтрРазделить(Ошибка.Обработчик, Символы.ПС);
|
||||
Для Каждого Обработчик Из ОбработчикиОшибки Цикл
|
||||
Если СтрНайти(СписокПроблемныхОбработчиков, Обработчик) = 0 Тогда
|
||||
СписокПроблемныхОбработчиков = СписокПроблемныхОбработчиков + Обработчик + Символы.ПС;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
ЗаписьЖурналаРегистрации(
|
||||
ИмяСобытия,
|
||||
УровеньЖурналаРегистрации.Ошибка,
|
||||
@@ -1646,7 +1656,7 @@
|
||||
ТекстСообщения = НСтр("ru = 'Обнаружен цикл порядка выполнения:'") + Символы.ПС + "%Путь%";
|
||||
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Путь%", ТекстПути);
|
||||
|
||||
ДобавитьОшибку("", ТекстСообщения);
|
||||
ДобавитьОшибку(ТекстПути, ТекстСообщения);
|
||||
Если СообщатьОбОшибках Тогда
|
||||
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
|
||||
КонецЕсли;
|
||||
|
||||
+72
-2
@@ -1444,6 +1444,9 @@
|
||||
<currentRowUse>Auto</currentRowUse>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ГруппаОбновлениеПрограммы_НастройкиСПодсказкой</name>
|
||||
<id>1986</id>
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ГруппаОбновлениеПрограммы_Настройки</name>
|
||||
<id>1772</id>
|
||||
@@ -1578,7 +1581,6 @@
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<height>2</height>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<horizontalStretch>true</horizontalStretch>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
@@ -1652,7 +1654,75 @@
|
||||
</extendedTooltip>
|
||||
<type>UsualGroup</type>
|
||||
<extInfo xsi:type="form:UsualGroupExtInfo">
|
||||
<group>HorizontalIfPossible</group>
|
||||
<group>AlwaysHorizontal</group>
|
||||
<behavior>Auto</behavior>
|
||||
<showLeftMargin>true</showLeftMargin>
|
||||
<united>true</united>
|
||||
<throughAlign>Auto</throughAlign>
|
||||
<currentRowUse>Auto</currentRowUse>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Decoration">
|
||||
<name>ДекорацияПодсказкаАвтоматическойПроверкиОбновлений</name>
|
||||
<id>1988</id>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Настройка автоматической проверки обновления выполняется для каждого пользователя.</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ДекорацияПодсказкаАвтоматическойПроверкиОбновленийРасширеннаяПодсказка</name>
|
||||
<id>1990</id>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>ДекорацияПодсказкаАвтоматическойПроверкиОбновленийКонтекстноеМеню</name>
|
||||
<id>1989</id>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>Label</type>
|
||||
<width>40</width>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<height>3</height>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.ПоясняющийТекст</color>
|
||||
</textColor>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<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>1987</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>Auto</behavior>
|
||||
<showLeftMargin>true</showLeftMargin>
|
||||
<united>true</united>
|
||||
|
||||
Loaded 100 of 191 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user