This commit is contained in:
Компания 1С committed 2018-05-31 11:45:00 +03:00
1 parent dc5cb24d47
commit 1d05e739d0
17 files changed
+796 -440

No files matched your search

@@ -2862,11 +2862,8 @@
// Перебор вложенных подсистем родителя.
Для Каждого ПодсистемаМетаданные Из ПодсистемаРодитель.Подсистемы Цикл
Если Не ПодсистемаМетаданные.ВключатьВКомандныйИнтерфейс Тогда
Продолжить;
КонецЕсли;
// Состав подсистемы
Если ПодсистемаМетаданные.ВключатьВКомандныйИнтерфейс Тогда
Для Каждого ОтчетМетаданные Из ПодсистемаМетаданные.Состав Цикл
Если Не Метаданные.Отчеты.Содержит(ОтчетМетаданные) Тогда
Продолжить;
@@ -2879,6 +2876,7 @@
СтрокаТаблицы.ПодсистемаПолноеИмя = ПодсистемаМетаданные.ПолноеИмя();
КонецЦикла;
КонецЕсли;
РазмещениеОтчетовВПодсистемах(Результат, ПодсистемаМетаданные);
КонецЦикла;
@@ -303,7 +303,7 @@
// См. ЗащитаПерсональныхДанныхПереопределяемый.ЗаполнитьСведенияОПерсональныхДанных.
//
// Параметры:
// Субъекты - Массив, ОпределяемыйТип.СубъектПерсональныхДанных - ссылка или массив ссылок на субъекты.
// Субъекты - Массив, ОпределяемыйТип.СубъектПерсональныхДанных - ссылка или массив ссылок одного типа на субъекты.
// СообщатьОбИсключениях - Булево - признак необходимости информирования пользователя о добавленных исключениях.
//
Процедура СкрытьПерсональныеДанныеСубъектов(Знач Субъекты, СообщатьОбИсключениях = Ложь) Экспорт
@@ -340,7 +340,6 @@
ПараметрыОтбора = ПараметрыОтбораСкрываемыхДанных();
ПараметрыОтбора.Субъекты = ОтбираемыеСубъекты;
ПараметрыОтбора.ТипСубъектов = ТипСубъектов;
ОбрабатываемыеМетаданные = ОбрабатываемыеМетаданные();
@@ -556,18 +555,34 @@
ДнейДоСкрытия = Константы.ДнейДоСкрытияПерсональныхДанныхСубъектов.Получить();
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СубъектыДляСкрытияПДн.Субъект КАК Субъект
Запрос.Текст = ТекстЗапросаСубъектыДляСкрытияПерсональныхДанных(Истина) + "
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Субъекты.Субъект КАК Субъект
|ИЗ
| ВТСубъектыДляСкрытия КАК Субъекты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СубъектыДляСкрытияПерсональныхДанных КАК СубъектыДляСкрытияПДн
| ПО СубъектыДляСкрытияПДн.Субъект = Субъекты.Субъект
|ГДЕ
| Субъекты.Субъект В(&Субъекты)
| И СубъектыДляСкрытияПДн.Субъект ЕСТЬ NULL
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СубъектыДляСкрытияПДн.Субъект
|ИЗ
| РегистрСведений.СубъектыДляСкрытияПерсональныхДанных КАК СубъектыДляСкрытияПДн
|ГДЕ
| СубъектыДляСкрытияПДн.Субъект В(&Субъекты)
| И СубъектыДляСкрытияПДн.ДатаСкрытия >= &ТекущаяДата
| И СубъектыДляСкрытияПДн.ДатаСкрытия < &РасчетнаяДата
| И СубъектыДляСкрытияПДн.ДатаСкрытия > &ПустаяДата
| И СубъектыДляСкрытияПДн.ДатаСкрытия <= &РасчетнаяДата
| И СубъектыДляСкрытияПДн.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСубъектовДляСкрытия.ГотовКСкрытию)";
Запрос.УстановитьПараметр("Субъекты", Строки.ПолучитьКлючи());
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата);
Запрос.УстановитьПараметр("ПустаяДата", '00010101');
Запрос.УстановитьПараметр("РасчетнаяДата", ТекущаяДата + ДнейДоСкрытия * 86400);
Выборка = Запрос.Выполнить().Выбрать();
@@ -726,13 +741,16 @@
Возврат Ложь;
КонецЕсли;
Если Объект.ДополнительныеСвойства.Свойство("ОтключитьМеханизмРегистрацииОбъектов") Тогда
Возврат Истина;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда
МодульОбменДаннымиПовтИсп = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиПовтИсп");
Если МодульОбменДаннымиПовтИсп.ЭтоПланОбменаРаспределеннойИнформационнойБазы(ИмяПланаОбмена) Тогда
Возврат Ложь;
КонецЕсли;
Если ЗащитаПерсональныхДанныхПовтИсп.ЭтоПланОбменаРаспределеннойИнформационнойБазы(ИмяПланаОбмена) Тогда
Возврат Ложь;
ИначеЕсли Объект.ДополнительныеСвойства.Свойство("СкрытиеКонфиденциальнойИнформации") Тогда
КонецЕсли;
Если Объект.ДополнительныеСвойства.Свойство("СкрытиеКонфиденциальнойИнформации") Тогда
Возврат Истина;
КонецЕсли;
@@ -783,7 +801,7 @@
КонецЕсли;
Возврат Истина;
Возврат Ложь;
КонецФункции
@@ -800,31 +818,8 @@
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ПолучениеСубъектовДляСкрытияПерсональныхДанных);
МетаданныеСправочники = Метаданные.Справочники;
ТипыСубъектов = Метаданные.ОпределяемыеТипы.СубъектПерсональныхДанных.Тип.Типы();
Запрос = Новый Запрос();
Для Каждого ТипСубъекта Из ТипыСубъектов Цикл
Если ТипСубъекта = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") Тогда
Продолжить;
КонецЕсли;
МетаданныеСправочника = Метаданные.НайтиПоТипу(ТипСубъекта);
Запрос.Текст = Запрос.Текст + ?(ПустаяСтрока(Запрос.Текст),"", " ОБЪЕДИНИТЬ ВСЕ") + "
|
|ВЫБРАТЬ
| СправочникСубъекта.Ссылка КАК Субъект
|ИЗ
| Справочник." + МетаданныеСправочника.Имя + " КАК СправочникСубъекта
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СубъектыДляСкрытияПерсональныхДанных КАК СубъектыДляСкрытияПерсональныхДанных
| ПО СправочникСубъекта.Ссылка = СубъектыДляСкрытияПерсональныхДанных.Субъект
|ГДЕ
| СубъектыДляСкрытияПерсональныхДанных.Субъект ЕСТЬ NULL";
КонецЦикла;
Запрос.Текст = ТекстЗапросаСубъектыДляСкрытияПерсональныхДанных();
Субъекты = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Субъект");
ЗаписатьНастройкиСкрытияСубъектов(Субъекты);
@@ -841,21 +836,69 @@
Запрос.УстановитьПараметр("ТекущаяДата", НачалоДня(ТекущаяДатаСеанса()));
Запрос.Текст = "ВЫБРАТЬ
| СубъектыДляСкрытия.Субъект КАК Субъект
| СубъектыДляСкрытия.Субъект КАК Субъект,
| ТИПЗНАЧЕНИЯ(СубъектыДляСкрытия.Субъект) КАК ТипСубъекта
|ИЗ
| РегистрСведений.СубъектыДляСкрытияПерсональныхДанных КАК СубъектыДляСкрытия
|ГДЕ
| СубъектыДляСкрытия.ДатаСкрытия <= &ТекущаяДата
| И СубъектыДляСкрытия.ДатаСкрытия > &ПустаяДата
| И СубъектыДляСкрытия.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСубъектовДляСкрытия.ГотовКСкрытию)";
| И СубъектыДляСкрытия.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСубъектовДляСкрытия.ГотовКСкрытию)
|ИТОГИ ПО
| ТипСубъекта";
ВыборкаТипов = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаТипов.Следующий() Цикл
Субъекты = Новый Массив;
ВыборкаСубъектов = ВыборкаТипов.Выбрать();
Пока ВыборкаСубъектов.Следующий() Цикл
Субъекты.Добавить(ВыборкаСубъектов.Субъект);
КонецЦикла;
Субъекты = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Субъект");
СкрытьПерсональныеДанныеСубъектов(Субъекты);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
Функция ТекстЗапросаСубъектыДляСкрытияПерсональныхДанных(ВоВременнуюТаблицу = Ложь)
ТекстЗапроса = "";
ОсновнаяТаблица = Истина;
МетаданныеПоТипамСубъекта = ЗащитаПерсональныхДанныхПовтИсп.МетаданныеПоТипамСубъекта();
Для Каждого ТипСубъектаИМетаданные Из МетаданныеПоТипамСубъекта Цикл
МетаданныеСубъекта = ТипСубъектаИМетаданные.Значение;
ТекстЗапроса = ТекстЗапроса + ?(ПустаяСтрока(ТекстЗапроса),"", " ОБЪЕДИНИТЬ ВСЕ") + "
|
|ВЫБРАТЬ
| СправочникСубъекта.Ссылка КАК Субъект
|[ПомещениеВоВременнуюТаблицу]
|ИЗ
| Справочник." + МетаданныеСубъекта.Имя + " КАК СправочникСубъекта
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СубъектыДляСкрытияПерсональныхДанных КАК СубъектыДляСкрытияПерсональныхДанных
| ПО СправочникСубъекта.Ссылка = СубъектыДляСкрытияПерсональныхДанных.Субъект
|ГДЕ
| СубъектыДляСкрытияПерсональныхДанных.Субъект ЕСТЬ NULL";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ПомещениеВоВременнуюТаблицу]",
?(ВоВременнуюТаблицу И ОсновнаяТаблица, "ПОМЕСТИТЬ ВТСубъектыДляСкрытия", ""));
ОсновнаяТаблица = Ложь;
КонецЦикла;
Возврат ТекстЗапроса;
КонецФункции
Процедура ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
// ОбменДанными.Загрузка проверяется внутри вызова.
@@ -1100,7 +1143,7 @@
Функция ПараметрыОтбораСкрываемыхДанных() Экспорт
Возврат Новый Структура("ОсновноеПолеОтбора,Субъекты,ТипСубъектов");
Возврат Новый Структура("ОсновноеПолеОтбора,Субъекты");
КонецФункции
@@ -1210,7 +1253,7 @@
Если Реквизит.Тип.СодержитТип(Тип) Тогда
Если Полные Тогда
ИменаРеквизитов.Добавить(СтрШаблон("%1.%2", ИмяТабличнойЧасти, Реквизит.Имя));
ИменаРеквизитов.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1.%2", ИмяТабличнойЧасти, Реквизит.Имя));
Иначе
ИменаРеквизитов.Добавить(Реквизит.Имя);
КонецЕсли;
@@ -1262,7 +1305,8 @@
Субъекты = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Субъекты);
КонецЕсли;
Если Не Метаданные.ОпределяемыеТипы.СубъектПерсональныхДанных.Тип.СодержитТип(ТипЗнч(Субъекты[0])) Тогда
ТипыСубъектов = ЗащитаПерсональныхДанныхПовтИсп.ТипыСубъектов();
Если ТипыСубъектов.Найти(ТипЗнч(Субъекты[0])) = Неопределено Тогда
Возврат ЕстьСкрытые;
КонецЕсли;
@@ -18,6 +18,7 @@
КонецФункции
// Возвращает полные имена объектов метаданных содержащих персональные данные.
//
// Параметры:
// Нет
//
@@ -26,7 +27,7 @@
//
Функция ИменаИсточниковПерсональныхДанных() Экспорт
ТаблицаСведений = ЗащитаПерсональныхДанных.СведенияОПерсональныхДанных();
ТаблицаСведений = ЗащитаПерсональныхДанныхПовтИсп.СведенияОПерсональныхДанных();
ТаблицаСведений.Сортировать("Объект");
ИменаИсточников = ТаблицаСведений.ВыгрузитьКолонку("Объект");
@@ -37,6 +38,7 @@
КонецФункции
// Возвращает полные имена реквизитов объекта метаданных содержащего персональные данные по его полному имени.
//
// Параметры:
// ИмяИсточника - Строка - полное имя источника метаданных. Например: "Справочник.ФизическиеЛица".
//
@@ -45,83 +47,194 @@
//
Функция ИменаРеквизитовИсточникаСодержащихСубъект(ИмяИсточника) Экспорт
ИменаРеквизитов = Новый Массив;
ИменаРеквизитовСодержащихСубъект = Новый Массив;
МетаданныеПоТипамСубъекта = ЗащитаПерсональныхДанныхПовтИсп.МетаданныеПоТипамСубъекта();
МетаданныеИсточника = Метаданные.НайтиПоПолномуИмени(ИмяИсточника);
ИсточникЭтоРегистр = ОбщегоНазначения.ЭтоРегистр(МетаданныеИсточника);
ТипыСсылкиИсточника = ?(ИсточникЭтоРегистр, Новый Массив, МетаданныеИсточника.СтандартныеРеквизиты.Ссылка.Тип.Типы());
ИсточникИмеетВладельца = ОбщегоНазначения.ЭтоСправочник(МетаданныеИсточника) И МетаданныеИсточника.Владельцы.Количество() > 0;
ПоляСведений = ИменаПолейСведенийОПерсональныхДанныхОбъекта(ИмяИсточника);
ПоляДоступа = ПоляСведений.ПоляДоступа;
ПоляРегистрации = ПоляСведений.ПоляРегистрации;
ИменаТЧСодержащихСведения = Новый Массив;
Если Не ИсточникЭтоРегистр Тогда
ИменаТабличныхЧастей = Новый Массив;
ТабличныеЧасти = МетаданныеИсточника.ТабличныеЧасти;
Для Каждого ТабличнаяЧасть Из ТабличныеЧасти Цикл
ИменаТабличныхЧастей.Добавить(ТабличнаяЧасть.Имя);
КонецЦикла;
ИменаТЧСодержащихСведения = ИменаТЧОбъектаСодержащихСведенияОПерсональныхДанных(ИменаТабличныхЧастей, ПоляДоступа);
КонецЕсли;
Для Каждого ТипСубъектаИМетаданные Из МетаданныеПоТипамСубъекта Цикл
ТипСубъекта = ТипСубъектаИМетаданные.Ключ;
МетаданныеСубъекта = ТипСубъектаИМетаданные.Значение;
ИменаРеквизитовИсточника = Новый Массив;
ИменаРеквизитовТЧИсточника = Новый Соответствие;
Если ИсточникЭтоРегистр Тогда
ИменаИзмеренийТипа = ЗащитаПерсональныхДанных.ИменаИзмеренийРегистраПоТипу(МетаданныеИсточника, ТипСубъекта);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ИменаРеквизитовИсточника, ИменаИзмеренийТипа);
Иначе
Если ТипыСсылкиИсточника.Найти(ТипСубъекта) <> Неопределено Тогда
ИменаРеквизитовИсточника.Добавить("Ссылка");
Иначе
Если ИсточникИмеетВладельца Тогда
Если МетаданныеИсточника.Владельцы.Содержит(МетаданныеСубъекта) Тогда
ИменаРеквизитовИсточника.Добавить("Владелец");
КонецЕсли;
КонецЕсли;
Если ИменаРеквизитовИсточника.Количество() = 0 Тогда
ИменаРеквизитовТипа = ЗащитаПерсональныхДанных.ИменаРеквизитовПоТипу(МетаданныеИсточника, ТипСубъекта);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ИменаРеквизитовИсточника, ИменаРеквизитовТипа);
КонецЕсли;
КонецЕсли;
Для Каждого ИмяТабличнойЧасти Из ИменаТЧСодержащихСведения Цикл
ИменаРеквизитовТЧТипа = ЗащитаПерсональныхДанных.ИменаРеквизитовТЧОбъектаПоТипу(МетаданныеИсточника, ИмяТабличнойЧасти, ТипСубъекта, Истина);
Если ИменаРеквизитовТЧТипа.Количество() > 0 Тогда
ИменаРеквизитовТЧИсточника.Вставить(ИмяТабличнойЧасти, ИменаРеквизитовТЧТипа);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Для Каждого ИмяРеквизита Из ИменаРеквизитовИсточника Цикл
Если ПоляРегистрации.Найти(ИмяРеквизита) <> Неопределено Тогда
ИменаРеквизитовСодержащихСубъект.Добавить(ИмяРеквизита);
КонецЕсли;
КонецЦикла;
Для Каждого ТЧИРеквизиты Из ИменаРеквизитовТЧИсточника Цикл
ИмяТЧ = ТЧИРеквизиты.Ключ;
ИменаРеквизитовТЧ = ТЧИРеквизиты.Значение;
Для Каждого ИмяРеквизита Из ИменаРеквизитовТЧ Цикл
Если ПоляРегистрации.Найти(ИмяРеквизита) <> Неопределено Тогда
ИменаРеквизитовСодержащихСубъект.Добавить(ИмяРеквизита);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если ИменаРеквизитовСодержащихСубъект.Количество() > 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Новый ФиксированныйМассив(ИменаРеквизитовСодержащихСубъект);
КонецФункции
// Возвращает имена полей регистрации и полей доступа сведений о персональных данных объекта по его полному имени.
//
// Параметры:
// ИмяОбъекта - Строка - полное имя объекта метаданных. Например: "Справочник.ФизическиеЛица".
//
// Возвращаемое значение
// Структура - со свойствами:
/// ПоляРегистрации - Массив - массив строк. Например: "ФизическоеЛицо" или "ФизическиеЛица.ФизическоеЛицо".
/// ПоляДоступа - Массив - массив строк. Например: "ИНН" или "ФизическиеЛица.ИНН".
//
Функция ИменаПолейСведенийОПерсональныхДанныхОбъекта(ИмяОбъекта)
ИменаПолейРегистрации = Новый Массив;
ИменаПолейДоступа = Новый Массив;
ТаблицаСведений = ЗащитаПерсональныхДанныхПовтИсп.СведенияОПерсональныхДанных();
СтрокиСведений = ТаблицаСведений.НайтиСтроки(Новый Структура("Объект", ИмяОбъекта));
Для Каждого СтрокаСведений Из СтрокиСведений Цикл
ПоляДоступа = СтрРазделить(СтрокаСведений.ПоляДоступа, ",");
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ИменаПолейДоступа, ПоляДоступа, Истина);
ПоляРегистрации = СтрРазделить(СтрокаСведений.ПоляРегистрации, ",|");
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ИменаПолейРегистрации, ПоляРегистрации, Истина);
КонецЦикла;
Возврат Новый Структура("ПоляДоступа,ПоляРегистрации", ИменаПолейДоступа, ИменаПолейРегистрации);
КонецФункции
Функция ИменаТЧОбъектаСодержащихСведенияОПерсональныхДанных(ИменаТЧОбъекта, ИменаРеквизитов)
ИменаТЧСодержащихСведения = Новый Массив;
Для Каждого ИмяТЧОбъекта Из ИменаТЧОбъекта Цикл
ПодстрокаПоиска = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1.", ИмяТЧОбъекта);
Для Каждого ИмяРеквизита Из ИменаРеквизитов Цикл
Если СтрНайти(ИмяРеквизита, ПодстрокаПоиска) <> 0 Тогда
ИменаТЧСодержащихСведения.Добавить(ИмяТЧОбъекта);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Возврат ИменаТЧСодержащихСведения;
КонецФункции
Функция СведенияОПерсональныхДанных() Экспорт
Возврат ЗащитаПерсональныхДанных.СведенияОПерсональныхДанных();
КонецФункции
Функция МетаданныеПоТипамСубъекта() Экспорт
ТипыСубъектов = ЗащитаПерсональныхДанныхПовтИсп.ТипыСубъектов();
МетаданныеПоТипуСубъектов = Новый Соответствие;
Для Каждого ТипСубъекта Из ТипыСубъектов Цикл
МетаданныеПоТипуСубъектов.Вставить(ТипСубъекта, Метаданные.НайтиПоТипу(ТипСубъекта));
КонецЦикла;
Возврат Новый ФиксированноеСоответствие(МетаданныеПоТипуСубъектов);
КонецФункции
Функция ТипыСубъектов() Экспорт
ТипыСубъектов = Метаданные.ОпределяемыеТипы.СубъектПерсональныхДанных.Тип.Типы();
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ТипыСубъектов, Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных"));
Если ОбщегоНазначения.ЭтоРегистр(МетаданныеИсточника) Тогда
Для Каждого ТипСубъекта Из ТипыСубъектов Цикл
ИменаИзмеренийТипа = ЗащитаПерсональныхДанных.ИменаИзмеренийРегистраПоТипу(МетаданныеИсточника, ТипСубъекта);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ИменаРеквизитов, ИменаИзмеренийТипа);
Если ИменаРеквизитов.Количество() > 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого ТипСубъекта Из ТипыСубъектов Цикл
ТипыСсылкиИсточника = МетаданныеИсточника.СтандартныеРеквизиты.Ссылка.Тип.Типы();
Если ТипыСсылкиИсточника.Найти(ТипСубъекта) = Неопределено Тогда
ИменаРеквизитовТипа = ЗащитаПерсональныхДанных.ИменаРеквизитовПоТипу(МетаданныеИсточника, ТипСубъекта);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ИменаРеквизитов, ИменаРеквизитовТипа);
Иначе
ИменаРеквизитов.Добавить("Ссылка");
КонецЕсли;
Если ИменаРеквизитов.Количество() > 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если ИменаРеквизитов.Количество() = 0 Тогда
ТабличныеЧасти = МетаданныеИсточника.ТабличныеЧасти;
Для Каждого ТипСубъекта Из ТипыСубъектов Цикл
Если ИменаРеквизитов.Количество() > 0 Тогда
Прервать;
КонецЕсли;
Для Каждого ТабличнаяЧасть Из ТабличныеЧасти Цикл
ИменаРеквизитовТЧТипа = ЗащитаПерсональныхДанных.ИменаРеквизитовТЧОбъектаПоТипу(МетаданныеИсточника, ТабличнаяЧасть.Имя, ТипСубъекта, Истина);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ИменаРеквизитов, ИменаРеквизитовТЧТипа);
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Возврат Новый ФиксированныйМассив(ИменаРеквизитов);
КонецФункции
// Возвращает признак принадлежности плана обмена к плану обмена РИБ.
//
// Параметры:
// ИмяПланаОбмена - Строка - имя плана обмена, как оно задано в конфигураторе.
//
// Возвращаемое значение:
// Истина - план обмена принадлежит плану обмена РИБ, иначе Ложь.
//
Функция ЭтоПланОбменаРаспределеннойИнформационнойБазы(ИмяПланаОбмена) Экспорт
Возврат Метаданные.ПланыОбмена[ИмяПланаОбмена].РаспределеннаяИнформационнаяБаза;
Возврат Новый ФиксированныйМассив(ТипыСубъектов);
КонецФункции
@@ -42,6 +42,56 @@
КонецПроцедуры
// Вызывается при обновлении с прошлых версий, где не выставлялся флажок ЗагружаетсяИзИнтернета.
//
Процедура ПреобразованиеСвязейВалют() Экспорт
РаботаСКурсамиВалют.ПреобразованиеСвязейВалют();
КонецПроцедуры
// Вызывается после загрузки данных в область или при изменении способа установки курса валюты.
// Копирует курсы одной валюты за все даты из
// неразделенного xml файла в разделенный регистр.
//
// Параметры:
// КодВалюты - Строка
//
Процедура КопироватьКурсыВалюты(Знач КодВалюты) Экспорт
ВалютаСсылка = Справочники.Валюты.НайтиПоКоду(КодВалюты);
Если ВалютаСсылка.Пустая() Тогда
Возврат;
КонецЕсли;
ТипДанныхКурса = ФабрикаXDTO.Тип("http://www.1c.ru/SaaS/SuppliedData/CurrencyRates", "Rate");
Фильтр = Новый Массив;
Фильтр.Добавить(Новый Структура("Код, Значение", "Валюта", КодВалюты));
Курсы = ПоставляемыеДанные.СсылкиПоставляемыхДанныхИзКэша("КурсыОднойВалюты", Фильтр);
Если Курсы.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ПутьКФайлу = ПолучитьИмяВременногоФайла();
ПоставляемыеДанные.ПоставляемыеДанныеИзКэша(Курсы[0]).Записать(ПутьКФайлу);
ТаблицаКурсов = ПрочитатьТаблицуКурсов(ПутьКФайлу, Истина);
УдалитьФайлы(ПутьКФайлу);
ТаблицаКурсов.Колонки.Дата.Имя = "Период";
ТаблицаКурсов.Колонки.Добавить("Валюта");
ТаблицаКурсов.ЗаполнитьЗначения(ВалютаСсылка, "Валюта");
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(ВалютаСсылка);
НаборЗаписей.Загрузить(ТаблицаКурсов);
НаборЗаписей.ОбменДанными.Загрузка = Истина;
НаборЗаписей.Записать();
// Проверка наличие установленного курса и кратности валюты на 1 января 1980 года.
РаботаСКурсамиВалют.ПроверитьКорректностьКурсаНа01_01_1980(ВалютаСсылка);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Обработчики событий подсистем конфигурации.
@@ -138,12 +188,6 @@
#Область СлужебныеПроцедурыИФункции
// Вызывается при обновлении с прошлых версий, где не выставлялся флажок ЗагружаетсяИзИнтернета.
//
Процедура ПреобразованиеСвязейВалют() Экспорт
РаботаСКурсамиВалют.ПреобразованиеСвязейВалют();
КонецПроцедуры
// Вызывается после загрузки данных в область.
// Обновляет курсы валют из поставляемых данных.
//
@@ -287,7 +331,6 @@
Процедура ОбработатьПоставляемыеКурсы(Знач Дескриптор, Знач ПутьКФайлу)
ТаблицаКурсов = ПрочитатьТаблицуКурсов(ПутьКФайлу);
ТаблицаКурсов.Индексы.Добавить("Код");
// Разбиваем на файлы по валюте и записываем в базу.
ТаблицаКодов = ТаблицаКурсов.Скопировать( , "Код");
@@ -297,24 +340,24 @@
ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
ЗаписатьТаблицуКурсов(ТаблицаКурсов.НайтиСтроки(Новый Структура("Код", СтрокаКода.Код)), ИмяВременногоФайла);
Дескриптор = Новый Структура;
Дескриптор.Вставить("ВидДанных", "КурсыОднойВалюты");
Дескриптор.Вставить("ДатаДобавления", ТекущаяУниверсальнаяДата());
Дескриптор.Вставить("ИдентификаторФайла", Новый УникальныйИдентификатор);
Дескриптор.Вставить("Характеристики", Новый Массив);
ДескрипторКэша = Новый Структура;
ДескрипторКэша.Вставить("ВидДанных", "КурсыОднойВалюты");
ДескрипторКэша.Вставить("ДатаДобавления", ТекущаяУниверсальнаяДата());
ДескрипторКэша.Вставить("ИдентификаторФайла", Новый УникальныйИдентификатор);
ДескрипторКэша.Вставить("Характеристики", Новый Массив);
Дескриптор.Характеристики.Добавить(Новый Структура("Код, Значение, Ключевая", "Валюта", СтрокаКода.Код, Истина));
ДескрипторКэша.Характеристики.Добавить(Новый Структура("Код, Значение, Ключевая", "Валюта", СтрокаКода.Код, Истина));
ПоставляемыеДанные.СохранитьПоставляемыеДанныеВКэш(Дескриптор, ИмяВременногоФайла);
ПоставляемыеДанные.СохранитьПоставляемыеДанныеВКэш(ДескрипторКэша, ИмяВременногоФайла);
УдалитьФайлы(ИмяВременногоФайла);
КонецЦикла;
ОбластиДляОбновления = ПоставляемыеДанные.ОбластиТребующиеОбработки(
Дескриптор.ИдентификаторФайла, "КурсыВалют");
Дескриптор.FileGUID, "КурсыВалют");
РаспространитьКурсыПоОД(, ТаблицаКурсов, ОбластиДляОбновления,
Дескриптор.ИдентификаторФайла, "КурсыВалют");
РаспространитьКурсыПоОД(Неопределено, ТаблицаКурсов, ОбластиДляОбновления,
Дескриптор.FileGUID, "КурсыВалют");
КонецПроцедуры
@@ -403,16 +446,114 @@
// ИдентификаторФайла - УникальныйИдентификатор файла обрабатываемых курсов.
// КодОбработчика - Строка, код обработчика.
//
Процедура РаспространитьКурсыПоОД(Знач ДатаКурсов, Знач ТаблицаКурсов,
Знач ОбластиДляОбновления, Знач ИдентификаторФайла, Знач КодОбработчика)
Процедура РаспространитьКурсыПоОД(Знач ДатаКурсов, Знач ТаблицаКурсов, Знач ОбластиДляОбновления, Знач ИдентификаторФайла, Знач КодОбработчика)
ВалютыОбластей = Новый Соответствие();
ЗапросОбщий = Новый Запрос();
ЗапросОбщий.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ЗапросОбщий.УстановитьПараметр("ПоставляемыеКурсы", ТаблицаКурсов);
ЗапросОбщий.УстановитьПараметр("ТолькоЗаОдинДень", ДатаКурсов <> Неопределено);
ЗапросОбщий.УстановитьПараметр("ДатаКурсов", ДатаКурсов);
ЗапросОбщий.УстановитьПараметр("НачалоПоставкиКурсов", Дата("19800101"));
Для каждого ОбластьДанных Из ОбластиДляОбновления Цикл
Попытка
РаботаВМоделиСервиса.УстановитьРазделениеСеанса(Истина, ОбластьДанных);
Исключение
РаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось установить разделение сеанса %1 по причине:
|%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
Формат(ОбластьДанных, "ЧН=0; ЧГ=0"),
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Распространение курсов валют по областям данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
ТекстОшибки);
Продолжить;
КонецПопытки;
НачатьТранзакцию();
Попытка
РаботаВМоделиСервиса.УстановитьРазделениеСеанса(Истина, ОбластьДанных);
ОбработатьКурсыОбластиВТранзакции(ЗапросОбщий, ВалютыОбластей, ТаблицаКурсов);
РаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);
ПоставляемыеДанные.ОбластьОбработана(ИдентификаторФайла, КодОбработчика, ОбластьДанных);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
РаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);
ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Распространение курсов валют по областям данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Функция СвойстваПоставляемойВалюты(ВалютыОбластей, КодВалюты, ТаблицаКурсов, ЗапросОбщий)
СвойстваВалюты = ВалютыОбластей.Получить(КодВалюты);
Если СвойстваВалюты <> Неопределено Тогда
Возврат СвойстваВалюты;
КонецЕсли;
ПоставляемыеКурсы = ТаблицаКурсов.Скопировать(Новый Структура("Код", КодВалюты));
СвойстваВалюты = Новый Структура("Поставляемая, ПорядковыйНомер", Ложь, Неопределено);
Если ПоставляемыеКурсы.Количество() = 0 Тогда
ВалютыОбластей.Вставить(КодВалюты, СвойстваВалюты);
Возврат СвойстваВалюты;
КонецЕсли;
ПорядковыйНомер = Формат(ЗапросОбщий.МенеджерВременныхТаблиц.Таблицы.Количество() + 1, "ЧН=0; ЧГ=0");
ТекстЗапроса =
"ВЫБРАТЬ
| ПоставляемыеКурсы.Дата КАК Дата,
| ПоставляемыеКурсы.Кратность КАК Кратность,
| ПоставляемыеКурсы.Курс КАК Курс
|ПОМЕСТИТЬ КурсыВалютыNNN
|ИЗ
| &ПоставляемыеКурсы КАК ПоставляемыеКурсы
|ГДЕ
| ПоставляемыеКурсы.Код = &КодВалюты
| И ПоставляемыеКурсы.Дата > &НачалоПоставкиКурсов
| И ВЫБОР
| КОГДА &ТолькоЗаОдинДень
| ТОГДА ПоставляемыеКурсы.Дата = &ДатаКурсов
| ИНАЧЕ ИСТИНА
| КОНЕЦ";
ЗапросОбщий.Текст = СтрЗаменить(ТекстЗапроса, "NNN", ПорядковыйНомер);
ЗапросОбщий.Выполнить();
СвойстваВалюты.Поставляемая = Истина;
СвойстваВалюты.ПорядковыйНомер = ПорядковыйНомер;
ВалютыОбластей.Вставить(КодВалюты, СвойстваВалюты);
Возврат СвойстваВалюты;
КонецФункции
Процедура ОбработатьКурсыОбластиВТранзакции(ЗапросОбщий, ВалютыОбластей, ТаблицаКурсов)
ЗапросВалюты = Новый Запрос;
ЗапросВалюты.Текст =
@@ -428,27 +569,101 @@
Пока ВыборкаВалюты.Следующий() Цикл
Курсы = ТаблицаКурсов.НайтиСтроки(Новый Структура("Код", ВыборкаВалюты.Код));
Если Курсы.Количество() = 0 Тогда
ЗапросОбщий.УстановитьПараметр("Валюта", ВыборкаВалюты.Ссылка);
ЗапросОбщий.УстановитьПараметр("КодВалюты", ВыборкаВалюты.Код);
СвойстваВалюты = СвойстваПоставляемойВалюты(ВалютыОбластей, ВыборкаВалюты.Код, ТаблицаКурсов, ЗапросОбщий);
Если НЕ СвойстваВалюты.Поставляемая Тогда
Продолжить;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| Сравнение.Дата КАК Дата,
| Сравнение.Кратность КАК Кратность,
| Сравнение.Курс КАК Курс,
| МАКСИМУМ(Сравнение.ВФайле) КАК ВФайле,
| МАКСИМУМ(Сравнение.ВДанных) КАК ВДанных
|ИЗ
| (ВЫБРАТЬ
| ПоставляемыеКурсы.Дата КАК Дата,
| ПоставляемыеКурсы.Кратность КАК Кратность,
| ПоставляемыеКурсы.Курс КАК Курс,
| 1 КАК ВФайле,
| 0 КАК ВДанных
| ИЗ
| КурсыВалютыNNN КАК ПоставляемыеКурсы
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| КурсыВалют.Период,
| КурсыВалют.Кратность,
| КурсыВалют.Курс,
| 0,
| 1
| ИЗ
| РегистрСведений.КурсыВалют КАК КурсыВалют
| ГДЕ
| КурсыВалют.Валюта = &Валюта
| И КурсыВалют.Период > &НачалоПоставкиКурсов
| И ВЫБОР
| КОГДА &ТолькоЗаОдинДень
| ТОГДА КурсыВалют.Период = &ДатаКурсов
| ИНАЧЕ ИСТИНА
| КОНЕЦ) КАК Сравнение
|
|СГРУППИРОВАТЬ ПО
| Сравнение.Дата,
| Сравнение.Кратность,
| Сравнение.Курс
|
|ИМЕЮЩИЕ
| МАКСИМУМ(Сравнение.ВФайле) <> МАКСИМУМ(Сравнение.ВДанных)
|
|УПОРЯДОЧИТЬ ПО
| Дата,
| ВДанных";
ЗапросОбщий.Текст = СтрЗаменить(ТекстЗапроса, "NNN", СвойстваВалюты.ПорядковыйНомер);
РезультатОбщий = ЗапросОбщий.Выполнить();
ВыборкаОбщий = РезультатОбщий.Выбрать();
ТекДата = Неопределено;
ПерваяИтерацияПоДате = Истина;
Пока ВыборкаОбщий.Следующий() Цикл
Если ТекДата <> ВыборкаОбщий.Дата Тогда
ПерваяИтерацияПоДате = Истина;
ТекДата = ВыборкаОбщий.Дата;
КонецЕсли;
Если НЕ ПерваяИтерацияПоДате Тогда
Продолжить;
КонецЕсли;
ПерваяИтерацияПоДате = Ложь;
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(ВыборкаВалюты.Ссылка);
Если ДатаКурсов <> Неопределено Тогда
НаборЗаписей.Отбор.Период.Установить(ДатаКурсов);
Иначе
НаборЗаписей.Отбор.Период.Установить(ВыборкаОбщий.Дата);
Если НЕ ЗапросОбщий.Параметры.ТолькоЗаОдинДень Тогда
// Блокируем неэффективное обновление связанных валют.
НаборЗаписей.ОбменДанными.Загрузка = Истина;
КонецЕсли;
Для каждого СтрокаКурсов Из Курсы Цикл
Если ВыборкаОбщий.ВФайле = 1 Тогда
Запись = НаборЗаписей.Добавить();
Запись.Валюта = ВыборкаВалюты.Ссылка;
Запись.Период = СтрокаКурсов.Дата;
Запись.Кратность = СтрокаКурсов.Кратность;
Запись.Курс = СтрокаКурсов.Курс;
КонецЦикла;
Запись.Период = ВыборкаОбщий.Дата;
Запись.Кратность = ВыборкаОбщий.Кратность;
Запись.Курс = ВыборкаОбщий.Курс;
КонецЕсли;
// Проверяем дату запрета изменений.
@@ -465,72 +680,17 @@
НаборЗаписей.Записать();
Иначе
Комментарий = НСтр("ru = 'Загрузка курса валюты %1 на дату %2 отменена из-за нарушения даты запрета изменений.'");
Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Комментарий, ВыборкаВалюты.Код, ДатаКурсов);
Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Комментарий, ВыборкаВалюты.Код, ВыборкаОбщий.Дата);
ИмяСобытия = НСтр("ru = 'Поставляемые данные.Отмена загрузки курсов валюты'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка());
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Информация,, ВыборкаВалюты.Ссылка, Комментарий);
КонецЕсли;
КонецЦикла;
// Проверка наличие установленного курса и кратности валюты на 1 января 1980 года.
РаботаСКурсамиВалют.ПроверитьКорректностьКурсаНа01_01_1980(ВыборкаВалюты.Ссылка);
КонецЦикла;
ПоставляемыеДанные.ОбластьОбработана(ИдентификаторФайла, КодОбработчика, ОбластьДанных);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Распространение курсов валют по областям данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЦикла;
КонецПроцедуры
// Вызывается после загрузки данных в область или при изменении способа установки курса валюты.
// Копирует курсы одной валюты за все даты из
// неразделенного xml файла в разделенный регистр.
//
// Параметры:
// КодВалюты - Строка
//
Процедура КопироватьКурсыВалюты(Знач КодВалюты) Экспорт
ВалютаСсылка = Справочники.Валюты.НайтиПоКоду(КодВалюты);
Если ВалютаСсылка.Пустая() Тогда
Возврат;
КонецЕсли;
ТипДанныхКурса = ФабрикаXDTO.Тип("http://www.1c.ru/SaaS/SuppliedData/CurrencyRates", "Rate");
Фильтр = Новый Массив;
Фильтр.Добавить(Новый Структура("Код, Значение", "Валюта", КодВалюты));
Курсы = ПоставляемыеДанные.СсылкиПоставляемыхДанныхИзКэша("КурсыОднойВалюты", Фильтр);
Если Курсы.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ПутьКФайлу = ПолучитьИмяВременногоФайла();
ПоставляемыеДанные.ПоставляемыеДанныеИзКэша(Курсы[0]).Записать(ПутьКФайлу);
ТаблицаКурсов = ПрочитатьТаблицуКурсов(ПутьКФайлу, Истина);
УдалитьФайлы(ПутьКФайлу);
ТаблицаКурсов.Колонки.Дата.Имя = "Период";
ТаблицаКурсов.Колонки.Добавить("Валюта");
ТаблицаКурсов.ЗаполнитьЗначения(ВалютаСсылка, "Валюта");
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(ВалютаСсылка);
НаборЗаписей.Загрузить(ТаблицаКурсов);
НаборЗаписей.ОбменДанными.Загрузка = Истина;
НаборЗаписей.Записать();
// Проверка наличие установленного курса и кратности валюты на 1 января 1980 года.
РаботаСКурсамиВалют.ПроверитьКорректностьКурсаНа01_01_1980(ВалютаСсылка);
КонецПроцедуры
@@ -1035,7 +1035,8 @@
ПКСДляТЧ = ТЧИСвойства.Свойства;
ИмяТЧПриемника = ТЧИСвойства.ТЧФормата;
ТЧПриемника = Неопределено;
Если Не Приемник.Свойство(ИмяТЧПриемника, ТЧПриемника) Тогда
Если Не ЗначениеЗаполнено(ИмяТЧПриемника)
Или Не Приемник.Свойство(ИмяТЧПриемника, ТЧПриемника) Тогда
Продолжить;
КонецЕсли;
@@ -32,7 +32,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "2.4.6.73";
Описание.Версия = "2.4.6.78";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -1149,9 +1149,13 @@
// Продолжение процедуры ПроверитьПодписи.
Процедура ПроверитьПодписиПослеСозданияМенеджераКриптографии(МенеджерКриптографии, ДополнительныеПараметры) Экспорт
Если ТипЗнч(МенеджерКриптографии) <> Тип("МенеджерКриптографии") Тогда
Если ТипЗнч(МенеджерКриптографии) <> Тип("МенеджерКриптографии")
И МенеджерКриптографии <> "СервисКриптографии" Тогда
Возврат;
КонецЕсли;
Если МенеджерКриптографии = "СервисКриптографии" Тогда
МенеджерКриптографии = Неопределено;
КонецЕсли;
ДополнительныеПараметры.Вставить("Индекс", -1);
ДополнительныеПараметры.Вставить("МенеджерКриптографии", МенеджерКриптографии);
@@ -1177,15 +1181,28 @@
Коллекция = ДополнительныеПараметры.ВыделенныеСтроки;
КонецЕсли;
Если Не ПроверятьЭлектронныеПодписиНаСервере Тогда
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ТехнологияСервиса.РаботаВМоделиСервиса.ЭлектроннаяПодписьВМоделиСервиса") Тогда
МодульЭлектроннаяПодписьВМоделиСервисаКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьВМоделиСервисаКлиентСервер");
ИспользоватьЭлектроннуюПодписьВМоделиСервиса = МодульЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ИспользованиеВозможно();
Иначе
ИспользоватьЭлектроннуюПодписьВМоделиСервиса = Ложь;
КонецЕсли;
Если ИспользоватьЭлектроннуюПодписьВМоделиСервиса
Или Не ПроверятьЭлектронныеПодписиНаСервере Тогда
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
ДополнительныеПараметры.Вставить("Данные", Данные);
ДополнительныеПараметры.Вставить("Коллекция", Коллекция);
ДополнительныеПараметры.Вставить("МодульЭлектроннаяПодписьКлиент", МодульЭлектроннаяПодписьКлиент);
Если ИспользоватьЭлектроннуюПодписьВМоделиСервиса Тогда
ПроверитьПодписиПослеСозданияМенеджераКриптографии("СервисКриптографии", ДополнительныеПараметры);
Иначе
МодульЭлектроннаяПодписьКлиент.СоздатьМенеджерКриптографии(
Новый ОписаниеОповещения("ПроверитьПодписиПослеСозданияМенеджераКриптографии",
ЭтотОбъект, ДополнительныеПараметры),
"ПроверкаПодписи");
КонецЕсли;
Возврат;
КонецЕсли;
@@ -269,17 +269,6 @@
ПроверитьПараметрОбъект(Объект, "ЭлектроннаяПодпись.ОбновитьПодпись", Истина);
Если ТипЗнч(Объект) = Тип("СправочникСсылка." + "ВерсииФайлов")
Или ТипЗнч(Объект) = Тип("СправочникОбъект." + "ВерсииФайлов") Тогда
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("СправочникСсылка." + "Файлы"));
МассивТипов.Добавить(Тип("СправочникОбъект." + "Файлы"));
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("ЭлектроннаяПодпись.УдалитьПодпись",
"Объект", Объект, МассивТипов);
КонецЕсли;
Если ТипЗнч(СвойстваПодписи) = Тип("Строка") Тогда
СвойстваПодписи = ПолучитьИзВременногоХранилища(СвойстваПодписи);
КонецЕсли;
@@ -400,10 +389,6 @@
ПроверитьПараметрОбъект(Объект, "ЭлектроннаяПодпись.СертификатыШифрования", Истина);
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("ЭлектроннаяПодпись.СертификатыШифрования", "Объект", Объект,
Новый ОписаниеТипов(Метаданные.РегистрыСведений.СертификатыШифрования.Измерения.ЗашифрованныйОбъект.Тип,,
"СправочникСсылка.ВерсииФайлов"));
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
@@ -1480,6 +1465,10 @@
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(ИмяПроцедуры, "Объект", Объект,
ЭлектроннаяПодписьСлужебныйПовтИсп.ТипыВладельцев(ТолькоСсылки));
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект,,
"РаботаСФайламиСлужебныйВызовСервера.ПеренестиЭлектронныеПодписиИСертификатыШифрованияВРегистрыСведений",
ИмяПроцедуры);
@@ -4614,8 +4614,8 @@
МодульСервисКриптографииКлиент.ПроверитьПодпись(Новый ОписаниеОповещения(
"ПроверитьПодписьНаКлиентеПослеПроверкиПодписи", ЭтотОбъект, Контекст,
"ПроверитьПодписьНаКлиентеПослеОшибкиПроверкиПодписи", ЭтотОбъект),
Контекст.ИсходныеДанные,
Контекст.ДанныеПодписи);
Контекст.ДанныеПодписи,
Контекст.ИсходныеДанные);
КонецПроцедуры
@@ -92,10 +92,16 @@
Результат = Новый Соответствие;
Типы = Метаданные.ОпределяемыеТипы.ПодписанныйОбъект.Тип.Типы();
ИсключаемыеТипы = Новый Соответствие;
ИсключаемыеТипы.Вставить(Тип("Неопределено"), Истина);
ИсключаемыеТипы.Вставить(Тип("Строка"), Истина);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
ИсключаемыеТипы.Вставить(Тип("СправочникСсылка." + "ВерсииФайлов"), Истина);
КонецЕсли;
Для Каждого Тип Из Типы Цикл
Если Тип = Тип("Неопределено")
Или Тип = Тип("Строка")
Или Тип = Тип("СправочникСсылка." + "ВерсииФайлов") Тогда
Если ИсключаемыеТипы.Получить(Тип) <> Неопределено Тогда
Продолжить;
КонецЕсли;
Результат.Вставить(Тип, Истина);
+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="e5db97a5-2080-40a1-a62b-2922d1d0f571">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="9f677d41-3ce4-4e28-90e8-b09d3f21aa0e">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 2.4</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="c9766a33-70e1-41e8-932e-c28e9e69b9b9"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="63536cb6-bdbc-4c15-b6cd-9e9a30c3b90d"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="bcb40b14-c202-4cb0-a909-4546ee2e464f"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="4b477dc4-12bb-4353-b861-5470e05a2535"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="6c14d264-ff62-4d1f-b2b4-df3d85dff9da"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="94d0ee85-4924-40e2-9b38-f5beabfda0af"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="fd0e2f88-827b-461a-8a2f-79d14bc52c93"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="7d7acd4f-d319-42ce-96f2-caef41d7fea4"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="342cd250-4577-482e-8f87-9d36bb227244"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="6db91263-f62a-42e9-8093-b16a4862d2b1"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="8e59f9be-3dc3-4ed7-b5d2-64c6f79ea415"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="7f5f10b4-4ed0-4ab1-9a27-f2c50d841417"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="3a6d3110-50bb-473e-a1f9-41235abb9dc9"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="f710709d-6711-4c9a-b2fd-32e24dd11f6d"/>
<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>2.4.6.73</version>
<version>2.4.6.78</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -1 +1 @@
{6,1,1,1427f314-29c8-4f24-9c72-267183dde1f3,1,c63b3785-e9d0-402a-b688-dee236bd1e53,"2.4.6.73","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5576,1,0,e5db97a5-2080-40a1-a62b-2922d1d0f571,e5db97a5-2080-40a1-a62b-2922d1d0f571,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,c27472ee-879a-4746-9d21-122738ec80b7,c27472ee-879a-4746-9d21-122738ec80b7,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,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,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,83192b3e-e7a9-4595-8887-24cda84457a9,83192b3e-e7a9-4595-8887-24cda84457a9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,1,0,08eeb8f1-944f-4450-83f6-ef20aaab7d86,08eeb8f1-944f-4450-83f6-ef20aaab7d86,1,0,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,1,0,2fd12dba-5311-4f31-949c-f6b15decc0cc,2fd12dba-5311-4f31-949c-f6b15decc0cc,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,35895e12-52b6-49a1-acdf-6d828a948af0,35895e12-52b6-49a1-acdf-6d828a948af0,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,060b6f18-538c-4ea1-9748-00efe0b1ab57,060b6f18-538c-4ea1-9748-00efe0b1ab57,1,0,307b6821-fd82-4a1c-9fdb-a26293d4f713,307b6821-fd82-Line truncated
{6,1,1,282e61cb-adaf-45bc-ac13-cd3cd390ae81,1,279cc195-ef60-443f-ae57-71cf71ee891c,"2.4.6.78","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5576,1,0,9f677d41-3ce4-4e28-90e8-b09d3f21aa0e,9f677d41-3ce4-4e28-90e8-b09d3f21aa0e,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,c27472ee-879a-4746-9d21-122738ec80b7,c27472ee-879a-4746-9d21-122738ec80b7,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,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,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,83192b3e-e7a9-4595-8887-24cda84457a9,83192b3e-e7a9-4595-8887-24cda84457a9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,1,0,08eeb8f1-944f-4450-83f6-ef20aaab7d86,08eeb8f1-944f-4450-83f6-ef20aaab7d86,1,0,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,1,0,2fd12dba-5311-4f31-949c-f6b15decc0cc,2fd12dba-5311-4f31-949c-f6b15decc0cc,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,35895e12-52b6-49a1-acdf-6d828a948af0,35895e12-52b6-49a1-acdf-6d828a948af0,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,060b6f18-538c-4ea1-9748-00efe0b1ab57,060b6f18-538c-4ea1-9748-00efe0b1ab57,1,0,307b6821-fd82-4a1c-9fdb-a26293d4f713,307b6821-fd82-Line truncated
@@ -494,6 +494,12 @@
СписокПолей.Добавить("КоррСчет");
СписокПолей.Добавить("СВИФТБИК");
СписокПолей.Добавить("ИНН");
СписокПолей.Добавить("ОГРН");
СписокПолей.Добавить("Адрес");
СписокПолей.Добавить("Телефоны");
СписокПолей.Добавить("МеждународноеНаименование");
СписокПолей.Добавить("ГородМеждународный");
СписокПолей.Добавить("АдресМеждународный");
КоллекцияЗначений = СтрРазделить(Строка, Символы.Таб, Истина);
Для Индекс = 0 По СписокПолей.Количество() - 1 Цикл;
@@ -510,8 +516,6 @@
Результат.ТипПункта = ОпределитьТипГородаПоКоду(Результат.ТипПункта);
Результат.Вставить("Город", СокрЛП(Результат.ТипПункта + " " + Результат.ИмяНаселенногоПункта));
Результат.Вставить("Телефоны", "");
Результат.Вставить("Адрес", "");
КодРегиона = Сред(Результат.БИК, 3, 2);
Регион = Регионы[КодРегиона];
@@ -789,51 +793,14 @@
КлассификаторБанковОбъект.Код = СтруктураБанк.БИК;
КонецЕсли;
Если СтруктураБанк.Свойство("СВИФТБИК") Тогда
Если КлассификаторБанковОбъект.СВИФТБИК <> СтруктураБанк.СВИФТБИК Тогда
Если Не ПустаяСтрока(СтруктураБанк.СВИФТБИК) Тогда
КлассификаторБанковОбъект.СВИФТБИК = СтруктураБанк.СВИФТБИК;
КонецЕсли;
КонецЕсли;
Для Каждого Реквизит Из КлассификаторБанковОбъект.Метаданные().Реквизиты Цикл
ИмяРеквизита = Реквизит.Имя;
Если СтруктураБанк.Свойство(ИмяРеквизита) И ТипЗнч(КлассификаторБанковОбъект[ИмяРеквизита]) = Тип("Строка") Тогда
ОбновитьЗначениеРеквизита(КлассификаторБанковОбъект, ИмяРеквизита, СтруктураБанк[ИмяРеквизита]);
КонецЕсли;
КонецЦикла;
Если СтруктураБанк.Свойство("ИНН") Тогда
Если КлассификаторБанковОбъект.ИНН <> СтруктураБанк.ИНН Тогда
Если Не ПустаяСтрока(СтруктураБанк.ИНН) Тогда
КлассификаторБанковОбъект.ИНН = СтруктураБанк.ИНН;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если КлассификаторБанковОбъект.Наименование <> СтруктураБанк.Наименование Тогда
Если Не ПустаяСтрока(СтруктураБанк.Наименование) Тогда
КлассификаторБанковОбъект.Наименование = СтруктураБанк.Наименование;
КонецЕсли;
КонецЕсли;
Если КлассификаторБанковОбъект.КоррСчет <> СтруктураБанк.КоррСчет Тогда
Если Не ПустаяСтрока(СтруктураБанк.КоррСчет) Тогда
КлассификаторБанковОбъект.КоррСчет = СтруктураБанк.КоррСчет;
КонецЕсли;
КонецЕсли;
Если КлассификаторБанковОбъект.Город <> СтруктураБанк.Город Тогда
Если Не ПустаяСтрока(СтруктураБанк.Город) Тогда
КлассификаторБанковОбъект.Город = СтруктураБанк.Город;
КонецЕсли;
КонецЕсли;
Если КлассификаторБанковОбъект.Адрес <> СтруктураБанк.Адрес Тогда
Если Не ПустаяСтрока(СтруктураБанк.Адрес) Тогда
КлассификаторБанковОбъект.Адрес = СтруктураБанк.Адрес;
КонецЕсли;
КонецЕсли;
Если КлассификаторБанковОбъект.Телефоны <> СтруктураБанк.Телефоны Тогда
Если Не ПустаяСтрока(СтруктураБанк.Телефоны) Тогда
КлассификаторБанковОбъект.Телефоны = СтруктураБанк.Телефоны;
КонецЕсли;
КонецЕсли;
ОбновитьЗначениеРеквизита(КлассификаторБанковОбъект, "Наименование", СтруктураБанк.Наименование);
Если Не ПустаяСтрока(Регион) Тогда
Если КлассификаторБанковОбъект.Родитель <> Регион.Ссылка Тогда
@@ -841,6 +808,13 @@
КонецЕсли;
КонецЕсли;
Страна = "РФ";
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами");
Страна = МодульРаботаСАдресами.ОсновнаяСтрана();
КонецЕсли;
ОбновитьЗначениеРеквизита(КлассификаторБанковОбъект, "Страна", Страна);
Если КлассификаторБанковОбъект.Модифицированность() Тогда
ФлагОбновленный = Истина;
КлассификаторБанковОбъект.Записать();
@@ -857,6 +831,14 @@
КонецПроцедуры
Процедура ОбновитьЗначениеРеквизита(СправочникОбъект, ИмяРеквизита, Значение)
Если СправочникОбъект[ИмяРеквизита] <> Значение Тогда
Если ЗначениеЗаполнено(Значение) Тогда
СправочникОбъект[ИмяРеквизита] = Значение;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Прочие процедуры и функции
@@ -267,11 +267,8 @@
Процедура ОбработатьНаборЗаписейСОтборомСубъекта(НаборЗаписейРегистра, ОбъектМетаданных, ПараметрыОтбора)
МетаданныеРегистра = НаборЗаписейРегистра.Метаданные();
Субъекты = ПараметрыОтбора.Субъекты;
ТипСубъектов = ПараметрыОтбора.ТипСубъектов;
ИменаИзмеренийСТипомСубъекта = ЗащитаПерсональныхДанных.ИменаИзмеренийРегистраПоТипу(МетаданныеРегистра, ТипСубъектов);
ИменаИзмеренийСТипомСубъекта = ЗащитаПерсональныхДанныхПовтИсп.ИменаРеквизитовИсточникаСодержащихСубъект(ОбъектМетаданных.ПолноеИмя);
Для Каждого ИмяИзмерения Из ИменаИзмеренийСТипомСубъекта Цикл
@@ -296,8 +293,7 @@
МетаданныеРегистра = НаборЗаписейРегистра.Метаданные();
Субъекты = ПараметрыОтбора.Субъекты;
ТипСубъектов = ПараметрыОтбора.ТипСубъектов;
ИменаИзмеренийСТипомСубъекта = ЗащитаПерсональныхДанных.ИменаИзмеренийРегистраПоТипу(МетаданныеРегистра, ТипСубъектов);
ИменаИзмеренийСТипомСубъекта = ЗащитаПерсональныхДанныхПовтИсп.ИменаРеквизитовИсточникаСодержащихСубъект(ОбъектМетаданных.ПолноеИмя);
ОбрабатыватьЗаписьПриНаличииСубъекта = ЗначениеЗаполнено(ИменаИзмеренийСТипомСубъекта);
КонецЕсли;
@@ -375,12 +371,9 @@
Процедура ОбработатьОбъектМетаданных(ОбъектМетаданных, ПараметрыОтбора)
ОбработкаПорциями = Ложь;
Ссылка = "";
Субъекты = ПараметрыОтбора.Субъекты;
ТипСубъектов = ПараметрыОтбора.ТипСубъектов;
ИменаРеквизитовСТипомСубъекта = "";
РеквизитыПроверены = Ложь;
ИменаРеквизитовСТипомСубъекта = Новый Массив;
ВключеноВерсионирование = Ложь;
@@ -412,7 +405,7 @@
Иначе
ОбработкаПорциями = Истина;
Результат = ДанныеОбъектаМетаданных(ОбъектМетаданных, Ссылка);
Результат = ДанныеОбъектаМетаданных(ОбъектМетаданных);
КонецЕсли;
@@ -426,31 +419,71 @@
Обработано = Истина;
ВыполнитьЗаписьОбъекта = Ложь;
ЕстьСубъектыВТЧастях = Ложь;
НетСубъектаВРеквизитах = Истина;
ИменаРеквизитовТабличныхЧастей = Новый Соответствие;
ОбрабатываемыйОбъект = СтрокаРезультата.Ссылка.ПолучитьОбъект();
Если ЗначениеЗаполнено(Субъекты) И Не РеквизитыПроверены Тогда
ИменаРеквизитовСТипомСубъекта = ОбщегоНазначения.ИменаРеквизитовПоТипу(СтрокаРезультата.Ссылка, ТипСубъектов);
РеквизитыПроверены = Истина;
Если ЗначениеЗаполнено(Субъекты) Тогда
НайденСубъектВРеквизитах = Ложь;
ИменаРеквизитовСодержащихСубъект = ЗащитаПерсональныхДанныхПовтИсп.ИменаРеквизитовИсточникаСодержащихСубъект(ОбъектМетаданных.ПолноеИмя);
Для Каждого ИмяРеквизита Из ИменаРеквизитовСодержащихСубъект Цикл
ЧастиИмени = СтрРазделить(ИмяРеквизита, ".", Ложь);
Если ЧастиИмени.Количество() > 1 Тогда
ИмяТЧасти = ЧастиИмени[0];
ИмяРеквизитаТЧ = ЧастиИмени[1];
ИменаРеквизитовТЧасти = ИменаРеквизитовТабличныхЧастей.Получить(ИмяТЧасти);
Если ИменаРеквизитовТЧасти = Неопределено Тогда
ИменаРеквизитовТЧасти = Новый Массив;
КонецЕсли;
ИменаРеквизитовТЧасти.Добавить(ИмяРеквизитаТЧ);
ИменаРеквизитовТабличныхЧастей.Вставить(ИмяТЧасти, ИменаРеквизитовТЧасти);
Иначе
Если Не НайденСубъектВРеквизитах Тогда
НайденСубъектВРеквизитах = (Субъекты.Найти(ОбрабатываемыйОбъект[ИмяРеквизита]) <> Неопределено);
КонецЕсли;
КонецЕсли;
КонецЦикла;
НетСубъектаВРеквизитах = Не НайденСубъектВРеквизитах;
ЕстьСубъектыВТЧастях = ИменаРеквизитовТабличныхЧастей.Количество() > 0;
КонецЕсли;
Для Каждого ГруппаСвойствОбъекта Из ОбъектМетаданных.Строки Цикл
Если ГруппаСвойствОбъекта.Пометка = 0 Тогда
Продолжить;
КонецЕсли;
Для Каждого ОбрабатываемоеСвойство Из ГруппаСвойствОбъекта.Строки Цикл
Если ОбрабатываемоеСвойство.Пометка = 0 Тогда
Продолжить;
КонецЕсли;
Если ГруппаСвойствОбъекта.Тип = "ТабличнаяЧасть" Тогда
ОбрабатыватьТЧПриНаличииСубъекта = Ложь;
ОбрабатываемыеСвойства = ОбрабатываемыйОбъект[ГруппаСвойствОбъекта.Имя];
Если ЗначениеЗаполнено(Субъекты) И ПустаяСтрока(ИменаРеквизитовСТипомСубъекта) Тогда
ОбрабатыватьТЧПриНаличииСубъекта = Ложь;
ИменаРеквизитовТЧСТипомСубъекта = ИменаРеквизитовТабличныхЧастей.Получить(ГруппаСвойствОбъекта.Имя);
Если ЗначениеЗаполнено(Субъекты) И ЕстьСубъектыВТЧастях Тогда
ИменаРеквизитовТЧСТипомСубъекта = ЗащитаПерсональныхДанных.ИменаРеквизитовТЧОбъектаПоТипу(ОбрабатываемыйОбъект.Метаданные(), ГруппаСвойствОбъекта.Имя, ТипСубъектов);
ОбрабатыватьТЧПриНаличииСубъекта = ЗначениеЗаполнено(ИменаРеквизитовТЧСТипомСубъекта);
КонецЕсли;
@@ -463,18 +496,20 @@
СубъектВСтроке = Ложь;
Для Каждого ИмяРеквизита Из ИменаРеквизитовТЧСТипомСубъекта Цикл
ТекущийСубъект = СтрокаТабличнойЧасти[ИмяРеквизита];
Если Субъекты.Найти(ТекущийСубъект) <> Неопределено Тогда
СубъектВСтроке = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не СубъектВСтроке Тогда
Продолжить;
КонецЕсли;
Иначе
ИначеЕсли ЕстьСубъектыВТЧастях Или НетСубъектаВРеквизитах Тогда
Продолжить;
КонецЕсли;
@@ -491,6 +526,15 @@
КонецЦикла;
Иначе
Если ЗначениеЗаполнено(Субъекты)
И НетСубъектаВРеквизитах
И Не ЕстьСубъектыВТЧастях Тогда
Продолжить;
КонецЕсли;
Значение = ОбрабатываемыйОбъект[ОбрабатываемоеСвойство.Имя];
ОбработатьСвойство(Значение, ОбрабатываемоеСвойство, Обработано);
Если Обработано Тогда
@@ -498,9 +542,11 @@
КонецЕсли;
ВыполнитьЗаписьОбъекта = ВыполнитьЗаписьОбъекта Или Обработано;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если ВыполнитьЗаписьОбъекта Тогда
@@ -529,7 +575,7 @@
КонецПроцедуры
Функция ДанныеОбъектаМетаданных(ОбъектМетаданных, ТекущаяСсылка)
Функция ДанныеОбъектаМетаданных(ОбъектМетаданных, ТекущаяСсылка = "")
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ТекущаяСсылка);
@@ -817,7 +863,7 @@
// Отметка сведений о персональных данных.
Если ВключаяПерсональные Тогда
ТаблицаСведений = ЗащитаПерсональныхДанных.СведенияОПерсональныхДанных();
ТаблицаСведений = ЗащитаПерсональныхДанныхПовтИсп.СведенияОПерсональныхДанных();
Для Каждого СтрокаСведения Из ТаблицаСведений Цикл
@@ -2100,6 +2100,93 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ОценкаПроизводительностиПериодЗаписи</name>
<right>
@@ -2986,93 +3073,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ДампыПлатформы</name>
<right>
@@ -4005,6 +4005,45 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>Constant.ОценкаПроизводительностиПериодЗаписи</name>
<right>
@@ -5609,45 +5648,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>InformationRegister.ДампыПлатформы</name>
<right>
@@ -3,13 +3,6 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -41,6 +34,13 @@
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации</name>
<right>