3_1_10_295

This commit is contained in:
Компания 1С committed 2024-08-30 14:10:00 +03:00
1 parent 10a6064cd2
commit 7da40d8877
189 files changed
+17108 -4192

No files matched your search

@@ -76,16 +76,6 @@
Для Каждого Расширение Из РасширенияБазыДанных Цикл
КонтрольнаяСумма = КонтрольнаяСуммаРасширения(Расширение);
РасширениеПриЗапуске = РасширенияПриЗапуске.Получить(КонтрольнаяСумма);
Если РасширениеПриЗапуске = Неопределено Тогда
Ошибки = Расширение.ПроверитьВозможностьПрименения();
Для Каждого Ошибка Из Ошибки Цикл
Если Ошибка.Важность = ВажностьПроблемыПримененияРасширенияКонфигурации.Критичная Тогда
РасширенияПриЗапуске.Вставить(КонтрольнаяСумма, Расширение);
РасширениеПриЗапуске = Расширение;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если РасширениеПриЗапуске <> Неопределено Тогда
ДобавленныеРасширения.Вставить(КонтрольнаяСумма, Истина);
Расширения.Добавить(РасширениеПриЗапуске);
@@ -1927,7 +1927,7 @@
<id>182</id>
<title>
<key>ru</key>
<value>Включить роли</value>
<value>Включить выделенные роли</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -1958,7 +1958,7 @@
<id>183</id>
<title>
<key>ru</key>
<value>Исключить роли</value>
<value>Исключить выделенные роли</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -2218,6 +2218,7 @@
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<headerHeight>1</headerHeight>
<footerHeight>1</footerHeight>
<horizontalScrollBar>AutoUse</horizontalScrollBar>
@@ -3540,12 +3541,12 @@
<name>ИсключитьРоли</name>
<title>
<key>ru</key>
<value>Исключить роли</value>
<value>Исключить выделенные роли</value>
</title>
<id>5</id>
<toolTip>
<key>ru</key>
<value>Исключить роли</value>
<value>Исключить выделенные роли</value>
</toolTip>
<use>
<common>true</common>
@@ -3567,12 +3568,12 @@
<name>ВключитьРоли</name>
<title>
<key>ru</key>
<value>Включить роли</value>
<value>Включить выделенные роли</value>
</title>
<id>6</id>
<toolTip>
<key>ru</key>
<value>Включить роли</value>
<value>Включить выделенные роли</value>
</toolTip>
<use>
<common>true</common>
@@ -966,7 +966,7 @@
&НаКлиенте
Процедура ВключитьРоли(Команда)
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВсе");
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВыделенные");
ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект, Ложь);
@@ -975,7 +975,7 @@
&НаКлиенте
Процедура ИсключитьРоли(Команда)
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ИсключитьВсе");
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ИсключитьВыделенные");
КонецПроцедуры
@@ -1296,7 +1296,7 @@
<id>139</id>
<title>
<key>ru</key>
<value>Включить роли</value>
<value>Включить выделенные роли</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -1327,7 +1327,7 @@
<id>140</id>
<title>
<key>ru</key>
<value>Исключить роли</value>
<value>Исключить выделенные роли</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -1588,6 +1588,7 @@
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<headerHeight>1</headerHeight>
<footerHeight>1</footerHeight>
<horizontalScrollBar>AutoUse</horizontalScrollBar>
@@ -2114,12 +2115,12 @@
<name>ИсключитьРоли</name>
<title>
<key>ru</key>
<value>Исключить роли</value>
<value>Исключить выделенные роли</value>
</title>
<id>3</id>
<toolTip>
<key>ru</key>
<value>Исключить роли</value>
<value>Исключить выделенные роли</value>
</toolTip>
<use>
<common>true</common>
@@ -2140,12 +2141,12 @@
<name>ВключитьРоли</name>
<title>
<key>ru</key>
<value>Включить роли</value>
<value>Включить выделенные роли</value>
</title>
<id>4</id>
<toolTip>
<key>ru</key>
<value>Включить роли</value>
<value>Включить выделенные роли</value>
</toolTip>
<use>
<common>true</common>
@@ -392,7 +392,7 @@
&НаКлиенте
Процедура ВключитьРоли(Команда)
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВсе");
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВыделенные");
ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект, Ложь);
@@ -401,7 +401,7 @@
&НаКлиенте
Процедура ИсключитьРоли(Команда)
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ИсключитьВсе");
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ИсключитьВыделенные");
КонецПроцедуры
@@ -1213,10 +1213,6 @@
<event>TextEditEnd</event>
<name>ЗначениеДоступаОкончаниеВводаТекста</name>
</handlers>
<handlers>
<event>ChoiceProcessing</event>
<name>ЗначениеДоступаОбработкаВыбора</name>
</handlers>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
@@ -1270,8 +1266,148 @@
<autoCommandBar>
<name>ЗначенияДоступаКоманднаяПанель</name>
<id>68</id>
<items xsi:type="form:Button">
<name>ЗначенияДоступаПодобратьЗначенияДоступа</name>
<id>457</id>
<title>
<key>ru</key>
<value>Подобрать</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗначенияДоступаПодобратьЗначенияДоступаРасширеннаяПодсказка</name>
<id>458</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>461</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗначенияДоступаДобавитьРасширеннаяПодсказка</name>
<id>462</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Item.ЗначенияДоступа.StandardCommand.Add</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>466</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗначенияДоступаУдалитьРасширеннаяПодсказка</name>
<id>467</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Item.ЗначенияДоступа.StandardCommand.Delete</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</items>
<items xsi:type="form:FormGroup">
<name>ЗначенияДоступаСтандартныеКоманды</name>
<id>459</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Значения доступа стандартные команды</value>
</title>
<extendedTooltip>
<name>ЗначенияДоступаСтандартныеКомандыРасширеннаяПодсказка</name>
<id>460</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<extInfo xsi:type="form:ButtonGroupExtInfo">
<commandSource>Item.ЗначенияДоступа</commandSource>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>ЗначенияДоступаПоиск</name>
<id>463</id>
<extendedTooltip>
<name>ЗначенияДоступаПоискРасширеннаяПодсказка</name>
<id>465</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗначенияДоступаПоискКонтекстноеМеню</name>
<id>464</id>
<autoFill>true</autoFill>
</contextMenu>
<source>ЗначенияДоступа</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>OnEditEnd</event>
@@ -1279,7 +1415,7 @@
</handlers>
<handlers>
<event>ChoiceProcessing</event>
<name>ЗначениеДоступаОбработкаВыбора</name>
<name>ЗначенияДоступаОбработкаВыбора</name>
</handlers>
<handlers>
<event>OnStartEdit</event>
@@ -2389,6 +2525,28 @@
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>ПодобратьЗначенияДоступа</name>
<title>
<key>ru</key>
<value>Подобрать</value>
</title>
<id>4</id>
<toolTip>
<key>ru</key>
<value>Подобрать</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ПодобратьЗначенияДоступа</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -939,18 +939,18 @@
КонецПроцедуры
&НаКлиенте
Процедура ЗначениеДоступаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Процедура ЗначенияДоступаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаНачалоВыбора(
ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
УправлениеДоступомСлужебныйКлиент.ЗначенияДоступаОбработкаВыбора(
ЭтотОбъект, Элемент, ВыбранноеЗначение, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ЗначениеДоступаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Процедура ЗначениеДоступаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаОбработкаВыбора(
ЭтотОбъект, Элемент, ВыбранноеЗначение, СтандартнаяОбработка);
УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаНачалоВыбора(
ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
@@ -1004,6 +1004,13 @@
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьЗначенияДоступа(Команда)
УправлениеДоступомСлужебныйКлиент.ЗначенияДоступаПодобрать(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -2874,7 +2874,7 @@
<id>185</id>
<title>
<key>ru</key>
<value>Включить роли</value>
<value>Включить выделенные роли</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -2905,7 +2905,7 @@
<id>186</id>
<title>
<key>ru</key>
<value>Исключить роли</value>
<value>Исключить выделенные роли</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -3165,6 +3165,7 @@
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<headerHeight>1</headerHeight>
<footerHeight>1</footerHeight>
<horizontalScrollBar>AutoUse</horizontalScrollBar>
@@ -4818,12 +4819,12 @@
<name>ИсключитьРоли</name>
<title>
<key>ru</key>
<value>Исключить роли</value>
<value>Исключить выделенные роли</value>
</title>
<id>2</id>
<toolTip>
<key>ru</key>
<value>Исключить роли</value>
<value>Исключить выделенные роли</value>
</toolTip>
<use>
<common>true</common>
@@ -4844,12 +4845,12 @@
<name>ВключитьРоли</name>
<title>
<key>ru</key>
<value>Включить роли</value>
<value>Включить выделенные роли</value>
</title>
<id>3</id>
<toolTip>
<key>ru</key>
<value>Включить роли</value>
<value>Включить выделенные роли</value>
</toolTip>
<use>
<common>true</common>
@@ -1310,7 +1310,8 @@
&НаКлиенте
Процедура ВключитьРоли(Команда)
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВсе");
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВыделенные");
ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект, Ложь);
КонецПроцедуры
@@ -1318,7 +1319,7 @@
&НаКлиенте
Процедура ИсключитьРоли(Команда)
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ИсключитьВсе");
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ИсключитьВыделенные");
КонецПроцедуры
@@ -418,7 +418,7 @@
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
</handlers>
<windowOpeningMode>DontBlock</windowOpeningMode>
<windowOpeningMode>LockOwner</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoTitle>true</autoTitle>
<autoUrl>true</autoUrl>
@@ -0,0 +1,887 @@
<?xml version="1.0" encoding="UTF-8"?>
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form">
<items xsi:type="form:FormGroup">
<name>ГруппаПароль</name>
<id>43</id>
<items xsi:type="form:FormField">
<name>Пароль</name>
<id>32</id>
<title>
<key>ru</key>
<value>Пин-код</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Пароль</segments>
</dataPath>
<handlers>
<event>OnChange</event>
<name>ПарольПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ПарольРасширеннаяПодсказка</name>
<id>34</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПарольКонтекстноеМеню</name>
<id>33</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>StartChoice</event>
<name>ПарольНачалоВыбора</name>
</handlers>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<passwordMode>true</passwordMode>
<choiceButton>true</choiceButton>
<choiceButtonPicture xsi:type="core:PictureRef">
<picture>CommonPicture.ВводимыеСимволыВидны</picture>
</choiceButtonPicture>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
<inputHint>
<key>ru</key>
<value>Введите пин-код пользователя токена</value>
</inputHint>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЗапомнитьПароль</name>
<id>35</id>
<title>
<key>ru</key>
<value>Запомнить на время сеанса</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ЗапомнитьПароль</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<toolTip>
<key>ru</key>
<value>Запомнить пароль токена до закрытия приложения. При снятии флажка пароль стирается из памяти, если запоминался ранее.</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<handlers>
<event>OnChange</event>
<name>ЗапомнитьПарольПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ЗапомнитьПарольРасширеннаяПодсказка</name>
<id>37</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗапомнитьПарольКонтекстноеМеню</name>
<id>36</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Пароль</value>
</title>
<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>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаОбновлениеСертификатов</name>
<id>45</id>
<items xsi:type="form:Decoration">
<name>КартинкаОбновлениеСертификатов</name>
<id>47</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КартинкаОбновлениеСертификатовРасширеннаяПодсказка</name>
<id>49</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>КартинкаОбновлениеСертификатовКонтекстноеМеню</name>
<id>48</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.ДлительнаяОперация16</picture>
</picture>
<fileDragMode>AsFileRef</fileDragMode>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ДекорацияОбновлениеСертификатов</name>
<id>50</id>
<title>
<key>ru</key>
<value>Поиск сертификатов на токене...</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДекорацияОбновлениеСертификатовРасширеннаяПодсказка</name>
<id>52</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДекорацияОбновлениеСертификатовКонтекстноеМеню</name>
<id>51</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Обновление сертификатов</value>
</title>
<extendedTooltip>
<name>ГруппаОбновлениеСертификатовРасширеннаяПодсказка</name>
<id>46</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Table">
<name>Сертификаты</name>
<id>7</id>
<title>
<key>ru</key>
<value>Сертификаты на токене</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Сертификаты</segments>
</dataPath>
<titleLocation>None</titleLocation>
<excludedCommands>Add</excludedCommands>
<excludedCommands>Change</excludedCommands>
<excludedCommands>Copy</excludedCommands>
<excludedCommands>Delete</excludedCommands>
<items xsi:type="form:FormField">
<name>СертификатыПредставление</name>
<id>20</id>
<title>
<key>ru</key>
<value>Сертификат</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Сертификаты.Представление</segments>
</dataPath>
<extendedTooltip>
<name>СертификатыПредставлениеРасширеннаяПодсказка</name>
<id>22</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СертификатыПредставлениеКонтекстноеМеню</name>
<id>21</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>40</id>
<title>
<key>ru</key>
<value>Кем выдан</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Сертификаты.КемВыдан</segments>
</dataPath>
<extendedTooltip>
<name>СертификатыКемВыданРасширеннаяПодсказка</name>
<id>42</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СертификатыКемВыданКонтекстноеМеню</name>
<id>41</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<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>26</id>
<title>
<key>ru</key>
<value>Действует до</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Сертификаты.ДействуетДо</segments>
</dataPath>
<extendedTooltip>
<name>СертификатыДействуетДоРасширеннаяПодсказка</name>
<id>28</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СертификатыДействуетДоКонтекстноеМеню</name>
<id>27</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>23</id>
<title>
<key>ru</key>
<value>Отпечаток</value>
</title>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Сертификаты.Отпечаток</segments>
</dataPath>
<extendedTooltip>
<name>СертификатыОтпечатокРасширеннаяПодсказка</name>
<id>25</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СертификатыОтпечатокКонтекстноеМеню</name>
<id>24</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>
<autoCommandBar>
<name>СертификатыКоманднаяПанель</name>
<id>8</id>
<items xsi:type="form:Button">
<name>СертификатыОбновить</name>
<id>38</id>
<title>
<key>ru</key>
<value>Обновить</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СертификатыОбновитьРасширеннаяПодсказка</name>
<id>39</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>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>Selection</event>
<name>СертификатыВыбор</name>
</handlers>
<searchStringAddition>
<name>СертификатыСтрокаПоиска</name>
<id>11</id>
<extendedTooltip>
<name>СертификатыСтрокаПоискаРасширеннаяПодсказка</name>
<id>13</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СертификатыСтрокаПоискаКонтекстноеМеню</name>
<id>12</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Сертификаты</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchStringAddition>
<viewStatusAddition>
<name>СертификатыСостояниеПросмотра</name>
<id>17</id>
<extendedTooltip>
<name>СертификатыСостояниеПросмотраРасширеннаяПодсказка</name>
<id>19</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СертификатыСостояниеПросмотраКонтекстноеМеню</name>
<id>18</id>
<autoFill>true</autoFill>
</contextMenu>
<type>ViewStatusAddition</type>
<source>Сертификаты</source>
<extInfo xsi:type="form:ViewStatusAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</viewStatusAddition>
<searchControlAddition>
<name>СертификатыУправлениеПоиском</name>
<id>14</id>
<extendedTooltip>
<name>СертификатыУправлениеПоискомРасширеннаяПодсказка</name>
<id>16</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СертификатыУправлениеПоискомКонтекстноеМеню</name>
<id>15</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Сертификаты</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchControlAddition>
<extendedTooltip>
<name>СертификатыРасширеннаяПодсказка</name>
<id>10</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СертификатыКонтекстноеМеню</name>
<id>9</id>
<autoFill>true</autoFill>
</contextMenu>
<readOnly>true</readOnly>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<header>true</header>
<headerHeight>1</headerHeight>
<footerHeight>1</footerHeight>
<horizontalScrollBar>AutoUse</horizontalScrollBar>
<verticalScrollBar>AutoUse</verticalScrollBar>
<horizontalLines>true</horizontalLines>
<verticalLines>true</verticalLines>
<useAlternationRowColorBWA>false</useAlternationRowColorBWA>
<searchOnInput>Auto</searchOnInput>
<initialListView>Auto</initialListView>
<horizontalStretch>true</horizontalStretch>
<verticalStretch>true</verticalStretch>
<fileDragMode>AsFileRef</fileDragMode>
<autoMaxCardHeight>true</autoMaxCardHeight>
<rowFilter xsi:type="core:UndefinedValue"/>
</items>
<items xsi:type="form:FormField">
<name>СерийныйНомер</name>
<id>4</id>
<title>
<key>ru</key>
<value>Серийный номер</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>СерийныйНомер</segments>
</dataPath>
<extendedTooltip>
<name>СерийныйНомерРасширеннаяПодсказка</name>
<id>6</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СерийныйНомерКонтекстноеМеню</name>
<id>5</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<readOnly>true</readOnly>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<autoCommandBar>
<name>ФормаКоманднаяПанель</name>
<id>-1</id>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<handlers>
<event>OnOpen</event>
<name>ПриОткрытии</name>
</handlers>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
</handlers>
<windowOpeningMode>LockOwner</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoUrl>true</autoUrl>
<group>Vertical</group>
<autoFillCheck>true</autoFillCheck>
<allowFormCustomize>true</allowFormCustomize>
<enabled>true</enabled>
<showTitle>auto</showTitle>
<showCloseButton>true</showCloseButton>
<attributes>
<name>СерийныйНомер</name>
<title>
<key>ru</key>
<value>Серийный номер</value>
</title>
<id>1</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>Представление</name>
<id>2</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>Сертификаты</name>
<title>
<key>ru</key>
<value>Сертификаты</value>
</title>
<id>3</id>
<valueType>
<types>ValueTable</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<columns>
<name>Представление</name>
<title>
<key>ru</key>
<value>Сертификат</value>
</title>
<id>5</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>Отпечаток</name>
<title>
<key>ru</key>
<value>Отпечаток</value>
</title>
<id>6</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>ДействуетДо</name>
<title>
<key>ru</key>
<value>Действует до</value>
</title>
<id>7</id>
<valueType>
<types>Date</types>
<dateQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>АдресСертификата</name>
<id>12</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>КемВыдан</name>
<title>
<key>ru</key>
<value>Кем выдан</value>
</title>
<id>2</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
</attributes>
<attributes>
<name>ЭтоСервер</name>
<id>4</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>Слот</name>
<id>9</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>Пароль</name>
<title>
<key>ru</key>
<value>Пин-код</value>
</title>
<id>10</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ЗапомнитьПароль</name>
<title>
<key>ru</key>
<value>Запомнить на время сеанса</value>
</title>
<id>11</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>Обновить</name>
<title>
<key>ru</key>
<value>Обновить</value>
</title>
<id>1</id>
<toolTip>
<key>ru</key>
<value>Обновить</value>
</toolTip>
<use>
<common>true</common>
</use>
<picture xsi:type="core:PictureRef">
<picture>StdPicture.Refresh</picture>
</picture>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>Обновить</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<parameters>
<name>Токен</name>
<valueType/>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar/>
</commandInterface>
</form:Form>
@@ -0,0 +1,229 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2024, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОписаниеПеременных
&НаКлиенте
Перем ВнутренниеДанные, СвойстваПароля;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Параметры.Токен) Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры.Токен);
Если ЭтоСервер Тогда
ШаблонЗаголовка = НСтр("ru = '%1 на сервере'");
Иначе
ШаблонЗаголовка = НСтр("ru = '%1 на компьютере'");
КонецЕсли;
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонЗаголовка, Параметры.Токен.Представление);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ВнутренниеДанные = Неопределено Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ЗапомнитьПарольПриИзменении(Элемент)
ДополнительныеПараметры = ДополнительныеПараметры();
ДополнительныеПараметры.Вставить("ПриИзмененииРеквизитаЗапомнитьПароль", Истина);
ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект,
ВнутренниеДанные, СвойстваПароля, ДополнительныеПараметры);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// АПК:78-выкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер.
&НаКлиенте
Процедура ПродолжитьОткрытие(Оповещение, ОбщиеВнутренниеДанные, КлиентскиеПараметры) Экспорт
// АПК:78-вкл: для безопасной передачи данных на клиенте между формами, не отправляя их на сервер.
ДополнительныеПараметры = ДополнительныеПараметры();
ВнутренниеДанные = ОбщиеВнутренниеДанные;
ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект,
ВнутренниеДанные, СвойстваПароля, ДополнительныеПараметры);
Открыть();
ЗаполнитьСписокСертификатов();
КонецПроцедуры
&НаКлиенте
Асинх Процедура ЗаполнитьСписокСертификатов()
Если Не ЗначениеЗаполнено(СвойстваПароля.Значение) Тогда
Возврат;
КонецЕсли;
Токен = Новый Структура;
Токен.Вставить("Слот");
Токен.Вставить("СерийныйНомер");
ЗаполнитьЗначенияСвойств(Токен, ЭтотОбъект);
Токен.Вставить("ЗначениеПароля", СвойстваПароля.Значение);
Элементы.ГруппаОбновлениеСертификатов.Видимость = Истина;
Результат = Ждать ЭлектроннаяПодписьКлиентЛокализация.СертификатыНаТокене(Токен, Неопределено, Истина);
ТекстОшибки = "";
Если Результат.ПроверкаВыполнена Тогда
Ошибки = Новый Массив;
ЗаполнитьСписокСертификатовНаСервере(Результат.Сертификаты, Ошибки);
Если Ошибки.Количество() > 0 Тогда
ТекстОшибки = СтрСоединить(Ошибки, Символы.ПС);
КонецЕсли;
ДополнительныеПараметры = ДополнительныеПараметры();
ДополнительныеПараметры.Вставить("ПриУспешномВыполненииОперации", Истина);
ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект,
ВнутренниеДанные, СвойстваПароля, ДополнительныеПараметры);
Иначе
ТекстОшибки = Результат.Ошибка;
Если ЭлектроннаяПодписьКлиентЛокализация.ЭтоОшибкаНеправильныйПинКод(Результат.Ошибка) Тогда
ТекстОшибки = НСтр("ru = 'Введен неверный пин-код пользователя токена.'");
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗаголовокПредупреждения", НСтр("ru = 'Не удалось прочитать сертификаты на токене'"));
ПараметрыФормы.Вставить("ТекстОшибкиКлиент", ТекстОшибки);
ПараметрыФормы.Вставить("ПоказатьТребуетсяПомощь", Истина);
ЭлектроннаяПодписьСлужебныйКлиент.ОткрытьФормуРасширенногоПредставленияОшибки(ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
Элементы.ГруппаОбновлениеСертификатов.Видимость = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ПарольПриИзменении(Элемент)
ДополнительныеПараметры = ДополнительныеПараметры();
ДополнительныеПараметры.Вставить("ПриИзмененииРеквизитаПароль", Истина);
ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект,
ВнутренниеДанные, СвойстваПароля, ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ПарольНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДополнительныеПараметры = ДополнительныеПараметры();
ЭлектроннаяПодписьСлужебныйКлиент.ПолеПароляНачалоВыбора(ЭтотОбъект,
ВнутренниеДанные, СвойстваПароля, СтандартнаяОбработка, ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура Обновить(Команда)
ЗаполнитьСписокСертификатов()
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокСертификатовНаСервере(СертификатыСтрокой, Ошибки)
Сертификаты.Очистить();
Для Каждого Сертификат Из СертификатыСтрокой Цикл
Сертификат = СтрЗаменить(Сертификат, "-----BEGIN CERTIFICATE-----", "");
Сертификат = СтрЗаменить(Сертификат, "-----END CERTIFICATE-----", "");
Сертификат = СтрЗаменить(Сертификат, Символы.ПС, "");
Попытка
ДанныеСертификата = Base64Значение(Сертификат);
Исключение
Ошибки.Добавить(ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Продолжить;
КонецПопытки;
Если ТипЗнч(ДанныеСертификата) <> Тип("ДвоичныеДанные") Тогда
Продолжить;
КонецЕсли;
Попытка
СертификатКриптографии = Новый СертификатКриптографии(ДанныеСертификата);
Исключение
Ошибки.Добавить(ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Продолжить;
КонецПопытки;
СвойстваСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваСертификата(
СертификатКриптографии, ЭлектроннаяПодписьСлужебный.РазницаСУниверсальнымВременем(), ДанныеСертификата);
НоваяСтрока = Сертификаты.Добавить();
НоваяСтрока.ДействуетДо = СвойстваСертификата.ДействителенДо;
НоваяСтрока.Отпечаток = СвойстваСертификата.Отпечаток;
НоваяСтрока.Представление = СвойстваСертификата.Представление;
НоваяСтрока.КемВыдан = СвойстваСертификата.КемВыдан;
НоваяСтрока.АдресСертификата = ПоместитьВоВременноеХранилище(СертификатКриптографии.Выгрузить(), УникальныйИдентификатор);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СертификатыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СсылкаНаСертификат = ПолучитьСсылкуНаСертификат(Элементы.Сертификаты.ТекущиеДанные.Отпечаток);
Если Не ЗначениеЗаполнено(СсылкаНаСертификат) Тогда
ЭлектроннаяПодписьКлиент.ОткрытьСертификат(Элементы.Сертификаты.ТекущиеДанные.АдресСертификата);
Иначе
ЭлектроннаяПодписьКлиент.ОткрытьСертификат(СсылкаНаСертификат);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаСертификат(Отпечаток)
Возврат ЭлектроннаяПодпись.СсылкаНаСертификат(Отпечаток);
КонецФункции
&НаКлиенте
Функция ДополнительныеПараметры()
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПриЧтенииСертификатовТокена", Истина);
ДополнительныеПараметры.Вставить("Сертификат", СерийныйНомер);
ДополнительныеПараметры.Вставить("ВводитьПарольВПрограммеЭлектроннойПодписи", Ложь);
Возврат ДополнительныеПараметры;
КонецФункции
#КонецОбласти
@@ -318,4 +318,13 @@
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="4d9df55f-724d-4792-96a7-885df898e7cc">
<name>Токен</name>
<synonym>
<key>ru</key>
<value>Токен</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:Catalog>
@@ -556,7 +556,7 @@
<id>212</id>
<title>
<key>ru</key>
<value>Включить роли</value>
<value>Включить выделенные роли</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -587,7 +587,7 @@
<id>213</id>
<title>
<key>ru</key>
<value>Исключить роли</value>
<value>Исключить выделенные роли</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -847,6 +847,7 @@
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<headerHeight>1</headerHeight>
<footerHeight>1</footerHeight>
<horizontalScrollBar>AutoUse</horizontalScrollBar>
@@ -1320,10 +1321,6 @@
<event>TextEditEnd</event>
<name>ЗначениеДоступаОкончаниеВводаТекста</name>
</handlers>
<handlers>
<event>ChoiceProcessing</event>
<name>ЗначениеДоступаОбработкаВыбора</name>
</handlers>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
@@ -1372,13 +1369,157 @@
<autoCommandBar>
<name>ЗначенияДоступаКоманднаяПанель</name>
<id>235</id>
<items xsi:type="form:Button">
<name>ЗначенияДоступаПодобратьЗначенияДоступа</name>
<id>417</id>
<title>
<key>ru</key>
<value>Подобрать</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗначенияДоступаПодобратьЗначенияДоступаРасширеннаяПодсказка</name>
<id>418</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>419</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗначенияДоступаДобавитьРасширеннаяПодсказка</name>
<id>420</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Item.ЗначенияДоступа.StandardCommand.Add</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>421</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗначенияДоступаУдалитьРасширеннаяПодсказка</name>
<id>422</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Item.ЗначенияДоступа.StandardCommand.Delete</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</items>
<items xsi:type="form:FormGroup">
<name>ЗначенияДоступаСтандартныеКоманды</name>
<id>423</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Значения доступа стандартные команды</value>
</title>
<extendedTooltip>
<name>ЗначенияДоступаСтандартныеКомандыРасширеннаяПодсказка</name>
<id>424</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<extInfo xsi:type="form:ButtonGroupExtInfo">
<commandSource>Item.ЗначенияДоступа</commandSource>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>ЗначенияДоступаПоиск</name>
<id>425</id>
<extendedTooltip>
<name>ЗначенияДоступаПоискРасширеннаяПодсказка</name>
<id>427</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗначенияДоступаПоискКонтекстноеМеню</name>
<id>426</id>
<autoFill>true</autoFill>
</contextMenu>
<source>ЗначенияДоступа</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>OnEditEnd</event>
<name>ЗначенияДоступаПриОкончанииРедактирования</name>
</handlers>
<handlers>
<event>ChoiceProcessing</event>
<name>ЗначенияДоступаОбработкаВыбора</name>
</handlers>
<handlers>
<event>OnStartEdit</event>
<name>ЗначенияДоступаПриНачалеРедактирования</name>
@@ -2479,12 +2620,12 @@
<name>ВключитьРоли</name>
<title>
<key>ru</key>
<value>Включить роли</value>
<value>Включить выделенные роли</value>
</title>
<id>5</id>
<toolTip>
<key>ru</key>
<value>Включить роли</value>
<value>Включить выделенные роли</value>
</toolTip>
<use>
<common>true</common>
@@ -2505,12 +2646,12 @@
<name>ИсключитьРоли</name>
<title>
<key>ru</key>
<value>Исключить роли</value>
<value>Исключить выделенные роли</value>
</title>
<id>6</id>
<toolTip>
<key>ru</key>
<value>Исключить роли</value>
<value>Исключить выделенные роли</value>
</toolTip>
<use>
<common>true</common>
@@ -2620,6 +2761,28 @@
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>ПодобратьЗначенияДоступа</name>
<title>
<key>ru</key>
<value>Подобрать</value>
</title>
<id>9</id>
<toolTip>
<key>ru</key>
<value>Подобрать</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ПодобратьЗначенияДоступа</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -385,18 +385,18 @@
КонецПроцедуры
&НаКлиенте
Процедура ЗначениеДоступаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Процедура ЗначенияДоступаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаНачалоВыбора(
ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
УправлениеДоступомСлужебныйКлиент.ЗначенияДоступаОбработкаВыбора(
ЭтотОбъект, Элемент, ВыбранноеЗначение, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ЗначениеДоступаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Процедура ЗначениеДоступаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаОбработкаВыбора(
ЭтотОбъект, Элемент, ВыбранноеЗначение, СтандартнаяОбработка);
УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаНачалоВыбора(
ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
@@ -516,7 +516,7 @@
&НаКлиенте
Процедура ВключитьРоли(Команда)
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВсе");
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВыделенные");
ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект, Ложь);
@@ -525,7 +525,7 @@
&НаКлиенте
Процедура ИсключитьРоли(Команда)
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ИсключитьВсе");
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ИсключитьВыделенные");
КонецПроцедуры
@@ -535,6 +535,13 @@
ПользователиСлужебныйКлиент.ВыбратьНазначение(ЭтотОбъект, НСтр("ru = 'Выбор назначения профиля групп доступа'"),,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьЗначенияДоступа(Команда)
УправлениеДоступомСлужебныйКлиент.ЗначенияДоступаПодобрать(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -41,7 +41,7 @@
ВидыФорм =
",ПодписаниеДанных,ШифрованиеДанных,РасшифровкаДанных,
|,ВыборСертификатаДляПодписанияИлиРасшифровки,ПроверкаСертификата,";
|,ВыборСертификатаДляПодписанияИлиРасшифровки,ПроверкаСертификата,Токен,";
Если СтрНайти(ВидыФорм, "," + ВидФормы + ",") = 0 Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -53,7 +53,11 @@
ВладелецНовойФормы = Новый УникальныйИдентификатор;
КонецЕсли;
ИмяНовойФормы = "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Форма." + ВидФормы;
Если ВидФормы = "Токен" Тогда
ИмяНовойФормы = "Справочник.ПрограммыЭлектроннойПодписиИШифрования.Форма." + ВидФормы;
Иначе
ИмяНовойФормы = "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Форма." + ВидФормы;
КонецЕсли;
Контекст = Новый Структура;
Форма = ОткрытьФорму(ИмяНовойФормы, СерверныеПараметры, ВладелецНовойФормы,,,,
@@ -21,6 +21,7 @@
ЭлектроннаяПодписьСлужебный.НастроитьПояснениеВводаПароля(ЭтотОбъект, ,
Элементы.ПояснениеУсиленногоПароля.Имя);
УстановитьТипПодписи(Параметры.ТипПодписи);
ЭлектроннаяПодписьСлужебный.НастроитьФормуПодписанияШифрованияРасшифровки(ЭтотОбъект);
Если ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи() Тогда
@@ -34,8 +35,6 @@
МодульСервисКриптографииDSSПодтверждениеСервер.ПодтверждениеПриИзмененииСертификата(ЭтотОбъект, Сертификат);
КонецЕсли;
УстановитьТипПодписи(Параметры.ТипПодписи);
Если Не ЭлектроннаяПодпись.ДоступнаУсовершенствованнаяПодпись() Тогда
ТипПодписи = Неопределено;
Элементы.ТипПодписи.Видимость = Ложь;
@@ -1045,7 +1044,15 @@
КонецЕсли;
Если ОповеститьОбОкончанииСрокаДействия Тогда
ПараметрыОткрытияФормы = Новый Структура("Сертификат", Сертификат);
Если РезультатПроверкиУдостоверяющегоЦентра <> Неопределено
И РезультатПроверкиУдостоверяющегоЦентра.Действует
И (ЗначениеЗаполнено(РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ТекстОшибки)
Или ЗначениеЗаполнено(РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ДополнительныеСведения)) Тогда
ПараметрыОткрытияФормы.Вставить("ДополнительныеДанныеПроверки", РезультатПроверкиУдостоверяющегоЦентра.Предупреждение);
КонецЕсли;
ДействиеПриНажатии = Новый ОписаниеОповещения("ОткрытьФормуОповещенияОНеобходимостиЗаменыСертификата",
ЭлектроннаяПодписьСлужебныйКлиент, ПараметрыОткрытияФормы);
@@ -1055,6 +1062,7 @@
Сертификат);
КонецЕсли;
ВыполнитьОбработкуОповещения(Контекст.Оповещение, Истина);
КонецПроцедуры
@@ -317,16 +317,17 @@
ЭлектроннаяПодписьСлужебныйВызовСервера.ДобавитьОписаниеДополнительныхДанных(
Новый Структура("Сертификат", Сертификат), ОписаниеФайлов, ТекстОшибок);
ТемаСообщения = "";
ТекстОшибок = ТекстОшибок + НСтр("ru = 'Результат проверки на клиенте'") + ":" + Символы.ПС;
ДополнитьТекстОшибками(ТекстОшибок, СоставПроверок);
ДополнитьТекстОшибками(ТекстОшибок, СоставПроверок, Ложь, ТемаСообщения);
ТекстОшибок = ТекстОшибок + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Результат проверки на сервере ""%1"":'"), ИмяСервера) + Символы.ПС;
ДополнитьТекстОшибками(ТекстОшибок, СоставПроверок, Истина);
ДополнитьТекстОшибками(ТекстОшибок, СоставПроверок, Истина, ТемаСообщения);
ЭлектроннаяПодписьСлужебныйКлиент.СформироватьТехническуюИнформацию(
ТекстОшибок, Новый Структура("Тема, Сообщение",
НСтр("ru = 'Проблема при проверке сертификата электронной подписи'"),
?(ПустаяСтрока(ТемаСообщения), НСтр("ru = 'Проблема при проверке сертификата электронной подписи'"), ТемаСообщения),
ЭлектроннаяПодписьСлужебныйКлиент.ТекстОбращенияВТехническуюПоддержкуПриПроверкеСертификата()),
Неопределено, ОписаниеФайлов);
@@ -2426,7 +2427,7 @@
#КонецОбласти
&НаКлиенте
Процедура ДополнитьТекстОшибками(ТекстОшибок, Проверки, НаСервере = Ложь)
Процедура ДополнитьТекстОшибками(ТекстОшибок, Проверки, НаСервере = Ложь, ТемаСообщения = "")
СоставПроверок = ЭтотОбъект[?(НаСервере, "ПроверкиНаСервере", "ПроверкиНаКлиенте")];
Для Каждого Проверка Из Проверки Цикл
@@ -2442,6 +2443,10 @@
ТекстОшибкиПроверки = ?(СоставПроверок.Свойство(Проверка + "Ошибка"),
СокрЛП(ПроверкиНаКлиенте[Проверка + "Ошибка"]), "");
Если ПустаяСтрока(ТемаСообщения) И Не ПустаяСтрока(ТекстОшибкиПроверки) Тогда
ТемаСообщения = ТекстОшибкиПроверки;
КонецЕсли;
ТекстОшибок = ТекстОшибок + Проверка + ": "
+ ?(РезультатПроверки = Неопределено, НСтр("ru = 'Не выполнялась из-за предыдущих ошибок'"),
Формат(РезультатПроверки, НСтр("ru = 'БЛ=Ошибка; БИ=Успех'")))
@@ -836,7 +836,7 @@
<usePurposes>MobileDevice</usePurposes>
</forms>
<templates uuid="5189beb9-b939-4f97-aca0-c2f3492ac8b9">
<name>КомпонентаExtraCryptoAPI_3_0_3_11</name>
<name>КомпонентаExtraCryptoAPI_3_0_3_33</name>
<synonym>
<key>ru</key>
<value>Компонента ExtraCryptoAPI</value>
@@ -103,7 +103,7 @@
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаИнформацияОНастрокеВОднойБазе</name>
<name>ГруппаИнформацияОНастройкеВОднойБазе</name>
<id>164</id>
<items xsi:type="form:Decoration">
<name>Декорация3</name>
@@ -180,11 +180,11 @@
</userVisible>
<title>
<key>ru</key>
<value>Информация о настроке в одной базе</value>
<value>Информация о настройке в одной базе</value>
</title>
<horizontalStretch>true</horizontalStretch>
<extendedTooltip>
<name>ГруппаИнформацияОНастрокеВОднойБазеРасширеннаяПодсказка</name>
<name>ГруппаИнформацияОНастройкеВОднойБазеРасширеннаяПодсказка</name>
<id>165</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -222,7 +222,7 @@
<segments>Объект.Description</segments>
</dataPath>
<extendedTooltip>
<name>НаименованиеРасширеннаяПодсказка</name>
<name>НаименованиеExtendedTooltip</name>
<id>129</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -258,7 +258,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КодРасширеннаяПодсказка</name>
<name>КодExtendedTooltip</name>
<id>130</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -339,7 +339,7 @@
<name>ИспользоватьРегламентноеЗаданиеПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ИспользоватьРегламентноеЗаданиеРасширеннаяПодсказка</name>
<name>ИспользоватьРегламентноеЗаданиеExtendedTooltip</name>
<id>132</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -374,7 +374,7 @@
</userVisible>
<skipOnInput>false</skipOnInput>
<extendedTooltip>
<name>НастроитьРасписаниеРегламентногоЗаданияРасширеннаяПодсказка</name>
<name>НастроитьРасписаниеРегламентногоЗаданияExtendedTooltip</name>
<id>133</id>
<title>
<key>ru</key>
@@ -406,7 +406,7 @@
<value>Обмен по расписанию</value>
</title>
<extendedTooltip>
<name>ОбменПоРасписаниюРасширеннаяПодсказка</name>
<name>ОбменПоРасписаниюExtendedTooltip</name>
<id>131</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -554,7 +554,7 @@
<segments>Объект.НастройкиОбмена.LineNumber</segments>
</dataPath>
<extendedTooltip>
<name>НастройкиОбменаНомерСтрокиРасширеннаяПодсказка</name>
<name>НастройкиОбменаНомерСтрокиExtendedTooltip</name>
<id>138</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -594,7 +594,7 @@
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>НастройкиОбменаРезультатВыполненияОбменаРасширеннаяПодсказка</name>
<name>НастройкиОбменаРезультатВыполненияОбменаExtendedTooltip</name>
<id>140</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -643,7 +643,7 @@
<name>НастройкиОбменаУзелИнформационнойБазыПриИзменении</name>
</handlers>
<extendedTooltip>
<name>НастройкиОбменаУзелИнформационнойБазыРасширеннаяПодсказка</name>
<name>НастройкиОбменаУзелИнформационнойБазыExtendedTooltip</name>
<id>141</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -690,7 +690,7 @@
<value>Колонки узла информационной базы</value>
</title>
<extendedTooltip>
<name>КолонкиУзлаИнформационнойБазыРасширеннаяПодсказка</name>
<name>КолонкиУзлаИнформационнойБазыExtendedTooltip</name>
<id>139</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -718,7 +718,7 @@
<segments>Объект.НастройкиОбмена.ВидТранспортаОбмена</segments>
</dataPath>
<extendedTooltip>
<name>НастройкиОбменаВидТранспортаОбменаРасширеннаяПодсказка</name>
<name>НастройкиОбменаВидТранспортаОбменаExtendedTooltip</name>
<id>142</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -764,7 +764,7 @@
<segments>Объект.НастройкиОбмена.ВыполняемоеДействие</segments>
</dataPath>
<extendedTooltip>
<name>НастройкиОбменаВыполняемоеДействиеРасширеннаяПодсказка</name>
<name>НастройкиОбменаВыполняемоеДействиеExtendedTooltip</name>
<id>143</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -875,7 +875,7 @@
</extInfo>
</searchControlAddition>
<extendedTooltip>
<name>СоставРасписанияРасширеннаяПодсказка</name>
<name>СоставРасписанияExtendedTooltip</name>
<id>137</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -901,7 +901,7 @@
</userVisible>
<skipOnInput>false</skipOnInput>
<extendedTooltip>
<name>НастройкиТранспортаРасширеннаяПодсказка</name>
<name>НастройкиТранспортаExtendedTooltip</name>
<id>135</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -932,7 +932,7 @@
</userVisible>
<skipOnInput>false</skipOnInput>
<extendedTooltip>
<name>КонтекстноеМенюСоставРасписанияПерейтиВЖурналРегистрацииРасширеннаяПодсказка</name>
<name>КонтекстноеМенюСоставРасписанияПерейтиВЖурналРегистрацииExtendedTooltip</name>
<id>136</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -984,7 +984,7 @@
<value>Состав настройки обмена</value>
</title>
<extendedTooltip>
<name>СоставРасширеннаяПодсказка</name>
<name>СоставExtendedTooltip</name>
<id>134</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1017,7 +1017,7 @@
<segments>Объект.Комментарий</segments>
</dataPath>
<extendedTooltip>
<name>КомментарийРасширеннаяПодсказка</name>
<name>КомментарийExtendedTooltip</name>
<id>146</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1060,7 +1060,7 @@
<value>Дополнительно</value>
</title>
<extendedTooltip>
<name>ДополнительноРасширеннаяПодсказка</name>
<name>ДополнительноExtendedTooltip</name>
<id>145</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1095,7 +1095,7 @@
</userVisible>
<skipOnInput>false</skipOnInput>
<extendedTooltip>
<name>ВыполнитьОбменРасширеннаяПодсказка</name>
<name>ВыполнитьОбменExtendedTooltip</name>
<id>127</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1317,7 +1317,39 @@
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel/>
<navigationPanel>
<cmiFragmentRecord>
<command>0</command>
<type>Added</type>
<userVisible>
<common>true</common>
</userVisible>
</cmiFragmentRecord>
<cmiFragmentRecord>
<command>0</command>
<type>Added</type>
<index>3</index>
<userVisible>
<common>true</common>
</userVisible>
</cmiFragmentRecord>
<cmiFragmentRecord>
<command>0</command>
<type>Added</type>
<index>1</index>
<userVisible>
<common>true</common>
</userVisible>
</cmiFragmentRecord>
<cmiFragmentRecord>
<command>0</command>
<type>Added</type>
<index>2</index>
<userVisible>
<common>true</common>
</userVisible>
</cmiFragmentRecord>
</navigationPanel>
<commandBar/>
</commandInterface>
<extInfo xsi:type="form:CatalogFormExtInfo">
@@ -56,7 +56,7 @@
Элементы.НастройкиОбменаВидТранспортаОбмена.Видимость = Ложь;
Элементы.НастройкиОбменаУзелИнформационнойБазы.ИсторияВыбораПриВводе = ИсторияВыбораПриВводе.НеИспользовать;
Элементы.НастройкиОбменаУзелИнформационнойБазы.КнопкаВыпадающегоСписка = Ложь;
Элементы.ГруппаИнформацияОНастрокеВОднойБазе.Видимость = Истина;
Элементы.ГруппаИнформацияОНастройкеВОднойБазе.Видимость = Истина;
Элементы.ГруппаСценарийОтключен.Видимость = Объект.ОтключенАвтоматически;
КонецЕсли;
@@ -194,13 +194,19 @@
Если Модифицированность ИЛИ ЭтоНовый Тогда
Записать();
Если Не Записать() Тогда
Возврат;
КонецЕсли;
КонецЕсли;
НомерОбрабатываемойСтроки = 1;
КоличествоСтрок = Объект.НастройкиОбмена.Количество();
Элементы.СоставРасписания.ТолькоПросмотр = Истина;
ПодключитьОбработчикОжидания("ВыполнитьОбменДаннымиНаКлиенте", 0.1, Истина);
КонецПроцедуры
@@ -318,9 +324,14 @@
Процедура ВыполнитьОбменДаннымиНаКлиенте()
Если НомерОбрабатываемойСтроки > КоличествоСтрок Тогда // выход из рекурсии
ВыводитьСостояние = (КоличествоСтрок > 1);
Состояние(НСтр("ru = 'Данные синхронизированы.'"), ?(ВыводитьСостояние, 100, Неопределено));
Элементы.СоставРасписания.ТолькоПросмотр = Ложь;
Возврат; // выходим
КонецЕсли;
ТекущиеДанные = Объект.НастройкиОбмена[НомерОбрабатываемойСтроки - 1];
@@ -228,6 +228,12 @@
ЗаданиеОбъект = РегламентныеЗаданияСервер.Задание(ЗаданиеGUID);
КонецЕсли;
ОбластьДанных = ПараметрыСеанса["ОбластьДанныхЗначение"];
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
ЧасовойПояс = МодульРаботаВМоделиСервиса.ПолучитьЧасовойПоясОбластиДанных(ОбластьДанных);
ЗапланированныйМоментЗапуска = МестноеВремя(ТекущаяУниверсальнаяДата(), ЧасовойПояс);
Если ЗаданиеОбъект = Неопределено Тогда
ПараметрыПроцедуры = Новый Массив;
@@ -238,9 +244,9 @@
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Ключ", Лев(Ключ, 120));
ПараметрыЗадания.Вставить("ИмяМетода" , "ОбменДаннымиВнутренняяПубликация.ВыполнитьОбменДаннымиПоСценарию");
ПараметрыЗадания.Вставить("ОбластьДанных", ПараметрыСеанса["ОбластьДанныхЗначение"]);
ПараметрыЗадания.Вставить("ОбластьДанных", ОбластьДанных);
ПараметрыЗадания.Вставить("Использование", Истина);
ПараметрыЗадания.Вставить("ЗапланированныйМоментЗапуска", ТекущаяДатаСеанса());
ПараметрыЗадания.Вставить("ЗапланированныйМоментЗапуска", ЗапланированныйМоментЗапуска);
ПараметрыЗадания.Вставить("Параметры", ПараметрыПроцедуры);
ПараметрыЗадания.Вставить("Использование", ТекущийОбъект.ИспользоватьРегламентноеЗадание);
@@ -257,7 +263,7 @@
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Использование", ТекущийОбъект.ИспользоватьРегламентноеЗадание);
ПараметрыЗадания.Вставить("ЗапланированныйМоментЗапуска", ТекущаяДатаСеанса());
ПараметрыЗадания.Вставить("ЗапланированныйМоментЗапуска", ЗапланированныйМоментЗапуска);
Если РасписаниеРегламентногоЗадания <> Неопределено Тогда
ПараметрыЗадания.Вставить("Расписание", РасписаниеРегламентногоЗадания);
@@ -306,18 +312,14 @@
//
Процедура ОчиститьСсылкиНаУзелИнформационнойБазы(Знач УзелИнформационнойБазы) Экспорт
Если ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| СценарииОбменовДаннымиНастройкиОбмена.Ссылка КАК СценарийОбменаДанными
|ИЗ
| Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена
|ГДЕ
| СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы");
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| СценарииОбменовДаннымиНастройкиОбмена.Ссылка КАК СценарийОбменаДанными
|ИЗ
| Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена
|ГДЕ
| СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы");
Запрос.УстановитьПараметр("УзелИнформационнойБазы", УзелИнформационнойБазы);
ТаблицаСценарии = Запрос.Выполнить().Выгрузить();
@@ -22,15 +22,21 @@
КонецЕсли;
РазделениеВключено = ОбщегоНазначения.РазделениеВключено();
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
Если РазделениеВключено
И ИспользоватьРегламентноеЗадание
И ОтключенАвтоматически Тогда
МодульОбменДаннымиВнутренняяПубликация = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиВнутренняяПубликация");
ОтключенАвтоматически = Ложь;
РазделениеВключено = ОбщегоНазначения.РазделениеВключено();
ОбменДаннымиВнутренняяПубликация.УдалитьЗадачиПоСценариюСОшибкой(Ссылка);
Если РазделениеВключено
И ИспользоватьРегламентноеЗадание
И ОтключенАвтоматически Тогда
ОтключенАвтоматически = Ложь;
МодульОбменДаннымиВнутренняяПубликация.УдалитьЗадачиПоСценариюСОшибкой(Ссылка);
КонецЕсли;
КонецЕсли;
@@ -39,7 +39,7 @@
<segments>Список.Представление</segments>
</dataPath>
<extendedTooltip>
<name>СписокПредставлениеРасширеннаяПодсказка</name>
<name>СписокПредставлениеExtendedTooltip</name>
<id>23</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -85,7 +85,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СписокВыбратьЗначениеРасширеннаяПодсказка</name>
<name>СписокВыбратьЗначениеExtendedTooltip</name>
<id>21</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -181,7 +181,7 @@
</extInfo>
</searchControlAddition>
<extendedTooltip>
<name>СписокРасширеннаяПодсказка</name>
<name>СписокExtendedTooltip</name>
<id>22</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -209,7 +209,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СписокКонтекстноеМенюВыбратьЗначениеРасширеннаяПодсказка</name>
<name>СписокКонтекстноеМенюВыбратьЗначениеExtendedTooltip</name>
<id>17</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -236,7 +236,7 @@
<value>Контекстное меню группа 1</value>
</title>
<extendedTooltip>
<name>СписокКонтекстноеМенюГруппа1РасширеннаяПодсказка</name>
<name>СписокКонтекстноеМенюГруппа1ExtendedTooltip</name>
<id>16</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -256,7 +256,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СписокКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка</name>
<name>СписокКонтекстноеМенюКопироватьВБуферОбменаExtendedTooltip</name>
<id>18</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -282,7 +282,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СписокКонтекстноеМенюВыделитьВсеРасширеннаяПодсказка</name>
<name>СписокКонтекстноеМенюВыделитьВсеExtendedTooltip</name>
<id>19</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -308,7 +308,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СписокКонтекстноеМенюВывестиСписокРасширеннаяПодсказка</name>
<name>СписокКонтекстноеМенюВывестиСписокExtendedTooltip</name>
<id>20</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -14,6 +14,14 @@
Параметры.Свойство("ВыборГруппИЭлементов", ВыборГруппИЭлементов);
РежимПодбора = (Параметры.ЗакрыватьПриВыборе = Ложь);
// Проверка, что форма открыта с нужными параметрами
Если Не Параметры.Свойство("ИмяРеквизита") Тогда
ВызватьИсключение НСтр("ru = 'Эта форма не предназначена для непосредственного открытия.'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецЕсли;
ИмяРеквизита = Параметры.ИмяРеквизита;
Если Параметры.ПараметрыВнешнегоСоединения.ТипСоединения = "ВнешнееСоединение" Тогда
@@ -18,7 +18,7 @@
<skipOnInput>true</skipOnInput>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>ПолеHTMLДокументаРасширеннаяПодсказка</name>
<name>ПолеHTMLДокументаExtendedTooltip</name>
<id>5</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -60,7 +60,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаЗакрытьРасширеннаяПодсказка</name>
<name>ФормаЗакрытьExtendedTooltip</name>
<id>4</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -11,6 +11,13 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Проверка, что форма открыта с нужными параметрами
Если Не Параметры.Свойство("ИмяМакета") Тогда
ВызватьИсключение НСтр("ru = 'Эта форма не предназначена для непосредственного открытия.'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецЕсли;
Макет = ПолучитьОбщийМакет(Параметры.ИмяМакета);
ПолеHTMLДокумента = Макет.ПолучитьТекст();
@@ -456,7 +456,7 @@
<value>Право обновления страницы</value>
</title>
<extendedTooltip>
<name>ПравоОбновленияСтраницыРасширеннаяПодсказка</name>
<name>ПравоОбновленияСтраницыExtendedTooltip</name>
<id>746</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1551,7 +1551,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаИзменитьФормуРасширеннаяПодсказка</name>
<name>ФормаИзменитьФормуExtendedTooltip</name>
<id>483</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1577,7 +1577,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСправкаРасширеннаяПодсказка</name>
<name>ФормаСправкаExtendedTooltip</name>
<id>487</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1604,7 +1604,7 @@
<value>Командная панель</value>
</title>
<extendedTooltip>
<name>КоманднаяПанельРасширеннаяПодсказка</name>
<name>КоманднаяПанельExtendedTooltip</name>
<id>462</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1699,8 +1699,8 @@
ИначеЕсли ОтключенныеСценарии.Количество() > 1 Тогда
ТекстПредупреждения =
НСтр("ru = 'Обнаружены <a href = ""СписокСценариев"">сценарии</a>, которые были отключены из-за ошибок выполнения. Включите сценарий после устранения проблем.'");
Шаблон = НСтр("ru = 'Обнаружены <a href = ""%1"">сценарии</a>, которые были отключены из-за ошибок выполнения. Включите сценарий после устранения проблем.'");
ТекстПредупреждения = СтрШаблон(Шаблон, "СписокСценариев");
Элементы.ПредупреждениеОбОтключенныхСценарияхОписание.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(ТекстПредупреждения);
@@ -542,7 +542,12 @@
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗаголовокПредупреждения", НСтр("ru = 'Результат проверки приложения'"));
ПараметрыФормы.Вставить("ТекстОшибкиКлиент", ТекущиеДанные.РезультатПроверки);
Если ТекущиеДанные.ЭтоТокен И СтрНайти(ТекущиеДанные.РезультатПроверки, ЭлектроннаяПодписьСлужебныйКлиент.ОшибкаНеНайденТокен()) <> 0 Тогда
ПараметрыФормы.Вставить("ТекстОшибкиКлиент", ТекущиеДанные.РезультатПроверки + Символы.ПС + ЭлектроннаяПодписьСлужебныйКлиент.РекомендацииДляТокена());
Иначе
ПараметрыФормы.Вставить("ТекстОшибкиКлиент", ТекущиеДанные.РезультатПроверки);
КонецЕсли;
ПараметрыФормы.Вставить("ТекстОшибкиСервер", ТекущиеДанные.РезультатПроверкиНаСервере);
ПараметрыФормы.Вставить("ПоказатьТребуетсяПомощь", Истина);
ПараметрыФормы.Вставить("ПоказатьИнструкцию", Истина);
@@ -552,12 +557,22 @@
ИначеЕсли Не ЗначениеЗаполнено(ТекущиеДанные.Ссылка) Тогда
СтандартнаяОбработка = Ложь;
ОписаниеПрограммы = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовоеРасширенноеОписаниеПрограммы();
ЗаполнитьЗначенияСвойств(ОписаниеПрограммы, ТекущиеДанные);
ОписаниеПрограммы.Представление = ТекущиеДанные.Наименование;
ЭлектроннаяПодписьСлужебныйКлиент.ОткрытьФормуПрограммы(ОписаниеПрограммы, ЭтотОбъект);
Если ТекущиеДанные.ЭтоТокен Тогда
Если ЗначениеЗаполнено(ТекущиеДанные.Слот) Тогда
ОписаниеТокена = ЭлектроннаяПодписьСлужебныйКлиент.НовыеСвойстваТокена();
ОписаниеТокена.Представление = ТекущиеДанные.Наименование;
ОписаниеТокена.СерийныйНомер = ТекущиеДанные.ИмяПрограммы;
ОписаниеТокена.Слот = ТекущиеДанные.Слот;
ЭлектроннаяПодписьСлужебныйКлиент.ОткрытьТокен(ОписаниеТокена, ЭтотОбъект);
КонецЕсли;
Иначе
ОписаниеПрограммы = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовоеРасширенноеОписаниеПрограммы();
ЗаполнитьЗначенияСвойств(ОписаниеПрограммы, ТекущиеДанные);
ОписаниеПрограммы.Представление = ТекущиеДанные.Наименование;
ЭлектроннаяПодписьСлужебныйКлиент.ОткрытьФормуПрограммы(ОписаниеПрограммы, ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
@@ -739,6 +754,7 @@
&НаКлиенте
Процедура ДобавитьСертификатыВЛичномХранилищеВПараметрДинамическогоСписка()
Элементы.ГруппаОбновлениеСпискаСертификатов.Видимость = Истина;
ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьСвойстваСертификатовНаКлиенте(
Новый ОписаниеОповещения("ОбновитьСписокСертификатовПослеПолученияСвойствСертификатовНаКлиенте", ЭтотОбъект),
Истина, Истина, Истина);
@@ -748,6 +764,8 @@
&НаКлиенте
Процедура ОбновитьСписокСертификатовПослеПолученияСвойствСертификатовНаКлиенте(Результат, Параметры) Экспорт
Элементы.ГруппаОбновлениеСпискаСертификатов.Видимость = Ложь;
Для Каждого КлючИЗначение Из Результат.СвойстваСертификатовНаКлиенте Цикл
СертификатыВЛичномХранилище.Добавить(КлючИЗначение.Ключ);
КонецЦикла;
@@ -1050,7 +1068,7 @@
Процедура ОпределитьУстановленныеПрограммыПослеПодключенияРасширения(Подключено, Контекст) Экспорт
Если Подключено Тогда
Элементы.СтраницыПрограммыИОбновление.ТекущаяСтраница = Элементы.СтраницаПрограммыОбновление;
Элементы.ГруппаПрограммыОбновление.Видимость = Истина;
КонецЕсли;
#Если ВебКлиент Тогда
@@ -1127,11 +1145,12 @@
Если Программы.Количество() <= Контекст.Индекс + 1 Тогда
// После цикла.
Элементы.СтраницыПрограммыИОбновление.ТекущаяСтраница = Элементы.СтраницаПрограммыСписок;
Элементы.ГруппаПрограммыОбновление.Видимость = Ложь;
ТекущийЭлемент = Элементы.Программы;
ОбновитьLinuxПутьКПрограмме();
Возврат;
КонецЕсли;
Контекст.Индекс = Контекст.Индекс + 1;
ОписаниеПрограммы = Программы.Получить(Контекст.Индекс);
@@ -1173,6 +1192,9 @@
ОбновитьЗначение(ОписаниеПрограммы.Установлена, Истина);
ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст);
Возврат;
ИначеЕсли ОписаниеПрограммы.ЭтоТокен Тогда
ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст);
Возврат;
КонецЕсли;
Если Не Контекст.РасширениеПодключено Тогда
@@ -1352,6 +1374,29 @@
КонецЦикла;
Для Каждого Токен Из Результат.Токены Цикл
Найдено = Программы.НайтиСтроки(Новый Структура("ИмяПрограммы, ТипПрограммы",
Токен.СерийныйНомер, Токен.Токен));
Если Найдено.Количество() = 0 Тогда
НоваяСтрока = Программы.Добавить();
Иначе
НоваяСтрока = Найдено[0];
КонецЕсли;
НоваяСтрока.ТипРазмещения = 1;
НоваяСтрока.Автоопределение = Истина;
НоваяСтрока.РежимИспользованияКартинка = -1;
НоваяСтрока.Наименование = Токен.Представление;
НоваяСтрока.ЭтоТокен = Истина;
НоваяСтрока.ИмяПрограммы = Токен.СерийныйНомер;
НоваяСтрока.Слот = Токен.Слот;
НоваяСтрока.РезультатПроверки = ?(ЗначениеЗаполнено(Токен.Ошибка), Токен.Ошибка, НСтр("ru = 'Доступен.'"));
НоваяСтрока.Подробнее = ?(ЗначениеЗаполнено(Токен.Ошибка), НСтр("ru = 'Подробнее'") + "...", "");
КонецЦикла;
// Локализация
Если Не ЕстьПроверяемыеПрограммы Тогда
Элементы.ГруппаПодсказкаКриптопровайдеры.Видимость = Истина;
@@ -22,7 +22,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Декорация3РасширеннаяПодсказка</name>
<name>Декорация3ExtendedTooltip</name>
<id>34</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -42,7 +42,7 @@
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>StdPicture.DialogExclamation</picture>
<picture>CommonPicture.Предупреждение32</picture>
</picture>
</extInfo>
</items>
@@ -62,7 +62,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Декорация1РасширеннаяПодсказка</name>
<name>Декорация1ExtendedTooltip</name>
<id>35</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -93,7 +93,7 @@
<value>Группа</value>
</title>
<extendedTooltip>
<name>Группа7РасширеннаяПодсказка</name>
<name>Группа7ExtendedTooltip</name>
<id>33</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -123,7 +123,7 @@
</title>
<verticalStretch>true</verticalStretch>
<extendedTooltip>
<name>НачалоРасширеннаяПодсказка</name>
<name>НачалоExtendedTooltip</name>
<id>32</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -154,7 +154,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Декорация4РасширеннаяПодсказка</name>
<name>Декорация4ExtendedTooltip</name>
<id>38</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -192,7 +192,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Декорация5РасширеннаяПодсказка</name>
<name>Декорация5ExtendedTooltip</name>
<id>39</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -224,7 +224,7 @@
<value>Группа</value>
</title>
<extendedTooltip>
<name>Группа8РасширеннаяПодсказка</name>
<name>Группа8ExtendedTooltip</name>
<id>37</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -252,7 +252,7 @@
<value>Ожидание</value>
</title>
<extendedTooltip>
<name>ОжиданиеРасширеннаяПодсказка</name>
<name>ОжиданиеExtendedTooltip</name>
<id>36</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -283,7 +283,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Декорация6РасширеннаяПодсказка</name>
<name>Декорация6ExtendedTooltip</name>
<id>42</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -320,7 +320,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Декорация2РасширеннаяПодсказка</name>
<name>Декорация2ExtendedTooltip</name>
<id>43</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -351,7 +351,7 @@
<value>Группа</value>
</title>
<extendedTooltip>
<name>Группа9РасширеннаяПодсказка</name>
<name>Группа9ExtendedTooltip</name>
<id>41</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -380,7 +380,7 @@
<value>Завершение</value>
</title>
<extendedTooltip>
<name>ЗавершениеРасширеннаяПодсказка</name>
<name>ЗавершениеExtendedTooltip</name>
<id>40</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -407,7 +407,7 @@
</title>
<verticalStretch>true</verticalStretch>
<extendedTooltip>
<name>ПанельОсновнаяРасширеннаяПодсказка</name>
<name>ПанельОсновнаяExtendedTooltip</name>
<id>31</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -443,7 +443,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПрекратитьСинхронизациюДанныхРасширеннаяПодсказка</name>
<name>ПрекратитьСинхронизациюДанныхExtendedTooltip</name>
<id>47</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -473,7 +473,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ОтменитьРасширеннаяПодсказка</name>
<name>ОтменитьExtendedTooltip</name>
<id>48</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -500,7 +500,7 @@
<value>Группа</value>
</title>
<extendedTooltip>
<name>Группа5РасширеннаяПодсказка</name>
<name>Группа5ExtendedTooltip</name>
<id>46</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -524,7 +524,7 @@
<value>Страница навигации начало</value>
</title>
<extendedTooltip>
<name>СтраницаНавигацииНачалоРасширеннаяПодсказка</name>
<name>СтраницаНавигацииНачалоExtendedTooltip</name>
<id>45</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -559,7 +559,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗакрытьРасширеннаяПодсказка</name>
<name>ЗакрытьExtendedTooltip</name>
<id>51</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -587,7 +587,7 @@
</title>
<enableContentChange>true</enableContentChange>
<extendedTooltip>
<name>Группа6РасширеннаяПодсказка</name>
<name>Группа6ExtendedTooltip</name>
<id>50</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -613,7 +613,7 @@
<readOnly>true</readOnly>
<enableContentChange>true</enableContentChange>
<extendedTooltip>
<name>СтраницаНавигацииОжиданиеРасширеннаяПодсказка</name>
<name>СтраницаНавигацииОжиданиеExtendedTooltip</name>
<id>49</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -648,7 +648,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Закрыть1РасширеннаяПодсказка</name>
<name>Закрыть1ExtendedTooltip</name>
<id>54</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -676,7 +676,7 @@
</title>
<enableContentChange>true</enableContentChange>
<extendedTooltip>
<name>Группа14РасширеннаяПодсказка</name>
<name>Группа14ExtendedTooltip</name>
<id>53</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -701,7 +701,7 @@
</title>
<enableContentChange>true</enableContentChange>
<extendedTooltip>
<name>СтраницаНавигацииОкончаниеРасширеннаяПодсказка</name>
<name>СтраницаНавигацииОкончаниеExtendedTooltip</name>
<id>52</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -727,7 +727,7 @@
<value>Панель навигации</value>
</title>
<extendedTooltip>
<name>ПанельНавигацииРасширеннаяПодсказка</name>
<name>ПанельНавигацииExtendedTooltip</name>
<id>44</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -11,6 +11,13 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Проверка, что форма открыта с нужными параметрами
Если Не Параметры.Свойство("АвтономноеРабочееМесто") Тогда
ВызватьИсключение НСтр("ru = 'Эта форма не предназначена для непосредственного открытия.'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецЕсли;
АвтономноеРабочееМесто = Параметры.АвтономноеРабочееМесто;
Если Не ЗначениеЗаполнено(АвтономноеРабочееМесто) Тогда
@@ -18,7 +18,8 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбщегоНазначения.УстановитьУсловноеОформлениеСпискаВыбора(ЭтотОбъект, "ПочтовыйАдресПолучателейВариантОтправки", "ПочтовыеАдресаПолучателей.ВариантОтправки");
ОбщегоНазначения.УстановитьУсловноеОформлениеСпискаВыбора(ЭтотОбъект,
"ПочтовыйАдресПолучателейВариантОтправки", "ПочтовыеАдресаПолучателей.ВариантОтправки");
РезультатУспехЦвет = ЦветаСтиля.РезультатУспехЦвет;
@@ -640,7 +641,8 @@
Процедура ПродолжитьОткрытиеФайлаMXLПослеСозданияКаталога(ИмяВременногоКаталога, ВыбранноеВложение) Экспорт
#Если Не ВебКлиент Тогда
ИмяВременногоФайла = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременногоКаталога) + ВыбранноеВложение.Представление;
ИмяВременногоФайла = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременногоКаталога)
+ ВыбранноеВложение.Представление;
ТабличныйДокумент = ПолучитьТабличныйДокументПоДвоичнымДанным(ВыбранноеВложение.АдресВоВременномХранилище);
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ВыбранноеВложение.АдресВоВременномХранилище); // ДвоичныеДанные
@@ -528,7 +528,10 @@
&НаКлиенте
Процедура ПерейтиКУправлениюМакетами(Команда)
ОткрытьФорму("РегистрСведений.ПользовательскиеМакетыПечати.Форма.МакетыПечатныхФорм");
НастройкаПечатнойФормы = НастройкаТекущейПечатнойФормы();
УправлениеПечатьюКлиент.ПерейтиКМакету(НастройкаПечатнойФормы.ПутьКМакету);
КонецПроцедуры
&НаКлиенте
@@ -279,7 +279,9 @@
&НаКлиенте
Процедура ПерейтиКУправлениюМакетами(Команда)
ОткрытьФорму("РегистрСведений.ПользовательскиеМакетыПечати.Форма.МакетыПечатныхФорм");
УправлениеПечатьюКлиент.ПерейтиКМакету(НастройкиПечатныхФорм[0].ПутьКМакету);
КонецПроцедуры
&НаКлиенте
@@ -385,8 +385,6 @@
ВсеГруппыДоступа = Запрос.Выполнить().Выгрузить();
// Установка представления для группы доступа.
// Удаление текущего пользователя из группы доступа, если он входит в нее только непосредственно.
ЕстьЗапрещенныеГруппы = Ложь;
Индекс = ВсеГруппыДоступа.Количество()-1;
@@ -932,10 +932,6 @@
<event>TextEditEnd</event>
<name>ЗначениеДоступаОкончаниеВводаТекста</name>
</handlers>
<handlers>
<event>ChoiceProcessing</event>
<name>ЗначениеДоступаОбработкаВыбора</name>
</handlers>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
@@ -992,13 +988,157 @@
<autoCommandBar>
<name>ЗначенияДоступаКоманднаяПанель</name>
<id>29</id>
<items xsi:type="form:Button">
<name>ЗначенияДоступаПодобратьЗначенияДоступа</name>
<id>159</id>
<title>
<key>ru</key>
<value>Подобрать</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗначенияДоступаПодобратьЗначенияДоступаРасширеннаяПодсказка</name>
<id>160</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>166</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗначенияДоступаДобавитьРасширеннаяПодсказка</name>
<id>167</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Item.ЗначенияДоступа.StandardCommand.Add</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</items>
<items xsi:type="form:Button">
<name>ЗначенияДоступаУдалить</name>
<id>168</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗначенияДоступаУдалитьРасширеннаяПодсказка</name>
<id>169</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Item.ЗначенияДоступа.StandardCommand.Delete</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:FormGroup">
<name>ЗначенияДоступаСтандартныеКоманды</name>
<id>161</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Значения доступа стандартные команды</value>
</title>
<extendedTooltip>
<name>ЗначенияДоступаСтандартныеКомандыРасширеннаяПодсказка</name>
<id>162</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<extInfo xsi:type="form:ButtonGroupExtInfo">
<commandSource>Item.ЗначенияДоступа</commandSource>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>ЗначенияДоступаПоиск</name>
<id>163</id>
<extendedTooltip>
<name>ЗначенияДоступаПоискРасширеннаяПодсказка</name>
<id>165</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗначенияДоступаПоискКонтекстноеМеню</name>
<id>164</id>
<autoFill>true</autoFill>
</contextMenu>
<source>ЗначенияДоступа</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>OnEditEnd</event>
<name>ЗначенияДоступаПриОкончанииРедактирования</name>
</handlers>
<handlers>
<event>ChoiceProcessing</event>
<name>ЗначенияДоступаОбработкаВыбора</name>
</handlers>
<handlers>
<event>OnStartEdit</event>
<name>ЗначенияДоступаПриНачалеРедактирования</name>
@@ -1890,6 +2030,28 @@
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>ПодобратьЗначенияДоступа</name>
<title>
<key>ru</key>
<value>Подобрать</value>
</title>
<id>5</id>
<toolTip>
<key>ru</key>
<value>Подобрать</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ПодобратьЗначенияДоступа</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<parameters>
<name>Пользователь</name>
<valueType>
@@ -303,18 +303,18 @@
КонецПроцедуры
&НаКлиенте
Процедура ЗначениеДоступаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Процедура ЗначенияДоступаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаНачалоВыбора(
ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
УправлениеДоступомСлужебныйКлиент.ЗначенияДоступаОбработкаВыбора(
ЭтотОбъект, Элемент, ВыбранноеЗначение, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ЗначениеДоступаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Процедура ЗначениеДоступаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаОбработкаВыбора(
ЭтотОбъект, Элемент, ВыбранноеЗначение, СтандартнаяОбработка);
УправлениеДоступомСлужебныйКлиент.ЗначениеДоступаНачалоВыбора(
ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
@@ -377,6 +377,13 @@
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьЗначенияДоступа(Команда)
УправлениеДоступомСлужебныйКлиент.ЗначенияДоступаПодобрать(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -70,6 +70,9 @@
ДанныеДляИзмененияМультиязычныхРеквизитов = МультиязычностьСервер.ДанныеДляИзмененияМультиязычныхРеквизитов();
Если ДанныеДляИзмененияМультиязычныхРеквизитов <> Неопределено Тогда
Если Не ДанныеДляИзмененияМультиязычныхРеквизитов.ОсновнойЯзыкИзменен И ОбщегоНазначения.ЭтоОсновнойЯзык() Тогда
РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
КонецЕсли;
ПродолжитьИзменениеМультиязычныхРеквизитов = Истина;
КонецЕсли;
@@ -408,13 +411,13 @@
Возврат;
КонецЕсли;
Элементы.Страницы.ТекущаяСтраница = Элементы.УспешноеЗавершение;
ОбновитьПовторноИспользуемыеЗначения();
Элементы.Закрыть.КнопкаПоУмолчанию = Истина;
Элементы.ОК.Видимость = Ложь;
Элементы.Закрыть.Видимость = Истина;
Элементы.Закрыть.КнопкаПоУмолчанию = Истина;
ТекущийЭлемент = Элементы.Закрыть;
ТекущийЭлемент = Элементы.Закрыть;
Элементы.Страницы.ТекущаяСтраница = Элементы.УспешноеЗавершение;
КонецПроцедуры
@@ -794,7 +794,35 @@
ПараметрыВыгрузки = Получатель.ДополнительныеСвойства.ПараметрыВыгрузки;
ЗаписатьXML(ПараметрыВыгрузки.ВыгруженныеДанные, ЭлементДанных);
Попытка
ЗаписатьXML(ПараметрыВыгрузки.ВыгруженныеДанные, ЭлементДанных);
Исключение
МетаданныеЭлемента = ЭлементДанных.Метаданные();
Если ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(МетаданныеЭлемента) Тогда
Шаблон = НСтр("ru = 'Навигационная ссылка: %1'", ОбщегоНазначения.КодОсновногоЯзыка());
Ссылка = СтрШаблон(Шаблон, ПолучитьНавигационнуюСсылку(ЭлементДанных.Ссылка));
ИначеЕсли ОбщегоНазначения.ЭтоРегистр(МетаданныеЭлемента) Тогда
Шаблон = НСтр("ru = 'Отбор: %1'", ОбщегоНазначения.КодОсновногоЯзыка());
Ссылка = СтрШаблон(Шаблон, ЭлементДанных.Отбор);
Иначе
Ссылка = "";
КонецЕсли;
Шаблон = НСтр(
"ru = 'Ошибка при записи элемента ""%1"" при создании начального образа
|%2
|Подробности см. в журнале регистрации.'",
ОбщегоНазначения.КодОсновногоЯзыка());
ТекстИсключения = СтрШаблон(Шаблон, ЭлементДанных, Ссылка);
ВызватьИсключение ТекстИсключения;
КонецПопытки;
Если ПараметрыВыгрузки.ИспользоватьОптимизированнуюЗапись Тогда
@@ -329,6 +329,9 @@
// При получении кодов через веб-сервиса выполнение функции может занимать 20 секунд.
// Поэтому для исключения зависаний пользовательского интерфейса, например при открытии формы,
// функцию следует вызвать в фоновом задании.
// Если при попытке получения кодов через веб-сервис он оказывается недоступен или доступ к нему запрещен пользователем,
// то функция возвращает структуру с пустыми полями.
// Проверить, разрешен ли администратором доступ к веб-сервису адресов можно с помощью функции РазрешенДоступВИнтернет.
//
// Параметры:
// Адрес - Строка - адрес во внутреннем формате JSON или XML, соответствующий структуре XDTO-пакета Адрес.
@@ -1648,7 +1648,7 @@
РезультатВебСервис = ЗаполнитьРезультатПроверкиАдресаПоКлассификаторуСервис1С(Адреса);
Если Не РезультатВебСервис.Отказ Тогда
Если Не РезультатВебСервис.Отказ И РезультатВебСервис.Данные.Количество() > 0 Тогда
АдресПослеПроверки = РезультатВебСервис.Данные.Получить(1);
Если Не АдресПослеПроверки.АдресКорректный Или АдресПослеПроверки.Варианты.Количество() = 0 Тогда
@@ -5462,9 +5462,7 @@
КонецФункции
Процедура ОтправитьSMS() Экспорт
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ОтправкаSMS);
Функция СообщенияSMSДляОтправки()
Запрос = Новый Запрос;
Запрос.Текст = "
@@ -5497,9 +5495,19 @@
| Ссылка";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
Результат = Запрос.Выполнить();
Возврат Результат;
КонецФункции
Процедура ОтправитьSMS() Экспорт
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ОтправкаSMS);
УстановитьПривилегированныйРежим(Истина);
Результат = Запрос.Выполнить();
Результат = СообщенияSMSДляОтправки();
Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;
@@ -5589,20 +5597,7 @@
КонецПроцедуры
// Обработчик регламентного задания.
// Выполняет процедуру обновления статусов доставки SMS по расписанию.
//
Процедура ОбновлениеСтатусовДоставкиSMS() Экспорт
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ОбновлениеСтатусовДоставкиSMS);
УстановитьПривилегированныйРежим(Истина);
МетаданныеДокумента = Метаданные.Документы.СообщениеSMS;
ТаблицаИзменившихсяСтатусов = Новый ТаблицаЗначений;
ТаблицаИзменившихсяСтатусов.Колонки.Добавить("НомерСтроки");
ТаблицаИзменившихсяСтатусов.Колонки.Добавить("СостояниеСообщения");
Функция СообщенияSMSДляПроверкиСтатусов()
Запрос = Новый Запрос;
Запрос.Текст = "
@@ -5622,7 +5617,26 @@
|ИТОГИ ПО
| Ссылка";
Результат = Запрос.Выполнить();
Возврат Запрос.Выполнить();
КонецФункции
// Обработчик регламентного задания.
// Выполняет процедуру обновления статусов доставки SMS по расписанию.
//
Процедура ОбновлениеСтатусовДоставкиSMS() Экспорт
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ОбновлениеСтатусовДоставкиSMS);
УстановитьПривилегированныйРежим(Истина);
МетаданныеДокумента = Метаданные.Документы.СообщениеSMS;
ТаблицаИзменившихсяСтатусов = Новый ТаблицаЗначений;
ТаблицаИзменившихсяСтатусов.Колонки.Добавить("НомерСтроки");
ТаблицаИзменившихсяСтатусов.Колонки.Добавить("СостояниеСообщения");
Результат = СообщенияSMSДляПроверкиСтатусов();
Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;
@@ -9,6 +9,7 @@
#Область ПрограммныйИнтерфейс
// Определяет список справочников, доступных для загрузки с помощью подсистемы "Загрузка данных из файла".
// Если справочник нужно исключить из списка загружаемых, то его следует удалить из таблицы.
//
// Параметры:
// ЗагружаемыеСправочники - ТаблицаЗначений - список справочников, в которые возможна загрузка данных:
@@ -17,6 +18,20 @@
// * ПрикладнаяЗагрузка - Булево - если Истина, значит справочник использует собственный алгоритм загрузки и
// в модуле менеджера справочника определены функции.
//
// Пример:
//
// // Собственный алгоритм загрузки в справочник Номенклатуры.
// Сведения = ЗагружаемыеСправочники.Добавить();
// Сведения.ПолноеИмя = Метаданные.Справочники.Номенклатура.ПолноеИмя();
// Сведения.Представление = Метаданные.Справочники.Номенклатура.Представление();
// Сведения.ПрикладнаяЗагрузка = Истина;
//
// //Загрузка в классификатор валюты запрещена.
// СтрокаТаблицы = ЗагружаемыеСправочники.Найти(Метаданные.Справочники.Валюты.ПолноеИмя(), "ПолноеИмя");
// Если СтрокаТаблицы <> Неопределено Тогда
// ЗагружаемыеСправочники.Удалить(СтрокаТаблицы);
// КонецЕсли;
//
Процедура ПриОпределенииСправочниковДляЗагрузкиДанных(ЗагружаемыеСправочники) Экспорт
@@ -82,6 +82,8 @@
// Проверка необходимости восстановления связи с главным узлом.
Параметры.Модули.Добавить(Новый Структура("Модуль, Номер", СтандартныеПодсистемыКлиент, 3));
Параметры.Модули.Добавить(СерверныеОповещенияКлиент);
// Проверка необходимости выбора начальных неизменяемых настроек ИБ (основной язык, часовой пояс).
Параметры.Модули.Добавить(Новый Структура("Модуль, Номер", СтандартныеПодсистемыКлиент, 4));
@@ -104,8 +106,6 @@
// Проверка статуса обработчиков отложенного обновления.
Параметры.Модули.Добавить(Новый Структура("Модуль, Номер", ОбновлениеИнформационнойБазыКлиент, 2));
Параметры.Модули.Добавить(СерверныеОповещенияКлиент);
// Загрузка/обновление параметров работы программы.
Параметры.Модули.Добавить(Новый Структура("Модуль, Номер", ОбновлениеИнформационнойБазыКлиент, 3));
@@ -526,8 +526,20 @@
УстановитьПривилегированныйРежим(Истина);
Если ДанныеДляИзмененияМультиязычныхРеквизитов() <> Неопределено Тогда
Возврат Истина;
ДанныеИзмененияМультиязычныхРеквизитов = ДанныеДляИзмененияМультиязычныхРеквизитов();
Если ДанныеИзмененияМультиязычныхРеквизитов <> Неопределено Тогда
Если ДанныеИзмененияМультиязычныхРеквизитов.ОсновнойЯзыкИзменен
Или Пользователи.ЭтоПолноправныйПользователь(,, Ложь) Тогда
Возврат Истина;
КонецЕсли;
Если (ДанныеИзмененияМультиязычныхРеквизитов.ПервыйДополнительныйЯзыкИзменен
И ТекущийЯзык().КодЯзыка = КодПервогоДополнительногоЯзыкаИнформационнойБазы())
Или (ДанныеИзмененияМультиязычныхРеквизитов.ВторойДополнительныйЯзыкИзменен
И ТекущийЯзык().КодЯзыка = КодВторогоДополнительногоЯзыкаИнформационнойБазы()) Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Константы.ОсновнойЯзык.Получить()) Тогда
@@ -2458,6 +2470,8 @@
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ПредставлениеИзменяемогоОбъекта = Строка(ВыборкаДетальныеЗаписи.Ссылка);
НачатьТранзакцию();
Попытка
@@ -2587,7 +2601,16 @@
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
ПоследняяСсылка = ВыборкаДетальныеЗаписи.Ссылка;
ДанныеОбъекта.СсылкаНаПоследнийОбработанныйОбъекты = ПоследняяСсылка;
ОписаниеОшибки = ИнформацияОбОшибке();
МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПолноеИмя);
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,
МетаданныеОбъекта, ПредставлениеИзменяемогоОбъекта,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ОписаниеОшибки));
КонецПопытки;
КонецЦикла;
@@ -2816,7 +2839,17 @@
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
Отбор = Новый Структура();
Отбор.Вставить("Регистратор", СтрокаРезультата.РегистраторРеквизитСсылка);
ДанныеОбъекта.СсылкаНаПоследнийОбработанныйОбъекты = Отбор;
ОписаниеОшибки = ИнформацияОбОшибке();
МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПолноеИмя);
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,
МетаданныеОбъекта,, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ОписаниеОшибки));
КонецПопытки;
КонецЦикла;
@@ -3015,7 +3048,23 @@
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
Отбор = Новый Структура();
Для Каждого Измерение Из Измерения Цикл
Отбор.Вставить(Измерение.Имя, СтрокаРезультата[Измерение.Имя + "ИзмерениеСсылка"]);
КонецЦикла;
Если Периодический Тогда
Отбор.Вставить("Период", СтрокаРезультата["Период"]);
КонецЕсли;
ДанныеОбъекта.СсылкаНаПоследнийОбработанныйОбъекты = Отбор;
ОписаниеОшибки = ИнформацияОбОшибке();
МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПолноеИмя);
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,
МетаданныеОбъекта,, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ОписаниеОшибки));
КонецПопытки;
КонецЦикла;
@@ -3075,6 +3124,17 @@
КонецФункции
// Имя событие для записи в журнал регистрации.
//
// Возвращаемое значение:
// Строка - событие журнала регистрации
//
Функция СобытиеЖурналаРегистрации()
Возврат НСтр("ru = 'Мультиязычность'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецФункции
#КонецОбласти
#КонецОбласти
@@ -188,11 +188,13 @@
КомпонентыОбмена.Вставить("ВыполнятьЗамеры", Ложь);
КомпонентыОбмена.Вставить("СеансОбмена", Неопределено);
КомпонентыОбмена.Вставить("ИмяВременногоФайлаЗамеров", "");
КомпонентыОбмена.Вставить("ИмяВременногоКаталогаЗамеров", "");
КомпонентыОбмена.Вставить("ЗаписьЗамеров", Неопределено);
КомпонентыОбмена.Вставить("ТаблицаЗамеровПоСобытиям", ОбменДаннымиОценкаПроизводительности.ТаблицаЗамеровПоСобытиям());
КомпонентыОбмена.Вставить("ИспользоватьКешПубличныхИдентификаторов", Ложь);
КомпонентыОбмена.Вставить("КешПубличныхИдентификаторов", Неопределено);
КомпонентыОбмена.Вставить("КешДанныхОбъектовДляРегистрацииВОбменах", Новый Соответствие);
КомпонентыОбмена.Вставить("ОбменЧерезОбработкуВыгрузкаЗагрузкаED", Ложь);
@@ -918,7 +920,7 @@
КонецЕсли;
ЗначениеXDTO = Неопределено;
Если ТипСвойства = КлассКлючевыеСвойстваФормата() Тогда
Если ТипСвойства = КлассКлючевыеСвойства() Тогда
ЗначениеXDTO = ОбъектXDTOИзДанныхXDTO(КомпонентыОбмена, ЗначениеСвойства, Свойство.Тип, СсылкиИзОбъекта, , Расширения);
@@ -1589,6 +1591,8 @@
ПараметрыЗаголовка.ОбменЧерезОбработкуВыгрузкаЗагрузкаED = КомпонентыОбмена.ОбменЧерезОбработкуВыгрузкаЗагрузкаED;
КомпонентыОбмена.КешПубличныхИдентификаторов = Новый Соответствие;
КонецЕсли;
ЗаписатьЗаголовокСообщенияОбмена(ФайлОбмена, ПараметрыЗаголовка);
@@ -1622,7 +1626,7 @@
ТипСвойства = "Таблица";
ИначеЕсли СтрНайти(Свойство.Тип.Имя, КлассКлючевыеСвойства()) > 0 Тогда
ИначеЕсли СтрНайти(Свойство.Тип.Имя, КлассКлючевыеСвойстваФормата()) > 0 Тогда
ТипСвойства = КлассКлючевыеСвойства();
@@ -1813,7 +1817,7 @@
КонецЕсли;
// Получение (или переопределение) ссылки на найденный объект информационной базы
// посредствам произвольного алгоритма, описанного в менеджере обмена.
// посредством произвольного алгоритма, описанного в менеджере обмена.
Если ПравилоКонвертации.ЕстьОбработчикАлгоритмПоиска Тогда
АлгоритмПоиска(
ДанныеИБ,
@@ -2223,12 +2227,7 @@
ПодтверждениеXDTO = ЗаголовокСообщенияXDTO.Confirmation;
ИмяПланаОбмена = НайтиИмяПланаОбменаЧерезУниверсальныйФормат(КомпонентыОбмена, ПодтверждениеXDTO);
Если Не ЗначениеЗаполнено(ИмяПланаОбмена) Тогда
ЗаписатьВПротоколВыполнения(КомпонентыОбмена, 177);
Прервать;
КонецЕсли;
ИмяПланаОбмена = КомпонентыОбмена.УзелКорреспондента.Метаданные().Имя;
ФорматПланаОбмена = ОбменДаннымиСервер.ЗначениеНастройкиПланаОбмена(ИмяПланаОбмена, "ФорматОбмена");
КомпонентыОбмена.ТолькоНастройкиXDTO =
@@ -2356,6 +2355,12 @@
КомпонентыОбмена.ПрефиксКорреспондента = ЗаголовокСообщенияXDTO.Prefix;
КонецЕсли;
Если ПодтверждениеXDTO.ExchangePlan <> ИмяПланаОбмена Тогда
РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.УстановитьИмяПланаОбменаКорреспондента(
КомпонентыОбмена.УзелКорреспондента,
ПодтверждениеXDTO.ExchangePlan);
КонецЕсли;
ОбменДаннымиКонтрольЗацикливания.ЗагрузитьКонтурИзСообщения(КомпонентыОбмена, ЗаголовокСообщенияXDTO);
// Проверяем поддержку кодировки по УИДам в корреспонденте.
@@ -2648,8 +2653,29 @@
ПроведениеДокументаОтменено = Истина;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ТипПроблемы = Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриПолученииДанных;
ШаблонТекста = НСтр("ru ='При отмене проведения документа:
|%1
|перед его повторной загрузкой произошла ошибка:
|%2.
|Проблему можно проигнорировать (скрыть) если документ после загрузки проведен.
|Подробное описание ошибки см. в журнале регистрации'", ОбщегоНазначения.КодОсновногоЯзыка());
Кратко = СтрШаблон(ШаблонТекста, Строка(Объект), ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Подробно = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ОписаниеОшибки = Новый Структура;
ОписаниеОшибки.Вставить("Уровень", УровеньЖурналаРегистрации.Ошибка);
ОписаниеОшибки.Вставить("КраткоеПредставлениеОшибки", Кратко);
ОписаниеОшибки.Вставить("ПодробноеПредставлениеОшибки", Подробно);
ЗаписатьВПротоколВыполнения(КомпонентыОбмена, ОписаниеОшибки, , Ложь);
ЗаписатьОшибкуОбработкиОбъектаПриОтправке(Объект, КомпонентыОбмена.УзелКорреспондента, Кратко, ТипПроблемы);
КонецПопытки;
Если КомпонентыОбмена <> Неопределено Тогда
@@ -2981,7 +3007,7 @@
// Получает правила регистрации объектов для плана обмена.
//
// Параметры:
// УзелПланаОбмена - ПланОбменаСсылка - ссылка на узел плана обмена
// УзелПланаОбмена - ПланОбменаСсылка - Ссылка на узел плана обмена
//
// Возвращаемое значение:
// ТаблицаЗначений
@@ -3000,7 +3026,7 @@
// Получает свойства узла плана обмена.
//
// Параметры:
// Узел - ПланОбменаСсылка - ссылка на узел плана обмена
// Узел - ПланОбменаСсылка - Ссылка на узел плана обмена
//
// Возвращаемое значение:
// Структура - ключ соответствует имени свойства, а значение - значению свойства.
@@ -3060,13 +3086,6 @@
Если Не ЗаголовокСообщенияXDTO.Установлено("Confirmation") Тогда
Возврат Ложь;
КонецЕсли;
КомпонентыОбмена = Новый Структура("ОбменДаннымиСВнешнейСистемой, УзелКорреспондента", Ложь, Неопределено);
ПодтверждениеXDTO = ЗаголовокСообщенияXDTO.Confirmation;
ИмяПланаОбмена = НайтиИмяПланаОбменаЧерезУниверсальныйФормат(КомпонентыОбмена, ПодтверждениеXDTO);
Если Не ЗначениеЗаполнено(ИмяПланаОбмена) Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
@@ -3851,7 +3870,7 @@
КомпонентыОбмена.МенеджерОбмена.ЗаполнитьПравилаКонвертацииПредопределенныхДанных(КомпонентыОбмена.НаправлениеОбмена, ПравилаКонвертации);
ТранслироватьПредопределенныеданные(ПравилаКонвертации);
ТранслироватьПредопределенныеДанные(ПравилаКонвертации);
Для Каждого ПравилоКонвертации Из ПравилаКонвертации Цикл
ПравилоКонвертации.ТипXDTO = ФабрикаXDTO.Тип(XMLСхема, ПравилоКонвертации.ТипXDTO);
@@ -3923,7 +3942,7 @@
ТипРасширенияXDTO = ФабрикаXDTO.Тип(ПространствоИменРасширения, ПОД.ОбъектВыборкиФормат);
Если ТипРасширенияXDTO <> Неопределено Тогда
// Установили пренадлежность к расширению схемы XDTO
// Установили принадлежность к расширению схемы XDTO
ТипXDTO = ТипРасширенияXDTO;
Прервать;
@@ -3941,7 +3960,7 @@
ПравилоКонвертации.ТипXDTO = ФабрикаXDTO.Тип(ПространствоИменРасширения, ПравилоКонвертации.ОбъектФормата);
Если ПравилоКонвертации.ТипXDTO <> Неопределено Тогда
// Установили пренадлежность к расширению схемы XDTO
// Установили принадлежность к расширению схемы XDTO
Прервать;
КонецЕсли;
@@ -4102,115 +4121,136 @@
УзелДляОбмена = КомпонентыОбмена.УзелКорреспондента;
УзелДляОбменаОбъект = УзелДляОбмена.ПолучитьОбъект();
// Предварительная очистка регистрации
ИменаОбъектовМетаданных = ОбменДаннымиВызовСервера.ИменаМетаданныхНеВыгружаемыхОбъектовУзла(УзелДляОбмена);
Для Каждого Имя Из ИменаОбъектовМетаданных Цикл
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(Имя);
ПланыОбмена.УдалитьРегистрациюИзменений(УзелДляОбмена, ОбъектМетаданных);
КонецЦикла;
НачальнаяВыгрузкаДанных = ОбменДаннымиСервер.УстановленПризнакНачальнойВыгрузкиДанных(УзелДляОбмена);
КоличествоОбъектовКВыгрузке = 0;
ТаблицаИзменений = ЗаполнитьТаблицуИзменений(УзелДляОбмена, НомерСообщения, КоличествоОбъектовКВыгрузке);
// Получаем выборку измененных данных.
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелДляОбмена, НомерСообщения);
КоличествоОбъектовКВыгрузке = 0;
Пока ВыборкаИзменений.Следующий() Цикл
КоличествоОбъектовКВыгрузке = КоличествоОбъектовКВыгрузке + 1;
КонецЦикла;
КомпонентыОбмена.Вставить("КоличествоОбъектовКВыгрузке", КоличествоОбъектовКВыгрузке);
// Алгоритм выгрузки данных в XML-файл:
// 1. Получаем Данные из ИБ
// 2. Отправляем информацию об удалении либо выгружаем данные.
// 3. Конвертируем Данные в Структуру по правилу конвертации.
// 4. Конвертируем Данные в Структуру в обработчике ПриОтправкеДанных.
// 5. Конвертируем Структуру в ОбъектXDTO.
// 6. Записываем ОбъектXDTO в XML-файл.
Для Каждого СтрокаИзменений Из ТаблицаИзменений Цикл
//
СоставПланаОбмена = УзелДляОбмена.Метаданные().Состав;
СписокТиповСПакетнойРегистрацией = Новый Массив;
СписокТиповБезПакетнойРегистрации = Новый Массив;
Для Каждого ОбъектПланаОбмена Из СоставПланаОбмена Цикл
ПолноеИмяОбъекта = ОбъектПланаОбмена.Метаданные.ПолноеИмя();
Правила = ОбменДаннымиСобытия.ПравилаРегистрацииОбъекта(УзелДляОбмена.Метаданные().Имя, ПолноеИмяОбъекта);
ЕстьПакетноеВыполнениеОбработчиков = Ложь;
Для Каждого ПРО Из Правила Цикл
Если ПРО.ПакетноеВыполнениеОбработчиков Тогда
ЕстьПакетноеВыполнениеОбработчиков = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЕстьПакетноеВыполнениеОбработчиков Тогда
СписокТиповСПакетнойРегистрацией.Добавить(ОбъектПланаОбмена.Метаданные);
Иначе
СписокТиповБезПакетнойРегистрации.Добавить(ОбъектПланаОбмена.Метаданные);
КонецЕсли;
КонецЦикла;
ВыполнитьВыгрузкуЗарегистрированныхДанныхСПакетнойРегистрацией(
КомпонентыОбмена, НомерСообщения, НачальнаяВыгрузкаДанных, УзелДляОбменаОбъект, СписокТиповСПакетнойРегистрацией);
ВыполнитьВыгрузкуЗарегистрированныхДанныхБезПакетнойРегистрации(
КомпонентыОбмена, НомерСообщения, НачальнаяВыгрузкаДанных, УзелДляОбменаОбъект, СписокТиповБезПакетнойРегистрации);
КонецПроцедуры
Процедура ВыполнитьВыгрузкуЗарегистрированныхДанныхСПакетнойРегистрацией(
КомпонентыОбмена, НомерСообщения, НачальнаяВыгрузкаДанных, УзелДляОбменаОбъект, СписокТипов)
УзелДляОбмена = УзелДляОбменаОбъект.Ссылка;
Для Каждого ТипОбъекта Из СписокТипов Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаИзменений.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ТаблицаИзменений.Ссылка.Ссылка ЕСТЬ NULL
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоУдалениеОбъекта
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| #ТаблицаИзменений КАК ТаблицаИзменений
|ГДЕ
| ТаблицаИзменений.Узел = &Узел
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВременнаяТаблица.Ссылка КАК Ссылка
|ИЗ
| ВременнаяТаблица КАК ВременнаяТаблица
|ГДЕ
| ВременнаяТаблица.ЭтоУдалениеОбъекта
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВременнаяТаблица.Ссылка КАК Ссылка
|ИЗ
| ВременнаяТаблица КАК ВременнаяТаблица
|ГДЕ
| НЕ ВременнаяТаблица.ЭтоУдалениеОбъекта";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "#ТаблицаИзменений", ТипОбъекта.ПолноеИмя() + ".Изменения"); //@Query-part-2
Запрос.УстановитьПараметр("Узел", УзелДляОбмена);
РезультатЗапроса = Запрос.ВыполнитьПакет();
Выборка = РезультатЗапроса[1].Выбрать();
Пока Выборка.Следующий() Цикл
ВыгрузитьУдаление(КомпонентыОбмена, Выборка.Ссылка);
КомпонентыОбмена.СчетчикВыгруженныхОбъектов = КомпонентыОбмена.СчетчикВыгруженныхОбъектов + 1;
ОбменДаннымиСервер.РассчитатьПроцентВыгрузки(КомпонентыОбмена.СчетчикВыгруженныхОбъектов, КомпонентыОбмена.КоличествоОбъектовКВыгрузке);
КонецЦикла;
МассивДанных = РезультатЗапроса[2].Выгрузить().ВыгрузитьКолонку("Ссылка");
ПараметрыПР = ОбменДаннымиСобытия.ПараметрыПакетнойРегистрации();
ПараметрыПР.СозданиеНачальногоОбраза = НачальнаяВыгрузкаДанных;
Если СтрокаИзменений.ЕстьПравилоПакетнойРегистрации Тогда
ВремяНачала = ОбменДаннымиОценкаПроизводительности.НачатьЗамер();
ВремяНачала = ОбменДаннымиОценкаПроизводительности.НачатьЗамер();
ОбменДаннымиСобытия.ВыполнитьПакетнуюРегистрациюДляУзла(УзелДляОбмена, МассивДанных, ПараметрыПР);
ОбменДаннымиСобытия.ВыполнитьПакетнуюРегистрациюДляУзла(УзелДляОбмена, СтрокаИзменений.МассивДанных, ПараметрыПР);
ОбменДаннымиОценкаПроизводительности.ЗавершитьЗамер(
ВремяНачала, "ПакетнаяРегистрацияОбъектов", ТипОбъекта.ПолноеИмя(), КомпонентыОбмена,
ОбменДаннымиОценкаПроизводительности.ТипСобытияПрикладное());
ОбменДаннымиОценкаПроизводительности.ЗавершитьЗамер(
ВремяНачала, "ПакетнаяРегистрацияОбъектов", СтрокаИзменений.Тип, КомпонентыОбмена,
ОбменДаннымиОценкаПроизводительности.ТипСобытияПрикладное());
Для Каждого Ссылка Из ПараметрыПР.СсылкиПоФильтруПакетнойРегистрации Цикл
КонецЕсли;
Для Каждого Данные Из СтрокаИзменений.МассивДанных Цикл
Объект = Ссылка.ПолучитьОбъект();
Попытка
Если ТипЗнч(Данные) = Тип("УдалениеОбъекта") Тогда
ВыгрузитьУдаление(КомпонентыОбмена, Данные.Ссылка);
Иначе
ЭтоСсылка = СтрокаИзменений.ЕстьПравилоПакетнойРегистрации;
ОтправкаЭлемента = ОтправкаЭлементаДанных.Авто;
ВремяНачала = ОбменДаннымиОценкаПроизводительности.НачатьЗамер();
Если СтрокаИзменений.ЕстьПравилоПакетнойРегистрации Тогда
Если ПараметрыПР.ЕстьПРО_БезПакетнойРегистрации
И ПараметрыПР.СсылкиПоФильтруПакетнойРегистрации.Найти(Данные) = Неопределено Тогда
ЭлементДанных = ?(ЭтоСсылка, Данные.ПолучитьОбъект(), Данные);
ЭлементДанных.ДополнительныеСвойства.Вставить("ПроверкаРегистрацииПередВыгрузкой");
ОбменДаннымиСобытия.ПриОтправкеДанныхКорреспонденту(ЭлементДанных, ОтправкаЭлемента,
НачальнаяВыгрузкаДанных, УзелДляОбменаОбъект, Ложь);
ИначеЕсли Не ПараметрыПР.ЕстьПРО_БезПакетнойРегистрации
И ПараметрыПР.СсылкиПоФильтруПакетнойРегистрации.Найти(Данные.Ссылка) = Неопределено Тогда
Если НачальнаяВыгрузкаДанных Тогда
ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
Иначе
ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить;
КонецЕсли;
КонецЕсли;
Иначе
ЭлементДанных = ?(ЭтоСсылка, Данные.ПолучитьОбъект(), Данные);
ЭлементДанных.ДополнительныеСвойства.Вставить("ПроверкаРегистрацииПередВыгрузкой");
ОбменДаннымиСобытия.ПриОтправкеДанныхКорреспонденту(ЭлементДанных, ОтправкаЭлемента,
НачальнаяВыгрузкаДанных, УзелДляОбменаОбъект, Ложь);
КонецЕсли;
ОбменДаннымиОценкаПроизводительности.ЗавершитьЗамер(
ВремяНачала, "РегистрацияОбъектов", Данные, КомпонентыОбмена,
ОбменДаннымиОценкаПроизводительности.ТипСобытияБиблиотека());
// Удаление регистра отсылаем в виде пустого набора записей.
Если ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить
И ОбщегоНазначения.ЭтоРегистр(Данные.Метаданные()) Тогда
ОтправкаЭлемента = ОтправкаЭлементаДанных.Авто;
КонецЕсли;
Если ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить Тогда
ВыгрузитьУдаление(КомпонентыОбмена, Данные.Ссылка);
ИначеЕсли ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать Тогда
// Ситуация, когда объект не соответствует условиям фильтра, но его не нужно отправлять как удаление.
// Возникает в случае первоначальной выгрузки данных.
ПланыОбмена.УдалитьРегистрациюИзменений(УзелДляОбмена, Данные);
Продолжить;
Иначе
ЭлементДанных = ?(ЭтоСсылка, Данные.ПолучитьОбъект(), Данные);
ВыгрузкаОбъектаВыборки(КомпонентыОбмена, ЭлементДанных);
КонецЕсли;
КонецЕсли;
КомпонентыОбмена.СчетчикВыгруженныхОбъектов = КомпонентыОбмена.СчетчикВыгруженныхОбъектов + 1;
ОбменДаннымиСервер.РассчитатьПроцентВыгрузки(КомпонентыОбмена.СчетчикВыгруженныхОбъектов, КомпонентыОбмена.КоличествоОбъектовКВыгрузке);
ВыгрузкаОбъектаВыборки(КомпонентыОбмена, Объект);
Исключение
Инфо = ИнформацияОбОшибке();
ПредставлениеДанных = ПредставлениеОбъектаДляПротокола(Данные);
ПредставлениеДанных = ПредставлениеОбъектаДляПротокола(Объект);
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Событие: %1.
@@ -4220,82 +4260,103 @@
КомпонентыОбмена.НаправлениеОбмена,
ПредставлениеДанных,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(Инфо));
КонецПопытки;
КонецПопытки;
КомпонентыОбмена.СчетчикВыгруженныхОбъектов = КомпонентыОбмена.СчетчикВыгруженныхОбъектов + 1;
ОбменДаннымиСервер.РассчитатьПроцентВыгрузки(КомпонентыОбмена.СчетчикВыгруженныхОбъектов, КомпонентыОбмена.КоличествоОбъектовКВыгрузке);
КонецЦикла;
Если ПараметрыПР.ЕстьПРО_БезПакетнойРегистрации
И ПараметрыПР.СсылкиНеПоФильтруПакетнойРегистрации.Количество() > 0 Тогда
Для Каждого Ссылка Из ПараметрыПР.СсылкиНеПоФильтруПакетнойРегистрации Цикл
Объект = Ссылка.ПолучитьОбъект();
ВыгрузкаЗарегистрированногоОбъекта(КомпонентыОбмена, НачальнаяВыгрузкаДанных, УзелДляОбменаОбъект, Объект);
КонецЦикла;
ИначеЕсли НачальнаяВыгрузкаДанных
И НЕ ПараметрыПР.ЕстьПРО_БезПакетнойРегистрации
И ПараметрыПР.СсылкиНеПоФильтруПакетнойРегистрации.Количество() > 0 Тогда
Для Каждого Ссылка Из ПараметрыПР.СсылкиНеПоФильтруПакетнойРегистрации Цикл
Объект = Ссылка.ПолучитьОбъект();
ПланыОбмена.УдалитьРегистрациюИзменений(УзелДляОбменаОбъект.Ссылка, Объект);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция ЗаполнитьТаблицуИзменений(УзелДляОбмена, НомерСообщения, КоличествоОбъектовКВыгрузке)
Процедура ВыполнитьВыгрузкуЗарегистрированныхДанныхБезПакетнойРегистрации(
КомпонентыОбмена, НомерСообщения, НачальнаяВыгрузкаДанных, УзелДляОбменаОбъект, СписокТипов)
ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелДляОбмена);
// Получаем выборку измененных данных.
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелДляОбмена, НомерСообщения);
ТаблицаИзменений = Новый ТаблицаЗначений;
ТаблицаИзменений.Колонки.Добавить("Тип");
ТаблицаИзменений.Колонки.Добавить("МассивДанных", Новый ОписаниеТипов("Массив"));
ТаблицаИзменений.Колонки.Добавить("ЕстьПравилоПакетнойРегистрации", Новый ОписаниеТипов("Булево"));
УзелДляОбмена = КомпонентыОбмена.УзелКорреспондента;
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелДляОбмена, НомерСообщения, СписокТипов);
Пока ВыборкаИзменений.Следующий() Цикл
КоличествоОбъектовКВыгрузке = КоличествоОбъектовКВыгрузке + 1;
Данные = ВыборкаИзменений.Получить();
Тип = ТипЗнч(Данные);
СтрокаИзменений = ТаблицаИзменений.Найти(Тип, "Тип");
Если СтрокаИзменений = Неопределено Тогда
СтрокаИзменений = ТаблицаИзменений.Добавить();
СтрокаИзменений.Тип = Тип;
СтрокаИзменений.ЕстьПравилоПакетнойРегистрации = ЕстьПравилоПакетнойРегистрации(Данные, УзелДляОбмена);
КонецЕсли;
Если СтрокаИзменений.ЕстьПравилоПакетнойРегистрации Тогда
СтрокаИзменений.МассивДанных.Добавить(Данные.Ссылка);
Иначе
СтрокаИзменений.МассивДанных.Добавить(Данные);
КонецЕсли;
Объект = ВыборкаИзменений.Получить();
ВыгрузкаЗарегистрированногоОбъекта(КомпонентыОбмена, НачальнаяВыгрузкаДанных, УзелДляОбменаОбъект, Объект);
КонецЦикла;
Возврат ТаблицаИзменений;
КонецПроцедуры
КонецФункции
Процедура ВыгрузкаЗарегистрированногоОбъекта(КомпонентыОбмена, НачальнаяВыгрузкаДанных, УзелДляОбменаОбъект, Объект)
Функция ЕстьПравилоПакетнойРегистрации(Данные, Узел)
Попытка
Если ТипЗнч(Объект) = Тип("УдалениеОбъекта") Тогда
ВыгрузитьУдаление(КомпонентыОбмена, Объект.Ссылка);
Иначе
ОтправкаЭлемента = ОтправкаЭлементаДанных.Авто;
ОбменДаннымиСобытия.ПриОтправкеДанныхКорреспонденту(Объект, ОтправкаЭлемента, НачальнаяВыгрузкаДанных, УзелДляОбменаОбъект, Ложь);
Тип = ТипЗнч(Данные);
Если Тип = Тип("УдалениеОбъекта") Тогда
Возврат Ложь;
КонецЕсли;
Результат = Ложь;
Если ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(Данные.Метаданные()) Тогда
ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(Узел);
ПолноеИмяОбъекта = Данные.Метаданные().ПолноеИмя();
Правила = ОбменДаннымиСобытия.ПравилаРегистрацииОбъекта(ИмяПланаОбмена, ПолноеИмяОбъекта);
Для Каждого ПРО Из Правила Цикл
Если ПРО.ПакетноеВыполнениеОбработчиков Тогда
Результат = Истина;
Прервать;
// Удаление регистра отсылаем в виде пустого набора записей.
Если ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить
И ОбщегоНазначения.ЭтоРегистр(Объект.Метаданные()) Тогда
ОтправкаЭлемента = ОтправкаЭлементаДанных.Авто;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить Тогда
ВыгрузитьУдаление(КомпонентыОбмена, Объект.Ссылка);
ИначеЕсли ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать Тогда
// Ситуация, когда объект не соответствует условиям фильтра, но его не нужно отправлять как удаление.
// Возникает в случае первоначальной выгрузки данных.
ПланыОбмена.УдалитьРегистрациюИзменений(УзелДляОбменаОбъект.Ссылка, Объект);
Возврат;
Иначе
ВыгрузкаОбъектаВыборки(КомпонентыОбмена, Объект);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КомпонентыОбмена.СчетчикВыгруженныхОбъектов = КомпонентыОбмена.СчетчикВыгруженныхОбъектов + 1;
ОбменДаннымиСервер.РассчитатьПроцентВыгрузки(КомпонентыОбмена.СчетчикВыгруженныхОбъектов, КомпонентыОбмена.КоличествоОбъектовКВыгрузке);
КонецФункции
Исключение
Инфо = ИнформацияОбОшибке();
ПредставлениеДанных = ПредставлениеОбъектаДляПротокола(Объект);
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Событие: %1.
|Объект: %2.
|
|%3'"),
КомпонентыОбмена.НаправлениеОбмена,
ПредставлениеДанных,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(Инфо));
КонецПопытки;
КонецПроцедуры
Процедура ВыгрузитьОбъектыПоСсылке(КомпонентыОбмена, СсылкиИзОбъекта)
@@ -4308,21 +4369,29 @@
Если КомпонентыОбмена.ВыгруженныеОбъекты.Найти(ЗначениеСсылки) = Неопределено
И ВыгружатьОбъектПоНеобходимости(КомпонентыОбмена, ЗначениеСсылки) Тогда
Если Не РегистрыСведений.ДанныеОбъектовДляРегистрацииВОбменах.ОбъектЕстьВРегистре(
ЗначениеСсылки, КомпонентыОбмена.УзелКорреспондента) Тогда
ОбъектЕстьВРегистре = КомпонентыОбмена.КешДанныхОбъектовДляРегистрацииВОбменах.Получить(ЗначениеСсылки);
ОбъектВыгружаемыйПоСсылке = Неопределено;
Если ОбъектЕстьВРегистре = Неопределено Тогда
Если ОбщегоНазначения.СсылкаСуществует(ЗначениеСсылки) Тогда
ОбъектВыгружаемыйПоСсылке = ЗначениеСсылки.ПолучитьОбъект();
КонецЕсли;
Если Не РегистрыСведений.ДанныеОбъектовДляРегистрацииВОбменах.ОбъектЕстьВРегистре(
ЗначениеСсылки, КомпонентыОбмена.УзелКорреспондента) Тогда
Если ОбъектВыгружаемыйПоСсылке <> Неопределено Тогда
ОбъектВыгружаемыйПоСсылке = Неопределено;
ВыгрузкаОбъектаВыборки(КомпонентыОбмена, ОбъектВыгружаемыйПоСсылке);
КомпонентыОбмена.ВыгруженныеПоСсылкеОбъекты.Добавить(ЗначениеСсылки);
РегистрыСведений.ДанныеОбъектовДляРегистрацииВОбменах.ДобавитьОбъектВФильтрРазрешенныхОбъектов(
ЗначениеСсылки, КомпонентыОбмена.УзелКорреспондента);
Если ОбщегоНазначения.СсылкаСуществует(ЗначениеСсылки) Тогда
ОбъектВыгружаемыйПоСсылке = ЗначениеСсылки.ПолучитьОбъект();
КонецЕсли;
Если ОбъектВыгружаемыйПоСсылке <> Неопределено Тогда
ВыгрузкаОбъектаВыборки(КомпонентыОбмена, ОбъектВыгружаемыйПоСсылке);
КомпонентыОбмена.ВыгруженныеПоСсылкеОбъекты.Добавить(ЗначениеСсылки);
РегистрыСведений.ДанныеОбъектовДляРегистрацииВОбменах.ДобавитьОбъектВФильтрРазрешенныхОбъектов(
ЗначениеСсылки, КомпонентыОбмена.УзелКорреспондента);
КомпонентыОбмена.КешДанныхОбъектовДляРегистрацииВОбменах.Вставить(ЗначениеСсылки);
КонецЕсли;
КонецЕсли;
@@ -4564,8 +4633,17 @@
Если КомпонентыОбмена.ЭтоОбменЧерезПланОбмена Тогда
УИДОбъектаXDTO = РегистрыСведений.ПубличныеИдентификаторыСинхронизируемыхОбъектов.ПубличныйИдентификаторПоСсылкеОбъекта(
КомпонентыОбмена.УзелКорреспондента, ЗначениеСсылки);
УИДОбъектаXDTO = КомпонентыОбмена.КешПубличныхИдентификаторов.Получить(ЗначениеСсылки);
Если УИДОбъектаXDTO = Неопределено Тогда
УИДОбъектаXDTO = РегистрыСведений.ПубличныеИдентификаторыСинхронизируемыхОбъектов.ПубличныйИдентификаторПоСсылкеОбъекта(
КомпонентыОбмена.УзелКорреспондента, ЗначениеСсылки);
КомпонентыОбмена.КешПубличныхИдентификаторов.Вставить(ЗначениеСсылки, УИДОбъектаXDTO);
КонецЕсли;
ЗначениеXDTO = ФабрикаXDTO.Создать(ТипСсылкиXDTO, УИДОбъектаXDTO);
Возврат ЗначениеXDTO;
@@ -4863,7 +4941,7 @@
ВыгрузитьПоддерживаемыеОбъектыФормата(ЗаголовокСообщенияXDTO,
ПараметрыЗаголовка.ПоддерживаемыеОбъекты, ПараметрыЗаголовка.УзелКорреспондента);
Иначе
ИмяПланаОбмена = ТранслироватьИмя(ПараметрыЗаголовка.ИмяПланаОбменаКорреспондента, "ru");
ИмяПланаОбмена = ТранслироватьИмя(ПараметрыЗаголовка.ИмяПланаОбмена, "ru");
ПодтверждениеXDTO.ExchangePlan = ИмяПланаОбмена;
ПодтверждениеXDTO.To = ПараметрыЗаголовка.ИдентификаторПолучателя;
@@ -6906,6 +6984,13 @@
КонецЕсли;
// Попытка на случай отсутствия обработчика в менеджере обмена данными
Попытка
КомпонентыОбмена.МенеджерОбмена.ПередОбработкойУдаляемогоОбъекта(КомпонентыОбмена, Объект);
Исключение
// Действий не требуется
КонецПопытки;
МетаданныеОбъекта = Объект.Метаданные();
Если Метаданные.Документы.Содержит(МетаданныеОбъекта) Тогда
Если Объект.Проведен Тогда
@@ -7828,10 +7913,24 @@
ПредставлениеОбъекта = Строка(Объект);
НавигационнаяСсылка = "";
// Для корректного перевода кода на английский язык
Ссылка = Неопределено;
Если ТипЗнч(Объект) = Тип("ОбъектXDTO") Тогда
Ссылка = Объект.Ссылка;
ИначеЕсли ТипЗнч(Объект) = Тип("Структура") Тогда
Если Объект.Свойство("Ссылка") Тогда
Ссылка = Объект.Ссылка;
КонецЕсли;
Иначе
Если ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(МетаданныеОбъекта) Тогда
Ссылка = Объект.Ссылка;
КонецЕсли;
КонецЕсли;
Если МетаданныеОбъекта <> Неопределено
И ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(МетаданныеОбъекта)
И ЗначениеЗаполнено(Объект.Ссылка) Тогда
НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Объект.Ссылка);
И ЗначениеЗаполнено(Ссылка) Тогда
НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Ссылка);
Иначе
Если ТипОбъекта = Тип("ОбъектXDTO") Тогда
@@ -7852,12 +7951,11 @@
ИначеЕсли ТипОбъекта = Тип("Структура") Тогда
СформироватьПредставлениеДляСтруктуры = Истина;
Если Объект.Свойство("Ссылка")
И ЗначениеЗаполнено(Объект.Ссылка) Тогда
ТипОбъекта = ТипЗнч(Объект.Ссылка);
Если ЗначениеЗаполнено(Ссылка) Тогда
ТипОбъекта = ТипЗнч(Ссылка);
Если ОбщегоНазначения.ЭтоСсылка(ТипОбъекта) Тогда
ПредставлениеОбъекта = Строка(Объект.Ссылка);
НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Объект.Ссылка);
ПредставлениеОбъекта = Строка(Ссылка);
НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Ссылка);
СформироватьПредставлениеДляСтруктуры = Ложь;
КонецЕсли;
@@ -7875,7 +7973,7 @@
КонецЕсли;
КонецЕсли;
ПредставлениеОбъекта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1, %2 (%3)'"),
ПредставлениеОбъекта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1, %2 (%3)",
ТипОбъекта, ПредставлениеОбъекта, НавигационнаяСсылка);
Возврат ПредставлениеОбъекта;
@@ -8556,38 +8654,17 @@
КонецПроцедуры
Функция НайтиИмяПланаОбменаЧерезУниверсальныйФормат(КомпонентыОбмена, ПодтверждениеXDTO)
Если КомпонентыОбмена.ОбменДаннымиСВнешнейСистемой Тогда
Возврат ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(КомпонентыОбмена.УзелКорреспондента);
КонецЕсли;
Если ЗначениеЗаполнено(КомпонентыОбмена.УзелКорреспондента) Тогда
Возврат ОбменДаннымиСервер.НайтиИмяПланаОбменаЧерезУниверсальныйФормат(ПодтверждениеXDTO.ExchangePlan);
Иначе
ИмяПланаОбмена = ТранслироватьИмя(ПодтверждениеXDTO.ExchangePlan, "en");
ИмяПланаОбмена = Метаданные.ПланыОбмена.Найти(ИмяПланаОбмена);
Возврат ИмяПланаОбмена;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область ТрансляцияФормата
Функция ТранслироватьИмя(ИсхдноеИмя, НаправлениеПеревода, ДоступныеИмена = Неопределено)
Функция ТранслироватьИмя(ИсходноеИмя, НаправлениеПеревода, ДоступныеИмена = Неопределено)
Если Метаданные.ВариантВстроенногоЯзыка = Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка.Русский Тогда
Возврат ИсхдноеИмя;
Возврат ИсходноеИмя;
КонецЕсли;
НовоеИмя = ОбменДаннымиТрансляцияФорматаПовтИсп.ТранслироватьИмя(ИсхдноеИмя, НаправлениеПеревода);
НовоеИмя = ОбменДаннымиТрансляцияФорматаПовтИсп.ТранслироватьИмя(ИсходноеИмя, НаправлениеПеревода);
Если ТипЗнч(НовоеИмя) = Тип("Строка") Тогда
@@ -8707,6 +8784,8 @@
Для Каждого Строка Из ПравилаКонвертации Цикл
Строка.ТипXDTO = ТранслироватьИмя(Строка.ТипXDTO, "ru");
Если ЗначениеЗаполнено(Строка.КонвертацииЗначенийПриОтправке) Тогда
ЗначенийПриОтправке = Новый Соответствие;
@@ -208,7 +208,6 @@
Типы.Добавить(Метаданные.Константы.ЗарегистрированыИзмененияДанных);
Типы.Добавить(Метаданные.Константы.НастройкиПодчиненногоУзлаРИБ);
Типы.Добавить(Метаданные.Константы.ПрефиксПоследнегоАвтономногоРабочегоМеста);
Типы.Добавить(Метаданные.Константы.ВыполняетсяЗагрузкаДанныхРИБ);
МодульВыгрузкаЗагрузкаДанных = ОбщегоНазначения.ОбщийМодуль("ВыгрузкаЗагрузкаДанных");
МодульВыгрузкаЗагрузкаДанных.ДополнитьТипомИсключаемымИзВыгрузкиЗагрузки(Типы,
@@ -455,9 +454,8 @@
// 4. Не входит в список исключений.
//
// Параметры:
// Объект - Произвольный - объект-источник данных
// Объект - Произвольный - Объект-источник данных
// Отказ - Булево - флаг отказа
//
Процедура ПередЗаписьюОбщихДанных(Объект, Отказ) Экспорт
Если Объект.ОбменДанными.Загрузка Тогда
@@ -580,14 +578,14 @@
Новый Структура("КодУзла", ОбменДаннымиСервер.КодУзлаПланаОбменаСтрокой(ОбластьДанных)),
МодульРаботаВМоделиСервисаБТСПовтИсп.КонечнаяТочкаМенеджераСервиса());
ИзменитьПризнакНеобходимостиОбменаДаннымиВМоделиСервиса(Истина);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
ИзменитьПризнакНеобходимостиОбменаДаннымиВМоделиСервиса(Истина);
КонецПроцедуры
// Заполняет переданный массив общими модулями, которые являются обработчиками интерфейсов
@@ -657,7 +657,7 @@
// Функция передает указанный файл в сервис передачи файлов.
//
// Параметры:
// Прокси
// Прокси -
// ВерсияПрокси - Строка - версия используемого веб-сервиса
// СтруктураНастроекОбмена - Структура - структура со всеми необходимыми данными и объектами для выполнения обмена.
// ИмяФайла - Строка - путь к передаваемому файлу.
@@ -49,7 +49,16 @@
// Должны быть выполнены задачи из сценария из последнего запуска
Если Не ОчередьЗадачВыполнена(Сценарий) Тогда
ТекстСообщения = НСтр("ru = 'Не запустилось выполнение синхронизации по сценарию,
|не завершилась предыдущая сессия выполнения синхронизации.'",
ОбщегоНазначения.КодОсновногоЯзыка());
ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(),
УровеньЖурналаРегистрации.Информация,,,ТекстСообщения);
Возврат;
КонецЕсли;
ПерваяЗадача = Неопределено;
@@ -87,7 +96,7 @@
ПараметрыЗадания.Вставить("ЗапланированныйМоментЗапуска", ТекущаяУниверсальнаяДата());
ПараметрыЗадания.Вставить("Параметры", ПараметрыПроцедуры);
ПараметрыЗадания.Вставить("КоличествоПовторовПриАварийномЗавершении", 3);
ПараметрыЗадания.Вставить("ИнтервалПовтораПриАварийномЗавершении", 300);
ПараметрыЗадания.Вставить("ИнтервалПовтораПриАварийномЗавершении", 900);
МодульОчередьЗаданий = ОбщегоНазначения.ОбщийМодуль("ОчередьЗаданий");
МодульОчередьЗаданий.ДобавитьЗадание(ПараметрыЗадания);
@@ -96,6 +105,10 @@
Процедура ВыполнитьОчередьЗадач(Задача, ЗадачаПред = "") Экспорт
Если Задача = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(Задача) = Тип("Строка") Тогда
ТекЗадача = ЗадачаПоИдентификатору(Задача);
Иначе
@@ -168,7 +181,9 @@
| Задачи.ЗавершенаУспешно КАК ЗавершенаУспешно,
| Задачи.ЗавершенаСОшибкой КАК ЗавершенаСОшибкой,
| Задачи.Ошибка КАК Ошибка,
| Задачи.Параметры КАК Параметры
| Задачи.Параметры КАК Параметры,
| Задачи.Режим КАК Режим,
| Задачи.ОбластьДанныхКорреспондента КАК ОбластьДанныхКорреспондента
|ИЗ
| РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК Задачи
|ГДЕ
@@ -203,7 +218,9 @@
| ЗадачаСлед.ЗавершенаУспешно КАК ЗавершенаУспешно,
| ЗадачаСлед.ЗавершенаСОшибкой КАК ЗавершенаСОшибкой,
| ЗадачаСлед.Ошибка КАК Ошибка,
| ЗадачаСлед.Параметры КАК Параметры
| ЗадачаСлед.Параметры КАК Параметры,
| ЗадачаСлед.Режим КАК Режим,
| ЗадачаСлед.ОбластьДанныхКорреспондента КАК ОбластьДанныхКорреспондента
|ИЗ
| РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК Задача
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК ЗадачаСлед
@@ -265,71 +282,39 @@
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Задачи.ДатаСоздания КАК ДатаСоздания,
| Задачи.Сценарий КАК Сценарий,
| Задачи.ИдентификаторОбмена КАК ИдентификаторОбмена
|ПОМЕСТИТЬ втПоследнийСценарий
|ИЗ
| РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК Задачи
|ГДЕ
| Задачи.ИдентификаторОбмена = &ИдентификаторОбмена
|
|УПОРЯДОЧИТЬ ПО
| ДатаСоздания УБЫВ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
"ВЫБРАТЬ
| Задачи.ДатаСоздания КАК ДатаСоздания,
| Задачи.УзелИнформационнойБазы КАК УзелИнформационнойБазы,
| Задачи.НомерЗадачи КАК НомерЗадачи,
| Задачи.ИдентификаторОбмена КАК ИдентификаторОбмена,
| Задачи.ИдентификаторЗадачи КАК ИдентификаторЗадачи
|ИЗ
| втПоследнийСценарий КАК втПоследнийСценарий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК Задачи
| ПО втПоследнийСценарий.ДатаСоздания = Задачи.ДатаСоздания
| И втПоследнийСценарий.ИдентификаторОбмена = Задачи.ИдентификаторОбмена
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Задачи.ИдентификаторЗадачи КАК ИдентификаторЗадачи,
| Задачи.Действие КАК Действие,
| Задачи.ЗавершенаУспешно КАК ЗавершенаУспешно,
| Задачи.ЗавершенаСОшибкой КАК ЗавершенаСОшибкой
| Задачи.ЗавершенаСОшибкой КАК ЗавершенаСОшибкой,
| Задачи.Действие КАК Действие
|ИЗ
| втПоследнийСценарий КАК втПоследнийСценарий
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК Задачи
| ПО втПоследнийСценарий.ДатаСоздания = Задачи.ДатаСоздания
| И втПоследнийСценарий.ИдентификаторОбмена = Задачи.ИдентификаторОбмена";
| РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК Задачи
|ГДЕ
| Задачи.ИдентификаторОбмена = &ИдентификаторОбмена";
Запрос.УстановитьПараметр("ИдентификаторОбмена", ИдентификаторОбмена);
Результат = Запрос.ВыполнитьПакет();
Результат = Запрос.Выполнить();
Выборка = Результат[1].Выбрать();
Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;
Пока Выборка.Следующий() Цикл
Запись = РегистрыСведений.ЗадачиОбменаДаннымиВнутренняяПубликация.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(Запись, Выборка);
Запись.Прочитать();
Запись.Удалить();
КонецЦикла;
Выборка = Результат.Выбрать();
ЗадачиИсточника = Новый Массив;
Если ТипЗнч(Сценарий) = Тип("СправочникСсылка.СценарииОбменовДанными") Тогда
ЗадачиИсточника.Добавить(Сценарий.РегламентноеЗаданиеGUID);
Если ЗначениеЗаполнено(Сценарий) Тогда
РегламентноеЗаданиеGUID = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Сценарий, "РегламентноеЗаданиеGUID");
ЗадачиИсточника.Добавить(РегламентноеЗаданиеGUID);
КонецЕсли;
ЗадачиПриемника = Новый Массив;
Выборка = Результат[2].Выбрать();
Пока Выборка.Следующий() Цикл
Если (Выборка.Действие = Перечисления.ДействияПриОбменеВнутренняяПубликация.ВыгрузкаДанныхКорреспондент
@@ -340,15 +325,17 @@
ИначеЕсли Выборка.Действие = Перечисления.ДействияПриОбменеВнутренняяПубликация.ВыгрузкаДанных
Или Выборка.Действие = Перечисления.ДействияПриОбменеВнутренняяПубликация.ЗагрузкаДанных
Или Выборка.Действие = Перечисления.ДействияПриОбменеВнутренняяПубликация.ДополнительнаяРегистрация Тогда
Или Выборка.Действие = Перечисления.ДействияПриОбменеВнутренняяПубликация.ДополнительнаяРегистрация
И Не Выборка.ЗавершенаУспешно Тогда
ЗадачиИсточника.Добавить(Выборка.ИдентификаторЗадачи);
КонецЕсли;
Если Не Выборка.ЗавершенаУспешно Тогда
Прервать;
КонецЕсли;
Запись = РегистрыСведений.ЗадачиОбменаДаннымиВнутренняяПубликация.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(Запись, Выборка);
Запись.Прочитать();
Запись.Удалить();
КонецЦикла;
@@ -361,23 +348,25 @@
Отбор = Новый Структура("Ключ", ИдентификаторЗадачи);
Задания = МодульОчередьЗаданий.ПолучитьЗадания(Отбор);
Если Задания.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
Для Каждого Задание Из Задания Цикл
УникальныйИдентификаторФЗ = Задания[0].Идентификатор.ИсполняющееФоновоеЗадание;
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("КоличествоПовторовПриАварийномЗавершении", 0);
Если Не ЗначениеЗаполнено(УникальныйИдентификаторФЗ) Тогда
Продолжить;
КонецЕсли;
МодульОчередьЗаданий.ИзменитьЗадание(Задание.Идентификатор, ПараметрыЗадания);
МодульОчередьЗаданий.УдалитьЗадание(Задание.Идентификатор);
ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(УникальныйИдентификаторФЗ);
Если ФоновоеЗадание <> Неопределено Тогда
ФоновоеЗадание.Отменить();
КонецЕсли;
УникальныйИдентификаторФЗ = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Задание.Идентификатор, "ИсполняющееФоновоеЗадание");
ДлительныеОперации.ОтменитьВыполнениеЗадания(УникальныйИдентификаторФЗ);
КонецЦикла;
КонецЦикла;
УстановитьПривилегированныйРежим(Ложь);
Если ЗадачиПриемника.Количество() > 0 Тогда
Прокси = Неопределено;
@@ -600,57 +589,121 @@
Процедура УдалитьУстаревшиеЗадачи(Сценарий = Неопределено, РучнойОбмен = Ложь)
// Оставляем N последних записей
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 5
| Задачи.ДатаСоздания КАК ДатаСоздания
|ПОМЕСТИТЬ втДаты
|ИЗ
| РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК Задачи
|ГДЕ
| (&РучнойОбмен
| И ТИПЗНАЧЕНИЯ(Задачи.Сценарий) = ТИП(СТРОКА)
| ИЛИ НЕ &РучнойОбмен
| И Задачи.Сценарий = &Сценарий)
|
|УПОРЯДОЧИТЬ ПО
| ДатаСоздания УБЫВ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Задачи.ДатаСоздания КАК ДатаСоздания,
| Задачи.УзелИнформационнойБазы КАК УзелИнформационнойБазы,
| Задачи.НомерЗадачи КАК НомерЗадачи,
| Задачи.ИдентификаторОбмена КАК ИдентификаторОбмена,
| Задачи.ИдентификаторЗадачи КАК ИдентификаторЗадачи
|ИЗ
| РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК Задачи
|ГДЕ
| Задачи.Сценарий = &Сценарий
| И НЕ Задачи.ДатаСоздания В
| (ВЫБРАТЬ
| втДаты.ДатаСоздания
| ИЗ
| втДаты)";
НачатьТранзакцию();
Запрос.УстановитьПараметр("Сценарий", Сценарий);
Запрос.УстановитьПараметр("РучнойОбмен", РучнойОбмен);
Попытка
Выборка = Запрос.Выполнить().Выбрать();
// Удаление записей с битыми ссылками
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Задачи.ДатаСоздания КАК ДатаСоздания,
| Задачи.УзелИнформационнойБазы КАК УзелИнформационнойБазы,
| Задачи.НомерЗадачи КАК НомерЗадачи,
| Задачи.ИдентификаторОбмена КАК ИдентификаторОбмена,
| Задачи.ИдентификаторЗадачи КАК ИдентификаторЗадачи
|ИЗ
| РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК Задачи
|ГДЕ
| Задачи.УзелИнформационнойБазы.Код ЕСТЬ NULL";
Пока Выборка.Следующий() Цикл
Выборка = Запрос.Выполнить().Выбрать();
Запись = РегистрыСведений.ЗадачиОбменаДаннымиВнутренняяПубликация.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(Запись, Выборка);
Запись.Прочитать();
Пока Выборка.Следующий() Цикл
Если Запись.Выбран() Тогда
Запись.Удалить();
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация");
ЭлементБлокировки.УстановитьЗначение("ДатаСоздания", Выборка.ДатаСоздания);
ЭлементБлокировки.УстановитьЗначение("УзелИнформационнойБазы", Выборка.УзелИнформационнойБазы);
ЭлементБлокировки.УстановитьЗначение("НомерЗадачи", Выборка.НомерЗадачи);
ЭлементБлокировки.УстановитьЗначение("ИдентификаторОбмена", Выборка.ИдентификаторОбмена);
ЭлементБлокировки.УстановитьЗначение("ИдентификаторЗадачи", Выборка.ИдентификаторЗадачи);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Запись = РегистрыСведений.ЗадачиОбменаДаннымиВнутренняяПубликация.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(Запись, Выборка);
Запись.Прочитать();
Если Запись.Выбран() Тогда
Запись.Удалить();
КонецЕсли;
КонецЦикла;
// Оставляем N последних записей
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 5
| Задачи.ИдентификаторОбмена КАК ИдентификаторОбмена
|ПОМЕСТИТЬ втПоследниеСинхронизации
|ИЗ
| РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК Задачи
|ГДЕ
| Задачи.Сценарий = &Сценарий
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Задачи.ДатаСоздания КАК ДатаСоздания,
| Задачи.УзелИнформационнойБазы КАК УзелИнформационнойБазы,
| Задачи.НомерЗадачи КАК НомерЗадачи,
| Задачи.ИдентификаторОбмена КАК ИдентификаторОбмена,
| Задачи.ИдентификаторЗадачи КАК ИдентификаторЗадачи
|ИЗ
| РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК Задачи
| ПОЛНОЕ СОЕДИНЕНИЕ втПоследниеСинхронизации КАК втПоследниеСинхронизации
| ПО Задачи.ИдентификаторОбмена = втПоследниеСинхронизации.ИдентификаторОбмена
|ГДЕ
| втПоследниеСинхронизации.ИдентификаторОбмена ЕСТЬ NULL
| И Задачи.Сценарий = &Сценарий
|
|УПОРЯДОЧИТЬ ПО
| ДатаСоздания";
Если ЗначениеЗаполнено(Сценарий) Тогда
Запрос.УстановитьПараметр("Сценарий", Сценарий);
Иначе
Запрос.УстановитьПараметр("Сценарий", Справочники.СценарииОбменовДанными.ПустаяСсылка());
КонецЕсли;
КонецЦикла;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация");
ЭлементБлокировки.УстановитьЗначение("ДатаСоздания", Выборка.ДатаСоздания);
ЭлементБлокировки.УстановитьЗначение("УзелИнформационнойБазы", Выборка.УзелИнформационнойБазы);
ЭлементБлокировки.УстановитьЗначение("НомерЗадачи", Выборка.НомерЗадачи);
ЭлементБлокировки.УстановитьЗначение("ИдентификаторОбмена", Выборка.ИдентификаторОбмена);
ЭлементБлокировки.УстановитьЗначение("ИдентификаторЗадачи", Выборка.ИдентификаторЗадачи);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Запись = РегистрыСведений.ЗадачиОбменаДаннымиВнутренняяПубликация.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(Запись, Выборка);
Запись.Прочитать();
Если Запись.Выбран() Тогда
Запись.Удалить();
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
СообщениеОбОшибке = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Событие = НСтр("ru = 'Обмен данными.Удаление записей регистра задач'", ОбщегоНазначения.КодОсновногоЯзыка());
ЗаписьЖурналаРегистрации(Событие, УровеньЖурналаРегистрации.Ошибка, , , СообщениеОбОшибке);
КонецПопытки;
КонецПроцедуры
@@ -792,26 +845,57 @@
КонецПроцедуры
Функция ОчередьЗадачВыполнена(Сценарий = "", ИдентификаторОбмена = "", Ошибка = "")
Функция ОчередьЗадачВыполнена(Сценарий = Неопределено, ИдентификаторОбмена = "", Ошибка = "")
// Считаем, что сценарий (или ручной обмен) завершен, если для всех задач ЗавершеноУспешно = Истина, или есть ошибка
Если ЗначениеЗаполнено(Сценарий) И Не ЗначениеЗаполнено(ИдентификаторОбмена) Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Задачи.ИдентификаторОбмена КАК ИдентификаторОбмена
|ИЗ
| РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК Задачи
|ГДЕ
| Задачи.Сценарий = &Сценарий
|
|УПОРЯДОЧИТЬ ПО
| Задачи.ДатаСоздания УБЫВ";
Запрос.УстановитьПараметр("Сценарий", Сценарий);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ИдентификаторОбмена = Выборка.ИдентификаторОбмена;
Иначе
Возврат Истина;
КонецЕсли;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Задачи.ИдентификаторЗадачи КАК ИдентификаторЗадачи,
| Задачи.ДатаСоздания КАК ДатаСоздания,
| Задачи.УзелИнформационнойБазы КАК УзелИнформационнойБазы,
| Задачи.НомерЗадачи КАК НомерЗадачи,
| Задачи.ИдентификаторОбмена КАК ИдентификаторОбмена,
| Задачи.ИдентификаторЗадачи КАК ИдентификаторЗадачи,
| Задачи.Действие КАК Действие,
| Задачи.ЗавершенаУспешно КАК ЗавершенаУспешно,
| Задачи.ЗавершенаСОшибкой КАК ЗавершенаСОшибкой,
| Задачи.Ошибка КАК Ошибка
| Задачи.Ошибка КАК Ошибка,
| ВЫБОР
| КОГДА Задачи.ВремяПроверкиЗадачи = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА Задачи.ДатаСоздания
| ИНАЧЕ Задачи.ВремяПроверкиЗадачи
| КОНЕЦ КАК ВремяПроверкиЗадачи
|ПОМЕСТИТЬ втЗадачи
|ИЗ
| РегистрСведений.ЗадачиОбменаДаннымиВнутренняяПубликация КАК Задачи
|ГДЕ
| (Задачи.Сценарий = &Сценарий
| ИЛИ Задачи.ИдентификаторОбмена = &ИдентификаторОбмена)
| Задачи.ИдентификаторОбмена = &ИдентификаторОбмена
|;
|
|////////////////////////////////////////////////////////////////////////////////
@@ -841,10 +925,13 @@
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| втЗадачи.ИдентификаторЗадачи КАК ИдентификаторЗадачи,
| втЗадачи.ДатаСоздания КАК ДатаСоздания,
| втЗадачи.УзелИнформационнойБазы КАК УзелИнформационнойБазы,
| втЗадачи.НомерЗадачи КАК НомерЗадачи,
| втЗадачи.ИдентификаторОбмена КАК ИдентификаторОбмена,
| втЗадачи.ИдентификаторЗадачи КАК ИдентификаторЗадачи,
| втЗадачи.Действие КАК Действие,
| втЗадачи.НомерЗадачи КАК НомерЗадачи
| РАЗНОСТЬДАТ(втЗадачи.ВремяПроверкиЗадачи, &ТекущаяДата, ЧАС) КАК ПоследняяПроверка
|ИЗ
| втЗадачи КАК втЗадачи
|ГДЕ
@@ -854,8 +941,8 @@
|УПОРЯДОЧИТЬ ПО
| НомерЗадачи";
Запрос.УстановитьПараметр("Сценарий", Сценарий);
Запрос.УстановитьПараметр("ИдентификаторОбмена", ИдентификаторОбмена);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяУниверсальнаяДата());
Результат = Запрос.ВыполнитьПакет();
@@ -876,7 +963,72 @@
Выборка = Результат[3].Выбрать();
Если Выборка.Следующий() Тогда
Возврат Ложь
Если (Выборка.Действие = Перечисления.ДействияПриОбменеВнутренняяПубликация.ЗагрузкаДанных
Или Выборка.Действие = Перечисления.ДействияПриОбменеВнутренняяПубликация.ВыгрузкаДанных
Или Выборка.Действие = Перечисления.ДействияПриОбменеВнутренняяПубликация.ДополнительнаяРегистрация) Тогда
Возврат Ложь;
КонецЕсли;
// Проверка очереди задач в корреспонденте
Состояние = "";
Если Выборка.ПоследняяПроверка >= 1 Тогда
Прокси = Неопределено;
ПараметрыПрокси = Новый Структура;
Отказ = Ложь;
СтруктураНастроекОбмена = НастройкиОбменаДляУзлаИнформационнойБазы(
Выборка.УзелИнформационнойБазы, "ПроверкаСостоянияЗадания", Отказ);
Попытка
ИнициализацияПрокси(Прокси, ПараметрыПрокси, СтруктураНастроекОбмена, Отказ, Ошибка);
Состояние = Прокси.TaskStatus(Выборка.ИдентификаторЗадачи);
Исключение
// Возможно проблемы с доступом к корреспонденту
Возврат Ложь;
КонецПопытки
Иначе
Возврат Ложь;
КонецЕсли;
Если Состояние = "Запланировано" Или Состояние = "Выполняется" Тогда
Запись = РегистрыСведений.ЗадачиОбменаДаннымиВнутренняяПубликация.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(Запись, Выборка);
Запись.Прочитать();
Запись.ВремяПроверкиЗадачи = ТекущаяУниверсальнаяДата();
Запись.Записать();
Возврат Ложь;
Иначе
Запись = РегистрыСведений.ЗадачиОбменаДаннымиВнутренняяПубликация.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(Запись, Выборка);
Запись.Прочитать();
Шаблон = НСтр("ru = 'Не обнаружено активных задач обмена в корреспонденте.
|См. журнал регистрации корреспондента (%1).'", ОбщегоНазначения.КодОсновногоЯзыка());
Ошибка = СтрШаблон(Шаблон, Выборка.УзелИнформационнойБазы);
ОбменДаннымиСервер.ЗаписьЖурналаРегистрацииОбменаДанными(Ошибка, СтруктураНастроекОбмена, Истина);
Запись.ЗавершенаСОшибкой = Истина;
Запись.Ошибка = Ошибка;
Запись.Записать();
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Истина;
@@ -895,6 +1047,9 @@
Задача.Вставить("Действие");
Задача.Вставить("ЗавершенаУспешно");
Задача.Вставить("ЗавершенаСОшибкой");
Задача.Вставить("ВремяПроверкиЗадачи");
Задача.Вставить("Режим");
Задача.Вставить("ОбластьДанныхКорреспондента");
Задача.Вставить("Параметры");
Возврат Задача;
@@ -912,6 +1067,7 @@
| Справочник.СценарииОбменовДанными.НастройкиОбмена КАК НастройкиОбмена
|ГДЕ
| НастройкиОбмена.Ссылка = &Ссылка
| И НЕ НастройкиОбмена.УзелИнформационнойБазы.Код ЕСТЬ NULL
|
|УПОРЯДОЧИТЬ ПО
| НастройкиОбмена.НомерСтроки";
@@ -935,6 +1091,12 @@
Запись.Вставить("УзелИнформационнойБазы", Выборка.УзелИнформационнойБазы);
НастройкиТранспорта =
РегистрыСведений.НастройкиТранспортаОбменаДанными.НастройкиТранспортаWS(Выборка.УзелИнформационнойБазы);
Запись.ОбластьДанныхКорреспондента = НастройкиТранспорта.WSОбластьДанныхКорреспондента;
Запись.Режим = НСтр("ru = 'Автоматический'", ОбщегоНазначения.КодОсновногоЯзыка());
Если Выборка.ВыполняемоеДействие = Перечисления.ДействияПриОбмене.ЗагрузкаДанных Тогда
//
@@ -1004,6 +1166,11 @@
Запись.ЗавершенаСОшибкой = Ложь;
Запись.ИдентификаторОбмена = ИдентификаторОбмена;
НастройкиТранспорта = РегистрыСведений.НастройкиТранспортаОбменаДанными.НастройкиТранспортаWS(УзелИнформационнойБазы);
Запись.ОбластьДанныхКорреспондента = НастройкиТранспорта.WSОбластьДанныхКорреспондента;
Запись.Режим = НСтр("ru = 'Ручной'", ОбщегоНазначения.КодОсновногоЯзыка());
Набор = РегистрыСведений.ЗадачиОбменаДаннымиВнутренняяПубликация.СоздатьНаборЗаписей();
НомерЗадачи = 1;
@@ -1070,7 +1237,18 @@
Прокси = ОбменДаннымиВебСервис.WSПроксиДляУзлаИнформационнойБазы(Узел, СтрокаСообщенияОбОшибке);
Прокси.Callback(ИдентификаторЗадачи, Ошибка, НастройкиТранспорта.WSОбластьДанныхКорреспондента);
Если Прокси = Неопределено Тогда
ТекстИсключения = НСтр("ru = 'Не удалось создать подключение к базе корреспонденту'",
ОбщегоНазначения.КодОсновногоЯзыка());
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Попытка
Прокси.Callback(ИдентификаторЗадачи, Ошибка, НастройкиТранспорта.WSОбластьДанныхКорреспондента);
Исключение
ПредставлениеОшибки = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ВызватьИсключение ПредставлениеОшибки;
КонецПопытки;
КонецПроцедуры
@@ -1092,6 +1270,14 @@
Узел = Задача.УзелИнформационнойБазы;
Действие = Задача.Действие;
Шаблон = НСтр("ru = 'Выполнение шага сценария синхронизации.
|ПорядковыйНомер: %1, Приложение: %2, Действие: %3, Режим: %4.'");
Комментарий = СтрШаблон(Шаблон, Задача.НомерЗадачи, Задача.ОбластьДанныхКорреспондента, Задача.Действие, Задача.Режим);
ЗаписьЖурналаРегистрации(ОбменДаннымиВМоделиСервиса.СобытиеЖурналаРегистрацииСинхронизацииДанных(),
УровеньЖурналаРегистрации.Информация, , , Комментарий);
Если Действие = Перечисления.ДействияПриОбменеВнутренняяПубликация.ВыгрузкаДанныхКорреспондент Тогда
СтруктураНастроекОбмена = НастройкиОбменаДляУзлаИнформационнойБазы(Узел, Действие, Отказ);
@@ -1141,7 +1327,10 @@
Исключение
Ошибка = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Ошибка = СтрШаблон(НСтр("ru = 'Ошибка в базе-корреспонденте:%1 %2'"),
Символы.ПС,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Отказ = Истина;
ОбменДаннымиСервер.ЗаписьЖурналаРегистрацииОбменаДанными(Ошибка, СтруктураНастроекОбмена, Истина);
СтруктураНастроекОбмена.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Ошибка;
@@ -1162,11 +1351,28 @@
ФайлСообщенияОбмена = ОбменДаннымиВебСервис.ПолучитьФайлИзХранилищаВСервисе(УИДФайлаСообщения,
СтруктураНастроекОбмена.УзелИнформационнойБазы, 1024, ПараметрыОбмена.ПараметрыАутентификации);
Исключение
Ошибка = СтрШаблон(НСтр("ru = 'Ошибка в базе-корреспонденте:%1 %2'"),
Символы.ПС,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбменДаннымиСервер.ЗаписьЖурналаРегистрацииОбменаДанными(Ошибка, СтруктураНастроекОбмена, Истина);
СтруктураНастроекОбмена.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Ошибка;
КонецПопытки;
Если РезультатВыполненияОбменаВыполненоСОшибкой(СтруктураНастроекОбмена, Отказ, Ошибка) Тогда
Возврат;
КонецЕсли;
Попытка
ОбменДаннымиСервер.ПрочитатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, ФайлСообщенияОбмена);
Исключение
Отказ = Истина;
Ошибка = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ОбменДаннымиСервер.ЗаписьЖурналаРегистрацииОбменаДанными(Ошибка, СтруктураНастроекОбмена, Истина);
СтруктураНастроекОбмена.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Ошибка;
@@ -1231,17 +1437,13 @@
Возврат;
КонецЕсли;
Попытка
УдалитьФайлы(ВременныйКаталог);
Исключение
ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(),
УровеньЖурналаРегистрации.Ошибка,,, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
Исключение
Отказ = Истина;
Ошибка = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Ошибка = СтрШаблон(НСтр("ru = 'Ошибка в базе-корреспонденте:%1 %2'"),
Символы.ПС,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбменДаннымиСервер.ЗаписьЖурналаРегистрацииОбменаДанными(Ошибка, СтруктураНастроекОбмена, Истина);
СтруктураНастроекОбмена.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Ошибка;
@@ -1249,6 +1451,13 @@
КонецЕсли;
Попытка
УдалитьФайлы(ВременныйКаталог);
Исключение
ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(),
УровеньЖурналаРегистрации.Ошибка,,, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецПроцедуры
Процедура ВыполнитьЗадачуЗагрузкаДанныхКорреспондент(Задача, Прокси, ПараметрыОбмена, СтруктураНастроекОбмена, Отказ, Ошибка)
@@ -1266,7 +1475,11 @@
Исключение
Отказ = Истина;
Ошибка = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Ошибка = СтрШаблон(НСтр("ru = 'Ошибка в базе-корреспонденте:%1 %2'"),
Символы.ПС,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбменДаннымиСервер.ЗаписьЖурналаРегистрацииОбменаДанными(Ошибка, СтруктураНастроекОбмена, Истина);
СтруктураНастроекОбмена.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Ошибка;
@@ -1422,7 +1635,7 @@
ТекстПанели =
НСтр("ru = 'Для данной синхронизации есть возможность настроить обмен через Интернет (веб-сервис).
|<br>Это позволит ускорить обмен и более гибко настроить график синхронизации.
|<br>Для перехода на обмен по средством веб-сервиса, воспользуйтесь <a href=ФормаПомощникПереходаНаИнтернетВнутренняяПубликация>помощником перехода</a>.
|<br>Для перехода на обмен посредством веб-сервиса, воспользуйтесь <a href=ФормаПомощникПереходаНаИнтернетВнутренняяПубликация>помощником перехода</a>.
|<br><br>
|<a href=НеПредлагатьПерейтиНаВебСервис>Больше не предлагать перейти на веб-сервис</a>. (Вызвать помощник перехода можно через меню <b>Еще<b>)'");
@@ -366,14 +366,14 @@
КонецФункции
Функция ПроверитьИЗарегистрироватьCOMСоединитель(Знач СтрукураНастроек) Экспорт
Функция ПроверитьИЗарегистрироватьCOMСоединитель(Знач СтруктураНастроек) Экспорт
Если ТипЗнч(СтрукураНастроек) <> Тип("Структура") Тогда
СтрукураНастроек = РегистрыСведений.НастройкиТранспортаОбменаДанными.НастройкиТранспорта(
СтрукураНастроек, Перечисления.ВидыТранспортаСообщенийОбмена.COM)
Если ТипЗнч(СтруктураНастроек) <> Тип("Структура") Тогда
СтруктураНастроек = РегистрыСведений.НастройкиТранспортаОбменаДанными.НастройкиТранспорта(
СтруктураНастроек, Перечисления.ВидыТранспортаСообщенийОбмена.COM)
КонецЕсли;
Результат = ОбменДаннымиСервер.УстановитьВнешнееСоединениеСБазой(СтрукураНастроек);
Результат = ОбменДаннымиСервер.УстановитьВнешнееСоединениеСБазой(СтруктураНастроек);
Если Результат.Соединение = Неопределено Тогда
Возврат Ложь;
@@ -12,12 +12,6 @@
//
Процедура ПроверитьНеобходимостьОбновленияКонфигурацииПодчиненногоУзла() Экспорт
#Если МобильныйКлиент Тогда
Если ОсновнойСерверДоступен() = Ложь Тогда
Возврат;
КонецЕсли;
#КонецЕсли
ТребуетсяОбновление = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().ТребуетсяОбновлениеКонфигурацииУзлаРИБ;
ПроверитьНеобходимостьОбновления(ТребуетсяОбновление);
@@ -27,12 +21,6 @@
//
Процедура ПроверитьНеобходимостьОбновленияКонфигурацииПодчиненногоУзлаПриЗапуске() Экспорт
#Если МобильныйКлиент Тогда
Если ОсновнойСерверДоступен() = Ложь Тогда
Возврат;
КонецЕсли;
#КонецЕсли
ТребуетсяОбновление = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске().ТребуетсяОбновлениеКонфигурацииУзлаРИБ;
ПроверитьНеобходимостьОбновления(ТребуетсяОбновление);
@@ -1558,13 +1558,13 @@
Возврат Истина;
КонецФункции
Функция ПроверитьИЗарегистрироватьCOMСоединитель(Знач СтрукураНастроек, Оповещение = Неопределено) Экспорт
Функция ПроверитьИЗарегистрироватьCOMСоединитель(Знач СтруктураНастроек, Оповещение = Неопределено) Экспорт
Если НЕ ОбщегоНазначенияКлиент.ИнформационнаяБазаФайловая() Тогда
Возврат Истина;
КонецЕсли;
Если НЕ ОбменДаннымиВызовСервера.ПроверитьИЗарегистрироватьCOMСоединитель(СтрукураНастроек) Тогда
Если НЕ ОбменДаннымиВызовСервера.ПроверитьИЗарегистрироватьCOMСоединитель(СтруктураНастроек) Тогда
ОбщегоНазначенияКлиент.ЗарегистрироватьCOMСоединитель(Ложь, Оповещение);
КонецЕсли;
@@ -47,12 +47,19 @@
КомпонентыОбмена.СеансОбмена = СеансОбмена;
Каталог = ОбменДаннымиПовтИсп.КаталогВременногоХранилищаФайлов();
ИмяВременногоФайлаЗамеров = Каталог + "log.txt"; //АПК:441 временный файл будет удален при подведении итогов
ИмяВременногоКаталогаЗамеров =
ОбменДаннымиПовтИсп.КаталогВременногоХранилищаФайлов() + Строка(Новый УникальныйИдентификатор);
СоздатьКаталог(ИмяВременногоКаталогаЗамеров);
ИмяВременногоФайлаЗамеров = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(
ИмяВременногоКаталогаЗамеров, "log.txt"); //АПК:441 временный файл будет удален при подведении итогов
КомпонентыОбмена.ИмяВременногоКаталогаЗамеров = ИмяВременногоКаталогаЗамеров;
КомпонентыОбмена.ИмяВременногоФайлаЗамеров = ИмяВременногоФайлаЗамеров;
КомпонентыОбмена.ЗаписьЗамеров = Новый ЗаписьТекста(ИмяВременногоФайлаЗамеров, КодировкаТекста.UTF8);
ЗаголовокЛога = НСтр("ru = 'Начало замера; Время выполнения; ТипСобытия; Событие; Комментарий'");
ЗаголовокЛога = НСтр("ru = 'Начало замера; Время выполнения; Тип события; Событие; Комментарий'");
КомпонентыОбмена.ЗаписьЗамеров.ЗаписатьСтроку(ЗаголовокЛога, КодОсновногоЯзыка);
НачатьТранзакцию();
@@ -125,12 +132,9 @@
ВремяНачала = СеансОбмена.Начало;
ВремяОкончания = ТекущаяДатаСеанса();
Каталог = ОбменДаннымиПовтИсп.КаталогВременногоХранилищаФайлов();
ИмяАрхива = Формат(СеансОбмена.Начало, "ДФ=yyyy-MM-dd-HH-mm-ss") + "_"
+ Строка(СеансОбмена.Ссылка.УникальныйИдентификатор()) + ".zip";
ИмяВременногоФайлаИтогов = Каталог + "total.txt";
ИмяВременногоФайлаАрхива = Каталог + ИмяАрхива;
ИмяВременногоКаталогаЗамеров = КомпонентыОбмена.ИмяВременногоКаталогаЗамеров;
ИмяВременногоФайлаИтогов = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(ИмяВременногоКаталогаЗамеров, "total.txt");
ИмяВременногоФайлаАрхива = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(ИмяВременногоКаталогаЗамеров, "archive.zip");
ЗаписьИтогов = Новый ЗаписьТекста(ИмяВременногоФайлаИтогов);
@@ -198,7 +202,7 @@
ВремяВыполнения = СтроковыеФункцииКлиентСервер.ДополнитьСтроку(ВремяВыполнения, 7, " ", "Слева");
Количество = Формат(СтрокаТаблицы.Количество,"ЧГ=;");
Количество = СтроковыеФункцииКлиентСервер.ДополнитьСтроку(СтрокаТаблицы.Количество, 7, " ", "Слева");
Количество = СтроковыеФункцииКлиентСервер.ДополнитьСтроку(Количество, 7, " ", "Слева");
ТипСобытия = СтроковыеФункцииКлиентСервер.ДополнитьСтроку(СтрокаТаблицы.ТипСобытия, 11, " ", "Справа");
Строка = СтрШаблон(Шаблон,
@@ -228,9 +232,7 @@
СеансОбмена.Записать();
// Удаление временных файлов
УдалитьФайлы(ИмяВременногоФайлаИтогов);
УдалитьФайлы(ИмяВременногоФайлаАрхива);
УдалитьФайлы(ИмяВременногоФайлаЗамеров);
УдалитьФайлы(ИмяВременногоКаталогаЗамеров);
КонецПроцедуры
@@ -273,6 +273,46 @@
КонецПроцедуры
// Вызывается в функции ОбменДаннымиСервер.НайтиИмяПланаОбменаЧерезУниверсальныйФормат
// Позволяет переопределить имя плана обмена, которое будет использоваться при обмене с корреспондирующее базой.
// Только для обмена через EnterpriseData
//
// Параметры:
// ИмяПланаОбмена - Строка - имя плана обмена корреспондирующей базы,
// для которого подбираем соответствие из метаданных конфигурации.
// ИдентификаторНастройки- Строка - идентификатор варианта настройки (ВариантНастройки), корреспондирующей базы.
// НайденноеИмяПланаОбмена - Строка - Если информационная база уже содержит план обмена с именем ИмяПланаОбмена,
// то параметр будет равен ИмяПланаОбмена.
// Иначе параметр будет содержать имя Глобального плана обмена.
// Параметр может быть переопределен
//
Процедура ПриПоискеИмениПланаОбменаЧерезУниверсальныйФормат(
ИмяПланаОбмена, ИдентификаторНастройки, НайденноеИмяПланаОбмена) Экспорт
КонецПроцедуры
// Вызывается в Модуле ОбменДаннымиСобытия.
// Позволяет переопределить стандартную обработку РеквизитыСсылочногоТипаУзлаПланаОбмена.
//
// Параметры:
// УзелПланаОбменаОбъект - ПланОбменаОбъект - Ссылка на план обмена.
// Результат - ТаблицаЗначений - данные заполненные в процедуре ОбменДаннымиСобытия.РеквизитыСсылочногоТипаУзлаПланаОбмена:
// * Порядок - Число.
// * ИмяОбъекта - Строка - Полное имя объекта метаданных.
// * ТипОбъектаСтрокой - Строка.
// * ИмяПланаОбмена - Строка.
// * ИмяТабличнойЧасти - Строка - Имя табличной части плана обмена.
// * РеквизитыРегистрации - Строка - Ключ объектов регистрации.
// * СтруктураРеквизитовРегистрации - Структура:
// * Ключ - Строка - Имя реквизита или имя колонки плана обмена.
// * Значение - ЛюбаяСсылка - ссылка на регистрируемый объект
//
Процедура ПриПереопределенииРеквизитовСсылочногоТипаУзлаПланаОбмена(УзелПланаОбменаОбъект, Результат) Экспорт
КонецПроцедуры
#Область УстаревшиеПроцедурыИФункции
@@ -561,7 +561,7 @@
// ИмяПланаОбмена - Строка - имя плана обмена, как оно задано в конфигураторе.
//
// Возвращаемое значение:
// Булево - Истина - используется кэш, иначе Ложь - используются запросы к РС ПубличныеИдентификаторыСинхронизируемыхОбъектов.
// Булево - Истина - используется кеш, иначе Ложь - используются запросы к РС ПубличныеИдентификаторыСинхронизируемыхОбъектов.
//
Функция ИспользоватьКешПубличныхИдентификаторов(Знач ИмяПланаОбмена) Экспорт
@@ -14,13 +14,12 @@
// которая храниться в регистре сведений ПравилаДляОбменаДанными.
//
// Параметры:
// ИмяПланаОбмена - Строка - имя плана обмена.
// ИмяПланаОбмена - строка - имя плана обмена.
//
// Возвращаемое значение:
// ПараметрыВыборочнойРегистрации - Структура
// - Неопределено - параметры выборочной регистрации объектов.
// В случае, если выборочная регистрация не используется для указанного плана
// обмена возвращаем Неопределено.
// В случае, если выборочная регистрация не используется для указанного плана обмена возвращаем Неопределено.
//
Функция ПараметрыВыборочнойРегистрацииПоИмениПланаОбмена(ИмяПланаОбмена) Экспорт
@@ -60,7 +59,7 @@
// Если для плана обмена ОУФ указан неподдерживаемый режим "СогласноПравиламXML", то будет возвращено значение по-умолчанию.
//
// Возвращаемое значение:
// Строка - значение настройки плана обмена "РежимВыборочнойРегистрации".
// Строка - Значение настройки плана обмена "РежимВыборочнойРегистрации".
//
// Описание значений:
//
@@ -977,12 +977,12 @@
// * Алгоритмы - Структура - перечень экспортных процедур и функций, которые
// объявлены в модуле менеджера плана обмена
// и используются подсистемой обмена данными.
// *ПравилаРегистрацииВМенеджере - Булево - признак использования правил регистрации,
// *ПравилаРегистрацииВМенеджере - Булево - Признак использования правил регистрации,
// расположенных в общем модуле (менеджере регистрации)
// *ИмяМенеджераРегистрации - Строка - имя модуля с правилами регистрации
// *ИспользоватьКешПубличныхИдентификаторов - Булево - признак того, что при загрузке данных будет
// использован кэш для поиска ссылок
// *Глобальный - Булево - если установлено Истина, то план обмена может быть
// использован кеш для поиска ссылок
// *Глобальный - Булево - Если установлено Истина, то план обмена может быть
// использован для обмена с планами обмена с другими наименованиями.
// Только для обмена через EnterpriseData
//
@@ -1083,7 +1083,7 @@
// * НаименованиеКонфигурацииКорреспондента - Строка - представление наименования конфигурации корреспондента
// выводимое в пользовательском интерфейсе.
// * ИспользуемыеТранспортыСообщенийОбмена - Массив из ПеречислениеСсылка.ВидыТранспортаСообщенийОбмена
// - перечень используемых транспортов сообщений. Если не заполнен,
// - Перечень используемых транспортов сообщений. Если не заполнен,
// будут доступны все возможные виды транспорта.
// * КраткаяИнформацияПоОбмену - Строка - краткое описание обмена данными, которое
// выводится на первой странице помощника
@@ -1165,19 +1165,6 @@
КонецФункции
// Возвращает признак того, что в данный момент загружаются данные в подчиненный узел РИБ.
//
// Возвращаемое значение:
// Булево
//
Функция ВыполняетсяЗагрузкаДанныхРИБ() Экспорт
УстановитьПривилегированныйРежим(Истина);
Возврат Константы.ВыполняетсяЗагрузкаданныхРИБ.Получить();
КонецФункции
#Область НастройкиПодключенияКВнешнейСистеме
// Сохраняет настройки подключения для обмена с внешней системой через EnterpriseData.
@@ -1644,22 +1631,19 @@
Возврат;
КонецЕсли;
НастройкаСинхронизацииЗавершена = Истина;
НачатьТранзакцию();
Попытка
Если Не НастройкаСинхронизацииЗавершена(УзелОбмена) Тогда
НастройкаСинхронизацииЗавершена = Ложь;
// Изменения, зарегистрированные до момента завершения настройки синхронизации,
// являются некорректными, т.к. еще не были установлены отборы.
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена);
// Необходимо сбросить ранее установленный признак регистрации изменений для повторной отправки сообщения в МС.
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиВМоделиСервиса");
МодульОбменДаннымиВМоделиСервиса.ИзменитьПризнакНеобходимостиОбменаДаннымиВМоделиСервиса(Ложь);
КонецЕсли;
КонецЕсли;
РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.УстановитьПризнакНастройкаЗавершена(УзелОбмена);
@@ -1670,6 +1654,15 @@
ВызватьИсключение;
КонецПопытки;
// Необходимо сбросить ранее установленный признак регистрации изменений для повторной отправки сообщения в МС.
Если Не НастройкаСинхронизацииЗавершена
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиВМоделиСервиса");
МодульОбменДаннымиВМоделиСервиса.ИзменитьПризнакНеобходимостиОбменаДаннымиВМоделиСервиса(Ложь);
КонецЕсли;
КонецПроцедуры
// Возвращает признак завершения настройки синхронизации для узла обмена.
@@ -3031,7 +3024,10 @@
И ДополнительныеПараметры <> Неопределено
И ДополнительныеПараметры.Свойство("ЭтоПланОбменаXDTO") Тогда
ПланОбмена = НайтиИмяПланаОбменаЧерезУниверсальныйФормат(ИмяПланаОбмена);
ИдентификаторНастройки = Неопределено;
ДополнительныеПараметры.Свойство("ИдентификаторНастройки", ИдентификаторНастройки);
ПланОбмена = НайтиИмяПланаОбменаЧерезУниверсальныйФормат(ИмяПланаОбмена, ИдентификаторНастройки);
Результат.ПланОбменаСуществует = ЗначениеЗаполнено(ПланОбмена);
Результат.ИмяПланаОбмена = ПланОбмена;
@@ -4626,6 +4622,7 @@
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииИсключенийПоискаСсылок.
Процедура ПриДобавленииИсключенийПоискаСсылок(ИсключенияПоискаСсылок) Экспорт
ИсключенияПоискаСсылок.Добавить(Метаданные.РегистрыСведений.ДанныеОбъектовДляРегистрацииВОбменах.ПолноеИмя());
ИсключенияПоискаСсылок.Добавить(Метаданные.РегистрыСведений.РезультатыОбменаДанными.ПолноеИмя());
КонецПроцедуры
@@ -5428,24 +5425,33 @@
Возврат Результат;
КонецФункции
Функция НайтиИмяПланаОбменаЧерезУниверсальныйФормат(Знач ИсходноеИмяПланаОбмена) Экспорт
Функция НайтиИмяПланаОбменаЧерезУниверсальныйФормат(ИмяПланаОбмена, ИдентификаторНастройки) Экспорт
ИмяПланаОбмена = ОбменДаннымиТрансляцияФорматаПовтИсп.ТранслироватьИмя(ИсходноеИмяПланаОбмена, "en");
НайденноеИмя = ОбменДаннымиТрансляцияФорматаПовтИсп.ТранслироватьИмя(ИмяПланаОбмена, "en");
Если Метаданные.ПланыОбмена.Найти(ИмяПланаОбмена) <> Неопределено Тогда
Возврат ИмяПланаОбмена;
Если Метаданные.ПланыОбмена.Найти(НайденноеИмя) = Неопределено Тогда
НайденноеИмя = "";
КонецЕсли;
Для Каждого ПланОбмена Из ОбменДаннымиПовтИсп.ПланыОбменаБСП() Цикл
Если НайденноеИмя = "" Тогда
Если ОбменДаннымиПовтИсп.ЭтоПланОбменаXDTO(ПланОбмена)
И ОбменДаннымиПовтИсп.ЭтоГлобальныйОбменЧерезУниверсальныйФормат(ПланОбмена) Тогда
Для Каждого ПланОбмена Из ОбменДаннымиПовтИсп.ПланыОбменаБСП() Цикл
Возврат ПланОбмена;
Если ОбменДаннымиПовтИсп.ЭтоПланОбменаXDTO(ПланОбмена)
И ОбменДаннымиПовтИсп.ЭтоГлобальныйОбменЧерезУниверсальныйФормат(ПланОбмена) Тогда
КонецЕсли;
НайденноеИмя = ПланОбмена;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОбменДаннымиПереопределяемый.ПриПоискеИмениПланаОбменаЧерезУниверсальныйФормат(
ИмяПланаОбмена, ИдентификаторНастройки, НайденноеИмя);
Возврат НайденноеИмя;
КонецФункции
@@ -7047,7 +7053,7 @@
Процедура ВыполнитьТранспортСообщенияОбменаПередОбработкой(СтруктураНастроекОбмена)
// Получаем инициализированную обработку транспорта сообщений.
ОбработкаТранспортаСообщенийОбмена = СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена;
ОбработкаТранспортаСообщенийОбмена = СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена; // ОбработкаОбъект.ТранспортСообщенийОбменаEMAIL, ОбработкаОбъект.ТранспортСообщенийОбменаFILE, ОбработкаОбъект.ТранспортСообщенийОбменаFTP
// Получаем новое имя временного файла.
Если Не ОбработкаТранспортаСообщенийОбмена.ВыполнитьДействияПередОбработкойСообщения() Тогда
@@ -7063,7 +7069,7 @@
Процедура ВыполнитьТранспортСообщенияОбменаОтправка(СтруктураНастроекОбмена)
// Получаем инициализированную обработку транспорта сообщений.
ОбработкаТранспортаСообщенийОбмена = СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена;
ОбработкаТранспортаСообщенийОбмена = СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена; // ОбработкаОбъект.ТранспортСообщенийОбменаEMAIL, ОбработкаОбъект.ТранспортСообщенийОбменаFILE, ОбработкаОбъект.ТранспортСообщенийОбменаFTP
// Отправляем сообщение обмена из временного каталога.
Если Не ОбработкаТранспортаСообщенийОбмена.ПодключениеУстановлено()
@@ -7084,7 +7090,7 @@
КонецЕсли;
// Получаем инициализированную обработку транспорта сообщений.
ОбработкаТранспортаСообщенийОбмена = СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена;
ОбработкаТранспортаСообщенийОбмена = СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена; // ОбработкаОбъект.ТранспортСообщенийОбменаEMAIL, ОбработкаОбъект.ТранспортСообщенийОбменаFILE, ОбработкаОбъект.ТранспортСообщенийОбменаFTP
ОбработкаТранспортаСообщенийОбмена.УзелИнформационнойБазы = СтруктураНастроекОбмена.УзелИнформационнойБазы;
// Получаем сообщение обмена во временный каталог.
@@ -7143,7 +7149,7 @@
Процедура ВыполнитьТранспортСообщенияОбменаПослеОбработки(СтруктураНастроекОбмена)
// Получаем инициализированную обработку транспорта сообщений.
ОбработкаТранспортаСообщенийОбмена = СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена;
ОбработкаТранспортаСообщенийОбмена = СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена; // ОбработкаОбъект.ТранспортСообщенийОбменаEMAIL, ОбработкаОбъект.ТранспортСообщенийОбменаFILE, ОбработкаОбъект.ТранспортСообщенийОбменаFTP
// Выполняем действия после отправки сообщения.
ОбработкаТранспортаСообщенийОбмена.ВыполнитьДействияПослеОбработкиСообщения();
@@ -8677,7 +8683,7 @@
// Функция должна возвращать одно и то же значение при многократном вызове.
//
// Параметры:
// ВнешнийМодуль - ЛюбаяСсылка - ссылка на внешний модуль.
// ВнешнийМодуль - ОбъектМетаданныхПланОбмена - объект метаданных ПланОбмена, являющийся внешним модулем.
//
// Возвращаемое значение:
// Строка - шаблон имя профиля безопасности, содержащий символы
@@ -8692,10 +8698,11 @@
// Возвращает пиктограмму, отображающую внешний модуль.
//
// ВнешнийМодуль - ЛюбаяСсылка, ссылка на внешний модуль,
// Параметры:
// ВнешнийМодуль- ЛюбаяСсылка - ссылка на внешний модуль
//
// Возвращаемое значение:
// Картинка.
// Картинка. - Пиктограмма внешнего модуля
//
Функция ПиктограммаВнешнегоМодуля(Знач ВнешнийМодуль) Экспорт
@@ -9648,7 +9655,7 @@
ИмяФайлаСообщения = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(
ИмяВременногоКаталога, УникальноеИмяФайлаСообщенияОбмена());
ОбработкаТранспортаСообщенийОбмена = СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена;
ОбработкаТранспортаСообщенийОбмена = СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена; // ОбработкаОбъект.ТранспортСообщенийОбменаEMAIL, ОбработкаОбъект.ТранспортСообщенийОбменаFILE, ОбработкаОбъект.ТранспортСообщенийОбменаFTP, ОбработкаОбъект.ТранспортСообщенийОбменаВнешняяСистема
СообщениеПолучено = Ложь;
Попытка
@@ -9726,7 +9733,7 @@
Процедура ВыполнитьОбменДаннымиСВнешнейСистемойВыгрузкаНастроекXDTO(СтруктураНастроекОбмена)
ОбработкаТранспортаСообщенийОбмена = СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена;
ОбработкаТранспортаСообщенийОбмена = СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена; // ОбработкаОбъект.ТранспортСообщенийОбменаВнешняяСистема
ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(СтруктураНастроекОбмена.УзелИнформационнойБазы);
@@ -10080,7 +10087,8 @@
СтруктураНастроекОбмена.ОбменПоПравиламКонвертацииОбъектов = ОбменДаннымиПовтИсп.ЭтоУзелУниверсальногоОбменаДанными(СтруктураНастроекОбмена.УзелИнформационнойБазы);
СтруктураНастроекОбмена.ТекущийУзелПланаОбмена = ПланыОбмена[СтруктураНастроекОбмена.ИмяПланаОбмена].ЭтотУзел();
СтруктураНастроекОбмена.ТекущийУзелПланаОбменаКод = СтруктураНастроекОбмена.ТекущийУзелПланаОбмена.Код;
СтруктураНастроекОбмена.ТекущийУзелПланаОбменаКод =
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтруктураНастроекОбмена.ТекущийУзелПланаОбмена, "Код");
СтруктураНастроекОбмена.ИмяОбработкиТранспортаСообщенийОбмена = ИмяОбработкиТранспортаСообщенийОбмена(СтруктураНастроекОбмена.ВидТранспортаОбмена);
@@ -10343,7 +10351,7 @@
ЗафиксироватьЗавершениеИнициализацииОбмена(СтруктураНастроекОбмена);
ИначеЕсли СтруктураНастроекОбмена.УзелИнформационнойБазы.ПометкаУдаления Тогда
ИначеЕсли ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтруктураНастроекОбмена.УзелИнформационнойБазы, "ПометкаУдаления") Тогда
// Узел информационной базы не должен быть помечен на удаление.
СтрокаСообщенияОбОшибке = НСтр("ru = 'Узел информационной базы помечен на удаление. Обмен отменен.'",
@@ -14573,12 +14581,14 @@
ДекорацияКартинка.РазмерКартинки = РазмерКартинки.Пропорционально;
ШаблонТекста = НСтр("ru = '<br>Обнаружено зацикливание синхронизаций. Для получения подробной информации перейдите по
|<a href=ФормаЗацикливаниеСинхронизации>ссылке</a>.
|<a href=""%1"">ссылке</a>.
|<br><br>
|<a href=ФормаОбъектыНезарегистрированныеПриЗацикливании>Объекты незарегистрированные при зацикливании</a>.'");
|<a href=""%2"">Объекты незарегистрированные при зацикливании</a>.'");
ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекста,
"ФормаЗацикливаниеСинхронизации", "ФормаОбъектыНезарегистрированныеПриЗацикливании" );
ФДок = Новый ФорматированныйДокумент;
ФДок.УстановитьHTML("<html>" + ШаблонТекста + "</html>", Новый Структура);
ФДок.УстановитьHTML("<html>" + ТекстПредупреждения + "</html>", Новый Структура);
ДекорацияНадпись = Элементы.Добавить("Надпись" + ИмяПанели, Тип("ДекорацияФормы"), Группа);
ДекорацияНадпись.Вид = ВидДекорацииФормы.Надпись;
@@ -852,22 +852,6 @@
КонецФункции
Процедура УстановитьПризнакЗагрузкиДанныхРИБ(Включить) Экспорт
Если ПланыОбмена.ГлавныйУзел() = Неопределено Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Если Константы.ВыполняетсяЗагрузкаДанныхРИБ.Получить() = Включить Тогда
Возврат;
КонецЕсли;
Константы.ВыполняетсяЗагрузкаДанныхРИБ.Установить(Включить);
КонецПроцедуры
#Область ВыполнениеОбменаМетодамиСериализации
// Возвращает таблицу предопределенных данных информационной базы.
@@ -951,11 +935,12 @@
КонецФункции
// Параметры:
// Данные - СправочникОбъект
// Данные - СправочникОбъект,
// - ДокументОбъект
// - ПланСчетовОбъект
// - ПланВидовРасчетаОбъект
// - РегистрСведенийНаборЗаписей -
// - РегистрСведенийНаборЗаписей
// - КонстантаМенеджерЗначения -
// объект данных.
// ТаблицаПредопределенных - см. ОбменДаннымиСлужебный.ТаблицаПредопределенныхДанных
//
@@ -1551,6 +1536,10 @@
//
Процедура ПроверитьЗаменитьСсылкуПредопределенногоВРеквизитеОбъекта(Данные, ИмяРеквизита, ТаблицаПредопределенных)
Если ИмяРеквизита = "Ссылка" Тогда
Возврат;
КонецЕсли;
Значение = Данные[ИмяРеквизита];
Если Не ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Значение)) Тогда
@@ -352,11 +352,11 @@
// Выполняет обработчики после загрузки объекта.
//
// Параметры:
// Контейнер - ОбработкаОбъект.ВыгрузкаЗагрузкаДанныхМенеджерКонтейнера - менеджер
// Контейнер - ОбработкаОбъект.ВыгрузкаЗагрузкаДанныхМенеджерКонтейнера - менеджер
// контейнера, используемый в процессе выгрузи данных. Подробнее см. комментарий
// к программному интерфейсу обработки ВыгрузкаЗагрузкаДанныхМенеджерКонтейнера.
// Объект - Произвольный - объект загружаемых данных.
// Артефакты - Массив из ОбъектXDTO - массив артефактов (объектов XDTO).
// Объект - Произвольный - объект загружаемых данных.
// Артефакты - Массив из ОбъектXDTO - массив артефактов (объектов XDTO).
//
Процедура ПослеЗагрузкиОбъекта(Контейнер, Объект, Артефакты) Экспорт
@@ -1115,6 +1115,23 @@
КонецЦикла;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
МодульОбменДаннымиВнутренняяПубликация = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиВнутренняяПубликация");
СценарииОбменовДанными = "";
ИдентификаторОбмена = "";
ПоУзлуЗапланированОбмен = МодульОбменДаннымиВнутренняяПубликация.ПоУзлуЗапланированОбмен(
Источник.Ссылка, СценарииОбменовДанными,ИдентификаторОбмена);
Если ПоУзлуЗапланированОбмен Тогда
МодульОбменДаннымиВнутренняяПубликация.ОтменитьОчередьЗадач(
Источник.Ссылка, СценарииОбменовДанными, ИдентификаторОбмена);
КонецЕсли;
КонецЕсли;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
@@ -3125,6 +3142,8 @@
КонецЦикла;
ОбменДаннымиПереопределяемый.ПриПереопределенииРеквизитовСсылочногоТипаУзлаПланаОбмена(УзелПланаОбменаОбъект, Результат);
Возврат Результат;
КонецФункции
@@ -3584,8 +3603,9 @@
ОбъектМетаданных = Объект.Метаданные();
ЭтоОбъектСсылочногоТипа = ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(ОбъектМетаданных);
Если ЭтоОбъектСсылочногоТипа
И Объект.ОбменДанными.Загрузка Тогда
Если Не(Объект.ОбменДанными.Загрузка
Или Объект.ДополнительныеСвойства.Свойство("ОтложеннаяЗапись")
Или Объект.ДополнительныеСвойства.Свойство("ОтложенноеПроведение")) Тогда
Возврат;
@@ -39,7 +39,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "БиблиотекаСинхронизацииДанных";
Описание.Версия = "1.0.3.409";
Описание.Версия = "1.0.3.534";
Описание.ИдентификаторИнтернетПоддержки = "DSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "1.0.1.1";
@@ -45,7 +45,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.10.277";
Описание.Версия = "3.1.10.295";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -2442,6 +2442,8 @@
ИмяКлючевогоРеквизита = ИмяКлючевогоРеквизита(
НаборДанныхДляЗаполнения.НастройкиПредопределенныхЭлементов);
ЗначениеКлючевогоРеквизита = Объект[ИмяКлючевогоРеквизита];
Иначе
ИмяКлючевогоРеквизита = "ИмяПредопределенныхДанных";
КонецЕсли;
Если ПустаяСтрока(ЗначениеКлючевогоРеквизита) Тогда
@@ -2488,7 +2490,13 @@
ЗначениеРеквизита = СтрокаТаблицы.Родитель;
КонецЕсли;
ИначеЕсли ТипЗнч(СтрокаТаблицы.Родитель) = Тип("Строка") Тогда
ЗначениеРеквизита = МенеджерОбъекта.НайтиПоРеквизиту(ИмяКлючевогоРеквизита, СтрокаТаблицы.Родитель);
Если ИмяКлючевогоРеквизита = "ИмяПредопределенныхДанных" Тогда
ЗначениеРеквизита = МенеджерОбъекта[СтрокаТаблицы.Родитель];
Иначе
ЗначениеРеквизита = МенеджерОбъекта.НайтиПоРеквизиту(ИмяКлючевогоРеквизита, СтрокаТаблицы.Родитель);
КонецЕсли;
Иначе
ЗначениеРеквизита = СтрокаТаблицы.Родитель;
КонецЕсли;
@@ -975,6 +975,12 @@
// указанные в ПараметрыПодключения.ИдентификаторыСозданияОбъектов:
// *** Ключ - Строка - идентификатор внешней компоненты;
// *** Значение - ОбъектВнешнейКомпоненты - экземпляр объекта.
// ** Местоположение - Строка - имя макета или навигационная ссылка компоненты из справочника, если она
// более старшей версии, из которых была подключена компонента.
// ** СимволическоеИмя - Строка - символическое имя, с которым была подключена компонента.
// По местоположению и символическому имени из прикладного кода можно проверять подключение компоненты
// методом платформы
// ПроверитьПодключениеВнешнейКомпоненты(Местоположение, Имя)
// ** ОписаниеОшибки - Строка - краткое описание ошибки. При отмене пользователем пустая строка.
// * ДополнительныеПараметры - Структура - значение, которое было указано при создании объекта ОписаниеОповещения.
// Идентификатор - Строка - идентификатор объекта внешней компоненты.
@@ -1156,6 +1162,11 @@
// указанные в ПараметрыПодключения.ИдентификаторыСозданияОбъектов:
// ** Ключ - Строка - идентификатор внешней компоненты;
// ** Значение - ОбъектВнешнейКомпоненты - экземпляр объекта.
// * Местоположение - Строка - имя макета или навигационная ссылка компоненты из справочника, если она более
// старшей версии, из которых была подключена компонента.
// * СимволическоеИмя - Строка - символическое имя, с которым была подключена компонента.
// По местоположению и символическому имени из прикладного кода можно проверять подключение компоненты методом платформы
// ПроверитьПодключениеВнешнейКомпоненты(Местоположение, Имя)
// * ОписаниеОшибки - Строка - краткое описание ошибки. При отмене пользователем пустая строка.
//
Асинх Функция ПодключитьКомпонентуИзМакетаАсинх(Идентификатор, ПолноеИмяМакета,
@@ -126,43 +126,25 @@
Если Контекст.Кэшировать Тогда
ПодключаемыйМодуль = ПолучитьОбъектКомпонентыИзКэша(Контекст.Местоположение);
СвойстваПодключаемогоМодуля = ПолучитьОбъектКомпонентыИзКэша(Контекст.Местоположение);
ПровереноПодключение = Неопределено;
Если ПодключаемыйМодуль <> Неопределено Тогда
ПровереноПодключение = ПроверитьПодключениеВнешнейКомпоненты(Контекст.Местоположение,
Контекст.Идентификатор);
Если ПровереноПодключение Тогда
Результат = РезультатПодключенияКомпоненты();
Результат.Подключено = Истина;
Результат.ПодключаемыйМодуль = ПодключаемыйМодуль;
Возврат Результат;
КонецЕсли;
Если СвойстваПодключаемогоМодуля <> Неопределено Тогда
Результат = РезультатПодключенияКомпоненты();
Результат.Подключено = Истина;
Результат.ПодключаемыйМодуль = СвойстваПодключаемогоМодуля.ПодключаемыйМодуль;
Результат.Местоположение = СвойстваПодключаемогоМодуля.Местоположение;
Результат.СимволическоеИмя = СвойстваПодключаемогоМодуля.Имя;
Возврат Результат;
КонецЕсли;
Если ПровереноПодключение <> Ложь Тогда
// Проверка факта подключения внешней компоненты в этом сеансе ранее.
СимволическоеИмя = ПолучитьСимволическоеИмяКомпонентыИзКэша(Контекст.Местоположение);
// Проверка факта подключения внешней компоненты в этом сеансе ранее.
СимволическоеИмя = ПолучитьСимволическоеИмяКомпонентыИзКэша(Контекст.Местоположение);
Если СимволическоеИмя <> Неопределено Тогда
// Если в кэше уже есть символическое имя - значит к этому сеансу ранее компонента уже подключалась.
Если ПровереноПодключение = Неопределено Тогда
ПровереноПодключение = ПроверитьПодключениеВнешнейКомпоненты(Контекст.Местоположение,
Контекст.Идентификатор);
КонецЕсли;
Если ПровереноПодключение Тогда
Подключено = Истина;
Контекст.Вставить("СимволическоеИмя", СимволическоеИмя);
Возврат Ждать ПодключитьКомпонентуПослеПопыткиПодключенияАсинх(Подключено, Контекст);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ПровереноПодключение = Ложь Тогда
ОчиститьОбъектКомпонентыВКэше(Контекст.Местоположение);
Если СимволическоеИмя <> Неопределено Тогда
// Если в кэше уже есть символическое имя - значит к этому сеансу ранее компонента уже подключалась.
Подключено = Истина;
Контекст.Вставить("СимволическоеИмя", СимволическоеИмя);
Возврат Ждать ПодключитьКомпонентуПослеПопыткиПодключенияАсинх(Подключено, Контекст);
КонецЕсли;
КонецЕсли;
@@ -268,41 +250,22 @@
Если Контекст.Кэшировать Тогда
ПодключаемыйМодуль = ПолучитьОбъектКомпонентыИзКэша(Контекст.Местоположение);
СвойстваПодключаемогоМодуля = ПолучитьОбъектКомпонентыИзКэша(Контекст.Местоположение);
ПровереноПодключение = Неопределено;
Если ПодключаемыйМодуль <> Неопределено Тогда
ПровереноПодключение = ПроверитьПодключениеВнешнейКомпоненты(Контекст.Местоположение,
Контекст.Идентификатор);
Если ПровереноПодключение Тогда
ПодключитьКомпонентуОповеститьОПодключении(ПодключаемыйМодуль, Контекст);
Возврат;
КонецЕсли;
Если СвойстваПодключаемогоМодуля <> Неопределено Тогда
ПодключитьКомпонентуОповеститьОПодключении(СвойстваПодключаемогоМодуля, Контекст);
Возврат;
КонецЕсли;
Если ПровереноПодключение <> Ложь Тогда
// Проверка факта подключения внешней компоненты в этом сеансе ранее.
СимволическоеИмя = ПолучитьСимволическоеИмяКомпонентыИзКэша(Контекст.Местоположение);
// Проверка факта подключения внешней компоненты в этом сеансе ранее.
СимволическоеИмя = ПолучитьСимволическоеИмяКомпонентыИзКэша(Контекст.Местоположение);
Если СимволическоеИмя <> Неопределено Тогда
Если ПровереноПодключение = Неопределено Тогда
ПровереноПодключение = ПроверитьПодключениеВнешнейКомпоненты(Контекст.Местоположение,
Контекст.Идентификатор);
КонецЕсли;
Если ПровереноПодключение Тогда
// Если в кэше уже есть символическое имя - значит к этому сеансу ранее компонента уже подключалась.
Подключено = Истина;
Контекст.Вставить("СимволическоеИмя", СимволическоеИмя);
ПодключитьКомпонентуПослеПопыткиПодключения(Подключено, Контекст);
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ПровереноПодключение = Ложь Тогда
ОчиститьОбъектКомпонентыВКэше(Контекст.Местоположение);
Если СимволическоеИмя <> Неопределено Тогда
// Если в кэше уже есть символическое имя - значит к этому сеансу ранее компонента уже подключалась.
Подключено = Истина;
Контекст.Вставить("СимволическоеИмя", СимволическоеИмя);
ПодключитьКомпонентуПослеПопыткиПодключения(Подключено, Контекст);
Возврат;
КонецЕсли;
КонецЕсли;
@@ -352,11 +315,13 @@
КонецПроцедуры
// Продолжение процедуры ПодключитьКомпоненту.
Процедура ПодключитьКомпонентуОповеститьОПодключении(ПодключаемыйМодуль, Контекст) Экспорт
Процедура ПодключитьКомпонентуОповеститьОПодключении(СвойстваПодключаемогоМодуля, Контекст) Экспорт
Результат = РезультатПодключенияКомпоненты();
Результат.Подключено = Истина;
Результат.ПодключаемыйМодуль = ПодключаемыйМодуль;
Результат.ПодключаемыйМодуль = СвойстваПодключаемогоМодуля.ПодключаемыйМодуль;
Результат.СимволическоеИмя = СвойстваПодключаемогоМодуля.Имя;
Результат.Местоположение = СвойстваПодключаемогоМодуля.Местоположение;
ВыполнитьОбработкуОповещения(Контекст.Оповещение, Результат);
КонецПроцедуры
@@ -384,6 +349,8 @@
Результат.Вставить("Подключено", Ложь);
Результат.Вставить("ОписаниеОшибки", "");
Результат.Вставить("ПодключаемыйМодуль", Неопределено);
Результат.Вставить("Местоположение", "");
Результат.Вставить("СимволическоеИмя", "");
Возврат Результат;
@@ -950,10 +917,11 @@
КонецПопытки;
Если Контекст.Кэшировать Тогда
ЗаписатьОбъектКомпонентыВКэш(ИсходноеМестоположение, ПодключаемыйМодуль)
ЗаписатьОбъектКомпонентыВКэш(ИсходноеМестоположение, ПодключаемыйМодуль, Контекст.Местоположение, Контекст.СимволическоеИмя);
КонецЕсли;
ПодключитьКомпонентуОповеститьОПодключении(ПодключаемыйМодуль, Контекст);
ПодключитьКомпонентуОповеститьОПодключении(Новый Структура("ПодключаемыйМодуль, Местоположение, Имя",
ПодключаемыйМодуль, Контекст.Местоположение, Контекст.СимволическоеИмя), Контекст);
Иначе
@@ -1276,12 +1244,15 @@
#КонецЕсли
Если Контекст.Кэшировать Тогда
ЗаписатьОбъектКомпонентыВКэш(ИсходноеМестоположение, ПодключаемыйМодуль)
ЗаписатьОбъектКомпонентыВКэш(
ИсходноеМестоположение, ПодключаемыйМодуль, Контекст.Местоположение, Контекст.СимволическоеИмя);
КонецЕсли;
Результат = РезультатПодключенияКомпоненты();
Результат.Подключено = Истина;
Результат.ПодключаемыйМодуль = ПодключаемыйМодуль;
Результат.Местоположение = Контекст.Местоположение;
Результат.СимволическоеИмя = Контекст.СимволическоеИмя;
Возврат Результат;
Иначе
@@ -1440,14 +1411,22 @@
КэшированныеОбъекты = ПараметрыПриложения["СтандартныеПодсистемы.ВнешниеКомпоненты.Объекты"];
Если ТипЗнч(КэшированныеОбъекты) = Тип("ФиксированноеСоответствие") Тогда
ПодключаемыйМодуль = КэшированныеОбъекты.Получить(КлючОбъекта);
СвойстваПодключаемогоМодуля = КэшированныеОбъекты.Получить(КлючОбъекта);
Если СвойстваПодключаемогоМодуля <> Неопределено Тогда
Если ПроверитьПодключениеВнешнейКомпоненты(СвойстваПодключаемогоМодуля.Местоположение,
СвойстваПодключаемогоМодуля.Имя) Тогда
Возврат СвойстваПодключаемогоМодуля;
Иначе
ОчиститьОбъектКомпонентыВКэше(КлючОбъекта);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат ПодключаемыйМодуль;
КонецФункции
Процедура ЗаписатьОбъектКомпонентыВКэш(КлючОбъекта, ПодключаемыйМодуль)
Процедура ЗаписатьОбъектКомпонентыВКэш(КлючОбъекта, ПодключаемыйМодуль, Местоположение, Имя)
Соответствие = Новый Соответствие;
КэшированныеОбъекты = ПараметрыПриложения["СтандартныеПодсистемы.ВнешниеКомпоненты.Объекты"];
@@ -1458,7 +1437,9 @@
КонецЦикла;
КонецЕсли;
Соответствие.Вставить(КлючОбъекта, ПодключаемыйМодуль);
СвойстваПодключаемогоМодуля = Новый Структура("ПодключаемыйМодуль, Местоположение, Имя",
ПодключаемыйМодуль, Местоположение, Имя);
Соответствие.Вставить(КлючОбъекта, СвойстваПодключаемогоМодуля);
ПараметрыПриложения.Вставить("СтандартныеПодсистемы.ВнешниеКомпоненты.Объекты",
Новый ФиксированноеСоответствие(Соответствие));
@@ -216,6 +216,7 @@
Исключение
ЗаписьЖурналаРегистрации(НСтр("ru = 'Отправка SMS'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка, , , ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат Неопределено;
КонецПопытки;
Если HTTPОтвет <> Неопределено Тогда
@@ -225,6 +226,7 @@
+ HTTPОтвет.ПолучитьТелоКакСтроку();
ЗаписьЖурналаРегистрации(НСтр("ru = 'Отправка SMS'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибки);
Возврат Неопределено;
КонецЕсли;
Возврат HTTPОтвет.ПолучитьТелоКакСтроку();
@@ -11491,6 +11491,7 @@
Форма = Параметры.Форма;
ТаблицаРолей = Форма.Элементы.Роли;
Роли = Форма.Роли;
ПоказатьТолькоВыбранныеРоли = Форма.Элементы.РолиПоказатьТолькоВыбранныеРоли.Пометка;
НазначениеРолей = Параметры.НазначениеРолей;
@@ -11499,17 +11500,26 @@
НедоступныеРоли = ПользователиСлужебныйПовтИсп.НедоступныеРоли(НазначениеРолей);
Если Параметры.ОсновнойПараметр = "ВключитьВсе" Тогда
ИдентификаторСтроки = Неопределено;
Добавить = Истина;
Добавить = Истина;
ИдентификаторыСтрок = Неопределено;
ИначеЕсли Параметры.ОсновнойПараметр = "ИсключитьВсе" Тогда
ИдентификаторСтроки = Неопределено;
Добавить = Ложь;
Добавить = Ложь;
ИдентификаторыСтрок = Неопределено;
ИначеЕсли Параметры.ОсновнойПараметр = "ВключитьВыделенные" Тогда
Добавить = Истина;
ИдентификаторыСтрок = ТаблицаРолей.ВыделенныеСтроки;
ИначеЕсли Параметры.ОсновнойПараметр = "ИсключитьВыделенные" Тогда
Добавить = Ложь;
ИдентификаторыСтрок = ТаблицаРолей.ВыделенныеСтроки;
Иначе
ИдентификаторСтроки = Форма.Элементы.Роли.ТекущаяСтрока;
ИдентификаторыСтрок = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(
Форма.Элементы.Роли.ТекущаяСтрока);
КонецЕсли;
Если ИдентификаторСтроки = Неопределено Тогда
Если ИдентификаторыСтрок = Неопределено Тогда
БылУстановленАдминистративныйДоступ = Параметры.КоллекцияРолей.НайтиСтроки(
Новый Структура("Роль", "ПолныеПрава")).Количество() > 0;
@@ -11557,12 +11567,15 @@
Возврат;
КонецЕсли;
Иначе
ТекущиеДанные = Роли.НайтиПоИдентификатору(ИдентификаторСтроки);
Если ТекущиеДанные.ЭтоРоль Тогда
ДобавитьУдалитьРоль(Параметры, ТекущиеДанные.Имя, ТекущиеДанные.Пометка);
Иначе
ДобавитьУдалитьРолиПодсистемы(Параметры, ТекущиеДанные.ПолучитьЭлементы(), ТекущиеДанные.Пометка);
КонецЕсли;
Для Каждого ИдентификаторСтроки Из ИдентификаторыСтрок Цикл
ТекущиеДанные = Роли.НайтиПоИдентификатору(ИдентификаторСтроки);
Добавить = ?(Добавить = Неопределено, ТекущиеДанные.Пометка, Добавить);
Если ТекущиеДанные.ЭтоРоль Тогда
ДобавитьУдалитьРоль(Параметры, ТекущиеДанные.Имя, Добавить);
Иначе
ДобавитьУдалитьРолиПодсистемы(Параметры, ТекущиеДанные.ПолучитьЭлементы(), Добавить);
КонецЕсли;
КонецЦикла;
ЗаполнитьСтандартныеРолиРасширений(Параметры);
КонецЕсли;
@@ -721,7 +721,6 @@
Если ПолучитьФункциональнуюОпцию("ХранитьИсториюРассылкиОтчетов") Тогда
ПараметрыДоставки.ПараметрыПисьма.УведомитьОДоставке = Истина;
ПараметрыДоставки.ПараметрыПисьма.УведомитьОПрочтении = Истина;
КонецЕсли;
Возврат ПараметрыДоставки;
@@ -247,7 +247,6 @@
#Область СлужебныеПроцедурыИФункции
// Склоняет представление объекта.
// Только для работы на ОС Windows.
//
// Параметры:
// Объект - ОпределяемыйТип.ОбъектСклонения - ссылка на объект, в котором содержится реквизит для склонения.
@@ -261,7 +260,7 @@
// 6 - Предложный.
//
// Возвращаемое значение:
// Строка - результат склонения представления объекта в падеже.
// Строка - результат склонения представления объекта в требуемом падеже.
//
Функция Просклонять(Представление, Падеж, Объект = Неопределено, ПараметрыСклонения = Неопределено)
@@ -549,6 +549,25 @@
#Область СлужебныеПроцедурыИФункции
Функция ЭтоРазделенныйРежимБезРасширенийОбластиДанных() Экспорт
ЭтоРазделенныйРежимСеансаБезРазделителей = СтандартныеПодсистемыСервер.ЭтоРазделенныйРежимСеансаБезРазделителей();
Если Не ЭтоРазделенныйРежимСеансаБезРазделителей Тогда
Возврат Ложь;
КонецЕсли;
ФоновоеЗадание = ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание();
Если ФоновоеЗадание <> Неопределено
И ФоновоеЗадание.РазделениеДанных.Количество() > 0 Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
// Кеширует общие параметры работы между вызовами сервера.
//
// Возвращаемое значение:
@@ -739,17 +739,7 @@
// Вызывает исключение с требованием перезапустить сеанс из-за обновления расширений программы.
Процедура ПотребоватьПерезапускСеансаПоПричинеДинамическогоОбновленияРасширенийПрограммы() Экспорт
ЭтоРазделенныйРежимБезРасширенийОбластиДанных = ЭтоРазделенныйРежимСеансаБезРазделителей();
Если ЭтоРазделенныйРежимБезРасширенийОбластиДанных Тогда
ФоновоеЗадание = ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание();
Если ФоновоеЗадание <> Неопределено
И ФоновоеЗадание.РазделениеДанных.Количество() > 0 Тогда
ЭтоРазделенныйРежимБезРасширенийОбластиДанных = Ложь;
КонецЕсли;
КонецЕсли;
Если ЭтоРазделенныйРежимБезРасширенийОбластиДанных Тогда
Если СтандартныеПодсистемыПовтИсп.ЭтоРазделенныйРежимБезРасширенийОбластиДанных() Тогда
ТекстОшибки =
НСтр("ru = 'Для выполнения требуемых действий следует
|запустить сеанс с установленными разделителями.
@@ -2677,6 +2667,12 @@
КонецЕсли;
КонецЕсли;
Если ЭтоВызовПередНачаломРаботыСистемы
И Не Параметры.ПолученныеПараметрыКлиента.Свойство("СерверныеОповещения") Тогда
СерверныеОповещения.ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры);
КонецЕсли;
Если ЭтоВызовПередНачаломРаботыСистемы
И Не Параметры.ПолученныеПараметрыКлиента.Свойство("ВыбратьНачальныеРегиональныеНастройкиИБ")
И ТребуетсяУстановкаРегиональныхНастроекИнформационнойБазы() Тогда
@@ -2700,12 +2696,6 @@
КонецЕсли;
Если ЭтоВызовПередНачаломРаботыСистемы
И Не Параметры.ПолученныеПараметрыКлиента.Свойство("СерверныеОповещения") Тогда
СерверныеОповещения.ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры);
КонецЕсли;
Если ПараметрыСеанса.ВыполняетсяОбновлениеИБ <> Неопределено // Обязательная инициализация параметра сеанса.
И Не Параметры.РазделениеВключено
И ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы()
@@ -1430,7 +1430,7 @@
ИначеЕсли СтрСравнить(ИмяАтрибута, "href") = 0 И СтрСравнить(ИмяТега, "a") = 0 Тогда
ТекущаяСсылка = ЗначениеАтрибута;
ИначеЕсли СтрСравнить(ИмяАтрибута, "src") = 0 И СтрСравнить(ИмяТега, "img") = 0 Тогда
НаборСтрок.Добавить(ФорматированнаяСтрокаБезИзмененияРазмераШрифта(Новый ФорматированнаяСтрока(БиблиотекаКартинок[ЗначениеАтрибута], ТекущийШрифт, ТекущийЦвет, ТекущийФон, ТекущаяСсылка)));
НаборСтрок.Добавить(Новый ФорматированнаяСтрока(БиблиотекаКартинок[ЗначениеАтрибута], ТекущийШрифт, ТекущийЦвет, ТекущийФон, ТекущаяСсылка));
КонецЕсли;
ОписаниеАтрибутов = Сред(ОписаниеАтрибутов, ПозицияВтораяКавычка + 1);
@@ -1456,7 +1456,7 @@
ТелоСтроки = СтрЗаменить(ТелоСтроки, "&lt;", "<");
Если СтрДлина(ТелоСтроки) > 0 Тогда
НаборСтрок.Добавить(ФорматированнаяСтрокаБезИзмененияРазмераШрифта(Новый ФорматированнаяСтрока(ТелоСтроки, ТекущийШрифт, ТекущийЦвет, ТекущийФон, ТекущаяСсылка)));
НаборСтрок.Добавить(Новый ФорматированнаяСтрока(ТелоСтроки, ТекущийШрифт, ТекущийЦвет, ТекущийФон, ТекущаяСсылка));
КонецЕсли;
СимволНачалаФрагмента = "<" ;
@@ -1490,12 +1490,6 @@
КонецПроцедуры
Функция ФорматированнаяСтрокаБезИзмененияРазмераШрифта(Строка)
ФорматированныйДокумент = Новый ФорматированныйДокумент;
ФорматированныйДокумент.УстановитьФорматированнуюСтроку(Строка);
Возврат ФорматированныйДокумент.ПолучитьФорматированнуюСтроку();
КонецФункции
#КонецОбласти
#Область ПреобразоватьЧислоВРимскуюНотацию
@@ -2484,7 +2484,7 @@
// Параметры:
// ОбъектыАвторизации - Массив из ОпределяемыйТип.ВнешнийПользователь - новый объект авторизации и
// старый объект авторизации (если есть).
// - Неопределено - все
// - Неопределено - все объекты авторизации.
//
Процедура ПослеИзмененияОбъектаАвторизацииВнешнегоПользователя(ОбъектыАвторизации) Экспорт
@@ -3514,10 +3514,10 @@
Если ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа()
Или Не Источник.ОбменДанными.Загрузка Тогда
Если Источник.ЭтоНовый()
И ОбщегоНазначения.ИнформационнаяБазаФайловая()
Если ОбщегоНазначения.ИнформационнаяБазаФайловая()
И Не ПропуститьПроверкуДоступа(Отказ, Источник) Тогда
ЗаблокироватьРегистрыПланированияОбновленияКлючейДоступаВФайловойИБ();
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("РегистрСведений.ПараметрыРаботыВерсийРасширений");
Блокировка.Заблокировать();
@@ -5652,6 +5652,9 @@
НачатьТранзакцию();
Попытка
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
ЗаблокироватьРегистрыПланированияОбновленияКлючейДоступаВФайловойИБ();
КонецЕсли;
Блокировка.Заблокировать();
УжеИзменен = Ложь;
СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ИмяПараметра, Истина, УжеИзменен);
@@ -6195,7 +6198,7 @@
КонецПроцедуры
// Для процедуры ОбновитьВспомогательныеДанныеЭлементовИзмененныхПриЗагрузке.
// Для процедуры ОбновитьВспомогательныеДанныеЭлементовИзмененныхПриПолученииДанных.
Процедура ОбработатьИзменениеЗначенийДоступаЗарегистрированноеПриПолученииДанных()
ОчисткаРегистрации = Новый Массив;
@@ -6210,7 +6213,7 @@
КонецПроцедуры
// Для процедуры ОбработатьИзменениеЗначенийДоступаЗарегистрированноеПриЗагрузке.
// Для процедуры ОбработатьИзменениеЗначенийДоступаЗарегистрированноеПриПолученииДанных.
Процедура ОбработатьЗарегистрированноеИзменениеЗначенийДоступа(ИмяВидаСсылок, ОчисткаРегистрации)
ЗначенияДоступа = ПользователиСлужебный.ЗарегистрированныеСсылки(ИмяВидаСсылок);
@@ -6229,7 +6232,7 @@
КонецПроцедуры
// Для процедуры ОбработатьИзменениеЗначенийДоступаЗарегистрированноеПриЗагрузке.
// Для процедуры ОбработатьИзменениеЗначенийДоступаЗарегистрированноеПриПолученииДанных.
Процедура ОбработатьЗарегистрированноеИзменениеИерархииЗначенийДоступа(ИмяВидаСсылок, ОчисткаРегистрации)
ГруппыДоступа = ПользователиСлужебный.ЗарегистрированныеСсылки(ИмяВидаСсылок);
@@ -6248,9 +6251,7 @@
КонецПроцедуры
// Для процедур ВключитьПользователяВГруппуДоступа, ИсключитьПользователяИзГруппыДоступа
// и функции НайтиПользователяВГруппеДоступа.
// Для процедур ВключитьПользователяВГруппуДоступа.
Функция ОбработатьСвязьПользователяСГруппойДоступа(Пользователь, ПоставляемыйПрофиль, Включить = Неопределено)
Если ТипЗнч(Пользователь) <> Тип("СправочникСсылка.Пользователи")
@@ -13100,6 +13101,7 @@
ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом"); // СтандартныеПодсистемыПовтИсп.ИменаПодсистем
УправлениеДоступомСлужебныйПовтИсп.КонстантаОграничиватьДоступНаУровнеЗаписей();
УправлениеДоступомСлужебныйПовтИсп.КонстантаОграничиватьДоступНаУровнеЗаписейУниверсально();
СвойстваВидовДоступа();
КонецЕсли;
Если ИспользованиеВидовДоступаИзменено Тогда
@@ -41191,7 +41193,7 @@
Процедура РазобратьСоединитель(Контекст, ЭтоОперация = Ложь)
// И, Или, Как, Кроме, Только, Есть и любая операция =, <>, ...
// Ключевое слово В разбирается отдельно в процедуре "РазобратьОперациюВ".
// Ключевое слово В разбирается отдельно в процедуре "РазобратьСоединительВ".
Строка = Контекст.Строка; // СтрокаТаблицыЗначений из см. ТаблицаНаборовСимволов
@@ -41362,7 +41364,7 @@
ИначеЕсли СтрНайти(",Поле,Значение,Константа,В,ЕстьNull,Выбор,", "," + Описание.Узел + ",") > 0
Или Описание.Источник.Тип = "Функция" Тогда
// Второй аргумент операции В уже разобран в процедуре РазобратьОперациюВ.
// Второй аргумент операции В уже разобран в процедуре РазобратьСоединительВ.
// Второй аргумент Null операции Есть уже разобран в функции ФункцииСВыражениямиВСкобках.
// Остальные узлы не имеют второго аргумента.
ВставитьСоединительСУчетомПриоритета(Контекст, Неопределено, НовоеОписание, ПервыйАргумент);
@@ -42324,7 +42326,7 @@
ИначеЕсли СтрНайти(",Поле,Значение,Константа,В,ЕстьNull,Выбор,", "," + Описание.Узел + ",") > 0
Или Описание.Источник.Тип = "Функция" Тогда
// Второй аргумент операции В уже разобран в процедуре РазобратьОперациюВ.
// Второй аргумент операции В уже разобран в процедуре РазобратьСоединительВ.
// Второй аргумент Null операции Есть уже разобран в функции ФункцииСВыражениямиВСкобках.
// Остальные узлы не имеют второго аргумента.
ОбработатьПропущеннуюЛогическуюОперацию(Контекст, Неопределено, ДобавляемоеОписание);
@@ -14,6 +14,17 @@
////////////////////////////////////////////////////////////////////////////////
// Обработчики событий таблицы формы ЗначенияДоступа.
// Только для внутреннего использования.
//
// Параметры:
// Форма - см. УправлениеДоступомСлужебныйКлиентСервер.ПараметрыФормыРедактированияРазрешенныхЗначений
//
Процедура ЗначенияДоступаПодобрать(Форма) Экспорт
ЗначениеДоступаНачалоВыбора(Форма, Неопределено, Неопределено, Null);
КонецПроцедуры
// Только для внутреннего использования.
//
// Параметры:
@@ -75,16 +86,56 @@
КонецПроцедуры
// Только для внутреннего использования.
//
// Параметры:
// Форма - см. УправлениеДоступомСлужебныйКлиентСервер.ПараметрыФормыРедактированияРазрешенныхЗначений
// Элемент - ТаблицаФормы
// ВыбранноеЗначение - Произвольный
// СтандартнаяОбработка - Булево
//
Процедура ЗначенияДоступаОбработкаВыбора(Форма, Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Экспорт
Значения = ?(ТипЗнч(ВыбранноеЗначение) = Тип("Массив"),
ВыбранноеЗначение, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ВыбранноеЗначение));
Параметры = ПараметрыФормыРедактированияРазрешенныхЗначений(Форма);
ТекущиеТипы = Новый Массив;
Для Каждого ЭлементСписка Из Форма.ТекущиеТипыВыбираемыхЗначений Цикл
ТекущиеТипы.Добавить(ТипЗнч(ЭлементСписка.Значение));
КонецЦикла;
Отбор = УправлениеДоступомСлужебныйКлиентСервер.ОтборВТаблицахФормыРедактированияРазрешенныхЗначений(
Форма, Форма.ТекущийВидДоступа);
Для Каждого Значение Из Значения Цикл
Если ТекущиеТипы.Найти(ТипЗнч(Значение)) = Неопределено Тогда
Продолжить;
КонецЕсли;
Отбор.Вставить("ЗначениеДоступа", Значение);
Если Не ЗначениеЗаполнено(Параметры.ЗначенияДоступа.НайтиСтроки(Отбор)) Тогда
НоваяСтрока = Параметры.ЗначенияДоступа.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Отбор);
КонецЕсли;
КонецЦикла;
УправлениеДоступомСлужебныйКлиентСервер.ЗаполнитьНомераСтрокЗначенийДоступаПоВиду(Форма,
Форма.Элементы.ВидыДоступа.ТекущиеДанные);
КонецПроцедуры
// Только для внутреннего использования.
Процедура ЗначениеДоступаНачалоВыбора(Форма, Элемент, ДанныеВыбора, СтандартнаяОбработка) Экспорт
Контекст = Новый Структура("Форма, ЭтоПодбор", Форма, СтандартнаяОбработка = Null);
СтандартнаяОбработка = Ложь;
Если Форма.ТекущиеТипыВыбираемыхЗначений.Количество() = 1 Тогда
Форма.ТекущийТипВыбираемыхЗначений = Форма.ТекущиеТипыВыбираемыхЗначений[0].Значение;
ЗначениеДоступаНачалоВыбораЗавершение(Форма);
ЗначениеДоступаНачалоВыбораЗавершение(Контекст);
Возврат;
ИначеЕсли Форма.ТекущиеТипыВыбираемыхЗначений.Количество() > 0 Тогда
@@ -95,7 +146,7 @@
Форма.ТекущийТипВыбираемыхЗначений = ПредопределенноеЗначение(
"Справочник.Пользователи.ПустаяСсылка");
ЗначениеДоступаНачалоВыбораЗавершение(Форма);
ЗначениеДоступаНачалоВыбораЗавершение(Контекст);
Возврат;
КонецЕсли;
@@ -103,58 +154,19 @@
Форма.ТекущийТипВыбираемыхЗначений = ПредопределенноеЗначение(
"Справочник.ВнешниеПользователи.ПустаяСсылка");
ЗначениеДоступаНачалоВыбораЗавершение(Форма);
ЗначениеДоступаНачалоВыбораЗавершение(Контекст);
Возврат;
КонецЕсли;
КонецЕсли;
Форма.ТекущиеТипыВыбираемыхЗначений.ПоказатьВыборЭлемента(
Новый ОписаниеОповещения("ЗначениеДоступаНачалоВыбораПродолжение", ЭтотОбъект, Форма),
Новый ОписаниеОповещения("ЗначениеДоступаНачалоВыбораПродолжение", ЭтотОбъект, Контекст),
НСтр("ru = 'Выбор типа данных'"),
Форма.ТекущиеТипыВыбираемыхЗначений[0]);
КонецЕсли;
КонецПроцедуры
// Только для внутреннего использования.
//
// Параметры:
// Форма - см. УправлениеДоступомСлужебныйКлиентСервер.ПараметрыФормыРедактированияРазрешенныхЗначений
// Элемент - ТаблицаФормы
// ВыбранноеЗначение - Произвольный
// СтандартнаяОбработка - Булево
//
Процедура ЗначениеДоступаОбработкаВыбора(Форма, Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Экспорт
ТекущиеДанные = Форма.Элементы.ЗначенияДоступа.ТекущиеДанные;
Если ВыбранноеЗначение = Тип("СправочникСсылка.Пользователи")
Или ВыбранноеЗначение = Тип("СправочникСсылка.ГруппыПользователей") Тогда
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РежимВыбора", Истина);
ПараметрыФормы.Вставить("ТекущаяСтрока", ТекущиеДанные.ЗначениеДоступа);
ПараметрыФормы.Вставить("ВыборГруппПользователей", Истина);
ОткрытьФорму("Справочник.Пользователи.ФормаВыбора", ПараметрыФормы, Элемент);
ИначеЕсли ВыбранноеЗначение = Тип("СправочникСсылка.ВнешниеПользователи")
Или ВыбранноеЗначение = Тип("СправочникСсылка.ГруппыВнешнихПользователей") Тогда
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РежимВыбора", Истина);
ПараметрыФормы.Вставить("ТекущаяСтрока", ТекущиеДанные.ЗначениеДоступа);
ПараметрыФормы.Вставить("ВыборГруппВнешнихПользователей", Истина);
ОткрытьФорму("Справочник.ВнешниеПользователи.ФормаВыбора", ПараметрыФормы, Элемент);
КонецЕсли;
КонецПроцедуры
// Только для внутреннего использования.
Процедура ЗначенияДоступаПриОкончанииРедактирования(Форма, Элемент, НоваяСтрока, ОтменаРедактирования) Экспорт
@@ -540,11 +552,11 @@
#Область СлужебныеПроцедурыИФункции
// Продолжение обработчика события ЗначениеДоступаНачалоВыбора.
Процедура ЗначениеДоступаНачалоВыбораПродолжение(ВыбранныйЭлемент, Форма) Экспорт
Процедура ЗначениеДоступаНачалоВыбораПродолжение(ВыбранныйЭлемент, Контекст) Экспорт
Если ВыбранныйЭлемент <> Неопределено Тогда
Форма.ТекущийТипВыбираемыхЗначений = ВыбранныйЭлемент.Значение;
ЗначениеДоступаНачалоВыбораЗавершение(Форма);
Контекст.Форма.ТекущийТипВыбираемыхЗначений = ВыбранныйЭлемент.Значение;
ЗначениеДоступаНачалоВыбораЗавершение(Контекст);
КонецЕсли;
КонецПроцедуры
@@ -554,27 +566,39 @@
// Параметры:
// Форма - см. УправлениеДоступомСлужебныйКлиентСервер.ПараметрыФормыРедактированияРазрешенныхЗначений
//
Процедура ЗначениеДоступаНачалоВыбораЗавершение(Форма)
Процедура ЗначениеДоступаНачалоВыбораЗавершение(Контекст)
Форма = Контекст.Форма;
Элементы = Форма.Элементы;
Элемент = Элементы.ЗначенияДоступаЗначениеДоступа;
ТекущиеДанные = Элементы.ЗначенияДоступа.ТекущиеДанные;
Если НЕ ЗначениеЗаполнено(ТекущиеДанные.ЗначениеДоступа)
И ТекущиеДанные.ЗначениеДоступа <> Форма.ТекущийТипВыбираемыхЗначений Тогда
Если Контекст.ЭтоПодбор Тогда
Элемент = Элементы.ЗначенияДоступа;
ТекущаяСтрока = ?(ТекущиеДанные = Неопределено, Неопределено, ТекущиеДанные.ЗначениеДоступа);
Иначе
Элемент = Элементы.ЗначенияДоступаЗначениеДоступа;
ТекущиеДанные.ЗначениеДоступа = Форма.ТекущийТипВыбираемыхЗначений;
Если Не ЗначениеЗаполнено(ТекущиеДанные.ЗначениеДоступа)
И ТекущиеДанные.ЗначениеДоступа <> Форма.ТекущийТипВыбираемыхЗначений Тогда
ТекущиеДанные.ЗначениеДоступа = Форма.ТекущийТипВыбираемыхЗначений;
КонецЕсли;
ТекущаяСтрока = ТекущиеДанные.ЗначениеДоступа;
Элементы.ЗначенияДоступаЗначениеДоступа.КнопкаВыбора = Неопределено;
Элементы.ЗначенияДоступаЗначениеДоступа.КнопкаОчистки
= Форма.ТекущийТипВыбираемыхЗначений <> Неопределено
И Форма.ТекущиеТипыВыбираемыхЗначений.Количество() > 1;
КонецЕсли;
Элементы.ЗначенияДоступаЗначениеДоступа.КнопкаВыбора = Неопределено;
Элементы.ЗначенияДоступаЗначениеДоступа.КнопкаОчистки
= Форма.ТекущийТипВыбираемыхЗначений <> Неопределено
И Форма.ТекущиеТипыВыбираемыхЗначений.Количество() > 1;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РежимВыбора", Истина);
ПараметрыФормы.Вставить("ТекущаяСтрока", ТекущиеДанные.ЗначениеДоступа);
ПараметрыФормы.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ПараметрыФормы.Вставить("ЭтоВыборЗначенияДоступа");
Если Контекст.ЭтоПодбор Тогда
ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Ложь);
ПараметрыФормы.Вставить("МножественныйВыбор", Истина);
КонецЕсли;
Если Форма.ТекущийВидДоступа = Форма.ВидДоступаПользователи Тогда
ПараметрыФормы.Вставить("ВыборГруппПользователей", Истина);
@@ -4491,12 +4491,22 @@
ПоследняяСтрока = НайденныеСтроки.Получить(КоличествоСтрокВида - 1);
ИндексДобавляемойСтроки = ТаблицаКонтактнойИнформации.Индекс(ПоследняяСтрока) + 1;
Иначе
ИндексДобавляемойСтроки = ТаблицаКонтактнойИнформации.Количество();
ОтборПоРазмещению = Новый Структура("ИмяЭлементаДляРазмещения", ИмяЭлементаДляРазмещения);
НайденныеСтроки = ТаблицаКонтактнойИнформации.НайтиСтроки(ОтборПоРазмещению);
КоличествоСтрокВГруппе = НайденныеСтроки.Количество();
Если КоличествоСтрокВГруппе > 0 Тогда
ПоследняяСтрока = НайденныеСтроки.Получить(КоличествоСтрокВГруппе - 1);
ИндексДобавляемойСтроки = ТаблицаКонтактнойИнформации.Индекс(ПоследняяСтрока) + 1;
Иначе
ИндексДобавляемойСтроки = ТаблицаКонтактнойИнформации.Количество();
КонецЕсли;
КонецЕсли;
ЭтоПоследняяСтрока = Ложь;
Если ИндексДобавляемойСтроки = ТаблицаКонтактнойИнформации.Количество() Тогда
Если ИндексДобавляемойСтроки >= ТаблицаКонтактнойИнформации.Количество() Тогда
ЭтоПоследняяСтрока = Истина;
Иначе
СледующаяСтрокаТаблицы = ТаблицаКонтактнойИнформации.Получить(ИндексДобавляемойСтроки);
ЭтоПоследняяСтрока = СледующаяСтрокаТаблицы.ИмяЭлементаДляРазмещения <> ИмяЭлементаДляРазмещения;
КонецЕсли;
НоваяСтрока = ТаблицаКонтактнойИнформации.Вставить(ИндексДобавляемойСтроки);
@@ -1139,4 +1139,11 @@
КонецПроцедуры
Процедура ПерейтиКМакету(ПутьКМакету) Экспорт
ПараметрыОткрытия = Новый Структура("ПутьКМакету", ПутьКМакету);
ОткрытьФорму("РегистрСведений.ПользовательскиеМакетыПечати.Форма.МакетыПечатныхФорм", ПараметрыОткрытия);
КонецПроцедуры
#КонецОбласти
@@ -1688,6 +1688,7 @@
// Значение передается в процедуру ПриЗаполненииРеквизитовВладельцаВЗаявленииНаСертификат
// общего модуля ЗаявлениеНаСертификатПереопределяемый без изменения, а после вызова
// приводится к составу типов свойства ТипВладельца.
// * НаТокене - Булево - по умолчанию выбирать в заявлении на сертификат токен.
//
Функция ПараметрыДобавленияСертификата() Экспорт
@@ -1697,6 +1698,7 @@
ПараметрыДобавления.Вставить("СоздатьЗаявление", Истина);
ПараметрыДобавления.Вставить("ИзЛичногоХранилища", Истина);
ПараметрыДобавления.Вставить("ФизическоеЛицо", Неопределено);
ПараметрыДобавления.Вставить("НаТокене", Ложь);
Возврат ПараметрыДобавления;
@@ -1749,6 +1751,9 @@
ПараметрыДобавления.ИзЛичногоХранилища И Не ПараметрыДобавления.СоздатьЗаявление);
ПараметрыИнтерактивногоВыбора.Вставить("СоздатьЗаявление",
ПараметрыДобавления.СоздатьЗаявление И Не ПараметрыДобавления.ИзЛичногоХранилища);
Если ПараметрыИнтерактивногоВыбора.СоздатьЗаявление Тогда
ПараметрыИнтерактивногоВыбора.Вставить("НаТокене", ПараметрыДобавления.НаТокене);
КонецЕсли;
ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификат(ПараметрыИнтерактивногоВыбора, ОбработчикЗавершения);
@@ -1973,8 +1978,7 @@
// см. Обработка.ПрограммыЭлектроннойПодписиИШифрования.УстановкаПрограммКриптопровайдеров,
// если она существует и если список установленных программ пуст. По умолчанию, если ПроверяемыеПрограммы = Истина
// и не используется облачная подпись и криптографические операции на сервере - Истина, иначе - Ложь.
// * ПроверяемыеПрограммы - Структура
// - Неопределено - (по умолчанию) возвращаются все установленные программы.
// * ПроверяемыеПрограммы - Неопределено - (по умолчанию) возвращаются все установленные программы.
// - Булево - см. ЭлектроннаяПодписьСлужебныйКлиентСервер.АктуальныеАлгоритмыПрограмм
// - ДвоичныеДанные - данные подписи или сертификата, для проверки наличия подходящих программ.
// - Строка - адрес во временном хранилище данных подписи или сертификата, для проверки наличия подходящих программ.
@@ -8,6 +8,14 @@
#Область СлужебныеПроцедурыИФункции
Процедура ПриОпределенииПолучателяОбращенияВТехническуюПоддержку(Получатель) Экспорт
// Локализация
Получатель = "edo";
// Конец Локализация
КонецПроцедуры
Процедура ПриПолученииФильтраДляВыбораПодписей(Фильтр) Экспорт
// Локализация
@@ -93,5 +101,285 @@
КонецПроцедуры
Асинх Функция УстановленныеТокены(ОбъектКомпоненты = Неопределено, ПредложитьУстановить = Ложь) Экспорт
Результат = Новый Структура;
Результат.Вставить("ПроверкаВыполнена", Ложь);
Результат.Вставить("Токены", Новый Массив);
Результат.Вставить("Ошибка", "");
// Локализация
ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр(
"ru = 'Для получения данных о токенах требуется установка внешней компоненты %1.'"),
"ExtraCryptoAPI");
Попытка
ОбъектКомпоненты = Ждать ЭлектроннаяПодписьСлужебныйКлиент.ОбъектВнешнейКомпонентыExtraCryptoAPI(ПредложитьУстановить, ТекстПояснения);
Исключение
Результат.Ошибка = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
Возврат Результат;
КонецПопытки;
Попытка
ТипыУстройств = Ждать ОбъектКомпоненты.PKCS11ПолучитьПоддерживаемыеБэкендыАсинх();
Ждать ПолучитьОшибкуКомпоненты(ОбъектКомпоненты);
ТипыУстройств = СтрРазделить(ТипыУстройств.Значение, "; ");
Исключение
Результат.Ошибка = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
Возврат Результат;
КонецПопытки;
СтрокиУстройств = Новый Соответствие;
СтрокиТокенов = Новый Соответствие;
Для Каждого ТипУстройства Из ТипыУстройств Цикл
СвойстваТокена = ЭлектроннаяПодписьСлужебныйКлиент.НовыеСвойстваТокена();
СвойстваТокена.Токен = ТипУстройства;
СвойстваТокена.Представление = МодельТокена(ТипУстройства);
СвойстваТокена.СерийныйНомер = ТипУстройства;
ОшибкаИнициализацииТокена = "";
БиблиотекиТокена = "";
Попытка
НастройкиТокена = Ждать ОбъектКомпоненты.PKCS11ПолучитьНастройкиБэкендаПоУмолчаниюАсинх(ТипУстройства);
Ждать ПолучитьОшибкуКомпоненты(ОбъектКомпоненты);
БиблиотекиТокена = НастройкиТокена.Значение;
Ждать ОбъектКомпоненты.PKCS11ИнициализацияАсинх(БиблиотекиТокена);
Ждать ПолучитьОшибкуКомпоненты(ОбъектКомпоненты);
Исключение
ОшибкаИнициализацииТокена = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
Если ЗначениеЗаполнено(ОшибкаИнициализацииТокена) Тогда
Если ЭтоОшибкаЗагрузкиБиблиотеки(ОшибкаИнициализацииТокена) Тогда
СвойстваТокена.Ошибка = РекомендацииДляУстановкиБиблиотекТокена(ТипУстройства, БиблиотекиТокена);
ИначеЕсли Не ЗначениеЗаполнено(БиблиотекиТокена) Тогда
СвойстваТокена.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: Не удалось получить настройки для работы с токеном: %2'"),
СвойстваТокена.Представление, ОшибкаИнициализацииТокена);
Иначе
СвойстваТокена.Ошибка = ОшибкаИнициализацииТокена + Символы.ПС + РекомендацииДляУстановкиБиблиотекТокена(ТипУстройства, БиблиотекиТокена);
КонецЕсли;
Иначе
СвойстваТокена.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: %2.'"), СвойстваТокена.Представление, ЭлектроннаяПодписьСлужебныйКлиент.ОшибкаНеНайденТокен());
КонецЕсли;
СтрокиУстройств.Вставить(ТипУстройства, СвойстваТокена);
КонецЦикла;
ОшибкаПолученияСлотов = "";
Попытка
СписокСлотов = Ждать ОбъектКомпоненты.PKCS11ПолучитьСписокСлотовАсинх(Истина);
Ждать ПолучитьОшибкуКомпоненты(ОбъектКомпоненты);
Исключение
ОшибкаПолученияСлотов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось получить список токенов. %1'"),
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
ТокенНеВставлен = Не ЗначениеЗаполнено(ОшибкаПолученияСлотов) И (СписокСлотов.Значение = Неопределено Или СписокСлотов.Значение = "null");
Если Не ЗначениеЗаполнено(ОшибкаПолученияСлотов) И Не ТокенНеВставлен Тогда
СписокСлотов = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПрочитатьОтветКомпоненты(СписокСлотов.Значение);
Для Каждого Слот Из СписокСлотов Цикл
Если Слот.Ключ <> "available slot number" Тогда
Продолжить;
КонецЕсли;
ЗначенияСлотов = Слот.Значение;
Для Каждого ЗначениеСлота Из ЗначенияСлотов Цикл
ТипУстройства = ТипУстройства(ЗначениеСлота);
СвойстваТокена = ЭлектроннаяПодписьСлужебныйКлиент.НовыеСвойстваТокена();
СвойстваТокена.Слот = ЗначениеСлота;
СвойстваТокена.Токен = ТипУстройства;
СвойстваТокена.Представление = СтрШаблон("%1 %2", МодельТокена(ТипУстройства), СвойстваТокена.Слот);
Если СтрокиУстройств.Получить(ТипУстройства) <> Неопределено Тогда
СтрокиУстройств.Удалить(ТипУстройства);
КонецЕсли;
Попытка
ИнформацияОТокене = Ждать ОбъектКомпоненты.PKCS11ПолучитьИнформациюОТокенеАсинх(ЗначениеСлота);
Ждать ПолучитьОшибкуКомпоненты(ОбъектКомпоненты);
Исключение
СвойстваТокена.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: Не удалось получить информацию о токене в слоте %2. %3'"), МодельТокена(ТипУстройства),
ЗначениеСлота, ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
СтрокиТокенов.Вставить(ТипУстройства, СвойстваТокена);
Продолжить;
КонецПопытки;
Информация = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПрочитатьОтветКомпоненты(ИнформацияОТокене.Значение);
СвойстваТокена.СерийныйНомер = Информация.Получить("serial_number");
Модель = Информация.Получить("model");
СвойстваТокена.Модель = МодельТокена(Модель, ТипУстройства);
СвойстваТокена.Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 (серийный номер %2)'"), СвойстваТокена.Модель, СвойстваТокена.СерийныйНомер);
Попытка
СписокМеханизмов = Ждать ОбъектКомпоненты.PKCS11ПолучитьСписокПоддерживаемыхМеханизмовАсинх(ЗначениеСлота);
Ждать ПолучитьОшибкуКомпоненты(ОбъектКомпоненты);
Исключение
СвойстваТокена.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: Не удалось получить информацию о механизмах токена в слоте %2. %3'"),
МодельТокена(ТипУстройства), ЗначениеСлота, ОбработкаОшибок.КраткоеПредставлениеОшибки(
ИнформацияОбОшибке()));
СтрокиТокенов.Вставить(ТипУстройства, СвойстваТокена);
Продолжить;
КонецПопытки;
СвойстваТокена.Механизмы = СписокМеханизмов.Значение;
СтрокиТокенов.Вставить(ТипУстройства, СвойстваТокена);
КонецЦикла;
КонецЦикла;
ИначеЕсли Не ТокенНеВставлен И Не ЭтоОшибкаЗагрузкиБиблиотеки(ОшибкаПолученияСлотов) Тогда
Для Каждого КлючИЗначение Из СтрокиУстройств Цикл
КлючИЗначение.Значение.Ошибка = ОшибкаПолученияСлотов + Символы.ПС + КлючИЗначение.Значение.Ошибка;
КонецЦикла;
КонецЕсли;
Для Каждого КлючИЗначение Из СтрокиТокенов Цикл
Результат.Токены.Добавить(КлючИЗначение.Значение);
КонецЦикла;
Для Каждого КлючИЗначение Из СтрокиУстройств Цикл
Результат.Токены.Добавить(КлючИЗначение.Значение);
КонецЦикла;
// Конец Локализация
Возврат Результат;
КонецФункции
Асинх Функция СертификатыНаТокене(Токен, ОбъектКомпоненты = Неопределено, ПредложитьУстановить = Ложь) Экспорт
Результат = Новый Структура;
Результат.Вставить("ПроверкаВыполнена", Ложь);
Результат.Вставить("Сертификаты", Новый Массив);
Результат.Вставить("Ошибка", "");
// Локализация
Если ОбъектКомпоненты = Неопределено Тогда
Попытка
ОбъектКомпоненты = Ждать ЭлектроннаяПодписьСлужебныйКлиент.ОбъектВнешнейКомпонентыExtraCryptoAPI(ПредложитьУстановить);
Исключение
Результат.Ошибка = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
Возврат Результат;
КонецПопытки;
КонецЕсли;
Попытка
СертификатыНаТокене = Ждать ОбъектКомпоненты.PKCS11ПолучитьСписокСертификатовАсинх(Токен.Слот, Токен.ЗначениеПароля);
Ждать ПолучитьОшибкуКомпоненты(ОбъектКомпоненты);
Результат.ПроверкаВыполнена = Истина;
Результат.Сертификаты = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПрочитатьОтветКомпоненты(СертификатыНаТокене.Значение);
Исключение
Результат.Ошибка = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
Возврат Результат;
КонецПопытки;
// Конец Локализация
Возврат Результат;
КонецФункции
Функция ЭтоОшибкаЗагрузкиБиблиотеки(ТекстОшибки)
// Локализация
Если СтрНачинаетсяС(ТекстОшибки, "[token:10102]") Тогда
Возврат Истина;
КонецЕсли;
// Конец Локализация
Возврат Ложь;
КонецФункции
Функция ЭтоОшибкаНеправильныйПинКод(ТекстОшибки) Экспорт
// Локализация
Если СтрНачинаетсяС(ТекстОшибки, "[pkcs11:160]") Тогда
Возврат Истина;
КонецЕсли;
// Конец Локализация
Возврат Ложь;
КонецФункции
// Локализация
Асинх Функция ПолучитьОшибкуКомпоненты(ОбъектКомпоненты)
Ошибка = Ждать ОбъектКомпоненты.ПолучитьСписокОшибокАсинх();
Если Не ЗначениеЗаполнено(Ошибка) Тогда
Возврат Истина;
КонецЕсли;
ВызватьИсключение Ошибка;
КонецФункции
Функция МодельТокена(Модель, ТипУстройства = Неопределено)
Если СтрНачинаетсяС(НРег(Модель), "rutokenecp") Тогда
Возврат НСтр("ru = 'Рутокен ЭЦП'");
ИначеЕсли СтрНачинаетсяС(НРег(Модель), "rutokenlite") Тогда
Возврат НСтр("ru = 'Рутокен Lite'");
ИначеЕсли СтрНачинаетсяС(НРег(Модель), "rutokens") Тогда
Возврат НСтр("ru = 'Рутокен S'");
ИначеЕсли СтрНачинаетсяС(НРег(Модель), "rutoken") Тогда
Возврат НСтр("ru = 'Рутокен'");
ИначеЕсли СтрНачинаетсяС(НРег(Модель), "jacarta") Тогда
Возврат "JaCarta";
КонецЕсли;
Если ТипУстройства <> Неопределено Тогда
Возврат СтрШаблон("%1 %2", МодельТокена(ТипУстройства), Модель);
КонецЕсли;
Возврат Модель;
КонецФункции
Функция ТипУстройства(Слот)
Если СтрНачинаетсяС(НРег(Слот), "rutoken") Тогда
Возврат "rutoken";
ИначеЕсли СтрНачинаетсяС(НРег(Слот), "jacarta") Тогда
Возврат "jacarta";
КонецЕсли;
Массив = СтрРазделить(Слот, ": ");
Если Массив.Количество() > 0 Тогда
Возврат Массив[0];
КонецЕсли;
Возврат "";
КонецФункции
Функция РекомендацииДляУстановкиБиблиотекТокена(ТипУстройства, Библиотеки)
Если НРег(ТипУстройства) = "rutoken" Тогда
Возврат НСтр("ru = 'Для работы с Рутокеном скачайте и установите библиотеку с сайта производителя https://www.rutoken.ru/support/download/pkcs/, вставьте токен в компьютер, обновите список токенов и повторите попытку.'");
ИначеЕсли НРег(ТипУстройства) = "jacarta" Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для работы с %1 скачайте и установите библиотеку с сайта производителя https://aladdin-rd.ru/support/downloads/jacarta/, вставьте токен в компьютер, обновите список токенов и повторите попытку.'"),
"JaСarta");
КонецЕсли;
Возврат "";
КонецФункции
// Конец Локализация
#КонецОбласти
@@ -706,7 +706,7 @@
Если ЗначениеЗаполнено(ДатаПрекращенияАккредитацииУЦ)
И (СтрНачинаетсяС(КонтекстПроверки.ЗначенияПоиска, "1024001434049") И ДатаПрекращенияАккредитацииУЦ - КонтекстПроверки.РазницаСУниверсальнымВременем = Дата(2024, 7, 20, 21, 0, 0)
Или СтрНачинаетсяС(КонтекстПроверки.ЗначенияПоиска, "1197746000000") И ДатаПрекращенияАккредитацииУЦ - КонтекстПроверки.РазницаСУниверсальнымВременем = Дата(2024, 8, 15, 21, 0, 0)) Тогда
Или СтрНачинаетсяС(КонтекстПроверки.ЗначенияПоиска, "1197746000000") И ДатаПрекращенияАккредитацииУЦ - КонтекстПроверки.РазницаСУниверсальнымВременем = Дата(2024, 8, 16, 21, 0, 0)) Тогда
РезультатПроверкиУдостоверяющегоЦентра.Действует = Ложь;
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.РазрешитьПодписание = Ложь;
@@ -702,6 +702,7 @@
СертификатКриптографии);
Если ДанныеДляПроверкиУдостоверяющегоЦентра.ЗначенияПоиска = Неопределено Тогда
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьРезультатПроверкиСертификатНеквалифицированный(ПараметрыПроверки, Результат);
Возврат Результат;
КонецЕсли;
@@ -709,6 +710,7 @@
ДанныеДляПроверкиУдостоверяющегоЦентра.ЗначенияПоиска);
Если ДанныеУдостоверяющегоЦентра = Неопределено Тогда
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьРезультатПроверкиСертификатНеквалифицированный(ПараметрыПроверки, Результат);
Возврат Результат;
КонецЕсли;
@@ -5038,17 +5040,34 @@
КонецЕсли;
Форма.СертификатВводитьПарольВПрограммеЭлектроннойПодписи = ЗначенияРеквизитов.ВводитьПарольВПрограммеЭлектроннойПодписи;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Форма, "РезультатПроверкиУдостоверяющегоЦентра") Тогда
ПараметрыПроверки = Неопределено;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Форма, "ПроверятьСертификат") Тогда
ПараметрыПроверки = Новый Структура;
ПараметрыПроверки.Вставить("ЭтоПроверкаПодписи", Ложь);
ПараметрыПроверки.Вставить("ПроверятьСертификат", Форма.ПроверятьСертификат);
КонецЕсли;
Форма.РезультатПроверкиУдостоверяющегоЦентра = РезультатПроверкиУдостоверяющегоЦентраСертификата(Сертификат,,ПараметрыПроверки);
КонецЕсли;
ЕстьПараметрОповеститьОбОкончанииСрокаДействия = Форма.Параметры.Свойство("ОповеститьОбОкончанииСрокаДействия");
Если ЕстьПараметрОповеститьОбОкончанииСрокаДействия И Форма.Параметры.ОповеститьОбОкончанииСрокаДействия
Или Не ЕстьПараметрОповеститьОбОкончанииСрокаДействия Тогда
Форма.ОповеститьОбОкончанииСрокаДействия =
Форма.СертификатДействителенДо <= ТекущаяУниверсальнаяДата() + КоличествоДнейДляОповещенияОбОкончанииСрокаДействия()*24*60*60
И Не РегистрыСведений.ОповещенияПользователейСертификатов.ПользовательОповещен(Форма.Сертификат)
И Не СертификатПеревыпущен(Форма.Сертификат);
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Форма, "РезультатПроверкиУдостоверяющегоЦентра") Тогда
Форма.РезультатПроверкиУдостоверяющегоЦентра = РезультатПроверкиУдостоверяющегоЦентраСертификата(Сертификат);
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Форма, "РезультатПроверкиУдостоверяющегоЦентра")
И Форма.РезультатПроверкиУдостоверяющегоЦентра <> Неопределено
И Форма.РезультатПроверкиУдостоверяющегоЦентра.Действует
И (ЗначениеЗаполнено(Форма.РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ТекстОшибки)
Или ЗначениеЗаполнено(Форма.РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ДополнительныеСведения)) Тогда
Форма.ОповеститьОбОкончанииСрокаДействия = Не РегистрыСведений.ОповещенияПользователейСертификатов.ПользовательОповещен(Форма.Сертификат)
И Не СертификатПеревыпущен(Форма.Сертификат);
Иначе
Форма.ОповеститьОбОкончанииСрокаДействия =
Форма.СертификатДействителенДо <= ТекущаяУниверсальнаяДата() + КоличествоДнейДляОповещенияОбОкончанииСрокаДействия()*24*60*60
И Не РегистрыСведений.ОповещенияПользователейСертификатов.ПользовательОповещен(Форма.Сертификат)
И Не СертификатПеревыпущен(Форма.Сертификат);
КонецЕсли;
КонецЕсли;
Форма.СертификатНаСервереОписаниеОшибки = Новый Структура;
@@ -443,7 +443,29 @@
#Область СлужебныеПроцедурыИФункции
Процедура ПолеПароляНачалоВыбора(Форма, ВнутренниеДанные, СвойстваПароля, СтандартнаяОбработка) Экспорт
Процедура ОткрытьТокен(Токен, ВладелецФормы, ОбработкаЗавершения = Неопределено) Экспорт
СерверныеПараметры = Новый Структура;
СерверныеПараметры.Вставить("Токен", Токен);
ФормаПередачаПараметров().ОткрытьНовуюФорму("Токен",
СерверныеПараметры, Новый Структура, ОбработкаЗавершения, ВладелецФормы);
КонецПроцедуры
Функция РекомендацииДляТокена() Экспорт
Возврат НСтр("ru = 'Убедитесь, что токен правильно вставлен в USB-порт компьютера и на нем горит световой индикатор, обновите список токенов и повторите действие.
|Если токен не найден после обновления списка токенов, попробуйте другой USB-порт или другой компьютер.'");
КонецФункции
Функция ОшибкаНеНайденТокен() Экспорт
Возврат НСтр("ru = 'Не подключен токен'");
КонецФункции
Процедура ПолеПароляНачалоВыбора(Форма, ВнутренниеДанные, СвойстваПароля, СтандартнаяОбработка, ДополнительныеПараметры = Неопределено) Экспорт
СтандартнаяОбработка = Ложь;
Элемент = Форма.Элементы.Пароль;
@@ -455,8 +477,13 @@
Элемент.КартинкаКнопкиВыбора = БиблиотекаКартинок.ВводимыеСимволыСкрыты;
КонецЕсли;
Если ДополнительныеПараметры = Неопределено Тогда
ДополнительныеПараметры = Новый Структура;
КонецЕсли;
ДополнительныеПараметры.Вставить("ПриИзмененииВидимостиПароля", Истина);
ОбработатьПарольВФорме(Форма,
ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриИзмененииВидимостиПароля", Истина));
ВнутренниеДанные, СвойстваПароля, ДополнительныеПараметры);
КонецПроцедуры
@@ -2475,7 +2502,7 @@
ПараметрыПроверки = НовыеПараметрыПроверки;
КонецЕсли;
Если ПараметрыПроверки.ПроверятьСертификат = "НеПроверятьСертификат" Тогда
Если ПараметрыПроверки.ПроверятьСертификат = ЭлектроннаяПодписьСлужебныйКлиентСервер.НеПроверятьСертификат() Тогда
Возврат Результат;
КонецЕсли;
@@ -2486,6 +2513,7 @@
СертификатКриптографии);
Если ДанныеДляПроверкиУдостоверяющегоЦентра.ЗначенияПоиска = Неопределено Тогда
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьРезультатПроверкиСертификатНеквалифицированный(ПараметрыПроверки, Результат);
Возврат Результат;
КонецЕсли;
@@ -2493,6 +2521,7 @@
ДанныеДляПроверкиУдостоверяющегоЦентра.ЗначенияПоиска);
Если ДанныеУдостоверяющегоЦентра = Неопределено Тогда
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьРезультатПроверкиСертификатНеквалифицированный(ПараметрыПроверки, Результат);
Возврат Результат;
КонецЕсли;
@@ -3612,6 +3641,7 @@
// * ОбработчикЗавершения - ОписаниеОповещения
// * СоздатьЗаявление - Булево - сразу открыть форму создания заявления на выпуск сертификата.
// * СкрытьЗаявление - Булево - не предлагать создать заявление на выпуск сертификата.
// * НаТокене - Булево - по умолчанию выбирать в заявлении на сертификат токен.
//
Функция ПараметрыДобавленияСертификата() Экспорт
@@ -3623,6 +3653,7 @@
Структура.Вставить("ОбработчикЗавершения", Неопределено);
Структура.Вставить("СоздатьЗаявление", Неопределено);
Структура.Вставить("СкрытьЗаявление", Неопределено);
Структура.Вставить("НаТокене", Ложь);
Возврат Структура;
@@ -3637,6 +3668,7 @@
ПараметрыФормы.Вставить("Организация", ПараметрыСоздания.Организация);
ПараметрыФормы.Вставить("ФизическоеЛицо", ПараметрыСоздания.ФизическоеЛицо);
ПараметрыФормы.Вставить("СертификатОснование", ПараметрыСоздания.СертификатОснование);
ПараметрыФормы.Вставить("НаТокене", ПараметрыСоздания.НаТокене);
ИмяФормы = "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Форма.Форма";
ОткрытьФорму(ИмяФормы, ПараметрыФормы, , , , , ПараметрыСоздания.ОбработчикЗавершения);
Возврат;
@@ -5061,9 +5093,11 @@
ДополнительныеПараметры = Новый Структура;
КонецЕсли;
ДополнительныеПараметры.Вставить("Сертификат", Форма.Сертификат);
ДополнительныеПараметры.Вставить("ВводитьПарольВПрограммеЭлектроннойПодписи",
Форма.СертификатВводитьПарольВПрограммеЭлектроннойПодписи);
Если Не ДополнительныеПараметры.Свойство("ПриЧтенииСертификатовТокена") Тогда
ДополнительныеПараметры.Вставить("Сертификат", Форма.Сертификат);
ДополнительныеПараметры.Вставить("ВводитьПарольВПрограммеЭлектроннойПодписи",
Форма.СертификатВводитьПарольВПрограммеЭлектроннойПодписи);
КонецЕсли;
Если Не ДополнительныеПараметры.Свойство("ПриИзмененииВидимостиПароля") Тогда
ДополнительныеПараметры.Вставить("ПриИзмененииВидимостиПароля", Ложь);
@@ -10427,6 +10461,7 @@
Результат.Вставить("ПроверкаВыполнена", Ложь);
Результат.Вставить("КомпонентаУстановлена", Ложь);
Результат.Вставить("Криптопровайдеры", Новый Массив);
Результат.Вставить("Токены", Новый Массив);
Результат.Вставить("КриптопровайдерыНаСервере", Новый Массив);
Результат.Вставить("Ошибка", "");
Возврат Результат;
@@ -10448,6 +10483,7 @@
КриптопровайдерыРезультат = Ждать УстановленныеКриптопровайдерыИзКэша(Контекст.УстанавливатьКомпоненту);
Если КриптопровайдерыРезультат.ПроверкаВыполнена Тогда
Результат.Криптопровайдеры = КриптопровайдерыРезультат.Криптопровайдеры;
Результат.Токены = КриптопровайдерыРезультат.Токены;
Результат.ПроверкаВыполнена = Истина;
Иначе
Результат.Ошибка = КриптопровайдерыРезультат.Ошибка;
@@ -10462,6 +10498,7 @@
Результат = Новый Структура;
Результат.Вставить("ПроверкаВыполнена", Ложь);
Результат.Вставить("Криптопровайдеры", Новый Массив);
Результат.Вставить("Токены", Новый Массив);
Результат.Вставить("Ошибка", "");
Если ОбъектКомпоненты = Неопределено Тогда
@@ -10497,12 +10534,31 @@
КонецПопытки;
Результат.Криптопровайдеры = Криптопровайдеры;
РезультатТокены = Ждать ЭлектроннаяПодписьКлиентЛокализация.УстановленныеТокены(ОбъектКомпоненты, ПредложитьУстановить);
Результат.Токены = РезультатТокены.Токены;
ЗаписатьВКэшУстановленныеКриптопровайдеры(Результат);
Возврат Результат;
КонецФункции
Функция НовыеСвойстваТокена() Экспорт
СвойстваТокена = Новый Структура;
СвойстваТокена.Вставить("Представление", НСтр("ru = 'Токен'"));
СвойстваТокена.Вставить("Модель", "");
СвойстваТокена.Вставить("СерийныйНомер");
СвойстваТокена.Вставить("Слот");
СвойстваТокена.Вставить("Токен");
СвойстваТокена.Вставить("Механизмы");
СвойстваТокена.Вставить("Ошибка");
Возврат СвойстваТокена;
КонецФункции
// Возвращает результат проверки криптопровайдеров из кэша с обновлением в 5 минут.
Асинх Функция УстановленныеКриптопровайдерыИзКэша(ПредложитьУстановить = Ложь)
@@ -10527,6 +10583,7 @@
Результат = Новый Структура;
Результат.Вставить("ПроверкаВыполнена", РезультатИзКэша.ПроверкаВыполнена);
Результат.Вставить("Криптопровайдеры", Новый Массив(РезультатИзКэша.Криптопровайдеры));
Результат.Вставить("Токены", Новый Массив(РезультатИзКэша.Токены));
Результат.Вставить("Ошибка", РезультатИзКэша.Ошибка);
Возврат Результат;
@@ -10550,6 +10607,7 @@
РезультатДляКэша = Новый Структура;
РезультатДляКэша.Вставить("ПроверкаВыполнена", Результат.ПроверкаВыполнена);
РезультатДляКэша.Вставить("Криптопровайдеры", Новый ФиксированныйМассив(Результат.Криптопровайдеры));
РезультатДляКэша.Вставить("Токены", Новый ФиксированныйМассив(Результат.Токены));
РезультатДляКэша.Вставить("Ошибка", Результат.Ошибка);
РезультатДляКэша.Вставить("ВремяПроверки", ТекущаяДата()); // АПК:143 Должна использоваться ТекущаяДата().
@@ -10571,6 +10629,7 @@
РезультатПроверки = Новый Структура("КомпонентаУстановлена, Ошибка, ПроверкаВыполнена");
ЗаполнитьЗначенияСвойств(РезультатПроверки, Результат);
РезультатПроверки.Вставить("Программы", Новый Массив);
РезультатПроверки.Вставить("Токены", Результат.Токены);
РезультатПроверки.Вставить("ПрограммыНаСервере", Новый Массив);
РезультатПроверки.Вставить("ВозможенКонфликт", Ложь);
РезультатПроверки.Вставить("ВозможенКонфликтНаСервере", Ложь);
@@ -10979,6 +11038,7 @@
ПараметрыОтправкиВТехподдержку.Вставить("Тема");
ПараметрыОтправкиВТехподдержку.Вставить("Сообщение");
ПараметрыОтправкиВТехподдержку.Вставить("ОбработчикЗавершения");
ПараметрыОтправкиВТехподдержку.Вставить("Получатель", ПолучательОбращенияВТехническуюПоддержку());
Возврат ПараметрыОтправкиВТехподдержку;
@@ -10992,7 +11052,7 @@
ДанныеСообщения = МодульСообщенияВСлужбуТехническойПоддержкиКлиентСервер.ДанныеСообщения();
ДанныеСообщения.Тема = ПараметрыОтправкиВТехподдержку.Тема;
ДанныеСообщения.Получатель = ПолучательОбращенияВТехническуюПоддержку();
ДанныеСообщения.Получатель = ПараметрыОтправкиВТехподдержку.Получатель;
ДанныеСообщения.Сообщение = ПараметрыОтправкиВТехподдержку.Сообщение;
Вложения = Новый Массив;
@@ -11061,7 +11121,9 @@
КонецФункции
Функция ПолучательОбращенияВТехническуюПоддержку()
Возврат "v8";
Получатель = "v8";
ЭлектроннаяПодписьКлиентЛокализация.ПриОпределенииПолучателяОбращенияВТехническуюПоддержку(Получатель);
Возврат Получатель;
КонецФункции
Функция АдресПолучателяОбращенияВТехническуюПоддержку()
@@ -119,6 +119,15 @@
КонецФункции
Процедура ЗаполнитьРезультатПроверкиСертификатНеквалифицированный(ПараметрыПроверки, Результат) Экспорт
Если ПараметрыПроверки.ПроверятьСертификат = ТолькоКвалифицированные() Тогда
ТекстОшибки = НСтр("ru='Сертификат неквалифицированный, подпись таким сертификатом не является юридически значимой.'");
Результат.Действует = Ложь;
Результат.Предупреждение.ТекстОшибки = ТекстОшибки;
Результат.Предупреждение.РазрешитьПодписание = Ложь;
КонецЕсли;
КонецПроцедуры
// Возвращаемое значение:
// Строка
// Массив из см. НовоеРасширенноеОписаниеПрограммы
+10 -10
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="fa3ebf18-1920-4337-9c5f-3925ce8ae04d">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="fd9392a2-7cc3-4e57-840b-4fc0744ff6ed">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="f08b1376-850c-42e7-b25a-635d9d945139"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="362c61f8-ae88-409e-b8f3-4f592c1b41c6"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="dd7a329e-5bf9-4d90-b634-cddb40c8825e"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="c402eb0b-0ce2-42d1-beb8-9458ed1dfcba"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="8b659c49-4521-4537-957d-f571106a0179"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="9c162ab1-0362-43db-acda-c199b60b8113"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="05468275-09e4-406c-9bec-1044fe73ae53"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="d41d9841-c281-4abc-86bc-036843633db6"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="78389e55-c6b2-458c-b9f9-95ed444890f0"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="fcfa9daa-bc3e-4a10-ae22-cb23c0ee4c70"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="5bcf427d-2961-48c8-a83f-34f30b8df958"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="fd4b9033-9922-4a58-8478-e3af8c970516"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="f754dc40-5ab2-4d8b-a45e-8488a010b85c"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="471c9719-9961-4748-a0ae-0c92a9239c5d"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.10.277</version>
<version>3.1.10.295</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -1419,6 +1419,7 @@
<xDTOPackages>XDTOPackage.EnterpriseData_1_12_1</xDTOPackages>
<xDTOPackages>XDTOPackage.EnterpriseData_1_15_3</xDTOPackages>
<xDTOPackages>XDTOPackage.EnterpriseData_1_16_2</xDTOPackages>
<xDTOPackages>XDTOPackage.EnterpriseData_1_17_3</xDTOPackages>
<xDTOPackages>XDTOPackage.EnterpriseData_1_2_3</xDTOPackages>
<xDTOPackages>XDTOPackage.EnterpriseData_1_3_20</xDTOPackages>
<xDTOPackages>XDTOPackage.EnterpriseData_1_4_20</xDTOPackages>
@@ -1812,7 +1813,6 @@
<constants>Constant.АккредитованныеУдостоверяющиеЦентры</constants>
<constants>Constant.ВерсияДатЗапретаИзменения</constants>
<constants>Constant.ВерсияКлассификатораБанков</constants>
<constants>Constant.ВыполняетсяЗагрузкаДанныхРИБ</constants>
<constants>Constant.ВыполнятьЗамерыПроизводительности</constants>
<constants>Constant.ГлавныйУзел</constants>
<constants>Constant.ДанныеДляИзмененияМультиязычныхРеквизитов</constants>
@@ -1 +1 @@
{6,1,1,83c2c242-8a08-4277-96c8-0ec2ce22dbae,1,f70d4ec2-483e-4147-a837-34a626b87558,"3.1.10.277","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",7659,1,0,fa3ebf18-1920-4337-9c5f-3925ce8ae04d,fa3ebf18-1920-4337-9c5f-3925ce8ae04d,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,fa04bf1e-69c0-4998-a939-039fcaba83c8,fa04bf1e-69c0-4998-a939-039fcaba83c8,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,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,3eca2d7c-5946-4d13-ba84-e3ab5ef38b5b,3eca2d7c-5946-4d13-ba84-e3ab5ef38b5b,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,a3001de6-272f-444e-a8db-ec8cc3a670a2,a3001de6-272f-444e-a8db-ec8cc3a670a2,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7bLine truncated
{6,1,1,c53a7f4a-5cad-4099-bfb6-52924e7660e6,1,ffb82d54-8575-41e4-8530-9c760af3cb14,"3.1.10.295","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",7663,1,0,fd9392a2-7cc3-4e57-840b-4fc0744ff6ed,fd9392a2-7cc3-4e57-840b-4fc0744ff6ed,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,fa04bf1e-69c0-4998-a939-039fcaba83c8,fa04bf1e-69c0-4998-a939-039fcaba83c8,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,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,3eca2d7c-5946-4d13-ba84-e3ab5ef38b5b,3eca2d7c-5946-4d13-ba84-e3ab5ef38b5b,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,a3001de6-272f-444e-a8db-ec8cc3a670a2,a3001de6-272f-444e-a8db-ec8cc3a670a2,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7bLine truncated
@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Constant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="0a71d5d6-0771-4946-a77d-9aa1638b8327">
<producedTypes>
<managerType typeId="0e47b6e6-789a-4103-9dd6-2946ed4c9b4f" valueTypeId="19cdce25-a69c-451b-ac92-2e99d2ecea99"/>
<valueManagerType typeId="a6825004-2be6-48ab-852d-32025ac70b20" valueTypeId="cdf0f5d5-1b26-4ad0-a897-c1b627551030"/>
<valueKeyType typeId="71b9a7f7-7056-4f28-8e0d-e74873ca099d" valueTypeId="093f45b7-9979-4509-880b-ec6d62c6646e"/>
</producedTypes>
<name>ВыполняетсяЗагрузкаДанныхРИБ</name>
<synonym>
<key>ru</key>
<value>Выполняется загрузка данных РИБ</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<useStandardCommands>true</useStandardCommands>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataLockControlMode>Managed</dataLockControlMode>
</mdclass:Constant>
@@ -1773,7 +1773,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДекорацияДлительнаяОперацияРасширеннаяПодсказка</name>
<name>ДекорацияДлительнаяОперацияExtendedTooltip</name>
<id>255</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1808,7 +1808,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДекорацияПоясняющийТекстДлительнойОперацииРасширеннаяПодсказка</name>
<name>ДекорацияПоясняющийТекстДлительнойОперацииExtendedTooltip</name>
<id>258</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -513,7 +513,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Декорация2РасширеннаяПодсказка</name>
<name>Декорация2ExtendedTooltip</name>
<id>90</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -552,7 +552,7 @@
<segments>WSПароль</segments>
</dataPath>
<extendedTooltip>
<name>WSПарольРасширеннаяПодсказка</name>
<name>WSПарольExtendedTooltip</name>
<id>92</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -599,7 +599,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗабылиПарольРасширеннаяПодсказка</name>
<name>ЗабылиПарольExtendedTooltip</name>
<id>93</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -928,7 +928,7 @@
</userVisible>
<defaultItem>true</defaultItem>
<extendedTooltip>
<name>ВыполнитьОбменРасширеннаяПодсказка</name>
<name>ВыполнитьОбменExtendedTooltip</name>
<id>95</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -954,7 +954,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаЗакрыть2РасширеннаяПодсказка</name>
<name>ФормаЗакрыть2ExtendedTooltip</name>
<id>96</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -984,7 +984,7 @@
<value>Командная панель закрыть</value>
</toolTip>
<extendedTooltip>
<name>КоманднаяПанельВыполненияОбменаРасширеннаяПодсказка</name>
<name>КоманднаяПанельВыполненияОбменаExtendedTooltip</name>
<id>94</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1012,7 +1012,7 @@
<value>Загрузка данных</value>
</toolTip>
<extendedTooltip>
<name>ЗапросПароляПользователяРасширеннаяПодсказка</name>
<name>ЗапросПароляПользователяExtendedTooltip</name>
<id>89</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1047,7 +1047,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДлительнаяОперацияРасширеннаяПодсказка</name>
<name>ДлительнаяОперацияExtendedTooltip</name>
<id>98</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1083,7 +1083,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СтатусЗагрузкиДанныхРасширеннаяПодсказка</name>
<name>СтатусЗагрузкиДанныхExtendedTooltip</name>
<id>99</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1406,7 +1406,7 @@
<value>Ожидание синхронизации данных</value>
</title>
<extendedTooltip>
<name>ОжиданиеСинхронизацииДанныхРасширеннаяПодсказка</name>
<name>ОжиданиеСинхронизацииДанныхExtendedTooltip</name>
<id>97</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1742,7 +1742,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КартинкаОбменЗавершенУспешноРасширеннаяПодсказка</name>
<name>КартинкаОбменЗавершенУспешноExtendedTooltip</name>
<id>103</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1760,7 +1760,7 @@
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>StdPicture.DialogInformation</picture>
<picture>CommonPicture.Информация32</picture>
</picture>
</extInfo>
</items>
@@ -1777,7 +1777,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СтатусОбменЗавершенУспешноРасширеннаяПодсказка</name>
<name>СтатусОбменЗавершенУспешноExtendedTooltip</name>
<id>104</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1809,7 +1809,7 @@
<value>Обмен завершен успешно</value>
</title>
<extendedTooltip>
<name>ОбменЗавершенУспешноРасширеннаяПодсказка</name>
<name>ОбменЗавершенУспешноExtendedTooltip</name>
<id>102</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1841,7 +1841,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КартинкаОбменЗавершенСОшибкойРасширеннаяПодсказка</name>
<name>КартинкаОбменЗавершенСОшибкойExtendedTooltip</name>
<id>106</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1877,7 +1877,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СтатусОбменЗавершенСОшибкойРасширеннаяПодсказка</name>
<name>СтатусОбменЗавершенСОшибкойExtendedTooltip</name>
<id>107</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1908,7 +1908,7 @@
<value>Обмен завершен с ошибкой</value>
</title>
<extendedTooltip>
<name>ОбменЗавершенСОшибкойРасширеннаяПодсказка</name>
<name>ОбменЗавершенСОшибкойExtendedTooltip</name>
<id>105</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1940,7 +1940,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КартинкаОбменЗавершенСОшибкой1РасширеннаяПодсказка</name>
<name>КартинкаОбменЗавершенСОшибкой1ExtendedTooltip</name>
<id>109</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1978,7 +1978,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СтатусОбменЗавершенСОшибкойДляАдминистратораРасширеннаяПодсказка</name>
<name>СтатусОбменЗавершенСОшибкойДляАдминистратораExtendedTooltip</name>
<id>111</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2012,7 +2012,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПерейтиВЖурналРегистрацииРасширеннаяПодсказка</name>
<name>ПерейтиВЖурналРегистрацииExtendedTooltip</name>
<id>112</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2040,7 +2040,7 @@
<value>Статусное сообщение</value>
</title>
<extendedTooltip>
<name>СтатусноеСообщениеРасширеннаяПодсказка</name>
<name>СтатусноеСообщениеExtendedTooltip</name>
<id>110</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2068,7 +2068,7 @@
<value>Обмен завершен с ошибкой</value>
</title>
<extendedTooltip>
<name>ОбменЗавершенСОшибкойДляАдминистратораРасширеннаяПодсказка</name>
<name>ОбменЗавершенСОшибкойДляАдминистратораExtendedTooltip</name>
<id>108</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2100,7 +2100,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КартинкаОбменЗавершенСОшибкой2РасширеннаяПодсказка</name>
<name>КартинкаОбменЗавершенСОшибкой2ExtendedTooltip</name>
<id>114</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2135,7 +2135,7 @@
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>СообщениеОбОшибкеПользователюРасширеннаяПодсказка</name>
<name>СообщениеОбОшибкеПользователюExtendedTooltip</name>
<id>115</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2179,7 +2179,7 @@
<value>Обмен завершен с ошибкой</value>
</toolTip>
<extendedTooltip>
<name>ОбменЗавершенСОшибкойПодключенияРасширеннаяПодсказка</name>
<name>ОбменЗавершенСОшибкойПодключенияExtendedTooltip</name>
<id>113</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2211,7 +2211,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КартинкаТребуетсяОбновлениеРасширеннаяПодсказка</name>
<name>КартинкаТребуетсяОбновлениеExtendedTooltip</name>
<id>117</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2253,7 +2253,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ТекстТребуетсяОбновлениеОграниченныеПраваРасширеннаяПодсказка</name>
<name>ТекстТребуетсяОбновлениеОграниченныеПраваExtendedTooltip</name>
<id>120</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2285,7 +2285,7 @@
<value>Требуется обновление ограниченные права</value>
</title>
<extendedTooltip>
<name>ТребуетсяОбновлениеОграниченныеПраваРасширеннаяПодсказка</name>
<name>ТребуетсяОбновлениеОграниченныеПраваExtendedTooltip</name>
<id>119</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2318,7 +2318,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ТекстТребуетсяОбновлениеПолныеПраваРасширеннаяПодсказка</name>
<name>ТекстТребуетсяОбновлениеПолныеПраваExtendedTooltip</name>
<id>122</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2350,7 +2350,7 @@
<value>Требуется обновление полные права</value>
</title>
<extendedTooltip>
<name>ТребуетсяОбновлениеПолныеПраваРасширеннаяПодсказка</name>
<name>ТребуетсяОбновлениеПолныеПраваExtendedTooltip</name>
<id>121</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2376,7 +2376,7 @@
<value>Панель требуется обновление</value>
</title>
<extendedTooltip>
<name>ПанельТребуетсяОбновлениеРасширеннаяПодсказка</name>
<name>ПанельТребуетсяОбновлениеExtendedTooltip</name>
<id>118</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2720,7 +2720,7 @@
<value>Статус завершения обмена</value>
</title>
<extendedTooltip>
<name>СтатусЗавершенияОбменаРасширеннаяПодсказка</name>
<name>СтатусЗавершенияОбменаExtendedTooltip</name>
<id>101</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2752,7 +2752,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаЗакрытьРасширеннаяПодсказка</name>
<name>ФормаЗакрытьExtendedTooltip</name>
<id>126</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2778,7 +2778,7 @@
<value>Командная панель закрыть</value>
</title>
<extendedTooltip>
<name>КоманднаяПанельЗакрытьРасширеннаяПодсказка</name>
<name>КоманднаяПанельЗакрытьExtendedTooltip</name>
<id>125</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2802,7 +2802,7 @@
<value>Действия закрыть</value>
</title>
<extendedTooltip>
<name>ДействияЗакрытьРасширеннаяПодсказка</name>
<name>ДействияЗакрытьExtendedTooltip</name>
<id>124</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2837,7 +2837,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>УстановитьОбновлениеРасширеннаяПодсказка</name>
<name>УстановитьОбновлениеExtendedTooltip</name>
<id>129</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2863,7 +2863,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаЗакрыть1РасширеннаяПодсказка</name>
<name>ФормаЗакрыть1ExtendedTooltip</name>
<id>130</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2889,7 +2889,7 @@
<value>Командная панель установить закрыть</value>
</title>
<extendedTooltip>
<name>КоманднаяПанельУстановитьЗакрытьРасширеннаяПодсказка</name>
<name>КоманднаяПанельУстановитьЗакрытьExtendedTooltip</name>
<id>128</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2913,7 +2913,7 @@
<value>Действия установить закрыть</value>
</title>
<extendedTooltip>
<name>ДействияУстановитьЗакрытьРасширеннаяПодсказка</name>
<name>ДействияУстановитьЗакрытьExtendedTooltip</name>
<id>127</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -3165,7 +3165,7 @@
<value>Панель действий</value>
</title>
<extendedTooltip>
<name>ПанельДействийРасширеннаяПодсказка</name>
<name>ПанельДействийExtendedTooltip</name>
<id>123</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -3189,7 +3189,7 @@
<value>Завершение обмена</value>
</title>
<extendedTooltip>
<name>ЗавершениеОбменаРасширеннаяПодсказка</name>
<name>ЗавершениеОбменаExtendedTooltip</name>
<id>100</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -3215,7 +3215,7 @@
<value>Выполнение обмена данными</value>
</title>
<extendedTooltip>
<name>ВыполнениеОбменаДаннымиРасширеннаяПодсказка</name>
<name>ВыполнениеОбменаДаннымиExtendedTooltip</name>
<id>88</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2048,51 +2048,6 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>СписокТокеновОписание</name>
<id>978</id>
<title>
<key>ru</key>
<value>Описание</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>СписокТокенов.Описание</segments>
</dataPath>
<extendedTooltip>
<name>СписокТокеновОписаниеРасширеннаяПодсказка</name>
<id>980</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокТокеновОписаниеКонтекстноеМеню</name>
<id>979</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<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>981</id>
@@ -5185,24 +5140,6 @@
<common>true</common>
</edit>
</columns>
<columns>
<name>Описание</name>
<title>
<key>ru</key>
<value>Описание</value>
</title>
<id>2</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>Представление</name>
<title>
@@ -5633,6 +5570,12 @@
<types>AnyRef</types>
</valueType>
</parameters>
<parameters>
<name>НаТокене</name>
<valueType>
<types>Boolean</types>
</valueType>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -19,6 +19,7 @@
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не ЗначениеЗаполнено(Параметры.СертификатСсылка) Тогда
КлючНаТокене = Параметры.НаТокене;
ВыполнитьПроверкуПравДоступа("Добавление", Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования);
КонецЕсли;
@@ -113,9 +114,10 @@
Элементы.ГруппаПодсказкаКриптопровайдеры.Видимость = Ложь;
ПодсказкаДляПрограммы = СтроковыеФункции.ФорматированнаяСтрока(
НСтр("ru = 'Для создания запроса на сертификат используется приложение электронной подписи и шифрования <b>%1</b> или <b>%2</b> или активный ключевой носитель (<b>Рутокен</b>).
НСтр("ru = 'Для создания запроса на сертификат используется приложение электронной подписи и шифрования <b>%1</b> или <b>%2</b> или активный ключевой носитель (<b>Рутокен</b> или <b>JaCarta</b>).
|По вопросам работы приложения обратитесь к его документации или воспользуйтесь <a href=""СсылкаНаСтатьюИТС"">дополнительной инструкцией на сайте 1С</a>.
|Для работы с <b>Рутокеном</b> скачайте и установите <a href=""СсылкаНаДрайверРутокена"">библиотеку с сайта производителя</a> и вставьте токен в компьютер.
|Для работы с <b>JaCarta</b> скачайте и установите <a href=""СсылкаНаДрайверJaCarta"">библиотеку с сайта производителя</a> и вставьте токен в компьютер.
|
|<b>Ключ электронной подписи</b> - это секретная информация, которая сохраняется на компьютер, флешку, устройство или другой носитель информации и используется в дальнейшем для создания электронных подписей.
|
@@ -647,9 +649,12 @@
Если Найдено.Количество() > 0 Тогда
Если ЗначениеЗаполнено(Найдено[0].Ошибка) Тогда
ТекстОшибки = Найдено[0].Ошибка;
ПриПотереГотовности(ЭтотОбъект);
ЭлектроннаяПодписьСлужебныйКлиент.ПоказатьОшибкуОбращенияКПрограмме(НСтр("ru = 'Выбор токена'"), "",
Новый Структура("ОписаниеОшибки", Найдено[0].Ошибка), Новый Структура);
Новый Структура("ОписаниеОшибки", ТекстОшибки), Новый Структура);
Возврат;
КонецЕсли;
@@ -712,6 +717,8 @@
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылка = "СсылкаНаДрайверРутокена" Тогда
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("https://www.rutoken.ru/support/download/pkcs/");
ИначеЕсли НавигационнаяСсылка = "СсылкаНаДрайверJaCarta" Тогда
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("https://aladdin-rd.ru/support/downloads/jacarta/");
Иначе
ЭлектроннаяПодписьСлужебныйКлиент.ОткрытьИнструкциюПоРаботеСПрограммами();
КонецЕсли;
@@ -3453,7 +3460,8 @@
Найдено = СписокТокенов.НайтиСтроки(Новый Структура("ПрограммаИдентификатор", ПрограммаИдентификатор));
Если Найдено.Количество() = 0 Тогда
Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не найден токен %1.'"), ПредставлениеПрограммы);
НСтр("ru = '%1: %2.
|%3'"), ПредставлениеПрограммы, ОшибкаНеНайденТокен(), РекомендацииДляТокена());
ОткрытьФормуОшибки(НовыйОписаниеОшибки(НСтр("ru = 'Создание ключа электронной подписи'"), Ошибка));
ОбработатьЗаявлениеПослеСозданияКлючаИЗапросаНаСертификат(Ложь, Контекст);
Возврат;
@@ -3461,6 +3469,14 @@
СвойстваТокена = Найдено[0];
Если ЗначениеЗаполнено(СвойстваТокена.Ошибка) Тогда
ОткрытьФормуОшибки(НовыйОписаниеОшибки(НСтр("ru = 'Создание ключа электронной подписи'"), СвойстваТокена.Ошибка));
ОбработатьЗаявлениеПослеСозданияКлючаИЗапросаНаСертификат(Ложь, Контекст);
Возврат;
КонецЕсли;
ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр(
"ru = 'Для создания ключа электронной подписи требуется установка внешней компоненты %1.'"),
@@ -3506,6 +3522,11 @@
КонецПроцедуры
&НаКлиенте
Функция ОшибкаНеНайденТокен()
Возврат ЭлектроннаяПодписьСлужебныйКлиент.ОшибкаНеНайденТокен();
КонецФункции
&НаКлиенте
Асинх Процедура ПродолжитьПослеВводаПинКода(ПинКод, Контекст) Экспорт
@@ -3551,7 +3572,7 @@
РасширенныеАтрибуты.Вставить("keyUsage", "digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment");
РасширенныеАтрибуты.Вставить("extendedKeyUsage", "1.3.6.1.5.5.7.3.2,1.3.6.1.5.5.7.3.4");
РасширенныеАтрибуты.Вставить("certificatePolicies", "1.2.643.100.113.1");
РасширенныеАтрибуты.Вставить("1.2.643.100.111", СтрШаблон("ASN1:UTF8String: СКЗИ %1", ПрограммаИмя));
РасширенныеАтрибуты.Вставить("1.2.643.100.111", СтрШаблон("ASN1:UTF8String:%1", ИмяСредства(СвойстваТокена.Токен)));
РасширенныеАтрибуты.Вставить("1.3.6.1.4.1.311.21.7", "DER:30:10:06:08:2A:85:03:02:02:2E:00:08:02:01:01:02:01:00"); //CertTemplate
РасширенныеАтрибуты.Вставить("1.2.643.100.114", СтрШаблон("DER:02:01:0%1", Контекст.ПоляСертификата.IdentKind));
@@ -3635,7 +3656,12 @@
ДатаЗаявления = Формат(ОбщегоНазначенияКлиент.ДатаСеанса(), "ДФ=dd.MM.yyyy"); // АПК:335 Не локализуется (формат веб-сервиса).
Попытка
Ждать УдалитьФайлыАсинх(Контекст.ИмяФайлаЗапроса);
Исключение // АПК:280
Исключение
ИмяСобытия = НСтр("ru = 'Электронная подпись.Заявление на выпуск сертификата'",
ОбщегоНазначенияКлиент.КодОсновногоЯзыка());
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, "Ошибка",
НСтр("ru = 'Не удалось удалить файл запроса на сертификат.'") + Символы.ПС
+ ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),,Истина);
КонецПопытки;
ОбработатьЗаявлениеПослеСозданияКлючаИЗапросаНаСертификат(Истина, Контекст);
@@ -4607,154 +4633,49 @@
&НаКлиенте
Асинх Функция ЗаполнитьСписокУстройств(ПредлагатьУстановить = Истина)
Если Не ОбщегоНазначенияКлиент.ЭтоWindowsКлиент() Тогда
Возврат Ложь;
КонецЕсли;
ОтобразитьПоискПриложений(Истина, Истина);
СписокТокенов.Очистить();
ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр(
"ru = 'Для получения данных о токенах требуется установка внешней компоненты %1.'"),
"ExtraCryptoAPI");
УстановленныеТокеныРезультат = Ждать ЭлектроннаяПодписьКлиентЛокализация.УстановленныеТокены(Неопределено, ПредлагатьУстановить);
ТекстОшибкиЗаполненияУстройств = УстановленныеТокеныРезультат.Ошибка;
Попытка
ОбъектКомпоненты = Ждать ЭлектроннаяПодписьСлужебныйКлиент.ОбъектВнешнейКомпонентыExtraCryptoAPI(ПредлагатьУстановить, ТекстПояснения);
Исключение
ТекстОшибкиЗаполненияУстройств = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
ОтобразитьПоискПриложений(Ложь, Истина);
Возврат Ложь;
КонецПопытки;
Для Каждого Токен Из УстановленныеТокеныРезультат.Токены Цикл
Попытка
ТипыУстройств = Ждать ОбъектКомпоненты.PKCS11ПолучитьПоддерживаемыеБэкендыАсинх();
Ждать ПолучитьОшибкуКомпоненты(ОбъектКомпоненты);
ТипыУстройств = СтрРазделить(ТипыУстройств.Значение, "; ");
Исключение
ТекстОшибкиЗаполненияУстройств = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
ОтобразитьПоискПриложений(Ложь, Истина);
Возврат Ложь;
КонецПопытки;
НоваяСтрока = СписокТокенов.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Токен);
НоваяСтрока.ПрограммаИмя = ИмяПрограммы(НоваяСтрока.Токен);
НоваяСтрока.ПрограммаТип = ТипПрограммы(НоваяСтрока.Токен);
НоваяСтрока.ПрограммаИдентификатор = Токен.СерийныйНомер;
Если Не ПустаяСтрока(НоваяСтрока.Ошибка) И СтрНайти(НоваяСтрока.Ошибка, ОшибкаНеНайденТокен()) <> 0 Тогда
НоваяСтрока.Ошибка = СтрШаблон("%1%2%3", НоваяСтрока.Ошибка, Символы.ПС, РекомендацииДляТокена());
КонецЕсли;
Для Каждого ТипУстройства Из ТипыУстройств Цикл
СтрокаТокена = СписокТокенов.Добавить();
СтрокаТокена.Токен = ТипУстройства;
СтрокаТокена.Представление = МодельТокена(ТипУстройства);
СтрокаТокена.ПрограммаИдентификатор = ТипУстройства;
СтрокаТокена.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: Не найдены подключенные токены.'"), СтрокаТокена.Представление);
Попытка
НастройкиТокена = Ждать ОбъектКомпоненты.PKCS11ПолучитьНастройкиБэкендаПоУмолчаниюАсинх(ТипУстройства);
Ждать ПолучитьОшибкуКомпоненты(ОбъектКомпоненты);
НастройкиТокена = НастройкиТокена.Значение;
Исключение
СтрокаТокена.Ошибка = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
Продолжить;
КонецПопытки;
Попытка
Ждать ОбъектКомпоненты.PKCS11ИнициализацияАсинх(НастройкиТокена);
Исключение
СтрокаТокена.Ошибка = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
Продолжить;
КонецПопытки;
Ждать ОбъектКомпоненты.ПолучитьСписокОшибокАсинх();
Попытка
СписокСлотов = Ждать ОбъектКомпоненты.PKCS11ПолучитьСписокСлотовАсинх(Истина);
Ждать ПолучитьОшибкуКомпоненты(ОбъектКомпоненты);
Исключение
СтрокаТокена.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: Не найдены подключенные токены. %2'"), СтрокаТокена.Представление,
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Продолжить;
КонецПопытки;
Если СписокСлотов.Значение = Неопределено Или СписокСлотов.Значение = "null" Тогда
СтрокаТокена.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: Не найдены подключенные токены.'"), СтрокаТокена.Представление);
Если Токен.Слот = Неопределено Тогда
Продолжить;
КонецЕсли;
СписокСлотов = Прочитать(СписокСлотов.Значение);
Попытка
ТипМеханизмаГенерацииКлючевойПары = ТипМеханизмаГенерацииКлючевойПары(Токен.Механизмы, Токен.Представление);
Исключение
НоваяСтрока.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: Не удалось получить информацию о механизмах токена в слоте %2. %3'"),
НоваяСтрока.Представление, Токен.Слот, ОбработкаОшибок.КраткоеПредставлениеОшибки(
ИнформацияОбОшибке()));
Продолжить;
КонецПопытки;
Для каждого Слот Из СписокСлотов Цикл
Если Слот.Ключ <> "available slot number" Тогда
Продолжить;
КонецЕсли;
ЗначенияСлотов = Слот.Значение;
Для каждого ЗначениеСлота Из ЗначенияСлотов Цикл
ЕстьТокены = Истина;
НоваяСтрока = СписокТокенов.Добавить();
НоваяСтрока.Слот = ЗначениеСлота;
НоваяСтрока.Токен = ТипУстройства;
НоваяСтрока.Представление = СтрШаблон("%1 %2", СтрокаТокена.Представление, НоваяСтрока.Слот);
Попытка
ИнформацияОСлоте = Ждать ОбъектКомпоненты.PKCS11ПолучитьИнформациюОСлотеАсинх(ЗначениеСлота);
Ждать ПолучитьОшибкуКомпоненты(ОбъектКомпоненты);
Исключение
НоваяСтрока.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: Ошибка получения информации о слоте %2. %3'"), СтрокаТокена.Представление,
ЗначениеСлота, ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Продолжить;
КонецПопытки;
НоваяСтрока.Описание = Прочитать(ИнформацияОСлоте.Значение).Получить("description");
Попытка
ИнформацияОТокене = Ждать ОбъектКомпоненты.PKCS11ПолучитьИнформациюОТокенеАсинх(ЗначениеСлота);
Ждать ПолучитьОшибкуКомпоненты(ОбъектКомпоненты);
Исключение
НоваяСтрока.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: Ошибка получения информации о токене в слоте %2. %3'"), СтрокаТокена.Представление,
ЗначениеСлота, ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Продолжить;
КонецПопытки;
Информация = Прочитать(ИнформацияОТокене.Значение);
НоваяСтрока.ПрограммаИдентификатор = Информация.Получить("serial_number");
Модель = Информация.Получить("model");
НоваяСтрока.Модель = МодельТокена(Модель);
НоваяСтрока.ПрограммаИмя = ИмяПрограммы(Модель);
НоваяСтрока.ПрограммаТип = ТипПрограммы(Модель);
НоваяСтрока.Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 (серийный номер %2)'"), НоваяСтрока.Модель, НоваяСтрока.ПрограммаИдентификатор);
Попытка
СписокМеханизмов = Ждать ОбъектКомпоненты.PKCS11ПолучитьСписокПоддерживаемыхМеханизмовАсинх(ЗначениеСлота);
Ждать ПолучитьОшибкуКомпоненты(ОбъектКомпоненты);
ТипМеханизмаГенерацииКлючевойПары = ТипМеханизмаГенерацииКлючевойПары(СписокМеханизмов.Значение, Модель);
Исключение
НоваяСтрока.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: Ошибка получения информации о механизмах токена в слоте %2. %3'"), СтрокаТокена.Представление,
ЗначениеСлота, ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Продолжить;
КонецПопытки;
Если ТипЗнч(ТипМеханизмаГенерацииКлючевойПары) = Тип("Строка") Тогда
НоваяСтрока.Ошибка = ТипМеханизмаГенерацииКлючевойПары;
Иначе
НоваяСтрока.ТипМеханизмаГенерацииКлючевойПары = ТипМеханизмаГенерацииКлючевойПары;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если ЕстьТокены Тогда
СписокТокенов.Удалить(СтрокаТокена);
Если ТипЗнч(ТипМеханизмаГенерацииКлючевойПары) = Тип("Строка") Тогда
НоваяСтрока.Ошибка = ТипМеханизмаГенерацииКлючевойПары;
Иначе
НоваяСтрока.ТипМеханизмаГенерацииКлючевойПары = ТипМеханизмаГенерацииКлючевойПары;
КонецЕсли;
КонецЦикла;
ОтобразитьПоискПриложений(Ложь, Истина);
Возврат Истина;
Возврат УстановленныеТокеныРезультат.ПроверкаВыполнена;
КонецФункции
@@ -4781,16 +4702,26 @@
КонецПроцедуры
&НаКлиенте
Асинх Функция ПолучитьОшибкуКомпоненты(ОбъектКомпоненты)
Ошибка = Ждать ОбъектКомпоненты.ПолучитьСписокОшибокАсинх();
Если ЗначениеЗаполнено(Ошибка) Тогда
ВызватьИсключение Ошибка;
КонецЕсли;
Возврат Истина;
Функция РекомендацииДляТокена()
Возврат ЭлектроннаяПодписьСлужебныйКлиент.РекомендацииДляТокена();
КонецФункции
&НаКлиенте
Функция ТипМеханизмаГенерацииКлючевойПары(Механизмы, Модель)
Асинх Функция ПолучитьОшибкуКомпоненты(ОбъектКомпоненты)
Ошибка = Ждать ОбъектКомпоненты.ПолучитьСписокОшибокАсинх();
Если Не ЗначениеЗаполнено(Ошибка) Тогда
Возврат Истина;
КонецЕсли;
ВызватьИсключение Ошибка;
КонецФункции
&НаКлиенте
Функция ТипМеханизмаГенерацииКлючевойПары(Механизмы, Представление)
СписокМеханизмов = Прочитать(Механизмы);
СписокМеханизмов = СписокМеханизмов.Получить("support_mechanisms");
@@ -4813,25 +4744,8 @@
КонецЦикла;
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не поддерживается механизм создания ключевой пары с алгоритмом ГОСТ 34.10-2012 (256).
|Поддерживаемые механизмы: %1'"), СтрСоединить(СписокПоддерживаемыхМеханизмов, ", "));
КонецФункции
&НаКлиенте
Функция МодельТокена(Модель)
Если СтрНачинаетсяС(НРег(Модель), "rutokenecp") Тогда
Возврат НСтр("ru = 'Рутокен ЭЦП'");
ИначеЕсли СтрНачинаетсяС(НРег(Модель), "rutokenlite") Тогда
Возврат НСтр("ru = 'Рутокен Lite'");
ИначеЕсли СтрНачинаетсяС(НРег(Модель), "rutokens") Тогда
Возврат НСтр("ru = 'Рутокен S'");
ИначеЕсли СтрНачинаетсяС(НРег(Модель), "rutoken") Тогда
Возврат НСтр("ru = 'Рутокен'");
КонецЕсли;
Возврат Модель;
НСтр("ru = 'На токене %1 не поддерживается механизм создания ключевой пары с алгоритмом ГОСТ 34.10-2012 (256).
|Поддерживаемые механизмы: %2'"), Представление, СтрСоединить(СписокПоддерживаемыхМеханизмов, ", "));
КонецФункции
@@ -4848,6 +4762,19 @@
КонецФункции
&НаКлиенте
Функция ИмяСредства(Модель)
Если СтрНачинаетсяС(НРег(Модель), "rutoken") Тогда
Возврат "СКЗИ Рутокен ЭЦП"; // АПК:1297 Название для внешней системы.
ИначеЕсли СтрНачинаетсяС(НРег(Модель), "jacarta") Тогда
Возврат "SKZI Kriptotoken 2 EP";
КонецЕсли;
Возврат Модель;
КонецФункции
&НаКлиенте
Функция ТипПрограммы(Модель)
@@ -5151,6 +5078,11 @@
Объект.Программа = Неопределено;
Если КлючНаТокене И СписокТокенов.Количество() > 0 Тогда
ЗаполнитьТокен(СписокТокенов[0]);
Возврат;
КонецЕсли;
Контекст = Новый Структура;
Контекст.Вставить("Оповещение", Оповещение);
Контекст.Вставить("ПерваяДобавленнаяПрограмма", Неопределено);
@@ -5160,6 +5092,18 @@
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьТокен(СвойстваТокена)
ПрограммаИдентификатор = СвойстваТокена.ПрограммаИдентификатор;
Объект.Программа = Неопределено;
ПрограммаИмя = СвойстваТокена.ПрограммаИмя;
ПрограммаТип = СвойстваТокена.ПрограммаТип;
ПредставлениеПрограммы = СвойстваТокена.Представление;
УстановитьВидимостьПрограммы();
КлючНаТокене = Истина;
ПодключитьОбработчикОжидания("ПослеВыбораПрограммыОбработчикОжидания", 0.1, Истина);
КонецПроцедуры
// Параметры:
// Контекст - Структура:
// * Строка - СтрокаТаблицыЗначений:
@@ -7036,13 +6980,21 @@
Найдено = СписокТокенов.НайтиСтроки(Новый Структура("ПрограммаИдентификатор", ПрограммаИдентификатор));
Если Найдено.Количество() = 0 Тогда
ОшибкаУстановкиСертификата = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не найден токен %1.'"), ПредставлениеПрограммы);
НСтр("ru = '%1: %2. Вставьте токен в компьютер и повторите попытку установить сертификат.
|%3'"), ПредставлениеПрограммы, ОшибкаНеНайденТокен(), РекомендацииДляТокена());
ПослеУстановкиСертификата(Ложь, Контекст);
Возврат;
КонецЕсли;
СвойстваТокена = Найдено[0];
Если ЗначениеЗаполнено(СвойстваТокена.Ошибка) Тогда
ОшибкаУстановкиСертификата = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: %2.'"), ПредставлениеПрограммы, СвойстваТокена.Ошибка);
ПослеУстановкиСертификата(Ложь, Контекст);
Возврат;
КонецЕсли;
ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр(
"ru = 'Для импорта сертификата на токен требуется установка внешней компоненты %1.'"),
@@ -904,12 +904,6 @@
<c>
<c>
<f>22</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>М.П.</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
@@ -1004,12 +1004,6 @@
<i>5</i>
<c>
<f>8</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>М.П.</v8:content>
</v8:item>
</tl>
</c>
</c>
</row>
@@ -36,7 +36,7 @@
<segments>ДоступныеВидыОбъектов.ПредставлениеСписка</segments>
</dataPath>
<extendedTooltip>
<name>ДоступныеВидыОбъектовПредставлениеСпискаРасширеннаяПодсказка</name>
<name>ДоступныеВидыОбъектовПредставлениеСпискаExtendedTooltip</name>
<id>28</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -143,7 +143,7 @@
</extInfo>
</searchControlAddition>
<extendedTooltip>
<name>ДоступныеВидыОбъектовРасширеннаяПодсказка</name>
<name>ДоступныеВидыОбъектовExtendedTooltip</name>
<id>27</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -263,7 +263,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаОтменаРасширеннаяПодсказка</name>
<name>ФормаОтменаExtendedTooltip</name>
<id>25</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -289,7 +289,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСправкаРасширеннаяПодсказка</name>
<name>ФормаСправкаExtendedTooltip</name>
<id>26</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -11,6 +11,12 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.УзелИнформационнойБазы = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Эта форма не предназначена для непосредственного открытия.'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецЕсли;
ЗакрыватьПриЗакрытииВладельца = Истина;
ЗакрыватьПриВыборе = Ложь;
@@ -21,7 +21,7 @@
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>ОбщиеПараметрыСинхронизацииСтрокойРасширеннаяПодсказка</name>
<name>ОбщиеПараметрыСинхронизацииСтрокойExtendedTooltip</name>
<id>5</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -73,7 +73,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаЗакрытьРасширеннаяПодсказка</name>
<name>ФормаЗакрытьExtendedTooltip</name>
<id>4</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -27,7 +27,7 @@
<value>Общий отбор по периоду, применяется для всех документов</value>
</toolTip>
<extendedTooltip>
<name>ПериодДанныхРасширеннаяПодсказка</name>
<name>ПериодДанныхExtendedTooltip</name>
<id>21</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -71,7 +71,7 @@
<value>Период</value>
</title>
<extendedTooltip>
<name>ГруппаПериодРасширеннаяПодсказка</name>
<name>ГруппаПериодExtendedTooltip</name>
<id>20</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -121,7 +121,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КомпоновщикНастроекОтборДобавитьЭлементОтбораРасширеннаяПодсказка</name>
<name>КомпоновщикНастроекОтборДобавитьЭлементОтбораExtendedTooltip</name>
<id>22</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -151,7 +151,7 @@
<value>Компоновщик настроек отбор группа все действия</value>
</title>
<extendedTooltip>
<name>КомпоновщикНастроекОтборГруппаВсеДействияРасширеннаяПодсказка</name>
<name>КомпоновщикНастроекОтборГруппаВсеДействияExtendedTooltip</name>
<id>23</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -238,7 +238,7 @@
</extInfo>
</searchControlAddition>
<extendedTooltip>
<name>КомпоновщикНастроекОтборРасширеннаяПодсказка</name>
<name>КомпоновщикНастроекОтборExtendedTooltip</name>
<id>24</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -297,7 +297,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаКомандаОКРасширеннаяПодсказка</name>
<name>ФормаКомандаОКExtendedTooltip</name>
<id>17</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -323,7 +323,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСправкаРасширеннаяПодсказка</name>
<name>ФормаСправкаExtendedTooltip</name>
<id>18</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -349,7 +349,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаОтменаРасширеннаяПодсказка</name>
<name>ФормаОтменаExtendedTooltip</name>
<id>19</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -49,7 +49,7 @@
<segments>ВариантыНастроек.Value</segments>
</dataPath>
<extendedTooltip>
<name>ВариантыНастроекЗначениеРасширеннаяПодсказка</name>
<name>ВариантыНастроекЗначениеExtendedTooltip</name>
<id>18</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -164,7 +164,7 @@
</extInfo>
</searchControlAddition>
<extendedTooltip>
<name>ВариантыНастроекРасширеннаяПодсказка</name>
<name>ВариантыНастроекExtendedTooltip</name>
<id>17</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -224,7 +224,7 @@
<value>Имя, под которым будут сохранены текущие настройки</value>
</toolTip>
<extendedTooltip>
<name>ПредставлениеНастройкиРасширеннаяПодсказка</name>
<name>ПредставлениеНастройкиExtendedTooltip</name>
<id>19</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -273,7 +273,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСохранитьРасширеннаяПодсказка</name>
<name>ФормаСохранитьExtendedTooltip</name>
<id>14</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -303,7 +303,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаОтменаРасширеннаяПодсказка</name>
<name>ФормаОтменаExtendedTooltip</name>
<id>15</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -329,7 +329,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСправкаРасширеннаяПодсказка</name>
<name>ФормаСправкаExtendedTooltip</name>
<id>16</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -12,6 +12,13 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Проверка, что форма открыта с нужными параметрами
Если Параметры.Объект = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Эта форма не предназначена для непосредственного открытия.'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецЕсли;
ЗаполнитьЗначенияСвойств(Объект, Параметры.Объект , , "КомпоновщикОтбораВсехДокументов, ДополнительнаяРегистрация, ДополнительнаяРегистрацияСценарияУзла");
Для Каждого Строка Из Параметры.Объект.ДополнительнаяРегистрация Цикл
ЗаполнитьЗначенияСвойств(Объект.ДополнительнаяРегистрация.Добавить(), Строка);
Loaded 100 of 189 files, more files were not shown because too many files have changed in this diff. Show more