3_1_5_171

This commit is contained in:
Компания 1С committed 2021-08-26 23:02:00 +03:00
1 parent b10548f0af
commit 09e68ae35b
46 files changed
+966 -428

No files matched your search

@@ -133,13 +133,16 @@
&НаСервере &НаСервере
Процедура УточнитьФорматПолейВремени() Процедура УточнитьФорматПолейВремени()
ФорматВремени = НСтр("ru = 'ДФ=ЧЧ:мм; ДП='"); ФорматВремени = ?(ГрафикиРаботы.ДвенадцатиЧасовойФорматВремени(),
НСтр("ru = 'ДФ=''чч:мм вв''; ДП='"), НСтр("ru = 'ДФ=ЧЧ:мм; ДП='"));
ФорматВремениРедактирования = ?(ГрафикиРаботы.ДвенадцатиЧасовойФорматВремени(),
НСтр("ru = 'ДФ=''чч:мм вв'''"), НСтр("ru = 'ДФ=ЧЧ:мм'"));
Элементы.РасписаниеРаботыВремяНачала.Формат = ФорматВремени; Элементы.РасписаниеРаботыВремяНачала.Формат = ФорматВремени;
Элементы.РасписаниеРаботыВремяНачала.ФорматРедактирования = ФорматВремени; Элементы.РасписаниеРаботыВремяНачала.ФорматРедактирования = ФорматВремениРедактирования;
Элементы.РасписаниеРаботыВремяОкончания.Формат = ФорматВремени; Элементы.РасписаниеРаботыВремяОкончания.Формат = ФорматВремени;
Элементы.РасписаниеРаботыВремяОкончания.ФорматРедактирования = ФорматВремени; Элементы.РасписаниеРаботыВремяОкончания.ФорматРедактирования = ФорматВремениРедактирования;
КонецПроцедуры КонецПроцедуры
@@ -2859,6 +2859,19 @@
<common>true</common> <common>true</common>
</edit> </edit>
</attributes> </attributes>
<attributes>
<name>ДвенадцатиЧасовойФорматВремени</name>
<id>19</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands> <formCommands>
<name>ЗаполнитьПоШаблону</name> <name>ЗаполнитьПоШаблону</name>
<title> <title>
@@ -17,6 +17,8 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
ДвенадцатиЧасовойФорматВремени = ГрафикиРаботы.ДвенадцатиЧасовойФорматВремени();
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан("Справочник.Календари", ЭтотОбъект); ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан("Справочник.Календари", ЭтотОбъект);
// Если производственный календарь в системе единственный, заполняем его по умолчанию. // Если производственный календарь в системе единственный, заполняем его по умолчанию.
@@ -39,6 +41,8 @@
&НаСервере &НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект) Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ДвенадцатиЧасовойФорматВремени = ГрафикиРаботы.ДвенадцатиЧасовойФорматВремени();
ДлинаЦикла = Объект.ШаблонЗаполнения.Количество(); ДлинаЦикла = Объект.ШаблонЗаполнения.Количество();
ЗаполнитьДаннымиТекущегоГода(); ЗаполнитьДаннымиТекущегоГода();
@@ -531,8 +535,8 @@
КонецЕсли; КонецЕсли;
ПредставлениеИнтервала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ПредставлениеИнтервала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"%1-%2, ", "%1-%2, ",
ПредставлениеВремениСуток(СтрокаРасписания.ВремяНачала), ПредставлениеВремениСуток(СтрокаРасписания.ВремяНачала, Форма.ДвенадцатиЧасовойФорматВремени),
ПредставлениеВремениСуток(СтрокаРасписания.ВремяОкончания)); ПредставлениеВремениСуток(СтрокаРасписания.ВремяОкончания, Форма.ДвенадцатиЧасовойФорматВремени));
ПредставлениеИнтервалов = ПредставлениеИнтервалов + ПредставлениеИнтервала; ПредставлениеИнтервалов = ПредставлениеИнтервалов + ПредставлениеИнтервала;
Если Не ЗначениеЗаполнено(СтрокаРасписания.ВремяОкончания) Тогда Если Не ЗначениеЗаполнено(СтрокаРасписания.ВремяОкончания) Тогда
СекундИнтервала = КонецДня(СтрокаРасписания.ВремяОкончания) - СтрокаРасписания.ВремяНачала + 1; СекундИнтервала = КонецДня(СтрокаРасписания.ВремяОкончания) - СтрокаРасписания.ВремяНачала + 1;
@@ -554,13 +558,16 @@
КонецФункции КонецФункции
&НаКлиентеНаСервереБезКонтекста &НаКлиентеНаСервереБезКонтекста
Функция ПредставлениеВремениСуток(Знач ВремяСуток) Функция ПредставлениеВремениСуток(Знач ВремяСуток, ДвенадцатиЧасовойФорматВремени)
Если Не ЗначениеЗаполнено(ВремяСуток) Тогда Если Не ЗначениеЗаполнено(ВремяСуток) Тогда
ВремяСуток = Дата(1980, 1, 1); ВремяСуток = Дата(1980, 1, 1);
КонецЕсли; КонецЕсли;
Возврат Формат(ВремяСуток, НСтр("ru = 'ДФ=ЧЧ:мм'")); ФорматВремени = ?(ДвенадцатиЧасовойФорматВремени,
НСтр("ru = 'ДФ=''чч:мм вв'''"), НСтр("ru = 'ДФ=ЧЧ:мм; ДП='"));
Возврат Формат(ВремяСуток, ФорматВремени);
КонецФункции КонецФункции
@@ -79,6 +79,9 @@
Иначе Иначе
ВыполнитьОбработкуОповещения(ОповещениеПриПодтверждении, ЭтотОбъект); ВыполнитьОбработкуОповещения(ОповещениеПриПодтверждении, ЭтотОбъект);
КонецЕсли; КонецЕсли;
Иначе
Элементы.Подписать.Видимость = Истина;
Элементы.Подписать.КнопкаПоУмолчанию = Истина;
КонецЕсли; КонецЕсли;
ИначеЕсли ВРег(ИмяСобытия) = ВРег("ПодтверждениеАвторизация") И Источник = УникальныйИдентификатор Тогда ИначеЕсли ВРег(ИмяСобытия) = ВРег("ПодтверждениеАвторизация") И Источник = УникальныйИдентификатор Тогда
@@ -290,6 +293,9 @@
Если Результат = Истина Тогда Если Результат = Истина Тогда
Закрыть(Истина); Закрыть(Истина);
ИначеЕсли ЭлектроннаяПодписьСлужебныйКлиент.ЭтоОперацияОблачнойПодписи(ЭтотОбъект) Тогда
Элементы.Подписать.Видимость = Истина;
Элементы.Подписать.КнопкаПоУмолчанию = Истина;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -83,6 +83,9 @@
Иначе Иначе
ВыполнитьОбработкуОповещения(ОповещениеПриПодтверждении, ЭтотОбъект); ВыполнитьОбработкуОповещения(ОповещениеПриПодтверждении, ЭтотОбъект);
КонецЕсли; КонецЕсли;
Иначе
Элементы.ФормаРасшифровать.Видимость = Истина;
Элементы.ФормаРасшифровать.КнопкаПоУмолчанию = Истина;
КонецЕсли; КонецЕсли;
ИначеЕсли ВРег(ИмяСобытия) = ВРег("ПодтверждениеАвторизация") И Источник = УникальныйИдентификатор Тогда ИначеЕсли ВРег(ИмяСобытия) = ВРег("ПодтверждениеАвторизация") И Источник = УникальныйИдентификатор Тогда
@@ -325,6 +328,9 @@
Если Результат = Истина Тогда Если Результат = Истина Тогда
Закрыть(Истина); Закрыть(Истина);
ИначеЕсли ЭлектроннаяПодписьСлужебныйКлиент.ЭтоОперацияОблачнойПодписи(ЭтотОбъект) Тогда
Элементы.ФормаРасшифровать.Видимость = Истина;
Элементы.ФормаРасшифровать.КнопкаПоУмолчанию = Истина;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -145,15 +145,10 @@
// //
Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт
Элемент = Элементы.Добавить(); Если Метаданные.ОбщиеМодули.Найти("РаботаСАдресами") <> Неопределено Тогда
Элемент.ИмяПредопределенныхДанных = "Россия"; МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами");
Элемент.Код = "643"; МодульРаботаСАдресами.ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти);
Элемент.Наименование = НСтр("ru = 'РОССИЯ'", ОбщегоНазначения.КодОсновногоЯзыка()); КонецЕсли;
Элемент.НаименованиеПолное = НСтр("ru = 'Российская Федерация'", ОбщегоНазначения.КодОсновногоЯзыка());
Элемент.КодАльфа2 = "RU";
Элемент.КодАльфа3 = "RUS";
Элемент.УчастникЕАЭС = Истина;
Элемент.МеждународноеНаименование = НСтр("ru = 'The Russian Federation'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецПроцедуры КонецПроцедуры
@@ -812,7 +812,13 @@
ИменаПредопределенныхНаборов = Метаданные.Справочники.НаборыДополнительныхРеквизитовИСведений.ПолучитьИменаПредопределенных(); ИменаПредопределенныхНаборов = Метаданные.Справочники.НаборыДополнительныхРеквизитовИСведений.ПолучитьИменаПредопределенных();
Для Каждого ИмяПредопределенногоНабора Из ИменаПредопределенныхНаборов Цикл Для Каждого ИмяПредопределенногоНабора Из ИменаПредопределенныхНаборов Цикл
Если СтрНачинаетсяС(ИмяПредопределенногоНабора, "Удалить") Тогда Если СтрНачинаетсяС(ИмяПредопределенногоНабора, "Удалить") Тогда
НаборыСвойств.Добавить(Справочники.НаборыДополнительныхРеквизитовИСведений[ИмяПредопределенногоНабора]); Попытка
ПредопределенныйНабор = Справочники.НаборыДополнительныхРеквизитовИСведений[ИмяПредопределенногоНабора];
НаборыСвойств.Добавить(ПредопределенныйНабор);
Исключение
// Обработка исключения не требуется, отсутствует предопределенный элемент в данных.
Продолжить;
КонецПопытки;
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
НаборыСвойств.Добавить(Справочники.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка()); НаборыСвойств.Добавить(Справочники.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка());
@@ -554,6 +554,10 @@
<metadata>Constant.ПараметрыЦентраМониторинга</metadata> <metadata>Constant.ПараметрыЦентраМониторинга</metadata>
<use>DontUse</use> <use>DontUse</use>
</content> </content>
<content>
<metadata>ScheduledJob.ОбработкаСервисовИнтеграции</metadata>
<use>DontUse</use>
</content>
<content> <content>
<metadata>ScheduledJob.УведомлениеИсполнителейОНовыхЗадачах</metadata> <metadata>ScheduledJob.УведомлениеИсполнителейОНовыхЗадачах</metadata>
<use>DontUse</use> <use>DontUse</use>
@@ -27,10 +27,10 @@
ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Неопределено); ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Неопределено);
ОписаниеНовыхПатчей = ПолучитьИзВременногоХранилища(АдресХранилища); ОписаниеНовыхПатчей = ПолучитьИзВременногоХранилища(АдресХранилища);
Сообщение = СтрЗаменить(Сообщение, "Ссылка", " " + НСтр("ru = '<a href = ""ПереходПоСсылке"">Подробно</a>'")); Сообщение = СтрЗаменить(Сообщение, "Ссылка", " " + НСтр("ru = '<a href = ""%1"">Подробно</a>'"));
КонецЕсли; КонецЕсли;
Элементы.Текст.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(Сообщение); Элементы.Текст.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(Сообщение, "ПереходПоСсылке");
СРасписанием = Истина; СРасписанием = Истина;
Если ПараметрыПроверки.Исправления = Неопределено Если ПараметрыПроверки.Исправления = Неопределено
@@ -254,6 +254,7 @@
ИменаИдентификаторов.Добавить("OID1_2_643_100_5", "OGRNIP"); ИменаИдентификаторов.Добавить("OID1_2_643_100_5", "OGRNIP");
ИменаИдентификаторов.Добавить("OID1_2_643_100_3", "SNILS"); ИменаИдентификаторов.Добавить("OID1_2_643_100_3", "SNILS");
ИменаИдентификаторов.Добавить("OID1_2_643_3_131_1_1", "INN"); ИменаИдентификаторов.Добавить("OID1_2_643_3_131_1_1", "INN");
ИменаИдентификаторов.Добавить("OID1_2_643_100_4", "INNLE");
ИменаИдентификаторов.Добавить("OID2_5_4_4", "SN"); ИменаИдентификаторов.Добавить("OID2_5_4_4", "SN");
ИменаИдентификаторов.Добавить("OID2_5_4_42", "GN"); ИменаИдентификаторов.Добавить("OID2_5_4_42", "GN");
@@ -4610,10 +4610,10 @@
Элементы.СтруктураВарианта_ПереместитьВверх1.Доступность = МожноУдалятьИПеремещать И ЕстьСоседние; Элементы.СтруктураВарианта_ПереместитьВверх1.Доступность = МожноУдалятьИПеремещать И ЕстьСоседние;
Элементы.СтруктураВарианта_ПереместитьВниз.Доступность = МожноУдалятьИПеремещать И ЕстьСоседние; Элементы.СтруктураВарианта_ПереместитьВниз.Доступность = МожноУдалятьИПеремещать И ЕстьСоседние;
Элементы.СтруктураВарианта_ПереместитьВниз1.Доступность = МожноУдалятьИПеремещать И ЕстьСоседние; Элементы.СтруктураВарианта_ПереместитьВниз1.Доступность = МожноУдалятьИПеремещать И ЕстьСоседние;
Элементы.СтруктураВарианта_ПереместитьНаУровеньВыше.Доступность = ЕстьРодитель И РодителяМожноПеремещать; Элементы.СтруктураВарианта_ПереместитьНаУровеньВыше.Доступность = МожноУдалятьИПеремещать И ЕстьРодитель И РодителяМожноПеремещать;
Элементы.СтруктураВарианта_ПереместитьНаУровеньВыше1.Доступность = ЕстьРодитель И РодителяМожноПеремещать; Элементы.СтруктураВарианта_ПереместитьНаУровеньВыше1.Доступность = МожноУдалятьИПеремещать И ЕстьРодитель И РодителяМожноПеремещать;
Элементы.СтруктураВарианта_ПереместитьНаУровеньНиже.Доступность = ЕстьПотенциальныеРодители; Элементы.СтруктураВарианта_ПереместитьНаУровеньНиже.Доступность = МожноУдалятьИПеремещать И ЕстьПотенциальныеРодители;
Элементы.СтруктураВарианта_ПереместитьНаУровеньНиже1.Доступность = ЕстьПотенциальныеРодители; Элементы.СтруктураВарианта_ПереместитьНаУровеньНиже1.Доступность = МожноУдалятьИПеремещать И ЕстьПотенциальныеРодители;
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -2057,8 +2057,7 @@
УточнитьТекстПервогоЗапросаУниверсальногоПоиска(ТекстыЗапросов); УточнитьТекстПервогоЗапросаУниверсальногоПоиска(ТекстыЗапросов);
Разделитель = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( Разделитель = Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС; //@query-part
НСтр("ru = '%1ОБЪЕДИНИТЬ ВСЕ%2'"), Символы.ПС, Символы.ПС);
ТекстЗапроса = СтрСоединить(ТекстыЗапросов, Разделитель); ТекстЗапроса = СтрСоединить(ТекстыЗапросов, Разделитель);
@@ -2186,10 +2185,10 @@
КонецЕсли; КонецЕсли;
ПолеПоУсловию = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ПолеПоУсловию = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'КОГДА ВЫРАЗИТЬ(%1 КАК СТРОКА(150)) ПОДОБНО %2 ТОГДА ""%3""'"), "КОГДА ВЫРАЗИТЬ(%1 КАК СТРОКА(150)) ПОДОБНО %2 ТОГДА ""%3""",
Поле.Имя, Поле.Имя,
"""%" + ПараметрыПоиска.СтрокаПоиска + "%""", """%" + ПараметрыПоиска.СтрокаПоиска + "%""",
Поле.Имя); Поле.Имя);//@query-part
ОписаниеПоляПоУсловию.Добавить(ПолеПоУсловию); ОписаниеПоляПоУсловию.Добавить(ПолеПоУсловию);
@@ -2199,9 +2198,9 @@
Возврат """"""; Возврат """""";
КонецЕсли; КонецЕсли;
ОписаниеПоляПоУсловию.Вставить(0, НСтр("ru = 'ВЫБОР'")); ОписаниеПоляПоУсловию.Вставить(0, "ВЫБОР");//@query-part
ОписаниеПоляПоУсловию.Добавить(НСтр("ru = 'ИНАЧЕ """"'")); ОписаниеПоляПоУсловию.Добавить("ИНАЧЕ """"");//@query-part
ОписаниеПоляПоУсловию.Добавить(НСтр("ru = 'КОНЕЦ'")); ОписаниеПоляПоУсловию.Добавить("КОНЕЦ");//@query-part
Возврат СтрСоединить(ОписаниеПоляПоУсловию, " "); Возврат СтрСоединить(ОписаниеПоляПоУсловию, " ");
@@ -2227,16 +2226,16 @@
Если ТипРеквизита.СодержитТип(Тип("Строка")) Тогда Если ТипРеквизита.СодержитТип(Тип("Строка")) Тогда
Условие = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( Условие = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'ВЫРАЗИТЬ(%1 КАК СТРОКА(150)) ПОДОБНО %2'"), "ВЫРАЗИТЬ(%1 КАК СТРОКА(150)) ПОДОБНО %2",
Поле.Имя, Поле.Имя,
"""%" + ПараметрыПоиска.СтрокаПоиска + "%"""); """%" + ПараметрыПоиска.СтрокаПоиска + "%""");//@query-part
ИначеЕсли ТипРеквизита.СодержитТип(Тип("Число")) Тогда ИначеЕсли ТипРеквизита.СодержитТип(Тип("Число")) Тогда
Условие = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( Условие = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'ВЫРАЗИТЬ(%1 КАК ЧИСЛО) = %2'"), "ВЫРАЗИТЬ(%1 КАК ЧИСЛО) = %2",
Поле.Имя, Поле.Имя,
ПараметрыПоиска.ЧислоПоиска); ПараметрыПоиска.ЧислоПоиска);//@query-part
Иначе Иначе
Продолжить; Продолжить;
@@ -2250,7 +2249,7 @@
Возврат "ЛОЖЬ"; Возврат "ЛОЖЬ";
КонецЕсли; КонецЕсли;
Возврат СтрСоединить(Условия, " ИЛИ "); Возврат СтрСоединить(Условия, " ИЛИ ");//@query-part
КонецФункции КонецФункции
@@ -655,3 +655,18 @@
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ДвенадцатиЧасовойФорматВремени() Экспорт
ПредставлениеВремени = Формат(ТекущаяДатаСеанса(), "ДЛФ=T");
Если ВРег(Прав(ПредставлениеВремени, 1)) = "M" Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
#КонецОбласти
@@ -1041,12 +1041,54 @@
ПараметрыПроцедурыФоновогоЗадания = Новый Массив; ПараметрыПроцедурыФоновогоЗадания = Новый Массив;
ПараметрыПроцедурыФоновогоЗадания.Добавить(ВсеПараметры); ПараметрыПроцедурыФоновогоЗадания.Добавить(ВсеПараметры);
Если РегистрыСведений.ПараметрыРаботыПрограммы.ИмяПроцедурыФоновогоЗадания() = ИмяПроцедуры Тогда
ИмяПроцедурыФоновогоЗадания = ИмяПроцедурыФоновогоЗаданияБезВызоваПередЗапускомПрограммы();
Иначе
ИмяПроцедурыФоновогоЗадания = "ДлительныеОперации.ВыполнитьСКонтекстомКлиента";
КонецЕсли;
Возврат ВыполнитьФоновоеЗадание(ПараметрыВыполнения, Возврат ВыполнитьФоновоеЗадание(ПараметрыВыполнения,
"ДлительныеОперации.ВыполнитьСКонтекстомКлиента", ПараметрыПроцедурыФоновогоЗадания, ИмяПроцедурыФоновогоЗадания, ПараметрыПроцедурыФоновогоЗадания,
КлючФоновогоЗадания, НаименованиеФоновогоЗадания); КлючФоновогоЗадания, НаименованиеФоновогоЗадания);
КонецФункции КонецФункции
Функция ЭтоЗапускБезВызоваПередЗапускомПрограммы() Экспорт
Если ТекущийРежимЗапуска() <> Неопределено Тогда
Возврат Ложь;
КонецЕсли;
ТекущийСеанс = ПолучитьТекущийСеансИнформационнойБазы();
Если ТекущийСеанс.ИмяПриложения <> "BackgroundJob" Тогда
Возврат Ложь;
КонецЕсли;
ФоновоеЗадание = ТекущийСеанс.ПолучитьФоновоеЗадание();
Если ФоновоеЗадание = Неопределено
Или ФоновоеЗадание.ИмяМетода <> ИмяПроцедурыФоновогоЗаданияБезВызоваПередЗапускомПрограммы() Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
// Для функции ЗапуститьФоновоеЗаданиеСКонтекстомКлиента.
Функция ИмяПроцедурыФоновогоЗаданияБезВызоваПередЗапускомПрограммы()
Возврат "ДлительныеОперации.ВыполнитьСКонтекстомКлиентаБезВызоваПередЗапускомПрограммы";
КонецФункции
// Продолжение процедуры ЗапуститьФоновоеЗаданиеСКонтекстомКлиента.
Процедура ВыполнитьСКонтекстомКлиентаБезВызоваПередЗапускомПрограммы(ВсеПараметры) Экспорт
ВыполнитьСКонтекстомКлиента(ВсеПараметры);
КонецПроцедуры
// Продолжение процедуры ЗапуститьФоновоеЗаданиеСКонтекстомКлиента. // Продолжение процедуры ЗапуститьФоновоеЗаданиеСКонтекстомКлиента.
Процедура ВыполнитьСКонтекстомКлиента(ВсеПараметры) Экспорт Процедура ВыполнитьСКонтекстомКлиента(ВсеПараметры) Экспорт
@@ -2516,6 +2516,15 @@
// Проверка на коллизии дат запрета загрузки. // Проверка на коллизии дат запрета загрузки.
Объект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения"); Объект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения");
// Параметр "СинхронизацияДанныхЧерезУниверсальныйФорматУдалениеДвижений" используется при
// обработке удаления движений, например, в модуле набора записей регистра накопления.
// Если разработчик определил такой параметр в правилах конвертации, пропускаем данный этап.
Если НЕ Объект.ДополнительныеСвойства.Свойство("СинхронизацияДанныхЧерезУниверсальныйФорматУдалениеДвижений") Тогда
Объект.ДополнительныеСвойства.Вставить("СинхронизацияДанныхЧерезУниверсальныйФорматУдалениеДвижений", Истина);
КонецЕсли;
ПроведениеДокументаОтменено = Ложь; ПроведениеДокументаОтменено = Ложь;
НачатьТранзакцию(); НачатьТранзакцию();
@@ -2542,6 +2551,8 @@
КонецЕсли; КонецЕсли;
Объект.ДополнительныеСвойства.Удалить("СинхронизацияДанныхЧерезУниверсальныйФорматУдалениеДвижений");
ПроведениеДокументаОтменено = Истина; ПроведениеДокументаОтменено = Истина;
ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию();
Исключение Исключение
@@ -4080,6 +4080,10 @@
МассивОбрабатываемыхСтрокТаблицыДвижений = Новый Массив; МассивОбрабатываемыхСтрокТаблицыДвижений = Новый Массив;
ВставитьДополнительныйПараметрУдаленияДвижений =
ДокументОбъект.ДополнительныеСвойства.Свойство("СинхронизацияДанныхЧерезУниверсальныйФорматУдалениеДвижений")
И (ДокументОбъект.ДополнительныеСвойства.СинхронизацияДанныхЧерезУниверсальныйФорматУдалениеДвижений = Истина);
// Получение списка регистров, по которым существуют движения. // Получение списка регистров, по которым существуют движения.
ТаблицаДвижений = ОпределитьНаличиеДвиженийПоДокументу(ДокументОбъект.Ссылка); ТаблицаДвижений = ОпределитьНаличиеДвиженийПоДокументу(ДокументОбъект.Ссылка);
@@ -4112,15 +4116,25 @@
Попытка Попытка
Для Каждого СтрокаДвижения Из МассивОбрабатываемыхСтрокТаблицыДвижений Цикл Для Каждого СтрокаДвижения Из МассивОбрабатываемыхСтрокТаблицыДвижений Цикл
Попытка Попытка
Набор = СтрокаДвижения.НаборЗаписей; // РегистрНакопленияНаборЗаписей и т.п. Набор = СтрокаДвижения.НаборЗаписей; // РегистрНакопленияНаборЗаписей и т.п.
Если ВставитьДополнительныйПараметрУдаленияДвижений Тогда
Набор.ДополнительныеСвойства.Вставить("СинхронизацияДанныхЧерезУниверсальныйФорматУдалениеДвижений", Истина);
КонецЕсли;
Набор.Записать(); Набор.Записать();
Исключение Исключение
// Возможно "сработало" ограничение на уровне записей или подсистема даты запрета изменения. // Возможно "сработало" ограничение на уровне записей или подсистема даты запрета изменения.
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Операция не выполнена: %1 НСтр("ru = 'Операция не выполнена: %1
|%2'"), |%2'"),
СтрокаДвижения.ИмяТаблицыРегистра, СтрокаДвижения.ИмяТаблицыРегистра,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки; КонецПопытки;
КонецЦикла; КонецЦикла;
Исключение Исключение
@@ -14740,7 +14754,11 @@
КонецЕсли; КонецЕсли;
ОбработкаОбменаДаннымиВнешнееСоединение.УзелДляОбмена = СтруктураНастроекОбменаВнешнееСоединение.УзелИнформационнойБазы; ОбработкаОбменаДаннымиВнешнееСоединение.УзелДляОбмена = СтруктураНастроекОбменаВнешнееСоединение.УзелИнформационнойБазы;
ОбработкаОбменаДаннымиВнешнееСоединение.УстановитьБлокировкуУзлаПланаОбмена = Истина; Если ОбработкаОбменаДаннымиВнешнееСоединение.Метаданные().Реквизиты.Найти("УстановитьБлокировкуУзлаПланаОбмена") <> Неопределено Тогда
ОбработкаОбменаДаннымиВнешнееСоединение.УстановитьБлокировкуУзлаПланаОбмена = Истина;
КонецЕсли;
УстановитьОбщиеПараметрыДляОбработкиОбменаДанными(ОбработкаОбменаДаннымиВнешнееСоединение, СтруктураНастроекОбменаВнешнееСоединение, ОбменСБСП20); УстановитьОбщиеПараметрыДляОбработкиОбменаДанными(ОбработкаОбменаДаннымиВнешнееСоединение, СтруктураНастроекОбменаВнешнееСоединение, ОбменСБСП20);
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы"; Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.5.163"; Описание.Версия = "3.1.5.171";
Описание.ИдентификаторИнтернетПоддержки = "SSL"; Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно"; Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0"; Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -5000,20 +5000,22 @@
Если Не ПустаяСтрока(ПолныеИменаОбъектов) И Не ПустаяСтрока(ПерваяСсылочная) Тогда // Есть ссылочные объекты. Если Не ПустаяСтрока(ПолныеИменаОбъектов) И Не ПустаяСтрока(ПерваяСсылочная) Тогда // Есть ссылочные объекты.
// Установить ссылочную часть начала выборки на место, на котором она остановилась в последний раз. // Установить ссылочную часть начала выборки на место, на котором она остановилась в последний раз.
Начало = СтрНайти(ПолныеИменаОбъектов, ПерваяСсылочная); ПолныеИменаОбъектовМассив = ОстатокМассива(ПолныеИменаОбъектов, ПерваяСсылочная);
ПолныеИменаОбъектов = Сред(ПолныеИменаОбъектов, Начало); Иначе
ПолныеИменаОбъектовМассив = СтрРазделитьСокрЛП(ПолныеИменаОбъектов, ",");
КонецЕсли; КонецЕсли;
Если Не ПустаяСтрока(ПолныеИменаРегистровНачало) И Не ПустаяСтрока(ПерваяТабличная) Тогда // Есть табличные объекты. Если Не ПустаяСтрока(ПолныеИменаРегистровНачало) И Не ПустаяСтрока(ПерваяТабличная) Тогда // Есть табличные объекты.
// Установить табличную часть начала выборки на место, на котором она остановилась в последний раз. // Установить табличную часть начала выборки на место, на котором она остановилась в последний раз.
Начало = СтрНайти(ПолныеИменаРегистровНачало, ПерваяТабличная); ПолныеИменаРегистровНачалоМассив = ОстатокМассива(ПолныеИменаРегистровНачало, ПерваяТабличная);
ПолныеИменаРегистровНачало = Сред(ПолныеИменаРегистровНачало, Начало); Иначе
ПолныеИменаРегистровНачалоМассив = СтрРазделитьСокрЛП(ПолныеИменаРегистровНачало, ",");
КонецЕсли; КонецЕсли;
Результат = Новый Структура; Результат = Новый Структура;
Результат.Вставить("СсылочныеОбъекты", СтрРазделитьСокрЛП(ПолныеИменаОбъектов, ",")); Результат.Вставить("СсылочныеОбъекты", ПолныеИменаОбъектовМассив);
Результат.Вставить("ТабличныеОбъектыВсе", СтрРазделитьСокрЛП(ПолныеИменаРегистров, ",")); Результат.Вставить("ТабличныеОбъектыВсе", СтрРазделитьСокрЛП(ПолныеИменаРегистров, ","));
Результат.Вставить("ТабличныеОбъектыНачало", СтрРазделитьСокрЛП(ПолныеИменаРегистровНачало, ",")); Результат.Вставить("ТабличныеОбъектыНачало", ПолныеИменаРегистровНачалоМассив);
Результат.Вставить("СсылочныйИндекс", 0); Результат.Вставить("СсылочныйИндекс", 0);
Результат.Вставить("ТабличныйИндекс", 0); Результат.Вставить("ТабличныйИндекс", 0);
@@ -8394,4 +8396,24 @@
КонецФункции КонецФункции
Функция ОстатокМассива(Массив, ЗначениеНачала)
ОстатокМассива = Новый Массив;
ТочноеЗначениеНачала = СокрЛП(ЗначениеНачала);
ЗначениеНайдено = Ложь;
Для Каждого Элемент Из СтрРазделитьСокрЛП(Массив, ",") Цикл
Если ТочноеЗначениеНачала = Элемент Тогда
ЗначениеНайдено = Истина;
КонецЕсли;
Если ЗначениеНайдено Тогда
ОстатокМассива.Добавить(Элемент);
КонецЕсли;
КонецЦикла;
Возврат ОстатокМассива;
КонецФункции
#КонецОбласти #КонецОбласти
@@ -2372,7 +2372,12 @@
Поле = Элемент.Поле; // ПолеФормы Поле = Элемент.Поле; // ПолеФормы
ЗаголовокЭлемента = Поле.Заголовок; ЗаголовокЭлемента = Поле.Заголовок;
ШаблонИмениЭлемента = СтрЗаменить(Поле.Имя, СвойстваВидовЭлементов[ВидЭлемента], "%1"); Если СтрЗаканчиваетсяНа(Поле.Имя, СвойстваВидовЭлементов[ВидЭлемента]) Тогда
Позиция = СтрНайти(Поле.Имя, СвойстваВидовЭлементов[ВидЭлемента], НаправлениеПоиска.СКонца);
ШаблонИмениЭлемента = Лев(Поле.Имя, Позиция - 1) + "%1";
Иначе
ШаблонИмениЭлемента = Поле.Имя;
КонецЕсли;
ИмяРеквизита = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонИмениЭлемента, ВидЭлемента); ИмяРеквизита = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонИмениЭлемента, ВидЭлемента);
Если Сгенерированные.Найти(ИмяРеквизита) = Неопределено Тогда Если Сгенерированные.Найти(ИмяРеквизита) = Неопределено Тогда
@@ -1359,6 +1359,27 @@
КонецПроцедуры КонецПроцедуры
// При начальном заполнении элементов.
//
// Параметры:
// КодыЯзыков - см. СправочникМенеджер.СтраныМира.ПриНачальномЗаполненииЭлементов.КодыЯзыков
// Элементы - см. СправочникМенеджер.СтраныМира.ПриНачальномЗаполненииЭлементов.Элементы
// ТабличныеЧасти - см. СправочникМенеджер.СтраныМира.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти
//
Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "Россия";
Элемент.Код = "643";
Элемент.Наименование = НСтр("ru = 'РОССИЯ'", ОбщегоНазначения.КодОсновногоЯзыка());
Элемент.НаименованиеПолное = НСтр("ru = 'Российская Федерация'", ОбщегоНазначения.КодОсновногоЯзыка());
Элемент.КодАльфа2 = "RU";
Элемент.КодАльфа3 = "RUS";
Элемент.УчастникЕАЭС = Истина;
Элемент.МеждународноеНаименование = НСтр("ru = 'The Russian Federation'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецПроцедуры
Функция ИдентификаторКлассификатора() Функция ИдентификаторКлассификатора()
Возврат "Countries"; Возврат "Countries";
КонецФункции КонецФункции
@@ -743,6 +743,7 @@
КонецПопытки; КонецПопытки;
РаботаСФайламиПереопределяемый.ПриСозданииФайла(ПрисоединенныйФайл.Ссылка);
Возврат ПрисоединенныйФайл.Ссылка; Возврат ПрисоединенныйФайл.Ссылка;
КонецФункции КонецФункции
@@ -1639,7 +1640,7 @@
Функция СоздатьПрисоединенныйФайлНаОснованииФайла(ВладелецФайлов, МенеджерПрисоединенныхФайлов, ТекущаяВерсияОбъект, ФайлИсточникОбъект) Функция СоздатьПрисоединенныйФайлНаОснованииФайла(ВладелецФайлов, МенеджерПрисоединенныхФайлов, ТекущаяВерсияОбъект, ФайлИсточникОбъект)
СсылкаНового = МенеджерПрисоединенныхФайлов.ПолучитьСсылку(); // СправочникСсылка СсылкаНового = МенеджерПрисоединенныхФайлов.ПолучитьСсылку(); // СправочникСсылка
ПрисоединенныйФайл = МенеджерПрисоединенныхФайлов.СоздатьЭлемент(); //ОпределяемыйТип.ПрисоединенныйФайлОбъект ПрисоединенныйФайл = МенеджерПрисоединенныхФайлов.СоздатьЭлемент(); // ОпределяемыйТип.ПрисоединенныйФайлОбъект
ПрисоединенныйФайл.УстановитьСсылкуНового(СсылкаНового); ПрисоединенныйФайл.УстановитьСсылкуНового(СсылкаНового);
ПрисоединенныйФайл.ВладелецФайла = ВладелецФайлов; ПрисоединенныйФайл.ВладелецФайла = ВладелецФайлов;
@@ -1708,6 +1709,7 @@
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
РаботаСФайламиПереопределяемый.ПриСозданииФайла(СсылкаНового);
Возврат СсылкаНового; Возврат СсылкаНового;
КонецФункции КонецФункции
@@ -66,7 +66,7 @@
// которые должны изменяться при создании новых файлов. // которые должны изменяться при создании новых файлов.
// //
// Параметры: // Параметры:
// Файл - СправочникСсылка.Файлы - ссылка на созданный файл. // Файл - ОпределяемыйТип.ПрисоединенныйФайл - ссылка на созданный файл.
// //
Процедура ПриСозданииФайла(Файл) Экспорт Процедура ПриСозданииФайла(Файл) Экспорт
@@ -172,7 +172,6 @@
КонецПопытки; КонецПопытки;
РаботаСФайламиПереопределяемый.ПриСозданииФайла(ФайлСсылка); РаботаСФайламиПереопределяемый.ПриСозданииФайла(ФайлСсылка);
Возврат ФайлСсылка; Возврат ФайлСсылка;
КонецФункции КонецФункции
@@ -1965,6 +1965,7 @@
// * Ошибка - Строка - строка с описанием ошибки, заполняется если Выполнено = Ложь // * Ошибка - Строка - строка с описанием ошибки, заполняется если Выполнено = Ложь
// * КодОшибки - Строка - строка с кодом ошибки, заполняется если Выполнено = Ложь // * КодОшибки - Строка - строка с кодом ошибки, заполняется если Выполнено = Ложь
// * МаркерОбновлен - Булево - признак, того что в процессе запроса произошло обновление маркера безопасности // * МаркерОбновлен - Булево - признак, того что в процессе запроса произошло обновление маркера безопасности
// * СтатусОшибки - см. СервисКриптографииDSSКлиентСервер.СтатусОшибки
// //
Функция ОтветСервисаПоУмолчанию(Выполнено = Истина, ИдентификаторОшибки = "") Экспорт Функция ОтветСервисаПоУмолчанию(Выполнено = Истина, ИдентификаторОшибки = "") Экспорт
@@ -1509,6 +1509,7 @@
// Если Истина, структура дополняется полем "НастройкиПользователя". // Если Истина, структура дополняется полем "НастройкиПользователя".
// * Ошибка - Строка - содержит форматированный текст ошибки, если поле Выполнено = Ложь // * Ошибка - Строка - содержит форматированный текст ошибки, если поле Выполнено = Ложь
// * КодОшибки - Строка - содержит код ошибки // * КодОшибки - Строка - содержит код ошибки
// * СтатусОшибки - см. СервисКриптографииDSSКлиентСервер.СтатусОшибки
// //
Функция ОтветСервисаПоУмолчанию(Выполнено = Истина) Экспорт Функция ОтветСервисаПоУмолчанию(Выполнено = Истина) Экспорт
@@ -1517,11 +1518,33 @@
ОтветМетода.Вставить("Ошибка", ""); ОтветМетода.Вставить("Ошибка", "");
ОтветМетода.Вставить("КодОшибки", ""); ОтветМетода.Вставить("КодОшибки", "");
ОтветМетода.Вставить("МаркерОбновлен", Ложь); ОтветМетода.Вставить("МаркерОбновлен", Ложь);
ОтветМетода.Вставить("СтатусОшибки", СтатусОшибки());
Возврат ОтветМетода; Возврат ОтветМетода;
КонецФункции КонецФункции
// Структура для описания статуса ошибки.
//
// Возвращаемое значение:
// Структура:
// * Представление - Строка - содержит форматированный текст ошибки
// * КодОшибки - Строка - содержит учетный код ошибки в подсистеме
// * ИсходнаяОшибка - Строка - содержит текст ошибки, сформированный сервером
// * ИсходныйКод - Строка - содержит код ошибки, сформированный сервером
//
Функция СтатусОшибки() Экспорт
Результат = Новый Структура;
Результат.Вставить("КодОшибки", "");
Результат.Вставить("Представление", "");
Результат.Вставить("ИсходныйТекст", "");
Результат.Вставить("ИсходныйКод", "");
Возврат Результат;
КонецФункции
#КонецОбласти #КонецОбласти
#Область ОбработкаОшибок #Область ОбработкаОшибок
@@ -1568,6 +1591,11 @@
Если РезультатОперации <> Неопределено Тогда Если РезультатОперации <> Неопределено Тогда
РезультатОперации.Вставить("КодОшибки", КодОшибки); РезультатОперации.Вставить("КодОшибки", КодОшибки);
РезультатОперации.Вставить("Ошибка", Результат); РезультатОперации.Вставить("Ошибка", Результат);
РезультатОперации.Вставить("СтатусОшибки", СтатусОшибки());
РезультатОперации.СтатусОшибки.КодОшибки = КодОшибки;
РезультатОперации.СтатусОшибки.Представление = Результат;
РезультатОперации.СтатусОшибки.ИсходныйКод = ТипОшибки;
РезультатОперации.СтатусОшибки.ИсходныйТекст = ТекстОшибки;
КонецЕсли; КонецЕсли;
Возврат Результат; Возврат Результат;
@@ -876,6 +876,11 @@
Если РезультатОперации <> Неопределено Тогда Если РезультатОперации <> Неопределено Тогда
РезультатОперации.Вставить("КодОшибки", КодОшибки); РезультатОперации.Вставить("КодОшибки", КодОшибки);
РезультатОперации.Вставить("Ошибка", Результат); РезультатОперации.Вставить("Ошибка", Результат);
РезультатОперации.Вставить("СтатусОшибки", СервисКриптографииDSSКлиентСервер.СтатусОшибки());
РезультатОперации.СтатусОшибки.КодОшибки = КодОшибки;
РезультатОперации.СтатусОшибки.Представление = Результат;
РезультатОперации.СтатусОшибки.ИсходныйКод = ТипОшибки;
РезультатОперации.СтатусОшибки.ИсходныйТекст = ТекстОшибки;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -2773,6 +2773,11 @@
// Привилегированный режим (установлен платформой). // Привилегированный режим (установлен платформой).
Если ТекущийРежимЗапуска() = Неопределено
И ДлительныеОперации.ЭтоЗапускБезВызоваПередЗапускомПрограммы() Тогда
Возврат;
КонецЕсли;
// Проверка основного языка программирования, установленного в конфигурации. // Проверка основного языка программирования, установленного в конфигурации.
ТекущийЯзыкВстроенногоЯзыка = Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка["Русский"]; ТекущийЯзыкВстроенногоЯзыка = Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка["Русский"];
Если Метаданные.ВариантВстроенногоЯзыка <> ТекущийЯзыкВстроенногоЯзыка Тогда Если Метаданные.ВариантВстроенногоЯзыка <> ТекущийЯзыкВстроенногоЯзыка Тогда
@@ -24002,8 +24002,7 @@
// //
Функция ОписаниеНовойВерсииПараметровОграниченияДоступа(Параметры, БезЗаписи = Ложь) Функция ОписаниеНовойВерсииПараметровОграниченияДоступа(Параметры, БезЗаписи = Ложь)
НаборЗаписей = СлужебныйНаборЗаписей(РегистрыСведений.ПараметрыОграниченияДоступа); Запись = НоваяТаблицаРегистраСведенийПараметрыОграниченияДоступа().Добавить();
Запись = НаборЗаписей.Добавить();
ЗаполнитьЗначенияСвойств(Запись, Параметры.ХранимыеПараметры); ЗаполнитьЗначенияСвойств(Запись, Параметры.ХранимыеПараметры);
ЗаполняемыеСвойстваВерсии = Новый Структура("Версия, ДатаСоздания, ХешСумма, ЗаполняемыеСвойстваВерсии = Новый Структура("Версия, ДатаСоздания, ХешСумма,
@@ -24065,6 +24064,10 @@
ПроверитьАктуальностьМетаданных(); ПроверитьАктуальностьМетаданных();
Запись.Версия = НоваяВерсия; Запись.Версия = НоваяВерсия;
НаборЗаписей = СлужебныйНаборЗаписей(РегистрыСведений.ПараметрыОграниченияДоступа);
ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Запись);
Запись = НаборЗаписей[0];
НаборЗаписей.Отбор.Версия.Установить(НоваяВерсия); НаборЗаписей.Отбор.Версия.Установить(НоваяВерсия);
ЗаполнитьЗначенияСвойств(ЗаполняемыеСвойстваВерсии, Запись); ЗаполнитьЗначенияСвойств(ЗаполняемыеСвойстваВерсии, Запись);
@@ -24102,6 +24105,40 @@
КонецФункции КонецФункции
// Возвращаемое значение:
// ТаблицаЗначений:
// * Версия - Число
// * ХешСумма - Строка
// * ХешСуммаПостоянныхПараметров - Строка
// * ДляЗаписиОбъектовИПроверкиПрав - ХранилищеЗначения
// * ДляОтчетаПоПравамДоступа - ХранилищеЗначения
// * ХешСуммаПараметровШаблонов - Строка
// * ДляШаблоновВСеансахПользователей - ХранилищеЗначения
// * ДляШаблоновВСеансахВнешнихПользователей - ХранилищеЗначения
// * ВерсииПараметровШаблонов - ХранилищеЗначения
// * ДатаСоздания - Дата
//
Функция НоваяТаблицаРегистраСведенийПараметрыОграниченияДоступа()
ТипВерсии = Новый ОписаниеТипов("Число",,, Новый КвалификаторыЧисла(15, 0, ДопустимыйЗнак.Неотрицательный));
ТипХешСуммы = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(48, ДопустимаяДлина.Переменная));
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Версия", ТипВерсии);
Таблица.Колонки.Добавить("ХешСумма", ТипХешСуммы);
Таблица.Колонки.Добавить("ХешСуммаПостоянныхПараметров", ТипХешСуммы);
Таблица.Колонки.Добавить("ДляЗаписиОбъектовИПроверкиПрав", Новый ОписаниеТипов("ХранилищеЗначения"));
Таблица.Колонки.Добавить("ДляОтчетаПоПравамДоступа", Новый ОписаниеТипов("ХранилищеЗначения"));
Таблица.Колонки.Добавить("ХешСуммаПараметровШаблонов", ТипХешСуммы);
Таблица.Колонки.Добавить("ДляШаблоновВСеансахПользователей", Новый ОписаниеТипов("ХранилищеЗначения"));
Таблица.Колонки.Добавить("ДляШаблоновВСеансахВнешнихПользователей", Новый ОписаниеТипов("ХранилищеЗначения"));
Таблица.Колонки.Добавить("ВерсииПараметровШаблонов", Новый ОписаниеТипов("ХранилищеЗначения"));
Таблица.Колонки.Добавить("ДатаСоздания", Новый ОписаниеТипов("Дата"));
Возврат Таблица;
КонецФункции
// Для функции ОписаниеНовойВерсииПараметровОграниченияДоступа. // Для функции ОписаниеНовойВерсииПараметровОграниченияДоступа.
Процедура ЗапланироватьОбновлениеДоступаПриИзмененииПараметров(СтараяВерсия, Параметры) Процедура ЗапланироватьОбновлениеДоступаПриИзмененииПараметров(СтараяВерсия, Параметры)
@@ -62,13 +62,7 @@
Свойства.СНИЛС = ПодготовитьСтроку(Субъект.OID1_2_643_100_3); Свойства.СНИЛС = ПодготовитьСтроку(Субъект.OID1_2_643_100_3);
КонецЕсли; КонецЕсли;
Если Субъект.Свойство("INN") Тогда Свойства.ИНН = ИНН(Субъект);
Свойства.ИНН = ПодготовитьСтроку(Субъект.INN);
ИначеЕсли Субъект.Свойство("OID1_2_643_100_4")Тогда
Свойства.ИНН = ПодготовитьСтроку(Субъект.OID1_2_643_100_4);
ИначеЕсли Субъект.Свойство("OID1_2_643_3_131_1_1") Тогда
Свойства.ИНН = ПодготовитьСтроку(Субъект.OID1_2_643_3_131_1_1);
КонецЕсли;
Если Субъект.Свойство("CN") Тогда Если Субъект.Свойство("CN") Тогда
Свойства.ОбщееИмя = ПодготовитьСтроку(Субъект.CN); Свойства.ОбщееИмя = ПодготовитьСтроку(Субъект.CN);
@@ -152,12 +146,8 @@
Свойства.ОГРН = ПодготовитьСтроку(Издатель.OID1_2_643_100_1); Свойства.ОГРН = ПодготовитьСтроку(Издатель.OID1_2_643_100_1);
КонецЕсли; КонецЕсли;
Если Издатель.Свойство("INN") Тогда Свойства.ИНН = ИНН(Издатель);
Свойства.ИНН = ПодготовитьСтроку(Издатель.INN);
ИначеЕсли Издатель.Свойство("OID1_2_643_3_131_1_1")Тогда
Свойства.ИНН = ПодготовитьСтроку(Издатель.OID1_2_643_3_131_1_1);
КонецЕсли;
// Конец Локализация // Конец Локализация
КонецПроцедуры КонецПроцедуры
@@ -223,6 +213,22 @@
Возврат Истина; Возврат Истина;
КонецФункции
Функция ИНН(Данные)
ИНН = Неопределено;
Если Данные.Свойство("INN") Тогда
ИНН = Данные.INN;
ИначеЕсли Данные.Свойство("OID1_2_643_100_4")
И СтрДлина(Данные.OID1_2_643_100_4) = 10 Тогда
ИНН = ПодготовитьСтроку(Данные.OID1_2_643_100_4);
ИначеЕсли Данные.Свойство("OID1_2_643_3_131_1_1") Тогда
ИНН = ПодготовитьСтроку(Данные.OID1_2_643_3_131_1_1);
КонецЕсли;
Возврат ИНН;
КонецФункции КонецФункции
// Конец Локализация // Конец Локализация
@@ -371,28 +371,42 @@
#Область ОблачнаяПодпись #Область ОблачнаяПодпись
// определяет доступность подсистемы облачной подписи // Определяет доступность подсистемы облачной подписи
//
// Возвращаемое значение:
// Булево
//
Функция ИспользоватьСервисОблачнойПодписи() Экспорт Функция ИспользоватьСервисОблачнойПодписи() Экспорт
Результат = Ложь; Результат = Ложь;
// Локализация
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяОблачнаяПодпись") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяОблачнаяПодпись") Тогда
МодульСервисКриптографииDSS = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSS"); МодульСервисКриптографииDSS = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSS");
Результат = МодульСервисКриптографииDSS.ИспользоватьСервисОблачнойПодписи(); Результат = МодульСервисКриптографииDSS.ИспользоватьСервисОблачнойПодписи();
КонецЕсли; КонецЕсли;
// Конец Локализация
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
// определяет тип программы облачной подписи // Определяет тип программы облачной подписи.
//
// Возвращаемое значение:
// Неопределено
// Тип
//
Функция ПолучитьТипОблачнойПодписи() Экспорт Функция ПолучитьТипОблачнойПодписи() Экспорт
Результат = Неопределено; Результат = Неопределено;
// Локализация
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяОблачнаяПодпись") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяОблачнаяПодпись") Тогда
Результат = Тип("СправочникСсылка.УчетныеЗаписиDSS"); МодульСервисКриптографииDSSКлиентСервер = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSКлиентСервер");
Результат = МодульСервисКриптографииDSSКлиентСервер.ПолучитьТипОблачнойПодписи();
КонецЕсли; КонецЕсли;
// Конец Локализация
Возврат Результат; Возврат Результат;
@@ -892,6 +906,7 @@
КонецЕсли; КонецЕсли;
Если ИспользоватьСервисОблачнойПодписи() Тогда Если ИспользоватьСервисОблачнойПодписи() Тогда
// Локализация
МодульСервисКриптографииDSSСлужебный = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSСлужебный"); МодульСервисКриптографииDSSСлужебный = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSСлужебный");
МассивСертификатов = МодульСервисКриптографииDSSСлужебный.ПолучитьДанныеСертификатов(Ложь); МассивСертификатов = МодульСервисКриптографииDSSСлужебный.ПолучитьДанныеСертификатов(Ложь);
@@ -899,6 +914,7 @@
ЭлектроннаяПодписьСлужебныйКлиентСервер.ДобавитьСвойстваСертификатов(ТаблицаСвойствСертификатов, ЭлектроннаяПодписьСлужебныйКлиентСервер.ДобавитьСвойстваСертификатов(ТаблицаСвойствСертификатов,
МассивСертификатов, БезОтбора, ДобавкаВремени(), ТекущаяДатаСеанса(), ПараметрыДобавленияСвойств); МассивСертификатов, БезОтбора, ДобавкаВремени(), ТекущаяДатаСеанса(), ПараметрыДобавленияСвойств);
// Конец Локализация
КонецЕсли; КонецЕсли;
ОбработатьДобавленныеСертификаты(ТаблицаСвойствСертификатов, Не БезОтбора И КромеУжеДобавленных, ОтборПоОрганизации); ОбработатьДобавленныеСертификаты(ТаблицаСвойствСертификатов, Не БезОтбора И КромеУжеДобавленных, ОтборПоОрганизации);
@@ -2554,6 +2570,7 @@
Если ИспользоватьСервисОблачнойПодписи() Тогда Если ИспользоватьСервисОблачнойПодписи() Тогда
// Локализация
МодульСервисКриптографииDSSСлужебный = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSСлужебный"); МодульСервисКриптографииDSSСлужебный = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSСлужебный");
ВсеСертификаты = МодульСервисКриптографииDSSСлужебный.ПолучитьВсеСертификаты(Ложь); ВсеСертификаты = МодульСервисКриптографииDSSСлужебный.ПолучитьВсеСертификаты(Ложь);
@@ -2570,6 +2587,7 @@
ЭлектроннаяПодписьСлужебныйКлиентСервер.ДобавитьОтпечаткиСертификатов( ЭлектроннаяПодписьСлужебныйКлиентСервер.ДобавитьОтпечаткиСертификатов(
ОтпечаткиСертификатовНаКлиенте, МассивСертификатов, ДобавкаВремени(), ТекущаяДатаСеанса()); ОтпечаткиСертификатовНаКлиенте, МассивСертификатов, ДобавкаВремени(), ТекущаяДатаСеанса());
// Конец Локализация
КонецЕсли; КонецЕсли;
@@ -56,6 +56,7 @@
КонецЕсли; КонецЕсли;
Если ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи() Тогда Если ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи() Тогда
// Локализация
МодульСервисКриптографииDSSСлужебный = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSСлужебный"); МодульСервисКриптографииDSSСлужебный = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSСлужебный");
МассивСертификатов = МодульСервисКриптографииDSSСлужебный.ПолучитьДанныеСертификатов(Ложь); МассивСертификатов = МодульСервисКриптографииDSSСлужебный.ПолучитьДанныеСертификатов(Ложь);
@@ -63,6 +64,7 @@
ЭлектроннаяПодписьСлужебныйКлиентСервер.ДобавитьСвойстваСертификатов(ТаблицаСвойствСертификатов, МассивСертификатов, Истина, ЭлектроннаяПодписьСлужебныйКлиентСервер.ДобавитьСвойстваСертификатов(ТаблицаСвойствСертификатов, МассивСертификатов, Истина,
ЭлектроннаяПодписьСлужебный.ДобавкаВремени(), ТекущаяДатаСеанса(), ПараметрыДобавленияСвойств); ЭлектроннаяПодписьСлужебный.ДобавкаВремени(), ТекущаяДатаСеанса(), ПараметрыДобавленияСвойств);
// Конец Локализация
КонецЕсли; КонецЕсли;
Возврат ОбработатьЛичныеСертификаты(ТаблицаСвойствСертификатов, Отбор); Возврат ОбработатьЛичныеСертификаты(ТаблицаСвойствСертификатов, Отбор);
@@ -521,8 +523,10 @@
Результат = Ложь; Результат = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяОблачнаяПодпись") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяОблачнаяПодпись") Тогда
// Локализация
МодульСервисКриптографииDSS = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSS"); МодульСервисКриптографииDSS = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSS");
Результат = МодульСервисКриптографииDSS.ИспользоватьСервисОблачнойПодписи(); Результат = МодульСервисКриптографииDSS.ИспользоватьСервисОблачнойПодписи();
// Конец Локализация
КонецЕсли; КонецЕсли;
Если Результат Тогда Если Результат Тогда
@@ -4009,7 +4009,8 @@
Контекст.Вставить("ИспользоватьОблачнуюПодпись", Ложь); Контекст.Вставить("ИспользоватьОблачнуюПодпись", Ложь);
ВыполнитьНаСтороне(Контекст.Оповещение, Контекст.Операция, "НаСторонеКлиента", Контекст); ВыполнитьНаСтороне(Контекст.Оповещение, Контекст.Операция, "НаСторонеКлиента", Контекст);
Иначе Иначе
ОшибкаНаКлиенте = Новый Структура("ОписаниеОшибки", ДвоичныеДанные.Ошибка); ОшибкаНаКлиенте = Новый Структура("ОписаниеОшибки",
ТекстОшибкиОблачнаяПодпись(Контекст.Операция, ДвоичныеДанные));
ВыполнитьНаСторонеПослеЦикла(ОшибкаНаКлиенте, Контекст); ВыполнитьНаСторонеПослеЦикла(ОшибкаНаКлиенте, Контекст);
КонецЕсли; КонецЕсли;
Возврат; Возврат;
@@ -6153,9 +6154,7 @@
НашлиСертификат = МодульСервисКриптографииDSSКлиентСервер.НайтиСертификат(СвойстваОблачнойПодписи.УчетнаяЗапись, Отпечаток); НашлиСертификат = МодульСервисКриптографииDSSКлиентСервер.НайтиСертификат(СвойстваОблачнойПодписи.УчетнаяЗапись, Отпечаток);
Если НашлиСертификат.Идентификатор = -1 Тогда Если НашлиСертификат.Идентификатор = -1 Тогда
Ошибка = Новый Структура("ОписаниеОшибки", Ошибка = Новый Структура("ОписаниеОшибки", ТекстОшибкиОблачнаяПодпись("ПоискСертификата"));
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаголовокОшибкиПолученияДанных(Контекст.Операция) + Символы.ПС
+ НСтр("ru = 'Сертификат отсутствует в сервисе ""Облачная подпись"" (возможно удален).'"));
Контекст.Вставить("ОперацияНачалась", Ложь); Контекст.Вставить("ОперацияНачалась", Ложь);
ВыполнитьНаСторонеПослеЦикла(Ошибка, Контекст); ВыполнитьНаСторонеПослеЦикла(Ошибка, Контекст);
Возврат; Возврат;
@@ -6474,13 +6473,15 @@
Процедура ПроверитьСертификатПослеПроверкиОблачнаяПодпись(РезультатВызова, Контекст) Экспорт Процедура ПроверитьСертификатПослеПроверкиОблачнаяПодпись(РезультатВызова, Контекст) Экспорт
Если Не РезультатВызова.Выполнено Тогда Если Не РезультатВызова.Выполнено Тогда
Контекст.ОписаниеОшибкиНаСервере = ТекстОшибкиОблачнаяПодписьНастройкиОперации(РезультатВызова.Ошибка); Контекст.ОписаниеОшибкиНаСервере =
ТекстОшибкиОблачнаяПодпись("ПроверкаСертификата", РезультатВызова, Истина);
ПроверитьСертификатПослеНеуспешнойПроверки(Контекст); ПроверитьСертификатПослеНеуспешнойПроверки(Контекст);
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Если Не РезультатВызова.Результат Тогда Если Не РезультатВызова.Результат Тогда
Контекст.ОписаниеОшибкиНаСервере = ТекстОшибкиОблачнаяПодписьСертификатНедействителен(); Контекст.ОписаниеОшибкиНаСервере =
ТекстОшибкиОблачнаяПодпись("ПроверкаСертификата", РезультатВызова, Ложь);
ПроверитьСертификатПослеНеуспешнойПроверки(Контекст); ПроверитьСертификатПослеНеуспешнойПроверки(Контекст);
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -6539,15 +6540,14 @@
Процедура ПроверитьПодписьНаКлиентеПослеПроверкиПодписиОблачнаяПодпись(РезультатВызова, Контекст) Экспорт Процедура ПроверитьПодписьНаКлиентеПослеПроверкиПодписиОблачнаяПодпись(РезультатВызова, Контекст) Экспорт
Если Не РезультатВызова.Выполнено Тогда Если Не РезультатВызова.Выполнено Тогда
ПроверитьПодписьНаКлиентеПослеОшибкиПроверкиПодписи( ТекстОшибки = ТекстОшибкиОблачнаяПодпись("ПроверкаПодписи", РезультатВызова, Истина);
ТекстОшибкиОблачнаяПодписьНастройкиОперации(РезультатВызова.Ошибка), Ложь, Контекст); ПроверитьПодписьНаКлиентеПослеОшибкиПроверкиПодписи(ТекстОшибки, Ложь, Контекст);
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Если Не РезультатВызова.Результат Тогда Если Не РезультатВызова.Результат Тогда
ПроверитьПодписьНаКлиентеПослеОшибкиПроверкиПодписи( ТекстОшибки = ТекстОшибкиОблачнаяПодпись("ПроверкаПодписи", РезультатВызова, Ложь);
ЭлектроннаяПодписьСлужебныйКлиентСервер.ТекстОшибкиСервисаПодписьНедействительна(РезультатВызова.Ошибка), ПроверитьПодписьНаКлиентеПослеОшибкиПроверкиПодписи(ТекстОшибки, Ложь, Контекст);
Ложь, Контекст);
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -6649,18 +6649,48 @@
КонецПроцедуры КонецПроцедуры
Функция ТекстОшибкиОблачнаяПодписьСертификатНедействителен() Функция ТекстОшибкиОблачнаяПодпись(Операция, РезультатВызова = Неопределено, ЭтоОшибкаВыполнения = Ложь)
Возврат НСтр("ru = 'Сервис облачной подписи сообщил, что сертификат недействителен.'"); Если ТипЗнч(РезультатВызова) = Тип("Структура") Тогда
ИсходныйТекст = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(РезультатВызова.СтатусОшибки, "ИсходныйТекст", "");
Иначе
ИсходныйТекст = "";
КонецЕсли;
КонецФункции Если ЗначениеЗаполнено(ИсходныйТекст) Тогда
ТекстОшибки = ИсходныйТекст;
Функция ТекстОшибкиОблачнаяПодписьНастройкиОперации(ТекстОшибки) ИначеЕсли Операция = "ПроверкаПодписи" Тогда
Если ЭтоОшибкаВыполнения Тогда
ТекстОшибки = НСтр("ru = 'Не удалось проверить подпись.'");
Иначе
ТекстОшибки = НСтр("ru = 'Подпись недействительна.'");
КонецЕсли;
Результат = НСтр("ru = 'Не удалось выполнить операцию на сервисе облачной подписи.'"); ИначеЕсли Операция = "ПроверкаСертификата" Тогда
Результат = Результат + Символы.ПС + Символы.ПС + ТекстОшибки; Если ЭтоОшибкаВыполнения Тогда
ТекстОшибки = НСтр("ru = 'Не удалось проверить сертификат.'");
Иначе
ТекстОшибки = НСтр("ru = 'Сертификат недействителен.'");
КонецЕсли;
Возврат Результат; ИначеЕсли Операция = "ПоискСертификата" Тогда
ТекстОшибки = НСтр("ru = 'Не удалось найти сертификат (возможно удален).'");
ИначеЕсли Операция = "Подписание" Тогда
ТекстОшибки = НСтр("ru = 'Не удалось создать подпись.'");
ИначеЕсли Операция = "Шифрование" Тогда
ТекстОшибки = НСтр("ru = 'Не удалось зашифровать данные.'");
ИначеЕсли Операция = "Расшифровка" Тогда
ТекстОшибки = НСтр("ru = 'Не удалось расшифровать данные.'");
Иначе
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Неизвестная операция ""%1"".'"), Операция);
КонецЕсли;
Возврат НСтр("ru = 'Облачный сервис'") + ": " + ТекстОшибки;
КонецФункции КонецФункции
@@ -756,14 +756,9 @@
// Возвращаемое значение: // Возвращаемое значение:
// Строка // Строка
// //
Функция ТекстОшибкиСервисаПодписьНедействительна(ТекстОшибки = "") Экспорт Функция ТекстОшибкиСервисаПодписьНедействительна() Экспорт
Результат = НСтр("ru = 'Облачный сервис сообщил, что подпись недействительна.'"); Возврат НСтр("ru = 'Облачный сервис сообщил, что подпись недействительна.'");
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
Результат = Результат + Символы.ПС + Символы.ПС + ТекстОшибки;
КонецЕсли;
Возврат Результат;
КонецФункции КонецФункции
+9 -9
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="a66517d6-00ea-11ec-7493-0242ac110002"> <mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1867d104-06a7-11ec-8986-0242ac110002">
<name>БиблиотекаСтандартныхПодсистем</name> <name>БиблиотекаСтандартныхПодсистем</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value> <value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym> </synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="a66517e0-00ea-11ec-7493-0242ac110002"/> <containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="1867d10e-06a7-11ec-8986-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="a6651812-00ea-11ec-7493-0242ac110002"/> <containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="1867d136-06a7-11ec-8986-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="a665181c-00ea-11ec-7493-0242ac110002"/> <containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="1867d140-06a7-11ec-8986-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="a665181d-00ea-11ec-7493-0242ac110002"/> <containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="1867d141-06a7-11ec-8986-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="a665181e-00ea-11ec-7493-0242ac110002"/> <containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="1867d142-06a7-11ec-8986-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="a6651826-00ea-11ec-7493-0242ac110002"/> <containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="1867d14a-06a7-11ec-8986-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="15965e6a-dc0d-411b-8dcd-721cf5b7bbe8"/> <containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="2b0e8014-08b0-4a19-a561-06a2c83b7a1f"/>
<defaultRunMode>ManagedApplication</defaultRunMode> <defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant> <scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles> <defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles> <defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor> <vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.5.163</version> <version>3.1.5.171</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress> <updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents> <includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities> <usedMobileApplicationFunctionalities>
@@ -1 +1 @@
{6,1,1,05b8acd4-00eb-11ec-1d9e-0242ac110002,1,ed069584-00ea-11ec-9286-0242ac110002,"3.1.5.163","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6460,1,0,a66517d6-00ea-11ec-7493-0242ac110002,a66517d6-00ea-11ec-7493-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,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63Line truncated {6,1,1,5e836194-06a7-11ec-b291-0242ac110002,1,4dbca118-06a7-11ec-8e83-0242ac110002,"3.1.5.171","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6460,1,0,1867d104-06a7-11ec-8986-0242ac110002,1867d104-06a7-11ec-8986-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,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63Line truncated
@@ -388,6 +388,18 @@
ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания); ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
КонецЕсли; КонецЕсли;
ДатаНачала = Неопределено; // Дата
ДатаОкончания = Неопределено; // Дата
ДатыОтбораУказаны = ОтборЖурналаРегистрации.Свойство("ДатаНачала", ДатаНачала) И ОтборЖурналаРегистрации.Свойство("ДатаОкончания", ДатаОкончания)
И ЗначениеЗаполнено(ДатаНачала) И ЗначениеЗаполнено(ОтборЖурналаРегистрации.ДатаОкончания);
Если ДатыОтбораУказаны И ДатаНачала > ДатаОкончания Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.ПолеИндикаторДлительныхОпераций, "НеИспользовать");
Элементы.Страницы.ТекущаяСтраница = Элементы.ЖурналРегистрации;
ВызватьИсключение НСтр("ru = 'Некорректно заданы условия отбора журнала регистрации.
|Дата начала не может быть больше даты окончания.'");
КонецЕсли;
ПараметрыОтчета = ПараметрыОтчета(); ПараметрыОтчета = ПараметрыОтчета();
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
@@ -270,7 +270,7 @@
Оповещение = Новый ОписаниеОповещения("КомментарийНачалоВыбораЗавершение", ЭтотОбъект); Оповещение = Новый ОписаниеОповещения("КомментарийНачалоВыбораЗавершение", ЭтотОбъект);
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста( ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста(
Оповещение, Элементы.Комментарий.ТекстРедактирования, НСтр("ru='Служебный комментарий'")); Оповещение, Элементы.Комментарий.ТекстРедактирования, НСтр("ru = 'Служебный комментарий'"));
КонецПроцедуры КонецПроцедуры
@@ -1257,7 +1257,7 @@
Функция ЕстьЦиклПорядкаВыполненияОбработчиков(Сообщать = Истина) Функция ЕстьЦиклПорядкаВыполненияОбработчиков(Сообщать = Истина)
ЭтотОбработчик = Объект.ОбработчикиОбновления[0].Ссылка; ЭтотОбработчик = Объект.ОбработчикиОбновления[0].Ссылка;
ЕстьЦикл = ЭтотОбъект.ВладелецФормы.ЕстьЦиклПорядкаВыполненияОбработчиков(ЭтотОбработчик, Объект.ПриоритетыВыполнения); ЕстьЦикл = ВладелецФормы.ЕстьЦиклПорядкаВыполненияОбработчиков(ЭтотОбработчик, Объект.ПриоритетыВыполнения);
Возврат ЕстьЦикл; Возврат ЕстьЦикл;
КонецФункции КонецФункции
@@ -1376,7 +1376,7 @@
Имена.Удалить(Имена.ВГраница()); Имена.Удалить(Имена.ВГраница());
ОписаниеОбработчика.ИмяОбъекта = СтрСоединить(Имена, "."); ОписаниеОбработчика.ИмяОбъекта = СтрСоединить(Имена, ".");
ИнверсныйПорядок = ИнверсныйПорядок(); ИнверсныйПорядок = Обработка.ИнверсныйПорядок();
Отбор = Новый Структура("Ссылка", ОписаниеОбработчика.Ссылка); Отбор = Новый Структура("Ссылка", ОписаниеОбработчика.Ссылка);
Для Каждого ТабличнаяЧасть Из Данные.ТабличныеЧасти Цикл Для Каждого ТабличнаяЧасть Из Данные.ТабличныеЧасти Цикл
@@ -1415,17 +1415,6 @@
КонецФункции КонецФункции
&НаСервере
Функция ИнверсныйПорядок()
ИнверсныйПорядок = Новый Соответствие;
ИнверсныйПорядок.Вставить("До","После");
ИнверсныйПорядок.Вставить("После","До");
ИнверсныйПорядок.Вставить("Любой","Любой");
Возврат ИнверсныйПорядок;
КонецФункции
&НаСервере &НаСервере
Процедура ИнвертироватьПорядок(Обработка, Запись, ИнверсныйПорядок) Процедура ИнвертироватьПорядок(Обработка, Запись, ИнверсныйПорядок)
@@ -3851,7 +3840,7 @@
Функция ЕстьЦиклПорядкаВыполненияОбработчиков(Знач ЭтотОбработчик, Знач ПриоритетыВыполнения = Неопределено, СообщатьОбОшибках = Истина) Экспорт Функция ЕстьЦиклПорядкаВыполненияОбработчиков(Знач ЭтотОбработчик, Знач ПриоритетыВыполнения = Неопределено, СообщатьОбОшибках = Истина) Экспорт
Обработка = ОбъектОбработки(); Обработка = ОбъектОбработки();
ЕстьЦикл = Обработка.ЕстьЦиклПорядкаВыполненияОбработчика(ЭтотОбработчик, ПриоритетыВыполнения, СообщатьОбОшибках); ЕстьЦикл = Обработка.ЕстьЦиклВыполненияОбработчиков(ЭтотОбработчик, ПриоритетыВыполнения, СообщатьОбОшибках);
Возврат ЕстьЦикл; Возврат ЕстьЦикл;
КонецФункции КонецФункции
@@ -15,7 +15,6 @@
Перем МножественноеЧисло Экспорт; Перем МножественноеЧисло Экспорт;
Перем ЕдинственноеЧисло Экспорт; Перем ЕдинственноеЧисло Экспорт;
Перем МодулиПодсистем Экспорт; Перем МодулиПодсистем Экспорт;
Перем ПриоритетыПоИндексам;
#КонецОбласти #КонецОбласти
@@ -312,90 +311,6 @@
КонецФункции КонецФункции
// Проверяет наличие зацикленности выполнения по данным приоритетов для всех обработчиков.
//
// Возвращаемое значение:
// Булево - Истина если есть зацикленность выполнения
//
Функция ЕстьЦиклВыполненияОбработчиков() Экспорт
ПриоритетыПоИндексам = ПриоритетыВыполнения.Выгрузить();
ПриоритетыПоИндексам.Индексы.Добавить("Ссылка, Порядок");
ЕстьЦикл = Ложь;
Для Каждого Обработчик Из ОбработчикиОбновления Цикл
ЕстьЦикл = ЕстьЦиклПорядкаВыполненияОбработчика(Обработчик.Ссылка) ИЛИ ЕстьЦикл;
КонецЦикла;
Возврат ЕстьЦикл;
КонецФункции
// Проверяет наличие зацикленности выполнения по данным приоритетов для конкретного обработчика.
//
// Параметры:
// ЭтотОбработчик - Структура - описание обработчика
// ПриоритетыОбработчика - ТаблицаЗначений - выгрузки табличной части ПриоритетыВыполнения
// СообщатьОбОшибках - Булево
//
// Возвращаемое значение:
// Булево - Истина если есть зацикленность выполнения
//
Функция ЕстьЦиклПорядкаВыполненияОбработчика(Знач ЭтотОбработчик, Знач ПриоритетыОбработчика = Неопределено, СообщатьОбОшибках = Ложь) Экспорт
Если ПриоритетыПоИндексам = Неопределено Тогда
ПриоритетыПоИндексам = ПриоритетыВыполнения.Выгрузить();
ПриоритетыПоИндексам.Индексы.Добавить("Ссылка, Порядок");
КонецЕсли;
СвязанныеОбработчикиДо = Новый Массив;
СвязанныеОбработчикиПосле = Новый Массив;
Если ЭтотОбработчик <> Неопределено И ПриоритетыОбработчика = Неопределено Тогда
Отбор = Новый Структура("Ссылка", ЭтотОбработчик);
ПриоритетыОбработчика = ПриоритетыПоИндексам.НайтиСтроки(Отбор);
КонецЕсли;
Для Каждого Приоритет Из ПриоритетыОбработчика Цикл
Связанный = НовыйОбработчик(Приоритет.Обработчик2, Приоритет.Процедура2);
Если Приоритет.Порядок = "До" Тогда
СвязанныеОбработчикиДо.Добавить(Связанный);
ИначеЕсли Приоритет.Порядок = "После" Тогда
СвязанныеОбработчикиПосле.Добавить(Связанный);
КонецЕсли;
КонецЦикла;
Если СвязанныеОбработчикиДо.Количество() = 0 И СвязанныеОбработчикиПосле.Количество() = 0 Тогда
Возврат Ложь;
КонецЕсли;
ЕстьЦикл = Ложь;
Путь = Новый Массив;
ПолныйПуть = Новый Массив;
Если СвязанныеОбработчикиДо.Количество() > 0 Тогда
ЕстьЦикл = ЕстьЦиклВПорядкеОбработчиков(ЭтотОбработчик, СвязанныеОбработчикиДо, "До", Путь, ПолныйПуть);
КонецЕсли;
Если НЕ ЕстьЦикл И СвязанныеОбработчикиПосле.Количество() > 0 Тогда
ЕстьЦикл = ЕстьЦиклВПорядкеОбработчиков(ЭтотОбработчик, СвязанныеОбработчикиПосле, "После", Путь, ПолныйПуть);
КонецЕсли;
Если ЕстьЦикл Тогда
ОписаниеОбработчика = ОбработчикиОбновления.НайтиСтроки(Новый Структура("Ссылка", ЭтотОбработчик));
ПолныйПуть.Вставить(0, ОписаниеОбработчика[0].Процедура);
ТекстПути = СтрСоединить(ПолныйПуть, Символы.ПС);
ТекстСообщения = НСтр("ru = 'Обнаружен цикл порядка выполнения:'") + Символы.ПС + "%Путь%";
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Путь%", ТекстПути);
ДобавитьОшибку(ОписаниеОбработчика[0].Процедура, ТекстСообщения);
Если СообщатьОбОшибках Тогда
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецЕсли;
Возврат ЕстьЦикл;
КонецФункции
#КонецОбласти #КонецОбласти
#Область ИнициализацияИЗаполнение #Область ИнициализацияИЗаполнение
@@ -1516,7 +1431,7 @@
Процедура ВывестиСообщениеОбОшибках(БросатьИсключение = Истина) Процедура ВывестиСообщениеОбОшибках(БросатьИсключение = Истина)
Если БросатьИсключение Тогда Если БросатьИсключение Тогда
ИмяСобытия = НСтр("ru='Построение очереди обработчиков обновления'", ОбщегоНазначения.КодОсновногоЯзыка()); ИмяСобытия = НСтр("ru = 'Построение очереди обработчиков обновления'", ОбщегоНазначения.КодОсновногоЯзыка());
СписокПроблемныхОбработчиков = ""; СписокПроблемныхОбработчиков = "";
Для Каждого Ошибка Из Ошибки Цикл Для Каждого Ошибка Из Ошибки Цикл
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(Ошибка.ОбъектМетаданных); ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(Ошибка.ОбъектМетаданных);
@@ -1544,68 +1459,357 @@
КонецПроцедуры КонецПроцедуры
#Область ЕстьЦиклВыполненияОбработчиков
// Проверяет наличие зацикленности выполнения по данным приоритетов для всех обработчиков.
//
// Возвращаемое значение:
// Булево - Истина если есть зацикленность выполнения
//
Функция ЕстьЦиклВыполненияОбработчиков(ПроверяемыйОбработчик = Неопределено, Знач ПриоритетыОбработчика = Неопределено, СообщатьОбОшибках = Ложь) Экспорт
СписокРебер = ПриоритетыВыполнения.Выгрузить(, "Ссылка, Обработчик2, Порядок");
Если ПриоритетыОбработчика <> Неопределено Тогда
ИнверсныйПорядок = ИнверсныйПорядок();
Для Каждого НовыйПриоритет Из ПриоритетыОбработчика Цикл
Отбор = Новый Структура("Ссылка,Обработчик2");
ЗаполнитьЗначенияСвойств(Отбор, НовыйПриоритет);
НайденныеРебра = СписокРебер.НайтиСтроки(Отбор);
Если НайденныеРебра.Количество() = 0 Тогда
НовоеРебро = СписокРебер.Добавить();
ЗаполнитьЗначенияСвойств(НовоеРебро, НовыйПриоритет);
Иначе
ЗаполнитьЗначенияСвойств(НайденныеРебра[0], НовыйПриоритет);
Отбор.Ссылка = НовыйПриоритет.Обработчик2;
Отбор.Обработчик2 = НовыйПриоритет.Ссылка;
НайденныеРебра = СписокРебер.НайтиСтроки(Отбор);
НайденныеРебра[0].Порядок = ИнверсныйПорядок[НовыйПриоритет.Порядок];
КонецЕсли;
КонецЦикла;
КонецЕсли;
СписокРебер.Колонки.Ссылка.Имя = "Начало";
СписокРебер.Колонки.Обработчик2.Имя = "Конец";
ЛюбыеЗависимости = СписокРебер.НайтиСтроки(Новый Структура("Порядок", "Любой"));
Для Каждого ЛюбаяЗависимость Из ЛюбыеЗависимости Цикл
СписокРебер.Удалить(ЛюбаяЗависимость);
КонецЦикла;
ЗависимостиДо = СписокРебер.НайтиСтроки(Новый Структура("Порядок", "До"));
Для Каждого ЗависимостьДо Из ЗависимостиДо Цикл
Начало = ЗависимостьДо.Начало;
ЗависимостьДо.Начало = ЗависимостьДо.Конец;
ЗависимостьДо.Конец = Начало;
КонецЦикла;
СписокРебер.Колонки.Удалить("Порядок");
ОптимизироватьСписокРебер(СписокРебер);
СписокВершин = СписокВершин(СписокРебер);
СписокСмежности = СписокСмежности(СписокРебер, СписокВершин);
ИндексПроверяемогоОбработчика = Неопределено;
Если ПроверяемыйОбработчик <> Неопределено Тогда
Отбор = Новый Структура("Значение", ПроверяемыйОбработчик);
НайденныеСтроки = СписокВершин.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0 Тогда
Возврат Ложь;
КонецЕсли;
СтрокаПроверяемогоОбработчика = НайденныеСтроки[0];
ИндексПроверяемогоОбработчика = СписокВершин.Индекс(СтрокаПроверяемогоОбработчика);
КонецЕсли;
ЦиклыГрафа = НайтиЦиклыГрафа(СписокВершин, СписокСмежности, ИндексПроверяемогоОбработчика);
ЕстьЦикл = ЦиклыГрафа.Количество() > 0;
Если ЕстьЦикл Тогда
Для Каждого ЦиклГрафа Из ЦиклыГрафа Цикл
ПолныйПуть = Новый Массив;
Для Каждого Ссылка Из ЦиклГрафа Цикл
Описание = ОбработчикиОбновления.Найти(Ссылка, "Ссылка");
ПолныйПуть.Добавить(Описание.Процедура);
КонецЦикла;
ТекстПути = СтрСоединить(ПолныйПуть, Символы.ПС);
ТекстСообщения = НСтр("ru = 'Обнаружен цикл порядка выполнения:'") + Символы.ПС + "%Путь%";
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Путь%", ТекстПути);
ДобавитьОшибку("", ТекстСообщения);
Если СообщатьОбОшибках Тогда
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат ЕстьЦикл;
КонецФункции
#Область ПоискЦиклов
Процедура ДобавитьЦиклВРезультатПоиска(Параметры)
НачалоЦикла = Параметры.НачалоЦикла;
Вершина = Параметры.КонецЦикла;
Путь = Параметры.Путь;
СтруктураЦикла = Новый Массив;
СтруктураЦикла.Добавить(НачалоЦикла);
Пока Вершина <> НачалоЦикла Цикл
СтруктураЦикла.Добавить(Вершина);
Вершина = Путь[Вершина];
КонецЦикла;
СтруктураЦикла.Добавить(НачалоЦикла);
ПеревернутьМассив(СтруктураЦикла);
Параметры.Циклы.Добавить(СтруктураЦикла);
КонецПроцедуры
Процедура ЗаполнитьВершиныЗначениями(МассивВершин, СписокВершин)
Для ИндексВершины = 0 По МассивВершин.ВГраница() Цикл
МассивВершин[ИндексВершины] = СписокВершин[МассивВершин[ИндексВершины]].Значение;
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьЦиклыЗначениями(Параметры)
СписокВершин = Параметры.СписокВершин;
Для Каждого СтруктураЦикла Из Параметры.Циклы Цикл
ЗаполнитьВершиныЗначениями(СтруктураЦикла, СписокВершин);
КонецЦикла;
КонецПроцедуры
Процедура ОптимизироватьСписокРебер(СписокРебер)
СписокРебер.Свернуть("Начало, Конец");
СписокРебер.Индексы.Добавить("Начало");
КонецПроцедуры
Процедура ПеревернутьМассив(Массив)
ИндексНачала = 0;
ИндексКонца = Массив.ВГраница();
Пока ИндексНачала < ИндексКонца Цикл
Значение = Массив[ИндексНачала];
Массив[ИндексНачала] = Массив[ИндексКонца];
Массив[ИндексКонца] = Значение;
ИндексНачала = ИндексНачала + 1;
ИндексКонца = ИндексКонца - 1;
КонецЦикла;
КонецПроцедуры
Процедура ПоискВГлубинуГрафа(ВершинаВыхода, Параметры)
СостоянияВершин = Параметры.СостоянияВершин;
СостоянияВершин[ВершинаВыхода] = 1;
ВершиныВхода = Параметры.СписокСмежности[ВершинаВыхода];
Если ВершиныВхода <> Неопределено Тогда
Для ИндексВершиныВхода = 0 По ВершиныВхода.Количество() - 1 Цикл
ВершинаВхода = ВершиныВхода[ИндексВершиныВхода];
СостояниеВершиныВхода = СостоянияВершин[ВершинаВхода];
Если СостояниеВершиныВхода = Неопределено Тогда
Параметры.Путь[ВершинаВхода] = ВершинаВыхода;
ПоискВГлубинуГрафа(ВершинаВхода, Параметры);
ИначеЕсли СостояниеВершиныВхода = 1 Тогда
Параметры.НачалоЦикла = ВершинаВхода;
Параметры.КонецЦикла = ВершинаВыхода;
ДобавитьЦиклВРезультатПоиска(Параметры);
КонецЕсли;
КонецЦикла;
КонецЕсли;
СостоянияВершин[ВершинаВыхода] = 2;
КонецПроцедуры
Процедура УдалитьЛишниеЦиклы(Циклы)
ИсходныеЦиклы = СоответствиеПредставленийИЗначенийЦиклов(Циклы);
НормализованныеЦиклы = Новый Массив;
Для Каждого ИсходныйЦикл Из ИсходныеЦиклы Цикл
НормализованныйЦикл = НормализоватьЦикл(ИсходныйЦикл.Значение);
НормализованныеЦиклы.Добавить(НормализованныйЦикл);
КонецЦикла;
УникальныеЦиклы = СоответствиеПредставленийИЗначенийЦиклов(НормализованныеЦиклы);
Циклы.Очистить();
Для Каждого УникальныйЦикл Из УникальныеЦиклы Цикл
Циклы.Добавить(УникальныйЦикл.Значение);
КонецЦикла;
КонецПроцедуры
Функция ИндексМинимальногоЗначенияВМассиве(Массив)
Если Массив.Количество() = 0 Тогда
Возврат Неопределено;
КонецЕсли;
Минимум = Массив[0];
ИндексМинимума = 0;
Для Индекс = 1 По Массив.ВГраница() Цикл
Значение = Массив[Индекс];
Если Значение < Минимум Тогда
Минимум = Значение;
ИндексМинимума = Индекс;
КонецЕсли;
КонецЦикла;
Возврат ИндексМинимума;
КонецФункции
Функция НайтиЦиклыГрафа(СписокВершин, СписокСмежности, НачальнаяВершина = Неопределено)
ПараметрыПоиска = НовыеПараметрыПоискаВГлубинуГрафа(СписокВершин, СписокСмежности);
КоличествоВершин = СписокВершин.Количество();
Если НачальнаяВершина = Неопределено Тогда
Для ИндексВершиныВыхода = 0 По КоличествоВершин - 1 Цикл
ПараметрыПоиска.СостоянияВершин = Новый Массив(КоличествоВершин);
ПоискВГлубинуГрафа(ИндексВершиныВыхода, ПараметрыПоиска);
КонецЦикла;
Иначе
ПоискВГлубинуГрафа(НачальнаяВершина, ПараметрыПоиска);
КонецЕсли;
УдалитьЛишниеЦиклы(ПараметрыПоиска.Циклы);
ЗаполнитьЦиклыЗначениями(ПараметрыПоиска);
Возврат ПараметрыПоиска.Циклы;
КонецФункции
Функция НовыеПараметрыПоискаВГлубинуГрафа(СписокВершин, СписокСмежности)
КоличествоВершин = СписокВершин.Количество();
ПараметрыПоиска = Новый Структура;
ПараметрыПоиска.Вставить("СписокВершин", СписокВершин);
ПараметрыПоиска.Вставить("СписокСмежности", СписокСмежности);
ПараметрыПоиска.Вставить("СостоянияВершин", Новый Массив(КоличествоВершин));
ПараметрыПоиска.Вставить("Путь", Новый Массив(КоличествоВершин));
ПараметрыПоиска.Вставить("Циклы", Новый Массив);
ПараметрыПоиска.Вставить("НачалоЦикла");
ПараметрыПоиска.Вставить("КонецЦикла");
Возврат ПараметрыПоиска;
КонецФункции
Функция НормализоватьЦикл(СтруктураЦикла)
СтруктураЦикла.Удалить(СтруктураЦикла.ВГраница());
ИндексМинимума = ИндексМинимальногоЗначенияВМассиве(СтруктураЦикла);
НормализованныйЦикл = ЦиклическиСдвинутыйМассив(СтруктураЦикла, -ИндексМинимума);
НормализованныйЦикл.Добавить(НормализованныйЦикл[0]);
Возврат НормализованныйЦикл;
КонецФункции
Функция СоответствиеПредставленийИЗначенийЦиклов(Циклы)
Соответствие = Новый Соответствие;
Для Каждого СтруктураЦикла Из Циклы Цикл
ПредставлениеЦикла = СтрСоединить(СтруктураЦикла, " → ");
Значение = Соответствие[ПредставлениеЦикла];
Если Значение = Неопределено Тогда
Соответствие[ПредставлениеЦикла] = СтруктураЦикла;
КонецЕсли;
КонецЦикла;
Возврат Соответствие;
КонецФункции
Функция СписокВершин(СписокРебер)
ВершиныВыхода = СписокРебер.Скопировать(, "Начало");
ВершиныВхода = СписокРебер.Скопировать(, "Конец");
ВершиныВхода.Свернуть("Конец");
Для Каждого ВершинаВхода Из ВершиныВхода Цикл
ВершинаВыхода = ВершиныВыхода.Добавить();
ВершинаВыхода.Начало = ВершинаВхода.Конец;
КонецЦикла;
ВершиныВыхода.Свернуть("Начало");
ВершиныВыхода.Колонки.Начало.Имя = "Значение";
ВершиныВыхода.Индексы.Добавить("Значение");
Возврат ВершиныВыхода;
КонецФункции
Функция СписокСмежности(СписокРебер, СписокВершин)
КоличествоВершин = СписокВершин.Количество();
СписокСмежности = Новый Массив(КоличествоВершин);
ОтборВСпискеРебер = Новый Структура("Начало");
ОтборВСпискеВершин = Новый Структура("Значение");
Для ИндексВершины = 0 По КоличествоВершин - 1 Цикл
ВершинаВыхода = СписокВершин[ИндексВершины].Значение;
ОтборВСпискеРебер.Начало = ВершинаВыхода;
ВершиныВхода = СписокРебер.НайтиСтроки(ОтборВСпискеРебер);
КоличествоВершинВхода = ВершиныВхода.Количество();
Если КоличествоВершинВхода > 0 Тогда
СписокВершинВхода = Новый Массив(КоличествоВершинВхода);
СписокСмежности[ИндексВершины] = СписокВершинВхода;
Для ИндексВершиныВхода = 0 По КоличествоВершинВхода - 1 Цикл
ВершинаВхода = ВершиныВхода[ИндексВершиныВхода].Конец;
ОтборВСпискеВершин.Значение = ВершинаВхода;
СписокВершинВхода[ИндексВершиныВхода] = СписокВершин.Индекс(СписокВершин.НайтиСтроки(ОтборВСпискеВершин)[0]);
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат СписокСмежности;
КонецФункции
Функция ЦиклическиСдвинутыйМассив(Массив, Смещение)
Количество = Массив.Количество();
СдвинутыйМассив = Новый Массив(Количество);
Для Индекс = 0 По Массив.ВГраница() Цикл
СмещениеИсточника = Индекс - Смещение + ?(Смещение < 0, 0, Количество);
ИндексИсточника = СмещениеИсточника % Количество;
СдвинутыйМассив[Индекс] = Массив[ИндексИсточника];
КонецЦикла;
Возврат СдвинутыйМассив;
КонецФункции
#КонецОбласти #КонецОбласти
#Область ЕстьЦиклПорядкаВыполнения #КонецОбласти
// Параметры:
// Обработчик - Структура - описание обработчика
// СвязанныеОбработчики - Массив из ДокументСсылка
// НаправлениеОбхода - Строка
// Путь - Массив
// Возвращаемое значение:
// Булево - истина если есть цикл в порядке выполнения обработчиков
//
Функция ЕстьЦиклВПорядкеОбработчиков(Обработчик, СвязанныеОбработчики, НаправлениеОбхода, Путь, ПолныйПуть)
Для каждого СвязанныйОбработчик Из СвязанныеОбработчики Цикл
Если ПолныйПуть.Найти(СвязанныйОбработчик.Процедура) <> Неопределено Тогда
ПолныйПуть.Добавить(СвязанныйОбработчик.Процедура);
Возврат Ложь; // для предотвращения зацикливания проверки
КонецЕсли;
ПолныйПуть.Добавить(СвязанныйОбработчик.Процедура);
Если СвязанныйОбработчик.Ссылка = Обработчик Тогда
Путь.Добавить(СвязанныйОбработчик.Процедура);
Возврат Истина;
КонецЕсли;
СвязанныеОбработчикиТекущего = СвязанныеОбработчики(СвязанныйОбработчик.Ссылка, НаправлениеОбхода);
Если СвязанныеОбработчикиТекущего.Количество() > 0 Тогда
Если ЕстьЦиклВПорядкеОбработчиков(Обработчик, СвязанныеОбработчикиТекущего, НаправлениеОбхода, Путь, ПолныйПуть) Тогда
Путь.Добавить(СвязанныйОбработчик.Процедура);
Возврат Истина;
КонецЕсли;
КонецЕсли;
ПолныйПуть.Удалить(ПолныйПуть.ВГраница());
КонецЦикла;
Возврат Ложь;
КонецФункции
Функция СвязанныеОбработчики(Обработчик, НаправлениеОбхода)
Отбор = Новый Структура("Ссылка, Порядок", Обработчик, НаправлениеОбхода);
ПриоритетыОбработчика = ПриоритетыПоИндексам.НайтиСтроки(Отбор);
Результат = Новый Массив;
Для Каждого Приоритет Из ПриоритетыОбработчика Цикл
Связанный = НовыйОбработчик(Приоритет.Обработчик2, Приоритет.Процедура2);
Результат.Добавить(Связанный);
КонецЦикла;
Возврат Результат;
КонецФункции
Функция НовыйОбработчик(Ссылка = "", ИмяПроцедуры = "")
Возврат Новый Структура("Ссылка, Процедура", Ссылка, ИмяПроцедуры);
КонецФункции
#КонецОбласти #КонецОбласти
@@ -1716,6 +1920,21 @@
Возврат Новый Структура("РежимВыполненияОтложенныхОбработчиков,ПорядокБиблиотеки"); Возврат Новый Структура("РежимВыполненияОтложенныхОбработчиков,ПорядокБиблиотеки");
КонецФункции КонецФункции
// Возвращает соответствие инверсных порядков
//
// Возвращаемое значение:
// Соответствие - прямого порядка инверсному
//
Функция ИнверсныйПорядок() Экспорт
ИнверсныйПорядок = Новый Соответствие;
ИнверсныйПорядок.Вставить("До","После");
ИнверсныйПорядок.Вставить("После","До");
ИнверсныйПорядок.Вставить("Любой","Любой");
Возврат ИнверсныйПорядок;
КонецФункции
#КонецОбласти #КонецОбласти
#КонецОбласти #КонецОбласти
@@ -145,15 +145,15 @@
Функция ЗаголовокНастройкиСервисаПереводаТекста(СервисПереводаТекста) Функция ЗаголовокНастройкиСервисаПереводаТекста(СервисПереводаТекста)
Если ЗначениеЗаполнено(СервисПереводаТекста) Тогда Если ЗначениеЗаполнено(СервисПереводаТекста) Тогда
Шаблон = НСтр("ru = 'Перевод текста с помощью <a href=""ПерейтиКНастройкеСервисаПереводаТекста"">%1</a>'"); Шаблон = НСтр("ru = 'Перевод текста с помощью <a href=""%1"">%2</a>'");
Иначе Иначе
Шаблон = НСтр("ru = 'Перевод текста с помощью внешнего сервиса'"); Шаблон = НСтр("ru = 'Перевод текста с помощью внешнего сервиса'");
КонецЕсли; КонецЕсли;
#Если Клиент Тогда #Если Клиент Тогда
Возврат СтроковыеФункцииКлиент.ФорматированнаяСтрока(Шаблон, СервисПереводаТекста); Возврат СтроковыеФункцииКлиент.ФорматированнаяСтрока(Шаблон, "ПерейтиКНастройкеСервисаПереводаТекста", СервисПереводаТекста);
#Иначе #Иначе
Возврат СтроковыеФункции.ФорматированнаяСтрока(Шаблон, СервисПереводаТекста); Возврат СтроковыеФункции.ФорматированнаяСтрока(Шаблон, "ПерейтиКНастройкеСервисаПереводаТекста", СервисПереводаТекста);
#КонецЕсли #КонецЕсли
КонецФункции КонецФункции
@@ -38,8 +38,8 @@
Процедура ПриОткрытии(Отказ) Процедура ПриОткрытии(Отказ)
Если КоличествоТомовХранения = 0 Тогда Если КоличествоТомовХранения = 0 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Нет ни одного тома для размещения файлов.'")); ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииПослеЗакрытияПредупреждения", ЭтотОбъект);
Отказ = Истина; ПоказатьПредупреждение(ОписаниеОповещения, НСтр("ru = 'Невозможно перенести файлы между томами, т.к. нет ни одного тома для размещения файлов.'"));
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -170,6 +170,13 @@
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытииПослеЗакрытияПредупреждения(Результат) Экспорт
Закрыть();
КонецПроцедуры
&НаСервере &НаСервере
Функция ВыполнитьПереносНаСервере() Функция ВыполнитьПереносНаСервере()
@@ -381,10 +381,14 @@
|через запуск 1С:Предприятия, либо временно отключать расширения конфигурации.'"); |через запуск 1С:Предприятия, либо временно отключать расширения конфигурации.'");
КонецЕсли; КонецЕсли;
Возврат ДлительныеОперации.ВыполнитьВФоне( Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедурыФоновогоЗадания(),
"РегистрыСведений.ПараметрыРаботыПрограммы.ОбработчикДлительнойОперацииОбновленияПараметровРаботыПрограммы", СообщитьПрогресс, ПараметрыОперации);
СообщитьПрогресс,
ПараметрыОперации); КонецФункции
Функция ИмяПроцедурыФоновогоЗадания() Экспорт
Возврат "РегистрыСведений.ПараметрыРаботыПрограммы.ОбработчикДлительнойОперацииОбновленияПараметровРаботыПрограммы";
КонецФункции КонецФункции
@@ -624,6 +624,93 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>InformationRegister.ДомаЗданияСтроения</name> <name>InformationRegister.ДомаЗданияСтроения</name>
<right> <right>
@@ -3273,93 +3360,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>InformationRegister.ПараметрыРаботыПрограммы</name> <name>InformationRegister.ПараметрыРаботыПрограммы</name>
<right> <right>
@@ -14,6 +14,37 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>Catalog.РассылкиОтчетов.Command.СобытияРассылки</name> <name>Catalog.РассылкиОтчетов.Command.СобытияРассылки</name>
<right> <right>
@@ -76,37 +107,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<restrictionTemplate> <restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name> <name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "") <condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -937,6 +937,45 @@
<value>false</value> <value>false</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object> <object>
<name>InformationRegister.ДомаЗданияСтроения</name> <name>InformationRegister.ДомаЗданияСтроения</name>
<right> <right>
@@ -4651,45 +4690,6 @@
<value>false</value> <value>false</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object> <object>
<name>Catalog.ЗначенияСвойствОбъектовИерархия</name> <name>Catalog.ЗначенияСвойствОбъектовИерархия</name>
<right> <right>
@@ -1070,13 +1070,16 @@
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
Если Не МетаданныеОбъекта.Иерархический Тогда
Продолжить;
КонецЕсли;
Если МетаданныеОбъекта.ВидИерархии = ВидыИерархии.ИерархияГруппИЭлементов Тогда Если МетаданныеОбъекта.ВидИерархии = ВидыИерархии.ИерархияГруппИЭлементов Тогда
ВидИерархии = ВидИерархииИерархияГруппИЭлементов(); ВидИерархии = ВидИерархииИерархияГруппИЭлементов();
Иначе Иначе
ВидИерархии = ВидИерархииИерархияЭлементов(); ВидИерархии = ВидИерархииИерархияЭлементов();
КонецЕсли; КонецЕсли;
ВидыИерархииЗначений.Вставить(ТипЗначения, ВидИерархии); ВидыИерархииЗначений.Вставить(ТипЗначения, ВидИерархии);
КонецЦикла; КонецЦикла;