3_1_8_334

This commit is contained in:
Компания 1С committed 2023-06-02 15:20:00 +03:00
1 parent a86ad8a503
commit 9012dda56c
72 files changed
+1799 -744

No files matched your search

@@ -57,7 +57,10 @@
НоваяАктивнаяВерсия = ТекущиеДанные.Ссылка;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ТекущиеДанные.Владелец, ТекущиеДанные.Ссылка);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ТекущиеДанные.Владелец, ТекущиеДанные.Ссылка, ПараметрыДанныхФайла);
Если ЗначениеЗаполнено(ДанныеФайла.Редактирует) Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Смена активной версии разрешена только для незанятых файлов.'"));
@@ -68,7 +68,10 @@
&НаКлиенте
Процедура СписокПередУдалением(Элемент, Отказ)
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(Элементы.Список.ТекущаяСтрока);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(Элементы.Список.ТекущаяСтрока,,ПараметрыДанныхФайла);
Если ДанныеФайла.ТекущаяВерсия = Элементы.Список.ТекущаяСтрока Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Активную версию нельзя удалить.'"));
Отказ = Истина;
@@ -68,4 +68,134 @@
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Регистрирует на плане обмена ОбновлениеИнформационнойБазы объекты,
// которые необходимо обновить на новую версию.
//
// Параметры:
// Параметры - Структура - служебный параметр для передачи в процедуру ОбновлениеИнформационнойБазы.ОтметитьКОбработке.
//
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 1000
| ВерсииФайлов.Ссылка КАК Ссылка
|ИЗ
| Справочник.ВерсииФайлов КАК ВерсииФайлов
|ГДЕ
| ВерсииФайлов.Ссылка > &Ссылка
| И ВерсииФайлов.ТипХраненияФайла = ЗНАЧЕНИЕ(Перечисление.ТипыХраненияФайлов.ВТомахНаДиске)
| И ПОДСТРОКА(ВерсииФайлов.ПутьКФайлу, 1, 1) = &Разделитель
|
|УПОРЯДОЧИТЬ ПО
| Ссылка";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Ссылка", ПустаяСсылка());
Запрос.УстановитьПараметр("Разделитель", ПолучитьРазделительПути());
Результат = Запрос.Выполнить().Выгрузить();
Пока Результат.Количество() > 0 Цикл
ВерсииДляОбработки = Результат.ВыгрузитьКолонку("Ссылка");
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, ВерсииДляОбработки);
Запрос.УстановитьПараметр("Ссылка", ВерсииДляОбработки[ВерсииДляОбработки.ВГраница()]);
//@skip-check query-in-loop - Порционная регистрация данных для обработки
Результат = Запрос.Выполнить().Выгрузить();
КонецЦикла;
КонецПроцедуры
Процедура ОбработатьПутьХраненияВерсий(Параметры) Экспорт
ВерсияСсылка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.ВерсииФайлов");
ПроблемныхОбъектов = 0;
ОбъектовОбработано = 0;
СписокОшибок = Новый Массив;
Пока ВерсияСсылка.Следующий() Цикл
Результат = УдалитьЛишнийРазделитель(ВерсияСсылка.Ссылка);
Если Результат.Статус = "Ошибка" Тогда
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
СписокОшибок.Добавить(Результат.ТекстОшибки);
Иначе
ОбъектовОбработано = ОбъектовОбработано + 1;
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(ВерсияСсылка.Ссылка);
КонецЕсли;
Если ОбъектовОбработано + ПроблемныхОбъектов = 1000 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ВерсииФайлов");
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать некоторые версии файлов (пропущены): %1
|%2'"), ПроблемныхОбъектов, СтрСоединить(СписокОшибок, Символы.ПС));
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Метаданные.Справочники.ВерсииФайлов,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Обработана очередная порция версий файлов: %1'"),
ОбъектовОбработано));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция УдалитьЛишнийРазделитель(ВерсияСсылка)
Результат = Новый Структура;
Результат.Вставить("Статус", "ОбновлениеНеТребуется");
Результат.Вставить("ТекстОшибки", "");
НовыйПутьКФайлу = Сред(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВерсияСсылка, "ПутьКФайлу"), 2);
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииФайлов");
ЭлементБлокировки.УстановитьЗначение("Ссылка", ВерсияСсылка);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
ВерсияОбъект = ВерсияСсылка.ПолучитьОбъект();
ВерсияОбъект.ОбменДанными.Загрузка = Истина;
ВерсияОбъект.ПутьКФайлу = НовыйПутьКФайлу;
ВерсияОбъект.Записать();
Результат.Статус = "Обновлен";
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ИнформацияОбОшибке = ИнформацияОбОшибке();
Результат.Статус = "Ошибка";
Результат.ТекстОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать версию файла %1 по причине: %2'"),
ВерсияСсылка, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение,
Метаданные.Справочники.ВерсииФайлов, ВерсияСсылка, ТекстСообщения);
КонецПопытки;
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -993,7 +993,9 @@
Возврат РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляСохранения(
ПрисоединенныйФайл,, ИдентификаторФормы);
ИначеЕсли Режим = "ВызовСервера" Тогда
Возврат РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПрисоединенныйФайл,, ИдентификаторФормы);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ИдентификаторФормы = ИдентификаторФормы;
Возврат РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПрисоединенныйФайл,, ПараметрыДанныхФайла);
Иначе
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Истина;
@@ -222,16 +222,18 @@
И СтрокаНазначение.ТипВопроса = ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.ВопросСУсловием") Тогда
СтандартнаяОбработка = Ложь;
ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Ложь);
Если Не ЭтоПодчиненныеЭлементы(СтрокаПеретаскивание, СтрокаНазначение) Тогда
ПеретащитьЭлементДерева(СтрокаНазначение, СтрокаПеретаскивание, Ложь);
Модифицированность = Истина;
КонецЕсли;
ИначеЕсли СтрокаПеретаскивание.ПолучитьРодителя() <> СтрокаНазначение.ПолучитьРодителя() Тогда
СтандартнаяОбработка = Ложь;
ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Истина);
Если Не ЭтоПодчиненныеЭлементы(СтрокаПеретаскивание, СтрокаНазначение) Тогда
ПеретащитьЭлементДерева(СтрокаНазначение, СтрокаПеретаскивание, Истина);
Модифицированность = Истина;
КонецЕсли;
КонецЕсли;
@@ -240,9 +242,10 @@
Если СтрокаПеретаскивание.ПолучитьРодителя() <> СтрокаНазначение Тогда
СтандартнаяОбработка = Ложь;
ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Ложь);
Если Не ЭтоПодчиненныеЭлементы(СтрокаПеретаскивание, СтрокаНазначение) Тогда
ПеретащитьЭлементДерева(СтрокаНазначение, СтрокаПеретаскивание, Ложь);
Модифицированность = Истина;
КонецЕсли;
КонецЕсли;
@@ -251,36 +254,40 @@
Если СтрокаПеретаскивание.ПолучитьРодителя() <> СтрокаНазначение Тогда
СтандартнаяОбработка = Ложь;
ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Ложь);
Если Не ЭтоПодчиненныеЭлементы(СтрокаПеретаскивание, СтрокаНазначение) Тогда
ПеретащитьЭлементДерева(СтрокаНазначение, СтрокаПеретаскивание, Ложь);
Модифицированность = Истина;
КонецЕсли;
ИначеЕсли СтрокаПеретаскивание.ПолучитьРодителя() <> СтрокаНазначение.ПолучитьРодителя() Тогда
СтандартнаяОбработка = Ложь;
ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Истина);
Если Не ЭтоПодчиненныеЭлементы(СтрокаПеретаскивание, СтрокаНазначение) Тогда
ПеретащитьЭлементДерева(СтрокаНазначение, СтрокаПеретаскивание, Истина);
Модифицированность = Истина;
КонецЕсли;
КонецЕсли;
ИначеЕсли (СтрокаПеретаскивание.ТипСтроки = "Раздел") И (СтрокаНазначение.ТипСтроки = "Вопрос") Тогда
Если (СтрокаПеретаскивание.ПолучитьРодителя() <> СтрокаНазначение.ПолучитьРодителя()) И (СтрокаНазначение.ПолучитьРодителя() <> СтрокаПеретаскивание)Тогда
Если СтрокаПеретаскивание.ПолучитьРодителя() <> СтрокаНазначение.ПолучитьРодителя() Тогда
СтандартнаяОбработка = Ложь;
ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Истина);
Если Не ЭтоПодчиненныеЭлементы(СтрокаПеретаскивание, СтрокаНазначение) Тогда
ПеретащитьЭлементДерева(СтрокаНазначение, СтрокаПеретаскивание, Истина);
Модифицированность = Истина;
КонецЕсли;
КонецЕсли;
ИначеЕсли ((СтрокаПеретаскивание.ТипСтроки = "Раздел") ИЛИ (СтрокаПеретаскивание.ТипСтроки = "Вопрос")) И (СтрокаНазначение.ТипСтроки = "Корень") Тогда
СтандартнаяОбработка = Ложь;
ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,Ложь);
Если Не ЭтоПодчиненныеЭлементы(СтрокаПеретаскивание, СтрокаНазначение) Тогда
ПеретащитьЭлементДерева(СтрокаНазначение, СтрокаПеретаскивание, Ложь);
Модифицированность = Истина;
КонецЕсли;
КонецЕсли;
@@ -957,7 +964,7 @@
КонецПроцедуры
&НаКлиенте
Процедура ПеретащитьЭлементДерева(СтрокаНазначение,СтрокаПеретаскивание,ИспользоватьРодителяСтрокиНазначения = ЛОЖЬ,УдалятьПослеДобавления = Истина);
Процедура ПеретащитьЭлементДерева(СтрокаНазначение, СтрокаПеретаскивание, ИспользоватьРодителяСтрокиНазначения = ЛОЖЬ,УдалятьПослеДобавления = Истина);
Если ИспользоватьРодителяСтрокиНазначения Тогда
НоваяСтрока = СтрокаНазначение.ПолучитьРодителя().ПолучитьЭлементы().Добавить();
@@ -976,7 +983,7 @@
КонецЕсли;
Для каждого Элемент Из СтрокаПеретаскивание.ПолучитьЭлементы() Цикл
ПеретащитьЭлементДерева(НоваяСтрока,Элемент,Ложь,Ложь);
ПеретащитьЭлементДерева(НоваяСтрока, Элемент, Ложь, Ложь);
КонецЦикла;
Если УдалятьПослеДобавления Тогда
@@ -984,13 +991,25 @@
КонецЕсли;
Если ИспользоватьРодителяСтрокиНазначения Тогда
Элементы.ФормаДереваАнкеты.Развернуть(СтрокаНазначение.ПолучитьРодителя().ПолучитьИдентификатор(),Ложь);
Элементы.ФормаДереваАнкеты.Развернуть(СтрокаНазначение.ПолучитьРодителя().ПолучитьИдентификатор(), Ложь);
Иначе
Элементы.ФормаДереваАнкеты.Развернуть(СтрокаНазначение.ПолучитьИдентификатор(),Ложь);
Элементы.ФормаДереваАнкеты.Развернуть(СтрокаНазначение.ПолучитьИдентификатор(), Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЭтоПодчиненныеЭлементы(РодительскийЭлементДерева, ЭлементДерева)
РодительскийЭлемент = ЭлементДерева;
Пока РодительскийЭлемент <> Неопределено Цикл
Если РодительскийЭлементДерева = РодительскийЭлемент Тогда
Возврат Истина;
КонецЕсли;
РодительскийЭлемент = РодительскийЭлемент.ПолучитьРодителя();
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ВыборТипаДобавляемогоЭлементаПриЗавершении(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
@@ -772,6 +772,40 @@
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>Подписать</name>
<id>118</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Подписать</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<extendedTooltip>
<name>ПодписатьРасширеннаяПодсказка</name>
<id>120</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПодписатьКонтекстноеМеню</name>
<id>119</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -1496,6 +1530,27 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>Подписать</name>
<title>
<key>ru</key>
<value>Подписать</value>
</title>
<id>23</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<functionalOptions>FunctionalOption.ИспользоватьЭлектронныеПодписи</functionalOptions>
<settingsSavedData xsi:type="form:DataPath">
<segments>Подписать</segments>
</settingsSavedData>
</attributes>
<formCommands>
<name>СформироватьИОтправить</name>
<title>
@@ -253,6 +253,10 @@
АдресВременногоХранилища = Неопределено;
АдресВременногоХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
Если Подписать Тогда
ПараметрыОтправки.ДополнительныеПараметры.НастройкиСохранения.УпаковатьВАрхив = Ложь;
КонецЕсли;
АдресРезультата = СформироватьСообщениеНаСервере(АдресВременногоХранилища, ПараметрыОтправки, ВидСообщения);
Результат = ПолучитьИзВременногоХранилища(АдресРезультата); // см. ШаблоныСообщенийСлужебный.СформироватьСообщение
@@ -264,6 +268,20 @@
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Результат, ПараметрыСообщения, Ложь);
КонецЕсли;
Если Подписать Тогда
ПараметрыОтправки.ДополнительныеПараметры.НастройкиСохранения.УпаковатьВАрхив = УпаковатьВАрхив;
ПодписатьФайлы(Результат, ПараметрыОтправки);
Иначе
СформироватьСообщениеДляОтправкиОкончание(Результат, ПараметрыОтправки)
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СформироватьСообщениеДляОтправкиОкончание(Результат, ПараметрыОтправки)
Если СформироватьИОтправить Тогда
ПослеФормированияИОтправкиСообщения(Результат, ПараметрыОтправки);
Иначе
@@ -277,6 +295,8 @@
КонецПроцедуры
&НаСервере
Функция СформироватьСообщениеНаСервере(АдресВременногоХранилища, ПараметрыОтправки, ВидСообщения)
@@ -608,6 +628,7 @@
Результат.УпаковатьВАрхив = УпаковатьВАрхив;
Результат.ПереводитьИменаФайловВТранслит = ПереводитьИменаФайловВТранслит;
Результат.ПодписьИПечать = ПодписьИПечать;
Результат.Вставить("Подписать", Подписать);
КонецЕсли;
Возврат Результат;
@@ -621,6 +642,7 @@
УстановитьВыборФормата(ВыбранноеЗначение.ФорматыСохранения);
УпаковатьВАрхив = ВыбранноеЗначение.УпаковатьВАрхив;
ПереводитьИменаФайловВТранслит = ВыбранноеЗначение.ПереводитьИменаФайловВТранслит;
Подписать = ВыбранноеЗначение.Подписать;
СформироватьПредставлениеВыбранныхФорматов();
КонецЕсли;
@@ -693,4 +715,174 @@
КонецФункции
&НаКлиенте
Процедура ПодписатьФайлы(Результат, ПараметрыОтправки)
ФайлыДляПодписания = Результат.Вложения;
Контекст = Новый Структура;
Контекст.Вставить("Результат", Результат);
Контекст.Вставить("ПараметрыОтправки", ПараметрыОтправки);
ОписаниеОповещения = Новый ОписаниеОповещения("СформироватьСообщениеДляОтправкиПродолжение", ЭтотОбъект, Контекст);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
ОписаниеДанных = Новый Структура;
ОписаниеДанных.Вставить("ПоказатьКомментарий", Ложь);
Если ФайлыДляПодписания.Количество() > 1 Тогда
ОписаниеДанных.Вставить("Операция", НСтр("ru = 'Подписание файлов'"));
ОписаниеДанных.Вставить("ЗаголовокДанных", НСтр("ru = 'Файлы'"));
НаборДанных = Новый Массив;
Для Каждого Файл Из ФайлыДляПодписания Цикл
ОписаниеДанныхФайла = Новый Структура;
ОписаниеДанныхФайла.Вставить("Представление", Файл.Представление);
ОписаниеДанныхФайла.Вставить("Данные", Файл.АдресВоВременномХранилище);
ОписаниеДанныхФайла.Вставить("ОбъектПечати", Предмет);
НаборДанных.Добавить(ОписаниеДанныхФайла);
КонецЦикла;
ОписаниеДанных.Вставить("НаборДанных", НаборДанных);
ОписаниеДанных.Вставить("ПредставлениеНабора", "Файлы (%1)");
Иначе
Файл = ФайлыДляПодписания[0];
ОписаниеДанных.Вставить("Операция", НСтр("ru = 'Подписание файла'"));
ОписаниеДанных.Вставить("ЗаголовокДанных", НСтр("ru = 'Файл'"));
ОписаниеДанных.Вставить("Представление", Файл.Представление);
ОписаниеДанных.Вставить("Данные", Файл.АдресВоВременномХранилище);
ОписаниеДанных.Вставить("ОбъектПечати", Предмет);
КонецЕсли;
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
МодульЭлектроннаяПодписьКлиент.Подписать(ОписаниеДанных,,ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СформироватьСообщениеДляОтправкиПродолжение(РезультатПодписания, Контекст) Экспорт
Если ТипЗнч(РезультатПодписания) = Тип("Структура") И РезультатПодписания.Свойство("Успех") И Не РезультатПодписания.Успех Тогда
Возврат;
КонецЕсли;
Вложения = ПолучитьФайлыПодписей(РезультатПодписания, ПереводитьИменаФайловВТранслит);
Вложения = ПоместитьФайлыВАрхив(Вложения, Контекст.ПараметрыОтправки.ДополнительныеПараметры.НастройкиСохранения);
Результат = Контекст.Результат;
Результат.Вложения.Очистить();
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Результат.Вложения, Вложения);
СформироватьСообщениеДляОтправкиОкончание(Результат, Контекст.ПараметрыОтправки);
КонецПроцедуры
&НаСервере
Функция ПолучитьФайлыПодписей(РезультатПодписания, ПереводитьИменаФайловВТранслит)
Если РезультатПодписания.Свойство("НаборДанных") Тогда
НаборДанных = РезультатПодписания.НаборДанных;
Иначе
НаборДанных = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(РезультатПодписания);
КонецЕсли;
МодульЭлектроннаяПодпись = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодпись");
МодульЭлектроннаяПодписьСлужебныйКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебныйКлиентСервер");
РасширениеДляФайловПодписи = МодульЭлектроннаяПодпись.ПерсональныеНастройки().РасширениеДляФайловПодписи;
КомуВыданСертификат = РезультатПодписания.ВыбранныйСертификат.Ссылка.КомуВыдан;
Если ПереводитьИменаФайловВТранслит Тогда
КомуВыданСертификат = СтроковыеФункции.СтрокаЛатиницей(КомуВыданСертификат);
КонецЕсли;
Результат = Новый Массив;
Для Каждого ПодписанныйФайл Из НаборДанных Цикл
СтруктураОписанияФайла = Новый Структура("АдресВоВременномХранилище, Представление, Идентификатор, Кодировка");
СтруктураОписанияФайла.АдресВоВременномХранилище = ПодписанныйФайл.Данные;
СтруктураОписанияФайла.Представление = ПодписанныйФайл.Представление;
Результат.Добавить(СтруктураОписанияФайла);
Файл = Новый Файл(ПодписанныйФайл.Представление);
СвойстваПодписи = ПодписанныйФайл.СвойстваПодписи;
ДанныеПодписи = ПоместитьВоВременноеХранилище(СвойстваПодписи.Подпись, УникальныйИдентификатор);
ИмяФайлаПодписи = МодульЭлектроннаяПодписьСлужебныйКлиентСервер.ИмяФайлаПодписи(Файл.ИмяБезРасширения,
Строка(КомуВыданСертификат), РасширениеДляФайловПодписи);
СтруктураОписанияФайла = Новый Структура("АдресВоВременномХранилище, Представление, Идентификатор, Кодировка");
СтруктураОписанияФайла.АдресВоВременномХранилище = ДанныеПодписи;
СтруктураОписанияФайла.Представление = ИмяФайлаПодписи;
Результат.Добавить(СтруктураОписанияФайла);
ДанныеПоСертификату = ПоместитьВоВременноеХранилище(СвойстваПодписи.Сертификат, УникальныйИдентификатор);
Если ТипЗнч(СвойстваПодписи.Сертификат) = Тип("Строка") Тогда
РасширениеСертификата = "txt";
Иначе
РасширениеСертификата = "cer";
КонецЕсли;
ИмяФайлаСертификата = МодульЭлектроннаяПодписьСлужебныйКлиентСервер.ИмяФайлаСертификата(Файл.ИмяБезРасширения,
Строка(КомуВыданСертификат), РасширениеСертификата);
СтруктураОписанияФайла = Новый Структура("АдресВоВременномХранилище, Представление, Идентификатор, Кодировка");
СтруктураОписанияФайла.АдресВоВременномХранилище = ДанныеПоСертификату;
СтруктураОписанияФайла.Представление = ИмяФайлаСертификата;
Результат.Добавить(СтруктураОписанияФайла);
КонецЦикла;
Возврат Результат;
КонецФункции
&НаСервере
Функция ПоместитьФайлыВАрхив(ПечатныеФормыДокументов, ПереданныеНастройки)
Результат = Новый Массив;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью");
НастройкиСохранения = МодульУправлениеПечатью.НастройкиСохранения();
ЗаполнитьЗначенияСвойств(НастройкиСохранения, ПереданныеНастройки);
Если Не НастройкиСохранения.УпаковатьВАрхив Тогда
Возврат ПечатныеФормыДокументов;
КонецЕсли;
ВариантСохранения = Неопределено;
ПереданныеНастройки.Свойство("ВариантСохранения", ВариантСохранения);
УстанавливатьОбъектПечати = ВариантСохранения = "Присоединить";
ПереводитьИменаФайловВТранслит = НастройкиСохранения.ПереводитьИменаФайловВТранслит;
ИмяВременногоКаталога = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПолучитьИмяВременногоФайла());
СоздатьКаталог(ИмяВременногоКаталога);
ИмяАрхива = ПолучитьИмяВременногоФайла("zip");
ЗаписьZipФайла = Новый ЗаписьZipФайла(ИмяАрхива);
Для Каждого СтруктураФайла Из ПечатныеФормыДокументов Цикл
ДанныеФайла = ПолучитьИзВременногоХранилища(СтруктураФайла.АдресВоВременномХранилище);
ПолноеИмяФайла = ИмяВременногоКаталога + СтруктураФайла.Представление;
ПолноеИмяФайла = ФайловаяСистема.УникальноеИмяФайла(ПолноеИмяФайла);
ДанныеФайла.Записать(ПолноеИмяФайла);
ЗаписьZipФайла.Добавить(ПолноеИмяФайла);
КонецЦикла;
ЗаписьZipФайла.Записать();
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяАрхива);
ПутьВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
ОписаниеФайла = Новый Структура;
Файл = Новый Файл(ИмяАрхива);
ОписаниеФайла.Вставить("Представление", Файл.Имя);
ОписаниеФайла.Вставить("АдресВоВременномХранилище", ПутьВоВременномХранилище);
Результат.Добавить(ОписаниеФайла);
УдалитьФайлы(ИмяАрхива);
УдалитьФайлы(ИмяВременногоКаталога);
КонецЕсли;
Возврат Результат;
КонецФункции
#КонецОбласти
@@ -67,6 +67,9 @@
Если Параметры.НастройкиФормата.Свойство("ПереводитьИменаФайловВТранслит") Тогда
Настройки.Удалить("ПереводитьИменаФайловВТранслит");
КонецЕсли;
Если Параметры.НастройкиФормата.Свойство("Подписать") Тогда
Настройки.Удалить("Подписать");
КонецЕсли;
Возврат;
КонецЕсли;
@@ -738,8 +738,8 @@
СтруктураПараметров.ПараметрыПечати.ДополнительныеПараметры.Вставить("ПодписьИПечать",
ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ПечатьДокументовOfficeOpen", "ПодписьИПечать", Ложь));
СтруктураПараметров.Вставить("ИменаМакетов", ИменаМакетов);
ПараметрыВыполнения.ЗапуститьНеВФоне = Не ПараметрыПечатиМожноПередатьВФоновоеЗадание(СтруктураПараметров.ПараметрыПечати);
Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "УправлениеПечатью.СформироватьПечатныеФормыВФоне", ИменаМакетов,
СтруктураПараметров, ПараметрыВывода, ТекущийЯзык, ОбъектыПечати);
@@ -2418,6 +2418,19 @@
КонецФункции
&НаСервере
Функция ПараметрыПечатиМожноПередатьВФоновоеЗадание(Знач ПараметрыПечати)
Для Каждого Элемент Из ПараметрыПечати Цикл
Если ТипЗнч(Элемент.Значение) = Тип("Строка") И ЭтоАдресВременногоХранилища(Элемент.Значение) Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Возврат Истина;
КонецФункции
#КонецОбласти
@@ -2286,6 +2286,10 @@
</items>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<handlers>
<event>DragCheck</event>
<name>ОтборыПроверкаПеретаскивания</name>
</handlers>
<handlers>
<event>Selection</event>
<name>ОтборыВыбор</name>
@@ -2302,6 +2306,18 @@
<event>OnActivateRow</event>
<name>ОтборыПриАктивизацииСтроки</name>
</handlers>
<handlers>
<event>DragStart</event>
<name>ОтборыНачалоПеретаскивания</name>
</handlers>
<handlers>
<event>Drag</event>
<name>ОтборыПеретаскивание</name>
</handlers>
<handlers>
<event>DragEnd</event>
<name>ОтборыОкончаниеПеретаскивания</name>
</handlers>
<handlers>
<event>OnActivateCell</event>
<name>ОтборыПриАктивизацииЯчейки</name>
@@ -752,15 +752,37 @@
&НаКлиенте
Процедура ВыбранныеПоляПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, ТекущаяСтрока, Поле)
ТекущиеДанные = ВыбранныеПоля.НайтиПоИдентификатору(ТекущаяСтрока);
Если ТекущиеДанные.ЭтоРаздел Или ТекущиеДанные.ЭтоГруппа Тогда
СтрокаПриемник = ТекущиеДанные;
Иначе
СтрокаПриемник = ТекущиеДанные.ПолучитьРодителя();
КонецЕсли;
Для Каждого ИдентификаторСтроки Из ПараметрыПеретаскивания.Значение Цикл
СтрокаПеретаскивание = ВыбранныеПоля.НайтиПоИдентификатору(ИдентификаторСтроки);
Если ЭтоПодчиненныеЭлементы(СтрокаПеретаскивание, СтрокаПриемник) Тогда
ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена;
Возврат;
КонецЕсли;
КонецЦикла;
ПриемникПеретаскиванияНаКлиенте = Элемент.Имя;
Если ПараметрыПеретаскивания.Значение.Количество() > 0 Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбранныеПоляПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, ТекущаяСтрока, Поле)
Если ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Если ИсточникПеретаскиванияНаКлиенте = Элемент.Имя Тогда
@@ -770,6 +792,11 @@
&НаКлиенте
Процедура ВыбранныеПоляОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
Если ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена Тогда
Возврат;
КонецЕсли;
Если ПриемникПеретаскиванияНаКлиенте <> Элемент.Имя Тогда
Возврат;
КонецЕсли;
@@ -1210,6 +1237,106 @@
УстановитьМодифицированность();
КонецПроцедуры
&НаКлиенте
Процедура ОтборыНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, РазрешитьПеретаскивание)
ИсточникПеретаскиванияНаКлиенте = Элемент.Имя;
ПроверитьПеретаскиваемыеСтрокиИзОтборов(ПараметрыПеретаскивания.Значение);
Если ПараметрыПеретаскивания.Значение.Количество() = 0 Тогда
РазрешитьПеретаскивание = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтборыПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, ТекущаяСтрока, Поле)
Если ТекущаяСтрока = Неопределено Тогда
ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена;
Возврат;
КонецЕсли;
Строка = Отборы.НайтиПоИдентификатору(ТекущаяСтрока);
Родитель = Строка.ПолучитьРодителя();
Если (Родитель <> Неопределено И Родитель.Идентификатор = "ПараметрыДанных")
ИЛИ Строка.Идентификатор = "ПараметрыДанных" Тогда
ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена;
Возврат;
КонецЕсли;
ТекущиеДанные = Отборы.НайтиПоИдентификатору(ТекущаяСтрока);
Если ТекущиеДанные.ЭтоРаздел Или ТекущиеДанные.ЭтоГруппа Тогда
СтрокаПриемник = ТекущиеДанные;
Иначе
СтрокаПриемник = ТекущиеДанные.ПолучитьРодителя();
КонецЕсли;
Для Каждого ИдентификаторСтроки Из ПараметрыПеретаскивания.Значение Цикл
СтрокаПеретаскивание = Отборы.НайтиПоИдентификатору(ИдентификаторСтроки);
Если ЭтоПодчиненныеЭлементы(СтрокаПеретаскивание, СтрокаПриемник) Тогда
ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена;
Возврат;
КонецЕсли;
КонецЦикла;
ПриемникПеретаскиванияНаКлиенте = Элемент.Имя;
Если ПараметрыПеретаскивания.Значение.Количество() > 0 Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтборыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, ТекущаяСтрока, Поле)
Если ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Если ИсточникПеретаскиванияНаКлиенте = Элемент.Имя Тогда
ПеретащитьОтборыВПределахКоллекции(ПараметрыПеретаскивания, ТекущаяСтрока);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтборыОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
Если ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена Тогда
Возврат;
КонецЕсли;
Если ПриемникПеретаскиванияНаКлиенте <> Элемент.Имя Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек(
Отчет.КомпоновщикНастроек, "Отбор", ИдентификаторЭлементаСтруктурыНастроек, РасширенныйРежим);
Строки = ПараметрыПеретаскивания.Значение;
Родитель = Строки[0].ПолучитьРодителя();
Индекс = Строки.ВГраница();
Пока Индекс >= 0 Цикл
Строка = Строки[Индекс];
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, Строка);
РодительЭлементаНастройки = СвойствоЭлементаСтруктуры;
Если ЭлементНастройки.Родитель <> Неопределено Тогда
РодительЭлементаНастройки = ЭлементНастройки.Родитель;
КонецЕсли;
РодительЭлементаНастройки.Элементы.Удалить(ЭлементНастройки);
Родитель.ПолучитьЭлементы().Удалить(Строка);
Индекс = Индекс - 1;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыВыбранныеПоля
@@ -2687,6 +2814,121 @@
КонецЦикла;
КонецПроцедуры
// Перетаскивание элементов.
&НаКлиенте
Процедура ПроверитьПеретаскиваемыеСтрокиИзОтборов(ИдентификаторыСтрок)
Родители = Новый Массив;
Индекс = ИдентификаторыСтрок.ВГраница();
Пока Индекс >= 0 Цикл
ИдентификаторСтроки = ИдентификаторыСтрок[Индекс];
Строка = Отборы.НайтиПоИдентификатору(ИдентификаторСтроки);
Родитель = Строка.ПолучитьРодителя();
Если Родитель = Неопределено
Или Родитель.ПолучитьЭлементы().Индекс(Строка) < 0
Или ТипЗнч(Строка.Идентификатор) <> Тип("ИдентификаторКомпоновкиДанных")
Или Родитель.Идентификатор = "ПараметрыДанных" Тогда
ИдентификаторыСтрок.Удалить(Индекс);
Иначе
Родители.Добавить(Родитель);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
Родители = ОбщегоНазначенияКлиентСервер.СвернутьМассив(Родители);
Если Родители.Количество() > 1 Тогда
ИдентификаторыСтрок.Очистить();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПеретащитьОтборыВПределахКоллекции(ПараметрыПеретаскивания, ТекущаяСтрока)
ТекущиеДанные = Отборы.НайтиПоИдентификатору(ТекущаяСтрока);
Строки = Новый Массив;
Для Каждого ИдентификаторСтроки Из ПараметрыПеретаскивания.Значение Цикл
Строки.Добавить(Отборы.НайтиПоИдентификатору(ИдентификаторСтроки));
КонецЦикла;
СтрокаИсточник = Строки[0].ПолучитьРодителя(); // см. ЭлементКоллекцииФормыНастроек
Если ТекущиеДанные.ЭтоРаздел Или ТекущиеДанные.ЭтоГруппа Тогда
СтрокаПриемник = ТекущиеДанные;
Иначе
СтрокаПриемник = ТекущиеДанные.ПолучитьРодителя();
КонецЕсли;
Индекс = СтрокаПриемник.ПолучитьЭлементы().Индекс(ТекущиеДанные);
Если Индекс < 0 Тогда
Индекс = 0;
КонецЕсли;
НаследникиСтрок = Новый Соответствие;
НаследникиСтрок.Вставить(СтрокаИсточник, СтрокаПриемник);
СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек(
Отчет.КомпоновщикНастроек, "Отбор", ИдентификаторЭлементаСтруктурыНастроек, РасширенныйРежим);
ЭлементНастройкиИсточник = СвойствоЭлементаСтруктуры;
Если ТипЗнч(СтрокаИсточник.Идентификатор) = Тип("ИдентификаторКомпоновкиДанных") Тогда
ЭлементНастройкиИсточник = СвойствоЭлементаСтруктуры.ПолучитьОбъектПоИдентификатору(СтрокаИсточник.Идентификатор);
КонецЕсли;
ЭлементНастройкиПриемник = СвойствоЭлементаСтруктуры;
Если ТипЗнч(СтрокаПриемник.Идентификатор) = Тип("ИдентификаторКомпоновкиДанных") Тогда
ЭлементНастройкиПриемник = СвойствоЭлементаСтруктуры.ПолучитьОбъектПоИдентификатору(СтрокаПриемник.Идентификатор);
КонецЕсли;
НаследникиЭлементовНастроек = Новый Соответствие;
НаследникиЭлементовНастроек.Вставить(ЭлементНастройкиИсточник, ЭлементНастройкиПриемник);
ПеретащитьОтборы(СвойствоЭлементаСтруктуры, Индекс, Строки, НаследникиЭлементовНастроек, НаследникиСтрок);
Раздел = КорневаяСтрокаПоУмолчанию("Отборы");
Элементы.Отборы.Развернуть(Раздел.ПолучитьИдентификатор(), Истина);
УстановитьМодифицированность();
КонецПроцедуры
&НаКлиенте
Процедура ПеретащитьОтборы(ВыбранныеПоляУзлаНастроек, Индекс, Строки, НаследникиЭлементовНастроек, НаследникиСтрок)
Для Каждого СтрокаИсточник Из Строки Цикл
ЭлементНастройкиИсточник = ВыбранныеПоляУзлаНастроек.ПолучитьОбъектПоИдентификатору(СтрокаИсточник.Идентификатор);
РодительЭлементаНастройкиИсточник = ВыбранныеПоляУзлаНастроек;
Если ЭлементНастройкиИсточник.Родитель <> Неопределено Тогда
РодительЭлементаНастройкиИсточник = ЭлементНастройкиИсточник.Родитель;
КонецЕсли;
РодительЭлементаНастройкиПриемник = НаследникиЭлементовНастроек.Получить(РодительЭлементаНастройкиИсточник); // ГруппаЭлементовОтбораКомпоновкиДанных
РодительСтрокиПриемник = НаследникиСтрок.Получить(СтрокаИсточник.ПолучитьРодителя()); // см. ЭлементКоллекцииФормыНастроек
Если Индекс > РодительЭлементаНастройкиПриемник.Элементы.Количество() - 1 Тогда
ЭлементНастройкиПриемник = РодительЭлементаНастройкиПриемник.Элементы.Добавить(ТипЗнч(ЭлементНастройкиИсточник));
СтрокаПриемник = РодительСтрокиПриемник.ПолучитьЭлементы().Добавить();
Иначе
ЭлементНастройкиПриемник = РодительЭлементаНастройкиПриемник.Элементы.Вставить(Индекс, ТипЗнч(ЭлементНастройкиИсточник));
СтрокаПриемник = РодительСтрокиПриемник.ПолучитьЭлементы().Вставить(Индекс);
КонецЕсли;
ЗаполнитьЗначенияСвойств(ЭлементНастройкиПриемник, ЭлементНастройкиИсточник);
ЗаполнитьЗначенияСвойств(СтрокаПриемник, СтрокаИсточник);
СтрокаПриемник.Идентификатор = ВыбранныеПоляУзлаНастроек.ПолучитьИдентификаторПоОбъекту(ЭлементНастройкиПриемник);
СтрокаПриемник.ЭтоГруппа = (ТипЗнч(ЭлементНастройкиПриемник) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
НаследникиЭлементовНастроек.Вставить(ЭлементНастройкиИсточник, ЭлементНастройкиПриемник);
НаследникиСтрок.Вставить(СтрокаИсточник, СтрокаПриемник);
Если ТипЗнч(ЭлементНастройкиПриемник) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
ПеретащитьОтборы(ВыбранныеПоляУзлаНастроек, Индекс, СтрокаИсточник.ПолучитьЭлементы(), НаследникиЭлементовНастроек, НаследникиСтрок)
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Сдвиг элементов.
&НаКлиенте
@@ -5791,6 +6033,18 @@
КонецПроцедуры
&НаКлиенте
Функция ЭтоПодчиненныеЭлементы(РодительскийЭлементДерева, ЭлементДерева)
РодительскийЭлемент = ЭлементДерева;
Пока РодительскийЭлемент <> Неопределено Цикл
Если РодительскийЭлементДерева = РодительскийЭлемент Тогда
Возврат Истина;
КонецЕсли;
РодительскийЭлемент = РодительскийЭлемент.ПолучитьРодителя();
КонецЦикла;
Возврат Ложь;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Клиент - Таблицы полей (универсальные точки входа).
@@ -3998,13 +3998,30 @@
ВариантОбъект.Родитель = ОписаниеВарианта.ВариантРодитель;
ИмяПроцедуры = "ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов";
ИмяПроцедурыМодуляМенеджера = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОписаниеВарианта.Отчет, "ПолноеИмя");
Если ТипЗнч(ИмяПроцедурыМодуляМенеджера) = Тип("Строка") Тогда
ИмяПроцедурыМодуляМенеджера = ИмяПроцедурыМодуляМенеджера + ".НастроитьВариантыОтчета";
Иначе
ИмяПроцедурыМодуляМенеджера = "";
КонецЕсли;
РазмещениеВарианта = Новый Массив;
Для Каждого Раздел Из ОписаниеВарианта.Размещение Цикл
Если Раздел.Ключ = Неопределено Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru= 'Для варианта отчета ""%1"" (%2)
|не указана подсистема для размещения. См. процедуры %3, %4.'"), ОписаниеВарианта.Наименование,
ОписаниеВарианта.КлючВарианта, ИмяПроцедуры, ИмяПроцедурыМодуляМенеджера);
ЗаписатьВЖурнал(УровеньЖурналаРегистрации.Ошибка, ТекстСообщения);
Продолжить;
КонецЕсли;
ПолноеИмя = ?(ТипЗнч(Раздел.Ключ) = Тип("Строка"), Раздел.Ключ, Раздел.Ключ.ПолноеИмя());
РазмещениеВарианта.Добавить(ПолноеИмя);
КонецЦикла;
ИдентификаторыПодсистем = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(РазмещениеВарианта);
Для Каждого РазмещениеОтчета Из ОписаниеВарианта.Размещение Цикл
Если РазмещениеОтчета.Ключ = Неопределено Тогда
Продолжить;
КонецЕсли;
СтрокаРазмещения = ВариантОбъект.Размещение.Добавить();
ПолноеИмя = ?(ТипЗнч(РазмещениеОтчета.Ключ) = Тип("Строка"), РазмещениеОтчета.Ключ, РазмещениеОтчета.Ключ.ПолноеИмя());
СтрокаРазмещения.Подсистема = ИдентификаторыПодсистем[ПолноеИмя];
@@ -96,8 +96,10 @@
Попытка
ИсходноеПолноеИмя = НРег(ЭлементАрхива.ИсходноеПолноеИмя);
// Поиск и разбор манифеста.
Если НРег(ЭлементАрхива.ИсходноеПолноеИмя) = "manifest.xml" Тогда
Если ИсходноеПолноеИмя = "manifest.xml" Тогда
Реквизиты.ДатаВерсии = ЭлементАрхива.ВремяИзменения;
@@ -109,7 +111,7 @@
КонецЕсли;
Если НРег(ЭлементАрхива.ИсходноеПолноеИмя) = "info.xml" И ВыполнятьРазборИнфоФайла Тогда
Если ИсходноеПолноеИмя = "info.xml" И ВыполнятьРазборИнфоФайла Тогда
ЧтениеАрхива.Извлечь(ЭлементАрхива, ВременныйКаталог);
ФайлInfoXML = ВременныйКаталог + ПолучитьРазделительПути() + ЭлементАрхива.ПолноеИмя;
@@ -121,7 +123,7 @@
ИмяФайлаXML = ПараметрПоиска.Значение.ИмяФайлаXML;
Если ЭлементАрхива.ИсходноеПолноеИмя = ИмяФайлаXML Тогда
Если ИсходноеПолноеИмя = НРег(ИмяФайлаXML) Тогда
КлючДополнительнойИнформации = ПараметрПоиска.Ключ;
ВыражениеXPath = ПараметрПоиска.Значение.ВыражениеXPath;
@@ -692,10 +692,24 @@
Обработчик.ПроцедураЗаполненияДанныхОбновления =
"ЗащитаПерсональныхДанных.ЗаполнитьДанныеОбновленияРегистровДляУничтоженияПерсональныхДанных";
Обработчик.ЧитаемыеОбъекты = "РегистрСведений.СубъектыДляСкрытияПерсональныхДанных";
Обработчик.ИзменяемыеОбъекты = "РегистрСведений.СубъектыДляРасчетаСроковХранения,РегистрСведений.УничтоженныеПерсональныеДанные";
Обработчик.ИзменяемыеОбъекты =
"РегистрСведений.СубъектыДляРасчетаСроковХранения,РегистрСведений.УничтоженныеПерсональныеДанные";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("119a85d2-d77c-4b25-b746-60f6199c823e");
Обработчик.Комментарий = НСтр("ru = 'Заполнение данных регистров для уничтожения персональных данных.'");
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.1.8.329";
Обработчик.Процедура =
"ЗащитаПерсональныхДанных.УстановитьРасписаниеРегламентногоЗаданияРасчетСроковХраненияПерсональныхДанных";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ПроцедураЗаполненияДанныхОбновления =
"ЗащитаПерсональныхДанных.ЗаполнитьДанныеОбновленияРасписанияРегламентногоЗаданияРасчетСроковХраненияПерсональныхДанных";
Обработчик.ЧитаемыеОбъекты = "Константа.ИспользоватьСкрытиеПерсональныхДанныхСубъектов";
Обработчик.ИзменяемыеОбъекты = "Константа.ИспользоватьСкрытиеПерсональныхДанныхСубъектов";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("e39f4562-8744-451f-be0a-0409e6667a9e");
Обработчик.Комментарий =
НСтр("ru = 'Установка расписания регламентного задания расчета сроков хранения персональных данных.'");
КонецПроцедуры
Процедура ЗаполнитьДанныеОбновленияОбластейПерсональныхДанных(ПараметрыОбновления) Экспорт
@@ -706,6 +720,11 @@
КонецПроцедуры
Процедура ЗаполнитьДанныеОбновленияРасписанияРегламентногоЗаданияРасчетСроковХраненияПерсональныхДанных(
ПараметрыОбновления) Экспорт
КонецПроцедуры
// Переносит сведения о защищаемых областях персональных данных.
//
Процедура ПеренестиЗащищаемыеОбластиПерсональныхДанных(ПараметрыОбновления) Экспорт
@@ -775,6 +794,43 @@
КонецПроцедуры
// Параметры:
// ПараметрыОбновления - Структура
//
Процедура УстановитьРасписаниеРегламентногоЗаданияРасчетСроковХраненияПерсональныхДанных(ПараметрыОбновления) Экспорт
ПараметрыОбновления.ОбработкаЗавершена = Ложь;
МетаданныеЗадания = Метаданные.РегламентныеЗадания.РасчетСроковХраненияПерсональныхДанных;
Задание = РегламентныеЗаданияСервер.Задание(МетаданныеЗадания);
Если Задание = Неопределено Тогда
ПараметрыОбновления.ОбработкаЗавершена = Истина;
Возврат;
КонецЕсли;
Расписание = Задание.Расписание;
Если Расписание.ПериодПовтораДней <> 0 Тогда
ПараметрыОбновления.ОбработкаЗавершена = Истина;
Возврат;
КонецЕсли;
Расписание.ПериодПовтораДней = 1;
Если ТипЗнч(Задание) = Тип("РегламентноеЗадание") Тогда
РегламентныеЗаданияСервер.УстановитьРасписаниеРегламентногоЗадания(Задание, Расписание);
ИначеЕсли ТипЗнч(Задание) = Тип("СтрокаТаблицыЗначений") Тогда
ПараметрыЗадания = Новый Структура(
"Использование, Параметры, Ключ, ИнтервалПовтораПриАварийномЗавершении, КоличествоПовторовПриАварийномЗавершении");
ЗаполнитьЗначенияСвойств(ПараметрыЗадания, Задание);
ПараметрыЗадания.Вставить("Расписание", Расписание);
РегламентныеЗаданияСервер.ИзменитьЗадание(МетаданныеЗадания, ПараметрыЗадания);
КонецЕсли;
ПараметрыОбновления.ОбработкаЗавершена = Истина;
КонецПроцедуры
#КонецОбласти
// Определяет объекты, в которых есть процедура ДобавитьКомандыПечати().
@@ -1003,6 +1059,24 @@
КонецПроцедуры
// Параметры:
// Субъект - ОпределяемыйТип.СубъектПерсональныхДанных
//
// Возвращаемое значение:
// Неопределено, Дата -
Функция СрокХраненияПерсональныхДанныхСубъекта(Субъект) Экспорт
СрокиХранения = СрокиХраненияПерсональныхДанных(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Субъект));
Если ЗначениеЗаполнено(СрокиХранения) Тогда
СрокХранения = СрокиХранения[0].СрокХранения;
Иначе
СрокХранения = Неопределено;
КонецЕсли;
Возврат СрокХранения;
КонецФункции
#Область ОбменДанными
// Проверяет необходимость регистрации объекта на узлах плана обмена.
@@ -1128,6 +1202,10 @@
// Обновляет неактуальные сроки хранения персональных данных.
Процедура ОбновитьСрокиХраненияПерсональныхДанных() Экспорт
Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда
Возврат;
КонецЕсли;
Пока Истина Цикл
Блокировка = Новый БлокировкаДанных();
@@ -1173,35 +1251,29 @@
Возврат СрокиХранения;
КонецЕсли;
Если ДанныеСубъектов.Количество() > 1000 Тогда
СрокиХранения.Индексы.Добавить("Субъект,СрокХранения");
КонецЕсли;
ПриРасчетеСроковХраненияПерсональныхДанных(ДанныеСубъектов, СрокиХранения);
ЗащитаПерсональныхДанныхПереопределяемый.ПриРасчетеСроковХраненияПерсональныхДанных(ДанныеСубъектов, СрокиХранения);
Если СрокиХранения.Количество() > 1000 Тогда
СрокиХранения.Индексы.Добавить("Субъект,СрокХранения");
МаксимальныеСрокиХранения = СрокиХранения.СкопироватьКолонки();
Если ДанныеСубъектов.Количество() > 1000 Тогда
МаксимальныеСрокиХранения.Индексы.Добавить("Субъект");
КонецЕсли;
СрокиХранения.Сортировать("Субъект, СрокХранения Убыв");
СтрокиСМаксимальнойДатой = Новый Массив;
ТекущийСубъект = Неопределено;
Для Каждого СтрокаТаблицы Из СрокиХранения Цикл
Если СтрокаТаблицы.Субъект = ТекущийСубъект Тогда
Продолжить;
НайденнаяСтрока = МаксимальныеСрокиХранения.Найти(СтрокаТаблицы.Субъект);
Если НайденнаяСтрока = Неопределено Тогда
НайденнаяСтрока = МаксимальныеСрокиХранения.Добавить();
ЗаполнитьЗначенияСвойств(НайденнаяСтрока, СтрокаТаблицы);
ИначеЕсли НайденнаяСтрока.СрокХранения < СтрокаТаблицы.СрокХранения Тогда
ЗаполнитьЗначенияСвойств(НайденнаяСтрока, СтрокаТаблицы);
КонецЕсли;
Если Не ЗначениеЗаполнено(СтрокаТаблицы.СрокХранения) Тогда
СтрокаТаблицы.СрокХранения = ТекущаяДатаСеанса();
КонецЕсли;
СтрокиСМаксимальнойДатой.Добавить(СтрокаТаблицы);
ТекущийСубъект = СтрокаТаблицы.Субъект;
КонецЦикла;
МаксимальныеСрокиХранения = СрокиХранения.Скопировать(СтрокиСМаксимальнойДатой);
Возврат МаксимальныеСрокиХранения;
КонецФункции
@@ -45,7 +45,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.8.321";
Описание.Версия = "3.1.8.334";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -9921,7 +9921,7 @@
Функция МинимальнаяВерсияПлатформы() Экспорт // АПК:581 - экспортная, так как используется при тестировании.
Возврат "8.3.21.1622; 8.3.22.1704";
Возврат "8.3.21.1775; 8.3.22.1923";
КонецФункции
@@ -41,8 +41,6 @@
// Устарели, следует использовать свойства МинимальнаяВерсияПлатформы и РекомендуемаяВерсияПлатформы:
// * МинимальноНеобходимаяВерсияПлатформы - Строка - полный номер версии платформы для запуска программы.
// Например, "8.3.4.365".
// Ранее определялись в
// ОбщегоНазначенияПереопределяемый.ПолучитьМинимальноНеобходимуюВерсиюПлатформы.
// * РаботаВПрограммеЗапрещена - Булево - начальное значение Ложь.
//
Процедура ПриОпределенииОбщихПараметровБазовойФункциональности(ОбщиеПараметры) Экспорт
@@ -189,7 +189,6 @@
РаботаСФайламиСлужебный.ЗанятьФайлДляРедактированияСервер(ФайлОбъект);
КонецЕсли;
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
СсылкаНаДвоичныеДанныеФайла = Неопределено;
@@ -469,7 +469,8 @@
КорневойКаталог = ПолныйПутьТома + ?(Прав(ПолныйПутьТома, 1) = Разделитель, "", Разделитель);
Если СоздаватьПодкаталогиСИменамиВладельцев() Тогда
КорневойКаталог = КорневойКаталог + ИмяКаталогаВладельцаФайла(СвойстваФайла.ВладелецФайла) + Разделитель;
ИмяКаталогаВладельцаФайла = ИмяКаталогаВладельцаФайла(СвойстваФайла.ВладелецФайла);
КорневойКаталог = КорневойКаталог + ИмяКаталогаВладельцаФайла + ?(ИмяКаталогаВладельцаФайла = "", "", Разделитель);
КонецЕсли;
ДатаРазмещения = ?(ЗначениеЗаполнено(ДатаДляРазмещенияВТоме), ДатаДляРазмещенияВТоме, ТекущаяДатаСеанса());
@@ -596,6 +597,30 @@
КонецФункции
// Проверяет наличие файла на диске.
//
// Параметры:
// ПрисоединенныйФайл - ОпределяемыйТип.ПрисоединенныйФайл - ссылка на элемент справочника с файлом.
//
// Возвращаемое значение:
// Булево - признак наличия файла на диске.
//
Функция ПрисоединенныйФайлНаходитсяНаДиске(ПрисоединенныйФайл) Экспорт
СвойстваФайла = СвойстваФайлаВТоме(ПрисоединенныйФайл);
ПутьКФайлу = ПолноеИмяФайлаВТоме(СвойстваФайла);
Если Не ЗначениеЗаполнено(ПутьКФайлу) Тогда
Возврат Ложь;
КонецЕсли;
ПроверяемыйФайл = Новый Файл(ПутьКФайлу);
Если ПроверяемыйФайл.Существует() Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
#Область КонтрольВеденияУчета
// См. КонтрольВеденияУчетаПереопределяемый.ПриОпределенииПроверок
@@ -1772,6 +1797,19 @@
Обработчик.РежимВыполнения = "Оперативно";
Обработчик.НачальноеЗаполнение = Истина;
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.1.8.331";
Обработчик.Процедура = "Справочники.ВерсииФайлов.ОбработатьПутьХраненияВерсий";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ОчередьОтложеннойОбработки = 1;
Обработчик.Комментарий = НСтр("ru = 'Исправляет ошибочные пути хранения файлов в томе'");
Обработчик.Идентификатор = Новый УникальныйИдентификатор("06354049-b702-4f27-8e99-f49b86f7f152");
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
Обработчик.БлокируемыеОбъекты = "Справочник.ВерсииФайлов";
Обработчик.ПроцедураЗаполненияДанныхОбновления = "Справочники.ВерсииФайлов.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ЧитаемыеОбъекты = "Справочник.ВерсииФайлов";
Обработчик.ИзменяемыеОбъекты = "Справочник.ВерсииФайлов";
КонецПроцедуры
// Устанавливает значение константы СпособХраненияФайлов в зависимости от значения
@@ -47,17 +47,21 @@
МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипЗнч(ФайлИлиВерсияСсылка));
ЭтоСправочникФайлов = ОбщегоНазначения.ЕстьРеквизитОбъекта("ВладелецФайла", МетаданныеОбъекта);
ВозможностьХранитьВерсии = ОбщегоНазначения.ЕстьРеквизитОбъекта("ТекущаяВерсия", МетаданныеОбъекта);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
Если ВозможностьХранитьВерсии
И ЗначениеЗаполнено(ФайлИлиВерсияСсылка.ТекущаяВерсия) Тогда
ВерсияСсылка = ФайлИлиВерсияСсылка.ТекущаяВерсия;
ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка, ВерсияСсылка);
ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка, ВерсияСсылка, ПараметрыДанныхФайла);
ИначеЕсли ЭтоСправочникФайлов Тогда
ВерсияСсылка = ФайлИлиВерсияСсылка;
ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка);
ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка,, ПараметрыДанныхФайла);
Иначе
ВерсияСсылка = ФайлИлиВерсияСсылка;
ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка.Владелец, ВерсияСсылка);
ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка.Владелец, ВерсияСсылка, ПараметрыДанныхФайла);
КонецЕсли;
ДвоичныеДанные = Неопределено;
@@ -154,6 +158,10 @@
КонецЕсли;
РаботаСФайламиСлужебный.ОбновитьВерсиюВФайле(ФайлСсылка, Версия, СведенияОФайле.АдресВременногоХранилищаТекста);
Если Не ЗначениеЗаполнено(СведенияОФайле.Кодировка) Тогда
СведенияОФайле.Кодировка = РаботаСФайламиСлужебныйКлиентСервер.ОпределитьКодировкуДвоичныхДанных(СведенияОФайле.АдресВременногоХранилищаФайла, СведенияОФайле.РасширениеБезТочки);
КонецЕсли;
Если СведенияОФайле.Кодировка <> Неопределено Тогда
РегистрыСведений.КодировкиФайлов.ЗаписатьКодировкуВерсииФайла(
?(Версия = Справочники.ВерсииФайлов.ПустаяСсылка(), ФайлСсылка, Версия), СведенияОФайле.Кодировка);
@@ -215,7 +223,9 @@
Для Каждого ПрисоединенныйФайл Из Файлы Цикл
РаботаСФайламиСлужебный.ОсвободитьФайл(ПрисоединенныйФайл);
ДанныеФайла = ДанныеФайла(ПрисоединенныйФайл);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайла = ДанныеФайла(ПрисоединенныйФайл,,ПараметрыДанныхФайла);
ВерсииФайлов.Вставить(ПрисоединенныйФайл, ДанныеФайла.ТекущаяВерсия);
КонецЦикла;
@@ -309,13 +319,16 @@
//
Функция ДанныеФайловДляПодписания(Знач Файлы, ИдентификаторФормы = Неопределено) Экспорт
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ИдентификаторФормы = ИдентификаторФормы;
Если ТипЗнч(Файлы) <> Тип("Массив") Тогда
Возврат ДанныеФайла(Файлы,,ИдентификаторФормы);
Возврат ДанныеФайла(Файлы,,ПараметрыДанныхФайла);
КонецЕсли;
ДанныеФайлов = Новый Массив;
Для Каждого Файл Из Файлы Цикл
ДанныеФайлов.Добавить(ДанныеФайла(Файл,,ИдентификаторФормы));
ДанныеФайлов.Добавить(ДанныеФайла(Файл,,ПараметрыДанныхФайла));
КонецЦикла;
Возврат ДанныеФайлов;
@@ -325,16 +338,56 @@
// Возвращает структуру, содержащую различные сведения о файле и версии.
//
// Параметры:
// ФайлИлиВерсияСсылка - СправочникСсылка.Файлы
// - СправочникСсылка.ВерсииФайлов - файл или версия файла.
// ФайлСсылка - см. РаботаСФайлами.ДвоичныеДанныеФайла.ПрисоединенныйФайл.
// ВерсияСсылка - СправочникСсылка.ВерсииФайлов - версия файла по которой формируются данные, если не указан то по
// текущей версии или файлу.
// ПараметрыДанныхФайла - см. РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла
//
//
// Возвращаемое значение:
// Структура:
// * Ссылка - ОпределяемыйТип.ПрисоединенныйФайл
// Структура -Данные файла:
// * Автор - СправочникСсылка.Пользователи
// * АвторТекущейВерсии - СправочникСсылка.Пользователи
// * ВРабочемКаталогеНаЧтение - Булево
// * Версия - СправочникСсылка.ВерсииФайлов
// * Владелец - ОпределяемыйТип.ВладелецПрисоединенныхФайлов
// * ДатаЗаема - Дата
// * ДатаМодификацииУниверсальная - Дата
// * Зашифрован - Булево
// * Кодировка - Строка
// * КодировкаТекущейВерсии - Строка
// * НаЧтение - Булево
// * НавигационнаяСсылка - Строка
// * НавигационнаяСсылкаТекущейВерсии - Строка
// * Наименование - Строка
// * НомерВерсии - Число
// * ПапкаДляСохранитьКак - Строка
// * ПодписанЭП - Булево
// * ПолноеИмяФайлаВРабочемКаталоге - Строка
// * ПолноеНаименованиеВерсии - Строка
// * ПометкаУдаления - Булево
// * РабочийКаталогВладельца - Строка
// * Размер - Число
// * Расширение - Строка
// * Редактирует - СправочникСсылка.Пользователи
// * Служебный - Булево
// * Ссылка - ОпределяемыйТип.ПрисоединенныйФайл
// * СсылкаНаДвоичныеДанныеФайла - Строка
// * СтатусИзвлеченияТекста - Строка
// * ТекущаяВерсия - СправочникСсылка.ВерсииФайлов
// * Том - СправочникСсылка.ТомаХраненияФайлов
// * ФайлРедактируетТекущийПользователь - Булево
// * ХранитьВерсии - Булево
//
Функция ДанныеФайла(ФайлСсылка, ВерсияСсылка = Неопределено, ИдентификаторФормы = Неопределено, Знач ВызыватьИсключение = Истина) Экспорт
Функция ДанныеФайла(ФайлСсылка, ВерсияСсылка = Неопределено, ПараметрыДанныхФайла = Неопределено) Экспорт
Если ПараметрыДанныхФайла = Неопределено Тогда
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
КонецЕсли;
ИдентификаторФормы = ПараметрыДанныхФайла.ИдентификаторФормы;
ВызыватьИсключение = ПараметрыДанныхФайла.ВызыватьИсключение;
ПолучатьСсылкуНаДвоичныеДанные = ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные;
ЕстьПраваНаОбъект = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ФайлСсылка, "Ссылка", Истина);
@@ -354,7 +407,6 @@
Если ОбщегоНазначения.ЕстьРеквизитОбъекта("ТекущаяВерсия", МетаданныеОбъектаФайла) И ЗначениеЗаполнено(ФайлСсылка.ТекущаяВерсия) Тогда
ТекущаяВерсияФайла = ФайлОбъект.ТекущаяВерсия;
// Без возможности хранить версии.
Иначе
ТекущаяВерсияФайла = ФайлСсылка;
КонецЕсли;
@@ -373,14 +425,26 @@
ДанныеФайла.Вставить("ДатаЗаема", ФайлОбъект.ДатаЗаема);
Если ВерсияСсылка = Неопределено Тогда
ДанныеФайла.Вставить("СсылкаНаДвоичныеДанныеФайла",
ПоместитьВоВременноеХранилище(РаботаСФайлами.ДвоичныеДанныеФайла(ФайлСсылка, ВызыватьИсключение), ИдентификаторФормы));
Если ПолучатьСсылкуНаДвоичныеДанные Тогда
СсылкаНаДвоичныеДанныеФайла =
ПоместитьВоВременноеХранилище(РаботаСФайлами.ДвоичныеДанныеФайла(ТекущаяВерсияФайла, ВызыватьИсключение), ИдентификаторФормы);
Иначе
СсылкаНаДвоичныеДанныеФайла = Неопределено;
КонецЕсли;
ДанныеФайла.Вставить("СсылкаНаДвоичныеДанныеФайла", СсылкаНаДвоичныеДанныеФайла);
ДанныеФайла.Вставить("НавигационнаяСсылка", ПолучитьНавигационнуюСсылку(ФайлСсылка));
ДанныеФайла.Вставить("АвторТекущейВерсии", ФайлСсылка.Изменил);
ДанныеФайла.Вставить("Кодировка", РегистрыСведений.КодировкиФайлов.ОпределитьКодировкуФайла(ФайлСсылка, ФайлОбъект.Расширение));
ДанныеФайла.Вставить("Кодировка", РегистрыСведений.КодировкиФайлов.ОпределитьКодировкуФайла(ТекущаяВерсияФайла, ФайлОбъект.Расширение));
Иначе
ДанныеФайла.Вставить("СсылкаНаДвоичныеДанныеФайла",
ПоместитьВоВременноеХранилище(РаботаСФайлами.ДвоичныеДанныеФайла(ВерсияСсылка, ВызыватьИсключение), ИдентификаторФормы));
Если ПолучатьСсылкуНаДвоичныеДанные Тогда
СсылкаНаДвоичныеДанныеФайла =
ПоместитьВоВременноеХранилище(РаботаСФайлами.ДвоичныеДанныеФайла(ВерсияСсылка, ВызыватьИсключение), ИдентификаторФормы);
Иначе
СсылкаНаДвоичныеДанныеФайла = Неопределено;
КонецЕсли;
ДанныеФайла.Вставить("СсылкаНаДвоичныеДанныеФайла", СсылкаНаДвоичныеДанныеФайла);
ДанныеФайла.Вставить("НавигационнаяСсылка", ПолучитьНавигационнуюСсылку(ФайлОбъект.Ссылка));
ДанныеФайла.Вставить("АвторТекущейВерсии", ВерсияСсылка.Автор);
ДанныеФайла.Вставить("Кодировка", РегистрыСведений.КодировкиФайлов.ОпределитьКодировкуФайла(ВерсияСсылка, ФайлОбъект.Расширение));
@@ -479,7 +543,9 @@
ВерсияСсылка = ФайлСсылка.ТекущаяВерсия;
КонецЕсли;
ДанныеФайла = ДанныеФайла(ФайлСсылка, ВерсияСсылка, ИдентификаторФормы);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ИдентификаторФормы = ИдентификаторФормы;
ДанныеФайла = ДанныеФайла(ФайлСсылка, ВерсияСсылка, ПараметрыДанныхФайла);
Если РабочийКаталогВладельца = Неопределено Тогда
РабочийКаталогВладельца = РабочийКаталогПапки(ДанныеФайла.Владелец);
КонецЕсли;
@@ -596,10 +662,13 @@
ФайлыВладельца.КоличествоФайлов = КоличествоФайлов;
Если ВозвращатьДанныеФайлов И КоличествоФайлов > 0 Тогда
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ПараметрыДанныхФайла.ВызыватьИсключение = Ложь;
Если РеквизитРазмещения = Неопределено Или Не ЗначениеЗаполнено(ВладелецФайлов[РеквизитРазмещения]) Тогда
ФайлыВладельца.ДанныеФайла = ДанныеФайла(ТаблицаФайлов[0].Файл, , , Ложь);
ФайлыВладельца.ДанныеФайла = ДанныеФайла(ТаблицаФайлов[0].Файл, , ПараметрыДанныхФайла);
Иначе
ФайлыВладельца.ДанныеФайла = ДанныеФайла(ВладелецФайлов[РеквизитРазмещения], , , Ложь);
ФайлыВладельца.ДанныеФайла = ДанныеФайла(ВладелецФайлов[РеквизитРазмещения], , ПараметрыДанныхФайла);
КонецЕсли;
КонецЕсли;
@@ -922,7 +991,10 @@
НеМенятьЗаписьВРабочемКаталоге, ПолныйПутьКФайлу, РабочийКаталогПользователя,
УникальныйИдентификаторФормы = Неопределено) Экспорт
ДанныеФайлаТекущие = ДанныеФайла(ДанныеФайла.Ссылка);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайлаТекущие = ДанныеФайла(ДанныеФайла.Ссылка,, ПараметрыДанныхФайла);
Если Не ДанныеФайлаТекущие.ФайлРедактируетТекущийПользователь И НЕ ФайлСинхронизируетсяОблачнымСервисом(ДанныеФайла.Ссылка) Тогда
ВызватьИсключение НСтр("ru = 'Файл не занят текущим пользователем'");
КонецЕсли;
@@ -972,7 +1044,9 @@
Функция СохранитьИзмененияИОсвободитьФайлПоСсылке(ФайлСсылка, СведенияОФайле,
ПолныйПутьКФайлу, РабочийКаталогПользователя, УникальныйИдентификаторФормы = Неопределено) Экспорт
ДанныеФайла = ДанныеФайла(ФайлСсылка);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайла = ДанныеФайла(ФайлСсылка,,ПараметрыДанныхФайла);
ВерсияСоздана = СохранитьИзмененияИОсвободитьФайл(ДанныеФайла, СведенияОФайле, Ложь, ПолныйПутьКФайлу, РабочийКаталогПользователя,
УникальныйИдентификаторФормы);
Возврат Новый Структура("Успешно,ДанныеФайла", ВерсияСоздана, ДанныеФайла);
@@ -1000,7 +1074,10 @@
НеМенятьЗаписьВРабочемКаталоге, ОтносительныйПутьКФайлу, ПолныйПутьКФайлу, ВРабочемКаталогеВладельца,
УникальныйИдентификаторФормы = Неопределено) Экспорт
ДанныеФайлаТекущие = ДанныеФайла(ФайлСсылка);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайлаТекущие = ДанныеФайла(ФайлСсылка,,ПараметрыДанныхФайла);
Если Не ДанныеФайлаТекущие.ФайлРедактируетТекущийПользователь И НЕ ФайлСинхронизируетсяОблачнымСервисом(ФайлСсылка) Тогда
ВызватьИсключение НСтр("ru = 'Файл не занят текущим пользователем'");
КонецЕсли;
@@ -1010,6 +1087,10 @@
СведенияОФайле.Зашифрован = ДанныеФайлаТекущие.Зашифрован;
КонецЕсли;
Если СведенияОФайле.Кодировка = Неопределено Тогда
СведенияОФайле.Кодировка = РаботаСФайламиСлужебныйКлиентСервер.ОпределитьКодировкуДвоичныхДанных(СведенияОФайле.АдресВременногоХранилищаФайла, СведенияОФайле.РасширениеБезТочки);
КонецЕсли;
Если ТипЗнч(ФайлСсылка.Ссылка) = Тип("СправочникСсылка.Файлы") Тогда
НоваяВерсия = РаботаСФайламиСлужебный.ОбновитьВерсиюФайла(ФайлСсылка.Ссылка, СведенияОФайле,, УникальныйИдентификаторФормы, СведенияОФайле.НоваяВерсияАвтор);
Иначе
@@ -1185,7 +1266,9 @@
Для Каждого ФайлСсылка Из ОбъектыСсылка Цикл
ПеренестиФайл(ФайлСсылка, Папка);
ДанныеФайла = ДанныеФайла(ФайлСсылка);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайла = ДанныеФайла(ФайлСсылка,,ПараметрыДанныхФайла);
ДанныеФайлов.Добавить(ДанныеФайла);
КонецЦикла;
@@ -1367,8 +1450,10 @@
ТекущаяВерсия = ?(Не ВозможностьХранитьВерсии, Неопределено,
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ФайлСсылка, "ТекущаяВерсия"));
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка);
ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка,, ПараметрыДанныхФайла);
Если РабочийКаталогВладельца = Неопределено Тогда
РабочийКаталогВладельца = РабочийКаталогПапки(ДанныеФайла.Владелец);
КонецЕсли;
@@ -1404,7 +1489,10 @@
//
Функция ПолучитьДанныеФайлаИКоличествоВерсий(ФайлСсылка) Экспорт
ДанныеФайла = ДанныеФайла(ФайлСсылка);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайла = ДанныеФайла(ФайлСсылка,,ПараметрыДанныхФайла);
КоличествоВерсий = ПолучитьКоличествоВерсий(ФайлСсылка);
ДанныеФайла.Вставить("КоличествоВерсий", КоличествоВерсий);
@@ -1447,7 +1535,9 @@
ОтносительныйПутьКФайлу, ПолныйПутьКФайлу, ВРабочемКаталогеВладельца,
УникальныйИдентификаторФормы = Неопределено) Экспорт
ДанныеФайла = ДанныеФайла(ФайлСсылка);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайла = ДанныеФайла(ФайлСсылка,,ПараметрыДанныхФайла);
Если Не ДанныеФайла.ФайлРедактируетТекущийПользователь Тогда
ВызватьИсключение НСтр("ru = 'Файл не занят текущим пользователем'");
КонецЕсли;
@@ -2075,14 +2165,18 @@
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ПараметрыДанныхФайла.ВызыватьИсключение = Ложь;
МассивВозврата = Новый Массив;
Пока Выборка.Следующий() Цикл
ВерсияСсылка = Выборка.Ссылка;
ДанныеФайла = ДанныеФайла(ФайлСсылка, ВерсияСсылка, , Ложь);
ДанныеФайла = ДанныеФайла(ФайлСсылка, ВерсияСсылка, ПараметрыДанныхФайла);
Если ДанныеФайла.ПометкаУдаления = Ложь
И ПолучитьИзВременногоХранилища(ДанныеФайла.СсылкаНаДвоичныеДанныеФайла) = Неопределено Тогда
И Не ПрисоединенныйФайлНаходитсяНаДиске(ВерсияСсылка) Тогда
Продолжить;
КонецЕсли;
@@ -2097,7 +2191,9 @@
// Если не хранятся версии, то зашифровываем файл.
Если Не ФайлСсылка.ХранитьВерсии Или Не ЗначениеЗаполнено(ФайлСсылка.ТекущаяВерсия) Тогда
ДанныеФайла = ДанныеФайла(ФайлСсылка);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайла = ДанныеФайла(ФайлСсылка,,ПараметрыДанныхФайла);
НавигационнаяСсылкаВерсии = РаботаСФайламиСлужебный.ПолучитьНавигационнуюСсылкуВоВременномХранилище(ФайлСсылка, ИдентификаторФормы);
СтруктураВозврата = Новый Структура("ДанныеФайла, НавигационнаяСсылкаВерсии, ВерсияСсылка",
@@ -2290,8 +2386,8 @@
ФайлИлиВерсияОбъект = ФайлИлиВерсия.ПолучитьОбъект();
Если ФайлИлиВерсияОбъект.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
ДанныеФайла = РаботаСФайламиВТомахСлужебный.ДанныеФайла(ФайлИлиВерсия, Ложь);
Если ДанныеФайла <> Неопределено Тогда
ПрисоединенныйФайлНаходитсяНаДиске = ПрисоединенныйФайлНаходитсяНаДиске(ФайлИлиВерсия);
Если ПрисоединенныйФайлНаходитсяНаДиске Тогда
СвойстваФайла = РаботаСФайламиВТомахСлужебный.СвойстваФайлаВТоме();
ЗаполнитьЗначенияСвойств(СвойстваФайла, ФайлИлиВерсияОбъект);
@@ -2888,4 +2984,46 @@
КонецФункции
// Проверяет наличие файла на диске.
//
// Параметры:
// ПрисоединенныйФайл - ОпределяемыйТип.ПрисоединенныйФайл - ссылка на элемент справочника с файлом.
//
// Возвращаемое значение:
// Булево - признак наличия файла на диске.
//
Функция ПрисоединенныйФайлНаходитсяНаДиске(ПрисоединенныйФайл)
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("РаботаСФайлами.ДвоичныеДанныеФайла", "ПрисоединенныйФайл",
ПрисоединенныйФайл, Метаданные.ОпределяемыеТипы.ПрисоединенныйФайл.Тип);
ФайлОбъект = РаботаСФайламиСлужебный.ФайлОбъект(ПрисоединенныйФайл);
Если (ФайлОбъект = Неопределено Или ФайлОбъект.ЭтоГруппа) Тогда
Возврат Ложь;
КонецЕсли;
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
Если ФайлОбъект.ПометкаУдаления Тогда
Возврат Ложь;
КонецЕсли;
Если ФайлОбъект.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
Результат = РаботаСФайлами.ХранилищеФайлаИзИнформационнойБазы(ФайлОбъект.Ссылка);
Если Результат <> Неопределено Тогда
Результат = Результат.Получить();
Если Результат <> Неопределено Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
Иначе
Возврат РаботаСФайламиВТомахСлужебный.ПрисоединенныйФайлНаходитсяНаДиске(ПрисоединенныйФайл);
КонецЕсли;
КонецФункции
#КонецОбласти
@@ -2317,7 +2317,10 @@
// Веб-клиент без расширения для работы с файлами.
Если ПараметрыВыполнения.ДанныеФайла = Неопределено Тогда
ПараметрыВыполнения.ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПараметрыВыполнения.ОбъектСсылка);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ПараметрыВыполнения.ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПараметрыВыполнения.ОбъектСсылка,,ПараметрыДанныхФайла);
ПараметрыВыполнения.ХранитьВерсии = ПараметрыВыполнения.ДанныеФайла.ХранитьВерсии;
ПараметрыВыполнения.ФайлРедактируетТекущийПользователь = ПараметрыВыполнения.ДанныеФайла.ФайлРедактируетТекущийПользователь;
ПараметрыВыполнения.Редактирует = ПараметрыВыполнения.ДанныеФайла.Редактирует;
@@ -2446,7 +2449,9 @@
ПараметрыВыполнения.Вставить("ВыбранноеИмяФайла", ВыбранноеИмяФайла);
Если ПараметрыВыполнения.ДанныеФайла = Неопределено Тогда
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПараметрыВыполнения.ОбъектСсылка);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПараметрыВыполнения.ОбъектСсылка,,ПараметрыДанныхФайла);
Иначе
ДанныеФайла = ПараметрыВыполнения.ДанныеФайла;
КонецЕсли;
@@ -3587,8 +3592,11 @@
Если ПараметрыВыполнения.ХранитьВерсии = Неопределено Тогда
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(
?(ПараметрыВыполнения.ОбъектСсылка <> Неопределено, ПараметрыВыполнения.ОбъектСсылка, ПараметрыВыполнения.Версия));
?(ПараметрыВыполнения.ОбъектСсылка <> Неопределено, ПараметрыВыполнения.ОбъектСсылка, ПараметрыВыполнения.Версия),, ПараметрыДанныхФайла);
Если НЕ ЗначениеЗаполнено(ПараметрыВыполнения.ОбъектСсылка) Тогда
ПараметрыВыполнения.ОбъектСсылка = ДанныеФайла.Ссылка;
@@ -3954,7 +3962,10 @@
Процедура СохранитьИзмененияФайлаБезРасширения(ПараметрыВыполнения)
Если ПараметрыВыполнения.ХранитьВерсии = Неопределено Тогда
ПараметрыВыполнения.ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПараметрыВыполнения.ОбъектСсылка);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ПараметрыВыполнения.ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПараметрыВыполнения.ОбъектСсылка,, ПараметрыДанныхФайла);
ПараметрыВыполнения.ХранитьВерсии = ПараметрыВыполнения.ДанныеФайла.ХранитьВерсии;
ПараметрыВыполнения.ФайлРедактируетТекущийПользователь = ПараметрыВыполнения.ДанныеФайла.ФайлРедактируетТекущийПользователь;
ПараметрыВыполнения.Редактирует = ПараметрыВыполнения.ДанныеФайла.Редактирует;
@@ -4081,7 +4092,9 @@
ПараметрыВыполнения.Вставить("ВыбранноеИмяФайла", ВыбранноеИмяФайла);
Если ПараметрыВыполнения.ДанныеФайла = Неопределено Тогда
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПараметрыВыполнения.ОбъектСсылка);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПараметрыВыполнения.ОбъектСсылка,,ПараметрыДанныхФайла);
Иначе
ДанныеФайла = ПараметрыВыполнения.ДанныеФайла;
КонецЕсли;
@@ -351,7 +351,7 @@
// * УникальныйИдентификатор - уникальный идентификатор формы.
// * Пользователь - СправочникСсылка.Пользователи
// * ДополнительныеСвойства - Структура - дополнительные свойства для записи файла.
//
Функция ПараметрыЗанятияФайла() Экспорт
Параметры = Новый Структура;
@@ -597,13 +597,21 @@
// Автоматически определяет и возвращает кодировку текстового файла.
//
// Параметры:
// ДвоичныеДанные - ОпределяемыйТип.ДвоичныеДанные
// ДанныеДляАнализа - ДвоичныеДанные, Строка - Данные для определения кодировки или адрес данных.
// Расширение - Строка - расширение файла.
//
// Возвращаемое значение:
// Строка
//
Функция ОпределитьКодировкуДвоичныхДанных(ДвоичныеДанные, Расширение) Экспорт
Функция ОпределитьКодировкуДвоичныхДанных(ДанныеДляАнализа, Расширение) Экспорт
Если ТипЗнч(ДанныеДляАнализа) = Тип("ДвоичныеДанные") Тогда
ДвоичныеДанные = ДанныеДляАнализа;
ИначеЕсли ЭтоАдресВременногоХранилища(ДанныеДляАнализа) Тогда
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ДанныеДляАнализа);
Иначе
ДвоичныеДанные = Неопределено;
КонецЕсли;
Кодировка = Неопределено;
@@ -6831,11 +6831,28 @@
Возврат;
КонецЕсли;
ТекстОшибки =
НСтр("ru = 'Для изменения административного доступа
|требуется пароль пользователя сервиса.
|
|Операция может быть выполнена только интерактивно.'");
УпрощенныйИнтерфейс = УпрощенныйИнтерфейсНастройкиПравДоступа();
Если БылиПолныеПрава Тогда
Шаблон = НСтр("ru = 'Для отключения административного доступа пользователю ""%1"" требуется пароль текущего пользователя сервиса ""%2"".'");
Иначе
Шаблон = НСтр("ru = 'Для установки административного доступа пользователю ""%1"" требуется пароль текущего пользователя сервиса ""%2"".'");
КонецЕсли;
Если БылиПолныеПрава И УпрощенныйИнтерфейс Тогда
Уточнение = НСтр("ru = 'Это действие может быть выполнено только в карточке пользователя при отключении ему профиля Администратор.'");
ИначеЕсли Не БылиПолныеПрава И УпрощенныйИнтерфейс Тогда
Уточнение = НСтр("ru = 'Это действие может быть выполнено только в карточке пользователя при включении ему профиля Администратор.'");
ИначеЕсли БылиПолныеПрава Тогда
Уточнение = НСтр("ru = 'Это действие может быть выполнено только в карточке группы доступа Администраторы или в карточке пользователя при исключении его из группы доступа Администраторы.'");
Иначе
Уточнение = НСтр("ru = 'Это действие может быть выполнено только в карточке группы доступа Администраторы или в карточке пользователя при включении его в группу доступа Администраторы.'");
КонецЕсли;
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон,
ПользовательИБ.Имя, ПользователиИнформационнойБазы.ТекущийПользователь().Имя);
ТекстОшибки = ТекстОшибки + Символы.ПС + Символы.ПС + Уточнение;
ВызватьИсключение ТекстОшибки;
Иначе
МодульПользователиСлужебныйВМоделиСервиса.ЗаписатьПользователяСервиса(ПользовательСсылка,
@@ -2992,6 +2992,7 @@
Или СтрСравнить(ЭлементСтруктуры.Ключ, "munLevels") = 0 Тогда
ПроверяемоеЗначение = ЭлементСтруктуры.Значение[Индекс];
Иначе
Индекс = Индекс - 1;
Продолжить;
КонецЕсли;
@@ -2527,6 +2527,11 @@
ЧастиПути.Удалить(ЧастиПути.ВГраница());
ИмяОбъекта = СтрСоединить(ЧастиПути, ".");
Если ИмяОбъекта = "ОбщийМакет" Тогда
ИсточникиДанныхМакета.Добавить(Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка());
Возврат ИсточникиДанныхМакета;
КонецЕсли;
ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоПолномуИмени(ИмяОбъекта);
Если ОбъектМетаданных = Неопределено Тогда
Возврат ИсточникиДанныхМакета;
@@ -251,7 +251,7 @@
// * ПриложениеЗапущено - Булево - Истина, если внешнее приложение не вызвало ошибок при открытии.
// * ДополнительныеПараметры - Произвольный - значение, которое было указано при создании объекта ОписаниеОповещения.
// ДляРедактирования - Булево - Истина, если файл открывается для редактирования, иначе Ложь.
//
Процедура ОткрытьФайлВПрограммеПросмотра(ПутьКФайлу, Знач Оповещение = Неопределено,
Знач ДляРедактирования = Ложь)
@@ -1116,7 +1116,7 @@
//
// Параметры:
// Подпись - ДвоичныеДанные - двоичные данные электронной подписи.
// ТипПодписи - ПеречислениеСсылка.ТипыЭлектроннойПодписи - тип подписи,
// ТипПодписи - ПеречислениеСсылка.ТипыПодписиКриптографии - тип подписи,
// до которого требуется усовершенствование. Если фактический ТипПодписи
// тот же или выше, тогда никаких действий произведено не будет.
// ДобавитьАрхивнуюМеткуВремени - Булево - если указано Истина и фактический ТипПодписи архивная,
@@ -1271,7 +1271,7 @@
//
// ПорядковыйНомер - Число - порядковый номер подписи.
//
// ТипПодписи - ПеречислениеСсылка.ТипыЭлектроннойПодписи - тип подписи,
// ТипПодписи - ПеречислениеСсылка.ТипыПодписиКриптографии - тип подписи,
// до которого требуется усовершенствование. Если фактический ТипПодписи
// тот же или выше, тогда никаких действий произведено не будет.
//
@@ -800,7 +800,7 @@
//
// Параметры:
// ОписаниеДанных - Структура:
// * ТипПодписи - ПеречислениеСсылка.ТипыЭлектроннойПодписи - тип подписи,
// * ТипПодписи - ПеречислениеСсылка.ТипыПодписиКриптографии - тип подписи,
// до которого требуется усовершенствование. Если фактический ТипПодписи
// тот же или выше, тогда никаких действий произведено не будет.
// * ДобавитьАрхивнуюМеткуВремени - Булево - если указано Истина и ТипПодписи указан архивная,
@@ -852,7 +852,7 @@
// = Строка - адрес во временном хранилище.
// ## ПодписанныйОбъект - ЛюбаяСсылка - если есть.
// ## ПорядковыйНомер - Число - если есть.
// ## ТипПодписи - ПеречислениеСсылка.ТипыЭлектроннойПодписи - тип подписи,
// ## ТипПодписи - ПеречислениеСсылка.ТипыПодписиКриптографии - тип подписи,
// если подпись не удалось усовершенствовать, но удалось определить тип.
// ## СрокДействияПоследнейМеткиВремени - Дата - срок действия,
// если подпись не удалось усовершенствовать, но удалось определить срок действия.
@@ -35,7 +35,7 @@
// - ДвоичныеДанные
// * Отпечаток - Строка - отпечаток сертификата в формате строки Base64.
// * КомуВыданСертификат - Строка - представление субъекта, полученное из двоичных данных сертификата.
// * ТипПодписи - ПеречислениеСсылка.ТипыЭлектроннойПодписи
// * ТипПодписи - ПеречислениеСсылка.ТипыПодписиКриптографии
// * СрокДействияПоследнейМеткиВремени - Дата - срок действия сертификата, которым подписана
// последняя метка времени (или пустая дата, если нет метки времени)
// * ОписаниеСертификата - Структура - свойство, требуемое для сертификатов, которые
@@ -190,10 +190,10 @@
// ** Значение - имя хранилища
// ** Представление - представление в форме установки
// * СвойстваКонтейнера - Структура:
// ** - Имя - строка - Имя контейнера
// ** - ТипПрограммы - число - тип программы криптопровайдера
// ** - ИмяПрограммы - строка - имя программы криптопровайдера
// ** - ПутьКПрограмме - строка - имя программы криптопровайдера
// ** Имя - строка - Имя контейнера
// ** ТипПрограммы - число - тип программы криптопровайдера
// ** ИмяПрограммы - строка - имя программы криптопровайдера
// ** ПутьКПрограмме - строка - имя программы криптопровайдера
// * ТекстПредупреждения - Строка - для отображения в форме установки
// * Форма - ФормаКлиентскогоПриложения - владелец формы установки
//
@@ -9981,18 +9981,6 @@
Если СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86
ИЛИ СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
Если СтрНайти(СистемнаяИнформация.ВерсияОС, "Windows 10") <> 0
Или СтрНайти(СистемнаяИнформация.ВерсияОС, "Windows Server 2016") <> 0 Тогда
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Работа %1 на операционной системе %2 не поддерживается. Подробности на сайте %3.'"),
ЭлектроннаяПодписьКлиентСерверЛокализация.ИмяПрограммыVipNet(), СистемнаяИнформация.ВерсияОС,
"www.infotecs.ru");
ОбработатьОшибкуУстановкиПрограммыКриптографии(ОписаниеОшибки, ОповещениеОЗавершении);
Возврат;
КонецЕсли;
Контекст = Новый Структура;
Контекст.Вставить("ОповещениеОЗавершении", ОповещениеОЗавершении);
Контекст.Вставить("ВладелецФормы", Форма.ВладелецФормы);
@@ -563,7 +563,7 @@
// Структура:
// * HTTPСоединение - HTTPСоединение
// * СтруктураURI - см. ОбщегоНазначенияКлиентСервер.СтруктураURI
//
Функция СоединениеССерверомИнтернета(ВидОперации, URL, Таймаут = Неопределено)
СтруктураURI = ОбщегоНазначенияКлиентСервер.СтруктураURI(URL);
+9 -9
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="561d989c-92dd-40d4-aeaa-a131fd7b13c3">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="6dfd84b1-479e-4faa-b7a2-6be21e97800e">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="c36a035e-1515-49b7-8f03-29ede0b80b67"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="d83521bf-c203-4278-be18-505e67c5a69b"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="5be0caf7-35fd-4f81-80df-bd68bcc8751a"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="7ed8dcae-51db-45b8-8557-262c20034410"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="b6f1dd7b-20af-45d9-8ae0-00ccd2878116"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="2c2340e1-aba8-44ea-9838-8dde90f663e4"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="ba5cbf45-60db-4c93-ac90-de5097882870"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="8aef2aed-8038-464b-b342-7ecd58594345"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="ff81897e-22ad-4d94-a37d-c48eb3ea394d"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="58ce2433-171a-4d24-a624-5c48ef376291"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="f659deab-3b10-4ccb-b38a-6e2df649a180"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="cf1c3349-83dc-4891-96ad-ce8c7f6a9137"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="492cd02e-0a80-46af-99f4-b85da72a4589"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="e8d70038-0c58-495e-8436-5bb223a903df"/>
<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.8.321</version>
<version>3.1.8.334</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -1 +1 @@
{6,1,1,67db4a7d-7131-4548-9377-abe49f9301af,1,20dd6f2a-4d26-477e-8f31-04ed5c22621b,"3.1.8.321","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",7169,1,0,561d989c-92dd-40d4-aeaa-a131fd7b13c3,561d989c-92dd-40d4-aeaa-a131fd7b13c3,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,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,a3001de6-272f-444e-a8db-ec8cc3a670a2,a3001de6-272f-444e-a8db-ec8cc3a670a2,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-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,41f46939-713f-4361-9fc8-097bca48ec7c,1,122b6630-9984-42c0-bb7b-abcf258cd415,"3.1.8.334","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",7169,1,0,6dfd84b1-479e-4faa-b7a2-6be21e97800e,6dfd84b1-479e-4faa-b7a2-6be21e97800e,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,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,a3001de6-272f-444e-a8db-ec8cc3a670a2,a3001de6-272f-444e-a8db-ec8cc3a670a2,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-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
@@ -563,7 +563,8 @@
Если ИспользоватьКаталогСообщенийОбменаДанными = Истина Тогда
КаталогВременногоХранилищаФайлов = ОбменДаннымиПовтИсп.КаталогВременногоХранилищаФайлов();
АдресНаСервере = КаталогВременногоХранилищаФайлов + "\" + Строка(Новый УникальныйИдентификатор) + ".xml";
АдресНаСервере = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(
КаталогВременногоХранилищаФайлов, Строка(Новый УникальныйИдентификатор) + ".xml")
Иначе
@@ -356,6 +356,7 @@
Если ЗначениеЗаполнено(СсылкаНаТекущийОбъект)
Или ОбработатьКомандуЗаписиФайла() Тогда
Файлы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(СсылкаНаТекущийОбъект);
ПриОтправкеФайловПочтой(ПараметрыОтправки, Файлы, ЭтотОбъект.Объект.ВладелецФайла, УникальныйИдентификатор);
РаботаСФайламиСлужебныйКлиент.ОтправитьФайлыПоПочте(Файлы, УникальныйИдентификатор, ПараметрыОтправки);
КонецЕсли;
@@ -897,10 +898,13 @@
Возврат РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(
ПрисоединенныйФайл, Неопределено, ИдентификаторФормы);
ИначеЕсли Режим = "ДляСохранения" Тогда
Возврат РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляСохранения(
ПрисоединенныйФайл,, ИдентификаторФормы);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ИдентификаторФормы = ИдентификаторФормы;
Возврат РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПрисоединенныйФайл,, ПараметрыДанныхФайла);
ИначеЕсли Режим = "ВызовСервера" Тогда
Возврат РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПрисоединенныйФайл,, ИдентификаторФормы);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ИдентификаторФормы = ИдентификаторФормы;
Возврат РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПрисоединенныйФайл,, ПараметрыДанныхФайла);
Иначе
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Истина;
@@ -1664,4 +1668,9 @@
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
&НаСервереБезКонтекста
Процедура ПриОтправкеФайловПочтой(ПараметрыОтправки, Знач ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор)
РаботаСФайламиПереопределяемый.ПриОтправкеФайловПочтой(ПараметрыОтправки, ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор);
КонецПроцедуры
#КонецОбласти
@@ -93,7 +93,10 @@
И Параметр.Событие = "ДанныеФайлаИзменены"
И Источник = Файл Тогда
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(Файл);
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Ложь;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(Файл,, ПараметрыДанныхФайла);
РежимРедактирования = Ложь;
@@ -2593,7 +2593,7 @@
Если Не ПустаяСтрока(ИмяФайла) Тогда
Возврат ИмяКаталога + ?(Прав(ИмяКаталога, 1) = "\", "", "\") + ИмяФайла;
Возврат ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(ИмяКаталога, ИмяФайла);
Иначе
@@ -1909,7 +1909,7 @@
<common>true</common>
</edit>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
<queryText>ВЫБРАТЬ РАЗРЕШЕННЫЕ
РегистрСведенийСрокиХраненияПерсональныхДанных.СрокХранения,
РегистрСведенийСрокиХраненияПерсональныхДанных.Субъект,
РегистрСведенийСрокиХраненияПерсональныхДанных.Комментарий,
@@ -1949,9 +1949,33 @@
<segments>АктыОбУничтожении.Субъект</segments>
</notDefaultUseAlwaysAttributes>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ РАЗРЕШЕННЫЕ
АктОбУничтоженииПерсональныхДанных.Ссылка,
АктОбУничтоженииПерсональныхДанных.ПометкаУдаления,
АктОбУничтоженииПерсональныхДанных.Номер,
АктОбУничтоженииПерсональныхДанных.Дата,
АктОбУничтоженииПерсональныхДанных.Проведен,
АктОбУничтоженииПерсональныхДанных.Организация,
АктОбУничтоженииПерсональныхДанных.НаименованиеОрганизации,
АктОбУничтоженииПерсональныхДанных.ЮридическийАдресОрганизации,
АктОбУничтоженииПерсональныхДанных.ОтветственныйЗаОбработкуПерсональныхДанных,
АктОбУничтоженииПерсональныхДанных.ФИООтветственногоЗаОбработкуПДн,
АктОбУничтоженииПерсональныхДанных.НаименованиеИнформационнойСистемы,
АктОбУничтоженииПерсональныхДанных.ДатаУничтожения,
АктОбУничтоженииПерсональныхДанных.СпособУничтожения,
АктОбУничтоженииПерсональныхДанных.ПричинаУничтожения,
АктОбУничтоженииПерсональныхДанных.Ответственный,
АктОбУничтоженииПерсональныхДанных.Комментарий,
АктОбУничтоженииПерсональныхДанных.Субъект,
АктОбУничтоженииПерсональныхДанных.ФИОСубъекта
ИЗ
Документ.АктОбУничтоженииПерсональныхДанных
КАК
АктОбУничтоженииПерсональныхДанных</queryText>
<mainTable>Document.АктОбУничтоженииПерсональныхДанных</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
<customQuery>true</customQuery>
<autoSaveUserSettings>true</autoSaveUserSettings>
<getInvisibleFieldPresentations>true</getInvisibleFieldPresentations>
</extInfo>
@@ -243,6 +243,10 @@
ОбщегоНазначенияКлиент.ОповеститьОбИзмененииОбъектов(Новый ОписаниеТипов(Типы));
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
УстановитьВидимостьЭлементов();
КонецПроцедуры
@@ -36,26 +36,52 @@
Для Каждого СубъектИОрганизация Из СубъектыИОрганизации Цикл
Субъект = СубъектИОрганизация.Субъект;
Если Не ЗначениеЗаполнено(Субъект) Тогда
Продолжить;
КонецЕсли;
ЗащитаПерсональныхДанных.ОбновитьСрокХраненияПерсональныхДанныхСубъекта(Субъект);
СрокХранения = ЗащитаПерсональныхДанных.СрокХраненияПерсональныхДанныхСубъекта(Субъект);
Если НачалоДня(ТекущаяДата) < СрокХранения Тогда
ТекстСообщения =СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не истек срок хранения персональных данных для %1. Акт об уничтожении не сформирован.'"),
Строка(Субъект));
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
Продолжить;
КонецЕсли;
Попытка
АктОбъект = Документы.АктОбУничтоженииПерсональныхДанных.СоздатьДокумент();
АктОбъект.Дата = ТекущаяДата;
АктОбъект.ДатаУничтожения = ТекущаяДата;
АктОбъект.Субъект = СубъектИОрганизация.Субъект;
АктОбъект.Субъект = Субъект;
АктОбъект.ЗаполнитьТабличныеЧасти();
АктОбъект.Заполнить(ДанныеЗаполнения);
Если ЗначениеЗаполнено(СубъектИОрганизация.Организация) Тогда
АктОбъект.Организация = СубъектИОрганизация.Организация;
КонецЕсли;
АктОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ТекстОшибки =СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстОшибкиПодробно =СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось создать Акт об уничтожении персональных данных для %1 по причине:
|%2'"), Строка(СубъектИОрганизация.Субъект),
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Создание акта об уничтожении персональных данных'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка, Метаданные.Документы.АктОбУничтоженииПерсональныхДанных, ,
ТекстОшибки);
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки);
ТекстОшибкиПодробно);
ТекстОшибкиКратко =СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось создать Акт об уничтожении персональных данных для %1 по причине:
|%2'"), Строка(Субъект), ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбщегоНазначения.СообщитьПользователю(ТекстОшибкиКратко);
КонецПопытки;
ПроцентВыполнения = Окр(Номер / КоличествоСубъектов * 100);
@@ -1711,6 +1711,7 @@
</handler>
</action>
<representation>TextPicture</representation>
<modifiesStoredData>true</modifiesStoredData>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
@@ -25,6 +25,14 @@
// Конец СтандартныеПодсистемы.Свойства
Если Параметры.Ключ.Пустая() Тогда
Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда
Отказ = Истина;
ОбщегоНазначения.СообщитьПользователю(НСтр(
"ru = 'Уничтожать персональные данные возможно только в главном узле распределенной информационной базы.'"));
Возврат;
КонецЕсли;
// Заполняем значениями по умолчанию.
Объект.Ответственный = Пользователи.ТекущийПользователь();
Если Не Параметры.Свойство("Организация", Объект.Организация) Тогда
@@ -168,12 +176,23 @@
&НаКлиенте
Процедура СубъектПриИзменении(Элемент)
Объект.КатегорииДанных.Очистить();
Объект.ОбъектыСУничтожаемымиДанными.Очистить();
Если ЗначениеЗаполнено(Объект.Субъект) Тогда
ДлительнаяОперация = ОбновитьСрокХраненияПерсональныхДанныхСубъекта(Объект.Субъект);
Оповещение = Новый ОписаниеОповещения("ПриОкончанииОбновленияСрокаХранения", ЭтотОбъект);
Оповещение = Новый ОписаниеОповещения("ПриОкончанииОбновленияСрокаХранения", ЭтотОбъект, ТолькоПросмотр);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ПараметрыОжидания);
Если ДлительнаяОперация.Статус = "Выполняется" Тогда
ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
ЗаполнитьДанныеСубъекта();
@@ -267,7 +286,7 @@
&НаСервере
Процедура УстановитьСвойстваЭлементов()
Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБСФильтром() Тогда
Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда
ТолькоПросмотр = Истина;
КонецЕсли;
@@ -439,6 +458,8 @@
&НаКлиенте
Процедура ПриОкончанииОбновленияСрокаХранения(Результат, ДополнительныеПараметры) Экспорт
ТолькоПросмотр = ДополнительныеПараметры;
Если Результат.Статус = "Ошибка" Тогда
ВызватьИсключение Результат.КраткоеПредставлениеОшибки;
КонецЕсли;
@@ -250,7 +250,7 @@
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ИСТИНА
|ИЗ
| Документ.АктОбУничтоженииПерсональныхДанных КАК АктОбУничтоженииПерсональныхДанных";
@@ -272,7 +272,8 @@
ДокументОбъект = ДесериализоватьОбъектИзДвоичныхДанных(ДанныеДокумента); // ДокументОбъект.АктОбУничтоженииПерсональныхДанных
Если ПроверитьАктуальностьКатегорийДанных Тогда
Если ПроверитьАктуальностьКатегорийДанных
И Не ЗащитаПерсональныхДанных.ЭтоОбъектСУничтоженнымиПерсональнымиДанными(ДокументОбъект.Субъект) Тогда
ДокументОбъект.ДополнительныеСвойства.Вставить("ПроверитьАктуальностьКатегорийДанных");
КонецЕсли;
@@ -14,9 +14,6 @@
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);
Если ДанныеЗаполнения.Свойство("ЗаполнитьКатегорииДанных") Тогда
ЗаполнитьТабличныеЧасти();
КонецЕсли;
КонецЕсли;
ЗаполнитьДанныеСубъекта();
@@ -50,10 +47,6 @@
ЗаполнитьДанныеОрганизации();
КонецЕсли;
Если ЗначениеЗаполнено(Субъект) Тогда
ЗащитаПерсональныхДанных.ОбновитьСрокХраненияПерсональныхДанныхСубъекта(Субъект);
КонецЕсли;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
@@ -217,6 +210,7 @@
НоваяСтрока.Категория = ЭлементМассива.КатегорияДанных;
ЗаполнитьЗначенияСвойств(НоваяСтрока, ЭлементМассива);
КонецЦикла;
АктуальныеКатегории.Свернуть("Субъект,ИмяОбъекта,Категория");
АктуальныеОбъекты = Документы.АктОбУничтоженииПерсональныхДанных.ПодготовитьТаблицуОбъектов(КатегорииДанныхСубъекта);
@@ -4069,6 +4069,19 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>УчетнаяЗаписьДоИзменения</name>
<id>30</id>
<valueType>
<types>CatalogRef.УчетныеЗаписиЭлектроннойПочты</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>Отправить</name>
<title>
@@ -616,7 +616,8 @@
Процедура ПредставлениеОтправителяОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если Объект.УчетнаяЗапись <> ВыбранноеЗначение Тогда
ИзменитьПодпись(Объект.УчетнаяЗапись, ВыбранноеЗначение);
УчетнаяЗаписьДоИзменения = Объект.УчетнаяЗапись;
Объект.УчетнаяЗапись = ВыбранноеЗначение;
ЭлементСписка = Элемент.СписокВыбора.НайтиПоЗначению(ВыбранноеЗначение);
Если ЭлементСписка <> Неопределено Тогда
@@ -624,6 +625,8 @@
Объект.ОтправительПредставление = ЭлементСписка.Представление;
КонецЕсли;
Модифицированность = Истина;
ПодключитьОбработчикОжидания("ПослеИзмененияОтправителя", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
@@ -2901,6 +2904,13 @@
КонецПроцедуры
&НаКлиенте
Процедура ПослеИзмененияОтправителя()
ИзменитьПодпись(УчетнаяЗаписьДоИзменения, Объект.УчетнаяЗапись);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВопросаПриЗакрытии(Результат, ДополнительныеПараметры) Экспорт
@@ -632,6 +632,7 @@
ИспользоватьСтандартныйМакетДоступность = Ложь;
УдалитьИзмененныйМакетДоступность = Ложь;
УдалитьМакетВидимость = Ложь;
ДоступноОтображениеВСписке = Ложь;
Для Каждого ВыделеннаяСтрока Из Элементы.Макеты.ВыделенныеСтроки Цикл
ТекущийМакет = Элементы.Макеты.ДанныеСтроки(ВыделеннаяСтрока);
@@ -639,6 +640,16 @@
ИспользоватьСтандартныйМакетДоступность = ТекущийМакетВыбран И ТекущийМакет.Изменен И ТекущийМакет.ИспользуетсяИзмененный И Не ЗначениеЗаполнено(ТекущийМакет.Ссылка) Или ВыбраноНесколькоМакетов И ИспользоватьСтандартныйМакетДоступность;
УдалитьИзмененныйМакетДоступность = ТекущийМакетВыбран И ТекущийМакет.Изменен И Не ЗначениеЗаполнено(ТекущийМакет.Ссылка) Или ВыбраноНесколькоМакетов И УдалитьИзмененныйМакетДоступность;
УдалитьМакетВидимость = ТекущийМакетВыбран И ЗначениеЗаполнено(ТекущийМакет.Ссылка) Или ВыбраноНесколькоМакетов И УдалитьМакетВидимость;
ИсточникиДанных = СтрРазделить(ТекущийМакет.ИсточникиДанных, ",", Ложь);
Для Каждого ИсточникДанных Из ИсточникиДанных Цикл
Если СтрНачинаетсяС(ИсточникДанных, "Обработка")
Или СтрНачинаетсяС(ИсточникДанных, "Отчет")
Или ИсточникДанных = "ОбщийМакет" Тогда
Продолжить;
КонецЕсли;
ДоступноОтображениеВСписке = Истина;
КонецЦикла;
КонецЦикла;
Элементы.МакетыПечатныхФормИспользоватьИзмененныйМакет.Доступность = ИспользоватьИзмененныйМакетДоступность;
@@ -652,6 +663,7 @@
Элементы.МакетыДобавитьМакет.Доступность = ТекущийМакетВыбран И ТекущийМакет.ДоступноСоздание;
Элементы.МакетыДобавитьМакетOfficeOpenXML.Доступность = ТекущийМакетВыбран И ТекущийМакет.ДоступноСоздание;
Элементы.МакетыИзменитьМакет.Доступность = ТекущийМакетВыбран И Не ТекущийМакет.ЭтоГруппа;
Элементы.ФормаПоказатьВСписке.Доступность = ДоступноОтображениеВСписке;
КонецПроцедуры
@@ -941,75 +953,18 @@
&НаСервере
Процедура ЗаполнитьТаблицуМакетовПечатныхФорм(Ветка)
СписокМакетов = Новый ТаблицаЗначений();
СписокМакетов.Колонки.Добавить("ИсточникМакета");
СписокМакетов.Колонки.Добавить("ИсточникиДанных");
СписокМакетов.Колонки.Добавить("Идентификатор");
СписокМакетов.Колонки.Добавить("Представление");
СписокМакетов.Колонки.Добавить("Владелец");
СписокМакетов.Колонки.Добавить("ТипМакета");
СписокМакетов.Колонки.Добавить("Картинка");
СписокМакетов.Колонки.Добавить("КартинкаГруппы");
СписокМакетов.Колонки.Добавить("СтрокаПоиска");
СписокМакетов.Колонки.Добавить("ДоступныеЯзыки");
СписокМакетов.Колонки.Добавить("Изменен");
СписокМакетов.Колонки.Добавить("ИспользуетсяИзмененный");
СписокМакетов.Колонки.Добавить("КартинкаИспользования");
СписокМакетов.Колонки.Добавить("ДоступенПеревод");
СписокМакетов.Колонки.Добавить("Ссылка");
СписокМакетов.Колонки.Добавить("Используется");
СписокМакетов.Колонки.Добавить("ДоступнаНастройкаВидимости");
СписокМакетов.Колонки.Добавить("Поставляемый");
СписокМакетов.Колонки.Добавить("ЭтоПечатнаяФорма");
СписокМакетов.Колонки.Добавить("ДоступноСоздание");
СписокМакетов.Колонки.Добавить("ИмяОбъектаМетаданныхМакета");
СписокМакетов.Индексы.Добавить("Владелец");
ИзмененныеМакеты = РегистрыСведений.ПользовательскиеМакетыПечати.ИзмененныеМакеты();
ДоступныеДляПереводаМакеты = Новый Соответствие;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда
МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность");
ДоступныеДляПереводаМакеты = МодульУправлениеПечатьюМультиязычность.ДоступныеДляПереводаМакеты();
КонецЕсли;
ОбъектыСМакетами = Новый Соответствие;
Для Каждого ОписаниеМакета Из УправлениеПечатью.МакетыПечатныхФорм(Истина) Цикл
Владелец = ОписаниеМакета.Значение;
ИмяВладельца = ?(Метаданные.ОбщиеМакеты = Владелец, "ОбщийМакет", Владелец.ПолноеИмя());
ОбъектМетаданных = ОписаниеМакета.Ключ;
ИмяОбъектаМетаданныхМакета = ИмяВладельца + "." + ОбъектМетаданных.Имя;
ПредставлениеМакета = ОбъектМетаданных.Представление();
ТипМакета = РегистрыСведений.ПользовательскиеМакетыПечати.ТипМакета(ОбъектМетаданных.Имя, ИмяВладельца);
Макет = СписокМакетов.Добавить();
Макет.ИсточникМакета = ИмяВладельца;
Макет.ИсточникиДанных = ИмяВладельца;
Макет.Идентификатор = ИмяОбъектаМетаданныхМакета;
Макет.Владелец = ?(Владелец = Метаданные.ОбщиеМакеты, Неопределено, Владелец);
Макет.Представление = ПредставлениеМакета;
Макет.ТипМакета = ТипМакета;
Макет.Картинка = РегистрыСведений.ПользовательскиеМакетыПечати.ИндексКартинки(ТипМакета);
Макет.КартинкаГруппы = РегистрыСведений.ПользовательскиеМакетыПечати.КартинкаМакета(ТипМакета);
Макет.Изменен = ИзмененныеМакеты[ИмяОбъектаМетаданныхМакета] <> Неопределено;
Макет.ИспользуетсяИзмененный = Макет.Изменен И ИзмененныеМакеты[ИмяОбъектаМетаданныхМакета];
Макет.ДоступенПеревод = ДоступныеДляПереводаМакеты[ОбъектМетаданных] = Истина;
Макет.Используется = Истина;
Макет.Поставляемый = Истина;
ОбъектыСМакетами.Вставить(ОписаниеМакета.Значение, Истина);
КонецЦикла;
СоответствиеВладельцевМакетов = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(СписокМакетов.ВыгрузитьКолонку("Владелец"), Ложь);
Для Каждого Макет Из СписокМакетов Цикл
Если Макет.Владелец <> Неопределено И СоответствиеВладельцевМакетов[Макет.Владелец.ПолноеИмя()] <> Неопределено Тогда
Макет.Владелец = СоответствиеВладельцевМакетов[Макет.Владелец.ПолноеИмя()];
Макет.ЭтоПечатнаяФорма = УправлениеПечатью.ЭтоПечатнаяФорма(Макет.Идентификатор, Макет.Владелец);
Макет.ДоступенПеревод = Макет.ДоступенПеревод Или Макет.ЭтоПечатнаяФорма;
КонецЕсли;
ОбъектыМетаданных = Новый Массив;
Для Каждого Объект Из ОбъектыСМакетами Цикл
ОбъектыМетаданных.Добавить(Объект.Ключ);
КонецЦикла;
СоответствиеВладельцевМакетов = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ОбъектыМетаданных, Ложь);
ВладельцыМакетов = Новый СписокЗначений();
Для Каждого Источник Из СоответствиеВладельцевМакетов Цикл
Если Не ЗначениеЗаполнено(Источник.Значение) Тогда
@@ -1022,13 +977,25 @@
ЗначенияПустойСсылки = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(ИдентификаторыОбъектовМетаданных, "ЗначениеПустойСсылки");
ВладельцыМакетов.СортироватьПоПредставлению();
ВладельцыМакетов.Добавить(Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(), НСтр("ru = 'Прочие'"));
ГруппыМакетов = Новый Соответствие();
ГруппаПрочие = Ветка.ПолучитьЭлементы().Добавить();
ГруппаПрочие.Представление = НСтр("ru = 'Прочие'");
ГруппаПрочие.КартинкаГруппы = БиблиотекаКартинок.Перечисление;
ГруппаПрочие.Идентификатор = "ОбщиеМакеты";
ГруппаПрочие.КартинкаИспользования = -1;
ГруппаПрочие.ЭтоГруппа = Истина;
ГруппаПрочие.Используется = Истина;
ГруппаПрочие.Владелец = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
ГруппаПрочие.СтрокаПоиска = НРег(ГруппаПрочие.Представление);
ГруппаПрочие.ДоступноСоздание = Ложь;
ГруппыМакетов.Вставить(Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(), ГруппаПрочие);
ДоступноДобавлениеМакетов = ПравоДоступа("Добавление", Метаданные.Справочники.МакетыПечатныхФорм);
ГруппыМакетов = Новый Соответствие();
Для Каждого Владелец Из ВладельцыМакетов Цикл
ГруппаМакетов = Ветка.ПолучитьЭлементы().Добавить();
ГруппаМакетов = ГруппаПрочие.ПолучитьЭлементы().Добавить();
ГруппаМакетов.Представление = Владелец.Представление;
ГруппаМакетов.КартинкаГруппы = Новый Картинка;
ГруппаМакетов.Идентификатор = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Владелец.Значение, "ПолноеИмя");
@@ -1037,31 +1004,13 @@
ГруппаМакетов.Используется = Истина;
ГруппаМакетов.Владелец = Владелец.Значение;
ГруппаМакетов.СтрокаПоиска = НРег(ГруппаМакетов.Представление);
ГруппаМакетов.ДоступноСоздание = ДоступноДобавлениеМакетов И ЗначенияПустойСсылки[Владелец.Значение] <> Неопределено;
ГруппаМакетов.ДоступноСоздание = Ложь;
ГруппаМакетов.ПолучитьЭлементы().Добавить();
ГруппыМакетов.Вставить(Владелец.Значение, ГруппаМакетов);
КонецЦикла;
СписокМакетов.Сортировать("Владелец, Представление");
ГруппаМакетов = Неопределено;
Для Каждого ОписаниеМакета Из СписокМакетов Цикл
Если Не ЗначениеЗаполнено(ОписаниеМакета.Владелец)
Или ГруппыМакетов[ОписаниеМакета.Владелец] = Неопределено Тогда
ОписаниеМакета.Владелец = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
КонецЕсли;
ГруппаМакетов = ГруппыМакетов[ОписаниеМакета.Владелец];
Макет = ГруппаМакетов.ПолучитьЭлементы().Добавить();
ЗаполнитьЗначенияСвойств(Макет, ОписаниеМакета);
Макет.ИмяОбъектаМетаданныхМакета = Макет.Идентификатор;
Макет.ДоступныеЯзыки = РегистрыСведений.ПользовательскиеМакетыПечати.ДоступныеЯзыкиМакета(Макет.Идентификатор);
Макет.КартинкаИспользования = -1;
Если Макет.Изменен Тогда
Макет.КартинкаИспользования = Число(Макет.Изменен) + Число(Макет.ИспользуетсяИзмененный);
КонецЕсли;
Макет.СтрокаПоиска = НРег(Макет.Представление + " " + Макет.ТипМакета);
Макет.ДоступноСоздание = Макет.ПолучитьРодителя().ДоступноСоздание;
КонецЦикла;
ВывестиМакеты(ГруппаПрочие);
КонецПроцедуры
@@ -1139,6 +1088,8 @@
И Не ОбщегоНазначения.ЭтоПланВидовРасчета(ОбъектМетаданных)
И Не ОбщегоНазначения.ЭтоБизнесПроцесс(ОбъектМетаданных)
И Не ОбщегоНазначения.ЭтоЗадача(ОбъектМетаданных)
И Не Метаданные.Обработки.Содержит(ОбъектМетаданных)
И Не Метаданные.Отчеты.Содержит(ОбъектМетаданных)
И Не ЭтоПодсистема(ОбъектМетаданных) Тогда
Возврат Ложь;
КонецЕсли;
@@ -1215,7 +1166,7 @@
НайденныйЭлемент = ОбъектыСКомандамиПечати.НайтиПоЗначению(ИмяОбъектаМетаданных);
Если НайденныйЭлемент = Неопределено Тогда
Возврат Новый ТаблицаЗначений;
НайденныйЭлемент = ОбъектыСКомандамиПечати.Добавить(ИмяОбъектаМетаданных);
КонецЕсли;
Если ЗначениеЗаполнено(НайденныйЭлемент.Представление) Тогда
@@ -215,7 +215,12 @@
//
Функция МакетыОбъекта(ИмяОбъекта) Экспорт
Если ИмяОбъекта = "ОбщиеМакеты" Тогда
ИдентификаторОбъектаМетаданных = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
Иначе
ИдентификаторОбъектаМетаданных = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ИмяОбъекта);
КонецЕсли;
Возврат МакетыОбъектов(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ИдентификаторОбъектаМетаданных));
КонецФункции
@@ -261,7 +266,12 @@
Процедура ДобавитьМакетыИзМетаданных(СписокМакетов, ИдентификаторыОбъектовМетаданных)
Если ИдентификаторыОбъектовМетаданных[0] = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка() Тогда
ОбъектыМетаданныхПоИдентификаторам = Новый Соответствие;
ОбъектыМетаданныхПоИдентификаторам.Вставить(Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(), Метаданные.ОбщиеМакеты);
Иначе
ОбъектыМетаданныхПоИдентификаторам = ОбщегоНазначения.ОбъектыМетаданныхПоИдентификаторам(ИдентификаторыОбъектовМетаданных);
КонецЕсли;
ОбъектыМетаданных = Новый Массив;
Для Каждого ОписаниеОбъектаМетаданных Из ОбъектыМетаданныхПоИдентификаторам Цикл
@@ -280,13 +290,17 @@
Для Каждого ОписаниеОбъектаМетаданных Из ОбъектыМетаданныхПоИдентификаторам Цикл
ОбъектМетаданныхВладелецМакета = ОписаниеОбъектаМетаданных.Значение;
ПодключенныеМакеты = ПодключенныеМакеты(ОписаниеОбъектаМетаданных.Ключ);
Владелец = ?(Метаданные.ОбщиеМакеты = ОбъектМетаданныхВладелецМакета,
Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(), ОписаниеОбъектаМетаданных.Ключ);
КоллекцииМакетов = Новый Массив;
Если Метаданные.ОбщиеМакеты = ОбъектМетаданныхВладелецМакета Тогда
КоллекцииМакетов.Добавить(Метаданные.ОбщиеМакеты);
Иначе
КоллекцииМакетов.Добавить(ОбъектМетаданныхВладелецМакета.Макеты);
ПодключенныеМакеты = ПодключенныеМакеты(ОписаниеОбъектаМетаданных.Ключ);
КоллекцииМакетов.Добавить(ПодключенныеМакеты);
КонецЕсли;
Для Каждого КоллекцияМакетов Из КоллекцииМакетов Цикл
Для Каждого Элемент Из КоллекцияМакетов Цикл
@@ -339,7 +353,8 @@
Макет.КартинкаИспользования = Число(Макет.Изменен) + Число(Макет.ИспользуетсяИзмененный);
КонецЕсли;
Макет.СтрокаПоиска = НРег(Макет.Представление + " " + Макет.ТипМакета);
Макет.ДоступноСоздание = ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(ОбъектМетаданныхВладелецМакета);
Макет.ДоступноСоздание = ОбъектМетаданныхВладелецМакета <> Метаданные.ОбщиеМакеты
И ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(ОбъектМетаданныхВладелецМакета);
КонецЦикла;
КонецЦикла;
@@ -354,6 +369,10 @@
Результат.Колонки.Добавить("ИсточникМакета");
Результат.Колонки.Добавить("ИсточникиДанных");
Если ТипЗнч(ИдентификаторОбъектаМетаданных) <> Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") Тогда
Возврат Результат;
КонецЕсли;
ПодключенныеОтчетыИОбработки = ПодключаемыеКоманды.ПодключенныеОбъекты(ИдентификаторОбъектаМетаданных);
Для Каждого ПодключенныйОбъект Из ПодключенныеОтчетыИОбработки Цикл
ИсточникиДанных = Новый Массив;
@@ -23,7 +23,7 @@
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ИСТИНА
|ИЗ
| РегистрСведений.СубъектыДляРасчетаСроковХранения КАК СубъектыДляРасчетаСроковХранения";
@@ -1842,93 +1842,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.АдресныеОбъекты.Command.ОчиститьАдресныйКлассификатор</name>
<right>
@@ -2349,6 +2262,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>DataProcessor.ОценкаПроизводительности.Command.ИмпортЗамеровПроизводительности</name>
<right>
@@ -915,33 +915,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>
@@ -1265,6 +1238,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>DataProcessor.РасширенныйВводКонтактнойИнформации</name>
<right>
@@ -742,33 +742,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>
@@ -1026,6 +999,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>DataProcessor.РасширенныйВводКонтактнойИнформации</name>
<right>
@@ -205,33 +205,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.EnterpriseDataExchange_1_0_1_1.Operation.GetDataPart</name>
<right>
@@ -285,6 +258,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_2_0_1_6.Operation.DownloadData</name>
<right>
@@ -49,33 +49,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>
@@ -115,6 +88,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>CommonCommand.НастройкаКолонтитулов</name>
<right>
@@ -569,33 +569,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>
@@ -797,6 +770,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>DocumentJournal.Взаимодействия.Command.ПечатьЭлектронногоПисьма</name>
<right>
@@ -72,33 +72,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>
@@ -159,6 +132,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>CommonForm.НастройкаКолонтитулов</name>
<right>
@@ -165,6 +165,13 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.ОтправитьSMS</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -192,13 +199,6 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.ОтправитьSMS</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ИспользоватьОтправкуSMSВШаблонахСообщений</name>
<right>
@@ -10,6 +10,13 @@
<value>true</value>
</right>
</object>
<object>
<name>Catalog.Файлы.Command.Файлы</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -37,13 +44,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Catalog.Файлы.Command.Файлы</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ПапкиФайлов</name>
<right>
@@ -10,6 +10,13 @@
<value>true</value>
</right>
</object>
<object>
<name>Catalog.Файлы.Command.Файлы</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -37,13 +44,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Catalog.Файлы.Command.Файлы</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ПапкиФайлов</name>
<right>
@@ -10,33 +10,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>
@@ -76,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.ГруппыПользователей.Command.ГруппыПользователя</name>
<right>
@@ -87,6 +87,24 @@
<value>true</value>
</right>
</object>
<object>
<name>Report.ЗависшиеЗадачи</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ИсполнителиЗадач.Command.РолиИИсполнителиЗадач</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -114,24 +132,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Report.ЗависшиеЗадачи</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<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,33 +3,6 @@
<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>
@@ -104,6 +77,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>CommonForm.ОтправкаСообщения</name>
<right>
@@ -10,6 +10,13 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ПродлениеСрокаДействияЭлектронныхПодписей</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -37,11 +44,4 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonForm.ПродлениеСрокаДействияЭлектронныхПодписей</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -171,6 +171,25 @@
<value>true</value>
</right>
</object>
<object>
<name>Constant.КоличествоЗамеровВПакетеЭкспорта</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
<right>
<name>Edit</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -198,25 +217,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Constant.КоличествоЗамеровВПакетеЭкспорта</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
<right>
<name>Edit</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ОценкаПроизводительности.Command.ИмпортЗамеровПроизводительности</name>
<right>
@@ -2651,45 +2651,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>
@@ -2979,18 +2940,10 @@
</object>
<object>
<name>Constant.ИзвлекатьТекстыФайловНаСервере</name>
<right>
<name>Read</name>
<value>false</value>
</right>
<right>
<name>Update</name>
<value>false</value>
</right>
<right>
<name>View</name>
<value>false</value>
</right>
<right>
<name>Edit</name>
<value>false</value>
@@ -3271,6 +3224,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>DataProcessor.ОценкаПроизводительности.Command.ИмпортЗамеровПроизводительности</name>
<right>
@@ -1291,33 +1291,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>
@@ -1599,6 +1572,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>InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам</name>
<right>
@@ -3,6 +3,13 @@
<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>
@@ -30,11 +37,4 @@
<value>true</value>
</right>
</object>
<object>
<name>WebService.InterfaceVersion.Operation.GetVersions</name>
<right>
<name>Use</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -25,6 +25,21 @@
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ПользовательскиеНастройкиОтчетов</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>
@@ -52,21 +67,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ПользовательскиеНастройкиОтчетов</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>CommonForm.НастройкаКолонтитулов</name>
<right>
@@ -82,6 +82,13 @@
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.ЗадачиПоБизнесПроцессу</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -109,13 +116,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>
@@ -3,33 +3,6 @@
<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>
@@ -58,6 +31,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>CommonForm.ОтправкаСообщения</name>
<right>
@@ -1,5 +1,5 @@
<?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" beginTime="00:00:00" endTime="00:00:00" completionTime="00:00:00" weeksPeriod="1">
<schedule:Schedule xmlns:schedule="http://g5.1c.ru/v8/dt/schedule" beginDate="0001-01-01" endDate="0001-01-01" daysRepeatPeriod="1" beginTime="00:00:00" endTime="00:00:00" completionTime="00:00:00" weeksPeriod="1">
<weekDays>Mon</weekDays>
<weekDays>Tue</weekDays>
<weekDays>Wed</weekDays>