3_1_3_323

This commit is contained in:
Компания 1С committed 2020-11-05 12:55:00 +03:00
1 parent 904212c216
commit c393650549
47 files changed
+807 -339

No files matched your search

@@ -669,6 +669,8 @@
И Не ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, ЭлементСписка.Значение) Тогда
ВывестиРодительскиеОбъекты(ЭлементСписка.Значение, НоваяСтрока, ВыведенныеОбъекты);
Иначе
ВывестиРодительскиеОбъекты(ЭлементСписка.Значение, ДеревоРодитель, ВыведенныеОбъекты);
КонецЕсли;
КонецЕсли;
@@ -893,6 +895,8 @@
И Не ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, Выборка.Ссылка) Тогда
ВывестиПодчиненныеОбъекты(Выборка.Ссылка, НоваяСтрока, ВыведенныеОбъекты);
Иначе
ВывестиПодчиненныеОбъекты(Выборка.Ссылка, ДеревоРодитель, ВыведенныеОбъекты);
КонецЕсли;
КонецЦикла;
@@ -4497,6 +4497,9 @@
Если Результат.ВариантМодифицирован Тогда
ОбновитьФорму(Результат);
Раздел = КорневаяСтрокаПоУмолчанию("СтруктураВарианта");
Элементы.СтруктураВарианта.Развернуть(Раздел.ПолучитьИдентификатор(), Истина);
КонецЕсли;
КонецПроцедуры
@@ -62,7 +62,7 @@
//
Функция КодРегионаПоНаименованию(Название) Экспорт
НаименованиеРегиона = СтрЗаменить(Название, "Кемеровская область - Кузбасс обл", "Кемеровская область - Кузбасс");
НаименованиеРегиона = АдресныйКлассификаторСлужебный.АдаптацияНазванияРегиона(Название);
СписокРегионов = АдресныйКлассификаторПовтИсп.СписокРегионов();
КодСубъектаРФ = СписокРегионов.Получить(ВРег(НаименованиеРегиона));
@@ -87,6 +87,17 @@
Возврат Варианты[0].КодСубъектаРФ;
КонецЕсли;
Если ЗначениеЗаполнено(ЧастиСлова.Сокращение) Тогда
СокращенияАдресныхОбъектов = АдресныйКлассификаторСлужебный.СокращенияАдресныхОбъектов(Новый Массив);
Если СокращенияАдресныхОбъектов.Получить(ВРег(ЧастиСлова.Сокращение)) <> Неопределено Тогда
НаименованиеРегиона = ЧастиСлова.Наименование + " " + СокращенияАдресныхОбъектов.Получить(ВРег(ЧастиСлова.Сокращение));
КодСубъектаРФ = СписокРегионов.Получить(ВРег(НаименованиеРегиона));
Если КодСубъектаРФ <> Неопределено Тогда
Возврат КодСубъектаРФ;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Неопределено;
КонецФункции
@@ -1927,6 +1927,18 @@
#Область СлужебныеПроцедурыИФункции
Функция АдаптацияНазванияРегиона(Название) Экспорт
Если СтрСравнить(Название, "Кемеровская область - Кузбасс обл") = 0
Или СтрСравнить(Название, "Кемеровская область - Кузбасс область") = 0
Или СтрСравнить(Название, "Кемеровская область") = 0 Тогда
Возврат "Кемеровская область - Кузбасс";
КонецЕсли;
Возврат СокрЛП(Название);
КонецФункции
// Параметры:
// НаименованияАдресныхОбъектов - Массив
// Возвращаемое значение:
@@ -2031,8 +2031,8 @@
СхемаКД = ОтчетМенеджер.ПолучитьМакет(ОтчетМетаданные.ОсновнаяСхемаКомпоновкиДанных.Имя);
Исключение
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось прочитать схему отчета:
|%1'"), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
НСтр("ru = 'Не удалось прочитать схему отчета %1:
|%2'"), ОтчетМетаданные.Имя, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписатьВЖурнал(УровеньЖурналаРегистрации.Предупреждение, ТекстОшибки, ОтчетМетаданные);
КонецПопытки;
// Чтение настроек вариантов отчета из схемы.
@@ -2041,8 +2041,8 @@
ВариантыНастроек = СхемаКД.ВариантыНастроек;
Исключение
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось прочитать список вариантов отчета:
|%1'"), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
НСтр("ru = 'Не удалось прочитать список вариантов отчета %1:
|%2'"), ОтчетМетаданные.Имя, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписатьВЖурнал(УровеньЖурналаРегистрации.Предупреждение, ТекстОшибки, ОтчетМетаданные);
КонецПопытки;
КонецЕсли;
@@ -2052,8 +2052,8 @@
ВариантыНастроек = ОтчетМенеджер.ВариантыНастроек();
Исключение
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось прочитать список вариантов отчета из модуля менеджера:
|%1'"), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
НСтр("ru = 'Не удалось прочитать список вариантов отчета %1 из модуля менеджера:
|%2'"), ОтчетМетаданные.Имя, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписатьВЖурнал(УровеньЖурналаРегистрации.Ошибка, ТекстОшибки, ОтчетМетаданные);
КонецПопытки;
КонецЕсли;
@@ -2579,7 +2579,7 @@
Команда.ПараметрыФормы = Новый Структура;
КонецЕсли;
Команда.ПараметрыФормы.Вставить("КлючВарианта", КомандаОтчетов.КлючВарианта);
Если ПустаяСтрока(Команда.Обработчик) Тогда
Если ПустаяСтрока(Команда.Обработчик) И Не Команда.ПараметрыФормы.Свойство("СформироватьПриОткрытии") Тогда
Команда.ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
КонецЕсли;
КонецЦикла;
@@ -65,10 +65,6 @@
МодульДополнительныеОтчетыИОбработкиВМоделиСервиса.ПриДобавленииОбработчиковОбновления(Обработчики);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ИнтерфейсOData") Тогда
Обработки["НастройкаСтандартногоИнтерфейсаOData"].ЗарегистрироватьОбработчикиОбновления(Обработчики);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -182,6 +178,11 @@
МодульОбменДаннымиВМоделиСервиса.ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УдалениеПомеченныхОбъектов") Тогда
МодульУдалениеПомеченныхОбъектовСлужебный = ОбщегоНазначения.ОбщийМодуль("УдалениеПомеченныхОбъектовСлужебный");
МодульУдалениеПомеченныхОбъектовСлужебный.ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы);
КонецЕсли;
КонецПроцедуры
// См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриРегистрацииОбработчиковВыгрузкиДанных.
@@ -2322,6 +2323,11 @@
МодульУправлениеДоступомСлужебный.ПриОпределенииОбъектовИсключаемыхИзПроверки(Объекты);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда
МодульОбменДаннымиСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиСервер");
МодульОбменДаннымиСервер.ПриОпределенииОбъектовИсключаемыхИзПроверки(Объекты);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -4514,6 +4514,11 @@
КонецПроцедуры
// См. ИнтеграцияПодсистемБСП.ПриОпределенииОбъектовИсключаемыхИзПроверки.
Процедура ПриОпределенииОбъектовИсключаемыхИзПроверки(Объекты) Экспорт
Объекты.Добавить(Метаданные.РегистрыСведений.СоответствияОбъектовИнформационныхБаз);
КонецПроцедуры
#КонецОбласти
#Область ФункцииСвойства
@@ -3539,38 +3539,7 @@
// ИмяОбработчика - Строка - полное имя процедуры отложенного обработчика.
//
Процедура УдалитьОтложенныйОбработчикИзОчереди(ИмяОбработчика) Экспорт
СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы();
ОтобранныйОбработчик = СведенияОбОбновлении.ДеревоОбработчиков.Строки.НайтиСтроки(Новый Структура("ИмяОбработчика", ИмяОбработчика), Истина);
Если ОтобранныйОбработчик <> Неопределено И ОтобранныйОбработчик.Количество() > 0 Тогда
Для Каждого СтрокаОбработчик Из ОтобранныйОбработчик Цикл
СтрокаОбработчик.Родитель.Строки.Удалить(СтрокаОбработчик);
КонецЦикла;
КонецЕсли;
Для Каждого ШагОбновления Из СведенияОбОбновлении.ПланОтложенногоОбновления Цикл
ОбработчикиШага = ШагОбновления.Обработчики;
Индекс = 0;
ОбработчикНайден = Ложь;
Для Каждого ОписаниеОбработчика Из ОбработчикиШага Цикл
Если ОписаниеОбработчика.ИмяОбработчика = ИмяОбработчика Тогда
ОбработчикНайден = Истина;
Прервать;
КонецЕсли;
Индекс = Индекс + 1;
КонецЦикла;
Если ОбработчикНайден Тогда
ОбработчикиШага.Удалить(Индекс);
Прервать;
КонецЕсли;
КонецЦикла;
ОбновлениеИнформационнойБазыСлужебный.ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении);
Возврат;
КонецПроцедуры
#КонецОбласти
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.3.303";
Описание.Версия = "3.1.3.323";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -317,6 +317,10 @@
// * Установленные - Массив - имена (Строка) установленных исправлений.
// * НеУстановлено - Число - количество неустановленных исправлений.
// * НеУдалено - Число - количество неудаленных исправлений.
// * Ошибки - Массив из Структура:
// * НомерПатча - Строка - полное имя патча.
// * Событие - Строка - событие, при котором возникла ошибка. Установка или Удаление.
// * Причина - Строка - подробное описание ошибки.
//
Функция УстановкаИУдалениеИсправлений(Исправления, ВФоне = Ложь) Экспорт
@@ -326,6 +330,7 @@
РезультатВыполнения.Вставить("НеУстановлено", 0);
РезультатВыполнения.Вставить("НеУдалено", 0);
РезультатВыполнения.Вставить("Установленные", Новый Массив);
РезультатВыполнения.Вставить("Ошибки", Новый Массив);
Если Исправления.Свойство("Установить", Устанавливаемые)
И Устанавливаемые <> Неопределено
И Устанавливаемые.Количество() > 0 Тогда
@@ -408,6 +413,12 @@
ЗаписьЖурналаРегистрации(НСтр("ru = 'Исправления.Установка'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки);
КонецЕсли;
ОписаниеОшибки = Новый Структура;
ОписаниеОшибки.Вставить("НомерПатча", ИмяИсправления);
ОписаниеОшибки.Вставить("Событие", "Установка");
ОписаниеОшибки.Вставить("Причина", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
РезультатВыполнения.Ошибки.Добавить(ОписаниеОшибки);
КонецПопытки;
КонецЦикла;
КонецЕсли;
@@ -424,6 +435,7 @@
Продолжить;
КонецЕсли;
Попытка
ИмяИсправления = Расширение.Имя;
СвойстваИсправления = СвойстваИсправления(Расширение.Имя);
Если СвойстваИсправления = "ОшибкаЧтения" Или СвойстваИсправления = Неопределено Тогда
Продолжить;
@@ -446,6 +458,12 @@
|%2'"), Расширение.Имя, КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
ЗаписьЖурналаРегистрации(НСтр("ru = 'Исправления.Удаление'", ОбщегоНазначения.КодОсновногоЯзыка())
, УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки);
ОписаниеОшибки = Новый Структура;
ОписаниеОшибки.Вставить("НомерПатча", ИмяИсправления);
ОписаниеОшибки.Вставить("Событие", "Удаление");
ОписаниеОшибки.Вставить("Причина", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
РезультатВыполнения.Ошибки.Добавить(ОписаниеОшибки);
КонецПопытки;
КонецЦикла;
КонецЕсли;
@@ -518,6 +518,8 @@
ПользовательСВ.АдресЭлектроннойПочты = ОписаниеПользователя.АдресЭлектроннойПочты;
ПользовательСВ.НомерТелефона = ОписаниеПользователя.Телефон;
ПользовательСВ.Заблокирован = ОписаниеПользователя.Недействителен ИЛИ ОписаниеПользователя.ПометкаУдаления;
УстановитьПривилегированныйРежим(Истина);
ПользовательСВ.Записать();
КонецПроцедуры
@@ -3232,6 +3232,9 @@
И ОбъектМетаданных.Родитель().Перерасчеты.Найти(ОбъектМетаданных.Имя) = ОбъектМетаданных Тогда
Возврат "Перерасчеты";
ИначеЕсли Метаданные.Обработки.Содержит(ОбъектМетаданных) Тогда
Возврат "Обработки";
Иначе
Возврат "";
@@ -401,7 +401,7 @@
СерииДиаграммы = РодительЭлементаНастроек.Серии; // КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных
Индекс = СерииДиаграммы.Индекс(ЭлементНастроек);
Если Индекс = -1 Тогда
ТочкиДиаграммы = РодительЭлементаНастроек.Серии; // КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных
ТочкиДиаграммы = РодительЭлементаНастроек.Точки; // КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных
Индекс = ТочкиДиаграммы.Индекс(ЭлементНастроек);
ИмяКоллекции = "Точки";
Иначе
@@ -2096,6 +2096,7 @@
Массив.Добавить(Метаданные.РегистрыСведений.ФайлыВРабочемКаталоге.ПолноеИмя());
Массив.Добавить(Метаданные.РегистрыСведений.СведенияОФайлах.ПолноеИмя());
Массив.Добавить("Справочник.Файлы.Реквизиты.ТекущаяВерсия");
КонецПроцедуры
@@ -344,20 +344,23 @@
Функция ВыполнитьРассылку(Отчеты, ПараметрыДоставки, НаименованиеРассылки = "", ПараметрыЖурнала = Неопределено) Экспорт
РассылкаВыполнена = Ложь;
УточненныеПараметрыДоставки = СтандартныеПараметрыДоставки();
ЗаполнитьЗначенияСвойств(УточненныеПараметрыДоставки, ПараметрыДоставки);
// Добавление дерева сформированных отчетов - табличных документов и отчетов, сохраненных в форматы (файлов).
ДеревоОтчетов = СоздатьДеревоОтчетов();
// Заполнение параметрами по умолчанию и проверка на заполненность ключевых параметров доставки.
Если Не ПроверитьИДозаполнитьПараметрыВыполнения(Отчеты, ПараметрыДоставки, НаименованиеРассылки, ПараметрыЖурнала) Тогда
Если Не ПроверитьИДозаполнитьПараметрыВыполнения(Отчеты, УточненныеПараметрыДоставки, НаименованиеРассылки, ПараметрыЖурнала) Тогда
Возврат Ложь;
КонецЕсли;
// Строка дерева общих (не персонализированных по получателям) отчетов.
ПараметрыДоставки.СтрокаОбщихОтчетов = ОпределитьСтрокуДереваДляПолучателя(ДеревоОтчетов, Неопределено, ПараметрыДоставки);
УточненныеПараметрыДоставки.СтрокаОбщихОтчетов = ОпределитьСтрокуДереваДляПолучателя(ДеревоОтчетов, Неопределено, УточненныеПараметрыДоставки);
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Инициализирована рассылка ''%1'', автор: ''%2'''"),
НаименованиеРассылки, ПараметрыДоставки.Автор);
НаименованиеРассылки, УточненныеПараметрыДоставки.Автор);
ЗаписьЖурнала(ПараметрыЖурнала,, ТекстСообщения);
@@ -378,11 +381,11 @@
// Инициализация отчета.
ПараметрыОтчета = Новый Структура("Отчет, Настройки, Форматы, ОтправлятьЕслиПустой");
ЗаполнитьЗначенияСвойств(ПараметрыОтчета, СтрокаОтчет);
Если Не ИнициализироватьОтчет(ПараметрыЖурнала, ПараметрыОтчета, ПараметрыДоставки.Персонализирована) Тогда
Если Не ИнициализироватьОтчет(ПараметрыЖурнала, ПараметрыОтчета, УточненныеПараметрыДоставки.Персонализирована) Тогда
Продолжить;
КонецЕсли;
Если ПараметрыДоставки.Персонализирована И НЕ ПараметрыОтчета.Персонализирован Тогда
Если УточненныеПараметрыДоставки.Персонализирована И НЕ ПараметрыОтчета.Персонализирован Тогда
ПараметрыОтчета.Ошибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Отчет ''%1'' не может сформирован, так как в его настройках не указан отбор по получателю рассылки.'"),
ПредставлениеОтчета);
@@ -395,12 +398,12 @@
Попытка
Если ПараметрыОтчета.Персонализирован Тогда
// В разрезе получателей
Для Каждого КлючИЗначение Из ПараметрыДоставки.Получатели Цикл
Для Каждого КлючИЗначение Из УточненныеПараметрыДоставки.Получатели Цикл
СформироватьИСохранитьОтчет(
ПараметрыЖурнала,
ПараметрыОтчета,
ДеревоОтчетов,
ПараметрыДоставки,
УточненныеПараметрыДоставки,
КлючИЗначение.Ключ);
КонецЦикла;
Иначе
@@ -409,7 +412,7 @@
ПараметрыЖурнала,
ПараметрыОтчета,
ДеревоОтчетов,
ПараметрыДоставки,
УточненныеПараметрыДоставки,
Неопределено);
КонецЕсли;
@@ -433,16 +436,16 @@
УровеньЖурналаРегистрации.Предупреждение,
НСтр("ru = 'Рассылка отчетов не выполнена, так как отчеты пустые или не сформированы из-за ошибок.'"));
ФайловаяСистема.УдалитьВременныйКаталог(ПараметрыДоставки.КаталогВременныхФайлов);
ФайловаяСистема.УдалитьВременныйКаталог(УточненныеПараметрыДоставки.КаталогВременныхФайлов);
Возврат Ложь;
КонецЕсли;
// Общие отчеты.
ОбщиеВложения = ПараметрыДоставки.СтрокаОбщихОтчетов.Строки.НайтиСтроки(Новый Структура("Уровень", 3), Истина);
ОбщиеВложения = УточненныеПараметрыДоставки.СтрокаОбщихОтчетов.Строки.НайтиСтроки(Новый Структура("Уровень", 3), Истина);
// Отправка личных отчетов (персонализированных).
Для Каждого СтрокаПолучатель Из ДеревоОтчетов.Строки Цикл
Если СтрокаПолучатель = ПараметрыДоставки.СтрокаОбщихОтчетов Тогда
Если СтрокаПолучатель = УточненныеПараметрыДоставки.СтрокаОбщихОтчетов Тогда
Продолжить; // Пропустить строку дерева общих отчетов.
КонецЕсли;
@@ -458,18 +461,18 @@
ВложенияПолучателя = ОбъединитьМассивы(ОбщиеВложения, ЛичныеВложения);
// Формирование представления отчетов.
СформироватьПредставлениеОтчетовДляПолучателя(ПараметрыДоставки, СтрокаПолучатель);
СформироватьПредставлениеОтчетовДляПолучателя(УточненныеПараметрыДоставки, СтрокаПолучатель);
// Архивация вложений.
АрхивацияВложений(ВложенияПолучателя, ПараметрыДоставки, СтрокаПолучатель.Значение);
АрхивацияВложений(ВложенияПолучателя, УточненныеПараметрыДоставки, СтрокаПолучатель.Значение);
ПредставлениеПолучателя = Строка(СтрокаПолучатель.Ключ);
// Доставка.
Попытка
ОтправитьОтчетыПолучателю(ВложенияПолучателя, ПараметрыДоставки, СтрокаПолучатель);
ОтправитьОтчетыПолучателю(ВложенияПолучателя, УточненныеПараметрыДоставки, СтрокаПолучатель);
РассылкаВыполнена = Истина;
ПараметрыДоставки.ВыполненаПоЭлектроннойПочте = Истина;
УточненныеПараметрыДоставки.ВыполненаПоЭлектроннойПочте = Истина;
Исключение
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось отправить отчеты получателю ''%1'':'"), ПредставлениеПолучателя);
@@ -478,20 +481,20 @@
КонецПопытки;
Если РассылкаВыполнена Тогда
ПараметрыДоставки.Получатели.Удалить(СтрокаПолучатель.Ключ);
УточненныеПараметрыДоставки.Получатели.Удалить(СтрокаПолучатель.Ключ);
КонецЕсли;
КонецЦикла;
// Отправка общих отчетов.
Если ОбщиеВложения.Количество() > 0 Тогда
// Представление отчетов.
СформироватьПредставлениеОтчетовДляПолучателя(ПараметрыДоставки, СтрокаПолучатель);
СформироватьПредставлениеОтчетовДляПолучателя(УточненныеПараметрыДоставки, СтрокаПолучатель);
// Архивация вложений.
АрхивацияВложений(ОбщиеВложения, ПараметрыДоставки, ПараметрыДоставки.КаталогВременныхФайлов);
АрхивацияВложений(ОбщиеВложения, УточненныеПараметрыДоставки, УточненныеПараметрыДоставки.КаталогВременныхФайлов);
// Доставка.
Если ВыполнитьДоставку(ПараметрыЖурнала, ПараметрыДоставки, ОбщиеВложения) Тогда
Если ВыполнитьДоставку(ПараметрыЖурнала, УточненныеПараметрыДоставки, ОбщиеВложения) Тогда
РассылкаВыполнена = Истина;
КонецЕсли;
КонецЕсли;
@@ -502,15 +505,15 @@
ЗаписьЖурнала(ПараметрыЖурнала, , НСтр("ru = 'Рассылка не выполнена'"));
КонецЕсли;
ФайловаяСистема.УдалитьВременныйКаталог(ПараметрыДоставки.КаталогВременныхФайлов);
ФайловаяСистема.УдалитьВременныйКаталог(УточненныеПараметрыДоставки.КаталогВременныхФайлов);
// Результат.
Если ПараметрыЖурнала.Свойство("БылиОшибки") Тогда
ПараметрыДоставки.БылиОшибки = ПараметрыЖурнала.БылиОшибки;
УточненныеПараметрыДоставки.БылиОшибки = ПараметрыЖурнала.БылиОшибки;
КонецЕсли;
Если ПараметрыЖурнала.Свойство("БылиПредупреждения") Тогда
ПараметрыДоставки.БылиПредупреждения = ПараметрыЖурнала.БылиПредупреждения;
УточненныеПараметрыДоставки.БылиПредупреждения = ПараметрыЖурнала.БылиПредупреждения;
КонецЕсли;
Возврат РассылкаВыполнена;
@@ -45,7 +45,7 @@
Если ПараметрыКлиента.Свойство("РаботаСВнешнимиРесурсамиЗаблокирована")
И ПараметрыКлиента.Свойство("РазделениеВключено")
И Не ПараметрыКлиента.РазделениеВключено Тогда
ЗаголовокПриложения = НСтр("ru = '[КОПИЯ]'") + " " + ЗаголовокПриложения;
ЗаголовокПриложения = "[" + НСтр("ru = 'КОПИЯ'") + "]" + " " + ЗаголовокПриложения;
КонецЕсли;
ОбщегоНазначенияКлиентПереопределяемый.ПриУстановкеЗаголовкаКлиентскогоПриложения(ЗаголовокПриложения, ПриЗапуске);
@@ -205,51 +205,47 @@
// - ДокументОбъект - объект, в котором будет выполнен поиск удаляемых объектов
//
// Возвращаемое значение:
// Массив из ЛюбаяСсылка - перечень удаляемых объектов, которые есть в источнике.
// Соответствие из КлючЗначение:
// * Ключ -ЛюбаяСсылка - перечень удаляемых объектов, которые есть в источнике.
// * Значение - Строка - представление ссылки
//
Функция СсылкиНаУдаляемыеОбъекты(Источник) Экспорт
СсылкиНаУдаляемыеОбъекты = Новый Соответствие;
ЗначенияСсылочныхТипов = Новый Массив;
МетаданныеИсточника = Источник.Метаданные();
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Источник, "Ссылка") Тогда
ЗначенияСсылочныхТипов = СсылкаНаУдаляемыеОбъектыВИсточнике(Источник, МетаданныеИсточника);
ОписанияСсылок = СсылкаНаУдаляемыеОбъектыВОбъекте(
ОписаниеОбъекта(Источник, МетаданныеИсточника),
МетаданныеИсточника);
ИначеЕсли ОбщегоНазначения.ЭтоКонстанта(МетаданныеИсточника) Тогда
ЗначениеКонстанты = Источник.Значение;
Если ОбщегоНазначения.ЭтоСсылка(ТипЗнч(ЗначениеКонстанты)) Тогда
ЗначенияСсылочныхТипов = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ЗначениеКонстанты);
ОписанияСсылок = НовыйСсылкиВОбъекте();
ОписаниеСсылки = ОписанияСсылок.Добавить();
ОписаниеСсылки.Ссылка = ЗначениеКонстанты;
ОписаниеСсылки.Таблица = МетаданныеИсточника.ПолноеИмя();
ОписаниеСсылки.Поле = "Значение";
КонецЕсли;
ИначеЕсли ЭтоНезависимыйРегистрСведений(МетаданныеИсточника) Тогда
ОписанияСсылок = СсылкиНаУдаляемыеОбъектыВНаборе(
ОписаниеНабора(Источник, МетаданныеИсточника),
МетаданныеИсточника);
Иначе
ЗначенияСсылочныхТипов = СсылкиНаУдаляемыеОбъектыВРегистрах(Источник, МетаданныеИсточника);
Возврат Новый Соответствие;
КонецЕсли;
ВремяСнятияБлокировки = ТекущаяДатаСеанса() - УдалениеПомеченныхОбъектовСлужебный.ВремяЖизниБлокировки();
Запрос = Новый Запрос("ВЫБРАТЬ
| УдаляемыеОбъекты.Объект КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(УдаляемыеОбъекты.Объект) КАК Представление
|ИЗ
| РегистрСведений.УдаляемыеОбъекты КАК УдаляемыеОбъекты
|ГДЕ
| УдаляемыеОбъекты.Объект В(&УдаляемыеОбъекты)
| И УдаляемыеОбъекты.ВремяБлокировки >= &ВремяСнятияБлокировки");
Запрос.УстановитьПараметр("УдаляемыеОбъекты", ЗначенияСсылочныхТипов);
Запрос.УстановитьПараметр("ВремяСнятияБлокировки", ВремяСнятияБлокировки);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
ЗначенияПометокУдаления = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(
РезультатЗапроса.ВыгрузитьКолонку("Ссылка"),
УдаляемыеСсылки = УдаляемыеСсылкиВКоллекции(
ОписанияСсылок.ВыгрузитьКолонку("Ссылка"));
УдаляемыеСсылкиПометкиУдаления = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(
УдаляемыеСсылки,
"ПометкаУдаления");
СсылкиНаУдаляемыеОбъекты = Новый Соответствие;
Для каждого ОбъектЗначениеПометки Из ЗначенияПометокУдаления Цикл
Если ОбъектЗначениеПометки.Значение Тогда
СсылкиНаУдаляемыеОбъекты.Вставить(
ОбъектЗначениеПометки.Ключ,
РезультатЗапроса.Найти(ОбъектЗначениеПометки.Ключ, "Ссылка").Представление);
КонецЕсли;
ДобавленныеСсылки = СсылкиДобавленныеПриИзмененииОбъекта(
ОписанияСсылок,
УдаляемыеСсылкиПометкиУдаления);
Для каждого ОписаниеСсылки Из ДобавленныеСсылки Цикл
СсылкиНаУдаляемыеОбъекты.Вставить(ОписаниеСсылки.Ссылка, ОписаниеСсылки.Представление);
КонецЦикла;
Возврат СсылкиНаУдаляемыеОбъекты;
@@ -421,8 +417,8 @@
КонецЦикла;
КонецПроцедуры
Функция СсылкиНаУдаляемыеОбъектыВРеквизитах(Источник, Реквизиты, ЭтоРегистрБухгалтерии = Ложь)
ЗначенияСсылочныхТипов = Новый Массив;
Функция СсылкиНаУдаляемыеОбъектыВРеквизитах(ОписаниеИсточника, Реквизиты)
ЗначенияСсылочныхТипов = НовыйСсылкиВОбъекте();
Для Каждого Реквизит Из Реквизиты Цикл
@@ -430,54 +426,52 @@
Продолжить;
КонецЕсли;
Значение = Источник[Реквизит.Имя];
Значение = ОписаниеИсточника.Источник[Реквизит.Имя];
ТипЗначения = ТипЗнч(Значение);
Если ЗначениеЗаполнено(Значение) И ОбщегоНазначения.ЭтоСсылка(ТипЗначения) Тогда
ЗначенияСсылочныхТипов.Добавить(Значение);
ИначеЕсли СтрНайти(Реквизит.Имя,"Субконто") > 0 И ЭтоРегистрБухгалтерии Тогда
СсылкиНаУдаляемыеОбъектыВСубконто(Значение, ЗначенияСсылочныхТипов);
ОписаниеСсылки = ЗначенияСсылочныхТипов.Добавить();
ОписаниеСсылки.Ссылка = Значение;
ОписаниеСсылки.Таблица = ОписаниеИсточника.Таблица;
ОписаниеСсылки.Поле = Реквизит.Имя;
ОписаниеСсылки.УсловиеОтбора = ОписаниеИсточника.УсловиеОтбора;
КонецЕсли;
КонецЦикла;
Возврат ЗначенияСсылочныхТипов;
КонецФункции
Процедура СсылкиНаУдаляемыеОбъектыВСубконто(Знач Значение, ЗначенияСсылочныхТипов)
Перем ЗначениеСубконто;
Для Каждого ЗначениеСубконто Из Значение Цикл
Если ЗначениеЗаполнено(ЗначениеСубконто.Значение)
И ОбщегоНазначения.ЭтоСсылка(ТипЗнч(ЗначениеСубконто.Значение)) Тогда
ЗначенияСсылочныхТипов.Добавить(ЗначениеСубконто.Значение);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция СсылкиНаУдаляемыеОбъектовВТабличныхЧастях(Источник, ТабличныеЧасти, ИмяКоллекцииРеквизитов = "Реквизиты")
ЗначенияСсылочныхТипов = Новый Массив;
Функция СсылкиНаУдаляемыеОбъектовВТабличныхЧастях(ОписаниеИсточника, ТабличныеЧасти, ИмяКоллекцииРеквизитов = "Реквизиты")
ЗначенияСсылочныхТипов = НовыйСсылкиВОбъекте();
Для Каждого ТабличнаяЧасть Из ТабличныеЧасти Цикл
Для Каждого СтрокаТЧ Из Источник[ТабличнаяЧасть.Имя] Цикл
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ЗначенияСсылочныхТипов,
СсылкиНаУдаляемыеОбъектыВРеквизитах(
СтрокаТЧ, ТабличнаяЧасть[ИмяКоллекцииРеквизитов]));
Для Каждого СтрокаТЧ Из ОписаниеИсточника.Источник[ТабличнаяЧасть.Имя] Цикл
ОписаниеТабличнойЧасти = ОбщегоНазначения.СкопироватьРекурсивно(ОписаниеИсточника);
ОписаниеТабличнойЧасти.Источник = СтрокаТЧ;
ОписаниеТабличнойЧасти.Таблица = ОписаниеИсточника.Таблица + "." + ТабличнаяЧасть.Имя;
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(
СсылкиНаУдаляемыеОбъектыВРеквизитах(ОписаниеТабличнойЧасти, ТабличнаяЧасть[ИмяКоллекцииРеквизитов]),
ЗначенияСсылочныхТипов);
КонецЦикла;
КонецЦикла;
Возврат ЗначенияСсылочныхТипов;
КонецФункции
Функция СсылкиНаУдаляемыеОбъектыВНабореЗаписей(НаборЗаписей, Знач Реквизиты, ЭтоРегистрБухгалтерии = Ложь)
ЗначенияСсылочныхТипов = Новый Массив;
Функция СсылкиНаУдаляемыеОбъектыВНабореЗаписей(ОписаниеИсточника, Знач Реквизиты, ЭтоРегистрБухгалтерии = Ложь)
ЗначенияСсылочныхТипов = НовыйСсылкиВОбъекте();
Для Каждого Запись Из НаборЗаписей Цикл
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ЗначенияСсылочныхТипов,
СсылкиНаУдаляемыеОбъектыВРеквизитах(Запись, Реквизиты, ЭтоРегистрБухгалтерии));
Для Каждого Запись Из ОписаниеИсточника.Источник Цикл
ОписаниеЗаписи = ОбщегоНазначения.СкопироватьРекурсивно(ОписаниеИсточника);
ОписаниеЗаписи.Источник = Запись;
Для каждого УсловиеОтбора Из ОписаниеИсточника.УсловиеОтбора Цикл
ОписаниеЗаписи.УсловиеОтбора.Вставить(УсловиеОтбора.Ключ, Запись[УсловиеОтбора.Ключ]);
КонецЦикла;
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(
СсылкиНаУдаляемыеОбъектыВРеквизитах(ОписаниеЗаписи, Реквизиты),
ЗначенияСсылочныхТипов);
КонецЦикла;
Возврат ЗначенияСсылочныхТипов;
@@ -507,41 +501,44 @@
#Область СсылкиНаУдаляемыеОбъекты
Функция СсылкаНаУдаляемыеОбъектыВИсточнике(Источник, МетаданныеИсточника)
ЗначенияСсылочныхТипов = Новый Массив;
Функция СсылкаНаУдаляемыеОбъектыВОбъекте(Источник, МетаданныеИсточника)
ЗначенияСсылочныхТипов = НовыйСсылкиВОбъекте();
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника, "СтандартныеРеквизиты") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ЗначенияСсылочныхТипов, СсылкиНаУдаляемыеОбъектыВРеквизитах(
Источник, МетаданныеИсточника.СтандартныеРеквизиты));
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(
СсылкиНаУдаляемыеОбъектыВРеквизитах(Источник, МетаданныеИсточника.СтандартныеРеквизиты),
ЗначенияСсылочныхТипов);
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника, "РеквизитыАдресации") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ЗначенияСсылочныхТипов, СсылкиНаУдаляемыеОбъектыВРеквизитах(
Источник, МетаданныеИсточника.РеквизитыАдресации));
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(
СсылкиНаУдаляемыеОбъектыВРеквизитах(Источник, МетаданныеИсточника.РеквизитыАдресации),
ЗначенияСсылочныхТипов);
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника, "Реквизиты") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ЗначенияСсылочныхТипов,
СсылкиНаУдаляемыеОбъектыВРеквизитах(Источник, МетаданныеИсточника.Реквизиты));
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(
СсылкиНаУдаляемыеОбъектыВРеквизитах(Источник, МетаданныеИсточника.Реквизиты),
ЗначенияСсылочныхТипов);
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника, "ТабличныеЧасти") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ЗначенияСсылочныхТипов, СсылкиНаУдаляемыеОбъектовВТабличныхЧастях(
Источник, МетаданныеИсточника.ТабличныеЧасти));
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(
СсылкиНаУдаляемыеОбъектовВТабличныхЧастях(Источник, МетаданныеИсточника.ТабличныеЧасти),
ЗначенияСсылочныхТипов);
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника,
"СтандартныеТабличныеЧасти") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ЗначенияСсылочныхТипов, СсылкиНаУдаляемыеОбъектовВТабличныхЧастях(
Источник, МетаданныеИсточника.СтандартныеТабличныеЧасти, "СтандартныеРеквизиты"));
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника,"СтандартныеТабличныеЧасти") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(
СсылкиНаУдаляемыеОбъектовВТабличныхЧастях(Источник, МетаданныеИсточника.СтандартныеТабличныеЧасти, "СтандартныеРеквизиты"),
ЗначенияСсылочныхТипов);
КонецЕсли;
Возврат ЗначенияСсылочныхТипов;
КонецФункции
Функция СсылкиНаУдаляемыеОбъектыВРегистрах(Источник, МетаданныеИсточника)
ЗначенияСсылочныхТипов = Новый Массив;
Функция СсылкиНаУдаляемыеОбъектыВНаборе(Источник, МетаданныеИсточника)
ЗначенияСсылочныхТипов = НовыйСсылкиВОбъекте();
ЭтоРегистрБухгалтерии = ОбщегоНазначения.ЭтоРегистрБухгалтерии(МетаданныеИсточника);
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника, "Измерения") Тогда
@@ -550,9 +547,9 @@
Иначе
Реквизиты = МетаданныеИсточника.Измерения;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ЗначенияСсылочныхТипов,
СсылкиНаУдаляемыеОбъектыВНабореЗаписей(Источник, Реквизиты, ЭтоРегистрБухгалтерии));
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(
СсылкиНаУдаляемыеОбъектыВНабореЗаписей(Источник, Реквизиты, ЭтоРегистрБухгалтерии),
ЗначенияСсылочныхТипов);
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника, "Ресурсы") Тогда
@@ -561,8 +558,9 @@
Иначе
Реквизиты = МетаданныеИсточника.Ресурсы;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ЗначенияСсылочныхТипов, СсылкиНаУдаляемыеОбъектыВНабореЗаписей(
Источник, Реквизиты, ЭтоРегистрБухгалтерии));
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(
СсылкиНаУдаляемыеОбъектыВНабореЗаписей(Источник, Реквизиты, ЭтоРегистрБухгалтерии),
ЗначенияСсылочныхТипов);
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника,"СтандартныеРеквизиты") Тогда
@@ -571,15 +569,15 @@
Иначе
Реквизиты = МетаданныеИсточника.СтандартныеРеквизиты;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ЗначенияСсылочныхТипов,
СсылкиНаУдаляемыеОбъектыВНабореЗаписей(Источник, Реквизиты, ЭтоРегистрБухгалтерии));
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(
СсылкиНаУдаляемыеОбъектыВНабореЗаписей(Источник, Реквизиты, ЭтоРегистрБухгалтерии),
ЗначенияСсылочныхТипов);
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеИсточника, "Реквизиты") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ЗначенияСсылочныхТипов,
СсылкиНаУдаляемыеОбъектыВНабореЗаписей(Источник, МетаданныеИсточника.Реквизиты, ЭтоРегистрБухгалтерии));
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(
СсылкиНаУдаляемыеОбъектыВНабореЗаписей(Источник, МетаданныеИсточника.Реквизиты, ЭтоРегистрБухгалтерии),
ЗначенияСсылочныхТипов);
КонецЕсли;
Возврат ЗначенияСсылочныхТипов;
@@ -619,6 +617,146 @@
ИЛИ ОтборМетаданных.Найти(Элемент.Метаданные().ПолноеИмя()) <> Неопределено);
КонецФункции
Функция ЭтоНезависимыйРегистрСведений(МетаданныеИсточника)
Результат = Истина;
Если НЕ ОбщегоНазначения.ЭтоРегистрСведений(МетаданныеИсточника) Тогда
Возврат Ложь;
КонецЕсли;
Для каждого СтандартныйРеквизит Из МетаданныеИсточника.СтандартныеРеквизиты Цикл
Если СтандартныйРеквизит.Имя = "Регистратор" Тогда
Результат = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
Функция НовыйСсылкиВОбъекте()
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Ссылка");
Таблица.Колонки.Добавить("Таблица", Новый ОписаниеТипов("Строка"));
Таблица.Колонки.Добавить("Поле", Новый ОписаниеТипов("Строка"));
Таблица.Колонки.Добавить("УсловиеОтбора", Новый ОписаниеТипов("Соответствие"));
Возврат Таблица;
КонецФункции
Функция ОписаниеОбъекта(Источник, МетаданныеИсточника)
Описание = Новый Структура;
Описание.Вставить("Источник", Источник);
Описание.Вставить("Таблица", МетаданныеИсточника.ПолноеИмя());
Описание.Вставить("УсловиеОтбора", Новый Соответствие);
Описание.УсловиеОтбора.Вставить("Ссылка", Источник.Ссылка);
Возврат Описание;
КонецФункции
Функция ОписаниеНабора(Источник, МетаданныеИсточника)
Описание = Новый Структура;
Описание.Вставить("Источник", Источник);
Описание.Вставить("Таблица", МетаданныеИсточника.ПолноеИмя());
Описание.Вставить("УсловиеОтбора", Новый Соответствие);
Для каждого Измерение Из МетаданныеИсточника.Измерения Цикл
Описание.УсловиеОтбора.Вставить(Измерение.Имя);
КонецЦикла;
Для каждого Реквизит Из МетаданныеИсточника.СтандартныеРеквизиты Цикл
Если СтрСравнить(Реквизит.Имя, "Период") Тогда
Описание.УсловиеОтбора.Вставить(Реквизит.Имя);
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Описание;
КонецФункции
Функция СсылкиДобавленныеПриИзмененииОбъекта(ОписаниеСсылок, СсылкиПометкиУдаления)
Результат = Новый ТаблицаЗначений;
Результат.Колонки.Добавить("Ссылка");
Результат.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
РазделительЗапросовПакета = Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС;
ШаблонЗапроса = "
|ВЫБРАТЬ
| &ЗначениеСсылки КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(&ЗначениеСсылки) КАК Представление
|ГДЕ
| НЕ ИСТИНА В (
| ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| #ИмяТаблицы КАК Таблица
| ГДЕ
| &УсловияОтбораСсылки)";
СчПараметрыСсылок = 0;
СчПараметрыОтбора = 0;
Запрос = Новый Запрос;
Для каждого ОбъектЗначениеПометки Из СсылкиПометкиУдаления Цикл
Если НЕ ОбъектЗначениеПометки.Значение Тогда
Продолжить;
КонецЕсли;
ЗначениеСсылки = ОбъектЗначениеПометки.Ключ;
ОписанияСсылки = ОписаниеСсылок.НайтиСтроки(Новый Структура("Ссылка", ЗначениеСсылки));
Для каждого УдаляемаяСсылка Из ОписанияСсылки Цикл
ПараметрСсылки = "ЗначениеСсылки" + XMLСтрока(СчПараметрыСсылок);
ТекстЗапроса = СтрЗаменить(ШаблонЗапроса, "&ЗначениеСсылки", "&" + ПараметрСсылки);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ИмяТаблицы", УдаляемаяСсылка.Таблица);
Запрос.Параметры.Вставить(ПараметрСсылки, ЗначениеСсылки);
ТекстУсловия= Новый Массив;
Для каждого Условие Из УдаляемаяСсылка.УсловиеОтбора Цикл
ТекстУсловия.Добавить("Таблица." + Условие.Ключ + " = &Параметр" + СчПараметрыОтбора);
Запрос.Параметры.Вставить("Параметр" + XMLСтрока(СчПараметрыОтбора), Условие.Значение);
СчПараметрыОтбора= СчПараметрыОтбора + 1;
КонецЦикла;
ТекстУсловия.Добавить("Таблица." + УдаляемаяСсылка.Поле + " = &" + ПараметрСсылки);
ТекстОтбора = СтрСоединить(ТекстУсловия, Символы.ПС + "И" + Символы.НПП);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловияОтбораСсылки", ТекстОтбора);
Запрос.Текст = Запрос.Текст
+ ?(НЕ ПустаяСтрока(Запрос.Текст), РазделительЗапросовПакета, "")
+ ТекстЗапроса;
СчПараметрыСсылок = СчПараметрыСсылок + 1;
КонецЦикла;
КонецЦикла;
Если НЕ ПустаяСтрока(Запрос.Текст) Тогда
РезультатЗапроса = Запрос.Выполнить();
Результат = РезультатЗапроса.Выгрузить();
КонецЕсли;
Возврат Результат;
КонецФункции
Функция УдаляемыеСсылкиВКоллекции(ЗначенияСсылочныхТипов)
ВремяСнятияБлокировки = ТекущаяДатаСеанса() - УдалениеПомеченныхОбъектовСлужебный.ВремяЖизниБлокировки();
Запрос = Новый Запрос("ВЫБРАТЬ
| УдаляемыеОбъекты.Объект КАК Ссылка
|ИЗ
| РегистрСведений.УдаляемыеОбъекты КАК УдаляемыеОбъекты
|ГДЕ
| УдаляемыеОбъекты.Объект В(&УдаляемыеОбъекты)
| И УдаляемыеОбъекты.ВремяБлокировки >= &ВремяСнятияБлокировки");
Запрос.УстановитьПараметр("УдаляемыеОбъекты", ЗначенияСсылочныхТипов);
Запрос.УстановитьПараметр("ВремяСнятияБлокировки", ВремяСнятияБлокировки);
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ССылка");
КонецФункции
#КонецОбласти
#КонецОбласти
@@ -222,6 +222,14 @@
Возврат ДанныеКонстанты.Значение;
КонецФункции
// См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки.
Процедура ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы) Экспорт
Типы.Добавить(Метаданные.РегистрыСведений.УдаляемыеОбъекты);
Типы.Добавить(Метаданные.Константы.ПроверятьИспользованиеУдаляемыхОбъектов);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиПодписок
@@ -242,6 +250,10 @@
ЗапретитьИспользованиеУдаляемыхОбъектов(Источник, Отказ);
КонецПроцедуры
Процедура ЗапретитьИспользованиеУдаляемыхОбъектовВДокументахПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
ЗапретитьИспользованиеУдаляемыхОбъектов(Источник, Отказ);
КонецПроцедуры
#КонецОбласти
Функция ДопустимыеРежимыУдаления() Экспорт
@@ -305,6 +317,8 @@
Процедура ПроверкаАктивностиСеансаУдаленияОбъектов() Экспорт
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ОтключениеПроверкиИспользованияУдаляемыхОбъектов);
УстановитьПривилегированныйРежим(Истина);
Если НЕ ПроверятьИспользованиеУдаляемыхОбъектов() Тогда
Возврат;
КонецЕсли;
@@ -315,21 +329,22 @@
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| УдаляемыеОбъекты.ИдентификаторСеанса КАК ИдентификаторСеанса
| УдаляемыеОбъекты.ИдентификаторСеанса КАК ИдентификаторСеанса,
| УдаляемыеОбъекты.ВремяБлокировки КАК ВремяБлокировки
|ИЗ
| РегистрСведений.УдаляемыеОбъекты КАК УдаляемыеОбъекты
|ГДЕ
| УдаляемыеОбъекты.ВремяБлокировки <= &ВремяСнятияБлокировки";
| РегистрСведений.УдаляемыеОбъекты КАК УдаляемыеОбъекты";
Запрос.УстановитьПараметр("ВремяСнятияБлокировки", ВремяСнятияБлокировки);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Попытка
Если ВыборкаДетальныеЗаписи.ВремяБлокировки <= ВремяСнятияБлокировки
ИЛИ ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ВыборкаДетальныеЗаписи.ИдентификаторСеанса) = Неопределено Тогда
СнятьБлокировкуИспользованияУдаляемыхОбъектов(ВыборкаДетальныеЗаписи.ИдентификаторСеанса);
КонецЕсли;
Исключение
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Удаление помеченных'", ОбщегоНазначения.КодОсновногоЯзыка()),
@@ -700,6 +715,9 @@
Фильтр = Новый Структура(
"Метаданные",
Метаданные.РегламентныеЗадания.ОтключениеПроверкиИспользованияУдаляемыхОбъектов);
УстановитьПривилегированныйРежим(Истина);
ЗаданиеПроверки = РегламентныеЗаданияСервер.НайтиЗадания(Фильтр);
Для Каждого Задание Из ЗаданиеПроверки Цикл
@@ -720,6 +738,7 @@
// Не используется для неразделенного сеанса в модели сервиса.
//
Процедура УстановитьБлокировкуИспользованияУдаляемыхОбъектов(Пакет, Идентификатор) Экспорт
ЭтоМодельСервиса = ОбщегоНазначения.РазделениеВключено();
ВОбластиДанных = ?(ЭтоМодельСервиса, ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных(), Ложь);
Если ЭтоМодельСервиса И НЕ ВОбластиДанных Тогда
@@ -745,6 +764,9 @@
Фильтр = Новый Структура(
"Метаданные",
Метаданные.РегламентныеЗадания.ОтключениеПроверкиИспользованияУдаляемыхОбъектов);
УстановитьПривилегированныйРежим(Истина);
ЗаданиеПроверки = РегламентныеЗаданияСервер.НайтиЗадания(Фильтр);
Для Каждого Задание Из ЗаданиеПроверки Цикл
@@ -957,6 +979,13 @@
Процедура ЗапретитьИспользованиеУдаляемыхОбъектов(Источник, Отказ)
// ОбменДанными.Загрузка = Истина не устанавливается, т.к. необходимо выполнение
// при загрузке из внешних источников
Если МонопольныйРежим() Тогда
Возврат;
КонецЕсли;
Если Источник.ДополнительныеСвойства.Свойство("НеВыполнятьКонтрольУдаляемых")
ИЛИ ПараметрыСеанса.ВыполняетсяУдалениеОбъектов Тогда
Возврат;
@@ -997,16 +1026,38 @@
НСтр("ru='Не удалось выполнить контроль удаляемых объектов:'") + ПодробноеПредставлениеОшибки(Ошибка));
КонецПопытки;
Если СсылкиНаУдаляемыеОбъекты.Количество() > 0 Тогда
ШаблонСообщения = НСтр("ru = 'Выполняется удаление ""%1"".
|Замените ""%1"" на непомеченные на удаление аналоги.'");
ТекстСообщения = "";
Если СсылкиНаУдаляемыеОбъекты.Количество() = 1 Тогда
ПредставлениеСсылки = "";
Для Каждого УдаляемаяСсылка Из СсылкиНаУдаляемыеОбъекты Цикл
ОбщегоНазначения.СообщитьПользователю(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, УдаляемаяСсылка.Значение),
УдаляемаяСсылка.Ключ, , , Отказ);
ПредставлениеСсылки = ОбщегоНазначения.ПредметСтрокой(УдаляемаяСсылка.Ключ);
КонецЦикла;
ТекстСообщения = НСтр("ru = 'Выбранный элемент %1 в данный момент удаляется, т.к. был помечен на удаление.
|Необходимо выбрать другое значение.'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстСообщения,
ПредставлениеСсылки);
ИначеЕсли СсылкиНаУдаляемыеОбъекты.Количество() > 1 Тогда
ПредставлениеСсылок = Новый Массив;
Для Каждого УдаляемаяСсылка Из СсылкиНаУдаляемыеОбъекты Цикл
ПредставлениеСсылок.Добавить(ОбщегоНазначения.ПредметСтрокой(УдаляемаяСсылка.Ключ));
КонецЦикла;
ТекстСообщения = НСтр("ru = 'Выбранные элементы в данный момент удаляются, т.к. были помечены на удаление.
|Необходимо выбрать другие значения.
|%1'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстСообщения,
СтрСоединить(ПредставлениеСсылок, "-" + Символы.ПС));
КонецЕсли;
Если СсылкиНаУдаляемыеОбъекты.Количество() > 0 Тогда
ВызватьИсключение ТекстСообщения;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -1262,10 +1313,17 @@
СтрокаПрепятствующегоУдалению.СсылочногоТипа = ОбнаруженныйИнформация.Ссылочный;
СтрокаПрепятствующегоУдалению.ПредставлениеУдаляемый = Строка(Причина.УдаляемыйСсылка);
Если ОбщегоНазначения.ЭтоРегистр(Причина.Метаданные) Тогда
СтрокаПрепятствующегоУдалению.Представление = Причина.Метаданные.Синоним + " (" + НСтр(
"ru = 'Регистр'") + ")";
Иначе
СтрокаПрепятствующегоУдалению.Представление = Строка(Причина.МестоИспользования) + " ("
+ ОбнаруженныйИнформация.ПредставлениеЭлемента + ")";
КонецЕсли;
Вид = ОбнаруженныйИнформация.Вид;
КонецЕсли;
НомерКартинки = СтрокаПрепятствующегоУдалению.НомерКартинки;
СтрокаПрепятствующегоУдалению.НомерКартинки = ?(НомерКартинки <> 0, НомерКартинки, НомерКартинки(
СтрокаПрепятствующегоУдалению.ОбнаруженныйСсылка, СтрокаПрепятствующегоУдалению.СсылочногоТипа,
Вид, ОбнаруженныйСтатус));
@@ -21171,8 +21171,6 @@
Если Параметры = Неопределено Тогда
ЗаполнитьПараметрыОграничения(ПолноеИмя, ИдентификаторТранзакции, Ложь);
ДействующиеПараметрыОграниченияДоступа(ИдентификаторТранзакции, Неопределено, Ложь);
Параметры = КэшПараметровОграничения().ОграниченияСписков.Получить(ПолноеИмя);
КонецЕсли;
@@ -2558,6 +2558,10 @@
ОбновитьСтатусРегламентногоЗадания = (Объект.ИсправлятьУстаревшиеАдреса <> Параметры.ИсправлятьУстаревшиеАдреса);
Если Параметры.РедактированиеТолькоВДиалоге Тогда
Параметры.ВидРедактирования = "Диалог";
КонецЕсли;
ЗаполнитьЗначенияСвойств(Объект, Параметры, "Тип, МожноИзменятьСпособРедактирования,
|ВидРедактирования, ОбязательноеЗаполнение, РазрешитьВводНесколькихЗначений,
|ЗапретитьРедактированиеПользователем, Используется, ХранитьИсториюИзменений ,МеждународныйФорматАдреса, ИсправлятьУстаревшиеАдреса");
@@ -4896,7 +4900,7 @@
Если ПустоеПредставление Тогда
ФорматКонтактнойИнформации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтрокаКонтактнойИнформации.Вид,
"Тип, ВключатьСтрануВПредставление, ПроверятьПоФИАС");
"Тип, ВключатьСтрануВПредставление");
Если Метаданные.ОбщиеМодули.Найти("РаботаСАдресами") <> Неопределено Тогда
МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами");
@@ -1292,7 +1292,7 @@
Пока ВыборкаСвойств.Следующий() Цикл
Объект = ВыборкаСвойств.Ссылка.ПолучитьОбъект();
Объект.Наименование = Объект.Заголовок + " (" + Строка(ВыборкаСвойств.НаименованиеНабора) + ")";
Объект.Наименование = Объект.Заголовок;
Объект.ПометкаУдаления = ВыборкаСвойств.ПометкаУдаленияНабора;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект);
КонецЦикла;
@@ -948,8 +948,10 @@
КонецЕсли;
НоваяСтрокаТаблицыИдентификаторов = ТаблицаИдентификаторов.Добавить();
НоваяСтрокаТаблицыИдентификаторов.ИдентификаторНаСервере = ?(ЗаголовокПисьма.Идентификатор.Количество() = 0, "", ЗаголовокПисьма.Идентификатор[0]);
НоваяСтрокаТаблицыИдентификаторов.ИдентификаторПисьма = ЗаголовокПисьма.ИдентификаторСообщения;
НоваяСтрокаТаблицыИдентификаторов.ИдентификаторНаСервере = ?(ЗаголовокПисьма.Идентификатор.Количество() = 0,
"",
ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(ЗаголовокПисьма.Идентификатор[0], ""));
НоваяСтрокаТаблицыИдентификаторов.ИдентификаторПисьма = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(ЗаголовокПисьма.ИдентификаторСообщения, "");
КонецЦикла;
@@ -1003,7 +1005,7 @@
Для Каждого ЗаголовокПисьма Из МассивЗаголовковСПустымИдентификатором Цикл
НоваяСтрока = ТаблицаПустыхИдентификаторов.Добавить();
НоваяСтрока.ИдентификаторНаСервере = ЗаголовокПисьма.Идентификатор[0];
НоваяСтрока.ИдентификаторНаСервере = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(ЗаголовокПисьма.Идентификатор[0], "");
НоваяСтрока.ХешСумма = ХешСуммаПочтовогоСообщения(ЗаголовокПисьма);
КонецЦикла;
@@ -1413,7 +1415,7 @@
ТаблицаИдентификаторов.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка",,, Новый КвалификаторыСтроки(100)));
Для Каждого Идентификатор Из Идентификаторы Цикл
НоваяСтрока = ТаблицаИдентификаторов.Добавить();
НоваяСтрока.Идентификатор = Идентификатор;
НоваяСтрока.Идентификатор = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(Идентификатор, "");
КонецЦикла;
Возврат ТаблицаИдентификаторов;
@@ -1658,9 +1660,9 @@
Письмо.Важность = ПолучитьВажностьЭлектронногоПисьма(Сообщение.Важность);
Письмо.Дата = ?(Сообщение.ДатаОтправления = Дата(1,1,1), ТекущаяДатаСеанса(), Сообщение.ДатаОтправления);
Письмо.ВнутреннийЗаголовок = Сообщение.Заголовок;
Письмо.ИдентификаторНаСервере = ?(Сообщение.Идентификатор.Количество() = 0, "", Сообщение.Идентификатор[0]);
Письмо.ИдентификаторСообщения = Сообщение.ИдентификаторСообщения;
Письмо.ВнутреннийЗаголовок = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(Сообщение.Заголовок, "");
Письмо.ИдентификаторНаСервере = ?(Сообщение.Идентификатор.Количество() = 0, "", ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(Сообщение.Идентификатор[0], ""));
Письмо.ИдентификаторСообщения = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(Сообщение.ИдентификаторСообщения, "");
Письмо.Кодировка = Сообщение.Кодировка;
Письмо.УведомитьОДоставке = Сообщение.УведомитьОДоставке;
Письмо.УведомитьОПрочтении = Сообщение.УведомитьОПрочтении;
@@ -1686,10 +1688,13 @@
Письмо.ИдентификаторыОснований = Сообщение.ПолучитьПолеЗаголовка("References", "Строка");
Письмо.ХешСумма = ХешСуммаПочтовогоСообщения(Сообщение);
Для каждого Вложение Из Сообщение.Вложения Цикл
Для Каждого Вложение Из Сообщение.Вложения Цикл
Если ПустаяСтрока(Вложение.Идентификатор) Тогда
Письмо.ЕстьВложения = Истина;
Прервать;
ИначеЕсли СтрНайти(Письмо.ТекстHTML, Вложение.Идентификатор) = 0 Тогда
Письмо.ЕстьВложения = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
+10 -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="c475bee0-0fa7-11eb-0195-0242ac110002">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c0b25cec-1f4b-11eb-7686-0242ac110002">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="c475beea-0fa7-11eb-0195-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="c475bf1c-0fa7-11eb-0195-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="c475bf26-0fa7-11eb-0195-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="c475bf30-0fa7-11eb-0195-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="c475bf31-0fa7-11eb-0195-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="c475bf3a-0fa7-11eb-0195-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="9f074fc1-9ff3-48f2-bb9f-1f228cfb5eb6"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="c0b25ced-1f4b-11eb-7686-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="c0b25d14-1f4b-11eb-7686-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="c0b25d15-1f4b-11eb-7686-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="c0b25d16-1f4b-11eb-7686-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="c0b25d1e-1f4b-11eb-7686-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="c0b25d1f-1f4b-11eb-7686-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="1aae8131-249e-4634-b7b8-22aea0dc0388"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.3.303</version>
<version>3.1.3.323</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -1141,6 +1141,7 @@
<eventSubscriptions>EventSubscription.ЗаполнитьКонтактнуюИнформацию</eventSubscriptions>
<eventSubscriptions>EventSubscription.ЗаполнитьНаборыЗначенийДоступаТабличныхЧастей</eventSubscriptions>
<eventSubscriptions>EventSubscription.ЗаполнитьНаборыЗначенийДоступаТабличныхЧастейДокументовВзаимодействия</eventSubscriptions>
<eventSubscriptions>EventSubscription.ЗапретитьИспользованиеУдаляемыхОбъектовВДокументах</eventSubscriptions>
<eventSubscriptions>EventSubscription.ЗапретитьИспользованиеУдаляемыхОбъектовВКонстантах</eventSubscriptions>
<eventSubscriptions>EventSubscription.ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахЗаписей</eventSubscriptions>
<eventSubscriptions>EventSubscription.ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахРегистровРасчета</eventSubscriptions>
@@ -1 +1 @@
{6,1,1,1077329c-0fa8-11eb-e387-0242ac110002,1,0212180c-0fa8-11eb-f69d-0242ac110002,"3.1.3.303","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6173,1,0,c475bee0-0fa7-11eb-0195-0242ac110002,c475bee0-0fa7-11eb-0195-0242ac110002,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,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5Line truncated
{6,1,1,033f54a2-1f4c-11eb-8c81-0242ac110002,1,f80d1fc4-1f4b-11eb-1191-0242ac110002,"3.1.3.323","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6174,1,0,c0b25cec-1f4b-11eb-7686-0242ac110002,c0b25cec-1f4b-11eb-7686-0242ac110002,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,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5Line truncated
@@ -385,57 +385,6 @@
КонецФункции
#Область ОбработчикиОбновления
// Добавляет в список Обработчики процедуры-обработчики обновления,
// необходимые данной подсистеме.
//
// Параметры:
// Обработчики - см. ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления
//
Процедура ЗарегистрироватьОбработчикиОбновления(Обработчики) Экспорт
Если ОбщегоНазначения.РазделениеВключено() Тогда
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "*";
Обработчик.НачальноеЗаполнение = Истина;
Обработчик.Процедура = "Обработки.НастройкаСтандартногоИнтерфейсаOData.ПроверитьСоставРолиODataПриОбновлении";
Обработчик.ОбщиеДанные = Истина;
Обработчик.РежимВыполнения = "Оперативно";
КонецЕсли;
КонецПроцедуры
// Проверяет состав роли для стандартного интерфейса OData при обновлении информационной базы
Процедура ПроверитьСоставРолиODataПриОбновлении() Экспорт
Если ОбщегоНазначения.РазделениеВключено() Тогда
Ошибки = ОшибкиСоставаРолиOData();
Если Ошибки.Количество() > 0 Тогда
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Обнаружены ошибки в составе прав роли %1:'"),
РольДляСтандартногоИнтерфейсаOData().Имя);
Для Каждого Ошибка Из Ошибки Цикл
ТекстИсключения = ТекстИсключения + Символы.ПС + Символы.ВК + Символы.Таб + Ошибка;
КонецЦикла;
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Иначе
ВызватьИсключение НСтр("ru = 'Обработчик не должен использоваться при выключенном разделении по областям данных'");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
// АПК:581-вкл
#КонецОбласти
@@ -445,6 +445,8 @@
Приемники = Новый Массив;
ТаблицаПользователей = Новый ТаблицаЗначений;
ТаблицаПользователей.Колонки.Добавить("Пользователь");
ТаблицаПользователей.Колонки.Добавить("Подразделение");
ТаблицаПользователей.Колонки.Добавить("ФизическоеЛицо");
Обработки.НастройкиПользователей.ПользователиДляКопирования(ПользовательСсылка, ТаблицаПользователей,
ТипЗнч(ПользовательСсылка) = Тип("СправочникСсылка.ВнешниеПользователи"));
@@ -507,6 +509,8 @@
Приемники = Новый Массив;
ТаблицаПользователей = Новый ТаблицаЗначений;
ТаблицаПользователей.Колонки.Добавить("Пользователь");
ТаблицаПользователей.Колонки.Добавить("Подразделение");
ТаблицаПользователей.Колонки.Добавить("ФизическоеЛицо");
ТаблицаПользователей = Обработки.НастройкиПользователей.ПользователиДляКопирования(ПользовательСсылка, ТаблицаПользователей,
ТипЗнч(ПользовательСсылка) = Тип("СправочникСсылка.ВнешниеПользователи"));
@@ -544,6 +548,8 @@
МассивПользователей = Новый Массив;
ТаблицаПользователей = Новый ТаблицаЗначений;
ТаблицаПользователей.Колонки.Добавить("Пользователь");
ТаблицаПользователей.Колонки.Добавить("Подразделение");
ТаблицаПользователей.Колонки.Добавить("ФизическоеЛицо");
ТаблицаПользователей = Обработки.НастройкиПользователей.ПользователиДляКопирования(ПользовательСсылка, ТаблицаПользователей,
ТипЗнч(ПользовательСсылка) = Тип("СправочникСсылка.ВнешниеПользователи"));
@@ -766,6 +766,8 @@
МассивПользователей = Новый Массив;
ТаблицаПользователей = Новый ТаблицаЗначений;
ТаблицаПользователей.Колонки.Добавить("Пользователь");
ТаблицаПользователей.Колонки.Добавить("Подразделение");
ТаблицаПользователей.Колонки.Добавить("ФизическоеЛицо");
ТаблицаПользователей = Обработки.НастройкиПользователей.ПользователиДляКопирования("",
ТаблицаПользователей, Ложь, Истина);
@@ -342,6 +342,8 @@
Источники = Новый Массив;
ТаблицаПользователей = Новый ТаблицаЗначений;
ТаблицаПользователей.Колонки.Добавить("Пользователь");
ТаблицаПользователей.Колонки.Добавить("Подразделение");
ТаблицаПользователей.Колонки.Добавить("ФизическоеЛицо");
// Получаем список всех пользователей.
ТаблицаПользователей = Обработки.НастройкиПользователей.ПользователиДляКопирования("", ТаблицаПользователей, Ложь, Истина);
@@ -1086,9 +1086,11 @@
ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор());
Если Очистка Тогда
Запрос.Текст = ТекстЗапросаСпискаПользователей(Очистка)
+ Символы.ПС + Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС + Символы.ПС
Запрос.Текст = ТекстЗапросаСпискаПользователей(Очистка);
Если ВнешниеПользователи.ИспользоватьВнешнихПользователей() Тогда
Запрос.Текст = Запрос.Текст + Символы.ПС + Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС + Символы.ПС
+ ТекстЗапросаСпискаВнешнихПользователей(Очистка);
КонецЕсли;
Иначе
Запрос.Текст = ?(ПользовательВнешний, ТекстЗапросаСпискаВнешнихПользователей(Очистка),
ТекстЗапросаСпискаПользователей(Очистка))
@@ -1142,7 +1144,7 @@
ТекстЗапроса =
"ВЫБРАТЬ
| Пользователи.Ссылка КАК Пользователь,
| ВнешниеПользователи.Ссылка КАК Пользователь,
| Неопределено КАК Подразделение,
| Неопределено КАК ФизическоеЛицо
|ИЗ
@@ -1150,19 +1152,18 @@
|ГДЕ
| &КромеНедействительных
| И &КромеПомеченныхНаУдаление
| И Пользователи.Ссылка <> &ПользовательИсточник
| И НЕ(Пользователи.ИдентификаторПользователяИБ = &ПустойУникальныйИдентификатор
| И Пользователи.Ссылка <> &НеуказанныйПользователь)";
| И ВнешниеПользователи.Ссылка <> &ПользовательИсточник
| И НЕ(ВнешниеПользователи.ИдентификаторПользователяИБ = &ПустойУникальныйИдентификатор
| И ВнешниеПользователи.Ссылка <> &НеуказанныйПользователь)";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&КромеПомеченныхНаУдаление",
?(Очистка, "Истина", "НЕ Пользователи.ПометкаУдаления"));
?(Очистка, "Истина", "НЕ ВнешниеПользователи.ПометкаУдаления"));
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&КромеНедействительных",
?(Очистка, "Истина", "НЕ Пользователи.Недействителен"));
?(Очистка, "Истина", "НЕ ВнешниеПользователи.Недействителен"));
Возврат ТекстЗапроса;
КонецФункции
// Формирует дерево значений групп пользователей.
//
// Параметры:
@@ -204,6 +204,7 @@
ДеревоДел.Колонки.Добавить("Проверка", Новый ОписаниеТипов("Булево"));
Если ДеревоДел.Колонки.Найти("ВыводитьВОповещениях") = Неопределено Тогда
ДеревоДел.Колонки.Добавить("ВыводитьВОповещениях", Новый ОписаниеТипов("Булево"));
ДеревоДел.Колонки.Добавить("Скрытое", Новый ОписаниеТипов("Булево"));
ДеревоДел.Колонки.Добавить("Картинка", Новый ОписаниеТипов("Картинка"));
КонецЕсли;
ТекущийРаздел = "";
@@ -737,7 +737,7 @@
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</items>
<items xsi:type="form:Button">
<name>ФормаДобавитьНастройку</name>
@@ -791,6 +791,38 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>УдаляемыеОбъекты</name>
<id>81</id>
<visible>true</visible>
<enabled>false</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>УдаляемыеОбъектыРасширеннаяПодсказка</name>
<id>82</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.УдаляемыеОбъекты</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Picture</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>true</horizontalStretch>
<groupHorizontalAlign>Right</groupHorizontalAlign>
<placementArea>UserCmds</placementArea>
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.ДлительнаяОперация16</picture>
</picture>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</items>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
@@ -1059,6 +1091,28 @@
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>УдаляемыеОбъекты</name>
<title>
<key>ru</key>
<value>Заблокированные для использования объекты</value>
</title>
<id>5</id>
<toolTip>
<key>ru</key>
<value>Удаляемые объекты</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>УдаляемыеОбъекты</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -28,6 +28,7 @@
&НаКлиенте
Процедура ПриОткрытии(Отказ)
СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева(ЭтотОбъект, "НастройкиОтображенияОбъектов");
ПодключитьОбработчикОжидания("НачатьПроверкаБлокировкиУдаляемыхОбъектов",0.1, Истина);
КонецПроцедуры
#КонецОбласти
@@ -75,7 +76,6 @@
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
@@ -137,6 +137,11 @@
Закрыть(АдресХранилища);
КонецПроцедуры
&НаКлиенте
Процедура УдаляемыеОбъекты(Команда)
ОткрытьФорму("РегистрСведений.УдаляемыеОбъекты.ФормаСписка");
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -345,5 +350,36 @@
МонопольноеУдаление = 0;
ЭтотОбъект[Режим] = 1;
КонецПроцедуры
&НаКлиенте
Процедура НачатьПроверкаБлокировкиУдаляемыхОбъектов()
Оповещение = Новый ОписаниеОповещения("ЗавершитьПроверкаБлокировкиУдаляемыхОбъектов", ЭтотОбъект);
ДлительнаяОперация = НачатьПроверкаБлокировкиУдаляемыхОбъектовСервер();
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект));
КонецПроцедуры
&НаСервере
Функция НачатьПроверкаБлокировкиУдаляемыхОбъектовСервер()
ПараметрыФоновогоЗадания = ДлительныеОперации.ПараметрыВыполненияПроцедуры();
Возврат ДлительныеОперации.ВыполнитьПроцедуру(
ПараметрыФоновогоЗадания,
"УдалениеПомеченныхОбъектовСлужебный.ПроверкаАктивностиСеансаУдаленияОбъектов");
КонецФункции
&НаКлиенте
Процедура ЗавершитьПроверкаБлокировкиУдаляемыхОбъектов(Результат, ДополнительныеПараметры) Экспорт
ЗавершитьПроверкаБлокировкиУдаляемыхОбъектовСервер();
КонецПроцедуры
&НаСервере
Функция ЗавершитьПроверкаБлокировкиУдаляемыхОбъектовСервер()
Элементы.УдаляемыеОбъекты.Доступность = Истина;
Элементы.УдаляемыеОбъекты.Картинка = БиблиотекаКартинок.ВосклицательныйЗнакКрасный;
КонецФункции
#КонецОбласти
@@ -164,7 +164,8 @@
КонецЕсли;
ДлительныеОперации.ОтменитьВыполнениеЗадания(ВыполняемаяОперация.ИдентификаторЗадания);
УдалениеПомеченныхОбъектовСлужебный.СнятьБлокировкуИспользованияУдаляемыхОбъектов(УникальныйИдентификатор);
ИдентификаторЗадания = ?(ОбщегоНазначения.РежимОтладки(), УникальныйИдентификатор, ВыполняемаяОперация.ИдентификаторЗадания);
УдалениеПомеченныхОбъектовСлужебный.СнятьБлокировкуИспользованияУдаляемыхОбъектов(ИдентификаторЗадания);
УстановитьМонопольныйРежимНаСервере(Ложь);
КонецПроцедуры
@@ -228,7 +228,7 @@
РезультатУдаления = КодыРезультатаУдаления().НеПомеченНаУдаление;
ИначеЕсли РазрешеноУдалениеЭлемента(ДочерниеПодчиненныеЭлементы) Тогда
РезультатУдаления = КодыРезультатаУдаления().Успешно;
ДополнитьПакетДочернимиИПодчиненнымиЭлементами(Пакет, ДочерниеПодчиненныеЭлементы, Исключения);
ДополнитьПакетДочернимиИПодчиненнымиЭлементами(Пакет, ЭлементОчереди.УдаляемыйСсылка, ДочерниеПодчиненныеЭлементы, Исключения);
Иначе
РезультатУдаления = КодыРезультатаУдаления().ЕстьДочерниеПодчиненныеЭлементыНепомеченныеНаУдаление;
КонецЕсли;
@@ -240,6 +240,7 @@
ЭлементПакета.ДочерниеПодчиненныеОбъекты = ДочерниеПодчиненныеЭлементы;
ЭлементПакета.РезультатУдаления = РезультатУдаления;
ЭлементПакета.ЭтоОсновнойОбъект = Истина;
ЭлементПакета.ОсновнойЭлементСсылка = ЭлементОчереди.УдаляемыйСсылка;
КонецЕсли;
Возврат Пакет;
@@ -248,21 +249,70 @@
Функция ОбработатьПакет(ПараметрыУдаления, Пакет)
РезультатОбработкиПакета = РезультатОбработки();
Если ЗначениеЗаполнено(ПараметрыУдаления.ИдентификаторЗадания) Тогда
Если ЗначениеЗаполнено(ПараметрыУдаления.ИдентификаторЗадания) И ОбщегоНазначения.РежимОтладки() Тогда
Идентификатор = ПараметрыУдаления.ИдентификаторЗадания;
Иначе
Идентификатор = Новый УникальныйИдентификатор();
УстановитьПривилегированныйРежим(Истина);
Сеанс = ПолучитьТекущийСеансИнформационнойБазы();
ФоновоеЗадание = Сеанс.ПолучитьФоновоеЗадание();
Если ФоновоеЗадание = Неопределено Тогда
Идентификатор = Новый УникальныйИдентификатор;
Иначе
Идентификатор = ФоновоеЗадание.УникальныйИдентификатор;
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
ПередОбработкойПакета(Пакет, Идентификатор);
МестаИспользования = МестаИспользованияЭлементовПакета(ПараметрыУдаления, Пакет);
Буфер = Новый Структура;
Буфер.Вставить("Элементы", Новый Массив);
Буфер.Вставить("Код", КодыРезультатаУдаления().Успешно);
Буфер.Вставить("РезультатУдаления");
Для Каждого Элемент Из Пакет Цикл
РезультатУдаления = УдалитьЭлементПакета(ПараметрыУдаления,
Элемент,
МестаИспользования.Скопировать(Новый Структура("УдаляемыйСсылка", Элемент.УдаляемыйСсылка)));
ОтразитьРезультатУдаленияЭлементаПакета(ПараметрыУдаления, РезультатОбработкиПакета, Элемент, РезультатУдаления);
Буфер.Элементы.Добавить(Элемент);
Если НЕ Элемент.ЭтоОсновнойОбъект Тогда
Продолжить;
КонецЕсли;
НельзяУдалятьОсновнойОбъект = Ложь;
НачатьТранзакцию();
Попытка
Для каждого УдаляемыйСсылка Из Буфер.Элементы Цикл
Фильтр = Новый Структура("УдаляемыйСсылка", УдаляемыйСсылка.УдаляемыйСсылка);
РезультатУдаления = УдалитьЭлементПакета(
ПараметрыУдаления,
УдаляемыйСсылка,
МестаИспользования.Скопировать(Фильтр),
НельзяУдалятьОсновнойОбъект);
Если РезультатУдаления.Код <> КодыРезультатаУдаления().Успешно И НЕ НельзяУдалятьОсновнойОбъект Тогда
НельзяУдалятьОсновнойОбъект = Истина;
ОтменитьТранзакцию();
КонецЕсли;
ОтразитьРезультатУдаленияЭлементаПакета(
ПараметрыУдаления,
РезультатОбработкиПакета,
РезультатУдаления);
КонецЦикла;
Если НЕ НельзяУдалятьОсновнойОбъект Тогда
ЗафиксироватьТранзакцию();
КонецЕсли;
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Буфер.Элементы.Очистить();
Буфер.РезультатУдаления = Неопределено;
Буфер.Код = КодыРезультатаУдаления().Успешно;
КонецЦикла;
ПослеОбработкиПакета(ПараметрыУдаления, Идентификатор);
@@ -462,7 +512,7 @@
ЗаписьРезультата = Результат.Добавить();
ЗаполнитьЗначенияСвойств(ЗаписьРезультата, СтрокаДерева);
ЗаписьРезультата.ДочерниеЭлементы = ДочерниеЭлементы(ОсновнойЭлемент, СтрокаДерева);
Результат = ОбъединениеТаблиц(Результат, ЗаписьРезультата.ДочерниеЭлементы);
Результат = ОбъединениеТаблиц(ЗаписьРезультата.ДочерниеЭлементы, Результат, Истина);
КонецЕсли;
КонецЦикла;
@@ -600,7 +650,7 @@
Результат = Истина;
Для Каждого Элемент Из ДополнительныеСведения Цикл
Если НЕ Элемент.ПометкаУдаления Тогда
Если НЕ Элемент.ПометкаУдаления И НЕ Элемент.ТипЭлемента = "Подчиненный" Тогда
Результат = Ложь;
Прервать;
КонецЕсли;
@@ -620,27 +670,33 @@
// Элемент - см. ПакетУдаляемыхОбъектов
// РезультатУдаления - см. УдалитьЭлементПакета
//
Процедура ОтразитьРезультатУдаленияЭлементаПакета(ПараметрыУдаления, РезультатОбработкиПакета, Элемент, РезультатУдаления)
Процедура ОтразитьРезультатУдаленияЭлементаПакета(ПараметрыУдаления, РезультатОбработкиПакета, РезультатУдаления)
Если НЕ РезультатУдаления.ЭтоОсновнойОбъект И РезультатУдаления.Код = КодыРезультатаУдаления().Успешно Тогда
Возврат;
КонецЕсли;
Если РезультатУдаления.Код <> КодыРезультатаУдаления().Успешно Тогда
НеудаленныйЭлемент = РезультатОбработкиПакета.НеудаленныеОбъекты.Добавить();
ЗаполнитьЗначенияСвойств(НеудаленныйЭлемент, Элемент);
ЗаполнитьЗначенияСвойств(НеудаленныйЭлемент, РезультатУдаления);
НеудаленныйЭлемент.РезультатУдаления = РезультатУдаления.Код;
НеудаленныйЭлемент.ИнформацияОбОшибке = РезультатУдаления.ИнформацияОбОшибке;
НеудаленныйЭлемент.Сообщения = СообщенияПользователяВСтроку(РезультатУдаления.Сообщения);
Если Элемент.ЭтоОсновнойОбъект Тогда
Если РезультатУдаления.ЭтоОсновнойОбъект Тогда
ПараметрыУдаления.КоличествоОбработанных = ПараметрыУдаления.КоличествоОбработанных + 1;
КонецЕсли;
РезультатОбработкиПакета.МестаИспользования = ОбъединениеТаблиц(
РезультатОбработкиПакета.МестаИспользования,
РезультатУдаления.МестаИспользования);
Иначе
РезультатОбработкиПакета.УдаленныеОбъекты.Добавить(Элемент.УдаляемыйСсылка);
РезультатОбработкиПакета.УдаленныеОбъекты.Добавить(РезультатУдаления.УдаляемыйСсылка);
РезультатОбработкиПакета.МестаОчисткиСсылок = ОбъединениеТаблиц(
РезультатОбработкиПакета.МестаОчисткиСсылок,
РезультатУдаления.МестаИспользования);
КонецЕсли;
ОповеститьОПрогрессе(ПараметрыУдаления);
КонецПроцедуры
Функция СообщенияПользователяВСтроку(Сообщения)
@@ -690,11 +746,13 @@
// * ИнформацияОбОшибке - Неопределено
// - ИнформацияОбОшибке
//
Функция УдалитьЭлементПакета(ПараметрыУдаления, Элемент, МестаИспользования)
Функция УдалитьЭлементПакета(ПараметрыУдаления, Элемент, МестаИспользования, НеУдалятьЭлемент)
Результат = Новый Структура();
Результат.Вставить("УдаляемыйСсылка", Элемент.УдаляемыйСсылка);
Результат.Вставить("Код", КодыРезультатаУдаления().Успешно);
Результат.Вставить("МестаИспользования", МестаИспользования());
Результат.Вставить("Сообщения", Новый ФиксированныйМассив(Новый Массив));
Результат.Вставить("ЭтоОсновнойОбъект", Элемент.ЭтоОсновнойОбъект);
Результат.Вставить("ИнформацияОбОшибке");
// Объект был удален ранее
@@ -706,41 +764,46 @@
Для Каждого ДочернийПодчиненныйЭлемент Из Элемент.ДочерниеПодчиненныеОбъекты Цикл
Если НЕ ОбъектУдален(ДочернийПодчиненныйЭлемент.Элемент) Тогда
Результат.Код = КодыРезультатаУдаления().ЕстьМестаИспользования;
Результат.МестаИспользования = ОставшиесяМестаИспользованияУдаляемогоОбъекта(ПараметрыУдаления, МестаИспользования);
Результат.МестаИспользования = ОставшиесяМестаИспользованияУдаляемогоОбъекта(
ПараметрыУдаления,
МестаИспользования);
Возврат Результат;
КонецЕсли;
КонецЦикла;
МестаОчисткиСсылок = МестаОчисткиСсылок(ПараметрыУдаления, МестаИспользования);
Объект = Элемент.УдаляемыйСсылка.ПолучитьОбъект();
НачатьТранзакцию();
Если НЕ НеУдалятьЭлемент Тогда
Попытка
Блокировка = Новый БлокировкаДанных();
ЭлементБлокировки = Блокировка.Добавить(Объект.Метаданные().ПолноеИмя());
ЭлементБлокировки.УстановитьЗначение("Ссылка", Объект.Ссылка);
ЭлементБлокировки = Блокировка.Добавить(Элемент.УдаляемыйСсылка.Метаданные().ПолноеИмя());
ЭлементБлокировки.УстановитьЗначение("Ссылка", Элемент.УдаляемыйСсылка);
Блокировка.Заблокировать();
Объект = Элемент.УдаляемыйСсылка.ПолучитьОбъект();
УдалитьОбъект(Объект);
ОставшиесяМестаИспользования = ОставшиесяМестаИспользованияУдаляемогоОбъекта(ПараметрыУдаления,
МестаИспользования);
Если ОставшиесяМестаИспользования.Количество() = 0
Или МестаОчисткиСсылок.Количество() = ОставшиесяМестаИспользования.Количество() Тогда
Результат.МестаИспользования = МестаОчисткиСсылок;
ЗафиксироватьТранзакцию();
Иначе
Результат.МестаИспользования = ОставшиесяМестаИспользования;
Результат.Код = КодыРезультатаУдаления().ЕстьМестаИспользования;
ОтменитьТранзакцию();
КонецЕсли;
Исключение
ОтменитьТранзакцию();
ИнформацияОбОшибке = ИнформацияОбОшибке();
Результат.Сообщения = ДлительныеОперации.СообщенияПользователю(Истина);
Результат.ИнформацияОбОшибке = ИнформацияОбОшибке;
Результат.Код = КодыРезультатаУдаления().ОшибкаПриУдалении;
Возврат Результат;
КонецПопытки;
КонецЕсли;
ОставшиесяМестаИспользования = ОставшиесяМестаИспользованияУдаляемогоОбъекта(
ПараметрыУдаления,
МестаИспользования);
Если ОставшиесяМестаИспользования.Количество() = 0
Или МестаОчисткиСсылок.Количество() = ОставшиесяМестаИспользования.Количество() Тогда
Результат.МестаИспользования = МестаОчисткиСсылок;
Иначе
Результат.МестаИспользования = ОставшиесяМестаИспользования;
Результат.Код = КодыРезультатаУдаления().ЕстьМестаИспользования;
КонецЕсли;
Возврат Результат;
КонецФункции
@@ -761,6 +824,31 @@
Возврат Набор.Количество() > 0;
КонецФункции
Функция СсылкаВВедущемИзмерении(СведенияОМестеИспользования)
Результат = Ложь;
МетаданныеМестаИспользования = СведенияОМестеИспользования.Метаданные;
Контейнер = Новый Структура("Измерения", Новый Массив);
ЗаполнитьЗначенияСвойств(Контейнер, МетаданныеМестаИспользования);
Измерения = Контейнер.Измерения;
Для каждого Измерение Из Измерения Цикл
Контейнер = Новый Структура();
Контейнер.Вставить("Ведущее", Ложь);
Контейнер.Вставить(Измерение.Имя);
ЗаполнитьЗначенияСвойств(Контейнер, Измерение);
ЗаполнитьЗначенияСвойств(Контейнер, СведенияОМестеИспользования.МестоИспользования);
Если Контейнер.Ведущее
И Контейнер[Измерение.Имя] = СведенияОМестеИспользования.УдаляемыйСсылка Тогда
Результат = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
// Параметры:
// ПараметрыУдаления - Структура
// Пакет - см. ПакетУдаляемыхОбъектов
@@ -788,7 +876,7 @@
// Пакет - см. ПакетУдаляемыхОбъектов
// ДочерниеПодчиненныеЭлементы - см. ДочерниеПодчиненныеЭлементы
//
Процедура ДополнитьПакетДочернимиИПодчиненнымиЭлементами(Пакет, ДочерниеПодчиненныеЭлементы, Исключения)
Процедура ДополнитьПакетДочернимиИПодчиненнымиЭлементами(Пакет, ОсновнойЭлемент, ДочерниеПодчиненныеЭлементы, Исключения)
Для Каждого ОписаниеЭлемента Из ДочерниеПодчиненныеЭлементы Цикл
Если Пакет.Найти(ОписаниеЭлемента.Элемент, "УдаляемыйСсылка") <> Неопределено
ИЛИ Исключения.Найти(ОписаниеЭлемента.Элемент, "УдаляемыйСсылка") <> Неопределено Тогда
@@ -797,6 +885,7 @@
КонецЕсли;
ЭлементПакета = Пакет.Добавить();
ЭлементПакета.ОсновнойЭлементСсылка = ОсновнойЭлемент;
ЭлементПакета.УдаляемыйСсылка = ОписаниеЭлемента.Элемент;
ЭлементПакета.ДочерниеПодчиненныеОбъекты = ОписаниеЭлемента.ДочерниеЭлементы;
КонецЦикла;
@@ -866,7 +955,9 @@
Если НЕ ЭтоСсылка
И НЕ ЭтоКонстанта
И ЗаписьСуществует(СведенияОМестеИспользования)
И НЕ СведенияОМестеИспользования.ЭтоСлужебныеДанные Тогда
И НЕ СведенияОМестеИспользования.ЭтоСлужебныеДанные
И НЕ СсылкаВВедущемИзмерении(СведенияОМестеИспользования) Тогда
ЗаполнитьЗначенияСвойств(Результат.Добавить(), СведенияОМестеИспользования);
КонецЕсли;
@@ -1015,7 +1106,7 @@
ПараметрыОбработки.Вставить("КоличествоОбработанных", 0);
ПараметрыОбработки.Вставить("Всего", 0);
ПараметрыОбработки.Вставить("Номер", 0);
ПараметрыОбработки.Вставить("ИдентификаторЗадания", Новый УникальныйИдентификатор);
ПараметрыОбработки.Вставить("ИдентификаторЗадания", "");
// Уменьшение расхода памяти rmngr на хранение сообщений
ПараметрыОбработки.Вставить("ВремяОповещения", 0);
@@ -1097,6 +1188,7 @@
Пакет.Колонки.Добавить("РезультатУдаления", Новый ОписаниеТипов("Число"));
Пакет.Колонки.Добавить("ДочерниеПодчиненныеОбъекты", Новый ОписаниеТипов("ТаблицаЗначений"));
Пакет.Колонки.Добавить("ЭтоОсновнойОбъект", Новый ОписаниеТипов("Булево"));
Пакет.Колонки.Добавить("ОсновнойЭлементСсылка");
Возврат Пакет;
КонецФункции
@@ -1370,7 +1462,7 @@
УдаляемыйОбъект, ИнформацияОМетаданных);
Для Каждого ПодчиненныйОбъект Из ДочерниеПодчиненныеОбъекты Цикл
Если ПодчиненныйОбъект.ПометкаУдаления Тогда
Если ПодчиненныйОбъект.ПометкаУдаления ИЛИ ПодчиненныйОбъект.ТипЭлемента = "Подчиненный" Тогда
ПодчиненныеОбъекты.Добавить(ПодчиненныйОбъект.Элемент);
КонецЕсли;
КонецЦикла;
@@ -1612,8 +1704,8 @@
Возврат;
КонецЕсли;
ЦентрМониторингаМенеджер = ОбщегоНазначения.ОбщийМодуль("ЦентрМониторинга");
ЦентрМониторингаМенеджер.ЗаписатьОперациюБизнесСтатистики(
МодульЦентрМониторинга = ОбщегоНазначения.ОбщийМодуль("ЦентрМониторинга");
МодульЦентрМониторинга.ЗаписатьОперациюБизнесСтатистики(
"БазоваяФункциональность.УдалениеПомеченных."+РежимУдаления, ВремяВыполнения,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Количество элементов: %1'"), КоличествоУдаляемыхЭлементов));
@@ -338,6 +338,7 @@
ПереноситьВсехПолучателейПисьмаВПолучатели, ДобавлятьКТеме, ПереноситьВложения, ТипОтвета)
ИмяОбъектаМетаданных = Письмо.Метаданные().Имя;
ИмяТаблицы = "Документ." + ИмяОбъектаМетаданных;
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
@@ -348,17 +349,15 @@
| ЭлектронноеПисьмо.Тема,
| ЭлектронноеПисьмо.УчетнаяЗапись,
| ЭлектронноеПисьмо.ТипТекста,
| ЭлектронноеПисьмо.Ссылка" +?(ПереноситьОтправителяВПолучатели,",
| ЭлектронноеПисьмо.ОтправительАдрес,
| ЭлектронноеПисьмо.ОтправительКонтакт,
| ЭлектронноеПисьмо.ОтправительПредставление", "") + "
| ЭлектронноеПисьмо.Ссылка
|ИЗ
| Документ." + ИмяОбъектаМетаданных + " КАК ЭлектронноеПисьмо
| &ИмяТаблицы КАК ЭлектронноеПисьмо
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий
| ПО ЭлектронноеПисьмо.Ссылка = ПредметыПапкиВзаимодействий.Взаимодействие
|ГДЕ
| ЭлектронноеПисьмо.Ссылка = &Ссылка";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИмяТаблицы", ИмяТаблицы);
Запрос.УстановитьПараметр("Ссылка", Письмо);
РезультатЗапроса = Запрос.Выполнить();
@@ -381,7 +380,54 @@
ТипТекста = Выборка.ТипТекста;
Если ПереноситьОтправителяВПолучатели Тогда
ДобавитьПолучателя(Выборка.ОтправительАдрес, Выборка.ОтправительПредставление, Выборка.ОтправительКонтакт);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЭлектронноеПисьмоВходящее.ОтправительАдрес КАК ОтправительАдрес,
| ЭлектронноеПисьмоВходящее.ОтправительКонтакт КАК ОтправительКонтакт,
| ЭлектронноеПисьмоВходящее.ОтправительПредставление КАК ОтправительПредставление
|ИЗ
| Документ.ЭлектронноеПисьмоВходящее КАК ЭлектронноеПисьмоВходящее
|ГДЕ
| ЭлектронноеПисьмоВходящее.Ссылка = &Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЭлектронноеПисьмоВходящееПолучателиОтвета.Адрес КАК Адрес,
| ЭлектронноеПисьмоВходящееПолучателиОтвета.Представление КАК Представление,
| ЭлектронноеПисьмоВходящееПолучателиОтвета.Контакт КАК Контакт
|ИЗ
| Документ.ЭлектронноеПисьмоВходящее.ПолучателиОтвета КАК ЭлектронноеПисьмоВходящееПолучателиОтвета
|ГДЕ
| ЭлектронноеПисьмоВходящееПолучателиОтвета.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Письмо);
Результат = Запрос.ВыполнитьПакет();
ЕстьПолучателиОтвета = Не Результат[1].Пустой();
Если ЕстьПолучателиОтвета Тогда
ВыборкаПолучатели = Результат[1].Выбрать();
Пока ВыборкаПолучатели.Следующий() Цикл
ДобавитьПолучателя(ВыборкаПолучатели.Адрес,
ВыборкаПолучатели.Представление,
ВыборкаПолучатели.Контакт);
КонецЦикла;
Иначе
ВыборкаОтправитель = Результат[0].Выбрать();
ВыборкаОтправитель.Следующий();
ДобавитьПолучателя(ВыборкаОтправитель.ОтправительАдрес,
ВыборкаОтправитель.ОтправительПредставление,
ВыборкаОтправитель.ОтправительКонтакт);
КонецЕсли;
КонецЕсли;
Если ПереноситьВсехПолучателейПисьмаВПолучатели Тогда
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:EventSubscription xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="cf80ff0d-9add-4fa5-bba2-00d43fce5ed8">
<name>ЗапретитьИспользованиеУдаляемыхОбъектовВДокументах</name>
<synonym>
<key>ru</key>
<value>Запретить использование удаляемых объектов в документах</value>
</synonym>
<source>
<types>DocumentObject</types>
</source>
<event>BeforeWrite</event>
<handler>CommonModule.УдалениеПомеченныхОбъектовСлужебный.ЗапретитьИспользованиеУдаляемыхОбъектовВДокументахПередЗаписью</handler>
</mdclass:EventSubscription>
@@ -8,6 +8,6 @@
<source>
<types>ConstantValueManager</types>
</source>
<event>OnWrite</event>
<event>BeforeWrite</event>
<handler>CommonModule.УдалениеПомеченныхОбъектовСлужебный.ЗапретитьИспользованиеУдаляемыхОбъектовВКонстантахПриЗаписи</handler>
</mdclass:EventSubscription>
@@ -10,6 +10,6 @@
<types>AccountingRegisterRecordSet</types>
<types>AccumulationRegisterRecordSet</types>
</source>
<event>OnWrite</event>
<event>BeforeWrite</event>
<handler>CommonModule.УдалениеПомеченныхОбъектовСлужебный.ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахЗаписейПриЗаписи</handler>
</mdclass:EventSubscription>
@@ -8,6 +8,6 @@
<source>
<types>CalculationRegisterRecordSet</types>
</source>
<event>OnWrite</event>
<event>BeforeWrite</event>
<handler>CommonModule.УдалениеПомеченныхОбъектовСлужебный.ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахРегистровРасчетаПриЗаписи</handler>
</mdclass:EventSubscription>
@@ -13,8 +13,7 @@
<types>ExchangePlanObject</types>
<types>CatalogObject</types>
<types>TaskObject</types>
<types>DocumentObject</types>
</source>
<event>OnWrite</event>
<event>BeforeWrite</event>
<handler>CommonModule.УдалениеПомеченныхОбъектовСлужебный.ЗапретитьИспользованиеУдаляемыхОбъектовВСправочникахПриЗаписи</handler>
</mdclass:EventSubscription>
@@ -113,7 +113,7 @@
<row><Value>39</Value><Value>Калининградская</Value> <Value>обл</Value> <Value>000000</Value><Value>236-238</Value><Value>90c7181e-724f-41b3-b6c6-bd3ec7ae3f30</Value><Value>27</Value></row>
<row><Value>40</Value><Value>Калужская</Value> <Value>обл</Value> <Value>000000</Value><Value>248-249</Value><Value>18133adf-90c2-438e-88c4-62c41656de70</Value><Value>29</Value></row>
<row><Value>41</Value><Value>Камчатский</Value> <Value>край</Value> <Value>000000</Value><Value>683-684,688</Value><Value>d02f30fc-83bf-4c0f-ac2b-5729a866a207</Value><Value>30</Value></row>
<row><Value>42</Value><Value>Кемеровская</Value> <Value>обл</Value> <Value>000000</Value><Value>650-654</Value><Value>393aeccb-89ef-4a7e-ae42-08d5cebc2e30</Value><Value>32</Value></row>
<row><Value>42</Value><Value>Кемеровская область -</Value> <Value>Кузбасс</Value><Value>000000</Value><Value>650-654</Value><Value>393aeccb-89ef-4a7e-ae42-08d5cebc2e30</Value><Value>32</Value></row>
<row><Value>43</Value><Value>Кировская</Value> <Value>обл</Value> <Value>610000</Value><Value>610-613</Value><Value>0b940b96-103f-4248-850c-26b6c7296728</Value><Value>33</Value></row>
<row><Value>44</Value><Value>Костромская</Value> <Value>обл</Value> <Value>000000</Value><Value>156-157</Value><Value>15784a67-8cea-425b-834a-6afe0e3ed61c</Value><Value>34</Value></row>
<row><Value>45</Value><Value>Курганская</Value> <Value>обл</Value> <Value>641000</Value><Value>640-641</Value><Value>4a3d970f-520e-46b9-b16c-50d4ca7535a8</Value><Value>37</Value></row>
@@ -118,14 +118,23 @@
</dataSet>
<calculatedField>
<dataPath>СсылкаНаФайл</dataPath>
<expression>Файл</expression>
<expression>Имя</expression>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Наименование</v8:content>
</v8:item>
</title>
<presentationExpression>Имя</presentationExpression>
</calculatedField>
<calculatedField>
<dataPath>СсылкаНаФайл.Расшифровка</dataPath>
<expression>Файл</expression>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Наименование (расшифровка)</v8:content>
</v8:item>
</title>
</calculatedField>
<totalField>
<dataPath>Файл</dataPath>
@@ -147,6 +156,39 @@
<denyIncompleteValues>true</denyIncompleteValues>
<use>Always</use>
</parameter>
<template>
<name>Макет1</name>
<template xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:AreaTemplate">
<dcsat:item xsi:type="dcsat:TableRow">
<dcsat:tableCell>
<dcsat:item xsi:type="dcsat:Field">
<dcsat:value xsi:type="dcscor:Parameter">СсылкаНаФайл</dcsat:value>
</dcsat:item>
<dcsat:appearance>
<dcscor:item>
<dcscor:parameter>Расшифровка</dcscor:parameter>
<dcscor:value xsi:type="dcscor:Parameter">Расшифровка</dcscor:value>
</dcscor:item>
</dcsat:appearance>
</dcsat:tableCell>
</dcsat:item>
</template>
<parameter xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:ExpressionAreaTemplateParameter">
<dcsat:name>СсылкаНаФайл</dcsat:name>
<dcsat:expression>СсылкаНаФайл</dcsat:expression>
</parameter>
<parameter xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:DetailsAreaTemplateParameter">
<dcsat:name>Расшифровка</dcsat:name>
<dcsat:fieldExpression>
<dcsat:field>СсылкаНаФайл</dcsat:field>
<dcsat:expression>СсылкаНаФайл.Расшифровка</dcsat:expression>
</dcsat:fieldExpression>
</parameter>
</template>
<fieldTemplate>
<field>СсылкаНаФайл</field>
<template>Макет1</template>
</fieldTemplate>
<settingsVariant>
<dcsset:name>Основной</dcsset:name>
<dcsset:presentation xsi:type="v8:LocalStringType">
@@ -309,7 +309,7 @@
ИмяОбласти = "R" + Формат(ИндексСтрок, "ЧГ=0");
Область = ДокументРезультат.Область(ИмяОбласти);
Если СтрНайти(Область.Текст, "[" + НСтр("ru = 'ЗаголовокСкрыт'") + "]") <> 0 Тогда
Если СтрНайти(Область.Текст, "[ЗаголовокСкрыт]") <> 0 Тогда
Если ПерваяСтрока = 0 Тогда
ПерваяСтрока = ИндексСтрок;
КонецЕсли;
@@ -340,8 +340,8 @@
ИмяОбласти = "R" + Формат(ИндексСтрок, "ЧГ=0") + "C" + Формат(ИндексКолонок, "ЧГ=0");
Область = ДокументРезультат.Область(ИмяОбласти);
Если СтрНайти(Область.Текст, "[" + НСтр("ru = 'ЗаголовокСкрыт'") + "]") <> 0 Тогда
Область.Текст = СтрЗаменить(Область.Текст, "[" + НСтр("ru = 'ЗаголовокСкрыт'") + "]", "");
Если СтрНайти(Область.Текст, "[ЗаголовокСкрыт]") <> 0 Тогда
Область.Текст = СтрЗаменить(Область.Текст, "[ЗаголовокСкрыт]", "");
КонецЕсли;
КонецЦикла;
@@ -1040,6 +1040,10 @@
Продолжить;
КонецЕсли;
Если МетаданныеПоля.Тип.СодержитТип(Тип("ХранилищеЗначения")) Тогда
Продолжить;
КонецЕсли;
Если УточнятьСуффиксыПолей
И Не МетаданныеПоля.Балансовый Тогда
СуффиксыПолей = СтрРазделить("Дт@Кт", "@", Ложь);
@@ -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>
@@ -1854,17 +1854,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Constant.ПроверятьИспользованиеУдаляемыхОбъектов</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ЗаголовокСистемы</name>
<right>
@@ -2342,17 +2331,6 @@
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.УдаляемыеОбъекты</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.ВстречаПрисоединенныеФайлы</name>
<right>
@@ -26,5 +26,6 @@
<content>CommonModule.УдалениеПомеченныхПовтИсп</content>
<content>StyleItem.ДействиеВКолонкеСпискаШрифт</content>
<content>SessionParameter.ВыполняетсяУдалениеОбъектов</content>
<content>EventSubscription.ЗапретитьИспользованиеУдаляемыхОбъектовВДокументах</content>
<parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem>
</mdclass:Subsystem>