This commit is contained in:
Компания 1С committed 2022-06-15 23:35:00 +03:00
1 parent 514ae42c64
commit 074fce3a4a
155 files changed
+3899 -2334

No files matched your search

@@ -89,6 +89,8 @@
УстановитьВидимостьДоступность(); УстановитьВидимостьДоступность();
ВнешниеКомпонентыСлужебный.ОповеститьВсеСеансыОбИзмененииВнешнейКомпоненты();
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -94,6 +94,16 @@
Процедура ПередЗаписью(Отказ) Процедура ПередЗаписью(Отказ)
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после блокировки регистра.
// Блокировка всего регистра используется вместо установки разделяемой блокировки на справочник,
// которая приводит к взаимоблокировке при иерархическом обновлении составов групп пользователей,
// а также вместо последовательной исключительной блокировки регистра в разрезе групп,
// которая также приводит к взаимоблокировке в ряде случаев.
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("РегистрСведений.СоставыГруппПользователей");
Блокировка.Заблокировать();
// АПК:75-вкл
Если ОбменДанными.Загрузка Тогда Если ОбменДанными.Загрузка Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -75,6 +75,16 @@
// Блокирует недопустимые действия с предопределенной группой "Все пользователи". // Блокирует недопустимые действия с предопределенной группой "Все пользователи".
Процедура ПередЗаписью(Отказ) Процедура ПередЗаписью(Отказ)
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после блокировки регистра.
// Блокировка всего регистра используется вместо установки разделяемой блокировки на справочник,
// которая приводит к взаимоблокировке при иерархическом обновлении составов групп пользователей,
// а также вместо последовательной исключительной блокировки регистра в разрезе групп,
// которая также приводит к взаимоблокировке в ряде случаев.
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("РегистрСведений.СоставыГруппПользователей");
Блокировка.Заблокировать();
// АПК:75-вкл
Если ОбменДанными.Загрузка Тогда Если ОбменДанными.Загрузка Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -240,6 +240,8 @@
МодульУправлениеПечатью.ОтключитьКомандыПечати(ВыбранныеОбъектыНазначения().ВыгрузитьЗначения(), ОтключаемыеКоманды().ВыгрузитьЗначения()); МодульУправлениеПечатью.ОтключитьКомандыПечати(ВыбранныеОбъектыНазначения().ВыгрузитьЗначения(), ОтключаемыеКоманды().ВыгрузитьЗначения());
КонецЕсли; КонецЕсли;
СтандартныеПодсистемыСервер.ОповеститьВсеСеансыОбУстареванииПовторноИспользуемыхЗначений(Истина);
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
@@ -610,7 +612,7 @@
ПараметрыРегистрации.ОтключатьКонфликтующие = Ложь; ПараметрыРегистрации.ОтключатьКонфликтующие = Ложь;
ПараметрыРегистрации.Конфликтующие = Новый СписокЗначений; ПараметрыРегистрации.Конфликтующие = Новый СписокЗначений;
МассивПодстрок = СтрРазделить(ОписаниеФайла.Имя, "\", Ложь); МассивПодстрок = СтрРазделить(ОписаниеФайла.Имя, ПолучитьРазделительПути(), Ложь);
ПараметрыРегистрации.ИмяФайла = МассивПодстрок.Получить(МассивПодстрок.ВГраница()); ПараметрыРегистрации.ИмяФайла = МассивПодстрок.Получить(МассивПодстрок.ВГраница());
РасширениеФайла = ВРег(Прав(ПараметрыРегистрации.ИмяФайла, 3)); РасширениеФайла = ВРег(Прав(ПараметрыРегистрации.ИмяФайла, 3));
@@ -85,6 +85,30 @@
#Область СлужебныйПрограммныйИнтерфейс #Область СлужебныйПрограммныйИнтерфейс
// Параметры:
// ИмяПараметра - Строка
// УстановленныеПараметры - Массив из Строка
//
// Возвращаемое значение:
// Булево
//
Функция ВсеПараметрыСеансаУстановлены(ИменаПараметровСеанса, УстановленныеПараметры) Экспорт
Если ИменаПараметровСеанса.Найти("ОбновлениеСправочниковИдентификаторов") = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Результат = Новый Структура;
Результат.Вставить("ИдентификаторыОбъектовМетаданных", Ложь);
Результат.Вставить("ИдентификаторыОбъектовРасширений", Ложь);
ПараметрыСеанса.ОбновлениеСправочниковИдентификаторов = Новый ФиксированнаяСтруктура(Результат);
УстановленныеПараметры.Добавить("ОбновлениеСправочниковИдентификаторов");
Возврат ИменаПараметровСеанса.Количество() = 1;
КонецФункции
// Только для внутреннего использования. // Только для внутреннего использования.
Процедура ПроверкаИспользования(ОбъектыРасширений = Ложь) Экспорт Процедура ПроверкаИспользования(ОбъектыРасширений = Ложь) Экспорт
@@ -591,6 +615,7 @@
ПроверкаИспользования(ОбъектыРасширений); ПроверкаИспользования(ОбъектыРасширений);
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
ЕстьТекущиеИзменения = Ложь; ЕстьТекущиеИзменения = Ложь;
@@ -612,6 +637,16 @@
"СтандартныеПодсистемы.БазоваяФункциональность.ИдентификаторыОбъектовМетаданных", Истина); "СтандартныеПодсистемы.БазоваяФункциональность.ИдентификаторыОбъектовМетаданных", Истина);
КонецЕсли; КонецЕсли;
Если Не ТолькоПроверка И Не ТранзакцияАктивна() Тогда
ВыполненоОбновление = Новый Структура(ПараметрыСеанса.ОбновлениеСправочниковИдентификаторов);
Если ОбъектыРасширений Тогда
ВыполненоОбновление.ИдентификаторыОбъектовРасширений = Истина;
Иначе
ВыполненоОбновление.ИдентификаторыОбъектовМетаданных = Истина;
КонецЕсли;
ПараметрыСеанса.ОбновлениеСправочниковИдентификаторов = Новый ФиксированнаяСтруктура(ВыполненоОбновление);
КонецЕсли;
КонецПроцедуры КонецПроцедуры
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@@ -1279,6 +1314,20 @@
СтандартныеПодсистемыСервер.ЗарегистрироватьОбъектНаВсехУзлах(Объект, ПланОбмена, Ложь); СтандартныеПодсистемыСервер.ЗарегистрироватьОбъектНаВсехУзлах(Объект, ПланОбмена, Ложь);
КонецЦикла; КонецЦикла;
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
ВыполненоОбновление = Новый Структура(ПараметрыСеанса.ОбновлениеСправочниковИдентификаторов);
Если ОбъектыРасширений Тогда
ВыполненоОбновление.ИдентификаторыОбъектовРасширений = Ложь;
Иначе
ВыполненоОбновление.ИдентификаторыОбъектовМетаданных = Ложь;
КонецЕсли;
ПараметрыСеанса.ОбновлениеСправочниковИдентификаторов = Новый ФиксированнаяСтруктура(ВыполненоОбновление);
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
Если Объект.ОбменДанными.Загрузка Тогда Если Объект.ОбменДанными.Загрузка Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -3019,16 +3068,21 @@
КонецПопытки; КонецПопытки;
Если Идентификаторы = Неопределено Тогда Если Идентификаторы = Неопределено Тогда
ВыполненоОбновление = ОбновлениеСправочниковИдентификаторов();
Если Не ОбщегоНазначения.РазделениеВключено() Если Не ОбщегоНазначения.РазделениеВключено()
Или Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда Или Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Если Не ВыполненоОбновление.ИдентификаторыОбъектовМетаданных Тогда
ОбновитьДанныеСправочника(); ОбновитьДанныеСправочника();
КонецЕсли; КонецЕсли;
КонецЕсли;
Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Если Не ВыполненоОбновление.ИдентификаторыОбъектовРасширений Тогда
Справочники.ИдентификаторыОбъектовРасширений.ОбновитьДанныеСправочника(); Справочники.ИдентификаторыОбъектовРасширений.ОбновитьДанныеСправочника();
КонецЕсли; КонецЕсли;
КонецЕсли;
Идентификаторы = ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора( Идентификаторы = ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора(
ПолныеИменаОбъектовМетаданных, ВызыватьИсключение, ОдинЭлемент, Не ВызыватьИсключение); ПолныеИменаОбъектовМетаданных, ВызыватьИсключение, ОдинЭлемент, Не ВызыватьИсключение);
@@ -3322,6 +3376,23 @@
КонецФункции КонецФункции
// Для функций ИдентификаторыОбъектовМетаданныхСПопыткойПовтора,
// ОбъектыМетаданныхПоИдентификаторамСПопыткойПовтора.
//
Функция ОбновлениеСправочниковИдентификаторов()
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
Результат = ПараметрыСеанса.ОбновлениеСправочниковИдентификаторов;
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
Возврат Результат;
КонецФункции
// Для функций ОбъектМетаданныхПоИдентификатору, ОбъектыМетаданныхПоИдентификаторам. // Для функций ОбъектМетаданныхПоИдентификатору, ОбъектыМетаданныхПоИдентификаторам.
Функция ОбъектыМетаданныхПоИдентификаторамСПопыткойПовтора(Идентификаторы, ВызыватьИсключение) Функция ОбъектыМетаданныхПоИдентификаторамСПопыткойПовтора(Идентификаторы, ВызыватьИсключение)
@@ -3404,7 +3475,10 @@
КонецЕсли; КонецЕсли;
Если ОбъектыМетаданных = Неопределено Тогда Если ОбъектыМетаданных = Неопределено Тогда
ВыполненоОбновление = ОбновлениеСправочниковИдентификаторов();
Если Не ВыполненоОбновление.ИдентификаторыОбъектовМетаданных Тогда
ОбновитьДанныеСправочника(); ОбновитьДанныеСправочника();
КонецЕсли;
ОбъектыМетаданных = ОбъектыМетаданныхПоИдентификаторамБезПопыткиПовтора(Идентификаторы, ОбъектыМетаданных = ОбъектыМетаданныхПоИдентификаторамБезПопыткиПовтора(Идентификаторы,
ИдентификаторыКонфигурации, ИдентификаторыРасширений, ВызыватьИсключение); ИдентификаторыКонфигурации, ИдентификаторыРасширений, ВызыватьИсключение);
КонецЕсли; КонецЕсли;
@@ -567,33 +567,6 @@
</extendedTooltip> </extendedTooltip>
<extInfo xsi:type="form:ButtonGroupExtInfo"/> <extInfo xsi:type="form:ButtonGroupExtInfo"/>
</items> </items>
<items xsi:type="form:Button">
<name>ОтчетыУдалить</name>
<id>1002</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ОтчетыУдалитьРасширеннаяПодсказка</name>
<id>1003</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Item.Отчеты.StandardCommand.Delete</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Picture</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</items>
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>КомандыПеремещения</name> <name>КомандыПеремещения</name>
<id>1004</id> <id>1004</id>
@@ -670,7 +643,9 @@
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<extInfo xsi:type="form:ButtonGroupExtInfo"/> <extInfo xsi:type="form:ButtonGroupExtInfo">
<representation>Compact</representation>
</extInfo>
</items> </items>
<items xsi:type="form:Button"> <items xsi:type="form:Button">
<name>ОтчетыСформироватьОтчет</name> <name>ОтчетыСформироватьОтчет</name>
@@ -698,6 +673,33 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Button">
<name>ОтчетыУдалить</name>
<id>1002</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ОтчетыУдалитьРасширеннаяПодсказка</name>
<id>1003</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Item.Отчеты.StandardCommand.Delete</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</items>
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>КоманднаяПанельОтчеты</name> <name>КоманднаяПанельОтчеты</name>
<id>354</id> <id>354</id>
@@ -1721,24 +1721,22 @@
&НаКлиенте &НаКлиенте
Процедура ПредпросмотрШаблона(Команда) Процедура ПредпросмотрШаблона(Команда)
ДобавитьШаблон(); ДобавитьШаблон();
Если ТекущийЭлемент = Элементы.ТекстПисьмаФорматированныйДокумент Тогда Если ТекущийЭлемент = Элементы.ТекстПисьмаФорматированныйДокумент Тогда
Шаблон = ТекстПисьмаФорматированныйДокумент.ПолучитьТекст(); Шаблон = ТекстПисьмаФорматированныйДокумент.ПолучитьТекст();
ИначеЕсли ТекущийЭлемент = Элементы.ТекстПисьма Тогда ИначеЕсли ТекущийЭлемент = Элементы.ТекстПисьма Тогда
Шаблон = Объект.ТекстПисьма; Шаблон = Объект.ТекстПисьма;
ИначеЕсли ТекущийЭлемент = Элементы.ТемаПисьма Тогда
Шаблон = Объект.ТемаПисьма;
КонецЕсли; КонецЕсли;
Шаблон = Объект.ТемаПисьма + Символы.ПС + Символы.ПС + Шаблон;
СформированныеОтчеты = ""; СформированныеОтчеты = "";
Для Каждого СтрокаОтчет Из Объект.Отчеты Цикл Для Каждого СтрокаОтчет Из Объект.Отчеты Цикл
СформированныеОтчеты = СформированныеОтчеты СформированныеОтчеты = СформированныеОтчеты + Символы.ПС
+ Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 (%2)",
+ СтрокаОтчет.Представление СтрокаОтчет.Представление,
+ " (" ?(СтрокаОтчет.Форматы = ПредставлениеФорматовПоУмолчанию(), ФорматыПоУмолчанию, СтрокаОтчет.Форматы));
+ ?(СтрокаОтчет.Форматы = ПредставлениеФорматовПоУмолчанию(), ФорматыПоУмолчанию, СтрокаОтчет.Форматы)
+ ")";
КонецЦикла; КонецЦикла;
СформированныеОтчеты = СокрЛ(СформированныеОтчеты); СформированныеОтчеты = СокрЛ(СформированныеОтчеты);
@@ -1757,11 +1755,10 @@
ПараметрыШаблона.Вставить("СформированныеОтчеты", СформированныеОтчеты); ПараметрыШаблона.Вставить("СформированныеОтчеты", СформированныеОтчеты);
ПараметрыШаблона.Вставить("СпособДоставки", СпособДоставки); ПараметрыШаблона.Вставить("СпособДоставки", СпособДоставки);
#Если НЕ МобильныйКлиент Тогда
ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.УстановитьТекст(РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Шаблон, ПараметрыШаблона)); ТекстовыйДокумент.УстановитьТекст(РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Шаблон, ПараметрыШаблона));
ТекстовыйДокумент.Показать(); ТекстовыйДокумент.Показать();
#КонецЕсли
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -809,7 +809,7 @@
<usePurposes>MobileDevice</usePurposes> <usePurposes>MobileDevice</usePurposes>
</forms> </forms>
<templates uuid="5189beb9-b939-4f97-aca0-c2f3492ac8b9"> <templates uuid="5189beb9-b939-4f97-aca0-c2f3492ac8b9">
<name>КомпонентаExtraCryptoAPI_3_0_1_28</name> <name>КомпонентаExtraCryptoAPI_3_0_1_29</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Компонента ExtraCryptoAPI</value> <value>Компонента ExtraCryptoAPI</value>
@@ -406,6 +406,9 @@
</handler> </handler>
</action> </action>
<currentRowUse>Auto</currentRowUse> <currentRowUse>Auto</currentRowUse>
<associatedTableElementId xsi:type="core:StringValue">
<value>СписокСостоянийОригинала</value>
</associatedTableElementId>
<selectedRowsUse>Auto</selectedRowsUse> <selectedRowsUse>Auto</selectedRowsUse>
</formCommands> </formCommands>
<formCommands> <formCommands>
@@ -431,6 +434,9 @@
</handler> </handler>
</action> </action>
<currentRowUse>Auto</currentRowUse> <currentRowUse>Auto</currentRowUse>
<associatedTableElementId xsi:type="core:StringValue">
<value>СписокСостоянийОригинала</value>
</associatedTableElementId>
<selectedRowsUse>Auto</selectedRowsUse> <selectedRowsUse>Auto</selectedRowsUse>
</formCommands> </formCommands>
<commandInterface> <commandInterface>
@@ -295,6 +295,7 @@
<chooseType>true</chooseType> <chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled> <typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit> <textEdit>true</textEdit>
<editTextUpdate>OnValueChange</editTextUpdate>
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </items>
@@ -467,6 +468,7 @@
<chooseType>true</chooseType> <chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled> <typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit> <textEdit>true</textEdit>
<editTextUpdate>OnValueChange</editTextUpdate>
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </items>
@@ -375,8 +375,6 @@
ПланВидовХарактеристикОбъектыАдресацииЗадач.ПометкаУдаления, ПланВидовХарактеристикОбъектыАдресацииЗадач.ПометкаУдаления,
ПланВидовХарактеристикОбъектыАдресацииЗадач.Наименование, ПланВидовХарактеристикОбъектыАдресацииЗадач.Наименование,
ПланВидовХарактеристикОбъектыАдресацииЗадач.ТипЗначения, ПланВидовХарактеристикОбъектыАдресацииЗадач.ТипЗначения,
ПланВидовХарактеристикОбъектыАдресацииЗадач.НаименованиеЯзык1,
ПланВидовХарактеристикОбъектыАдресацииЗадач.НаименованиеЯзык2,
ПланВидовХарактеристикОбъектыАдресацииЗадач.Предопределенный, ПланВидовХарактеристикОбъектыАдресацииЗадач.Предопределенный,
ПланВидовХарактеристикОбъектыАдресацииЗадач.ИмяПредопределенныхДанных ПланВидовХарактеристикОбъектыАдресацииЗадач.ИмяПредопределенныхДанных
ИЗ ИЗ
@@ -2533,7 +2533,7 @@
Строка = Отборы.НайтиПоИдентификатору(ИдентификаторСтроки); Строка = Отборы.НайтиПоИдентификатору(ИдентификаторСтроки);
Родитель = Строка.ПолучитьРодителя(); Родитель = Строка.ПолучитьРодителя();
Если Родитель.ПолучитьЭлементы().Индекс(Строка) < 0 Если Родитель = Неопределено Или Родитель.ПолучитьЭлементы().Индекс(Строка) < 0
Или ТипЗнч(Строка.Идентификатор) <> Тип("ИдентификаторКомпоновкиДанных") Тогда Или ТипЗнч(Строка.Идентификатор) <> Тип("ИдентификаторКомпоновкиДанных") Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
@@ -2675,7 +2675,7 @@
Строка = Отборы.НайтиПоИдентификатору(ИдентификаторСтроки); Строка = Отборы.НайтиПоИдентификатору(ИдентификаторСтроки);
Родитель = Строка.ПолучитьРодителя(); Родитель = Строка.ПолучитьРодителя();
Если Родитель.ПолучитьЭлементы().Индекс(Строка) < 0 Если Родитель = Неопределено Или Родитель.ПолучитьЭлементы().Индекс(Строка) < 0
Или ТипЗнч(Строка.Идентификатор) <> Тип("ИдентификаторКомпоновкиДанных") Тогда Или ТипЗнч(Строка.Идентификатор) <> Тип("ИдентификаторКомпоновкиДанных") Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
@@ -2911,7 +2911,7 @@
Строка = ВыбранныеПоля.НайтиПоИдентификатору(ИдентификаторСтроки); Строка = ВыбранныеПоля.НайтиПоИдентификатору(ИдентификаторСтроки);
Родитель = Строка.ПолучитьРодителя(); Родитель = Строка.ПолучитьРодителя();
Если Родитель.ПолучитьЭлементы().Индекс(Строка) < 0 Если Родитель = Неопределено Или Родитель.ПолучитьЭлементы().Индекс(Строка) < 0
Или ТипЗнч(Строка.Идентификатор) <> Тип("ИдентификаторКомпоновкиДанных") Тогда Или ТипЗнч(Строка.Идентификатор) <> Тип("ИдентификаторКомпоновкиДанных") Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
@@ -3240,7 +3240,7 @@
Строка = ВыбранныеПоля.НайтиПоИдентификатору(ИдентификаторСтроки); Строка = ВыбранныеПоля.НайтиПоИдентификатору(ИдентификаторСтроки);
Родитель = Строка.ПолучитьРодителя(); Родитель = Строка.ПолучитьРодителя();
Если Родитель.ПолучитьЭлементы().Индекс(Строка) < 0 Если Родитель = Неопределено Или Родитель.ПолучитьЭлементы().Индекс(Строка) < 0
Или ТипЗнч(Строка.Идентификатор) <> Тип("ИдентификаторКомпоновкиДанных") Тогда Или ТипЗнч(Строка.Идентификатор) <> Тип("ИдентификаторКомпоновкиДанных") Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
@@ -3070,6 +3070,38 @@
<currentRowUse>Auto</currentRowUse> <currentRowUse>Auto</currentRowUse>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormGroup">
<name>ГруппаДляПоказателей</name>
<id>1125</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Показатели</value>
</title>
<extendedTooltip>
<name>ГруппаДляПоказателейРасширеннаяПодсказка</name>
<id>1126</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
<name>ОтчетТабличныйДокумент</name> <name>ОтчетТабличныйДокумент</name>
<id>7</id> <id>7</id>
@@ -743,12 +743,9 @@
ПараметрыЗаполнения.Вставить("СброситьНастройкиВарианта", Истина); ПараметрыЗаполнения.Вставить("СброситьНастройкиВарианта", Истина);
ПараметрыЗаполнения.Вставить("ВариантМодифицирован", Ложь); ПараметрыЗаполнения.Вставить("ВариантМодифицирован", Ложь);
КонецЕсли; КонецЕсли;
ПараметрыЗаполнения.Вставить("СброситьПользовательскиеНастройки", Истина); ПараметрыЗаполнения.Вставить("СброситьПользовательскиеНастройки", Истина);
ПараметрыЗаполнения.Вставить("ПользовательскиеНастройкиМодифицированы", Истина); ПараметрыЗаполнения.Вставить("ПользовательскиеНастройкиМодифицированы", Истина);
УточнитьПризнакАвтоформированияОтчета(ПараметрыЗаполнения);
ОтчетСформирован = Ложь; ОтчетСформирован = Ложь;
СброситьВыбранныйУровеньГруппировок(); СброситьВыбранныйУровеньГруппировок();
@@ -1434,12 +1431,9 @@
&НаКлиенте &НаКлиенте
Процедура ПослеФормирования(Результат, ПараметрыФормирования) Экспорт Процедура ПослеФормирования(Результат, ПараметрыФормирования) Экспорт
Если ФоновоеЗаданиеИдентификатор <> ПараметрыФормирования.ИдентификаторЗадания Тогда Если ФоновоеЗаданиеИдентификатор <> ПараметрыФормирования.ИдентификаторЗадания Тогда
ПоказатьВыбранныйУровеньГруппировок();
ПереопределитьРезультатФормированияОтчета(Результат);
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Если Результат = Неопределено Тогда Если Результат = Неопределено Тогда
@@ -1473,29 +1467,22 @@
МодульОценкаПроизводительностиКлиент.ЗавершитьЗамерВремени(ИдентификаторЗамера); МодульОценкаПроизводительностиКлиент.ЗавершитьЗамерВремени(ИдентификаторЗамера);
КонецЕсли; КонецЕсли;
ПереопределитьРезультатФормированияОтчета(Результат); ОтчетСформирован = ?(Результат = Неопределено, Ложь, Результат.Статус = "Выполнено");
СброситьТекущуюОбласть();
ПоказатьВыбранныйУровеньГруппировок();
КонецПроцедуры
&НаКлиенте
Процедура ПереопределитьРезультатФормированияОтчета(Результат)
ОтчетСформирован = ОтчетСформирован(Результат);
ИнтеграцияПодсистемБСПКлиент.ПослеФормирования(ЭтотОбъект, ОтчетСформирован); ИнтеграцияПодсистемБСПКлиент.ПослеФормирования(ЭтотОбъект, ОтчетСформирован);
ОтчетыКлиентПереопределяемый.ПослеФормирования(ЭтотОбъект, ОтчетСформирован); ОтчетыКлиентПереопределяемый.ПослеФормирования(ЭтотОбъект, ОтчетСформирован);
СброситьТекущуюОбласть();
ПоказатьВыбранныйУровеньГруппировок();
Обработчик = ОбработчикПослеФормированияНаКлиенте;
Если ТипЗнч(Обработчик) = Тип("ОписаниеОповещения") Тогда
ВыполнитьОбработкуОповещения(Обработчик, ОтчетСформирован);
ОбработчикПослеФормированияНаКлиенте = Неопределено;
КонецЕсли;
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Функция ОтчетСформирован(Результат)
Возврат ?(Результат = Неопределено, Ложь, Результат.Статус = "Выполнено");
КонецФункции
&НаСервере &НаСервере
Функция РезультатФормированияОтчета(Знач ФормированиеПриОткрытии, Непосредственно, ПослеПредупреждения) Функция РезультатФормированияОтчета(Знач ФормированиеПриОткрытии, Непосредственно, ПослеПредупреждения)
@@ -3709,6 +3696,10 @@
Элементы.ИзменитьСоставБыстрыхНастроек.Видимость = ПоказыватьКомандыИзмененияВарианта Элементы.ИзменитьСоставБыстрыхНастроек.Видимость = ПоказыватьКомандыИзмененияВарианта
И Не ОбщегоНазначения.ЭтоМобильныйКлиент(); И Не ОбщегоНазначения.ЭтоМобильныйКлиент();
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
Элементы.Переместить(Элементы.ГруппаПоказатель, Элементы.ГруппаДляПоказателей);
КонецЕсли;
ЭтоПредопределенныйВариант = Не НастройкиОтчета.Пользовательский ЭтоПредопределенныйВариант = Не НастройкиОтчета.Пользовательский
И ЗначениеЗаполнено(НастройкиОтчета.ПредопределенныйСсылка); И ЗначениеЗаполнено(НастройкиОтчета.ПредопределенныйСсылка);
@@ -499,7 +499,7 @@
// Для внутреннего использования. // Для внутреннего использования.
// //
Процедура ВыполнитьНастройкуАвтономногоРабочегоМестаПриПервомЗапуске() Экспорт Процедура ВыполнитьНастройкуАвтономногоРабочегоМестаПриПервомЗапуске(ЗагрузкаДанных = Ложь) Экспорт
Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
ВызватьИсключение НСтр("ru = 'Первый запуск автономного рабочего места должен выполняться в файловой информационной базе.'"); ВызватьИсключение НСтр("ru = 'Первый запуск автономного рабочего места должен выполняться в файловой информационной базе.'");
@@ -507,15 +507,20 @@
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
Если ЗагрузкаДанных Тогда
ЗагрузитьДанныеНачальногоОбраза(); ЗагрузитьДанныеНачальногоОбраза();
Иначе
ЗагрузитьПараметрыИзНачальногоОбраза(); ЗагрузитьПараметрыИзНачальногоОбраза();
// Правила обмена не мигрируют в РИБ, поэтому выполняем загрузку правил. // Правила обмена не мигрируют в РИБ, поэтому выполняем загрузку правил.
ОбменДаннымиСервер.ВыполнитьОбновлениеПравилДляОбменаДанными(); ОбменДаннымиСервер.ВыполнитьОбновлениеПравилДляОбменаДанными();
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь); УстановитьПривилегированныйРежим(Ложь);
Если Не ЗагрузкаДанных Тогда
ОбменДаннымиСервер.ПриПродолженииНастройкиПодчиненногоУзлаРИБ(); ОбменДаннымиСервер.ПриПродолженииНастройкиПодчиненногоУзлаРИБ();
КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -9642,8 +9642,6 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
МодульПолучениеФайловИзИнтернета = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернета");
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
Авторизация = ПараметрыАутентификацииНаСайте(); Авторизация = ПараметрыАутентификацииНаСайте();
УстановитьПривилегированныйРежим(Ложь); УстановитьПривилегированныйРежим(Ложь);
@@ -9670,10 +9668,15 @@
ПутьДляСохранения = ВременныйКаталог + ВРег(ФайлРегиона.ИмяФайла); ПутьДляСохранения = ВременныйКаталог + ВРег(ФайлРегиона.ИмяФайла);
ПараметрыПолучения.Вставить("ПутьДляСохранения", ПутьДляСохранения); ПараметрыПолучения.Вставить("ПутьДляСохранения", ПутьДляСохранения);
ЗагруженныйФайл = МодульПолучениеФайловИзИнтернета.СкачатьФайлНаСервере(ОписаниеРегиона.Адрес, ПараметрыПолучения);
Если Не ЗагруженныйФайл.Статус Тогда ФайлПолучен = ПолучитьФайлИзИнтернета(ОписаниеРегиона, ВременныйКаталог, ПараметрыПолучения, ФайлРегиона.ИмяФайла);
ФайловаяСистема.УдалитьВременныйФайл(ВременныйКаталог); Если Не ФайлПолучен.Статус Тогда
ВызватьИсключение ЗагруженныйФайл.СообщениеОбОшибке; // 2 попытка получения файла
ФайлПолучен = ПолучитьФайлИзИнтернета(ОписаниеРегиона, ВременныйКаталог, ПараметрыПолучения, ФайлРегиона.ИмяФайла);
Если Не ФайлПолучен.Статус Тогда
ВызватьИсключение ФайлПолучен.СообщениеОбОшибке;
КонецЕсли;
КонецЕсли; КонецЕсли;
КодыСубъектовДляЗагрузки.Добавить(КодСубъекта); КодыСубъектовДляЗагрузки.Добавить(КодСубъекта);
@@ -9683,6 +9686,46 @@
КонецПроцедуры КонецПроцедуры
Функция ПолучитьФайлИзИнтернета(ОписаниеРегиона, Знач ВременныйКаталог, ПараметрыПолучения, ИмяФайла)
Результат = СведенияОПолученииФайла();
ПутьДляСохранения = ПараметрыПолучения.ПутьДляСохранения;
МодульПолучениеФайловИзИнтернета = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернета");
ЗагруженныйФайл = МодульПолучениеФайловИзИнтернета.СкачатьФайлНаСервере(ОписаниеРегиона.Адрес, ПараметрыПолучения);
Если Не ЗагруженныйФайл.Статус Тогда
ФайловаяСистема.УдалитьВременныйФайл(ВременныйКаталог);
Результат.СообщениеОбОшибке = ЗагруженныйФайл.СообщениеОбОшибке;
Возврат Результат;
КонецЕсли;
Если Не ФайлСуществует(ПутьДляСохранения) Тогда
Результат.СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось загрузить файл %1. Загрузка адресных сведений перервана.
|Техническая информация: %2'"), ИмяФайла, ПутьДляСохранения);
Иначе
Результат.Статус = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
// Возвращаемое значение:
// Структура:
// * Статус - Булево
// * СообщениеОбОшибке - Строка
//
Функция СведенияОПолученииФайла()
Результат = Новый Структура;
Результат.Вставить("Статус", Ложь);
Результат.Вставить("СообщениеОбОшибке", "");
Возврат Результат;
КонецФункции
Процедура ЗагрузитьДанныеКлассификатораАдресовИзФайла(СубъектРФ, ОписаниеФайлов, ПараметрыЗагрузки) Экспорт Процедура ЗагрузитьДанныеКлассификатораАдресовИзФайла(СубъектРФ, ОписаниеФайлов, ПараметрыЗагрузки) Экспорт
ДатаЗагрузки = ПараметрыЗагрузки.ДатаЗагрузки; ДатаЗагрузки = ПараметрыЗагрузки.ДатаЗагрузки;
@@ -10871,11 +10914,13 @@
Результат.Вставить("ДатаВерсии"); Результат.Вставить("ДатаВерсии");
Результат.Вставить("ФайлЧтения", Новый ЧтениеFastInfoset); Результат.Вставить("ФайлЧтения", Новый ЧтениеFastInfoset);
ФайлЧтения = Результат.ФайлЧтения; Если Не ФайлСуществует(Результат.ПолноеИмя) Тогда
ПроверкаФайла = Новый Файл(Результат.ПолноеИмя); ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Если Не ПроверкаФайла.Существует() Тогда НСтр("ru = 'Не удалось загрузить файл %1. Загрузка адресных сведений перервана.
Возврат Неопределено; |Техническая информация: %2'"), ИмяИсходногоФайла, Результат.ПолноеИмя);
КонецЕсли; КонецЕсли;
ФайлЧтения = Результат.ФайлЧтения;
ФайлЧтения.ОткрытьФайл(Результат.ПолноеИмя); ФайлЧтения.ОткрытьФайл(Результат.ПолноеИмя);
// Встаем на первый узел с данными. // Встаем на первый узел с данными.
@@ -10904,11 +10949,30 @@
Функция КаталогВременногоХранилищаФайлов() Экспорт Функция КаталогВременногоХранилищаФайлов() Экспорт
КаталогФайлов = ФайловаяСистема.КаталогОбщегоВременногоХранилищаФайлов("AdrCls") + ПолучитьРазделительПутиСервера(); КаталогФайлов = ФайловаяСистема.КаталогОбщегоВременногоХранилищаФайлов("AdrCls");
Если Не СтрЗаканчиваетсяНа(КаталогФайлов, ПолучитьРазделительПутиСервера()) Тогда
КаталогФайлов = КаталогФайлов + ПолучитьРазделительПутиСервера();
КонецЕсли;
Возврат КаталогФайлов; Возврат КаталогФайлов;
КонецФункции КонецФункции
Функция ФайлСуществует(Знач ПутьДляСохранения)
ПроверкаФайла = Новый Файл(ПутьДляСохранения);
Если Не ПроверкаФайла.Существует() Тогда
Возврат Ложь;
КонецЕсли;
Если ПроверкаФайла.ЭтоФайл() Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
Функция УровеньМуниципальногоРодительскогоОбъектаПоАдресу(Адрес) Функция УровеньМуниципальногоРодительскогоОбъектаПоАдресу(Адрес)
@@ -135,6 +135,20 @@
КонецПроцедуры КонецПроцедуры
Функция ВерсииОбщихВнешнихКомпонент() Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОбщиеВнешниеКомпоненты.Ссылка КАК Ссылка,
| ОбщиеВнешниеКомпоненты.ВерсияДанных КАК ВерсияДанных
|ИЗ
| Справочник.ОбщиеВнешниеКомпоненты КАК ОбщиеВнешниеКомпоненты";
Возврат Запрос.Выполнить().Выбрать();
КонецФункции
#Область ОбработчикиСобытийПодсистемКонфигурации #Область ОбработчикиСобытийПодсистемКонфигурации
// См. ГрупповоеИзменениеОбъектовПереопределяемый.ПриОпределенииОбъектовСРедактируемымиРеквизитами. // См. ГрупповоеИзменениеОбъектовПереопределяемый.ПриОпределенииОбъектовСРедактируемымиРеквизитами.
@@ -381,6 +381,19 @@
КонецПроцедуры КонецПроцедуры
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений
Процедура ПриДобавленииСерверныхОповещений(Оповещения) Экспорт
Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(
"СтандартныеПодсистемы.ВнешниеКомпоненты");
Оповещение.ИмяМодуляОтправки = "ВнешниеКомпонентыСлужебный";
Оповещение.ИмяМодуляПолучения = "ВнешниеКомпонентыСлужебныйКлиент";
Оповещения.Вставить(Оповещение.Имя, Оповещение);
КонецПроцедуры
#КонецОбласти #КонецОбласти
// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления. // См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
@@ -404,6 +417,96 @@
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
Процедура ОповеститьВсеСеансыОбИзмененииВнешнейКомпоненты() Экспорт
СерверныеОповещения.ОтправитьСерверноеОповещение(
"СтандартныеПодсистемы.ВнешниеКомпоненты", "", Неопределено, Истина);
КонецПроцедуры
// См. СтандартныеПодсистемыСервер.ПриОтправкеСерверногоОповещения
Процедура ПриОтправкеСерверногоОповещения(ИмяОповещения, ВариантыПараметров) Экспорт
Если ИмяОповещения <> "СтандартныеПодсистемы.ВнешниеКомпоненты" Тогда
Возврат;
КонецЕсли;
ИмяПараметра = "СтандартныеПодсистемы.ВнешниеКомпоненты.Версии";
СтароеЗначение = СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ИмяПараметра, Истина);
НовоеЗначение = ХешСуммаВерсийВнешнихКомпонент();
Если СтароеЗначение = НовоеЗначение Тогда
Возврат;
КонецЕсли;
СерверныеОповещения.ОтправитьСерверноеОповещение(ИмяОповещения, "", Неопределено);
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ПараметрыРаботыВерсийРасширений");
ЭлементБлокировки.УстановитьЗначение("ВерсияРасширений", Справочники.ВерсииРасширений.ПустаяСсылка());
ЭлементБлокировки.УстановитьЗначение("ИмяПараметра", ИмяПараметра);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
СтароеЗначение = СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ИмяПараметра, Истина);
Если СтароеЗначение <> НовоеЗначение Тогда
СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(ИмяПараметра, НовоеЗначение, Истина);
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Функция ХешСуммаВерсийВнешнихКомпонент()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВнешниеКомпоненты.Ссылка КАК Ссылка,
| ВнешниеКомпоненты.ВерсияДанных КАК ВерсияДанных
|ИЗ
| Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты";
Выборка = Запрос.Выполнить().Выбрать();
СписокВерсий = Новый СписокЗначений;
ДобавитьВерсииКомпонент(СписокВерсий, Выборка);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ВнешниеКомпонентыВМоделиСервиса") Тогда
МодульВнешниеКомпонентыВМоделиСервисаСлужебный = ОбщегоНазначения.ОбщийМодуль("ВнешниеКомпонентыВМоделиСервисаСлужебный");
Выборка = МодульВнешниеКомпонентыВМоделиСервисаСлужебный.ВерсииОбщихВнешнихКомпонент();
ДобавитьВерсииКомпонент(СписокВерсий, Выборка);
КонецЕсли;
СписокВерсий.СортироватьПоЗначению();
Версии = СтрСоединить(СписокВерсий.ВыгрузитьЗначения(), Символы.ПС);
Хеширование = Новый ХешированиеДанных(ХешФункция.SHA256);
Хеширование.Добавить(Версии);
СтрокаХешСуммы = Base64Строка(Хеширование.ХешСумма);
Возврат СтрокаХешСуммы;
КонецФункции
// Параметры:
// СписокВерсий - СписокЗначений
// Выборка - ВыборкаДанных:
// * Ссылка - СправочникСсылка
// * ВерсияДанных - Строка
//
Процедура ДобавитьВерсииКомпонент(СписокВерсий, Выборка)
Пока Выборка.Следующий() Цикл
СписокВерсий.Добавить(НРег(Выборка.Ссылка.УникальныйИдентификатор())
+ " " + Выборка.ВерсияДанных);
КонецЦикла;
КонецПроцедуры
// Проверяет возможность подключения на сервере 1С:Предприятия внешней компоненты из хранилища внешних компонент, // Проверяет возможность подключения на сервере 1С:Предприятия внешней компоненты из хранилища внешних компонент,
// выполненной по технологии Native API или COM. // выполненной по технологии Native API или COM.
// //
@@ -945,7 +1048,7 @@
ЗаписьЖурналаРегистрации(НСтр("ru = 'Обновление внешних компонент'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(НСтр("ru = 'Обновление внешних компонент'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение; ВызватьИсключение;
КонецПопытки; КонецПопытки;
ОповеститьВсеСеансыОбИзмененииВнешнейКомпоненты();
Иначе Иначе
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Действие недоступно, т.к. отсутствует подсистема ""%1"".'"), НСтр("ru = 'Действие недоступно, т.к. отсутствует подсистема ""%1"".'"),
@@ -994,7 +1097,7 @@
КонецЕсли; КонецЕсли;
ВнешниеКомпонентыСервер.ОбновитьВнешниеКомпоненты(РезультатОперации.ДанныеВнешнихКомпонент, АдресРезультата); ВнешниеКомпонентыСервер.ОбновитьВнешниеКомпоненты(РезультатОперации.ДанныеВнешнихКомпонент, АдресРезультата);
ОповеститьВсеСеансыОбИзмененииВнешнейКомпоненты();
Иначе Иначе
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Действие недоступно, т.к. отсутствует подсистема ""%1"".'"), НСтр("ru = 'Действие недоступно, т.к. отсутствует подсистема ""%1"".'"),
@@ -128,6 +128,21 @@
КонецПроцедуры КонецПроцедуры
// См. СтандартныеПодсистемыКлиент.ПриПолученииСерверногоОповещения
Процедура ПриПолученииСерверногоОповещения(ИмяОповещения, Результат) Экспорт
Если ИмяОповещения <> "СтандартныеПодсистемы.ВнешниеКомпоненты" Тогда
Возврат;
КонецЕсли;
ПараметрыПриложения.Вставить("СтандартныеПодсистемы.ВнешниеКомпоненты.СимволическиеИмена",
Новый ФиксированноеСоответствие(Новый Соответствие));
ПараметрыПриложения.Вставить("СтандартныеПодсистемы.ВнешниеКомпоненты.Объекты",
Новый ФиксированноеСоответствие(Новый Соответствие));
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -512,7 +512,7 @@
Блокировка = Новый БлокировкаДанных; Блокировка = Новый БлокировкаДанных;
Если ПоставляемаяОбработкаСуществует Тогда Если ПоставляемаяОбработкаСуществует Тогда
ИспользуемаяОбработкаСсылка = ИспользуемаяОбработка(ПоставляемаяОбработка); ИспользуемаяОбработкаСсылка = ИспользуемаяОбработка(ПоставляемаяОбработка, ОписаниеИнсталляции.Инсталляция);
Если ЗначениеЗаполнено(ИспользуемаяОбработкаСсылка) Тогда Если ЗначениеЗаполнено(ИспользуемаяОбработкаСсылка) Тогда
ЭлементБлокировки = Блокировка.Добавить("Справочник.ДополнительныеОтчетыИОбработки"); ЭлементБлокировки = Блокировка.Добавить("Справочник.ДополнительныеОтчетыИОбработки");
ЭлементБлокировки.УстановитьЗначение("Ссылка", ИспользуемаяОбработкаСсылка); ЭлементБлокировки.УстановитьЗначение("Ссылка", ИспользуемаяОбработкаСсылка);
@@ -545,7 +545,7 @@
КонецЦикла; КонецЦикла;
// Создается элемент справочника ДополнительныеОтчетыИОбработки, выступающий в роли используемой обработки. // Создается элемент справочника ДополнительныеОтчетыИОбработки, выступающий в роли используемой обработки.
ИспользуемаяОбработкаСсылка = ИспользуемаяОбработка(ПоставляемаяОбработка); ИспользуемаяОбработкаСсылка = ИспользуемаяОбработка(ПоставляемаяОбработка, ОписаниеИнсталляции.Инсталляция);
Если ЗначениеЗаполнено(ИспользуемаяОбработкаСсылка) Тогда Если ЗначениеЗаполнено(ИспользуемаяОбработкаСсылка) Тогда
ИспользуемаяОбработка = ИспользуемаяОбработкаСсылка.ПолучитьОбъект(); ИспользуемаяОбработка = ИспользуемаяОбработкаСсылка.ПолучитьОбъект();
Иначе Иначе
@@ -1322,7 +1322,7 @@
// Возвращаемое значение: // Возвращаемое значение:
// СправочникСсылка.ДополнительныеОтчетыИОбработки // СправочникСсылка.ДополнительныеОтчетыИОбработки
// //
Функция ИспользуемаяОбработка(ПоставляемаяОбработка) Функция ИспользуемаяОбработка(ПоставляемаяОбработка, ИдентификаторИнсталляции = Неопределено)
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
ТекстСообщения = НСтр("ru = 'Использование функции %1 доступно только сеансов с установленным разделением данных.'"); ТекстСообщения = НСтр("ru = 'Использование функции %1 доступно только сеансов с установленным разделением данных.'");
@@ -1340,13 +1340,26 @@
Запрос = Новый Запрос(ТекстЗапроса); Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ПоставляемаяОбработка", ПоставляемаяОбработка); Запрос.УстановитьПараметр("ПоставляемаяОбработка", ПоставляемаяОбработка);
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
Результат = Запрос.Выполнить(); Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда Если Не Результат.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = Результат.Выбрать(); Выборка = Результат.Выбрать();
Выборка.Следующий(); Выборка.Следующий();
Возврат Выборка.ИспользуемаяОбработка; Возврат Выборка.ИспользуемаяОбработка;
КонецЕсли;
Если ИдентификаторИнсталляции = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
ИспользуемаяОбработка = Справочники.ДополнительныеОтчетыИОбработки.ПолучитьСсылку(
Новый УникальныйИдентификатор(ИдентификаторИнсталляции));
Если ОбщегоНазначения.СсылкаСуществует(ИспользуемаяОбработка) Тогда
Возврат ИспользуемаяОбработка;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции КонецФункции
@@ -1739,11 +1739,6 @@
МодульВзаимодействия.ПриДобавленииПараметровРаботыКлиента(Параметры); МодульВзаимодействия.ПриДобавленииПараметровРаботыКлиента(Параметры);
КонецЕсли; КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.НапоминанияПользователя") Тогда
МодульНапоминанияПользователяСлужебный = ОбщегоНазначения.ОбщийМодуль("НапоминанияПользователяСлужебный");
МодульНапоминанияПользователяСлужебный.ПриДобавленииПараметровРаботыКлиента(Параметры);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда
МодульОбменДаннымиСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиСервер"); МодульОбменДаннымиСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиСервер");
МодульОбменДаннымиСервер.ПриДобавленииПараметровРаботыКлиента(Параметры); МодульОбменДаннымиСервер.ПриДобавленииПараметровРаботыКлиента(Параметры);
@@ -1889,11 +1884,26 @@
СтандартныеПодсистемыСервер.ПриДобавленииСерверныхОповещений(Оповещения); СтандартныеПодсистемыСервер.ПриДобавленииСерверныхОповещений(Оповещения);
ПользователиСлужебный.ПриДобавленииСерверныхОповещений(Оповещения); ПользователиСлужебный.ПриДобавленииСерверныхОповещений(Оповещения);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Валюты") Тогда
МодульРаботаСКурсамиВалют = ОбщегоНазначения.ОбщийМодуль("РаботаСКурсамиВалют");
МодульРаботаСКурсамиВалют.ПриДобавленииСерверныхОповещений(Оповещения);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВнешниеКомпоненты") Тогда
МодульВнешниеКомпонентыСлужебный = ОбщегоНазначения.ОбщийМодуль("ВнешниеКомпонентыСлужебный");
МодульВнешниеКомпонентыСлужебный.ПриДобавленииСерверныхОповещений(Оповещения);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда
МодульСоединенияИБ = ОбщегоНазначения.ОбщийМодуль("СоединенияИБ"); МодульСоединенияИБ = ОбщегоНазначения.ОбщийМодуль("СоединенияИБ");
МодульСоединенияИБ.ПриДобавленииСерверныхОповещений(Оповещения); МодульСоединенияИБ.ПриДобавленииСерверныхОповещений(Оповещения);
КонецЕсли; КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.НапоминанияПользователя") Тогда
МодульНапоминанияПользователяСлужебный = ОбщегоНазначения.ОбщийМодуль("НапоминанияПользователяСлужебный");
МодульНапоминанияПользователяСлужебный.ПриДобавленииСерверныхОповещений(Оповещения);
КонецЕсли;
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПриДобавленииСерверныхОповещений Тогда Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПриДобавленииСерверныхОповещений Тогда
МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС"); МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС");
МодульИнтеграцияПодсистемБТС.ПриДобавленииСерверныхОповещений(Оповещения); МодульИнтеграцияПодсистемБТС.ПриДобавленииСерверныхОповещений(Оповещения);
@@ -1999,7 +1999,7 @@
ГруппыОператоров = "Разделители, Операторы, ЛогическиеОператорыИКонстанты, ГруппыОператоров = "Разделители, Операторы, ЛогическиеОператорыИКонстанты,
|ЧисловыеФункции, СтроковыеФункции, ПрочиеФункции"; |ЧисловыеФункции, СтроковыеФункции, ПрочиеФункции";
ИначеЕсли ГруппыОператоров = "ВсеОператорыСКД" Тогда ИначеЕсли ГруппыОператоров = "ВсеОператорыСКД" Тогда
ГруппыОператоров = "Операторы, ОперацииНадСтрокамиСКД, ОперацииСравненияСКД, ГруппыОператоров = "Операторы, ОперацииНадСтрокамиСКД, РаботаСДатамиСКД, ОперацииСравненияСКД,
|ЛогическиеОперацииСКД, АгрегатныеФункцииСКД"; |ЛогическиеОперацииСКД, АгрегатныеФункцииСКД";
КонецЕсли; КонецЕсли;
@@ -2019,6 +2019,8 @@
ДобавитьГруппуОператоровПрочиеФункции(СписокОператоров); ДобавитьГруппуОператоровПрочиеФункции(СписокОператоров);
ИначеЕсли ИмяГруппы = "ОперацииНадСтрокамиСКД" Тогда ИначеЕсли ИмяГруппы = "ОперацииНадСтрокамиСКД" Тогда
ДобавитьГруппуОператоровОперацииНадСтроками(СписокОператоров); ДобавитьГруппуОператоровОперацииНадСтроками(СписокОператоров);
ИначеЕсли ИмяГруппы = "РаботаСДатамиСКД" Тогда
ДобавитьГруппуОператоровРаботаСДатами(СписокОператоров);
ИначеЕсли ИмяГруппы = "ОперацииСравненияСКД" Тогда ИначеЕсли ИмяГруппы = "ОперацииСравненияСКД" Тогда
ДобавитьГруппуОператоровОперацииСравнения(СписокОператоров); ДобавитьГруппуОператоровОперацииСравнения(СписокОператоров);
ИначеЕсли ИмяГруппы = "ЛогическиеОперацииСКД" Тогда ИначеЕсли ИмяГруппы = "ЛогическиеОперацииСКД" Тогда
@@ -2168,6 +2170,35 @@
КонецПроцедуры КонецПроцедуры
Процедура ДобавитьГруппуОператоровРаботаСДатами(СписокОператоров)
Группа = СписокОператоров.Строки.Добавить();
Группа.Идентификатор = "РаботаСДатамиСКД";
Группа.Представление = НСтр("ru = 'Работа с датами'");
Группа.Порядок = 2;
Группа.Картинка = БиблиотекаКартинок.ТипФункция;
Тип = Новый ОписаниеТипов("Число");
ДобавитьОператорВГруппу(Группа, "ГОД", НСтр("ru = 'ГОД'"), Тип, Истина);
ДобавитьОператорВГруппу(Группа, "МЕСЯЦ", НСтр("ru = 'МЕСЯЦ'"), Тип, Истина);
ДобавитьОператорВГруппу(Группа, "ЧИСЛО", НСтр("ru = 'ЧИСЛО'"), Тип, Истина);
ДобавитьОператорВГруппу(Группа, "ДЕНЬГОДА", НСтр("ru = 'ДЕНЬГОДА'"), Тип, Истина);
ДобавитьОператорВГруппу(Группа, "ДЕНЬ", НСтр("ru = 'ДЕНЬ'"), Тип, Истина);
ДобавитьОператорВГруппу(Группа, "НЕДЕЛЯ", НСтр("ru = 'НЕДЕЛЯ'"), Тип, Истина);
ДобавитьОператорВГруппу(Группа, "ДЕНЬНЕДЕЛИ", НСтр("ru = 'ДЕНЬНЕДЕЛИ'"), Тип, Истина);
ДобавитьОператорВГруппу(Группа, "ЧАС", НСтр("ru = 'ЧАС'"), Тип, Истина);
ДобавитьОператорВГруппу(Группа, "МИНУТА", НСтр("ru = 'МИНУТА'"), Тип, Истина);
ДобавитьОператорВГруппу(Группа, "СЕКУНДА", НСтр("ru = 'СЕКУНДА'"), Тип, Истина);
ДобавитьОператорВГруппу(Группа, "НАЧАЛОПЕРИОДА", НСтр("ru = 'НАЧАЛОПЕРИОДА'"), Новый ОписаниеТипов, Истина);
ДобавитьОператорВГруппу(Группа, "КОНЕЦПЕРИОДА", НСтр("ru = 'КОНЕЦПЕРИОДА'"), Новый ОписаниеТипов, Истина);
ДобавитьОператорВГруппу(Группа, "ДОБАВИТЬКДАТЕ", НСтр("ru = 'ДОБАВИТЬКДАТЕ'"), Новый ОписаниеТипов, Истина);
ДобавитьОператорВГруппу(Группа, "РАЗНОСТЬДАТ", НСтр("ru = 'РАЗНОСТЬДАТ'"), Тип, Истина);
КонецПроцедуры
Процедура ДобавитьГруппуОператоровОперацииСравнения(СписокОператоров) Процедура ДобавитьГруппуОператоровОперацииСравнения(СписокОператоров)
Группа = СписокОператоров.Строки.Добавить(); Группа = СписокОператоров.Строки.Добавить();
@@ -8,20 +8,6 @@
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
// Выполняет запрос по напоминаниям для текущего пользователя на момент времени ТекущаяДатаСеанса() + 30минут.
// Момент времени смещен от текущего для использования функции из модуля с повторным использованием
// возвращаемых значений.
// При обработке результата выполнения функции необходимо учитывать эту особенность.
//
// Возвращаемое значение:
// см. НапоминанияПользователяСлужебный.СписокТекущихНапоминанийПользователя
//
Функция ПолучитьНапоминанияТекущегоПользователя() Экспорт
Возврат НапоминанияПользователяСлужебный.СписокТекущихНапоминанийПользователя();
КонецФункции
// Создает новое напоминание на время, рассчитанное относительно времени в предмете. // Создает новое напоминание на время, рассчитанное относительно времени в предмете.
Функция ПодключитьНапоминаниеДоВремениПредмета(Текст, Интервал, Предмет, ИмяРеквизита, ПовторятьЕжегодно = Ложь) Экспорт Функция ПодключитьНапоминаниеДоВремениПредмета(Текст, Интервал, Предмет, ИмяРеквизита, ПовторятьЕжегодно = Ложь) Экспорт
@@ -12,17 +12,14 @@
// //
Процедура ПроверитьТекущиеНапоминания() Экспорт Процедура ПроверитьТекущиеНапоминания() Экспорт
ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента(); ПараметрыКлиента = СтандартныеПодсистемыКлиент.ПараметрКлиента(Неопределено);
Если Не ПараметрыКлиента.ДоступноИспользованиеРазделенныхДанных Тогда
Если Не ПараметрыРаботыКлиента.ДоступноИспользованиеРазделенныхДанных Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
ИнтервалПроверкиНапоминаний = ПараметрыРаботыКлиента.НастройкиНапоминаний.ИнтервалПроверкиНапоминаний;
// Открываем форму текущих оповещений. // Открываем форму текущих оповещений.
ВремяБлижайшего = Неопределено; ВремяБлижайшего = Неопределено;
ИнтервалСледующейПроверки = ИнтервалПроверкиНапоминаний * 60; ИнтервалСледующейПроверки = 60;
Если НапоминанияПользователяКлиент.ПолучитьТекущиеОповещения(ВремяБлижайшего).Количество() > 0 Тогда Если НапоминанияПользователяКлиент.ПолучитьТекущиеОповещения(ВремяБлижайшего).Количество() > 0 Тогда
НапоминанияПользователяКлиент.ОткрытьФормуОповещения(); НапоминанияПользователяКлиент.ОткрытьФормуОповещения();
@@ -103,20 +103,60 @@
Процедура ПослеНачалаРаботыСистемы() Экспорт Процедура ПослеНачалаРаботыСистемы() Экспорт
ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске(); ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске();
Если НЕ ПараметрыРаботыКлиента.ДоступноИспользованиеРазделенныхДанных Тогда Если Не ПараметрыРаботыКлиента.ДоступноИспользованиеРазделенныхДанных Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Если ПараметрыРаботыКлиента.НастройкиНапоминаний.ИспользоватьНапоминания Тогда Если ПараметрыРаботыКлиента.НастройкиНапоминаний.ИспользоватьНапоминания Тогда
НастройкиНаКлиенте().СписокТекущихНапоминаний =
ПараметрыРаботыКлиента.НастройкиНапоминаний.СписокТекущихНапоминаний;
ПодключитьОбработчикОжидания("ПроверитьТекущиеНапоминания", 60, Истина); // Через 60 секунд после запуска клиента. ПодключитьОбработчикОжидания("ПроверитьТекущиеНапоминания", 60, Истина); // Через 60 секунд после запуска клиента.
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
// См. СтандартныеПодсистемыКлиент.ПриПолученииСерверногоОповещения.
Процедура ПриПолученииСерверногоОповещения(ИмяОповещения, Результат) Экспорт
Если ИмяОповещения <> НапоминанияПользователяКлиентСервер.ИмяСерверногоОповещения() Тогда
Возврат;
КонецЕсли;
Результат = Результат; // см. НапоминанияПользователяСлужебный.НовыеИзмененныеНапоминания
Для Каждого Напоминание Из Результат.Удаленные Цикл
УдалитьЗаписьИзКэшаОповещений(Напоминание);
КонецЦикла;
Для Каждого Напоминание Из Результат.Добавленные Цикл
ОбновитьЗаписьВКэшеОповещений(Напоминание);
КонецЦикла;
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
// Возвращаемое значение:
// Структура:
// * СписокТекущихНапоминаний - см. НапоминанияПользователяСлужебный.СписокТекущихНапоминанийПользователя
//
Функция НастройкиНаКлиенте()
ИмяПараметра = "СтандартныеПодсистемы.НапоминанияПользователя";
Настройки = ПараметрыПриложения[ИмяПараметра];
Если Настройки = Неопределено Тогда
Настройки = Новый Структура;
Настройки.Вставить("СписокТекущихНапоминаний", Новый Массив);
ПараметрыПриложения[ИмяПараметра] = Настройки;
КонецЕсли;
Возврат Настройки;
КонецФункции
// Сбрасывает таймер проверки текущих напоминаний и выполняет проверку немедленно. // Сбрасывает таймер проверки текущих напоминаний и выполняет проверку немедленно.
Процедура СброситьТаймерПроверкиТекущихОповещений() Экспорт Процедура СброситьТаймерПроверкиТекущихОповещений() Экспорт
ОтключитьОбработчикОжидания("ПроверитьТекущиеНапоминания"); ОтключитьОбработчикОжидания("ПроверитьТекущиеНапоминания");
@@ -143,11 +183,11 @@
// ближайшее напоминание за пределами выборки кэша, то возвращается Неопределено. // ближайшее напоминание за пределами выборки кэша, то возвращается Неопределено.
// //
// Возвращаемое значение: // Возвращаемое значение:
// см. НапоминанияПользователяКлиентПовтИсп.ПолучитьНапоминанияТекущегоПользователя // см. НапоминанияПользователяСлужебный.СписокТекущихНапоминанийПользователя
// //
Функция ПолучитьТекущиеОповещения(ВремяБлижайшего = Неопределено) Экспорт Функция ПолучитьТекущиеОповещения(ВремяБлижайшего = Неопределено) Экспорт
ТаблицаОповещений = НапоминанияПользователяКлиентПовтИсп.ПолучитьНапоминанияТекущегоПользователя(); ТаблицаОповещений = НастройкиНаКлиенте().СписокТекущихНапоминаний;
Результат = Новый Массив; Результат = Новый Массив;
ВремяБлижайшего = Неопределено; ВремяБлижайшего = Неопределено;
@@ -168,9 +208,9 @@
КонецФункции КонецФункции
// Обновляет запись в кэше результата выполнения функции ПолучитьНапоминанияТекущегоПользователя(). // Обновляет запись в кэше напоминаний текущего пользователя.
Процедура ОбновитьЗаписьВКэшеОповещений(ПараметрыОповещения) Экспорт Процедура ОбновитьЗаписьВКэшеОповещений(ПараметрыОповещения) Экспорт
КэшОповещений = НапоминанияПользователяКлиентПовтИсп.ПолучитьНапоминанияТекущегоПользователя(); КэшОповещений = НастройкиНаКлиенте().СписокТекущихНапоминаний;
Запись = НайтиЗаписьВКэшеОповещений(КэшОповещений, ПараметрыОповещения); Запись = НайтиЗаписьВКэшеОповещений(КэшОповещений, ПараметрыОповещения);
Если Запись <> Неопределено Тогда Если Запись <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(Запись, ПараметрыОповещения); ЗаполнитьЗначенияСвойств(Запись, ПараметрыОповещения);
@@ -179,16 +219,16 @@
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
// Удаляет запись из кэша результата выполнения функции ПолучитьНапоминанияТекущегоПользователя(). // Удаляет запись из кэша напоминаний текущего пользователя.
Процедура УдалитьЗаписьИзКэшаОповещений(ПараметрыОповещения) Экспорт Процедура УдалитьЗаписьИзКэшаОповещений(ПараметрыОповещения) Экспорт
КэшОповещений = НапоминанияПользователяКлиентПовтИсп.ПолучитьНапоминанияТекущегоПользователя(); КэшОповещений = НастройкиНаКлиенте().СписокТекущихНапоминаний;
Запись = НайтиЗаписьВКэшеОповещений(КэшОповещений, ПараметрыОповещения); Запись = НайтиЗаписьВКэшеОповещений(КэшОповещений, ПараметрыОповещения);
Если Запись <> Неопределено Тогда Если Запись <> Неопределено Тогда
КэшОповещений.Удалить(КэшОповещений.Найти(Запись)); КэшОповещений.Удалить(КэшОповещений.Найти(Запись));
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
// Возвращает запись из кэша результата выполнения функции ПолучитьНапоминанияТекущегоПользователя(). // Возвращает запись из кэша напоминаний текущего пользователя.
// //
// Параметры: // Параметры:
// КэшОповещений - см. НапоминанияПользователяСлужебный.СписокТекущихНапоминанийПользователя // КэшОповещений - см. НапоминанияПользователяСлужебный.СписокТекущихНапоминанийПользователя
@@ -1,27 +0,0 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2022, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область СлужебныеПроцедурыИФункции
// Выполняет запрос по напоминаниям для текущего пользователя на 30 минут вперед от текущего времени.
// Момент времени смещен от текущего для того, чтобы данные были актуальны в течение жизни кэша.
// При обработке результата выполнения функции необходимо учитывать эту особенность.
//
// ФиксированныйМассив в возвращаемом значении не используется, так как кэшированный результат функции необходимо модифицировать
// на клиенте. Такой подход применяется для минимизации серверных вызовов.
//
// Возвращаемое значение:
// см. НапоминанияПользователяСлужебный.СписокТекущихНапоминанийПользователя
//
Функция ПолучитьНапоминанияТекущегоПользователя() Экспорт
Возврат НапоминанияПользователяВызовСервера.ПолучитьНапоминанияТекущегоПользователя();
КонецФункции
#КонецОбласти
@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="cbca7272-2aae-4e21-b3f5-12786f085648">
<name>НапоминанияПользователяКлиентПовтИсп</name>
<synonym>
<key>ru</key>
<value>Напоминания пользователя клиент повт исп</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
<returnValuesReuse>DuringSession</returnValuesReuse>
</mdclass:CommonModule>
@@ -58,4 +58,11 @@
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
Функция ИмяСерверногоОповещения() Экспорт
Возврат "СтандартныеПодсистемы.НапоминанияПользователя";
КонецФункции
#КонецОбласти #КонецОбласти
@@ -14,16 +14,43 @@
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске. // См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске.
Процедура ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры) Экспорт Процедура ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры) Экспорт
Параметры.Вставить("НастройкиНапоминаний", ИспользоватьНапоминания = ПолучитьНастройкиНапоминаний().ИспользоватьНапоминания;
Новый ФиксированнаяСтруктура("ИспользоватьНапоминания", ПолучитьНастройкиНапоминаний().ИспользоватьНапоминания)); СписокТекущихНапоминаний = ?(ИспользоватьНапоминания,
СписокТекущихНапоминанийПользователя(), Новый Массив);
Результат = Новый Структура;
Результат.Вставить("ИспользоватьНапоминания", ИспользоватьНапоминания);
Результат.Вставить("СписокТекущихНапоминаний", СписокТекущихНапоминаний);
Параметры.Вставить("НастройкиНапоминаний", Новый ФиксированнаяСтруктура(Результат));
КонецПроцедуры КонецПроцедуры
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиента. // См. ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений
Процедура ПриДобавленииПараметровРаботыКлиента(Параметры) Экспорт Процедура ПриДобавленииСерверныхОповещений(Оповещения) Экспорт
Параметры.Вставить("НастройкиНапоминаний", Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНапоминанияПользователя") Тогда
Новый ФиксированнаяСтруктура(ПолучитьНастройкиНапоминаний())); Возврат;
КонецЕсли;
Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(
НапоминанияПользователяКлиентСервер.ИмяСерверногоОповещения());
Оповещение.ИмяМодуляОтправки = "НапоминанияПользователяСлужебный";
Оповещение.ИмяМодуляПолучения = "НапоминанияПользователяКлиент";
Оповещения.Вставить(Оповещение.Имя, Оповещение);
КонецПроцедуры
// См. СтандартныеПодсистемыСервер.ПриОтправкеСерверногоОповещения
Процедура ПриОтправкеСерверногоОповещения(ИмяОповещения, ВариантыПараметров) Экспорт
// Добавление оповещений выполняется при записи регистра сведений НапоминанияПользователя.
// Периодическое оповещение требуется для гарантии доставки добавленных оповещений и
// для актуализации списка напоминаний всех пользователей.
АктуализироватьСписокНапоминаний(Ложь);
КонецПроцедуры КонецПроцедуры
@@ -155,8 +182,9 @@
Функция ПолучитьНастройкиНапоминаний() Функция ПолучитьНастройкиНапоминаний()
Результат = Новый Структура; Результат = Новый Структура;
Результат.Вставить("ИспользоватьНапоминания", ЕстьПравоИспользованияНапоминаний() И ПолучитьФункциональнуюОпцию("ИспользоватьНапоминанияПользователя")); Результат.Вставить("ИспользоватьНапоминания",
Результат.Вставить("ИнтервалПроверкиНапоминаний", ПолучитьИнтервалПроверкиНапоминаний()); ЕстьПравоИспользованияНапоминаний()
И ПолучитьФункциональнуюОпцию("ИспользоватьНапоминанияПользователя"));
Возврат Результат; Возврат Результат;
@@ -527,32 +555,6 @@
КонецФункции КонецФункции
// Возвращает интервал времени в минутах, через который необходимо повторять проверку текущих напоминаний.
Функция ПолучитьИнтервалПроверкиНапоминаний(Пользователь = Неопределено)
Интервал = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
"НастройкиНапоминаний",
"ИнтервалПроверкиНапоминаний",
1,
,
ПолучитьИмяПользователяИБ(Пользователь));
Возврат Макс(Интервал, 1);
КонецФункции
Функция ПолучитьИмяПользователяИБ(Пользователь)
Если Не ЗначениеЗаполнено(Пользователь) Тогда
Возврат Неопределено;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователь, "ИдентификаторПользователяИБ"));
Если ПользовательИБ = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Возврат ПользовательИБ.Имя;
КонецФункции
// Проверяет изменения реквизитов предметов, на которые есть пользовательская подписка, // Проверяет изменения реквизитов предметов, на которые есть пользовательская подписка,
// изменяет срок напоминания в случае необходимости. // изменяет срок напоминания в случае необходимости.
// //
@@ -645,9 +647,12 @@
КонецПроцедуры КонецПроцедуры
// Создает напоминание пользователя. Если по объекту уже есть напоминание, то сдвигает время напоминания на секунды вперед. // Создает напоминание пользователя. Если по объекту уже есть напоминание, то сдвигает время напоминания на секунды вперед.
Процедура ПодключитьНапоминание(ПараметрыНапоминания, ОбновитьСрокНапоминания = Ложь) Экспорт Процедура ПодключитьНапоминание(ПараметрыНапоминания, ОбновитьСрокНапоминания = Ложь, БезОповещенияКлиента = Ложь) Экспорт
НаборЗаписей = РегистрыСведений.НапоминанияПользователя.СоздатьНаборЗаписей(); НаборЗаписей = РегистрыСведений.НапоминанияПользователя.СоздатьНаборЗаписей();
Если БезОповещенияКлиента Тогда
НаборЗаписей.ДополнительныеСвойства.Вставить("БезОповещенияКлиента");
КонецЕсли;
НаборЗаписей.Отбор.Пользователь.Установить(ПараметрыНапоминания.Пользователь); НаборЗаписей.Отбор.Пользователь.Установить(ПараметрыНапоминания.Пользователь);
НаборЗаписей.Отбор.Источник.Установить(ПараметрыНапоминания.Источник); НаборЗаписей.Отбор.Источник.Установить(ПараметрыНапоминания.Источник);
@@ -694,7 +699,7 @@
КонецПроцедуры КонецПроцедуры
// Отключает напоминание, если оно есть. Если напоминание периодическое, подключает его на ближайшую дату по расписанию. // Отключает напоминание, если оно есть. Если напоминание периодическое, подключает его на ближайшую дату по расписанию.
Процедура ОтключитьНапоминание(ПараметрыНапоминания, ПодключатьПоРасписанию = Истина) Экспорт Процедура ОтключитьНапоминание(ПараметрыНапоминания, ПодключатьПоРасписанию = Истина, БезОповещенияКлиента = Ложь) Экспорт
ТекстЗапроса = ТекстЗапроса =
"ВЫБРАТЬ "ВЫБРАТЬ
@@ -738,6 +743,9 @@
// Удаляем существующую запись. // Удаляем существующую запись.
НаборЗаписей = РегистрыСведений.НапоминанияПользователя.СоздатьНаборЗаписей(); НаборЗаписей = РегистрыСведений.НапоминанияПользователя.СоздатьНаборЗаписей();
Если БезОповещенияКлиента Тогда
НаборЗаписей.ДополнительныеСвойства.Вставить("БезОповещенияКлиента");
КонецЕсли;
НаборЗаписей.Отбор.Пользователь.Установить(ПараметрыНапоминания.Пользователь); НаборЗаписей.Отбор.Пользователь.Установить(ПараметрыНапоминания.Пользователь);
НаборЗаписей.Отбор.Источник.Установить(ПараметрыНапоминания.Источник); НаборЗаписей.Отбор.Источник.Установить(ПараметрыНапоминания.Источник);
НаборЗаписей.Отбор.ВремяСобытия.Установить(ПараметрыНапоминания.ВремяСобытия); НаборЗаписей.Отбор.ВремяСобытия.Установить(ПараметрыНапоминания.ВремяСобытия);
@@ -759,7 +767,7 @@
Если ОпределенаСледующаяДатаПоРасписанию Тогда Если ОпределенаСледующаяДатаПоРасписанию Тогда
Напоминание.ВремяСобытия = СледующаяДатаПоРасписанию; Напоминание.ВремяСобытия = СледующаяДатаПоРасписанию;
Напоминание.СрокНапоминания = Напоминание.ВремяСобытия - Напоминание.ИнтервалВремениНапоминания; Напоминание.СрокНапоминания = Напоминание.ВремяСобытия - Напоминание.ИнтервалВремениНапоминания;
ПодключитьНапоминание(Напоминание); ПодключитьНапоминание(Напоминание, БезОповещенияКлиента);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -874,8 +882,19 @@
КонецФункции КонецФункции
// Возвращаемое значение:
// Структура:
// * Добавленные - см. СписокТекущихНапоминанийПользователя
// * Удаленные - см. СписокТекущихНапоминанийПользователя
//
Функция НовыеИзмененныеНапоминания() Экспорт
Возврат Новый Структура("Добавленные, Удаленные", Новый Массив, Новый Массив);
КонецФункции
// Прекращает просроченные периодические напоминания. // Прекращает просроченные периодические напоминания.
Процедура АктуализироватьСписокНапоминаний() Процедура АктуализироватьСписокНапоминаний(ПриЗапуске)
ТекстЗапроса = ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ "ВЫБРАТЬ РАЗРЕШЕННЫЕ
@@ -894,12 +913,18 @@
| РегистрСведений.НапоминанияПользователя КАК Напоминания | РегистрСведений.НапоминанияПользователя КАК Напоминания
|ГДЕ |ГДЕ
| Напоминания.ВремяСобытия <= &ТекущаяДата | Напоминания.ВремяСобытия <= &ТекущаяДата
| И Напоминания.Пользователь = &Пользователь"; | И &ОтборПоПользователю";
Запрос = Новый Запрос(ТекстЗапроса); Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса()); Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
Если ПриЗапуске Тогда
Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь()); Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборПоПользователю",
"Напоминания.Пользователь = &Пользователь");
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборПоПользователю", "ИСТИНА");
КонецЕсли;
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
СписокНапоминаний = Запрос.Выполнить().Выгрузить(); СписокНапоминаний = Запрос.Выполнить().Выгрузить();
@@ -925,7 +950,7 @@
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
Если ПодошедшееВремяСобытия.Количество() > 0 Тогда Если ПодошедшееВремяСобытия.Количество() > 0 Тогда
ОтключитьНапоминание(Напоминание, Ложь); ОтключитьНапоминание(Напоминание, Ложь, ПриЗапуске);
ПараметрыНапоминания = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(Напоминание); ПараметрыНапоминания = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(Напоминание);
ПараметрыНапоминания.Расписание = Напоминание.Расписание.Получить(); ПараметрыНапоминания.Расписание = Напоминание.Расписание.Получить();
@@ -933,9 +958,9 @@
Напоминание.ВремяСобытия = ПодошедшееВремяСобытия[ПодошедшееВремяСобытия.ВГраница()]; Напоминание.ВремяСобытия = ПодошедшееВремяСобытия[ПодошедшееВремяСобытия.ВГраница()];
Напоминание.СрокНапоминания = Напоминание.ВремяСобытия - Напоминание.ИнтервалВремениНапоминания; Напоминание.СрокНапоминания = Напоминание.ВремяСобытия - Напоминание.ИнтервалВремениНапоминания;
ПодключитьНапоминание(Напоминание); ПодключитьНапоминание(Напоминание,, ПриЗапуске);
КонецЕсли; КонецЕсли;
ОтключитьНапоминание(Напоминание, Истина); ОтключитьНапоминание(Напоминание, Истина, ПриЗапуске);
ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию();
Исключение Исключение
ОтменитьТранзакцию(); ОтменитьТранзакцию();
@@ -947,6 +972,10 @@
КонецПроцедуры КонецПроцедуры
// Выполняет запрос по напоминаниям для текущего пользователя на 30 минут вперед от текущего времени.
// Момент времени смещен от текущего для того, чтобы данные были актуальны в течение жизни кэша.
// При обработке результата выполнения функции необходимо учитывать эту особенность.
//
// Возвращаемое значение: // Возвращаемое значение:
// Массив из Структура: // Массив из Структура:
// * Пользователь - СправочникСсылка.Пользователи // * Пользователь - СправочникСсылка.Пользователи
@@ -958,7 +987,7 @@
// //
Функция СписокТекущихНапоминанийПользователя() Экспорт Функция СписокТекущихНапоминанийПользователя() Экспорт
АктуализироватьСписокНапоминаний(); АктуализироватьСписокНапоминаний(Истина);
Запрос = Новый Запрос; Запрос = Новый Запрос;
Запрос.Текст = Запрос.Текст =
@@ -972,13 +1001,15 @@
|ИЗ |ИЗ
| РегистрСведений.НапоминанияПользователя КАК Напоминания | РегистрСведений.НапоминанияПользователя КАК Напоминания
|ГДЕ |ГДЕ
| Напоминания.СрокНапоминания <= &ТекущаяДата | Напоминания.СрокНапоминания <= &ГраницаСрокаНапоминания
| И Напоминания.Пользователь = &Пользователь | И Напоминания.Пользователь = &Пользователь
| |
|УПОРЯДОЧИТЬ ПО |УПОРЯДОЧИТЬ ПО
| ВремяСобытия"; | ВремяСобытия";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса() + 30*60);// +30 минут для кэша Запрос.УстановитьПараметр("ГраницаСрокаНапоминания",
ТекущаяДатаСеанса() + ЗапасВремениНапоминанийДляКэша());
Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь()); Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
@@ -988,4 +1019,10 @@
КонецФункции КонецФункции
Функция ЗапасВремениНапоминанийДляКэша() Экспорт
Возврат 30*60;
КонецФункции
#КонецОбласти #КонецОбласти
@@ -45,7 +45,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы"; Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.7.61"; Описание.Версия = "3.1.7.79";
Описание.ИдентификаторИнтернетПоддержки = "SSL"; Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно"; Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0"; Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -242,15 +242,12 @@
КонецЕсли; КонецЕсли;
Если КлючЗаписи <> Неопределено Тогда Если КлючЗаписи <> Неопределено Тогда
Попытка Для НомерПопытки = 1 По 2 Цикл
ЗаблокироватьДанныеДляРедактирования(КлючЗаписи); Результат = РезультатБлокировкиОбластиДанных(КлючЗаписи, НомерПопытки);
Исключение Если Результат = "Успешно" Тогда
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации() + "." Прервать;
+ НСтр("ru = 'Обновление области данных'", ОбщегоНазначения.КодОсновногоЯзыка()), КонецЕсли;
УровеньЖурналаРегистрации.Ошибка,,, КонецЦикла;
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение(НСтр("ru = 'Ошибка обновления области данных. Запись версий области данных заблокирована.'"));
КонецПопытки;
КонецЕсли; КонецЕсли;
Возврат КлючЗаписи; Возврат КлючЗаписи;
@@ -1203,6 +1200,29 @@
#КонецОбласти #КонецОбласти
Функция РезультатБлокировкиОбластиДанных(КлючЗаписи, НомерПопытки)
Попытка
ЗаблокироватьДанныеДляРедактирования(КлючЗаписи);
Исключение
Если НомерПопытки = 1 Тогда
КонецОжидания = ТекущаяДатаСеанса() + 20;
Пока ТекущаяДатаСеанса() < КонецОжидания Цикл
// Ожидание конца блокировки.
КонецЦикла;
Возврат "Повтор";
КонецЕсли;
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации() + "."
+ НСтр("ru = 'Обновление области данных'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение(НСтр("ru = 'Ошибка обновления области данных. Запись версий области данных заблокирована.'"));
КонецПопытки;
Возврат "Успешно";
КонецФункции
Процедура ПроверитьНезавершенныеОтложенныеОбработчикиОбновления() Процедура ПроверитьНезавершенныеОтложенныеОбработчикиОбновления()
ВсеОтложенныеОбработчики = Новый Массив; ВсеОтложенныеОбработчики = Новый Массив;
@@ -10,13 +10,13 @@
#Область ОповещениеПользователя #Область ОповещениеПользователя
// АПК:142-выкл 4 необязательных параметра для совместимости
// с устаревшей процедурой ОбщегоНазначенияКлиентСервер.СообщитьПользователю.
// Формирует и выводит сообщение, которое может быть связано с элементом управления формы. // Формирует и выводит сообщение, которое может быть связано с элементом управления формы.
// В фоновом задании длительной операции отправляет сообщение сразу на клиент, // В фоновом задании длительной операции отправляет сообщение сразу на клиент,
// если подключена система взаимодействия. // если подключена система взаимодействия.
// //
// АПК:142-выкл 4 необязательных параметра для совместимости
// с устаревшей процедурой ОбщегоНазначенияКлиентСервер.СообщитьПользователю.
// Параметры: // Параметры:
// ТекстСообщенияПользователю - Строка - текст сообщения. // ТекстСообщенияПользователю - Строка - текст сообщения.
// КлючДанных - ЛюбаяСсылка - объект или ключ записи информационной базы, к которому это сообщение относится. // КлючДанных - ЛюбаяСсылка - объект или ключ записи информационной базы, к которому это сообщение относится.
@@ -1425,6 +1425,10 @@
СтруктураИмениФайла = Новый Структура("ПолноеИмя,Путь,Имя,Расширение,ИмяБезРасширения"); СтруктураИмениФайла = Новый Структура("ПолноеИмя,Путь,Имя,Расширение,ИмяБезРасширения");
ЗаполнитьЗначенияСвойств(СтруктураИмениФайла, Новый Файл(ПолноеИмяФайла)); ЗаполнитьЗначенияСвойств(СтруктураИмениФайла, Новый Файл(ПолноеИмяФайла));
Если СтруктураИмениФайла.Путь = ПолучитьРазделительПути() Тогда
СтруктураИмениФайла.Путь = "";
КонецЕсли;
Возврат СтруктураИмениФайла; Возврат СтруктураИмениФайла;
КонецФункции КонецФункции
@@ -360,7 +360,6 @@
// ** Ширина - Число // ** Ширина - Число
// //
Функция СвойстваЭлементовФормыНастроек(ТипФормы, КомпоновщикНастроек, ДополнительныеПараметры) Экспорт Функция СвойстваЭлементовФормыНастроек(ТипФормы, КомпоновщикНастроек, ДополнительныеПараметры) Экспорт
#Область ПодготовкаСтруктуры
СвойстваЭлементов = Новый Структура("Группы, Поля"); СвойстваЭлементов = Новый Структура("Группы, Поля");
СвойстваЭлементов.Группы = Новый Структура; СвойстваЭлементов.Группы = Новый Структура;
@@ -380,16 +379,15 @@
НедоступныеЭлементыСтруктуры.Вставить(Тип("ТаблицаКомпоновкиДанных"), ТипФормыОтчета.Настройка); НедоступныеЭлементыСтруктуры.Вставить(Тип("ТаблицаКомпоновкиДанных"), ТипФормыОтчета.Настройка);
НедоступныеЭлементыСтруктуры.Вставить(Тип("ДиаграммаКомпоновкиДанных"), ТипФормыОтчета.Настройка); НедоступныеЭлементыСтруктуры.Вставить(Тип("ДиаграммаКомпоновкиДанных"), ТипФормыОтчета.Настройка);
#КонецОбласти
#Область ЗаполнениеСтруктуры
Сведения = СведенияОПользовательскихНастройках(КомпоновщикНастроек.Настройки); Сведения = СведенияОПользовательскихНастройках(КомпоновщикНастроек.Настройки);
ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки; ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
Для Каждого ЭлементПользовательскойНастройки Из ПользовательскиеНастройки.Элементы Цикл Для Каждого ЭлементПользовательскойНастройки Из ПользовательскиеНастройки.Элементы Цикл
НайденныеСведения = Сведения[ЭлементПользовательскойНастройки.ИдентификаторПользовательскойНастройки]; НайденныеСведения = Сведения[ЭлементПользовательскойНастройки.ИдентификаторПользовательскойНастройки];
ЭлементНастройки = НайденныеСведения.ЭлементНастройки; // ГруппировкаКомпоновкиДанных, ГруппировкаТаблицыКомпоновкиДанных, ГруппировкаДиаграммыКомпоновкиДанных Если НайденныеСведения = Неопределено Тогда
Продолжить;
КонецЕсли;
ЭлементНастройки = НайденныеСведения.ЭлементНастройки; // ГруппировкаКомпоновкиДанных, ГруппировкаТаблицыКомпоновкиДанных, ГруппировкаДиаграммыКомпоновкиДанных
Если ЭлементНастройки = Неопределено Если ЭлементНастройки = Неопределено
Или НедоступныеЭлементыСтруктуры.Получить(ТипЗнч(ЭлементНастройки)) = ТипФормы Или НедоступныеЭлементыСтруктуры.Получить(ТипЗнч(ЭлементНастройки)) = ТипФормы
Или ДоступныеРежимы.Найти(ЭлементНастройки.РежимОтображения) = Неопределено Тогда Или ДоступныеРежимы.Найти(ЭлементНастройки.РежимОтображения) = Неопределено Тогда
@@ -445,8 +443,6 @@
ТипФормы, СвойстваЭлементов, ПользовательскиеНастройки.Элементы); ТипФормы, СвойстваЭлементов, ПользовательскиеНастройки.Элементы);
КонецЕсли; КонецЕсли;
#КонецОбласти
Возврат СвойстваЭлементов; Возврат СвойстваЭлементов;
КонецФункции КонецФункции
@@ -2027,6 +2027,36 @@
#КонецОбласти #КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Возвращает пользователя ИБ по ссылке справочника Пользователи или ВнешниеПользователи.
// Для поиска требуются административные права. Если административных прав нет,
// допустимо искать только пользователя для текущего пользователя ИБ.
//
// Параметры:
// Пользователь - СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи
//
// Возвращаемое значение:
// ПользовательИнформационнойБазы - если найден.
// Неопределено - если пользователь ИБ не существует.
//
Функция НайтиПоСсылке(Пользователь) Экспорт
УстановитьПривилегированныйРежим(Истина);
ИдентификаторПользователяИБ = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователь,
"ИдентификаторПользователяИБ");
УстановитьПривилегированныйРежим(Ложь);
Если ТипЗнч(ИдентификаторПользователяИБ) <> Тип("УникальныйИдентификатор") Тогда
Возврат Неопределено;
КонецЕсли;
Возврат ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ИдентификаторПользователяИБ);
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
// Формирует краткое описание ошибки, которое увидит пользователь, // Формирует краткое описание ошибки, которое увидит пользователь,
@@ -6007,16 +6007,33 @@
| СоставыГруппПользователей.Пользователь ЕСТЬ NULL "; | СоставыГруппПользователей.Пользователь ЕСТЬ NULL ";
Блокировка = Новый БлокировкаДанных; Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.СоставыГруппПользователей");
ЭлементБлокировки.УстановитьЗначение("ГруппаПользователей", ГруппаВсеПользователи);
Если ОбновитьГруппуВнешнихПользователей Тогда Если ОбновитьГруппуВнешнихПользователей Тогда
ЭлементБлокировки = Блокировка.Добавить("Справочник.ВнешниеПользователи"); ПолноеИмяСправочника = "Справочник.ВнешниеПользователи";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Справочник.Пользователи", "Справочник.ВнешниеПользователи"); Запрос.Текст = СтрЗаменить(Запрос.Текст, "Справочник.Пользователи", "Справочник.ВнешниеПользователи");
Иначе Иначе
ЭлементБлокировки = Блокировка.Добавить("Справочник.Пользователи"); ПолноеИмяСправочника = "Справочник.Пользователи";
КонецЕсли;
Если ТипЗнч(Пользователь) = Тип("Массив") И Пользователь.Количество() <= 1000 Тогда
Для Каждого Ссылка Из Пользователь Цикл
ЭлементБлокировкиРегистра = Блокировка.Добавить("РегистрСведений.СоставыГруппПользователей");
ЭлементБлокировкиРегистра.УстановитьЗначение("ГруппаПользователей", ГруппаВсеПользователи);
ЭлементБлокировкиРегистра.УстановитьЗначение("Пользователь", Ссылка);
ЭлементБлокировкиСправочника = Блокировка.Добавить(ПолноеИмяСправочника);
ЭлементБлокировкиСправочника.Режим = РежимБлокировкиДанных.Разделяемый;
ЭлементБлокировкиСправочника.УстановитьЗначение("Ссылка", Ссылка);
КонецЦикла;
Иначе
ЭлементБлокировкиРегистра = Блокировка.Добавить("РегистрСведений.СоставыГруппПользователей");
ЭлементБлокировкиСправочника = Блокировка.Добавить(ПолноеИмяСправочника);
ЭлементБлокировкиСправочника.Режим = РежимБлокировкиДанных.Разделяемый;
Если Пользователь <> Неопределено И ТипЗнч(Пользователь) <> Тип("Массив") Тогда
ЭлементБлокировкиРегистра.УстановитьЗначение("ГруппаПользователей", ГруппаВсеПользователи);
ЭлементБлокировкиРегистра.УстановитьЗначение("Пользователь", Пользователь);
ЭлементБлокировкиСправочника.УстановитьЗначение("Ссылка", Пользователь);
КонецЕсли;
КонецЕсли; КонецЕсли;
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
Если Пользователь = Неопределено Тогда Если Пользователь = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборПользователя", "ИСТИНА"); Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборПользователя", "ИСТИНА");
@@ -6330,8 +6347,7 @@
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОтборПользователяВСправочнике", ОтборПользователяВСправочнике); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОтборПользователяВСправочнике", ОтборПользователяВСправочнике);
Блокировка = Новый БлокировкаДанных; Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.СоставыГруппПользователей"); Блокировка.Добавить("РегистрСведений.СоставыГруппПользователей");
ЭлементБлокировки.УстановитьЗначение("ГруппаПользователей", ГруппаПользователей);
Если ОбновитьГруппыВнешнихПользователей Тогда Если ОбновитьГруппыВнешнихПользователей Тогда
@@ -6344,12 +6360,7 @@
ТекстЗапроса, ТекстЗапроса,
"ГруппыПользователейСостав.Пользователь", "ГруппыПользователейСостав.Пользователь",
"ГруппыПользователейСостав.ВнешнийПользователь"); "ГруппыПользователейСостав.ВнешнийПользователь");
ЭлементБлокировки = Блокировка.Добавить("Справочник.ГруппыВнешнихПользователей");
Иначе
ЭлементБлокировки = Блокировка.Добавить("Справочник.ГруппыПользователей");
КонецЕсли; КонецЕсли;
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
НачатьТранзакцию(); НачатьТранзакцию();
@@ -60,7 +60,9 @@
НСтр("ru = 'Классификатор банков устарел'"), НСтр("ru = 'Классификатор банков устарел'"),
НавигационнаяСсылкаФормыЗагрузки(), НавигационнаяСсылкаФормыЗагрузки(),
НСтр("ru = 'Обновить классификатор банков'"), НСтр("ru = 'Обновить классификатор банков'"),
БиблиотекаКартинок.Предупреждение32); БиблиотекаКартинок.Предупреждение32,
СтатусОповещенияПользователя.Важное,
"КлассификаторБанковУстарел");
КонецПроцедуры КонецПроцедуры
@@ -227,18 +227,45 @@
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске. // См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске.
Процедура ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры) Экспорт Процедура ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры) Экспорт
Если ОбщегоНазначения.РазделениеВключено() Или ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда Параметры.Вставить("Валюты", Новый ФиксированнаяСтруктура("ТребуетсяОбновитьКурсыВалют",
КурсыОбновляютсяОтветственными = Ложь; // В модели сервиса обновляются автоматически. ОповещатьОНеобходимостиОбновленияКурсовВалют() И Не КурсыАктуальны()));
ИначеЕсли НЕ ПравоДоступа("Изменение", Метаданные.РегистрыСведений.КурсыВалют) Тогда
КурсыОбновляютсяОтветственными = Ложь; // Пользователь не может обновлять курсы валют. КонецПроцедуры
Иначе
КурсыОбновляютсяОтветственными = КурсыЗагружаютсяИзИнтернета(); // Есть валюты, для которых можно загружать курсы. // См. ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений
Процедура ПриДобавленииСерверныхОповещений(Оповещения) Экспорт
Если Не ОповещатьОНеобходимостиОбновленияКурсовВалют() Тогда
Возврат;
КонецЕсли; КонецЕсли;
ВключитьОповещение = Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ТекущиеДела"); Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(
РаботаСКурсамиВалютПереопределяемый.ПриОпределенииНеобходимостиПоказаПредупрежденияОбУстаревшихКурсахВалют(ВключитьОповещение); "СтандартныеПодсистемы.Валюты.ТребуетсяОбновитьКурсыВалют");
Параметры.Вставить("Валюты", Новый ФиксированнаяСтруктура("КурсыОбновляютсяОтветственными", (КурсыОбновляютсяОтветственными И ВключитьОповещение))); Оповещение.ИмяМодуляОтправки = "РаботаСКурсамиВалют";
Оповещение.ИмяМодуляПолучения = "РаботаСКурсамиВалютКлиент";
Оповещения.Вставить(Оповещение.Имя, Оповещение);
КонецПроцедуры
// См. СтандартныеПодсистемыСервер.ПриОтправкеСерверногоОповещения
Процедура ПриОтправкеСерверногоОповещения(ИмяОповещения, ВариантыПараметров) Экспорт
ТекущаяДатаСеанса = ТекущаяДатаСеанса();
ДатаСледующегоОповещения = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(
"СтандартныеПодсистемы.Валюты", "ДатаСледующегоОповещения", '00010101',, "");
Если ДатаСледующегоОповещения > ТекущаяДатаСеанса Тогда
Возврат;
КонецЕсли;
Если Не КурсыАктуальны() Тогда
СерверныеОповещения.ОтправитьСерверноеОповещение(ИмяОповещения, "", ВариантыПараметров[0].Адресаты);
КонецЕсли;
ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить(
"СтандартныеПодсистемы.Валюты", "ДатаСледующегоОповещения", КонецДня(ТекущаяДатаСеанса) + 1,, "");
КонецПроцедуры КонецПроцедуры
@@ -559,19 +586,22 @@
Возврат Запрос.Выполнить().Пустой(); Возврат Запрос.Выполнить().Пустой();
КонецФункции КонецФункции
// Определяет есть ли хоть одна валюта, курс которой может загружаться из сети Интернет. // Для процедур ПриДобавленииПараметровРаботыКлиентаПриЗапуске и
// ПриДобавленииСерверныхОповещений.
// //
Функция КурсыЗагружаютсяИзИнтернета() Функция ОповещатьОНеобходимостиОбновленияКурсовВалют()
Запрос = Новый Запрос;
Запрос.Текст = Если ОбщегоНазначения.РазделениеВключено() Или ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда
"ВЫБРАТЬ ПЕРВЫЕ 1 Возврат Ложь; // В модели сервиса обновляются автоматически.
| 1 КАК Поле1 ИначеЕсли Не ПравоДоступа("Изменение", Метаданные.РегистрыСведений.КурсыВалют) Тогда
|ИЗ Возврат Ложь; // Пользователь не может обновлять курсы валют.
| Справочник.Валюты КАК Валюты КонецЕсли;
|ГДЕ
| Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета) ВключитьОповещение = Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ТекущиеДела");
| И Валюты.ПометкаУдаления = ЛОЖЬ"; РаботаСКурсамиВалютПереопределяемый.ПриОпределенииНеобходимостиПоказаПредупрежденияОбУстаревшихКурсахВалют(ВключитьОповещение);
Возврат НЕ Запрос.Выполнить().Пустой();
Возврат ВключитьОповещение;
КонецФункции КонецФункции
Функция СхемаДанныеПечатиСуммаПрописью() Функция СхемаДанныеПечатиСуммаПрописью()
@@ -1,17 +0,0 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2022, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область СлужебныеПроцедурыИФункции
// Проверяет актуальность курсов всех валют.
//
Функция КурсыАктуальны() Экспорт
Возврат РаботаСКурсамиВалют.КурсыАктуальны();
КонецФункции
#КонецОбласти
@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="56730848-3bef-4b8c-b449-fe9d09c9c374">
<name>РаботаСКурсамиВалютВызовСервера</name>
<synonym>
<key>ru</key>
<value>Работа с курсами валют вызов сервера</value>
</synonym>
<server>true</server>
<serverCall>true</serverCall>
</mdclass:CommonModule>
@@ -11,13 +11,9 @@
// Выводит оповещение о необходимости обновления курсов валют. // Выводит оповещение о необходимости обновления курсов валют.
// //
Процедура РаботаСКурсамиВалютВывестиОповещениеОНеактуальности() Экспорт Процедура РаботаСКурсамиВалютВывестиОповещениеОНеактуальности() Экспорт
Если НЕ РаботаСКурсамиВалютВызовСервера.КурсыАктуальны() Тогда
РаботаСКурсамиВалютКлиент.ОповеститьКурсыУстарели();
КонецЕсли;
ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса(); РаботаСКурсамиВалютКлиент.ОповеститьКурсыУстарели();
ПериодОбработчикаСледующегоДня = КонецДня(ТекущаяДата) - ТекущаяДата + 59;
ПодключитьОбработчикОжидания("РаботаСКурсамиВалютВывестиОповещениеОНеактуальности", ПериодОбработчикаСледующегоДня, Истина);
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
@@ -15,12 +15,23 @@
Процедура ПослеНачалаРаботыСистемы() Экспорт Процедура ПослеНачалаРаботыСистемы() Экспорт
ПараметрыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске(); ПараметрыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске();
Если ПараметрыКлиента.Свойство("Валюты") И ПараметрыКлиента.Валюты.КурсыОбновляютсяОтветственными Тогда Если ПараметрыКлиента.Свойство("Валюты") И ПараметрыКлиента.Валюты.ТребуетсяОбновитьКурсыВалют Тогда
ПодключитьОбработчикОжидания("РаботаСКурсамиВалютВывестиОповещениеОНеактуальности", 15, Истина); ПодключитьОбработчикОжидания("РаботаСКурсамиВалютВывестиОповещениеОНеактуальности", 15, Истина);
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
// См. СтандартныеПодсистемыКлиент.ПриПолученииСерверногоОповещения.
Процедура ПриПолученииСерверногоОповещения(ИмяОповещения, Результат) Экспорт
Если ИмяОповещения <> "СтандартныеПодсистемы.Валюты.ТребуетсяОбновитьКурсыВалют" Тогда
Возврат;
КонецЕсли;
ОповеститьКурсыУстарели();
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -28,15 +39,38 @@
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Обновление курсов валют // Обновление курсов валют
// Выводит соответствующее оповещение. Функция НастройкиНаКлиенте()
//
ИмяПараметра = "СтандартныеПодсистемы.Валюты";
Настройки = ПараметрыПриложения[ИмяПараметра];
Если Настройки = Неопределено Тогда
Настройки = Новый Структура;
Настройки.Вставить("НачалоДняПоследнегоОповещения", '00010101');
ПараметрыПриложения[ИмяПараметра] = Настройки;
КонецЕсли;
Возврат Настройки;
КонецФункции
Процедура ОповеститьКурсыУстарели() Экспорт Процедура ОповеститьКурсыУстарели() Экспорт
ДатаНачалаДня = НачалоДня(ОбщегоНазначенияКлиент.ДатаСеанса());
Настройки = НастройкиНаКлиенте();
Если Настройки.НачалоДняПоследнегоОповещения >= ДатаНачалаДня Тогда
Возврат;
КонецЕсли;
Настройки.НачалоДняПоследнегоОповещения = ДатаНачалаДня;
ПоказатьОповещениеПользователя( ПоказатьОповещениеПользователя(
НСтр("ru = 'Курсы валют устарели'"), НСтр("ru = 'Курсы валют устарели'"),
НавигационнаяСсылкаОбработки(), НавигационнаяСсылкаОбработки(),
НСтр("ru = 'Обновить курсы валют'"), НСтр("ru = 'Обновить курсы валют'"),
БиблиотекаКартинок.Предупреждение32); БиблиотекаКартинок.Предупреждение32,
СтатусОповещенияПользователя.Важное,
"КурсыВалютУстарели");
КонецПроцедуры КонецПроцедуры
@@ -1360,7 +1360,6 @@
КонецФункции КонецФункции
// См. РаботаСПочтовымиСообщениями.ОтправитьПисьмо.
Функция ОтправитьПисьмо(УчетнаяЗапись, Письмо) Экспорт Функция ОтправитьПисьмо(УчетнаяЗапись, Письмо) Экспорт
Письма = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Письмо); Письма = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Письмо);
@@ -738,7 +738,7 @@
ЭлементБлокировки.УстановитьЗначение("Ссылка", СсылкаНаВерсию); ЭлементБлокировки.УстановитьЗначение("Ссылка", СсылкаНаВерсию);
Расширение = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(СведенияОФайле.РасширениеБезТочки); Расширение = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(СведенияОФайле.РасширениеБезТочки);
ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайла(Расширение, СведенияОФайле.Размер); ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайла(СведенияОФайле.Размер, Расширение);
МенеджерФайла = РаботаСФайламиСлужебный.МенеджерФайловПоТипу(ТипХраненияФайла); МенеджерФайла = РаботаСФайламиСлужебный.МенеджерФайловПоТипу(ТипХраненияФайла);
Контекст = РаботаСФайламиСлужебный.КонтекстОбновленияФайла(СсылкаНаВерсию, Контекст = РаботаСФайламиСлужебный.КонтекстОбновленияФайла(СсылкаНаВерсию,
СведенияОФайле.АдресВременногоХранилищаФайла, , ТипХраненияФайла); СведенияОФайле.АдресВременногоХранилищаФайла, , ТипХраненияФайла);
@@ -991,6 +991,7 @@
КонецФункции КонецФункции
// Создает новый файл по аналогии с указанным и возвращает ссылку на него. // Создает новый файл по аналогии с указанным и возвращает ссылку на него.
//
// Параметры: // Параметры:
// ИсходныйФайл - СправочникСсылка.Файлы - существующий файл. // ИсходныйФайл - СправочникСсылка.Файлы - существующий файл.
// ВладелецНовогоФайла - ЛюбаяСсылка - владелец файла. // ВладелецНовогоФайла - ЛюбаяСсылка - владелец файла.
@@ -114,10 +114,18 @@
ПараметрыВыполнения.Вставить("ИмяСоздаваемогоФайла", Неопределено); ПараметрыВыполнения.Вставить("ИмяСоздаваемогоФайла", Неопределено);
КонецЕсли; КонецЕсли;
ФайлКлиента = Новый Файл(ПараметрыВыполнения.ПолноеИмяФайла); ДобавляемыйФайл = Новый Файл(ПараметрыВыполнения.ПолноеИмяФайла);
Если Не ДобавляемыйФайл.Существует() Тогда
ТекстОшибки = НСтр("ru = 'Указанный файл не существует:
|%1'");
Результат.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки,
ПараметрыВыполнения.ПолноеИмяФайла);
Возврат Результат;
КонецЕсли;
Если ПараметрыВыполнения.Свойство("МаксимальныйРазмер") Если ПараметрыВыполнения.Свойство("МаксимальныйРазмер")
И ПараметрыВыполнения.МаксимальныйРазмер > 0 И ПараметрыВыполнения.МаксимальныйРазмер > 0
И ФайлКлиента.Размер() > ПараметрыВыполнения.МаксимальныйРазмер*1024*1024 Тогда И ДобавляемыйФайл.Размер() > ПараметрыВыполнения.МаксимальныйРазмер*1024*1024 Тогда
ТекстОшибки = НСтр("ru = 'Размер файла превышает %1 Мб.'"); ТекстОшибки = НСтр("ru = 'Размер файла превышает %1 Мб.'");
Результат.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, Результат.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки,
@@ -127,12 +135,12 @@
КонецЕсли; КонецЕсли;
ПроверитьВозможностьЗагрузкиФайла(ФайлКлиента); ПроверитьВозможностьЗагрузкиФайла(ДобавляемыйФайл);
ОбщиеНастройки = ОбщиеНастройкиРаботыСФайлами(); ОбщиеНастройки = ОбщиеНастройкиРаботыСФайлами();
ИзвлекатьТекстыФайловНаКлиенте = НЕ ОбщиеНастройки.ИзвлекатьТекстыФайловНаСервере; ИзвлекатьТекстыФайловНаКлиенте = НЕ ОбщиеНастройки.ИзвлекатьТекстыФайловНаСервере;
Если ИзвлекатьТекстыФайловНаКлиенте Тогда Если ИзвлекатьТекстыФайловНаКлиенте Тогда
АдресВременногоХранилищаТекста = ИзвлечьТекстВоВременноеХранилище(ФайлКлиента.ПолноеИмя, АдресВременногоХранилищаТекста = ИзвлечьТекстВоВременноеХранилище(ДобавляемыйФайл.ПолноеИмя,
ПараметрыВыполнения.ФормаВладелец.УникальныйИдентификатор); ПараметрыВыполнения.ФормаВладелец.УникальныйИдентификатор);
Иначе Иначе
АдресВременногоХранилищаТекста = ""; АдресВременногоХранилищаТекста = "";
@@ -142,7 +150,7 @@
АдресВременногоХранилищаФайла = ""; АдресВременногоХранилищаФайла = "";
ПомещаемыеФайлы = Новый Массив; ПомещаемыеФайлы = Новый Массив;
Описание = Новый ОписаниеПередаваемогоФайла(ФайлКлиента.ПолноеИмя, ""); Описание = Новый ОписаниеПередаваемогоФайла(ДобавляемыйФайл.ПолноеИмя, "");
ПомещаемыеФайлы.Добавить(Описание); ПомещаемыеФайлы.Добавить(Описание);
ПомещенныеФайлы = Новый Массив; ПомещенныеФайлы = Новый Массив;
@@ -156,12 +164,12 @@
КонецЕсли; КонецЕсли;
#Если МобильныйКлиент Тогда #Если МобильныйКлиент Тогда
ПредставлениеНаМобильномУстройстве = ФайлКлиента.ПолучитьПредставлениеФайлаБиблиотекиМобильногоУстройства(); ПредставлениеНаМобильномУстройстве = ДобавляемыйФайл.ПолучитьПредставлениеФайлаБиблиотекиМобильногоУстройства();
РасширениеФайла = ОбщегоНазначенияКлиентСервер.ПолучитьРасширениеИмениФайла(ПредставлениеНаМобильномУстройстве); РасширениеФайла = ОбщегоНазначенияКлиентСервер.ПолучитьРасширениеИмениФайла(ПредставлениеНаМобильномУстройстве);
ИмяФайлаБезРасширения = СтрЗаменить(ПредставлениеНаМобильномУстройстве, "." + РасширениеФайла, ""); ИмяФайлаБезРасширения = СтрЗаменить(ПредставлениеНаМобильномУстройстве, "." + РасширениеФайла, "");
#Иначе #Иначе
РасширениеФайла = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(ФайлКлиента.Расширение); РасширениеФайла = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(ДобавляемыйФайл.Расширение);
ИмяФайлаБезРасширения = ФайлКлиента.ИмяБезРасширения; ИмяФайлаБезРасширения = ДобавляемыйФайл.ИмяБезРасширения;
#КонецЕсли #КонецЕсли
Если ПараметрыВыполнения.ИмяСоздаваемогоФайла <> Неопределено Тогда Если ПараметрыВыполнения.ИмяСоздаваемогоФайла <> Неопределено Тогда
@@ -175,7 +183,7 @@
Если РаботаСФайламиСлужебныйКлиентПовтИсп.ЭтоСправочникФайлы(ПараметрыВыполнения.ВладелецФайла) Тогда Если РаботаСФайламиСлужебныйКлиентПовтИсп.ЭтоСправочникФайлы(ПараметрыВыполнения.ВладелецФайла) Тогда
СведенияОФайле = РаботаСФайламиКлиентСервер.СведенияОФайле("ФайлСВерсией", ФайлКлиента); СведенияОФайле = РаботаСФайламиКлиентСервер.СведенияОФайле("ФайлСВерсией", ДобавляемыйФайл);
СведенияОФайле.АдресВременногоХранилищаФайла = АдресВременногоХранилищаФайла; СведенияОФайле.АдресВременногоХранилищаФайла = АдресВременногоХранилищаФайла;
СведенияОФайле.АдресВременногоХранилищаТекста = АдресВременногоХранилищаТекста; СведенияОФайле.АдресВременногоХранилищаТекста = АдресВременногоХранилищаТекста;
СведенияОФайле.ЗаписатьВИсторию = Истина; СведенияОФайле.ЗаписатьВИсторию = Истина;
@@ -1867,9 +1875,11 @@
// Параметры: // Параметры:
// Файл - Файл // Файл - Файл
// ВызыватьИсключение - Булево // ВызыватьИсключение - Булево
// МассивИменФайловСОшибками - Массив // ФайлыСОшибками - Массив из Структура:
// * ИмяФайла - Строка
// * Ошибка - Строка
// //
Функция ПроверитьВозможностьЗагрузкиФайла(Файл, ВызыватьИсключение = Истина, МассивИменФайловСОшибками = Неопределено) Функция ПроверитьВозможностьЗагрузкиФайла(Файл, ВызыватьИсключение = Истина, ФайлыСОшибками = Неопределено)
ОбщиеНастройки = ОбщиеНастройкиРаботыСФайлами(); ОбщиеНастройки = ОбщиеНастройкиРаботыСФайлами();
@@ -1894,7 +1904,7 @@
Запись.Вставить("ИмяФайла", Файл.ПолноеИмя); Запись.Вставить("ИмяФайла", Файл.ПолноеИмя);
Запись.Вставить("Ошибка", ОписаниеОшибки); Запись.Вставить("Ошибка", ОписаниеОшибки);
МассивИменФайловСОшибками.Добавить(Запись); ФайлыСОшибками.Добавить(Запись);
Возврат Ложь; Возврат Ложь;
КонецЕсли; КонецЕсли;
@@ -1914,7 +1924,7 @@
Запись.Вставить("ИмяФайла", Файл.ПолноеИмя); Запись.Вставить("ИмяФайла", Файл.ПолноеИмя);
Запись.Вставить("Ошибка", ОписаниеОшибки); Запись.Вставить("Ошибка", ОписаниеОшибки);
МассивИменФайловСОшибками.Добавить(Запись); ФайлыСОшибками.Добавить(Запись);
Возврат Ложь; Возврат Ложь;
КонецЕсли; КонецЕсли;
@@ -8,14 +8,14 @@
#Область ПрограммныйИнтерфейс #Область ПрограммныйИнтерфейс
// Формирует отчеты и отправляет их согласно настройкам - в указанную папку файлов, в папку на компьютере, // Формирует отчеты и отправляет их согласно настройкам в указанную папку файлов, в папку на компьютере,
// по электронной почте или на FTP-ресурс. // по электронной почте или на FTP-ресурс.
// //
// Параметры: // Параметры:
// Рассылка - СправочникСсылка.РассылкиОтчетов - выполняемая рассылка отчетов. // Рассылка - СправочникСсылка.РассылкиОтчетов - выполняемая рассылка отчетов.
// ПараметрыЖурнала - см. РассылкаОтчетов.ПараметрыЖурнала. // ПараметрыЖурнала - см. РассылкаОтчетов.ПараметрыЖурнала.
// ДополнительныеНастройки - Структура - настройки, которые переопределяют стандартные параметры рассылки, где: // ДополнительныеНастройки - Структура:
// * Получатели - Соответствие из КлючИЗначение - набор получателей и их e-mail адресов: // * Получатели - Соответствие из КлючИЗначение:
// ** Ключ - СправочникСсылка - получатель. // ** Ключ - СправочникСсылка - получатель.
// ** Значение - Строка - набор e-mail адресов получателя в строке с разделителями. // ** Значение - Строка - набор e-mail адресов получателя в строке с разделителями.
// //
@@ -2010,16 +2010,16 @@
// Регистрация промежуточного результата. // Регистрация промежуточного результата.
// 2 - Табличные документы получателей. // 2 - Табличные документы получателей.
// Ключ - Имя отчета // Ключ - имя отчета.
// Значение - Табличный документ. // Значение - табличный документ.
// Настройки - ............. все параметры отчета ................. // Настройки - все параметры отчета.
СтрокаОтчет = СтрокаПолучатель.Строки.Добавить(); СтрокаОтчет = СтрокаПолучатель.Строки.Добавить();
СтрокаОтчет.Уровень = 2; СтрокаОтчет.Уровень = 2;
СтрокаОтчет.Ключ = Строка(ПараметрыОтчета.Отчет); СтрокаОтчет.Ключ = Строка(ПараметрыОтчета.Отчет);
СтрокаОтчет.Значение = Результат.ТабДок; СтрокаОтчет.Значение = Результат.ТабДок;
СтрокаОтчет.Настройки = ПараметрыОтчета; СтрокаОтчет.Настройки = ПараметрыОтчета;
ПредставлениеОтчета = СокрЛП(СтрокаОтчет.Ключ);// + " ([ПредставлениеФорматов])"; ПредставлениеОтчета = СокрЛП(СтрокаОтчет.Ключ);
// Сохранение табличного документа в форматы. // Сохранение табличного документа в форматы.
ПредставлениеФорматов = ""; ПредставлениеФорматов = "";
@@ -2124,11 +2124,8 @@
ПредставлениеФорматов = ПредставлениеФорматов ПредставлениеФорматов = ПредставлениеФорматов
+ ?(ПредставлениеФорматов = "", "", ", ") + ?(ПредставлениеФорматов = "", "", ", ")
// Открывающий тег для ссылок (позже полные пути к файлам будут заменены на ссылки на конечных ресурсах).
+ ?(ПараметрыДоставки.ДобавлятьСсылки = "КФорматам", "<a href = '" + СтрокаФайл.Значение + "'>", "") + ?(ПараметрыДоставки.ДобавлятьСсылки = "КФорматам", "<a href = '" + СтрокаФайл.Значение + "'>", "")
// имя формата
+ ПараметрыФормата.Имя + ПараметрыФормата.Имя
// закрывающий тег для ссылок
+ ?(ПараметрыДоставки.ДобавлятьСсылки = "КФорматам", "</a>", ""); + ?(ПараметрыДоставки.ДобавлятьСсылки = "КФорматам", "</a>", "");
// //
@@ -2144,12 +2141,12 @@
КонецПроцедуры КонецПроцедуры
// Вспомогательная процедура функции "ВыполнитьРассылку" - заполняет значения по умолчанию для параметров, // Вспомогательная процедура для функции ВыполнитьРассылку - заполняет значения по умолчанию для параметров,
// которые не были переданы явно. // которые не были переданы явно.
// Также подготавливает и заполняет параметры, необходимые для рассылки. // Также подготавливает и заполняет параметры, необходимые для рассылки.
// //
// Параметры и возвращаемое значение: // Параметры и возвращаемое значение:
// См. ВыполнитьРассылку(). // См. ВыполнитьРассылку.
// //
Функция ПроверитьИДозаполнитьПараметрыВыполнения(ТаблицаОтчетов, ПараметрыДоставки, НаименованиеРассылки, ПараметрыЖурнала) Функция ПроверитьИДозаполнитьПараметрыВыполнения(ТаблицаОтчетов, ПараметрыДоставки, НаименованиеРассылки, ПараметрыЖурнала)
// Параметры записи в журнал регистрации. // Параметры записи в журнал регистрации.
@@ -2387,7 +2384,7 @@
// Возвращает шаблон темы по умолчанию для доставки по электронной почте. // Возвращает шаблон темы по умолчанию для доставки по электронной почте.
Функция ШаблонТемы() Экспорт Функция ШаблонТемы() Экспорт
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 от %2'"), "[НаименованиеРассылки]", "[ДатаВыполнения(ДЛФ=''D'')]"); НСтр("ru = '%1 от %2'"), "[НаименованиеРассылки]", "[ДатаВыполнения(ДЛФ='D')]");
КонецФункции КонецФункции
// Возвращает шаблон тела сообщения по умолчанию для доставки по электронной почте. // Возвращает шаблон тела сообщения по умолчанию для доставки по электронной почте.
@@ -8,51 +8,50 @@
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
// Заполняет шаблон из структуры параметров, поддерживает форматирование, может оставлять обрамление шаблона. // Подставляет в шаблон переданные параметры.
// Ограничение: должны присутствовать и левый и правый элементы обрамления.
// //
// Параметры: // Параметры:
// Шаблон - Строка - исходный шаблон. Например "Добрый день, [ФИО]". // Шаблон - Строка - исходный шаблон. Например "Добрый день, [ФИО]".
// Параметры - Структура - набор параметров, которые необходимо подставить в шаблон: // Параметры - Структура:
// * Ключ - имя параметра. Например "ФИО". // * Ключ - Строка - имя параметра. Например "ФИО".
// * Значение - строка подстановки. Например "Иванов Иван Иванович". // * Значение - Произвольный - строка подстановки. Например "Иванов Иван Иванович".
// //
// Возвращаемое значение: // Возвращаемое значение:
// Строка - шаблон с заполненными параметрами. // Строка
// //
Функция ЗаполнитьШаблон(Шаблон, Параметры) Экспорт Функция ЗаполнитьШаблон(Шаблон, Параметры) Экспорт
Левый = "["; // Начало обрамления параметра. НачалоПараметра = "[";
Правый = "]"; // Конец обрамления параметра. КонецПараметра = "]";
ФорматЛевый = "("; // Начало обрамления формата. НачалоФормата = "(";
ФорматПравый = ")"; // Конец обрамления формата. КонецФормата = ")";
ВырезатьОбрамление = Истина; // Истина означает, что обрамление параметра будет убрано из результата. ВырезатьОбрамление = Истина; // отладочный параметр
Результат = Шаблон; Результат = Шаблон;
Для Каждого КлючИЗначение Из Параметры Цикл Для Каждого КлючИЗначение Из Параметры Цикл
// Замена "[ключ]" на "значение". // Замена "[ключ]" на "значение".
Результат = СтрЗаменить( Результат = СтрЗаменить(
Результат, Результат,
Левый + КлючИЗначение.Ключ + Правый, НачалоПараметра + КлючИЗначение.Ключ + КонецПараметра,
?(ВырезатьОбрамление, "", Левый) + КлючИЗначение.Значение + ?(ВырезатьОбрамление, "", Правый)); ?(ВырезатьОбрамление, "", НачалоПараметра) + КлючИЗначение.Значение + ?(ВырезатьОбрамление, "", КонецПараметра));
ДлинаФорматЛевый = СтрДлина(Левый + КлючИЗначение.Ключ + ФорматЛевый); ДлинаФорматЛевый = СтрДлина(НачалоПараметра + КлючИЗначение.Ключ + НачалоФормата);
// Замена "[ключ(формат)]" на "значение в формате". // Замена "[ключ(формат)]" на "значение в формате".
Поз1 = СтрНайти(Результат, Левый + КлючИЗначение.Ключ + ФорматЛевый); Позиция1 = СтрНайти(Результат, НачалоПараметра + КлючИЗначение.Ключ + НачалоФормата);
Пока Поз1 > 0 Цикл Пока Позиция1 > 0 Цикл
Поз2 = СтрНайти(Результат, ФорматПравый + Правый); Позиция2 = СтрНайти(Результат, КонецФормата + КонецПараметра);
Если Поз2 = 0 Тогда Если Позиция2 = 0 Тогда
Прервать; Прервать;
КонецЕсли; КонецЕсли;
ФорматнаяСтрока = Сред(Результат, Поз1 + ДлинаФорматЛевый, Поз2 - Поз1 - ДлинаФорматЛевый); ФорматнаяСтрока = Сред(Результат, Позиция1 + ДлинаФорматЛевый, Позиция2 - Позиция1 - ДлинаФорматЛевый);
Попытка Попытка
НаЧтоЗаменить = ?(ВырезатьОбрамление, "", Левый) + Формат(КлючИЗначение.Значение, ФорматнаяСтрока) + ?(ВырезатьОбрамление, "", Правый); НаЧтоЗаменить = ?(ВырезатьОбрамление, "", НачалоПараметра) + Формат(КлючИЗначение.Значение, ФорматнаяСтрока) + ?(ВырезатьОбрамление, "", КонецПараметра);
Исключение Исключение
НаЧтоЗаменить = ?(ВырезатьОбрамление, "", Левый) + КлючИЗначение.Значение + ?(ВырезатьОбрамление, "", Правый); НаЧтоЗаменить = ?(ВырезатьОбрамление, "", НачалоПараметра) + КлючИЗначение.Значение + ?(ВырезатьОбрамление, "", КонецПараметра);
КонецПопытки; КонецПопытки;
Результат = СтрЗаменить( Результат = СтрЗаменить(
Результат, Результат,
Левый + КлючИЗначение.Ключ + ФорматЛевый + ФорматнаяСтрока + ФорматПравый + Правый, НачалоПараметра + КлючИЗначение.Ключ + НачалоФормата + ФорматнаяСтрока + КонецФормата + КонецПараметра,
НаЧтоЗаменить); НаЧтоЗаменить);
Поз1 = СтрНайти(Результат, Левый + КлючИЗначение.Ключ + ФорматЛевый); Позиция1 = СтрНайти(Результат, НачалоПараметра + КлючИЗначение.Ключ + НачалоФормата);
КонецЦикла; КонецЦикла;
КонецЦикла; КонецЦикла;
Возврат Результат; Возврат Результат;
@@ -61,10 +60,10 @@
// Формирует представление способов доставки в соответствии с параметрами доставки. // Формирует представление способов доставки в соответствии с параметрами доставки.
// //
// Параметры: // Параметры:
// ПараметрыДоставки - см. ВыполнитьРассылку(), параметр ПараметрыДоставки. // ПараметрыДоставки - см. ВыполнитьРассылку.ПараметрыДоставки.
// //
// Возвращаемое значение: // Возвращаемое значение:
// Строка - представление способов доставки. // Строка
// //
Функция ПредставлениеСпособовДоставки(ПараметрыДоставки) Экспорт Функция ПредставлениеСпособовДоставки(ПараметрыДоставки) Экспорт
Префикс = НСтр("ru = 'Результат'"); Префикс = НСтр("ru = 'Результат'");
@@ -6,7 +6,7 @@
// https://creativecommons.org/licenses/by/4.0/legalcode // https://creativecommons.org/licenses/by/4.0/legalcode
/////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс #Область СлужебныеПроцедурыИФункции
// Выполняет обработчик ожидания старта автоматического резервного копирования // Выполняет обработчик ожидания старта автоматического резервного копирования
// в процессе работы пользователя, а также повторного оповещения после игнорировании первоначального. // в процессе работы пользователя, а также повторного оповещения после игнорировании первоначального.
@@ -19,6 +19,7 @@
// //
// * ИмяМодуляОтправки - Строка - имя серверного общего модуля, например, "СоединенияИБ", // * ИмяМодуляОтправки - Строка - имя серверного общего модуля, например, "СоединенияИБ",
// содержащего экспортную процедуру ПриОтправкеСерверногоОповещения. // содержащего экспортную процедуру ПриОтправкеСерверногоОповещения.
// Вызов процедуры выполняется в привилегированном режиме.
// Смотри пример в общем модуле СтандартныеПодсистемыСервер. // Смотри пример в общем модуле СтандартныеПодсистемыСервер.
// Может быть не заполнено. В этом случае вызываться не будет, // Может быть не заполнено. В этом случае вызываться не будет,
// например, используется для отправки сообщений об изменении // например, используется для отправки сообщений об изменении
@@ -423,7 +424,8 @@
Если ТипЗнч(Содержимое.Адресаты) = Тип("Соответствие") Тогда Если ТипЗнч(Содержимое.Адресаты) = Тип("Соответствие") Тогда
КлючиСеансов = Содержимое.Адресаты.Получить(ИдентификаторПользователяИБ); КлючиСеансов = Содержимое.Адресаты.Получить(ИдентификаторПользователяИБ);
Если ТипЗнч(КлючиСеансов) <> Тип("Массив") Если ТипЗнч(КлючиСеансов) <> Тип("Массив")
Или КлючиСеансов.Найти(КлючЭтогоСеанса) = Неопределено Тогда Или КлючиСеансов.Найти(КлючЭтогоСеанса) = Неопределено
И КлючиСеансов.Найти("*") = Неопределено Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -447,8 +447,9 @@
Если Данные.ИмяОповещения <> "НетСерверныхОповещений" Тогда Если Данные.ИмяОповещения <> "НетСерверныхОповещений" Тогда
Если Данные.Адресаты <> Неопределено Тогда Если Данные.Адресаты <> Неопределено Тогда
КлючиСеансов = Данные.Адресаты.Получить(СостояниеПолучения.ИдентификаторПользователяИБ); КлючиСеансов = Данные.Адресаты.Получить(СостояниеПолучения.ИдентификаторПользователяИБ);
Если КлючиСеансов <> Неопределено Если ТипЗнч(КлючиСеансов) <> Тип("Массив")
И КлючиСеансов.Найти(СостояниеПолучения.КлючСеанса) = Неопределено Тогда Или КлючиСеансов.Найти(СостояниеПолучения.КлючСеанса) = Неопределено
И КлючиСеансов.Найти("*") = Неопределено Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -61,4 +61,11 @@
Пояснение, БиблиотекаКартинок.ЗавершитьРаботу, СтатусОповещенияПользователя.Важное); Пояснение, БиблиотекаКартинок.ЗавершитьРаботу, СтатусОповещенияПользователя.Важное);
КонецПроцедуры КонецПроцедуры
Процедура ОбновитьИнтерфейсПриИзмененииФункциональныхОпций() Экспорт
ОбновитьПовторноИспользуемыеЗначения();
ОбновитьИнтерфейс();
КонецПроцедуры
#КонецОбласти #КонецОбласти
@@ -558,6 +558,13 @@
Результат, БиблиотекаКартинок.Предупреждение32, Результат, БиблиотекаКартинок.Предупреждение32,
СтатусОповещенияПользователя.Важное, СтатусОповещенияПользователя.Важное,
"УстановленоОбновлениеПрограммы"); "УстановленоОбновлениеПрограммы");
ИначеЕсли ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.ФункциональныеОпцииИзменены" Тогда
ОтключитьОбработчикОжидания("ОбновитьИнтерфейсПриИзмененииФункциональныхОпций");
ПодключитьОбработчикОжидания("ОбновитьИнтерфейсПриИзмененииФункциональныхОпций", 5*60, Истина);
ИначеЕсли ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.ПовторноИспользуемыеЗначенияУстарели" Тогда
ОбновитьПовторноИспользуемыеЗначения();
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -58,6 +58,11 @@
Возврат УстановленныеПараметры; Возврат УстановленныеПараметры;
КонецЕсли; КонецЕсли;
Если Справочники.ИдентификаторыОбъектовМетаданных.ВсеПараметрыСеансаУстановлены(
ИменаПараметровСеанса, УстановленныеПараметры) Тогда
Возврат УстановленныеПараметры;
КонецЕсли;
Если ИменаПараметровСеанса.Найти("КлючДанныхПовторногоИспользования") <> Неопределено Тогда Если ИменаПараметровСеанса.Найти("КлючДанныхПовторногоИспользования") <> Неопределено Тогда
ПараметрыСеанса.КлючДанныхПовторногоИспользования = Новый УникальныйИдентификатор; ПараметрыСеанса.КлючДанныхПовторногоИспользования = Новый УникальныйИдентификатор;
УстановленныеПараметры.Добавить("КлючДанныхПовторногоИспользования"); УстановленныеПараметры.Добавить("КлючДанныхПовторногоИспользования");
@@ -512,7 +517,7 @@
// Вызывается из регламентного задания для отправки серверного оповещения клиентским сеансам. // Вызывается из регламентного задания для отправки серверного оповещения клиентским сеансам.
// Смотри также СтандартныеПодсистемыКлиент.ПриПолученииСерверногоОповещения. // Смотри также СтандартныеПодсистемыКлиент.ПриПолученииСерверногоОповещения.
// //
// Вызов выполняется с учетом истечения периода, указанного для оповещения. // Вызов выполняется в привилегированном режиме с учетом истечения периода, указанного для оповещения.
// Смотри ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений. // Смотри ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений.
// //
// Параметры: // Параметры:
@@ -537,6 +542,9 @@
Если ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.ИзмененаКонфигурацияИлиРасширения" Тогда Если ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.ИзмененаКонфигурацияИлиРасширения" Тогда
ПриОтправкеСерверногоОповещенияИзмененаКонфигурацияИлиРасширения(ИмяОповещения, ВариантыПараметров); ПриОтправкеСерверногоОповещенияИзмененаКонфигурацияИлиРасширения(ИмяОповещения, ВариантыПараметров);
ИначеЕсли ИмяОповещения = "СтандартныеПодсистемы.БазоваяФункциональность.ФункциональныеОпцииИзменены" Тогда
ПриОтправкеСерверногоОповещенияФункциональныеОпцииИзменены(ИмяОповещения, ВариантыПараметров);
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -547,6 +555,21 @@
#Область СлужебныйПрограммныйИнтерфейс #Область СлужебныйПрограммныйИнтерфейс
// Отправляет оповещение всем сеансам об устаревании повторно используемых значений.
//
// Параметры:
// ОтправитьСразу - см. СерверныеОповещения.ОтправитьСерверноеОповещение.ОтправитьСразу
//
Процедура ОповеститьВсеСеансыОбУстареванииПовторноИспользуемыхЗначений(ОтправитьСразу = Ложь) Экспорт
СерверныеОповещения.ОтправитьСерверноеОповещение(
"СтандартныеПодсистемы.БазоваяФункциональность.ПовторноИспользуемыеЗначенияУстарели",
"",
Неопределено,
ОтправитьСразу);
КонецПроцедуры
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Дополнительная базовая функциональность для анализа параметров клиента на сервере. // Дополнительная базовая функциональность для анализа параметров клиента на сервере.
@@ -1845,6 +1868,7 @@
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений // См. ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений
Процедура ПриДобавленииСерверныхОповещений(Оповещения) Экспорт Процедура ПриДобавленииСерверныхОповещений(Оповещения) Экспорт
// ИзмененаКонфигурацияИлиРасширения
Оповещение = СерверныеОповещения.НовоеСерверноеОповещение( Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(
"СтандартныеПодсистемы.БазоваяФункциональность.ИзмененаКонфигурацияИлиРасширения"); "СтандартныеПодсистемы.БазоваяФункциональность.ИзмененаКонфигурацияИлиРасширения");
@@ -1854,6 +1878,23 @@
Оповещения.Вставить(Оповещение.Имя, Оповещение); Оповещения.Вставить(Оповещение.Имя, Оповещение);
// ФункциональныеОпцииИзменены
Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(
"СтандартныеПодсистемы.БазоваяФункциональность.ФункциональныеОпцииИзменены");
Оповещение.ИмяМодуляОтправки = "СтандартныеПодсистемыСервер";
Оповещение.ИмяМодуляПолучения = "СтандартныеПодсистемыКлиент";
Оповещения.Вставить(Оповещение.Имя, Оповещение);
// ПовторноИспользуемыеЗначенияУстарели
Оповещение = СерверныеОповещения.НовоеСерверноеОповещение(
"СтандартныеПодсистемы.БазоваяФункциональность.ПовторноИспользуемыеЗначенияУстарели");
Оповещение.ИмяМодуляПолучения = "СтандартныеПодсистемыКлиент";
Оповещения.Вставить(Оповещение.Имя, Оповещение);
КонецПроцедуры КонецПроцедуры
// См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриЗаполненииТиповОбщихДанныхПоддерживающихСопоставлениеСсылокПриЗагрузке. // См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриЗаполненииТиповОбщихДанныхПоддерживающихСопоставлениеСсылокПриЗагрузке.
@@ -3997,6 +4038,146 @@
КонецПроцедуры КонецПроцедуры
// См. ПриОтправкеСерверногоОповещения
Процедура ПриОтправкеСерверногоОповещенияФункциональныеОпцииИзменены(ИмяОповещения, ВариантыПараметров)
ИмяПараметра = "СтандартныеПодсистемы.БазоваяФункциональность.ВключенныеФункциональныеОпции";
СтароеЗначение = ПараметрРаботыРасширения(ИмяПараметра, Истина);
НовыйСоставТипов = Новый Массив;
ФункциональныеОпцииПоТипам = Новый Соответствие;
Для Каждого ФункциональнаяОпция Из Метаданные.ФункциональныеОпции Цикл
ОбъектХранения = ФункциональнаяОпция.Хранение;
Если Не Метаданные.Константы.Содержит(ОбъектХранения) Тогда
Продолжить;
КонецЕсли;
Тип = Тип("КонстантаМенеджер." + ОбъектХранения.Имя);
ФункциональныеОпцииПоТипам.Вставить(Тип, ФункциональнаяОпция);
Если ПолучитьФункциональнуюОпцию(ФункциональнаяОпция.Имя) = Истина Тогда
НовыйСоставТипов.Добавить(Тип);
КонецЕсли;
КонецЦикла;
НовоеЗначение = Новый ОписаниеТипов(НовыйСоставТипов);
Если СтароеЗначение = НовоеЗначение Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(СтароеЗначение) = Тип("ОписаниеТипов") Тогда
СоставИзмененийТипов = Новый Соответствие;
Для Каждого Тип Из НовоеЗначение.Типы() Цикл
СоставИзмененийТипов.Вставить(Тип, Истина);
КонецЦикла;
Для Каждого Тип Из СтароеЗначение.Типы() Цикл
Если СоставИзмененийТипов.Получить(Тип) = Неопределено Тогда
СоставИзмененийТипов.Вставить(Тип, Истина);
Иначе
СоставИзмененийТипов.Удалить(Тип);
КонецЕсли;
КонецЦикла;
Объекты = Новый Соответствие;
Для Каждого КлючИЗначение Из СоставИзмененийТипов Цикл
ФункциональнаяОпция = ФункциональныеОпцииПоТипам.Получить(КлючИЗначение.Ключ);
Если ФункциональнаяОпция = Неопределено Тогда
Продолжить;
КонецЕсли;
ДобавитьОбъектыФункциональнойОпции(Объекты, ФункциональнаяОпция);
КонецЦикла;
Адресаты = Новый Соответствие;
Для Каждого ВариантПараметров Из ВариантыПараметров Цикл
Для Каждого Адресат Из ВариантПараметров.Адресаты Цикл
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Адресат.Ключ);
Если ПользовательИБ = Неопределено Тогда
Продолжить;
КонецЕсли;
Для Каждого КлючИЗначение Из Объекты Цикл
Если ПравоДоступа(КлючИЗначение.Значение, КлючИЗначение.Ключ, ПользовательИБ) Тогда
Адресаты.Вставить(Адресат.Ключ, Адресат.Значение);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Если ЗначениеЗаполнено(Адресаты) Тогда
СерверныеОповещения.ОтправитьСерверноеОповещение(ИмяОповещения, "", Адресаты);
КонецЕсли;
КонецЕсли;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ПараметрыРаботыВерсийРасширений");
ЭлементБлокировки.УстановитьЗначение("ВерсияРасширений", Справочники.ВерсииРасширений.ПустаяСсылка());
ЭлементБлокировки.УстановитьЗначение("ИмяПараметра", ИмяПараметра);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
СтароеЗначение = ПараметрРаботыРасширения(ИмяПараметра, Истина);
Если СтароеЗначение <> НовоеЗначение Тогда
УстановитьПараметрРаботыРасширения(ИмяПараметра, НовоеЗначение, Истина);
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Процедура ДобавитьОбъектыФункциональнойОпции(Объекты, ФункциональнаяОпция)
ИменаБазовыхТипов =
"
|Подсистема
|ОбщийРеквизит
|ПланОбмена
|КритерийОтбора
|ОбщаяФорма
|ОбщаяКоманда
|Константа
|Справочник
|Документ
|ЖурналДокументов
|Отчет
|Обработка
|ПланВидовХарактеристик
|ПланСчетов
|ПланВидовРасчета
|РегистрСведений
|РегистрНакопления
|РегистрБухгалтерии
|РегистрРасчета
|БизнесПроцесс
|Задача
|";
Для Каждого ЭлементСостава Из ФункциональнаяОпция.Состав Цикл
Объект = ЭлементСостава.Объект;
Если Объекты.Получить(Объект) <> Неопределено Тогда
Продолжить;
КонецЕсли;
ЧастиИмени = СтрРазделить(Объект.ПолноеИмя(), ".", Ложь);
Если ЧастиИмени.Количество() < 2 Тогда
Продолжить;
КонецЕсли;
ИмяБазовогоТипа = ЧастиИмени[0];
Если СтрНайти(ИменаБазовыхТипов, Символы.ПС + ИмяБазовогоТипа + Символы.ПС) = 0 Тогда
Продолжить;
КонецЕсли;
Если ЧастиИмени.Количество() > 2 Тогда
Если ИмяБазовогоТипа <> "Подсистема" Тогда
Объект = ОбщегоНазначения.ОбъектМетаданныхПоПолномуИмени(ЧастиИмени[0] + "." + ЧастиИмени[1]);
Если Объект = Неопределено
Или Объекты.Получить(Объект) <> Неопределено Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Объекты.Вставить(Объект, "Просмотр");
КонецЦикла;
КонецПроцедуры
// Многоязычные конфигурации // Многоязычные конфигурации
Функция ТребуетсяУстановкаРегиональныхНастроекИнформационнойБазы() Экспорт Функция ТребуетсяУстановкаРегиональныхНастроекИнформационнойБазы() Экспорт
@@ -2130,6 +2130,13 @@
// Параметр "СтандартныеПодсистемы.УправлениеДоступом.ПраваРолей". // Параметр "СтандартныеПодсистемы.УправлениеДоступом.ПраваРолей".
ОбновитьТаблицыГруппДоступаДляПодключенныхРасширений(); ОбновитьТаблицыГруппДоступаДляПодключенныхРасширений();
Если РегистрыСведений.ПараметрыРаботыПрограммы.НеобходимоОбновление() Тогда
// Обновление выполняется в процедуре
// ОбновитьВспомогательныеДанныеПоИзменениямКонфигурации
// или ПриНастройкеПодчиненногоУзлаРИБ.
Возврат;
КонецЕсли;
// Параметр "СтандартныеПодсистемы.УправлениеДоступом.СвойстваВидовДоступа". // Параметр "СтандартныеПодсистемы.УправлениеДоступом.СвойстваВидовДоступа".
ОбновитьГруппыИНаборыЗначенийДоступаПриИзмененииТиповГруппИЗначений(); ОбновитьГруппыИНаборыЗначенийДоступаПриИзмененииТиповГруппИЗначений();
@@ -7593,7 +7600,7 @@
СтароеЗначение = СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ИмяПараметра, Истина); СтароеЗначение = СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ИмяПараметра, Истина);
СтароеЗначение = НовыеХешСуммыСвойствВидовДоступа(СтароеЗначение); СтароеЗначение = НовыеХешСуммыСвойствВидовДоступа(СтароеЗначение);
Если СтароеЗначение.ХешСуммаТиповГруппИЗначенийДоступа Если СтароеЗначение.ХешСуммаТиповГруппИЗначенийДоступа
= НовоеЗначение.ХешСуммаТиповГруппИЗначенийДоступа Тогда <> НовоеЗначение.ХешСуммаТиповГруппИЗначенийДоступа Тогда
Если ЗначениеЗаполнено(СтароеЗначение.ХешСуммаТиповГруппИЗначенийДоступа) Тогда // Не первое обновление. Если ЗначениеЗаполнено(СтароеЗначение.ХешСуммаТиповГруппИЗначенийДоступа) Тогда // Не первое обновление.
ПроверитьАктуальностьМетаданных(); ПроверитьАктуальностьМетаданных();
КонецЕсли; КонецЕсли;
@@ -11503,13 +11510,39 @@
// Для процедуры УстановитьОбновлениеДоступа. // Для процедуры УстановитьОбновлениеДоступа.
Процедура ИзменитьРегламентноеЗаданиеОбновленияДоступа(ВключитьЗадание) Процедура ИзменитьРегламентноеЗаданиеОбновленияДоступа(ВключитьЗадание)
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("Константа.КоличествоПотоковОбновленияДоступа");
Отбор = Новый Структура("Метаданные", Метаданные.РегламентныеЗадания.ОбновлениеДоступаНаУровнеЗаписей); Отбор = Новый Структура("Метаданные", Метаданные.РегламентныеЗадания.ОбновлениеДоступаНаУровнеЗаписей);
ТребуетсяИзменить = Ложь;
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
ТребуетсяИзменить = Истина;
Иначе
УстановитьПривилегированныйРежим(Истина);
Задания = РегламентныеЗаданияСервер.НайтиЗадания(Отбор);
Для Каждого Задание Из Задания Цикл
Если ВключитьЗадание <> Задание.Использование Тогда
ТребуетсяИзменить = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Если Не ТребуетсяИзменить Тогда
Возврат;
КонецЕсли;
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("Константа.КоличествоПотоковОбновленияДоступа");
ЭтоОшибкаБлокировки = Ложь;
НомерПопыткиБлокировки = 0;
Пока Истина Цикл
НомерПопыткиБлокировки = НомерПопыткиБлокировки + 1;
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
ЭтоОшибкаБлокировки = Истина;
Блокировка.Заблокировать(); Блокировка.Заблокировать();
ЭтоОшибкаБлокировки = Ложь;
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
Задания = РегламентныеЗаданияСервер.НайтиЗадания(Отбор); Задания = РегламентныеЗаданияСервер.НайтиЗадания(Отбор);
Для Каждого Задание Из Задания Цикл Для Каждого Задание Из Задания Цикл
@@ -11523,8 +11556,15 @@
ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию();
Исключение Исключение
ОтменитьТранзакцию(); ОтменитьТранзакцию();
Если ЭтоОшибкаБлокировки
И НомерПопыткиБлокировки <= 3
И Не ТранзакцияАктивна() Тогда
Продолжить;
КонецЕсли;
ВызватьИсключение; ВызватьИсключение;
КонецПопытки; КонецПопытки;
Прервать;
КонецЦикла;
КонецПроцедуры КонецПроцедуры
@@ -21027,19 +21067,19 @@
КонецПроцедуры КонецПроцедуры
// Для функций ПраваНаКлючДоступаСписка и РассчитанноеУсловие. // Для функций ПраваНаКлючДоступаСписка и РассчитанноеУсловие.
Функция РассчитанноеУсловиеДляСтрок(Контекст, Условие, УзелРеквизитов = Неопределено, ДляЛюбойИзСтрок = Истина) Функция РассчитанноеУсловиеДляСтрок(Контекст, Условие, УзелРеквизитов = Неопределено, ДляЛюбойИзСтрок = Истина, КорневойУзел = Истина)
Если УзелРеквизитов = Неопределено Тогда Если УзелРеквизитов = Неопределено Тогда
Контекст.Вставить("ОписанияТребуемыхТаблицКлюча", Новый Массив); Контекст.Вставить("ОписанияТребуемыхТаблицКлюча", Новый Массив);
Если Условие.Узел = "ДляВсехСтрок" Или Условие.Узел = "ДляОднойИзСтрок" Тогда Если Условие.Узел = "ДляВсехСтрок" Или Условие.Узел = "ДляОднойИзСтрок" Тогда
Возврат РассчитанноеУсловие(Контекст, Условие); Возврат РассчитанноеУсловие(Контекст, Условие, КорневойУзел);
КонецЕсли; КонецЕсли;
УзелРеквизитов = Условие; УзелРеквизитов = Условие;
КонецЕсли; КонецЕсли;
Если Не ЗначениеЗаполнено(УзелРеквизитов.ТребуемыеРеквизитыТабличныхЧастейКлюча) Тогда Если Не ЗначениеЗаполнено(УзелРеквизитов.ТребуемыеРеквизитыТабличныхЧастейКлюча) Тогда
Контекст.Вставить("ТекущиеСтрокиТаблицКлюча", Контекст.ЗначенияТаблицКлюча); Контекст.Вставить("ТекущиеСтрокиТаблицКлюча", Контекст.ЗначенияТаблицКлюча);
Возврат РассчитанноеУсловие(Контекст, Условие); Возврат РассчитанноеУсловие(Контекст, Условие, КорневойУзел);
КонецЕсли; КонецЕсли;
РеквизитыТаблиц = УзелРеквизитов.ТребуемыеРеквизитыТабличныхЧастейКлюча; РеквизитыТаблиц = УзелРеквизитов.ТребуемыеРеквизитыТабличныхЧастейКлюча;
ЗначенияТаблиц = ТекущиеЗначенияТаблицКлюча(Контекст, РеквизитыТаблиц); ЗначенияТаблиц = ТекущиеЗначенияТаблицКлюча(Контекст, РеквизитыТаблиц);
@@ -21089,18 +21129,26 @@
Результат = "Истина"; Результат = "Истина";
Прервать; Прервать;
ИначеЕсли ТекущийРезультат = "Ложь" Тогда ИначеЕсли ТекущийРезультат = "Ложь" Тогда
Если Результат = "Неопределено" Тогда Если Результат = "Неопределено" Или Результат = "Пусто" Тогда
Результат = "Ложь"; Результат = "Ложь";
КонецЕсли; КонецЕсли;
ИначеЕсли ТекущийРезультат = "Пусто" Тогда
Если Результат = "Неопределено" Тогда
Результат = "Пусто";
КонецЕсли;
КонецЕсли; КонецЕсли;
Иначе Иначе
Если ТекущийРезультат = "Ложь" Тогда Если ТекущийРезультат = "Ложь" Тогда
Результат = "Ложь"; Результат = "Ложь";
Прервать; Прервать;
ИначеЕсли ТекущийРезультат = "Истина" Тогда ИначеЕсли ТекущийРезультат = "Истина" Тогда
Если Результат = "Неопределено" Тогда Если Результат = "Неопределено" Или Результат = "Пусто" Тогда
Результат = "Истина"; Результат = "Истина";
КонецЕсли; КонецЕсли;
ИначеЕсли ТекущийРезультат = "Пусто" Тогда
Если Результат = "Неопределено" Тогда
Результат = "Пусто";
КонецЕсли;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Иначе Иначе
@@ -21118,6 +21166,8 @@
Если Результат = "Неопределено" Тогда Если Результат = "Неопределено" Тогда
Результат = "Ложь"; Результат = "Ложь";
ИначеЕсли КорневойУзел И Результат = "Пусто" Тогда
Результат = "Истина";
КонецЕсли; КонецЕсли;
Контекст.ОписанияТребуемыхТаблицКлюча.Удалить( Контекст.ОписанияТребуемыхТаблицКлюча.Удалить(
@@ -21303,7 +21353,7 @@
КонецФункции КонецФункции
// Для функции РассчитанноеУсловиеДляСтрок. // Для функции РассчитанноеУсловиеДляСтрок.
Функция РассчитанноеУсловие(Контекст, Условие) Функция РассчитанноеУсловие(Контекст, Условие, КорневойУзел = Ложь)
// Проверяемые типы уже учтены. // Проверяемые типы уже учтены.
@@ -21313,7 +21363,8 @@
Или Значение = Null И Условие.Свойство("ПроверкаЕстьNull"), "Истина", "Ложь"); Или Значение = Null И Условие.Свойство("ПроверкаЕстьNull"), "Истина", "Ложь");
ИначеЕсли Условие.Узел = "Константа" Тогда ИначеЕсли Условие.Узел = "Константа" Тогда
Результат = ?(Условие.Значение = Истина, "Истина", "Ложь"); Результат = ?(Условие.Значение = Истина, "Истина",
?(Условие.Значение = "Пусто", "Пусто", "Ложь"));
ИначеЕсли Условие.Узел = "И" Тогда ИначеЕсли Условие.Узел = "И" Тогда
@@ -21325,9 +21376,13 @@
Прервать; Прервать;
КонецЕсли; КонецЕсли;
Если ТекущийРезультат = "Истина" Тогда Если ТекущийРезультат = "Истина" Тогда
Если Результат = "Неопределено" Тогда Если Результат = "Неопределено" Или Результат = "Пусто" Тогда
Результат = "Истина"; Результат = "Истина";
КонецЕсли; КонецЕсли;
ИначеЕсли ТекущийРезультат = "Пусто" Тогда
Если Результат = "Неопределено" Тогда
Результат = "Пусто";
КонецЕсли;
ИначеЕсли ТипЗнч(ТекущийРезультат) = Тип("Соответствие") Тогда ИначеЕсли ТипЗнч(ТекущийРезультат) = Тип("Соответствие") Тогда
Если ТекущийРезультат.Количество() = 0 Тогда Если ТекущийРезультат.Количество() = 0 Тогда
Результат = "Ложь"; Результат = "Ложь";
@@ -21354,9 +21409,13 @@
Прервать; Прервать;
КонецЕсли; КонецЕсли;
Если ТекущийРезультат = "Ложь" Тогда Если ТекущийРезультат = "Ложь" Тогда
Если Результат = "Неопределено" Тогда Если Результат = "Неопределено" Или Результат = "Пусто" Тогда
Результат = "Ложь"; Результат = "Ложь";
КонецЕсли; КонецЕсли;
ИначеЕсли ТекущийРезультат = "Пусто" Тогда
Если Результат = "Неопределено" Тогда
Результат = "Пусто";
КонецЕсли;
ИначеЕсли ТипЗнч(ТекущийРезультат) = Тип("Соответствие") Тогда ИначеЕсли ТипЗнч(ТекущийРезультат) = Тип("Соответствие") Тогда
Если ТекущийРезультат.Количество() = 0 Тогда Если ТекущийРезультат.Количество() = 0 Тогда
Если Результат = "Неопределено" Тогда Если Результат = "Неопределено" Тогда
@@ -21391,7 +21450,7 @@
Или Условие.Узел = "ДляОднойИзСтрок" Тогда Или Условие.Узел = "ДляОднойИзСтрок" Тогда
Результат = РассчитанноеУсловиеДляСтрок(Контекст, Результат = РассчитанноеУсловиеДляСтрок(Контекст,
Условие.Аргумент, Условие, Условие.Узел = "ДляОднойИзСтрок"); Условие.Аргумент, Условие, Условие.Узел = "ДляОднойИзСтрок", Ложь);
ИначеЕсли Условие.Узел = "Выбор" Тогда ИначеЕсли Условие.Узел = "Выбор" Тогда
Результат = Неопределено; Результат = Неопределено;
@@ -21416,12 +21475,21 @@
Если Значение = Null Тогда Если Значение = Null Тогда
Значение = Перечисления.ДополнительныеЗначенияДоступа.Null; Значение = Перечисления.ДополнительныеЗначенияДоступа.Null;
КонецЕсли; КонецЕсли;
ОтключеноКакЛожь = Условие.УточненияСравнения.Получить("Отключено") = "Ложь";
Если Значение = Перечисления.ДополнительныеЗначенияДоступа.ТипРазрешенный Тогда Если Значение = Перечисления.ДополнительныеЗначенияДоступа.ТипРазрешенный Тогда
Если ОтключеноКакЛожь Тогда
ТекущийРезультат = "Пусто";
Иначе
ТекущийРезультат = "Истина"; ТекущийРезультат = "Истина";
КонецЕсли;
ИначеЕсли Значение = Перечисления.ДополнительныеЗначенияДоступа.ТипЗапрещенный Тогда ИначеЕсли Значение = Перечисления.ДополнительныеЗначенияДоступа.ТипЗапрещенный Тогда
Если ОтключеноКакЛожь Тогда
ТекущийРезультат = "Пусто";
Иначе
ТекущийРезультат = "Ложь"; ТекущийРезультат = "Ложь";
КонецЕсли;
Иначе Иначе
ТекущийРезультат = Неопределено; ТекущийРезультат = Неопределено;
Для Каждого УточнениеСравнения Из Условие.УточненияСравнения Цикл Для Каждого УточнениеСравнения Из Условие.УточненияСравнения Цикл
@@ -21450,7 +21518,11 @@
ИначеЕсли Условие.Узел = "ЗначениеРазрешено" Тогда ИначеЕсли Условие.Узел = "ЗначениеРазрешено" Тогда
Если Значение = Перечисления.ДополнительныеЗначенияДоступа.Null Если Значение = Перечисления.ДополнительныеЗначенияДоступа.Null
Или Значение = Перечисления.ДополнительныеЗначенияДоступа.Неопределено Тогда Или Значение = Перечисления.ДополнительныеЗначенияДоступа.Неопределено Тогда
Если ОтключеноКакЛожь Тогда
Результат = "Пусто";
Иначе
Результат = "Ложь"; Результат = "Ложь";
КонецЕсли;
Иначе Иначе
Если Контекст.ЗначенияГруппыДоступа = Неопределено Тогда Если Контекст.ЗначенияГруппыДоступа = Неопределено Тогда
ЗначенияОдногоТипа = Неопределено; ЗначенияОдногоТипа = Неопределено;
@@ -21459,8 +21531,8 @@
ЗначенияОдногоТипа = Контекст.ЗначенияГруппыДоступа.Получить(ТипЗначения); ЗначенияОдногоТипа = Контекст.ЗначенияГруппыДоступа.Получить(ТипЗначения);
КонецЕсли; КонецЕсли;
Если ЗначенияОдногоТипа = Неопределено Тогда Если ЗначенияОдногоТипа = Неопределено Тогда
Если Условие.УточненияСравнения.Получить("Отключено") = "Ложь" Тогда Если ОтключеноКакЛожь Тогда
Результат = "Ложь"; Результат = "Пусто";
Иначе Иначе
Результат = "Истина"; Результат = "Истина";
КонецЕсли; КонецЕсли;
@@ -21619,6 +21691,10 @@
ВызватьИсключение ТекстОшибки; ВызватьИсключение ТекстОшибки;
КонецЕсли; КонецЕсли;
Если КорневойУзел И Результат = "Пусто" Тогда
Результат = "Истина";
КонецЕсли;
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
@@ -23894,6 +23970,7 @@
Или Результат.ИспользуетсяОграничениеПоВладельцу Тогда Или Результат.ИспользуетсяОграничениеПоВладельцу Тогда
Если Результат.ИспользуетсяОграничениеПоВладельцу Если Результат.ИспользуетсяОграничениеПоВладельцу
Или Результат.Контекст.БезОбъектаМетаданных
Или Результат.Контекст.СпискиСЗаписьюКлючейДляЗависимыхСписковБезКлючей.Получить( Или Результат.Контекст.СпискиСЗаписьюКлючейДляЗависимыхСписковБезКлючей.Получить(
Результат.Список) = Неопределено Тогда Результат.Список) = Неопределено Тогда
@@ -27713,6 +27790,8 @@
// Опорные поля не требуется для ссылочных типов данных (всегда Ссылка). // Опорные поля не требуется для ссылочных типов данных (всегда Ссылка).
ЗаполнитьНовоеОписаниеОпорныхПолей(Результат, Контекст); ЗаполнитьНовоеОписаниеОпорныхПолей(Результат, Контекст);
Контекст.Вставить("БезОбъектаМетаданных", Ложь);
Если Контекст.СпискиСЗаписьюКлючейДляЗависимыхСписковБезКлючей <> Неопределено Тогда Если Контекст.СпискиСЗаписьюКлючейДляЗависимыхСписковБезКлючей <> Неопределено Тогда
Свойства = СвойстваОграниченияСписка(Контекст.Список, Контекст); Свойства = СвойстваОграниченияСписка(Контекст.Список, Контекст);
Результат.РассчитыватьПраваПользователей = Свойства.РассчитыватьПраваПользователей; Результат.РассчитыватьПраваПользователей = Свойства.РассчитыватьПраваПользователей;
@@ -27721,6 +27800,7 @@
Если Контекст.СпискиСЗаписьюКлючейДляЗависимыхСписковБезКлючей.Получить(Список) <> Неопределено Тогда Если Контекст.СпискиСЗаписьюКлючейДляЗависимыхСписковБезКлючей.Получить(Список) <> Неопределено Тогда
Результат.ЕстьЗависимыеСпискиБезЗаписиКлючейДоступа = Истина; Результат.ЕстьЗависимыеСпискиБезЗаписиКлючейДоступа = Истина;
ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоПолномуИмени(Список); ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоПолномуИмени(Список);
Контекст.БезОбъектаМетаданных = ОбъектМетаданных = Неопределено;
Результат.ЧтениеРазрешеноДляВсехПользователей = Результат.ЧтениеРазрешеноДляВсехПользователей =
ПравоРазрешеноДляВсехПользователей("Чтение", ОбъектМетаданных, ДляВнешнихПользователей); ПравоРазрешеноДляВсехПользователей("Чтение", ОбъектМетаданных, ДляВнешнихПользователей);
Результат.ИзменениеРазрешеноДляВсехПользователей = Результат.ИзменениеРазрешеноДляВсехПользователей =
@@ -27734,7 +27814,9 @@
Контекст.Вставить("ИзменениеРазрешеноДляВсехПользователей", Результат.ИзменениеРазрешеноДляВсехПользователей); Контекст.Вставить("ИзменениеРазрешеноДляВсехПользователей", Результат.ИзменениеРазрешеноДляВсехПользователей);
Если СтруктураОграничения = Неопределено Тогда Если СтруктураОграничения = Неопределено Тогда
Если Не Результат.ЕстьЗависимыеСпискиБезЗаписиКлючейДоступа Или Результат.ДоступЗапрещен Тогда Если Не Результат.ЕстьЗависимыеСпискиБезЗаписиКлючейДоступа
Или Результат.ДоступЗапрещен
Или Контекст.БезОбъектаМетаданных Тогда
Возврат Результат; Возврат Результат;
КонецЕсли; КонецЕсли;
СтруктураОграничения = РассчитаннаяСтруктураОграничения(Список, СтруктураОграничения = РассчитаннаяСтруктураОграничения(Список,
@@ -27887,6 +27969,7 @@
// * ЕстьЗависимыеСпискиБезЗаписиКлючейДоступа - Булево // * ЕстьЗависимыеСпискиБезЗаписиКлючейДоступа - Булево
// * ЧтениеРазрешеноДляВсехПользователей - Булево // * ЧтениеРазрешеноДляВсехПользователей - Булево
// * ИзменениеРазрешеноДляВсехПользователей - Булево // * ИзменениеРазрешеноДляВсехПользователей - Булево
// * БезОбъектаМетаданных - Булево
// * СтруктураОграничения - см. СтруктураОграничения // * СтруктураОграничения - см. СтруктураОграничения
// * ИсходнаяСтруктураОграничения - см. СтруктураОграничения // * ИсходнаяСтруктураОграничения - см. СтруктураОграничения
// * ВедущиеСпискиПоЗначениямПолей - см. ОписаниеВедущихСписковПоЗначениямПолей // * ВедущиеСпискиПоЗначениямПолей - см. ОписаниеВедущихСписковПоЗначениямПолей
@@ -30121,7 +30204,8 @@
ИначеЕсли Условие.Узел = "Не" Тогда ИначеЕсли Условие.Узел = "Не" Тогда
Аргумент = УпрощенноеУсловиеОграничения(Условие.Аргумент, Контекст); Аргумент = УпрощенноеУсловиеОграничения(Условие.Аргумент, Контекст);
Если Аргумент.Узел = "Константа" Тогда Если Аргумент.Узел = "Константа" Тогда
Условие = Новый Структура("Узел, Значение", "Константа", Не Аргумент.Значение); Условие = Новый Структура("Узел, Значение", "Константа",
?(Аргумент.Значение = "Пусто", "Пусто", Не Аргумент.Значение));
Иначе Иначе
Условие = Новый Структура("Узел, Аргумент", Условие.Узел, Аргумент); Условие = Новый Структура("Узел, Аргумент", Условие.Узел, Аргумент);
КонецЕсли; КонецЕсли;
@@ -30164,6 +30248,7 @@
ИначеЕсли Условие.Узел = "Выбор" Тогда ИначеЕсли Условие.Узел = "Выбор" Тогда
ВсеЗначенияВыбораИстина = Истина; ВсеЗначенияВыбораИстина = Истина;
ВсеЗначенияВыбораЛожь = Истина; ВсеЗначенияВыбораЛожь = Истина;
ВсеЗначенияВыбораПусто = Истина;
Выбор = Новый Структура("Узел, Выбор, Когда, Иначе", Условие.Узел, Условие.Выбор, Новый Массив); Выбор = Новый Структура("Узел, Выбор, Когда, Иначе", Условие.Узел, Условие.Выбор, Новый Массив);
НовоеУсловиеИначе = Неопределено; НовоеУсловиеИначе = Неопределено;
Для Каждого Когда Из Условие.Когда Цикл Для Каждого Когда Из Условие.Когда Цикл
@@ -30180,15 +30265,18 @@
УсловиеКогда = Когда.Условие; УсловиеКогда = Когда.Условие;
КонецЕсли; КонецЕсли;
ЗначениеКогда = УпрощенноеУсловиеОграничения(Когда.Значение, Контекст); ЗначениеКогда = УпрощенноеУсловиеОграничения(Когда.Значение, Контекст);
ОбработатьУпрощенноеЗначениеВыбора(ЗначениеКогда, ВсеЗначенияВыбораИстина, ВсеЗначенияВыбораЛожь); ОбработатьУпрощенноеЗначениеВыбора(ЗначениеКогда,
ВсеЗначенияВыбораИстина, ВсеЗначенияВыбораЛожь, ВсеЗначенияВыбораПусто);
СтруктураКогда = Новый Структура("Условие, Значение", УсловиеКогда, ЗначениеКогда); СтруктураКогда = Новый Структура("Условие, Значение", УсловиеКогда, ЗначениеКогда);
Выбор.Когда.Добавить(СтруктураКогда); Выбор.Когда.Добавить(СтруктураКогда);
КонецЦикла; КонецЦикла;
УсловиеИначе = ?(НовоеУсловиеИначе = Неопределено, Условие.Иначе, НовоеУсловиеИначе); УсловиеИначе = ?(НовоеУсловиеИначе = Неопределено, Условие.Иначе, НовоеУсловиеИначе);
Выбор.Иначе = УпрощенноеУсловиеОграничения(УсловиеИначе, Контекст); Выбор.Иначе = УпрощенноеУсловиеОграничения(УсловиеИначе, Контекст);
ОбработатьУпрощенноеЗначениеВыбора(Выбор.Иначе, ВсеЗначенияВыбораИстина, ВсеЗначенияВыбораЛожь); ОбработатьУпрощенноеЗначениеВыбора(Выбор.Иначе,
Если ВсеЗначенияВыбораИстина Или ВсеЗначенияВыбораЛожь Тогда ВсеЗначенияВыбораИстина, ВсеЗначенияВыбораЛожь, ВсеЗначенияВыбораПусто);
Условие = Новый Структура("Узел, Значение", "Константа", ВсеЗначенияВыбораИстина); Если ВсеЗначенияВыбораИстина Или ВсеЗначенияВыбораЛожь Или ВсеЗначенияВыбораПусто Тогда
Условие = Новый Структура("Узел, Значение", "Константа",
?(ВсеЗначенияВыбораПусто, "Пусто", ВсеЗначенияВыбораИстина));
ИначеЕсли Выбор.Когда.Количество() = 0 Тогда ИначеЕсли Выбор.Когда.Количество() = 0 Тогда
Условие = Выбор.Иначе; Условие = Выбор.Иначе;
Иначе Иначе
@@ -30249,7 +30337,11 @@
ВызватьИсключение ТекстОшибки; ВызватьИсключение ТекстОшибки;
КонецЕсли; КонецЕсли;
Если Условие.Узел <> "Константа" И ДобавитьОставшиесяПоля Тогда Если Условие.Узел = "Константа" Тогда
Если КореньУсловия И Условие.Значение = "Пусто" Тогда
Условие.Значение = Истина;
КонецЕсли;
ИначеЕсли ДобавитьОставшиесяПоля Тогда
Для Каждого КлючИЗначение Из Контекст.ОставшиесяПоляПослеУпрощения Цикл Для Каждого КлючИЗначение Из Контекст.ОставшиесяПоляПослеУпрощения Цикл
Если Условие.Узел <> "Поле" Тогда Если Условие.Узел <> "Поле" Тогда
РодителиПоля = КлючИЗначение.Значение; // Массив Из см. ОписаниеУзла РодителиПоля = КлючИЗначение.Значение; // Массив Из см. ОписаниеУзла
@@ -30265,16 +30357,24 @@
КонецФункции КонецФункции
// Для функции УпрощенноеУсловиеОграничения. // Для функции УпрощенноеУсловиеОграничения.
Процедура ОбработатьУпрощенноеЗначениеВыбора(Условие, ВсеЗначенияВыбораИстина, ВсеЗначенияВыбораЛожь) Процедура ОбработатьУпрощенноеЗначениеВыбора(Условие,
ВсеЗначенияВыбораИстина, ВсеЗначенияВыбораЛожь, ВсеЗначенияВыбораПусто)
Если Условие.Узел <> "Константа" Тогда Если Условие.Узел <> "Константа" Тогда
ВсеЗначенияВыбораИстина = Ложь; ВсеЗначенияВыбораИстина = Ложь;
ВсеЗначенияВыбораЛожь = Ложь; ВсеЗначенияВыбораЛожь = Ложь;
ВсеЗначенияВыбораПусто = Ложь;
ИначеЕсли Условие.Значение = "Пусто" Тогда
ВсеЗначенияВыбораИстина = Ложь;
ВсеЗначенияВыбораЛожь = Ложь;
ИначеЕсли Условие.Значение Тогда ИначеЕсли Условие.Значение Тогда
ВсеЗначенияВыбораЛожь = Ложь; ВсеЗначенияВыбораЛожь = Ложь;
ВсеЗначенияВыбораПусто = Ложь;
Иначе Иначе
ВсеЗначенияВыбораИстина = Ложь; ВсеЗначенияВыбораИстина = Ложь;
ВсеЗначенияВыбораПусто = Ложь;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -30287,6 +30387,7 @@
РезультатВсегдаЛожь = Истина; РезультатВсегдаЛожь = Истина;
РезультатВсегдаИстина = Истина; РезультатВсегдаИстина = Истина;
ЕстьРезультатПусто = Ложь;
Для Каждого Тип Из ТипыКонечногоПоля Цикл Для Каждого Тип Из ТипыКонечногоПоля Цикл
ИмяТипа = ИмяТипаНаЯзыкеЗапросов(Тип); ИмяТипа = ИмяТипаНаЯзыкеЗапросов(Тип);
@@ -30317,6 +30418,7 @@
КонецЕсли; КонецЕсли;
Если ОтключеноКакЛожь Тогда Если ОтключеноКакЛожь Тогда
РезультатВсегдаИстина = Ложь; РезультатВсегдаИстина = Ложь;
ЕстьРезультатПусто = Истина;
Иначе Иначе
РезультатВсегдаЛожь = Ложь; РезультатВсегдаЛожь = Ложь;
КонецЕсли; КонецЕсли;
@@ -30329,8 +30431,12 @@
Если РезультатВсегдаИстина Тогда Если РезультатВсегдаИстина Тогда
Возврат Истина; Возврат Истина;
ИначеЕсли РезультатВсегдаЛожь Тогда ИначеЕсли РезультатВсегдаЛожь Тогда
Если ЕстьРезультатПусто Тогда
Возврат "Пусто";
Иначе
Возврат Ложь; Возврат Ложь;
КонецЕсли; КонецЕсли;
КонецЕсли;
Возврат Неопределено; Возврат Неопределено;
@@ -880,9 +880,22 @@
ДобавлятьВМассивПисемДляПолученияПапки = Ложь; ДобавлятьВМассивПисемДляПолученияПапки = Ложь;
Блокировка = Новый БлокировкаДанных;
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
ЭлементБлокировки = Блокировка.Добавить("Справочник.УчетныеЗаписиЭлектроннойПочты");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ПапкиЭлектронныхПисем");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
Блокировка.Добавить("РегистрСведений.ИдентификаторыПолученныхЭлектронныхПисем");
Блокировка.Добавить("РегистрСведений.УведомленияОПрочтении");
Блокировка.Добавить("Документ.ЭлектронноеПисьмоИсходящее");
Блокировка.Добавить("Документ.ЭлектронноеПисьмоВходящее");
КонецЕсли;
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
Блокировка.Заблокировать();
ЭтоИсходящееПисьмо = ПочтовыеАдресаРавны(ДанныеУчетнойЗаписи.АдресЭлектроннойПочты, ЭтоИсходящееПисьмо = ПочтовыеАдресаРавны(ДанныеУчетнойЗаписи.АдресЭлектроннойПочты,
АдресОтправителяИнтернетПочтовогоСообщения(Сообщение.Отправитель)); АдресОтправителяИнтернетПочтовогоСообщения(Сообщение.Отправитель));
@@ -803,7 +803,10 @@
// РежимДиалога - РежимДиалогаВыбораФайла - режим работы конструируемого диалога выбора файлов. // РежимДиалога - РежимДиалогаВыбораФайла - режим работы конструируемого диалога выбора файлов.
// //
// Возвращаемое значение: // Возвращаемое значение:
// см. ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла // Структура:
// * Диалог - ДиалогВыбораФайла
// * Интерактивно - Булево
// * ТекстПредложения - Строка
// //
Функция КонтекстОперации(РежимДиалога) Функция КонтекстОперации(РежимДиалога)
@@ -2047,11 +2047,11 @@
ЗаполнитьЗначенияСвойств(НоваяЗапись, СвойстваПодписи, , "Подпись, Сертификат"); ЗаполнитьЗначенияСвойств(НоваяЗапись, СвойстваПодписи, , "Подпись, Сертификат");
НоваяЗапись.ПодписанныйОбъект = ОбъектДанных.Ссылка; НоваяЗапись.ПодписанныйОбъект = ОбъектДанных.Ссылка;
НоваяЗапись.Подпись = Новый ХранилищеЗначения(СвойстваПодписи.Подпись); НоваяЗапись.Подпись = Новый ХранилищеЗначения(СвойстваПодписи.Подпись, Новый СжатиеДанных(9));
Если ТипЗнч(СвойстваПодписи.Сертификат) = Тип("ХранилищеЗначения") Тогда Если ТипЗнч(СвойстваПодписи.Сертификат) = Тип("ХранилищеЗначения") Тогда
НоваяЗапись.Сертификат = СвойстваПодписи.Сертификат; НоваяЗапись.Сертификат = СвойстваПодписи.Сертификат;
Иначе Иначе
НоваяЗапись.Сертификат = Новый ХранилищеЗначения(СвойстваПодписи.Сертификат); НоваяЗапись.Сертификат = Новый ХранилищеЗначения(СвойстваПодписи.Сертификат, Новый СжатиеДанных(9));
КонецЕсли; КонецЕсли;
ПорядковыйНомер = 1; ПорядковыйНомер = 1;
@@ -5379,9 +5379,16 @@
ДанныеКлассификатора = Константы.КлассификаторОшибокКриптографии.Получить(); ДанныеКлассификатора = Константы.КлассификаторОшибокКриптографии.Получить();
Если Не ЗначениеЗаполнено(ДанныеКлассификатора) Тогда Если Не ЗначениеЗаполнено(ДанныеКлассификатора) Тогда
Если Метаданные.ОбщиеМодули.Найти("ЭлектроннаяПодписьСлужебныйЛокализация") = Неопределено Тогда
Возврат Новый Структура("Классификатор, Версия", ПредставлениеКлассификатораДляХранения()); Возврат Новый Структура("Классификатор, Версия", ПредставлениеКлассификатораДляХранения());
КонецЕсли; КонецЕсли;
МодульЭлектроннаяПодписьСлужебныйЛокализация = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебныйЛокализация");
Возврат МодульЭлектроннаяПодписьСлужебныйЛокализация.КлассификаторОшибокКриптографии();
КонецЕсли;
ДанныеКлассификатора = ДанныеКлассификатора.Получить(); ДанныеКлассификатора = ДанныеКлассификатора.Получить();
Если ТипЗнч(ДанныеКлассификатора) = Тип("ТаблицаЗначений") Тогда Если ТипЗнч(ДанныеКлассификатора) = Тип("ТаблицаЗначений") Тогда
@@ -5427,6 +5434,21 @@
Если ДанныеКлассификатора <> Неопределено Тогда Если ДанныеКлассификатора <> Неопределено Тогда
Константы.КлассификаторОшибокКриптографии.Установить(
Новый ХранилищеЗначения(ПредставлениеКлассификатораОшибок(ДанныеКлассификатора), Новый СжатиеДанных(9)));
КонецЕсли;
Если ДатаПоследнегоИзменения <> Неопределено Тогда
Константы.ДатаПоследнегоОбновленияКлассификатораОшибок.Установить(
ДатаПоследнегоИзменения);
КонецЕсли;
КонецПроцедуры
// Только для внутреннего использования.
Функция ПредставлениеКлассификатораОшибок(ДанныеКлассификатора) Экспорт
ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON = Новый ЧтениеJSON;
Если ТипЗнч(ДанныеКлассификатора) = Тип("Строка") Тогда Если ТипЗнч(ДанныеКлассификатора) = Тип("Строка") Тогда
ЧтениеJSON.УстановитьСтроку(ДанныеКлассификатора); ЧтениеJSON.УстановитьСтроку(ДанныеКлассификатора);
@@ -5451,18 +5473,9 @@
КонецЦикла; КонецЦикла;
Константы.КлассификаторОшибокКриптографии.Установить( Возврат Новый Структура("Классификатор, Версия", ПредставлениеКлассификатора, ВерсияКлассификатора);
Новый ХранилищеЗначения(Новый Структура("Классификатор, Версия",
ПредставлениеКлассификатора, ВерсияКлассификатора), Новый СжатиеДанных(9)));
КонецЕсли; КонецФункции
Если ДатаПоследнегоИзменения <> Неопределено Тогда
Константы.ДатаПоследнегоОбновленияКлассификатораОшибок.Установить(
ДатаПоследнегоИзменения);
КонецЕсли;
КонецПроцедуры
#КонецОбласти #КонецОбласти
@@ -3008,12 +3008,8 @@
Контекст.Вставить("СоставИмениФайлаДанных", Контекст.Вставить("СоставИмениФайлаДанных",
ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Контекст.ПолноеИмяФайла)); ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Контекст.ПолноеИмяФайла));
Если ЗначениеЗаполнено(Контекст.СоставИмениФайлаДанных.Путь) Тогда
ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами(Новый ОписаниеОповещения( ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами(Новый ОписаниеОповещения(
"СохранитьДанныеВместеСПодписьюПослеПодключенияРасширенияРаботыСФайлами", ЭтотОбъект, Контекст)); "СохранитьДанныеВместеСПодписьюПослеПодключенияРасширенияРаботыСФайлами", ЭтотОбъект, Контекст));
Иначе
СохранитьДанныеВместеСПодписьюПослеПодключенияРасширенияРаботыСФайлами(Ложь, Контекст);
КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -3027,8 +3023,12 @@
Если Контекст.Подключено Тогда Если Контекст.Подключено Тогда
Контекст.Вставить("ПолучаемыеФайлы", Новый Массив); Контекст.Вставить("ПолучаемыеФайлы", Новый Массив);
Если ЗначениеЗаполнено(Контекст.СоставИмениФайлаДанных.Путь) Тогда
Контекст.Вставить("ПутьКФайлам", ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути( Контекст.Вставить("ПутьКФайлам", ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(
Контекст.СоставИмениФайлаДанных.Путь)); Контекст.СоставИмениФайлаДанных.Путь));
Иначе
Контекст.Вставить("ПутьКФайлам", "");
КонецЕсли;
КонецЕсли; КонецЕсли;
Контекст.Вставить("ИменаФайлов", Новый Соответствие); Контекст.Вставить("ИменаФайлов", Новый Соответствие);
@@ -3041,6 +3041,11 @@
КонецПроцедуры КонецПроцедуры
// Продолжение процедуры ЭлектроннаяПодписьКлиент.СохранитьДанныеВместеСПодписью. // Продолжение процедуры ЭлектроннаяПодписьКлиент.СохранитьДанныеВместеСПодписью.
//
// Параметры:
// Контекст - Структура:
// * Индекс - Число
//
Процедура СохранитьДанныеВместеСПодписьюЦиклНачало(Контекст) Процедура СохранитьДанныеВместеСПодписьюЦиклНачало(Контекст)
Если Контекст.КоллекцияПодписей.Количество() <= Контекст.Индекс + 1 Тогда Если Контекст.КоллекцияПодписей.Количество() <= Контекст.Индекс + 1 Тогда
@@ -3113,6 +3118,11 @@
КонецПроцедуры КонецПроцедуры
// Продолжение процедуры ЭлектроннаяПодписьКлиент.СохранитьДанныеВместеСПодписью. // Продолжение процедуры ЭлектроннаяПодписьКлиент.СохранитьДанныеВместеСПодписью.
//
// Параметры:
// Контекст - Структура:
// * ПолучаемыеФайлы - Массив
//
Процедура СохранитьДанныеВместеСПодписьюЦиклПослеВнутреннегоЦикла(Контекст) Процедура СохранитьДанныеВместеСПодписьюЦиклПослеВнутреннегоЦикла(Контекст)
СоставИмениФайлаПодписи = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Контекст.ПолноеИмяФайлаПодписи); СоставИмениФайлаПодписи = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Контекст.ПолноеИмяФайлаПодписи);
@@ -3195,6 +3205,11 @@
КонецПроцедуры КонецПроцедуры
// Продолжение процедуры ЭлектроннаяПодписьКлиент.СохранитьДанныеВместеСПодписью. // Продолжение процедуры ЭлектроннаяПодписьКлиент.СохранитьДанныеВместеСПодписью.
//
// Параметры:
// Контекст - Структура:
// * ПолучаемыеФайлы - Массив
//
Процедура СохранитьДанныеСертификатаВместеСПодписьюЦиклПослеВнутреннегоЦикла(Контекст) Процедура СохранитьДанныеСертификатаВместеСПодписьюЦиклПослеВнутреннегоЦикла(Контекст)
СоставИмениФайлаСертификата = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Контекст.ПолноеИмяФайлаСертификата); СоставИмениФайлаСертификата = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Контекст.ПолноеИмяФайлаСертификата);
@@ -3274,7 +3289,7 @@
ИначеЕсли РазрешенияПолучены Тогда ИначеЕсли РазрешенияПолучены Тогда
ПараметрыСохранения = ФайловаяСистемаКлиент.ПараметрыСохраненияФайлов(); ПараметрыСохранения = ФайловаяСистемаКлиент.ПараметрыСохраненияФайлов();
ПараметрыСохранения.Интерактивно = Ложь; ПараметрыСохранения.Интерактивно = Не ЗначениеЗаполнено(Контекст.ПутьКФайлам);
ПараметрыСохранения.Диалог.Каталог = Контекст.ПутьКФайлам; ПараметрыСохранения.Диалог.Каталог = Контекст.ПутьКФайлам;
ФайловаяСистемаКлиент.СохранитьФайлы(Новый ОписаниеОповещения( ФайловаяСистемаКлиент.СохранитьФайлы(Новый ОписаниеОповещения(
"СохранитьДанныеВместеСПодписьюПослеПолученияФайлов", ЭтотОбъект, Контекст), "СохранитьДанныеВместеСПодписьюПослеПолученияФайлов", ЭтотОбъект, Контекст),
@@ -3297,8 +3312,11 @@
Если ТипЗнч(ПолученныеФайлы) = Тип("Массив") Тогда Если ТипЗнч(ПолученныеФайлы) = Тип("Массив") Тогда
Для каждого ПолученныйФайл Из ПолученныеФайлы Цикл Для каждого ПолученныйФайл Из ПолученныеФайлы Цикл
СоставИмениФайлаПодписи = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ПолученныйФайл.Имя); СоставИмениФайлаПодписи = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ПолученныйФайл.ПолноеИмя);
ИменаПолученныхФайлов.Вставить(СоставИмениФайлаПодписи.Имя, Истина); ИменаПолученныхФайлов.Вставить(СоставИмениФайлаПодписи.Имя, Истина);
Если Не ЗначениеЗаполнено(Контекст.ПутьКФайлам) Тогда
Контекст.ПутьКФайлам = СоставИмениФайлаПодписи.Путь;
КонецЕсли;
КонецЦикла; КонецЦикла;
КонецЕсли; КонецЕсли;
@@ -3312,7 +3330,11 @@
ПараметрыФормы = Новый Структура; ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Текст", Текст); ПараметрыФормы.Вставить("Текст", Текст);
Если Не ЗначениеЗаполнено(Контекст.СоставИмениФайлаДанных.Путь) Тогда
ПараметрыФормы.Вставить("КаталогСФайлами", Контекст.ПутьКФайлам);
Иначе
ПараметрыФормы.Вставить("КаталогСФайлами", Контекст.СоставИмениФайлаДанных.Путь); ПараметрыФормы.Вставить("КаталогСФайлами", Контекст.СоставИмениФайлаДанных.Путь);
КонецЕсли;
ОткрытьФорму("ОбщаяФорма.ОтчетОСохраненииФайловЭлектронныхПодписей", ПараметрыФормы,,,,, ОткрытьФорму("ОбщаяФорма.ОтчетОСохраненииФайловЭлектронныхПодписей", ПараметрыФормы,,,,,
Новый ОписаниеОповещения("СохранитьДанныеВместеСПодписьюПослеЗакрытияОтчета", ЭтотОбъект, Контекст)); Новый ОписаниеОповещения("СохранитьДанныеВместеСПодписьюПослеЗакрытияОтчета", ЭтотОбъект, Контекст));
@@ -1853,7 +1853,6 @@
КонецФункции КонецФункции
// См. ЭлектроннаяПодписьКлиент.СвойстваСертификата.
Функция СвойстваСертификата(Сертификат, ДобавкаВремени) Экспорт Функция СвойстваСертификата(Сертификат, ДобавкаВремени) Экспорт
ДатыСертификата = ДатыСертификата(Сертификат, ДобавкаВремени); ДатыСертификата = ДатыСертификата(Сертификат, ДобавкаВремени);
@@ -1906,7 +1905,6 @@
КонецПроцедуры КонецПроцедуры
// См. ЭлектроннаяПодписьКлиент.СвойстваСубъектаСертификата.
Функция СвойстваСубъектаСертификата(Сертификат) Экспорт Функция СвойстваСубъектаСертификата(Сертификат) Экспорт
Субъект = Сертификат.Субъект; Субъект = Сертификат.Субъект;
@@ -111,6 +111,13 @@
КонецФункции КонецФункции
Функция КлассификаторОшибокКриптографии() Экспорт
Возврат ЭлектроннаяПодписьСлужебный.ПредставлениеКлассификатораОшибок(
Обработки.ПрограммыЭлектроннойПодписиИШифрования.ПолучитьМакет("КлассификаторОшибокКриптографии"));
КонецФункции
Функция АккредитованныеУдостоверяющиеЦентры() Экспорт Функция АккредитованныеУдостоверяющиеЦентры() Экспорт
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
+10 -11
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="f8a543bf-dde2-4d89-9a16-0480ccd4f52e"> <mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="18b69172-3c99-47dd-b440-95e9cb9b809c">
<name>БиблиотекаСтандартныхПодсистем</name> <name>БиблиотекаСтандартныхПодсистем</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value> <value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym> </synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="b77d7cc3-a79c-4521-b3f4-352aae11d9c0"/> <containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="2a21374d-85f5-440c-a959-7b63dc27d4d9"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="dc23da14-5c97-4b80-a436-cde5e2e29849"/> <containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="5361a011-6fb9-4680-8395-279e02de98d3"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="e5520594-f145-4ce7-8cec-db3b253f9f46"/> <containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="18809241-2377-4b7b-8393-292afb6f58d1"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="74c72375-b1b6-4d4f-9b54-242f97245e95"/> <containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="6f4cfd51-cf99-47a9-aba1-071987d9a8f6"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="109ad15a-c9c9-44f0-9358-a05cf289097e"/> <containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="0460b19a-cf63-4944-97a0-3b2798b634f8"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="580be518-ea9d-4b5f-af75-693d46cc14d6"/> <containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="0c7e9e24-dfe6-4894-94f2-157ab5806024"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="eb7938d2-e277-45cf-a0f5-332adf911ef8"/> <containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="a17ce663-b0cf-464e-b1c8-df8554b190c1"/>
<defaultRunMode>ManagedApplication</defaultRunMode> <defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant> <scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles> <defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles> <defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor> <vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.7.61</version> <version>3.1.7.79</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress> <updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents> <includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities> <usedMobileApplicationFunctionalities>
@@ -655,6 +655,7 @@
<sessionParameters>SessionParameter.ОбластьДанныхЗначение</sessionParameters> <sessionParameters>SessionParameter.ОбластьДанныхЗначение</sessionParameters>
<sessionParameters>SessionParameter.ОбластьДанныхИспользование</sessionParameters> <sessionParameters>SessionParameter.ОбластьДанныхИспользование</sessionParameters>
<sessionParameters>SessionParameter.ОбновитьВерсиюДатЗапретаИзмененияПослеЗагрузкиДанных</sessionParameters> <sessionParameters>SessionParameter.ОбновитьВерсиюДатЗапретаИзмененияПослеЗагрузкиДанных</sessionParameters>
<sessionParameters>SessionParameter.ОбновлениеСправочниковИдентификаторов</sessionParameters>
<sessionParameters>SessionParameter.ОбщиеПараметрыШаблоновОграниченияДоступа</sessionParameters> <sessionParameters>SessionParameter.ОбщиеПараметрыШаблоновОграниченияДоступа</sessionParameters>
<sessionParameters>SessionParameter.ОграничениеДоступаНаУровнеЗаписейИспользуется</sessionParameters> <sessionParameters>SessionParameter.ОграничениеДоступаНаУровнеЗаписейИспользуется</sessionParameters>
<sessionParameters>SessionParameter.ОграничениеДоступаНаУровнеЗаписейУниверсально</sessionParameters> <sessionParameters>SessionParameter.ОграничениеДоступаНаУровнеЗаписейУниверсально</sessionParameters>
@@ -944,7 +945,6 @@
<commonModules>CommonModule.НапоминанияПользователяВызовСервера</commonModules> <commonModules>CommonModule.НапоминанияПользователяВызовСервера</commonModules>
<commonModules>CommonModule.НапоминанияПользователяГлобальный</commonModules> <commonModules>CommonModule.НапоминанияПользователяГлобальный</commonModules>
<commonModules>CommonModule.НапоминанияПользователяКлиент</commonModules> <commonModules>CommonModule.НапоминанияПользователяКлиент</commonModules>
<commonModules>CommonModule.НапоминанияПользователяКлиентПовтИсп</commonModules>
<commonModules>CommonModule.НапоминанияПользователяКлиентСервер</commonModules> <commonModules>CommonModule.НапоминанияПользователяКлиентСервер</commonModules>
<commonModules>CommonModule.НапоминанияПользователяПереопределяемый</commonModules> <commonModules>CommonModule.НапоминанияПользователяПереопределяемый</commonModules>
<commonModules>CommonModule.НапоминанияПользователяСлужебный</commonModules> <commonModules>CommonModule.НапоминанияПользователяСлужебный</commonModules>
@@ -1085,7 +1085,6 @@
<commonModules>CommonModule.РаботаСБанкамиПереопределяемый</commonModules> <commonModules>CommonModule.РаботаСБанкамиПереопределяемый</commonModules>
<commonModules>CommonModule.РаботаСБанкамиСлужебный</commonModules> <commonModules>CommonModule.РаботаСБанкамиСлужебный</commonModules>
<commonModules>CommonModule.РаботаСКурсамиВалют</commonModules> <commonModules>CommonModule.РаботаСКурсамиВалют</commonModules>
<commonModules>CommonModule.РаботаСКурсамиВалютВызовСервера</commonModules>
<commonModules>CommonModule.РаботаСКурсамиВалютГлобальный</commonModules> <commonModules>CommonModule.РаботаСКурсамиВалютГлобальный</commonModules>
<commonModules>CommonModule.РаботаСКурсамиВалютКлиент</commonModules> <commonModules>CommonModule.РаботаСКурсамиВалютКлиент</commonModules>
<commonModules>CommonModule.РаботаСКурсамиВалютКлиентСервер</commonModules> <commonModules>CommonModule.РаботаСКурсамиВалютКлиентСервер</commonModules>
@@ -1 +1 @@
{6,1,1,46f419e3-e501-4cf4-8600-91959348a5b6,1,efdf524d-54ac-4cb1-b611-bf318a3b7b71,"3.1.7.61","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6753,1,0,f8a543bf-dde2-4d89-9a16-0480ccd4f52e,f8a543bf-dde2-4d89-9a16-0480ccd4f52e,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-Line truncated {6,1,1,a3aa9e2b-0a1d-4b94-bcda-7e204725cd6d,1,265aea1c-28d4-4297-b9bc-3a6217fb3c85,"3.1.7.79","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6753,1,0,18b69172-3c99-47dd-b440-95e9cb9b809c,18b69172-3c99-47dd-b440-95e9cb9b809c,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-Line truncated
@@ -146,34 +146,13 @@
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВыполнениеФоновогоЗадания()
Если ЗначениеЗаполнено(ИдентификаторФоновогоЗадания) И Не ЗаданиеВыполнено(ИдентификаторФоновогоЗадания) Тогда
ПодключитьОбработчикОжидания("ПроверитьВыполнениеФоновогоЗадания", 5, Истина);
Иначе
ИдентификаторФоновогоЗадания = "";
Если ТекущееФоновоеЗадание = "Подсчет" Тогда
ВывестиИнформациюОКоличествеФайловСНеизвлеченнымТекстом();
Возврат;
КонецЕсли;
ТекущееФоновоеЗадание = "";
ОбновитьИнформациюОКоличествеФайловСНеизвлеченнымТекстом();
КонецЕсли;
КонецПроцедуры
&НаКлиенте &НаКлиенте
Процедура ПрерватьФоновоеЗадание() Процедура ПрерватьФоновоеЗадание()
ОтменитьВыполнениеЗадания(ИдентификаторФоновогоЗадания); ОтменитьВыполнениеЗадания(ИдентификаторФоновогоЗадания);
ОтключитьОбработчикОжидания("ПроверитьВыполнениеФоновогоЗадания");
ТекущееФоновоеЗадание = ""; ТекущееФоновоеЗадание = "";
ИдентификаторФоновогоЗадания = ""; ИдентификаторФоновогоЗадания = "";
КонецПроцедуры КонецПроцедуры
&НаСервереБезКонтекста
Функция ЗаданиеВыполнено(ИдентификаторФоновогоЗадания)
Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторФоновогоЗадания);
КонецФункции
&НаСервереБезКонтекста &НаСервереБезКонтекста
Процедура ОтменитьВыполнениеЗадания(ИдентификаторФоновогоЗадания) Процедура ОтменитьВыполнениеЗадания(ИдентификаторФоновогоЗадания)
Если ЗначениеЗаполнено(ИдентификаторФоновогоЗадания) Тогда Если ЗначениеЗаполнено(ИдентификаторФоновогоЗадания) Тогда
@@ -3907,6 +3907,9 @@
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>БИПГруппаИнтеграцияСПлатежнымиСистемами</name> <name>БИПГруппаИнтеграцияСПлатежнымиСистемами</name>
<id>1921</id> <id>1921</id>
<items xsi:type="form:FormGroup">
<name>БИПГруппаИнтеграцияСПлатежнымиСистемамиЛево</name>
<id>1995</id>
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>БИПГруппаНастройкиИнтеграции</name> <name>БИПГруппаНастройкиИнтеграции</name>
<id>1941</id> <id>1941</id>
@@ -3976,6 +3979,102 @@
<currentRowUse>Auto</currentRowUse> <currentRowUse>Auto</currentRowUse>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormGroup">
<name>БИПГруппаНастройкаШаблоновСБП</name>
<id>1999</id>
<items xsi:type="form:Button">
<name>БИПОткрытьШаблоныСообщенийСБП</name>
<id>2001</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>БИПОткрытьШаблоныСообщенийСБПРасширеннаяПодсказка</name>
<id>2002</id>
<title>
<key>ru</key>
<value>Шаблоны необходимы для отправки писем и SMS со счетами на оплату через СБП.</value>
</title>
<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>
<toolTipRepresentation>ShowBottom</toolTipRepresentation>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Группа настройка шаблонов СБП</value>
</title>
<extendedTooltip>
<name>БИПГруппаНастройкаШаблоновСБПРасширеннаяПодсказка</name>
<id>2000</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>AlwaysHorizontal</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>БИП группа интеграция с платежными системами лево</value>
</title>
<extendedTooltip>
<name>БИПГруппаИнтеграцияСПлатежнымиСистемамиЛевоРасширеннаяПодсказка</name>
<id>1996</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>БИПГруппаИнтеграцияСПлатежнымиСистемамиПраво</name>
<id>1997</id>
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>БИПГруппаДлительностьОперации</name> <name>БИПГруппаДлительностьОперации</name>
<id>1943</id> <id>1943</id>
@@ -4104,6 +4203,35 @@
<userVisible> <userVisible>
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<title>
<key>ru</key>
<value>БИП группа интеграция с платежными системами право</value>
</title>
<extendedTooltip>
<name>БИПГруппаИнтеграцияСПлатежнымиСистемамиПравоРасширеннаяПодсказка</name>
<id>1998</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title> <title>
<key>ru</key> <key>ru</key>
<value>Система быстрых платежей</value> <value>Система быстрых платежей</value>
@@ -4320,7 +4448,7 @@
<name>БИПОнлайнОплатыЛево</name> <name>БИПОнлайнОплатыЛево</name>
<id>1960</id> <id>1960</id>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
<name>ИспользоватьОнлайнОплаты</name> <name>БИПИспользоватьОнлайнОплаты</name>
<id>1962</id> <id>1962</id>
<title> <title>
<key>ru</key> <key>ru</key>
@@ -4342,10 +4470,10 @@
<toolTipRepresentation>ShowBottom</toolTipRepresentation> <toolTipRepresentation>ShowBottom</toolTipRepresentation>
<handlers> <handlers>
<event>OnChange</event> <event>OnChange</event>
<name>ИспользоватьОнлайнОплатыПриИзменении</name> <name>БИПИспользоватьОнлайнОплатыПриИзменении</name>
</handlers> </handlers>
<extendedTooltip> <extendedTooltip>
<name>ИспользоватьОнлайнОплатыРасширеннаяПодсказка</name> <name>БИПИспользоватьОнлайнОплатыРасширеннаяПодсказка</name>
<id>1964</id> <id>1964</id>
<type>Label</type> <type>Label</type>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
@@ -4355,7 +4483,7 @@
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<contextMenu> <contextMenu>
<name>ИспользоватьОнлайнОплатыКонтекстноеМеню</name> <name>БИПИспользоватьОнлайнОплатыКонтекстноеМеню</name>
<id>1963</id> <id>1963</id>
<autoFill>true</autoFill> <autoFill>true</autoFill>
</contextMenu> </contextMenu>
@@ -4370,7 +4498,7 @@
<name>ГруппаПолучениеУведомлений</name> <name>ГруппаПолучениеУведомлений</name>
<id>1965</id> <id>1965</id>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
<name>ИспользоватьАвтоматическоеПолучениеУведомленияОтОнлайнОплат</name> <name>БИПИспользоватьАвтоматическоеПолучениеУведомленияОтОнлайнОплат</name>
<id>1967</id> <id>1967</id>
<title> <title>
<key>ru</key> <key>ru</key>
@@ -4387,10 +4515,10 @@
<titleLocation>Right</titleLocation> <titleLocation>Right</titleLocation>
<handlers> <handlers>
<event>OnChange</event> <event>OnChange</event>
<name>ИспользоватьАвтоматическоеПолучениеУведомленияОтОнлайнОплатПриИзменении</name> <name>БИПИспользоватьАвтоматическоеПолучениеУведомленияОтОнлайнОплатПриИзменении</name>
</handlers> </handlers>
<extendedTooltip> <extendedTooltip>
<name>ИспользоватьАвтоматическоеПолучениеУведомленияОтОнлайнОплатРасширеннаяПодсказка</name> <name>БИПИспользоватьАвтоматическоеПолучениеУведомленияОтОнлайнОплатРасширеннаяПодсказка</name>
<id>1969</id> <id>1969</id>
<type>Label</type> <type>Label</type>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
@@ -4400,7 +4528,7 @@
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<contextMenu> <contextMenu>
<name>ИспользоватьАвтоматическоеПолучениеУведомленияОтОнлайнОплатКонтекстноеМеню</name> <name>БИПИспользоватьАвтоматическоеПолучениеУведомленияОтОнлайнОплатКонтекстноеМеню</name>
<id>1968</id> <id>1968</id>
<autoFill>true</autoFill> <autoFill>true</autoFill>
</contextMenu> </contextMenu>
@@ -4516,7 +4644,7 @@
<name>ГруппаНастройкиОнлайнОплатыПраво</name> <name>ГруппаНастройкиОнлайнОплатыПраво</name>
<id>1975</id> <id>1975</id>
<items xsi:type="form:Button"> <items xsi:type="form:Button">
<name>ОткрытьНастройкиОнлайнОплат</name> <name>БИПОткрытьНастройкиОнлайнОплат</name>
<id>1977</id> <id>1977</id>
<title> <title>
<key>ru</key> <key>ru</key>
@@ -4528,7 +4656,7 @@
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<extendedTooltip> <extendedTooltip>
<name>ОткрытьНастройкиОнлайнОплатРасширеннаяПодсказка</name> <name>БИПОткрытьНастройкиОнлайнОплатРасширеннаяПодсказка</name>
<id>1978</id> <id>1978</id>
<title> <title>
<key>ru</key> <key>ru</key>
@@ -4542,7 +4670,7 @@
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<type>Hyperlink</type> <type>Hyperlink</type>
<commandName>Form.Command.ОткрытьНастройкиОнлайнОплат</commandName> <commandName>Form.Command.БИПОткрытьНастройкиОнлайнОплат</commandName>
<buttonImportance>Normal</buttonImportance> <buttonImportance>Normal</buttonImportance>
<representation>Auto</representation> <representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
@@ -4555,7 +4683,7 @@
<name>ГруппаНастройкаШаблоновОнлайнОплат</name> <name>ГруппаНастройкаШаблоновОнлайнОплат</name>
<id>1982</id> <id>1982</id>
<items xsi:type="form:Button"> <items xsi:type="form:Button">
<name>ОткрытьШаблоныСообщений</name> <name>БИПОткрытьШаблоныСообщенийОнлайнОплат</name>
<id>1984</id> <id>1984</id>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
@@ -4563,7 +4691,7 @@
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<extendedTooltip> <extendedTooltip>
<name>ОткрытьШаблоныСообщенийРасширеннаяПодсказка</name> <name>БИПОткрытьШаблоныСообщенийОнлайнОплатРасширеннаяПодсказка</name>
<id>1985</id> <id>1985</id>
<title> <title>
<key>ru</key> <key>ru</key>
@@ -4577,7 +4705,7 @@
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<type>Hyperlink</type> <type>Hyperlink</type>
<commandName>Form.Command.ОткрытьШаблоныСообщений</commandName> <commandName>Form.Command.БИПОткрытьШаблоныСообщенийОнлайнОплат</commandName>
<buttonImportance>Normal</buttonImportance> <buttonImportance>Normal</buttonImportance>
<representation>Auto</representation> <representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
@@ -5363,10 +5491,10 @@
<selectedRowsUse>Auto</selectedRowsUse> <selectedRowsUse>Auto</selectedRowsUse>
</formCommands> </formCommands>
<formCommands> <formCommands>
<name>ОткрытьНастройкиОнлайнОплат</name> <name>БИПОткрытьНастройкиОнлайнОплат</name>
<title> <title>
<key>ru</key> <key>ru</key>
<value>Открыть настройки онлайн оплат</value> <value>БИПОткрыть настройки онлайн оплат</value>
</title> </title>
<id>14</id> <id>14</id>
<use> <use>
@@ -5374,14 +5502,14 @@
</use> </use>
<action xsi:type="form:FormCommandHandlerContainer"> <action xsi:type="form:FormCommandHandlerContainer">
<handler> <handler>
<name>ОткрытьНастройкиОнлайнОплат</name> <name>БИПОткрытьНастройкиОнлайнОплат</name>
</handler> </handler>
</action> </action>
<currentRowUse>Auto</currentRowUse> <currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse> <selectedRowsUse>Auto</selectedRowsUse>
</formCommands> </formCommands>
<formCommands> <formCommands>
<name>ОткрытьШаблоныСообщений</name> <name>БИПОткрытьШаблоныСообщенийОнлайнОплат</name>
<title> <title>
<key>ru</key> <key>ru</key>
<value>Шаблоны сообщений</value> <value>Шаблоны сообщений</value>
@@ -5392,7 +5520,7 @@
</use> </use>
<action xsi:type="form:FormCommandHandlerContainer"> <action xsi:type="form:FormCommandHandlerContainer">
<handler> <handler>
<name>ОткрытьШаблоныСообщений</name> <name>БИПОткрытьШаблоныСообщенийОнлайнОплат</name>
</handler> </handler>
</action> </action>
<currentRowUse>Auto</currentRowUse> <currentRowUse>Auto</currentRowUse>
@@ -5420,6 +5548,24 @@
<currentRowUse>Auto</currentRowUse> <currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse> <selectedRowsUse>Auto</selectedRowsUse>
</formCommands> </formCommands>
<formCommands>
<name>БИПОткрытьШаблоныСообщенийСБП</name>
<title>
<key>ru</key>
<value>Шаблоны сообщений</value>
</title>
<id>18</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>БИПОткрытьШаблоныСообщенийСБП</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface> <commandInterface>
<navigationPanel/> <navigationPanel/>
<commandBar/> <commandBar/>
@@ -451,7 +451,7 @@
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
Процедура ИспользоватьОнлайнОплатыПриИзменении(Элемент) Процедура БИПИспользоватьОнлайнОплатыПриИзменении(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОнлайнОплаты") Тогда Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОнлайнОплаты") Тогда
МодульОнлайнОплаты = ОбщегоНазначенияКлиент.ОбщийМодуль("ОнлайнОплатыКлиент"); МодульОнлайнОплаты = ОбщегоНазначенияКлиент.ОбщийМодуль("ОнлайнОплатыКлиент");
@@ -463,7 +463,7 @@
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
Процедура ИспользоватьАвтоматическоеПолучениеУведомленияОтОнлайнОплатПриИзменении(Элемент) Процедура БИПИспользоватьАвтоматическоеПолучениеУведомленияОтОнлайнОплатПриИзменении(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОнлайнОплаты") Тогда Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОнлайнОплаты") Тогда
МодульПолучениеУведомленияОтОнлайнОплат = ОбщегоНазначенияКлиент.ОбщийМодуль("ОнлайнОплатыКлиент"); МодульПолучениеУведомленияОтОнлайнОплат = ОбщегоНазначенияКлиент.ОбщийМодуль("ОнлайнОплатыКлиент");
@@ -477,57 +477,52 @@
&НаКлиенте &НаКлиенте
Процедура ДекорацияРасписаниеПолученияУведомленийОтОнлайнОплатНажатие(Элемент) Процедура ДекорацияРасписаниеПолученияУведомленийОтОнлайнОплатНажатие(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОнлайнОплаты") Тогда
МодульОнлайнОплатыКлиент = МодульОнлайнОплатыКлиент =
ОбщегоНазначенияКлиент.ОбщийМодуль("ОнлайнОплатыКлиент"); ОбщегоНазначенияКлиент.ОбщийМодуль("ОнлайнОплатыКлиент");
МодульОнлайнОплатыКлиент.ИнтернетПоддержкаИСервисы_ДекорацияРасписаниеПолученияУведомленийОтОнлайнОплатНажатие( МодульОнлайнОплатыКлиент.ИнтернетПоддержкаИСервисы_ДекорацияРасписаниеПолученияУведомленийОтОнлайнОплатНажатие(
ЭтотОбъект, ЭтотОбъект,
Элемент); Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьНастройкиОнлайнОплат(Команда)
ФормаСписка = "Справочник.НастройкиОнлайнОплат.Форма.ФормаСписка";
ОткрытьФорму(ФормаСписка, , ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьШаблоныСообщений(Команда)
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ШаблоныСообщений") Тогда
Возврат;
КонецЕсли; КонецЕсли;
МодульОнлайнОплатыСлужебныйВызовСервера = КонецПроцедуры
ОбщегоНазначенияКлиент.ОбщийМодуль("ОнлайнОплатыСлужебныйВызовСервера");
РезультатПроверки = МодульОнлайнОплатыСлужебныйВызовСервера.ВсеШаблоныСозданы(); &НаКлиенте
Процедура БИПОткрытьНастройкиОнлайнОплат(Команда)
Если РезультатПроверки.ВсеШаблоны Тогда Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОнлайнОплаты") Тогда
ФормаСписка = "Справочник.НастройкиОнлайнОплат.Форма.ФормаСписка";
ОткрытьФорму(ФормаСписка, , ЭтотОбъект);
КонецЕсли;
МодульОнлайнОплатыСлужебныйКлиент = КонецПроцедуры
ОбщегоНазначенияКлиент.ОбщийМодуль("ОнлайнОплатыСлужебныйКлиент");
МодульОнлайнОплатыСлужебныйКлиент.ОткрытьФормуШаблонаСообщенийСОтбором( &НаКлиенте
РезультатПроверки.МассивШаблонов, Процедура БИПОткрытьШаблоныСообщенийОнлайнОплат(Команда)
Если (ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОнлайнОплаты")
И ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ШаблоныСообщений")) Тогда
МодульОнлайнОплатыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОнлайнОплатыКлиент");
МодульОнлайнОплатыКлиент.ИнтернетПоддержкаИСервисы_ОткрытьШаблоныСообщенийОнлайнОплат(УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура БИПОткрытьШаблоныСообщенийСБП(Команда)
Если (ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ИнтеграцияСПлатежнымиСистемами")
И ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ШаблоныСообщений")) Тогда
МодульИнтеграцияСПлатежнымиСистемамиКлиент
= ОбщегоНазначенияКлиент.ОбщийМодуль("ИнтеграцияСПлатежнымиСистемамиКлиент");
МодульИнтеграцияСПлатежнымиСистемамиКлиент.ИнтернетПоддержкаИСервисы_ОткрытьШаблоныСообщенийСБП(
УникальныйИдентификатор); УникальныйИдентификатор);
Иначе
РезультатПроверки.Вставить("УникальныйИдентификатор",УникальныйИдентификатор);
Оповещение = Новый ОписаниеОповещения(
"ПослеОтветаНаВопросОСозданииШаблонов",
ОбщегоНазначенияКлиент.ОбщийМодуль("ОнлайнОплатыСлужебныйКлиент"),
РезультатПроверки);
ПоказатьВопрос(
Оповещение,
НСтр("ru='Создать шаблоны сообщений для автоматического заполнения на основании данных документов?'"),
РежимДиалогаВопрос.ДаНетОтмена);
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -0,0 +1,321 @@
{
"Classifier": [
{
"ErrorText": "0x00000005",
"Reason": "На сервере недостаточно прав на доступ к хранилищу сертификатов из 1С:Предприятия.",
"Solution": "- При работе в клиент-серверном режиме с использованием электронной подписи на сервере предоставьте доступ к хранилищу сертификатов пользователю, от имени которого работает сервер 1С:Предприятия. <a href=\"ОткрытьСписокПрограмм\">Открыть список программ криптографии</a>\n- При работе в файловом режиме с публикацией информационной базы на web-сервере предоставьте доступ к хранилищу сертификатов пользователю, от имени которого работает web-сервер.\n- В остальных случаях отключите подписание, шифрование и проверку подписи на сервере.",
"RepairMethods": "",
"Anchor": "0x00000005"
},
{
"ErrorText": "0x0000065v",
"Reason": "Истек срок действия лицензии программы электронной подписи.",
"Solution": "Проверьте срок действия лицензии программы электронной подписи.",
"RepairMethods": "",
"Anchor": "0x0000065B"
},
{
"ErrorText": "0x0000065B",
"Reason": "Истек срок действия лицензии программы электронной подписи.",
"Solution": "Проверьте срок действия лицензии программы электронной подписи.",
"RepairMethods": "",
"Anchor": "0x0000065B"
},
{
"ErrorText": "0x80090019",
"Reason": "Некорректное присоединение съемного носителя с закрытым ключом.",
"Solution": "В КриптоПро перейти на закладку \"Сервис\", нажать \"Удалить запомненные пароли…\" и удалить все сохраненные данные. Затем повторно установить сертификат средствами КриптоПро согласно инструкции в конце <a href=\"http://1c-edo.ru/handbook/28/4008/\">статьи</a>",
"RepairMethods": "",
"Anchor": "0x80090019"
},
{
"ErrorText": "Не определен набор ключей",
"Reason": "Некорректное присоединение съемного носителя с закрытым ключом.",
"Solution": "В КриптоПро перейти на закладку \"Сервис\", нажать \"Удалить запомненные пароли…\" и удалить все сохраненные данные. Затем повторно установить сертификат средствами КриптоПро согласно инструкции в конце <a href=\"http://1c-edo.ru/handbook/28/4008/\">статьи</a>",
"RepairMethods": "",
"Anchor": "0x80090019"
},
{
"ErrorText": "0x8010006C",
"Reason": "Блокировка ключа на токене Rutoken.",
"Solution": "Зайдите в Панель управления Рутокен, нажмите Ввести PIN-код, выберите Администратор, затем введите пин-код. Нажмите Разблокировать. См. <a href=\"http://1c-edo.ru/handbook/24/4879/\">инструкцию</a>",
"RepairMethods": "",
"Anchor": "0x8010006C"
},
{
"ErrorText": "Выбран неизвестный алгоритм подписи",
"Reason": "- Выбраны неправильные настройки алгоритма в карточке программы электронной подписи.\n- Программа электронной подписи установлена некорректно.",
"Solution": "- Откройте карточку проблемной программы и перевыберите программу из списка (при этом обновятся все 5 полей в карточке программы, включая алгоритмы). После этого нажмите \"Записать и закрыть\". В форме настроек нажмите \"Обновить\". <a href=\"ОткрытьСписокПрограмм\">Открыть список программ электронной подписи</a>\n- Удалите все программы электронной подписи и установите только одну из них, так как установка нескольких программ электронной подписи на одном компьютере может вызвать эту ошибку.",
"RepairMethods": "",
"Anchor": "Выбран неизвестный алгоритм"
},
{
"ErrorText": "Выбран неизвестный алгоритм хеширования",
"Reason": "- Выбраны неправильные настройки алгоритма в карточке программы электронной подписи.\n- Программа электронной подписи установлена некорректно.",
"Solution": "- Откройте карточку проблемной программы и перевыберите программу из списка (при этом обновятся все 5 полей в карточке программы, включая алгоритмы). После этого нажмите \"Записать и закрыть\". В форме настроек нажмите \"Обновить\". <a href=\"ОткрытьСписокПрограмм\">Открыть список программ электронной подписи</a>\n- Удалите все программы электронной подписи и установите только одну из них, так как установка нескольких программ электронной подписи на одном компьютере может вызвать эту ошибку.",
"RepairMethods": "",
"Anchor": "Выбран неизвестный алгоритм"
},
{
"ErrorText": "Выбран неизвестный алгоритм шифрования",
"Reason": "- Выбраны неправильные настройки алгоритма в карточке программы электронной подписи.\n- Программа электронной подписи установлена некорректно.",
"Solution": "- Откройте карточку проблемной программы и перевыберите программу из списка (при этом обновятся все 5 полей в карточке программы, включая алгоритмы). После этого нажмите \"Записать и закрыть\". В форме настроек нажмите \"Обновить\". <a href=\"ОткрытьСписокПрограмм\">Открыть список программ электронной подписи</a>\n- Удалите все программы электронной подписи и установите только одну из них, так как установка нескольких программ электронной подписи на одном компьютере может вызвать эту ошибку.",
"RepairMethods": "",
"Anchor": "Выбран неизвестный алгоритм"
},
{
"ErrorText": "сертификат не прошел проверки по сроку действия при сверке с системными часами",
"Reason": "- Истек срок действия сертификата.\n- Не корректная дата и время на компьютере.",
"Solution": "- Подайте заявление на новый сертификат.\n- Установите корректную дату и время на компьютере.",
"RepairMethods": "",
"Anchor": "истек срок действия"
},
{
"ErrorText": "Ошибка при получении контекста модуля криптографии",
"Reason": "- Не установлена программа электронной подписи.\n- Неверно указаны настройки программы электронной подписи.",
"Solution": "- Установите программу для работы с электронной подписью.\n- Задайте общие настройки электронной подписи и шифрования. <a href=\"ОткрытьСписокПрограмм\">Открыть список программ электронной подписи</a>",
"RepairMethods": "",
"Anchor": "Контекст модуля криптографии"
},
{
"ErrorText": "Модуль криптографии не поддерживает алгоритмов подписи",
"Reason": "- Сертификат некорректно связан с закрытым ключом.\n- Программа электронной подписи установлена некорректно.",
"Solution": "- Переустановите сертификат в Личное хранилище через оснастку программы электронной подписи с привязкой к закрытому ключу. См. <a href=\"http://1c-edo.ru/handbook/28/4008/\">инструкцию</a>\n- Удалите все программы электронной подписи и установите только одну из них, так как установка нескольких программ электронной подписи на одном компьютере может вызвать эту ошибку.",
"RepairMethods": "",
"Anchor": "Модуль криптографии не поддерживает алгоритм"
},
{
"ErrorText": "Сертификат, связанный с закрытым ключом, указывает на модуль криптографии, отличный от текущего",
"Reason": "- При установке сертификата в операционной системе Windows закрытая часть ключа оказалась связана с некорректным типом в программе электронной подписи ViPNet CSP или КриптоПро CSP.\n- Отличается программа электронной подписи, заданная в настройках сертификата в информационной базе и у закрытой части ключа.",
"Solution": "- Переустановите сертификат через оснастку программы электронной подписи Vipnet CSP с привязкой к закрытому ключу. См. <a href=\"http://1c-edo.ru/handbook/24/4163/\">инструкцию</a>\n- Переустановите сертификат через оснастку программы электронной подписи КриптоПро CSP с привязкой к закрытому ключу. См. <a href=\"http://1c-edo.ru/handbook/24/4129/\">инструкцию</a>\n- Откройте <a href=\"ОткрытьСертификат\">карточку сертификата</a> и выберите правильную программу электронной подписи.\n- Добавьте новую программу электронной подписи. <a href=\"ОткрытьСписокПрограмм\">Открыть список программ электронной подписи</a>.",
"RepairMethods": "",
"Anchor": "Модуль криптографии неверный"
},
{
"ErrorText": "Программа для использования закрытого ключа не указана в сертификате",
"Reason": "Не заполнена программа электронной подписи в карточке сертификата.",
"Solution": "- Откройте <a href=\"ОткрытьСертификат\">карточку сертификата</a> и вручную укажите программу электронной подписи.\n- Повторно добавьте сертификат в список, чтобы программа электронной подписи в карточке сертификата заполнилась автоматически.",
"RepairMethods": "",
"Anchor": "не заполнена программа"
},
{
"ErrorText": "Не указан путь к программе",
"Reason": "Использование Vipnet CSP или других программ электронной подписи, не поддерживаемых платформой 1С:Предприятия в операционных системах Linux и macOS.",
"Solution": "Установите КриптоПро CSP для операционных систем Linux или macOS.",
"RepairMethods": "",
"Anchor": "Не указан путь к программе"
},
{
"ErrorText": "Язык описания абстрактного синтаксиса данных. Обнаружено неверное значение тега",
"Reason": "При шифровании в списке сертификатов для расшифровки выбран сертификат с несовместимым алгоритмом открытого ключа (алгоритмом подписи) или несовместимым алгоритмом шифрования.",
"Solution": "Уберите из списка сертификатов для расшифровки сертификат с несовместимым алгоритмом открытого ключа (алгоритмом подписи) или несовместимым алгоритмом шифрования.",
"RepairMethods": "",
"Anchor": "Неверные данные"
},
{
"ErrorText": "Неверные данные",
"Reason": "При шифровании в списке сертификатов для расшифровки выбран сертификат с несовместимым алгоритмом открытого ключа (алгоритмом подписи) или несовместимым алгоритмом шифрования.",
"Solution": "Уберите из списка сертификатов для расшифровки сертификат с несовместимым алгоритмом открытого ключа (алгоритмом подписи) или несовместимым алгоритмом шифрования.",
"RepairMethods": "",
"Anchor": "Неверные данные"
},
{
"ErrorText": "внутрен",
"Reason": "Программа электронной подписи установлена некорректно.",
"Solution": "Удалите все программы электронной подписи, почистите реестр с помощью утилиты КриптоПро <a href=\"https://www.cryptopro.ru/sites/default/files/public/cspclean.exe\">cspclean</a> и установите только одну из программ.",
"RepairMethods": "",
"Anchor": "Неверный ключ"
},
{
"ErrorText": "Произошла внутренняя ошибка",
"Reason": "Программа электронной подписи установлена некорректно.",
"Solution": "Удалите все программы электронной подписи, почистите реестр с помощью утилиты КриптоПро <a href=\"https://www.cryptopro.ru/sites/default/files/public/cspclean.exe\">cspclean</a> и установите только одну из программ.",
"RepairMethods": "",
"Anchor": "Неверный ключ"
},
{
"ErrorText": "0x00000056",
"Reason": "Указан неправильный пароль доступа к закрытому ключу.",
"Solution": "Убедитесь, что вводится правильный пароль (проверьте раскладку клавиатуры).См. <a href=\"http://1c-edo.ru/handbook/9/3981/\">инструкцию</a>.",
"RepairMethods": "",
"Anchor": "Неправильный пароль"
},
{
"ErrorText": "Контейнер закрытого ключа доступен, но операция с использованием этого контейнера завершилась неудачно",
"Reason": "- Указан неправильный пароль доступа к закрытому ключу.\n- Действие невозможно выполнить при снятом флажке \"Вводить пароль в программе электронной подписи\" (к примеру, если установлена усиленная защита закрытого ключа).",
"Solution": "- Убедитесь, что вводится правильный пароль (проверьте раскладку клавиатуры). См. <a href=\"http://1c-edo.ru/handbook/9/3984/\">инструкцию</a>\n- Установите флажок \"Вводить пароль в программе электронной подписи\" и повторите действие.",
"RepairMethods": "",
"Anchor": "Неправильный пароль"
},
{
"ErrorText": "контекст был получен в ограниченном режиме",
"Reason": "- Указан неправильный пароль доступа к закрытому ключу.\n- Действие невозможно выполнить при снятом флажке \"Вводить пароль в программе электронной подписи\" (к примеру, если установлена усиленная защита закрытого ключа).",
"Solution": "- Убедитесь, что вводится правильный пароль (проверьте раскладку клавиатуры). См. <a href=\"http://1c-edo.ru/handbook/9/3984/\">инструкцию</a>\n- Установите флажок \"Вводить пароль в программе электронной подписи\" и повторите действие.",
"RepairMethods": "",
"Anchor": "Неправильный пароль"
},
{
"ErrorText": "Цепочка сертификатов обработана, но прервана на корневом сертификате, который не является доверенным.",
"Reason": "Корневой сертификат не включен в список доверенных.",
"Solution": "Установите корневой сертификат удостоверяющего центра.",
"RepairMethods": "{\r\n\"МетодикиУстранения\": [\r\n\"УстановкаКорневогоСертификатаГУЦ\"\r\n]\r\n}",
"Anchor": "Нет корневого сертификата"
},
{
"ErrorText": "не имеет права на получение сертификата",
"Reason": "- Нет регистрации на http://portal.1c.ru.\n- Нет действующего тарифа \"Сервис 1С-Подпись\" (не подключен или не оплачен).\n- Уже использовано бесплатное получение электронной подписи по тарифу \"Сервис 1С-Подпись\".\n- В программе не настроено подключение к Интернет-поддержке пользователей или указаны учетные данные другого пользователя.\n- При работе через 1C-Fresh тариф \"Сервис 1С-Подпись\" не привязан к учетной записи.",
"Solution": "- Пройдите регистрацию на <a href=\"http://portal.1c.ru\">http://portal.1c.ru</a>\n- Обратитесь к обслуживающему партнеру 1С, за приобретением или оплатой тарифа \"сервис 1С:Подпись\".\n- Обратитесь к обслуживающему партнеру 1С за дополнительным получением электронной подписи.\n- Обратитесь к партнеру за уточнением логина и пароля к Интернет-поддержке пользователей, для которого куплен тариф \"Сервис 1С-Подпись\".\n- Обратитесь в техническую поддержку по адресу support@1cfresh.com, для привязки тарифа к учетной записи.",
"RepairMethods": "",
"Anchor": "Нет прав на получение сертификата"
},
{
"ErrorText": "Не предусмотрено использование ни одной программы с алгоритмом подписи",
"Reason": "Не заведена программа электронной подписи с необходимыми алгоритмами.",
"Solution": "- Добавьте новую программу электронной подписи в список программ. <a href=\"ОткрытьСписокПрограмм\">Открыть список программ электронной подписи</a>.\n- Среди имеющихся программ криптографии найдите нужную и перезаполните алгоритмы значениями по умолчанию, перевыбрав Представление.",
"RepairMethods": "",
"Anchor": "Нет программы с алгоритмом подписи"
},
{
"ErrorText": "0x00000000",
"Reason": "- Закрытый ключ для выбранного сертификата не установлен.\n- Закрытый ключ установлен, но сертификат не имеет с ним связи.",
"Solution": "- Установите закрытый ключ (вставить токен или флешку с файлом закрытого ключа).\n- Переустановите сертификат через оснастку программы электронной подписи с привязкой к закрытому ключу (см. <a href=\"http://1c-edo.ru/handbook/24/4179/\">инструкцию</a>)\n- Подайте заявление на новый сертификат, если закрытый ключ утерян.",
"RepairMethods": "",
"Anchor": "Нет связи с закрытым ключом"
},
{
"ErrorText": "Отсутствует набор ключей",
"Reason": "- Закрытый ключ для выбранного сертификата не установлен.\n- Закрытый ключ установлен, но сертификат не имеет с ним связи.",
"Solution": "- Установите закрытый ключ (вставить токен или флешку с файлом закрытого ключа).\n- Переустановите сертификат через оснастку программы электронной подписи с привязкой к закрытому ключу (см. <a href=\"http://1c-edo.ru/handbook/28/4008/\">инструкцию</a>)\n- Подайте заявление на новый сертификат, если закрытый ключ утерян.",
"RepairMethods": "",
"Anchor": "Нет связи с закрытым ключом"
},
{
"ErrorText": "Сертификат не имеет связи с закрытым ключом",
"Reason": "- Закрытый ключ для выбранного сертификата не установлен.\n- Закрытый ключ установлен, но сертификат не имеет с ним связи.",
"Solution": "- Установите закрытый ключ (вставить токен или флешку с файлом закрытого ключа).\n- Переустановите сертификат через оснастку программы электронной подписи с привязкой к закрытому ключу (см. <a href=\"http://1c-edo.ru/handbook/24/4179/\">инструкцию</a>)\n- Подайте заявление на новый сертификат, если закрытый ключ утерян.",
"RepairMethods": "",
"Anchor": "Нет связи с закрытым ключом"
},
{
"ErrorText": "Отсутствует ключ",
"Reason": "- Закрытый ключ для выбранного сертификата не установлен.\n- Закрытый ключ установлен, но сертификат не имеет с ним связи.",
"Solution": "- Установите закрытый ключ (вставить токен или флешку с файлом закрытого ключа).\n- Переустановите сертификат через оснастку программы электронной подписи с привязкой к закрытому ключу (см. <a href=\"http://1c-edo.ru/handbook/28/4008/\">инструкцию</a>)\n- Подайте заявление на новый сертификат, если закрытый ключ утерян.",
"RepairMethods": "",
"Anchor": "Нет связи с закрытым ключом"
},
{
"ErrorText": "Ошибка доступа",
"Reason": "- Истек срок действия закрытого ключа сертификата.\n- У программы электронной подписи (КриптоПро CSP) нет прав на изменение файлов закрытого ключа на диске.",
"Solution": "- Подайте заявление на новый сертификат.\n- Через оснастку КриптоПро CSP найдите контейнер закрытого ключа и определите его размещение, в операционной системе назначьте права на изменение этой папки и файлов в ней пользователю, от имени которого запускается 1С:Предприятие.",
"RepairMethods": "",
"Anchor": "Ошибка доступа"
},
{
"ErrorText": "Ошибка загрузки динамической библиотеки",
"Reason": "- Для операционных систем Linux или macOS в настройке «Путь к программе» указан некорректный путь к установленной программе электронной подписи КриптоПро CSP, либо сама программа установлена некорректно.\n- Из-за изменений в механизмах безопасности операционной системы macOS 10.15 Catalina нативные клиентские приложения могут не загружать внешние компоненты.",
"Solution": "- Проверьте наличие файлов в папках согласно указанным в настройке «Путь к программе». <a href=\"ОткрытьСписокПрограмм\">Открыть список программ электронной подписи</a>\n- Проверьте и настройте права чтения к файлам, указанным в настройке «Путь к программе»\n- Переустановите программу электронной подписи КриптоПро CSP в стандартную папку.",
"RepairMethods": "",
"Anchor": "Ошибка загрузки динамической библиотеки"
},
{
"ErrorText": "Ошибка инициализации криптопровайдера",
"Reason": "- Нет доступа к выбранному месту хранения ключей.\n- Нажата кнопка Отмена в форме выбора носителя контейнера ключей (выбор места хранения контейнера).\n",
"Solution": "Проверьте наличие доступа к выбранному месту хранения ключей.",
"RepairMethods": "",
"Anchor": "Ошибка инициализации криптопровайдера"
},
{
"ErrorText": "Ошибка создания ключевой пары",
"Reason": "- Не установлен биологический датчик случайных чисел в программе электронной подписи.\n- Пользователь нажал Отмена в программе электронной подписи в форме датчик случайных чисел.",
"Solution": "Добавьте датчик случайных чисел в программе электронной подписи.",
"RepairMethods": "",
"Anchor": "Ошибка создания ключевой пары"
},
{
"ErrorText": "Не удалось проверить сертификат в списке отозванных",
"Reason": "- Не установлен список отозванных сертификатов или сервис проверки отозванных сертификатов недоступен.\n- Закончился срок действия списка отзыва.",
"Solution": "- Получите список отозванных сертификатов в Удостоверяющем центре и установите его. См. <a href=\"http://1c-edo.ru/handbook/24/2517/\">инструкцию</a>\n- Обратитесь в Удостоверяющий центр для обновления списка отзыва (в случае окончания его срока действия).",
"RepairMethods": "{\r\n\"МетодикиУстранения\": [\r\n\"УстановкаСпискаОтзываСертификатов\"\r\n]\r\n}",
"Anchor": "Сервер offline"
},
{
"ErrorText": "Сертификат не найден на компьютере",
"Reason": "Выбранный сертификат не установлен в Личное хранилище сертификатов или был удален из него.",
"Solution": "Установите сертификат в Личное хранилище сертификатов пользователя операционной системы. См. <a href=\"http://1c-edo.ru/handbook/28/4011/\">инструкцию</a>",
"RepairMethods": "",
"Anchor": "сертификат не установлен на компьютере"
},
{
"ErrorText": "Сертификат не установлен на компьютере",
"Reason": "Выбранный сертификат не установлен в Личное хранилище сертификатов или был удален из него.",
"Solution": "Установите сертификат в Личное хранилище сертификатов пользователя операционной системы. См. <a href=\"http://1c-edo.ru/handbook/28/4011/\">инструкцию</a>",
"RepairMethods": "",
"Anchor": "сертификат не установлен на компьютере"
},
{
"ErrorText": "Указан неверный алгоритм",
"Reason": "- Сертификат некорректно связан с закрытым ключом.\n- Включен Winlogon в КриптоПро CSP.",
"Solution": "- Переустановите сертификат через оснастку программы электронной подписи с привязкой к закрытому ключу. См. <a href=\"http://1c-edo.ru/handbook/28/4008/\">инструкцию</a>\n- Отключите Winlogon в программе электронной подписи КриптоПро CSP.",
"RepairMethods": "",
"Anchor": "Указан неверный алгоритм"
},
{
"ErrorText": "Ни один из файлов не существует",
"Reason": "- Программа электронной подписи не установлена.\n- В настройке «Путь к программе» указан некорректный путь (или пути через двоеточие) к файлам модулей (библиотек) программы электронной подписи.",
"Solution": "- Установите программу для работы с электронной подписью.\n- Укажите в настройке \"Путь к программе\" корректный путь (или пути через двоеточие) к файлам модулей (библиотек) программы электронной подписи. <a href=\"ОткрытьСписокПрограмм\">Открыть список программ электронной подписи</a>",
"RepairMethods": "",
"Anchor": "Файл не существует"
},
{
"ErrorText": "Файл не существует",
"Reason": "- Программа электронной подписи не установлена.\n- В настройке «Путь к программе» указан некорректный путь (или пути через двоеточие) к файлам модулей (библиотек) программы электронной подписи.",
"Solution": "- Установите программу для работы с электронной подписью.\n- Укажите в настройке \"Путь к программе\" корректный путь (или пути через двоеточие) к файлам модулей (библиотек) программы электронной подписи. <a href=\"ОткрытьСписокПрограмм\">Открыть список программ электронной подписи</a>",
"RepairMethods": "",
"Anchor": "Файл не существует"
},
{
"ErrorText": "Хеш-значение неправильное",
"Reason": "- Подпись не является достоверной.\n- После подписания изменились данные объекта.",
"Solution": "Выберите корректный объект.",
"RepairMethods": "",
"Anchor": "Хеш-значение"
},
{
"ErrorText": "При получении данных для подписания возникла ошибка: Некорректный тип данных: Неопределенно",
"Reason": "- При добавлении файла в базу произошел сбой и его содержимое стало не консистентным.\n- Исходный файл «битый».",
"Solution": "- Удалить испорченный файл из базы и выполнить его повторное добавление, убедившись, что при этом не возникает ошибок.\n- Повторно получить исходный файл.",
"RepairMethods": "",
"Anchor": "Некорректный тип данных: Неопределенно"
},
{
"ErrorText": "Couldn't resolve host name",
"Reason": "- Сервер временно не доступен.\n- Неправильные параметры запроса.",
"Solution": "- Выполните проверку сертификата повторно.\n- Проверьте настройки сети и работоспособность сервера DSS.\n- Проверьте настройки и права сервера 1С на подключение к сервису DSS.\n- Проверьте настройки для TLS подключения (сертификаты сервера).\n",
"RepairMethods": "",
"Anchor": "Couldn't resolve host name"
},
{
"ErrorText": "Не удалось получить доверенную метку времени. Нераспознанный или неподдерживаемый идентификатор алгоритма.",
"Reason": "- Указан нерабочий адрес сервера меток времени.\n- Сервер меток времени не доступен в данный момент.",
"Solution": "- Укажите в настройках другой сервер меток времени: для этого перейдите в раздел Администрирование, затем в раздел Общие настройки, разверните группу Электронная подпись и шифрование. Замените первое значение в поле Адреса серверов меток времени.\n- Проверьте доступность серверов меток времени и повторите попытку подписи.",
"RepairMethods": "",
"Anchor": "Не удалось получить доверенную метку времени"
},
{
"ErrorText": "0x000004C7",
"Reason": "Программа криптографии (в частности Vipnet) не обнаружила закрытого ключа, размещение которого указано в имеющейся связке с открытой частью ключа (к примеру, переименована папка, ключ был перемещен в другую папку).",
"Solution": "- Определите новое размещение закрытого ключа и переустановите сертификат через оснастку программы электронной подписи с привязкой к закрытому ключу (см. <a href=\"http://1c-edo.ru/handbook/24/4179/\">инструкцию</a>)¶- Подайте заявление на новый сертификат, если закрытый ключ утерян.",
"RepairMethods": "",
"Anchor": "0x000004C7"
},
{
"ErrorText": "Не определен набор ключей",
"Reason": "Нет связи с закрытой частью ключа, размещенной на сервере DSS.",
"Solution": "- В настройках КриптоПРО CSP попробуйте отключиться от сервера и заново подключиться (возможно вы подключены не с тем логином).\n- Проверьте отсутствие ошибки в криптопровайдере: запустите инструменты КриптоПро CSP, перейдите к пункту \"Создание подписи\" и попытайтесь выполнить подпись. При наличии ошибки обратитесь в тех.поддержку организации, предоставляющей услуги по удаленному хранению закрытого ключа.",
"RepairMethods": "",
"Anchor": "Не определен набор ключей"
}
],
"LastChangeDate": "2022-06-06T17:16:06",
"Version": "2.0.0.4"
}
@@ -28,4 +28,13 @@
<comment>АПК:497 Не подлежит переводу, находится в локализованной части</comment> <comment>АПК:497 Не подлежит переводу, находится в локализованной части</comment>
<templateType>BinaryData</templateType> <templateType>BinaryData</templateType>
</templates> </templates>
<templates uuid="0e7a34a8-ce5a-4767-8283-fd094e13d969">
<name>КлассификаторОшибокКриптографии</name>
<synonym>
<key>ru</key>
<value>Классификатор ошибок криптографии</value>
</synonym>
<comment>АПК:497 Не подлежит переводу, находится в локализованной части</comment>
<templateType>BinaryData</templateType>
</templates>
</mdclass:DataProcessor> </mdclass:DataProcessor>
@@ -75,7 +75,7 @@
&НаСервере &НаСервере
Процедура ОтключитьНапоминание(ПараметрыНапоминания) Процедура ОтключитьНапоминание(ПараметрыНапоминания)
НапоминанияПользователяСлужебный.ОтключитьНапоминание(ПараметрыНапоминания, Ложь); НапоминанияПользователяСлужебный.ОтключитьНапоминание(ПараметрыНапоминания, Ложь, Истина);
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -100,6 +100,7 @@
ТекущийОбъект.ВремяСобытия = ТекущийОбъект.ВремяСобытия + 1; ТекущийОбъект.ВремяСобытия = ТекущийОбъект.ВремяСобытия + 1;
КонецЦикла; КонецЦикла;
КонецЕсли; КонецЕсли;
ТекущийОбъект.ЗаписьИсторииДанных.ПредставленияПолейДополнительныхДанных.Вставить("БезОповещенияКлиента", "");
КонецПроцедуры КонецПроцедуры
@@ -293,7 +294,7 @@
&НаСервере &НаСервере
Процедура ОтключитьНапоминание() Процедура ОтключитьНапоминание()
НапоминанияПользователяСлужебный.ОтключитьНапоминание(ИсходныеПараметры, Ложь); НапоминанияПользователяСлужебный.ОтключитьНапоминание(ИсходныеПараметры, Ложь, Истина);
КонецПроцедуры КонецПроцедуры
&НаСервереБезКонтекста &НаСервереБезКонтекста
@@ -134,12 +134,12 @@
&НаСервере &НаСервере
Процедура ПодключитьНапоминание(ПараметрыНапоминания) Процедура ПодключитьНапоминание(ПараметрыНапоминания)
НапоминанияПользователяСлужебный.ПодключитьНапоминание(ПараметрыНапоминания, Истина); НапоминанияПользователяСлужебный.ПодключитьНапоминание(ПараметрыНапоминания, Истина, Истина);
КонецПроцедуры КонецПроцедуры
&НаСервере &НаСервере
Процедура ОтключитьНапоминание(ПараметрыНапоминания) Процедура ОтключитьНапоминание(ПараметрыНапоминания)
НапоминанияПользователяСлужебный.ОтключитьНапоминание(ПараметрыНапоминания); НапоминанияПользователяСлужебный.ОтключитьНапоминание(ПараметрыНапоминания, , Истина);
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -8,9 +8,23 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОписаниеПеременных
Перем СтарыеЗаписи, ГраницаСрокаНапоминания;
#КонецОбласти
#Область ОбработчикиСобытий #Область ОбработчикиСобытий
// АПК:75-выкл оповещение о напоминаниях должно быть при любом их изменении.
Процедура ПередЗаписью(Отказ, Замещение) Процедура ПередЗаписью(Отказ, Замещение)
Если Не БезОповещенияКлиента(ЭтотОбъект) Тогда
ГраницаСрокаНапоминания = ТекущаяДатаСеанса()
+ НапоминанияПользователяСлужебный.ЗапасВремениНапоминанийДляКэша();
СтарыеЗаписи = СтарыеЗаписи(ЭтотОбъект, Отказ, Замещение);
КонецЕсли;
Если ОбменДанными.Загрузка Тогда Если ОбменДанными.Загрузка Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -18,10 +32,154 @@
Для Каждого Запись Из ЭтотОбъект Цикл Для Каждого Запись Из ЭтотОбъект Цикл
Запись.ПредставлениеИсточника = ОбщегоНазначения.ПредметСтрокой(Запись.Источник); Запись.ПредставлениеИсточника = ОбщегоНазначения.ПредметСтрокой(Запись.Источник);
КонецЦикла; КонецЦикла;
КонецПроцедуры КонецПроцедуры
Процедура ПриЗаписи(Отказ, Замещение)
Если Не БезОповещенияКлиента(ЭтотОбъект) Тогда
ОтправитьОповещениеКлиенту(СтарыеЗаписи, ЭтотОбъект, Отказ, Замещение);
КонецЕсли;
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
// АПК:75-вкл
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция БезОповещенияКлиента(ТекущийОбъект)
Возврат ТекущийОбъект.ЗаписьИсторииДанных.ПредставленияПолейДополнительныхДанных.Получить("БезОповещенияКлиента") <> Неопределено
Или ТекущийОбъект.ДополнительныеСвойства.Свойство("БезОповещенияКлиента");
КонецФункции
Процедура ОтправитьОповещениеКлиенту(СтарыеЗаписи, НовыеЗаписи, Отказ, Замещение)
Если Отказ
Или Не ПолучитьФункциональнуюОпцию("ИспользоватьНапоминанияПользователя") Тогда
Возврат;
КонецЕсли;
СписокПолей = "Пользователь, ВремяСобытия, Источник, СрокНапоминания, Описание";
Если Замещение Тогда
ИзмененныеЗаписи = ИзмененныеЗаписи(СтарыеЗаписи, НовыеЗаписи, СписокПолей);
Иначе
ИзмененныеЗаписи = ЭтотОбъект;
КонецЕсли;
НапоминанияПользователей = Новый Соответствие;
Для Каждого Запись Из ИзмененныеЗаписи Цикл
Если Запись.СрокНапоминания > ГраницаСрокаНапоминания Тогда
Продолжить;
КонецЕсли;
Напоминания = НапоминанияПользователей.Получить(Запись.Пользователь);
Если Напоминания = Неопределено Тогда
Напоминания = НапоминанияПользователяСлужебный.НовыеИзмененныеНапоминания();
НапоминанияПользователей.Вставить(Запись.Пользователь, Напоминания);
КонецЕсли;
Свойства = Новый Структура(СписокПолей);
ЗаполнитьЗначенияСвойств(Свойства, Запись);
Свойства.Вставить("ИндексКартинки", 2);
Если Не Замещение Или Запись.ВидИзмененияСтроки = 1 Тогда
Напоминания.Добавленные.Добавить(Свойства);
Иначе
Напоминания.Удаленные.Добавить(Свойства);
КонецЕсли;
КонецЦикла;
ИмяОповещения = НапоминанияПользователяКлиентСервер.ИмяСерверногоОповещения();
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
Для Каждого КлючИЗначение Из НапоминанияПользователей Цикл
ПользовательИБ = Пользователи.НайтиПоСсылке(КлючИЗначение.Ключ);
Если ПользовательИБ = Неопределено Тогда
Продолжить;
КонецЕсли;
Адресаты = Новый Соответствие;
Адресаты.Вставить(ПользовательИБ.УникальныйИдентификатор,
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве("*"));
СерверныеОповещения.ОтправитьСерверноеОповещение(ИмяОповещения,
КлючИЗначение.Значение, Адресаты);
КонецЦикла;
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
КонецПроцедуры
Функция СтарыеЗаписи(НаборЗаписей, Отказ, Замещение)
Если Отказ
Или Не Замещение
Или Не ПолучитьФункциональнуюОпцию("ИспользоватьНапоминанияПользователя") Тогда
Возврат Неопределено;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Напоминания.Пользователь КАК Пользователь,
| Напоминания.ВремяСобытия КАК ВремяСобытия,
| Напоминания.Источник КАК Источник,
| Напоминания.СрокНапоминания КАК СрокНапоминания,
| Напоминания.Описание КАК Описание,
| -1 КАК ВидИзмененияСтроки
|ИЗ
| РегистрСведений.НапоминанияПользователя КАК Напоминания
|ГДЕ
| Напоминания.СрокНапоминания <= &ГраницаСрокаНапоминания
| И &УсловиеОтбора";
Запрос.УстановитьПараметр("ГраницаСрокаНапоминания", ГраницаСрокаНапоминания);
УсловиеОтбора = "ИСТИНА";
Для Каждого ЭлементОтбора Из НаборЗаписей.Отбор Цикл
Если Не ЭлементОтбора.Использование Тогда
Продолжить;
КонецЕсли;
УсловиеОтбора = УсловиеОтбора + "
| И " + ЭлементОтбора.Имя + " = &" + ЭлементОтбора.Имя;
Запрос.УстановитьПараметр(ЭлементОтбора.Имя, ЭлементОтбора.Значение);
КонецЦикла;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеОтбора", УсловиеОтбора);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Функция ИзмененныеЗаписи(СтарыеЗаписи, НовыеЗаписи, СписокПолей)
Для Каждого Запись Из НовыеЗаписи Цикл
Если Запись.СрокНапоминания > ГраницаСрокаНапоминания Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = СтарыеЗаписи.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Запись);
НоваяСтрока.ВидИзмененияСтроки = 1;
КонецЦикла;
СтарыеЗаписи.Свернуть(СписокПолей, "ВидИзмененияСтроки");
Строки = СтарыеЗаписи.НайтиСтроки(Новый Структура("ВидИзмененияСтроки", 0));
Для Каждого Строка Из Строки Цикл
СтарыеЗаписи.Удалить(Строка);
КонецЦикла;
Возврат СтарыеЗаписи;
КонецФункции
#КонецОбласти
#Иначе #Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли #КонецЕсли
@@ -325,8 +325,10 @@
ТекущееФоновоеЗадание = ТекущийСеанс.ПолучитьФоновоеЗадание(); ТекущееФоновоеЗадание = ТекущийСеанс.ПолучитьФоновоеЗадание();
МетаданныеЗадания = Метаданные.РегламентныеЗадания.ЗаполнениеПараметровРаботыРасширений; МетаданныеЗадания = Метаданные.РегламентныеЗадания.ЗаполнениеПараметровРаботыРасширений;
Запустить = ТекущееФоновоеЗадание = Неопределено Запустить = ТекущееФоновоеЗадание <> Неопределено
Или ТекущееФоновоеЗадание.ИмяМетода <> МетаданныеЗадания.ИмяМетода; И ТекущееФоновоеЗадание.ИмяМетода <> МетаданныеЗадания.ИмяМетода
И (Не ОбщегоНазначения.РазделениеВключено()
Или ОбластьДанныхАктивноИспользуется());
ВключитьЗаполнениеПараметровРаботыРасширений(Запустить); ВключитьЗаполнениеПараметровРаботыРасширений(Запустить);
@@ -813,6 +815,42 @@
КонецФункции КонецФункции
Функция ОбластьДанныхАктивноИспользуется()
Сутки = 60*60*24;
ИмяКонстанты = "ДатаПоследнегоСтартаКлиентскогоСеанса";
МетаданныеКонстанты = Метаданные.Константы.Найти(ИмяКонстанты);
Если МетаданныеКонстанты <> Неопределено Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ГраницаСтарта", ТекущаяУниверсальнаяДата() - Сутки*2);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА КАК ЗначениеИстина
|ИЗ
| &Таблица КАК Таблица
|ГДЕ
| Таблица.Значение >= &ГраницаСтарта";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Таблица", МетаданныеКонстанты.ПолноеИмя());
Если Не Запрос.Выполнить().Пустой() Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ГраницаАктивности",
НачалоДня(ТекущаяДатаСеанса() - 60*60) - Сутки);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА КАК ЗначениеИстина
|ИЗ
| РегистрСведений.СведенияОПользователях КАК СведенияОПользователях
|ГДЕ
| СведенияОПользователях.ДатаПоследнейАктивности >= &ГраницаАктивности";
Возврат Не Запрос.Выполнить().Пустой();
КонецФункции
// Для процедур ПриПервомСерверномВызове, ПриУспешномНачалеВыполненияРегламентногоЗадания, // Для процедур ПриПервомСерверномВызове, ПриУспешномНачалеВыполненияРегламентногоЗадания,
// общей формы Расширения и СтандартныеПодсистемыСервер.ПослеЗагрузкиДанных. // общей формы Расширения и СтандартныеПодсистемыСервер.ПослеЗагрузкиДанных.
// //
@@ -882,10 +882,16 @@
МодульОбменДаннымиСервер.ЗагрузитьПриоритетныеДанныеВПодчиненныйУзелРИБ(); МодульОбменДаннымиСервер.ЗагрузитьПриоритетныеДанныеВПодчиненныйУзелРИБ();
КонецЕсли; КонецЕсли;
ИначеЕсли ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
МодульАвтономнаяРаботаСлужебный = ОбщегоНазначения.ОбщийМодуль("АвтономнаяРаботаСлужебный");
Если МодульАвтономнаяРаботаСлужебный.НеобходимоВыполнитьНастройкуАвтономногоРабочегоМестаПриПервомЗапуске() Тогда
МодульАвтономнаяРаботаСлужебный.ВыполнитьНастройкуАвтономногоРабочегоМестаПриПервомЗапуске(Истина);
КонецЕсли;
КонецЕсли;
Если СообщитьПрогресс Тогда Если СообщитьПрогресс Тогда
ДлительныеОперации.СообщитьПрогресс(5); ДлительныеОперации.СообщитьПрогресс(5);
КонецЕсли; КонецЕсли;
КонецЕсли;
// Проверка загрузки идентификаторов объектов метаданных из главного узла. // Проверка загрузки идентификаторов объектов метаданных из главного узла.
СписокКритичныхИзменений = ""; СписокКритичныхИзменений = "";
@@ -23,6 +23,16 @@
Блокировка = Новый БлокировкаДанных; Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("РегистрСведений.СоставыГруппПользователей"); Блокировка.Добавить("РегистрСведений.СоставыГруппПользователей");
ЭлементБлокировки = Блокировка.Добавить("Справочник.Пользователи");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ГруппыПользователей");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ВнешниеПользователи");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ГруппыВнешнихПользователей");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
Блокировка.Заблокировать(); Блокировка.Заблокировать();
@@ -30,7 +30,7 @@
Процедура ОбновитьВерсиюДатЗапретаИзмененияПриЗагрузкеДанных() Процедура ОбновитьВерсиюДатЗапретаИзмененияПриЗагрузкеДанных()
// Изменения в обычном режиме записи регистрируются в общем модуле ПользователиСлужебный // Изменения в обычном режиме записи регистрируются в общем модуле ПользователиСлужебный
// в процедуре ПослеОбновленияСоставовГруппПользователейПереопределяемый. // в процедуре ПослеОбновленияСоставовГруппПользователей.
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДатыЗапретаИзменения") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДатыЗапретаИзменения") Тогда
МодульДатыЗапретаИзмененияСлужебный = ОбщегоНазначения.ОбщийМодуль("ДатыЗапретаИзмененияСлужебный"); МодульДатыЗапретаИзмененияСлужебный = ОбщегоНазначения.ОбщийМодуль("ДатыЗапретаИзмененияСлужебный");
@@ -26,11 +26,12 @@
ПериодСравненияНастройка = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ПериодСравнения"); ПериодСравненияНастройка = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ПериодСравнения");
ПериодСравненияНастройкаПользовательская = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПериодСравненияНастройка.ИдентификаторПользовательскойНастройки); ПериодСравненияНастройкаПользовательская = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПериодСравненияНастройка.ИдентификаторПользовательскойНастройки);
Период = ПериодСравненияНастройкаПользовательская.Значение; // СтандартныйПериод
Если ПериодСравненияНастройкаПользовательская <> Неопределено Если ПериодСравненияНастройкаПользовательская <> Неопределено
И ПериодСравненияНастройкаПользовательская.Использование Тогда И ПериодСравненияНастройкаПользовательская.Использование Тогда
Период = ПериодСравненияНастройкаПользовательская.Значение; // СтандартныйПериод
ПараметрДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериодаСравненияЧисло"); ПараметрДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериодаСравненияЧисло");
ПараметрДанных.Значение = (УниверсальноеВремя(Период.ДатаНачала) - Дата(1,1,1)) * 1000; ПараметрДанных.Значение = (УниверсальноеВремя(Период.ДатаНачала) - Дата(1,1,1)) * 1000;
ПараметрДанных.Использование = Истина; ПараметрДанных.Использование = Истина;
@@ -398,6 +398,26 @@
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Если СвойстваНастройки.ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных.ОбъектМетаданных") Тогда
Если ТипЗнч(СвойстваНастройки.ПользовательскаяНастройкаКД.Значение) = Тип("СписокЗначений") Тогда
Для Каждого Элемент Из СвойстваНастройки.ПользовательскаяНастройкаКД.Значение Цикл
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(Элемент.Значение);
Если ОбъектМетаданных = Неопределено Тогда
Продолжить;
КонецЕсли;
Элемент.Представление = ОбъектМетаданных.Представление();
КонецЦикла;
ИначеЕсли ТипЗнч(СвойстваНастройки.ПользовательскаяНастройкаКД.Значение) = Тип("Строка") Тогда
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(СвойстваНастройки.ПользовательскаяНастройкаКД.Значение);
Если ОбъектМетаданных = Неопределено Тогда
Возврат;
КонецЕсли;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(СвойстваНастройки.ПользовательскаяНастройкаКД.Значение, ОбъектМетаданных.Представление());
СвойстваНастройки.ПользовательскаяНастройкаКД.Значение = СписокЗначений;
КонецЕсли;
КонецЕсли;
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
@@ -624,6 +624,93 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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> <object>
<name>InformationRegister.ДомаЗданияСтроения</name> <name>InformationRegister.ДомаЗданияСтроения</name>
<right> <right>
@@ -5429,93 +5516,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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> <object>
<name>CommonCommand.ЗагрузитьКурсыВалют</name> <name>CommonCommand.ЗагрузитьКурсыВалют</name>
<right> <right>
@@ -286,6 +286,33 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>InformationRegister.ДомаЗданияСтроения</name> <name>InformationRegister.ДомаЗданияСтроения</name>
<right> <right>
@@ -2754,33 +2781,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>SessionParameter.ОбластьДанныхЗначение</name> <name>SessionParameter.ОбластьДанныхЗначение</name>
<right> <right>
@@ -202,6 +202,33 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>InformationRegister.ДомаЗданияСтроения</name> <name>InformationRegister.ДомаЗданияСтроения</name>
<right> <right>
@@ -2257,33 +2284,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>SessionParameter.ОбластьДанныхЗначение</name> <name>SessionParameter.ОбластьДанныхЗначение</name>
<right> <right>
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects> <setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault> <setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects> <independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<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>
</object>
<object> <object>
<name>CommonCommand.СвязатьсяСоСпециалистомОнлайнПоддержки</name> <name>CommonCommand.СвязатьсяСоСпециалистомОнлайнПоддержки</name>
<right> <right>
@@ -38,31 +65,4 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
</Rights> </Rights>
@@ -52,6 +52,33 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>WebService.Exchange.Operation.PutFileIntoStorage</name> <name>WebService.Exchange.Operation.PutFileIntoStorage</name>
<right> <right>
@@ -569,33 +596,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>WebService.Exchange_3_0_1_1.Operation.PutFilePart</name> <name>WebService.Exchange_3_0_1_1.Operation.PutFilePart</name>
<right> <right>
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects> <setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault> <setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects> <independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<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>
</object>
<object> <object>
<name>InformationRegister.ДомаЗданияСтроения</name> <name>InformationRegister.ДомаЗданияСтроения</name>
<right> <right>
@@ -256,31 +283,4 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
</Rights> </Rights>
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects> <setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault> <setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects> <independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<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>
</object>
<object> <object>
<name>DataProcessor.ЗагрузкаКлассификатораБанков.Command.ЗагрузкаКлассификатораБанков</name> <name>DataProcessor.ЗагрузкаКлассификатораБанков.Command.ЗагрузкаКлассификатораБанков</name>
<right> <right>
@@ -60,31 +87,4 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
</Rights> </Rights>
@@ -42,6 +42,33 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>Catalog.ВариантыОтчетов.Command.Открыть</name> <name>Catalog.ВариантыОтчетов.Command.Открыть</name>
<right> <right>
@@ -179,31 +206,4 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
</Rights> </Rights>
@@ -192,6 +192,33 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>Constant.ЗапретитьОтображениеНебезопасногоСодержимогоВПисьмах</name> <name>Constant.ЗапретитьОтображениеНебезопасногоСодержимогоВПисьмах</name>
<right> <right>
@@ -1411,33 +1438,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>DocumentJournal.Взаимодействия.Command.НаписатьSMSПоПредмету</name> <name>DocumentJournal.Взаимодействия.Command.НаписатьSMSПоПредмету</name>
<right> <right>
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects> <setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault> <setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects> <independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<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>
</object>
<object> <object>
<name>Catalog.ВидыКонтактнойИнформации</name> <name>Catalog.ВидыКонтактнойИнформации</name>
<right> <right>
@@ -81,31 +108,4 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
</Rights> </Rights>
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects> <setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault> <setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects> <independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<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>
</object>
<object> <object>
<name>CommonForm.ГруппыПользователей</name> <name>CommonForm.ГруппыПользователей</name>
<right> <right>
@@ -113,31 +140,4 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
</Rights> </Rights>
@@ -26,6 +26,33 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>Catalog.Календари</name> <name>Catalog.Календари</name>
<right> <right>
@@ -88,31 +115,4 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
</Rights> </Rights>
@@ -18,6 +18,33 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>Report.ДатыЗапретаИзменения</name> <name>Report.ДатыЗапретаИзменения</name>
<right> <right>
@@ -85,33 +112,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<restrictionTemplate> <restrictionTemplate>
<name>ДляРегистра(Регистр, Поле1, Поле2, Поле3, Поле4, Поле5)</name> <name>ДляРегистра(Регистр, Поле1, Поле2, Поле3, Поле4, Поле5)</name>
<condition>// ДляРегистра(Регистр, Поле1, Поле2 = "", Поле3 = "", Поле4 = "", Поле5 = "") <condition>// ДляРегистра(Регистр, Поле1, Поле2 = "", Поле3 = "", Поле4 = "", Поле5 = "")
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects> <setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault> <setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects> <independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<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>
</object>
<object> <object>
<name>InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам</name> <name>InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам</name>
<right> <right>
@@ -109,31 +136,4 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
</Rights> </Rights>
@@ -81,6 +81,33 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>CommonForm.РедактированиеГиперссылки</name> <name>CommonForm.РедактированиеГиперссылки</name>
<right> <right>
@@ -173,31 +200,4 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
</Rights> </Rights>
@@ -44,6 +44,33 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>Task.ЗадачаИсполнителя</name> <name>Task.ЗадачаИсполнителя</name>
<right> <right>
@@ -204,33 +231,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>InformationRegister.ДанныеБизнесПроцессов.Command.МоиБизнесПроцессы</name> <name>InformationRegister.ДанныеБизнесПроцессов.Command.МоиБизнесПроцессы</name>
<right> <right>
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects> <setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault> <setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects> <independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<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>
</object>
<object> <object>
<name>Catalog.Заметки</name> <name>Catalog.Заметки</name>
<right> <right>
@@ -77,33 +104,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>Catalog.Заметки.Command.ВсеЗаметки</name> <name>Catalog.Заметки.Command.ВсеЗаметки</name>
<right> <right>
@@ -26,6 +26,33 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>InformationRegister.ДанныеПроизводственногоКалендаря</name> <name>InformationRegister.ДанныеПроизводственногоКалендаря</name>
<right> <right>
@@ -107,31 +134,4 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
</Rights> </Rights>
@@ -26,6 +26,33 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>Catalog.Валюты</name> <name>Catalog.Валюты</name>
<right> <right>
@@ -76,31 +103,4 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
</Rights> </Rights>
@@ -65,6 +65,33 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>Catalog.ВариантыОтчетов.Command.Открыть</name> <name>Catalog.ВариантыОтчетов.Command.Открыть</name>
<right> <right>
@@ -172,33 +199,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<restrictionTemplate> <restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name> <name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "") <condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -14,6 +14,33 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<object> <object>
<name>Catalog.ШаблоныСообщенийПрисоединенныеФайлы</name> <name>Catalog.ШаблоныСообщенийПрисоединенныеФайлы</name>
<right> <right>
@@ -194,33 +221,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </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>
</object>
<restrictionTemplate> <restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name> <name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "") <condition>// ДляОбъекта(ПолеОбъекта = "")
Loaded 100 of 155 files, more files were not shown because too many files have changed in this diff. Show more