3_1_7_343

This commit is contained in:
Компания 1С committed 2023-03-02 15:18:00 +03:00
1 parent 5b4261719f
commit d267fd44a9
74 files changed
+6635 -1143

No files matched your search

@@ -182,7 +182,6 @@
</row>
</rowsItem>
<templateMode>true</templateMode>
<defaultFormatIndex>18</defaultFormatIndex>
<height>11</height>
<vgRows>11</vgRows>
<merge>
@@ -325,10 +324,14 @@
<endColumn>2</endColumn>
</area>
</namedItem>
<groupsBackColor>#000000</groupsBackColor>
<groupsColor>#000000</groupsColor>
<headersBackColor>#000000</headersBackColor>
<headersColor>#000000</headersColor>
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">None</v8ui:style>
</line>
<line width="3" gap="false">
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">Solid</v8ui:style>
</line>
<font faceName="Arial" height="6" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
@@ -382,6 +385,8 @@
<width>72</width>
</format>
<format>
<leftBorder>1</leftBorder>
<topBorder>1</topBorder>
<width>72</width>
<protection>true</protection>
</format>
@@ -462,9 +467,6 @@
<fillType>Parameter</fillType>
<protection>true</protection>
</format>
<format>
<width>72</width>
</format>
<picture>
<index>0</index>
<picture/>
@@ -5,8 +5,7 @@
</li>
<li>Напишите <strong>Наименование</strong>.
</li>
<li>В поле <strong>Сервис</strong> выберите из списка, с каким облачным сервисом будут синхронизироваться файлы данной учетной записи.
</li>
<li>В поле <strong>Сервис</strong> выберите из списка, с каким облачным сервисом будут синхронизироваться файлы данной учетной записи, в поле отобразится URL-адрес облачного сервиса.</li>
<li>Укажите <strong>Логин</strong> и <strong>Пароль</strong> - данные для доступа, полученные при регистрации на выбранном облачном сервисе.
</li>
<li>В поле <strong>Корневая папка</strong> напишите папку, в которой будут храниться все файлы для этой учетной записи. Ее необходимо создать самостоятельно на облачном сервисе.
@@ -16,6 +15,6 @@
</li>
<li>Если файлы в облаке редактирует только один пользователь, рекомендуется указать его в качестве автора новых и измененных файлов.
<ul><li>В этом случае с помощью переключателя выберите <strong>Пользователь</strong>, с помощью кнопки <img src="StdPicture.InputFieldSelect"></img> выберите тип пользователей, нажмите <strong>ОК</strong>. Затем выберите нужного пользователя из соответствующего списка.</li></ul></li></ul></li></ul><h3>Проверка учетной записи</h3>
<ul><li>С помощью кнопки <strong>Проверить настройки</strong> в окне учетной записи можно проконтролировать правильность заполнения данных учетной записи. В случае успешного завершения проверки выводятся данные о размере свободного места в облачном сервисе и объеме, занятом файлами.</li></ul><h3>См. также:</h3>
<ul><li>С помощью кнопки <strong>Проверить настройки</strong> в окне учетной записи можно проконтролировать правильность заполнения данных учетной записи. В случае успешного завершения проверки <img src="CommonPicture.ВнешняяКомпонентаДоступна"></img> выводятся данные о размере свободного места в облачном сервисе и объеме, занятом файлами. В случае неудачной проверки заполнения данных <img src="StdPicture.Delete"></img> выводятся рекомендации по устранению данной ошибки (например, можно выбрать другой сервис для синхронизации файлов или обратиться в поддержку сервиса) и технические подробности, которые можно отправить в поддержку сервиса. </li></ul><h3>См. также:</h3>
<ul><li>
<div><a href="InformationRegister.НастройкиСинхронизацииФайлов/Help">Настройки синхронизации файлов</a>.</div></li></ul></body></html>
@@ -1409,11 +1409,15 @@
ОписаниеОповещение = Новый ОписаниеОповещения("ПослеВыбораФайлов", ЭтотОбъект, ДополнительныеПараметры);
ПараметрыЗагрузкиФайла = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузкиФайла.ИдентификаторФормы = ЭтотОбъект.УникальныйИдентификатор;
ПараметрыЗагрузкиФайла.ИдентификаторФормы = УникальныйИдентификатор;
ФайловаяСистемаКлиент.ЗагрузитьФайлы(ОписаниеОповещение, ПараметрыЗагрузкиФайла);
КонецПроцедуры
// Параметры:
// ВыбранныеФайлы - Массив из ОписаниеПереданногоФайла
// ДополнительныеПараметры - Структура
//
&НаКлиенте
Процедура ПослеВыбораФайлов(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
@@ -234,6 +234,10 @@
<metadata>ScheduledJob.ЗаполнениеДанныхДляОграниченияДоступа</metadata>
<use>DontUse</use>
</content>
<content>
<metadata>ScheduledJob.ОчисткаУстаревшихДанных</metadata>
<use>DontUse</use>
</content>
<content>
<metadata>Constant.СписокРасширенийФайловOpenDocument</metadata>
<use>DontUse</use>
@@ -0,0 +1,165 @@
<?xml version="1.0" encoding="UTF-8"?>
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form">
<items xsi:type="form:FormGroup">
<name>ДлительнаяОперация</name>
<id>1</id>
<items xsi:type="form:Decoration">
<name>ДлительнаяОперацияКартинка</name>
<id>3</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДлительнаяОперацияКартинкаРасширеннаяПодсказка</name>
<id>5</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДлительнаяОперацияКартинкаКонтекстноеМеню</name>
<id>4</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.ДлительнаяОперация48</picture>
</picture>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ДлительнаяОперацияТекст</name>
<id>9</id>
<title>
<key>ru</key>
<value>Загрузка файла обновления...</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДлительнаяОперацияТекстРасширеннаяПодсказка</name>
<id>11</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДлительнаяОперацияТекстКонтекстноеМеню</name>
<id>10</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Длительная операция</value>
</title>
<extendedTooltip>
<name>ДлительнаяОперацияРасширеннаяПодсказка</name>
<id>2</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>
<verticalAlign>Center</verticalAlign>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<autoCommandBar>
<name>ФормаКоманднаяПанель</name>
<id>-1</id>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<handlers>
<event>OnOpen</event>
<name>ПриОткрытии</name>
</handlers>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
</handlers>
<width>40</width>
<windowOpeningMode>DontBlock</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoTitle>true</autoTitle>
<autoUrl>true</autoUrl>
<group>Vertical</group>
<autoFillCheck>true</autoFillCheck>
<allowFormCustomize>true</allowFormCustomize>
<enabled>true</enabled>
<showTitle>auto</showTitle>
<showCloseButton>true</showCloseButton>
<attributes>
<name>ИмяПервогоФайлаОбновления</name>
<id>1</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>МетаданныеВерсия</name>
<id>2</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<parameters>
<name>ИмяПервогоФайлаОбновления</name>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar/>
</commandInterface>
</form:Form>
@@ -0,0 +1,196 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ИмяПервогоФайлаОбновления = Параметры.ИмяПервогоФайлаОбновления;
МетаданныеВерсия = Метаданные.Версия;
Если ОбновлениеИнформационнойБазыСлужебный.ОтложенноеОбновлениеЗавершено()
Или Не ЗначениеЗаполнено(ИмяПервогоФайлаОбновления)
И Не КонфигурацияИзменена() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ЗначениеЗаполнено(ИмяПервогоФайлаОбновления) Тогда
ЗагрузитьФайл();
Иначе
Результат = Ложь;
#Если Не ВебКлиент И Не МобильныйКлиент Тогда
Попытка
Результат = ИзменилсяТолькоНомерСборкиОсновнойКонфигурации();
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписатьОшибку(ТекстОшибки);
КонецПопытки;
#КонецЕсли
Закрыть(Результат);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Если Не ВебКлиент И Не МобильныйКлиент Тогда
&НаКлиенте
Функция ИзменилсяТолькоНомерСборкиОсновнойКонфигурации()
ПутьКВременнойПапке = ПолучитьИмяВременногоФайла() + "\";
ИмяФайлаСписка = ПутьКВременнойПапке + "ConfigFiles.txt";
ИмяФайлаСообщений = ПутьКВременнойПапке + "Out.txt";
СоздатьКаталог(ПутьКВременнойПапке);
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.УстановитьТекст("Configuration");
ТекстовыйДокумент.Записать(ИмяФайлаСписка);
ПараметрыСистемы = Новый Массив;
ПараметрыСистемы.Добавить("DESIGNER");
ПараметрыСистемы.Добавить("/DisableStartupMessages");
ПараметрыСистемы.Добавить("/DisableStartupDialogs");
ПараметрыСистемы.Добавить("/DumpConfigToFiles");
ПараметрыСистемы.Добавить("""" + ПутьКВременнойПапке + """");
ПараметрыСистемы.Добавить("-listfile");
ПараметрыСистемы.Добавить("""" + ИмяФайлаСписка + """");
ПараметрыСистемы.Добавить("/Out");
ПараметрыСистемы.Добавить("""" + ИмяФайлаСообщений + """");
КодВозврата = 0;
ЗапуститьСистему(СтрСоединить(ПараметрыСистемы, " "), Истина, КодВозврата);
Если КодВозврата <> 0 Тогда
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ИмяФайлаСообщений);
УдалитьФайлы(ПутьКВременнойПапке);
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось выгрузить конфигурацию в файлы по причине:
|%1'"),
"КодВозврата" + " = " + Строка(КодВозврата) + "
|" + ТекстовыйДокумент.ПолучитьТекст());
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ЧтениеXML = Новый ЧтениеXML;
ПостроительDOM = Новый ПостроительDOM;
ЧтениеXML.ОткрытьФайл(ПутьКВременнойПапке + "Configuration.xml");
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
ЧтениеXML.Закрыть();
УдалитьФайлы(ПутьКВременнойПапке);
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не найдена версия в файле выгрузки %1'"),
"Configuration.xml");
Разыменователь = Новый РазыменовательПространствИменDOM(ДокументDOM);
ВыражениеXPath = "/xmlns:MetaDataObject/xmlns:Configuration/xmlns:Properties/xmlns:Version";
РезультатXPath = ДокументDOM.ВычислитьВыражениеXPath(ВыражениеXPath, ДокументDOM, Разыменователь);
Если Не РезультатXPath.НеверноеСостояниеИтератора Тогда
СледующийУзел = РезультатXPath.ПолучитьСледующий();
Если ТипЗнч(СледующийУзел) = Тип("ЭлементDOM")
И ВРег(СледующийУзел.ИмяЭлемента) = ВРег("Version") Тогда
Версия = СледующийУзел.ТекстовоеСодержимое;
Если СтрРазделить(Версия, ".", Ложь).Количество() < 4 Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Некорректная версия ""%1"" в файле выгрузки %2'"),
Версия, "Configuration.xml");
Иначе
Возврат ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(МетаданныеВерсия)
= ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(Версия);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ВызватьИсключение ТекстОшибки;
КонецФункции
#КонецЕсли
&НаКлиенте
Процедура ЗагрузитьФайл()
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ПараметрыЗагрузки.Интерактивно = Ложь;
Оповещение = Новый ОписаниеОповещения("ПослеЗагрузкиФайла", ЭтотОбъект);
ФайловаяСистемаКлиент.ЗагрузитьФайл(Оповещение, ПараметрыЗагрузки, ИмяПервогоФайлаОбновления);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗагрузкиФайла(ЗагруженныйФайл, Контекст) Экспорт
Если ЗначениеЗаполнено(ЗагруженныйФайл)
И ЗначениеЗаполнено(ЗагруженныйФайл.Имя)
И ЗначениеЗаполнено(ЗагруженныйФайл.Хранение)
И ИзменилсяТолькоНомерСборки(ЗагруженныйФайл.Хранение, ЗагруженныйФайл.Имя) Тогда
Результат = Истина;
Иначе
Результат = Ложь;
КонецЕсли;
Если Открыта() Тогда
Закрыть(Результат);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ИзменилсяТолькоНомерСборки(АдресВоВременномХранилище, ПолноеИмяФайла)
Попытка
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
УдалитьИзВременногоХранилища(АдресВоВременномХранилище);
Если ТипЗнч(ДвоичныеДанные) <> Тип("ДвоичныеДанные") Тогда
Возврат Ложь;
КонецЕсли;
Если СтрЗаканчиваетсяНа(ПолноеИмяФайла, ".cfu") Тогда
ОписаниеОбновления = Новый ОписаниеОбновленияКонфигурации(ДвоичныеДанные);
ОписаниеКонфигурации = ОписаниеОбновления.ПолучаемаяКонфигурация;
Иначе
ОписаниеКонфигурации = Новый ОписаниеКонфигурации(ДвоичныеДанные);
КонецЕсли;
ИзменилсяТолькоНомерСборки =
ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(Метаданные.Версия)
= ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(ОписаниеКонфигурации.Версия);
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписатьОшибку(ТекстОшибки);
ИзменилсяТолькоНомерСборки = Ложь;
КонецПопытки;
Возврат ИзменилсяТолькоНомерСборки;
КонецФункции
&НаСервереБезКонтекста
Процедура ЗаписатьОшибку(ТекстОшибки)
ЗаголовокОшибки = НСтр("ru = 'Не удалось получить версию новой конфигурации по причине:'") + Символы.ПС;
ЗаписьЖурналаРегистрации(ОбновлениеКонфигурации.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Ошибка,,, ЗаголовокОшибки + ТекстОшибки);
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonForm xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="0a1837b6-9a0a-4a86-b929-89d032d41383">
<name>ПроверкаФайлаОбновления</name>
<synonym>
<key>ru</key>
<value>Проверка файла обновления</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</mdclass:CommonForm>
@@ -356,69 +356,348 @@
| ИЗ &ДанныеИзТаблицыПравая КАК ДанныеИзТаблицыПравая;" + Символы.ПС;
ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ
| ТаблицаЛевая.Номер КАК НомерЭлементаЛевая,
| ТаблицаПравая.Номер КАК НомерЭлементаПравая,
| ВЫБОР
| КОГДА ТаблицаПравая.Номер - ТаблицаЛевая.Номер < 0
| ТОГДА ТаблицаЛевая.Номер - ТаблицаПравая.Номер
| ИНАЧЕ ТаблицаПравая.Номер - ТаблицаЛевая.Номер
| КОНЕЦ КАК РасстояниеОтНачала,
| ВЫБОР
| КОГДА &КоличествоСтрокПравая - ТаблицаПравая.Номер - (&КоличествоСтрокЛевая - ТаблицаЛевая.Номер) < 0
| ТОГДА &КоличествоСтрокЛевая - ТаблицаЛевая.Номер - (&КоличествоСтрокПравая - ТаблицаПравая.Номер)
| ИНАЧЕ &КоличествоСтрокПравая - ТаблицаПравая.Номер - (&КоличествоСтрокЛевая - ТаблицаЛевая.Номер)
| КОНЕЦ КАК РасстояниеОтКонца,
| СУММА(ВЫБОР
| КОГДА ТаблицаЛевая.Значение <> """"
| ТОГДА ВЫБОР
| КОГДА ТаблицаЛевая.Количество < ТаблицаПравая.Количество
| ТОГДА ТаблицаЛевая.Количество
| ИНАЧЕ ТаблицаПравая.Количество
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ) КАК КоличествоСовпаденийЗначений,
| СУММА(ВЫБОР
| КОГДА ТаблицаЛевая.Количество < ТаблицаПравая.Количество
| ТОГДА ТаблицаЛевая.Количество
| ИНАЧЕ ТаблицаПравая.Количество
| КОНЕЦ) КАК КоличествоСовпаденийВсего
|ПОМЕСТИТЬ ДанныеСвернуто
|ИЗ
| ТаблицаЛевая КАК ТаблицаЛевая
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаПравая КАК ТаблицаПравая
| ПО ТаблицаЛевая.Значение = ТаблицаПравая.Значение
|
|СГРУППИРОВАТЬ ПО
| ТаблицаЛевая.Номер,
| ТаблицаПравая.Номер
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДанныеСвернуто.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| ДанныеСвернуто.НомерЭлементаПравая КАК НомерЭлементаПравая,
| ДанныеСвернуто.КоличествоСовпаденийЗначений КАК КоличествоСовпаденийЗначений,
| ДанныеСвернуто.КоличествоСовпаденийВсего КАК КоличествоСовпаденийВсего,
| ВЫБОР
| КОГДА ДанныеСвернуто.РасстояниеОтНачала < ДанныеСвернуто.РасстояниеОтКонца
| ТОГДА ДанныеСвернуто.РасстояниеОтНачала
| ИНАЧЕ ДанныеСвернуто.РасстояниеОтКонца
| КОНЕЦ КАК МинимальноеРасстояние
|ИЗ
| ДанныеСвернуто КАК ДанныеСвернуто
|
|УПОРЯДОЧИТЬ ПО
| КоличествоСовпаденийЗначений УБЫВ,
| КоличествоСовпаденийВсего УБЫВ,
| МинимальноеРасстояние,
| НомерЭлементаЛевая,
| НомерЭлементаПравая";
| ТаблицаЛевая.Номер КАК НомерЭлементаЛевая,
| ТаблицаПравая.Номер КАК НомерЭлементаПравая,
| ВЫБОР
| КОГДА ТаблицаПравая.Номер - ТаблицаЛевая.Номер < 0
| ТОГДА ТаблицаЛевая.Номер - ТаблицаПравая.Номер
| ИНАЧЕ ТаблицаПравая.Номер - ТаблицаЛевая.Номер
| КОНЕЦ КАК РасстояниеОтНачала,
| ВЫБОР
| КОГДА &КоличествоСтрокПравая - ТаблицаПравая.Номер - (&КоличествоСтрокЛевая - ТаблицаЛевая.Номер) < 0
| ТОГДА &КоличествоСтрокЛевая - ТаблицаЛевая.Номер - (&КоличествоСтрокПравая - ТаблицаПравая.Номер)
| ИНАЧЕ &КоличествоСтрокПравая - ТаблицаПравая.Номер - (&КоличествоСтрокЛевая - ТаблицаЛевая.Номер)
| КОНЕЦ КАК РасстояниеОтКонца,
| СУММА(ВЫБОР
| КОГДА ТаблицаЛевая.Значение <> """"
| ТОГДА ВЫБОР
| КОГДА ТаблицаЛевая.Количество < ТаблицаПравая.Количество
| ТОГДА ТаблицаЛевая.Количество
| ИНАЧЕ ТаблицаПравая.Количество
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ) КАК КоличествоСовпаденийЗначений,
| СУММА(ВЫБОР
| КОГДА ТаблицаЛевая.Количество < ТаблицаПравая.Количество
| ТОГДА ТаблицаЛевая.Количество
| ИНАЧЕ ТаблицаПравая.Количество
| КОНЕЦ) КАК КоличествоСовпаденийВсего
|ПОМЕСТИТЬ ДанныеСвернуто
|ИЗ
| ТаблицаЛевая КАК ТаблицаЛевая
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаПравая КАК ТаблицаПравая
| ПО ТаблицаЛевая.Значение = ТаблицаПравая.Значение
|
|СГРУППИРОВАТЬ ПО
| ТаблицаЛевая.Номер,
| ТаблицаПравая.Номер
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДанныеСвернуто.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| ДанныеСвернуто.НомерЭлементаПравая КАК НомерЭлементаПравая,
| ДанныеСвернуто.КоличествоСовпаденийЗначений КАК КоличествоСовпаденийЗначений,
| ДанныеСвернуто.КоличествоСовпаденийВсего КАК КоличествоСовпаденийВсего,
| ВЫБОР
| КОГДА ДанныеСвернуто.РасстояниеОтНачала < ДанныеСвернуто.РасстояниеОтКонца
| ТОГДА ДанныеСвернуто.РасстояниеОтНачала
| ИНАЧЕ ДанныеСвернуто.РасстояниеОтКонца
| КОНЕЦ КАК МинимальноеРасстояние
|ПОМЕСТИТЬ ДанныеСРасстояниями
|ИЗ
| ДанныеСвернуто КАК ДанныеСвернуто
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДанныеСРасстояниями.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| ДанныеСРасстояниями.НомерЭлементаПравая КАК НомерЭлементаПравая,
| ДанныеСРасстояниями.КоличествоСовпаденийЗначений * МаксимумыПараметров.КоличествоСовпаденийВсего * МаксимумыПараметров.МинимальноеРасстояние + ДанныеСРасстояниями.КоличествоСовпаденийВсего * МаксимумыПараметров.МинимальноеРасстояние + (МаксимумыПараметров.МинимальноеРасстояние - ДанныеСРасстояниями.МинимальноеРасстояние) КАК Вес
|ПОМЕСТИТЬ ВзвешенныеСовпадения
|ИЗ
| ДанныеСРасстояниями КАК ДанныеСРасстояниями,
| (ВЫБРАТЬ
| МАКСИМУМ(ДанныеСРасстояниями.КоличествоСовпаденийВсего) КАК КоличествоСовпаденийВсего,
| МАКСИМУМ(ДанныеСРасстояниями.МинимальноеРасстояние) КАК МинимальноеРасстояние
| ИЗ
| ДанныеСРасстояниями КАК ДанныеСРасстояниями) КАК МаксимумыПараметров
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЛучшееСовпадение.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| ВзвешенныеСовпадения.НомерЭлементаПравая КАК НомерЭлементаПравая,
| ВзвешенныеСовпадения.Вес КАК Вес
|ПОМЕСТИТЬ Соответствия
|ИЗ
| (ВЫБРАТЬ
| ВзвешенныеСовпадения.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| МАКСИМУМ(ВзвешенныеСовпадения.Вес) КАК Вес
| ИЗ
| ВзвешенныеСовпадения КАК ВзвешенныеСовпадения
|
| СГРУППИРОВАТЬ ПО
| ВзвешенныеСовпадения.НомерЭлементаЛевая) КАК ЛучшееСовпадение
| ЛЕВОЕ СОЕДИНЕНИЕ ВзвешенныеСовпадения КАК ВзвешенныеСовпадения
| ПО ЛучшееСовпадение.НомерЭлементаЛевая = ВзвешенныеСовпадения.НомерЭлементаЛевая
| И ЛучшееСовпадение.Вес = ВзвешенныеСовпадения.Вес";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ДанныеИзТаблицыЛевая", ДанныеИзТаблицыЛевая);
Запрос.УстановитьПараметр("ДанныеИзТаблицыПравая", ДанныеИзТаблицыПравая);
Запрос.УстановитьПараметр("КоличествоСтрокЛевая", ТаблицаЛевая.Количество());
Запрос.УстановитьПараметр("КоличествоСтрокПравая", ТаблицаПравая.Количество());
Запрос.Выполнить();
УровеньКонфликтов = 2;
Пока УровеньКонфликтов > 0 Цикл
Запрос.Текст = "ВЫБРАТЬ
| ВсеКонфликты.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| ВсеКонфликты.НомерЭлементаПравая КАК НомерЭлементаПравая,
| СУММА(ВсеКонфликты.КоличествоКонфликтов) КАК КоличествоКонфликтов
|ПОМЕСТИТЬ НайденныеКонфликты
|ИЗ
| (ВЫБРАТЬ
| Соответствия.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| Соответствия.НомерЭлементаПравая КАК НомерЭлементаПравая,
| 1 КАК КоличествоКонфликтов
| ИЗ
| Соответствия КАК Соответствия
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Соответствия КАК Соответствия1
| ПО Соответствия.НомерЭлементаПравая < Соответствия1.НомерЭлементаПравая
| И Соответствия.НомерЭлементаЛевая > Соответствия1.НомерЭлементаЛевая
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Соответствия.НомерЭлементаЛевая,
| Соответствия.НомерЭлементаПравая,
| 1
| ИЗ
| Соответствия КАК Соответствия
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Соответствия КАК Соответствия1
| ПО Соответствия.НомерЭлементаПравая > Соответствия1.НомерЭлементаПравая
| И Соответствия.НомерЭлементаЛевая < Соответствия1.НомерЭлементаЛевая
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Соответствия.НомерЭлементаЛевая,
| Соответствия.НомерЭлементаПравая,
| 1
| ИЗ
| (ВЫБРАТЬ
| Соответствия.НомерЭлементаПравая КАК НомерЭлементаПравая,
| МАКСИМУМ(Соответствия.Вес) КАК Вес
| ИЗ
| Соответствия КАК Соответствия
| СГРУППИРОВАТЬ ПО
| Соответствия.НомерЭлементаПравая
| ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Соответствия.НомерЭлементаЛевая) > 1) КАК Дубли
| ЛЕВОЕ СОЕДИНЕНИЕ Соответствия КАК Соответствия
| ПО Дубли.НомерЭлементаПравая = Соответствия.НомерЭлементаПравая
| И Дубли.Вес > Соответствия.Вес) КАК ВсеКонфликты
|СГРУППИРОВАТЬ ПО
| ВсеКонфликты.НомерЭлементаЛевая,
| ВсеКонфликты.НомерЭлементаПравая
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Соответствия.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| Соответствия.НомерЭлементаПравая КАК НомерЭлементаПравая,
| Соответствия.Вес КАК Вес,
| ЕСТЬNULL(НайденныеКонфликты.КоличествоКонфликтов, 0) КАК КоличествоКонфликтов
|ПОМЕСТИТЬ СоответствияСКонфликтами
|ИЗ
| Соответствия КАК Соответствия
| ЛЕВОЕ СОЕДИНЕНИЕ НайденныеКонфликты КАК НайденныеКонфликты
| ПО Соответствия.НомерЭлементаЛевая = НайденныеКонфликты.НомерЭлементаЛевая
| И Соответствия.НомерЭлементаПравая = НайденныеКонфликты.НомерЭлементаПравая
|;
|
|////////////////////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ Соответствия
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СоответствияСКонфликтами.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| СоответствияСКонфликтами.НомерЭлементаПравая КАК НомерЭлементаПравая,
| СоответствияСКонфликтами.Вес КАК Вес,
| СоответствияСКонфликтами.КоличествоКонфликтов КАК КоличествоКонфликтов
|ПОМЕСТИТЬ ЗаменяемыеСоответствия
|ИЗ
| (ВЫБРАТЬ
| МАКСИМУМ(СоответствияСКонфликтами.КоличествоКонфликтов) КАК КоличествоКонфликтов
| ИЗ
| СоответствияСКонфликтами КАК СоответствияСКонфликтами) КАК МаксимальноеКоличествоКонфликтов
| ЛЕВОЕ СОЕДИНЕНИЕ СоответствияСКонфликтами КАК СоответствияСКонфликтами
| ПО МаксимальноеКоличествоКонфликтов.КоличествоКонфликтов <> 0
| И СоответствияСКонфликтами.КоличествоКонфликтов = МаксимальноеКоличествоКонфликтов.КоличествоКонфликтов
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СоответствияСКонфликтами.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| СоответствияСКонфликтами.НомерЭлементаПравая КАК КлючНомерЭлементаПравая,
| СоответствияСКонфликтами.КоличествоКонфликтов КАК КоличествоКонфликтов,
| ВариантыЗамены.НомерЭлементаПравая КАК НомерЭлементаПравая,
| ВариантыЗамены.Вес КАК Вес
|ПОМЕСТИТЬ ВариантыСоответствийДляЗамены
|ИЗ
| ЗаменяемыеСоответствия КАК СоответствияСКонфликтами
| ЛЕВОЕ СОЕДИНЕНИЕ ВзвешенныеСовпадения КАК ВариантыЗамены
| ПО СоответствияСКонфликтами.НомерЭлементаЛевая = ВариантыЗамены.НомерЭлементаЛевая
| И СоответствияСКонфликтами.Вес > ВариантыЗамены.Вес
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВариантыСоответствийДляЗамены.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| ВариантыСоответствийДляЗамены.НомерЭлементаПравая КАК НомерЭлементаПравая,
| 1 КАК КоличествоКонфликтов
|ПОМЕСТИТЬ НайденныеКонфликтыВариантов
|ИЗ
| ВариантыСоответствийДляЗамены КАК ВариантыСоответствийДляЗамены
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СоответствияСКонфликтами КАК СоответствияСКонфликтами
| ПО ВариантыСоответствийДляЗамены.НомерЭлементаПравая < СоответствияСКонфликтами.НомерЭлементаПравая
| И ВариантыСоответствийДляЗамены.НомерЭлементаЛевая > СоответствияСКонфликтами.НомерЭлементаЛевая
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВариантыСоответствийДляЗамены.НомерЭлементаЛевая,
| ВариантыСоответствийДляЗамены.НомерЭлементаПравая,
| 1
|ИЗ
| ВариантыСоответствийДляЗамены КАК ВариантыСоответствийДляЗамены
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СоответствияСКонфликтами КАК СоответствияСКонфликтами
| ПО ВариантыСоответствийДляЗамены.НомерЭлементаПравая > СоответствияСКонфликтами.НомерЭлементаПравая
| И ВариантыСоответствийДляЗамены.НомерЭлементаЛевая < СоответствияСКонфликтами.НомерЭлементаЛевая
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СоответствияСКонфликтами.НомерЭлементаЛевая,
| СоответствияСКонфликтами.НомерЭлементаПравая,
| 1
|ИЗ
| (ВЫБРАТЬ
| ВариантыСоответствийДляЗамены.НомерЭлементаПравая КАК НомерЭлементаПравая,
| МАКСИМУМ(СоответствияСКонфликтами.Вес) КАК Вес
| ИЗ
| ВариантыСоответствийДляЗамены КАК ВариантыСоответствийДляЗамены
| ЛЕВОЕ СОЕДИНЕНИЕ СоответствияСКонфликтами КАК СоответствияСКонфликтами
| ПО ВариантыСоответствийДляЗамены.НомерЭлементаПравая = СоответствияСКонфликтами.НомерЭлементаПравая
| СГРУППИРОВАТЬ ПО
| ВариантыСоответствийДляЗамены.НомерЭлементаПравая) КАК Дубли
| ЛЕВОЕ СОЕДИНЕНИЕ СоответствияСКонфликтами КАК СоответствияСКонфликтами
| ПО Дубли.НомерЭлементаПравая = СоответствияСКонфликтами.НомерЭлементаПравая
| И Дубли.Вес > СоответствияСКонфликтами.Вес
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВариантыСоответствийДляЗамены.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| ВариантыСоответствийДляЗамены.КлючНомерЭлементаПравая КАК КлючНомерЭлементаПравая,
| ВариантыСоответствийДляЗамены.НомерЭлементаПравая КАК НомерЭлементаПравая,
| ВариантыСоответствийДляЗамены.Вес КАК Вес,
| ЕСТЬNULL(СУММА(Конфликты.КоличествоКонфликтов), 0) КАК КоличествоКонфликтов
|ПОМЕСТИТЬ ВариантыСоответствийДляЗаменыСКонфликтами
|ИЗ
| ВариантыСоответствийДляЗамены КАК ВариантыСоответствийДляЗамены
| ЛЕВОЕ СОЕДИНЕНИЕ НайденныеКонфликтыВариантов КАК Конфликты
| ПО ВариантыСоответствийДляЗамены.НомерЭлементаЛевая = Конфликты.НомерЭлементаЛевая
| И ВариантыСоответствийДляЗамены.НомерЭлементаПравая = Конфликты.НомерЭлементаПравая
|СГРУППИРОВАТЬ ПО
| ВариантыСоответствийДляЗамены.НомерЭлементаЛевая,
| ВариантыСоответствийДляЗамены.КлючНомерЭлементаПравая,
| ВариантыСоответствийДляЗамены.НомерЭлементаПравая,
| ВариантыСоответствийДляЗамены.Вес,
| ВариантыСоответствийДляЗамены.КоличествоКонфликтов
|ИМЕЮЩИЕ
| ВариантыСоответствийДляЗамены.КоличествоКонфликтов > ЕСТЬNULL(СУММА(Конфликты.КоличествоКонфликтов), 0)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВариантыСоответствийДляЗаменыСКонфликтами.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| МАКСИМУМ(ВариантыСоответствийДляЗаменыСКонфликтами.Вес) КАК Вес
|ПОМЕСТИТЬ МаксимальныйВесЗамены
|ИЗ
| ВариантыСоответствийДляЗаменыСКонфликтами КАК ВариантыСоответствийДляЗаменыСКонфликтами
|СГРУППИРОВАТЬ ПО
| ВариантыСоответствийДляЗаменыСКонфликтами.НомерЭлементаЛевая
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЗаменяемыеСоответствия.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| ЗаменяемыеСоответствия.НомерЭлементаПравая КАК КлючНомерЭлементаПравая,
| ЕСТЬNULL(ВариантыСоответствийДляЗаменыСКонфликтами.НомерЭлементаПравая, НЕОПРЕДЕЛЕНО) КАК НомерЭлементаПравая,
| ВариантыСоответствийДляЗаменыСКонфликтами.Вес КАК Вес
|ПОМЕСТИТЬ СоответствияДляЗамены
|ИЗ
| ЗаменяемыеСоответствия КАК ЗаменяемыеСоответствия
| ЛЕВОЕ СОЕДИНЕНИЕ МаксимальныйВесЗамены КАК МаксимальныйВесЗамены
| ПО ЗаменяемыеСоответствия.НомерЭлементаЛевая = МаксимальныйВесЗамены.НомерЭлементаЛевая
| ЛЕВОЕ СОЕДИНЕНИЕ ВариантыСоответствийДляЗаменыСКонфликтами КАК ВариантыСоответствийДляЗаменыСКонфликтами
| ПО ВариантыСоответствийДляЗаменыСКонфликтами.Вес = МаксимальныйВесЗамены.Вес
| И ВариантыСоответствийДляЗаменыСКонфликтами.НомерЭлементаЛевая = МаксимальныйВесЗамены.НомерЭлементаЛевая
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СоответствияСКонфликтами.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| ЕСТЬNULL(СоответствияДляЗамены.НомерЭлементаПравая, СоответствияСКонфликтами.НомерЭлементаПравая) КАК
| НомерЭлементаПравая,
| ЕСТЬNULL(СоответствияДляЗамены.Вес, СоответствияСКонфликтами.Вес) КАК Вес,
| СоответствияСКонфликтами.КоличествоКонфликтов КАК КоличествоКонфликтов
|ПОМЕСТИТЬ Соответствия
|ИЗ
| СоответствияСКонфликтами КАК СоответствияСКонфликтами
| ЛЕВОЕ СОЕДИНЕНИЕ СоответствияДляЗамены КАК СоответствияДляЗамены
| ПО СоответствияСКонфликтами.НомерЭлементаЛевая = СоответствияДляЗамены.НомерЭлементаЛевая
| И СоответствияСКонфликтами.НомерЭлементаПравая = СоответствияДляЗамены.КлючНомерЭлементаПравая
|ГДЕ
| СоответствияДляЗамены.НомерЭлементаПравая ЕСТЬ NULL
| ИЛИ СоответствияДляЗамены.НомерЭлементаПравая <> НЕОПРЕДЕЛЕНО
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЕстьNULL(МАКСИМУМ(СоответствияСКонфликтами.КоличествоКонфликтов), 0) КАК КоличествоКонфликтов
|ИЗ
| СоответствияСКонфликтами КАК СоответствияСКонфликтами";
Выборка = Запрос.Выполнить().Выбрать(); //@skip-check query-in-loop Итерационная обработка таблицы
Выборка.Следующий();
УровеньКонфликтов = Выборка.КоличествоКонфликтов;
ВременныеТаблицыКУдалению = Новый Массив;
ВременныеТаблицыКУдалению.Добавить("СоответствияДляЗамены");
ВременныеТаблицыКУдалению.Добавить("ВариантыСоответствийДляЗаменыСКонфликтами");
ВременныеТаблицыКУдалению.Добавить("ВариантыСоответствийДляЗамены");
ВременныеТаблицыКУдалению.Добавить("СоответствияСКонфликтами");
ВременныеТаблицыКУдалению.Добавить("ЗаменяемыеСоответствия");
ВременныеТаблицыКУдалению.Добавить("НайденныеКонфликты");
ВременныеТаблицыКУдалению.Добавить("МаксимальныйВесЗамены");
ВременныеТаблицыКУдалению.Добавить("НайденныеКонфликтыВариантов");
УдалитьВременныеТаблицы(Запрос, ВременныеТаблицыКУдалению);
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ДанныеИзТаблицыЛевая", ДанныеИзТаблицыЛевая);
Запрос.УстановитьПараметр("ДанныеИзТаблицыПравая", ДанныеИзТаблицыПравая);
Запрос.УстановитьПараметр("КоличествоСтрокЛевая", ТаблицаЛевая.Количество());
Запрос.УстановитьПараметр("КоличествоСтрокПравая", ТаблицаПравая.Количество());
КонецЦикла;
Запрос.Текст = "ВЫБРАТЬ
| Соответствия.НомерЭлементаЛевая КАК НомерЭлементаЛевая,
| Соответствия.НомерЭлементаПравая КАК НомерЭлементаПравая
|ИЗ
| Соответствия КАК Соответствия";
Выборка = Запрос.Выполнить().Выбрать();
@@ -612,4 +891,10 @@
КонецФункции
&НаСервере
Процедура УдалитьВременныеТаблицы(Запрос, Таблицы)
Запрос.Текст = "УНИЧТОЖИТЬ " + СтрСоединить(Таблицы, "; УНИЧТОЖИТЬ ");
Запрос.Выполнить(); //@skip-check query-in-loop Итерационная обработка таблицы
КонецПроцедуры
#КонецОбласти
@@ -6182,79 +6182,115 @@
СписокСокращений = АдресныйКлассификаторПовтИсп.СписокСокращений();
ТипЧисло = Новый ОписаниеТипов("Число");
Для Каждого ЗаписьОКТМО Из СписокОКТМО Цикл
ТекстGETЗапроса = "selectByCode?code=%OKTMO%&codeType=OKTMO";
ТекстGETЗапроса = СтрЗаменить(ТекстGETЗапроса, "%OKTMO%", Формат(ЗаписьОКТМО.ОКТМО, "ЧГ=0"));
РезультатВебСервис = ВыполнитьЗапросЧерезВебСервис(ТекстGETЗапроса);
Если РезультатВебСервис.Отказ Тогда
Результат.Вставить(ЗаписьОКТМО.КлючЗаписиОКТМО, Неопределено);
Продолжить;
КонецЕсли;
СведенияПоОКТМО = НовыйСведенияПоОКТМО();
Для Каждого СтрокаДанных Из РезультатВебСервис.Данные Цикл
СведенияПоОКТМО.OKATO = СокрЛП(СтрокаДанных.okato);
СведенияПоОКТМО.ОКТМО = СокрЛП(СтрокаДанных.oktmo);
СведенияПоОКТМО.КодИФНСФЛ = СокрЛП(СтрокаДанных.ifnsFlCode);
СведенияПоОКТМО.КодИФНСЮЛ = СокрЛП(СтрокаДанных.ifnsUlCode);
СведенияПоОКТМО.КодКЛАДР = СокрЛП(СтрокаДанных.codeKLADR);
СведенияПоОКТМО.КодУчасткаИФНСФЛ = СокрЛП(СтрокаДанных.ifnsFlAreaCode);
СведенияПоОКТМО.КодУчасткаИФНСЮЛ = СокрЛП(СтрокаДанных.ifnsUlAreaCode);
СведенияПоОКТМО.ПочтовыйИндекс = ТипЧисло.ПривестиЗначение(СтрокаДанных.ZIPcode);
СведенияПоОКТМО.Регион = СокрЛП(СтрокаДанных.area);
СведенияПоОКТМО.РегионИдентификатор = ?(ПустаяСтрока(СтрокаДанных.areaId), Неопределено,
Новый УникальныйИдентификатор(СокрЛП(СтрокаДанных.areaId)));
СведенияПоОКТМО.РегионТипКраткий = СокрЛП(СтрокаДанных.areaType);
СведенияПоОКТМО.РегионТипПолный = СокрЛП(СписокСокращений.Получить("1" + СведенияПоОКТМО.РегионТипКраткий));
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "OKATO", "okato");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "ОКТМО", "oktmo");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "КодИФНСФЛ", "ifnsFlCode");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "КодИФНСЮЛ", "ifnsUlCode");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "КодКЛАДР", "codeKLADR");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "КодУчасткаИФНСФЛ", "ifnsFlAreaCode");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "КодУчасткаИФНСЮЛ", "ifnsUlAreaCode");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "ПочтовыйИндекс",
ТипЧисло.ПривестиЗначение(СтрокаДанных.ZIPcode), Истина);
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "Регион", "area");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "РегионТипКраткий", "areaType");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "РегионТипПолный",
СписокСокращений.Получить("1" + ВРег(СведенияПоОКТМО.РегионТипКраткий)), Истина);
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "РегионИдентификатор",
?(ПустаяСтрока(СтрокаДанных.areaId), Неопределено, Новый УникальныйИдентификатор(СокрЛП(СтрокаДанных.areaId))),
Истина);
НаименованиеРегиона = ПолноеНаименованиеРегиона(СведенияПоОКТМО.Регион, СведенияПоОКТМО.РегионТипКраткий);
СведенияПоОКТМО.КодРегиона = АдресныйКлассификатор.КодРегионаПоНаименованию(НаименованиеРегиона);
СведенияПоОКТМО.МуниципальныйРайон = СокрЛП(СтрокаДанных.munDistrict);
СведенияПоОКТМО.МуниципальныйРайонИдентификатор = ?(ПустаяСтрока(СтрокаДанных.munDistrictId), Неопределено,
Новый УникальныйИдентификатор(СокрЛП(СтрокаДанных.munDistrictId)));
СведенияПоОКТМО.МуниципальныйРайонТипКраткий = СокрЛП(СтрокаДанных.munDistrictType);
СведенияПоОКТМО.МуниципальныйРайонТипПолный = СокрЛП(СписокСокращений.Получить("3"
+ СведенияПоОКТМО.МуниципальныйРайонТипКраткий));
СведенияПоОКТМО.КодМуниципальногоРайона = КодМуниципальногоРайона(
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "КодРегиона",
АдресныйКлассификатор.КодРегионаПоНаименованию(НаименованиеРегиона), Истина);
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "МуниципальныйРайон", "munDistrict");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "МуниципальныйРайонТипКраткий", "munDistrictType");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "МуниципальныйРайонТипПолный",
СписокСокращений.Получить("3" + ВРег(СведенияПоОКТМО.МуниципальныйРайонТипКраткий)), Истина);
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "МуниципальныйРайонИдентификатор",
?(ПустаяСтрока(СтрокаДанных.munDistrictId), Неопределено,
Новый УникальныйИдентификатор(СокрЛП(СтрокаДанных.munDistrictId))), Истина);
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "КодМуниципальногоРайона",
КодМуниципальногоРайона(
СведенияПоОКТМО.МуниципальныйРайонТипКраткий, СведенияПоОКТМО.ОКТМО, ЭтоГородФедеральногоЗначения(
НаименованиеРегиона));
СведенияПоОКТМО.НаселенныйПункт = СокрЛП(СтрокаДанных.locality);
СведенияПоОКТМО.НаселенныйПунктИдентификатор = ?(ПустаяСтрока(СтрокаДанных.localityId), Неопределено,
Новый УникальныйИдентификатор(СокрЛП(СтрокаДанных.localityId)));
СведенияПоОКТМО.НаселенныйПунктТипКраткий = СокрЛП(СтрокаДанных.localityType);
СведенияПоОКТМО.НаселенныйПунктТипПолный = СокрЛП(СписокСокращений.Получить("6"
+ СведенияПоОКТМО.НаселенныйПунктТипКраткий));
СведенияПоОКТМО.Поселение = СокрЛП(СтрокаДанных.settlement);
СведенияПоОКТМО.ПоселениеИдентификатор = ?(ПустаяСтрока(СтрокаДанных.settlementId), Неопределено,
Новый УникальныйИдентификатор(СокрЛП(СтрокаДанных.settlementId)));
СведенияПоОКТМО.ПоселениеТипКраткий = СокрЛП(СтрокаДанных.settlementType);
СведенияПоОКТМО.ПоселениеТипПолный = СокрЛП(СписокСокращений.Получить("4"
+ СведенияПоОКТМО.ПоселениеТипКраткий));
СведенияПоОКТМО.КодПоселения = КодПоселения(СведенияПоОКТМО.ПоселениеТипКраткий);
СведенияПоОКТМО.Территория = СокрЛП(СтрокаДанных.territory);
СведенияПоОКТМО.ТерриторияИдентификатор = ?(ПустаяСтрока(СтрокаДанных.territoryId), Неопределено,
Новый УникальныйИдентификатор(СокрЛП(СтрокаДанных.territoryId)));
СведенияПоОКТМО.ТерриторияТипКраткий = СокрЛП(СтрокаДанных.territoryType);
СведенияПоОКТМО.ТерриторияТипПолный = СокрЛП(СписокСокращений.Получить("7"
+ СведенияПоОКТМО.ТерриторияТипКраткий));
Результат.Вставить(ЗаписьОКТМО.КлючЗаписиОКТМО, СведенияПоОКТМО);
НаименованиеРегиона)), Истина);
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "НаселенныйПункт", "locality");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "НаселенныйПунктТипКраткий", "localityType");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "НаселенныйПунктТипПолный",
СписокСокращений.Получить("6" + ВРег(СведенияПоОКТМО.НаселенныйПунктТипКраткий)), Истина);
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "НаселенныйПунктИдентификатор",
?(ПустаяСтрока(СтрокаДанных.localityId), Неопределено,
Новый УникальныйИдентификатор(СокрЛП(СтрокаДанных.localityId))), Истина);
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "Поселение", "settlement");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "ПоселениеТипКраткий", "settlementType");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "ПоселениеТипПолный",
СписокСокращений.Получить("4" + ВРег(СведенияПоОКТМО.ПоселениеТипКраткий)), Истина);
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "ПоселениеИдентификатор",
?(ПустаяСтрока(СтрокаДанных.settlementId), Неопределено,
Новый УникальныйИдентификатор(СокрЛП(СтрокаДанных.settlementId))), Истина);
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "КодПоселения",
КодПоселения(СведенияПоОКТМО.ПоселениеТипКраткий), Истина);
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "Территория", "territory");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "ТерриторияТипКраткий", "territoryType");
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "ТерриторияТипПолный",
СписокСокращений.Получить("7" + ВРег(СведенияПоОКТМО.ТерриторияТипКраткий)), Истина);
ЗаполнитьЗначениеСвойстваЕслиПустое(СведенияПоОКТМО, СтрокаДанных, "ТерриторияИдентификатор",
?(ПустаяСтрока(СтрокаДанных.territoryId), Неопределено,
Новый УникальныйИдентификатор(СокрЛП(СтрокаДанных.territoryId))), Истина);
КонецЦикла;
Результат.Вставить(ЗаписьОКТМО.КлючЗаписиОКТМО, СведенияПоОКТМО);
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьЗначениеСвойстваЕслиПустое(Приемник, Источник, ИмяСвойстваПриемника, ИмяСвойстваИлиЗначениеИсточника, ЭтоЗначение = Ложь)
ЗначениеСвойства = ?(ЭтоЗначение, ИмяСвойстваИлиЗначениеИсточника, Источник[ИмяСвойстваИлиЗначениеИсточника]);
Если ЗначениеЗаполнено(Приемник[ИмяСвойстваПриемника]) Или Не ЗначениеЗаполнено(ЗначениеСвойства) Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(ЗначениеСвойства) = Тип("Строка") Тогда
Приемник[ИмяСвойстваПриемника] = СокрЛП(ЗначениеСвойства);
Иначе
Приемник[ИмяСвойстваПриемника] = ЗначениеСвойства;
КонецЕсли;
КонецПроцедуры
Функция ОКТМОИлиОКАТОСтрокой(ОКТМОИлиОКАТО)
Результат = "";
@@ -2681,7 +2681,7 @@
СинонимТЧ = МетаданныеТЧ.Представление();
КонецЕсли;
Секция = Результат.ПолучитьОбласть("R" + XMLСтрока(НомерСтрокиВывода));
Секция = Результат.ПолучитьОбласть("R" + XMLСтрока(Результат.ВысотаТаблицы + 1));
ВывестиТекстВОтчет(Результат, Секция, "R1C1:R1C" + Формат(ТабличнаяЧасть.Колонки.Количество(), "ЧГ=0"), " ");
ОбластьВывода = ВывестиТекстВОтчет(Результат, Секция, "R1C2", СинонимТЧ, 11, Истина);
Результат.Область("R" + Формат(ОбластьВывода.Верх, "ЧГ=0") + "C2").СоздатьФорматСтрок();
@@ -216,18 +216,19 @@
//
Функция ВыполнитьФункциюВНесколькоПотоков(ИмяФункции, Знач ПараметрыВыполнения, Знач НаборПараметровФункции = Неопределено) Экспорт
Если НаборПараметровФункции <> Неопределено И ТипЗнч(НаборПараметровФункции) <> Тип("Соответствие") Тогда
Если НаборПараметровФункции <> Неопределено
И ТипЗнч(НаборПараметровФункции) <> Тип("Соответствие")
И ТипЗнч(НаборПараметровФункции) <> Тип("Структура") Тогда
ВызватьИсключение НСтр("ru ='Передан неверный тип набора параметров'");
КонецЕсли;
ПараметрыВыполненияДочернихПотоков = ПараметрыВыполненияВФоне();
ПараметрыВыполненияДочернихПотоков.ОжидатьЗавершение = 0;
ПараметрыВыполненияДочернихПотоков.АдресРезультата = ПоместитьВоВременноеХранилище(Неопределено, Новый УникальныйИдентификатор);
Если ПараметрыВыполнения.ОжидатьЗавершение = ОбщиеПараметрыВыполненияВФоне().ОжидатьЗавершение Тогда
ПараметрыВыполнения.ОжидатьЗавершение = 0;
КонецЕсли;
АдресРезультатов = Новый Соответствие;
Если НаборПараметровФункции <> Неопределено Тогда
Если ТипЗнч(НаборПараметровФункции) = Тип("Соответствие") Тогда
Для Каждого ПараметрФункции Из НаборПараметровФункции Цикл
АдресРезультатаПотока = ПоместитьВоВременноеХранилище(Неопределено, Новый УникальныйИдентификатор);
АдресРезультатов.Вставить(ПараметрФункции.Ключ, АдресРезультатаПотока);
@@ -235,15 +236,14 @@
КонецЕсли;
ПараметрыМногопоточнойОперации = Новый Структура;
ПараметрыМногопоточнойОперации.Вставить("ИмяМетода", ИмяФункции);
ПараметрыМногопоточнойОперации.Вставить("ДляФункции", Истина);
ПараметрыМногопоточнойОперации.Вставить("ПараметрыОперации", ПараметрыВыполнения);
ПараметрыМногопоточнойОперации.Вставить("ПараметрыМетода", НаборПараметровФункции);
ПараметрыМногопоточнойОперации.Вставить("АдресРезультата", ПараметрыВыполненияДочернихПотоков.АдресРезультата);
ПараметрыМногопоточнойОперации.Вставить("ПрерватьВыполнениеЕслиОшибка", ПараметрыВыполнения.ПрерватьВыполнениеЕслиОшибка);
ПараметрыМногопоточнойОперации.Вставить("АдресРезультатов", АдресРезультатов);
ПараметрыМногопоточнойОперации.Вставить("ИдентификаторПроцесса", Новый УникальныйИдентификатор);
ПараметрыМногопоточнойОперации.Вставить("ИмяМетода", ИмяФункции);
ПараметрыМногопоточнойОперации.Вставить("ДляФункции", Истина);
ПараметрыМногопоточнойОперации.Вставить("ПараметрыВыполнения", ПараметрыВыполнения);
ПараметрыМногопоточнойОперации.Вставить("ПараметрыМетода", НаборПараметровФункции);
ПараметрыМногопоточнойОперации.Вставить("АдресРезультатов", АдресРезультатов);
Возврат ВыполнитьФункцию(ПараметрыВыполненияДочернихПотоков, ИмяМетодаМногопоточногоПроцесса(), ПараметрыМногопоточнойОперации);
Возврат ВыполнитьФункцию(ПараметрыВыполнения, ИмяМетодаМногопоточногоПроцесса(), ПараметрыМногопоточнойОперации);
КонецФункции
@@ -283,18 +283,23 @@
//
Функция ВыполнитьПроцедуруВНесколькоПотоков(ИмяПроцедуры, Знач ПараметрыВыполнения, Знач НаборПараметровПроцедуры = Неопределено) Экспорт
Если НаборПараметровПроцедуры <> Неопределено И ТипЗнч(НаборПараметровПроцедуры) <> Тип("Соответствие") Тогда
Если НаборПараметровПроцедуры <> Неопределено
И ТипЗнч(НаборПараметровПроцедуры) <> Тип("Соответствие")
И ТипЗнч(НаборПараметровПроцедуры) <> Тип("Структура") Тогда
ВызватьИсключение НСтр("ru ='Передан неверный тип набора параметров'");
КонецЕсли;
ПараметрыВыполненияДочернихПотоков = ПараметрыВыполненияВФоне();
ПараметрыВыполненияДочернихПотоков.ОжидатьЗавершение = 0;
НовыеПараметрыВыполнения = ПараметрыВыполненияФункции(Неопределено);
ЗаполнитьЗначенияСвойств(НовыеПараметрыВыполнения, ПараметрыВыполнения);
ПараметрыВыполнения = НовыеПараметрыВыполнения;
ПараметрыВыполненияДочернихПотоков.АдресРезультата = ПоместитьВоВременноеХранилище(Неопределено, Новый УникальныйИдентификатор);
Если ПараметрыВыполнения.ОжидатьЗавершение = ОбщиеПараметрыВыполненияВФоне().ОжидатьЗавершение Тогда
ПараметрыВыполнения.ОжидатьЗавершение = 0;
КонецЕсли;
АдресРезультатов = Новый Соответствие;
Если НаборПараметровПроцедуры <> Неопределено Тогда
Если ТипЗнч(НаборПараметровПроцедуры) = Тип("Соответствие") Тогда
Для Каждого ПараметрФункции Из НаборПараметровПроцедуры Цикл
АдресРезультатаПотока = ПоместитьВоВременноеХранилище(Неопределено, Новый УникальныйИдентификатор);
АдресРезультатов.Вставить(ПараметрФункции.Ключ, АдресРезультатаПотока);
@@ -302,18 +307,16 @@
КонецЕсли;
ПараметрыМногопоточнойОперации = Новый Структура;
ПараметрыМногопоточнойОперации.Вставить("ИмяМетода", ИмяПроцедуры);
ПараметрыМногопоточнойОперации.Вставить("ДляФункции", Ложь);
ПараметрыМногопоточнойОперации.Вставить("ПараметрыОперации", ПараметрыВыполнения);
ПараметрыМногопоточнойОперации.Вставить("ПараметрыМетода", НаборПараметровПроцедуры);
ПараметрыМногопоточнойОперации.Вставить("АдресРезультата", ПараметрыВыполненияДочернихПотоков.АдресРезультата);
ПараметрыМногопоточнойОперации.Вставить("ПрерватьВыполнениеЕслиОшибка", ПараметрыВыполнения.ПрерватьВыполнениеЕслиОшибка);
ПараметрыМногопоточнойОперации.Вставить("АдресРезультатов", АдресРезультатов);
ПараметрыМногопоточнойОперации.Вставить("ИдентификаторПроцесса", Новый УникальныйИдентификатор);
ПараметрыМногопоточнойОперации.Вставить("ИмяМетода", ИмяПроцедуры);
ПараметрыМногопоточнойОперации.Вставить("ДляФункции", Ложь);
ПараметрыМногопоточнойОперации.Вставить("ПараметрыВыполнения", ПараметрыВыполнения);
ПараметрыМногопоточнойОперации.Вставить("ПараметрыМетода", НаборПараметровПроцедуры);
ПараметрыМногопоточнойОперации.Вставить("АдресРезультатов", АдресРезультатов);
Результат = ВыполнитьФункцию(ПараметрыВыполненияДочернихПотоков, ИмяМетодаМногопоточногоПроцесса(), ПараметрыМногопоточнойОперации);
Результат = ВыполнитьФункцию(ПараметрыВыполнения, ИмяМетодаМногопоточногоПроцесса(), ПараметрыМногопоточнойОперации);
Возврат Результат;
КонецФункции
@@ -1207,8 +1210,8 @@
Результат = Новый Структура;
Результат.Вставить("Статус", "Выполняется");
Результат.Вставить("КраткоеПредставлениеОшибки", Неопределено);
Результат.Вставить("ПодробноеПредставлениеОшибки", Неопределено);
Результат.Вставить("КраткоеПредставлениеОшибки", "");
Результат.Вставить("ПодробноеПредставлениеОшибки", "");
Результат.Вставить("Прогресс", Неопределено);
Результат.Вставить("Сообщения", Неопределено);
@@ -1703,7 +1706,7 @@
Функция ЕстьФоновыеЗаданияВФайловойИБ()
ЗапущеноЗаданийВФайловойИБ = 0;
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() И Не ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы() Тогда
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
Отбор = Новый Структура;
Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
ЗапущеноЗаданийВФайловойИБ = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор).Количество();
@@ -1832,70 +1835,107 @@
УдалитьНесуществующиеПотоки();
ИдентификаторФормы = ПараметрыОперации.ПараметрыОперации.ИдентификаторФормы;
ПотокиПроцесса = ПотокиДлительныхОпераций(ИдентификаторФормы);
ИдентификаторПроцесса = ПараметрыОперации.ИдентификаторПроцесса;
ПотокиПроцесса = НовоеОписаниеПотоков();
ПрерватьВыполнениеЕслиОшибка = ПараметрыОперации.ПараметрыВыполнения.ПрерватьВыполнениеЕслиОшибка;
РезультатДлительнойОперации = НовыйРезультатДлительнойОперации();
Порции = ПараметрыОперации.ПараметрыМетода;
ИмяМетодаПолученияПорций = Неопределено;
КонтекстПолученияИОбработкиПорций = Новый Структура;
Порции = Новый Массив;
Результаты = Новый Соответствие();
Для каждого КлючЗначение Из Порции Цикл
Результаты.Вставить(КлючЗначение.Ключ, Новый Структура(Новый ФиксированнаяСтруктура(РезультатДлительнойОперации)));
Результаты[КлючЗначение.Ключ].АдресРезультата = ПараметрыОперации.АдресРезультатов[КлючЗначение.Ключ];
КонецЦикла;
Если ТипЗнч(ПараметрыОперации.ПараметрыМетода) = Тип("Соответствие") Тогда
Для Каждого КлючЗначение Из ПараметрыОперации.ПараметрыМетода Цикл
Порции.Добавить(КлючЗначение);
Результаты.Вставить(КлючЗначение.Ключ, Новый Структура(Новый ФиксированнаяСтруктура(РезультатДлительнойОперации)));
Результаты[КлючЗначение.Ключ].АдресРезультата = ПараметрыОперации.АдресРезультатов[КлючЗначение.Ключ];
КонецЦикла;
Иначе
ПараметрыОперации.ПараметрыМетода.Свойство("ИмяМетодаПолученияПорций", ИмяМетодаПолученияПорций);
ПараметрыОперации.ПараметрыМетода.Свойство("Контекст", КонтекстПолученияИОбработкиПорций);
КонтекстПолученияИОбработкиПорций.Вставить("Процент", 0);
КонецЕсли;
КоличествоОбработанныхПорций = 0;
ИндексТекущейПорции = -1;
ЗавершитьДосрочно = Ложь;
Попытка
Для Каждого КлючЗначение Из Порции Цикл
Пока Истина Цикл
ИндексТекущейПорции = ИндексТекущейПорции + 1;
Если ИндексТекущейПорции >= Порции.Количество()
И ИмяМетодаПолученияПорций <> Неопределено Тогда
НовыеПорции = Новый Соответствие;
ПараметрыПолученияПорций = Новый Массив;
ПараметрыПолученияПорций.Добавить(НовыеПорции);
ПараметрыПолученияПорций.Добавить(КонтекстПолученияИОбработкиПорций);
ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяМетодаПолученияПорций, ПараметрыПолученияПорций);
Для Каждого КлючИЗначение Из НовыеПорции Цикл
Порции.Добавить(КлючИЗначение);
Результаты.Вставить(КлючИЗначение.Ключ,
Новый Структура(Новый ФиксированнаяСтруктура(РезультатДлительнойОперации)));
КонецЦикла;
КонецЕсли;
Если ИндексТекущейПорции >= Порции.Количество() Тогда
Прервать;
КонецЕсли;
КлючЗначение = Порции.Получить(ИндексТекущейПорции);
ПорцияОбработана = Ложь;
Пока Не ПорцияОбработана Цикл
Поток = ДобавитьПоток(ПараметрыОперации, ПотокиПроцесса, ИдентификаторФормы, КлючЗначение.Ключ, КлючЗначение.Значение);
ВыполнитьВФоне = ОжидатьСвободныйПоток(ИдентификаторПроцесса, ПотокиПроцесса,
Результаты, ПрерватьВыполнениеЕслиОшибка);
Если ВыполнитьВФоне = Неопределено Тогда
ЗавершитьДосрочно = Истина;
Прервать;
КонецЕсли;
Если ТипЗнч(Поток) =Тип("СтрокаТаблицыЗначений") Тогда
Результат = ВыполнитьПоток(ПараметрыОперации, Поток, Результаты[КлючЗначение.Ключ], ИдентификаторФормы);
Поток = ДобавитьПоток(ПотокиПроцесса, ИдентификаторПроцесса, КлючЗначение.Ключ, КлючЗначение.Значение, ВыполнитьВФоне);
Если ТипЗнч(Поток) = Тип("СтрокаТаблицыЗначений") Тогда
Результат = ВыполнитьПоток(ПараметрыОперации, ПотокиПроцесса, Поток, Результаты[КлючЗначение.Ключ], ВыполнитьВФоне);
ЗаполнитьЗначенияСвойств(Результаты[КлючЗначение.Ключ], Результат);
Если Результат.Статус <> "Выполняется" Тогда
ОтправитьСообщенияПотока(Результат.ИдентификаторЗадания);
КонецЕсли;
Если Результат.Статус = "Ошибка" И ПараметрыОперации.ПрерватьВыполнениеЕслиОшибка Тогда
Если Результат.Статус = "Ошибка" И ПрерватьВыполнениеЕслиОшибка Тогда
ЗавершитьДосрочно = Истина;
Прервать;
КонецЕсли;
ПорцияОбработана = Истина;
КонецЕсли;
ОтправитьСообщенияПотока(Поток.ИдентификаторЗадания);
СтатусОжидания = ОжидатьСвободныйПоток(ИдентификаторФормы, Результаты, Поток.ИдентификаторЗадания, ПараметрыОперации.ПрерватьВыполнениеЕслиОшибка);
Если Результат.Статус = "Ошибка" Или СтатусОжидания = Неопределено Тогда
ЗавершитьДосрочно = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЗавершитьДосрочно Тогда
РезультатДлительнойОперации.Статус = "Ошибка";
ОтменитьВыполнениеВсехПотоков(Результаты, ИдентификаторФормы);
ОтменитьВыполнениеВсехПотоков(ПотокиПроцесса, Результаты);
Прервать;
КонецЕсли;
КоличествоОбработанныхПорций = КоличествоОбработанныхПорций + 1;
Процент = Окр(КоличествоОбработанныхПорций * 100 / Порции.Количество());
Если ИмяМетодаПолученияПорций = Неопределено Тогда
КоличествоОбработанныхПорций = КоличествоОбработанныхПорций + 1;
Процент = Окр(КоличествоОбработанныхПорций * 100 / Порции.Количество());
Иначе
Процент = КонтекстПолученияИОбработкиПорций.Процент;
КонецЕсли;
Процент = ?(Процент < 100, Процент, 99);
СообщитьПрогресс(Процент, Строка(КлючЗначение.Ключ), "ПрогрессМногопоточногоПроцесса");
Если Процент > 0 Тогда
СообщитьПрогресс(Процент, Строка(КлючЗначение.Ключ), "ПрогрессМногопоточногоПроцесса");
КонецЕсли;
КонецЦикла;
ОжидатьЗавершениеВсехПотоков(Результаты, ИдентификаторФормы, ПараметрыОперации.ПрерватьВыполнениеЕслиОшибка);
ОжидатьЗавершениеВсехПотоков(ПотокиПроцесса, Результаты, ИдентификаторПроцесса, ПрерватьВыполнениеЕслиОшибка);
Исключение
@@ -1906,7 +1946,7 @@
ЗаписатьОшибку(РезультатДлительнойОперации.ПодробноеПредставлениеОшибки);
ОтменитьВыполнениеВсехПотоков(Результаты, ИдентификаторФормы);
ОтменитьВыполнениеВсехПотоков(ПотокиПроцесса, Результаты);
КонецПопытки;
@@ -1924,10 +1964,19 @@
КонецФункции
Функция ДобавитьПоток(ПараметрыОперации, Потоки, ИдентификаторПроцесса, КлючПотока, ПараметрыПотока)
Функция ДобавитьПоток(Потоки, ИдентификаторПроцесса, КлючПотока, ПараметрыПотока, ВыполнитьВФоне)
Поток = Неопределено;
Если Не ВыполнитьВФоне Тогда
Поток = Потоки.Добавить();
Поток.ИдентификаторПотока = Новый УникальныйИдентификатор;
Поток.ИдентификаторПроцесса = ИдентификаторПроцесса;
Поток.ПараметрыМетода = ПараметрыПотока;
Поток.КлючПотока = КлючПотока;
Возврат Поток;
КонецЕсли;
НачатьТранзакцию();
Попытка
@@ -1951,8 +2000,8 @@
НаборЗаписей.Прочитать();
Запись = НаборЗаписей.Добавить();
ЗаполнитьЗначенияСвойств(Запись, Поток, , "ИдентификаторПотока,ПараметрыМетода,КлючПотока");
Запись.ИдентификаторПотока = Поток.ИдентификаторПотока;
ЗаполнитьЗначенияСвойств(Запись, Поток, , "ПараметрыМетода,КлючПотока");
Запись.ПараметрыМетода = Новый ХранилищеЗначения(Поток.ПараметрыМетода);
Запись.КлючПотока = Новый ХранилищеЗначения(Поток.КлючПотока);
@@ -1976,32 +2025,36 @@
// Выполнить указанный поток
//
// Параметры:
// ОписаниеПотока - Структура
// ПараметрыОперации - Структура
// Поток - СтрокаТаблицыЗначений: см. НовоеОписаниеПотоков
// ИдентификаторФормы - УникальныйИдентификатор - идентификатор формы, если есть.
// Результат - см. НовыйРезультатДлительнойОперации
// ВыполнитьВФоне - Булево
//
// Возвращаемое значение:
// см. ВыполнитьВФоне
//
Функция ВыполнитьПоток(ОписаниеПотока, Поток, Результат, ИдентификаторФормы = Неопределено)
Функция ВыполнитьПоток(ПараметрыОперации, ПотокиПроцесса, Поток, Результат, ВыполнитьВФоне)
ПараметрыВыполнения = ПараметрыВыполненияВФоне(ИдентификаторФормы);
ПараметрыВыполнения = ПараметрыВыполненияВФоне();
ПараметрыВыполнения.НаименованиеФоновогоЗадания = Поток.Наименование;
ПараметрыВыполнения.ОжидатьЗавершение = 0;
ПараметрыВыполнения.ОжидатьЗавершение = 0;
ПараметрыВыполнения.ЗапуститьНеВФоне = ПараметрыОперации.ПараметрыВыполнения.ЗапуститьНеВФоне
Или МонопольныйРежим() Или Не ВыполнитьВФоне;
ПараметрыВыполнения.АдресРезультата = ПоместитьВоВременноеХранилище(Неопределено, Результат.АдресРезультата);
Поток.АдресРезультата = ПараметрыВыполнения.АдресРезультата;
ПараметрыВыполнения = ПодготовитьПараметрыВыполнения(ПараметрыВыполнения, ОписаниеПотока.ДляФункции);
ПараметрыВыполнения = ПодготовитьПараметрыВыполнения(ПараметрыВыполнения, ПараметрыОперации.ДляФункции);
УстановитьПолноеИмяПрикладнойПроцедуры(ОписаниеПотока.ИмяМетода);
РезультатЗапуска = ВыполнитьВФоне(ОписаниеПотока.ИмяМетода, Поток.ПараметрыМетода, ПараметрыВыполнения);
УстановитьПолноеИмяПрикладнойПроцедуры(ПараметрыОперации.ИмяМетода);
РезультатЗапуска = ВыполнитьВФоне(ПараметрыОперации.ИмяМетода, Поток.ПараметрыМетода, ПараметрыВыполнения);
УстановитьПолноеИмяПрикладнойПроцедуры(ИмяМетодаМногопоточногоПроцесса());
Если РезультатЗапуска.Статус = "Выполняется" Тогда
Поток.ИдентификаторЗадания = РезультатЗапуска.ИдентификаторЗадания;
ИначеЕсли РезультатЗапуска.Статус <> "Выполняется" И РезультатЗапуска.Статус <> "Выполнено" Тогда
Иначе
УдалитьПоток(Поток.ИдентификаторПотока);
ПотокиПроцесса.Удалить(Поток);
Возврат РезультатЗапуска;
КонецЕсли;
@@ -2012,36 +2065,66 @@
КонецФункции
// Ожидать, пока количество выполняющихся потоков не станет меньше максимального.
//
// Параметры:
// Группы - Соответствие
//
Функция ОжидатьСвободныйПоток(ИдентификаторПроцесса, Результаты, ИдентификаторЗадания, ЗавершитьДосрочноЕслиОшибка)
Функция ОжидатьСвободныйПоток(ИдентификаторПроцесса, ПотокиПроцесса, Результаты, ЗавершитьДосрочноЕслиОшибка)
Потоки = ПотокиДлительныхОпераций();
МаксимумПотоков = ДопустимоеКоличествоПотоков();
ВыполнитьВФоне = МаксимумПотоков > 1;
Пока Потоки.Количество() >= МаксимумПотоков Цикл
Пока Истина Цикл
Потоки = ПотокиДлительныхОпераций();
ЕстьАктивныйПотокПроцесса = Ложь;
ЕстьЗавершенныеПотоки = ЕстьЗавершенныеПотоки(Потоки, Результаты, ЗавершитьДосрочноЕслиОшибка);
Для Каждого ПотокПроцесса Из ПотокиПроцесса Цикл
Поток = Потоки.Найти(ПотокПроцесса.ИдентификаторПотока, "ИдентификаторПотока");
Если Поток = Неопределено Тогда
Поток = Потоки.Добавить();
Иначе
ЕстьАктивныйПотокПроцесса = Истина;
КонецЕсли;
ЗаполнитьЗначенияСвойств(Поток, ПотокПроцесса);
КонецЦикла;
Если ЗавершитьДосрочноЕслиОшибка И ЕстьЗавершенныеПотоки = Неопределено Тогда
Возврат Неопределено;
ИдентификаторыПроцессов = Потоки.Скопировать(, "ИдентификаторПроцесса");
ИдентификаторыПроцессов.Свернуть("ИдентификаторПроцесса");
КоличествоВсехАктивныхПотоков = Потоки.Количество()
+ ИдентификаторыПроцессов.Количество() - ?(ЕстьАктивныйПотокПроцесса, 1, 0);
Если КоличествоВсехАктивныхПотоков < МаксимумПотоков Тогда
Прервать;
КонецЕсли;
Если ЕстьЗавершенныеПотоки Тогда
ЕстьЗавершенныеПотоки = ЕстьЗавершенныеПотоки(Потоки,
Результаты, ЗавершитьДосрочноЕслиОшибка, ИдентификаторПроцесса);
ИндексПотока = ПотокиПроцесса.Количество() - 1;
Пока ИндексПотока >= 0 Цикл
ПотокПроцесса = ПотокиПроцесса[ИндексПотока];
Если Потоки.Найти(ПотокПроцесса.ИдентификаторПотока, "ИдентификаторПотока") = Неопределено Тогда
ПотокиПроцесса.Удалить(ПотокПроцесса);
КонецЕсли;
ИндексПотока = ИндексПотока - 1;
КонецЦикла;
Если ЗавершитьДосрочноЕслиОшибка И ЕстьЗавершенныеПотоки = Неопределено Тогда
ВыполнитьВФоне = Неопределено;
Прервать;
КонецЕсли;
Если ЕстьЗавершенныеПотоки Или Не ВыполнитьВФоне Тогда
Продолжить;
КонецЕсли;
ОтправитьСообщенияПотока(ИдентификаторЗадания);
Если Не ЕстьАктивныйПотокПроцесса Тогда
// Не ждем, когда у процесса нет ни одного исполняющего потока.
ВыполнитьВФоне = Ложь;
Прервать;
КонецЕсли;
ОжидатьЗавершениеПотока(Потоки[0]);
Потоки = ПотокиДлительныхОпераций();
КонецЦикла;
Возврат Истина;
Возврат ВыполнитьВФоне;
КонецФункции
@@ -2053,6 +2136,10 @@
//
Процедура ОтправитьСообщенияПотока(Знач ИдентификаторЗадания)
Если Не ЗначениеЗаполнено(ИдентификаторЗадания) Тогда
Возврат;
КонецЕсли;
ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
Если ФоновоеЗадание = Неопределено Тогда
Возврат;
@@ -2066,19 +2153,14 @@
КонецПроцедуры
// Ожидать завершение всех потоков.
//
// Параметры:
// Группы - Соответствие
//
Процедура ОжидатьЗавершениеВсехПотоков(Результаты, ИдентификаторФормы, ЗавершитьДосрочноЕслиОшибка)
Потоки = ПотокиДлительныхОпераций(ИдентификаторФормы);
Процедура ОжидатьЗавершениеВсехПотоков(Потоки, Результаты, ИдентификаторПроцесса, ЗавершитьДосрочноЕслиОшибка)
Пока Потоки.Количество() > 0 Цикл
ЕстьЗавершенныеПотоки = ЕстьЗавершенныеПотоки(Потоки, Результаты, ЗавершитьДосрочноЕслиОшибка);
ЕстьЗавершенныеПотоки = ЕстьЗавершенныеПотоки(Потоки,
Результаты, ЗавершитьДосрочноЕслиОшибка, ИдентификаторПроцесса);
Если ЕстьЗавершенныеПотоки = Неопределено Тогда
ОтменитьВыполнениеВсехПотоков(Результаты, ИдентификаторФормы);
ОтменитьВыполнениеВсехПотоков(Потоки, Результаты);
Прервать;
КонецЕсли;
@@ -2103,8 +2185,6 @@
Если ЗначениеЗаполнено(Поток.ИдентификаторЗадания) Тогда
ОтправитьСообщенияПотока(Поток.ИдентификаторЗадания);
Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Поток.ИдентификаторЗадания);
Если Задание <> Неопределено Тогда
@@ -2119,7 +2199,7 @@
КонецФункции
Функция ЕстьЗавершенныеПотоки(Потоки, Результаты, ЗавершитьДосрочноЕслиОшибка)
Функция ЕстьЗавершенныеПотоки(Потоки, Результаты, ЗавершитьДосрочноЕслиОшибка, ИдентификаторПроцесса)
ЕстьЗавершенныеПотоки = Ложь;
@@ -2129,40 +2209,44 @@
Поток = Потоки[Индекс];
ИдентификаторЗадания = Поток.ИдентификаторЗадания;
КлючПотока = Поток.КлючПотока.Получить();
КлючПотока = Поток.КлючПотока;
Если ЗначениеЗаполнено(ИдентификаторЗадания) Тогда
Попытка
ЗаданиеВыполнено = ЗаданиеВыполнено(ИдентификаторЗадания);
Если КлючПотока <> Неопределено И ЗаданиеВыполнено = Истина Тогда
Если Поток.ИдентификаторПроцесса = ИдентификаторПроцесса
И КлючПотока <> Неопределено
И ЗаданиеВыполнено = Истина Тогда
Результаты[КлючПотока].Статус = "Выполнено";
ОтправитьСообщенияПотока(ИдентификаторЗадания);
КонецЕсли;
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ЗаданиеВыполнено = Неопределено;
Если КлючПотока <> Неопределено Тогда
Если Поток.ИдентификаторПроцесса = ИдентификаторПроцесса
И КлючПотока <> Неопределено Тогда
Результаты[КлючПотока].Статус = "Ошибка";
Результаты[КлючПотока].КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
Результаты[КлючПотока].ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке);
ОтправитьСообщенияПотока(ИдентификаторЗадания);
Если ЗавершитьДосрочноЕслиОшибка = Истина Тогда
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
КонецПопытки;
КонецЕсли;
Если Не ЗначениеЗаполнено(ИдентификаторЗадания) Или ЗаданиеВыполнено <> Ложь Тогда
УдалитьПоток(Поток.ИдентификаторПотока);
Потоки.Удалить(Поток);
ЕстьЗавершенныеПотоки = Истина;
КонецЕсли;
Индекс = Индекс - 1;
@@ -2176,30 +2260,23 @@
//
// Параметры:
// Потоки - см. НовоеОписаниеПотоков
// ПараметрыОперации - Структура
// Результаты - Соответствие
//
Процедура ОтменитьВыполнениеВсехПотоков(Результаты, ИдентификаторФормы) Экспорт
Процедура ОтменитьВыполнениеВсехПотоков(Потоки, Результаты)
Потоки = ПотокиДлительныхОпераций(ИдентификаторФормы);
ИндексПотока = Потоки.Количество() - 1;
Пока ИндексПотока >= 0 Цикл
Поток = Потоки[ИндексПотока];
Для Каждого Поток Из Потоки Цикл
Если ЗначениеЗаполнено(Поток.ИдентификаторЗадания) Тогда
ОтменитьВыполнениеЗадания(Поток.ИдентификаторЗадания);
КонецЕсли;
КлючПотока = Поток.КлючПотока.Получить();
КлючПотока = Поток.КлючПотока;
Если КлючПотока <> Неопределено Тогда
Если КлючПотока <> Неопределено
И Результаты[КлючПотока].Статус <> "Ошибка" Тогда
Результаты[КлючПотока].Статус = "Отменено";
КонецЕсли;
УдалитьПоток(Поток.ИдентификаторПотока);
Потоки.Удалить(ИндексПотока);
ИндексПотока = ИндексПотока -1;
КонецЦикла;
КонецПроцедуры
@@ -2210,40 +2287,28 @@
Потоки = ПотокиДлительныхОпераций();
ИндексПотока = Потоки.Количество() - 1;
Пока ИндексПотока >= 0 Цикл
Поток = Потоки[ИндексПотока];
Для Каждого Поток Из Потоки Цикл
Если Не ЗначениеЗаполнено(Поток.ИдентификаторЗадания) Тогда
УдалитьПоток(Поток.ИдентификаторПотока);
Иначе
Задание = НайтиЗаданиеПоИдентификатору(Поток.ИдентификаторЗадания);
Если Задание = Неопределено
Или Задание.Состояние <> СостояниеФоновогоЗадания.Активно Тогда
Или Задание.Состояние <> СостояниеФоновогоЗадания.Активно Тогда
УдалитьПоток(Поток.ИдентификаторПотока);
КонецЕсли;
КонецЕсли;
Потоки.Удалить(ИндексПотока);
ИндексПотока = ИндексПотока -1;
КонецЦикла;
КонецПроцедуры
Процедура СохранитьПоток(Поток)
Идентификатор = Поток.ИдентификаторПотока;
Если Не ЗначениеЗаполнено(Идентификатор) Тогда
Идентификатор = Новый УникальныйИдентификатор;
КонецЕсли;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ДлительныеОперации");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.УстановитьЗначение("ИдентификаторПотока", Идентификатор);
ЭлементБлокировки.УстановитьЗначение("ИдентификаторПотока", Поток.ИдентификаторПотока);
НачатьТранзакцию();
@@ -2255,7 +2320,7 @@
НаборЗаписей = РегистрыСведений.ДлительныеОперации.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ИдентификаторПотока.Установить(Идентификатор);
НаборЗаписей.Отбор.ИдентификаторПотока.Установить(Поток.ИдентификаторПотока);
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() = 0 Тогда
@@ -2264,8 +2329,7 @@
Запись = НаборЗаписей[0];
КонецЕсли;
ЗаполнитьЗначенияСвойств(Запись, Поток, , "ИдентификаторПотока,ПараметрыМетода,КлючПотока");
Запись.ИдентификаторПотока = Идентификатор;
ЗаполнитьЗначенияСвойств(Запись, Поток, , "ПараметрыМетода,КлючПотока");
Запись.ПараметрыМетода = Новый ХранилищеЗначения(Поток.ПараметрыМетода);
Запись.КлючПотока = Новый ХранилищеЗначения(Поток.КлючПотока);
@@ -2354,6 +2418,7 @@
| ДлительныеОперации.Наименование КАК Наименование,
| ДлительныеОперации.ПараметрыМетода КАК ПараметрыМетода,
| ДлительныеОперации.ИдентификаторЗадания КАК ИдентификаторЗадания,
| ДлительныеОперации.ИдентификаторПроцесса КАК ИдентификаторПроцесса,
| ДлительныеОперации.ИдентификаторПотока КАК ИдентификаторПотока,
| ДлительныеОперации.КлючПотока КАК КлючПотока
|ИЗ
@@ -2375,7 +2440,7 @@
Для Каждого Поток Из Результат Цикл
Строка = ТаблицаПотоков.Добавить();
ЗаполнитьЗначенияСвойств(Строка, Поток, , "ПараметрыМетода");
ЗаполнитьЗначенияСвойств(Строка, Поток, , "КлючПотока, ПараметрыМетода");
Если Не ЗначениеЗаполнено(Строка.АдресРезультата) Тогда
Строка.АдресРезультата = Неопределено;
КонецЕсли;
@@ -2383,6 +2448,9 @@
Если Поток.ПараметрыМетода <> Неопределено Тогда
Строка.ПараметрыМетода = Поток.ПараметрыМетода.Получить();
КонецЕсли;
Если Поток.КлючПотока <> Неопределено Тогда
Строка.ПараметрыМетода = Поток.КлючПотока.Получить();
КонецЕсли;
КонецЦикла;
@@ -83,6 +83,7 @@
События.Вставить("ПриДобавленииОбработчиковОбновления", Ложь); // Для обратной совместимости с БТС 1.2.2.
События.Вставить("ПослеОбновленияИнформационнойБазы", Ложь);
События.Вставить("ПриПолученииПриоритетаОбновления", Ложь);
События.Вставить("ПриЗаполненииОбъектовПланируемыхКУдалению", Ложь);
// Печать
События.Вставить("ПриПодготовкеСпискаМакетовВФорматеОфисныхДокументовФормируемыхНаСервере", Ложь);
@@ -3152,6 +3153,26 @@
КонецПроцедуры
// См. ОбновлениеИнформационнойБазыПереопределяемый.ПриЗаполненииОбъектовПланируемыхКУдалению.
Процедура ПриЗаполненииОбъектовПланируемыхКУдалению(Объекты) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный");
МодульУправлениеДоступомСлужебный.ПриЗаполненииОбъектовПланируемыхКУдалению(Объекты);
КонецЕсли;
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПриЗаполненииОбъектовПланируемыхКУдалению Тогда
МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС");
МодульИнтеграцияПодсистемБТС.ПриЗаполненииОбъектовПланируемыхКУдалению(Объекты);
КонецЕсли;
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБИП().ПриЗаполненииОбъектовПланируемыхКУдалению Тогда
МодульИнтеграцияПодсистемБИП = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБИП");
МодульИнтеграцияПодсистемБИП.ПриЗаполненииОбъектовПланируемыхКУдалению(Объекты);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Печать
@@ -2315,6 +2315,10 @@
Возврат Ложь;
КонецЕсли;
Если БизнесПроцессы.ТипВсеСсылкиТочекМаршрутаБизнесПроцессов().СодержитТип(ТипЗнч(ПроверяемыеДанные)) Тогда
Возврат Ложь;
КонецЕсли;
Если ЭтоБитаяСсылка = Неопределено Тогда
ЭтоБитаяСсылка = Не ОбщегоНазначения.СсылкаСуществует(ПроверяемыеДанные);
ПроверенныеСсылки[ПроверяемыеДанные] = ЭтоБитаяСсылка;
@@ -2777,7 +2781,9 @@
СсылочныеРеквизиты = Новый Массив;
Если Не ОбъектМетаданных.Корреспонденция Тогда
СсылочныеРеквизиты.Добавить("Счет");
Если ОбъектМетаданных.ПланСчетов <> Неопределено Тогда
СсылочныеРеквизиты.Добавить("Счет");
КонецЕсли;
Иначе
СсылочныеРеквизиты.Добавить("СчетДт");
СсылочныеРеквизиты.Добавить("СчетКт");
@@ -3034,6 +3040,10 @@
Функция ВидыСубконто(ОбъектМетаданных)
Если ОбъектМетаданных.ПланСчетов = Неопределено Тогда
Возврат Новый Массив;
КонецЕсли;
ВидыСубконтоОМ = ОбъектМетаданных.ПланСчетов.ВидыСубконто;
Если ВидыСубконтоОМ = Неопределено Или Не СодержитСсылочныйТип(ВидыСубконтоОМ) Тогда
Возврат Новый Массив;
@@ -3267,8 +3267,9 @@
//
Функция ПрогрессОбновленияОбластейДанных(РежимОбновления) Экспорт
Если Не ОбщегоНазначения.РазделениеВключено()
Или Не ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
Если Не ОбщегоНазначения.РазделениеВключено()
Или Не ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность")
Или Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса") Тогда
Возврат Неопределено;
КонецЕсли;
@@ -3305,11 +3306,8 @@
Запрос.УстановитьПараметр("ПорядокСостоянияОжидает", ПорядокСостоянияОжидает);
Запрос.УстановитьПараметр("ПорядокСостоянияОшибка", ПорядокСостоянияОшибка);
ОбластиОбновленныеНаВерсию = Новый Массив;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса") Тогда
МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса");
ОбластиОбновленныеНаВерсию = МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.ОбластиОбновленныеНаВерсию(Метаданные.Имя, Метаданные.Версия);
КонецЕсли;
МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса");
ОбластиОбновленныеНаВерсию = МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.ОбластиОбновленныеНаВерсию(Метаданные.Имя, Метаданные.Версия);
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
Запрос.УстановитьПараметр("ИспользуемыеОбласти", МодульРаботаВМоделиСервиса.ИспользуемыеОбластиДанных().Выгрузить());
@@ -3325,8 +3323,9 @@
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ОбновленныеОбласти.ОбластьДанныхВспомогательныеДанные КАК ОбластьДанныхВспомогательныеДанные
|ПОМЕСТИТЬ ВерсииПодсистемОбластейДанных
| ОбновленныеОбласти.ОбластьДанныхВспомогательныеДанные КАК ОбластьДанныхВспомогательныеДанные,
| ОбновленныеОбласти.ВыполненаРегистрацияОтложенныхОбработчиков КАК ВыполненаРегистрацияОтложенныхОбработчиков
|ПОМЕСТИТЬ ОбновленныеОбласти
|ИЗ
| &ОбновленныеОбласти КАК ОбновленныеОбласти
|;
@@ -3334,16 +3333,14 @@
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ИспользуемыеОбласти.ОбластьДанных КАК ОбластьДанных,
| ВЫБОР
| КОГДА ВерсииПодсистемОбластейДанных.ОбластьДанныхВспомогательныеДанные ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ОперативноеОбновлениеЗавершено
| НЕ ОбновленныеОбласти.ОбластьДанныхВспомогательныеДанные ЕСТЬ NULL КАК ОперативноеОбновлениеЗавершено,
| НЕ ОбновленныеОбласти.ОбластьДанныхВспомогательныеДанные ЕСТЬ NULL
| И НЕ ОбновленныеОбласти.ВыполненаРегистрацияОтложенныхОбработчиков КАК ВыполняетсяРегистрацияОтложенныхОбработчиков
|ПОМЕСТИТЬ ОбластиДанных
|ИЗ
| ИспользуемыеОбласти КАК ИспользуемыеОбласти
| ЛЕВОЕ СОЕДИНЕНИЕ ВерсииПодсистемОбластейДанных КАК ВерсииПодсистемОбластейДанных
| ПО (ВерсииПодсистемОбластейДанных.ОбластьДанныхВспомогательныеДанные = ИспользуемыеОбласти.ОбластьДанных)
| ЛЕВОЕ СОЕДИНЕНИЕ ОбновленныеОбласти КАК ОбновленныеОбласти
| ПО (ОбновленныеОбласти.ОбластьДанныхВспомогательныеДанные = ИспользуемыеОбласти.ОбластьДанных)
|;
|
|////////////////////////////////////////////////////////////////////////////////
@@ -3352,7 +3349,11 @@
| МИНИМУМ(ВЫБОР
| КОГДА &РежимОбновления = &РежимОбновленияОперативное
| И ОбластиДанных.ОперативноеОбновлениеЗавершено
| ТОГДА &ПорядокСостоянияОбновлено
| ТОГДА ВЫБОР
| КОГДА ОбластиДанных.ВыполняетсяРегистрацияОтложенныхОбработчиков
| ТОГДА &ПорядокСостоянияВыполняется
| ИНАЧЕ &ПорядокСостоянияОбновлено
| КОНЕЦ
| КОГДА &РежимОбновления = &РежимОбновленияОтложенное
| И НЕ ОбластиДанных.ОперативноеОбновлениеЗавершено
| ТОГДА &ПорядокСостоянияОжидает
@@ -3488,21 +3489,32 @@
УсловияЗапроса = Новый Массив;
ЕстьФильтрОперативноеОбновление = Ложь;
Если Отбор.Свойство("РежимыВыполнения") Тогда
РежимыВыполнения = Новый Массив;
Для Каждого ИмяЗначения Из Отбор.РежимыВыполнения Цикл
РежимыВыполнения.Добавить(ОбновлениеИнформационнойБазыСлужебный.ЗначениеПеречисленияПоИмени(ИмяЗначения,
Метаданные.Перечисления.РежимыВыполненияОбработчиков));
РежимВыполнения = ОбновлениеИнформационнойБазыСлужебный.ЗначениеПеречисленияПоИмени(ИмяЗначения,
Метаданные.Перечисления.РежимыВыполненияОбработчиков);
РежимыВыполнения.Добавить(РежимВыполнения);
Если РежимВыполнения = Перечисления.РежимыВыполненияОбработчиков.Оперативно
Или РежимВыполнения = Перечисления.РежимыВыполненияОбработчиков.Монопольно Тогда
ЕстьФильтрОперативноеОбновление = Истина;
КонецЕсли;
КонецЦикла;
УсловияЗапроса.Добавить("ОбработчикиОбновления.РежимВыполнения В (&РежимыВыполнения)");
Запрос.УстановитьПараметр("РежимыВыполнения", РежимыВыполнения);
КонецЕсли;
ЕстьФильтрВыполняется = Ложь;
Если Отбор.Свойство("Статусы") Тогда
Статусы = Новый Массив;
Для Каждого ИмяЗначения Из Отбор.Статусы Цикл
Статусы.Добавить(ОбновлениеИнформационнойБазыСлужебный.ЗначениеПеречисленияПоИмени(ИмяЗначения,
Метаданные.Перечисления.СтатусыОбработчиковОбновления));
Статус = ОбновлениеИнформационнойБазыСлужебный.ЗначениеПеречисленияПоИмени(ИмяЗначения,
Метаданные.Перечисления.СтатусыОбработчиковОбновления);
Статусы.Добавить(Статус);
Если Статус = Перечисления.СтатусыОбработчиковОбновления.Выполняется Тогда
ЕстьФильтрВыполняется = Истина;
КонецЕсли;
КонецЦикла;
УсловияЗапроса.Добавить("ОбработчикиОбновления.Статус В (&Статусы)");
Запрос.УстановитьПараметр("Статусы", Статусы);
@@ -3555,6 +3567,26 @@
КонецЦикла;
Если ЕстьФильтрОперативноеОбновление И ЕстьФильтрВыполняется
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса") Тогда
МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса");
ОбновленныеОбласти = МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.ОбластиОбновленныеНаВерсию(Метаданные.Имя, Метаданные.Версия);
ОбластиВыполняетсяРегистрация = ОбновленныеОбласти.НайтиСтроки(
Новый Структура("ВыполненаРегистрацияОтложенныхОбработчиков", Ложь));
Для Каждого ЭлементВыполняетсяРегистрация Из ОбластиВыполняетсяРегистрация Цикл
НомерОбласти = ЭлементВыполняетсяРегистрация.ОбластьДанныхВспомогательныеДанные;
Если ОбластиДанных <> Неопределено И ОбластиДанных.Найти(НомерОбласти) = Неопределено Тогда
Продолжить;
КонецЕсли;
Строка = ИнформацияПоОбработчикам.Добавить();
Строка.ИмяОбработчика = НСтр("ru = 'Служебные процедуры регистрации отложенных обработчиков'");
Строка.РежимВыполнения = ИменаРежимовПоЗначению[Перечисления.РежимыВыполненияОбработчиков.Оперативно];
Строка.ИмяБиблиотеки = "БиблиотекаСтандартныхПодсистем";
Строка.Статус = ИменаСтатусовПоЗначению[Перечисления.СтатусыОбработчиковОбновления.Выполняется];
Строка.ОбластьДанных = НомерОбласти;
КонецЦикла;
КонецЕсли;
Возврат ИнформацияПоОбработчикам;
КонецФункции
@@ -3597,6 +3629,51 @@
КонецФункции
// Добавляет очередной устаревший объект в список объектов, которые
// планируются к удалению в будущих версиях программы.
//
// Параметры:
// Объекты - Соответствие из КлючИЗначение:
// * Ключ - Строка - смотри ниже параметр Объект.
// * Значение - Булево, Соответствие - смотри ниже параметр Уточнение.
//
// Объект - Строка - полное имя объекта метаданных с данными, который следует очистить.
// Либо объект метаданных с основной таблицей, например, "Справочник.УдалитьОчередьЗаданий".
// Либо значение перечисления, например, "Перечисление.ХозяйственныеОперации.УдалитьСписаниеТоваровПереданныхПартнерам".
// Либо точка маршрута, например, "БизнесПроцесс.Задание.ТочкаМаршрута.УдалитьВернутьИсполнителю".
// Либо все точки маршрута, например, "БизнесПроцесс.Задание.Точки".
// Либо поле регистра, входящее в уникальный индекс,
// например, измерение "РегистрСведений._ДемоОтветственныеЛица.Склад".
//
// Уточнение - Булево - когда в параметре Объект указан удаляемый в будущем объект.
// Имя объекта должно начинаться с Удалить.
// По умолчанию Ложь, если указано Истина, то данные объекта будут удалены.
// - ОписаниеТипов, Тип, ПеречислениеСсылка, ТочкаМаршрутаБизнесПроцессаСсылка - когда
// в параметре Объект указано поле тип которого сокращается
// на список указанных ссылочных типов или один тип
// или значение перечисления или значение точки маршрута бизнес-процесса.
//
Процедура ДобавитьОбъектПланируемыйКУдалению(Объекты, Объект, Уточнение = Ложь) Экспорт
Если ТипЗнч(Уточнение) = Тип("Булево") Тогда
Объекты.Вставить(Объект, Уточнение);
Иначе
СокращаемыеТипыИЗначения = Объекты.Получить(Объект);
Если СокращаемыеТипыИЗначения = Неопределено Тогда
СокращаемыеТипыИЗначения = Новый Соответствие;
Объекты.Вставить(Объект, СокращаемыеТипыИЗначения);
КонецЕсли;
Если ТипЗнч(Уточнение) = Тип("ОписаниеТипов") Тогда
Для Каждого Тип Из Уточнение.Типы() Цикл
СокращаемыеТипыИЗначения.Вставить(Тип, Истина);
КонецЦикла;
Иначе
СокращаемыеТипыИЗначения.Вставить(Уточнение, Истина);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#Область ДляВызоваИзДругихПодсистем
// ИнтернетПоддержкаПользователей.ПолучениеОбновленийПрограммы
@@ -45,7 +45,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.7.327";
Описание.Версия = "3.1.7.343";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -259,6 +259,42 @@
//
Процедура ПриНачальномЗаполненииЭлемента(ПолноеИмяОбъекта, Объект, Данные, ДополнительныеПараметры) Экспорт
КонецПроцедуры
// Вызывается при выполнении обработчика обновления,
// выполняющего очистку данных устаревших объектов метаданных.
//
// Кроме указанных устаревших объектов Удалить*, объекты метаданных,
// отключенные от подсистем библиотек, по-возможности добавляются
// ими автоматически в сокращение типов в измерениях своих регистров.
// Дополнительные сведения могут быть указаны в документации по внедрению
// подсистемы в подразделе "Удаление прикладных объектов из подсистемы".
//
// Параметры:
// Объекты - см. ОбновлениеИнформационнойБазы.ДобавитьОбъектПланируемыйКУдалению.Объекты
//
// Пример:
// ОбновлениеИнформационнойБазы.ДобавитьОбъектПланируемыйКУдалению(Объекты,
// "Справочник.УдалитьОчередьЗаданий");
//
// ОбновлениеИнформационнойБазы.ДобавитьОбъектПланируемыйКУдалению(Объекты,
// "Перечисление.УдалитьСовместимостьНоменклатуры");
//
// ОбновлениеИнформационнойБазы.ДобавитьОбъектПланируемыйКУдалению(Объекты,
// "Перечисление.ХозяйственныеОперации.УдалитьСписаниеТоваровПереданныхПартнерам");
//
// ОбновлениеИнформационнойБазы.ДобавитьОбъектПланируемыйКУдалению(Объекты,
// "БизнесПроцесс.Задание.ТочкаМаршрута.УдалитьВернутьИсполнителю");
//
// ОбновлениеИнформационнойБазы.ДобавитьОбъектПланируемыйКУдалению(Объекты,
// "РегистрСведений.ВерсииОбъектов.Объект",
// Новый ОписаниеТипов("СправочникСсылка.ФизическиеЛица,
// |ДокументСсылка.НачислениеЗарплаты"));
//
Процедура ПриЗаполненииОбъектовПланируемыхКУдалению(Объекты) Экспорт
КонецПроцедуры
#Область УстаревшиеПроцедурыИФункции
@@ -287,13 +287,13 @@
Запрос.УстановитьПараметр("Версия", Версия);
Запрос.Текст =
"ВЫБРАТЬ
| ВерсииПодсистемОбластейДанных.ОбластьДанныхВспомогательныеДанные КАК ОбластьДанныхВспомогательныеДанные
| ВерсииПодсистемОбластейДанных.ОбластьДанныхВспомогательныеДанные КАК ОбластьДанныхВспомогательныеДанные,
| ВерсииПодсистемОбластейДанных.ВыполненаРегистрацияОтложенныхОбработчиков КАК ВыполненаРегистрацияОтложенныхОбработчиков
|ИЗ
| РегистрСведений.ВерсииПодсистемОбластейДанных КАК ВерсииПодсистемОбластейДанных
|ГДЕ
| ВерсииПодсистемОбластейДанных.ИмяПодсистемы = &ИмяПодсистемы
| И ВерсииПодсистемОбластейДанных.Версия = &Версия
| И ВерсииПодсистемОбластейДанных.ВыполненаРегистрацияОтложенныхОбработчиков";
| И ВерсииПодсистемОбластейДанных.Версия = &Версия";
ОбластиОбновленныеНаВерсию = Запрос.Выполнить().Выгрузить();
Возврат ОбластиОбновленныеНаВерсию;
@@ -183,7 +183,9 @@
// * ИмяКаталогаРезервнойКопииИБ - Строка - каталог сохранения резервной копии.
// * ВосстанавливатьИнформационнуюБазу - Булево - признак необходимости восстановления базы.
// * ЗавершениеРаботыСистемы - Булево - признак того, что установка обновления происходит при завершении работы.
// * ФайлыОбновления - Массив - содержит значения типа Структура.
// * ФайлыОбновления - Массив из Структура:
// ** ПолноеИмяФайлаОбновления - Строка
// ** ВыполнитьОбработчикиОбновления - Булево - выполнить после перехода на эту версию.
// * Исправления - Структура:
// ** Установить - Массив - пути к файлам исправлений во временном хранилище,
// которые требуется установить.
@@ -203,7 +205,19 @@
ОбновлениеКонфигурацииВызовСервера.СохранитьНастройкиОбновленияКонфигурации(Параметры);
Если Форма <> Неопределено Тогда
Форма.Закрыть();
Если Параметры.РежимОбновления = 0 Тогда
ИмяПараметра = "СтандартныеПодсистемы.ПропуститьЗавершениеРаботыСистемыПослеОбработкиПредупреждений";
ПараметрыПриложения.Вставить(ИмяПараметра, Истина);
Попытка
Форма.Закрыть();
Исключение
ПараметрыПриложения.Удалить(ИмяПараметра);
ВызватьИсключение;
КонецПопытки;
ПараметрыПриложения.Удалить(ИмяПараметра);
Иначе
Форма.Закрыть();
КонецЕсли;
КонецЕсли;
Если Параметры.РежимОбновления = 0 Тогда // Обновить сейчас
@@ -211,7 +225,7 @@
ИначеЕсли Параметры.РежимОбновления = 1 Тогда // При завершении работы
ИмяПараметра = "СтандартныеПодсистемы.ПредлагатьОбновлениеИнформационнойБазыПриЗавершенииСеанса";
ПараметрыПриложения.Вставить(ИмяПараметра, Истина);
ПараметрыПриложения.Вставить("СтандартныеПодсистемы.ИменаФайловОбновления", ИменаФайловОбновления(Параметры));
ПараметрыПриложения.Вставить("СтандартныеПодсистемы.ИменаФайловОбновления", ИменаФайловОбновления(Параметры, Неопределено));
ИначеЕсли Параметры.РежимОбновления = 2 Тогда // Запланировать обновление
ЗапланироватьОбновлениеКонфигурации(Параметры, ПараметрыАдминистрирования);
КонецЕсли;
@@ -439,29 +453,50 @@
КонецПроцедуры
Функция ИменаФайловОбновления(Параметры)
Функция ИменаФайловОбновления(Параметры, ТолькоПервыйФайл = Ложь)
ИмяПараметра = "СтандартныеПодсистемы.ИменаФайловОбновления";
Если ПараметрыПриложения.Получить(ИмяПараметра) <> Неопределено Тогда
Если ТолькоПервыйФайл = Истина Тогда
Возврат ПараметрыПриложения[ИмяПараметра].ИмяПервогоФайла;
ИначеЕсли ТолькоПервыйФайл = Ложь Тогда
Возврат ПараметрыПриложения[ИмяПараметра].ИменаФайлов;
КонецЕсли;
Возврат ПараметрыПриложения[ИмяПараметра];
КонецЕсли;
Если Параметры.Свойство("НуженФайлОбновления") И Не Параметры.НуженФайлОбновления Тогда
ИмяПервогоФайла = "";
ИменаФайловОбновления = "";
Иначе
ИмяПервогоФайла = Null;
Если ПустаяСтрока(Параметры.ИмяФайлаОбновления) Тогда
ИменаФайлов = Новый Массив;
Для Каждого ФайлОбновления Из Параметры.ФайлыОбновления Цикл
Если ИмяПервогоФайла = Null Тогда
ИмяПервогоФайла = ФайлОбновления.ПолноеИмяФайлаОбновления;
КонецЕсли;
ПрефиксФайлаОбновления = ?(ФайлОбновления.ВыполнитьОбработчикиОбновления, "+", "");
ИменаФайлов.Добавить(Форматировать(ПрефиксФайлаОбновления + ФайлОбновления.ПолноеИмяФайлаОбновления));
КонецЦикла;
ИменаФайловОбновления = СтрСоединить(ИменаФайлов, ",");
Иначе
ИменаФайловОбновления = Форматировать(Параметры.ИмяФайлаОбновления);
ИмяПервогоФайла = Параметры.ИмяФайлаОбновления;
КонецЕсли;
КонецЕсли;
Возврат "[" + ИменаФайловОбновления + "]";
ИмяПервогоФайла = ?(ИмяПервогоФайла = Null, "", ИмяПервогоФайла);
ИменаФайловОбновления = "[" + ИменаФайловОбновления + "]";
Если ТолькоПервыйФайл = Истина Тогда
Возврат ИмяПервогоФайла;
ИначеЕсли ТолькоПервыйФайл = Ложь Тогда
Возврат ИменаФайловОбновления;
КонецЕсли;
Возврат Новый Структура("ИмяПервогоФайла, ИменаФайлов",
ИмяПервогоФайла, ИменаФайловОбновления);
КонецФункции
@@ -874,18 +909,10 @@
ТекстыМакетов.Удалить("ОбластьПараметров");
//
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(ТекстыМакетов.МакетФайлаОбновленияКонфигурации);
ИмяФайлаСкрипта = КаталогВременныхФайловОбновления + "main.js";
ФайлСкрипта.Записать(ИмяФайлаСкрипта, КодировкаФайловПрограммыОбновления());
ЗаписатьТекстВФайл(КаталогВременныхФайловОбновления + "main.js", ТекстыМакетов.МакетФайлаОбновленияКонфигурации);
// Вспомогательный файл: helpers.js.
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(ТекстыМакетов.ДопФайлОбновленияКонфигурации);
ФайлСкрипта.Записать(КаталогВременныхФайловОбновления + "helpers.js", КодировкаФайловПрограммыОбновления());
ЗаписатьТекстВФайл(КаталогВременныхФайловОбновления + "helpers.js", ТекстыМакетов.ДопФайлОбновленияКонфигурации);
Если ИнтерактивныйРежим Тогда
БиблиотекаКартинок.ЗаставкаВнешнейОперации.Записать(КаталогВременныхФайловОбновления + "splash.png");
@@ -893,16 +920,10 @@
БиблиотекаКартинок.ДлительнаяОперация48.Записать(КаталогВременныхФайловОбновления + "progress.gif");
ИмяГлавногоФайлаСкрипта = КаталогВременныхФайловОбновления + "splash.hta";
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(ТекстыМакетов.ЗаставкаОбновленияКонфигурации);
ФайлСкрипта.Записать(ИмяГлавногоФайлаСкрипта, КодировкаФайловПрограммыОбновления());
ЗаписатьТекстВФайл(ИмяГлавногоФайлаСкрипта, ТекстыМакетов.ЗаставкаОбновленияКонфигурации);
Иначе
ИмяГлавногоФайлаСкрипта = КаталогВременныхФайловОбновления + "updater.js";
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(ТекстыМакетов.НеинтерактивноеОбновлениеКонфигурации);
ФайлСкрипта.Записать(ИмяГлавногоФайлаСкрипта, КодировкаФайловПрограммыОбновления());
ЗаписатьТекстВФайл(ИмяГлавногоФайлаСкрипта, ТекстыМакетов.НеинтерактивноеОбновлениеКонфигурации);
КонецЕсли;
Если ЭтоОтложенноеОбновление Тогда
@@ -926,10 +947,7 @@
ВставитьПараметрСкрипта("ОписаниеЗадачи" , ОписаниеЗадачи, Истина, СкриптСозданияЗадачиПланировщикаЗадач);
ИмяСкриптаСозданияЗадачиПланировщикаЗадач = КаталогВременныхФайловОбновления + "addsheduletask.js";
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(СкриптСозданияЗадачиПланировщикаЗадач);
ФайлСкрипта.Записать(ИмяСкриптаСозданияЗадачиПланировщикаЗадач, КодировкаФайловПрограммыОбновления());
ЗаписатьТекстВФайл(ИмяСкриптаСозданияЗадачиПланировщикаЗадач, СкриптСозданияЗадачиПланировщикаЗадач);
Параметры.КодЗадачиПланировщика = КодЗадачи;
@@ -937,22 +955,119 @@
КонецЕсли;
ФайлЛога = Новый ТекстовыйДокумент;
ФайлЛога.Вывод = ИспользованиеВывода.Разрешить;
ФайлЛога.УстановитьТекст(СтандартныеПодсистемыКлиент.ИнформацияДляПоддержки());
ФайлЛога.Записать(КаталогВременныхФайловОбновления + "templog.txt", КодировкаТекста.Системная);
ЗаписатьТекстВФайл(КаталогВременныхФайловОбновления + "templog.txt",
СтандартныеПодсистемыКлиент.ИнформацияДляПоддержки(), КодировкаТекста.Системная);
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(ТекстыМакетов.СкриптУдаленияПатчей);
ФайлСкрипта.Записать(КаталогВременныхФайловОбновления + "add-delete-patches.js", КодировкаФайловПрограммыОбновления());
ЗаписатьТекстВФайл(КаталогВременныхФайловОбновления + "add-delete-patches.js",
ТекстыМакетов.СкриптУдаленияПатчей);
Возврат ИмяГлавногоФайлаСкрипта;
КонецФункции
Процедура ЗаписатьТекстВФайл(ПолноеИмяФайла, Текст, Кодировка = Неопределено)
Если Кодировка = Неопределено Тогда
Кодировка = КодировкаФайловПрограммыОбновления();
КонецЕсли;
ФайлСкрипта = Новый ЗаписьТекста(ПолноеИмяФайла, Кодировка);
ФайлСкрипта.Записать(Текст);
ФайлСкрипта.Закрыть();
КонецПроцедуры
// Параметры:
// Параметры - см. УстановитьОбновление.Параметры
// ПараметрыАдминистрирования - см. СтандартныеПодсистемыСервер.ПараметрыАдминистрирования.
//
Процедура ЗапуститьСкриптОбновления(Параметры, ПараметрыАдминистрирования)
Контекст = Новый Структура;
Контекст.Вставить("Параметры", Параметры);
Контекст.Вставить("ПараметрыАдминистрирования", ПараметрыАдминистрирования);
ПараметрыФормы = Новый Структура("ИмяПервогоФайлаОбновления",
ИменаФайловОбновления(Параметры, Истина));
Оповещение = Новый ОписаниеОповещения("ЗапуститьСкриптОбновленияПослеПроверкиФайлаОбновления",
ЭтотОбъект, Контекст);
Форма = ОткрытьФорму("ОбщаяФорма.ПроверкаФайлаОбновления", ПараметрыФормы,,,,,
Оповещение, РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
Если Форма = Неопределено Тогда
ЗапуститьСкриптОбновленияПриОчисткеДанных(Контекст);
КонецЕсли;
КонецПроцедуры
// Параметры:
// Контекст - Структура:
// * Параметры - см. УстановитьОбновление.Параметры
// * ПараметрыАдминистрирования - см. СтандартныеПодсистемыСервер.ПараметрыАдминистрирования.
// Результат - Булево, Неопределено
//
Процедура ЗапуститьСкриптОбновленияПослеПроверкиФайлаОбновления(Результат, Контекст) Экспорт
Если Результат = Истина Тогда
ЗапуститьСкриптОбновленияПослеОчисткиУстаревшихДанных(Истина, Контекст);
Иначе
ЗапуститьСкриптОбновленияПриОчисткеДанных(Контекст);
КонецЕсли;
КонецПроцедуры
// Параметры:
// Контекст - см. ЗапуститьСкриптОбновленияПослеПроверкиФайлаОбновления.Контекст
//
Процедура ЗапуститьСкриптОбновленияПриОчисткеДанных(Контекст)
ПолноеИмяФормы = "Обработка.РезультатыОбновленияПрограммы.Форма.ОчисткаУстаревшихДанных";
Окна = ПолучитьОкна();
Для Каждого Окно Из Окна Цикл
Для Каждого Форма Из Окно.Содержимое Цикл
Если Форма.ИмяФормы = ПолноеИмяФормы И Форма.Открыта() Тогда
Форма.Закрыть();
КонецЕсли;
КонецЦикла;
КонецЦикла;
Оповещение = Новый ОписаниеОповещения("ЗапуститьСкриптОбновленияПослеОчисткиУстаревшихДанных",
ЭтотОбъект, Контекст);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ОчиститьИЗакрыть", Истина);
ОткрытьФорму(ПолноеИмяФормы, ПараметрыФормы,,,,,
Оповещение, РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
КонецПроцедуры
// Параметры:
// Результат - Булево, Неопределено
// Контекст - см. ЗапуститьСкриптОбновленияПослеПроверкиФайлаОбновления.Контекст
//
Процедура ЗапуститьСкриптОбновленияПослеОчисткиУстаревшихДанных(Результат, Контекст) Экспорт
Если Результат <> Истина Тогда
Если Результат <> Ложь Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Обновление конфигурации отменено.'"));
КонецЕсли;
Возврат;
КонецЕсли;
ЗапуститьСкриптОбновленияЗавершение(Контекст.Параметры, Контекст.ПараметрыАдминистрирования);
КонецПроцедуры
// Параметры:
// Параметры - см. УстановитьОбновление.Параметры
// ПараметрыАдминистрирования - см. СтандартныеПодсистемыСервер.ПараметрыАдминистрирования.
//
Процедура ЗапуститьСкриптОбновленияЗавершение(Параметры, ПараметрыАдминистрирования)
ИмяГлавногоФайлаСкрипта = СформироватьФайлыСкриптаОбновления(Истина, Параметры, ПараметрыАдминистрирования);
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), "Информация",
НСтр("ru = 'Выполняется процедура обновления конфигурации:'") + " " + ИмяГлавногоФайлаСкрипта);
@@ -4008,6 +4008,9 @@
ИначеЕсли БизнесПроцессы.ТипВсеСсылки().СодержитТип(Тип) Тогда
Представление = "БизнесПроцессСсылка";
ИначеЕсли БизнесПроцессы.ТипВсеСсылкиТочекМаршрутаБизнесПроцессов().СодержитТип(Тип) Тогда
Представление = "ТочкаМаршрутаБизнесПроцессаСсылка";
ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(Тип) Тогда
Представление = "ПланВидовХарактеристикСсылка";
@@ -6234,6 +6237,61 @@
КонецПроцедуры
// Служебные объекты и объекты при загрузке из резервной копии,
// должны записываться без какой-либо прикладной логики.
//
// Запись служебных объектов без отключения прикладной логики,
// может привести к зацикливанию, снижению производительности,
// а также избыточным изменениях, которые в некоторых случаях
// могут неожиданно повлиять на логику работы.
//
// Служебными являются объекты, которые обычно не участвуют
// в обмене данными, не зависят от других объектов, например:
// - кэши;
// - даты обновления кэшей и аналогичные признаки;
// - промежуточные данные для передачи параметров в фоновые задания;
// - вспомогательные служебные данные (например, ключи доступа,
// идентификаторы объектов метаданных).
//
// При использовании подсистемы Управление доступом, требуется
// отдельно вызывать процедуру ОтключитьОбновлениеКлючейДоступа
// общего модуля УправлениеДоступом.
//
// Процедура включает режим загрузки данных,
// отключает регистрацию объектов на планах обмена,
// отключает контроль механизма удаления помеченных объектов.
//
// Параметры:
// Объект - ПланОбменаОбъект
// - КонстантаМенеджерЗначения
// - СправочникОбъект
// - ДокументОбъект
// - ПоследовательностьНаборЗаписей
// - ПланВидовХарактеристикОбъект
// - ПланСчетовОбъект
// - ПланВидовРасчетаОбъект
// - БизнесПроцессОбъект
// - ЗадачаОбъект
// - УдалениеОбъекта
// - РегистрСведенийНаборЗаписей
// - РегистрНакопленияНаборЗаписей
// - РегистрБухгалтерииНаборЗаписей
// - РегистрРасчетаНаборЗаписей
// - ПерерасчетНаборЗаписей
//
// ЭтоУзелПланаОбмена - Булево
//
Процедура ОтключитьКонтрольЗаписи(Объект, ЭтоУзелПланаОбмена = Ложь) Экспорт
Объект.ДополнительныеСвойства.Вставить("НеВыполнятьКонтрольУдаляемых");
Объект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов");
Объект.ОбменДанными.Загрузка = Истина;
Если Не ЭтоУзелПланаОбмена Тогда
Объект.ОбменДанными.Получатели.АвтоЗаполнение = Ложь;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -9312,18 +9370,16 @@
СистемнаяИнформация = Новый СистемнаяИнформация;
НоваяСборка = НоваяСборка(СистемнаяИнформация.ВерсияПриложения);
Если Не ЗначениеЗаполнено(НоваяСборка) Тогда
НоваяСборка = НоваяСборка(ОбщиеПараметры.МинимальнаяВерсияПлатформы);
Если ЗначениеЗаполнено(НоваяСборка)
И Пользователи.ЭтоПолноправныйПользователь(, Истина, Ложь) Тогда
ОбщиеПараметры.МинимальнаяВерсияПлатформы = НоваяСборка;
ОбщиеПараметры.МинимальноНеобходимаяВерсияПлатформы = НоваяСборка;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ОбщиеПараметры.РекомендуемаяВерсияПлатформы, НоваяСборка) < 0 Тогда
ОбщиеПараметры.РекомендуемаяВерсияПлатформы = НоваяСборка;
НоваяРекомендуемаяСборка = НоваяСборка(ОбщиеПараметры.МинимальнаяВерсияПлатформы);
Если ЗначениеЗаполнено(НоваяРекомендуемаяСборка) Тогда
МинимальнаяСборка = НомерСборкиПоТекущейВерсииПлатформы(МинимальнаяВерсияПлатформы());
ОбщиеПараметры.МинимальнаяВерсияПлатформы = МинимальнаяСборка;
ОбщиеПараметры.МинимальноНеобходимаяВерсияПлатформы = МинимальнаяСборка;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ОбщиеПараметры.РекомендуемаяВерсияПлатформы, НоваяРекомендуемаяСборка) < 0 Тогда
ОбщиеПараметры.РекомендуемаяВерсияПлатформы = НоваяРекомендуемаяСборка;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ОбщиеПараметры.МинимальнаяВерсияПлатформы, НоваяСборка) < 0 Тогда
ИначеЕсли ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ОбщиеПараметры.МинимальнаяВерсияПлатформы, НоваяСборка) < 0 Тогда
ОбщиеПараметры.РекомендуемаяВерсияПлатформы = НоваяСборка;
ОбщиеПараметры.МинимальнаяВерсияПлатформы = НоваяСборка;
ОбщиеПараметры.МинимальноНеобходимаяВерсияПлатформы = НоваяСборка;
@@ -843,11 +843,6 @@
//
Функция НовыйИнтернетПрокси(НастройкаПроксиСервера, URLИлиПротокол) Экспорт
Протокол = "http";
Если ЗначениеЗаполнено(URLИлиПротокол) Тогда
Протокол = ПротоколДляПрокси(URLИлиПротокол);
КонецЕсли;
Если НастройкаПроксиСервера = Неопределено Тогда
// Системные установки прокси-сервера.
Возврат Неопределено;
@@ -865,26 +860,35 @@
Возврат Новый ИнтернетПрокси(Истина);
КонецЕсли;
ИспользоватьАутентификациюОС = НастройкаПроксиСервера.Получить("ИспользоватьАутентификациюОС");
ИспользоватьАутентификациюОС = ?(ИспользоватьАутентификациюОС = Истина, Истина, Ложь);
ДополнительныеНастройки = НастройкаПроксиСервера.Получить("ДополнительныеНастройкиПрокси");
Если ТипЗнч(ДополнительныеНастройки) <> Тип("Соответствие") Тогда
ДополнительныеНастройки = Новый Соответствие;
КонецЕсли;
// Настройки прокси-сервера, заданные вручную.
Прокси = Новый ИнтернетПрокси;
// Определение адреса и порта прокси-сервера.
ДополнительныеНастройки = НастройкаПроксиСервера.Получить("ДополнительныеНастройкиПрокси");
ПроксиПоПротоколу = Неопределено;
Если ТипЗнч(ДополнительныеНастройки) = Тип("Соответствие") Тогда
ПроксиПоПротоколу = ДополнительныеНастройки.Получить(Протокол);
КонецЕсли;
ИспользоватьАутентификациюОС = НастройкаПроксиСервера.Получить("ИспользоватьАутентификациюОС");
ИспользоватьАутентификациюОС = ?(ИспользоватьАутентификациюОС = Истина, Истина, Ложь);
Если ТипЗнч(ПроксиПоПротоколу) = Тип("Структура") Тогда
Прокси.Установить(Протокол, ПроксиПоПротоколу.Адрес, ПроксиПоПротоколу.Порт,
Протоколы = СтрРазделить("http,https,ftp,ftps", ",", Ложь);
Для Каждого Протокол Из Протоколы Цикл
АдресСервера = НастройкаПроксиСервера["Сервер"];
Порт = НастройкаПроксиСервера["Порт"];
ПроксиПоПротоколу = ДополнительныеНастройки[Протокол];
Если ТипЗнч(ПроксиПоПротоколу) = Тип("Структура") Тогда
АдресСервера = ПроксиПоПротоколу.Адрес;
Порт = ПроксиПоПротоколу.Порт;
КонецЕсли;
Если Не ЗначениеЗаполнено(Порт) Тогда
Порт = Неопределено;
КонецЕсли;
Прокси.Установить(Протокол, АдресСервера, Порт,
НастройкаПроксиСервера["Пользователь"], НастройкаПроксиСервера["Пароль"], ИспользоватьАутентификациюОС);
Иначе
Прокси.Установить(Протокол, НастройкаПроксиСервера["Сервер"], НастройкаПроксиСервера["Порт"],
НастройкаПроксиСервера["Пользователь"], НастройкаПроксиСервера["Пароль"], ИспользоватьАутентификациюОС);
КонецЕсли;
КонецЦикла;
Прокси.НеИспользоватьПроксиДляЛокальныхАдресов = НастройкаПроксиСервера["НеИспользоватьПроксиДляЛокальныхАдресов"];
@@ -575,6 +575,9 @@
КонецЕсли;
КонецЕсли;
ИмяБезРасширения = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяБезРасширения);
РасширениеБезТочки = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(РасширениеБезТочки);
ВремяИзмененияУниверсальное = ПараметрыФайла.ВремяИзмененияУниверсальное;
Если Не ЗначениеЗаполнено(ВремяИзмененияУниверсальное)
Или ВремяИзмененияУниверсальное > ТекущаяУниверсальнаяДата() Тогда
@@ -2240,7 +2243,7 @@
ГиперссылкаПерехода.Заголовок = ДобавляемыйЭлемент.Заголовок;
Если ДобавляемыйЭлемент.ОтображатьКоличество Тогда
Владелец = ?(ЗначениеЗаполнено(Форма.Параметры.ЗначениеКопирования), Форма.Параметры.ЗначениеКопирования, ВладелецПрисоединенныхФайлов);
Владелец = ?(Форма.Параметры.Свойство("ЗначениеКопирования") И ЗначениеЗаполнено(Форма.Параметры.ЗначениеКопирования), Форма.Параметры.ЗначениеКопирования, ВладелецПрисоединенныхФайлов);
КоличествоПрисоединенныхФайлов = РаботаСФайламиСлужебныйВызовСервера.КоличествоПрисоединенныхФайлов(Владелец);
Если КоличествоПрисоединенныхФайлов > 0 Тогда
ГиперссылкаПерехода.Заголовок = ГиперссылкаПерехода.Заголовок + " ("
@@ -1587,9 +1587,11 @@
Параметры.ОбработкаПродолжения = Неопределено;
Параметры.ОбработкаЗавершения = Неопределено;
ИмяПараметра = "СтандартныеПодсистемы.ПропуститьЗавершениеРаботыСистемыПослеОбработкиПредупреждений";
Если Не Параметры.Отказ
И Не Параметры.НепрерывноеВыполнение Тогда
И Не Параметры.НепрерывноеВыполнение
И ПараметрыПриложения.Получить(ИмяПараметра) = Неопределено Тогда
ИмяПараметра = "СтандартныеПодсистемы.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы";
ПараметрыПриложения.Вставить(ИмяПараметра, Истина);
@@ -1797,6 +1797,110 @@
КонецПроцедуры
// См. ОбновлениеИнформационнойБазыПереопределяемый.ПриЗаполненииОбъектовПланируемыхКУдалению.
Процедура ПриЗаполненииОбъектовПланируемыхКУдалению(Объекты) Экспорт
// РегистрСведений.ЗависимостиПравДоступа.ТипВедущейТаблицы
ЗависимостиПравДоступа = РегистрыСведений.ЗависимостиПравДоступа.ЗависимостиПравДоступа();
ТипыВедущихТаблиц = Новый Массив;
Для Каждого Строка Из ЗависимостиПравДоступа Цикл
ТипыВедущихТаблиц.Добавить(ТипЗнч(Строка.ТипВедущейТаблицы));
КонецЦикла;
ТребуемыйТипВедущейТаблицы = Новый ОписаниеТипов(ТипыВедущихТаблиц);
ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыйТипВедущейТаблицы,
Метаданные.РегистрыСведений.ЗависимостиПравДоступа.Измерения.ТипВедущейТаблицы);
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
НастройкиВнедрения = НастройкиВнедрения();
СвойстваВидовДоступа = СвойстваВидовДоступа();
// ОпределяемыйТип.ЗначениеДоступа
ТипыГруппИЗначений = Новый Массив;
Для Каждого КлючИЗначение Из СвойстваВидовДоступа.ПоТипамГруппИЗначений Цикл
ТипыГруппИЗначений.Добавить(КлючИЗначение.Ключ);
КонецЦикла;
ТребуемыйТипЗначенияДоступа = Новый ОписаниеТипов(
СтрСоединить(НастройкиВнедрения.ЗначенияДоступа, ","));
ТребуемыйТипЗначенияДоступа = Новый ОписаниеТипов(ТребуемыйТипЗначенияДоступа, ТипыГруппИЗначений);
ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыйТипЗначенияДоступа,
Метаданные.РегистрыСведений.ЗначенияГруппДоступа.Измерения.ЗначениеДоступа);
ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыйТипЗначенияДоступа,
Метаданные.РегистрыСведений.ЗначенияГруппДоступаПоУмолчанию.Измерения.ТипЗначенийДоступа);
ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыйТипЗначенияДоступа,
Метаданные.РегистрыСведений.ГруппыЗначенийДоступа.Измерения.ЗначениеДоступа);
ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыйТипЗначенияДоступа,
Метаданные.РегистрыСведений.ГруппыЗначенийДоступа.Измерения.ГруппаЗначенийДоступа);
ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыйТипЗначенияДоступа,
Метаданные.РегистрыСведений.ИспользуемыеВидыДоступа.Измерения.ТипЗначенийДоступа);
ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыйТипЗначенияДоступа,
Метаданные.РегистрыСведений.ИспользуемыеВидыДоступаПоТаблицам.Измерения.ТипЗначенийДоступа);
// ОпределяемыйТип.ВладелецНастроекПрав
ВозможныеПрава = ВозможныеПраваДляНастройкиПравОбъектов();
ТипыВладельцевНастроекПрав = Новый Массив;
Для Каждого ВладелецПрав Из ВозможныеПрава.ТипыВладельцев Цикл
ТипыВладельцевНастроекПрав.Добавить(ТипЗнч(ВладелецПрав));
КонецЦикла;
ТребуемыйТипВладельцаНастроекПрав = Новый ОписаниеТипов(ТипыВладельцевНастроекПрав);
ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыйТипВладельцаНастроекПрав,
Метаданные.РегистрыСведений.НастройкиПравОбъектов.Измерения.Объект);
ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыйТипВладельцаНастроекПрав,
Метаданные.РегистрыСведений.НаследованиеНастроекПравОбъектов.Измерения.Объект);
ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыйТипВладельцаНастроекПрав,
Метаданные.РегистрыСведений.НаследованиеНастроекПравОбъектов.Измерения.Родитель);
// ОпределяемыйТип.ВладелецЗначенийКлючейДоступа
ДобавитьОбъектПланируемыйКУдалению(Объекты,
Новый ОписаниеТипов(СтрСоединить(НастройкиВнедрения.ВладельцыЗначенийКлючейДоступа.Ссылки, ",")),
Метаданные.РегистрыСведений.КлючиДоступаКОбъектам.Измерения.Объект);
// ОпределяемыйТип.ПолеРегистраКлючейДоступаКРегистрам
Для Каждого ОписаниеРегистровКлючей Из НастройкиВнедрения.ТипыИзмеренийРегистровКлючей Цикл
ИмяРегистраКлючей = ОписаниеРегистровКлючей.Ключ;
МетаданныеРегистраКлючей = Метаданные.РегистрыСведений[ИмяРегистраКлючей];
КоличествоПолей = УправлениеДоступомСлужебныйПовтИсп.КоличествоОпорныхПолейРегистра(ИмяРегистраКлючей);
ТребуемыйТипПоля = Новый ОписаниеТипов(СтрСоединить(ОписаниеРегистровКлючей.Значение.ИменаТипов, ","));
Для НомерПоля = 1 По КоличествоПолей Цикл
ИмяПоля = "Поле" + НомерПоля;
ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыйТипПоля,
МетаданныеРегистраКлючей.Измерения[ИмяПоля]);
КонецЦикла;
КонецЦикла;
// РегистрСведений.НаборыЗначенийДоступа.Объект
ТипыОбъектовПодписок = УправлениеДоступомСлужебныйПовтИсп.ТипыОбъектовВПодпискахНаСобытия(
"ЗаписатьНаборыЗначенийДоступа");
ТипыСсылокОбъектовПодписок = Новый Массив;
Для Каждого КлючИЗначение Из ТипыОбъектовПодписок Цикл
МетаданныеОбъекта = Метаданные.НайтиПоТипу(КлючИЗначение.Ключ);
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(МетаданныеОбъекта.ПолноеИмя());
ПустаяСсылка = МенеджерОбъекта.ПустаяСсылка();
ТипыСсылокОбъектовПодписок.Добавить(ТипЗнч(ПустаяСсылка));
КонецЦикла;
ТребуемыйТипТаблицСЗаписьюНаборовЗначенийДоступа = Новый ОписаниеТипов(ТипыСсылокОбъектовПодписок);
ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыйТипТаблицСЗаписьюНаборовЗначенийДоступа,
Метаданные.РегистрыСведений.НаборыЗначенийДоступа.Измерения.Объект);
// РегистрСведений.НаборыЗначенийДоступа.ЗначениеДоступа
ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыйТипЗначенияДоступа,
Метаданные.РегистрыСведений.НаборыЗначенийДоступа.Измерения.ЗначениеДоступа);
КонецПроцедуры
// Параметры:
// ИзменениеЯзыков - см. МультиязычностьСервер.ОписаниеСтарыхИНовыхНастроекЯзыков
//
@@ -3225,6 +3329,32 @@
КонецФункции
// Параметры:
// Объекты - см. ОбновлениеИнформационнойБазы.ДобавитьОбъектПланируемыйКУдалению.Объекты
// ПолноеИмяИзмерения - см. ОбновлениеИнформационнойБазы.ДобавитьОбъектПланируемыйКУдалению.Объект
// ТребуемыеТипы - ОписаниеТипов
// УказанныеТипы - ОписаниеТипов
//
Процедура ДобавитьОбъектПланируемыйКУдалению(Объекты, ТребуемыеТипы, МетаданныеИзмерения)
Если ТребуемыеТипы.Типы().Количество() = 0 Тогда
ЛишниеТипы = МетаданныеИзмерения.Тип;
Иначе
ЛишниеТипы = Новый ОписаниеТипов(МетаданныеИзмерения.Тип,, ТребуемыеТипы.Типы());
КонецЕсли;
Если ЛишниеТипы.Типы().Количество() = 0 Тогда
Возврат;
КонецЕсли;
ЧастиИмени = СтрРазделить(МетаданныеИзмерения.ПолноеИмя(), ".");
ЧастиИмени.Удалить(2);
ОбновлениеИнформационнойБазы.ДобавитьОбъектПланируемыйКУдалению(Объекты,
СтрСоединить(ЧастиИмени, "."), ЛишниеТипы);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Обработчики подписок на события.
@@ -772,7 +772,7 @@
Функция КоличествоОпорныхПолейРегистра(Знач ИмяРегистра = "") Экспорт
Если ИмяРегистра = "" Тогда
Если ИмяРегистра = "" Или ИмяРегистра = "КлючиДоступаКРегистрам" Тогда
ИмяРегистра = "КлючиДоступаКРегистрам";
Измерения = Метаданные.РегистрыСведений.КлючиДоступаКРегистрам.Измерения;
Если Измерения.Количество() < 1 Или Измерения[0].Имя <> "Регистр" Тогда
@@ -103,10 +103,17 @@
ДополнительныеСведения = Новый Массив;
Для каждого Свойство Из Свойства Цикл
Если НЕ Свойство.ЭтоДополнительноеСведение Тогда
Если Не Свойство.ЭтоДополнительноеСведение Тогда
ИмяКолонки = "ДополнительныйРеквизит_"
+ СтандартныеПодсистемыСервер.ПреобразоватьСтрокуВДопустимоеНаименованиеКолонки(Строка(Свойство));
Если ИнформацияПоКолонкам.Найти(ИмяКолонки, "ИмяКолонки") <> Неопределено Тогда
Продолжить;
КонецЕсли;
СтрокаИнфоПроКолонки = ИнформацияПоКолонкам.Добавить();
ИмяКолонки = СтандартныеПодсистемыСервер.ПреобразоватьСтрокуВДопустимоеНаименованиеКолонки(Строка(Свойство));
СтрокаИнфоПроКолонки.ИмяКолонки = "ДополнительныйРеквизит_" + ИмяКолонки;
СтрокаИнфоПроКолонки.ИмяКолонки = ИмяКолонки;
СтрокаИнфоПроКолонки.ПредставлениеКолонки = Строка(Свойство);
СтрокаИнфоПроКолонки.ТипКолонки = Свойство.ТипЗначения;
СтрокаИнфоПроКолонки.ОбязательнаДляЗаполнения = Свойство.ЗаполнятьОбязательно;
@@ -131,9 +138,16 @@
КонецЦикла;
Для каждого Свойство Из ДополнительныеСведения Цикл
ИмяКолонки = "Свойство_"
+ СтандартныеПодсистемыСервер.ПреобразоватьСтрокуВДопустимоеНаименованиеКолонки(Строка(Свойство));
Если ИнформацияПоКолонкам.Найти(ИмяКолонки, "ИмяКолонки") <> Неопределено Тогда
Продолжить;
КонецЕсли;
СтрокаИнфоПроКолонки = ИнформацияПоКолонкам.Добавить();
ИмяКолонки = СтандартныеПодсистемыСервер.ПреобразоватьСтрокуВДопустимоеНаименованиеКолонки(Строка(Свойство));
СтрокаИнфоПроКолонки.ИмяКолонки = "Свойство_" + ИмяКолонки;
СтрокаИнфоПроКолонки.ИмяКолонки = ИмяКолонки;
СтрокаИнфоПроКолонки.ПредставлениеКолонки = Строка(Свойство);
СтрокаИнфоПроКолонки.ТипКолонки = Свойство.ТипЗначения;
СтрокаИнфоПроКолонки.ОбязательнаДляЗаполнения = Свойство.ЗаполнятьОбязательно;
@@ -883,7 +883,16 @@
КонецЕсли;
Если ТипЗнч(ОписаниеШтампов) = Тип("Массив") Тогда
ИндексШтампа = 1;
НомерШтампаВСтроке = 0;
Если Документ.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт Тогда
КоличествоШтамповПоШирине = Мин(3, ОписаниеШтампов.Количество());
Иначе
КоличествоШтамповПоШирине = Мин(2, ОписаниеШтампов.Количество());
КонецЕсли;
Для Каждого Штамп Из ОписаниеШтампов Цикл
ИмяОбласти = "ШтампЭП" + Строка(ИндексШтампа);
ОбластьНайдена = Документ.Области.Найти(ИмяОбласти) <> Неопределено;
@@ -893,30 +902,55 @@
Документ.Области.ШтампЛеваяКолонка.ШиринаКолонки = Размеры.ЛеваяКолонка;
Документ.Области.ШтампПраваяКолонка.ШиринаКолонки = Размеры.ПраваяКолонка;
Иначе
Документ.Вывести(Штамп.ПолучитьОбласть("Отступ"));
НомерШтампаВСтроке = НомерШтампаВСтроке + 1;
ШиринаШтампа = Штамп.Области.Штамп.Право;
ШтампВерх = Штамп.Области.Штамп.Верх;
ШтампНиз = Штамп.Области.Штамп.Низ;
ВысотаШтампа = ШтампНиз - ШтампВерх;
ВысотаНачало = Документ.ВысотаТаблицы;
ВысотаКонец = Документ.ВысотаТаблицы + ВысотаШтампа;
Документ.Область(ВысотаНачало, 1, ВысотаКонец, ШиринаШтампа).Разъединить();
Если НомерШтампаВСтроке = 1 Или НомерШтампаВСтроке > КоличествоШтамповПоШирине Тогда
ШиринаНачало = 1; НомерШтампаВСтроке = 1;
ОбластиДляПроверкиПоВысоте = Новый Массив;
ОбластиДляПроверкиПоВысоте.Добавить(Штамп.ПолучитьОбласть("Отступ"));
ОбластиДляПроверкиПоВысоте.Добавить(Штамп.ПолучитьОбласть("ОбластьСтрокШтамп"));
Если Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(Документ, ОбластиДляПроверкиПоВысоте, Истина) Тогда
Документ.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
Документ.Вывести(Штамп.ПолучитьОбласть("Отступ"));
ВысотаНачало = Документ.ВысотаТаблицы;
ВысотаКонец = Документ.ВысотаТаблицы + ВысотаШтампа;
ШиринаШтамповВСтроке = КоличествоШтамповПоШирине * Штамп.ШиринаТаблицы;
Документ.Область(ВысотаНачало, ШиринаНачало, ВысотаКонец, ШиринаШтамповВСтроке).Разъединить();
// Формат строк, чтобы изменение ширины колонок не повлияло на остальной документ.
Документ.Область(ВысотаНачало, , ВысотаКонец).СоздатьФорматСтрок();
Если Документ.ШиринаТаблицы > ШиринаШтамповВСтроке Тогда
Документ.Область(ВысотаНачало, ШиринаШтамповВСтроке + 1, ВысотаКонец, Документ.ШиринаТаблицы).ШиринаКолонки = 0;
КонецЕсли;
КонецЕсли;
ШиринаКонец = ШиринаНачало - 1 + ШиринаШтампа;
// Вставка в разъединенные области область из макета штампа.
ИсходнаяОбласть = Штамп.Область(ШтампВерх, 1, ШтампНиз, ШиринаШтампа);
ОбластьПриемник = Документ.Область(ВысотаНачало, 1, ВысотаКонец, ШиринаШтампа);
ОбластьПриемник = Документ.Область(ВысотаНачало, ШиринаНачало, ВысотаКонец, ШиринаКонец);
Документ.ВставитьОбласть(ИсходнаяОбласть, ОбластьПриемник, , Истина);
// Формат строк, чтобы изменение ширины колонок не повлияло на остальной документ.
Документ.Область(ВысотаНачало, , ВысотаКонец).СоздатьФорматСтрок();
Документ.Области.ШтампЛеваяКолонка.ШиринаКолонки = Размеры.ЛеваяКолонка;
Документ.Области.ШтампПраваяКолонка.ШиринаКолонки = Размеры.ПраваяКолонка;
Документ.Области.ОтступШтампа.ШиринаКолонки = 3;
ШиринаНачало = ШиринаКонец + 1;
КонецЕсли;
ИндексШтампа = ИндексШтампа + 1;
КонецЦикла;
КонецЦикла;
Иначе
Для Каждого ОписаниеШтампа Из ОписаниеШтампов Цикл
ИмяОбласти = ОписаниеШтампа.Ключ;
@@ -336,48 +336,28 @@
КонецФункции
// Только для внутреннего использования.
//
// Параметры:
// ДанныеСертификатов - Массив из ДвоичныеДанные
//
// Возвращаемое значение:
// Массив из ДвоичныеДанные - Сертификаты по порядку до корневого
//
Функция СертификатыПоПорядкуДоКорневого(ДанныеСертификатов) Экспорт
ПоПорядку = Новый Массив;
Сертификаты = Новый Соответствие;
Для Каждого ДанныеСертификата Из ДанныеСертификатов Цикл
ПоПорядку.Добавить(ДанныеСертификата);
Сертификаты.Вставить(Новый СертификатКриптографии(ДанныеСертификата), ДанныеСертификата);
КонецЦикла;
ОписаниеСертификатов = Новый Соответствие;
СертификатыПоСубъектам = Новый Соответствие;
Для Каждого ОписаниеСертификата Из Сертификаты Цикл
СертификатыПоСубъектам.Вставить(ОписаниеСертификата.Ключ.Субъект.CN, ОписаниеСертификата.Ключ);
Для Каждого ДанныеСертификата Из ДанныеСертификатов Цикл
Сертификат = Новый СертификатКриптографии(ДанныеСертификата);
ПоПорядку.Добавить(ДанныеСертификата);
ОписаниеСертификатов.Вставить(Сертификат, ДанныеСертификата);
СертификатыПоСубъектам.Вставить(Сертификат.Субъект.CN, ДанныеСертификата);
КонецЦикла;
Для Каждого ОписаниеСертификата Из Сертификаты Цикл
Сертификат = ОписаниеСертификата.Ключ;
ДанныеСертификата = ОписаниеСертификата.Значение;
СертификатИздателя = СертификатыПоСубъектам.Получить(Сертификат.Издатель.CN);
Если СертификатИздателя = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В сертификатах подписи не удалось найти сертификат издателя
|%1
|сертификата %2'"),
Сертификат.Издатель.CN,
Сертификат.Субъект.CN);
КонецЕсли;
Позиция = ПоПорядку.Найти(ДанныеСертификата);
Если Сертификат.Издатель.CN = Сертификат.Субъект.CN Тогда
Если Позиция <> ПоПорядку.Количество() - 1 Тогда
ПоПорядку.Удалить(Позиция);
ПоПорядку.Добавить(ДанныеСертификата);
КонецЕсли;
Продолжить;
КонецЕсли;
ПозицияИздателя = ПоПорядку.Найти(Сертификаты.Получить(СертификатИздателя));
Если Позиция + 1 = ПозицияИздателя Тогда
Продолжить;
КонецЕсли;
ПоПорядку.Удалить(Позиция);
ПозицияИздателя = ПоПорядку.Найти(Сертификаты.Получить(СертификатИздателя));
ПоПорядку.Вставить(ПозицияИздателя, ДанныеСертификата);
КонецЦикла;
ЭлектроннаяПодписьСлужебныйКлиентСервер.УпорядочитьСертификаты(
ПоПорядку, ОписаниеСертификатов, СертификатыПоСубъектам);
Возврат ПоПорядку;
@@ -180,24 +180,35 @@
ПоПорядку = Новый Массив;
СертификатыПоСубъектам = Новый Соответствие;
Для Каждого ОписаниеСертификата Из Сертификаты Цикл
ПоПорядку.Добавить(ОписаниеСертификата);
СертификатыПоСубъектам.Вставить(ОписаниеСертификата.Субъект.CN, ОписаниеСертификата);
КонецЦикла;
ОписаниеСертификатов = Новый Соответствие;
Для Каждого Сертификат Из Сертификаты Цикл
СертификатИздателя = СертификатыПоСубъектам.Получить(Сертификат.Издатель.CN);
Если СертификатИздателя = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В сертификатах подписи не удалось найти сертификат издателя
|%1
|сертификата %2'"),
Сертификат.Издатель.CN,
Сертификат.Субъект.CN);
КонецЕсли;
ОписаниеСертификатов.Вставить(Сертификат, Сертификат);
ПоПорядку.Добавить(Сертификат);
СертификатыПоСубъектам.Вставить(Сертификат.Субъект.CN, Сертификат);
КонецЦикла;
УпорядочитьСертификаты(ПоПорядку, ОписаниеСертификатов, СертификатыПоСубъектам);
Возврат ПоПорядку;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура УпорядочитьСертификаты(ПоПорядку, ОписаниеСертификатов, СертификатыПоСубъектам) Экспорт
Для Каждого ОписаниеСертификата Из ОписаниеСертификатов Цикл
СвойстваСертификата = ОписаниеСертификата.Ключ;
Сертификат = ОписаниеСертификата.Значение;
СертификатИздателя = СертификатыПоСубъектам.Получить(СвойстваСертификата.Издатель.CN);
Позиция = ПоПорядку.Найти(Сертификат);
Если Сертификат.Издатель.CN = Сертификат.Субъект.CN Тогда
Если СвойстваСертификата.Издатель.CN = СвойстваСертификата.Субъект.CN
Или СертификатИздателя = Неопределено Тогда
Если Позиция <> ПоПорядку.ВГраница() Тогда
ПоПорядку.Удалить(Позиция);
ПоПорядку.Добавить(Сертификат);
@@ -213,13 +224,7 @@
ПоПорядку.Вставить(ПозицияИздателя, Сертификат);
КонецЦикла;
Возврат ПоПорядку;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
КонецПроцедуры
Функция ПользователиСертификатаСтрокой(Пользователь1, Пользователь2, КоличествоПользователей) Экспорт
+11 -9
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="7c981c4f-a0c3-4b07-b5a1-e712e373a868">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="635656f3-d99d-4a36-bdf2-a2a8fe543981">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="b42b4bbe-4d83-499e-bbed-dce99a01f648"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="1f1d7658-0f33-4220-86f1-a449232d5dca"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="4b16b73c-8e05-4388-8374-0e1099063200"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="26af4ae8-553a-45c2-a9d8-ca957b04af5a"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="f93cb4fc-bc67-497d-aa4f-40a045b671a8"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="0089bc18-addd-4a29-b273-b87f10bca335"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="245513a9-7d11-43fa-bce8-28728b882769"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="4004c042-de83-4628-9430-5edc369f8383"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="2c9a726d-a000-46cc-a8ec-b3c92037929c"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="5ed5c0aa-e270-4391-9a25-57eaf35b7a8c"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="66e58ecf-08f4-49f6-986c-8265208e1686"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="e3743616-bfdb-4c6e-843d-289ba9e2dfe9"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="242bdf81-6826-4e21-9550-bc94bac8a79c"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="ff9df76e-9364-4a53-bfe2-dc7cbdc7cc51"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.7.327</version>
<version>3.1.7.343</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -1442,6 +1442,7 @@
<scheduledJobs>ScheduledJob.ОчисткаЗамеровВремени</scheduledJobs>
<scheduledJobs>ScheduledJob.ОчисткаНенужныхФайлов</scheduledJobs>
<scheduledJobs>ScheduledJob.ОчисткаУстаревшихВерсийОбъектов</scheduledJobs>
<scheduledJobs>ScheduledJob.ОчисткаУстаревшихДанных</scheduledJobs>
<scheduledJobs>ScheduledJob.ПерестроениеАгрегатов</scheduledJobs>
<scheduledJobs>ScheduledJob.ПланированиеИзвлеченияТекстаВМоделиСервиса</scheduledJobs>
<scheduledJobs>ScheduledJob.ПолучениеИОтправкаЭлектронныхПисем</scheduledJobs>
@@ -1885,6 +1886,7 @@
<commonForms>CommonForm.ПредупреждениеБезопасности</commonForms>
<commonForms>CommonForm.ПредупрежденияПриЗавершенииРаботы</commonForms>
<commonForms>CommonForm.ПриоритетОбновленияВОбластяхДанных</commonForms>
<commonForms>CommonForm.ПроверкаФайлаОбновления</commonForms>
<commonForms>CommonForm.ПродлениеСрокаДействияЭлектронныхПодписей</commonForms>
<commonForms>CommonForm.ПустойРабочийСтол</commonForms>
<commonForms>CommonForm.РазрешенныеНеаккредитованныеУЦ</commonForms>
@@ -1 +1 @@
{6,1,1,bc033f22-0aa4-4ed2-9bd1-06e1d1462cd0,1,5af75db0-90ee-4031-8a22-523c18d88bd6,"3.1.7.327","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6775,1,0,7c981c4f-a0c3-4b07-b5a1-e712e373a868,7c981c4f-a0c3-4b07-b5a1-e712e373a868,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7Line truncated
{6,1,1,dc052ebc-c9e2-4e63-9033-f473921844fb,1,d6f42273-dbb8-43ea-b11e-0000ccea447c,"3.1.7.343","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6778,1,0,635656f3-d99d-4a36-bdf2-a2a8fe543981,635656f3-d99d-4a36-bdf2-a2a8fe543981,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7Line truncated
@@ -1902,6 +1902,37 @@
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:Button">
<name>ОчисткаУстаревшихДанных</name>
<id>2245</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ОчисткаУстаревшихДанныхРасширеннаяПодсказка</name>
<id>2246</id>
<title>
<key>ru</key>
<value>Очистка данных вручную, когда при реструктуризации произошла ошибка «Записи регистра стали неуникальными»</value>
</title>
<type>Label</type>
<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>
@@ -2548,6 +2579,28 @@
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>ОчисткаУстаревшихДанных</name>
<title>
<key>ru</key>
<value>Очистка устаревших данных</value>
</title>
<id>1</id>
<toolTip>
<key>ru</key>
<value>Очистка устаревших данных перед обновление конфигурации</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ОчисткаУстаревшихДанных</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -98,6 +98,10 @@
НастроитьИспользованиеКоличестваПотоковОбновления(ПриоритетОбработкиДанных);
КонецЕсли;
Если Не Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
Элементы.ОчисткаУстаревшихДанных.Видимость = Ложь;
КонецЕсли;
// Обновление состояния элементов.
УстановитьДоступность();
@@ -167,6 +171,13 @@
ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.РезультатыОбновленияПрограммы", ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура ОчисткаУстаревшихДанных(Команда)
ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.ОчисткаУстаревшихДанных");
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -52,13 +52,14 @@ TD {
</li>
<li><a href="CommonForm.НастройкиЭлектроннойПодписиИШифрования/Help">Сертификаты и программы электронной подписи и шифрования</a> - переход к настройке параметров подключения средств криптографии: электронной подписи и шифрования. </li>
<li><b>Тип подписи для документов</b> - с помощью переключателя выберите, какой тип электронной подписи в зависимости от срока действия будет использоваться в программе:</li>
<ul><li><b>Базовая подпись (CAdES-BES)</b> - становится недействительной после окончания срока действия сертификата;</li>
<li><b>Подпись с меткой доверенного времени (CAdES-T)</b> - срок действия можно продлить с помощью метки доверенного времени;</li>
<li><b>Архивная подпись (CAdES-A)</b> - содержит полный набор доказательств подлинности, может автоматически продлеваться.</li></ul></ul><ul><li><b>Адреса серверов меток времени</b> - предлагаются программой по умолчанию, предоставляет поставщик услуг криптографии.</li>
<ul><li><b>Базовая подпись (CAdES-BES)</b> - не содержит метку времени и становится недействительной после окончания срока действия сертификата подписанта (обычно в течение 1 года);</li>
<li><b>Подпись с меткой доверенного времени (CAdES-T)</b> - действует после окончания срока действия сертификата подписанта, пока действует сертификат подписи метки времени (обычно до 15 лет). Рекомендуется к использованию при подписании документов, которые должны сохранять юридическую значимость в течение нескольких лет. </li>
<li><b>Архивная подпись (CAdES-A)</b> - содержит полный набор доказательств подлинности, в том числе цепочку сертификатов и может продлеваться с помощью добавления меток времени. Используется для архивного хранения электронных подписей. Такая подпись может иметь большой размер файла в зависимости от свойств сертификатов, так как может включать в себя списки отзыва размером в десятки мегабайт, увеличивающих размер файла подписи в 1000 раз. </li></ul></ul><ul><li><b>Адреса серверов меток времени</b> - предлагаются программой по умолчанию, предоставляет поставщик услуг криптографии.</li>
<li><b>Усовершенствовать подписи</b> - выберите действие с подписями, добавленными ранее:</li>
<ul><li><b>Не усовершенствовать</b> - не будет предпринято никаких действий;</li>
<li><b>Автоматически (с помощью регламентного задания)</b> - в списке регламентных заданий можно будет посмотреть и проверить действия программы;</li>
<li><b>В интерфейсе администратора</b> - усовершенствовать вручную с помощью различных команд и <a href="Report.ПродлениеСрокаДействияЭлектронныхПодписей/Help">отчета</a> <b>Продление срока действия электронных подписей</b>.</li></ul><li><b>Начиная с даты создания подписи</b> - можно усовершенствовать подписи, созданные начиная с указанной даты. Ее необходимо написать в специальном поле.</li>
<li><b>В интерфейсе администратора</b> - усовершенствовать вручную с помощью различных команд и <a href="Report.ПродлениеСрокаДействияЭлектронныхПодписей/Help">отчета</a> <b>Продление срока действия электронных подписей</b>.</li></ul><li><b>Начиная с даты создания подписи</b> - можно усовершенствовать подписи, созданные начиная с указанной даты. Ее необходимо выбрать в специальном поле.</li>
<li><b>Автоматически продлевать архивные подписи </b>- будут добавляться новые метки времени в архивные подписи <b>(CAdES-A)</b> за месяц до окончания действия сертификата последней метки времени.</li>
<a name="СтандартныеПодсистемы.ЭлектроннаяПодписьСервисаDSS"></a>
<li><strong>Проверять подписи и сертификаты на сервере</strong> - В этом случае проверка электронной подписи и сертификата будет происходить на сервере или веб-сервере, что позволяет не устанавливать программу на каждом компьютере, где требуются только такие операции.</li>
<li><b>Подписывать и шифровать на сервере</b> - позволяет не устанавливать программу криптографии на компьютер пользователя для подписания, шифрования и расшифровки. В этом случае необходимо установить программу криптографии и сертификат с закрытым ключом на компьютере, где работает сервер 1С:Предприятия или веб-сервер. Для серверов с Linux необходимо заполнить пути к программам криптографии. Сделать это можно в карточке программы в списке <b>Сертификаты и программы электронной подписи и шифрования</b>.</li>
@@ -426,7 +426,8 @@
Если РаботаСАдресамиКлиентСервер.ЭтоМуниципальныйАдрес(ТипАдреса)
И СтрСравнить(ИмяУровня, "city") = 0
И ПустаяСтрока(Адрес["city"])
И СтрСравнить(Адрес["districtType"], "Г") = 0 Тогда
И (СтрСравнить(Адрес["districtType"], "Г") = 0
Или СтрСравнить(Адрес["districtType"], "Г.") = 0) Тогда
ИмяУровня = "district";
@@ -520,7 +521,9 @@
РодительскийИдентификатор = Неопределено;
ИменаУровнейАдреса = ?(РаботаСАдресамиКлиентСервер.ЭтоМуниципальныйАдрес(ТипАдреса),
ЭтоМуниципальныйАдрес = РаботаСАдресамиКлиентСервер.ЭтоМуниципальныйАдрес(ТипАдреса);
ИменаУровнейАдреса = ?(ЭтоМуниципальныйАдрес,
НаселенныйПунктДетально.munLevels,
НаселенныйПунктДетально.admLevels);
@@ -529,6 +532,11 @@
КонецЕсли;
Для каждого УровеньАдреса Из ИменаУровнейАдреса Цикл
Если ЭтоМуниципальныйАдрес И СтрСравнить(УровеньАдреса, "district") = 0 Тогда
Продолжить; // город в районе
КонецЕсли;
Если УровеньАдреса = ИмяУровня Тогда
Возврат РодительскийИдентификатор;
КонецЕсли;
@@ -1790,37 +1790,40 @@
// Дом и корпус
ЗданияИПомещения = ЗданияИПомещенияАдреса(АдресРФ);
ПараметрыОбъекта = ЗначениеЗданияИлиПомещения(ЗданияИПомещения.Здания, РаботаСАдресамиПовтИсп.ВариантыДанныхДом(), РасширенныйСоставПолей);
Если ПараметрыОбъекта.Количество() = 0 Тогда
Если ЗданияИПомещения.Здания.Количество() = 0 Тогда
ДобавитьЗначение(Список, "ТипДома", "");
ДобавитьЗначение(Список, "Дом", "");
Иначе
Для Каждого СтрокаОбъекта Из ПараметрыОбъекта Цикл
ДобавитьЗначение(Список, "ТипДома", СтрокаОбъекта.Тип, РасширенныйСоставПолей);
ДобавитьЗначение(Список, "Дом", СтрокаОбъекта.Значение, РасширенныйСоставПолей);
КонецЦикла;
КонецЕсли;
ПараметрыОбъекта = ЗначениеЗданияИлиПомещения(ЗданияИПомещения.Здания, РаботаСАдресамиПовтИсп.ВариантыДанныхСтроение(), РасширенныйСоставПолей);
Если ПараметрыОбъекта.Количество() = 0 Тогда
ДобавитьЗначение(Список, "ТипКорпуса", "");
ДобавитьЗначение(Список, "Корпус", "");
ИначеЕсли ПараметрыОбъекта.Количество() = 1 Тогда
СтрокаОбъекта = ПараметрыОбъекта[0];
ДобавитьЗначение(Список, "ТипКорпуса", СтрокаОбъекта.Тип, РасширенныйСоставПолей);
ДобавитьЗначение(Список, "Корпус", СтрокаОбъекта.Значение, РасширенныйСоставПолей);
Иначе
ТипКорпуса = ПараметрыОбъекта[0].Тип;
ЗначениеКорпуса = "";
Разделитель = "";
Сокращения = РаботаСАдресами.СокращенияОбъектовАдресацииАдресаРФ();
Для Каждого СтрокаОбъекта Из ПараметрыОбъекта Цикл
ИмяЗдания = ?(ЗначениеЗаполнено(Сокращения[СтрокаОбъекта.Тип]), Сокращения[СтрокаОбъекта.Тип], СтрокаОбъекта.Тип);
ЗначениеКорпуса = ЗначениеКорпуса + Разделитель + ИмяЗдания + " " + СтрокаОбъекта.Значение;
Разделитель = ", " ;
КонецЦикла;
ДобавитьЗначение(Список, "ТипКорпуса", ТипКорпуса, РасширенныйСоставПолей);
ДобавитьЗначение(Список, "Корпус", ЗначениеКорпуса , РасширенныйСоставПолей);
СтрокаОбъекта = ЗданияИПомещения.Здания[0];
ДобавитьЗначение(Список, "ТипДома", СтрокаОбъекта.Тип, Ложь);
ДобавитьЗначение(Список, "Дом", СтрокаОбъекта.Значение, Ложь);
ЗданияИПомещения.Удалить(СтрокаОбъекта);
Если ЗданияИПомещения.Здания.Количество() > 0 Тогда
ПараметрыОбъекта = ЗначениеЗданияИлиПомещения(ЗданияИПомещения.Здания, РаботаСАдресамиПовтИсп.ВариантыДанныхСтроение(), Ложь);
Если ПараметрыОбъекта.Количество() = 0 Тогда
ДобавитьЗначение(Список, "ТипКорпуса", "");
ДобавитьЗначение(Список, "Корпус", "");
ИначеЕсли ПараметрыОбъекта.Количество() = 1 Тогда
СтрокаОбъекта = ПараметрыОбъекта[0];
ДобавитьЗначение(Список, "ТипКорпуса", СтрокаОбъекта.Тип, Ложь);
ДобавитьЗначение(Список, "Корпус", СтрокаОбъекта.Значение, Ложь);
Иначе
ТипКорпуса = ПараметрыОбъекта[0].Тип;
ЗначениеКорпуса = "";
Разделитель = "";
Сокращения = РаботаСАдресами.СокращенияОбъектовАдресацииАдресаРФ();
Для Каждого СтрокаОбъекта Из ПараметрыОбъекта Цикл
ИмяЗдания = ?(ЗначениеЗаполнено(Сокращения[СтрокаОбъекта.Тип]), Сокращения[СтрокаОбъекта.Тип], СтрокаОбъекта.Тип);
ЗначениеКорпуса = ЗначениеКорпуса + Разделитель + ИмяЗдания + " " + СтрокаОбъекта.Значение;
Разделитель = ", " ;
КонецЦикла;
ДобавитьЗначение(Список, "ТипКорпуса", ТипКорпуса, РасширенныйСоставПолей);
ДобавитьЗначение(Список, "Корпус", ЗначениеКорпуса , РасширенныйСоставПолей);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПараметрыОбъекта = ЗначениеЗданияИлиПомещения(ЗданияИПомещения.Помещения, РаботаСАдресамиПовтИсп.ВариантыДанныхПомещение(), РасширенныйСоставПолей);
@@ -0,0 +1,590 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
ОчиститьИЗакрыть = Параметры.ОчиститьИЗакрыть;
Элементы.КоманднаяПанельДиалога.Видимость = Ложь;
ОбновитьВидимостьДоступность(ЭтотОбъект, Истина);
Если ОчиститьИЗакрыть Тогда
ЧиститьУдаляемые = Ложь;
Элементы.ПредупреждениеНадпись.Заголовок =
НСтр("ru = 'Отложенное обновление <a href = %1>не завершено</a>. Рекомендуется завершить обновление и выполнить очистку перед обновлением конфигурации.'");
СтандартныеПодсистемыСервер.СброситьРазмерыИПоложениеОкна(ЭтотОбъект);
Элементы.ГруппаПояснение.Видимость = Ложь;
Элементы.ОбрабатыватьОбластиДанных.Видимость = Ложь;
Элементы.КоманднаяПанельФормы.Видимость = Ложь;
Если ОтложенноеОбновлениеЗавершено Тогда
ДлительнаяОперацияОчистки = НачатьОчисткуНаСервере();
Иначе
ДлительнаяОперацияОбновления = НачатьОбновлениеНаСервере();
Элементы.ГруппаПредупреждение.Видимость = Ложь;
КонецЕсли;
Иначе
НавигационнаяСсылка = "e1cib/app/Обработка.РезультатыОбновленияПрограммы.Форма.ОчисткаУстаревшихДанных";
ДлительнаяОперацияОбновления = НачатьОбновлениеНаСервере();
Элементы.УстаревшиеДанныеОбластьДанных.Формат = "ЧН=0";
КонецЕсли;
Элементы.ПредупреждениеНадпись.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(
Элементы.ПредупреждениеНадпись.Заголовок, "ОткрытьРезультатыОбновления");
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса") Тогда
МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса");
ОтчетПрогрессОбновления = МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.ОтчетПрогрессОбновления();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Не ОчиститьИЗакрыть
Или Не ОтложенноеОбновлениеЗавершено Тогда
Обновить(Неопределено);
Иначе
Очистить(Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
ОтменитьДлительныеОперации();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ВыполненВыходИзОбластиДанных"
Или ИмяСобытия = "ВыполненВходВОбластьДанных" Тогда
ПодключитьОбработчикОжидания("ПриИзмененииОбластиДанных", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ПредупреждениеНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки <> "ОткрытьРезультатыОбновления" Тогда
Возврат;
КонецЕсли;
Если НеразделенныйРежим И ЗначениеЗаполнено(ОтчетПрогрессОбновления) Тогда
ОткрытьФорму(ОтчетПрогрессОбновления);
Иначе
ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбрабатыватьОбластиДанныхПриИзменении(Элемент)
УстаревшиеДанные.Очистить();
ОбновитьВидимостьДоступность(ЭтотОбъект, Истина);
Обновить("");
КонецПроцедуры
&НаКлиенте
Процедура ВывестиКоличествоПриИзменении(Элемент)
Если ВывестиКоличество Тогда
УстаревшиеДанные.Очистить();
КонецЕсли;
ОбновитьВидимостьДоступность(ЭтотОбъект);
Обновить("");
КонецПроцедуры
&НаКлиенте
Процедура ЧиститьУдаляемыеПриИзменении(Элемент)
УстаревшиеДанные.Очистить();
Обновить("");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПродолжитьБезОчистки(Команда)
Закрыть(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьОбновлениеКонфигурации(Команда)
Закрыть(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура Обновить(Команда)
Элементы.ОбрабатыватьОбластиДанных.Доступность = Истина;
Элементы.ВывестиКоличество.Доступность = Истина;
Элементы.ЧиститьУдаляемые.Доступность = Истина;
Если Команда <> Неопределено Тогда
ДлительнаяОперацияОбновления = НачатьОбновлениеНаСервере();
КонецЕсли;
УстановитьПрогресс(0);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ПараметрыОжидания.ОповещениеОПрогрессеВыполнения =
Новый ОписаниеОповещения("ОбновитьПриПолученииПрогресса",
ЭтотОбъект, ДлительнаяОперацияОбновления);
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбновитьЗавершение",
ЭтотОбъект, ДлительнаяОперацияОбновления);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперацияОбновления,
ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаКлиенте
Процедура Очистить(Команда)
Если ОтложенноеОбновлениеЗавершено Тогда
ОчиститьПослеПодтверждения(Новый Структура("Значение", "Продолжить"), Команда);
Возврат;
КонецЕсли;
ОбработкаЗавершения = Новый ОписаниеОповещения(
"ОчиститьПослеПодтверждения", ЭтотОбъект, Команда);
ТекстВопроса =
НСтр("ru = 'Отложенное обновление не завершено.
|Очистка может удалить данные, которые требуются для завершения обновления.
|
|Сделайте резервную копию, если она еще не сделана.'");
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("Продолжить", НСтр("ru = 'Продолжить'"));
Кнопки.Добавить("Отмена", НСтр("ru = 'Отмена'"));
ДополнительныеПараметры = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
ДополнительныеПараметры.Заголовок = НСтр("ru = 'Очистка устаревших данных'");
ДополнительныеПараметры.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;
ДополнительныеПараметры.КнопкаПоУмолчанию = "Отмена";
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(ОбработкаЗавершения,
ТекстВопроса, Кнопки, ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ПланОчистки(Команда)
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.УстановитьТекст(ПланОчисткиНаСервере(ЧиститьУдаляемые, ОбрабатыватьОбластиДанных));
ТекстовыйДокумент.Показать(НСтр("ru = 'План очистки устаревших данных'"));
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.УстаревшиеДанныеОбластьДанных.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("УстаревшиеДанные.ОбластьДанных");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = -1;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Общие данные'"));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьВидимостьДоступность(Форма, ОбновитьРезультатОтложенногоОбновления = Ложь)
Элементы = Форма.Элементы;
Если ОбновитьРезультатОтложенногоОбновления Тогда
Форма.ОтложенноеОбновлениеЗавершено = ОтложенноеОбновлениеЗавершено(Форма.НеразделенныйРежим);
КонецЕсли;
Элементы.ГруппаПредупреждение.Видимость = Не Форма.ОтложенноеОбновлениеЗавершено;
Элементы.ОбрабатыватьОбластиДанных.Видимость = Форма.НеразделенныйРежим;
Элементы.УстаревшиеДанныеОбластьДанных.Видимость =
Форма.НеразделенныйРежим И Форма.ОбрабатыватьОбластиДанных;
Элементы.УстаревшиеДанныеКоличество.Видимость = Форма.ВывестиКоличество;
Элементы.УстаревшиеДанные.Шапка =
Элементы.УстаревшиеДанныеКоличество.Видимость
Или Элементы.УстаревшиеДанныеОбластьДанных.Видимость;
Элементы.УстаревшиеДанные.ВысотаШапки =
?(Элементы.УстаревшиеДанныеКоличество.Видимость, 2, 1);
Элементы.ФормаОчистить.Доступность = Форма.УстаревшиеДанные.Количество() > 0;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ОтложенноеОбновлениеЗавершено(НеразделенныйРежим)
НеразделенныйРежим = Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных();
Возврат ОбновлениеИнформационнойБазыСлужебный.ОтложенноеОбновлениеЗавершено();
КонецФункции
&НаКлиенте
Процедура ПриИзмененииОбластиДанных()
Обновить("");
КонецПроцедуры
&НаСервере
Процедура ОтменитьДлительныеОперации()
Если ДлительнаяОперацияОбновления <> Неопределено Тогда
ДлительныеОперации.ОтменитьВыполнениеЗадания(
ДлительнаяОперацияОбновления.ИдентификаторЗадания);
ДлительнаяОперацияОбновления = Неопределено;
КонецЕсли;
Если ДлительнаяОперацияОчистки <> Неопределено Тогда
ДлительныеОперации.ОтменитьВыполнениеЗадания(
ДлительнаяОперацияОчистки.ИдентификаторЗадания);
ДлительнаяОперацияОчистки = Неопределено;
КонецЕсли;
Если ЗначениеЗаполнено(АдресРезультатаОбновления) Тогда
УдалитьИзВременногоХранилища(АдресРезультатаОбновления);
АдресРезультатаОбновления = "";
КонецЕсли;
Если ЗначениеЗаполнено(АдресРезультатаОчистки) Тогда
УдалитьИзВременногоХранилища(АдресРезультатаОчистки);
АдресРезультатаОчистки = "";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПрогресс(Процент)
Элементы.ДлительнаяОперацияПроцент.Заголовок =
Формат(Процент, "ЧН=0") + "%";
КонецПроцедуры
&НаСервере
Функция НачатьОбновлениеНаСервере()
ОбновитьВидимостьДоступность(ЭтотОбъект, Истина);
УстаревшиеДанные.Очистить();
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаДлительнаяОперация;
Элементы.ДлительнаяОперацияТекст.Заголовок =
НСтр("ru = 'Обновление списка устаревших данных ...'");
ОтменитьДлительныеОперации();
АдресРезультатаОбновления = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.ОжидатьЗавершение = 0;
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Обновление списка устаревших данных'");
ПараметрыВыполнения.АдресРезультата = АдресРезультатаОбновления;
ПараметрыВыполнения.ЗапуститьВФоне = Истина; // Всегда в фоне (очередь заданий в файловом варианте).
ПараметрыВыполнения.СРасширениямиБазыДанных = Истина;
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("ВывестиКоличество", ВывестиКоличество);
ПараметрыЗадания.Вставить("ЧиститьУдаляемые", ЧиститьУдаляемые);
ПараметрыЗадания.Вставить("ОбрабатыватьОбластиДанных", ОбрабатыватьОбластиДанных);
Результат = ДлительныеОперации.ВыполнитьВФоне(
"ОбновлениеИнформационнойБазыСлужебный.СформироватьСписокУстаревшихДанныхВФоне",
ПараметрыЗадания, ПараметрыВыполнения);
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ОбновитьПриПолученииПрогресса(Результат, ДополнительныеПараметры) Экспорт
Если ДополнительныеПараметры <> ДлительнаяОперацияОбновления Тогда
Возврат;
КонецЕсли;
Если Результат.Прогресс <> Неопределено Тогда
УстановитьПрогресс(Результат.Прогресс.Процент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ДополнительныеПараметры <> ДлительнаяОперацияОбновления Тогда
Возврат;
КонецЕсли;
ЕстьОшибка = Ложь;
ЗавершитьОбновлениеНаСервере(Результат, ЕстьОшибка);
Если Не ОчиститьИЗакрыть Тогда
ОбновитьВидимостьДоступность(ЭтотОбъект);
Возврат;
КонецЕсли;
Если ЕстьОшибка Или УстаревшиеДанные.Количество() > 0 Тогда
ОбновитьВидимостьДоступность(ЭтотОбъект);
Элементы.Страницы.Видимость = Ложь;
Элементы.КоманднаяПанельДиалога.Видимость = Истина;
Элементы.ОтменитьОбновлениеКонфигурации.КнопкаПоУмолчанию = Истина;
Возврат;
КонецЕсли;
Закрыть(Истина);
КонецПроцедуры
&НаСервере
Процедура ЗавершитьОбновлениеНаСервере(Знач Результат, ЕстьОшибка)
ДлительнаяОперацияОбновления = Неопределено;
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаУстаревшиеДанные;
Если ЗначениеЗаполнено(АдресРезультатаОбновления) Тогда
Данные = ПолучитьИзВременногоХранилища(АдресРезультатаОбновления);
УдалитьИзВременногоХранилища(АдресРезультатаОбновления);
АдресРезультатаОбновления = "";
Иначе
Данные = Неопределено;
КонецЕсли;
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ТекстОшибки = "";
Если Результат.Статус = "Ошибка" Тогда
ТекстОшибки = Результат.ПодробноеПредставлениеОшибки;
ИначеЕсли ТипЗнч(Данные) = Тип("Строка") Тогда
ТекстОшибки = Данные;
ИначеЕсли Данные = Неопределено Тогда
ТекстОшибки = НСтр("ru = 'Фоновое задание не вернуло результат'");
КонецЕсли;
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаОшибка;
ЕстьОшибка = Истина;
Возврат;
КонецЕсли;
Если Результат.Статус <> "Выполнено" Тогда
ЕстьОшибка = Истина;
Возврат;
КонецЕсли;
Для Каждого Строка Из Данные Цикл
ЗаполнитьЗначенияСвойств(УстаревшиеДанные.Добавить(), Строка);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьПослеПодтверждения(Ответ, Команда) Экспорт
Если Не ЗначениеЗаполнено(Ответ)
Или Ответ.Значение <> "Продолжить" Тогда
Возврат;
КонецЕсли;
Если Команда <> Неопределено Тогда
ДлительнаяОперацияОчистки = НачатьОчисткуНаСервере();
КонецЕсли;
УстановитьПрогресс(0);
Элементы.ОбрабатыватьОбластиДанных.Доступность = Ложь;
Элементы.ВывестиКоличество.Доступность = Ложь;
Элементы.ЧиститьУдаляемые.Доступность = Ложь;
Элементы.ФормаОчистить.Доступность = Ложь;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ПараметрыОжидания.ОповещениеОПрогрессеВыполнения =
Новый ОписаниеОповещения("ОчиститьПриПолученииПрогресса",
ЭтотОбъект, ДлительнаяОперацияОчистки);
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОчиститьЗавершение",
ЭтотОбъект, ДлительнаяОперацияОчистки);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперацияОчистки,
ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Функция НачатьОчисткуНаСервере()
ОбновлениеИнформационнойБазыСлужебный.ОтменитьРегламентноеЗаданиеОчисткаУстаревшихДанных();
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаДлительнаяОперация;
Элементы.ДлительнаяОперацияТекст.Заголовок =
НСтр("ru = 'Очистка устаревших данных ...'");
ОтменитьДлительныеОперации();
АдресРезультатаОчистки = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.ОжидатьЗавершение = 0;
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Очистка устаревших данных'");
ПараметрыВыполнения.АдресРезультата = АдресРезультатаОчистки;
ПараметрыВыполнения.ЗапуститьВФоне = Истина; // Всегда в фоне (очередь заданий в файловом варианте).
ПараметрыВыполнения.СРасширениямиБазыДанных = Истина;
ПараметрыВыполнения.КлючФоновогоЗадания = ОбновлениеИнформационнойБазыСлужебный.КлючЗаданияОчисткиУстаревшихДанных();
Если ОбщегоНазначения.РазделениеВключено() Тогда
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("ЧиститьУдаляемые", ЧиститьУдаляемые);
ПараметрыЗадания.Вставить("ОбрабатыватьОбластиДанных", ОбрабатыватьОбластиДанных);
Результат = ДлительныеОперации.ВыполнитьВФоне(
"ОбновлениеИнформационнойБазыСлужебный.ОчиститьУстаревшиеДанныеВФоне",
ПараметрыЗадания, ПараметрыВыполнения);
Иначе
НаборПараметровПроцедуры = Новый Структура;
НаборПараметровПроцедуры.Вставить("Контекст", Новый Структура("ЧиститьУдаляемые", ЧиститьУдаляемые));
НаборПараметровПроцедуры.Вставить("ИмяМетодаПолученияПорций",
"ОбновлениеИнформационнойБазыСлужебный.УстаревшиеДанныеПриЗапросеПорцийВФоне");
Результат = ДлительныеОперации.ВыполнитьПроцедуруВНесколькоПотоков(
"ОбновлениеИнформационнойБазыСлужебный.УстаревшиеДанныеПриОчисткеПорцииВФоне",
ПараметрыВыполнения, НаборПараметровПроцедуры);
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ОчиститьПриПолученииПрогресса(Результат, ДополнительныеПараметры) Экспорт
Если ДополнительныеПараметры <> ДлительнаяОперацияОчистки Тогда
Возврат;
КонецЕсли;
Если Результат.Прогресс <> Неопределено Тогда
УстановитьПрогресс(Результат.Прогресс.Процент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ДополнительныеПараметры <> ДлительнаяОперацияОчистки Тогда
Возврат;
КонецЕсли;
ЕстьОшибка = Ложь;
ЗавершитьОчисткуНаСервере(Результат, ЕстьОшибка);
Если ЕстьОшибка Тогда
Возврат;
КонецЕсли;
Если ОчиститьИЗакрыть Тогда
Закрыть(Истина);
Иначе
Обновить("");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗавершитьОчисткуНаСервере(Знач Результат, ЕстьОшибка)
ДлительнаяОперацияОчистки = Неопределено;
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаУстаревшиеДанные;
Если ЗначениеЗаполнено(АдресРезультатаОчистки) Тогда
Результаты = ПолучитьИзВременногоХранилища(АдресРезультатаОчистки);
УдалитьИзВременногоХранилища(АдресРезультатаОчистки);
АдресРезультатаОчистки = "";
Иначе
Результаты = Неопределено;
КонецЕсли;
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Ошибка" Тогда
ТекстОшибки = Результат.ПодробноеПредставлениеОшибки;
Иначе
ТекстОшибки = ОбновлениеИнформационнойБазыСлужебный.ТекстОшибкиОчисткиУстаревшихДанных(Результаты);
КонецЕсли;
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаОшибка;
ЕстьОшибка = Истина;
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПланОчисткиНаСервере(ЧиститьУдаляемые, ОбрабатыватьОбластиДанных)
Возврат ОбновлениеИнформационнойБазыСлужебный.ПланОчисткиУстаревшихДанных(
ЧиститьУдаляемые,, Не ОбрабатыватьОбластиДанных);
КонецФункции
#КонецОбласти
@@ -100,4 +100,13 @@
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="886df9ab-09b4-4c7a-bd44-6afeab68d831">
<name>ОчисткаУстаревшихДанных</name>
<synonym>
<key>ru</key>
<value>Очистка устаревших данных</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:DataProcessor>
@@ -1851,11 +1851,14 @@
СтруктураВложений = Новый Структура;
ТекстHTML = "";
ТекстПисьмаФорматированныйДокумент.ПолучитьHTML(ТекстHTML, СтруктураВложений);
Если ЗначениеЗаполнено(Объект.ТекстHTML) Тогда
Объект.ТекстHTML = Взаимодействия.ОбработатьТекстHTMLДляФорматированногоДокумента(
Объект.Ссылка, Объект.ТекстHTML, СтруктураВложений);
ТекстПисьмаФорматированныйДокумент.УстановитьHTML(Объект.ТекстHTML, СтруктураВложений);
ПозицияКартинки = СтрНайти(Объект.ТекстHTML, "<img");
Если ПозицияКартинки > 0 И СтрНайти(Объект.ТекстHTML, "cid:", НаправлениеПоиска.СНачала, ПозицияКартинки) > 0 Тогда
Объект.ТекстHTML = Взаимодействия.ОбработатьТекстHTMLДляФорматированногоДокумента(
Объект.Ссылка, Объект.ТекстHTML, СтруктураВложений);
ТекстПисьмаФорматированныйДокумент.УстановитьHTML(Объект.ТекстHTML, СтруктураВложений);
КонецЕсли;
КонецЕсли;
КонецЕсли;
@@ -22,49 +22,7 @@
СтандартныеПодсистемыСервер.ПроверитьДинамическоеОбновлениеВерсииПрограммы();
УстановитьПривилегированныйРежим(Истина);
ЗависимостиПравДоступа = СоздатьНаборЗаписей();
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("ПодчиненнаяТаблица", Новый ОписаниеТипов("Строка"));
Таблица.Колонки.Добавить("ВедущаяТаблица", Новый ОписаниеТипов("Строка"));
ИнтеграцияПодсистемБСП.ПриЗаполненииЗависимостейПравДоступа(Таблица);
УправлениеДоступомПереопределяемый.ПриЗаполненииЗависимостейПравДоступа(Таблица);
ЗависимостиПравДоступа = СоздатьНаборЗаписей().Выгрузить();
Для каждого Строка Из Таблица Цикл
НоваяСтрока = ЗависимостиПравДоступа.Добавить();
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(Строка.ПодчиненнаяТаблица);
Если ОбъектМетаданных = Неопределено Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка в процедуре %1
|общего модуля %2.
|
|Не найдена подчиненная таблица ""%3"".'"),
"ПриЗаполненииЗависимостейПравДоступа",
"УправлениеДоступомПереопределяемый",
Строка.ПодчиненнаяТаблица);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
НоваяСтрока.ПодчиненнаяТаблица = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(
Строка.ПодчиненнаяТаблица);
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(Строка.ВедущаяТаблица);
Если ОбъектМетаданных = Неопределено Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка в процедуре %1
|общего модуля %2.
|
|Не найдена ведущая таблица ""%3"".'"),
"ПриЗаполненииЗависимостейПравДоступа",
"УправлениеДоступомПереопределяемый",
Строка.ВедущаяТаблица);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
НоваяСтрока.ТипВедущейТаблицы = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
Строка.ВедущаяТаблица).ПустаяСсылка();
КонецЦикла;
ЗависимостиПравДоступа = ЗависимостиПравДоступа();
ТекстЗапросовВременныхТаблиц =
"ВЫБРАТЬ
@@ -117,4 +75,63 @@
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Возвращаемое значение:
// ТаблицаЗначений:
// * ПодчиненнаяТаблица - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// * ТипВедущейТаблицы - ЛюбаяСсылка
//
Функция ЗависимостиПравДоступа() Экспорт
ЗависимостиПравДоступа = СоздатьНаборЗаписей();
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("ПодчиненнаяТаблица", Новый ОписаниеТипов("Строка"));
Таблица.Колонки.Добавить("ВедущаяТаблица", Новый ОписаниеТипов("Строка"));
ИнтеграцияПодсистемБСП.ПриЗаполненииЗависимостейПравДоступа(Таблица);
УправлениеДоступомПереопределяемый.ПриЗаполненииЗависимостейПравДоступа(Таблица);
ЗависимостиПравДоступа = СоздатьНаборЗаписей().Выгрузить();
Для каждого Строка Из Таблица Цикл
НоваяСтрока = ЗависимостиПравДоступа.Добавить();
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(Строка.ПодчиненнаяТаблица);
Если ОбъектМетаданных = Неопределено Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка в процедуре %1
|общего модуля %2.
|
|Не найдена подчиненная таблица ""%3"".'"),
"ПриЗаполненииЗависимостейПравДоступа",
"УправлениеДоступомПереопределяемый",
Строка.ПодчиненнаяТаблица);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
НоваяСтрока.ПодчиненнаяТаблица = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(
Строка.ПодчиненнаяТаблица);
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(Строка.ВедущаяТаблица);
Если ОбъектМетаданных = Неопределено Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка в процедуре %1
|общего модуля %2.
|
|Не найдена ведущая таблица ""%3"".'"),
"ПриЗаполненииЗависимостейПравДоступа",
"УправлениеДоступомПереопределяемый",
Строка.ВедущаяТаблица);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
НоваяСтрока.ТипВедущейТаблицы = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
Строка.ВедущаяТаблица).ПустаяСсылка();
КонецЦикла;
Возврат ЗависимостиПравДоступа;
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -5,34 +5,49 @@
<p>Возможности облачных сервисов можно использовать и при работе с файлами, хранящимися в программе. Предусмотрено использование облачных сервисов для хранения и обработки файлов, присоединенных к различным объектам программы, а также хранящихся в списке <strong>Файлы</strong>.</p>
<p>Программа позволяет видеть свои файлы в своей папке проводника или на своем устройстве, там же и редактировать, а также синхронизировать их.</p>
<h3>Список облачных сервисов </h3>
<ul><li><strong>Яндекс.Диск</strong>;
</li><li><strong>Box.com</strong>;
</li><li><strong>Dropbox</strong> (через платный сервис <strong>dropdav</strong>);</li><li>или любой другой сервис с которым возможна работа по протоколу WEBDAV.</li></ul><h3>Принципы синхронизации файлов</h3>
<div><br></div>
<div>Список облачных сервисов не ограничен программой, однако используемый сервис должен соответствовать требованиям протокола <b>WEBDAV</b>. </div>
<div>В программе доступны готовые настройки синхронизации с:</div>
<ul><li><strong>Яндекс.Диск</strong>;</li>
<li><strong>Dropbox</strong> (через платный сервис <strong>dropdav</strong>);</li>
<li>или любым другим сервисом с которым возможна работа по протоколу <b>WEBDAV</b>.</li></ul><h3>Принципы синхронизации файлов</h3>
<ul><li>Синхронизировать можно только одну папку в одном плане обмена.
</li><li>Если настроена синхронизация файлов с облачным сервисом, то редактирование и создание файлов в самой программе будет недоступно во избежание конфликтов. Можно возобновить редактирование файлов в программе, если отключить синхронизацию с облаком.
</li><li>В облачном сервисе файлы хранятся в папке по шаблону <strong>&lt;Общий путь учетной записи&gt;\Представление объекта программы\Представление элемента данных</strong>, например: <strong>\YandexDisk\БСП 2.3.2\Демо Заказ Покупателя (Документ) \Демо Заказ Покупателя 00-0000001 от 17.12.2010 17 46 36</strong>.
</li><li>При создании новых файлов или изменении существующих, файлы автоматически захватываются <strong>Автором</strong> файлов, указанным в учетной записи.
</li><li>После выполнения синхронизации освобождаются файлы, которые не были обработаны во время синхронизации.
</li><li>После выполнения синхронизации проверяются все неиспользуемые учетные записи. Если они захватили файлы, то файлы освобождаются. Например, если необходимо полностью отключить синхронизацию, то следует отключить все настройки с флажком <strong>Синхронизировать</strong> и при следующем выполнении регламентного задания все файлы освобождаются.
</li><li>Не поддерживается режим RLS (возможность ограничивать права доступа на уровне записей). </li></ul><h3>Настройка синхронизации файлов</h3>
</li>
<li>Если настроена синхронизация файлов с облачным сервисом, то редактирование и создание файлов в самой программе будет недоступно во избежание конфликтов. Можно возобновить редактирование файлов в программе, если отключить синхронизацию с облаком.
</li>
<li>В облачном сервисе файлы хранятся в папке по шаблону <strong>&lt;Общий путь учетной записи&gt;\Представление объекта программы\Представление элемента данных</strong>, например: <strong>\YandexDisk\БСП 2.3.2\Демо Заказ Покупателя (Документ) \Демо Заказ Покупателя 00-0000001 от 17.12.2010 17 46 36</strong>.
</li>
<li>При создании новых файлов или изменении существующих, файлы автоматически захватываются <strong>Автором</strong> файлов, указанным в учетной записи.
</li>
<li>После выполнения синхронизации освобождаются файлы, которые не были обработаны во время синхронизации.
</li>
<li>После выполнения синхронизации проверяются все неиспользуемые учетные записи. Если они захватили файлы, то файлы освобождаются. Например, если необходимо полностью отключить синхронизацию, то следует отключить все настройки с флажком <strong>Синхронизировать</strong> и при следующем выполнении регламентного задания все файлы освобождаются.
</li>
<li>Не поддерживается режим RLS (возможность ограничивать права доступа на уровне записей). </li></ul><h3>Настройка синхронизации файлов</h3>
<ul><li>
<div>В списке имеются колонки:</div>
<ul><li>
<div><strong>Владелец файла</strong> - перечислены объекты программы-владельцы файлов. С помощью флажков можно указать, файлы каких владельцев необходимо синхронизировать;</div>
</li><li>
</li>
<li>
<div><strong>Учетная запись</strong> - указывается учетная запись облачного сервиса. Для разных владельцев файлов могут быть указаны разные учетные записи;</div>
</li><li>
<div><strong>Правило</strong> - ссылка показывает, какие файлы синхронизируются. По умолчанию принимает значение <strong>Все файлы</strong>. Нажав на ссылку, перейдите к <a href="InformationRegister.НастройкиСинхронизацииФайлов.Form.ФормаЗаписиНастройки/Help">настройке синхронизации файлов конкретного владельца</a>.</div></li></ul></li><li>
</li>
<li>
<div><strong>Правило</strong> - ссылка показывает, какие файлы синхронизируются. По умолчанию принимает значение <strong>Все файлы</strong>. Нажав на ссылку, перейдите к <a href="InformationRegister.НастройкиСинхронизацииФайлов.Form.ФормаЗаписиНастройки/Help">настройке синхронизации файлов конкретного владельца</a>.</div></li></ul></li>
<li>
<div>С помощью кнопки <strong>Настроить синхронизацию файлов</strong> или соответствующей команды контекстного меню по правой кнопке мыши можно добавить новую синхронизацию файлов для списков программы (для таких объектов можно настроить несколько синхронизаций).</div></li></ul><h3>Синхронизация файлов</h3>
<ul><li>
<div>Файлы можно синхронизировать с облачным сервисом вручную. Для этого в списке нажмите кнопку <strong>Синхронизировать</strong>.</div></li></ul><h3>Настройка автоматической синхронизации файлов</h3>
<ul><li>
<div>Включите флажок <strong>Автоматически синхронизировать файлы</strong>.</div>
</li><li>
</li>
<li>
<div>Перейдите по ссылке <strong>Настроить расписание</strong>, которая становится доступной. Настройте <a href="v8help://mngbase/jobschedule.lf">расписание</a>.</div>
</li><li>
</li>
<li>
<div>После подтверждения расписания оно отражается под флажком.</div>
</li><li>
</li>
<li>
<div>Синхронизация регламентным заданием по умолчанию происходит по умолчанию каждые 600 секунд.</div></li></ul><h3>См. также:</h3>
<ul><li>
<div><a href="v8help://frame/form_common">Работа с формами</a>.</div></li></ul></body></html>
@@ -354,6 +354,7 @@
ПараметрыОперации = ДлительныеОперации.ПараметрыВыполненияВФоне(ИдентификаторФормы);
ПараметрыОперации.НаименованиеФоновогоЗадания = НСтр("ru = 'Фоновая загрузка параметров работы программы'");
ПараметрыОперации.ЗапуститьВФоне = Истина;
ПараметрыОперации.ОжидатьЗавершение = ОжидатьЗавершение;
Если ОбщегоНазначения.РежимОтладки() Тогда
@@ -376,8 +377,9 @@
ПараметрыОперации = ДлительныеОперации.ПараметрыВыполненияВФоне(ИдентификаторФормы);
ПараметрыОперации.НаименованиеФоновогоЗадания = НСтр("ru = 'Фоновое обновление параметров работы программы'");
ПараметрыОперации.ОжидатьЗавершение = ОжидатьЗавершение;
ПараметрыОперации.БезРасширений = Истина;
ПараметрыОперации.ЗапуститьВФоне = Истина;
ПараметрыОперации.ОжидатьЗавершение = ОжидатьЗавершение;
Если ОбщегоНазначения.РежимОтладки()
И Не ЗначениеЗаполнено(ПараметрыСеанса.ПодключенныеРасширения) Тогда
@@ -419,6 +421,7 @@
ПараметрыОперации = ДлительныеОперации.ПараметрыВыполненияВФоне(ИдентификаторФормы);
ПараметрыОперации.НаименованиеФоновогоЗадания = НСтр("ru = 'Фоновое обновление параметров работы версий расширений'");
ПараметрыОперации.ЗапуститьВФоне = Истина;
ПараметрыОперации.ОжидатьЗавершение = ОжидатьЗавершение;
Если ОбщегоНазначения.РежимОтладки()
@@ -2126,6 +2126,93 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ИзвлекатьТекстыФайловНаСервере</name>
<right>
@@ -2706,93 +2793,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ДополнительныеАдресныеСведения</name>
<right>
@@ -90,6 +90,13 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ПроверкаФайлаОбновления</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ПериодыНерабочихДнейКалендаря</name>
<right>
@@ -1112,6 +1119,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ИзвлекатьТекстыФайловНаСервере</name>
<right>
@@ -1349,33 +1383,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования</name>
<right>
@@ -902,6 +902,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ИзвлекатьТекстыФайловНаСервере</name>
<right>
@@ -1099,33 +1126,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ДополнительныеАдресныеСведения</name>
<right>
@@ -237,6 +237,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>WebService.Exchange_3_0_1_1.Operation.Upload</name>
<right>
@@ -286,33 +313,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>WebService.Exchange_2_0_1_6.Operation.PutFileIntoStorage</name>
<right>
@@ -686,6 +686,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Document.СообщениеSMS</name>
<right>
@@ -868,33 +895,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>DocumentJournal.Взаимодействия</name>
<right>
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<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>
<name>Catalog.ВидыКонтактнойИнформации</name>
<right>
@@ -81,31 +108,4 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<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>
<name>InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам</name>
<right>
@@ -56,33 +83,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ДополнительныеОтчетыИОбработки</name>
<right>
@@ -72,13 +72,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Task.ЗадачаИсполнителя.Command.ВсеЗадачи</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -106,6 +99,13 @@
<value>true</value>
</right>
</object>
<object>
<name>Task.ЗадачаИсполнителя.Command.ВсеЗадачи</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ДанныеБизнесПроцессов</name>
<right>
@@ -49,6 +49,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ПроизводственныеКалендари</name>
<right>
@@ -88,33 +115,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ИспользоватьНесколькоПроизводственныхКалендарей</name>
<right>
@@ -29,6 +29,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Document.Анкета</name>
<right>
@@ -92,33 +119,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.НачатьИнтервью</name>
<right>
@@ -49,13 +49,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ГруппыПользователей.Command.ГруппыПользователя</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -83,6 +76,13 @@
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ГруппыПользователей.Command.ГруппыПользователя</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.СоставыГруппПользователей</name>
<right>
@@ -98,13 +98,6 @@
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ИсполнителиЗадач.Command.РолиИИсполнителиЗадач</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -132,6 +125,13 @@
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ИсполнителиЗадач.Command.РолиИИсполнителиЗадач</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач</name>
<right>
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<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>
<name>Catalog.УчетныеЗаписиЭлектроннойПочты</name>
<right>
@@ -77,33 +104,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ОтправкаСообщения</name>
<right>
@@ -106,13 +106,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Task.ЗадачаИсполнителя.Command.ВсеЗадачи</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -140,6 +133,13 @@
<value>true</value>
</right>
</object>
<object>
<name>Task.ЗадачаИсполнителя.Command.ВсеЗадачи</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.ЗадачиПоПредмету</name>
<right>
@@ -10,13 +10,6 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ПраваДоступа</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -44,6 +37,13 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ПраваДоступа</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ГруппыДоступа</name>
<right>
@@ -171,6 +171,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.КоличествоЗамеровВПакетеЭкспорта</name>
<right>
@@ -211,33 +238,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ОценкаПроизводительностиПериодЗаписи</name>
<right>
@@ -3,13 +3,6 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>CommonForm.ОтправкаSMS</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -37,4 +30,11 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ОтправкаSMS</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -3006,6 +3006,45 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>Constant.ИзвлекатьТекстыФайловНаСервере</name>
<right>
@@ -3793,45 +3832,6 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>Document.ОтзывСогласияНаОбработкуПерсональныхДанных</name>
<right>
@@ -1435,6 +1435,33 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>SessionParameter.СпискиСОграничениемПоПолям</name>
<right>
@@ -1794,33 +1821,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Document.ОтзывСогласияНаОбработкуПерсональныхДанных</name>
<right>
@@ -3,13 +3,6 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>WebService.InterfaceVersion.Operation.GetVersions</name>
<right>
<name>Use</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -37,4 +30,11 @@
<value>true</value>
</right>
</object>
<object>
<name>WebService.InterfaceVersion.Operation.GetVersions</name>
<right>
<name>Use</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -66,27 +66,6 @@
<value>true</value>
</right>
</object>
<object>
<name>WebService.RemoteAdministrationOfExchange.Operation.PrepareExchangeExecution</name>
<right>
<name>Use</name>
<value>true</value>
</right>
</object>
<object>
<name>WebService.RemoteAdministrationOfExchange_2_0_1_6.Operation.GetExchangePlans</name>
<right>
<name>Use</name>
<value>true</value>
</right>
</object>
<object>
<name>WebService.RemoteAdministrationOfExchange_2_0_1_6.Operation.StartExchangeExecutionInFirstDataBase</name>
<right>
<name>Use</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -114,6 +93,27 @@
<value>true</value>
</right>
</object>
<object>
<name>WebService.RemoteAdministrationOfExchange.Operation.PrepareExchangeExecution</name>
<right>
<name>Use</name>
<value>true</value>
</right>
</object>
<object>
<name>WebService.RemoteAdministrationOfExchange_2_0_1_6.Operation.GetExchangePlans</name>
<right>
<name>Use</name>
<value>true</value>
</right>
</object>
<object>
<name>WebService.RemoteAdministrationOfExchange_2_0_1_6.Operation.StartExchangeExecutionInFirstDataBase</name>
<right>
<name>Use</name>
<value>true</value>
</right>
</object>
<object>
<name>WebService.RemoteAdministrationOfExchange_2_1_6_1.Operation.StartExchangeExecutionInSecondDataBase</name>
<right>
@@ -33,17 +33,6 @@
<value>true</value>
</right>
</object>
<object>
<name>SessionParameter.ПодключениеDSS</name>
<right>
<name>Get</name>
<value>true</value>
</right>
<right>
<name>Set</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -71,6 +60,17 @@
<value>true</value>
</right>
</object>
<object>
<name>SessionParameter.ПодключениеDSS</name>
<right>
<name>Get</name>
<value>true</value>
</right>
<right>
<name>Set</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ИспользоватьСервисDSS</name>
<right>
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<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>
<name>InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам</name>
<right>
@@ -32,33 +59,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ДополнительныеОтчетыИОбработки</name>
<right>
@@ -82,20 +82,6 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.ЗадачиПоБизнесПроцессу</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Task.ЗадачаИсполнителя.Command.ВсеЗадачи</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -123,6 +109,20 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.ЗадачиПоБизнесПроцессу</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Task.ЗадачаИсполнителя.Command.ВсеЗадачи</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Task.ЗадачаИсполнителя.Command.МоиЗадачи</name>
<right>
@@ -75,13 +75,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Task.ЗадачаИсполнителя.Command.ВсеЗадачи</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -109,6 +102,13 @@
<value>true</value>
</right>
</object>
<object>
<name>Task.ЗадачаИсполнителя.Command.ВсеЗадачи</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.ЗадачиПоПредмету</name>
<right>
@@ -74,21 +74,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Document.Анкета</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
<right>
<name>InputByString</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -116,6 +101,21 @@
<value>true</value>
</right>
</object>
<object>
<name>Document.Анкета</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
<right>
<name>InputByString</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.НачатьИнтервью</name>
<right>
@@ -3,6 +3,33 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<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>
<name>Catalog.УчетныеЗаписиЭлектроннойПочты</name>
<right>
@@ -31,33 +58,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ОтправкаСообщения</name>
<right>
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<schedule:Schedule xmlns:schedule="http://g5.1c.ru/v8/dt/schedule" beginDate="0001-01-01" endDate="0001-01-01" daysRepeatPeriod="1" beginTime="01:00:00" endTime="06:00:00" completionTime="00:00:00" repeatPeriodInDay="900" repeatPause="300" weeksPeriod="1">
<weekDays>Mon</weekDays>
<weekDays>Tue</weekDays>
<weekDays>Wed</weekDays>
<weekDays>Thu</weekDays>
<weekDays>Fri</weekDays>
<weekDays>Sat</weekDays>
<weekDays>Sun</weekDays>
<months>Jan</months>
<months>Feb</months>
<months>Mar</months>
<months>Apr</months>
<months>May</months>
<months>Jun</months>
<months>Jul</months>
<months>Aug</months>
<months>Sep</months>
<months>Oct</months>
<months>Nov</months>
<months>Dec</months>
</schedule:Schedule>
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:ScheduledJob xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="546af6c0-0762-4d2d-9d3b-c6a8f6c57674">
<name>ОчисткаУстаревшихДанных</name>
<synonym>
<key>ru</key>
<value>Очистка устаревших данных</value>
</synonym>
<methodName>CommonModule.ОбновлениеИнформационнойБазыСлужебный.ОчисткаУстаревшихДанных</methodName>
<restartCountOnFailure>3</restartCountOnFailure>
<restartIntervalOnFailure>10</restartIntervalOnFailure>
</mdclass:ScheduledJob>
@@ -43,5 +43,6 @@
<content>Enum.РежимыВыполненияОтложенныхОбработчиков</content>
<content>DataProcessor.ОписаниеОбработчиковОбновления</content>
<content>InformationRegister.ПрогрессОбновления</content>
<content>ScheduledJob.ОчисткаУстаревшихДанных</content>
<parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem>
</mdclass:Subsystem>
@@ -18,5 +18,6 @@
<content>CommonModule.ОбновлениеКонфигурацииВызовСервера</content>
<content>XDTOPackage.Patch</content>
<content>CommonForm.УстановленныеИсправления</content>
<content>CommonForm.ПроверкаФайлаОбновления</content>
<parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem>
</mdclass:Subsystem>