3_1_2_176

This commit is contained in:
Компания 1С committed 2019-10-11 13:32:00 +03:00
1 parent 07b2436eb9
commit 6a232c400c
69 files changed
+2119 -1191

No files matched your search

@@ -16,7 +16,7 @@
Если ИменаПараметровСеанса = Неопределено
Или ИменаПараметровСеанса.Найти("УстановленныеРасширения") <> Неопределено Тогда
ПараметрыСеанса.УстановленныеРасширения = УстановленныеРасширения();
ПараметрыСеанса.УстановленныеРасширения = УстановленныеРасширения(Истина);
УстановленныеПараметры.Добавить("УстановленныеРасширения");
КонецЕсли;
@@ -24,7 +24,7 @@
Или ИменаПараметровСеанса.Найти("ПодключенныеРасширения") <> Неопределено Тогда
Расширения = РасширенияКонфигурации.Получить(, ИсточникРасширенийКонфигурации.СеансАктивные);
ПараметрыСеанса.ПодключенныеРасширения = КонтрольныеСуммыРасширений(Расширения);
ПараметрыСеанса.ПодключенныеРасширения = КонтрольныеСуммыРасширений(Расширения, "БезопасныйРежим");
УстановленныеПараметры.Добавить("ПодключенныеРасширения");
КонецЕсли;
@@ -59,7 +59,7 @@
// * Основные - Строка - контрольная сумма всех расширений, кроме исправительных расширений.
// * Исправления - Строка - контрольная сумма всех исправительных расширений.
//
Функция УстановленныеРасширения() Экспорт
Функция УстановленныеРасширения(ПриЗапуске = Ложь) Экспорт
Если ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
@@ -70,7 +70,35 @@
Неразделенные = Ложь;
КонецЕсли;
Расширения = РасширенияКонфигурации.Получить();
РасширенияБазыДанных = РасширенияКонфигурации.Получить();
Если ПриЗапуске Тогда
РасширенияПриЗапуске = Новый Соответствие;
АктивныеРасширения = РасширенияКонфигурации.Получить(, ИсточникРасширенийКонфигурации.СеансАктивные);
Для Каждого Расширение Из АктивныеРасширения Цикл
РасширенияПриЗапуске.Вставить(КонтрольнаяСуммаРасширения(Расширение), Расширение);
КонецЦикла;
НеподключенныеРасширения = РасширенияКонфигурации.Получить(, ИсточникРасширенийКонфигурации.СеансОтключенные);
Для Каждого Расширение Из НеподключенныеРасширения Цикл
РасширенияПриЗапуске.Вставить(КонтрольнаяСуммаРасширения(Расширение), Расширение);
КонецЦикла;
ДобавленныеРасширения = Новый Соответствие;
Расширения = Новый Массив;
Для Каждого Расширение Из РасширенияБазыДанных Цикл
КонтрольнаяСумма = КонтрольнаяСуммаРасширения(Расширение);
РасширениеПриЗапуске = РасширенияПриЗапуске.Получить(КонтрольнаяСумма);
Если РасширениеПриЗапуске <> Неопределено Тогда
ДобавленныеРасширения.Вставить(КонтрольнаяСумма, Истина);
Расширения.Добавить(РасширениеПриЗапуске);
КонецЕсли;
КонецЦикла;
Для Каждого ОписаниеРасширения Из РасширенияПриЗапуске Цикл
Если ДобавленныеРасширения.Получить(ОписаниеРасширения.Ключ) = Неопределено Тогда
Расширения.Добавить(ОписаниеРасширения.Значение);
КонецЕсли;
КонецЦикла;
Иначе
Расширения = РасширенияБазыДанных;
КонецЕсли;
Основные = Новый Массив;
Исправления = Новый Массив;
@@ -94,8 +122,8 @@
УстановленныеРасширения = Новый Структура;
УстановленныеРасширения.Вставить("Основные", КонтрольныеСуммыРасширений(Основные));
УстановленныеРасширения.Вставить("Исправления", КонтрольныеСуммыРасширений(Исправления));
УстановленныеРасширения.Вставить("ОсновныеСостояние", КонтрольныеСуммыРасширений(Основные, Истина));
УстановленныеРасширения.Вставить("ИсправленияСостояние", КонтрольныеСуммыРасширений(Исправления, Истина));
УстановленныеРасширения.Вставить("ОсновныеСостояние", КонтрольныеСуммыРасширений(Основные, "Все"));
УстановленныеРасширения.Вставить("ИсправленияСостояние", КонтрольныеСуммыРасширений(Исправления, "Все"));
Возврат Новый ФиксированнаяСтруктура(УстановленныеРасширения);
@@ -491,7 +519,6 @@
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось удалить расширение ""%1"" по причине:
|
|%2'"),
УдаляемоеРасширение,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
@@ -508,7 +535,6 @@
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'После удаления, при обработке случая удаления всех расширений, произошла ошибка:
|
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
КонецПопытки;
КонецЕсли;
@@ -520,7 +546,6 @@
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'После удаления, при подготовке оставшихся расширений к работе, произошла ошибка:
|
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
КонецПопытки;
КонецЕсли;
@@ -592,19 +617,12 @@
// Возвращаемое значение:
// Строка - строки вида "<Имя расширения> (<Версия расширения>) <Контрольная сумма>".
//
Функция КонтрольныеСуммыРасширений(Расширения, УчитыватьСостояниеРасширений = Ложь)
Функция КонтрольныеСуммыРасширений(Расширения, СвойстваПодключения = "")
Список = Новый СписокЗначений;
Для Каждого Расширение Из Расширения Цикл
КонтрольнаяСумма = Расширение.Имя + " (" + Расширение.Версия + ") " + Base64Строка(Расширение.ХешСумма);
Если УчитыватьСостояниеРасширений Тогда
КонтрольнаяСумма = КонтрольнаяСумма
+ " Активно:" + Расширение.Активно
+ " БезопасныйРежим:" + Расширение.БезопасныйРежим
+ " ПередаватьВПодчиненныеУзлыРИБ:" + Расширение.ИспользуетсяВРаспределеннойИнформационнойБазе;
КонецЕсли;
Список.Добавить(КонтрольнаяСумма);
Список.Добавить(КонтрольнаяСуммаРасширения(Расширение, СвойстваПодключения));
КонецЦикла;
Если Список.Количество() <> 0 Тогда
@@ -621,6 +639,25 @@
КонецФункции
// Для функций КонтрольныеСуммыРасширений и УстановленныеРасширения.
Функция КонтрольнаяСуммаРасширения(Расширение, СвойстваПодключения = "")
КонтрольнаяСумма = Расширение.Имя + " (" + Расширение.Версия + ") " + Base64Строка(Расширение.ХешСумма);
Если ЗначениеЗаполнено(СвойстваПодключения) Тогда
КонтрольнаяСумма = КонтрольнаяСумма + " БезопасныйРежим:" + Расширение.БезопасныйРежим;
КонецЕсли;
Если СвойстваПодключения = "Все" Тогда
КонтрольнаяСумма = КонтрольнаяСумма
+ " ПередаватьВПодчиненныеУзлыРИБ:" + Расширение.ИспользуетсяВРаспределеннойИнформационнойБазе
+ " Активно:" + Расширение.Активно;
КонецЕсли;
Возврат КонтрольнаяСумма;
КонецФункции
// Возвращает текущую версию расширений.
// Для поиска версии используется описание подключенных расширений.
//
@@ -787,7 +824,8 @@
// Для процедуры ЗарегистрироватьИспользованиеВерсииРасширений.
Процедура ОбновитьПоследнююВерсиюРасширений(ВерсияРасширений)
Если КонфигурацияБазыДанныхИзмененаДинамически() Тогда
Если КонфигурацияБазыДанныхИзмененаДинамически()
Или РасширенияИзмененыДинамически() Тогда
Возврат;
КонецЕсли;
@@ -5396,7 +5396,7 @@
<id>32</id>
<toolTip>
<key>ru</key>
<value>Удалить данные версии файла</value>
<value>Удалить данные файла</value>
</toolTip>
<use>
<common>true</common>
@@ -4717,7 +4717,7 @@
<id>4</id>
<toolTip>
<key>ru</key>
<value>Удалить данные версии файла</value>
<value>Удалить данные файла</value>
</toolTip>
<use>
<common>true</common>
@@ -4730,6 +4730,7 @@
<name>Удалить</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<parameters>
@@ -130,7 +130,7 @@
Возврат Истина;
КонецПопытки;
Возврат Тип(Тест) <> Тип("Структура");
Возврат ТипЗнч(Тест) <> Тип("Структура");
КонецФункции
@@ -1451,34 +1451,102 @@
<items xsi:type="form:FormGroup">
<name>ТипЗначенияРеквизита</name>
<id>43</id>
<items xsi:type="form:FormField">
<name>ТипЗначения</name>
<id>5</id>
<items xsi:type="form:FormGroup">
<name>ГруппаТипЗначения</name>
<id>471</id>
<items xsi:type="form:FormField">
<name>ТипЗначения</name>
<id>5</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>Объект.ValueType</segments>
</dataPath>
<titleLocation>Left</titleLocation>
<toolTip>
<key>ru</key>
<value>В реквизите будут указываться данные выбранного типа. Например, текст, дата, число и т.п.</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<handlers>
<event>OnChange</event>
<name>ТипЗначенияПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ТипЗначенияExtendedTooltip</name>
<id>126</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ТипЗначенияКонтекстноеМеню</name>
<id>6</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>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:Button">
<name>РедактироватьФорматЗначения</name>
<id>37</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>РедактироватьФорматЗначенияExtendedTooltip</name>
<id>127</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Hyperlink</type>
<commandName>Form.Command.РедактироватьФорматЗначения</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Тип значения</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ValueType</segments>
</dataPath>
<titleLocation>Left</titleLocation>
<toolTip>
<key>ru</key>
<value>В реквизите будут указываться данные выбранного типа. Например, текст, дата, число и т.п.</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<handlers>
<event>OnChange</event>
<name>ТипЗначенияПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ТипЗначенияExtendedTooltip</name>
<id>126</id>
<name>ГруппаТипЗначенияРасширеннаяПодсказка</name>
<id>472</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -1486,36 +1554,96 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ТипЗначенияКонтекстноеМеню</name>
<id>6</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>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Button">
<name>РедактироватьФорматЗначения</name>
<id>37</id>
<items xsi:type="form:FormGroup">
<name>ГруппаПояснениеТипаЗначения</name>
<id>476</id>
<items xsi:type="form:Decoration">
<name>КартинкаПояснение</name>
<id>478</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КартинкаПояснениеРасширеннаяПодсказка</name>
<id>480</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>КартинкаПояснениеКонтекстноеМеню</name>
<id>479</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Информация</picture>
</picture>
<fileDragMode>AsFileRef</fileDragMode>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ПояснениеОДлинеСтроки</name>
<id>473</id>
<title>
<key>ru</key>
<value>Максимальная длина строки составляет 1024 символа</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПояснениеОДлинеСтрокиРасширеннаяПодсказка</name>
<id>475</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПояснениеОДлинеСтрокиКонтекстноеМеню</name>
<id>474</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Пояснение типа значения</value>
</title>
<extendedTooltip>
<name>РедактироватьФорматЗначенияExtendedTooltip</name>
<id>127</id>
<name>ГруппаПояснениеТипаЗначенияРасширеннаяПодсказка</name>
<id>477</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -1523,14 +1651,15 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Hyperlink</type>
<commandName>Form.Command.РедактироватьФорматЗначения</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
@@ -1553,7 +1682,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<group>Vertical</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1486,12 +1486,19 @@
ИЛИ НЕ ( Объект.ТипЗначения.СодержитТип(Тип("Число" ))
ИЛИ Объект.ТипЗначения.СодержитТип(Тип("Дата" ))
ИЛИ Объект.ТипЗначения.СодержитТип(Тип("Булево")) )Тогда
Элементы.РедактироватьФорматЗначения.Видимость = Ложь;
Иначе
Элементы.РедактироватьФорматЗначения.Видимость = Истина;
КонецЕсли;
Если Объект.ЭтоДополнительноеСведение
И Объект.ТипЗначения.СодержитТип(Тип("Строка"))
И Объект.ТипЗначения.КвалификаторыСтроки.Длина = 0 Тогда
Элементы.ГруппаПояснениеТипаЗначения.Видимость = Истина;
Иначе
Элементы.ГруппаПояснениеТипаЗначения.Видимость = Ложь;
КонецЕсли;
Если НЕ Объект.ЭтоДополнительноеСведение Тогда
Элементы.ГруппаМногострочность.Видимость = Истина;
ПереключитьНастройкиВыводаРеквизита(Объект.ТипЗначения);
@@ -436,15 +436,19 @@
Процедура ОтправитьПисьмо()
ОчиститьСообщения();
Если ПоляЗаполненыКорректно() И ОтправитьПочтовоеСообщение() Тогда
ЕстьОшибочныеПолучатели = Ложь;
Если ПоляЗаполненыКорректно() И ОтправитьПочтовоеСообщение(ЕстьОшибочныеПолучатели) Тогда
СохранитьАдресОтвета(АдресОтвета);
ТребуетсяПодтверждениеЗакрытияФормы = Ложь;
ПоказатьОповещениеПользователя(НСтр("ru = 'Сообщение отправлено:'"), ,
?(ПустаяСтрока(ТемаПисьма), НСтр("ru = '<Без темы>'"), ТемаПисьма), БиблиотекаКартинок.Информация32);
Закрыть();
Если ЕстьОшибочныеПолучатели Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Письмо отправлено не всем получателям.'"));
Иначе
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
@@ -503,7 +507,7 @@
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ОтправитьПочтовоеСообщение()
Функция ОтправитьПочтовоеСообщение(ЕстьОшибочныеПолучатели)
ПараметрыПисьма = СформироватьПараметрыПисьма();
Если ПараметрыПисьма = Неопределено Тогда
@@ -511,10 +515,33 @@
КонецЕсли;
Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(УчетнаяЗапись, ПараметрыПисьма);
РаботаСПочтовымиСообщениями.ОтправитьПисьмо(УчетнаяЗапись, Письмо);
РезультатОтправки = РаботаСПочтовымиСообщениями.ОтправитьПисьмо(УчетнаяЗапись, Письмо);
РаботаСПочтовымиСообщениямиПереопределяемый.ПослеОтправкиПисьма(ПараметрыПисьма);
ДобавитьПолучателейВИсторию(ПараметрыПисьма.Кому);
ОшибочныеПолучатели = РезультатОтправки.ОшибочныеПолучатели;
Если ОшибочныеПолучатели.Количество() > 0 Тогда
Для Каждого ОшибочныйПолучатель Из ОшибочныеПолучатели Цикл
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: %2'"),
ОшибочныйПолучатель.Ключ, ОшибочныйПолучатель.Значение);
Поле = "ПочтовыеАдресаПолучателей";
Для Каждого АдресПолучателя Из ПочтовыеАдресаПолучателей Цикл
Если СтрНайти(АдресПолучателя.Представление, ОшибочныйПолучатель.Ключ) > 0 Тогда
Поле = Поле + "[" + ПочтовыеАдресаПолучателей.Индекс(АдресПолучателя) + "].Представление";
Прервать;
КонецЕсли;
КонецЦикла;
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , Поле);
КонецЦикла;
ЕстьОшибочныеПолучатели = Истина;
Возврат ПочтовыеАдресаПолучателей.Количество() > ОшибочныеПолучатели.Количество();
КонецЕсли;
Возврат Истина;
КонецФункции
@@ -121,7 +121,12 @@
Возврат;
КонецЕсли;
СписокРасширенийБезопасныйРежимФлагПриИзмененииНаСервере(ТекущееРасширение.ПолучитьИдентификатор());
Контекст = Новый Структура;
Контекст.Вставить("ИдентификаторСтроки", ТекущееРасширение.ПолучитьИдентификатор());
ПоказатьДлительнуюОперацию();
ТекущийКонтекст = Контекст;
ПодключитьОбработчикОжидания("СписокРасширенийБезопасныйРежимФлагПриИзмененииЗавершение", 0.1, Истина);
КонецПроцедуры
@@ -133,14 +138,12 @@
Возврат;
КонецЕсли;
ИдентификаторСтроки = ТекущееРасширение.ПолучитьИдентификатор();
Контекст = Новый Структура;
Контекст.Вставить("ИдентификаторСтроки", ТекущееРасширение.ПолучитьИдентификатор());
Если Не ТекущееРасширение.Подключать
И ЭтоРасширениеСДанными(ТекущееРасширение.ИдентификаторРасширения) Тогда
Контекст = Новый Структура;
Контекст.Вставить("ИдентификаторСтроки", ИдентификаторСтроки);
Оповещение = Новый ОписаниеОповещения("ОтключитьРасширениеПослеПодтверждения", ЭтотОбъект, Контекст);
ПараметрыФормы = Новый Структура;
@@ -148,7 +151,7 @@
ОткрытьФорму("ОбщаяФорма.ПредупреждениеБезопасности", ПараметрыФормы,,,,, Оповещение)
Иначе
СписокРасширенийПодключатьПриИзмененииНаСервере(ИдентификаторСтроки);
СписокРасширенийПодключатьПриИзмененииПродолжение(Контекст);
КонецЕсли;
КонецПроцедуры
@@ -548,13 +551,12 @@
ТекстОшибки = "";
Справочники.ВерсииРасширений.УдалитьРасширения(ИдентификаторыРасширений, ТекстОшибки);
ОбновитьСписок();
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
ОбновитьСписок();
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ОбновитьСписок();
КонецПроцедуры
&НаКлиенте
@@ -563,17 +565,58 @@
Если Результат <> "Продолжить" Тогда
СтрокаСписка = СписокРасширений.НайтиПоИдентификатору(Контекст.ИдентификаторСтроки);
Если СтрокаСписка = Неопределено Тогда
Возврат;
КонецЕсли;
СтрокаСписка.Подключать = Не СтрокаСписка.Подключать;
Возврат;
КонецЕсли;
СписокРасширенийПодключатьПриИзмененииНаСервере(Контекст.ИдентификаторСтроки);
СписокРасширенийПодключатьПриИзмененииПродолжение(Контекст);
КонецПроцедуры
&НаКлиенте
Процедура СписокРасширенийПодключатьПриИзмененииПродолжение(Контекст)
ПоказатьДлительнуюОперацию();
ТекущийКонтекст = Контекст;
ПодключитьОбработчикОжидания("СписокРасширенийПодключатьПриИзмененииЗавершение", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура СписокРасширенийПодключатьПриИзмененииЗавершение()
Контекст = ТекущийКонтекст;
Попытка
СписокРасширенийПодключатьПриИзмененииНаСервере(Контекст.ИдентификаторСтроки);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ПодключитьОбработчикОжидания("СкрытьДлительнуюОперацию", 0.1, Истина);
ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
Возврат;
КонецПопытки;
ПодключитьОбработчикОжидания("СкрытьДлительнуюОперацию", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура СписокРасширенийБезопасныйРежимФлагПриИзмененииЗавершение()
Контекст = ТекущийКонтекст;
Попытка
СписокРасширенийБезопасныйРежимФлагПриИзмененииНаСервере(Контекст.ИдентификаторСтроки);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ПодключитьОбработчикОжидания("СкрытьДлительнуюОперацию", 0.1, Истина);
ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
Возврат;
КонецПопытки;
ПодключитьОбработчикОжидания("СкрытьДлительнуюОперацию", 0.1, Истина);
КонецПроцедуры
@@ -895,14 +938,12 @@
Если ИдентификаторыСтрок <> Неопределено Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обновить расширение по причине:
|
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
ИначеЕсли ЗначениеЗаполнено(ИмяФайлаДобавляемогоРасширения) Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось добавить расширение ""%1""
|из файла ""%2"" по причине:
|
|%3'"),
ОписаниеРасширения.Имя,
ИмяФайлаДобавляемогоРасширения,
@@ -910,7 +951,6 @@
Иначе
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось добавить по причине:
|
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
КонецЕсли;
КонецПопытки;
@@ -923,7 +963,6 @@
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'После добавления, при подготовке расширений к работе, произошла ошибка:
|
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
КонецПопытки;
КонецЕсли;
@@ -1000,34 +1039,69 @@
Процедура СписокРасширенийБезопасныйРежимФлагПриИзмененииНаСервере(ИдентификаторСтроки)
СтрокаСписка = СписокРасширений.НайтиПоИдентификатору(ИдентификаторСтроки);
Если СтрокаСписка = Неопределено Тогда
Возврат;
КонецЕсли;
Расширение = НайтиРасширение(СтрокаСписка.ИдентификаторРасширения);
Если Расширение <> Неопределено Тогда
Если Расширение = Неопределено
Или Расширение.БезопасныйРежим = СтрокаСписка.БезопасныйРежимФлаг Тогда
Если Расширение.БезопасныйРежим <> СтрокаСписка.БезопасныйРежимФлаг Тогда
Расширение.БезопасныйРежим = СтрокаСписка.БезопасныйРежимФлаг;
ОтключитьПредупрежденияБезопасности(Расширение);
ОтключитьИспользованиеОсновныхРолейДляВсехПользователей(Расширение);
Попытка
Расширение.Записать();
Исключение
СтрокаСписка.БезопасныйРежимФлаг = Не СтрокаСписка.БезопасныйРежимФлаг;
ВызватьИсключение;
КонецПопытки;
СтрокаСписка.БезопасныйРежим = СтрокаСписка.БезопасныйРежимФлаг;
ОбновитьСписок();
Возврат;
КонецЕсли;
Расширение.БезопасныйРежим = СтрокаСписка.БезопасныйРежимФлаг;
ОтключитьПредупрежденияБезопасности(Расширение);
ОтключитьИспользованиеОсновныхРолейДляВсехПользователей(Расширение);
Попытка
Расширение.Записать();
Исключение
СтрокаСписка.БезопасныйРежимФлаг = Не СтрокаСписка.БезопасныйРежимФлаг;
ВызватьИсключение;
КонецПопытки;
Попытка
РегистрыСведений.ПараметрыРаботыВерсийРасширений.ОбновитьПараметрыРаботыРасширений();
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
Если Расширение.БезопасныйРежим Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'После включения безопасного режима, при подготовке расширений к работе, произошла ошибка:
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
Иначе
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'После отключения безопасного режима, при подготовке расширений к работе, произошла ошибка:
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
КонецЕсли;
КонецПопытки;
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
ИнформацияОбОшибкеВосстановления = Неопределено;
Попытка
Расширение.БезопасныйРежим = Не Расширение.БезопасныйРежим;
Расширение.Записать();
Исключение
ИнформацияОбОшибкеВосстановления = ИнформацияОбОшибке();
ТекстОшибки = ТекстОшибки + Символы.ПС + Символы.ПС
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'При попытке отменить изменение флажка безопасного режима расширения произошла еще одна ошибка:
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибкеВосстановления));
КонецПопытки;
Если ИнформацияОбОшибкеВосстановления = Неопределено Тогда
СтрокаСписка.БезопасныйРежимФлаг = Расширение.БезопасныйРежим;
ТекстОшибки = ТекстОшибки + Символы.ПС + Символы.ПС
+ НСтр("ru = 'Отменено изменение флажка безопасного режима расширения.'");
КонецЕсли;
КонецЕсли;
ОбновитьСписок();
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
ВызватьИсключение ТекстОшибки;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
@@ -1060,32 +1134,69 @@
Процедура СписокРасширенийПодключатьПриИзмененииНаСервере(ИдентификаторСтроки)
СтрокаСписка = СписокРасширений.НайтиПоИдентификатору(ИдентификаторСтроки);
Если СтрокаСписка = Неопределено Тогда
Возврат;
КонецЕсли;
Расширение = НайтиРасширение(СтрокаСписка.ИдентификаторРасширения);
Если Расширение <> Неопределено Тогда
Если Расширение.Активно <> СтрокаСписка.Подключать Тогда
Расширение.Активно = СтрокаСписка.Подключать;
ОтключитьПредупрежденияБезопасности(Расширение);
ОтключитьИспользованиеОсновныхРолейДляВсехПользователей(Расширение);
Попытка
Расширение.Записать();
Исключение
СтрокаСписка.Подключать = Не СтрокаСписка.Подключать;
ВызватьИсключение;
КонецПопытки;
КонецЕсли;
Если Расширение = Неопределено
Или Расширение.Активно = СтрокаСписка.Подключать Тогда
ОбновитьСписок();
Возврат;
КонецЕсли;
Расширение.Активно = СтрокаСписка.Подключать;
ОтключитьПредупрежденияБезопасности(Расширение);
ОтключитьИспользованиеОсновныхРолейДляВсехПользователей(Расширение);
Попытка
Расширение.Записать();
Исключение
СтрокаСписка.Подключать = Не СтрокаСписка.Подключать;
ВызватьИсключение;
КонецПопытки;
Попытка
РегистрыСведений.ПараметрыРаботыВерсийРасширений.ОбновитьПараметрыРаботыРасширений();
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
Если Расширение.Активно Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'После включения расширения, при подготовке расширений к работе, произошла ошибка:
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
Иначе
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'После отключения расширения, при подготовке расширений к работе, произошла ошибка:
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
КонецЕсли;
КонецПопытки;
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
ИнформацияОбОшибкеВосстановления = Неопределено;
Попытка
Расширение.Активно = Не Расширение.Активно;
Расширение.Записать();
Исключение
ИнформацияОбОшибкеВосстановления = ИнформацияОбОшибке();
ТекстОшибки = ТекстОшибки + Символы.ПС + Символы.ПС
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'При попытке отменить изменение флажка подключения расширения произошла еще одна ошибка:
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибкеВосстановления));
КонецПопытки;
Если ИнформацияОбОшибкеВосстановления = Неопределено Тогда
СтрокаСписка.Подключать = Расширение.Активно;
ТекстОшибки = ТекстОшибки + Символы.ПС + Символы.ПС
+ НСтр("ru = 'Отменено изменение флажка подключения расширения.'");
КонецЕсли;
КонецЕсли;
ОбновитьСписок();
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
ВызватьИсключение ТекстОшибки;
КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -60,9 +60,12 @@
&НаКлиенте
Процедура СписокПриложенийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущиеДанные = Элементы.СписокПриложений.ТекущиеДанные;
СтандартнаяОбработка = Ложь;
ТекущиеДанные = ТекущиеДанныеСпискаПриложений();
Если ТекущиеДанные = Неопределено Тогда
ОбновитьДанныеМонитораИнтерактивно();
Возврат;
КонецЕсли;
@@ -79,8 +82,11 @@
Возврат;
КонецЕсли;
Элементы.СписокПриложенийНачальнаяВыгрузкаДанных.Доступность =
ТекущиеДанные.ДоступнаИнтерактивнаяОтправка И Не ТекущиеДанные.ЗапускОбменаИзКорреспондента;
ТекущиеДанные = ТекущиеДанныеСпискаПриложений();
Если ТекущиеДанные = Неопределено Тогда
ОбновитьДанныеМонитораИнтерактивно();
Возврат;
КонецЕсли;
Элементы.СписокПриложенийВыполнитьСинхронизациюСДополнительнымиОтборами.Доступность =
ТекущиеДанные.ДоступнаИнтерактивнаяОтправка И Не ТекущиеДанные.ЗапускОбменаИзКорреспондента;
@@ -108,9 +114,10 @@
&НаКлиенте
Процедура НастроитьСценарииОбменаДанными(Команда)
ТекущиеДанные = Элементы.СписокПриложений.ТекущиеДанные;
ТекущиеДанные = ТекущиеДанныеСпискаПриложений();
Если ТекущиеДанные = Неопределено Тогда
ОбновитьДанныеМонитораИнтерактивно();
Возврат;
КонецЕсли;
@@ -128,9 +135,10 @@
&НаКлиенте
Процедура ИзменитьУзелИнформационнойБазы(Команда)
ТекущиеДанные = Элементы.СписокПриложений.ТекущиеДанные;
ТекущиеДанные = ТекущиеДанныеСпискаПриложений();
Если ТекущиеДанные = Неопределено Тогда
ОбновитьДанныеМонитораИнтерактивно();
Возврат;
КонецЕсли;
@@ -162,9 +170,10 @@
&НаКлиенте
Процедура ИнформацияПоОбмену(Команда)
ТекущиеДанные = Элементы.СписокПриложений.ТекущиеДанные;
ТекущиеДанные = ТекущиеДанныеСпискаПриложений();
Если ТекущиеДанные = Неопределено Тогда
ОбновитьДанныеМонитораИнтерактивно();
Возврат;
КонецЕсли;
@@ -184,9 +193,10 @@
&НаКлиенте
Процедура СоставОтправляемыхДанных(Команда)
ТекущиеДанные = Элементы.СписокПриложений.ТекущиеДанные;
ТекущиеДанные = ТекущиеДанныеСпискаПриложений();
Если ТекущиеДанные = Неопределено Тогда
ОбновитьДанныеМонитораИнтерактивно();
Возврат;
КонецЕсли;
@@ -205,9 +215,10 @@
&НаКлиенте
Процедура УдалитьНастройкуСинхронизации(Команда)
ТекущиеДанные = Элементы.СписокПриложений.ТекущиеДанные;
ТекущиеДанные = ТекущиеДанныеСпискаПриложений();
Если ТекущиеДанные = Неопределено Тогда
ОбновитьДанныеМонитораИнтерактивно();
Возврат;
КонецЕсли;
@@ -236,9 +247,10 @@
&НаКлиенте
Процедура ЗагрузитьПравилаСинхронизацииДанных(Команда)
ТекущиеДанные = Элементы.СписокПриложений.ТекущиеДанные;
ТекущиеДанные = ТекущиеДанныеСпискаПриложений();
Если ТекущиеДанные = Неопределено Тогда
ОбновитьДанныеМонитораИнтерактивно();
Возврат;
КонецЕсли;
@@ -261,9 +273,10 @@
&НаКлиенте
Процедура НачальнаяВыгрузкаДанных(Команда)
ТекущиеДанные = Элементы.СписокПриложений.ТекущиеДанные;
ТекущиеДанные = ТекущиеДанныеСпискаПриложений();
Если ТекущиеДанные = Неопределено Тогда
ОбновитьДанныеМонитораИнтерактивно();
Возврат;
КонецЕсли;
@@ -286,6 +299,9 @@
ПараметрыПомощника.Вставить("УзелОбмена", ТекущиеДанные.УзелИнформационнойБазы);
ПараметрыПомощника.Вставить("ЭтоОбменСПриложениемВСервисе", ТекущиеДанные.ЭтоОбменСПриложениемВСервисе);
ПараметрыПомощника.Вставить("ОбластьДанныхКорреспондента", ТекущиеДанные.ОбластьДанных);
Если ДанныеДляЗавершенияНастройки.ПассивноеПодключение Тогда
ПараметрыПомощника.Вставить("НачальнаяВыгрузка", Истина);
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("НачальнаяВыгрузкаДанныхЗавершение", ЭтотОбъект);
ОткрытьФорму("Обработка.ПомощникИнтерактивногоОбменаДанными.Форма.ВыгрузкаДанныхДляСопоставления",
@@ -522,9 +538,10 @@
&НаКлиенте
Процедура ОбработкаКомандыВыполненияСинхронизации(ИспользоватьДопОтборы = Ложь)
ТекущиеДанные = Элементы.СписокПриложений.ТекущиеДанные;
ТекущиеДанные = ТекущиеДанныеСпискаПриложений();
Если ТекущиеДанные = Неопределено Тогда
ОбновитьДанныеМонитораИнтерактивно();
Возврат;
КонецЕсли;
@@ -678,11 +695,22 @@
ОписаниеВариантаНастройки.НаименованиеКорреспондента = ЗначенияНастроекДляВарианта.НаименованиеКонфигурацииКорреспондента;
КонецЕсли;
НомераСообщений = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтрокаПриложение.УзелИнформационнойБазы, "НомерПринятого, НомерОтправленного");
ВидТранспорта = РегистрыСведений.НастройкиТранспортаОбменаДанными.ВидТранспортаСообщенийОбменаПоУмолчанию(СтрокаПриложение.УзелИнформационнойБазы);
Если Не ЗначениеЗаполнено(ВидТранспорта) Тогда
ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.WSПассивныйРежим;
КонецЕсли;
ДанныеДляЗавершенияНастройки = Новый Структура;
ДанныеДляЗавершенияНастройки.Вставить("ИдентификаторНастройки", ИдентификаторНастройки);
ДанныеДляЗавершенияНастройки.Вставить("ОписаниеВариантаНастройки", ОписаниеВариантаНастройки);
ДанныеДляЗавершенияНастройки.Вставить("ПассивноеПодключение", ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.WSПассивныйРежим);
Возврат ОбменДаннымиСервер.НастройкаСинхронизацииЗавершена(СтрокаПриложение.УзелИнформационнойБазы);
Возврат ОбменДаннымиСервер.НастройкаСинхронизацииЗавершена(СтрокаПриложение.УзелИнформационнойБазы)
И Не (НомераСообщений.НомерПринятого = 0
И НомераСообщений.НомерОтправленного = 0
И ОбменДаннымиСервер.ПолученоСообщениеСДаннымиДляСопоставления(СтрокаПриложение.УзелИнформационнойБазы));
КонецФункции
@@ -698,12 +726,35 @@
КонецФункции
&НаСервереБезКонтекста
Функция УзелОбменаСуществует(УзелОбмена)
Возврат ОбщегоНазначения.СсылкаСуществует(УзелОбмена);
КонецФункции
&НаКлиенте
Процедура ПерейтиВЖурналРегистрацииСобытий(ДействиеПриОбмене)
Функция ТекущиеДанныеСпискаПриложений()
ТекущиеДанные = Элементы.СписокПриложений.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Если Не УзелОбменаСуществует(ТекущиеДанные.УзелИнформационнойБазы) Тогда
ТекущиеДанные = Неопределено;
КонецЕсли;
КонецЕсли;
Возврат ТекущиеДанные;
КонецФункции
&НаКлиенте
Процедура ПерейтиВЖурналРегистрацииСобытий(ДействиеПриОбмене)
ТекущиеДанные = ТекущиеДанныеСпискаПриложений();
Если ТекущиеДанные = Неопределено Тогда
ОбновитьДанныеМонитораИнтерактивно();
Возврат;
КонецЕсли;
@@ -3870,7 +3870,8 @@
ПредставлениеПолей = Новый Массив;
Для Каждого Элемент Из Поля.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("АвтоПолеГруппировкиКомпоновкиДанных") Тогда
Если Не Элемент.Использование
Или ТипЗнч(Элемент) = Тип("АвтоПолеГруппировкиКомпоновкиДанных") Тогда
Продолжить;
КонецЕсли;
@@ -6526,7 +6527,8 @@
Продолжить;
КонецЕсли;
Если ДоступныеПоля.НайтиПоле(ЭлементНастройки.ЛевоеЗначение) <> Неопределено Тогда
Если ТипЗнч(ЭлементНастройки.ЛевоеЗначение) <> Тип("ПолеКомпоновкиДанных")
Или ДоступныеПоля.НайтиПоле(ЭлементНастройки.ЛевоеЗначение) <> Неопределено Тогда
Продолжить;
КонецЕсли;
@@ -6167,6 +6167,10 @@
Сжатие = Новый СжатиеДанных(9);
ФайлЗагрузки = ФайлЗагрузкиСубъектаРФ(КодСубъектаРФ, КаталогФайлов, "STEAD", "Steads");
Если ФайлЗагрузки = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяЗапись = ФайлЗагрузки.ФайлЧтения;
Набор = РегистрыСведений.ЗемельныеУчастки.СоздатьНаборЗаписей();
@@ -6224,6 +6228,7 @@
Сжатие = Новый СжатиеДанных(9);
ФайлЗагрузки = ФайлЗагрузкиСубъектаРФ(КодСубъектаРФ, КаталогФайлов, "LINK", "Links");
Если ФайлЗагрузки = Неопределено Тогда
Возврат;
КонецЕсли;
@@ -6298,6 +6303,10 @@
ФайлЗагрузки = ФайлЗагрузкиСубъектаРФ(КодСубъектаРФ, КаталогФайлов, ИмяФайла, "AdditionalAddressInfo");
Если ФайлЗагрузки = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяЗапись = ФайлЗагрузки.ФайлЧтения;
Пока ТекущаяЗапись.Прочитать() Цикл
@@ -6412,6 +6421,10 @@
Набор.Отбор.КодСубъектаРФ.Установить(КодСубъектаРФ);
ФайлЗагрузки = ФайлЗагрузкиСубъектаРФ(КодСубъектаРФ, КаталогФайлов, "ARCHDOCS", "RegulatoryDocs");
Если ФайлЗагрузки = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяЗапись = ФайлЗагрузки.ФайлЧтения;
Пока ТекущаяЗапись.Прочитать() Цикл
@@ -514,26 +514,31 @@
Иначе
Для Каждого ЭлементСписка Из СписокОграничений Цикл
Если Не ПустаяСтрока(Ограничение) Тогда
Ограничение = Ограничение + ", ";
КонецЕсли;
Если (ВРег(ИмяОграничения) = ВРег("Сеанс")
ИЛИ ВРег(ИмяОграничения) = ВРег("Уровень"))
И ПустаяСтрока(Ограничение) Тогда
Ограничение = НСтр("ru = '[ИмяОграничения]: [Значение]'");
Ограничение = СтрЗаменить(Ограничение, "[Значение]", ЭлементСписка.Значение);
Ограничение = СтрЗаменить(Ограничение, "[ИмяОграничения]", ИмяОграничения);
ИначеЕсли ВРег(ИмяОграничения) = ВРег("Сеанс")
ИЛИ ВРег(ИмяОграничения) = ВРег("Уровень")Тогда
Ограничение = Ограничение + ЭлементСписка.Значение;
Если Не ЗначениеЗаполнено(ЭлементСписка.Представление) Тогда
ЗначениеОграничения = ЭлементСписка.Значение;
Иначе
Ограничение = Ограничение + ЭлементСписка.Представление;
ЗначениеОграничения = ЭлементСписка.Представление;
КонецЕсли;
Если (ВРег(ИмяОграничения) = ВРег("Сеанс")
ИЛИ ВРег(ИмяОграничения) = ВРег("Уровень"))
И ПустаяСтрока(Ограничение) Тогда
Если ИмяОграничения = "Сеанс" Тогда
ПредставлениеОграничения = НСтр("ru = 'Сеанс'");
Иначе
ПредставлениеОграничения = НСтр("ru = 'Уровень'");
КонецЕсли;
Ограничение = НСтр("ru = '%1: %2'");
Ограничение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Ограничение, ПредставлениеОграничения, ЗначениеОграничения);
Иначе
Ограничение = Ограничение + ЗначениеОграничения;
КонецЕсли;
КонецЦикла;
КонецЕсли;
@@ -2399,11 +2399,6 @@
ОбновлениеИнформационнойБазыСлужебный.ПриДобавленииОбработчиковОбновления(Обработчики);
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПриДобавленииОбработчиковОбновления Тогда
МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС");
МодульИнтеграцияПодсистемБТС.ПриДобавленииОбработчиковОбновления(Обработчики);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОценкаПроизводительности") Тогда
МодульОценкаПроизводительностиСлужебный = ОбщегоНазначения.ОбщийМодуль("ОценкаПроизводительностиСлужебный");
МодульОценкаПроизводительностиСлужебный.ПриДобавленииОбработчиковОбновления(Обработчики);
@@ -2483,11 +2478,6 @@
МодульЭлектроннаяПодписьСлужебный.ПриДобавленииОбработчиковОбновления(Обработчики);
КонецЕсли;
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБИП().ПриДобавленииОбработчиковОбновления Тогда
МодульИнтеграцияПодсистемБИП = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБИП");
МодульИнтеграцияПодсистемБИП.ПриДобавленииОбработчиковОбновления(Обработчики);
КонецЕсли;
КонецПроцедуры
// См. ОбновлениеИнформационнойБазыБСП.ПослеОбновленияИнформационнойБазы.
@@ -4430,7 +4420,6 @@
События.Вставить("ПриНастройкеПодчиненногоУзлаРИБ", Ложь);
//ОбновлениеВерсииИБ
События.Вставить("ПриДобавленииОбработчиковОбновления", Ложь);
События.Вставить("ПослеОбновленияИнформационнойБазы", Ложь);
События.Вставить("ПриПолученииПриоритетаОбновления", Ложь);
@@ -211,7 +211,26 @@
ПараметрыПодключения = РегистрыСведений.НастройкиТранспортаОбменаДанными.НастройкиТранспортаWS(
УзелИнформационнойБазы, ПараметрыАутентификации);
WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси(ПараметрыПодключения, СтрокаСообщенияОбОшибке);
ВерсииИнтерфейса = ОбменДаннымиПовтИсп.ВерсииКорреспондента(ПараметрыПодключения);
WSПрокси = Неопределено;
Если ВерсииИнтерфейса.Найти("3.0.1.1") <> Неопределено Тогда
WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси_3_0_1_1(ПараметрыПодключения, СтрокаСообщенияОбОшибке);
ИначеЕсли ВерсииИнтерфейса.Найти("2.1.1.7") <> Неопределено Тогда
WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси_2_1_1_7(ПараметрыПодключения, СтрокаСообщенияОбОшибке);
ИначеЕсли ВерсииИнтерфейса.Найти("2.0.1.6") <> Неопределено Тогда
WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси_2_0_1_6(ПараметрыПодключения, СтрокаСообщенияОбОшибке);
Иначе
WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси(ПараметрыПодключения, СтрокаСообщенияОбОшибке);
КонецЕсли;
Если WSПрокси = Неопределено Тогда
ВызватьИсключение СтрокаСообщенияОбОшибке;
@@ -2673,7 +2673,14 @@
Результат.ПрефиксИнформационнойБазы = ПолучитьФункциональнуюОпцию("ПрефиксИнформационнойБазы");
Результат.ПрефиксИнформационнойБазыПоУмолчанию = ПрефиксИнформационнойБазы;
Результат.НаименованиеИнформационнойБазы = СвойстваЭтогоУзла.Наименование;
Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Результат.НаименованиеИнформационнойБазы = Константы.ЗаголовокСистемы.Получить();
КонецЕсли;
Если ПустаяСтрока(Результат.НаименованиеИнформационнойБазы) Тогда
Результат.НаименованиеИнформационнойБазы = СвойстваЭтогоУзла.Наименование;
КонецЕсли;
Результат.УзелСуществует = ЗначениеЗаполнено(УзелКорреспондента);
Результат.НастройкиПараметровУчетаЗаданы = Результат.УзелСуществует
И НастройкиПараметровУчетаВСистемеУстановлены(Результат.ИмяПланаОбмена, КодУзла, СообщениеОбОшибке);
@@ -3845,6 +3852,11 @@
// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
Обработчик.НачальноеЗаполнение = Истина;
Обработчик.Процедура = "ОбменДаннымиСервер.УстановитьКоличествоЭлементовВТранзакцииЗагрузкиДанныхПоУмолчанию";
Обработчик.ОбщиеДанные = Истина;
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "*";
Обработчик.Процедура = "ОбменДаннымиСервер.УстановитьКодыПредопределенныхУзлов";
@@ -3915,6 +3927,12 @@
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
Обработчик.БлокируемыеОбъекты = "РегистрСведений.УдалитьРезультатыОбменаДанными,РегистрСведений.РезультатыОбменаДанными";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.1.2.172";
Обработчик.Процедура = "ОбменДаннымиСервер.УстановитьКоличествоЭлементовВТранзакцииЗагрузкиДанныхПоУмолчанию";
Обработчик.РежимВыполнения = "Оперативно";
Обработчик.ОбщиеДанные = Истина;
КонецПроцедуры
// См. ОбновлениеИнформационнойБазыБСП.ПередОбновлениемИнформационнойБазы.
@@ -4109,99 +4127,6 @@
КонецПроцедуры
Процедура УстановитьКодыПредопределенныхУзлов() Экспорт
КодИзМоделиСервиса = "";
Если ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиВМоделиСервиса");
КодИзМоделиСервиса = СокрЛП(МодульОбменДаннымиВМоделиСервиса.КодУзлаПланаОбменаВСервисе(МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса()));
КонецЕсли;
КоллекцияУзлов = Новый Массив;
Для Каждого УзелСсылка Из ПредопределенныеУзлыПлановОбменаБСП() Цикл
Если Не ЭтоПланОбменаXDTO(УзелСсылка) Тогда
Продолжить;
ИначеЕсли Не ОбменДаннымиXDTOСервер.ПоддерживаетсяВерсияСИдентификаторомОбменаДанными(УзелСсылка) Тогда
Продолжить;
КонецЕсли;
КоллекцияУзлов.Добавить(УзелСсылка);
КонецЦикла;
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
Для Каждого УзелСсылка Из КоллекцияУзлов Цикл
ЭлементБлокировки = Блокировка.Добавить(ОбщегоНазначения.ИмяТаблицыПоСсылке(УзелСсылка));
ЭлементБлокировки.УстановитьЗначение("Ссылка", УзелСсылка);
КонецЦикла;
Блокировка.Заблокировать();
ВиртуальныеКоды = РегистрыСведений.ПсевдонимыПредопределенныхУзлов.СоздатьНаборЗаписей();
Для Каждого УзелСсылка Из КоллекцияУзлов Цикл
КодПредопределенногоУзла = СокрЛП(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелСсылка, "Код"));
Если Не ЗначениеЗаполнено(КодПредопределенногоУзла)
// Не был выполнен переход на новую кодировку узлов.
Или СтрДлина(КодПредопределенногоУзла) < 36
// Требуется перекодировка в связи с тем, что код сформирован по логике БТС.
Или КодПредопределенногоУзла = КодИзМоделиСервиса Тогда
УникальныйИдентификаторОбменаДанными = Строка(Новый УникальныйИдентификатор);
ЗаблокироватьДанныеДляРедактирования(УзелСсылка);
УзелОбъект = УзелСсылка.ПолучитьОбъект();
УзелОбъект.Код = УникальныйИдентификаторОбменаДанными;
УзелОбъект.ОбменДанными.Загрузка = Истина;
УзелОбъект.Записать();
Если ЗначениеЗаполнено(КодПредопределенногоУзла) Тогда
// Сохранение предыдущего кода узла в регистре виртуальных кодов.
ТекстЗапроса =
"ВЫБРАТЬ
| Т.Ссылка КАК Ссылка
|ИЗ
| #ТаблицаПланаОбмена КАК Т
|ГДЕ
| НЕ Т.ЭтотУзел
| И НЕ Т.ПометкаУдаления";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"#ТаблицаПланаОбмена", "ПланОбмена." + ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелСсылка));
Запрос = Новый Запрос(ТекстЗапроса);
КорреспондентыПланаОбмена = Запрос.Выполнить().Выбрать();
Пока КорреспондентыПланаОбмена.Следующий() Цикл
ВиртуальныйКод = ВиртуальныеКоды.Добавить();
ВиртуальныйКод.Корреспондент = КорреспондентыПланаОбмена.Ссылка;
ВиртуальныйКод.КодУзла = КодПредопределенногоУзла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ВиртуальныеКоды.Количество() > 0 Тогда
ВиртуальныеКоды.Записать();
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
// См. ОчередьЗаданийПереопределяемый.ПриОпределенииПсевдонимовОбработчиков.
Процедура ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам) Экспорт
@@ -4209,7 +4134,6 @@
КонецПроцедуры
#КонецОбласти
#Область ФункцииСвойства
@@ -4666,6 +4590,107 @@
#Область ОбновлениеИнформационнойБазы
Процедура УстановитьКоличествоЭлементовВТранзакцииЗагрузкиДанныхПоУмолчанию() Экспорт
Если Не ОбщегоНазначения.РазделениеВключено()
И КоличествоЭлементовВТранзакцииЗагрузкиДанных() = 0 Тогда
УстановитьКоличествоЭлементовВТранзакцииЗагрузкиДанных(1);
КонецЕсли;
КонецПроцедуры
Процедура УстановитьКодыПредопределенныхУзлов() Экспорт
КодИзМоделиСервиса = "";
Если ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиВМоделиСервиса");
КодИзМоделиСервиса = СокрЛП(МодульОбменДаннымиВМоделиСервиса.КодУзлаПланаОбменаВСервисе(МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса()));
КонецЕсли;
КоллекцияУзлов = Новый Массив;
Для Каждого УзелСсылка Из ПредопределенныеУзлыПлановОбменаБСП() Цикл
Если Не ЭтоПланОбменаXDTO(УзелСсылка) Тогда
Продолжить;
ИначеЕсли Не ОбменДаннымиXDTOСервер.ПоддерживаетсяВерсияСИдентификаторомОбменаДанными(УзелСсылка) Тогда
Продолжить;
КонецЕсли;
КоллекцияУзлов.Добавить(УзелСсылка);
КонецЦикла;
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
Для Каждого УзелСсылка Из КоллекцияУзлов Цикл
ЭлементБлокировки = Блокировка.Добавить(ОбщегоНазначения.ИмяТаблицыПоСсылке(УзелСсылка));
ЭлементБлокировки.УстановитьЗначение("Ссылка", УзелСсылка);
КонецЦикла;
Блокировка.Заблокировать();
ВиртуальныеКоды = РегистрыСведений.ПсевдонимыПредопределенныхУзлов.СоздатьНаборЗаписей();
Для Каждого УзелСсылка Из КоллекцияУзлов Цикл
КодПредопределенногоУзла = СокрЛП(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелСсылка, "Код"));
Если Не ЗначениеЗаполнено(КодПредопределенногоУзла)
// Не был выполнен переход на новую кодировку узлов.
Или СтрДлина(КодПредопределенногоУзла) < 36
// Требуется перекодировка в связи с тем, что код сформирован по логике БТС.
Или КодПредопределенногоУзла = КодИзМоделиСервиса Тогда
УникальныйИдентификаторОбменаДанными = Строка(Новый УникальныйИдентификатор);
ЗаблокироватьДанныеДляРедактирования(УзелСсылка);
УзелОбъект = УзелСсылка.ПолучитьОбъект();
УзелОбъект.Код = УникальныйИдентификаторОбменаДанными;
УзелОбъект.ОбменДанными.Загрузка = Истина;
УзелОбъект.Записать();
Если ЗначениеЗаполнено(КодПредопределенногоУзла) Тогда
// Сохранение предыдущего кода узла в регистре виртуальных кодов.
ТекстЗапроса =
"ВЫБРАТЬ
| Т.Ссылка КАК Ссылка
|ИЗ
| #ТаблицаПланаОбмена КАК Т
|ГДЕ
| НЕ Т.ЭтотУзел
| И НЕ Т.ПометкаУдаления";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"#ТаблицаПланаОбмена", "ПланОбмена." + ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелСсылка));
Запрос = Новый Запрос(ТекстЗапроса);
КорреспондентыПланаОбмена = Запрос.Выполнить().Выбрать();
Пока КорреспондентыПланаОбмена.Следующий() Цикл
ВиртуальныйКод = ВиртуальныеКоды.Добавить();
ВиртуальныйКод.Корреспондент = КорреспондентыПланаОбмена.Ссылка;
ВиртуальныйКод.КодУзла = КодПредопределенногоУзла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ВиртуальныеКоды.Количество() > 0 Тогда
ВиртуальныеКоды.Записать();
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
// Удаляет роль НастройкаСинхронизацииДанных из всех профилей, в которые она входит.
Процедура УдалитьРольНастройкаСинхронизацииДанных() Экспорт
@@ -11277,34 +11302,29 @@
//
Функция РаспаковатьZipФайл(Знач ПолноеИмяФайлаАрхива, Знач ПутьРаспаковкиФайлов, Знач ПарольАрхива = "") Экспорт
// Возвращаемое значение функции.
Результат = Истина;
Архиватор = Неопределено;
Попытка
Архиватор = Новый ЧтениеZipФайла(ПолноеИмяФайлаАрхива, ПарольАрхива);
Исключение
Архиватор = Неопределено;
СообщитьОбОшибке(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат Ложь;
КонецПопытки;
Попытка
Архиватор.ИзвлечьВсе(ПутьРаспаковкиФайлов, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
Исключение
ИнформацияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка при распаковке файлов архива ""%1"" в каталог ""%2"" по причине:
|%3'"),
ПолноеИмяФайлаАрхива,
ПутьРаспаковкиФайлов,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
СтрокаСообщения = НСтр("ru = 'Ошибка при распаковке файлов архива: %1 в каталог: %2'");
СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, ПолноеИмяФайлаАрхива, ПутьРаспаковкиФайлов);
ОбщегоНазначения.СообщитьПользователю(СтрокаСообщения);
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОбменДанными(),
УровеньЖурналаРегистрации.Ошибка, , , ИнформацияОбОшибке);
Результат = Ложь;
КонецПопытки;
Архиватор.Закрыть();
Архиватор = Неопределено;
Если Архиватор <> Неопределено Тогда
Архиватор.Закрыть();
КонецЕсли;
Возврат Результат;
@@ -11882,7 +11902,7 @@
Процедура ЗаполнитьИдентификаторыСсылокВДереве(СтрокиДерева)
Для Каждого Строка Из СтрокиДерева Цикл
Строка.Идентификатор = XMLСтрока(Строка.Ссылка);
Строка.Идентификатор = ЗначениеВСтрокуВнутр(Строка.Ссылка);
ЗаполнитьИдентификаторыСсылокВДереве(Строка.Строки);
КонецЦикла;
@@ -3488,6 +3488,7 @@
СсылкаНаОбъект = ЭлементДанных.Ссылка;
СсылкаСуществует = ОбщегоНазначения.СсылкаСуществует(СсылкаНаОбъект);
ТипВерсииОбъекта = "";
Если СсылкаСуществует Тогда
ОбъектВБазе = СсылкаНаОбъект.ПолучитьОбъект();
@@ -3521,6 +3522,12 @@
СведенияОВерсииОбъекта.Вставить("ТипВерсииОбъекта", ТипВерсииОбъекта);
СведенияОВерсииОбъекта.Вставить("Комментарий", СтрокаСообщенияОбОшибке);
Если ОбщегоНазначения.ЭтоДокумент(ЭлементДанных.Метаданные())
И ТипВерсииОбъекта = "НепринятыйПоДатеЗапретаОбъектНеСуществуетВБазе" Тогда
СвойствоПроведен = Новый Структура("Проведен", Ложь);
ЗаполнитьЗначенияСвойств(ЭлементДанных, СвойствоПроведен);
КонецЕсли;
ПриСозданииВерсииОбъекта(ЭлементДанных, СведенияОВерсииОбъекта, СсылкаСуществует, Отправитель);
КонецЕсли;
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.2.166";
Описание.Версия = "3.1.2.176";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -468,20 +468,21 @@
КаталогСкрипта = "";
Если Не ОбщегоНазначения.РазделениеВключено() Тогда
СтатусОбновления = Константы.СтатусОбновленияКонфигурации.Получить().Получить();
Если СтатусОбновления <> Неопределено
И СтатусОбновления.Свойство("КаталогСкрипта") Тогда
СтатусОбновления = СтатусОбновленияКонфигурации();
Если СтатусОбновления <> Неопределено И СтатусОбновления.Свойство("КаталогСкрипта") Тогда
КаталогСкрипта = СтатусОбновления.КаталогСкрипта;
СтатусОбновления.КаталогСкрипта = "";
УстановитьСтатусОбновленияКонфигурации(СтатусОбновления);
КонецЕсли;
КонецЕсли;
// Если каталог уже удален - то считаем, что поведение как при обычном обновлении из конфигуратора.
ФайлИнфо = Новый Файл(КаталогСкрипта);
Если Не ФайлИнфо.Существует() Тогда
КаталогСкрипта = "";
Если Не ПустаяСтрока(КаталогСкрипта) Тогда
// Если каталог уже удален, то считаем, что поведение как при обычном обновлении из конфигуратора.
ФайлИнфо = Новый Файл(КаталогСкрипта);
Если Не ФайлИнфо.Существует() Тогда
КаталогСкрипта = "";
КонецЕсли;
КонецЕсли;
Возврат КаталогСкрипта;
@@ -543,11 +544,7 @@
Результат = УстановкаИУдалениеИсправлений(Исправления);
Результат.Вставить("ВсегоПатчей", УстанавливаемыеИсправления.Количество());
ЗначениеХранилища = Константы.СтатусОбновленияКонфигурации.Получить();
Если ЗначениеХранилища = Неопределено Тогда
Возврат;
КонецЕсли;
Статус = ЗначениеХранилища.Получить();
Статус = СтатусОбновленияКонфигурации();
Если Статус = Неопределено Тогда
Возврат;
КонецЕсли;
@@ -555,7 +552,7 @@
Статус.Вставить("РезультатУстановкиПатчей");
КонецЕсли;
Статус.РезультатУстановкиПатчей = Результат;
Константы.СтатусОбновленияКонфигурации.Установить(Новый ХранилищеЗначения(Статус));
УстановитьСтатусОбновленияКонфигурации(Статус);
КонецПроцедуры
@@ -569,18 +566,12 @@
Возврат;
КонецЕсли;
ЗначениеХранилища = Константы.СтатусОбновленияКонфигурации.Получить();
Статус = Неопределено;
Если ЗначениеХранилища <> Неопределено Тогда
Статус = ЗначениеХранилища.Получить();
КонецЕсли;
Статус = СтатусОбновленияКонфигурации();
Если Статус <> Неопределено И Статус.ОбновлениеВыполнено И Статус.РезультатОбновленияКонфигурации <> Неопределено
И Не Статус.РезультатОбновленияКонфигурации Тогда
Статус.РезультатОбновленияКонфигурации = Истина;
Константы.СтатусОбновленияКонфигурации.Установить(Новый ХранилищеЗначения(Статус));
УстановитьСтатусОбновленияКонфигурации(Статус);
КонецЕсли;
@@ -639,13 +630,7 @@
Возврат Неопределено;
КонецЕсли;
ЗначениеХранилища = Константы.СтатусОбновленияКонфигурации.Получить();
Статус = Неопределено;
Если ЗначениеХранилища <> Неопределено Тогда
Статус = ЗначениеХранилища.Получить();
КонецЕсли;
Статус = СтатусОбновленияКонфигурации();
Если Статус = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
@@ -682,24 +667,20 @@
Статус.Вставить("КаталогСкрипта", КаталогСкрипта);
Статус.Вставить("РезультатУстановкиПатчей", Неопределено);
ЗначениеХранилища = Константы.СтатусОбновленияКонфигурации.Получить();
СтарыйСтатус = Неопределено;
Если ЗначениеХранилища <> Неопределено Тогда
СтарыйСтатус = ЗначениеХранилища.Получить();
КонецЕсли;
СтарыйСтатус = СтатусОбновленияКонфигурации();
Если СтарыйСтатус <> Неопределено
И СтарыйСтатус.Свойство("РезультатУстановкиПатчей")
И СтарыйСтатус.РезультатУстановкиПатчей <> Неопределено Тогда
Статус.РезультатУстановкиПатчей = СтарыйСтатус.РезультатУстановкиПатчей;
КонецЕсли;
Константы.СтатусОбновленияКонфигурации.Установить(Новый ХранилищеЗначения(Статус));
УстановитьСтатусОбновленияКонфигурации(Статус);
КонецПроцедуры
Процедура СброситьСтатусОбновленияКонфигурации() Экспорт
Константы.СтатусОбновленияКонфигурации.Установить(Новый ХранилищеЗначения(Неопределено));
УстановитьСтатусОбновленияКонфигурации(Неопределено);
КонецПроцедуры
@@ -854,7 +835,9 @@
ФайловаяСистема.УдалитьВременныйКаталог(ВременныйКаталог);
Исключение
ФайловаяСистема.УдалитьВременныйФайл(ИмяАрхива);
ФайловаяСистема.УдалитьВременныйКаталог(ВременныйКаталог);
Если ИсправлениеНайдено Тогда
ФайловаяСистема.УдалитьВременныйКаталог(ВременныйКаталог);
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
@@ -961,4 +944,20 @@
КонецФункции
Функция СтатусОбновленияКонфигурации()
ЗначениеХранилища = Константы.СтатусОбновленияКонфигурации.Получить();
Если ЗначениеХранилища = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Возврат ЗначениеХранилища.Получить();
КонецФункции
Функция УстановитьСтатусОбновленияКонфигурации(Знач Статус)
Константы.СтатусОбновленияКонфигурации.Установить(Новый ХранилищеЗначения(Статус));
КонецФункции
#КонецОбласти
@@ -16,8 +16,6 @@
Функция НаличиеАктивныхСоединений(СообщенияДляЖурналаРегистрации = Неопределено) Экспорт
ВыполнитьПроверкуПравДоступа("Администрирование", Метаданные);
// Запись накопленных событий ЖР.
ЖурналРегистрации.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации);
Возврат СоединенияИБ.КоличествоСеансовИнформационнойБазы(Ложь, Ложь) > 1;
КонецФункции
@@ -43,7 +41,7 @@
КонецПроцедуры
Функция ТекстыМакетов(ИнтерактивныйРежим, СообщенияДляЖурналаРегистрации, ВыполнитьОтложенныеОбработчики, ЭтоОтложенноеОбновление) Экспорт
Функция ТекстыМакетов(СообщенияДляЖурналаРегистрации, ИнтерактивныйРежим, ВыполнитьОтложенныеОбработчики, ЭтоОтложенноеОбновление) Экспорт
ВыполнитьПроверкуПравДоступа("Администрирование", Метаданные);
@@ -61,6 +59,10 @@
ТекстыМакетов[СвойстваМакета.Ключ] = Обработки.УстановкаОбновлений.ПолучитьМакет(СвойстваМакета.Ключ).ПолучитьТекст();
КонецЦикла;
Если ИнтерактивныйРежим Тогда
ТекстыМакетов.ЗаставкаОбновленияКонфигурации = СформироватьТекстЗаставки(ТекстыМакетов.ЗаставкаОбновленияКонфигурации);
КонецЕсли;
// Файл обновления конфигурации: main.js.
ШаблонСкрипта = Обработки.УстановкаОбновлений.ПолучитьМакет("МакетФайлаОбновленияКонфигурации");
@@ -82,6 +84,44 @@
КонецФункции
Функция СформироватьТекстЗаставки(Знач ШаблонТекста)
ПараметрыТекста = Новый Соответствие;
ПараметрыТекста["[ЗаголовокЗаставки]"] = НСтр("ru = 'Обновление конфигурации ""1С:Предприятие""...'");
ПараметрыТекста["[ТекстЗаставки]"] = НСтр("ru = 'Пожалуйста, подождите.
|<br/> Выполняется обновление конфигурации.'");
ПараметрыТекста["[Шаг1Инициализация]"] = НСтр("ru = 'Инициализация'");
ПараметрыТекста["[Шаг2ЗавершениеРаботы]"] = НСтр("ru = 'Завершение работы пользователей'");
ПараметрыТекста["[Шаг3СозданиеРезервнойКопии]"] = НСтр("ru = 'Создание резервной копии информационной базы'");
ПараметрыТекста["[Шаг4ОбновлениеКонфигурации]"] = НСтр("ru = 'Обновление конфигурации информационной базы'");
ПараметрыТекста["[Шаг5ОбновлениеИБ]"] = НСтр("ru = 'Выполнение обработчиков обновления'");
ПараметрыТекста["[Шаг6ОтложенноеОбновление]"] = НСтр("ru = 'Выполнение отложенных обработчиков обновления'");
ПараметрыТекста["[Шаг7СжатиеТаблиц]"] = НСтр("ru = 'Сжатие таблиц информационной базы'");
ПараметрыТекста["[Шаг8РазрешениеПодключений]"] = НСтр("ru = 'Разрешение подключения новых соединений'");
ПараметрыТекста["[Шаг9Завершение]"] = НСтр("ru = 'Завершение'");
ПараметрыТекста["[Шаг10Восстановление]"] = НСтр("ru = 'Восстановление информационной базы'");
ПараметрыТекста["[Шаг41Загрузка]"] = НСтр("ru = 'Загрузка файла обновления в основную базу'");
ПараметрыТекста["[Шаг42ОбновлениеКонфигурации]"] = НСтр("ru = 'Обновление конфигурации информационной базы'");
ПараметрыТекста["[Шаг43ОбновлениеИБ]"] = НСтр("ru = 'Выполнение обработчиков обновления'");
ПараметрыТекста["[ПроцессПрерван]"] = НСтр("ru = 'Внимание: процесс обновления был прерван, и информационная база осталась заблокированной.'");
ПараметрыТекста["[ПроцессПрерванПодсказка]"] = НСтр("ru = 'Для разблокирования информационной базы воспользуйтесь консолью кластера серверов или запустите ""1С:Предприятие"".'");
Возврат ПодставитьПараметрыВТекст(ШаблонТекста, ПараметрыТекста);;
КонецФункции
Функция ПодставитьПараметрыВТекст(Знач Текст, Знач ПараметрыТекста)
Результат = Текст;
Для каждого ПараметрТекста Из ПараметрыТекста Цикл
Результат = СтрЗаменить(Результат, ПараметрТекста.Ключ, ПараметрТекста.Значение);
КонецЦикла;
Возврат Результат;
КонецФункции
Процедура СохранитьНастройкиОбновленияКонфигурации(Настройки) Экспорт
ВыполнитьПроверкуПравДоступа("Администрирование", Метаданные);
ОбновлениеКонфигурации.СохранитьНастройкиОбновленияКонфигурации(Настройки);
@@ -257,19 +257,19 @@
// Записывает в каталог скрипта файл-маркер ошибки.
//
Процедура ЗаписатьФайлПротоколаОшибкиИЗавершитьРаботу(КаталогСкрипта, ПодробноеПредставлениеОшибки) Экспорт
Процедура ЗаписатьФайлПротоколаОшибкиИЗавершитьРаботу(Знач ИмяКаталога, Знач ПодробноеПредставлениеОшибки) Экспорт
#Если Не ВебКлиент Тогда
Если СтрНайти(ПараметрЗапуска, "ВыполнитьОбновлениеИЗавершитьРаботу") Тогда
Если СтрНайти(ПараметрЗапуска, "ВыполнитьОбновлениеИЗавершитьРаботу") > 0 Тогда
ФайлИнфо = Новый Файл(КаталогСкрипта);
Если ФайлИнфо.Существует() Тогда // АПК:566 синхронные вызовы вне веб-клиента разрешены;
Каталог = Новый Файл(ИмяКаталога);
Если Каталог.Существует() И Каталог.ЭтоКаталог() Тогда // АПК:566 синхронные вызовы не в веб-клиенте допустимы.
ФайлРегистрации = Новый ЗаписьТекста(КаталогСкрипта + "error.txt");
ФайлРегистрации = Новый ЗаписьТекста(ИмяКаталога + "error.txt");
ФайлРегистрации.Закрыть();
ФайлЛога = Новый ЗаписьТекста(КаталогСкрипта + "templog.txt", КодировкаТекста.Системная);
ФайлЛога = Новый ЗаписьТекста(ИмяКаталога + "templog.txt", КодировкаТекста.Системная);
ФайлЛога.Записать(ПодробноеПредставлениеОшибки);
ФайлЛога.Закрыть();
@@ -412,9 +412,9 @@
Процедура ВставитьПараметрСкрипта(Знач ИмяПараметра, Знач ЗначениеПараметра, Форматировать, ОбластьПараметров)
Если Форматировать = Истина Тогда
Если Форматировать Тогда
ЗначениеПараметра = Форматировать(ЗначениеПараметра);
ИначеЕсли Форматировать = Ложь Тогда
ИначеЕсли ТипЗнч(ЗначениеПараметра) = Тип("Булево") Тогда
ЗначениеПараметра = ?(ЗначениеПараметра, "true", "false");
КонецЕсли;
ОбластьПараметров = СтрЗаменить(ОбластьПараметров, "[" + ИмяПараметра + "]", ЗначениеПараметра);
@@ -729,7 +729,6 @@
Параметры.Свойство("КаталогПлатформы", КаталогПлатформы);
КаталогПрограммы = ?(ЗначениеЗаполнено(КаталогПлатформы), КаталогПлатформы, КаталогПрограммы());
ИмяИсполняемогоФайлаКонфигуратора = КаталогПрограммы + СтандартныеПодсистемыКлиент.ИмяИсполняемогоФайлаПриложения(Истина);
ИмяИсполняемогоФайлаКлиента = КаталогПрограммы + СтандартныеПодсистемыКлиент.ИмяИсполняемогоФайлаПриложения();
ПутьКCOMСоединителю = КаталогПрограммы() + "comcntr.dll";
@@ -750,10 +749,9 @@
АдресЭлектроннойПочты = ?(Параметры.РежимОбновления = 2 И Параметры.ВыслатьОтчетНаПочту, Параметры.АдресЭлектроннойПочты, "");
// Вызов КаталогВременныхФайлов вместо ПолучитьИмяВременногоФайла, так как каталог не должен удаляться
// Используется КаталогВременныхФайлов вместо ПолучитьИмяВременногоФайла, так как каталог не должен удаляться
// автоматически при завершении клиентского приложения.
// В него сохраняются исполняемые файлы, лог выполнения и резервная копия, при определенной настройке.
// В него сохраняются исполняемые файлы, лог выполнения и резервная копия (при определенной настройке).
КаталогВременныхФайловОбновления = КаталогВременныхФайлов() + "1Cv8Update." + Формат(ОбщегоНазначенияКлиент.ДатаСеанса(), "ДФ=ггММддЧЧммсс") + "\";
Если Параметры.СоздаватьРезервнуюКопию = 1 Тогда
@@ -768,8 +766,8 @@
ВыполнитьОтложенныеОбработчики = Ложь;
ЭтоОтложенноеОбновление = (Параметры.РежимОбновления = 2);
ТекстыМакетов = ОбновлениеКонфигурацииВызовСервера.ТекстыМакетов(ИнтерактивныйРежим,
ПараметрыПриложения["СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации"], ВыполнитьОтложенныеОбработчики, ЭтоОтложенноеОбновление);
ТекстыМакетов = ОбновлениеКонфигурацииВызовСервера.ТекстыМакетов(ПараметрыПриложения["СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации"],
ИнтерактивныйРежим, ВыполнитьОтложенныеОбработчики, ЭтоОтложенноеОбновление);
ИмяПользователя = ПараметрыАдминистрирования.ИмяАдминистратораИнформационнойБазы;
Если ЭтоОтложенноеОбновление Тогда
@@ -778,7 +776,7 @@
ИмяЗадачи = ИмяЗадачиScheduleService(КодЗадачи);
КонецЕсли;
ПараметрыЗапускаПредприятияИзСкрипта = ОбщегоНазначенияСлужебныйКлиент.ПараметрыЗапускаПредприятияИзСкрипта();
ПараметрыЗапускаПредприятия = ОбщегоНазначенияСлужебныйКлиент.ПараметрыЗапускаПредприятияИзСкрипта();
ОбластьПараметров = ТекстыМакетов.ОбластьПараметров;
ВставитьПараметрСкрипта("ИмяИсполняемогоФайлаКонфигуратора" , ИмяИсполняемогоФайлаКонфигуратора , Истина, ОбластьПараметров);
@@ -800,7 +798,8 @@
ВставитьПараметрСкрипта("ВыполнятьСжатиеТаблицИБ" , ЭтоФайловаяБаза , Ложь , ОбластьПараметров);
ВставитьПараметрСкрипта("ВыполнитьОтложенныеОбработчики" , ВыполнитьОтложенныеОбработчики , Ложь , ОбластьПараметров);
ВставитьПараметрСкрипта("ИмяЗадачиПланировщикаЗадач" , ИмяЗадачи , Истина, ОбластьПараметров);
ВставитьПараметрСкрипта("ПараметрыЗапускаПредприятия" , ПараметрыЗапускаПредприятияИзСкрипта , Истина, ОбластьПараметров);
ВставитьПараметрСкрипта("ПараметрыЗапускаПредприятия" , ПараметрыЗапускаПредприятия , Истина, ОбластьПараметров);
ВставитьПараметрСкрипта("КодРазблокировки" , "ПакетноеОбновлениеКонфигурацииИБ" , Ложь, ОбластьПараметров);
СоздатьКаталог(КаталогВременныхФайловОбновления);
ИнформацияОбИсправлениях = ИнформацияОбИсправлениях(Параметры, КаталогВременныхФайловОбновления);
@@ -826,13 +825,10 @@
ФайлСкрипта.Записать(КаталогВременныхФайловОбновления + "helpers.js", КодировкаФайловПрограммыОбновления());
Если ИнтерактивныйРежим Тогда
// Вспомогательный файл: splash.png.
БиблиотекаКартинок.ЗаставкаВнешнейОперации.Записать(КаталогВременныхФайловОбновления + "splash.png");
// Вспомогательный файл: splash.ico.
БиблиотекаКартинок.ЗначокЗаставкиВнешнейОперации.Записать(КаталогВременныхФайловОбновления + "splash.ico");
// Вспомогательный файл: progress.gif.
БиблиотекаКартинок.ДлительнаяОперация48.Записать(КаталогВременныхФайловОбновления + "progress.gif");
// Главный файл заставки: splash.hta.
ИмяГлавногоФайлаСкрипта = КаталогВременныхФайловОбновления + "splash.hta";
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
@@ -8,7 +8,7 @@
#Область ПрограммныйИнтерфейс
// Выполняет отправку почтовых сообщений.
// Выполняет отправку одного письма.
// Функция может вызвать исключение, которое требуется обработать.
//
// Параметры:
@@ -30,16 +30,19 @@
КонецФункции
// Выполняет отправку почтовых сообщений.
// Выполняет отправку нескольких писем.
// Функция может вызвать исключение, которое требуется обработать.
// Если до наступления ошибки отправки было успешно отправлено хотя бы одно письмо, исключение не вызывается,
// поэтому при обработке результата функции необходимо проверять какие письма не были отправлены.
//
// Параметры:
// УчетнаяЗапись - СправочникСсылка.УчетныеЗаписиЭлектроннойПочты - почтовый ящик, с которого необходимо
// выполнить отправку.
// Письма - Массив - коллекция почтовых сообщений. Элемент коллекции - ИнтернетПочтовоеСообщение.
//
// ТекстОшибки - Строка - сообщение об ошибке в случае, когда удалось отправить не все письма.
//
// Возвращаемое значение:
// Соответствие - результаты отправки писем:
// Соответствие - отправленные письма:
// * Ключ - ИнтернетПочтовоеСообщение - отправляемое письмо;
// * Значение - Структура - результат отправки письма:
// ** ОшибочныеПолучатели - Соответствие - адреса получателей с ошибками:
@@ -48,9 +51,9 @@
// ** ИдентификаторПисьмаSMTP - Строка - уникальный идентификатор письма, присвоенный при отправке по протоколу SMTP.
// ** ИдентификаторПисьмаIMAP - Строка - уникальный идентификатор письма, присвоенный при отправке по протоколу IMAP.
//
Функция ОтправитьПисьма(УчетнаяЗапись, Письма) Экспорт
Функция ОтправитьПисьма(УчетнаяЗапись, Письма, ТекстОшибки = Неопределено) Экспорт
Возврат РаботаСПочтовымиСообщениямиСлужебный.ОтправитьПисьма(УчетнаяЗапись, Письма);
Возврат РаботаСПочтовымиСообщениямиСлужебный.ОтправитьПисьма(УчетнаяЗапись, Письма, ТекстОшибки);
КонецФункции
@@ -1222,7 +1222,7 @@
КонецФункции
// См. РаботаСПочтовымиСообщениями.ОтправитьПисьма.
Функция ОтправитьПисьма(УчетнаяЗапись, Письма) Экспорт
Функция ОтправитьПисьма(УчетнаяЗапись, Письма, ТекстОшибки = Неопределено) Экспорт
РеквизитыОтправителя = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(УчетнаяЗапись, "ИмяПользователя,АдресЭлектроннойПочты,ОтправлятьСкрытыеКопииПисемНаЭтотАдрес,ИспользоватьДляПолучения");
@@ -1247,9 +1247,8 @@
Исключение
Если ПротоколПолученияПочты = ПротоколИнтернетПочты.IMAP И Не РеквизитыОтправителя.ИспользоватьДляПолучения Тогда
ТекстОшибки = НСтр("ru = 'Не удалось подключиться к серверу IMAP. Проверьте настройки учетной записи.'", ОбщегоНазначения.КодОсновногоЯзыка());
ЗаписьЖурналаРегистрации(НСтр("ru = 'Работа с почтовыми сообщениями.Отправка почты'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.УчетныеЗаписиЭлектроннойПочты, УчетнаяЗапись,
ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ИмяСобытияОтправкаПочты(), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.УчетныеЗаписиЭлектроннойПочты,
УчетнаяЗапись, ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ПротоколПолученияПочты = ПротоколИнтернетПочты.POP3;
Соединение.Подключиться(Профиль, ПротоколПолученияПочты);
Иначе
@@ -1277,10 +1276,6 @@
РезультатОтправкиПисьма.Вставить("ИдентификаторПисьмаSMTP", "");
РезультатОтправкиПисьма.Вставить("ИдентификаторПисьмаIMAP", "");
ОшибочныеПолучатели = Соединение.Послать(Письмо, ОбрабатыватьТексты, ПротоколИнтернетПочты.SMTP);
РезультатОтправкиПисьма.Вставить("ОшибочныеПолучатели", ОшибочныеПолучатели);
РезультатОтправкиПисьма.Вставить("ИдентификаторПисьмаSMTP", Письмо.ИдентификаторСообщения);
Если ПротоколПолученияПочты = ПротоколИнтернетПочты.IMAP Тогда
Соединение.Послать(Письмо, ОбрабатыватьТексты, ПротоколИнтернетПочты.IMAP);
РезультатОтправкиПисьма.Вставить("ИдентификаторПисьмаIMAP", Письмо.ИдентификаторСообщения);
@@ -1292,6 +1287,23 @@
Соединение.УстановитьФлагиСообщений(ФлагиПисем);
КонецЕсли;
ОшибочныеПолучатели = Соединение.Послать(Письмо, ОбрабатыватьТексты, ПротоколИнтернетПочты.SMTP);
РезультатОтправкиПисьма.Вставить("ОшибочныеПолучатели", ОшибочныеПолучатели);
РезультатОтправкиПисьма.Вставить("ИдентификаторПисьмаSMTP", Письмо.ИдентификаторСообщения);
Если ОшибочныеПолучатели.Количество() > 0 Тогда
ТекстыОшибок = Новый Массив;
Для Каждого ОшибочныйПолучатель Из ОшибочныеПолучатели Цикл
Получатель = ОшибочныйПолучатель.Ключ;
ТекстОшибки = ОшибочныйПолучатель.Значение;
ТекстыОшибок.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1: %2'"), Получатель, ТекстОшибки));
КонецЦикла;
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Отправка письма следующим получателям не выполнена:
|%1'", ОбщегоНазначения.КодОсновногоЯзыка()), СтрСоединить(ТекстыОшибок, Символы.ПС));
ЗаписьЖурналаРегистрации(ИмяСобытияОтправкаПочты(), УровеньЖурналаРегистрации.Ошибка, , УчетнаяЗапись, ТекстОшибки);
КонецЕсли;
РезультатыОтправкиПисем.Вставить(Письмо, РезультатОтправкиПисьма);
КонецЦикла;
Исключение
@@ -1302,7 +1314,14 @@
// в вызывающий код передается исходное исключение, которое будет там обработано.
КонецПопытки;
ВызватьИсключение;
Если РезультатыОтправкиПисем.Количество() = 0 Тогда
ВызватьИсключение;
Иначе
ЗаписьЖурналаРегистрации(ИмяСобытияОтправкаПочты(), УровеньЖурналаРегистрации.Ошибка, ,
УчетнаяЗапись, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
Возврат РезультатыОтправкиПисем;
КонецЕсли;
КонецПопытки;
Соединение.Отключиться();
@@ -1312,6 +1331,12 @@
КонецФункции
Функция ИмяСобытияОтправкаПочты()
Возврат НСтр("ru = 'Работа с почтовыми сообщениями.Отправка почты'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецФункции
Функция ПодготовитьПисьмо(УчетнаяЗапись, ПараметрыПисьма) Экспорт
Письмо = Новый ИнтернетПочтовоеСообщение;
@@ -4041,12 +4041,16 @@
ТекстЗапросов = "";
Для каждого КлючИЗначение Из ИменаСправочников Цикл
Если ЗначениеЗаполнено(ТекстЗапросов) Тогда
ТекстЗапросов = ТекстЗапросов + "
|ОБЪЕДИНИТЬ ВСЕ
|
|";
|ОБЪЕДИНИТЬ ВСЕ
|
|";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ПрисоединенныеФайлы.Ссылка
@@ -4054,8 +4058,15 @@
| &ИмяСправочника КАК ПрисоединенныеФайлы
|ГДЕ
| ПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайлов";
Если Метаданные.Справочники[КлючИЗначение.Ключ].Иерархический = Истина Тогда
ТекстЗапроса = ТекстЗапроса + "
| И Не ПрисоединенныеФайлы.ЭтоГруппа";
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяСправочника", "Справочник." + КлючИЗначение.Ключ);
ТекстЗапросов = ТекстЗапросов + ТекстЗапроса;
КонецЦикла;
Запрос = Новый Запрос(ТекстЗапросов);
@@ -5587,7 +5598,7 @@
+ ИмяМетода + " " + Href + Символы.ПС + Символы.ПС + XMLЗапрос + Символы.ПС;
КонецЕсли;
СтруктураОбмена.Ответ = HTTP.ВызватьHTTPМетод(ИмяМетода, HTTPЗапросWebdav);
ВызватьМетодHTTP(СтруктураОбмена, HTTP, ИмяМетода, HTTPЗапросWebdav);
Если ТекстПротокола <> Неопределено Тогда
ТекстПротокола = ТекстПротокола + ?(ПустаяСтрока(ТекстПротокола), "", Символы.ПС) + "HTTP RESPONSE "
@@ -5602,6 +5613,24 @@
КонецФункции
Процедура ВызватьМетодHTTP(СтруктураОбмена, HTTP, ИмяМетода, HTTPЗапросWebdav, ТекущаяПопытка = 1)
СтруктураОбмена.Ответ = HTTP.ВызватьHTTPМетод(ИмяМетода, HTTPЗапросWebdav);
Если СтруктураОбмена.Ответ.КодСостояния = 429
И ТекущаяПопытка <= 5 Тогда
ТекущееВремя = ТекущаяДатаСеанса();
ВремяОжидания = ТекущееВремя + 2;
Пока ТекущееВремя <= ВремяОжидания Цикл
ТекущееВремя = ТекущаяДатаСеанса();
КонецЦикла;
ВызватьМетодHTTP(СтруктураОбмена, HTTP, ИмяМетода, HTTPЗапросWebdav, ТекущаяПопытка + 1)
КонецЕсли;
КонецПроцедуры
// Обновляет уникальный служебный реквизит файла на сервере webdav.
Функция ОбновитьUID1CФайла(Href, UID1C, ПараметрыСинхронизации)
@@ -601,6 +601,9 @@
Файл.Описание = СведенияОФайле.Комментарий;
Файл.ИндексКартинки = РаботаСФайламиСлужебныйКлиентСервер.ПолучитьИндексПиктограммыФайла(Неопределено);
Файл.ХранитьВерсии = СведенияОФайле.ХранитьВерсии;
Файл.Расширение = СведенияОФайле.РасширениеБезТочки;
Файл.Размер = СведенияОФайле.Размер;
Файл.ДатаМодификацииУниверсальная = СведенияОФайле.ВремяИзмененияУниверсальное;
ИспользованиеПолнотекстовогоПоиска = Метаданные.СвойстваОбъектов.ИспользованиеПолнотекстовогоПоиска.Использовать;
Если Метаданные.Справочники[СведенияОФайле.ИмяСправочникаХранилищаФайлов].ПолнотекстовыйПоиск = ИспользованиеПолнотекстовогоПоиска Тогда
@@ -540,15 +540,18 @@
КонецЕсли;
Если РегламентноеЗадание <> Неопределено Тогда
Представление = РегламентноеЗадание.Наименование;
Если ПустаяСтрока(РегламентноеЗадание.Наименование) Тогда
Если РегламентноеЗадание.Предопределенное Тогда
Представление = РегламентноеЗадание.Метаданные.Синоним;
Иначе
Представление = РегламентноеЗадание.Наименование;
Если ПустаяСтрока(Представление) Тогда
Представление = РегламентноеЗадание.Метаданные.Имя;
КонецЕсли
Если ПустаяСтрока(РегламентноеЗадание.Наименование) Тогда
Представление = РегламентноеЗадание.Метаданные.Синоним;
КонецЕсли;
КонецЕсли;
Если ПустаяСтрока(Представление) Тогда
Представление = РегламентноеЗадание.Метаданные.Имя;
КонецЕсли
Иначе
Представление = ТекстНеОпределено();
КонецЕсли;
@@ -502,4 +502,59 @@
КонецФункции
Функция ПодготовитьОбщиеПараметрыСкрипта(Знач ПараметрыСкрипта) Экспорт
ПараметрыПодключения = ПараметрыСкрипта.ПараметрыСкрипта;
СтрокаСоединенияИнформационнойБазы = ПараметрыПодключения.СтрокаСоединенияИнформационнойБазы + ПараметрыПодключения.СтрокаПодключения;
Если СтрЗаканчиваетсяНа(СтрокаСоединенияИнформационнойБазы, ";") Тогда
СтрокаСоединенияИнформационнойБазы = Лев(СтрокаСоединенияИнформационнойБазы, СтрДлина(СтрокаСоединенияИнформационнойБазы) - 1);
КонецЕсли;
КаталогПрограммы = ?(ПустаяСтрока(КаталогПрограммы), КаталогПрограммы(), КаталогПрограммы);
ИмяИсполняемогоФайлаПрограммы = КаталогПрограммы + ПараметрыСкрипта.ИмяФайлаПрограммы;
// Определение пути к информационной базе.
ПризнакФайловогоРежима = Неопределено;
ПутьКИнформационнойБазе = СоединенияИБКлиентСервер.ПутьКИнформационнойБазе(ПризнакФайловогоРежима, 0);
ПараметрПутиКИнформационнойБазе = ?(ПризнакФайловогоРежима, "/F", "/S") + ПутьКИнформационнойБазе;
СтрокаПутиКИнформационнойБазе = ?(ПризнакФайловогоРежима, ПутьКИнформационнойБазе, "");
ПараметрыТекста = Новый Соответствие;
ПараметрыТекста["[ИмяИсполняемогоФайлаПрограммы]"] = ПодготовитьТекст(ИмяИсполняемогоФайлаПрограммы);
ПараметрыТекста["[ПараметрПутиКИнформационнойБазе]"] = ПодготовитьТекст(ПараметрПутиКИнформационнойБазе);
ПараметрыТекста["[СтрокаПутиКФайлуИнформационнойБазы]"] = ПодготовитьТекст(ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СтрЗаменить(СтрокаПутиКИнформационнойБазе, """", "")));
ПараметрыТекста["[СтрокаСоединенияИнформационнойБазы]"] = ПодготовитьТекст(СтрокаСоединенияИнформационнойБазы);
ПараметрыТекста["[ИмяАдминистратора]"] = ПодготовитьТекст(ИмяПользователя());
ПараметрыТекста["[СобытиеЖурналаРегистрации]"] = ПодготовитьТекст(ПараметрыСкрипта.СобытиеЖурналаРегистрации);
ПараметрыТекста["[СоздаватьРезервнуюКопию]"] = "true";
ПараметрыТекста["[ИмяCOMСоединителя]"] = ПодготовитьТекст(ПараметрыСкрипта.ИмяCOMСоединителя);
ПараметрыТекста["[ИспользоватьCOMСоединитель]"] = ?(ПараметрыСкрипта.ЭтоБазоваяВерсияКонфигурации, "false", "true");
ПараметрыТекста["[ПараметрыЗапускаПредприятия]"] = ПодготовитьТекст(ПараметрыСкрипта.ПараметрыЗапускаПредприятия);
ПараметрыТекста["[КодРазблокировки]"] = "РезервноеКопирование";
Возврат ПараметрыТекста;
КонецФункции
Функция ПодставитьПараметрыВТекст(Знач Текст, Знач ПараметрыТекста) Экспорт
Результат = Текст;
Для каждого ПараметрТекста Из ПараметрыТекста Цикл
Результат = СтрЗаменить(Результат, ПараметрТекста.Ключ, ПараметрТекста.Значение);
КонецЦикла;
Возврат Результат;
КонецФункции
Функция ПодготовитьТекст(Знач Текст) Экспорт
Текст = СтрЗаменить(Текст, "\", "\\");
Текст = СтрЗаменить(Текст, """", "\""");
Текст = СтрЗаменить(Текст, "'", "\'");
Возврат "'" + Текст + "'";
КонецФункции
#КонецОбласти
@@ -2136,11 +2136,15 @@
Списки.Добавить(ПолноеИмя);
ДобавленныеСписки.Вставить(ПолноеИмя, Истина);
КонецЦикла;
УправлениеДоступомСлужебный.ДобавитьЗависимыеСписки(Списки, ДобавленныеСписки);
НедоступныеСписки = Новый Массив;
УправлениеДоступомСлужебный.ДобавитьЗависимыеСписки(Списки, ДобавленныеСписки, НедоступныеСписки);
ПараметрыПланирования = УправлениеДоступомСлужебный.ПараметрыПланированияОбновленияДоступа();
ПараметрыПланирования.РазрешенныеКлючиДоступа = Ложь;
ПараметрыПланирования.Описание = "ОтключитьОбновлениеКлючейДоступаПриОкончанииОтключения";
УправлениеДоступомСлужебный.ЗапланироватьОбновлениеДоступа(Списки, ПараметрыПланирования);
Если НедоступныеСписки.Количество() > 0 Тогда
УправлениеДоступомСлужебный.ЗапланироватьОбновлениеДоступа(НедоступныеСписки, ПараметрыПланирования);
КонецЕсли;
КонецЕсли;
ОтключениеОбновления.ИзмененныеСписки = Новый ХранилищеЗначения(Новый Соответствие);
УправлениеДоступомСлужебныйПовтИсп.КэшИзмененныхСписковПриОтключенномОбновленииКлючейДоступа().Очистить();
@@ -10160,6 +10160,7 @@
|ДатаДобавленияОбщегоЗадания");
Задания.Индексы.Добавить("ИдентификаторСписка, ДляВнешнихПользователей, ЭтоОбновлениеПрав");
Задания.Индексы.Добавить("ИдентификаторСписка, ДляВнешнихПользователей, ЭтоОбновлениеПрав, ЭтоОбработкаУстаревшихЭлементов");
Задания.Индексы.Добавить("Удалить, ЭтоОбработкаУстаревшихЭлементов");
Задания.Индексы.Добавить("УровеньЗависимости");
@@ -17208,18 +17209,6 @@
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗначенияГруппДоступа.ЗначениеДоступа
| ИЗ
| РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ГруппыДоступа КАК ГруппыДоступа
| ПО (ГруппыДоступа.Ссылка = ЗначенияГруппДоступа.ГруппаДоступа)
| И (ТИПЗНАЧЕНИЯ(ЗначенияГруппДоступа.ЗначениеДоступа) = ТИП(Справочник.ГруппыПользователей))
| ГДЕ
| &УточнениеПланаЗапроса
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ГруппыПользователей.Ссылка
| ИЗ
@@ -17247,6 +17236,32 @@
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗначенияГруппДоступа.ЗначениеДоступа КАК Ссылка
|ПОМЕСТИТЬ ГруппыПользователейКакЗначенияДоступа
|ИЗ
| РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ГруппыДоступа КАК ГруппыДоступа
| ПО (ГруппыДоступа.Ссылка = ЗначенияГруппДоступа.ГруппаДоступа)
| И (ТИПЗНАЧЕНИЯ(ЗначенияГруппДоступа.ЗначениеДоступа) = ТИП(Справочник.ГруппыПользователей))
|ГДЕ
| &УточнениеПланаЗапроса
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СоставыГруппПользователей.ГруппаПользователей КАК ГруппаПользователей,
| СоставыГруппПользователей.Пользователь КАК Пользователь
|ИЗ
| РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ГруппыПользователейКакЗначенияДоступа КАК ГруппыПользователейКакЗначенияДоступа
| ПО (ГруппыПользователейКакЗначенияДоступа.Ссылка = СоставыГруппПользователей.ГруппаПользователей)
| И (&УточнениеПланаЗапроса)
|ИТОГИ ПО
| ГруппаПользователей
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПользователиГруппыДоступа.Ссылка КАК ГруппаДоступа,
| ПользователиГруппыДоступа.Пользователь КАК Участник
|ИЗ
@@ -17339,26 +17354,25 @@
КонецЦикла;
ПараметрыОбновления.Вставить("ПраваГруппДоступаСписка", ПраваГруппДоступаСписка);
ПользователиГруппПользователей = Новый Соответствие;
ПараметрыОбновления.Вставить("ПользователиГруппПользователей", Новый Соответствие);
Если ПараметрыОбновления.РассчитыватьПраваПользователей Тогда
Дерево = РезультатыЗапроса[4].Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Для Каждого Строка Из Дерево.Строки Цикл
ПользователиГруппыПользователей = Новый Соответствие;
Для Каждого Подстрока Из Строка.Строки Цикл
ПользователиГруппыПользователей.Вставить(Подстрока.Пользователь, Истина);
КонецЦикла;
ПользователиГруппПользователей.Вставить(Строка.ГруппаПользователей, ПользователиГруппыПользователей);
КонецЦикла;
ЗаполнитьПользователейГруппПользователей(ПараметрыОбновления.ПользователиГруппПользователей,
РезультатыЗапроса[4]);
КонецЕсли;
ПараметрыОбновления.Вставить("ГруппыПользователейКакЗначенияДоступа", Новый Соответствие);
Если ПараметрыОбновления.РассчитыватьПраваПользователей Тогда
ЗаполнитьПользователейГруппПользователей(ПараметрыОбновления.ГруппыПользователейКакЗначенияДоступа,
РезультатыЗапроса[6]);
КонецЕсли;
ПараметрыОбновления.Вставить("ПользователиГруппПользователей", ПользователиГруппПользователей);
УчастникиГруппДоступа = Новый Соответствие;
ГруппыПользователейГруппДоступа = Новый Соответствие;
ТипГруппыПользователей = ПараметрыОбновления.ТипГруппыПользователей;
ТипГруппыПользователей = ПараметрыОбновления.ТипГруппыПользователей;
ПользователиГруппПользователей = ПараметрыОбновления.ПользователиГруппПользователей;
Если ПараметрыОбновления.РассчитыватьПраваПользователей Тогда
Дерево = РезультатыЗапроса[5].Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Дерево = РезультатыЗапроса[7].Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Для Каждого Строка Из Дерево.Строки Цикл
УчастникиГруппыДоступа = Новый Соответствие;
ГруппыПользователейГруппыДоступа = Новый Соответствие;
@@ -17384,6 +17398,20 @@
КонецПроцедуры
// Для процедуры ЗаполнитьПраваИУчастниковГруппДоступаСписка.
Процедура ЗаполнитьПользователейГруппПользователей(ПользователиГруппПользователей, РезультатЗапроса)
Дерево = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Для Каждого Строка Из Дерево.Строки Цикл
ПользователиГруппыПользователей = Новый Соответствие;
Для Каждого Подстрока Из Строка.Строки Цикл
ПользователиГруппыПользователей.Вставить(Подстрока.Пользователь, Истина);
КонецЦикла;
ПользователиГруппПользователей.Вставить(Строка.ГруппаПользователей, ПользователиГруппыПользователей);
КонецЦикла;
КонецПроцедуры
// Для процедуры ОбновитьПраваПорцииКлючейДоступаСписка.
Процедура ЗаполнитьЗначенияГруппДоступаДляРасчетаПрав(ПараметрыОбновления)
@@ -17588,7 +17616,7 @@
ПраваПоВладельцамНастроекПрав = Новый Соответствие;
Если ПараметрыОбновления.ЕстьВладельцыНастроекПрав Тогда
НомерТаблицы = НомерТаблицы + 3;
НомерТаблицы = НомерТаблицы + 5;
Дерево = РезультатыЗапроса[НомерТаблицы].Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Для Каждого Строка Из Дерево.Строки Цикл
ПраваПоВладельцуНастроекПрав = Новый Соответствие;
@@ -17623,22 +17651,23 @@
И Не ПараметрыОбновления.ЕстьЗависимыеСпискиБезЗаписиКлючейДоступа;
Контекст = Новый Структура;
Контекст.Вставить("ЗначенияТаблицКлюча", ЗначенияТаблицКлюча);
Контекст.Вставить("БезЗаписиПраваЧтение", БезЗаписиПраваЧтение);
Контекст.Вставить("РеквизитыТаблицКлюча", ПараметрыОбновления.РеквизитыТаблицКлюча);
Контекст.Вставить("УчастникиГруппДоступа", ПараметрыОбновления.УчастникиГруппДоступа);
Контекст.Вставить("ГруппыПользователейГруппДоступа", ПараметрыОбновления.ГруппыПользователейГруппДоступа);
Контекст.Вставить("ПользователиГруппПользователей", ПараметрыОбновления.ПользователиГруппПользователей);
Контекст.Вставить("ПраваНаСпискиВедущихКлючейДоступа", ПараметрыОбновления.ПраваНаСпискиВедущихКлючейДоступа);
Контекст.Вставить("ПраваНаВедущиеКлючиДоступа", ПараметрыОбновления.ПраваНаВедущиеКлючиДоступа);
Контекст.Вставить("ПраваНаВедущиеСписки", ПараметрыОбновления.ПраваНаВедущиеСписки);
Контекст.Вставить("ПраваПоВладельцамНастроекПрав", ПараметрыОбновления.ПраваПоВладельцамНастроекПрав);
Контекст.Вставить("РассчитыватьПраваПользователей", ПараметрыОбновления.РассчитыватьПраваПользователей);
Контекст.Вставить("ТипГруппыДоступа", ПараметрыОбновления.ТипГруппыДоступа);
Контекст.Вставить("ПустаяГруппаДоступа", ПараметрыОбновления.ПустаяГруппаДоступа);
Контекст.Вставить("ТипПользователя", ПараметрыОбновления.ТипПользователя);
Контекст.Вставить("ТипГруппыПользователей", ПараметрыОбновления.ТипГруппыПользователей);
Контекст.Вставить("ТипыВладельцевНастроекПрав", ПараметрыОбновления.ТипыВладельцевНастроекПрав);
Контекст.Вставить("ЗначенияТаблицКлюча", ЗначенияТаблицКлюча);
Контекст.Вставить("БезЗаписиПраваЧтение", БезЗаписиПраваЧтение);
Контекст.Вставить("РеквизитыТаблицКлюча", ПараметрыОбновления.РеквизитыТаблицКлюча);
Контекст.Вставить("УчастникиГруппДоступа", ПараметрыОбновления.УчастникиГруппДоступа);
Контекст.Вставить("ГруппыПользователейГруппДоступа", ПараметрыОбновления.ГруппыПользователейГруппДоступа);
Контекст.Вставить("ГруппыПользователейКакЗначенияДоступа", ПараметрыОбновления.ГруппыПользователейКакЗначенияДоступа);
Контекст.Вставить("ПользователиГруппПользователей", ПараметрыОбновления.ПользователиГруппПользователей);
Контекст.Вставить("ПраваНаСпискиВедущихКлючейДоступа", ПараметрыОбновления.ПраваНаСпискиВедущихКлючейДоступа);
Контекст.Вставить("ПраваНаВедущиеКлючиДоступа", ПараметрыОбновления.ПраваНаВедущиеКлючиДоступа);
Контекст.Вставить("ПраваНаВедущиеСписки", ПараметрыОбновления.ПраваНаВедущиеСписки);
Контекст.Вставить("ПраваПоВладельцамНастроекПрав", ПараметрыОбновления.ПраваПоВладельцамНастроекПрав);
Контекст.Вставить("РассчитыватьПраваПользователей", ПараметрыОбновления.РассчитыватьПраваПользователей);
Контекст.Вставить("ТипГруппыДоступа", ПараметрыОбновления.ТипГруппыДоступа);
Контекст.Вставить("ПустаяГруппаДоступа", ПараметрыОбновления.ПустаяГруппаДоступа);
Контекст.Вставить("ТипПользователя", ПараметрыОбновления.ТипПользователя);
Контекст.Вставить("ТипГруппыПользователей", ПараметрыОбновления.ТипГруппыПользователей);
Контекст.Вставить("ТипыВладельцевНастроекПрав", ПараметрыОбновления.ТипыВладельцевНастроекПрав);
ЧтениеРазрешеноДляВсехГруппДоступа = Истина;
ИзменениеРазрешеноДляВсехГруппДоступа = Истина;
@@ -18424,7 +18453,7 @@
КонецЕсли;
Для Каждого УказаннаяГруппаПользователей Из УказанныеГруппыПользователей.Значения Цикл
ПользователиГруппы = Контекст.ПользователиГруппПользователей.Получить(УказаннаяГруппаПользователей.Ключ);
ПользователиГруппы = Контекст.ГруппыПользователейКакЗначенияДоступа.Получить(УказаннаяГруппаПользователей.Ключ);
Если ПользователиГруппы = Неопределено Тогда
Продолжить;
КонецЕсли;
@@ -19258,11 +19287,13 @@
КонецФункции
// Для процедуры УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа.
Процедура ДобавитьЗависимыеСписки(Списки, ДобавленныеСписки) Экспорт
Процедура ДобавитьЗависимыеСписки(Списки, ДобавленныеСписки, НедоступныеСписки) Экспорт
ИсходныеСписки = Новый ФиксированныйМассив(Списки);
ДействующиеПараметры = ДействующиеПараметрыОграниченияДоступа(Неопределено, Неопределено, Ложь);
НенайденныеСписки = Новый Массив;
Для Каждого ИсходныйСписок Из ИсходныеСписки Цикл
Свойства = ДействующиеПараметры.ВедущиеСписки.Получить(ИсходныйСписок);
Если Свойства = Неопределено Тогда
@@ -19270,12 +19301,25 @@
КонецЕсли;
Для Каждого КлючИЗначение Из Свойства.ЗависимыеСписки Цикл
Если ДобавленныеСписки.Получить(КлючИЗначение.Ключ) = Неопределено Тогда
Списки.Добавить(КлючИЗначение.Ключ);
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(КлючИЗначение.Ключ);
Если ОбъектМетаданных = Неопределено Тогда
НенайденныеСписки.Добавить(КлючИЗначение.Ключ);
Иначе
ПолноеИмя = ОбъектМетаданных.ПолноеИмя();
Списки.Добавить(ПолноеИмя);
ДобавленныеСписки.Вставить(ПолноеИмя, Истина);
КонецЕсли;
ДобавленныеСписки.Вставить(КлючИЗначение.Ключ, Истина);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если НенайденныеСписки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
НедоступныеСписки = ВсеИдентификаторыСПодобнымиПолнымиИменами(НенайденныеСписки);
КонецПроцедуры
Функция ОписаниеОграниченийДанных() Экспорт
@@ -20824,12 +20868,16 @@
СтандартныеПодсистемыСервер.ПотребоватьПерезапускСеансаПоПричинеДинамическогоОбновленияВерсииПрограммы();
КонецЕсли;
Списки = СпискиСИзменениемВерсий(ВерсииОграниченийСписков);
НедоступныеСписки = Новый Массив;
Списки = СпискиСИзменениемВерсий(ВерсииОграниченийСписков, НедоступныеСписки);
ПараметрыПланирования = ПараметрыПланированияОбновленияДоступа();
ПараметрыПланирования.ВерсииОграниченийСписков = ВерсииОграниченийСписков;
ПараметрыПланирования.ЭтоПродолжениеОбновления = Истина;
ПараметрыПланирования.Описание = "НоваяВерсияПараметровОграниченияДоступа";
ЗапланироватьОбновлениеДоступа(Списки, ПараметрыПланирования);
Если НедоступныеСписки.Количество() > 0 Тогда
ЗапланироватьОбновлениеДоступа(НедоступныеСписки, ПараметрыПланирования);
КонецЕсли;
НаборЗаписей.Записать();
ЕстьИзменения = Истина;
@@ -20900,7 +20948,7 @@
КонецПроцедуры
// Для функции НоваяВерсияПараметровОграниченияДоступа.
Функция СпискиСИзменениемВерсий(НовыеВерсииОграниченийСписков)
Функция СпискиСИзменениемВерсий(НовыеВерсииОграниченийСписков, НедоступныеСписки)
ОписаниеВерсии = ОписаниеПоследнейВерсии();
Если Не ЗначениеЗаполнено(ОписаниеВерсии.Версия) Тогда
@@ -20944,24 +20992,75 @@
Таблица.Свернуть("Список, Версия", "ВидИзменения");
Списки = Новый Массив;
НенайденныеСписки = Новый Массив;
Для Каждого Строка Из Таблица Цикл
Если Строка.ВидИзменения = 0 Тогда
Продолжить;
КонецЕсли;
Если Списки.Найти(Строка.Список) <> Неопределено Тогда
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(Строка.Список);
Если ОбъектМетаданных = Неопределено Тогда
НенайденныеСписки.Добавить(Строка.Список);
Продолжить;
КонецЕсли;
Если Метаданные.НайтиПоПолномуИмени(Строка.Список) = Неопределено Тогда
ПолноеИмя = ОбъектМетаданных.ПолноеИмя();
Если Списки.Найти(ПолноеИмя) <> Неопределено Тогда
Продолжить;
КонецЕсли;
Списки.Добавить(Строка.Список);
Списки.Добавить(ПолноеИмя);
КонецЦикла;
Если НенайденныеСписки.Количество() > 0 Тогда
НедоступныеСписки = ВсеИдентификаторыСПодобнымиПолнымиИменами(НенайденныеСписки);
КонецЕсли;
Возврат Списки;
КонецФункции
// Для функции СпискиСИзменениемВерсий и для процедуры ДобавитьЗависимыеСписки.
Функция ВсеИдентификаторыСПодобнымиПолнымиИменами(ПолныеИмена)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Идентификаторы.Ссылка КАК Ссылка
|ИЗ
| Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
|ГДЕ
| &УсловияОтбораИОМ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Идентификаторы.Идентификатор
|ИЗ
| РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК Идентификаторы
|ГДЕ
| &УсловияОтбораИОР";
УсловияОтбораИОМ = Новый Массив;
УсловияОтбораИОР = Новый Массив;
НомерПараметра = 1;
Для Каждого ПолноеИмя Из ПолныеИмена Цикл
ИмяПараметра = "ПолноеИмя" + Формат(НомерПараметра, "ЧГ=");
Запрос.УстановитьПараметр(ИмяПараметра, ПолноеИмя);
УсловияОтбораИОМ.Добавить("Идентификаторы.ПолноеИмя ПОДОБНО &" + ИмяПараметра);
УсловияОтбораИОР.Добавить("Идентификаторы.ПолноеИмяОбъекта ПОДОБНО &" + ИмяПараметра);
НомерПараметра = НомерПараметра + 1;
КонецЦикла;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловияОтбораИОМ",
СтрСоединить(УсловияОтбораИОМ, Символы.ПС + " ИЛИ "));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловияОтбораИОР",
СтрСоединить(УсловияОтбораИОР, Символы.ПС + " ИЛИ "));
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
// Для процедуры ХранимыеПараметрыОграниченияДоступа.
Функция ВерсияСтруктурыКэша()
@@ -25655,7 +25754,16 @@
Процедура ДобавитьТекстЗапросаУстаревшихЭлементовДанных(Результат, Контекст)
Если Результат.ЭтоСсылочныйТип Тогда
Если Результат.ДляВнешнихПользователей Тогда
ТипСсылки = ТипСсылкиПоПолномуИмениМетаданных(Результат.Список);
ТипыСсылок = УправлениеДоступомСлужебныйПовтИсп.ТипыПоляТаблицы("ОпределяемыйТип.ВладелецЗначенийКлючейДоступа");
Если ТипыСсылок.Получить(ТипСсылки) = Неопределено Тогда
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 0
| КлючиДоступаКОбъектам.Объект КАК ТекущаяСсылка
|ИЗ
| РегистрСведений.КлючиДоступаКОбъектам КАК КлючиДоступаКОбъектам";
ИначеЕсли Результат.ДляВнешнихПользователей Тогда
Если Результат.БезЗаписиКлючейДоступа
И Не Результат.БезЗаписиКлючейДоступаДляПользователейИВнешнихПользователей Тогда
ТекстЗапроса =
@@ -26614,12 +26722,11 @@
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| НастройкиПрав.Объект КАК ВладелецНастроекПрав,
| НастройкиПрав.Пользователь КАК ВладелецПрав,
| МАКСИМУМ(НастройкиПрав.ИзменениеРазрешено) = ИСТИНА
| И МАКСИМУМ(НастройкиПрав.ИзменениеЗапрещено) = ЛОЖЬ КАК Изменение
| НастройкиПравЧтения.Объект КАК Объект,
| НастройкиПравЧтения.Пользователь КАК Пользователь
|ПОМЕСТИТЬ НастройкиПравЧтения
|ИЗ
| (ВЫБРАТЬ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| НаследованиеНастроек.Объект КАК Объект,
| ВЫБОР
| КОГДА НаследованиеНастроек.Объект В
@@ -26631,9 +26738,7 @@
| ИНАЧЕ СоставыГруппПользователей.ГруппаПользователей
| КОНЕЦ КАК Пользователь,
| ИСТИНА КАК ЧтениеРазрешено,
| ЛОЖЬ КАК ЧтениеЗапрещено,
| ЛОЖЬ КАК ИзменениеРазрешено,
| ЛОЖЬ КАК ИзменениеЗапрещено
| ЛОЖЬ КАК ЧтениеЗапрещено
| ИЗ
| РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
@@ -26649,13 +26754,11 @@
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| НаследованиеНастроек.Объект,
| СоставыГруппПользователей.Пользователь,
| ЛОЖЬ,
| ИСТИНА,
| ЛОЖЬ,
| ЛОЖЬ
| ИСТИНА
| ИЗ
| РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
@@ -26671,12 +26774,25 @@
| ПО (СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь)
| И (ТИПЗНАЧЕНИЯ(СоставыГруппПользователей.Пользователь) = ТИП(Справочник.Пользователи))
| И (СоставыГруппПользователей.Используется)
| И (СоставыГруппПользователей.Пользователь.ИдентификаторПользователяИБ <> &ПустойУникальныйИдентификатор)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| НаследованиеНастроек.Объект,
| И (СоставыГруппПользователей.Пользователь.ИдентификаторПользователяИБ <> &ПустойУникальныйИдентификатор)) КАК НастройкиПравЧтения
|
|СГРУППИРОВАТЬ ПО
| НастройкиПравЧтения.Объект,
| НастройкиПравЧтения.Пользователь
|
|ИМЕЮЩИЕ
| МАКСИМУМ(НастройкиПравЧтения.ЧтениеРазрешено) = ИСТИНА И
| МАКСИМУМ(НастройкиПравЧтения.ЧтениеЗапрещено) = ЛОЖЬ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| НастройкиПравИзменения.Объект КАК Объект,
| НастройкиПравИзменения.Пользователь КАК Пользователь
|ПОМЕСТИТЬ НастройкиПравИзменения
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| НаследованиеНастроек.Объект КАК Объект,
| ВЫБОР
| КОГДА НаследованиеНастроек.Объект В
| (ВЫБРАТЬ
@@ -26685,11 +26801,9 @@
| ОбъектыСЗапрещениемИзменения)
| ТОГДА СоставыГруппПользователей.Пользователь
| ИНАЧЕ СоставыГруппПользователей.ГруппаПользователей
| КОНЕЦ,
| ЛОЖЬ,
| ЛОЖЬ,
| ИСТИНА,
| ЛОЖЬ
| КОНЕЦ КАК Пользователь,
| ИСТИНА КАК ИзменениеРазрешено,
| ЛОЖЬ КАК ИзменениеЗапрещено
| ИЗ
| РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
@@ -26702,15 +26816,17 @@
| И (ТИПЗНАЧЕНИЯ(СоставыГруппПользователей.Пользователь) = ТИП(Справочник.Пользователи))
| И (СоставыГруппПользователей.Используется)
| И (СоставыГруппПользователей.Пользователь.ИдентификаторПользователяИБ <> &ПустойУникальныйИдентификатор)
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НастройкиПравЧтения КАК НастройкиПравЧтения
| ПО (НастройкиПравЧтения.Объект = НаследованиеНастроек.Объект)
| И (НастройкиПравЧтения.Пользователь = СоставыГруппПользователей.ГруппаПользователей
| ИЛИ НастройкиПравЧтения.Пользователь = СоставыГруппПользователей.Пользователь)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| НаследованиеНастроек.Объект,
| СоставыГруппПользователей.Пользователь,
| ЛОЖЬ,
| ЛОЖЬ,
| ЛОЖЬ,
| ИСТИНА
| ИЗ
| РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
@@ -26728,15 +26844,46 @@
| ПО (СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь)
| И (ТИПЗНАЧЕНИЯ(СоставыГруппПользователей.Пользователь) = ТИП(Справочник.Пользователи))
| И (СоставыГруппПользователей.Используется)
| И (СоставыГруппПользователей.Пользователь.ИдентификаторПользователяИБ <> &ПустойУникальныйИдентификатор)) КАК НастройкиПрав
| И (СоставыГруппПользователей.Пользователь.ИдентификаторПользователяИБ <> &ПустойУникальныйИдентификатор)
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НастройкиПравЧтения КАК НастройкиПравЧтения
| ПО (НастройкиПравЧтения.Объект = НаследованиеНастроек.Объект)
| И (НастройкиПравЧтения.Пользователь = СоставыГруппПользователей.ГруппаПользователей
| ИЛИ НастройкиПравЧтения.Пользователь = СоставыГруппПользователей.Пользователь)) КАК НастройкиПравИзменения
|
|СГРУППИРОВАТЬ ПО
| НастройкиПравИзменения.Объект,
| НастройкиПравИзменения.Пользователь
|
|ИМЕЮЩИЕ
| МАКСИМУМ(НастройкиПравИзменения.ИзменениеРазрешено) = ИСТИНА И
| МАКСИМУМ(НастройкиПравИзменения.ИзменениеЗапрещено) = ЛОЖЬ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| НастройкиПрав.Объект КАК ВладелецНастроекПрав,
| НастройкиПрав.Пользователь КАК ВладелецПрав,
| МАКСИМУМ(НастройкиПрав.Изменение) КАК Изменение
|ИЗ
| (ВЫБРАТЬ
| НастройкиПравЧтения.Объект КАК Объект,
| НастройкиПравЧтения.Пользователь КАК Пользователь,
| ЛОЖЬ КАК Изменение
| ИЗ
| НастройкиПравЧтения КАК НастройкиПравЧтения
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| НастройкиПравИзменения.Объект,
| НастройкиПравИзменения.Пользователь,
| ИСТИНА
| ИЗ
| НастройкиПравИзменения КАК НастройкиПравИзменения) КАК НастройкиПрав
|
|СГРУППИРОВАТЬ ПО
| НастройкиПрав.Объект,
| НастройкиПрав.Пользователь
|
|ИМЕЮЩИЕ
| МАКСИМУМ(НастройкиПрав.ЧтениеРазрешено) = ИСТИНА И
| МАКСИМУМ(НастройкиПрав.ЧтениеЗапрещено) = ЛОЖЬ
|ИТОГИ ПО
| ВладелецНастроекПрав";
@@ -33580,6 +33727,7 @@
| РегистрСведений.ОбновлениеКлючейДоступаКДанным КАК ОбновлениеКлючей
|ГДЕ
| ОбновлениеКлючей.ДатаИзмененияЗаписиРегистра >= &ДатаПоследнегоОбновления
| И ОбновлениеКлючей.Список <> НЕОПРЕДЕЛЕНО
|
|СГРУППИРОВАТЬ ПО
| ОбновлениеКлючей.Список,
@@ -375,10 +375,11 @@
// Добавляет или изменяет контактную информацию у владельца контактной информации.
//
// Параметры:
// СсылкаИлиОбъект - Произвольный - ссылка или объект владелец контактной информации.
// Для ссылки после добавления контактной информации владелец будет записан.
// Если передан объект, то контактная информация будет добавлена без записи.
// Для сохранения изменений объект необходимо будет записать отдельно.
// СсылкаИлиОбъект - СправочникСсылка, ДокументСсылка, СправочникОбъект, ДокументОбъект - ссылка или объект владелец
// контактной информации. Для ссылки после добавления контактной информации
// владелец будет записан. Если передан объект, то контактная информация будет
// добавлена без записи. Для сохранения изменений объект необходимо будет
// записать отдельно.
// КонтактнаяИнформация - ТаблицаЗначений - таблица, содержащая контактную информацию
// Описание колонок см. функцию НоваяКонтактнаяИнформация.
// Важно! Если передана пустая таблица значений и указан режим замещения, то
@@ -845,7 +846,7 @@
ОбъектыСГруппировкойПоТипам = Новый Соответствие;
Для каждого Ссылка Из МассивОбъектов Цикл
ТипОбъекта = ТипЗнч(Ссылка);
НайденныйОбъект = ОбъектыСГруппировкойПоТипам.Получить(ТипОбъекта);
НайденныйОбъект = ОбъектыСГруппировкойПоТипам.Получить(ТипОбъекта); // Массив
Если НайденныйОбъект = Неопределено Тогда
НаборСсылок = Новый Массив;
НаборСсылок.Добавить(Ссылка);
@@ -1244,7 +1245,7 @@
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Если РезультатЗапроса.Следующий() Тогда
ДанныеЗаполнения = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(РезультатЗапроса);
ДанныеЗаполнения = ОписаниеСтраныМира(ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(РезультатЗапроса));
КонецЕсли;
Если ДанныеЗаполнения = Неопределено
@@ -1369,9 +1370,9 @@
// Вызывается из модуля формы объекта-владельца КИ при внедрении подсистемы.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма объекта-владельца, предназначенная для вывода контактной
// информации.
// Объект - Произвольный - Объект-владелец контактной информации. Если это ссылка, то контактная информация
// Форма - ФормаКлиентскогоПриложения - Форма объекта-владельца, предназначенная для вывода контактной информации.
// Объект - СправочникСсылка, ДокументСсылка, СправочникОбъект, ДокументОбъект - Объект-владелец контактной информации.
// Если это ссылка, то контактная информация
// будет получена из объекта по ссылке, иначе из таблицы КонтактнаяИнформация объекта.
// ДополнительныеПараметры - Структура - Описание настроек контактной информации - см. ПараметрыКонтактнойИнформации.
// Предыдущее название параметра ИмяЭлементаДляРазмещения. Устарел, следует
@@ -1676,7 +1677,7 @@
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма объекта-владельца, предназначенная для вывода контактной информации.
// Объект - Произвольный - Объект-владелец контактной информации.
// Объект - СправочникСсылка, ДокументСсылка, СправочникОбъект, ДокументОбъект - Объект-владелец контактной информации.
// ИмяЭлементаДляРазмещения - Строка - группа, куда будут размещены элементы контактной информации.
//
Процедура ПриЧтенииНаСервере(Форма, Объект, ИмяЭлементаДляРазмещения = "ГруппаКонтактнаяИнформация") Экспорт
@@ -1775,7 +1776,7 @@
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма объекта-владельца, предназначенная для вывода контактной информации.
// Объект - Произвольный - Объект-владелец контактной информации.
// Объект - СправочникСсылка, ДокументСсылка, СправочникОбъект, ДокументОбъект - Объект-владелец контактной информации.
//
Процедура ПослеЗаписиНаСервере(Форма, Объект) Экспорт
@@ -1815,7 +1816,7 @@
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма объекта-владельца, предназначенная для вывода контактной информации.
// Объект - Произвольный - Объект-владелец контактной информации.
// Объект - СправочникСсылка, ДокументСсылка, СправочникОбъект, ДокументОбъект - Объект-владелец контактной информации.
// Отказ - Булево - Если Истина, то во время проверки были обнаружены ошибки.
//
Процедура ОбработкаПроверкиЗаполненияНаСервере(Форма, Объект, Отказ) Экспорт
@@ -2015,8 +2016,10 @@
Форма[Результат.ПервыйЭлемент] = ПервыйЭлемент.Представление;
Форма[Результат.ВторойЭлемент] = ВторойЭлемент.Представление;
Форма.Элементы[Результат.ПервыйЭлемент].РасширеннаяПодсказка.Заголовок = ПервыйЭлемент.Комментарий;
Форма.Элементы[Результат.ВторойЭлемент].РасширеннаяПодсказка.Заголовок = ВторойЭлемент.Комментарий;
ПервыйЭлементКомментарий = Форма.Элементы[Результат.ПервыйЭлемент]; // ДекорацияФормы
ПервыйЭлементКомментарий.РасширеннаяПодсказка.Заголовок = ПервыйЭлемент.Комментарий;
ВторойЭлементКомментарий = Форма.Элементы[Результат.ВторойЭлемент]; // ДекорацияФормы
ВторойЭлементКомментарий.РасширеннаяПодсказка.Заголовок = ВторойЭлемент.Комментарий;
КонецЕсли;
@@ -2260,6 +2263,7 @@
// Параметры - Структура - содержит структуру с полями:
// * Код - Строка - Код вида контактной информации для идентификации элемента.
// * Наименование - Строка - Наименование вида контактной информации.
// * Имя - Строка - Имя предопределенного вида контактной информации;
// * Используется - Булево - Признак использования вида контактной информации. Значение по умолчанию Истина.
//
// Возвращаемое значение:
@@ -2273,24 +2277,7 @@
Объект.Родитель = Параметры.Группа;
Объект.Используется = Параметры.Используется;
Если ПустаяСтрока(Параметры.Наименование) Тогда
Наименования = УправлениеКонтактнойИнформациейСлужебныйПовтИсп.НаименованияВидовКонтактнойИнформации();
Для каждого Язык Из Метаданные.Языки Цикл
Представление = Наименования[Язык.КодЯзыка][СокрЛП(Объект.ИмяПредопределенногоВида)];
Если ЗначениеЗаполнено(Представление) Тогда
Если Язык = Метаданные.ОсновнойЯзык Тогда
Объект.Наименование = Представление;
Иначе
НоваяСтрока = Объект.Представления.Добавить();
НоваяСтрока.КодЯзыка = Язык.КодЯзыка;
НоваяСтрока.Наименование = Представление;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе
Объект.Наименование = Параметры.Наименование;
КонецЕсли;
УстановитьНаименованиеВидаКонтактнойИнформации(Объект, Параметры.Наименование);
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(Объект);
@@ -2309,63 +2296,65 @@
// Если добавляется предопределенный вид КИ к уже существующим в ИБ, не рекомендуется назначать порядок в явном виде.
//
// Параметры:
// Параметры - Структура - свойства вида контактной информации:
// * Вид - СправочникСсылка.ВидыКонтактнойИнформации, Строка - Ссылка на вид контактной информации или
// идентификатор предопределенного элемента.
// * Тип - ПеречислениеСсылка.ТипыКонтактнойИнформации - Тип контактной информации или его
// идентификатор.
// * Порядок - Число, Неопределено - Порядок вида контактной информации, положение в
// списке относительно других элементов:
// Неопределено - не переназначать;
// 0 - назначить автоматически;
// Число > 0 - назначить указанный порядок.
// * МожноИзменятьСпособРедактирования - Булево - Истина, если есть возможность изменять способ
// Параметры - Структура - свойства вида контактной информации:
// * Имя - Имя предопределенного вида контактной информации;
// * Наименование - Наименование вида контактной информации;
// * Вид - СправочникСсылка.ВидыКонтактнойИнформации, Строка - Ссылка на вид контактной информации или
// идентификатор предопределенного элемента.
// * Тип - ПеречислениеСсылка.ТипыКонтактнойИнформации - Тип контактной информации или его
// идентификатор.
// * Порядок - Число, Неопределено - Порядок вида контактной информации, положение в
// списке относительно других элементов:
// Неопределено - не переназначать;
// 0 - назначить автоматически;
// Число > 0 - назначить указанный порядок.
// * МожноИзменятьСпособРедактирования - Булево - Истина, если есть возможность изменять способ
// редактирования только в диалоге, Ложь - иначе.
// * ВидРедактирования - Строка - Определят вид редактирования значения. Варианты: "ПолеВводаИДиалог", "ПолеВвода", "Диалог".
// * ВидРедактирования - Строка - Определят вид редактирования значения. Варианты: "ПолеВводаИДиалог", "ПолеВвода", "Диалог".
// Если "Диалог", то форме выводится гиперссылка с представлением контактной
// информации, по нажатию на которую, открывается форма соответствующего типа КИ.
// Свойство применимо только для контактной информации с типом: Адрес, Телефон, Факс.
// Если "ПолеВвода", то на форме выводится поле ввода.
// Если "ПолеВводаИДиалог", то доступен ввод в поле и в форме соответствующего типа КИ.
// * ОбязательноеЗаполнение - Булево - Истина, если требуется обязательное
// * ОбязательноеЗаполнение - Булево - Истина, если требуется обязательное
// заполнение поля, Ложь - иначе.
// * РазрешитьВводНесколькихЗначений - Булево - Признак возможности использования дополнительных
// * РазрешитьВводНесколькихЗначений - Булево - Признак возможности использования дополнительных
// полей ввода для данного вида.
// * ЗапретитьРедактированиеПользователем - Булево - Признак недоступности редактирования
// * ЗапретитьРедактированиеПользователем - Булево - Признак недоступности редактирования
// пользователем свойства вида контактной
// информации.
// * ХранитьИсториюИзменений - Булево - Признак хранения истории изменений вида
// * ХранитьИсториюИзменений - Булево - Признак хранения истории изменений вида
// контактной информации.
// Значение по умолчанию Ложь.
// * Используется - Булево - Признак использования вида контактной информации.
// * Используется - Булево - Признак использования вида контактной информации.
// Значение по умолчанию Истина.
// * ВидПоляДругое - Строка - Внешний вид поля типа "Другое". Возможные значения:
// * ВидПоляДругое - Строка - Внешний вид поля типа "Другое". Возможные значения:
// МногострочноеШирокое, ОднострочноеШирокое, ОднострочноеУзкое.
// Значение по умолчанию - ОднострочноеШирокое.
// * РедактированиеТолькоВДиалоге - Булево - Устарело. Следует использовать ВидРедактирования.
// * РедактированиеТолькоВДиалоге - Булево - Устарело. Следует использовать ВидРедактирования.
// Если Истина, то форме выводится гиперссылка с представлением контактной
// информации по нажатию на которую, открывается форма соответствующего
// типа КИ. Свойство применимо только для контактной информации с типом:
// Адрес, Телефон, Факс, ВебСтраница. Значение по умолчанию - Ложь.
// * НастройкиПроверки - Структура, Неопределено - Настройки проверки вида контактной информации.
// Для типа Адрес - Структура, содержащая поля:
// * ТолькоНациональныйАдрес - Булево - Истина, если возможен ввод только российских адресов.
// * ПроверятьКорректность - Булево - Истина, если требуется запрещать пользователю записывать
// * НастройкиПроверки - Структура, Неопределено - Настройки проверки вида контактной информации.
// Для типа Адрес - Структура, содержащая поля:
// * ТолькоНациональныйАдрес - Булево - Истина, если возможен ввод только российских адресов.
// * ПроверятьКорректность - Булево - Истина, если требуется запрещать пользователю записывать
// некорректные адреса.
// * ЗапрещатьВводНекорректного - Булево - Устарел. Все переданные значения игнорируются.
// * ЗапрещатьВводНекорректного - Булево - Устарел. Все переданные значения игнорируются.
// Для запрета пользователю записывать некорректные адреса
// следует использовать параметр ПроверятьКорректность.
// * СкрыватьНеактуальныеАдреса - Булево - Истина, если не требуется показывать неактуальные адреса при
// * СкрыватьНеактуальныеАдреса - Булево - Истина, если не требуется показывать неактуальные адреса при
// вводе (только если ТолькоНациональныйАдрес = Истина).
// * ВключатьСтрануВПредставление - Булево - Истина, если требуется включать наименование страны в
// * ВключатьСтрануВПредставление - Булево - Истина, если требуется включать наименование страны в
// представление адреса.
// Для типа АдресЭлектроннойПочты - Структура, содержащая поля:
// * ПроверятьКорректность - Булево - Истина, если требуется запрещать пользователю записывать
// Для типа АдресЭлектроннойПочты - Структура, содержащая поля:
// * ПроверятьКорректность - Булево - Истина, если требуется запрещать пользователю записывать
// некорректный адрес электронной почты.
// * ЗапрещатьВводНекорректного - Булево - Устарел. Все переданные значения игнорируются.
// * ЗапрещатьВводНекорректного - Булево - Устарел. Все переданные значения игнорируются.
// Для запрета пользователю записывать некорректные адреса
// следует использовать параметр ПроверятьКорректность.
// Для остальных типов или для задания настроек по умолчанию используется Неопределено.
// Для остальных типов или для задания настроек по умолчанию используется Неопределено.
//
Процедура УстановитьСвойстваВидаКонтактнойИнформации(Параметры) Экспорт
@@ -2381,24 +2370,7 @@
|ВидРедактирования, ОбязательноеЗаполнение, РазрешитьВводНесколькихЗначений,
|ЗапретитьРедактированиеПользователем, Используется, ХранитьИсториюИзменений ,МеждународныйФорматАдреса");
Если ПустаяСтрока(Параметры.Наименование) Тогда
Наименования = УправлениеКонтактнойИнформациейСлужебныйПовтИсп.НаименованияВидовКонтактнойИнформации();
Для каждого Язык Из Метаданные.Языки Цикл
Представление = Наименования[Язык.КодЯзыка][СокрЛП(Объект.ИмяПредопределенногоВида)];
Если ЗначениеЗаполнено(Представление) Тогда
Если Язык = Метаданные.ОсновнойЯзык Тогда
Объект.Наименование = Представление;
Иначе
НоваяСтрока = Объект.Представления.Добавить();
НоваяСтрока.КодЯзыка = Язык.КодЯзыка;
НоваяСтрока.Наименование = Представление;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе
Объект.Наименование = Параметры.Наименование;
КонецЕсли;
УстановитьНаименованиеВидаКонтактнойИнформации(Объект, Параметры.Наименование);
Если ЗначениеЗаполнено(Параметры.Имя) Тогда
Объект.ИмяПредопределенногоВида = Параметры.Имя;
@@ -2896,7 +2868,8 @@
ПараметрыКонтактнойИнформации = ПараметрыКонтактнойИнформацииФормы(Форма.ПараметрыКонтактнойИнформации, ИмяЭлементаДляРазмещения);
Если НЕ Элемент.Значение Тогда
Для каждого ЭлементКонтекстногоМеню Из ПараметрыКонтактнойИнформации.СписокДобавляемыхЭлементов Цикл
Если ЭлементКонтекстногоМеню.Значение.Ссылка = Элемент.Ключ Тогда
Значение = ЭлементКонтекстногоМеню.Значение; // СправочникСсылка.ВидыКонтактнойИнформации
Если Значение.Ссылка = Элемент.Ключ Тогда
ПараметрыКонтактнойИнформации.СписокДобавляемыхЭлементов.Удалить(ЭлементКонтекстногоМеню);
Продолжить;
КонецЕсли;
@@ -2910,7 +2883,8 @@
ПараметрыКонтактнойИнформации = ПараметрыКонтактнойИнформацииФормы(Форма.ПараметрыКонтактнойИнформации, ИмяЭлементаДляРазмещения);
Если ПараметрыКонтактнойИнформации.СписокДобавляемыхЭлементов.Количество() = 0 Тогда
// Делаем кнопку Добавить недоступной, т.к. контекстное меню пустое.
Форма.Элементы.КонтактнаяИнформацияДобавитьПолеВвода.Доступность = Ложь;
КонтактнаяИнформацияДобавитьПолеВвода = Форма.Элементы.КонтактнаяИнформацияДобавитьПолеВвода; // ГруппаФормы
КонтактнаяИнформацияДобавитьПолеВвода.Доступность = Ложь;
КонецЕсли;
КонецЕсли;
@@ -2953,7 +2927,9 @@
// Виды контактной информации объекта.
//
// Параметры:
// ВладелецКонтактнойИнформации - ЛюбаяСсылка, Объект, ДанныеФормыСтруктура
// ВладелецКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, СправочникОбъект.ВидыКонтактнойИнформации,
// ДанныеФормыСтруктура - Виды контактной информации. Где:
// * Ссылка - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на вид контактной информации.
//
// Возвращаемое значение:
// ТаблицаЗначений - виды контактной информации.
@@ -3203,14 +3179,15 @@
Команда.Картинка = БиблиотекаКартинок.ДобавитьЭлементСписка;
Команда.Действие = "Подключаемый_КонтактнаяИнформацияВыполнитьКоманду";
Форма.ПараметрыКонтактнойИнформации[ИмяЭлементаДляРазмещения].ДобавленныеЭлементы.Добавить(ИмяКоманды, 9, Истина);
ПараметрыКонтактнойИнформацииЭлемента = Форма.ПараметрыКонтактнойИнформации[ИмяЭлементаДляРазмещения]; // см. ПараметрыВыводаКонтактнойИнформации
ПараметрыКонтактнойИнформацииЭлемента.ДобавленныеЭлементы.Добавить(ИмяКоманды, 9, Истина);
Кнопка = Форма.Элементы.Добавить(ИмяКоманды,Тип("КнопкаФормы"), ГруппаКоманды);
Кнопка.Доступность = НЕ Форма.Элементы[ИмяЭлементаДляРазмещения].ТолькоПросмотр;
Кнопка.Заголовок = НСтр("ru = 'Добавить'");
Команда.ИзменяетСохраняемыеДанные = Истина;
Кнопка.ИмяКоманды = ИмяКоманды;
Форма.ПараметрыКонтактнойИнформации[ИмяЭлементаДляРазмещения].ДобавленныеЭлементы.Добавить(ИмяКоманды, 2, Ложь);
ПараметрыКонтактнойИнформацииЭлемента.ДобавленныеЭлементы.Добавить(ИмяКоманды, 2, Ложь);
КонецПроцедуры
@@ -3223,7 +3200,7 @@
И ГруппаДляРазмещения.Вид = ВидГруппыФормы.Страница
И Форма.Элементы.Найти("КонтактнаяИнформацияЗаглушка") = Неопределено Тогда
ГруппаСтраниц = ГруппаДляРазмещения.Родитель;
ГруппаСтраниц = ГруппаДляРазмещения.Родитель; // ГруппаФормы
ЗаголовокСтраницы = ?(ЗначениеЗаполнено(ГруппаДляРазмещения.Заголовок), ГруппаДляРазмещения.Заголовок, ГруппаДляРазмещения.Имя);
ЗаголовокГруппыСтраниц = ?(ЗначениеЗаполнено(ГруппаСтраниц.Заголовок), ГруппаСтраниц.Заголовок, ГруппаСтраниц.Имя);
@@ -3274,7 +3251,7 @@
НайденнаяСтрока.Значение = УправлениеКонтактнойИнформациейСлужебный.СтруктураВСтрокуJSON(КонтактнаяИнформацияПоПолям);
КонецЕсли;
ПолеВвода = Форма.Элементы.Найти(ИмяРеквизита);
ПолеВвода = Форма.Элементы.Найти(ИмяРеквизита); // ДополнениеЭлементаФормы
ПолеВвода.РасширеннаяПодсказка.Заголовок = НайденнаяСтрока.Комментарий;
КонецПроцедуры
@@ -3800,7 +3777,8 @@
Процедура ДобавитьРеквизитВОписание(Форма, СтрокаКонтактнойИнформации, ДанныеВидовКонтактнойИнформации, ЭтоНовыйВидКИ,
ЭтоРеквизитТабличнойЧасти = Ложь, ЗаполнятьЗначениеРеквизита = Истина, ИмяЭлементаДляРазмещения = "ГруппаКонтактнаяИнформация")
НоваяСтрока = Форма.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.Добавить();
ТаблицаОписанияДополнительныхРеквизитов = Форма.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов; // ТаблицаЗначений
НоваяСтрока = ТаблицаОписанияДополнительныхРеквизитов.Добавить();
НоваяСтрока.ИмяРеквизита = СтрокаКонтактнойИнформации.ИмяРеквизита;
НоваяСтрока.Вид = СтрокаКонтактнойИнформации.Вид;
НоваяСтрока.Тип = СтрокаКонтактнойИнформации.Тип;
@@ -3843,7 +3821,8 @@
Если ЭтоНовыйВидКИ И ДанныеВидаКонтактнойИнформации.РазрешитьВводНесколькихЗначений И Не ЭтоРеквизитТабличнойЧасти И Не ДанныеВидаКонтактнойИнформации.ПометкаУдаления Тогда
ПараметрыКонтактнойИнформации = ПараметрыКонтактнойИнформацииФормы(Форма.ПараметрыКонтактнойИнформации, ИмяЭлементаДляРазмещения);
ПараметрыКонтактнойИнформации.СписокДобавляемыхЭлементов.Добавить(ДанныеВидаКонтактнойИнформации, СтрокаКонтактнойИнформации.Вид.Наименование);
Вид = СтрокаКонтактнойИнформации.Вид; // СправочникСсылка.ВидыКонтактнойИнформации
ПараметрыКонтактнойИнформации.СписокДобавляемыхЭлементов.Добавить(ДанныеВидаКонтактнойИнформации, Вид.Наименование);
КонецЕсли;
КонецПроцедуры
@@ -3888,26 +3867,6 @@
КонецФункции
Процедура ЗаполнитьТаблицуВидовКИ(ТаблицаВидов, ВетвьДерева)
Для каждого СтрокаВида Из ВетвьДерева.Строки Цикл
Группа = ТаблицаВидов.Добавить();
Группа.Имя = СтрокаВида.Имя;
Группа.Наименование = СтрокаВида.Наименование;
Если СтрокаВида.Родитель <> Неопределено Тогда
Группа.Группа = ВетвьДерева.Наименование;
Группа.ИмяГруппы = ВетвьДерева.Имя;
КонецЕсли;
Если СтрокаВида.Строки.Количество() > 0 Тогда
ЗаполнитьТаблицуВидовКИ(ТаблицаВидов, СтрокаВида);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Возвращает имена табличных частей документа по виду контактной информации.
//
// Параметры:
@@ -3991,6 +3950,33 @@
////////////////////////////////////////////////////////////////////////////////
// Заполнение дополнительных реквизитов табличной части "Контактная информация".
Процедура УстановитьНаименованиеВидаКонтактнойИнформации(Знач Объект, Наименование)
НаименованияНаРазныхЯзыках = УправлениеКонтактнойИнформациейСлужебныйПовтИсп.НаименованияВидовКонтактнойИнформации();
Для каждого Язык Из Метаданные.Языки Цикл
Представление = НаименованияНаРазныхЯзыках[Язык.КодЯзыка][СокрЛП(Объект.ИмяПредопределенногоВида)];
Если ЗначениеЗаполнено(Представление) Тогда
Если Язык = Метаданные.ОсновнойЯзык Тогда
Объект.Наименование = Представление;
Иначе
НайденныеСтроки = Объект.Представления.НайтиСтроки(Новый Структура("КодЯзыка", Язык.КодЯзыка));
Если НайденныеСтроки.Количество() = 0 Тогда
НоваяСтрока = Объект.Представления.Добавить();
НоваяСтрока.КодЯзыка = Язык.КодЯзыка;
Иначе
НоваяСтрока = НайденныеСтроки[0];
КонецЕсли;
НоваяСтрока.Наименование = Представление;
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(Наименование) Тогда
Объект.Наименование = Наименование;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура КонвертацияКонтактнойИнформацииВJSON(КонтактнаяИнформация)
// Конвертация
@@ -4060,8 +4046,8 @@
Элемент.АвтоОтметкаНезаполненного = Не СтрокаТабличнойЧасти.ПометкаУдаления;
КонецЕсли;
Форма.ПараметрыКонтактнойИнформации[ИмяЭлементаДляРазмещения].ДобавленныеЭлементы.Добавить(СтрокаТабличнойЧасти.ИмяРеквизита,
2, Ложь);
ПараметрыКонтактнойИнформацииЭлемента = Форма.ПараметрыКонтактнойИнформации[ИмяЭлементаДляРазмещения]; // см. ПараметрыВыводаКонтактнойИнформации
ПараметрыКонтактнойИнформацииЭлемента.ДобавленныеЭлементы.Добавить(СтрокаТабличнойЧасти.ИмяРеквизита, 2, Ложь);
ДобавитьРеквизитВОписание(Форма, СтрокаТабличнойЧасти, ДанныеВидовКонтактнойИнформацииТЧ, Ложь, Истина,, ИмяЭлементаДляРазмещения);
ПредыдущийВидТЧ = ВидКонтактнойИнформацииТЧ;
@@ -4326,6 +4312,34 @@
КонецФункции
// Описание параметров вывода контактной информации
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения -
// ИмяЭлементаДляРазмещения - Строка, Неопределено -
// ПоложениеЗаголовкаКИ - Строка, ПоложениеЗаголовкаЭлементаФормы -
// ОтложеннаяИнициализация - Массив, Булево -
// ИсключаемыеВиды - Массив, Неопределено -
// СкрываемыеВиды - Массив, Неопределено -
//
// Возвращаемое значение:
// Структура - где:
// * ГруппаДляРазмещения - Строка -
// * ПоложениеЗаголовка - Строка -
// * ДобавленныеРеквизиты - СписокЗначений -
// * ОтложеннаяИнициализация - Булево -
// * ИсключаемыеВиды - Массив -
// * ВыполненаОтложеннаяИнициализация - Булево -
// * ДобавленныеЭлементы - СписокЗначений -
// * СписокДобавляемыхЭлементов - СписокЗначений - список элементов, где:
// * Значение - Структура - Где:
// ** Ссылка - СправочникСсылка.ВидыКонтактнойИнформации -
// * Ключ - Строка -
// * МожноОтправлятьSMS - Булево -
// * Владелец - ЛюбаяСсылка -
// * ОбработкаНавигационнойСсылки - Булево -
// * СкрываемыеВиды - Массив -
//
Функция ПараметрыВыводаКонтактнойИнформации(Форма, ИмяЭлементаДляРазмещения, ПоложениеЗаголовкаКИ, ОтложеннаяИнициализация, ИсключаемыеВиды, СкрываемыеВиды)
Если ТипЗнч(Форма.ПараметрыКонтактнойИнформации) <> Тип("Структура") Тогда
@@ -4371,9 +4385,9 @@
// Если имя не указано, то возвращается полный список программно предопределенных видов.
//
// Возвращаемое значение:
// ТаблицаЗначений - Виды контактной информации.
// * Имя - Строка - Имя вида контактной информации.
// * Ссылка - СправочникСсылка.ВидыКонтактнойИнформации - Ссылка на элемент справочника виды контактной информации.
// ТаблицаЗначений - Виды контактной информации, где:
// * Имя - Строка - Имя вида контактной информации.
// * Ссылка - СправочникСсылка.ВидыКонтактнойИнформации - Ссылка на элемент справочника виды контактной информации.
//
Функция ПредопределенныеВидыКонтактнойИнформации(Имя = "") Экспорт
@@ -4608,6 +4622,15 @@
КонецПроцедуры
// Возвращает параметры контактной информации на форме
//
// Параметры:
// ПараметрыКонтактнойИнформации - см. ПараметрыВыводаКонтактнойИнформации
// ИмяЭлементаДляРазмещения - Строка, Неопределено -
//
// Возвращаемое значение:
// см. ПараметрыВыводаКонтактнойИнформации
//
Функция ПараметрыКонтактнойИнформацииФормы(ПараметрыКонтактнойИнформации, ИмяЭлементаДляРазмещения)
Если НЕ ЗначениеЗаполнено(ИмяЭлементаДляРазмещения) ИЛИ НЕ ПараметрыКонтактнойИнформации.Свойство(ИмяЭлементаДляРазмещения) Тогда
@@ -4726,7 +4749,7 @@
Процедура ОбновитьКонтекстноеМеню(Форма, ИмяЭлементаДляРазмещения)
ПараметрыКонтактнойИнформации = Форма.ПараметрыКонтактнойИнформации[ИмяЭлементаДляРазмещения];
ПараметрыКонтактнойИнформации = Форма.ПараметрыКонтактнойИнформации[ИмяЭлементаДляРазмещения]; // см. ПараметрыВыводаКонтактнойИнформации
ВсеСтроки = Форма.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов;
НайденныеСтроки = ВсеСтроки.НайтиСтроки(
Новый Структура("Тип, ЭтоРеквизитТабличнойЧасти", Перечисления.ТипыКонтактнойИнформации.Адрес, Ложь));
@@ -5206,5 +5229,35 @@
КонецФункции
// Конструктор описания страны мира.
//
// Параметры:
// РезультатЗапроса - Структура - Данные заполнения.
//
// Возвращаемое значение:
// Структура - Описание:
// Код - Строка - Числовой код страны по ОКСМ;
// КодАльфа2 - Строка - Двузначный буквенный код альфа-2 страны по ОКСМ;
// КодАльфа3 - Строка - Трехзначный буквенный код альфа-3 страны по ОКСМ;
// Наименование - Строка - Краткое наименование страны мира
// НаименованиеПолное - Строка - Полное наименование страны мира;
// УчастникЕАЭС - Булево - Страна является участником Евразийского экономического союза;
// Неактуальный - Булево - помечена на удаление.
//
Функция ОписаниеСтраныМира(ДанныеЗаполнения)
Результат = Новый Структура;
Результат.Вставить("Код", "");
Результат.Вставить("КодАльфа2", "");
Результат.Вставить("КодАльфа3", "");
Результат.Вставить("Наименование", "");
Результат.Вставить("НаименованиеПолное", "");
Результат.Вставить("УчастникЕАЭС", Ложь);
Результат.Вставить("Неактуальный", Ложь);
ЗаполнитьЗначенияСвойств(Результат, ДанныеЗаполнения);
Возврат Результат
КонецФункции
#КонецОбласти
#КонецОбласти
@@ -232,7 +232,7 @@
//
// Параметры:
// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации - вид редактируемой контактной информации.
// Структура - см. УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации
// - см. УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации - описание вида.
// Значение - Строка - сериализованное значение полей контактной информации в формате JSON или XML.
// Представление - Строка - представление контактной информации.
// Комментарий - Строка - комментарий контактной информации.
@@ -242,7 +242,7 @@
// Возвращаемое значение:
// Структура - содержит поля:
// * ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации - вид редактируемой контактной информации.
// Структура - см. УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации
// Структура - см. УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации
// * Значение - Строка - значение полей контактной информации в формате JSON или ХML.
// * Представление - Строка - представление контактной информации.
// * ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации - тип контактной информации, если был указан
@@ -544,13 +544,7 @@
СписокКонтактнойИнформации.Добавить(КонтактнаяИнформация);
КонецЦикла;
ДополнительныеПараметры = Новый Структура("Форма");
ДополнительныеПараметры.Вставить("ИмяЭлемента", ПараметрыКонтактнойИнформации.ИмяРеквизита);
ДополнительныеПараметры.Вставить("Вид", ПараметрыКонтактнойИнформации.Вид);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", ПараметрыКонтактнойИнформации.ИмяЭлементаДляРазмещения);
ДополнительныеПараметры.Вставить("АсинхронныйВызов", АсинхронныйВызов);
ДополнительныеПараметры.Форма = Форма;
ДополнительныеПараметры = ПослеЗакрытияФормыИсторииДополнительныеПараметры(Форма, ПараметрыКонтактнойИнформации, АсинхронныйВызов);
ПараметрыФормы = Новый Структура("СписокКонтактнойИнформации", СписокКонтактнойИнформации);
ПараметрыФормы.Вставить("ВидКонтактнойИнформации", ПараметрыКонтактнойИнформации.Вид);
@@ -700,6 +694,12 @@
// Завершение немодальных диалогов.
// Обработчик после закрытия формы истории
//
// Параметры:
// Результат - Структура - результат
// ДополнительныеПараметры - см. ПослеЗакрытияФормыИсторииДополнительныеПараметры
//
Процедура ПослеЗакрытияФормыИстории(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
@@ -748,6 +748,12 @@
КонецЕсли;
КонецПроцедуры
// Продолжение вызова ПредставлениеНачалоВыбора
//
// Параметры:
// РезультатЗакрытия - Структура -
// ДополнительныеПараметры - см. ПредставлениеНачалоВыбораЗавершениеДополнительныеПараметры
//
Процедура ПредставлениеНачалоВыбораЗавершение(Знач РезультатЗакрытия, Знач ДополнительныеПараметры) Экспорт
Если ТипЗнч(РезультатЗакрытия) <> Тип("Структура") Тогда
@@ -951,16 +957,18 @@
КонецЦикла;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПредставлениеНачалоВыбораЗавершение", ЭтотОбъект, Новый Структура);
Оповещение.ДополнительныеПараметры.Вставить("ДанныеЗаполнения", ДанныеЗаполнения);
Оповещение.ДополнительныеПараметры.Вставить("ЭтоТабличнаяЧасть", ЭтоТабличнаяЧасть);
Оповещение.ДополнительныеПараметры.Вставить("ИмяЭлементаРазмещения", ДанныеСтроки.ИмяЭлементаДляРазмещения);
Оповещение.ДополнительныеПараметры.Вставить("ДанныеСтроки", ДанныеСтроки);
Оповещение.ДополнительныеПараметры.Вставить("Элемент", Элемент);
Оповещение.ДополнительныеПараметры.Вставить("Результат", Результат);
Оповещение.ДополнительныеПараметры.Вставить("Форма", Форма);
Оповещение.ДополнительныеПараметры.Вставить("ОбновитьКонтекстноеМеню", ОбновитьКонтекстноеМеню);
Оповещение.ДополнительныеПараметры.Вставить("АсинхронныйВызов", АсинхронныйВызов);
ДополнительныеПараметры = ПредставлениеНачалоВыбораЗавершениеДополнительныеПараметры();
ДополнительныеПараметры.ДанныеЗаполнения = ДанныеЗаполнения;
ДополнительныеПараметры.ЭтоТабличнаяЧасть = ЭтоТабличнаяЧасть;
ДополнительныеПараметры.ИмяЭлементаРазмещения = ДанныеСтроки.ИмяЭлементаДляРазмещения;
ДополнительныеПараметры.ДанныеСтроки = ДанныеСтроки;
ДополнительныеПараметры.Элемент = Элемент;
ДополнительныеПараметры.Результат = Результат;
ДополнительныеПараметры.Форма = Форма;
ДополнительныеПараметры.ОбновитьКонтекстноеМеню = ОбновитьКонтекстноеМеню;
ДополнительныеПараметры.АсинхронныйВызов = АсинхронныйВызов;
Оповещение = Новый ОписаниеОповещения("ПредставлениеНачалоВыбораЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФормуКонтактнойИнформации(ПараметрыОткрытияФормы,, Оповещение);
@@ -1456,6 +1464,67 @@
КонецПроцедуры
// Конструктор дополнительных параметров для формы истории
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения -
// ПараметрыКонтактнойИнформации - Структура -
// АсинхронныйВызов - Булево -
// Возвращаемое значение:
// Структура - Описание:
// * Форма - ФормаКлиентскогоПриложения -
// * АсинхронныйВызов - Булево -
// * ИмяЭлементаДляРазмещения - Строка -
// * Вид - СправочникСсылка.ВидыКонтактнойИнформации -
// * ИмяЭлемента - Строка -
//
Функция ПослеЗакрытияФормыИсторииДополнительныеПараметры(Знач Форма, ПараметрыКонтактнойИнформации, Знач АсинхронныйВызов)
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Форма", Форма);
ДополнительныеПараметры.Вставить("ИмяЭлемента", ПараметрыКонтактнойИнформации.ИмяРеквизита);
ДополнительныеПараметры.Вставить("Вид", ПараметрыКонтактнойИнформации.Вид);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", ПараметрыКонтактнойИнформации.ИмяЭлементаДляРазмещения);
ДополнительныеПараметры.Вставить("АсинхронныйВызов", АсинхронныйВызов);
Возврат ДополнительныеПараметры;
КонецФункции
// Описание
//
// Возвращаемое значение:
// Структура - Описание:
// * АсинхронныйВызов - Булево -
// * ОбновитьКонтекстноеМеню - Булево -
// * Форма - Неопределено -
// * Результат - Неопределено -
// * Элемент - ДекорацияФормы, ГруппаФормы, КнопкаФормы, ТаблицаФормы, ПолеФормы -
// * ДанныеСтроки - Неопределено -
// * ИмяЭлементаРазмещения - Строка -
// * ЭтоТабличнаяЧасть - Булево -
// * ДанныеЗаполнения - Строка -
//
Функция ПредставлениеНачалоВыбораЗавершениеДополнительныеПараметры()
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ДанныеЗаполнения", "");
ДополнительныеПараметры.Вставить("ЭтоТабличнаяЧасть", Ложь);
ДополнительныеПараметры.Вставить("ИмяЭлементаРазмещения", "");
ДополнительныеПараметры.Вставить("ДанныеСтроки", Неопределено);
ДополнительныеПараметры.Вставить("Элемент", Неопределено);
ДополнительныеПараметры.Вставить("Результат", Неопределено);
ДополнительныеПараметры.Вставить("Форма", Неопределено);
ДополнительныеПараметры.Вставить("ОбновитьКонтекстноеМеню", Ложь);
ДополнительныеПараметры.Вставить("АсинхронныйВызов", Ложь);
Возврат ДополнительныеПараметры;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Возвращает строку, в которой все не алфавитно-числовые символы (кроме -_.)
// заменены на знак процентов (%) с последующими двумя шестнадцатеричными цифрами и
@@ -1661,4 +1730,4 @@
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -361,7 +361,7 @@
УчетнаяЗапись = ВыборкаУчетныеЗаписи.УчетнаяЗапись;
Письма = Новый Массив;
СсылкиПисем = Новый Массив;
СсылкиПисем = Новый Соответствие;
ВыборкаПисьма = ВыборкаУчетныеЗаписи.Выбрать();
Пока ВыборкаПисьма.Следующий() Цикл
@@ -379,12 +379,15 @@
Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(УчетнаяЗапись, ПараметрыПисьма);
Письма.Добавить(Письмо);
СсылкиПисем.Добавить(ВыборкаПисьма.Письмо);
СсылкиПисем.Вставить(Письмо, ВыборкаПисьма.Письмо);
КонецЦикла;
РаботаСПочтовымиСообщениями.ОтправитьПисьма(УчетнаяЗапись, Письма);
Для Каждого Ссылка Из СсылкиПисем Цикл
ОтправленныеПисьма = РаботаСПочтовымиСообщениями.ОтправитьПисьма(УчетнаяЗапись, Письма);
Для Каждого Письмо Из СсылкиПисем Цикл
Если ОтправленныеПисьма[Письмо.Ключ] = Неопределено Тогда
Продолжить;
КонецЕсли;
Ссылка = Письмо.Значение;
УстановитьПризнакОтправкиУведомления(Ссылка, Ложь);
КонецЦикла;
+9 -9
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="8944604c-db35-4f12-893b-fc29d17ecca6">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ee95573f-022a-4354-8ef3-1d76e424e0b1">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="c0941663-e58f-43f1-a09d-af47f0cae552"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="16ca4ba2-f88b-425a-85e2-b1ac0783a8e9"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="2ff66df6-e901-4ca4-822e-32ef623ef144"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="5736923d-c10a-4aff-804a-6e4038166638"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="abc3399c-358d-4a32-9f87-44b999353591"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="4d039111-e601-4663-aeea-b1f10cbd01d5"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="aba1fc76-3004-40c3-8d9f-89265833f304"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="b596525c-0277-4a54-875b-b3c8f569f138"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="7173a910-07cd-4dd5-9d0e-13c38cda0f7b"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="844f5336-2882-476e-816d-934c91d5842b"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="7d5240f8-7d37-4a5b-bdd4-4405c8bd31a1"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="9bead23e-9dc3-41f5-8224-e7f868cfd853"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="d7c6a56c-d193-44f3-b918-723e93240b9a"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="7c0fab82-57a2-4ae0-9363-8a083f7aadaa"/>
<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.2.166</version>
<version>3.1.2.176</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -1 +1 @@
{6,1,1,7bbcfa69-70f1-4fe2-ab90-f0f4ef3356bb,1,b7cbdf06-b438-4b62-8f4c-3d47213b5f7e,"3.1.2.166","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5901,1,0,8944604c-db35-4f12-893b-fc29d17ecca6,8944604c-db35-4f12-893b-fc29d17ecca6,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5Line truncated
{6,1,1,711e059e-afbe-4765-9d6b-002d8cc2b36c,1,750e295a-3316-46b4-9cc7-c1bd47834e50,"3.1.2.176","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5901,1,0,ee95573f-022a-4354-8ef3-1d76e424e0b1,ee95573f-022a-4354-8ef3-1d76e424e0b1,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5Line truncated
@@ -2780,8 +2780,7 @@
Элементы.ПояснениеОНастроенныхИзменениях.Заголовок = ФорматированнаяСтрока(Пояснение);
Если ПустаяСтрока(КодАлгоритма) Тогда
КодАлгоритма = ПодставитьПараметрыВСтроку(НСтр("ru='// Доступные переменные:
|// %1 - обрабатываемый объект
|'"), "Объект");
|// %1 - обрабатываемый объект'"), "Объект") + Символы.ПС;
КонецЕсли;
КонецПроцедуры
@@ -126,12 +126,7 @@
НСтр("ru = 'Данные были изменены. Сохранить изменения?'"), РежимДиалогаВопрос.ДаНетОтмена);
Иначе
ВозвращаемоеЗначение = Новый Структура;
ВозвращаемоеЗначение.Вставить("Ссылка", Объект.Ссылка);
ВозвращаемоеЗначение.Вставить("Добавлен", ЗаявлениеИсполнено());
Закрыть(ВозвращаемоеЗначение);
ЗакрытьФорму();
КонецЕсли;
КонецПроцедуры
@@ -654,7 +649,7 @@
ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
ЗаписатьИРазблокироватьОбъект();
ПослеЗаписи();
Закрыть();
ЗакрытьФорму();
КонецЕсли;
КонецПроцедуры
@@ -685,6 +680,16 @@
КонецФункции
&НаКлиенте
Процедура ЗакрытьФорму()
ВозвращаемоеЗначение = Новый Структура;
ВозвращаемоеЗначение.Вставить("Ссылка", Объект.Ссылка);
ВозвращаемоеЗначение.Вставить("Добавлен", ЗаявлениеИсполнено());
Закрыть(ВозвращаемоеЗначение);
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьЗаявление()
@@ -225,6 +225,10 @@
ФайлыПакета = ИнформацияПриЗапуске.ИзвлечьФайлыПакета(РеквизитФормыВЗначение("Объект"), СтартовыйПакетСтраниц.ИмяМакета);
КонецЕсли;
Если ФайлыПакета = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
// Подготовка пакета к показу.
РазместитьСтраницыПакета(СтартовыйПакетСтраниц, ФайлыПакета);
@@ -508,20 +508,29 @@
Параметры.Свойство("ЭтоОбменСПриложениемВСервисе", ЭтоОбменСПриложениемВСервисе);
Параметры.Свойство("ОбластьДанныхКорреспондента", ОбластьДанныхКорреспондента);
ИспользоватьПрогресс = Не ЭтоОбменСПриложениемВСервисе;
ВидТранспорта = РегистрыСведений.НастройкиТранспортаОбменаДанными.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелОбмена);
Если Не ЗначениеЗаполнено(ВидТранспорта) Тогда
ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.WSПассивныйРежим;
КонецЕсли;
ПодключениеЧерезВнешнееСоединение = (ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.COM);
ИспользоватьПрогресс = Не ЭтоОбменСПриложениемВСервисе
И Не ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.WS
И Не ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.WSПассивныйРежим;
Если ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.WS Тогда
ИспользоватьПрогресс = Ложь;
НастройкиТранспорта = РегистрыСведений.НастройкиТранспортаОбменаДанными.НастройкиТранспортаWS(УзелОбмена);
ЗапроситьПароль = Не (НастройкиТранспорта.WSЗапомнитьПароль
Или ОбменДаннымиСервер.ПарольСинхронизацииДанныхЗадан(УзелОбмена));
ИначеЕсли ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.WSПассивныйРежим Тогда
ПроверкаПодключенияВыполнена = Истина;
ВыгрузкаДанныхВыполнена = Истина;
КонецЕсли;
@@ -578,23 +587,27 @@
НовыйПереход.ИмяОбработчикаПриПереходеДалее = "СтраницаЗапросПароля_ПриПереходеДалее";
КонецЕсли;
НовыйПереход = ДобавитьСтрокуТаблицыПереходов("СтраницаПроверкаПодключения", "СтраницаНавигацияОжидание");
НовыйПереход.ДлительнаяОперация = Истина;
НовыйПереход.ИмяОбработчикаДлительнойОперации = "СтраницаПроверкаПодключения_ДлительнаяОперация";
Если Не ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.WSПассивныйРежим Тогда
НовыйПереход = ДобавитьСтрокуТаблицыПереходов("СтраницаПроверкаПодключения", "СтраницаНавигацияОжидание");
НовыйПереход.ДлительнаяОперация = Истина;
НовыйПереход.ИмяОбработчикаДлительнойОперации = "СтраницаПроверкаПодключения_ДлительнаяОперация";
КонецЕсли;
НовыйПереход = ДобавитьСтрокуТаблицыПереходов("СтраницаРегистрацияИзменений", "СтраницаНавигацияОжидание");
НовыйПереход.ИмяОбработчикаПриОткрытии = "СтраницаРегистрацияИзменений_ПриОткрытии";
НовыйПереход.ДлительнаяОперация = Истина;
НовыйПереход.ИмяОбработчикаДлительнойОперации = "СтраницаРегистрацияИзменений_ДлительнаяОперация";
Если ИспользоватьПрогресс Тогда
НовыйПереход = ДобавитьСтрокуТаблицыПереходов("СтраницаВыгрузкаДанныхПрогресс", "СтраницаНавигацияОжидание");
Иначе
НовыйПереход = ДобавитьСтрокуТаблицыПереходов("СтраницаВыгрузкаДанныхБезПрогресса", "СтраницаНавигацияОжидание");
Если Не ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.WSПассивныйРежим Тогда
Если ИспользоватьПрогресс Тогда
НовыйПереход = ДобавитьСтрокуТаблицыПереходов("СтраницаВыгрузкаДанныхПрогресс", "СтраницаНавигацияОжидание");
Иначе
НовыйПереход = ДобавитьСтрокуТаблицыПереходов("СтраницаВыгрузкаДанныхБезПрогресса", "СтраницаНавигацияОжидание");
КонецЕсли;
НовыйПереход.ИмяОбработчикаПриОткрытии = "СтраницаВыгрузкаДанных_ПриОткрытии";
НовыйПереход.ДлительнаяОперация = Истина;
НовыйПереход.ИмяОбработчикаДлительнойОперации = "СтраницаВыгрузкаДанных_ДлительнаяОперация";
КонецЕсли;
НовыйПереход.ИмяОбработчикаПриОткрытии = "СтраницаВыгрузкаДанных_ПриОткрытии";
НовыйПереход.ДлительнаяОперация = Истина;
НовыйПереход.ИмяОбработчикаДлительнойОперации = "СтраницаВыгрузкаДанных_ДлительнаяОперация";
НовыйПереход = ДобавитьСтрокуТаблицыПереходов("СтраницаОкончание", "СтраницаНавигацияОкончание");
НовыйПереход.ИмяОбработчикаПриОткрытии = "СтраницаОкончание_ПриОткрытии";
@@ -1634,60 +1634,16 @@
&НаСервереБезКонтекста
Функция СостояниеДлительнойОперации(Знач ИдентификаторОперации, УзелОбмена, ПолучитьПарольИзСеансовыхДанных, СтрокаСообщенияОбОшибке = "")
Попытка
ПараметрыПодключения = ОбменДаннымиСервер.СтруктураПараметровWS();
ПараметрыАутентификации = Неопределено;
Если ПолучитьПарольИзСеансовыхДанных Тогда
ПараметрыАутентификации = ОбменДаннымиСервер.ПарольСинхронизацииДанных(УзелОбмена);
КонецЕсли;
СохраненныеПараметры = РегистрыСведений.НастройкиТранспортаОбменаДанными.НастройкиТранспортаWS(
УзелОбмена, ПараметрыАутентификации);
ЗаполнитьЗначенияСвойств(ПараметрыПодключения, СохраненныеПараметры);
ВерсииИнтерфейса = ОбменДаннымиПовтИсп.ВерсииКорреспондента(ПараметрыПодключения);
СтрокаСообщенияОбОшибке = "";
WSПрокси = Неопределено;
Если ВерсииИнтерфейса.Найти("3.0.1.1") <> Неопределено Тогда
WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси_3_0_1_1(ПараметрыПодключения, СтрокаСообщенияОбОшибке);
ИначеЕсли ВерсииИнтерфейса.Найти("2.1.1.7") <> Неопределено Тогда
WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси_2_1_1_7(ПараметрыПодключения, СтрокаСообщенияОбОшибке);
ИначеЕсли ВерсииИнтерфейса.Найти("2.0.1.6") <> Неопределено Тогда
WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси_2_0_1_6(ПараметрыПодключения, СтрокаСообщенияОбОшибке);
Иначе
WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси(ПараметрыПодключения, СтрокаСообщенияОбОшибке);
КонецЕсли;
Если WSПрокси = Неопределено Тогда
ВызватьИсключение СтрокаСообщенияОбОшибке;
КонецЕсли;
Результат = WSПрокси.GetContinuousOperationStatus(ИдентификаторОперации, СтрокаСообщенияОбОшибке);
Исключение
Результат = "Failed";
СтрокаСообщенияОбОшибке = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())
+ ?(ЗначениеЗаполнено(СтрокаСообщенияОбОшибке), Символы.ПС + СтрокаСообщенияОбОшибке, "");
КонецПопытки;
Если Результат = "Failed" Тогда
СтрокаСообщения = НСтр("ru = 'Ошибка в базе-корреспонденте: %1'");
СтрокаСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, СтрокаСообщенияОбОшибке);
ПараметрыАутентификации = Неопределено;
Если ПолучитьПарольИзСеансовыхДанных Тогда
ПараметрыАутентификации = ОбменДаннымиСервер.ПарольСинхронизацииДанных(УзелОбмена);
КонецЕсли;
Возврат Результат;
Возврат ОбменДаннымиВызовСервера.СостояниеДлительнойОперацииДляУзлаИнформационнойБазы(
ИдентификаторОперации,
УзелОбмена,
ПараметрыАутентификации,
СтрокаСообщенияОбОшибке);
КонецФункции
@@ -121,7 +121,7 @@
КонецЕсли;
КонецЕсли;
Возврат;
ИначеЕсли НастройкаНовойСинхронизации Тогда
ИначеЕсли ТекущийЭтапНастройки = "НастройкаПодключения" Тогда
ПараметрыПомощника = Новый Структура;
ПараметрыПомощника.Вставить("ИмяПланаОбмена", ИмяПланаОбмена);
ПараметрыПомощника.Вставить("ИдентификаторНастройки", ИдентификаторНастройки);
@@ -307,11 +307,6 @@
ПолученыДанныеДляСопоставления = Истина;
КонецЕсли;
Если РезультатЗакрытия.Свойство("ПассивныйРежим")
И РезультатЗакрытия.ПассивныйРежим Тогда
ДоступнаИнтерактивнаяОтправка = Ложь;
КонецЕсли;
ЗаполнитьТаблицуЭтаповНастройки();
ОбновитьОтображениеТекущегоСостоянияНастройки();
@@ -364,9 +359,6 @@
Возврат;
КонецЕсли;
ДоступнаИнтерактивнаяОтправка = ДоступнаИнтерактивнаяОтправка
И Не (ОбменДаннымиВызовСервера.ВариантОбменаДанными(УзелОбмена) = "ТолькоПолучение");
Если РезультатЗакрытия.ПолученыДанныеДляСопоставления
И Не ПолученыДанныеДляСопоставления Тогда
ПолученыДанныеДляСопоставления = РезультатЗакрытия.ПолученыДанныеДляСопоставления;
@@ -763,6 +755,13 @@
Если Не ПустаяСтрока(ИмяФормыСозданияНачальногоОбраза) Тогда
ТекущийЭтапНастройки = "НачальныйОбразРИБ";
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(УзелОбмена) Тогда
НомераСообщений = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(УзелОбмена, "НомерПринятого, НомерОтправленного");
Если НомераСообщений.НомерПринятого = 0
И НомераСообщений.НомерОтправленного = 0
И ОбменДаннымиСервер.ПолученоСообщениеСДаннымиДляСопоставления(УзелОбмена) Тогда
ТекущийЭтапНастройки = "СопоставлениеИЗагрузка";
КонецЕсли;
КонецЕсли;
ВсеЭтапыНастройки = Новый Структура;
@@ -1362,6 +1362,8 @@
Константы.ИспользоватьСинхронизациюДанных.Установить(Истина);
Константы.НеИспользоватьРазделениеПоОбластямДанных.Установить(Истина);
ОбменДаннымиСервер.УстановитьКоличествоЭлементовВТранзакцииЗагрузкиДанныхПоУмолчанию();
// Правила обмена не мигрируют в РИБ, поэтому выполняем загрузку правил.
ОбменДаннымиСервер.ВыполнитьОбновлениеПравилДляОбменаДанными();
@@ -289,11 +289,13 @@
КонецЕсли;
// {Обработчик: ПриПолученииДанныхОтправителя} Окончание
ВидТранспортаСообщенийОбмена = Перечисления.ВидыТранспортаСообщенийОбмена.WSПассивныйРежим;
ВыполнитьДействияПоНастройкеНовогоОбменаДанными(Отказ,
НастройкаОтборовНаУзле,
ЗначенияПоУмолчаниюНаУзле,
Ложь,
Ложь);
Истина);
Если Отказ Тогда
УдалитьНастройкуОбменаДанными();
@@ -1568,6 +1568,7 @@
<name>Удалить</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<associatedTableElementId xsi:type="core:StringValue">
<value>Код</value>
</associatedTableElementId>
@@ -1653,7 +1653,7 @@
<id>9</id>
<toolTip>
<key>ru</key>
<value>Удалить данные версии файла</value>
<value>Удалить данные файла</value>
</toolTip>
<use>
<common>true</common>
@@ -4843,7 +4843,7 @@
<id>34</id>
<toolTip>
<key>ru</key>
<value>Удалить данные версии файла</value>
<value>Удалить данные файла</value>
</toolTip>
<use>
<common>true</common>
@@ -5061,7 +5061,7 @@
<id>30</id>
<toolTip>
<key>ru</key>
<value>Удалить данные версии файла</value>
<value>Удалить данные файла</value>
</toolTip>
<use>
<common>true</common>
@@ -5074,6 +5074,7 @@
<name>Удалить</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<associatedTableElementId xsi:type="core:StringValue">
<value>ФормаСтандартнаяЗаписать</value>
</associatedTableElementId>
@@ -82,6 +82,8 @@
СообщенияПользователюИОписаниеИнформацииОбОшибке = РегламентныеЗаданияСлужебный
.СообщенияИОписанияОшибокРегламентногоЗадания(Задание);
Элементы.Наименование.Видимость = Не Задание.Предопределенное;
КонецЕсли;
Если Действие <> "Изменить" Тогда
@@ -187,8 +187,6 @@
#Область СлужебныеПроцедурыИФункции
// Подключает обработчик ожидания истечения таймаута перед принудительным стартом резервного копирования/восстановления
// данных.
&НаКлиенте
Процедура УстановитьОбработчикОжиданияИстеченияТаймаутаРезервногоКопирования()
@@ -196,7 +194,6 @@
КонецПроцедуры
// Подключает обработчик ожидания при отложенном резервном копировании.
&НаКлиенте
Процедура УстановитьОбработчикОжиданияНачалаРезервногоКопирования()
@@ -204,7 +201,6 @@
КонецПроцедуры
// Функция запрашивает у пользователя и возвращает путь к файлу или каталогу.
&НаКлиенте
Процедура ВыбратьФайлРезервнойКопии()
@@ -339,7 +335,7 @@
#Если Не ВебКлиент И Не МобильныйКлиент Тогда
ИмяГлавногоФайлаСкрипта = СформироватьФайлыСкриптаОбновления();
ИмяГлавногоФайлаСкрипта = СформироватьФайлыСкрипта();
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
РезервноеКопированиеИБКлиент.СобытиеЖурналаРегистрации(),
"Информация",
@@ -383,52 +379,45 @@
#Если Не ВебКлиент И Не МобильныйКлиент Тогда
&НаКлиенте
Функция СформироватьФайлыСкриптаОбновления()
Функция СформироватьФайлыСкрипта()
ПараметрыКопирования = РезервноеКопированиеИБКлиент.КлиентскиеПараметрыРезервногоКопирования();
ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента();
СоздатьКаталог(ПараметрыКопирования.КаталогВременныхФайловОбновления);
// Структура параметров необходима для их определения на клиенте и передачи на сервер.
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("ИмяФайлаПрограммы" , ПараметрыКопирования.ИмяФайлаПрограммы);
СтруктураПараметров.Вставить("СобытиеЖурналаРегистрации" , ПараметрыКопирования.СобытиеЖурналаРегистрации);
СтруктураПараметров.Вставить("ИмяCOMСоединителя" , ПараметрыРаботыКлиента.ИмяCOMСоединителя);
СтруктураПараметров.Вставить("ЭтоБазоваяВерсияКонфигурации", ПараметрыРаботыКлиента.ЭтоБазоваяВерсияКонфигурации);
СтруктураПараметров.Вставить("ИнформационнаяБазаФайловая" , ПараметрыРаботыКлиента.ИнформационнаяБазаФайловая);
СтруктураПараметров.Вставить("ПараметрыСкрипта" , РезервноеКопированиеИБКлиент.ПараметрыАутентификацииАдминистратораОбновления(ПарольАдминистратораИБ));
СтруктураПараметров.Вставить("ПараметрыЗапускаПредприятия" , ОбщегоНазначенияСлужебныйКлиент.ПараметрыЗапускаПредприятияИзСкрипта());
ПараметрыСкрипта = Новый Структура;
ПараметрыСкрипта.Вставить("ИмяФайлаПрограммы" , ПараметрыКопирования.ИмяФайлаПрограммы);
ПараметрыСкрипта.Вставить("СобытиеЖурналаРегистрации" , ПараметрыКопирования.СобытиеЖурналаРегистрации);
ПараметрыСкрипта.Вставить("ИмяCOMСоединителя" , ПараметрыРаботыКлиента.ИмяCOMСоединителя);
ПараметрыСкрипта.Вставить("ЭтоБазоваяВерсияКонфигурации", ПараметрыРаботыКлиента.ЭтоБазоваяВерсияКонфигурации);
ПараметрыСкрипта.Вставить("ИнформационнаяБазаФайловая" , ПараметрыРаботыКлиента.ИнформационнаяБазаФайловая);
ПараметрыСкрипта.Вставить("ПараметрыСкрипта" , РезервноеКопированиеИБКлиент.ПараметрыАутентификацииАдминистратораОбновления(ПарольАдминистратораИБ));
ПараметрыСкрипта.Вставить("ПараметрыЗапускаПредприятия" , ОбщегоНазначенияСлужебныйКлиент.ПараметрыЗапускаПредприятияИзСкрипта());
ИменаМакетов = "ДопФайлРезервногоКопирования";
ИменаМакетов = ИменаМакетов + ",ЗаставкаВосстановления";
ТекстыМакетов = ПолучитьТекстыМакетов(ИменаМакетов, СтруктураПараметров, ПараметрыПриложения["СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации"]);
Скрипты = СформироватьТекстСкриптов(ПараметрыСкрипта, ПараметрыПриложения["СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации"]);
// Вспомогательный файл main.js.
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(ТекстыМакетов[0]);
ФайлСкрипта.УстановитьТекст(Скрипты.Скрипт);
ИмяФайлаСкрипта = ПараметрыКопирования.КаталогВременныхФайловОбновления + "main.js";
ФайлСкрипта.Записать(ИмяФайлаСкрипта, РезервноеКопированиеИБКлиент.КодировкаФайловПрограммыРезервногоКопированияИБ());
// Вспомогательный файл: helpers.js.
// Вспомогательный файл helpers.js.
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(ТекстыМакетов[1]);
ФайлСкрипта.УстановитьТекст(Скрипты.ДопФайлРезервногоКопирования);
ФайлСкрипта.Записать(ПараметрыКопирования.КаталогВременныхФайловОбновления + "helpers.js", РезервноеКопированиеИБКлиент.КодировкаФайловПрограммыРезервногоКопированияИБ());
ИмяГлавногоФайлаСкрипта = Неопределено;
// Вспомогательный файл: splash.png.
БиблиотекаКартинок.ЗаставкаВнешнейОперации.Записать(ПараметрыКопирования.КаталогВременныхФайловОбновления + "splash.png");
// Вспомогательный файл: splash.ico.
БиблиотекаКартинок.ЗначокЗаставкиВнешнейОперации.Записать(ПараметрыКопирования.КаталогВременныхФайловОбновления + "splash.ico");
// Вспомогательный файл: progress.gif.
БиблиотекаКартинок.ДлительнаяОперация48.Записать(ПараметрыКопирования.КаталогВременныхФайловОбновления + "progress.gif");
// Главный файл заставки: splash.hta.
// Главный файл заставки splash.hta.
ИмяГлавногоФайлаСкрипта = ПараметрыКопирования.КаталогВременныхФайловОбновления + "splash.hta";
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(ТекстыМакетов[2]);
ФайлСкрипта.УстановитьТекст(Скрипты.ЗаставкаВосстановления);
ФайлСкрипта.Записать(ИмяГлавногоФайлаСкрипта, РезервноеКопированиеИБКлиент.КодировкаФайловПрограммыРезервногоКопированияИБ());
ФайлЛога = Новый ТекстовыйДокумент;
@@ -443,25 +432,20 @@
#КонецЕсли
&НаСервере
Функция ПолучитьТекстыМакетов(ИменаМакетов, СтруктураПараметров, СообщенияДляЖурналаРегистрации)
// Запись накопленных событий ЖР.
Функция СформироватьТекстСкриптов(ПараметрыСкрипта, СообщенияДляЖурналаРегистрации)
ЖурналРегистрации.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации);
Результат = Новый Массив();
Результат.Добавить(ПолучитьТекстСкрипта(СтруктураПараметров));
ИменаМакетовМассив = СтрРазделить(ИменаМакетов, ",");
Для каждого ИмяМакета Из ИменаМакетовМассив Цикл
Результат.Добавить(Обработки.РезервноеКопированиеИБ.ПолучитьМакет(ИмяМакета).ПолучитьТекст());
КонецЦикла;
Результат = Новый Структура("Скрипт, ДопФайлРезервногоКопирования, ЗаставкаВосстановления");
Результат.Скрипт = СформироватьТекстСкрипта(ПараметрыСкрипта);
Результат.ДопФайлРезервногоКопирования = Обработки.РезервноеКопированиеИБ.ПолучитьМакет("ДопФайлРезервногоКопирования").ПолучитьТекст();
Результат.ЗаставкаВосстановления = СформироватьТекстЗаставки();
Возврат Результат;
КонецФункции
&НаСервере
Функция ПолучитьТекстСкрипта(СтруктураПараметров)
Функция СформироватьТекстСкрипта(ПараметрыСкрипта)
// Файл обновления конфигурации: main.js.
ШаблонСкрипта = Обработки.РезервноеКопированиеИБ.ПолучитьМакет("МакетФайлаЗагрузкаИБ");
@@ -474,55 +458,43 @@
Текст.УдалитьСтроку(1);
Текст.УдалитьСтроку(Текст.КоличествоСтрок());
Возврат ВставитьПараметрыСкрипта(Скрипт.ПолучитьТекст(), СтруктураПараметров) + Текст.ПолучитьТекст();
Возврат ВставитьПараметрыСкрипта(Скрипт.ПолучитьТекст(), ПараметрыСкрипта) + Текст.ПолучитьТекст();
КонецФункции
&НаСервере
Функция ВставитьПараметрыСкрипта(Знач Текст, Знач СтруктураПараметров)
Функция ВставитьПараметрыСкрипта(Знач Текст, Знач ПараметрыСкрипта)
Результат = Текст;
ПараметрыСкрипта = СтруктураПараметров.ПараметрыСкрипта;
СтрокаСоединенияИнформационнойБазы = ПараметрыСкрипта.СтрокаСоединенияИнформационнойБазы + ПараметрыСкрипта.СтрокаПодключения;
Если СтрЗаканчиваетсяНа(СтрокаСоединенияИнформационнойБазы, ";") Тогда
СтрокаСоединенияИнформационнойБазы = Лев(СтрокаСоединенияИнформационнойБазы, СтрДлина(СтрокаСоединенияИнформационнойБазы) - 1);
КонецЕсли;
ИмяИсполняемогоФайлаПрограммы = КаталогПрограммы() + СтруктураПараметров.ИмяФайлаПрограммы;
// Определение пути к информационной базе.
ПризнакФайловогоРежима = Неопределено;
ПутьКИнформационнойБазе = СоединенияИБКлиентСервер.ПутьКИнформационнойБазе(ПризнакФайловогоРежима, 0);
ПараметрПутиКИнформационнойБазе = ?(ПризнакФайловогоРежима, "/F", "/S") + ПутьКИнформационнойБазе;
СтрокаПутиКИнформационнойБазе = ?(ПризнакФайловогоРежима, ПутьКИнформационнойБазе, "");
Результат = СтрЗаменить(Результат, "[ИмяИсполняемогоФайлаПрограммы]" , ПодготовитьТекст(ИмяИсполняемогоФайлаПрограммы));
Результат = СтрЗаменить(Результат, "[ПараметрПутиКИнформационнойБазе]" , ПодготовитьТекст(ПараметрПутиКИнформационнойБазе));
Результат = СтрЗаменить(Результат, "[СтрокаПутиКФайлуИнформационнойБазы]", ПодготовитьТекст(ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СтрЗаменить(СтрокаПутиКИнформационнойБазе, """", ""))));
Результат = СтрЗаменить(Результат, "[СтрокаСоединенияИнформационнойБазы]", ПодготовитьТекст(СтрокаСоединенияИнформационнойБазы));
Результат = СтрЗаменить(Результат, "[ИмяАдминистратораОбновления]" , ПодготовитьТекст(ИмяПользователя()));
Результат = СтрЗаменить(Результат, "[СобытиеЖурналаРегистрации]" , ПодготовитьТекст(СтруктураПараметров.СобытиеЖурналаРегистрации));
Результат = СтрЗаменить(Результат, "[ФайлРезервнойКопии]" , ПодготовитьТекст(Объект.ФайлЗагрузкиРезервнойКопии));
Результат = СтрЗаменить(Результат, "[ИмяCOMСоединителя]" , ПодготовитьТекст(СтруктураПараметров.ИмяCOMСоединителя));
Результат = СтрЗаменить(Результат, "[ИспользоватьCOMСоединитель]" , ?(СтруктураПараметров.ЭтоБазоваяВерсияКонфигурации, "false", "true"));
ПараметрыТекста = РезервноеКопированиеИБСервер.ПодготовитьОбщиеПараметрыСкрипта(ПараметрыСкрипта);
ПараметрыТекста["[ФайлРезервнойКопии]"] = РезервноеКопированиеИБСервер.ПодготовитьТекст(Объект.ФайлЗагрузкиРезервнойКопии);
// Используется КаталогВременныхФайлов, т.к. автоматическое удаление временного каталога не допустимо.
Результат = СтрЗаменить(Результат, "[КаталогВременныхФайлов]" , ПодготовитьТекст(КаталогВременныхФайлов()));
Результат = СтрЗаменить(Результат, "[ПараметрыЗапускаПредприятия]" , ПодготовитьТекст(СтруктураПараметров.ПараметрыЗапускаПредприятия));
ПараметрыТекста["[КаталогВременныхФайлов]"] = РезервноеКопированиеИБСервер.ПодготовитьТекст(КаталогВременныхФайлов());
Возврат Результат;
Возврат РезервноеКопированиеИБСервер.ПодставитьПараметрыВТекст(Текст, ПараметрыТекста);
КонецФункции
&НаСервере
Функция ПодготовитьТекст(Знач Текст)
Функция СформироватьТекстЗаставки()
Строка = СтрЗаменить(Текст, "\", "\\");
Строка = СтрЗаменить(Строка, "'", "\'");
ШаблонТекста = Обработки.РезервноеКопированиеИБ.ПолучитьМакет("ЗаставкаВосстановления").ПолучитьТекст();
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("'%1'", Строка);
ПараметрыТекста = Новый Соответствие;
ПараметрыТекста["[ЗаголовокЗаставки]"] = НСтр("ru = 'Восстановление данных из резервной копии...'");
ПараметрыТекста["[ТекстЗаставки]"] =
НСтр("ru = 'Пожалуйста, подождите.
|<br /> Выполняется восстановление базы данных
|<br /> из резервной копии.
|<br /> Не рекомендуется останавливать процесс.'");
ПараметрыТекста["[Шаг1Инициализация]"] = НСтр("ru = 'Инициализация'");
ПараметрыТекста["[Шаг2ВосстановлениеДанных]"] = НСтр("ru = 'Восстановление данных'");
ПараметрыТекста["[Шаг3ОжиданиеЗавершения]"] = НСтр("ru = 'Ожидание завершения восстановления данных'");
ПараметрыТекста["[Шаг4РазрешениеПодключений]"] = НСтр("ru = 'Разрешение подключений новых соединений'");
ПараметрыТекста["[Шаг5Завершение]"] = НСтр("ru = 'Завершение'");
ПараметрыТекста["[ПроцессПрерван]"] = НСтр("ru = 'Внимание: процесс восстановления данных был прерван, и информационная база осталась заблокированной.'");
ПараметрыТекста["[ПроцессПрерванПодсказка]"] = НСтр("ru = 'Для разблокирования информационной базы воспользуйтесь консолью кластера серверов или запустите ""1С:Предприятие"".'");
Возврат РезервноеКопированиеИБСервер.ПодставитьПараметрыВТекст(ШаблонТекста, ПараметрыТекста);;
КонецФункции
@@ -79,21 +79,14 @@
КонецЕсли;
РучнойЗапуск = (Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СтраницаВыполненияРезервногоКопирования);
Если РучнойЗапуск Тогда
Если КоличествоСеансовИнформационнойБазы() > 1 Тогда
Элементы.СтраницыСтатусаКопирования.ТекущаяСтраница = Элементы.СтраницаАктивныеПользователи;
КонецЕсли;
Элементы.Далее.Заголовок = НСтр("ru = 'Сохранить резервную копию'");
КонецЕсли;
РезервноеКопированиеИБСервер.УстановитьЗначениеНастройки("РучнойЗапускПоследнегоРезервногоКопирования", РучнойЗапуск);
Параметры.Свойство("КаталогПрограммы", КаталогПрограммы);
КонецПроцедуры
@@ -149,7 +142,7 @@
СоединенияИБВызовСервера.РазрешитьРаботуПользователей();
Если ПроцессВыполняется() Тогда
УстановитьЗначение(Ложь);
УстановитьПроцессВыполняется(Ложь);
КонецЕсли;
КонецПроцедуры
@@ -206,14 +199,10 @@
ТекущаяСтраницаПомощника = Элементы.СтраницыПомощника.ТекущаяСтраница;
Если ТекущаяСтраницаПомощника = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.СтраницаВыполненияРезервногоКопирования Тогда
ПерейтиНаСтраницу(Элементы.СтраницаИнформацииИВыполненияРезервногоКопирования);
УстановитьПутьАрхиваСКопиями(Объект.КаталогСРезервнымиКопиями);
Иначе
Закрыть();
КонецЕсли;
КонецПроцедуры
@@ -267,9 +256,10 @@
Возврат;
КонецЕсли;
КоличествоСеансовИнформационнойБазы = КоличествоСеансовИнформационнойБазы();
Элементы.КоличествоАктивныхПользователей.Заголовок = КоличествоСеансовИнформационнойБазы;
Оповещение = Новый ОписаниеОповещения(
"ПерейтиНаСтраницуРезервногоКопированияПослеПроверкиДоступаКИнформационнойБазе", ЭтотОбъект);
РезервноеКопированиеИБКлиент.ПроверитьДоступКИнформационнойБазе(ПарольАдминистратораИБ, Оповещение);
КонецПроцедуры
@@ -278,14 +268,14 @@
Процедура ПерейтиНаСтраницуРезервногоКопированияПослеПроверкиДоступаКИнформационнойБазе(РезультатПодключения, Контекст) Экспорт
Если РезультатПодключения.ОшибкаПодключенияКомпоненты Тогда
Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СтраницаВыполненияРезервногоКопирования;
Элементы.СтраницыСтатусаКопирования.ТекущаяСтраница = Элементы.СтраницаОшибкаПодключения;
ОбнаруженнаяОшибкаПодключения = РезультатПодключения.КраткоеОписаниеОшибки;
Возврат;
Иначе
УстановитьПараметрыРезервногоКопирования();
КонецЕсли;
УстановитьЗначение(Истина);
УстановитьПараметрыРезервногоКопирования();
УстановитьПроцессВыполняется(Истина);
КоличествоСеансовИнформационнойБазы = КоличествоСеансовИнформационнойБазы();
Элементы.КоличествоАктивныхПользователей.Заголовок = КоличествоСеансовИнформационнойБазы;
@@ -541,7 +531,7 @@
#Если Не ВебКлиент И Не МобильныйКлиент Тогда
ИмяГлавногоФайлаСкрипта = СформироватьФайлыСкриптаОбновления();
ИмяГлавногоФайлаСкрипта = СформироватьФайлыСкрипта();
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
РезервноеКопированиеИБКлиент.СобытиеЖурналаРегистрации(),
@@ -605,50 +595,45 @@
#Если Не ВебКлиент И Не МобильныйКлиент Тогда
&НаКлиенте
Функция СформироватьФайлыСкриптаОбновления()
Функция СформироватьФайлыСкрипта()
ПараметрыРезервногоКопирования = РезервноеКопированиеИБКлиент.КлиентскиеПараметрыРезервногоКопирования();
ПараметрыРаботыКлиентаПриЗапуске = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске();
СоздатьКаталог(ПараметрыРезервногоКопирования.КаталогВременныхФайловОбновления);
// Структура параметров необходима для их определения на клиенте и передачи на сервер.
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("ИмяФайлаПрограммы" , ПараметрыРезервногоКопирования.ИмяФайлаПрограммы);
СтруктураПараметров.Вставить("СобытиеЖурналаРегистрации" , ПараметрыРезервногоКопирования.СобытиеЖурналаРегистрации);
СтруктураПараметров.Вставить("ИмяCOMСоединителя" , ПараметрыРаботыКлиентаПриЗапуске.ИмяCOMСоединителя);
СтруктураПараметров.Вставить("ЭтоБазоваяВерсияКонфигурации" , ПараметрыРаботыКлиентаПриЗапуске.ЭтоБазоваяВерсияКонфигурации);
СтруктураПараметров.Вставить("ПараметрыСкрипта" , РезервноеКопированиеИБКлиент.ПараметрыАутентификацииАдминистратораОбновления(ПарольАдминистратораИБ));
СтруктураПараметров.Вставить("ПараметрыЗапускаПредприятия" , ОбщегоНазначенияСлужебныйКлиент.ПараметрыЗапускаПредприятияИзСкрипта());
ПараметрыСкрипта = Новый Структура;
ПараметрыСкрипта.Вставить("ИмяФайлаПрограммы" , ПараметрыРезервногоКопирования.ИмяФайлаПрограммы);
ПараметрыСкрипта.Вставить("СобытиеЖурналаРегистрации" , ПараметрыРезервногоКопирования.СобытиеЖурналаРегистрации);
ПараметрыСкрипта.Вставить("ИмяCOMСоединителя" , ПараметрыРаботыКлиентаПриЗапуске.ИмяCOMСоединителя);
ПараметрыСкрипта.Вставить("ЭтоБазоваяВерсияКонфигурации" , ПараметрыРаботыКлиентаПриЗапуске.ЭтоБазоваяВерсияКонфигурации);
ПараметрыСкрипта.Вставить("ПараметрыСкрипта" , РезервноеКопированиеИБКлиент.ПараметрыАутентификацииАдминистратораОбновления(ПарольАдминистратораИБ));
ПараметрыСкрипта.Вставить("ПараметрыЗапускаПредприятия" , ОбщегоНазначенияСлужебныйКлиент.ПараметрыЗапускаПредприятияИзСкрипта());
ИменаМакетов = "ДопФайлРезервногоКопирования";
ИменаМакетов = ИменаМакетов + ",ЗаставкаРезервногоКопирования";
ТекстыМакетов = ПолучитьТекстыМакетов(ИменаМакетов, СтруктураПараметров, ПараметрыПриложения["СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации"]);
Скрипты = СформироватьТекстСкриптов(ПараметрыСкрипта, ПараметрыПриложения["СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации"]);
// Вспомогательный файл main.js.
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(ТекстыМакетов[0]);
ФайлСкрипта.УстановитьТекст(Скрипты.Скрипт);
ИмяФайлаСкрипта = ПараметрыРезервногоКопирования.КаталогВременныхФайловОбновления + "main.js";
ФайлСкрипта.Записать(ИмяФайлаСкрипта, РезервноеКопированиеИБКлиент.КодировкаФайловПрограммыРезервногоКопированияИБ());
// Вспомогательный файл: helpers.js.
// Вспомогательный файл helpers.js.
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(ТекстыМакетов[1]);
ФайлСкрипта.Записать(ПараметрыРезервногоКопирования.КаталогВременныхФайловОбновления + "helpers.js", РезервноеКопированиеИБКлиент.КодировкаФайловПрограммыРезервногоКопированияИБ());
ФайлСкрипта.УстановитьТекст(Скрипты.ДопФайлРезервногоКопирования);
ФайлСкрипта.Записать(ПараметрыРезервногоКопирования.КаталогВременныхФайловОбновления + "helpers.js",
РезервноеКопированиеИБКлиент.КодировкаФайловПрограммыРезервногоКопированияИБ());
ИмяГлавногоФайлаСкрипта = Неопределено;
// Вспомогательный файл: splash.png.
БиблиотекаКартинок.ЗаставкаВнешнейОперации.Записать(ПараметрыРезервногоКопирования.КаталогВременныхФайловОбновления + "splash.png");
// Вспомогательный файл: splash.ico.
БиблиотекаКартинок.ЗначокЗаставкиВнешнейОперации.Записать(ПараметрыРезервногоКопирования.КаталогВременныхФайловОбновления + "splash.ico");
// Вспомогательный файл: progress.gif.
БиблиотекаКартинок.ДлительнаяОперация48.Записать(ПараметрыРезервногоКопирования.КаталогВременныхФайловОбновления + "progress.gif");
// Главный файл заставки: splash.hta.
// Главный файл заставки splash.hta.
ИмяГлавногоФайлаСкрипта = ПараметрыРезервногоКопирования.КаталогВременныхФайловОбновления + "splash.hta";
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(ТекстыМакетов[2]);
ФайлСкрипта.УстановитьТекст(Скрипты.ЗаставкаРезервногоКопирования);
ФайлСкрипта.Записать(ИмяГлавногоФайлаСкрипта, РезервноеКопированиеИБКлиент.КодировкаФайловПрограммыРезервногоКопированияИБ());
ФайлЛога = Новый ТекстовыйДокумент;
@@ -663,26 +648,20 @@
#КонецЕсли
&НаСервере
Функция ПолучитьТекстыМакетов(ИменаМакетов, СтруктураПараметров, СообщенияДляЖурналаРегистрации)
Функция СформироватьТекстСкриптов(Знач ПараметрыСкрипта, Знач СообщенияДляЖурналаРегистрации)
// Запись накопленных событий ЖР.
ЖурналРегистрации.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации);
Результат = Новый Массив();
Результат.Добавить(ПолучитьТекстСкрипта(СтруктураПараметров));
ИменаМакетовМассив = СтрРазделить(ИменаМакетов, ",");
Для каждого ИмяМакета Из ИменаМакетовМассив Цикл
Результат.Добавить(Обработки.РезервноеКопированиеИБ.ПолучитьМакет(ИмяМакета).ПолучитьТекст());
КонецЦикла;
Результат = Новый Структура("Скрипт, ДопФайлРезервногоКопирования, ЗаставкаРезервногоКопирования");
Результат.Скрипт = СформироватьТекстСкрипта(ПараметрыСкрипта);
Результат.ДопФайлРезервногоКопирования = Обработки.РезервноеКопированиеИБ.ПолучитьМакет("ДопФайлРезервногоКопирования").ПолучитьТекст();
Результат.ЗаставкаРезервногоКопирования = СформироватьТекстЗаставки();
Возврат Результат;
КонецФункции
&НаСервере
Функция ПолучитьТекстСкрипта(СтруктураПараметров)
Функция СформироватьТекстСкрипта(ПараметрыСкрипта)
// Файл обновления конфигурации: main.js.
ШаблонСкрипта = Обработки.РезервноеКопированиеИБ.ПолучитьМакет("МакетФайлаРезервногоКопирования");
@@ -695,49 +674,45 @@
Текст.УдалитьСтроку(1);
Текст.УдалитьСтроку(Текст.КоличествоСтрок());
Возврат ВставитьПараметрыСкрипта(Скрипт.ПолучитьТекст(), СтруктураПараметров) + Текст.ПолучитьТекст();
Возврат ВставитьПараметрыСкрипта(Скрипт.ПолучитьТекст(), ПараметрыСкрипта) + Текст.ПолучитьТекст();
КонецФункции
&НаСервере
Функция ВставитьПараметрыСкрипта(Знач Текст, Знач СтруктураПараметров)
Функция ВставитьПараметрыСкрипта(Знач Текст, Знач ПараметрыСкрипта)
Результат = Текст;
ИмяКаталога = ПроверитьКаталогНаУказаниеКорневогоЭлемента(Объект.КаталогСРезервнымиКопиями);
ПараметрыСкрипта = СтруктураПараметров.ПараметрыСкрипта;
СтрокаСоединенияИнформационнойБазы = ПараметрыСкрипта.СтрокаСоединенияИнформационнойБазы + ПараметрыСкрипта.СтрокаПодключения;
ПараметрыТекста = РезервноеКопированиеИБСервер.ПодготовитьОбщиеПараметрыСкрипта(ПараметрыСкрипта);
ПараметрыТекста["[СоздаватьРезервнуюКопию]"] = "true";
ПараметрыТекста["[КаталогРезервнойКопии]"] = РезервноеКопированиеИБСервер.ПодготовитьТекст(ИмяКаталога + "\backup" + СтрокаКаталогаИзДаты());
ПараметрыТекста["[ВосстанавливатьИнформационнуюБазу]"] = "false";
ПараметрыТекста["[ВыполнитьПриЗавершенииРаботы]"] = ?(Параметры.РежимРаботы = "ВыполнитьПриЗавершенииРаботы", "true", "false");
Если СтрЗаканчиваетсяНа(СтрокаСоединенияИнформационнойБазы, ";") Тогда
СтрокаСоединенияИнформационнойБазы = Лев(СтрокаСоединенияИнформационнойБазы, СтрДлина(СтрокаСоединенияИнформационнойБазы) - 1);
КонецЕсли;
Возврат РезервноеКопированиеИБСервер.ПодставитьПараметрыВТекст(Текст, ПараметрыТекста);
КаталогПрограммы = ?(ПустаяСтрока(КаталогПрограммы), КаталогПрограммы(), КаталогПрограммы);
ИмяИсполняемогоФайлаПрограммы = КаталогПрограммы + СтруктураПараметров.ИмяФайлаПрограммы;
КонецФункции
&НаСервере
Функция СформироватьТекстЗаставки()
// Определение пути к информационной базе.
ПризнакФайловогоРежима = Неопределено;
ПутьКИнформационнойБазе = СоединенияИБКлиентСервер.ПутьКИнформационнойБазе(ПризнакФайловогоРежима, 0);
ШаблонТекста = Обработки.РезервноеКопированиеИБ.ПолучитьМакет("ЗаставкаРезервногоКопирования").ПолучитьТекст();
ПараметрПутиКИнформационнойБазе = ?(ПризнакФайловогоРежима, "/F", "/S") + ПутьКИнформационнойБазе;
СтрокаПутиКИнформационнойБазе = ?(ПризнакФайловогоРежима, ПутьКИнформационнойБазе, "");
ПараметрыТекста = Новый Соответствие;
ПараметрыТекста["[ЗаголовокЗаставки]"] = НСтр("ru = 'Резервное копирование информационной базы...'");
ПараметрыТекста["[ТекстЗаставки]"] =
НСтр("ru = 'Пожалуйста, подождите.
|<br /> Выполняется резервное копирование базы.
|<br /> Не рекомендуется останавливать процесс.'");
ПараметрыТекста["[Шаг1Инициализация]"] = НСтр("ru = 'Инициализация'");
ПараметрыТекста["[Шаг2СозданиеРезервнойКопии]"] = НСтр("ru = 'Создание резервной копии информационной базы'");
ПараметрыТекста["[Шаг3ОжиданиеЗавершения]"] = НСтр("ru = 'Ожидание завершения резервного копирования'");
ПараметрыТекста["[Шаг4РазрешениеПодключений]"] = НСтр("ru = 'Разрешение подключений новых соединений'");
ПараметрыТекста["[Шаг5Завершение]"] = НСтр("ru = 'Завершение'");
ПараметрыТекста["[ПроцессПрерван]"] = НСтр("ru = 'Внимание: процесс резервного копирования был прерван, и информационная база осталась заблокированной.'");
ПараметрыТекста["[ПроцессПрерванПодсказка]"] = НСтр("ru = 'Для разблокирования информационной базы воспользуйтесь консолью кластера серверов или запустите ""1С:Предприятие"".'");
СтрокаКаталога = ПроверитьКаталогНаУказаниеКорневогоЭлемента(Объект.КаталогСРезервнымиКопиями);
Результат = СтрЗаменить(Результат, "[ИмяИсполняемогоФайлаПрограммы]" , ПодготовитьТекст(ИмяИсполняемогоФайлаПрограммы));
Результат = СтрЗаменить(Результат, "[ПараметрПутиКИнформационнойБазе]" , ПодготовитьТекст(ПараметрПутиКИнформационнойБазе));
Результат = СтрЗаменить(Результат, "[СтрокаПутиКФайлуИнформационнойБазы]", ПодготовитьТекст(ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СтрЗаменить(СтрокаПутиКИнформационнойБазе, """", ""))));
Результат = СтрЗаменить(Результат, "[СтрокаСоединенияИнформационнойБазы]", ПодготовитьТекст(СтрокаСоединенияИнформационнойБазы));
Результат = СтрЗаменить(Результат, "[ИмяАдминистратораОбновления]" , ПодготовитьТекст(ИмяПользователя()));
Результат = СтрЗаменить(Результат, "[СобытиеЖурналаРегистрации]" , ПодготовитьТекст(СтруктураПараметров.СобытиеЖурналаРегистрации));
Результат = СтрЗаменить(Результат, "[СоздаватьРезервнуюКопию]" , "true");
Результат = СтрЗаменить(Результат, "[КаталогРезервнойКопии]" , ПодготовитьТекст(СтрокаКаталога + "\backup" + СтрокаКаталогаИзДаты()));
Результат = СтрЗаменить(Результат, "[ВосстанавливатьИнформационнуюБазу]" , "false");
Результат = СтрЗаменить(Результат, "[ИмяCOMСоединителя]" , ПодготовитьТекст(СтруктураПараметров.ИмяCOMСоединителя));
Результат = СтрЗаменить(Результат, "[ИспользоватьCOMСоединитель]" , ?(СтруктураПараметров.ЭтоБазоваяВерсияКонфигурации, "false", "true"));
Результат = СтрЗаменить(Результат, "[ВыполнитьПриЗавершенииРаботы]" , ?(Параметры.РежимРаботы = "ВыполнитьПриЗавершенииРаботы", "true", "false"));
Результат = СтрЗаменить(Результат, "[ПараметрыЗапускаПредприятия]" , ПодготовитьТекст(СтруктураПараметров.ПараметрыЗапускаПредприятия));
Возврат Результат;
Возврат РезервноеКопированиеИБСервер.ПодставитьПараметрыВТекст(ШаблонТекста, ПараметрыТекста);;
КонецФункции
@@ -762,16 +737,6 @@
КонецФункции
&НаСервере
Функция ПодготовитьТекст(Знач Текст)
Строка = СтрЗаменить(Текст, "\", "\\");
Строка = СтрЗаменить(Строка, "'", "\'");
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("'%1'", Строка);
КонецФункции
&НаКлиенте
Процедура НадписьОбновитьВерсиюКомпонентыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
@@ -801,7 +766,7 @@
КонецФункции
&НаКлиенте
Функция УстановитьЗначение(Знач ПроцессВыполняется)
Функция УстановитьПроцессВыполняется(Знач ПроцессВыполняется)
Настройки = ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыРезервногоКопированияИБ"];
Настройки.ПроцессВыполняется = ПроцессВыполняется;
@@ -6,7 +6,7 @@
<meta http-equiv="x-ua-compatible" content="IE=EmulateIE7">
<hta:application id="oHTA" border="none" caption="no" contextmenu="no" selection="no" icon="splash.ico" innerborder="no"
navigable="yes" showintaskbar="yes" scroll="no" version="1.0.0.0" />
<title>Восстановление данных из резервной копии...</title>
<title>[ЗаголовокЗаставки]</title>
<script language="javascript" src="helpers.js"></script>
<script language="javascript" src="main.js"></script>
<script language="javascript">
@@ -38,29 +38,29 @@
function doStep (step) {
switch (step) {
case 0:
setProgress('Инициализация')
setProgress('[Шаг1Инициализация]')
break
case 1:
ret = initialize()
break
case 2:
setProgress('Восстановление данных')
setProgress('[Шаг2ВосстановлениеДанных]')
ret = restoreDB()
break
case 3:
setProgress('Ожидание завершения восстановления данных')
setProgress('[Шаг3ОжиданиеЗавершения]')
break
case 4:
ret = WaitUntilFinish()
break
case 5:
setProgress('Разрешение подключений новых соединений')
setProgress('[Шаг4РазрешениеПодключений]')
break
case 6:
ret = allowConnections()
break
case 7:
setProgress('Завершение')
setProgress('[Шаг5Завершение]')
break
case 8:
@@ -115,8 +115,8 @@
function checkClose () {
if (!finish) {
event.returnValue = format('Внимание: процесс восстановления данных был прерван, и информационная база осталась заблокированной!\n' +
'Для разблокирования информационной базы воспользуйтесь консолью кластера серверов или запустите "1С:Предприятие".')
event.returnValue = format('[ПроцессПрерван]\n' +
'[ПроцессПрерванПодсказка]')
}
}
@@ -142,10 +142,7 @@
</div>
<div id="captionText" style="font-size: 9pt; font-family: verdana,arial; font-weight: bold;
color: #606060; position: absolute; left: 80px; top: 70px;">
Пожалуйста, подождите.
<br /> Выполняется восстановление базы данных
<br /> из резервной копии.
<br /> Не рекомендуется останавливать процесс.
[ТекстЗаставки]
</div>
<div id="progressText" style="font-size: 8pt; font-family: verdana,arial; color: #000000;
position: absolute; left: 10px; top: 240px;">
@@ -6,7 +6,7 @@
<meta http-equiv="x-ua-compatible" content="IE=EmulateIE7">
<hta:application id="oHTA" border="none" caption="no" contextmenu="no" selection="no" icon="splash.ico" innerborder="no"
navigable="yes" showintaskbar="yes" scroll="no" version="1.0.0.0" />
<title>Резервное копирование информационной базы...</title>
<title>[ЗаголовокЗаставки]</title>
<script language="javascript" src="helpers.js"></script>
<script language="javascript" src="main.js"></script>
<script language="javascript">
@@ -38,31 +38,31 @@
function doStep (step) {
switch (step) {
case 0:
setProgress('Инициализация')
setProgress('[Шаг1Инициализация]')
break
case 1:
ret = initialize()
break
case 2:
setProgress('Создание резервной копии информационной базы')
setProgress('[Шаг2СозданиеРезервнойКопии]')
break
case 3:
ret = backupDB()
break
case 4:
setProgress('Ожидание завершения резервного копирования')
setProgress('[Шаг3ОжиданиеЗавершения]')
break
case 5:
ret = WaitUntilFinish()
break
case 6:
setProgress('Разрешение подключений новых соединений')
setProgress('[Шаг4РазрешениеПодключений]')
break
case 7:
ret = allowConnections()
break
case 8:
setProgress('Завершение')
setProgress('[Шаг5Завершение]')
break
case 9:
// Все готово.
@@ -114,9 +114,9 @@
function checkClose () {
if (!finish) {
event.returnValue = format('Внимание: процесс резервного копирования был прерван, и информационная база осталась заблокированной!\n' +
'Для разблокирования информационной базы воспользуйтесь консолью кластера серверов или запустите "1С:Предприятие".')
}
event.returnValue = format('[ПроцессПрерван]\n' +
'[ПроцессПрерванПодсказка]')
}
}
function ClearTempFiles () {
@@ -140,9 +140,7 @@
</div>
<div id="captionText" style="font-size: 9pt; font-family: verdana,arial; font-weight: bold;
color: #606060; position: absolute; left: 80px; top: 70px;">
Пожалуйста, подождите.
<br /> Выполняется резервное копирование базы.
<br /> Не рекомендуется останавливать процесс.
[ТекстЗаставки]
</div>
<div id="progressText" style="font-size: 8pt; font-family: verdana,arial; color: #000000;
position: absolute; left: 10px; top: 240px;">
@@ -16,8 +16,8 @@ var TempCatalog = [КаталогВременныхФайлов] // катало
var v8exe = [ИмяИсполняемогоФайлаПрограммы] // Путь к исполняемому файлу 1С:Предприятия 8
var infoBasePath = [ПараметрПутиКИнформационнойБазе]
var BaseFileName = [СтрокаПутиКФайлуИнформационнойБазы]
var connectionString = [СтрокаСоединенияИнформационнойБазы] + '; UC=РезервноеКопирование'
var adminName = [ИмяАдминистратораОбновления] // имя администратора, инициировавшего обновление
var connectionString = [СтрокаСоединенияИнформационнойБазы] + '; UC=[КодРазблокировки]'
var adminName = [ИмяАдминистратора] // имя администратора, инициировавшего резервное копирование
var backupFileName = [ФайлРезервнойКопии] // Файл резервной копии
var eventLogID = [СобытиеЖурналаРегистрации]
var comConnectorName = [ИмяCOMСоединителя] // имя COM-класса для работы с 1С:Предприятием 8 через COM-соединение
@@ -14,8 +14,8 @@ var outFileName = 'log' + now.valueOf() + '.txt' // Путь к log-файлу
var v8exe = [ИмяИсполняемогоФайлаПрограммы] // Путь к исполняемому файлу 1С:Предприятия 8
var infoBasePath = [ПараметрПутиКИнформационнойБазе]
var BaseFileName = [СтрокаПутиКФайлуИнформационнойБазы]
var connectionString = [СтрокаСоединенияИнформационнойБазы] + ';UC=РезервноеКопирование'
var adminName = [ИмяАдминистратораОбновления] // имя администратора, инициировавшего обновление
var connectionString = [СтрокаСоединенияИнформационнойБазы] + ';UC=[КодРазблокировки]'
var adminName = [ИмяАдминистратора] // имя администратора, инициировавшего резервное копирование
var backupFileName = [КаталогРезервнойКопии] + '.zip' // Файл резервной копии
var UseRestore = [ВосстанавливатьИнформационнуюБазу] // Использовать восстановление ИБ в случае падения
var createBackup = [СоздаватьРезервнуюКопию] // создавать резервную копию
@@ -58,8 +58,7 @@
Если Не ПустаяСтрока(КаталогСкрипта) Тогда
МодульОбновлениеКонфигурацииКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбновлениеКонфигурацииКлиент");
МодульОбновлениеКонфигурацииКлиент.ЗаписатьФайлПротоколаОшибкиИЗавершитьРаботу(
КаталогСкрипта,
МодульОбновлениеКонфигурацииКлиент.ЗаписатьФайлПротоколаОшибкиИЗавершитьРаботу(КаталогСкрипта,
Параметры.ПодробноеПредставлениеОшибки);
КонецЕсли;
@@ -94,7 +94,7 @@
<key>ru</key>
<value>Перед выполнением обновления убедитесь, что установленные расширения совместимы с новой версией конфигурации.
Рекомендуем предварительно выполнить обновление на резервной копии.
&lt;link e1cib/app/ОбщаяФорма.Расширения>Перейти к списку расширений&lt;/></value>
&lt;link Перейти к списку расширений>Перейти к списку расширений&lt;/></value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -121,6 +121,10 @@
<autoMaxHeight>true</autoMaxHeight>
<skipOnInput>false</skipOnInput>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<handlers>
<event>URLProcessing</event>
<name>НадписьЕстьРасширенияОбработкаНавигационнойСсылки</name>
</handlers>
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
@@ -299,6 +299,12 @@
КонецПроцедуры
&НаКлиенте
Процедура НадписьЕстьРасширенияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФорму("ОбщаяФорма.Расширения");
КонецПроцедуры
&НаСервере
Функция ЕстьПроблемыСистемныхПроверок()
@@ -713,6 +719,9 @@
Результат = ОбновлениеКонфигурации.УстановитьИсправления(ПомещенныеФайлы);
Элементы.ОшибкаУстановкиИсправлений.Видимость = Результат.ЕстьОшибки;
Элементы.ПанельПредупреждений.Видимость = Ложь;
Элементы.ПанельИнформации.Видимость = Ложь;
Если Результат.ЕстьОшибки Тогда
Если Результат.УстановленоИсправлений > 0 Тогда
ТекстНадписи = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -6,7 +6,7 @@
<meta http-equiv="x-ua-compatible" content="IE=EmulateIE7">
<hta:application id="oHTA" border="none" caption="no" contextmenu="no" selection="no" icon="splash.ico" innerborder="no"
navigable="yes" showintaskbar="yes" scroll="no" version="1.0.0.0" />
<title>Обновление конфигурации "1С:Предприятие"...</title>
<title>[ЗаголовокЗаставки]</title>
<script language="javascript" src="helpers.js"></script>
<script language="javascript" src="main.js"></script>
<script language="javascript">
@@ -44,14 +44,14 @@
function doStep (step) {
switch (step) {
case 0:
setProgress('Инициализация')
setProgress('[Шаг1Инициализация]')
alert('111')
break
case 1:
ret = initialize()
break
case 2:
setProgress('Завершение работы пользователей')
setProgress('[Шаг2ЗавершениеРаботы]')
break
case 3:
ret = disconnectAndBlockUsersHTA()
@@ -59,7 +59,7 @@
break
case 4:
if (createBackup) {
setProgress('Создание резервной копии информационной базы')
setProgress('[Шаг3СозданиеРезервнойКопии]')
}
break
case 5:
@@ -67,7 +67,7 @@
break
case 6:
if (executeDeferredHandlers) {
setProgress('Выполнение отложенных обработчиков обновления')
setProgress('[Шаг6ОтложенноеОбновление]')
}
break
case 7:
@@ -75,20 +75,20 @@
break
case endLoadStep:
if (makeCompression) {
setProgress('Сжатие таблиц информационной базы')
setProgress('[Шаг7СжатиеТаблиц]')
}
break
case endLoadStep + 1:
ret = compressDB()
break
case endLoadStep + 2:
setProgress('Разрешение подключения новых соединений')
setProgress('[Шаг8РазрешениеПодключений]')
break
case endLoadStep + 3:
ret = allowConnections()
break
case endLoadStep + 4:
setProgress('Завершение')
setProgress('[Шаг9Завершение]')
break
case endLoadStep + 5:
// Все готово.
@@ -107,13 +107,13 @@
var internalStep = step - loadStep
switch (internalStep) {
case 0:
setProgress('Обновление конфигурации информационной базы')
setProgress('[Шаг4ОбновлениеКонфигурации]')
break
case 1:
ret = updateDbCfg()
break
case 2:
setProgress('Выполнение обработчиков обновления')
setProgress('[Шаг5ОбновлениеИБ]')
break
case 3:
ret = executeUpdate(true)
@@ -127,7 +127,7 @@
var runHandlers = fileProperties.requiredVersion || (cfgFileIndex + 1 === cfgFileNames.length)
switch (internalStep) {
case 0:
setProgress(format('Загрузка файла обновления в основную базу ({0}/{1})', cfgFileIndex + 1, cfgFileNames.length))
setProgress(format('[Шаг41Загрузка] ({0}/{1})', cfgFileIndex + 1, cfgFileNames.length))
break
case 1:
var fileName = fileProperties.filePath
@@ -138,14 +138,14 @@
}
break
case 2:
setProgress(format('Обновление конфигурации информационной базы ({0}/{1})', cfgFileIndex + 1, cfgFileNames.length))
setProgress(format('[Шаг42ОбновлениеКонфигурации] ({0}/{1})', cfgFileIndex + 1, cfgFileNames.length))
break
case 3:
ret = updateDbCfg()
break;
case 4:
if (runHandlers) {
setProgress(format('Выполнение обработчиков обновления ({0}/{1})', cfgFileIndex + 1, cfgFileNames.length))
setProgress(format('[Шаг43ОбновлениеИБ] ({0}/{1})', cfgFileIndex + 1, cfgFileNames.length))
}
break
case 5:
@@ -171,9 +171,9 @@
log(format('Завершение с ошибкой. Код ошибки: {0}. Подробности см. в предыдущей записи.', ret), true)
if (UseRestore) {
setProgress('Восстановление информационной базы')
setProgress('[Шаг10Восстановление]')
} else {
setProgress('Завершение')
setProgress('[Шаг9Завершение]')
}
errStep++
@@ -204,8 +204,8 @@
function checkClose () {
if (!finish) {
event.returnValue = format('Внимание: процесс обновления был прерван, и информационная база осталась заблокированной!\n' +
'Для разблокирования информационной базы воспользуйтесь консолью кластера серверов или запустите "1С:Предприятие".')
event.returnValue = format('[ПроцессПрерван]\n' +
'[ПроцессПрерванПодсказка].')
}
}
@@ -232,8 +232,7 @@
</div>
<div id="captionText" style="font-size: 9pt; font-family: verdana,arial; font-weight: bold;
color: #606060; position: absolute; left: 80px; top: 70px;">
Пожалуйста, подождите.
<br> Выполняется обновление конфигурации.
[ТекстЗаставки]
</div>
<div id="progressText" style="font-size: 8pt; font-family: verdana,arial; color: #000000;
position: absolute; left: 10px; top: 240px;">
@@ -19,7 +19,7 @@ var v8client = [ИмяИсполняемогоФайлаКлиента] // Пу
var v8comcntr = [ПутьКCOMСоединителю] // Путь к comcntr.dll
var infoBasePath = [ПараметрПутиКИнформационнойБазе]
var BaseFileName = [СтрокаПутиКФайлуИнформационнойБазы]
var connectionString = [СтрокаСоединенияИнформационнойБазы] + ';UC=ПакетноеОбновлениеКонфигурацииИБ'
var connectionString = [СтрокаСоединенияИнформационнойБазы] + ';UC=[КодРазблокировки]'
var backupFileName = [КаталогРезервнойКопии] + '1Cv8' + now.valueOf() + '.1CD' // Файл резервной копии
var UseRestore = [ВосстанавливатьИнформационнуюБазу] // Использовать восстановление ИБ в случае падения
var createBackup = [СоздаватьРезервнуюКопию] // создавать резервную копию
@@ -468,7 +468,7 @@
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Варианты отчетов.Установка настроек доступности по умолчанию'", КодОсновногоЯзыка),,
НСтр("ru = 'Варианты отчетов.Установка настроек доступности по умолчанию'", КодОсновногоЯзыка),
УровеньЖурналаРегистрации.Предупреждение,
МетаданныеРегистра,,
Комментарий);
@@ -1507,7 +1507,7 @@
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:Button">
<name>ПараметрыДоступаВИнтернет1</name>
<name>ПараметрыДоступаВИнтернетFTP</name>
<id>120</id>
<visible>true</visible>
<enabled>true</enabled>
@@ -1515,7 +1515,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПараметрыДоступаВИнтернет1ExtendedTooltip</name>
<name>ПараметрыДоступаВИнтернетFTPРасширеннаяПодсказка</name>
<id>165</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2465,6 +2465,46 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ДоступныеВидыТранспорта</name>
<id>11</id>
<valueType>
<types>ValueTable</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<columns>
<name>ВидТранспорта</name>
<id>1</id>
<valueType>
<types>EnumRef.ВидыТранспортаСообщенийОбмена</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>ИмяСтраницы</name>
<id>2</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
</attributes>
<formCommands>
<name>ПроверитьПодключениеFTP</name>
<title>
@@ -11,41 +11,29 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьВидимостьЭлементовФормы();
ЗаполнитьДоступныеВидыТранспорта();
Если ЗначениеЗаполнено(Запись.ВидТранспортаСообщенийОбменаПоУмолчанию) Тогда
ИмяСтраницы = "НастройкиТранспорта[ВидТранспорта]";
ИмяСтраницы = СтрЗаменить(ИмяСтраницы, "[ВидТранспорта]"
, ОбщегоНазначения.ИмяЗначенияПеречисления(Запись.ВидТранспортаСообщенийОбменаПоУмолчанию));
Если Элементы[ИмяСтраницы].Видимость Тогда
Элементы.СтраницыВидовТранспорта.ТекущаяСтраница = Элементы[ИмяСтраницы];
КонецЕсли;
КонецЕсли;
СобытиеЖурналаРегистрацииУстановкаПодключенияКWebСервису
= ОбменДаннымиСервер.СобытиеЖурналаРегистрацииУстановкаПодключенияКWebСервису();
СобытиеЖурналаРегистрацииУстановкаПодключенияКWebСервису =
ОбменДаннымиСервер.СобытиеЖурналаРегистрацииУстановкаПодключенияКWebСервису();
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда
Элементы.ПараметрыДоступаВИнтернет.Видимость = Истина;
Элементы.ПараметрыДоступаВИнтернет1.Видимость = Истина;
Элементы.ПараметрыДоступаВИнтернетFTP.Видимость = Истина;
Иначе
Элементы.ПараметрыДоступаВИнтернет.Видимость = Ложь;
Элементы.ПараметрыДоступаВИнтернет1.Видимость = Ложь;
Элементы.ПараметрыДоступаВИнтернетFTP.Видимость = Ложь;
КонецЕсли;
Если ЗначениеЗаполнено(Запись.Корреспондент) Тогда
ПаролиФормы = "COMПарольПользователя,FTPСоединениеПароль,WSПароль,ПарольАрхиваСообщенияОбмена";
УстановитьПривилегированныйРежим(Истина);
Пароли = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Запись.Корреспондент, "COMПарольПользователя, FTPСоединениеПароль, WSПароль, ПарольАрхиваСообщенияОбмена");
Пароли = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Запись.Корреспондент, ПаролиФормы);
УстановитьПривилегированныйРежим(Ложь);
COMПарольПользователя = ?(ЗначениеЗаполнено(Пароли.COMПарольПользователя), ЭтотОбъект.УникальныйИдентификатор, "");
FTPСоединениеПароль = ?(ЗначениеЗаполнено(Пароли.FTPСоединениеПароль), ЭтотОбъект.УникальныйИдентификатор, "");
WSПароль = ?(ЗначениеЗаполнено(Пароли.WSПароль), ЭтотОбъект.УникальныйИдентификатор, "");
ПарольАрхиваСообщенияОбмена = ?(ЗначениеЗаполнено(Пароли.ПарольАрхиваСообщенияОбмена), ЭтотОбъект.УникальныйИдентификатор, "");
Для Каждого ПарольФормы Из СтрРазделить(ПаролиФормы, ",", Ложь) Цикл
ЭтотОбъект[ПарольФормы] = ?(ЗначениеЗаполнено(Пароли[ПарольФормы]), ЭтотОбъект.УникальныйИдентификатор, "");
КонецЦикла;
КонецЕсли;
КонецПроцедуры
@@ -53,6 +41,8 @@
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УстановитьОтображениеВкладокВидовТранспорта();
ВариантРаботыИнформационнойБазыПриИзменении();
АутентификацияОперационнойСистемыПриИзменении();
@@ -377,36 +367,62 @@
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовФормы()
Процедура ЗаполнитьДоступныеВидыТранспорта()
ИспользуемыеТранспорты = Новый Массив;
ДоступныеВидыТранспорта.Очистить();
Элементы.ВидТранспортаСообщенийОбменаПоУмолчанию.СписокВыбора.Очистить();
Если ЗначениеЗаполнено(Запись.Корреспондент) Тогда
ИспользуемыеТранспорты = ОбменДаннымиПовтИсп.ИспользуемыеТранспортыСообщенийОбмена(Запись.Корреспондент);
Если ЗначениеЗаполнено(Запись.ВидТранспортаСообщенийОбменаПоУмолчанию)
И ИспользуемыеТранспорты.Найти(Запись.ВидТранспортаСообщенийОбменаПоУмолчанию) = Неопределено Тогда
ИспользуемыеТранспорты.Добавить(Запись.ВидТранспортаСообщенийОбменаПоУмолчанию);
КонецЕсли;
КонецЕсли;
Для Каждого СтраницаВидаТранспорта Из Элементы.СтраницыВидовТранспорта.ПодчиненныеЭлементы Цикл
СтраницаВидаТранспорта.Видимость = Ложь;
КонецЦикла;
Элементы.ВидТранспортаСообщенийОбменаПоУмолчанию.СписокВыбора.Очистить();
Для Каждого Элемент Из ИспользуемыеТранспорты Цикл
ИмяЭлементаФормы = "НастройкиТранспорта[ВидТранспорта]";
ИмяЭлементаФормы = СтрЗаменить(ИмяЭлементаФормы, "[ВидТранспорта]", ОбщегоНазначения.ИмяЗначенияПеречисления(Элемент));
Элементы[ИмяЭлементаФормы].Видимость = Истина;
СтрокаДоступныеВидыТранспорта = ДоступныеВидыТранспорта.Добавить();
СтрокаДоступныеВидыТранспорта.ВидТранспорта = Элемент;
СтрокаДоступныеВидыТранспорта.ИмяСтраницы = СтрЗаменить("НастройкиТранспорта[ВидТранспорта]",
"[ВидТранспорта]",
ОбщегоНазначения.ИмяЗначенияПеречисления(Элемент));
Элементы.ВидТранспортаСообщенийОбменаПоУмолчанию.СписокВыбора.Добавить(Элемент, Строка(Элемент));
КонецЦикла;
Если ИспользуемыеТранспорты.Количество() = 1 Тогда
КонецПроцедуры
&НаКлиенте
Процедура УстановитьОтображениеВкладокВидовТранспорта()
ИмяСвойстваЭлемента = "Видимость";
#Если ВебКлиент Тогда
ИмяСвойстваЭлемента = "Доступность";
#КонецЕсли
Для Каждого СтраницаВидаТранспорта Из Элементы.СтраницыВидовТранспорта.ПодчиненныеЭлементы Цикл
СтраницаВидаТранспорта[ИмяСвойстваЭлемента] = Ложь;
КонецЦикла;
Для Каждого СтрокаДоступныеВидыТранспорта Из ДоступныеВидыТранспорта Цикл
ЭлементВкладка = Элементы[СтрокаДоступныеВидыТранспорта.ИмяСтраницы];
ЭлементВкладка[ИмяСвойстваЭлемента] = Истина;
Если Запись.ВидТранспортаСообщенийОбменаПоУмолчанию = СтрокаДоступныеВидыТранспорта.ВидТранспорта Тогда
Элементы.СтраницыВидовТранспорта.ТекущаяСтраница = ЭлементВкладка;
КонецЕсли;
КонецЦикла;
Если ДоступныеВидыТранспорта.Количество() = 1 Тогда
Элементы.СтраницыВидовТранспорта.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
@@ -60,11 +60,11 @@
"СтандартныеПодсистемы.УправлениеДоступом.ВерсияТекстовОграниченияДоступа",
ВерсияТекстов, ЕстьТекущиеИзменения);
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.0.3.92") < 0
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.0.3.107") < 0
Или ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.1.1") > 0
И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.1.109") < 0
Или ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.1") > 0
И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.150") < 0 Тогда
И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.169") < 0 Тогда
ЕстьТекущиеИзменения = Истина;
КонецЕсли;
@@ -141,11 +141,11 @@
ЗапланироватьОбновление(Истина, Ложь, "ПереходНаВерсиюБСП_3.0.3.76");
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.0.3.92") < 0
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.0.3.107") < 0
Или ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.1") > 0
И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.150") < 0 Тогда
И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.169") < 0 Тогда
ЗапланироватьОбновление(Ложь, Истина, "ПереходНаВерсиюБСП_3.0.3.92");
ЗапланироватьОбновление(Ложь, Истина, "ПереходНаВерсиюБСП_3.0.3.107");
КонецЕсли;
КонецПроцедуры
@@ -270,19 +270,24 @@
&НаКлиенте
Процедура НепринятыеПоДатеПриАктивизацииСтроки(Элемент)
Если Элемент.ТекущиеДанные <> Неопределено Тогда
Если Элемент.ТекущиеДанные.НовыйОбъект Тогда
Элементы.НепринятыеПоДатеПринятьВерсию.Доступность = Ложь;
Иначе
Элементы.НепринятыеПоДатеПринятьВерсию.Доступность = Истина;
КонецЕсли;
КонецЕсли;
СвязанныеЭлементы = Новый Массив;
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеСравнитьСДаннымиВБазе);
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеПринятьВерсию);
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеИзменить);
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеОткрытьВерсию);
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеИгнорироватьНепринятый);
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеНеИгнорироватьНепринятый);
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеКонтекстноеМенюСравнитьСДаннымиВБазе);
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеКонтекстноеМенюПринятьВерсию);
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеКонтекстноеМенюИзменить);
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеКонтекстноеМенюОткрытьВерсиюНепринятыеВЭтойПрограмме);
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеКонтекстноеМенюОткрытьВерсию);
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеКонтекстноеМенюГруппаИгнорирования);
Для Каждого СвязанныйЭлемент Из СвязанныеЭлементы Цикл
СвязанныйЭлемент.Доступность = (Элемент.ТекущиеДанные <> Неопределено);
КонецЦикла;
КонецПроцедуры
@@ -379,8 +384,12 @@
Процедура ПровестиДокумент(Команда)
ОчиститьСообщения();
ПровестиДокументы(Элементы.НепроведенныеДокументы.ВыделенныеСтроки);
ОбновитьНаСервере("НепроведенныеДокументы");
СообщениеОбОшибке = "";
ПровестиДокументы(Элементы.НепроведенныеДокументы.ВыделенныеСтроки, СообщениеОбОшибке);
Если Не ПустаяСтрока(СообщениеОбОшибке) Тогда
ПоказатьПредупреждение(, СообщениеОбОшибке);
КонецЕсли;
КонецПроцедуры
@@ -463,8 +472,16 @@
&НаКлиенте
Процедура ПринятьВерсиюНепринятыеЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ПринятьОтклонитьВерсиюНаСервере(Элементы.НепринятыеПоДате.ВыделенныеСтроки, "НепринятыеПоДате");
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
ОчиститьСообщения();
СообщениеОбОшибке = "";
ПринятьОтклонитьВерсиюНаСервере(Элементы.НепринятыеПоДате.ВыделенныеСтроки, "НепринятыеПоДате", СообщениеОбОшибке);
Если Не ПустаяСтрока(СообщениеОбОшибке) Тогда
ПоказатьПредупреждение(, СообщениеОбОшибке);
КонецЕсли;
КонецПроцедуры
@@ -556,10 +573,16 @@
&НаКлиенте
Процедура ИзменитьРезультатКонфликтаЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ПринятьОтклонитьВерсиюНаСервере(Элементы.Коллизии.ВыделенныеСтроки, "Коллизии");
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
ОчиститьСообщения();
СообщениеОбОшибке = "";
ПринятьОтклонитьВерсиюНаСервере(Элементы.Коллизии.ВыделенныеСтроки, "Коллизии", СообщениеОбОшибке);
Если Не ПустаяСтрока(СообщениеОбОшибке) Тогда
ПоказатьПредупреждение(, СообщениеОбОшибке);
КонецЕсли;
КонецПроцедуры
@@ -697,24 +720,57 @@
КонецПроцедуры
&НаСервере
Процедура ПровестиДокументы(Знач ВыделенныеСтроки)
Процедура ПровестиДокументы(Знач ВыделенныеСтроки, СообщениеОбОшибке = "")
СчетчикВсего = 0;
СчетчикНеПроведенные = 0;
Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл
Если ТипЗнч(ВыделеннаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
Продолжить;
КонецЕсли;
ДокументОбъект = ВыделеннаяСтрока.ПроблемныйОбъект.ПолучитьОбъект();
СчетчикВсего = СчетчикВсего + 1;
Если ДокументОбъект.ПроверитьЗаполнение() Тогда
БлокировкаУстановлена = Ложь;
НачатьТранзакцию();
Попытка
ЗаблокироватьДанныеДляРедактирования(ВыделеннаяСтрока.ПроблемныйОбъект);
БлокировкаУстановлена = Истина;
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
ДокументОбъект = ВыделеннаяСтрока.ПроблемныйОбъект.ПолучитьОбъект();
КонецЕсли;
Если ДокументОбъект.ПроверитьЗаполнение() Тогда
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Иначе
СчетчикНеПроведенные = СчетчикНеПроведенные + 1;
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Если Не БлокировкаУстановлена Тогда
ОбщегоНазначения.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось провести документ ""%1"" по причине:
|%2.'"),
ВыделеннаяСтрока.ПроблемныйОбъект,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке())));
КонецЕсли;
СчетчикНеПроведенные = СчетчикНеПроведенные + 1;
КонецПопытки;
КонецЦикла;
Если СчетчикНеПроведенные > 0 Тогда
СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не проведено документов: %1 из %2.'"),
Формат(СчетчикНеПроведенные, "ЧН=; ЧГ=0"),
Формат(СчетчикВсего, "ЧН=; ЧГ=0"));
КонецЕсли;
ОбновитьНаСервере("НепроведенныеДокументы");
КонецПроцедуры
&НаСервере
@@ -922,7 +978,7 @@
ПараметрыЗапроса = ОбменДаннымиСервер.ПараметрыЗапросаКоличествоПроблемВерсионирования();
ПараметрыЗапроса.ЭтоКоличествоКоллизий = Ложь;
ПараметрыЗапроса.УчитыватьПроигнорированные = ПоказыватьПроигнорированныеКонфликты;
ПараметрыЗапроса.УчитыватьПроигнорированные = ПоказыватьПроигнорированныеНепринятые;
ПараметрыЗапроса.Период = Период;
ПараметрыЗапроса.СтрокаПоиска = СтрокаПоиска;
@@ -1260,22 +1316,53 @@
КонецПроцедуры
&НаСервере
Процедура ПринятьОтклонитьВерсиюНаСервере(Знач ВыделенныеСтроки, ИмяЭлемента)
Процедура ПринятьОтклонитьВерсиюНаСервере(Знач ВыделенныеСтроки, ИмяЭлемента, СообщениеОбОшибке = "")
МодульВерсионированиеОбъектов = Неопределено;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда
МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов");
КонецЕсли;
РазрешитьПроведениеДокумента = Метаданные.СвойстваОбъектов.Проведение.Разрешить;
СчетчикВсего = 0;
СчетчикНеПринятые = 0;
Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл
Если ТипЗнч(ВыделеннаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
Продолжить;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда
МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов");
МодульВерсионированиеОбъектов.ПриПереходеНаВерсиюОбъекта(ВыделеннаяСтрока.Объект,
ВыделеннаяСтрока.НомерВерсии);
СчетчикВсего = СчетчикВсего + 1;
Если МодульВерсионированиеОбъектов = Неопределено Тогда
СчетчикНеПринятые = СчетчикНеПринятые + 1;
Иначе
Попытка
МодульВерсионированиеОбъектов.ПриПереходеНаВерсиюОбъекта(ВыделеннаяСтрока.Объект,
ВыделеннаяСтрока.НомерВерсии);
Исключение
ПредставлениеОбъекта = ?(ОбщегоНазначения.СсылкаСуществует(ВыделеннаяСтрока.Объект),
ВыделеннаяСтрока.Объект,
ВыделеннаяСтрока.Объект.Метаданные());
ОбщегоНазначения.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось принять версию объекта ""%1"" по причине:
|%2.'"),
ПредставлениеОбъекта,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке())));
СчетчикНеПринятые = СчетчикНеПринятые + 1;
КонецПопытки;
КонецЕсли;
КонецЦикла;
Если СчетчикНеПринятые > 0 Тогда
СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не принято версий объектов: %1 из %2.'"),
Формат(СчетчикНеПринятые, "ЧН=; ЧГ=0"),
Формат(СчетчикВсего, "ЧН=; ЧГ=0"));
КонецЕсли;
ОбновитьНаСервере(ИмяЭлемента);
КонецПроцедуры
@@ -175,38 +175,28 @@
Процедура ОчиститьПроблемыПриОтправке(УзлыИнформационнойБазы = Неопределено) Экспорт
ТипыПроблем = Новый Массив();
ТипыПроблем = Новый Массив;
ТипыПроблем.Добавить(Перечисления.ТипыПроблемОбменаДанными.ОшибкаПроверкиСконвертированногоОбъекта);
ТипыПроблем.Добавить(Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных);
Для Каждого Проблема Из ТипыПроблем Цикл
ПоляОтбора = ПараметрыОтборыРегистра();
Если ЗначениеЗаполнено(УзлыИнформационнойБазы) Тогда
Если ЗначениеЗаполнено(УзлыИнформационнойБазы) Тогда
КоллекцияУзлов = ?(ТипЗнч(УзлыИнформационнойБазы) = Тип("Массив"),
УзлыИнформационнойБазы,
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(УзлыИнформационнойБазы));
Если ТипЗнч(УзлыИнформационнойБазы) = Тип("Массив") Тогда
Для Каждого УзелИнформационнойБазы Из УзлыИнформационнойБазы Цикл
ПоляОтбора.ТипПроблемы = Проблема;
ПоляОтбора.УзелИнформационнойБазы = УзелИнформационнойБазы;
ОчиститьЗаписиРегистра(ПоляОтбора);
КонецЦикла;
Иначе
ПоляОтбора.ТипПроблемы = Проблема;
ПоляОтбора.УзелИнформационнойБазы = УзлыИнформационнойБазы;
ОчиститьЗаписиРегистра(ПоляОтбора);
КонецЕсли;
Иначе
ПоляОтбора.ТипПроблемы = Проблема;
ОчиститьЗаписиРегистра(ПоляОтбора);
КонецЕсли;
КонецЦикла;
Для Каждого Узел Из КоллекцияУзлов Цикл
ПараметрыОтбора = Новый Структура("УзелИнформационнойБазы", Узел);
Для Каждого ТипПроблемы Из ТипыПроблем Цикл
ПараметрыОтбора.Вставить("ТипПроблемы", ТипПроблемы);
ОчиститьЗаписиРегистра(ПараметрыОтбора);
КонецЦикла;
КонецЦикла;
Иначе
Для Каждого ТипПроблемы Из ТипыПроблем Цикл
ПараметрыОтбора = Новый Структура("ТипПроблемы", ТипПроблемы);
ОчиститьЗаписиРегистра(ПараметрыОтбора);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
@@ -548,8 +548,25 @@
Возврат ПользовательФильтр;
КонецЕсли;
Для Каждого ПользовательГруппы Из Элемент.Состав Цикл
ИмяПользователяИБ = ИмяПользователяИБ(ПользовательГруппы.Пользователь);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Группа", Элемент);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| СоставыГруппПользователей.Пользователь КАК Пользователь
|ИЗ
| РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|ГДЕ
| СоставыГруппПользователей.ГруппаПользователей В
| (ВЫБРАТЬ
| ГруппыПользователей.Ссылка КАК Ссылка
| ИЗ
| Справочник.ГруппыПользователей КАК ГруппыПользователей
| ГДЕ
| ГруппыПользователей.Ссылка В ИЕРАРХИИ (&Группа))";
Результат = Запрос.Выполнить().Выгрузить();
Для Каждого Строка Из Результат Цикл
ИмяПользователяИБ = ИмяПользователяИБ(Строка.Пользователь);
Если ИмяПользователяИБ <> Неопределено Тогда
ПользовательФильтр.Добавить(ИмяПользователяИБ);
@@ -2626,93 +2626,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.НеразделенныеПользователи</name>
<right>
@@ -4877,6 +4790,93 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ПакетыДляОтправки</name>
<right>
@@ -28,37 +28,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.РассылкиОтчетов</name>
<right>
@@ -107,6 +76,37 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -3691,45 +3691,6 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>Catalog.ЗакладкиВзаимодействий</name>
<right>
@@ -6548,6 +6509,45 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>InformationRegister.ПакетыДляОтправки</name>
<right>
@@ -3,6 +3,13 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -34,13 +41,6 @@
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации</name>
<right>
@@ -107,6 +107,8 @@
МодульПомощникНастройки.ЗаполнитьНастройкиПодключенияИзXML(
НастройкиПодключения, Параметры.СтрокаПараметровXML, , Истина);
НастройкиПодключения.Вставить("ВидТранспортаСообщенийОбмена", Перечисления.ВидыТранспортаСообщенийОбмена.WSПассивныйРежим);
МодульПомощникНастройки.ВыполнитьДействияПоНастройкеОбменаДанными(
НастройкиПодключения);
Исключение