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

No files matched your search

@@ -2862,23 +2862,21 @@
// Перебор вложенных подсистем родителя. // Перебор вложенных подсистем родителя.
Для Каждого ПодсистемаМетаданные Из ПодсистемаРодитель.Подсистемы Цикл Для Каждого ПодсистемаМетаданные Из ПодсистемаРодитель.Подсистемы Цикл
Если Не ПодсистемаМетаданные.ВключатьВКомандныйИнтерфейс Тогда
Продолжить;
КонецЕсли;
// Состав подсистемы Если ПодсистемаМетаданные.ВключатьВКомандныйИнтерфейс Тогда
Для Каждого ОтчетМетаданные Из ПодсистемаМетаданные.Состав Цикл Для Каждого ОтчетМетаданные Из ПодсистемаМетаданные.Состав Цикл
Если Не Метаданные.Отчеты.Содержит(ОтчетМетаданные) Тогда Если Не Метаданные.Отчеты.Содержит(ОтчетМетаданные) Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
СтрокаТаблицы = Результат.Добавить(); СтрокаТаблицы = Результат.Добавить();
СтрокаТаблицы.ОтчетМетаданные = ОтчетМетаданные; СтрокаТаблицы.ОтчетМетаданные = ОтчетМетаданные;
СтрокаТаблицы.ОтчетПолноеИмя = ОтчетМетаданные.ПолноеИмя(); СтрокаТаблицы.ОтчетПолноеИмя = ОтчетМетаданные.ПолноеИмя();
СтрокаТаблицы.ПодсистемаМетаданные = ПодсистемаМетаданные; СтрокаТаблицы.ПодсистемаМетаданные = ПодсистемаМетаданные;
СтрокаТаблицы.ПодсистемаПолноеИмя = ПодсистемаМетаданные.ПолноеИмя(); СтрокаТаблицы.ПодсистемаПолноеИмя = ПодсистемаМетаданные.ПолноеИмя();
КонецЦикла; КонецЦикла;
КонецЕсли;
РазмещениеОтчетовВПодсистемах(Результат, ПодсистемаМетаданные); РазмещениеОтчетовВПодсистемах(Результат, ПодсистемаМетаданные);
КонецЦикла; КонецЦикла;
@@ -303,7 +303,7 @@
// См. ЗащитаПерсональныхДанныхПереопределяемый.ЗаполнитьСведенияОПерсональныхДанных. // См. ЗащитаПерсональныхДанныхПереопределяемый.ЗаполнитьСведенияОПерсональныхДанных.
// //
// Параметры: // Параметры:
// Субъекты - Массив, ОпределяемыйТип.СубъектПерсональныхДанных - ссылка или массив ссылок на субъекты. // Субъекты - Массив, ОпределяемыйТип.СубъектПерсональныхДанных - ссылка или массив ссылок одного типа на субъекты.
// СообщатьОбИсключениях - Булево - признак необходимости информирования пользователя о добавленных исключениях. // СообщатьОбИсключениях - Булево - признак необходимости информирования пользователя о добавленных исключениях.
// //
Процедура СкрытьПерсональныеДанныеСубъектов(Знач Субъекты, СообщатьОбИсключениях = Ложь) Экспорт Процедура СкрытьПерсональныеДанныеСубъектов(Знач Субъекты, СообщатьОбИсключениях = Ложь) Экспорт
@@ -340,7 +340,6 @@
ПараметрыОтбора = ПараметрыОтбораСкрываемыхДанных(); ПараметрыОтбора = ПараметрыОтбораСкрываемыхДанных();
ПараметрыОтбора.Субъекты = ОтбираемыеСубъекты; ПараметрыОтбора.Субъекты = ОтбираемыеСубъекты;
ПараметрыОтбора.ТипСубъектов = ТипСубъектов;
ОбрабатываемыеМетаданные = ОбрабатываемыеМетаданные(); ОбрабатываемыеМетаданные = ОбрабатываемыеМетаданные();
@@ -495,12 +494,12 @@
Элементы = Форма.Элементы; Элементы = Форма.Элементы;
Список = Форма[СписокФормы.ПутьКДанным]; Список = Форма[СписокФормы.ПутьКДанным];
ИмяСпискаФормы = СписокФормы.Имя; ИмяСпискаФормы = СписокФормы.Имя;
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьСкрытиеПерсональныхДанныхСубъектов") Тогда Если Не ПолучитьФункциональнуюОпцию("ИспользоватьСкрытиеПерсональныхДанныхСубъектов") Тогда
Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьСоСкрытымиПДн", Ложь); Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьСоСкрытымиПДн", Ложь);
Возврат; Возврат;
КонецЕсли; КонецЕсли;
ТекущаяДата = НачалоДня(ТекущаяДатаСеанса()); ТекущаяДата = НачалоДня(ТекущаяДатаСеанса());
Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ТекущаяДата", ТекущаяДата); Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ТекущаяДата", ТекущаяДата);
@@ -523,7 +522,7 @@
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
ИзменяемыеПоля = Новый Массив; ИзменяемыеПоля = Новый Массив;
ИзменяемыеПоля.Добавить(ИмяКолонки); ИзменяемыеПоля.Добавить(ИмяКолонки);
Список.УстановитьОграниченияИспользованияВГруппировке(ИзменяемыеПоля); Список.УстановитьОграниченияИспользованияВГруппировке(ИзменяемыеПоля);
@@ -531,7 +530,7 @@
Список.УстановитьОграниченияИспользованияВОтборе(ИзменяемыеПоля); Список.УстановитьОграниченияИспользованияВОтборе(ИзменяемыеПоля);
НастроитьПоказСубъектовСоСкрытымиПДн(Форма, Список); НастроитьПоказСубъектовСоСкрытымиПДн(Форма, Список);
КонецПроцедуры КонецПроцедуры
// В форме списка заполняет колонку с картинкой, сигнализирующей об отсутствии требуемого согласия // В форме списка заполняет колонку с картинкой, сигнализирующей об отсутствии требуемого согласия
@@ -552,28 +551,44 @@
КонецЕсли; КонецЕсли;
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
ДнейДоСкрытия = Константы.ДнейДоСкрытияПерсональныхДанныхСубъектов.Получить(); ДнейДоСкрытия = Константы.ДнейДоСкрытияПерсональныхДанныхСубъектов.Получить();
Запрос = Новый Запрос; Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Запрос.Текст = ТекстЗапросаСубъектыДляСкрытияПерсональныхДанных(Истина) + "
| СубъектыДляСкрытияПДн.Субъект КАК Субъект |;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Субъекты.Субъект КАК Субъект
|ИЗ
| ВТСубъектыДляСкрытия КАК Субъекты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СубъектыДляСкрытияПерсональныхДанных КАК СубъектыДляСкрытияПДн
| ПО СубъектыДляСкрытияПДн.Субъект = Субъекты.Субъект
|ГДЕ
| Субъекты.Субъект В(&Субъекты)
| И СубъектыДляСкрытияПДн.Субъект ЕСТЬ NULL
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СубъектыДляСкрытияПДн.Субъект
|ИЗ |ИЗ
| РегистрСведений.СубъектыДляСкрытияПерсональныхДанных КАК СубъектыДляСкрытияПДн | РегистрСведений.СубъектыДляСкрытияПерсональныхДанных КАК СубъектыДляСкрытияПДн
|ГДЕ |ГДЕ
| СубъектыДляСкрытияПДн.Субъект В(&Субъекты) | СубъектыДляСкрытияПДн.Субъект В(&Субъекты)
| И СубъектыДляСкрытияПДн.ДатаСкрытия >= &ТекущаяДата | И СубъектыДляСкрытияПДн.ДатаСкрытия > &ПустаяДата
| И СубъектыДляСкрытияПДн.ДатаСкрытия < &РасчетнаяДата | И СубъектыДляСкрытияПДн.ДатаСкрытия <= &РасчетнаяДата
| И СубъектыДляСкрытияПДн.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСубъектовДляСкрытия.ГотовКСкрытию)"; | И СубъектыДляСкрытияПДн.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСубъектовДляСкрытия.ГотовКСкрытию)";
Запрос.УстановитьПараметр("Субъекты", Строки.ПолучитьКлючи()); Запрос.УстановитьПараметр("Субъекты", Строки.ПолучитьКлючи());
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата); Запрос.УстановитьПараметр("ПустаяДата", '00010101');
Запрос.УстановитьПараметр("РасчетнаяДата", ТекущаяДата + ДнейДоСкрытия * 86400); Запрос.УстановитьПараметр("РасчетнаяДата", ТекущаяДата + ДнейДоСкрытия * 86400);
Выборка = Запрос.Выполнить().Выбрать(); Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
СтрокаСписка = Строки[Выборка.Субъект]; СтрокаСписка = Строки[Выборка.Субъект];
СтрокаСписка.Данные["ОтсутствуетСогласие"] = 1; СтрокаСписка.Данные["ОтсутствуетСогласие"] = 1;
КонецЦикла; КонецЦикла;
КонецПроцедуры КонецПроцедуры
@@ -726,13 +741,16 @@
Возврат Ложь; Возврат Ложь;
КонецЕсли; КонецЕсли;
Если Объект.ДополнительныеСвойства.Свойство("ОтключитьМеханизмРегистрацииОбъектов") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда
Возврат Истина;
МодульОбменДаннымиПовтИсп = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиПовтИсп");
Если МодульОбменДаннымиПовтИсп.ЭтоПланОбменаРаспределеннойИнформационнойБазы(ИмяПланаОбмена) Тогда
Возврат Ложь;
КонецЕсли;
КонецЕсли; КонецЕсли;
Если ЗащитаПерсональныхДанныхПовтИсп.ЭтоПланОбменаРаспределеннойИнформационнойБазы(ИмяПланаОбмена) Тогда Если Объект.ДополнительныеСвойства.Свойство("СкрытиеКонфиденциальнойИнформации") Тогда
Возврат Ложь;
ИначеЕсли Объект.ДополнительныеСвойства.Свойство("СкрытиеКонфиденциальнойИнформации") Тогда
Возврат Истина; Возврат Истина;
КонецЕсли; КонецЕсли;
@@ -783,7 +801,7 @@
КонецЕсли; КонецЕсли;
Возврат Истина; Возврат Ложь;
КонецФункции КонецФункции
@@ -799,36 +817,13 @@
Процедура ПолучениеСубъектовДляСкрытияПерсональныхДанных() Экспорт Процедура ПолучениеСубъектовДляСкрытияПерсональныхДанных() Экспорт
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ПолучениеСубъектовДляСкрытияПерсональныхДанных); ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ПолучениеСубъектовДляСкрытияПерсональныхДанных);
МетаданныеСправочники = Метаданные.Справочники;
ТипыСубъектов = Метаданные.ОпределяемыеТипы.СубъектПерсональныхДанных.Тип.Типы();
Запрос = Новый Запрос(); Запрос = Новый Запрос();
Запрос.Текст = ТекстЗапросаСубъектыДляСкрытияПерсональныхДанных();
Для Каждого ТипСубъекта Из ТипыСубъектов Цикл
Если ТипСубъекта = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") Тогда
Продолжить;
КонецЕсли;
МетаданныеСправочника = Метаданные.НайтиПоТипу(ТипСубъекта);
Запрос.Текст = Запрос.Текст + ?(ПустаяСтрока(Запрос.Текст),"", " ОБЪЕДИНИТЬ ВСЕ") + "
|
|ВЫБРАТЬ
| СправочникСубъекта.Ссылка КАК Субъект
|ИЗ
| Справочник." + МетаданныеСправочника.Имя + " КАК СправочникСубъекта
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СубъектыДляСкрытияПерсональныхДанных КАК СубъектыДляСкрытияПерсональныхДанных
| ПО СправочникСубъекта.Ссылка = СубъектыДляСкрытияПерсональныхДанных.Субъект
|ГДЕ
| СубъектыДляСкрытияПерсональныхДанных.Субъект ЕСТЬ 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 Тогда
ТабличныеЧасти = МетаданныеИсточника.ТабличныеЧасти;
Для Каждого ТипСубъекта Из ТипыСубъектов Цикл
Если ИменаРеквизитов.Количество() > 0 Тогда Если ИсточникИмеетВладельца Тогда
Прервать;
Если МетаданныеИсточника.Владельцы.Содержит(МетаданныеСубъекта) Тогда
ИменаРеквизитовИсточника.Добавить("Владелец");
КонецЕсли;
КонецЕсли; КонецЕсли;
Для Каждого ТабличнаяЧасть Из ТабличныеЧасти Цикл Если ИменаРеквизитовИсточника.Количество() = 0 Тогда
ИменаРеквизитовТЧТипа = ЗащитаПерсональныхДанных.ИменаРеквизитовТЧОбъектаПоТипу(МетаданныеИсточника, ТабличнаяЧасть.Имя, ТипСубъекта, Истина); ИменаРеквизитовТипа = ЗащитаПерсональныхДанных.ИменаРеквизитовПоТипу(МетаданныеИсточника, ТипСубъекта);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ИменаРеквизитов, ИменаРеквизитовТЧТипа); ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ИменаРеквизитовИсточника, ИменаРеквизитовТипа);
КонецЦикла; КонецЕсли;
КонецЕсли;
Для Каждого ИмяТабличнойЧасти Из ИменаТЧСодержащихСведения Цикл
ИменаРеквизитовТЧТипа = ЗащитаПерсональныхДанных.ИменаРеквизитовТЧОбъектаПоТипу(МетаданныеИсточника, ИмяТабличнойЧасти, ТипСубъекта, Истина);
Если ИменаРеквизитовТЧТипа.Количество() > 0 Тогда
ИменаРеквизитовТЧИсточника.Вставить(ИмяТабличнойЧасти, ИменаРеквизитовТЧТипа);
КонецЕсли;
КонецЦикла; КонецЦикла;
КонецЕсли; КонецЕсли;
КонецЕсли; Для Каждого ИмяРеквизита Из ИменаРеквизитовИсточника Цикл
Если ПоляРегистрации.Найти(ИмяРеквизита) <> Неопределено Тогда
ИменаРеквизитовСодержащихСубъект.Добавить(ИмяРеквизита);
КонецЕсли;
КонецЦикла;
Для Каждого ТЧИРеквизиты Из ИменаРеквизитовТЧИсточника Цикл
ИмяТЧ = ТЧИРеквизиты.Ключ;
ИменаРеквизитовТЧ = ТЧИРеквизиты.Значение;
Для Каждого ИмяРеквизита Из ИменаРеквизитовТЧ Цикл
Если ПоляРегистрации.Найти(ИмяРеквизита) <> Неопределено Тогда
ИменаРеквизитовСодержащихСубъект.Добавить(ИмяРеквизита);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если ИменаРеквизитовСодержащихСубъект.Количество() > 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Новый ФиксированныйМассив(ИменаРеквизитов); Возврат Новый ФиксированныйМассив(ИменаРеквизитовСодержащихСубъект);
КонецФункции КонецФункции
// Возвращает признак принадлежности плана обмена к плану обмена РИБ. // Возвращает имена полей регистрации и полей доступа сведений о персональных данных объекта по его полному имени.
// //
// Параметры: // Параметры:
// ИмяПланаОбмена - Строка - имя плана обмена, как оно задано в конфигураторе. // ИмяОбъекта - Строка - полное имя объекта метаданных. Например: "Справочник.ФизическиеЛица".
//
// Возвращаемое значение:
// Истина - план обмена принадлежит плану обмена РИБ, иначе Ложь.
// //
Функция ЭтоПланОбменаРаспределеннойИнформационнойБазы(ИмяПланаОбмена) Экспорт // Возвращаемое значение
// Структура - со свойствами:
/// ПоляРегистрации - Массив - массив строк. Например: "ФизическоеЛицо" или "ФизическиеЛица.ФизическоеЛицо".
/// ПоляДоступа - Массив - массив строк. Например: "ИНН" или "ФизическиеЛица.ИНН".
//
Функция ИменаПолейСведенийОПерсональныхДанныхОбъекта(ИмяОбъекта)
Возврат Метаданные.ПланыОбмена[ИмяПланаОбмена].РаспределеннаяИнформационнаяБаза; ИменаПолейРегистрации = Новый Массив;
ИменаПолейДоступа = Новый Массив;
ТаблицаСведений = ЗащитаПерсональныхДанныхПовтИсп.СведенияОПерсональныхДанных();
СтрокиСведений = ТаблицаСведений.НайтиСтроки(Новый Структура("Объект", ИмяОбъекта));
Для Каждого СтрокаСведений Из СтрокиСведений Цикл
ПоляДоступа = СтрРазделить(СтрокаСведений.ПоляДоступа, ",");
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ИменаПолейДоступа, ПоляДоступа, Истина);
ПоляРегистрации = СтрРазделить(СтрокаСведений.ПоляРегистрации, ",|");
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ИменаПолейРегистрации, ПоляРегистрации, Истина);
КонецЦикла;
Возврат Новый Структура("ПоляДоступа,ПоляРегистрации", ИменаПолейДоступа, ИменаПолейРегистрации);
КонецФункции
Функция ИменаТЧОбъектаСодержащихСведенияОПерсональныхДанных(ИменаТЧОбъекта, ИменаРеквизитов)
ИменаТЧСодержащихСведения = Новый Массив;
Для Каждого ИмяТЧОбъекта Из ИменаТЧОбъекта Цикл
ПодстрокаПоиска = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1.", ИмяТЧОбъекта);
Для Каждого ИмяРеквизита Из ИменаРеквизитов Цикл
Если СтрНайти(ИмяРеквизита, ПодстрокаПоиска) <> 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,86 +446,54 @@
// ИдентификаторФайла - УникальныйИдентификатор файла обрабатываемых курсов. // ИдентификаторФайла - УникальныйИдентификатор файла обрабатываемых курсов.
// КодОбработчика - Строка, код обработчика. // КодОбработчика - Строка, код обработчика.
// //
Процедура РаспространитьКурсыПоОД(Знач ДатаКурсов, Знач ТаблицаКурсов, Процедура РаспространитьКурсыПоОД(Знач ДатаКурсов, Знач ТаблицаКурсов, Знач ОбластиДляОбновления, Знач ИдентификаторФайла, Знач КодОбработчика)
Знач ОбластиДляОбновления, Знач ИдентификаторФайла, Знач КодОбработчика)
ВалютыОбластей = Новый Соответствие();
ЗапросОбщий = Новый Запрос();
ЗапросОбщий.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ЗапросОбщий.УстановитьПараметр("ПоставляемыеКурсы", ТаблицаКурсов);
ЗапросОбщий.УстановитьПараметр("ТолькоЗаОдинДень", ДатаКурсов <> Неопределено);
ЗапросОбщий.УстановитьПараметр("ДатаКурсов", ДатаКурсов);
ЗапросОбщий.УстановитьПараметр("НачалоПоставкиКурсов", Дата("19800101"));
Для каждого ОбластьДанных Из ОбластиДляОбновления Цикл Для каждого ОбластьДанных Из ОбластиДляОбновления Цикл
Попытка
РаботаВМоделиСервиса.УстановитьРазделениеСеанса(Истина, ОбластьДанных);
Исключение
РаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось установить разделение сеанса %1 по причине:
|%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
Формат(ОбластьДанных, "ЧН=0; ЧГ=0"),
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Распространение курсов валют по областям данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
ТекстОшибки);
Продолжить;
КонецПопытки;
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
РаботаВМоделиСервиса.УстановитьРазделениеСеанса(Истина, ОбластьДанных); ОбработатьКурсыОбластиВТранзакции(ЗапросОбщий, ВалютыОбластей, ТаблицаКурсов);
РаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);
ЗапросВалюты = Новый Запрос;
ЗапросВалюты.Текст =
"ВЫБРАТЬ
| Валюты.Ссылка,
| Валюты.Код
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
| Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета)";
ВыборкаВалюты = ЗапросВалюты.Выполнить().Выбрать();
Пока ВыборкаВалюты.Следующий() Цикл
Курсы = ТаблицаКурсов.НайтиСтроки(Новый Структура("Код", ВыборкаВалюты.Код));
Если Курсы.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(ВыборкаВалюты.Ссылка);
Если ДатаКурсов <> Неопределено Тогда
НаборЗаписей.Отбор.Период.Установить(ДатаКурсов);
Иначе
// Блокируем неэффективное обновление связанных валют.
НаборЗаписей.ОбменДанными.Загрузка = Истина;
КонецЕсли;
Для каждого СтрокаКурсов Из Курсы Цикл
Запись = НаборЗаписей.Добавить();
Запись.Валюта = ВыборкаВалюты.Ссылка;
Запись.Период = СтрокаКурсов.Дата;
Запись.Кратность = СтрокаКурсов.Кратность;
Запись.Курс = СтрокаКурсов.Курс;
КонецЦикла;
// Проверяем дату запрета изменений.
Записывать = Истина;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДатыЗапретаИзменения") Тогда
МодульДатыЗапретаИзмененияСлужебный = ОбщегоНазначения.ОбщийМодуль("ДатыЗапретаИзмененияСлужебный");
Если МодульДатыЗапретаИзмененияСлужебный.ЗапретИзмененияПроверяется(Метаданные.РегистрыСведений.КурсыВалют) Тогда
МодульДатыЗапретаИзменения = ОбщегоНазначения.ОбщийМодуль("ДатыЗапретаИзменения");
Записывать = Не МодульДатыЗапретаИзменения.ИзменениеЗапрещено(НаборЗаписей);
КонецЕсли;
КонецЕсли;
Если Записывать Тогда
НаборЗаписей.Записать();
Иначе
Комментарий = НСтр("ru = 'Загрузка курса валюты %1 на дату %2 отменена из-за нарушения даты запрета изменений.'");
Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Комментарий, ВыборкаВалюты.Код, ДатаКурсов);
ИмяСобытия = НСтр("ru = 'Поставляемые данные.Отмена загрузки курсов валюты'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка());
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Информация,, ВыборкаВалюты.Ссылка, Комментарий);
КонецЕсли;
// Проверка наличие установленного курса и кратности валюты на 1 января 1980 года.
РаботаСКурсамиВалют.ПроверитьКорректностьКурсаНа01_01_1980(ВыборкаВалюты.Ссылка);
КонецЦикла;
ПоставляемыеДанные.ОбластьОбработана(ИдентификаторФайла, КодОбработчика, ОбластьДанных); ПоставляемыеДанные.ОбластьОбработана(ИдентификаторФайла, КодОбработчика, ОбластьДанных);
ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию();
Исключение Исключение
ОтменитьТранзакцию(); ОтменитьТранзакцию();
РаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь);
ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Распространение курсов валют по областям данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Распространение курсов валют по областям данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,, УровеньЖурналаРегистрации.Ошибка,,,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки; КонецПопытки;
@@ -490,48 +501,197 @@
КонецПроцедуры КонецПроцедуры
// Вызывается после загрузки данных в область или при изменении способа установки курса валюты. Функция СвойстваПоставляемойВалюты(ВалютыОбластей, КодВалюты, ТаблицаКурсов, ЗапросОбщий)
// Копирует курсы одной валюты за все даты из
// неразделенного xml файла в разделенный регистр.
//
// Параметры:
// КодВалюты - Строка
//
Процедура КопироватьКурсыВалюты(Знач КодВалюты) Экспорт
ВалютаСсылка = Справочники.Валюты.НайтиПоКоду(КодВалюты); СвойстваВалюты = ВалютыОбластей.Получить(КодВалюты);
Если ВалютаСсылка.Пустая() Тогда
Возврат; Если СвойстваВалюты <> Неопределено Тогда
Возврат СвойстваВалюты;
КонецЕсли; КонецЕсли;
ТипДанныхКурса = ФабрикаXDTO.Тип("http://www.1c.ru/SaaS/SuppliedData/CurrencyRates", "Rate"); ПоставляемыеКурсы = ТаблицаКурсов.Скопировать(Новый Структура("Код", КодВалюты));
Фильтр = Новый Массив; СвойстваВалюты = Новый Структура("Поставляемая, ПорядковыйНомер", Ложь, Неопределено);
Фильтр.Добавить(Новый Структура("Код, Значение", "Валюта", КодВалюты));
Курсы = ПоставляемыеДанные.СсылкиПоставляемыхДанныхИзКэша("КурсыОднойВалюты", Фильтр); Если ПоставляемыеКурсы.Количество() = 0 Тогда
Если Курсы.Количество() = 0 Тогда
Возврат; ВалютыОбластей.Вставить(КодВалюты, СвойстваВалюты);
Возврат СвойстваВалюты;
КонецЕсли; КонецЕсли;
ПутьКФайлу = ПолучитьИмяВременногоФайла(); ПорядковыйНомер = Формат(ЗапросОбщий.МенеджерВременныхТаблиц.Таблицы.Количество() + 1, "ЧН=0; ЧГ=0");
ПоставляемыеДанные.ПоставляемыеДанныеИзКэша(Курсы[0]).Записать(ПутьКФайлу);
ТаблицаКурсов = ПрочитатьТаблицуКурсов(ПутьКФайлу, Истина);
УдалитьФайлы(ПутьКФайлу);
ТаблицаКурсов.Колонки.Дата.Имя = "Период"; ТекстЗапроса =
ТаблицаКурсов.Колонки.Добавить("Валюта"); "ВЫБРАТЬ
ТаблицаКурсов.ЗаполнитьЗначения(ВалютаСсылка, "Валюта"); | ПоставляемыеКурсы.Дата КАК Дата,
| ПоставляемыеКурсы.Кратность КАК Кратность,
| ПоставляемыеКурсы.Курс КАК Курс
|ПОМЕСТИТЬ КурсыВалютыNNN
|ИЗ
| &ПоставляемыеКурсы КАК ПоставляемыеКурсы
|ГДЕ
| ПоставляемыеКурсы.Код = &КодВалюты
| И ПоставляемыеКурсы.Дата > &НачалоПоставкиКурсов
| И ВЫБОР
| КОГДА &ТолькоЗаОдинДень
| ТОГДА ПоставляемыеКурсы.Дата = &ДатаКурсов
| ИНАЧЕ ИСТИНА
| КОНЕЦ";
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); ЗапросОбщий.Текст = СтрЗаменить(ТекстЗапроса, "NNN", ПорядковыйНомер);
НаборЗаписей.Отбор.Валюта.Установить(ВалютаСсылка); ЗапросОбщий.Выполнить();
НаборЗаписей.Загрузить(ТаблицаКурсов);
НаборЗаписей.ОбменДанными.Загрузка = Истина;
НаборЗаписей.Записать(); СвойстваВалюты.Поставляемая = Истина;
СвойстваВалюты.ПорядковыйНомер = ПорядковыйНомер;
// Проверка наличие установленного курса и кратности валюты на 1 января 1980 года. ВалютыОбластей.Вставить(КодВалюты, СвойстваВалюты);
РаботаСКурсамиВалют.ПроверитьКорректностьКурсаНа01_01_1980(ВалютаСсылка);
Возврат СвойстваВалюты;
КонецФункции
Процедура ОбработатьКурсыОбластиВТранзакции(ЗапросОбщий, ВалютыОбластей, ТаблицаКурсов)
ЗапросВалюты = Новый Запрос;
ЗапросВалюты.Текст =
"ВЫБРАТЬ
| Валюты.Ссылка,
| Валюты.Код
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
| Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета)";
ВыборкаВалюты = ЗапросВалюты.Выполнить().Выбрать();
Пока ВыборкаВалюты.Следующий() Цикл
ЗапросОбщий.УстановитьПараметр("Валюта", ВыборкаВалюты.Ссылка);
ЗапросОбщий.УстановитьПараметр("КодВалюты", ВыборкаВалюты.Код);
СвойстваВалюты = СвойстваПоставляемойВалюты(ВалютыОбластей, ВыборкаВалюты.Код, ТаблицаКурсов, ЗапросОбщий);
Если НЕ СвойстваВалюты.Поставляемая Тогда
Продолжить;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| Сравнение.Дата КАК Дата,
| Сравнение.Кратность КАК Кратность,
| Сравнение.Курс КАК Курс,
| МАКСИМУМ(Сравнение.ВФайле) КАК ВФайле,
| МАКСИМУМ(Сравнение.ВДанных) КАК ВДанных
|ИЗ
| (ВЫБРАТЬ
| ПоставляемыеКурсы.Дата КАК Дата,
| ПоставляемыеКурсы.Кратность КАК Кратность,
| ПоставляемыеКурсы.Курс КАК Курс,
| 1 КАК ВФайле,
| 0 КАК ВДанных
| ИЗ
| КурсыВалютыNNN КАК ПоставляемыеКурсы
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| КурсыВалют.Период,
| КурсыВалют.Кратность,
| КурсыВалют.Курс,
| 0,
| 1
| ИЗ
| РегистрСведений.КурсыВалют КАК КурсыВалют
| ГДЕ
| КурсыВалют.Валюта = &Валюта
| И КурсыВалют.Период > &НачалоПоставкиКурсов
| И ВЫБОР
| КОГДА &ТолькоЗаОдинДень
| ТОГДА КурсыВалют.Период = &ДатаКурсов
| ИНАЧЕ ИСТИНА
| КОНЕЦ) КАК Сравнение
|
|СГРУППИРОВАТЬ ПО
| Сравнение.Дата,
| Сравнение.Кратность,
| Сравнение.Курс
|
|ИМЕЮЩИЕ
| МАКСИМУМ(Сравнение.ВФайле) <> МАКСИМУМ(Сравнение.ВДанных)
|
|УПОРЯДОЧИТЬ ПО
| Дата,
| ВДанных";
ЗапросОбщий.Текст = СтрЗаменить(ТекстЗапроса, "NNN", СвойстваВалюты.ПорядковыйНомер);
РезультатОбщий = ЗапросОбщий.Выполнить();
ВыборкаОбщий = РезультатОбщий.Выбрать();
ТекДата = Неопределено;
ПерваяИтерацияПоДате = Истина;
Пока ВыборкаОбщий.Следующий() Цикл
Если ТекДата <> ВыборкаОбщий.Дата Тогда
ПерваяИтерацияПоДате = Истина;
ТекДата = ВыборкаОбщий.Дата;
КонецЕсли;
Если НЕ ПерваяИтерацияПоДате Тогда
Продолжить;
КонецЕсли;
ПерваяИтерацияПоДате = Ложь;
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(ВыборкаВалюты.Ссылка);
НаборЗаписей.Отбор.Период.Установить(ВыборкаОбщий.Дата);
Если НЕ ЗапросОбщий.Параметры.ТолькоЗаОдинДень Тогда
// Блокируем неэффективное обновление связанных валют.
НаборЗаписей.ОбменДанными.Загрузка = Истина;
КонецЕсли;
Если ВыборкаОбщий.ВФайле = 1 Тогда
Запись = НаборЗаписей.Добавить();
Запись.Валюта = ВыборкаВалюты.Ссылка;
Запись.Период = ВыборкаОбщий.Дата;
Запись.Кратность = ВыборкаОбщий.Кратность;
Запись.Курс = ВыборкаОбщий.Курс;
КонецЕсли;
// Проверяем дату запрета изменений.
Записывать = Истина;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДатыЗапретаИзменения") Тогда
МодульДатыЗапретаИзмененияСлужебный = ОбщегоНазначения.ОбщийМодуль("ДатыЗапретаИзмененияСлужебный");
Если МодульДатыЗапретаИзмененияСлужебный.ЗапретИзмененияПроверяется(Метаданные.РегистрыСведений.КурсыВалют) Тогда
МодульДатыЗапретаИзменения = ОбщегоНазначения.ОбщийМодуль("ДатыЗапретаИзменения");
Записывать = Не МодульДатыЗапретаИзменения.ИзменениеЗапрещено(НаборЗаписей);
КонецЕсли;
КонецЕсли;
Если Записывать Тогда
НаборЗаписей.Записать();
Иначе
Комментарий = НСтр("ru = 'Загрузка курса валюты %1 на дату %2 отменена из-за нарушения даты запрета изменений.'");
Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Комментарий, ВыборкаВалюты.Код, ВыборкаОбщий.Дата);
ИмяСобытия = НСтр("ru = 'Поставляемые данные.Отмена загрузки курсов валюты'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка());
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Информация,, ВыборкаВалюты.Ссылка, Комментарий);
КонецЕсли;
КонецЦикла;
// Проверка наличие установленного курса и кратности валюты на 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"; Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -1149,9 +1149,13 @@
// Продолжение процедуры ПроверитьПодписи. // Продолжение процедуры ПроверитьПодписи.
Процедура ПроверитьПодписиПослеСозданияМенеджераКриптографии(МенеджерКриптографии, ДополнительныеПараметры) Экспорт Процедура ПроверитьПодписиПослеСозданияМенеджераКриптографии(МенеджерКриптографии, ДополнительныеПараметры) Экспорт
Если ТипЗнч(МенеджерКриптографии) <> Тип("МенеджерКриптографии") Тогда Если ТипЗнч(МенеджерКриптографии) <> Тип("МенеджерКриптографии")
И МенеджерКриптографии <> "СервисКриптографии" Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Если МенеджерКриптографии = "СервисКриптографии" Тогда
МенеджерКриптографии = Неопределено;
КонецЕсли;
ДополнительныеПараметры.Вставить("Индекс", -1); ДополнительныеПараметры.Вставить("Индекс", -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"?> <?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> <name>БиблиотекаСтандартныхПодсистем</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Библиотека стандартных подсистем, редакция 2.4</value> <value>Библиотека стандартных подсистем, редакция 2.4</value>
</synonym> </synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="c9766a33-70e1-41e8-932e-c28e9e69b9b9"/> <containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="7d7acd4f-d319-42ce-96f2-caef41d7fea4"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="63536cb6-bdbc-4c15-b6cd-9e9a30c3b90d"/> <containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="342cd250-4577-482e-8f87-9d36bb227244"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="bcb40b14-c202-4cb0-a909-4546ee2e464f"/> <containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="6db91263-f62a-42e9-8093-b16a4862d2b1"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="4b477dc4-12bb-4353-b861-5470e05a2535"/> <containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="8e59f9be-3dc3-4ed7-b5d2-64c6f79ea415"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="6c14d264-ff62-4d1f-b2b4-df3d85dff9da"/> <containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="7f5f10b4-4ed0-4ab1-9a27-f2c50d841417"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="94d0ee85-4924-40e2-9b38-f5beabfda0af"/> <containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="3a6d3110-50bb-473e-a1f9-41235abb9dc9"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="fd0e2f88-827b-461a-8a2f-79d14bc52c93"/> <containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="f710709d-6711-4c9a-b2fd-32e24dd11f6d"/>
<defaultRunMode>ManagedApplication</defaultRunMode> <defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant> <scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles> <defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles> <defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor> <vendor>Фирма &quot;1С&quot;</vendor>
<version>2.4.6.73</version> <version>2.4.6.78</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress> <updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents> <includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities> <usedMobileApplicationFunctionalities>
@@ -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 Цикл; Для Индекс = 0 По СписокПолей.Количество() - 1 Цикл;
@@ -510,8 +516,6 @@
Результат.ТипПункта = ОпределитьТипГородаПоКоду(Результат.ТипПункта); Результат.ТипПункта = ОпределитьТипГородаПоКоду(Результат.ТипПункта);
Результат.Вставить("Город", СокрЛП(Результат.ТипПункта + " " + Результат.ИмяНаселенногоПункта)); Результат.Вставить("Город", СокрЛП(Результат.ТипПункта + " " + Результат.ИмяНаселенногоПункта));
Результат.Вставить("Телефоны", "");
Результат.Вставить("Адрес", "");
КодРегиона = Сред(Результат.БИК, 3, 2); КодРегиона = Сред(Результат.БИК, 3, 2);
Регион = Регионы[КодРегиона]; Регион = Регионы[КодРегиона];
@@ -789,60 +793,30 @@
КлассификаторБанковОбъект.Код = СтруктураБанк.БИК; КлассификаторБанковОбъект.Код = СтруктураБанк.БИК;
КонецЕсли; КонецЕсли;
Если СтруктураБанк.Свойство("СВИФТБИК") Тогда Для Каждого Реквизит Из КлассификаторБанковОбъект.Метаданные().Реквизиты Цикл
Если КлассификаторБанковОбъект.СВИФТБИК <> СтруктураБанк.СВИФТБИК Тогда ИмяРеквизита = Реквизит.Имя;
Если Не ПустаяСтрока(СтруктураБанк.СВИФТБИК) Тогда Если СтруктураБанк.Свойство(ИмяРеквизита) И ТипЗнч(КлассификаторБанковОбъект[ИмяРеквизита]) = Тип("Строка") Тогда
КлассификаторБанковОбъект.СВИФТБИК = СтруктураБанк.СВИФТБИК; ОбновитьЗначениеРеквизита(КлассификаторБанковОбъект, ИмяРеквизита, СтруктураБанк[ИмяРеквизита]);
КонецЕсли;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЦикла;
Если СтруктураБанк.Свойство("ИНН") Тогда ОбновитьЗначениеРеквизита(КлассификаторБанковОбъект, "Наименование", СтруктураБанк.Наименование);
Если КлассификаторБанковОбъект.ИНН <> СтруктураБанк.ИНН Тогда
Если Не ПустаяСтрока(СтруктураБанк.ИНН) Тогда
КлассификаторБанковОбъект.ИНН = СтруктураБанк.ИНН;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если КлассификаторБанковОбъект.Наименование <> СтруктураБанк.Наименование Тогда
Если Не ПустаяСтрока(СтруктураБанк.Наименование) Тогда
КлассификаторБанковОбъект.Наименование = СтруктураБанк.Наименование;
КонецЕсли;
КонецЕсли;
Если КлассификаторБанковОбъект.КоррСчет <> СтруктураБанк.КоррСчет Тогда
Если Не ПустаяСтрока(СтруктураБанк.КоррСчет) Тогда
КлассификаторБанковОбъект.КоррСчет = СтруктураБанк.КоррСчет;
КонецЕсли;
КонецЕсли;
Если КлассификаторБанковОбъект.Город <> СтруктураБанк.Город Тогда
Если Не ПустаяСтрока(СтруктураБанк.Город) Тогда
КлассификаторБанковОбъект.Город = СтруктураБанк.Город;
КонецЕсли;
КонецЕсли;
Если КлассификаторБанковОбъект.Адрес <> СтруктураБанк.Адрес Тогда
Если Не ПустаяСтрока(СтруктураБанк.Адрес) Тогда
КлассификаторБанковОбъект.Адрес = СтруктураБанк.Адрес;
КонецЕсли;
КонецЕсли;
Если КлассификаторБанковОбъект.Телефоны <> СтруктураБанк.Телефоны Тогда
Если Не ПустаяСтрока(СтруктураБанк.Телефоны) Тогда
КлассификаторБанковОбъект.Телефоны = СтруктураБанк.Телефоны;
КонецЕсли;
КонецЕсли;
Если Не ПустаяСтрока(Регион) Тогда Если Не ПустаяСтрока(Регион) Тогда
Если КлассификаторБанковОбъект.Родитель <> Регион.Ссылка Тогда Если КлассификаторБанковОбъект.Родитель <> Регион.Ссылка Тогда
КлассификаторБанковОбъект.Родитель = Регион.Ссылка; КлассификаторБанковОбъект.Родитель = Регион.Ссылка;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Страна = "РФ";
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами");
Страна = МодульРаботаСАдресами.ОсновнаяСтрана();
КонецЕсли;
ОбновитьЗначениеРеквизита(КлассификаторБанковОбъект, "Страна", Страна);
Если КлассификаторБанковОбъект.Модифицированность() Тогда Если КлассификаторБанковОбъект.Модифицированность() Тогда
ФлагОбновленный = Истина; ФлагОбновленный = Истина;
КлассификаторБанковОбъект.Записать(); КлассификаторБанковОбъект.Записать();
КонецЕсли; КонецЕсли;
@@ -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 Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
Для Каждого ОбрабатываемоеСвойство Из ГруппаСвойствОбъекта.Строки Цикл Для Каждого ОбрабатываемоеСвойство Из ГруппаСвойствОбъекта.Строки Цикл
Если ОбрабатываемоеСвойство.Пометка = 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> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>Constant.ОценкаПроизводительностиПериодЗаписи</name> <name>Constant.ОценкаПроизводительностиПериодЗаписи</name>
<right> <right>
@@ -2986,93 +3073,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>InformationRegister.ДампыПлатформы</name> <name>InformationRegister.ДампыПлатформы</name>
<right> <right>
@@ -4005,6 +4005,45 @@
<value>false</value> <value>false</value>
</right> </right>
</object> </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> <object>
<name>Constant.ОценкаПроизводительностиПериодЗаписи</name> <name>Constant.ОценкаПроизводительностиПериодЗаписи</name>
<right> <right>
@@ -5609,45 +5648,6 @@
<value>false</value> <value>false</value>
</right> </right>
</object> </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> <object>
<name>InformationRegister.ДампыПлатформы</name> <name>InformationRegister.ДампыПлатформы</name>
<right> <right>
@@ -3,13 +3,6 @@
<setForNewObjects>false</setForNewObjects> <setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault> <setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects> <independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name> <name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right> <right>
@@ -41,6 +34,13 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>DataProcessor.ЖурналРегистрации</name> <name>DataProcessor.ЖурналРегистрации</name>
<right> <right>