3_1_9_199

This commit is contained in:
Компания 1С committed 2023-10-31 23:16:00 +03:00
1 parent 7608f6cefa
commit 6c5693ada5
214 files changed
+6434 -4280

No files matched your search

@@ -56,10 +56,9 @@
Результат = Новый Структура;
Результат.Вставить("ПараметрыФормы", Новый Структура("Ключ", ЗадачаСсылка));
ИмяФормы = ?(ТочкаМаршрутаБизнесПроцесса.Имя = "Проверить",
ИмяФормы = ?(ТочкаМаршрутаБизнесПроцесса = БизнесПроцессы.Задание.ТочкиМаршрута.Проверить,
Метаданные.БизнесПроцессы.Задание.Формы.ДействиеПроверить.ПолноеИмя(),
Метаданные.БизнесПроцессы.Задание.Формы.ДействиеВыполнить.ПолноеИмя());
Результат.Вставить("ИмяФормы", ИмяФормы);
Возврат Результат;
@@ -76,9 +75,11 @@
// АПК:1327-выкл Блокировка бизнес-процесса установлена ранее
// в вызывающей функции БизнесПроцессыИЗадачиВызовСервера.ПеренаправитьЗадачи.
БизнесПроцессОбъект = ЗадачаСсылка.БизнесПроцесс.ПолучитьОбъект();
СведенияОЗадаче = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЗадачаСсылка,
"Ссылка,БизнесПроцесс,РезультатВыполнения,ДатаИсполнения,Исполнитель");
БизнесПроцессОбъект = СведенияОЗадаче.БизнесПроцесс.ПолучитьОбъект();
ЗаблокироватьДанныеДляРедактирования(БизнесПроцессОбъект.Ссылка);
БизнесПроцессОбъект.РезультатВыполнения = РезультатВыполненияПриПеренаправлении(ЗадачаСсылка)
БизнесПроцессОбъект.РезультатВыполнения = РезультатВыполненияПриПеренаправлении(СведенияОЗадаче)
+ БизнесПроцессОбъект.РезультатВыполнения;
УстановитьПривилегированныйРежим(Истина);
БизнесПроцессОбъект.Записать();
@@ -239,16 +240,16 @@
КонецПроцедуры
Функция РезультатВыполненияПриПеренаправлении(Знач ЗадачаСсылка)
Функция РезультатВыполненияПриПеренаправлении(Знач СведенияОЗадаче)
СтрокаФормат = "%1, %2 " + НСтр("ru = 'перенаправил(а) задачу'") + ":
|%3
|";
Комментарий = СокрЛП(ЗадачаСсылка.РезультатВыполнения);
Комментарий = СокрЛП(СведенияОЗадаче.РезультатВыполнения);
Комментарий = ?(ПустаяСтрока(Комментарий), "", Комментарий + Символы.ПС);
Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаФормат, ЗадачаСсылка.ДатаИсполнения,
ЗадачаСсылка.Исполнитель, Комментарий);
Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаФормат, СведенияОЗадаче.ДатаИсполнения,
СведенияОЗадаче.Исполнитель, Комментарий);
Возврат Результат;
КонецФункции
@@ -93,7 +93,7 @@
Если ТипЗнч(ДанныеЗаполнения) <> Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда
Предмет = ДанныеЗаполнения;
Иначе
Предмет = ДанныеЗаполнения.Предмет;
Предмет = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеЗаполнения, "Предмет");
КонецЕсли;
КонецЕсли;
@@ -224,6 +224,25 @@
<main>true</main>
<savedData>true</savedData>
</attributes>
<parameters>
<name>Владелец</name>
<valueType>
<types>ChartOfCharacteristicTypesRef.ВопросыДляАнкетирования</types>
</valueType>
</parameters>
<parameters>
<name>ТипОтвета</name>
<valueType>
<types>EnumRef.ТипыОтветовНаВопрос</types>
</valueType>
</parameters>
<parameters>
<name>Наименование</name>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -11,28 +11,22 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("Владелец")
И ТипЗнч(Параметры.Владелец) = Тип("ПланВидовХарактеристикСсылка.ВопросыДляАнкетирования")
И НЕ Параметры.Владелец.Пустая() Тогда
Объект.Владелец = Параметры.Владелец;
Иначе
ТекстСообщения = НСтр("ru = 'Данная форма предназначена для открытия только из формы элемента плана вида характеристик ""Вопросы для анкетирования""'");
Если Параметры.Владелец.Пустая() Тогда
ТекстСообщения = НСтр("ru = 'Данная форма предназначена для открытия только из вопросов для анкетирования.'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
Отказ = Истина;
Возврат;
КонецЕсли;
Если Параметры.Свойство("ТипОтвета") Тогда
Объект.Владелец = Параметры.Владелец;
Если Не Параметры.ТипОтвета.Пустая() Тогда
Элементы.ТребуетОткрытогоОтвета.Видимость = (Параметры.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.НесколькоВариантовИз);
Иначе
Элементы.ТребуетОткрытогоОтвета.Видимость = (Объект.Владелец.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.НесколькоВариантовИз);
ТипОтвета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Владелец, "ТипОтвета");
Элементы.ТребуетОткрытогоОтвета.Видимость = (ТипОтвета = Перечисления.ТипыОтветовНаВопрос.НесколькоВариантовИз);
КонецЕсли;
Если Параметры.Свойство("Наименование") Тогда
Если Не ПустаяСтрока(Параметры.Наименование) Тогда
Объект.Наименование = Параметры.Наименование;
КонецЕсли;
@@ -130,6 +130,7 @@
// - на версию 3.1.9.163: в справочник "Внешние компоненты" добавляет внешнюю компоненту сканирования.
//
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
Параметры.ОбработкаЗавершена = Истина;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(Параметры.ВерсияПодсистемыНаНачалоОбновления, "3.1.6.48") < 0 Тогда
@@ -145,60 +146,69 @@
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(Параметры.ВерсияПодсистемыНаНачалоОбновления, "3.1.5.220") < 0
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись")
И ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ПолучениеВнешнихКомпонент")
И Не ОбщегоНазначения.РазделениеВключено() Тогда
МодульЭлектроннаяПодписьСлужебныйКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебныйКлиентСервер");
МодульЭлектроннаяПодписьСлужебный = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебный");
ИспользуемыеКомпоненты = ВнешниеКомпонентыСервер.ИспользуемыеКомпоненты("ДляЗагрузки");
ОписаниеКомпоненты = МодульЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеКомпоненты();
КомпонентаПоследнейВерсииИзМакета = СтандартныеПодсистемыСервер.КомпонентаПоследнейВерсии(
ОписаниеКомпоненты.ИмяОбъекта, ОписаниеКомпоненты.ПолноеИмяМакета);
Если ИспользуемыеКомпоненты.Найти("ExtraCryptoAPI", "Идентификатор") = Неопределено Тогда
МестоположениеМакетаРазделенное = СтрРазделить(КомпонентаПоследнейВерсииИзМакета.Местоположение, ".");
ДвоичныеДанные = МодульЭлектроннаяПодписьСлужебный.ПолучитьДанныеКомпоненты(
МестоположениеМакетаРазделенное.Получить(МестоположениеМакетаРазделенное.ВГраница()));
МодульЭлектроннаяПодписьСлужебныйКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебныйКлиентСервер");
МодульЭлектроннаяПодписьСлужебный = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебный");
ПараметрыКомпоненты = ВнешниеКомпонентыСлужебный.ПараметрыЗагрузки();
ПараметрыКомпоненты.Идентификатор = ОписаниеКомпоненты.ИмяОбъекта;
ПараметрыКомпоненты.Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 для 1С:Предприятие'", ОбщегоНазначения.КодОсновногоЯзыка()), "ExtraCryptoAPI");
ПараметрыКомпоненты.Версия = КомпонентаПоследнейВерсииИзМакета.Версия;
ПараметрыКомпоненты.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Добавлена автоматически %1.'", ОбщегоНазначения.КодОсновногоЯзыка()), ТекущаяДатаСеанса());
ПараметрыКомпоненты.ОбновлятьСПортала1СИТС = Истина;
ПараметрыКомпоненты.Данные = ДвоичныеДанные;
ВнешниеКомпонентыСлужебный.ЗагрузитьКомпонентуИзДвоичныхДанных(ПараметрыКомпоненты, Ложь);
ОписаниеКомпоненты = МодульЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеКомпоненты();
КомпонентаПоследнейВерсииИзМакета = СтандартныеПодсистемыСервер.КомпонентаПоследнейВерсии(
ОписаниеКомпоненты.ИмяОбъекта, ОписаниеКомпоненты.ПолноеИмяМакета);
МестоположениеМакетаРазделенное = СтрРазделить(КомпонентаПоследнейВерсииИзМакета.Местоположение, ".");
ДвоичныеДанные = МодульЭлектроннаяПодписьСлужебный.ПолучитьДанныеКомпоненты(
МестоположениеМакетаРазделенное.Получить(МестоположениеМакетаРазделенное.ВГраница()));
ПараметрыКомпоненты = ВнешниеКомпонентыСлужебный.ПараметрыЗагрузки();
ПараметрыКомпоненты.Идентификатор = ОписаниеКомпоненты.ИмяОбъекта;
ПараметрыКомпоненты.Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 для 1С:Предприятие'", ОбщегоНазначения.КодОсновногоЯзыка()), "ExtraCryptoAPI");
ПараметрыКомпоненты.Версия = КомпонентаПоследнейВерсииИзМакета.Версия;
ПараметрыКомпоненты.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Добавлена автоматически %1.'", ОбщегоНазначения.КодОсновногоЯзыка()), ТекущаяДатаСеанса());
ПараметрыКомпоненты.ОбновлятьСПортала1СИТС = Истина;
ПараметрыКомпоненты.Данные = ДвоичныеДанные;
ВнешниеКомпонентыСлужебный.ЗагрузитьКомпонентуИзДвоичныхДанных(ПараметрыКомпоненты, Ложь);
КонецЕсли;
Параметры.ОбработкаЗавершена = Истина;
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(Параметры.ВерсияПодсистемыНаНачалоОбновления, "3.1.9.163") < 0
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами")
И ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ПолучениеВнешнихКомпонент")
И Не ОбщегоНазначения.РазделениеВключено() Тогда
ИспользуемыеКомпоненты = ВнешниеКомпонентыСервер.ИспользуемыеКомпоненты("ДляЗагрузки");
МодульРаботаСФайламиСлужебныйКлиентСервер = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиСлужебныйКлиентСервер");
ОписаниеКомпоненты = МодульРаботаСФайламиСлужебныйКлиентСервер.ОписаниеКомпоненты();
КомпонентаПоследнейВерсииИзМакета = СтандартныеПодсистемыСервер.КомпонентаПоследнейВерсии(
ОписаниеКомпоненты.ИмяОбъекта, ОписаниеКомпоненты.ПолноеИмяМакета);
МестоположениеМакетаРазделенное = СтрРазделить(КомпонентаПоследнейВерсииИзМакета.Местоположение, ".");
ДвоичныеДанные = ПолучитьОбщийМакет(МестоположениеМакетаРазделенное.Получить(МестоположениеМакетаРазделенное.ВГраница()));
ПараметрыКомпоненты = ВнешниеКомпонентыСлужебный.ПараметрыЗагрузки();
ПараметрыКомпоненты.Идентификатор = ОписаниеКомпоненты.ИмяОбъекта;
ПараметрыКомпоненты.Наименование = НСтр("ru='Компонента для сканирования документов и изображений'");
ПараметрыКомпоненты.Версия = КомпонентаПоследнейВерсииИзМакета.Версия;
ПараметрыКомпоненты.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Добавлена автоматически %1.'"), ТекущаяДатаСеанса());
ПараметрыКомпоненты.ОбновлятьСПортала1СИТС = Истина;
ПараметрыКомпоненты.Данные = ДвоичныеДанные;
ОписаниеКомпоненты = МодульРаботаСФайламиСлужебныйКлиентСервер.ОписаниеКомпоненты();
ВнешниеКомпонентыСлужебный.ЗагрузитьКомпонентуИзДвоичныхДанных(ПараметрыКомпоненты, Ложь);
Если ИспользуемыеКомпоненты.Найти(ОписаниеКомпоненты.ИмяОбъекта, "Идентификатор") = Неопределено Тогда
Параметры.ОбработкаЗавершена = Истина;
КомпонентаПоследнейВерсииИзМакета = СтандартныеПодсистемыСервер.КомпонентаПоследнейВерсии(
ОписаниеКомпоненты.ИмяОбъекта, ОписаниеКомпоненты.ПолноеИмяМакета);
МестоположениеМакетаРазделенное = СтрРазделить(КомпонентаПоследнейВерсииИзМакета.Местоположение, ".");
ДвоичныеДанные = ПолучитьОбщийМакет(МестоположениеМакетаРазделенное.Получить(МестоположениеМакетаРазделенное.ВГраница()));
ПараметрыКомпоненты = ВнешниеКомпонентыСлужебный.ПараметрыЗагрузки();
ПараметрыКомпоненты.Идентификатор = ОписаниеКомпоненты.ИмяОбъекта;
ПараметрыКомпоненты.Наименование = НСтр("ru='Компонента для сканирования документов и изображений'");
ПараметрыКомпоненты.Версия = КомпонентаПоследнейВерсииИзМакета.Версия;
ПараметрыКомпоненты.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Добавлена автоматически %1.'"), ТекущаяДатаСеанса());
ПараметрыКомпоненты.ОбновлятьСПортала1СИТС = Истина;
ПараметрыКомпоненты.Данные = ДвоичныеДанные;
ВнешниеКомпонентыСлужебный.ЗагрузитьКомпонентуИзДвоичныхДанных(ПараметрыКомпоненты, Ложь);
КонецЕсли;
КонецЕсли;
@@ -123,7 +123,7 @@
ФайлДоверенности = Доверенность.ФайлДоверенности;
РезультатПроверки = МашиночитаемыеДоверенностиФНССлужебный.ПроверитьСертификатДоверителя(Доверенность, ФайлДоверенности, Сертификат, Ложь);
Если РезультатПроверки <> Истина Тогда
ПараметрыОшибкиМЧДРР = МашиночитаемыеДоверенностиФНССлужебный.ПараметрыОшибкиМЧДРР(, , , , НСтр("ru='Подпись не подходит для отмены'"), РезультатПроверки);
ПараметрыОшибкиМЧДРР = МашиночитаемыеДоверенностиФНССлужебный.ПараметрыОшибкиМЧДРР(НСтр("ru='Подпись не подходит для отмены'"), РезультатПроверки);
Результат.Ошибка = МашиночитаемыеДоверенностиФНССлужебный.ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
КонецЕсли;
@@ -606,12 +606,17 @@
Если Подписана Тогда
РегистрироватьВФНС = ТехническийСтатус = ПредопределенноеЗначение("Перечисление.ТехническиеСтатусыМЧД.Подписана");
УстановитьСтатусРегистрации(Объект.Ссылка, Неопределено, РегистрироватьВФНС, РегистрироватьВДругомРеестре);
Если РегистрироватьВФНС Тогда
ОбновитьСтатус(Истина);
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ПродолжитьРегистрациюДоверенности", ЭтотОбъект, РегистрироватьВФНС);
СтандартнаяОбработка = Истина;
Если РегистрироватьВДругомРеестре Тогда
ПрочитатьСостояниеВДругомРеестре();
МашиночитаемыеДоверенностиФНСКлиентПереопределяемый.ПриРегистрацииДоверенности(
Объект.Ссылка, СтандартнаяОбработка, ОписаниеОповещения);
КонецЕсли;
Если СтандартнаяОбработка Тогда
ПродолжитьРегистрациюДоверенности(Неопределено, РегистрироватьВФНС);
КонецЕсли;
Иначе
ПоказатьПредупреждение(, НСтр("ru='Доверенность не подписана всеми доверителями.'"));
@@ -2998,10 +3003,10 @@
Элементы.ОписаниеСостоянияВДругомРеестре.Видимость = Истина;
Элементы.ОписаниеСостоянияВДругомРеестре.Заголовок = ПараметрыПереопределения.СостояниеРегистрации;
Если РегистрироватьВДругомРеестре = Истина Тогда
РегистрироватьВДругомРеестре = Ложь;
ДоступностьПризнакаРегистрацииВРеестре(ЭтотОбъект);
КонецЕсли;
Элементы.РегистрироватьВДругомРеестре.ТолькоПросмотр = Истина;
РегистрироватьВДругомРеестре = Истина;
ДоступностьПризнакаРегистрацииВРеестре(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
@@ -3199,4 +3204,17 @@
ПодключитьОбработчикОжидания("ПрочитатьСтатусДокумента", ПериодОпросаСтатусов, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПродолжитьРегистрациюДоверенности(НеИспользуется, РегистрироватьВФНС) Экспорт
УстановитьСтатусРегистрации(Объект.Ссылка, Неопределено, РегистрироватьВФНС, РегистрироватьВДругомРеестре);
Если РегистрироватьВФНС Тогда
ОбновитьСтатус(Истина);
КонецЕсли;
Если РегистрироватьВДругомРеестре Тогда
ПрочитатьСостояниеВДругомРеестре();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -1383,6 +1383,7 @@
ЭтоПередоверие = ОписаниеДоверенности.Документ.Довер = Неопределено;
Если ЭтоПередоверие Тогда
//@skip-check query-in-loop - штучные запросы в количестве загружаемых доверенностей
ЗаполнитьПередовериеИзОбъектаXDTO(Объект, ОписаниеДоверенности);
Иначе
ЗаполнитьДоверенность(Объект, ОписаниеДоверенности);
@@ -55,6 +55,10 @@
КонецЕсли;
Свойство = ВидыСвойств.Получить(ДополнительныйРеквизит.Свойство);
Если Не ЗначениеЗаполнено(Свойство) Тогда
Продолжить;
КонецЕсли;
Если Свойство.ВидСвойств = Перечисления.ВидыСвойств.Метки Тогда
Меток = Меток + 1;
Иначе
@@ -16,7 +16,10 @@
Возврат;
КонецЕсли;
Если Владелец.ПометкаУдаления Тогда
ВладелецПомеченНаУдаление = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Владелец, "ПометкаУдаления");
Если ВладелецПомеченНаУдаление = Неопределено
Или ВладелецПомеченНаУдаление Тогда
ПредопределеннаяПапка = Ложь;
Возврат;
КонецЕсли;
@@ -45,7 +45,7 @@
Элементы.ПредставлениеОбщегоРасписания.Подсказка = ТекстПодсказки;
Иначе
Если ЭтоАдминистраторСистемы Тогда
ОбщееРасписаниеПредставление = Строка(ОбщееРегламентноеЗадание.Шаблон.Расписание.Получить());
ОбщееРасписаниеПредставление = Строка(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбщееРегламентноеЗадание.Шаблон, "Расписание").Получить());
Элементы.РегламентноеЗаданиеПредставление.Видимость = Истина;
Иначе
Элементы.РегламентноеЗаданиеПредставление.Видимость = Ложь;
@@ -379,7 +379,7 @@
ОбщееРасписаниеПредставление = Строка(ОбщееРегламентноеЗадание.Расписание);
Иначе
Если Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
ОбщееРасписание = ОбщееРегламентноеЗадание.Шаблон.Расписание.Получить();
ОбщееРасписание = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбщееРегламентноеЗадание.Шаблон, "Расписание").Получить();
ОбщееРасписаниеПредставление = Строка(ОбщееРасписание);
Иначе
ОбщееРасписание = Неопределено;
@@ -267,7 +267,8 @@
ОбщееРасписаниеПредставление = Строка(ОбщееРегламентноеЗадание.Расписание);
Иначе
Если Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
ОбщееРасписаниеПредставление = Строка(ОбщееРегламентноеЗадание.Шаблон.Расписание.Получить());
ОбщееРасписание = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбщееРегламентноеЗадание.Шаблон, "Расписание").Получить();
ОбщееРасписаниеПредставление = Строка(ОбщееРасписание);
КонецЕсли;
КонецЕсли;
Иначе
@@ -174,6 +174,24 @@
&НаСервере
Функция СохранитьПрофильКлючевыхОперацийНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| КлючевыеОперации.Ссылка КАК Ссылка,
| КлючевыеОперации.Имя КАК Имя
|ИЗ
| Справочник.КлючевыеОперации КАК КлючевыеОперации
|ГДЕ
| КлючевыеОперации.Ссылка В (&ВыбранныеКлючевыеОперации)";
Запрос.УстановитьПараметр("ВыбранныеКлючевыеОперации",
Объект.КлючевыеОперацииПрофиля.Выгрузить().ВыгрузитьКолонку("КлючеваяОперация"));
Выборка = Запрос.Выполнить().Выбрать();
ВыбранныеКлючевыеОперации = Новый Соответствие;
Пока Выборка.Следующий() Цикл
ВыбранныеКлючевыеОперации[Выборка.Ссылка] = Выборка.Имя;
КонецЦикла;
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
ЗаписьXML = Новый ЗаписьXML;
@@ -185,7 +203,7 @@
Для Каждого ТекСтрока Из Объект.КлючевыеОперацииПрофиля Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента("Item");
ЗаписьXML.ЗаписатьАтрибут("Имя", ТекСтрока.КлючеваяОперация.Имя);
ЗаписьXML.ЗаписатьАтрибут("Имя", ВыбранныеКлючевыеОперации[ТекСтрока.КлючеваяОперация]);
ЗаписьXML.ЗаписатьАтрибут("ЦелевоеВремя", Формат(ТекСтрока.ЦелевоеВремя, "ЧГ=0"));
ЗаписьXML.ЗаписатьАтрибут("Важность", Формат(ТекСтрока.Приоритет, "ЧГ=0"));
ЗаписьXML.ЗаписатьКонецЭлемента();
@@ -2620,154 +2620,17 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>СтраницыВремяИлиИзменить</name>
<id>427</id>
<items xsi:type="form:FormGroup">
<name>СтраницаВремяНачала</name>
<id>428</id>
<items xsi:type="form:FormField">
<name>ВремяНачала</name>
<id>429</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВремяНачала</segments>
</dataPath>
<handlers>
<event>OnChange</event>
<name>ВремяНачалаПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ВремяНачалаExtendedTooltip</name>
<id>750</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВремяНачалаКонтекстноеМеню</name>
<id>430</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<editFormat>
<key>ru</key>
<value>ДФ=HH:mm</value>
</editFormat>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Страница время начала</value>
</title>
<extendedTooltip>
<name>СтраницаВремяНачалаExtendedTooltip</name>
<id>749</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>СтраницаИзменитьРасписание</name>
<id>431</id>
<items xsi:type="form:Button">
<name>ИзменитьРасписание</name>
<id>432</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ИзменитьРасписаниеExtendedTooltip</name>
<id>752</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ИзменитьРасписание</commandName>
<buttonImportance>Normal</buttonImportance>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Страница изменить расписание</value>
</title>
<extendedTooltip>
<name>СтраницаИзменитьРасписаниеExtendedTooltip</name>
<id>751</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:Button">
<name>ИзменитьРасписание</name>
<id>432</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Страницы время или изменить</value>
</title>
<extendedTooltip>
<name>СтраницыВремяИлиИзменитьExtendedTooltip</name>
<id>748</id>
<name>ИзменитьРасписаниеExtendedTooltip</name>
<id>752</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -2775,10 +2638,13 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Pages</type>
<extInfo xsi:type="form:PagesGroupExtInfo">
<currentRowUse>Auto</currentRowUse>
</extInfo>
<type>UsualButton</type>
<commandName>Form.Command.ИзменитьРасписание</commandName>
<buttonImportance>Normal</buttonImportance>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>ЗаполнитьРасписаниеПоШаблону</name>
@@ -2827,7 +2693,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<group>AlwaysHorizontal</group>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
@@ -2862,6 +2728,296 @@
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаВремяВыполнения</name>
<id>428</id>
<items xsi:type="form:FormField">
<name>ВремяНачала</name>
<id>429</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВремяНачала</segments>
</dataPath>
<handlers>
<event>OnChange</event>
<name>ВремяНачалаПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ВремяНачалаExtendedTooltip</name>
<id>750</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВремяНачалаКонтекстноеМеню</name>
<id>430</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<editFormat>
<key>ru</key>
<value>ДФ=HH:mm</value>
</editFormat>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаПериодПовтораВТечениеДня</name>
<id>1303</id>
<items xsi:type="form:FormField">
<name>ИспользоватьПериодПовтораВТечениеДня</name>
<id>1310</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИспользоватьПериодПовтораВТечениеДня</segments>
</dataPath>
<titleLocation>None</titleLocation>
<handlers>
<event>OnChange</event>
<name>ИспользоватьПериодПовтораВТечениеДняПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ИспользоватьПериодПовтораВТечениеДняРасширеннаяПодсказка</name>
<id>1312</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИспользоватьПериодПовтораВТечениеДняКонтекстноеМеню</name>
<id>1311</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>ПериодПовтораВТечениеДня</name>
<id>1300</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ПериодПовтораВТечениеДня</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Период повтора в течение дня</value>
</toolTip>
<handlers>
<event>OnChange</event>
<name>ПериодПовтораВТечениеДняПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ПериодПовтораВТечениеДняРасширеннаяПодсказка</name>
<id>1302</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПериодПовтораВТечениеДняКонтекстноеМеню</name>
<id>1301</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<spinButton>true</spinButton>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<minValue xsi:type="core:NumberValue">
<value>1</value>
</minValue>
<maxValue xsi:type="core:NumberValue">
<value>12</value>
</maxValue>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ДекорацияЧасов</name>
<id>1305</id>
<title>
<key>ru</key>
<value>(ч.)</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<toolTip>
<key>ru</key>
<value>Часов</value>
</toolTip>
<extendedTooltip>
<name>ДекорацияЧасовРасширеннаяПодсказка</name>
<id>1307</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДекорацияЧасовКонтекстноеМеню</name>
<id>1306</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ВремяОкончания</name>
<id>1313</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВремяОкончания</segments>
</dataPath>
<handlers>
<event>OnChange</event>
<name>ВремяОкончанияПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ВремяОкончанияРасширеннаяПодсказка</name>
<id>1315</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВремяОкончанияКонтекстноеМеню</name>
<id>1314</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<editFormat>
<key>ru</key>
<value>ДФ=HH:mm</value>
</editFormat>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Группа период повтора в течение дня</value>
</title>
<extendedTooltip>
<name>ГруппаПериодПовтораВТечениеДняРасширеннаяПодсказка</name>
<id>1304</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ГруппаВремяВыполненияРасширеннаяПодсказка</name>
<id>749</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>AlwaysHorizontal</group>
<behavior>Auto</behavior>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>СтраницыПериодичности</name>
<id>433</id>
@@ -4336,25 +4492,65 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Автор</name>
<id>3</id>
<items xsi:type="form:FormGroup">
<name>ГруппаАвтор</name>
<id>1308</id>
<items xsi:type="form:FormField">
<name>Автор</name>
<id>3</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.Автор</segments>
</dataPath>
<toolTipRepresentation>Button</toolTipRepresentation>
<handlers>
<event>OnChange</event>
<name>АвторПриИзменении</name>
</handlers>
<extendedTooltip>
<name>АвторExtendedTooltip</name>
<id>806</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>АвторКонтекстноеМеню</name>
<id>4</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<markRequiredComplete>true</markRequiredComplete>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<autoMarkIncomplete>true</autoMarkIncomplete>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.Автор</segments>
</dataPath>
<toolTipRepresentation>Button</toolTipRepresentation>
<handlers>
<event>OnChange</event>
<name>АвторПриИзменении</name>
</handlers>
<extendedTooltip>
<name>АвторExtendedTooltip</name>
<id>806</id>
<name>ГруппаАвторРасширеннаяПодсказка</name>
<id>1309</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -4362,26 +4558,16 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>АвторКонтекстноеМеню</name>
<id>4</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<markRequiredComplete>true</markRequiredComplete>
<editMode>Auto</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<autoMarkIncomplete>true</autoMarkIncomplete>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>auto</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
@@ -10926,6 +11112,77 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ПериодПовтораВТечениеДня</name>
<title>
<key>ru</key>
<value>Повторять каждые</value>
</title>
<id>54</id>
<valueType>
<types>Number</types>
<numberQualifiers>
<precision>2</precision>
<nonNegative>true</nonNegative>
</numberQualifiers>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<savedData>true</savedData>
</attributes>
<attributes>
<name>ИспользоватьПериодПовтораВТечениеДня</name>
<title>
<key>ru</key>
<value>Использовать период повтора в течение дня</value>
</title>
<id>55</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ВремяОкончания</name>
<title>
<key>ru</key>
<value>Время окончания</value>
</title>
<id>63</id>
<valueType>
<types>Date</types>
<dateQualifiers>
<dateFractions>Time</dateFractions>
</dateQualifiers>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<savedData>true</savedData>
</attributes>
<attributes>
<name>ПараметрыТекстаПисьмаИФайлов</name>
<id>67</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ДобавитьИзменитьШаблонДатыРассылки</name>
<title>
@@ -62,11 +62,22 @@
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
ОбновитьСписокПараметровТекстаПисьмаИФайлов();
ПреобразоватьПараметрыТекста(Объект, "ПараметрыВПредставление");
ПреобразоватьПараметрыНастроекОтчетов(Объект, "ПараметрыВПредставление");
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭтоНовый = Объект.Ссылка.Пустая();
Если ЭтоНовый Тогда
ОбновитьСписокПараметровТекстаПисьмаИФайлов();
КонецЕсли;
УстановитьУсловноеОформление();
ТекстОшибкиПриОткрытии = РассылкаОтчетов.ТекстОшибкиПроверкиПраваДобавления();
@@ -113,9 +124,7 @@
// Используется при загрузке и записи настроек выбранного отчета.
ИдентификаторТекущейСтрокиТаблицыОтчетов = -1;
// Кэш проверки
ЭтоНовый = Объект.Ссылка.Пустая();
СозданКопированием = Не РассылкаОснование.Пустая();
СозданКопированием = Не РассылкаОснование.Пустая();
Если ЭтоНовый Тогда
СоздатьРеквизитЭлементСертификатДляШифрования();
@@ -314,7 +323,7 @@
Элементы.ФорматыПоУмолчанию.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх;
Элементы.ПолучателиРассылки.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -425,6 +434,18 @@
КонецЕсли;
КонецЕсли;
Если Объект.ВыполнятьПоРасписанию Тогда
Если Объект.ПериодичностьРасписания <> Перечисления.ПериодичностиРасписанийРассылокОтчетов.Произвольное
И ЗначениеЗаполнено(Расписание.ВремяКонца)Тогда
РазностьДатВЧасах = СекундыВЧасы(Расписание.ВремяКонца - Расписание.ВремяНачала);
Если РазностьДатВЧасах < 4 Тогда
Отказ = Истина;
ТекстСообщения = НСтр("ru = 'Время окончания рассылки отчетов должно быть на 4 часа позже времени начала.'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "ВремяОкончания");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -506,7 +527,7 @@
НастройкиКД = НастройкиОтчета.Настройки;
ПользовательскиеНастройкиКД = НастройкиОтчета.ПользовательскиеНастройки; // ПользовательскиеНастройкиКомпоновкиДанных
// [3] Проверка значения настроек.
Фильтр = Новый Структура("Использование, Значение", Истина, ШаблонЗначенияПолучателяРассылки());
Фильтр = Новый Структура("Использование, Значение", Истина, ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов));
Найденные = ОтчетыКлиентСервер.ЭлементыНастроекОтобранные(ПользовательскиеНастройкиКД, Фильтр);
Если Найденные.Количество() > 0 Тогда
ОтчетПерсонализирован = Истина;
@@ -547,7 +568,7 @@
// [3] Анализ обычных отчетов.
Если ТипЗнч(НастройкиОтчета) = Тип("ТаблицаЗначений") Тогда
Найденные = НастройкиОтчета.НайтиСтроки(Новый Структура("Значение, Использование", ШаблонЗначенияПолучателяРассылки(), Истина));
Найденные = НастройкиОтчета.НайтиСтроки(Новый Структура("Значение, Использование", ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов), Истина));
Если Найденные.Количество() > 0 Тогда
ОтчетПерсонализирован = Истина;
КонецЕсли;
@@ -600,10 +621,15 @@
КонецЕсли;
// Все операции с регламентными заданиями размещены в модуле объекта.
Если Объект.ПериодичностьРасписания <> Перечисления.ПериодичностиРасписанийРассылокОтчетов.Произвольное Тогда
Если Объект.ПериодичностьРасписания <> Перечисления.ПериодичностиРасписанийРассылокОтчетов.Произвольное
И Не ЗначениеЗаполнено(Расписание.ПериодПовтораВТечениеДня)Тогда
Расписание.ВремяКонца = '00010101';
КонецЕсли;
ТекущийОбъект.ДополнительныеСвойства.Вставить("Расписание", Расписание);
ПреобразоватьПараметрыТекста(ТекущийОбъект, "ПредставлениеВПараметры");
ПреобразоватьПараметрыНастроекОтчетов(ТекущийОбъект, "ПредставлениеВПараметры");
КонецПроцедуры
&НаСервере
@@ -652,7 +678,10 @@
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ПреобразоватьПараметрыТекста(Объект, "ПараметрыВПредставление");
ПреобразоватьПараметрыНастроекОтчетов(Объект, "ПараметрыВПредставление");
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
@@ -747,6 +776,27 @@
ВидимостьДоступностьКорректность(ЭтотОбъект, "ВремяНачала");
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьПериодПовтораВТечениеДняПриИзменении(Элемент)
ПериодПовтораВТечениеДня = ?(ИспользоватьПериодПовтораВТечениеДня, 1, 0);
ВремяОкончания = ?(ИспользоватьПериодПовтораВТечениеДня, ВремяНачала + ЧасыВСекунды(4), '00010101');
Расписание.ВремяКонца = ВремяОкончания;
Расписание.ПериодПовтораВТечениеДня = ЧасыВСекунды(ПериодПовтораВТечениеДня);
ВидимостьДоступностьКорректность(ЭтотОбъект, "ПериодПовтораВТечениеДня");
КонецПроцедуры
&НаКлиенте
Процедура ПериодПовтораВТечениеДняПриИзменении(Элемент)
Расписание.ПериодПовтораВТечениеДня = ЧасыВСекунды(ПериодПовтораВТечениеДня);
ВидимостьДоступностьКорректность(ЭтотОбъект, "ПериодПовтораВТечениеДня");
КонецПроцедуры
&НаКлиенте
Процедура ВремяОкончанияПриИзменении(Элемент)
Расписание.ВремяКонца = ВремяОкончания;
ВидимостьДоступностьКорректность(ЭтотОбъект, "ВремяОкончания");
КонецПроцедуры
&НаКлиенте
Процедура ПериодПовтораДнейПриИзменении(Элемент)
Расписание.ПериодПовтораДней = ПериодПовтораДней;
@@ -1008,13 +1058,15 @@
ДобавитьШаблон();
СтандартнаяОбработка = Ложь;
ТекущийЭлемент.ВыделенныйТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 от %2'"), "[НаименованиеРассылки]", "[ДатаВыполнения()]");
НСтр("ru = '%1 от %2'"), "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеРассылки + "]",
"[" + ПараметрыТекстаПисьмаИФайлов.ДатаВыполнения + "()]");
Переменные = Новый Структура;
Переменные.Вставить("Элемент", ТекущийЭлемент);
Переменные.Вставить("СтарыйТекст", "");
Переменные.Вставить("Префикс", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 от %2'"), "[НаименованиеРассылки]", "[ДатаВыполнения("));
НСтр("ru = '%1 от %2'"), "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеРассылки + "]",
"[" + ПараметрыТекстаПисьмаИФайлов.ДатаВыполнения + "("));
Переменные.Вставить("Постфикс", ")]");
Переменные.Вставить("ТекстФормата", "");
Переменные.Вставить("СтарыйФрагментНайден", Ложь);
@@ -1120,7 +1172,8 @@
СтруктураЗаполнения.Вставить("ОтправлятьЕслиПустой", Ложь);
СтруктураЗаполнения.Вставить("НеОтправлятьПустой", Истина);
СтруктураЗаполнения.Вставить("Доступность", Истина);
СтруктураЗаполнения.Вставить("ШаблонНаименования", "[НаименованиеОтчета] [ФорматОтчета]");
СтруктураЗаполнения.Вставить("ШаблонНаименования", "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеОтчета
+ "] [" + ПараметрыТекстаПисьмаИФайлов.ФорматОтчета + "]");
МассивНовыхСтрок = ВыборПодборПеретаскиваниеВТабличнуюЧасть(
ВыбранноеЗначение,
@@ -1549,7 +1602,7 @@
&НаКлиенте
Процедура ПредварительныйПросмотрОтчетаПродолжение(РезультатВыбора, ПараметрыОтчета) Экспорт
ПользовательскиеНастройкиКД = ПараметрыОтчета.Настройки;
Фильтр = Новый Структура("Использование, Значение", Истина, ШаблонЗначенияПолучателяРассылки());
Фильтр = Новый Структура("Использование, Значение", Истина, ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов));
ПерсонализированныеНастройки = ОтчетыКлиентСервер.ЭлементыНастроекОтобранные(ПользовательскиеНастройкиКД, Фильтр);
Если Объект.Персонализирована Тогда
Если РезультатВыбора = Неопределено Тогда
@@ -1574,9 +1627,9 @@
Для Каждого ПользовательскаяНастройкаКД Из ПерсонализированныеНастройки Цикл
Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
ПользовательскаяНастройкаКД.ПравоеЗначение = ШаблонЗначенияПолучателяРассылки();
ПользовательскаяНастройкаКД.ПравоеЗначение = ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов);
ИначеЕсли ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
ПользовательскаяНастройкаКД.Значение = ШаблонЗначенияПолучателяРассылки();
ПользовательскаяНастройкаКД.Значение = ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
@@ -1641,12 +1694,12 @@
Или Настройка.СтрокаНастроек.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСпискеПоИерархии Тогда
Настройка.СтрокаНастроек.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
КонецЕсли;
Настройка.СтрокаНастроек.ПравоеЗначение = ШаблонЗначенияПолучателяРассылки();
Настройка.СтрокаНастроек.ПравоеЗначение = ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов);
Иначе
Настройка.СтрокаНастроек.Значение = ШаблонЗначенияПолучателяРассылки();
Настройка.СтрокаНастроек.Значение = ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов);
КонецЕсли;
Иначе
Настройка.СтрокаНастроек.Значение = ШаблонЗначенияПолучателяРассылки();
Настройка.СтрокаНастроек.Значение = ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов);
КонецЕсли;
НайтиНастройкиПерсонализации();
@@ -1670,18 +1723,18 @@
ВнесеныИзменения = Ложь;
Если Настройка.СКД Тогда
Если Настройка.ЭтоЭлементОтбора Тогда
Если Настройка.СтрокаНастроек.ПравоеЗначение = ШаблонЗначенияПолучателяРассылки() Тогда
Если Настройка.СтрокаНастроек.ПравоеЗначение = ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов) Тогда
Настройка.СтрокаНастроек.ПравоеЗначение = Неопределено;
ВнесеныИзменения = Истина;
КонецЕсли;
Иначе
Если Настройка.СтрокаНастроек.Значение = ШаблонЗначенияПолучателяРассылки() Тогда
Если Настройка.СтрокаНастроек.Значение = ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов) Тогда
Настройка.СтрокаНастроек.Значение = Неопределено;
ВнесеныИзменения = Истина;
КонецЕсли;
КонецЕсли;
Иначе
Если Настройка.СтрокаНастроек.Значение = ШаблонЗначенияПолучателяРассылки() Тогда
Если Настройка.СтрокаНастроек.Значение = ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов) Тогда
Настройка.СтрокаНастроек.Значение = Неопределено;
ВнесеныИзменения = Истина;
КонецЕсли;
@@ -1846,7 +1899,7 @@
Переменные = Новый Структура;
Переменные.Вставить("Элемент", ТекущийЭлемент);
Переменные.Вставить("СтарыйТекст", Переменные.Элемент.ВыделенныйТекст);
Переменные.Вставить("Префикс", "[ДатаВыполнения(");
Переменные.Вставить("Префикс", "[" + ПараметрыТекстаПисьмаИФайлов.ДатаВыполнения + "(");
Переменные.Вставить("Постфикс", ")]");
Переменные.Вставить("ТекстФормата", "");
@@ -1882,33 +1935,33 @@
Возврат;
КонецЕсли;
ДобавитьШаблон(ШаблонЗначенияПолучателяРассылки());
ДобавитьШаблон(ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов));
РассылкаБылаПерсонализирована = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьШаблонСформированныхОтчетов(Команда)
ДобавитьШаблон("[СформированныеОтчеты]", Истина);
ДобавитьШаблон("[" + ПараметрыТекстаПисьмаИФайлов.СформированныеОтчеты + "]", Истина);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьШаблонАвтора(Команда)
ДобавитьШаблон("[Автор]");
ДобавитьШаблон("[" + ПараметрыТекстаПисьмаИФайлов.Автор + "]");
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьШаблонНаименованияРассылки(Команда)
ДобавитьШаблон("[НаименованиеРассылки]");
ДобавитьШаблон("[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеРассылки + "]");
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьШаблонСистемы(Команда)
ДобавитьШаблон("[ЗаголовокСистемы]");
ДобавитьШаблон("[" + ПараметрыТекстаПисьмаИФайлов.ЗаголовокСистемы + "]");
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьШаблонСпособаДоставки(Команда)
ДобавитьШаблон("[СпособДоставки]");
ДобавитьШаблон("[" + ПараметрыТекстаПисьмаИФайлов.СпособДоставки + "]");
КонецПроцедуры
&НаКлиенте
@@ -1971,126 +2024,7 @@
&НаКлиенте
Процедура ПредпросмотрШаблона(Команда)
ДобавитьШаблон();
КартинкиДляHTML = Новый Структура;
Шаблон = Объект.ТекстПисьма;
Если Объект.ПисьмоВФорматеHTML Тогда
ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.HTML");
ТекстПисьмаФорматированныйДокумент.ПолучитьHTML(Шаблон, КартинкиДляHTML);
Шаблон = Объект.ТемаПисьма + "<br>" + "<br>" + Шаблон;
Иначе
ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.ПростойТекст");
Шаблон = Объект.ТемаПисьма + Символы.ПС + Символы.ПС + Шаблон;
КонецЕсли;
СформированныеОтчеты = "";
Для Каждого СтрокаОтчет Из Объект.Отчеты Цикл
ПредставлениеОтчета = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1. %2",
СтрокаОтчет.НомерСтроки, СтрокаОтчет.Представление);
СформированныеОтчеты = СформированныеОтчеты + Символы.ПС + ПредставлениеОтчета;
КонецЦикла;
СформированныеОтчеты = СокрЛП(СформированныеОтчеты);
Если Объект.Архивировать Тогда
СформированныеОтчеты = СформированныеОтчеты + Символы.ПС + Символы.ПС + НСтр(
"ru = 'Файлы отчетов запакованы в архив'") + " ";
СтруктураИмениАрхива = Новый Структура("НаименованиеРассылки, ДатаВыполнения", Объект.Наименование,
ОбщегоНазначенияКлиент.ДатаСеанса());
ИмяАрхива = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Объект.ИмяАрхива, СтруктураИмениАрхива);
ИмяАрхива = ИмяАрхива + ".zip";
СформированныеОтчеты = СокрЛП(
СформированныеОтчеты + """" + ИмяАрхива + """");
КонецЕсли;
ПараметрыДоставки = РассылкаОтчетовКлиентСервер.ПараметрыДоставки();
ЗаполнитьЗначенияСвойств(ПараметрыДоставки, Объект);
ПараметрыДоставки.ВыполненаВПапку = Объект.ИспользоватьПапку;
ПараметрыДоставки.ВыполненаВСетевойКаталог = Объект.ИспользоватьСетевойКаталог;
ПараметрыДоставки.ВыполненаНаFTP = Объект.ИспользоватьFTPРесурс;
СпособДоставки = РассылкаОтчетовКлиентСервер.ПредставлениеСпособовДоставки(ПараметрыДоставки);
ПараметрыШаблона = Новый Структура;
ПараметрыШаблона.Вставить("НаименованиеРассылки", Объект.Наименование);
ПараметрыШаблона.Вставить("Автор", Объект.Автор);
ПараметрыШаблона.Вставить("ЗаголовокСистемы", Кэш.ЗаголовокСистемы);
ПараметрыШаблона.Вставить("ДатаВыполнения", ОбщегоНазначенияКлиент.ДатаСеанса());
ПараметрыШаблона.Вставить("СформированныеОтчеты", СформированныеОтчеты);
ПараметрыШаблона.Вставить("СпособДоставки", СпособДоставки);
Если ВидРассылки = "Персонализирована" Тогда
ПервыйПолучатель = ПолучитьПервогоПолучателя();
ПараметрыШаблона.Вставить("Получатель", ПервыйПолучатель.Наименование);
ПервыйПолучательСсылка = ПервыйПолучатель.Ссылка;
Иначе
ПервыйПолучательСсылка = Неопределено;
КонецЕсли;
ДобавитьДополнительныеПараметрыШаблона(ПараметрыШаблона, ПервыйПолучательСсылка);
// Схематичное отображение отчетов в тексте письма
Если Объект.ВставлятьОтчетыВТекстПисьма Тогда
ОтчетыВТекстеПисьма = "";
Для Каждого СтрокаОтчет Из Объект.Отчеты Цикл
ОтчетыВТекстеПисьма = ОтчетыВТекстеПисьма + Символы.ПС
+ "------------------------------------------" + Символы.ПС
+ СтрокаОтчет.Представление;
КонецЦикла;
Если Объект.ПисьмоВФорматеHTML Тогда
ОтчетыВТекстеПисьма = СтрЗаменить(ОтчетыВТекстеПисьма, Символы.ПС, Символы.ПС + "<br>");
КонецЕсли;
Шаблон = Шаблон + Символы.ПС + Символы.ПС + ОтчетыВТекстеПисьма;
КонецЕсли;
// Вывод списка вложений
Если Объект.ПрикреплятьОтчетыВоВложения Тогда
ПлановыйСписокОтчетов = ПлановыйСписокОтчетовВоВложениях();
Если ПлановыйСписокОтчетов.Количество() > 0 Тогда
СписокОтчетов = СтрСоединить(ПлановыйСписокОтчетов, Символы.ПС);
ТекстВложения = Символы.ПС + Символы.ПС + НСтр("ru = 'Вложения письма:'");
Если Объект.Архивировать Тогда
СтруктураИмениАрхива = Новый Структура("НаименованиеРассылки, ДатаВыполнения", Объект.Наименование,
ОбщегоНазначенияКлиент.ДатаСеанса());
ИмяАрхива = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Объект.ИмяАрхива, СтруктураИмениАрхива);
ИмяАрхива = ИмяАрхива + ".zip";
ТекстВложения = ТекстВложения + Символы.ПС + Символы.ПС + ИмяАрхива;
Иначе
ТекстВложения = ТекстВложения + Символы.ПС;
КонецЕсли;
НомерФайла = 1;
Для Каждого ПолноеИмяФайла Из ПлановыйСписокОтчетов Цикл
ИмяФайлаСПорядком = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1. %2",
НомерФайла, ПолноеИмяФайла);
Если Объект.ПисьмоВФорматеHTML Тогда
ТекстВложения = ТекстВложения + "<p style=""margin-left: 50px;"">" + ИмяФайлаСПорядком + "</p>";
Иначе
ТекстВложения = ТекстВложения + Символы.ПС + Символы.Таб + ИмяФайлаСПорядком;
КонецЕсли;
НомерФайла = НомерФайла + 1;
КонецЦикла;
Если Объект.ПисьмоВФорматеHTML Тогда
ТекстВложения = СтрЗаменить(ТекстВложения, Символы.ПС, Символы.ПС + "<br>");
КонецЕсли;
Шаблон = Шаблон + Символы.ПС + ТекстВложения;
КонецЕсли;
КонецЕсли;
Текст = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Шаблон, ПараметрыШаблона);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("НаименованиеРассылки", Объект.Наименование);
ПараметрыФормы.Вставить("ТипТекста", ТипТекста);
ПараметрыФормы.Вставить("Текст", Текст);
Если КартинкиДляHTML.Количество() > 0 Тогда
ПараметрыФормы.Вставить("АдресКартинокДляHTML", ПоместитьКартинкиВоВременноеХранилище(КартинкиДляHTML));
КонецЕсли;
ОткрытьФорму("Справочник.РассылкиОтчетов.Форма.ПредварительныйПросмотрПисьма", ПараметрыФормы, ЭтотОбъект, , , , ,
РежимОткрытияОкнаФормы.Независимый);
ПодключитьОбработчикОжидания("ПриОткрытииПредпросмотраШаблона", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
@@ -2864,26 +2798,30 @@
Если ИмяШаблона = "НаименованиеДатаРассылки" Тогда
Переменные.Вставить("Префикс", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 от %2'"), "[НаименованиеОтчета]", "[ДатаРассылки("));
НСтр("ru = '%1 от %2'"), "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеОтчета + "]",
"[" + ПараметрыТекстаПисьмаИФайлов.ДатаРассылки + "("));
ИначеЕсли ИмяШаблона = "НаименованиеДатаРассылкиФормат" Тогда
Переменные.Вставить("Префикс", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 от %2'"), "[НаименованиеОтчета]", "[ДатаРассылки("));
НСтр("ru = '%1 от %2'"), "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеОтчета + "]",
"[" + ПараметрыТекстаПисьмаИФайлов.ДатаРассылки + "("));
Переменные.Вставить("Постфикс", ")] [ФорматОтчета]");
Переменные.Вставить("Постфикс", ")] [" + ПараметрыТекстаПисьмаИФайлов.ФорматОтчета + "]");
ИначеЕсли ИмяШаблона = "НаименованиеПериод" Тогда
Переменные.Вставить("Префикс", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 за %2'"), "[НаименованиеОтчета]", "[Период("));
НСтр("ru = '%1 за %2'"), "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеОтчета + "]",
"[" + ПараметрыТекстаПисьмаИФайлов.Период + "("));
ИначеЕсли ИмяШаблона = "НаименованиеПериодФормат" Тогда
Переменные.Вставить("Префикс", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 за %2'"), "[НаименованиеОтчета]", "[Период("));
НСтр("ru = '%1 за %2'"), "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеОтчета + "]",
"[" + ПараметрыТекстаПисьмаИФайлов.Период + "("));
Переменные.Вставить("Постфикс", ")] [ФорматОтчета]");
Переменные.Вставить("Постфикс", ")] [" + ПараметрыТекстаПисьмаИФайлов.ФорматОтчета + "]");
КонецЕсли;
Возврат Переменные;
@@ -3121,16 +3059,20 @@
Функция ШаблоныНаименований()
Шаблоны = Новый Соответствие;
Шаблоны.Вставить("НаименованиеОтчета", "[НаименованиеОтчета]");
Шаблоны.Вставить("НаименованиеОтчетаФормат", "[НаименованиеОтчета] [ФорматОтчета]");
Шаблоны.Вставить("НаименованиеОтчета", "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеОтчета + "]");
Шаблоны.Вставить("НаименованиеОтчетаФормат", "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеОтчета + "] [" + ПараметрыТекстаПисьмаИФайлов.ФорматОтчета + "]");
Шаблоны.Вставить("НаименованиеПериод", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 за %2'"), "[НаименованиеОтчета]", "[Период()]"));
НСтр("ru = '%1 за %2'"), "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеОтчета + "]",
"[" + ПараметрыТекстаПисьмаИФайлов.Период + "()]"));
Шаблоны.Вставить("НаименованиеПериодФормат", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 за %2 %3'"), "[НаименованиеОтчета]", "[Период()]", "[ФорматОтчета]"));
НСтр("ru = '%1 за %2 %3'"), "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеОтчета + "]",
"[" + ПараметрыТекстаПисьмаИФайлов.Период + "()]", "[" + ПараметрыТекстаПисьмаИФайлов.ФорматОтчета + "]"));
Шаблоны.Вставить("НаименованиеДатаРассылки", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 от %2'"), "[НаименованиеОтчета]", "[ДатаРассылки()]"));
НСтр("ru = '%1 от %2'"), "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеОтчета + "]",
"[" + ПараметрыТекстаПисьмаИФайлов.ДатаРассылки + "()]"));
Шаблоны.Вставить("НаименованиеДатаРассылкиФормат", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 от %2 %3'"), "[НаименованиеОтчета]", "[ДатаРассылки()]", "[ФорматОтчета]"));
НСтр("ru = '%1 от %2 %3'"), "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеОтчета + "]",
"[" + ПараметрыТекстаПисьмаИФайлов.ДатаРассылки + "()]", "[" + ПараметрыТекстаПисьмаИФайлов.ФорматОтчета + "]"));
Возврат Шаблоны;
@@ -3143,6 +3085,15 @@
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытииПредпросмотраШаблона()
ДобавитьШаблон();
ПараметрыФормы = ПараметрыФормыПредпросмотраШаблона();
ОткрытьФорму("Справочник.РассылкиОтчетов.Форма.ПредварительныйПросмотрПисьма", ПараметрыФормы, ЭтотОбъект, , , , ,
РежимОткрытияОкнаФормы.Независимый);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Клиент, Сервер
@@ -3360,6 +3311,7 @@
КонецЕсли;
Элементы.ПараметрыВыполненияПоРасписанию.Доступность = Объект.ВыполнятьПоРасписанию;
Элементы.СтраницыПериодичности.Доступность = Объект.ВыполнятьПоРасписанию;
Элементы.ГруппаВремяВыполнения.Доступность = Объект.ВыполнятьПоРасписанию;
КонецЕсли;
Если Изменения = "" Или Изменения = "ПериодичностьРасписания" Тогда
@@ -3380,9 +3332,11 @@
Страница.Видимость = (Страница.Имя = ИмяВидимойСтраницы);
КонецЦикла;
Если ИмяПеречисления = "Произвольное" Тогда
Элементы.СтраницыВремяИлиИзменить.ТекущаяСтраница = Элементы.СтраницаИзменитьРасписание;
Элементы.ИзменитьРасписание.Видимость = Истина;
Элементы.ГруппаВремяВыполнения.Видимость = Ложь;
Иначе
Элементы.СтраницыВремяИлиИзменить.ТекущаяСтраница = Элементы.СтраницаВремяНачала;
Элементы.ИзменитьРасписание.Видимость = Ложь;
Элементы.ГруппаВремяВыполнения.Видимость = Истина;
КонецЕсли;
// Сброс параметров, которые не соответствуют закладкам упрощенного редактирования.
@@ -3394,14 +3348,12 @@
// Общие параметры
Форма.Расписание.ДатаНачала = '00010101';
Форма.Расписание.ДатаКонца = '00010101';
Форма.Расписание.ВремяКонца = '00010101';
Форма.Расписание.ВремяЗавершения = '00010101';
Форма.Расписание.ДеньНеделиВМесяце = 0;
Форма.Расписание.ДетальныеРасписанияДня = Новый Массив;
Форма.Расписание.ИнтервалЗавершения = 0;
Форма.Расписание.ПаузаПовтора = 0;
Форма.Расписание.ПериодНедель = 0;
Форма.Расписание.ПериодПовтораВТечениеДня = 0;
Если ИмяПеречисления <> "Ежедневно" Тогда
Форма.Расписание.ПериодПовтораДней = 1;
@@ -3447,8 +3399,20 @@
Форма[КлючИЗначение.Ключ] = (Форма.Расписание.Месяцы.Найти(КлючИЗначение.Значение) <> Неопределено);
КонецЦикла;
КонецЕсли;
Форма.ПериодПовтораВТечениеДня = СекундыВЧасы(Форма.Расписание.ПериодПовтораВТечениеДня);
Форма.ВремяОкончания = Форма.Расписание.ВремяКонца;
Форма.ИспользоватьПериодПовтораВТечениеДня = ЗначениеЗаполнено(Форма.ПериодПовтораВТечениеДня);
КонецЕсли; // Изменения = "" Или Изменения = "ПериодичностьРасписания"
Если Изменения = "" Или Изменения = "ПериодПовтораВТечениеДня" Или Изменения = "ПериодичностьРасписания" Тогда
Элементы.ПериодПовтораВТечениеДня.Доступность = Форма.ИспользоватьПериодПовтораВТечениеДня;
Элементы.ДекорацияЧасов.Доступность = Форма.ИспользоватьПериодПовтораВТечениеДня;
Элементы.ВремяОкончания.Доступность = Форма.ИспользоватьПериодПовтораВТечениеДня;
Форма.ВремяОкончания = ?(Форма.ИспользоватьПериодПовтораВТечениеДня, Форма.ВремяОкончания, '00010101');
Форма.Расписание.ВремяКонца = Форма.ВремяОкончания;
КонецЕсли;
Если Изменения = "" Или Изменения = "НачалоКонецМесяца" Тогда
Элементы.ГиперссылкаНачалоКонецМесяца.Заголовок = ?(Форма.Расписание.ДеньВМесяце >= 0, "начала", "конца");
@@ -3636,12 +3600,22 @@
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ШаблонЗначенияПолучателяРассылки()
Функция ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов)
Возврат НСтр("ru = '[Получатель]'");
Возврат "[" + ПараметрыТекстаПисьмаИФайлов.Получатель + "]";
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЧасыВСекунды(Часы)
Возврат Часы * 60 * 60;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция СекундыВЧасы(Секунды)
Возврат Секунды / 60 / 60;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Вызов сервера, Сервер
@@ -3777,7 +3751,7 @@
Продолжить;
КонецЕсли;
Если ЗначениеНастройки <> ШаблонЗначенияПолучателяРассылки() Тогда
Если ЗначениеНастройки <> ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов) Тогда
Продолжить;
КонецЕсли;
@@ -4280,7 +4254,8 @@
ОтборЭлемента.ПравоеЗначение = "";
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветТекстаЗапрещеннойЯчейки);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", "[НаименованиеОтчета] [ФорматОтчета]");
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", "[" + ПараметрыТекстаПисьмаИФайлов.НаименованиеОтчета + "] ["
+ ПараметрыТекстаПисьмаИФайлов.ФорматОтчета + "]");
//
@@ -4312,7 +4287,7 @@
Для Каждого ЭлементОформления Из УсловноеОформление.Элементы Цикл
ЗначениеПараметра = ЭлементОформления.Оформление.НайтиЗначениеПараметра(ПараметрОформления);
Если ЗначениеПараметра.Значение = ШаблонЗначенияПолучателяРассылки() Тогда
Если ЗначениеПараметра.Значение = ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов) Тогда
Элемент = ЭлементОформления;
Прервать;
@@ -4339,7 +4314,7 @@
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = НастройкиПерсонализации;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", ШаблонЗначенияПолучателяРассылки());
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецПроцедуры
@@ -4375,9 +4350,9 @@
// Умолчания для полей, поддерживающих шаблоны заполнения.
Шаблоны = Новый ФиксированнаяСтруктура("Тема, Текст, ИмяАрхива",
РассылкаОтчетовКлиентСервер.ШаблонТемы(),
РассылкаОтчетов.ШаблонТекста(),
РассылкаОтчетовКлиентСервер.ШаблонИмениАрхива());
РассылкаОтчетовКлиентСервер.ШаблонТемы(ПараметрыТекстаПисьмаИФайлов),
РассылкаОтчетов.ШаблонТекста(ПараметрыТекстаПисьмаИФайлов),
РассылкаОтчетовКлиентСервер.ШаблонИмениАрхива(ПараметрыТекстаПисьмаИФайлов));
// Структура кэша.
Кэш = Новый Структура;
@@ -4419,7 +4394,8 @@
Задание = РегламентныеЗаданияСервер.Задание(ИдентификаторЗадания);
Если Задание <> Неопределено Тогда
Расписание = Задание.Расписание;
Если Объект.ПериодичностьРасписания <> Перечисления.ПериодичностиРасписанийРассылокОтчетов.Произвольное Тогда
Если Объект.ПериодичностьРасписания <> Перечисления.ПериодичностиРасписанийРассылокОтчетов.Произвольное
И Не ЗначениеЗаполнено(Расписание.ПериодПовтораВТечениеДня) Тогда
Расписание.ВремяКонца = '00010101';
КонецЕсли;
КонецЕсли;
@@ -4721,6 +4697,14 @@
&НаСервере
Процедура ДобавитьКомандыДобавленияДополнительныхПараметровТекста()
РассылкаОтчетов.ДобавитьКомандыДобавленияДополнительныхПараметровТекста(ЭтотОбъект);
ОбновитьСписокПараметровТекстаПисьмаИФайлов();
КонецПроцедуры
&НаСервере
Процедура ОбновитьСписокПараметровТекстаПисьмаИФайлов()
ПараметрыТекстаПисьмаИФайлов = РассылкаОтчетовПовтИсп.ПараметрыТекстаПисьмаИФайлов();
ТипПолучателейРассылки = ?(ВидРассылки = "Личная", Неопределено, ТипПолучателейРассылки);
РассылкаОтчетовПереопределяемый.ПриОпределенииПараметровТекстаПисьма(ВидРассылки, ТипПолучателейРассылки, ПараметрыТекстаПисьмаИФайлов);
КонецПроцедуры
&НаСервере
@@ -4755,6 +4739,236 @@
КонецПроцедуры
&НаСервере
Процедура ПреобразоватьПараметрыТекста(ТекущийОбъект, ВариантКонвертации)
Если ВариантКонвертации = "ПараметрыВПредставление" Тогда
ИмяПодстрокиПоиска = "Ключ";
ИмяПодстрокиЗамены = "Значение";
Иначе
ИмяПодстрокиПоиска = "Значение";
ИмяПодстрокиЗамены = "Ключ";
КонецЕсли;
ТекстHTML = "";
СтруктураВложенийПисьмаВФорматеHTML = "";
ТекстПисьмаФорматированныйДокумент.ПолучитьHTML(ТекстHTML, СтруктураВложенийПисьмаВФорматеHTML);
Для каждого ОписаниеПараметра Из ПараметрыТекстаПисьмаИФайлов Цикл
ПодстрокаПоиска = "[" + ОписаниеПараметра[ИмяПодстрокиПоиска];
ПодстрокаЗамены = "[" + ОписаниеПараметра[ИмяПодстрокиЗамены];
ТекущийОбъект.ТемаПисьма = СтрЗаменить(ТекущийОбъект.ТемаПисьма, ПодстрокаПоиска, ПодстрокаЗамены);
ТекущийОбъект.ТекстПисьма = СтрЗаменить(ТекущийОбъект.ТекстПисьма, ПодстрокаПоиска, ПодстрокаЗамены);
ТекущийОбъект.ТекстПисьмаВФорматеHTML = СтрЗаменить(ТекущийОбъект.ТекстПисьмаВФорматеHTML, ПодстрокаПоиска, ПодстрокаЗамены);
ТекстHTML = СтрЗаменить(ТекстHTML, ПодстрокаПоиска, ПодстрокаЗамены);
Элементы.ФорматыОтчетовШаблонНаименования.ПодсказкаВвода = СтрЗаменить(Элементы.ФорматыОтчетовШаблонНаименования.ПодсказкаВвода,
ПодстрокаПоиска, ПодстрокаЗамены);
Для Каждого СтрокаОтчет Из ТекущийОбъект.Отчеты Цикл
СтрокаОтчет.ШаблонНаименования = СтрЗаменить(СтрокаОтчет.ШаблонНаименования, ПодстрокаПоиска, ПодстрокаЗамены);
КонецЦикла;
ТекущийОбъект.ИмяАрхива = СтрЗаменить(ТекущийОбъект.ИмяАрхива, ПодстрокаПоиска, ПодстрокаЗамены);
КонецЦикла;
Если ТекущийОбъект.ПисьмоВФорматеHTML Тогда
ТекстПисьмаФорматированныйДокумент.УстановитьHTML(ТекстHTML, СтруктураВложенийПисьмаВФорматеHTML);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПреобразоватьПараметрыНастроекОтчетов(ТекущийОбъект, ВариантКонвертации)
Если Не Объект.Персонализирована Тогда
Возврат;
КонецЕсли;
Если ВариантКонвертации = "ПараметрыВПредставление" Тогда
ПодстрокаПоиска = "[Получатель]";
ПодстрокаЗамены = ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов);
Иначе
ПодстрокаПоиска = ШаблонЗначенияПолучателяРассылки(ПараметрыТекстаПисьмаИФайлов);
ПодстрокаЗамены = "[Получатель]";
КонецЕсли;
ВнесеныИзменения = Ложь;
Для каждого СтрокаОтчеты Из Объект.Отчеты Цикл
Если ЭтоАдресВременногоХранилища(СтрокаОтчеты.АдресНастроек) Тогда
ПользовательскиеНастройки = ПолучитьИзВременногоХранилища(СтрокаОтчеты.АдресНастроек);
Иначе
ИндексСтроки = Объект.Отчеты.Индекс(СтрокаОтчеты);
ОбъектСтрокаОтчеты = РеквизитФормыВЗначение("Объект").Отчеты.Получить(ИндексСтроки);
ПользовательскиеНастройки = ?(ОбъектСтрокаОтчеты = Неопределено, Неопределено, ОбъектСтрокаОтчеты.Настройки.Получить());
КонецЕсли;
Если ПользовательскиеНастройки = Неопределено Тогда
Продолжить;
КонецЕсли;
Если ТипЗнч(ПользовательскиеНастройки) = Тип("ТаблицаЗначений") Тогда
Для каждого ПользовательскаяНастройка Из ПользовательскиеНастройки Цикл
Если СтрСравнить(ПользовательскаяНастройка.Значение, ПодстрокаПоиска) = 0 Тогда
ПользовательскаяНастройка.Значение = СтрЗаменить(ПользовательскаяНастройка.Значение, ПодстрокаПоиска, ПодстрокаЗамены);
ВнесеныИзменения = Истина;
КонецЕсли;
КонецЦикла;
Иначе
Для каждого ПользовательскаяНастройка Из ПользовательскиеНастройки.Элементы Цикл
Если ТипЗнч(ПользовательскаяНастройка) = Тип("ЭлементОтбораКомпоновкиДанных")
И СтрСравнить(ПользовательскаяНастройка.ПравоеЗначение, ПодстрокаПоиска) = 0 Тогда
ПользовательскаяНастройка.ПравоеЗначение = СтрЗаменить(ПользовательскаяНастройка.ПравоеЗначение, ПодстрокаПоиска, ПодстрокаЗамены);
ВнесеныИзменения = Истина;
ИначеЕсли ТипЗнч(ПользовательскаяНастройка) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных")
И СтрСравнить(ПользовательскаяНастройка.Значение, ПодстрокаПоиска) = 0 Тогда
ПользовательскаяНастройка.Значение = СтрЗаменить(ПользовательскаяНастройка.Значение, ПодстрокаПоиска, ПодстрокаЗамены);
ВнесеныИзменения = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОбъектСтрокаОтчеты = ТекущийОбъект.Отчеты.Получить(СтрокаОтчеты.НомерСтроки-1);
Если ТипЗнч(ОбъектСтрокаОтчеты) = Тип("СправочникТабличнаяЧастьСтрока.РассылкиОтчетов.Отчеты") И ВнесеныИзменения Тогда
ОбъектСтрокаОтчеты.Настройки = Новый ХранилищеЗначения(ПользовательскиеНастройки, Новый СжатиеДанных(9));
ИначеЕсли ВнесеныИзменения Тогда
Адрес = ?(ЭтоАдресВременногоХранилища(СтрокаОтчеты.АдресНастроек), СтрокаОтчеты.АдресНастроек, УникальныйИдентификатор);
СтрокаОтчеты.АдресНастроек = ПоместитьВоВременноеХранилище(ПользовательскиеНастройки, Адрес);
КонецЕсли;
ВнесеныИзменения = Ложь;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыПредпросмотраШаблона()
ПреобразоватьПараметрыТекста(Объект, "ПредставлениеВПараметры");
КартинкиДляHTML = Новый Структура;
Шаблон = Объект.ТекстПисьма;
Если Объект.ПисьмоВФорматеHTML Тогда
ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.HTML");
ТекстПисьмаФорматированныйДокумент.ПолучитьHTML(Шаблон, КартинкиДляHTML);
Шаблон = Объект.ТемаПисьма + "<br>" + "<br>" + Шаблон;
Иначе
ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.ПростойТекст");
Шаблон = Объект.ТемаПисьма + Символы.ПС + Символы.ПС + Шаблон;
КонецЕсли;
СформированныеОтчеты = "";
Для Каждого СтрокаОтчет Из Объект.Отчеты Цикл
ПредставлениеОтчета = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1. %2",
СтрокаОтчет.НомерСтроки, СтрокаОтчет.Представление);
СформированныеОтчеты = СформированныеОтчеты + Символы.ПС + ПредставлениеОтчета;
КонецЦикла;
СформированныеОтчеты = СокрЛП(СформированныеОтчеты);
Если Объект.Архивировать Тогда
СформированныеОтчеты = СформированныеОтчеты + Символы.ПС + Символы.ПС + НСтр(
"ru = 'Файлы отчетов запакованы в архив'") + " ";
СтруктураИмениАрхива = Новый Структура("НаименованиеРассылки, ДатаВыполнения", Объект.Наименование,
ТекущаяДатаСеанса());
ИмяАрхива = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Объект.ИмяАрхива, СтруктураИмениАрхива);
ИмяАрхива = ИмяАрхива + ".zip";
СформированныеОтчеты = СокрЛП(
СформированныеОтчеты + """" + ИмяАрхива + """");
КонецЕсли;
ПараметрыДоставки = РассылкаОтчетовКлиентСервер.ПараметрыДоставки();
ЗаполнитьЗначенияСвойств(ПараметрыДоставки, Объект);
ПараметрыДоставки.ВыполненаВПапку = Объект.ИспользоватьПапку;
ПараметрыДоставки.ВыполненаВСетевойКаталог = Объект.ИспользоватьСетевойКаталог;
ПараметрыДоставки.ВыполненаНаFTP = Объект.ИспользоватьFTPРесурс;
СпособДоставки = РассылкаОтчетовКлиентСервер.ПредставлениеСпособовДоставки(ПараметрыДоставки);
ПараметрыШаблона = Новый Структура;
ПараметрыШаблона.Вставить("НаименованиеРассылки", Объект.Наименование);
ПараметрыШаблона.Вставить("Автор", Объект.Автор);
ПараметрыШаблона.Вставить("ЗаголовокСистемы", Кэш.ЗаголовокСистемы);
ПараметрыШаблона.Вставить("ДатаВыполнения", ТекущаяДатаСеанса());
ПараметрыШаблона.Вставить("СформированныеОтчеты", СформированныеОтчеты);
ПараметрыШаблона.Вставить("СпособДоставки", СпособДоставки);
Если ВидРассылки = "Персонализирована" Тогда
ПервыйПолучатель = ПолучитьПервогоПолучателя();
ПараметрыШаблона.Вставить("Получатель", ПервыйПолучатель.Наименование);
ПервыйПолучательСсылка = ПервыйПолучатель.Ссылка;
Иначе
ПервыйПолучательСсылка = Неопределено;
КонецЕсли;
ДобавитьДополнительныеПараметрыШаблона(ПараметрыШаблона, ПервыйПолучательСсылка);
// Схематичное отображение отчетов в тексте письма
Если Объект.ВставлятьОтчетыВТекстПисьма Тогда
ОтчетыВТекстеПисьма = "";
Для Каждого СтрокаОтчет Из Объект.Отчеты Цикл
ОтчетыВТекстеПисьма = ОтчетыВТекстеПисьма + Символы.ПС
+ "------------------------------------------" + Символы.ПС
+ СтрокаОтчет.Представление;
КонецЦикла;
Если Объект.ПисьмоВФорматеHTML Тогда
ОтчетыВТекстеПисьма = СтрЗаменить(ОтчетыВТекстеПисьма, Символы.ПС, Символы.ПС + "<br>");
КонецЕсли;
Шаблон = Шаблон + Символы.ПС + Символы.ПС + ОтчетыВТекстеПисьма;
КонецЕсли;
// Вывод списка вложений
Если Объект.ПрикреплятьОтчетыВоВложения Тогда
ПлановыйСписокОтчетов = ПлановыйСписокОтчетовВоВложениях();
Если ПлановыйСписокОтчетов.Количество() > 0 Тогда
СписокОтчетов = СтрСоединить(ПлановыйСписокОтчетов, Символы.ПС);
ТекстВложения = Символы.ПС + Символы.ПС + НСтр("ru = 'Вложения письма:'");
Если Объект.Архивировать Тогда
СтруктураИмениАрхива = Новый Структура("НаименованиеРассылки, ДатаВыполнения", Объект.Наименование, ТекущаяДатаСеанса());
ИмяАрхива = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Объект.ИмяАрхива, СтруктураИмениАрхива);
ИмяАрхива = ИмяАрхива + ".zip";
ТекстВложения = ТекстВложения + Символы.ПС + Символы.ПС + ИмяАрхива;
Иначе
ТекстВложения = ТекстВложения + Символы.ПС;
КонецЕсли;
НомерФайла = 1;
Для Каждого ПолноеИмяФайла Из ПлановыйСписокОтчетов Цикл
ИмяФайлаСПорядком = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1. %2",
НомерФайла, ПолноеИмяФайла);
Если Объект.ПисьмоВФорматеHTML Тогда
ТекстВложения = ТекстВложения + "<p style=""margin-left: 50px;"">" + ИмяФайлаСПорядком + "</p>";
Иначе
ТекстВложения = ТекстВложения + Символы.ПС + Символы.Таб + ИмяФайлаСПорядком;
КонецЕсли;
НомерФайла = НомерФайла + 1;
КонецЦикла;
Если Объект.ПисьмоВФорматеHTML Тогда
ТекстВложения = СтрЗаменить(ТекстВложения, Символы.ПС, Символы.ПС + "<br>");
КонецЕсли;
Шаблон = Шаблон + Символы.ПС + ТекстВложения;
КонецЕсли;
КонецЕсли;
Текст = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Шаблон, ПараметрыШаблона);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("НаименованиеРассылки", Объект.Наименование);
ПараметрыФормы.Вставить("ТипТекста", ТипТекста);
ПараметрыФормы.Вставить("Текст", Текст);
Если КартинкиДляHTML.Количество() > 0 Тогда
ПараметрыФормы.Вставить("АдресКартинокДляHTML", ПоместитьКартинкиВоВременноеХранилище(КартинкиДляHTML));
КонецЕсли;
ПреобразоватьПараметрыТекста(Объект, "ПараметрыВПредставление");
Возврат ПараметрыФормы;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Запись объекта
@@ -852,7 +852,7 @@
Контекст.ОшибкаНаСервере.Вставить("ОписаниеОшибки", ДополнительныеПараметры.РезультатПроверкиСертификата.ОписаниеОшибкиНаСервере);
КонецЕсли;
ОбработатьОшибку(Контекст.Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере,,,Результат.Значение = "ПоказатьОшибку");
ОбработатьОшибку(Контекст.Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере,,, Результат <> Неопределено И Результат.Значение = "ПоказатьОшибку");
Возврат;
КонецЕсли;
@@ -92,7 +92,14 @@
Пока Выборка.Следующий() Цикл
ТекСостояние = СостояниеПорядок.Добавить();
ТекСостояние.Ссылка = Выборка.Ссылка;
ТекСостояние.Порядок = Выборка.Ссылка.РеквизитДопУпорядочивания;
КонецЦикла;
Ссылки = СостояниеПорядок.ВыгрузитьКолонку("Ссылка");
РеквизитыПорядок = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(Ссылки, "РеквизитДопУпорядочивания");
Для Каждого Состояние Из СостояниеПорядок Цикл
ТекПорядок = РеквизитыПорядок.Получить(Состояние.Ссылка);
Состояние.Порядок = ТекПорядок;
КонецЦикла;
СостояниеПорядок.Сортировать("Порядок");
@@ -953,9 +953,8 @@
&НаКлиенте
Процедура ПечатьСоШтампом(Команда)
Если ЗначениеЗаполнено(Объект.Ссылка)
Или Записать() Тогда
ДокументСоШтампом = РаботаСФайламиСлужебныйВызовСервера.ТабличныйДокументСоШтампом(Объект.Ссылка, Объект.Ссылка);
Если ЗначениеЗаполнено(Объект.Ссылка) Или Записать() Тогда
ДокументСоШтампом = РаботаСФайламиСлужебныйВызовСервера.ТабличныйДокументСоШтампом(Объект.Ссылка);
РаботаСФайламиСлужебныйКлиент.ПечатьФайлаСоШтампом(ДокументСоШтампом);
КонецЕсли;
@@ -359,6 +359,8 @@
ЗаполнитьПроизвольныеПараметрыИзОбъекта(ТекущийОбъект);
ОтображениеЭлементовФормы();
УстановитьТекстШаблона(ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
@@ -5416,7 +5416,8 @@
КОНЕЦ
И Наборы.Используется
И ЕСТЬNULL(Наборы.Родитель.Используется, ИСТИНА)
И НЕ Наборы.Ссылка В (&amp;ИсключаемыеНаборы)</queryText>
И НЕ Наборы.Ссылка В (&amp;ИсключаемыеНаборы)
И НЕ Наборы.ПометкаУдаления</queryText>
<mainTable>Catalog.НаборыДополнительныхРеквизитовИСведений</mainTable>
<autoFillAvailableFields>true</autoFillAvailableFields>
<customQuery>true</customQuery>
@@ -5498,10 +5499,6 @@
<dataPath>ДополнительныеСведения</dataPath>
<field>ДополнительныеСведения</field>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>Метки</dataPath>
<field>Метки</field>
</fields>
<fields xsi:type="schema:DataCompositionSchemaDataSetField">
<dataPath>Представления</dataPath>
<field>Представления</field>
@@ -36,14 +36,16 @@
Если ЗаданыТипыОсновногоОбъектаАдресации И ОсновнойОбъектАдресации = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено.'"), Роль.ТипыОсновногоОбъектаАдресации.Наименование ),,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено.'"),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Роль, "ТипыОсновногоОбъектаАдресации")),,,
"ОсновнойОбъектАдресации", Отказ);
ИначеЕсли ЗаданыТипыДополнительногоОбъектаАдресации И ДополнительныйОбъектАдресации = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено.'"), Роль.ТипыДополнительногоОбъектаАдресации.Наименование ),,,
"ДополнительныйОбъектАдресации", Отказ);
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено.'"),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Роль, "ТипыДополнительногоОбъектаАдресации")),,,
"ДополнительныйОбъектАдресации", Отказ);
КонецЕсли;
@@ -88,10 +90,21 @@
&НаСервере
Процедура УстановитьТипыОбъектовАдресации()
ТипыОсновногоОбъектаАдресации = Роль.ТипыОсновногоОбъектаАдресации.ТипЗначения;
ТипыДополнительногоОбъектаАдресации = Роль.ТипыДополнительногоОбъектаАдресации.ТипЗначения;
ИспользуетсяСОбъектамиАдресации = Роль.ИспользуетсяСОбъектамиАдресации;
ИспользуетсяБезОбъектовАдресации = Роль.ИспользуетсяБезОбъектовАдресации;
ТипыОсновногоОбъектаАдресации = Неопределено;
ТипыДополнительногоОбъектаАдресации = Неопределено;
ИспользуетсяСОбъектамиАдресации = Ложь;
ИспользуетсяБезОбъектовАдресации = Ложь;
Если Не Роль.Пустая() Тогда
СведенияОРоли = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Роль,
"ИспользуетсяСОбъектамиАдресации,ИспользуетсяБезОбъектовАдресации,ТипыОсновногоОбъектаАдресации,ТипыДополнительногоОбъектаАдресации");
ИспользуетсяСОбъектамиАдресации = СведенияОРоли.ИспользуетсяСОбъектамиАдресации;
ИспользуетсяБезОбъектовАдресации = СведенияОРоли.ИспользуетсяБезОбъектовАдресации;
Если ИспользуетсяСОбъектамиАдресации Тогда
ТипыОсновногоОбъектаАдресации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СведенияОРоли.ТипыОсновногоОбъектаАдресации, "ТипЗначения");
ТипыДополнительногоОбъектаАдресации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СведенияОРоли.ТипыДополнительногоОбъектаАдресации, "ТипЗначения");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
@@ -103,20 +116,21 @@
ЗаданыТипыДополнительногоОбъектаАдресации = ИспользуетсяСОбъектамиАдресации
И ЗначениеЗаполнено(ТипыДополнительногоОбъектаАдресации);
Элементы.ОсновнойОбъектАдресации.Заголовок = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Роль.ТипыОсновногоОбъектаАдресации, "Наименование",, ТекущийЯзык().КодЯзыка);
СведенияОРоли = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Роль,
"ТипыОсновногоОбъектаАдресации,ТипыДополнительногоОбъектаАдресации");
Элементы.ОсновнойОбъектАдресации.Заголовок = Строка(СведенияОРоли.ТипыОсновногоОбъектаАдресации);
Элементы.ОсновнойОбъектАдресации.Доступность = ЗаданыТипыОсновногоОбъектаАдресации;
Элементы.ОсновнойОбъектАдресации.АвтоОтметкаНезаполненного = ЗаданыТипыОсновногоОбъектаАдресации
И НЕ ИспользуетсяБезОбъектовАдресации;
Элементы.ОсновнойОбъектАдресации.ОграничениеТипа = ТипыОсновногоОбъектаАдресации;
Элементы.ДополнительныйОбъектАдресации.Заголовок = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Роль.ТипыДополнительногоОбъектаАдресации, "Наименование",, ТекущийЯзык().КодЯзыка);
Элементы.ДополнительныйОбъектАдресации.Заголовок = Строка(СведенияОРоли.ТипыДополнительногоОбъектаАдресации);
Элементы.ДополнительныйОбъектАдресации.Доступность = ЗаданыТипыДополнительногоОбъектаАдресации;
Элементы.ДополнительныйОбъектАдресации.АвтоОтметкаНезаполненного = ЗаданыТипыДополнительногоОбъектаАдресации
И НЕ ИспользуетсяБезОбъектовАдресации;
Элементы.ДополнительныйОбъектАдресации.ОграничениеТипа = ТипыДополнительногоОбъектаАдресации;
КонецПроцедуры
&НаСервере
@@ -192,20 +192,13 @@
Процедура ПолучитьАдминистратораИБ(ПользовательИБ = Неопределено)
Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Если ЗначениеЗаполнено(АдминистраторИБ) Тогда
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(
АдминистраторИБ.ИдентификаторПользователяИБ);
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(АдминистраторИБ, "ИдентификаторПользователяИБ"));
Иначе
ПользовательИБ = Неопределено;
КонецЕсли;
ИмяАдминистратораИнформационнойБазы = ?(ПользовательИБ = Неопределено, "", ПользовательИБ.Имя);
КонецЕсли;
КонецПроцедуры
@@ -6113,7 +6113,7 @@
<id>4</id>
<toolTip>
<key>ru</key>
<value>Показать скрыть оригинал</value>
<value>Показать/скрыть поставляемый макет</value>
</toolTip>
<use>
<common>true</common>
@@ -6278,7 +6278,7 @@
<name>УдалитьЯзыкМакета</name>
<title>
<key>ru</key>
<value>Удалить язык макета</value>
<value>Удалить все изменения макета</value>
</title>
<id>35</id>
<use>
@@ -69,6 +69,8 @@
Элементы.Переименовать.Видимость = ЗначениеЗаполнено(Параметры.Ссылка)
Или ПустаяСтрока(ИдентификаторМакета) И ПустаяСтрока(Параметры.ПутьКФайлу);
Элементы.УдалитьЯзыкМакета.Видимость = Не ЗначениеЗаполнено(Параметры.Ссылка) И ПустаяСтрока(Параметры.ПутьКФайлу);
Если Параметры.ТабличныйДокумент = Неопределено Тогда
Если Не ПустаяСтрока(ИдентификаторМакета) Тогда
РедактированиеЗапрещено = Не Параметры.Редактирование;
@@ -113,8 +115,6 @@
Элементы.Язык.Доступность = (ЭтоПечатнаяФорма Или ДоступенПереводМакета) И ЗначениеЗаполнено(ИдентификаторМакета);
Элементы.Перевести.Видимость = ДоступенАвтоматическийПеревод;
Элементы.КнопкаПоказатьСкрытьОригинал.Видимость = Элементы.Перевести.Видимость;
Элементы.КнопкаПоказатьСкрытьОригинал.Доступность = ТекущийЯзык <> ОбщегоНазначения.КодОсновногоЯзыка();
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КоманднаяПанель", "Видимость", Ложь);
@@ -191,7 +191,6 @@
Элементы.ВерхнийКолонтитул.Видимость = Ложь;
Элементы.НижнийКолонтитул.Видимость = Ложь;
Элементы.УдалитьЯзыкМакета.Видимость = Ложь;
Элементы.ГруппаНазначениеМакета.Видимость = ЭтоПечатнаяФорма;
Элементы.ГруппаНазначениеМакета.Доступность = Параметры.ДоступноНазначение;
@@ -581,7 +580,6 @@
ДоступенАвтоматическийПеревод = МодульУправлениеПечатьюМультиязычность.ДоступенАвтоматическийПеревод(ТекущийЯзык);
Элементы.Перевести.Видимость = ДоступенАвтоматическийПеревод;
Элементы.КнопкаПоказатьСкрытьОригинал.Видимость = Элементы.Перевести.Видимость;
КонецЕсли;
КонецПроцедуры
@@ -967,7 +965,7 @@
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаполнитьТабличныйДокумент(ТабличныйДокумент, ЗагруженныйТабличныйДокумент)
Процедура ЗаполнитьТабличныйДокумент(ТабличныйДокумент, Знач ЗагруженныйТабличныйДокумент)
Для НомерСтроки = 1 По ЗагруженныйТабличныйДокумент.ВысотаТаблицы Цикл
Для НомерКолонки = 1 По ЗагруженныйТабличныйДокумент.ШиринаТаблицы Цикл
ИсходнаяЯчейка = ЗагруженныйТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
@@ -1052,12 +1050,20 @@
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент");
МодульУправлениеПечатьюКлиент.ПереключитьЯзык(ЭтотОбъект, Команда);
Элементы.УдалитьЯзыкМакета.Видимость = ТекущийЯзык <> ОбщегоНазначенияКлиент.КодОсновногоЯзыка();
Элементы.КнопкаПоказатьСкрытьОригинал.Доступность = ТекущийЯзык <> ОбщегоНазначенияКлиент.КодОсновногоЯзыка()
И ПоставляемыйМакет.ВысотаТаблицы > 0;
Элементы.УдалитьЯзыкМакета.Видимость = Не ЗначениеЗаполнено(Параметры.Ссылка)
Или ТекущийЯзык <> ОбщегоНазначенияКлиент.КодОсновногоЯзыка();
Элементы.КнопкаПоказатьСкрытьОригинал.Доступность = ПоставляемыйМакет.ВысотаТаблицы > 0;
Если ЭтоПечатнаяФорма Тогда
ЗаполнитьТабличныйДокумент(ТабличныйДокумент, ПрочитатьМакет());
КонецЕсли;
Если ТекущийЯзык = ОбщегоНазначенияКлиент.КодОсновногоЯзыка() Тогда
Элементы.УдалитьЯзыкМакета.Заголовок = НСтр("ru = 'Удалить все изменения макета'");
Иначе
Элементы.УдалитьЯзыкМакета.Заголовок = НСтр("ru = 'Удалить макет на текущем языке'");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
@@ -1065,17 +1071,14 @@
&НаКлиенте
Процедура УдалитьЯзыкМакета(Команда)
Если ТекущийЯзык = ОбщегоНазначенияКлиент.КодОсновногоЯзыка() Тогда
Возврат;
КонецЕсли;
УдалитьМакетНаТекущемЯзыке();
ЗаписьВыполнена = Истина;
ОповеститьОЗаписиТабличногоДокумента();
Элементы.УдалитьЯзыкМакета.Видимость = ТекущийЯзык <> ОбщегоНазначенияКлиент.КодОсновногоЯзыка();
Элементы.КнопкаПоказатьСкрытьОригинал.Доступность = Ложь;
Элементы.УдалитьЯзыкМакета.Видимость = Не ЗначениеЗаполнено(Параметры.Ссылка)
Или ТекущийЯзык <> ОбщегоНазначенияКлиент.КодОсновногоЯзыка();
УстановитьЗаголовок();
КонецПроцедуры
@@ -1152,8 +1155,10 @@
Возврат;
КонецЕсли;
УправляемыйЭлемент.ТекущаяОбласть = ЭтотОбъект[ТекущийЭлемент.Имя].Область(
Область.Верх, Область.Лево, Область.Низ, Область.Право);
Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
УправляемыйЭлемент.ТекущаяОбласть = ЭтотОбъект[ТекущийЭлемент.Имя].Область(
Область.Верх, Область.Лево, Область.Низ, Область.Право);
КонецЕсли;
КонецПроцедуры
@@ -2423,7 +2428,8 @@
Для Каждого Область Из Результат.Области Цикл
Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента")
И Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки
Или ТипЗнч(Область) = Тип("РисунокТабличногоДокумента") Тогда
Или ТипЗнч(Область) = Тип("РисунокТабличногоДокумента")
И Область.ТипРисунка <> ТипРисункаТабличногоДокумента.Группа Тогда
КопируемаяОбласть = ТабличныйДокумент.Области.Найти(Область.Имя);
Если КопируемаяОбласть = Неопределено Тогда
Продолжить;
@@ -2818,6 +2824,17 @@
МодульУправлениеПечатью.УдалитьМакет(ИдентификаторМакета, ТекущийЯзык);
КонецЕсли;
ЗагрузитьТабличныйДокументИзМетаданных(ТекущийЯзык);
Если ЭтоПечатнаяФорма Тогда
ЗаполнитьТабличныйДокумент(ТабличныйДокумент, ПрочитатьМакет());
КонецЕсли;
Модифицированность = Ложь;
Если Не ЗначениеЗаполнено(ТекущийЯзык) Или ТекущийЯзык = ОбщегоНазначения.КодОсновногоЯзыка() Тогда
Возврат;
КонецЕсли;
МенюЯзык = Элементы.Язык;
ДобавляемыеЯзыки = Элементы.ДобавляемыеЯзыки;
ЯзыкУдаляемойФормы = ТекущийЯзык;
@@ -2841,13 +2858,6 @@
Элементы.Язык.Заголовок = Элементы["Язык_"+ТекущийЯзык].Заголовок;
ЗагрузитьТабличныйДокументИзМетаданных(ТекущийЯзык);
Если ЭтоПечатнаяФорма Тогда
ЗаполнитьТабличныйДокумент(ТабличныйДокумент, ПрочитатьМакет());
КонецЕсли;
Модифицированность = Ложь;
КонецПроцедуры
&НаКлиенте
@@ -3102,4 +3112,3 @@
КонецФункции
#КонецОбласти
@@ -4237,6 +4237,10 @@
<items xsi:type="form:Button">
<name>ВыбранныеПоля_Сортировка_Вправо</name>
<id>907</id>
<title>
<key>ru</key>
<value>Добавить сортировку по выбранному полю</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -4264,6 +4268,10 @@
<items xsi:type="form:Button">
<name>ВыбранныеПоля_Сортировка_Влево</name>
<id>909</id>
<title>
<key>ru</key>
<value>Удалить выбранные сортировки</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -4291,6 +4299,10 @@
<items xsi:type="form:Button">
<name>ВыбранныеПоля_Сортировка_ВлевоВсе</name>
<id>911</id>
<title>
<key>ru</key>
<value>Удалить все сортировки</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -75,7 +75,6 @@
<multiLine>true</multiLine>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<backColor xsi:type="core:ColorRef">
<color>Style.ЦветФонаВнимание</color>
</backColor>
@@ -447,6 +446,54 @@
<items xsi:type="form:FormGroup">
<name>ТехническаяИнформация</name>
<id>41</id>
<items xsi:type="form:FormField">
<name>АлгоритмПодписиПредупреждение</name>
<id>75</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>АлгоритмПодписи</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Алгоритм, которым с помощью закрытой части ключа подписана криптостойкая хеш-сумма данных, вычисленная с помощью алгоритма хеширования.</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>АлгоритмПодписиПредупреждениеРасширеннаяПодсказка</name>
<id>77</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>АлгоритмПодписиПредупреждениеКонтекстноеМеню</name>
<id>76</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<maxHeight>2</maxHeight>
<wrap>true</wrap>
<multiLine>true</multiLine>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<backColor xsi:type="core:ColorRef">
<color>Style.ЦветФонаВнимание</color>
</backColor>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>АлгоритмПодписи</name>
<id>43</id>
@@ -489,7 +536,6 @@
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
@@ -535,7 +581,6 @@
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
@@ -50,8 +50,18 @@
Возврат;
КонецЕсли;
АлгоритмПодписиНеСоответствуетГОСТ = "";
АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмСформированнойПодписи(
АдресПодписи, Истина);
АдресПодписи, Истина, Ложь, АлгоритмПодписиНеСоответствуетГОСТ);
Если ЗначениеЗаполнено(АлгоритмПодписиНеСоответствуетГОСТ) Тогда
АлгоритмПодписи = АлгоритмПодписиНеСоответствуетГОСТ;
Элементы.АлгоритмПодписи.Видимость = Ложь;
Элементы.АлгоритмПодписиПредупреждение.Видимость = Истина;
Иначе
Элементы.АлгоритмПодписи.Видимость = Истина;
Элементы.АлгоритмПодписиПредупреждение.Видимость = Ложь;
КонецЕсли;
АлгоритмХеширования = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмХеширования(
АдресПодписи, Истина);
@@ -280,10 +280,9 @@
Если ЗначениеЗаполнено(ИдентификаторАдреса) Тогда
СведенияОбАдресномОбъекта = СведенияОбАдресномОбъекта();
СведенияОбАдресномОбъекта.Идентификатор = ИдентификаторАдреса;
СведенияОбАдресномОбъекта.Адрес = Адрес;
СведенияОбАдресномОбъекта.Муниципальный = ЭтоМуниципальныйАдрес(Адрес.addressType);
СведенияОбАдресномОбъекта = СведенияОбАдресномОбъекта(ИдентификаторАдреса);
СведенияОбАдресномОбъекта.Адрес = Адрес;
СведенияОбАдресномОбъекта.Муниципальный = ЭтоМуниципальныйАдрес(Адрес.addressType);
СведенияОбАдресномОбъекта.ЗагруженныеДанные = ЗагруженныеДанные;
Результат = АктуальныеАдресныеСведения(СведенияОбАдресномОбъекта);
@@ -922,7 +921,7 @@
СведенияОбАдресномОбъекте.Вставить("Муниципальный", Истина);
ЭтоМуниципальныйАдрес = Истина;
КонецЕсли;
Если ЗагруженныеДанные = Истина Тогда
ЗаполнитьАдресныеСведенияИзЗагруженныхДанных(Результат.Данные, СведенияОбАдресномОбъекте);
КонецЕсли;
@@ -1993,6 +1992,30 @@
Возврат ПравоДоступа("Изменение", Метаданные.РегистрыСведений.АдресныеОбъекты);
КонецФункции
// Сведения об адресном объекта.
//
// Параметры:
// ИдентификаторАдреса - УникальныйИдентификатор - идентификатор адреса ГАР
//
// Возвращаемое значение:
// Структура - сведения об адресном объекта:
// * Идентификатор - УникальныйИдентификатор
// * ЗагруженныеДанные - Булево
// * Муниципальный - Булево
// * Адрес - Структура
//
Функция СведенияОбАдресномОбъекта(ИдентификаторАдреса) Экспорт
СведенияОбАдресе = Новый Структура;
СведенияОбАдресе.Вставить("Идентификатор", ИдентификаторАдреса);
СведенияОбАдресе.Вставить("ЗагруженныеДанные", Ложь);
СведенияОбАдресе.Вставить("Муниципальный", Ложь);
СведенияОбАдресе.Вставить("Адрес", Новый Структура);
Возврат СведенияОбАдресе;
КонецФункции
#Область АдресныйКлассификаторВМоделиСервиса
////////////////////////////////////////////////////////////////////////////////
@@ -2531,10 +2554,9 @@
Муниципальный = ?(СтрокаАдреса.КлючАдреса = 0, Истина, Ложь);
Сведения = Новый Структура;
Сведения.Вставить("ЗагруженныеДанные", Истина);
Сведения.Вставить("Идентификатор", СтрокаАдреса.Идентификатор);
Сведения.Вставить("Муниципальный", Муниципальный);
Сведения = СведенияОбАдресномОбъекта(СтрокаАдреса.Идентификатор);
Сведения.ЗагруженныеДанные = Истина;
Сведения.Муниципальный = Муниципальный;
АдресДанные = АктуальныеАдресныеСведения(Сведения);
@@ -2963,13 +2985,9 @@
Выборка = РезультатЗапроса.Выгрузить();
Если СведенияОбАдресномОбъекте.Свойство("Муниципальный") Тогда
Результат.addressType = ?(СведенияОбАдресномОбъекте.Муниципальный, МуниципальныйАдрес(),
АдминистративноТерриториальныйАдрес());
Иначе
Результат.addressType = МуниципальныйАдрес();
КонецЕсли;
Результат.addressType = ?(СведенияОбАдресномОбъекте.Муниципальный, МуниципальныйАдрес(),
АдминистративноТерриториальныйАдрес());
СловарьИменПолей = СловарьКлючейПолейАдресВСоответствииСУровнем();
АдминистративныйАдрес = Неопределено;
@@ -2977,7 +2995,7 @@
ПоляТекущегоАдреса = Новый Структура;
Если СведенияОбАдресномОбъекте.Свойство("Адрес") Тогда
Если ЗначениеЗаполнено(СведенияОбАдресномОбъекте.Адрес) Тогда
ТекущийАдреса = СведенияОбАдресномОбъекте.Адрес;
@@ -3211,11 +3229,10 @@
Если ЗначениеЗаполнено(ИдентификаторАдресногоОбъекта) Тогда
СведенияОбАдресномОбъекта = СведенияОбАдресномОбъекта();
СведенияОбАдресномОбъекта.Адрес = Адрес;
СведенияОбАдресномОбъекта = СведенияОбАдресномОбъекта(ИдентификаторАдресногоОбъекта);
СведенияОбАдресномОбъекта.Адрес = Адрес;
СведенияОбАдресномОбъекта.ЗагруженныеДанные = Истина;
СведенияОбАдресномОбъекта.Идентификатор = ИдентификаторАдресногоОбъекта;
СведенияОбАдресномОбъекта.Муниципальный = ЭтоМуниципальныйАдрес(Адрес.AddressType);
СведенияОбАдресномОбъекта.Муниципальный = ЭтоМуниципальныйАдрес(Адрес.AddressType);
НайденныйАдрес = АктуальныеАдресныеСведения(СведенияОбАдресномОбъекта);
Если НайденныйАдрес.Отказ Тогда
@@ -3445,24 +3462,6 @@
КонецФункции
// Возвращаемое значение:
// Структура:
// * ЗагруженныеДанные - Булево
// * Идентификатор - УникальныйИдентификатор
// * Муниципальный - Булево
// * Адрес - Структура
//
Функция СведенияОбАдресномОбъекта()
СведенияОбАдресе = Новый Структура;
СведенияОбАдресе.Вставить("ЗагруженныеДанные", Ложь);
СведенияОбАдресе.Вставить("Идентификатор", Новый УникальныйИдентификатор);
СведенияОбАдресе.Вставить("Муниципальный", Ложь);
СведенияОбАдресе.Вставить("Адрес", Новый Структура);
Возврат СведенияОбАдресе;
КонецФункции
// Возвращаемое значение:
// Структура:
@@ -4724,7 +4723,7 @@
АдресныеСведенияРегиона = СведенияОРегионе(Адрес.area, Адрес.areaType);
Если АдресныеСведенияРегиона.Устарел Тогда
//@skip-check query-in-loop
//@skip-check query-in-loop - редкий штучный запрос, только для актуализации данных региона.
АктуализироватьДанныеОРегионе(Адрес, АдресныеСведенияРегиона.КодСубъектаРФ, Результат); // Вызывается, только если адрес устарел.
ИначеЕсли Не АдресныеСведенияРегиона.Загружен Тогда
@@ -5490,7 +5489,7 @@
Результат.АдресКорректный = Ложь;
Результат.АдресПроверен = Истина;
Если ПроверятьУстареваниеАдресов Тогда
//@skip-check query-in-loop
//@skip-check query-in-loop - редкие штучные запросы, только для устаревшего адреса.
НовыеАдреса = АктуальныйАдресДляИсторического(Адрес); // Вызывается, только если адрес устарел.
Если НовыеАдреса.АдресНайден Тогда
Результат.Варианты = НовыеАдреса.Варианты;
@@ -6764,13 +6763,17 @@
Иначе
// Для городов содержащих несколько вн.р-н внутри города и нужно выбрать ранее введенный.
ВыбранныйАдрес = РезультатВебСервис.Данные[0];
Для каждого АдресИзВебСервиса Из РезультатВебСервис.Данные Цикл
Если СтрСравнить(АдресИзВебСервиса.settlement, СведенияОбАдресномОбъекте.Адрес.settlement) = 0
И СтрСравнить(АдресИзВебСервиса.settlementType, СведенияОбАдресномОбъекте.Адрес.settlementType) =0 Тогда
ВыбранныйАдрес = АдресИзВебСервиса;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЗначениеЗаполнено(СведенияОбАдресномОбъекте.Адрес) Тогда
Для каждого АдресИзВебСервиса Из РезультатВебСервис.Данные Цикл
Если СтрСравнить(АдресИзВебСервиса.settlement, СведенияОбАдресномОбъекте.Адрес.settlement) = 0
И СтрСравнить(АдресИзВебСервиса.settlementType, СведенияОбАдресномОбъекте.Адрес.settlementType) =0 Тогда
ВыбранныйАдрес = АдресИзВебСервиса;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Результат.Данные = АдресДляСохраненияВБазе(ВыбранныйАдрес, ЭтоМуниципальныйАдрес);
КонецЕсли;
@@ -9707,7 +9710,7 @@
// Во время загрузки возникла ошибка, очищаем частично загруженные данные.
КодыСубъектаРФ = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(СубъектРФ);
//@skip-check query-in-loop
//@skip-check query-in-loop - штучный легкий запрос, только в исключительной ситуации для отката неудачной загрузки.
ОчиститьКлассификаторАдресов(КодыСубъектаРФ); // Очистка только если во время загрузки адресных сведений возникла ошибка.
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,,
@@ -1343,13 +1343,9 @@
Элемент.КнопкаОткрытия = Ложь;
ИначеЕсли РеквизитыЭлементарногоВопроса.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.Число Тогда
УстановитьПараметрыЭлементаЯчейкаЧисло(Элемент, РеквизитыЭлементарногоВопроса);
ИначеЕсли РеквизитыЭлементарногоВопроса.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.Текст Тогда
УстановитьПараметрыЭлементаЯчейкаТекст(Элемент);
КонецЕсли;
ИначеЕсли СтрокаТаблицы.ТипТабличногоВопроса
@@ -1357,8 +1353,9 @@
Если СтрокаТаблицы.СоставТабличногоВопроса.Количество() = 3 И инд <> 1 Тогда
Если СтрокаТаблицы.СоставТабличногоВопроса[2].ЭлементарныйВопрос.ТипЗначения
= Новый ОписаниеТипов("СправочникСсылка.ВариантыОтветовАнкет") Тогда
ТипЗначения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаТаблицы.СоставТабличногоВопроса[2].ЭлементарныйВопрос,
"ТипЗначения");
Если ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.ВариантыОтветовАнкет") Тогда
Элемент.РежимВыбораИзСписка = Истина;
ВариантыОтветовНаВопрос = ВариантыОтветовНаВопрос(
@@ -1372,13 +1369,9 @@
КонецЕсли;
Если РеквизитыЭлементарногоВопроса.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.Число Тогда
УстановитьПараметрыЭлементаЯчейкаЧисло(Элемент, РеквизитыЭлементарногоВопроса);
ИначеЕсли РеквизитыЭлементарногоВопроса.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.Текст Тогда
УстановитьПараметрыЭлементаЯчейкаТекст(Элемент);
КонецЕсли;
КонецЕсли;
@@ -1663,7 +1656,9 @@
Элемент.ПутьКДанным = ИмяВопроса + "_Комментарий_" + Формат(
СтрокаКомплексногоВопроса.НомерСтроки, "ЧГ=");
Элемент.АвтоМаксимальнаяШирина = Ложь;
Элемент.ПодсказкаВвода = СтрокаКомплексногоВопроса.ЭлементарныйВопрос.ПояснениеКомментария;
ПояснениеКомментария = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаКомплексногоВопроса.ЭлементарныйВопрос,
"ПояснениеКомментария");
Элемент.ПодсказкаВвода = ПояснениеКомментария;
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Элемент.РастягиватьПоГоризонтали = Ложь;
Элемент.КнопкаВыбора = Истина;
@@ -14,18 +14,13 @@
// ЗадачаСсылка - ЗадачаСсылка.ЗадачаИсполнителя
//
// Возвращаемое значение:
// Структура
// см. БизнесПроцессыИЗадачиПереопределяемый.ПриПолученииФормыВыполненияЗадачи.ПараметрыФормы
//
Функция ФормаВыполненияЗадачи(Знач ЗадачаСсылка) Экспорт
Если ТипЗнч(ЗадачаСсылка) <> Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неправильный тип параметра %1 (передан: %2; ожидается: %3)'"),
"ЗадачаСсылка", ТипЗнч(ЗадачаСсылка), "ЗадачаСсылка.ЗадачаИсполнителя");
ВызватьИсключение ТекстСообщения;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("БизнесПроцессыИЗадачиВызовСервера.ФормаВыполненияЗадачи",
"ЗадачаСсылка", ЗадачаСсылка, Тип("ЗадачаСсылка.ЗадачаИсполнителя"));
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЗадачаСсылка, "БизнесПроцесс,ТочкаМаршрута");
Если Реквизиты.БизнесПроцесс = Неопределено ИЛИ Реквизиты.БизнесПроцесс.Пустая() Тогда
Возврат Новый Структура();
@@ -77,7 +72,6 @@
БизнесПроцессыИЗадачиСервер.ЗаблокироватьЗадачи(ЗадачаСсылка);
СведенияЗадачи = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЗадачаСсылка, "Выполнена, БизнесПроцесс, ТочкаМаршрута");
Если СведенияЗадачи.Выполнена Тогда
ВызватьИсключение НСтр("ru = 'Задача уже была выполнена ранее.'");
КонецЕсли;
@@ -1369,7 +1369,7 @@
ОтменитьТранзакцию();
ЗаписьЖурналаРегистрации(НСтр("ru='Поиск и замена ссылок'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,
НеобработанныйДубль.ЗаменяемоеЗначение.Метаданные,,
НеобработанныйДубль.ЗаменяемоеЗначение.Метаданные(),,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
@@ -1513,10 +1513,11 @@
ТаблицаФормы = ТаблицаФормыПоИмени(Форма, ПрефиксТаблица + ОписаниеКонтакта.Имя);
ТаблицаФормы.ТекущаяСтрока = Контакт;
Если ОписаниеКонтакта.ЕстьВладелец Тогда
ВладелецКонтакта = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контакт, "Владелец");
ТаблицаФормы = ТаблицаФормыПоИмени(Форма, ПрефиксТаблица + ОписаниеКонтакта.ИмяВладельца);
ТаблицаФормы.ТекущаяСтрока = Контакт.Владелец;
ТаблицаФормы.ТекущаяСтрока = ВладелецКонтакта;
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Форма["Список_" + ОписаниеКонтакта.Имя],"Владелец",Контакт.Владелец,,, Истина);
Форма["Список_" + ОписаниеКонтакта.Имя],"Владелец",ВладелецКонтакта,,, Истина);
КонецЕсли;
ИначеЕсли ОписаниеКонтакта.ИмяВладельца = ИмяМетаданныхКонтакта Тогда
Форма.Элементы.СтраницыСписки.ТекущаяСтраница =
@@ -5796,7 +5797,7 @@
Если НЕ НовыйРодитель.Пустая()Тогда
ЗначенияРеквизитовПапки = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
НовыйРодитель,"ПредопределеннаяПапка,ТипПредопределеннойПапки");
НовыйРодитель, "ПредопределеннаяПапка,ТипПредопределеннойПапки");
Если ЗначенияРеквизитовПапки <> Неопределено
И ЗначенияРеквизитовПапки.ПредопределеннаяПапка
И ЗначенияРеквизитовПапки.ТипПредопределеннойПапки = Перечисления.ТипыПредопределенныхПапокПисем.Удаленные Тогда
@@ -85,7 +85,7 @@
МетаданныеКонтакта = Контакт.Метаданные();
Если МетаданныеКонтакта.Иерархический Тогда
Если Контакт.ЭтоГруппа Тогда
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контакт, "ЭтоГруппа") = Истина Тогда
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
@@ -380,10 +380,10 @@
// Структура - параметры выполнения длительной операции:
// * ИдентификаторФормы - УникальныйИдентификатор - уникальный идентификатор формы,
// во временное хранилище которой надо поместить результат выполнения процедуры.
// * ОжидатьЗавершение - Число - таймаут в секундах ожидания завершения фонового задания.
// Если задано Неопределено, то ждать до момента завершения задания.
// Если задано 0, то ждать завершения задания не требуется.
// По умолчанию - 2 секунды; а для низкой скорости соединения - 4.
// * ОжидатьЗавершение - Неопределено - ждать до момента завершения фонового задания.
// - Число - таймаут в секундах ожидания завершения фонового задания.
// Если задано 0, то ждать завершения задания не требуется.
// По умолчанию - 0.8 секунды, а для низкой скорости соединения - 4.
// * НаименованиеФоновогоЗадания - Строка - описание фонового задания. По умолчанию - имя процедуры.
// * КлючФоновогоЗадания - Строка - уникальный ключ для активных фоновых заданий, имеющих такое же имя процедуры.
// По умолчанию не задан.
@@ -433,10 +433,10 @@
//
// Возвращаемое значение:
// Структура - параметры выполнения длительной операции:
// * ОжидатьЗавершение - Число - таймаут в секундах ожидания завершения фонового задания.
// Если задано Неопределено, то ждать до момента завершения задания.
// Если задано 0, то ждать завершения задания не требуется.
// По умолчанию - 2 секунды; а для низкой скорости соединения - 4.
// * ОжидатьЗавершение - Неопределено - ждать до момента завершения фонового задания.
// - Число - таймаут в секундах ожидания завершения фонового задания.
// Если задано 0, то ждать завершения задания не требуется.
// По умолчанию - 0.8 секунды, а для низкой скорости соединения - 4.
// * НаименованиеФоновогоЗадания - Строка - описание фонового задания. По умолчанию - имя процедуры.
// * КлючФоновогоЗадания - Строка - уникальный ключ для активных фоновых заданий, имеющих такое же имя процедуры.
// По умолчанию не задан.
@@ -763,11 +763,10 @@
// во временное хранилище которой надо поместить результат выполнения процедуры.
// * ДополнительныйРезультат - Булево - признак использования дополнительного временного хранилища для передачи
// результата из фонового задания в родительский сеанс. По умолчанию - Ложь.
// * ОжидатьЗавершение - Число
// - Неопределено - таймаут в секундах ожидания завершения фонового задания.
// Если задано Неопределено, то ждать до момента завершения задания.
// Если задано 0, то ждать завершения задания не требуется.
// По умолчанию - 2 секунды; а для низкой скорости соединения - 4.
// * ОжидатьЗавершение - Неопределено - ждать до момента завершения фонового задания.
// - Число - таймаут в секундах ожидания завершения фонового задания.
// Если задано 0, то ждать завершения задания не требуется.
// По умолчанию - 0.8 секунды, а для низкой скорости соединения - 4.
// * НаименованиеФоновогоЗадания - Строка - описание фонового задания. По умолчанию - имя процедуры.
// * КлючФоновогоЗадания - Строка - уникальный ключ для активных фоновых заданий, имеющих такое же имя процедуры.
// По умолчанию не задан.
@@ -2262,6 +2261,10 @@
ЗавершитьДосрочно = Ложь;
ЗаданиеПроцесса = ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание();
ИдентификаторЗаданияПроцесса = ?(ЗаданиеПроцесса = Неопределено,
Неопределено, ЗаданиеПроцесса.УникальныйИдентификатор);
Пока Истина Цикл
Если ДинамическоеПолучениеПорций Тогда
@@ -2301,19 +2304,31 @@
ОтправитьСообщенияПотока(Поток.ИдентификаторЗадания);
КонецЕсли;
// @skip-check query-in-loop - зачитывание актуальных данных о потоках из ИБ.
ВыполнитьВФоне = ОжидатьСвободныйПоток(ИдентификаторПроцесса, ПрерватьВыполнениеЕслиОшибка);
Если ВыполнитьВФоне = Неопределено Тогда
ЗавершитьДосрочно = Истина;
Результат = Неопределено;
Пока Результат = Неопределено Цикл
// @skip-check query-in-loop - зачитывание актуальных данных о потоках из ИБ.
ВыполнитьВФоне = ОжидатьСвободныйПоток(ИдентификаторПроцесса, ПрерватьВыполнениеЕслиОшибка);
Если ВыполнитьВФоне = Неопределено Тогда
ЗавершитьДосрочно = Истина;
Прервать;
КонецЕсли;
// @skip-check query-in-loop - зачитывание актуальных данных о потоках из ИБ.
Результат = ВыполнитьПоток(Поток, ПараметрыОперации, ВыполнитьВФоне, ИдентификаторЗаданияПроцесса);
КонецЦикла;
Если ЗавершитьДосрочно Тогда
Прервать;
КонецЕсли;
Результат = ВыполнитьПоток(Поток, ПараметрыОперации, ВыполнитьВФоне);
Если Результат.Статус = СтатусДлительнойОперации().Ошибка Тогда
Если ПрерватьВыполнениеЕслиОшибка Тогда
ЗавершитьДосрочно = Истина;
Прервать;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ДинамическоеПолучениеПорций Тогда
@@ -2386,7 +2401,7 @@
// Возвращаемое значение:
// см. ВыполнитьВФоне
//
Функция ВыполнитьПоток(Поток, ПараметрыОперации, ВыполнитьВФоне)
Функция ВыполнитьПоток(Поток, ПараметрыОперации, ВыполнитьВФоне, ИдентификаторЗаданияПроцесса)
ПараметрыВыполнения = ПараметрыВыполненияВФоне();
ПараметрыВыполнения.НаименованиеФоновогоЗадания = Поток.Наименование;
@@ -2410,10 +2425,55 @@
ПараметрыВыполнения.АдресРезультата = Поток.АдресРезультата;
РезультатЗапуска = Неопределено;
МаксимумПотоков = ДопустимоеКоличествоПотоков();
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("Константа.КоличествоПотоковДлительныхОпераций");
УстановитьПолноеИмяПрикладнойПроцедуры(ПараметрыОперации.ИмяМетода);
РезультатЗапуска = ВыполнитьВФоне(ПараметрыОперации.ИмяМетода, ПараметрыМетода, ПараметрыВыполнения);
УстановитьПолноеИмяПрикладнойПроцедуры(ИмяМетодаМногопоточногоПроцесса());
ОбновитьСведенияОбПотоке(Поток, РезультатЗапуска);
ПотокЗанят = Ложь;
Если Не ПараметрыВыполнения.ЗапуститьНеВФоне Тогда
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
Потоки = АктивныеПотоки();
Если Потоки.Количество() < МаксимумПотоков Тогда
ВременныйРезультатЗапуска = НовыйРезультатДлительнойОперации();
ВременныйРезультатЗапуска.ИдентификаторЗадания = ИдентификаторЗаданияПроцесса;
ВременныйРезультатЗапуска.Статус = СтатусДлительнойОперации().Выполняется;
ОбновитьСведенияОбПотоке(Поток, ВременныйРезультатЗапуска, Ложь);
ПотокЗанят = Истина;
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецЕсли;
Попытка
Если ПараметрыВыполнения.ЗапуститьНеВФоне Или ПотокЗанят Тогда
РезультатЗапуска = ВыполнитьВФоне(ПараметрыОперации.ИмяМетода, ПараметрыМетода, ПараметрыВыполнения);
УстановитьПолноеИмяПрикладнойПроцедуры(ИмяМетодаМногопоточногоПроцесса());
ОбновитьСведенияОбПотоке(Поток, РезультатЗапуска);
КонецЕсли;
Исключение
Если ПотокЗанят Тогда
ПустойРезультатЗапуска = НовыйРезультатДлительнойОперации();
ОбновитьСведенияОбПотоке(Поток, ПустойРезультатЗапуска, Ложь);
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
Возврат РезультатЗапуска;
@@ -2433,7 +2493,7 @@
КонецФункции
Процедура ОбновитьСведенияОбПотоке(Поток, РезультатЗапуска = Неопределено)
Процедура ОбновитьСведенияОбПотоке(Поток, РезультатЗапуска = Неопределено, НоваяПопытка = Истина)
РезультатЗапускаУказан = РезультатЗапуска <> Неопределено;
@@ -2483,13 +2543,15 @@
Если РезультатЗапускаУказан Тогда
Запись.ИдентификаторЗадания = РезультатЗапуска.ИдентификаторЗадания;
Запись.НомерПопытки = Поток.НомерПопытки + 1;
Запись.КлючПотока = Поток.КлючПотока;
Если НоваяПопытка Тогда
Запись.НомерПопытки = Поток.НомерПопытки + 1;
КонецЕсли;
КонецЕсли;
Запись.Статус = РезультатЗапуска.Статус;
Если РезультатЗапуска.Статус = СтатусДлительнойОперации().Ошибка Тогда
Запись.ПодробноеПредставлениеОшибки = РезультатЗапуска.ПодробноеПредставлениеОшибки;
Запись.КраткоеПредставлениеОшибки = РезультатЗапуска.КраткоеПредставлениеОшибки;
Запись.КраткоеПредставлениеОшибки = РезультатЗапуска.КраткоеПредставлениеОшибки;
КонецЕсли;
ЗаполнитьЗначенияСвойств(Поток, Запись);
@@ -2610,8 +2672,20 @@
МаксимумПотоков = ДопустимоеКоличествоПотоков();
ВыполнитьВФоне = МаксимумПотоков > 1;
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("Константа.КоличествоПотоковДлительныхОпераций");
Пока Истина Цикл
Потоки = АктивныеПотоки();
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
Потоки = АктивныеПотоки();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Если Потоки.Количество() < МаксимумПотоков Тогда
Прервать;
@@ -2620,7 +2694,7 @@
ЕстьЗавершенныеПотоки = ЕстьЗавершенныеПотоки(Потоки,
ЗавершитьДосрочноЕслиОшибка, ИдентификаторПроцесса);
Если ЗавершитьДосрочноЕслиОшибка И ЕстьЗавершенныеПотоки = Неопределено Тогда
Если ЗавершитьДосрочноЕслиОшибка И ЕстьЗавершенныеПотоки = Неопределено Тогда
ВыполнитьВФоне = Неопределено; // Ошибка в потоке.
Прервать;
КонецЕсли;
@@ -2635,6 +2709,7 @@
Для Каждого УправляющийПоток Из УправляющиеПотоки Цикл
Потоки.Удалить(УправляющийПоток);
КонецЦикла;
Если Потоки.Найти(ИдентификаторПроцесса, "ИдентификаторПроцесса") = Неопределено Тогда
// Не ждем, когда у процесса нет ни одного исполняющего потока.
ВыполнитьВФоне = Ложь;
@@ -2643,8 +2718,8 @@
Если ОжидатьЗавершениеПотока(Потоки[0]) Тогда // Задание выполнено.
ОбновитьСведенияОбПотоке(Потоки[0]);
Прервать;
КонецЕсли;
КонецЦикла;
Возврат ВыполнитьВФоне;
@@ -418,6 +418,74 @@
КонецФункции
// Возвращает адрес файла выгрузки журнала регистрации для техподдержки в формате XML.
// Отбор записей журнала регистрации в параметре ОтборЖурналаРегистрации соответствует методу ВыгрузитьЖурналРегистрации.
// Любое свойство отбора может отсутствовать или иметь значение Неопределено, что означает, что отбор не задан.
//
// Параметры:
// ОтборЖурналаРегистрации - Структура:
// * ДатаНачала - Дата
// * ДатаОкончания - Дата
// * Уровень - УровеньЖурналаРегистрации
// * ИмяПриложения - Строка
// - Массив из Строка
// - СписокЗначений
// * Пользователь - ПользовательИнформационнойБазы
// - Строка
// - Массив из ПользовательИнформационнойБазы
// - СписокЗначений
// * Компьютер - Строка
// - Массив из Строка
// - СписокЗначений
// * Событие - Строка
// - СписокЗначений
// - Массив из Строка - варианты имен системных событий смотри в синтаксис-помощнике.
// * Метаданные - ОбъектМетаданных
// - Массив из ОбъектМетаданных
// - СписокЗначений
// * Данные - ЛюбаяСсылка
// * ПредставлениеДанных - Строка
// * Комментарий - Строка
// * СтатусТранзакции - СтатусТранзакцииЗаписиЖурналаРегистрации
// * Транзакция - Строка
// * Сеанс - Число
// - Массив из Число
// - СписокЗначений
// * РабочийСервер - Строка
// - Массив из Строка
// - СписокЗначений
// * ОсновнойIPПорт - Число
// - Массив из Число
// - СписокЗначений
// * ВспомогательныйIPПорт - Число
// - Массив из Число
// - СписокЗначений
// * РазделениеДанныхСеанса - СписокЗначений - имена свойств соответствуют именам общих реквизитов.
// - Структура
// КоличествоСобытий - Число
// УникальныйИдентификатор - УникальныйИдентификатор - для создания временного хранилища.
//
// Возвращаемое значение:
// Строка
//
Функция ЖурналДляТехподдержки(ОтборЖурналаРегистрации, КоличествоСобытий, УникальныйИдентификатор = Неопределено) Экспорт
Отбор = Новый Структура;
Для Каждого ЭлементОтбора Из ОтборЖурналаРегистрации Цикл
Отбор.Вставить(ЭлементОтбора.Ключ, ЭлементОтбора.Значение);
КонецЦикла;
СмещениеВремениСервера = СмещениеВремениСервера();
ПреобразованиеОтбора(Отбор, СмещениеВремениСервера);
ВременныйФайл = ПолучитьИмяВременногоФайла("xml");
ВыгрузитьЖурналРегистрации(ВременныйФайл, Отбор, , , КоличествоСобытий);
ДвоичныеДанные = Новый ДвоичныеДанные(ВременныйФайл);
УдалитьФайлы(ВременныйФайл);
Возврат ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -587,25 +655,6 @@
КонецПроцедуры
Функция ЖурналДляТехподдержки(ОтборЖурналаРегистрации, КоличествоСобытий, УникальныйИдентификатор = Неопределено) Экспорт
Отбор = Новый Структура;
Для Каждого ЭлементОтбора Из ОтборЖурналаРегистрации Цикл
Отбор.Вставить(ЭлементОтбора.Ключ, ЭлементОтбора.Значение);
КонецЦикла;
СмещениеВремениСервера = СмещениеВремениСервера();
ПреобразованиеОтбора(Отбор, СмещениеВремениСервера);
// Выгрузка отбираемых событий и формирование структуры таблицы.
ВременныйФайл = ПолучитьИмяВременногоФайла("xml");
ВыгрузитьЖурналРегистрации(ВременныйФайл, Отбор, , , КоличествоСобытий);
ДвоичныеДанные = Новый ДвоичныеДанные(ВременныйФайл);
УдалитьФайлы(ВременныйФайл);
Возврат ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Вспомогательные процедуры и функции.
@@ -98,8 +98,8 @@
ТипыСубъектов = ТипыСубъектов();
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗначенияОбъекта)
ИЛИ Документы.ТипВсеСсылки().СодержитТип(ТипЗначенияОбъекта) Тогда
Или Документы.ТипВсеСсылки().СодержитТип(ТипЗначенияОбъекта) Тогда
Если ТипыСубъектов.Найти(ТипЗначенияОбъекта) <> Неопределено Тогда
Возврат РегистрыСведений.УничтоженныеПерсональныеДанные.ЕстьСубъектыСУничтоженнымиПерсональнымиДанными(
Объект);
@@ -107,6 +107,8 @@
Объект = Объект.ПолучитьОбъект();
КонецЕсли;
ИначеЕсли ТипЗначенияОбъекта = Тип("УдалениеОбъекта") Тогда
Возврат Ложь;
ИначеЕсли Объект.ДополнительныеСвойства.Свойство("СкрытиеКонфиденциальнойИнформации") Тогда
Возврат Истина;
КонецЕсли;
@@ -584,7 +584,7 @@
СписокПолей = Форма.Элементы.Найти(ИмяСпискаПолей);
ГруппаПоиска = Форма.Элементы.Добавить("Группа"+ИмяСтрокиПоиска, Тип("ГруппаФормы"), МестоРазмещенияСтрокиПоиска);
ГруппаПоиска = Форма.Элементы.Добавить("Группа" + ИмяСтрокиПоиска, Тип("ГруппаФормы"), МестоРазмещенияСтрокиПоиска);
ГруппаПоиска.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ГруппаПоиска.Отображение = ОтображениеОбычнойГруппы.Нет;
ГруппаПоиска.ОтображатьЗаголовок = Ложь;
@@ -592,9 +592,9 @@
СтрокаПоиска = Форма.Элементы.Добавить(ИмяСтрокиПоиска, Тип("ПолеФормы"), ГруппаПоиска);
ИмяКомандыОчистки = ИмяСтрокиПоиска+"Очистка";
ИмяКомандыОчистки = ИмяСтрокиПоиска + "Очистка";
Если Форма.Команды.Найти(ИмяКомандыОчистки) = Неопределено Тогда
Команда = Форма.Команды.Добавить(ИмяСтрокиПоиска+"Очистка");
Команда = Форма.Команды.Добавить(ИмяСтрокиПоиска + "Очистка");
Команда.Действие = "Подключаемый_СтрокаПоискаОчистка";
Команда.Отображение = ОтображениеКнопки.Картинка;
КонецЕсли;
@@ -605,6 +605,7 @@
КнопкаОчисткиПоиска.ВертикальноеПоложениеВГруппе = ВертикальноеПоложениеЭлемента.Центр;
КнопкаОчисткиПоиска.ИмяКоманды = ИмяКомандыОчистки;
КнопкаОчисткиПоиска.ОтображениеФигуры = ОтображениеФигурыКнопки.ПриАктивности;
КнопкаОчисткиПоиска.Заголовок = НСтр("ru = 'Очистить'");
Если СписокПолей <> Неопределено Тогда
Форма.Элементы.Переместить(ГруппаПоиска, МестоРазмещенияСтрокиПоиска, СписокПолей);
@@ -617,6 +618,7 @@
СтрокаПоиска.УстановитьДействие("ИзменениеТекстаРедактирования", "Подключаемый_СтрокаПоискаИзменениеТекстаРедактирования");
СтрокаПоиска.АвтоМаксимальнаяШирина = Ложь;
СтрокаПоиска.ОбновлениеТекстаРедактирования = ОбновлениеТекстаРедактирования.НеИспользовать;
СтрокаПоиска.Заголовок = НСтр("ru = 'Найти'");
Если СписокПолей = Неопределено Тогда
СписокПолей = Форма.Элементы.Добавить(ИмяСпискаПолей, Тип("ТаблицаФормы"), ПараметрыДобавления.МестоРазмещенияСписка);
@@ -654,11 +656,13 @@
КартинкаПоля.ПутьКДанным = ИмяСпискаПолей + ".Картинка";
КартинкаПоля.Вид = ВидПоляФормы.ПолеКартинки;
КартинкаПоля.ОтображатьВШапке = Ложь;
КартинкаПоля.Заголовок = НСтр("ru = 'Картинка'");
ПредставлениеПоля = Форма.Элементы.Добавить(ИмяКолонкиПредставление(ИмяСпискаПолей), Тип("ПолеФормы"), ГруппаКолонок);
ПредставлениеПоля.ПутьКДанным = ИмяСпискаПолей + ".Заголовок";
ПредставлениеПоля.Вид = ВидПоляФормы.ПолеВвода;
ПредставлениеПоля.ТолькоПросмотр = Истина;
ПредставлениеПоля.Заголовок = НСтр("ru = 'Заголовок'");
ПредставлениеПоля = Форма.Элементы.Добавить(ИмяСпискаПолей + "ПредставлениеПутиКДанным", Тип("ПолеФормы"), ГруппаКолонок);
ПредставлениеПоля.ПутьКДанным = ИмяСпискаПолей + ".ПредставлениеПутиКДанным";
@@ -56,7 +56,7 @@
// - ДвоичныеДанные
// - Строка - адрес двоичных данных сертификата во временном хранилище.
// - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования.
// Префикс - см. ДоверенностиСОтбором.
// Префикс - Строка
//
// Возвращаемое значение:
// Структура
@@ -93,7 +93,7 @@
КонецФункции
// Доверенности с отбором. Если в отборе не передана доверенность, то отбор производится только по не помеченным на удаление.
// Доверенности с отбором. Если в отборе не передана доверенность, то отбор производится только по непомеченным на удаление.
//
// Параметры:
// Отбор - Структура - содержит имя и значение поля, по которому надо отобрать доверенности:
@@ -100,6 +100,21 @@
КонецПроцедуры
// Переопределяет процедуру регистрации в реестре Федеральной таможенной службы или другом.
//
// Параметры:
// Доверенность - СправочникСсылка.МашиночитаемыеДоверенности
// СтандартнаяОбработка - Булево - при установке значения Ложь регистрация доверенности не будет выполнена.
// ОбработчикЗавершения - ОписаниеОповещения - процедура, которую необходимо вызвать для продолжения регистрации
// доверенности в случае, если стандартная обработка
// была прервана при помощи параметра СтандартнаяОбработка;
//
Процедура ПриРегистрацииДоверенности(Доверенность, СтандартнаяОбработка, ОбработчикЗавершения) Экспорт
КонецПроцедуры
#КонецОбласти
@@ -25,8 +25,6 @@
// Организация - ОпределяемыйТип.Организация - ссылка на организацию, реквизиты которой надо заполнить.
// Реквизиты - Структура:
// * ЭтоИндивидуальныйПредприниматель - Булево
// * ЭтоФизическоеЛицо - Булево
// * ЭтоКонтрагент - Булево
// * ЭтоИностраннаяОрганизация - Булево
// * ЭтоФилиал - Булево
// * НаименованиеПолное - Строка
@@ -63,6 +61,7 @@
// Данные о физическом лице с правом действия без доверенности:
// * ЛицоБезДоверенности - ОпределяемыйТип.ФизическоеЛицо
// * РеквизитыЛицаБезДоверенности - см. ПриЗаполненииРеквизитовФизическогоЛица.Реквизиты
//
// СтандартнаяОбработка - Булево - установите в Ложь, если нужно отменить заполнение реквизитов из подсистемы Организации
//
Процедура ПриЗаполненииРеквизитовОрганизации(Организация, Реквизиты, СтандартнаяОбработка) Экспорт
@@ -167,6 +166,8 @@
//
Процедура ПриПолученииСтатусаРегистрации(Доверенность, РегистрацияВРеестре) Экспорт
КонецПроцедуры
// Переопределяет процедуру регистрации в реестре Федеральной таможенной службы или другом.
@@ -176,6 +177,8 @@
//
Процедура ПриРегистрацииДоверенности(Доверенность) Экспорт
КонецПроцедуры
#КонецОбласти
@@ -75,9 +75,6 @@
// ЭлектроннаяПодписьФайла - Структура:
// * РезультатПроверкиПодписиПоМЧД - Массив из см. МашиночитаемыеДоверенностиФНССлужебныйКлиентСервер.РезультатПроверкиПодписиПоМЧД
//
// Возвращаемое значение:
// Строка
//
Процедура ДобавитьИнформациюМЧД(ЭлектроннаяПодписьФайла, УникальныйИдентификатор) Экспорт
Если ТипЗнч(ЭлектроннаяПодписьФайла.РезультатПроверкиПодписиПоМЧД) = Тип("Структура") Тогда
@@ -773,7 +770,7 @@
Если ЗначениеЗаполнено(ДанныеДоверенности.НомерДоверенности)
И (ПроверятьВРеестреФНС = Истина Или ПроверятьВРеестреФНС = Неопределено И ЕстьВРеестреФНС) Тогда
РезультатПроверкиВРеестреФНС = ПолучитьЧастичныеДанныеДоверенностиМЧДРР(
РезультатПроверкиВРеестреФНС = ЧастичныеДанныеДоверенностиМЧДРР(
ДанныеДоверенности.НомерДоверенности,,НСтр("ru='Не удалось проверить доверенность'"));
Если ЗначениеЗаполнено(РезультатПроверкиВРеестреФНС.СтатусДоверенности) Тогда
ЕстьВРеестреФНС = Истина;
@@ -2231,14 +2228,14 @@
КонецФункции
Функция ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, СтруктураОтвета, ДополнительныеФайлы, ЗаголовокОшибки = "", ТекстОшибки = "") Экспорт
Функция ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ТекстОшибки) Экспорт
Результат = Новый Структура;
Результат.Вставить("ЗаголовокОшибки", ЗаголовокОшибки);
Результат.Вставить("ЗапросHTTP", ЗапросHTTP);
Результат.Вставить("ОтветHTTP", ОтветHTTP);
Результат.Вставить("СтруктураОтвета", СтруктураОтвета);
Результат.Вставить("ТекстОшибки", ТекстОшибки);
Результат.Вставить("ДополнительныеФайлы", ДополнительныеФайлы);
Результат.Вставить("ТекстОшибки", ТекстОшибки);
Результат.Вставить("ЗапросHTTP");
Результат.Вставить("ОтветHTTP");
Результат.Вставить("СтруктураОтвета");
Результат.Вставить("ДополнительныеФайлы");
Результат.Вставить("ПараметрыТекстаОшибки", Новый Структура);
Возврат Результат;
КонецФункции
@@ -2692,7 +2689,7 @@
Пока Выборка.Следующий() Цикл
СостояниеДоверенности = СостояниеДоверенности();
ЗаполнитьЗначенияСвойств(СостояниеДоверенности, Выборка);
Если ЗначениеЗаполнено(Выборка.ДатаТранзакции) Тогда
Если Выборка.ДатаТранзакции <> Дата(1,1,1) Тогда
ОписаниеСостояния = СтроковыеФункции.ФорматированнаяСтрока(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='<span style=""color: %1"">Запрос отправлен %2</span>'"), "ПоясняющийТекст", ОтформатироватьДату(Выборка.ДатаТранзакции)));
ИначеЕсли ЗначениеЗаполнено(Выборка.ТехническийСтатус) Тогда
@@ -2895,7 +2892,7 @@
Если ТикетАутентификацииИлиДанныеПользователя = Неопределено Тогда
ЗаголовокОшибки = ?(ЦельАвторизации = "", НСтр("ru='Не удается авторизоваться на сайте интернет поддержки'"), ЦельАвторизации);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(, , , , ЗаголовокОшибки, НСтр("ru='Не удается получить тикет аутентификации или данные пользователя.'"));
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, НСтр("ru='Не удается получить тикет аутентификации или данные пользователя.'"));
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
КонецЕсли;
@@ -2938,8 +2935,7 @@
Если СвойстваСервераМЧДРР.ИспользоватьРасширенияAPI Тогда
ОтветHTTP = СоединениеHTTP.Получить(ЗапросHTTP);
Иначе
//@skip-check object-deprecated Используется на сервере
ОтветHTTP = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);
ОтветHTTP = СоединениеHTTP.ВызватьHTTPМетод("POST", ЗапросHTTP);
КонецЕсли;
Исключение
ПредставлениеОшибки = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
@@ -2950,7 +2946,10 @@
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ЗаголовокОшибки = ?(ЦельАвторизации = "", НСтр("ru='Не удается авторизоваться на сервере Распределенного реестра ФНС России'"), ЦельАвторизации);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, , ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
КонецПопытки;
@@ -2973,7 +2972,11 @@
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ЗаголовокОшибки = ?(ЦельАвторизации = "", НСтр("ru='Отказ при получении токена доступа на сервере Распределенного реестра ФНС России'"), ЦельАвторизации);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, СтруктураОтвета, ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.СтруктураОтвета = СтруктураОтвета;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
КонецПопытки;
@@ -2985,8 +2988,12 @@
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ЗаголовокОшибки = ?(ЦельАвторизации = "", НСтр("ru='Распределенный реестр ФНС России не предоставил токен для авторизации'"), ЦельАвторизации);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, СтруктураОтвета, ДополнительныеФайлы, ЗаголовокОшибки,
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки,
НСтр("ru='Распределенный реестр ФНС России не предоставил токен для авторизации.'"));
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.СтруктураОтвета = СтруктураОтвета;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
КонецЕсли;
@@ -3055,8 +3062,10 @@
ПараметрыФайловДляРасследования.Запрос = ЗапросHTTP;
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, , ДополнительныеФайлы, ЗаголовокОшибки,
ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
@@ -3075,8 +3084,11 @@
ПараметрыФайловДляРасследования.Запрос = ЗапросHTTP;
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, СтруктураОтвета, ДополнительныеФайлы,
НСтр("ru='Не удается получить номер доверенности'"), ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.СтруктураОтвета = СтруктураОтвета;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
КонецПопытки;
@@ -3087,8 +3099,12 @@
ПараметрыФайловДляРасследования.Запрос = ЗапросHTTP;
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, СтруктураОтвета, ДополнительныеФайлы, ЗаголовокОшибки,
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки,
НСтр("ru='Распределенный реестр ФНС России не выдал номер доверенности.'"));
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.СтруктураОтвета = СтруктураОтвета;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
КонецЕсли;
@@ -3198,7 +3214,7 @@
СоединениеHTTP = СоединениеССерверомИнтернета(
СвойстваСервераМЧДРР.АдресСервераБезАутентификации);
ОтветHTTP = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);
ОтветHTTP = СоединениеHTTP.ВызватьHTTPМетод("POST", ЗапросHTTP);
Исключение
ПредставлениеОшибки = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ПараметрыФайловДляРасследования = ПараметрыФайловДляРасследования();
@@ -3206,7 +3222,10 @@
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ПараметрыФайловДляРасследования.СоединениеHTTP = СоединениеHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, , ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
КонецПопытки;
@@ -3228,7 +3247,11 @@
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ПараметрыФайловДляРасследования.СоединениеHTTP = СоединениеHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, СтруктураОтвета, ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.СтруктураОтвета = СтруктураОтвета;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
@@ -3240,8 +3263,12 @@
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ПараметрыФайловДляРасследования.СоединениеHTTP = СоединениеHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, СтруктураОтвета, ДополнительныеФайлы, ЗаголовокОшибки,
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки,
НСтр("ru='Распределенный реестр ФНС России не предоставил идентификационные данные.'"));
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.СтруктураОтвета = СтруктураОтвета;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
@@ -3307,7 +3334,10 @@
ПараметрыФайловДляРасследования.Запрос = ЗапросHTTP;
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, , ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
КонецПопытки;
@@ -3330,7 +3360,11 @@
ПараметрыФайловДляРасследования.Запрос = ЗапросHTTP;
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, СтруктураОтвета, ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.СтруктураОтвета = СтруктураОтвета;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
КонецПопытки;
@@ -3342,8 +3376,12 @@
ПараметрыФайловДляРасследования.Запрос = ЗапросHTTP;
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, СтруктураОтвета, ДополнительныеФайлы, ЗаголовокОшибки,
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки,
НСтр("ru='Распределенный реестр ФНС России не вернул данные о статусе транзакции.'"));
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.СтруктураОтвета = СтруктураОтвета;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
КонецЕсли;
@@ -3352,7 +3390,7 @@
КонецФункции
Функция ПолучитьЧастичныеДанныеДоверенностиМЧДРР(НомерДоверенности, ТокенДоступа = "", ЦельПолучения = "") Экспорт
Функция ЧастичныеДанныеДоверенностиМЧДРР(НомерДоверенности, ТокенДоступа = "", ЦельПолучения = "") Экспорт
СвойстваСервераМЧДРР = СвойстваСервераМЧДРР();
@@ -3412,7 +3450,10 @@
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ПараметрыФайловДляРасследования.СоединениеHTTP = СоединениеHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, , ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
ПараметрыОшибкиМЧДРР.ПараметрыТекстаОшибки.Вставить("НомерДоверенности", НомерДоверенности);
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
@@ -3453,7 +3494,10 @@
ПараметрыФайловДляРасследования.Запрос = ЗапросHTTP;
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, , ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
ПараметрыОшибкиМЧДРР.ПараметрыТекстаОшибки.Вставить("НомерДоверенности", НомерДоверенности);
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
@@ -3466,8 +3510,12 @@
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ПараметрыФайловДляРасследования.СоединениеHTTP = СоединениеHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, СтруктураОтвета , ДополнительныеФайлы, ЗаголовокОшибки,
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки,
НСтр("ru='Распределенный реестр ФНС России не предоставил частичных данных доверенности.'"));
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.СтруктураОтвета = СтруктураОтвета;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
ПараметрыОшибкиМЧДРР.ПараметрыТекстаОшибки.Вставить("НомерДоверенности", НомерДоверенности);
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
@@ -3477,7 +3525,7 @@
КонецФункции
Функция ПолучитьПолныеДанныеДоверенностиМЧДРР(НомерДоверенности, ИННДоверителя, ТокенДоступа = "", ЦельПолучения = "") Экспорт
Функция ПолныеДанныеДоверенностиМЧДРР(НомерДоверенности, ИННДоверителя, ТокенДоступа = "", ЦельПолучения = "")
СвойстваСервераМЧДРР = СвойстваСервераМЧДРР();
@@ -3536,7 +3584,10 @@
ПараметрыФайловДляРасследования.Запрос = ЗапросHTTP;
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, , ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
ПараметрыОшибкиМЧДРР.ПараметрыТекстаОшибки.Вставить("НомерДоверенности", НомерДоверенности);
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
@@ -3558,7 +3609,10 @@
ПараметрыФайловДляРасследования.Запрос = ЗапросHTTP;
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, , ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
ПараметрыОшибкиМЧДРР.ПараметрыТекстаОшибки.Вставить("НомерДоверенности", НомерДоверенности);
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
@@ -3580,7 +3634,11 @@
ПараметрыФайловДляРасследования.Запрос = ЗапросHTTP;
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, СтруктураОтвета, ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.СтруктураОтвета = СтруктураОтвета;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
ПараметрыОшибкиМЧДРР.ПараметрыТекстаОшибки.Вставить("НомерДоверенности", НомерДоверенности);
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
@@ -3592,8 +3650,12 @@
ПараметрыФайловДляРасследования.Запрос = ЗапросHTTP;
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, СтруктураОтвета, ДополнительныеФайлы, ЗаголовокОшибки,
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки,
НСтр("ru='Распределенный реестр ФНС России не предоставил полных данных доверенности и не сообщил о статусе запроса данных.'"));
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.СтруктураОтвета = СтруктураОтвета;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
ПараметрыОшибкиМЧДРР.ПараметрыТекстаОшибки.Вставить("НомерДоверенности", НомерДоверенности);
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
@@ -3607,7 +3669,7 @@
ЗаголовокОшибки = НСтр("ru='Не удалось загрузить доверенность'");
РезультатПолучения = ПолучитьПолныеДанныеДоверенностиМЧДРР(НомерДоверенности, ИННДоверителя, ТокенДоступа, ЗаголовокОшибки);
РезультатПолучения = ПолныеДанныеДоверенностиМЧДРР(НомерДоверенности, ИННДоверителя, ТокенДоступа, ЗаголовокОшибки);
ПолныеДанныеДоверенности = Новый Структура;
ПолныеДанныеДоверенности.Вставить("Ошибка", РезультатПолучения.Ошибка);
Если ЗначениеЗаполнено(РезультатПолучения.Ошибка) Тогда
@@ -3633,7 +3695,7 @@
РезультатЗагрузки = Справочники.МашиночитаемыеДоверенности.ЗагрузитьДоверенностиВИнформационнуюБазу(ФайлыДляЗагрузки);
Если ЗначениеЗаполнено(РезультатЗагрузки.ТекстОшибки) Тогда
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(, , , , ЗаголовокОшибки, РезультатЗагрузки.ТекстОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, РезультатЗагрузки.ТекстОшибки);
ПолныеДанныеДоверенности.Вставить("Ошибка", ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР));
Возврат ПолныеДанныеДоверенности;
КонецЕсли;
@@ -3730,7 +3792,7 @@
СоединениеHTTP = СоединениеССерверомИнтернета(
СвойстваСервераМЧДРР.АдресСервераБезАутентификации);
ОтветHTTP = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);
ОтветHTTP = СоединениеHTTP.ВызватьHTTPМетод("POST", ЗапросHTTP);
Исключение
ПредставлениеОшибки = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ПараметрыФайловДляРасследования = ПараметрыФайловДляРасследования();
@@ -3738,7 +3800,10 @@
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ПараметрыФайловДляРасследования.СоединениеHTTP = СоединениеHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, , ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
КонецПопытки;
@@ -3757,7 +3822,10 @@
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ПараметрыФайловДляРасследования.СоединениеHTTP = СоединениеHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, , ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
@@ -3770,7 +3838,11 @@
ПараметрыФайловДляРасследования.Ответ = ОтветHTTP;
ПараметрыФайловДляРасследования.СоединениеHTTP = СоединениеHTTP;
ДополнительныеФайлы = ФайлыДляРасследования(ПараметрыФайловДляРасследования);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗапросHTTP, ОтветHTTP, СтруктураОтвета, ДополнительныеФайлы, ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР = ПараметрыОшибкиМЧДРР(ЗаголовокОшибки, ПредставлениеОшибки);
ПараметрыОшибкиМЧДРР.ЗапросHTTP = ЗапросHTTP;
ПараметрыОшибкиМЧДРР.ОтветHTTP = ОтветHTTP;
ПараметрыОшибкиМЧДРР.СтруктураОтвета = СтруктураОтвета;
ПараметрыОшибкиМЧДРР.ДополнительныеФайлы = ДополнительныеФайлы;
Результат.Ошибка = ПолучитьИЗаписатьОшибкуМЧДРР(ПараметрыОшибкиМЧДРР);
Возврат Результат;
КонецЕсли;
@@ -23,19 +23,7 @@
ИмяФайлаВыгрузки, ДанныеИлиАдресВыгрузки, ДанныеИлиАдресПодписи, ТокенДоступа, НомерДоверенности);
КонецФункции
Функция ПолучитьСтатусТранзакцииМЧДРР(ИдентификаторТранзакции, ТокенДоступа = "", НомерДоверенности = "", ЦельПолучения = "") Экспорт
Возврат МашиночитаемыеДоверенностиФНССлужебный.ПолучитьСтатусТранзакцииМЧДРР(ИдентификаторТранзакции, ТокенДоступа, НомерДоверенности, ЦельПолучения);
КонецФункции
Функция ПолучитьЧастичныеДанныеДоверенностиМЧДРР(НомерДоверенности, ТокенДоступа = "", ЦельПолучения = "") Экспорт
Возврат МашиночитаемыеДоверенностиФНССлужебный.ПолучитьЧастичныеДанныеДоверенностиМЧДРР(НомерДоверенности, ТокенДоступа, ЦельПолучения);
КонецФункции
Функция ПолучитьПолныеДанныеДоверенностиМЧДРР(НомерДоверенности, ИННДоверителя, ТокенДоступа = "", ЦельПолучения = "") Экспорт
Возврат МашиночитаемыеДоверенностиФНССлужебный.ПолучитьПолныеДанныеДоверенностиМЧДРР(НомерДоверенности, ИННДоверителя, ТокенДоступа, ЦельПолучения);
КонецФункции
Функция ЗагрузитьДоверенностьИзРеестра(НомерДоверенности, ИННДоверителя, ТокенДоступа = "") Экспорт
Возврат МашиночитаемыеДоверенностиФНССлужебный.ЗагрузитьДоверенностьИзРеестра(НомерДоверенности, ИННДоверителя, ТокенДоступа);
КонецФункции
@@ -8,7 +8,7 @@
#Область СлужебныйПрограммныйИнтерфейс
// Результат проверки МЧДДля подписания.
// Результат проверки МЧД для подписания.
//
// Параметры:
// Доверенность - СправочникСсылка.МашиночитаемыеДоверенности
@@ -32,7 +32,7 @@
КонецФункции
// Результат проверки МЧДДля подписания.
// Результат проверки подписи по МЧД.
//
// Параметры:
// Доверенность - СправочникСсылка.МашиночитаемыеДоверенности
@@ -47,6 +47,9 @@
Элементы.ГруппаОбработкаЗагрузкаКурсовВалют.Видимость = Ложь;
КонецЕсли;
Элементы.ГруппаОбсуждения.Видимость = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения")
И Пользователи.ЭтоПолноправныйПользователь();
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.СклонениеПредставленийОбъектов") Тогда
Элементы.ГруппаСклонения.Видимость =
Не Форма.РазделениеВключено
@@ -113,20 +116,16 @@
КонецЕсли;
ВидимостьГруппыВнешниеКомпоненты = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВнешниеКомпоненты") Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВнешниеКомпоненты")
И Пользователи.ЭтоПолноправныйПользователь() Тогда
МодульВнешниеКомпонентыСлужебный = ОбщегоНазначения.ОбщийМодуль("ВнешниеКомпонентыСлужебный");
ВидимостьГруппыВнешниеКомпоненты = МодульВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаСПортала();
КонецЕсли;
Элементы.ГруппаВнешниеКомпоненты.Видимость = ВидимостьГруппыВнешниеКомпоненты;
НастройкиПрограммыПереопределяемый.ИнтернетПоддержкаИСервисыПриСозданииНаСервере(Форма);
Элементы.ГруппаОбсуждения.Видимость = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения");
КонецПроцедуры
// Сохраняет новое значение константы панели администрирования "Интернет-поддержка и сервисы" БСП и БИП.
@@ -45,7 +45,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.9.179";
Описание.Версия = "3.1.9.199";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -8503,9 +8503,17 @@
Для Каждого ОписаниеТипа Из ОчищаемыеТипы Цикл
Отбор = Отбор + ?(Отбор = "", "", "
| ИЛИ ");
Отбор = Отбор + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"ТИПЗНАЧЕНИЯ(ТекущаяТаблица.%1) = ТИП(%2)",
ОписаниеПоля.Ключ, ОписаниеТипа.Значение);
Если СтрНайти(ОписаниеТипа.Значение, ".") > 0 Тогда
Отбор = Отбор + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"ТИПЗНАЧЕНИЯ(ТекущаяТаблица.%1) = ТИП(%2)",
ОписаниеПоля.Ключ, ОписаниеТипа.Значение);
Иначе
ИмяПараметра = "Тип" + ОписаниеТипа.Значение;
Запрос.УстановитьПараметр(ИмяПараметра, Тип(ОписаниеТипа.Значение));
Отбор = Отбор + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"ТИПЗНАЧЕНИЯ(ТекущаяТаблица.%1) = &%2",
ОписаниеПоля.Ключ, ИмяПараметра);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Для Каждого ОписаниеТипа Из ОчищаемыеЗначения Цикл
@@ -8706,6 +8714,7 @@
Контекст.Вставить("ПорядокВидовОбъектов", ПорядокВидовОбъектов);
Контекст.Вставить("РегистрацияИзменений", РегистрацияИзменений);
Контекст.Вставить("ВидыРегистровДляОчистки", ВидыРегистровДляОчистки);
Контекст.Вставить("ИменаПростыхТипов", ИменаПростыхТиповПолейТаблиц());
ДобавитьУдаляемыеТипыПолейРегистров(Контекст, "РегистрыСведений");
ДобавитьУдаляемыеТипыПолейРегистров(Контекст, "РегистрыНакопления");
@@ -8817,6 +8826,20 @@
КонецФункции
Функция ИменаПростыхТиповПолейТаблиц();
Имена = Новый Соответствие;
Имена.Вставить(Тип("Число"), "Число");
Имена.Вставить(Тип("Строка"), "Строка");
Имена.Вставить(Тип("Дата"), "Дата");
Имена.Вставить(Тип("Булево"), "Булево");
Имена.Вставить(Тип("ХранилищеЗначения"), "ХранилищеЗначения");
Имена.Вставить(Тип("УникальныйИдентификатор"), "УникальныйИдентификатор");
Возврат Имена;
КонецФункции
// Для переопределения с помощью расширения при необходимости.
//
// Параметры:
@@ -8976,7 +8999,22 @@
Иначе
ИмяТаблицы = ИменаТаблицПоТипам.Получить(Тип);
Если ИмяТаблицы = Неопределено Тогда
ИмяТаблицы = Метаданные.НайтиПоТипу(Тип).ПолноеИмя();
ИмяТаблицы = Контекст.ИменаПростыхТипов.Получить(Тип);
Если ИмяТаблицы = Неопределено Тогда
МетаданныеТаблицы = Метаданные.НайтиПоТипу(Тип);
Если МетаданныеТаблицы = Неопределено Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалость найти объект метаданных по типу ""%1"" сокращаемый в поле ""%2"".'"),
Строка(Тип), ПолноеИмяПоля);
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Очистка устаревших данных.Ошибка при подготовке списка очищаемых таблиц'",
ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки);
Продолжить;
Иначе
ИмяТаблицы = МетаданныеТаблицы.ПолноеИмя();
КонецЕсли;
КонецЕсли;
ИменаТаблицПоТипам.Вставить(Тип, ИмяТаблицы);
КонецЕсли;
Если Тип = ТипИлиЗначение Тогда
@@ -10261,6 +10299,17 @@
КонецПроцедуры
Функция ВыводитьПроблемыСДанными() Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета") Тогда
МодульКонтрольВеденияУчета = ОбщегоНазначения.ОбщийМодуль("КонтрольВеденияУчета");
Возврат МодульКонтрольВеденияУчета.ПодсистемаДоступна();
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
Функция КоличествоПроблемСДанными() Экспорт
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета")
@@ -11247,6 +11296,7 @@
ПараметрыОтметкиКОбработке.Очередь = ОписаниеОбрабатываемыхДанных.Очередь;
ПараметрыОтметкиКОбработке.ИмяОбработчика = ОписаниеОбрабатываемыхДанных.ИмяОбработчика;
ПараметрыОтметкиКОбработке.ВерсияПодсистемыНаНачалоОбновления = ОписаниеОбрабатываемыхДанных.ВерсияПодсистемыНаНачалоОбновления;
ПараметрыОтметкиКОбработке.Вставить("ДанныеОбработчика", Новый Соответствие);
МногопоточныйРежим = ЭтоОписаниеДанныхМногопоточногоОбработчика(ОписаниеОбрабатываемыхДанных);
@@ -229,7 +229,7 @@
// Если псевдоним не является ключом.
// Поиск ошибки доступности полей.
Результат = НайтиОшибкуДоступностиРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты);
Результат = ПроверитьСуществованиеРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты);
Если Результат.Ошибка Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Неверный второй параметр %1 в функции %2: %3'"),
@@ -358,7 +358,7 @@
КонецЕсли;
// Поиск ошибки доступности полей.
Результат = НайтиОшибкуДоступностиРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты);
Результат = ПроверитьСуществованиеРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты);
Если Результат.Ошибка Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Неверный второй параметр %1 в функции %2: %3'"),
@@ -385,6 +385,8 @@
//
// Если необходимо зачитать реквизит независимо от прав текущего пользователя,
// то следует использовать предварительный переход в привилегированный режим.
//
// Если передано имя несуществующего реквизита, то вызывается исключение "Поле объекта не существует".
//
// Параметры:
// Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить.
@@ -424,6 +426,8 @@
// Если необходимо зачитать реквизит независимо от прав текущего пользователя,
// то следует использовать предварительный переход в привилегированный режим.
//
// Если передано имя несуществующего реквизита, то вызывается исключение "Поле объекта не существует".
//
// Параметры:
// Ссылки - Массив из ЛюбаяСсылка
// - ФиксированныйМассив из ЛюбаяСсылка - ссылки на объекты.
@@ -599,7 +603,7 @@
// Поиск ошибки доступности полей.
СписокОшибок = Новый Массив;
Для Каждого ПолноеИмяОбъектаМетаданных Из ИменаОбъектовМетаданных Цикл
Результат = НайтиОшибкуДоступностиРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты);
Результат = ПроверитьСуществованиеРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты);
Если Результат.Ошибка Тогда
СписокОшибок.Добавить(Результат.ОписаниеОшибки);
КонецЕсли;
@@ -633,6 +637,8 @@
//
// Если необходимо зачитать реквизит независимо от прав текущего пользователя,
// то следует использовать предварительный переход в привилегированный режим.
//
// Если передано имя несуществующего реквизита, то вызывается исключение "Поле объекта не существует".
//
// Параметры:
// МассивСсылок - Массив из ЛюбаяСсылка
@@ -669,6 +675,8 @@
// Добавляет или изменяет значение реквизита в объекте.
//
// Если передано имя несуществующего реквизита, то вызывается исключение.
//
// Параметры:
// Объект - СправочникОбъект
// - ДокументОбъект
@@ -684,6 +692,8 @@
// Добавляет или изменяет значения реквизитов в объекте.
//
// Если передано имя несуществующего реквизита, то вызывается исключение.
//
// Параметры:
// Объект - СправочникОбъект
// - ДокументОбъект
@@ -6841,7 +6851,7 @@
#Область ЗначенияРеквизитов
// Выполняет поиск проверяемых выражений среди реквизитов объекта метаданных.
// Проверяет существование указанных реквизитов у объекта метаданных.
//
// Параметры:
// ПолноеИмяОбъектаМетаданных - Строка - полное имя проверяемого объекта.
@@ -6858,13 +6868,13 @@
// Реквизиты.Добавить("Номер");
// Реквизиты.Добавить("Валюта.НаименованиеПолное");
//
// Результат = ОбщегоНазначения.НайтиОшибкуДоступностиРеквизитовОбъекта("Документ._ДемоЗаказПокупателя", Реквизиты);
// Результат = ОбщегоНазначения.ПроверитьСуществованиеРеквизитовОбъекта("Документ._ДемоЗаказПокупателя", Реквизиты);
//
// Если Результат.Ошибка Тогда
// ВызватьИсключение Результат.ОписаниеОшибки;
// КонецЕсли;
//
Функция НайтиОшибкуДоступностиРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, ПроверяемыеВыражения)
Функция ПроверитьСуществованиеРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, ПроверяемыеВыражения)
МетаданныеОбъекта = ОбъектМетаданныхПоПолномуИмени(ПолноеИмяОбъектаМетаданных);
Если МетаданныеОбъекта = Неопределено Тогда
@@ -6898,7 +6908,7 @@
КонецФункции
// Используется в НайтиОшибкуДоступностиРеквизитовОбъекта.
// Используется в ПроверитьСуществованиеРеквизитовОбъекта.
// Выполняет проверку доступности поля проверяемого выражения в источнике оператора схемы запроса.
//
Функция ПолеИсточникаСхемыЗапросаДоступно(ИсточникОператора, ПроверяемоеВыражение)
@@ -696,36 +696,17 @@
ОписаниеНастройки = ОтчетыКлиентСервер.НайтиДоступнуюНастройку(
КомпоновщикНастроек.Настройки, ЭлементОсновнойНастройки);
// @skip-check query-in-loop - запрос к разным таблицам.
УстановитьДоступныеЗначенияНастроек(Форма, Отчет, КомпоновщикНастроек, ЭлементПользовательскойНастройки, ЭлементОсновнойНастройки, ОписаниеНастройки);
СвойстваНастройки = СвойстваЭлементаПользовательскихНастроек(
КомпоновщикНастроек, ЭлементПользовательскойНастройки, ЭлементОсновнойНастройки, ОписаниеНастройки);
// Механизмы расширения.
ИнтеграцияПодсистемБСП.ПриОпределенииПараметровВыбораВариантыОтчетов(Неопределено, СвойстваНастройки);
// Глобальные настройки вывода типов.
ОтчетыПереопределяемый.ПриОпределенииПараметровВыбора(Неопределено, СвойстваНастройки);
// Локальное переопределение для отчета.
Если Форма.НастройкиОтчета.События.ПриОпределенииПараметровВыбора Тогда
Отчет.ПриОпределенииПараметровВыбора(Форма, СвойстваНастройки);
КонецЕсли;
// Автоматическое заполнение.
Если СвойстваНастройки.ЗапросЗначенийВыбора.Текст <> "" Тогда
// @skip-check query-in-loop - запрос к разным таблицам.
ДобавляемыеЗначения = СвойстваНастройки.ЗапросЗначенийВыбора.Выполнить().Выгрузить().ВыгрузитьКолонку(0);
Для Каждого Элемент Из ДобавляемыеЗначения Цикл
ОтчетыКлиентСервер.ДобавитьУникальноеЗначениеВСписок(
СвойстваНастройки.ЗначенияДляВыбора, Элемент, Неопределено, Ложь);
КонецЦикла;
СвойстваНастройки.ЗначенияДляВыбора.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
КонецЕсли;
Если ТипЗнч(СвойстваНастройки.ЗначенияДляВыбора) = Тип("СписокЗначений")
И СвойстваНастройки.ЗначенияДляВыбора.Количество() > 0 Тогда
ОписаниеНастройки.ДоступныеЗначения = СвойстваНастройки.ЗначенияДляВыбора;
Если ТипЗнч(ЭлементОсновнойНастройки) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
ОписаниеНастройки = КомпоновщикНастроек.Настройки.ДоступныеПоляОтбораЭлементовСтруктуры.НайтиПоле(ЭлементОсновнойНастройки.ЛевоеЗначение);
Если ОписаниеНастройки <> Неопределено Тогда
// @skip-check query-in-loop - запрос к разным таблицам.
УстановитьДоступныеЗначенияНастроек(Форма, Отчет, КомпоновщикНастроек, ЭлементПользовательскойНастройки, ЭлементОсновнойНастройки, ОписаниеНастройки);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
@@ -3832,4 +3813,38 @@
КонецЦикла;
КонецПроцедуры
Процедура УстановитьДоступныеЗначенияНастроек(Форма, Отчет, КомпоновщикНастроек, ЭлементПользовательскойНастройки, ЭлементОсновнойНастройки, ОписаниеНастройки)
СвойстваНастройки = СвойстваЭлементаПользовательскихНастроек(
КомпоновщикНастроек, ЭлементПользовательскойНастройки, ЭлементОсновнойНастройки, ОписаниеНастройки);
// Механизмы расширения.
ИнтеграцияПодсистемБСП.ПриОпределенииПараметровВыбораВариантыОтчетов(Неопределено, СвойстваНастройки);
// Глобальные настройки вывода типов.
ОтчетыПереопределяемый.ПриОпределенииПараметровВыбора(Неопределено, СвойстваНастройки);
// Локальное переопределение для отчета.
Если Форма.НастройкиОтчета.События.ПриОпределенииПараметровВыбора Тогда
Отчет.ПриОпределенииПараметровВыбора(Форма, СвойстваНастройки);
КонецЕсли;
// Автоматическое заполнение.
Если СвойстваНастройки.ЗапросЗначенийВыбора.Текст <> "" Тогда
// @skip-check query-in-loop - запрос к разным таблицам.
ДобавляемыеЗначения = СвойстваНастройки.ЗапросЗначенийВыбора.Выполнить().Выгрузить().ВыгрузитьКолонку(0);
Для Каждого Элемент Из ДобавляемыеЗначения Цикл
ОтчетыКлиентСервер.ДобавитьУникальноеЗначениеВСписок(
СвойстваНастройки.ЗначенияДляВыбора, Элемент, Неопределено, Ложь);
КонецЦикла;
СвойстваНастройки.ЗначенияДляВыбора.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
КонецЕсли;
Если ТипЗнч(СвойстваНастройки.ЗначенияДляВыбора) = Тип("СписокЗначений")
И СвойстваНастройки.ЗначенияДляВыбора.Количество() > 0 Тогда
ОписаниеНастройки.ДоступныеЗначения = СвойстваНастройки.ЗначенияДляВыбора;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -22,20 +22,15 @@
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("НаборСсылок", МассивСсылок(ОбъединяемыеЭлементы));
ПараметрыОткрытияФормы = Новый Структура("Владелец, Уникальность, Окно, НавигационнаяСсылка, ОписаниеОповещенияОЗакрытии, РежимОткрытияОкна");
ПараметрыОткрытияФормы = Новый Структура("Владелец,Уникальность,Окно,НавигационнаяСсылка,ОписаниеОповещенияОЗакрытии,РежимОткрытияОкна");
Если ДополнительныеПараметры <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(ПараметрыОткрытияФормы, ДополнительныеПараметры);
КонецЕсли;
ОткрытьФорму(
"Обработка.ЗаменаИОбъединениеЭлементов.Форма.ОбъединениеЭлементов",
ПараметрыФормы,
ПараметрыОткрытияФормы.Владелец,
ПараметрыОткрытияФормы.Уникальность,
ПараметрыОткрытияФормы.Окно,
ПараметрыОткрытияФормы.НавигационнаяСсылка,
ПараметрыОткрытияФормы.ОписаниеОповещенияОЗакрытии,
ПараметрыОткрытияФормы.РежимОткрытияОкна);
ОткрытьФорму("Обработка.ЗаменаИОбъединениеЭлементов.Форма.ОбъединениеЭлементов", ПараметрыФормы,
ПараметрыОткрытияФормы.Владелец, ПараметрыОткрытияФормы.Уникальность,
ПараметрыОткрытияФормы.Окно, ПараметрыОткрытияФормы.НавигационнаяСсылка,
ПараметрыОткрытияФормы.ОписаниеОповещенияОЗакрытии, ПараметрыОткрытияФормы.РежимОткрытияОкна);
КонецПроцедуры
@@ -52,22 +47,17 @@
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("НаборСсылок", МассивСсылок(ЗаменяемыеЭлементы));
ПараметрыФормы.Вставить("ОткрытаПоСценарию");
ПараметрыФормы.Вставить("ОткрытаПоСценарию", Истина);
ПараметрыОткрытияФормы = Новый Структура("Владелец, Уникальность, Окно, НавигационнаяСсылка, ОписаниеОповещенияОЗакрытии, РежимОткрытияОкна");
ПараметрыОткрытияФормы = Новый Структура("Владелец,Уникальность,Окно,НавигационнаяСсылка,ОписаниеОповещенияОЗакрытии,РежимОткрытияОкна");
Если ДополнительныеПараметры <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(ПараметрыОткрытияФормы, ДополнительныеПараметры);
КонецЕсли;
ОткрытьФорму(
"Обработка.ЗаменаИОбъединениеЭлементов.Форма.ЗаменаЭлементов",
ПараметрыФормы,
ПараметрыОткрытияФормы.Владелец,
ПараметрыОткрытияФормы.Уникальность,
ПараметрыОткрытияФормы.Окно,
ПараметрыОткрытияФормы.НавигационнаяСсылка,
ПараметрыОткрытияФормы.ОписаниеОповещенияОЗакрытии,
ПараметрыОткрытияФормы.РежимОткрытияОкна);
ОткрытьФорму("Обработка.ЗаменаИОбъединениеЭлементов.Форма.ЗаменаЭлементов",
ПараметрыФормы, ПараметрыОткрытияФормы.Владелец, ПараметрыОткрытияФормы.Уникальность,
ПараметрыОткрытияФормы.Окно, ПараметрыОткрытияФормы.НавигационнаяСсылка,
ПараметрыОткрытияФормы.ОписаниеОповещенияОЗакрытии, ПараметрыОткрытияФормы.РежимОткрытияОкна);
КонецПроцедуры
@@ -80,8 +70,8 @@
// - Массив из ЛюбаяСсылка
// - СписокЗначений - список элементов для анализа.
// Также можно передать произвольную коллекцию элементов с реквизитом "Ссылка".
// ПараметрыОткрытия - Структура - параметры открытия формы. Состоит из необязательных полей.
// Владелец, Уникальность, Окно, НавигационнаяСсылка, ОписаниеОповещенияОЗакрытии, РежимОткрытияОкна,
// ПараметрыОткрытия - Структура - параметры открытия формы. Состоит из необязательных полей Владелец,
// Уникальность, Окно, НавигационнаяСсылка, ОписаниеОповещенияОЗакрытии, РежимОткрытияОкна,
// соответствующих параметрам функции ОткрытьФорму.
//
Процедура ПоказатьМестаИспользования(Знач Элементы, Знач ПараметрыОткрытия = Неопределено) Экспорт
@@ -90,20 +80,15 @@
ПараметрыФормы.Вставить("Отбор", Новый Структура);
ПараметрыФормы.Отбор.Вставить("НаборСсылок", МассивСсылок(Элементы));
ПараметрыОткрытияФормы = Новый Структура("Владелец, Уникальность, Окно, НавигационнаяСсылка, ОписаниеОповещенияОЗакрытии, РежимОткрытияОкна");
ПараметрыОткрытияФормы = Новый Структура("Владелец,Уникальность,Окно,НавигационнаяСсылка,ОписаниеОповещенияОЗакрытии,РежимОткрытияОкна");
Если ПараметрыОткрытия <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(ПараметрыОткрытияФормы, ПараметрыОткрытия);
КонецЕсли;
ОткрытьФорму(
"Отчет.МестаИспользованияСсылок.Форма",
ПараметрыФормы,
ПараметрыОткрытияФормы.Владелец,
ПараметрыОткрытияФормы.Уникальность,
ПараметрыОткрытияФормы.Окно,
ПараметрыОткрытияФормы.НавигационнаяСсылка,
ПараметрыОткрытияФормы.ОписаниеОповещенияОЗакрытии,
ПараметрыОткрытияФормы.РежимОткрытияОкна);
ОткрытьФорму("Отчет.МестаИспользованияСсылок.Форма", ПараметрыФормы,
ПараметрыОткрытияФормы.Владелец, ПараметрыОткрытияФормы.Уникальность,
ПараметрыОткрытияФормы.Окно, ПараметрыОткрытияФормы.НавигационнаяСсылка,
ПараметрыОткрытияФормы.ОписаниеОповещенияОЗакрытии, ПараметрыОткрытияФормы.РежимОткрытияОкна);
КонецПроцедуры
@@ -292,7 +292,7 @@
|Защищенное соединение: %2
|Таймаут: %3'"),
ТекстОшибки,
Формат(Соединение.Защищенное, НСтр("ru = 'БЛ=Нет; БИ=Да'")),
Формат(Соединение.ЗащищенноеСоединение, НСтр("ru = 'БЛ=Нет; БИ=Да'")),
Формат(Соединение.Таймаут, "ЧГ=0"));
ЗаписатьОшибкуВЖурналРегистрации(СообщениеОбОшибке);
@@ -491,7 +491,7 @@
|Таймаут: %3
|Аутентификация ОС: %4'"),
ТекстОшибки,
Формат(Соединение.Защищенное, НСтр("ru = 'БЛ=Нет; БИ=Да'")),
Формат(Соединение.ЗащищенноеСоединение, НСтр("ru = 'БЛ=Нет; БИ=Да'")),
Формат(Соединение.Таймаут, "ЧГ=0"),
Формат(Соединение.ИспользоватьАутентификациюОС, НСтр("ru = 'БЛ=Нет; БИ=Да'")));
@@ -8138,10 +8138,6 @@
УстановитьПривилегированныйРежим(Истина);
Настройки = НастройкиВхода();
Если Не ЗначениеЗаполнено(Настройки.Пользователи.ПросрочкаРаботыВПрограммеДоЗапрещенияВхода)
И Не ЗначениеЗаполнено(Настройки.ВнешниеПользователи.ПросрочкаРаботыВПрограммеДоЗапрещенияВхода) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ПустаяДата", '00010101');
@@ -721,11 +721,10 @@
Муниципальный = ?(ДополнительнаяИнформацияАдреса.Свойство("Муниципальный"), Булево(ДополнительнаяИнформацияАдреса.Муниципальный), Ложь);
Сведения = Новый Структура();
Сведения.Вставить("Идентификатор", ИдентификаторАдреса);
Сведения.Вставить("Муниципальный", Муниципальный);
МодульАдресныйКлассификаторСлужебный = ОбщегоНазначения.ОбщийМодуль("АдресныйКлассификаторСлужебный");
Сведения = МодульАдресныйКлассификаторСлужебный.СведенияОбАдресномОбъекта(ИдентификаторАдреса);
Сведения.Муниципальный = Муниципальный;
ПолученныеАдрес = МодульАдресныйКлассификаторСлужебный.АктуальныеАдресныеСведения(Сведения);
Если ПолученныеАдрес.Отказ Тогда
@@ -65,4 +65,22 @@
КонецПроцедуры
// Возвращаемое значение:
// Структура:
// * ЗагруженныеДанные - Булево
// * Идентификатор - УникальныйИдентификатор
// * Муниципальный - Булево
// * Адрес - Структура
//
Функция СведенияОбАдресномОбъекта() Экспорт
СведенияОбАдресе = Новый Структура;
СведенияОбАдресе.Вставить("ЗагруженныеДанные", Ложь);
СведенияОбАдресе.Вставить("Идентификатор", Новый УникальныйИдентификатор);
СведенияОбАдресе.Вставить("Муниципальный", Ложь);
СведенияОбАдресе.Вставить("Адрес", Новый Структура);
Возврат СведенияОбАдресе;
КонецФункции
#КонецОбласти
@@ -1532,6 +1532,14 @@
"НастройкиСканирования/ПутьКПрограммеКонвертации",
ИдентификаторКлиента, ""); // ImageMagick
НастройкиСканированияПользователя.КаталогЖурналаСканирования = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
"НастройкиСканирования/КаталогЖурналаСканирования",
ИдентификаторКлиента, "");
НастройкиСканированияПользователя.ИспользоватьКаталогЖурналаСканирования = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
"НастройкиСканирования/ИспользоватьКаталогЖурналаСканирования",
ИдентификаторКлиента, Ложь);
Возврат НастройкиСканированияПользователя;
КонецФункции
@@ -1572,6 +1580,10 @@
НастройкиСканированияПользователя.СжатиеTIFF, ИдентификаторКлиента));
МассивСтруктур.Добавить(СформироватьНастройку("ПутьКПрограммеКонвертации",
НастройкиСканированияПользователя.ПутьКПрограммеКонвертации, ИдентификаторКлиента));
МассивСтруктур.Добавить(СформироватьНастройку("КаталогЖурналаСканирования",
НастройкиСканированияПользователя.КаталогЖурналаСканирования, ИдентификаторКлиента));
МассивСтруктур.Добавить(СформироватьНастройку("ИспользоватьКаталогЖурналаСканирования",
НастройкиСканированияПользователя.ИспользоватьКаталогЖурналаСканирования, ИдентификаторКлиента));
Если ЗначениеЗаполнено(НастройкиСканированияПользователя.ФорматХраненияОдностраничный) Тогда
ФорматХраненияОдностраничный = НастройкиСканированияПользователя.ФорматХраненияОдностраничный;
@@ -713,38 +713,42 @@
// * Разрешение - Число - разрешение DPI.
// * Цветность - Число - принимает значения 0 (черно-белое), 1 (оттенки серого), 2 (цветное).
// * Поворот - Число - угол поворота в градусах, допустимы значения 0, 90, 180, 270. Не все сканеры поддерживают эту настройку.
// * РазмерБумаги - Число - не все сканеры поддерживают эту настройку. Принимает значения:
// 0 - не задано
// 11 - А3
// 1 - А4
// 5 - А5
// 6 - B4
// 2 - B5
// 7 - B6
// 14 - C4
// 15 - C5
// 16 - C6
// 3 - USLetter
// 4 - USLegal
// 10 - USExecutive
// * РазмерБумаги - Число - не все сканеры поддерживают эту настройку. Принимает значения
// 0 - не задано
// 11 - А3
// 1 - А4
// 5 - А5
// 6 - B4
// 2 - B5
// 7 - B6
// 14 - C4
// 15 - C5
// 16 - C6
// 3 - USLetter
// 4 - USLegal
// 10 - USExecutive
// * КачествоJPG - Число - для формата JPG передается качество (от 1 до 100, 100 - максимальное качество и
// максимальный размер).
// * СжатиеTIFF - Число - сжатие, значения:
// 2 - LZW
// 3 - CCITT3
// 4 - CCITT4
// 5 - RLE
// 6 - без сжатия
// * ДвустороннееСканирование - Булево - использовать двустороннее сканирование
// * СжатиеTIFF - Число - сжатие:
// 2 - LZW
// 3 - CCITT3
// 4 - CCITT4
// 5 - RLE
// 6 - без сжатия
// * ДвустороннееСканирование - Булево - использовать двустороннее сканирование.
// * СохранятьВPDF - Булево
// * ИспользоватьImageMagickДляПреобразованияВPDF - Булево
//
Функция ПараметрыСканирования(Заполнить = Ложь) Экспорт
ПараметрыСканирования = РаботаСФайламиСлужебныйКлиентСервер.ПараметрыСканирования();
СистемнаяИнформация = Новый СистемнаяИнформация();
ИдентификаторКлиента = СистемнаяИнформация.ИдентификаторКлиента;
ПараметрыСканирования = РаботаСФайламиСлужебныйВызовСервера.ПараметрыСканирования(Заполнить, ИдентификаторКлиента);
Возврат ПараметрыСканирования;
Если Заполнить И ИдентификаторКлиента <> Неопределено Тогда
РаботаСФайламиСлужебныйВызовСервера.ЗаполнитьНастройкиСканирования(ПараметрыСканирования, ИдентификаторКлиента);
КонецЕсли;
Возврат ПараметрыСканирования;
КонецФункции
// Конструктор параметров добавления со сканера.
@@ -1223,6 +1227,8 @@
Возврат;
КонецЕсли;
РаботаСФайламиСлужебныйКлиент.ВключитьЛогированиеКомпоненты(РезультатПроверкиИнициализации.ПодключаемыйМодуль);
СистемнаяИнформация = Новый СистемнаяИнформация();
ИдентификаторКлиента = СистемнаяИнформация.ИдентификаторКлиента;
@@ -1365,6 +1371,7 @@
Процедура ДоступнаКомандаСканироватьЗавершение(РезультатПроверкиИнициализации, ОповещениеРезультата) Экспорт
КомпонентаПроинициализирована = РезультатПроверкиИнициализации.Подключено;
РаботаСФайламиСлужебныйКлиент.ВключитьЛогированиеКомпоненты(РезультатПроверкиИнициализации.ПодключаемыйМодуль);
ВыполнитьОбработкуОповещения(ОповещениеРезультата, КомпонентаПроинициализирована);
КонецПроцедуры
@@ -94,6 +94,8 @@
НастройкиСканированияПользователя.Вставить("СжатиеTIFF");
НастройкиСканированияПользователя.Вставить("ПутьКПрограммеКонвертации", "");
НастройкиСканированияПользователя.Вставить("ФорматХраненияОдностраничный");
НастройкиСканированияПользователя.Вставить("КаталогЖурналаСканирования");
НастройкиСканированияПользователя.Вставить("ИспользоватьКаталогЖурналаСканирования", Ложь);
Возврат НастройкиСканированияПользователя;
КонецФункции
@@ -2739,6 +2739,14 @@
МодульЦентрМониторинга.ЗаписатьСтатистикуОбъектаКонфигурации("Справочник.УчетныеЗаписиСинхронизацииФайлов", Выборка.Количество());
УстановитьПривилегированныйРежим(Истина);
КлючиНастроек = ХранилищеОбщихНастроек.ПолучитьСписок("НастройкиСканирования/ИмяУстройства");
Для Каждого КлючНастройки Из КлючиНастроек Цикл
ИмяУстройства = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
"НастройкиСканирования/ИмяУстройства",
КлючНастройки, "");
МодульЦентрМониторинга.ЗаписатьСтатистикуОбъектаКонфигурации("СканированиеИзображений.Сканер." + ИмяУстройства, 1);
КонецЦикла;
КонецПроцедуры
// См. ПользователиПереопределяемый.ПриОпределенииНазначенияРолей
@@ -779,28 +779,12 @@
КонецФункции
Функция ПараметрыСканирования(Заполнить = Ложь, ИдентификаторКлиента = Неопределено) Экспорт
ПараметрыСканирования = Новый Структура;
ПараметрыСканирования.Вставить("ПоказыватьДиалог", Истина);
ПараметрыСканирования.Вставить("ВыбранноеУстройство", "");
ПараметрыСканирования.Вставить("ФорматКартинки", "png");
ПараметрыСканирования.Вставить("Разрешение", 200);
ПараметрыСканирования.Вставить("Цветность", 1);
ПараметрыСканирования.Вставить("Поворот", 0);
ПараметрыСканирования.Вставить("РазмерБумаги", 1);
ПараметрыСканирования.Вставить("КачествоJPG", 100);
ПараметрыСканирования.Вставить("СжатиеTIFF", 6);
ПараметрыСканирования.Вставить("ДвустороннееСканирование", Ложь);
ПараметрыСканирования.Вставить("СохранятьВPDF", Ложь);
ПараметрыСканирования.Вставить("ИспользоватьImageMagickДляПреобразованияВPDF", Ложь);
Процедура ЗаполнитьНастройкиСканирования(ПараметрыСканирования, ИдентификаторКлиента) Экспорт
Если Заполнить И ИдентификаторКлиента <> Неопределено Тогда
НастройкиСканированияПользователя = РаботаСФайлами.ПолучитьНастройкиСканированияПользователя(ИдентификаторКлиента);
ЗаполнитьЗначенияСвойств(ПараметрыСканирования, НастройкиСканированияПользователя);
КонецЕсли;
НастройкиСканированияПользователя = РаботаСФайлами.ПолучитьНастройкиСканированияПользователя(ИдентификаторКлиента);
ЗаполнитьЗначенияСвойств(ПараметрыСканирования, НастройкиСканированияПользователя);
Возврат ПараметрыСканирования;
КонецФункции
КонецПроцедуры
Функция ПолучитьНастройкиСканированияПользователя(ИдентификаторКлиента) Экспорт
Возврат РаботаСФайлами.ПолучитьНастройкиСканированияПользователя(ИдентификаторКлиента);
@@ -3159,9 +3143,9 @@
///////////////////////////////////////////////////////////////////////////////////
// Печать табличного документа со штампом электронной подписи.
Функция ТабличныйДокументСоШтампом(СсылкаНаФайл, Ссылка) Экспорт
Функция ТабличныйДокументСоШтампом(Знач Файл) Экспорт
ДанныеФайла = РаботаСФайлами.ДанныеФайла(СсылкаНаФайл);
ДанныеФайла = РаботаСФайлами.ДанныеФайла(Файл);
ВременныйФайл = ПолучитьИмяВременногоФайла(".mxl");
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ДанныеФайла.СсылкаНаДвоичныеДанныеФайла); // ДвоичныеДанные
ДвоичныеДанные.Записать(ВременныйФайл);
@@ -3177,9 +3161,8 @@
ПараметрыШтампа.Вставить("ТекстОтметки", "");
ПараметрыШтампа.Вставить("Логотип");
ЭлектронныеПодписи = МодульЭлектроннаяПодпись.УстановленныеПодписи(Ссылка);
ВладелецФайла = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ВладелецФайла");
ЭлектронныеПодписи = МодульЭлектроннаяПодпись.УстановленныеПодписи(Файл);
ВладелецФайла = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Файл, "ВладелецФайла");
СведенияОФайле = Новый Структура;
СведенияОФайле.Вставить("ВладелецФайла", ВладелецФайла);
@@ -3203,13 +3186,12 @@
///////////////////////////////////////////////////////////////////////////////////
// Печать офисного документа со штампом электронной подписи.
Функция ОфисныйДокументСоШтампом(СсылкаНаФайл, Ссылка) Экспорт
Функция ОфисныйДокументСоШтампом(Знач Файл) Экспорт
ДанныеФайла = РаботаСФайлами.ДанныеФайла(СсылкаНаФайл);
МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью");
ДанныеФайла = РаботаСФайлами.ДанныеФайла(Файл);
МодульЭлектроннаяПодпись = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодпись");
ЭлектронныеПодписи = МодульЭлектроннаяПодпись.УстановленныеПодписи(Ссылка);
ЭлектронныеПодписи = МодульЭлектроннаяПодпись.УстановленныеПодписи(Файл);
МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью");
МодульУправлениеПечатью.ДобавитьШтампыВОфисныйДокумент(ДанныеФайла.СсылкаНаДвоичныеДанныеФайла, ЭлектронныеПодписи);
Возврат ДанныеФайла.СсылкаНаДвоичныеДанныеФайла;
@@ -3224,7 +3206,7 @@
// Возвращаемое значение:
// Булево
//
Функция ПрисоединенныйФайлНаходитсяНаДиске(ПрисоединенныйФайл)
Функция ПрисоединенныйФайлНаходитсяНаДиске(Знач ПрисоединенныйФайл)
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("РаботаСФайлами.ДвоичныеДанныеФайла", "ПрисоединенныйФайл",
ПрисоединенныйФайл, Метаданные.ОпределяемыеТипы.ПрисоединенныйФайл.Тип);
@@ -3258,9 +3240,94 @@
КонецЕсли;
КонецФункции
Функция ОбъединитьИзображенияВTifФайл(Изображения) Экспорт
Функция ОбъединитьИзображенияВTifФайл(Знач Изображения) Экспорт
ОбрабатываемаяКартинка = Новый ОбрабатываемаяКартинка(Изображения, ФорматКартинки.TIFF);
Возврат ОбрабатываемаяКартинка.ПолучитьКартинку();
КонецФункции
Функция НачалоТекущегоСеанса() Экспорт
Сеанс = ПолучитьТекущийСеансИнформационнойБазы();
Возврат Сеанс.НачалоСеанса;
КонецФункции
Функция ТехническаяИнформацияОВерсияхПодсистемИРасширениях() Экспорт
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВерсииПодсистем.ИмяПодсистемы КАК ИмяПодсистемы,
| ВерсииПодсистем.Версия КАК Версия
|ИЗ
| РегистрСведений.ВерсииПодсистем КАК ВерсииПодсистем";
ВерсииПодсистем = Запрос.Выполнить().Выбрать();
ТехническаяИнформацияОВерсияхПодсистемИРасширениях = НСтр("ru = 'Версии подсистем'") + ":" + Символы.ПС;
Пока ВерсииПодсистем.Следующий() Цикл
ТехническаяИнформацияОВерсияхПодсистемИРасширениях = ТехническаяИнформацияОВерсияхПодсистемИРасширениях
+ ВерсииПодсистем.ИмяПодсистемы + " - "
+ ВерсииПодсистем.Версия + Символы.ПС;
КонецЦикла;
ТехническаяИнформацияОВерсияхПодсистемИРасширениях = ТехническаяИнформацияОВерсияхПодсистемИРасширениях + Символы.ПС;
Расширения = РасширенияКонфигурации.Получить();
Для Каждого Расширение Из Расширения Цикл
ТехническаяИнформацияОВерсияхПодсистемИРасширениях = ТехническаяИнформацияОВерсияхПодсистемИРасширениях
+ Расширение.Имя + " - " + Расширение.Синоним + " - "
+ Формат(Расширение.Активно, НСтр("ru = 'БЛ=Отключено; БИ=Включено'")) + Символы.ПС;
КонецЦикла;
Возврат ТехническаяИнформацияОВерсияхПодсистемИРасширениях;
КонецФункции
Функция ЖурналСканированияДляТехподдержки() Экспорт
СобытиеЖурналаСканирования = НСтр("ru='Сканирование изображений'", ОбщегоНазначения.КодОсновногоЯзыка());
СобытияОтбора = Новый Массив;
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "ПолучитьУстройства.Старт");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "ПолучитьУстройства.Результат");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "ПолучитьУстройства");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "ПолучитьНастройку.Старт");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "ПолучитьНастройку.Результат");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "ПолучитьНастройку");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "ЕстьУстройства.Старт");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "ЕстьУстройства.Результат");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "ЕстьУстройства");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "НачатьСканирование.Старт");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "НачатьСканирование.Результат");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "НачатьСканирование");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "Версия");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "СобытиеСканера");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "СобытиеСканера.ImageAcquired");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "СобытиеСканера.EndBatch");
СобытияОтбора.Добавить(СобытиеЖурналаСканирования + "." + "СобытиеСканера.UserPressedCancel");
Отбор = Новый Структура("Событие", СобытияОтбора);
Отбор.Вставить("ДатаНачала", ТекущаяДатаСеанса() - 600);
Возврат ЖурналРегистрации.ЖурналДляТехподдержки(Отбор, 200, Новый УникальныйИдентификатор);
КонецФункции
Функция ПараметрыЛогирования(ИдентификаторКлиента) Экспорт
Результат = Новый Структура;
Результат.Вставить("ДатаНачалаЛогированияСканирования", ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("КомпонентаСканирования",
"ДатаНачалаЛогированияСканирования", Дата(1,1,1)));
Результат.Вставить("ИмяЛогФайла", ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("КомпонентаСканирования",
"ИмяЛогФайла", Неопределено));
Результат.Вставить("КаталогЖурналаСканирования",
ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("НастройкиСканирования/КаталогЖурналаСканирования",
ИдентификаторКлиента, Неопределено));
Результат.Вставить("ИспользоватьКаталогЖурналаСканирования",
ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("НастройкиСканирования/ИспользоватьКаталогЖурналаСканирования",
ИдентификаторКлиента, Ложь));
Возврат Результат;
КонецФункции
#КонецОбласти
@@ -881,7 +881,7 @@
ИдентификаторКлиента = СистемнаяИнформация.ИдентификаторКлиента;
Если ПараметрыСканирования = Неопределено Тогда
ПараметрыСканирования = РаботаСФайламиСлужебныйВызовСервера.ПараметрыСканирования(Истина, ИдентификаторКлиента);
ПараметрыСканирования = РаботаСФайламиКлиент.ПараметрыСканирования(Истина);
КонецЕсли;
ПараметрыФормы = Новый Структура("ВладелецФайла, ЭтоФайл, НеОткрыватьКарточкуПослеСозданияИзФайла, ТолькоОдинФайл, ТипРезультата");
@@ -10623,11 +10623,10 @@
КонецФункции
// Возвращает устройства сканирования (массив строк).
Функция ПолучитьУстройства(ПодключаемыйМодуль) Экспорт
Функция ПолучитьУстройства(Форма, ПодключаемыйМодуль) Экспорт
Массив = Новый Массив;
СтрокаУстройств = ПодключаемыйМодуль.ПолучитьУстройства();
СтрокаУстройств = ПодключенныеУстройства(Форма, ПодключаемыйМодуль);
Для Индекс = 1 По СтрЧислоСтрок(СтрокаУстройств) Цикл
Строка = СтрПолучитьСтроку(СтрокаУстройств, Индекс);
@@ -10638,31 +10637,6 @@
КонецФункции
// Возвращает настройку сканера по имени.
//
// Параметры:
// ПодключаемыйМодуль - компонента сканирования
// ИмяУстройства - Строка - имя сканера.
// ИмяНастройки - Строка - имя настройки,
// например "XRESOLUTION", или "PIXELTYPE", или "ROTATION", или "SUPPORTEDSIZES".
//
// Возвращаемое значение:
// Число - значение настройки сканера.
//
Функция ПолучитьНастройку(ПодключаемыйМодуль, ИмяУстройства, ИмяНастройки) Экспорт
Если Не ДоступноСканирование(Истина) Тогда
Возврат -1;
КонецЕсли;
Попытка
Возврат ПодключаемыйМодуль.ПолучитьНастройку(ИмяУстройства, ИмяНастройки);
Исключение
Возврат -1;
КонецПопытки;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Вспомогательные процедуры для поддержки асинхронной модели.
//
@@ -11001,10 +10975,12 @@
КонецПроцедуры
Функция ГотовностьКСканированию(ПодключаемыйМодуль) Экспорт
Если ПодключаемыйМодуль.ЕстьУстройства() Тогда
Функция ГотовностьКСканированию(Форма, ПодключаемыйМодуль) Экспорт
ЕстьУстройства = ЕстьУстройства(Форма, ПодключаемыйМодуль);
Если ЕстьУстройства Тогда
Попытка
ПодключаемыйМодуль.ПолучитьУстройства();
ПодключенныеУстройства(Форма, ПодключаемыйМодуль);
Возврат Истина;
Исключение
Возврат Ложь;
@@ -11013,6 +10989,343 @@
Возврат Ложь;
КонецФункции
Функция ПодключенныеУстройства(Форма, ПодключаемыйМодуль)
ЗаписатьЖурналСканирования("ПолучитьУстройства.Старт");
Попытка
ПодключенныеУстройства = ПодключаемыйМодуль.ПолучитьУстройства();
ЗаписатьЖурналСканирования("ПолучитьУстройства.Результат",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ПолучитьУстройства() = %1", ПодключенныеУстройства));
Исключение
ПодключенныеУстройства = "";
ПредставлениеОшибки = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписатьЖурналСканирования("ПолучитьУстройства", ПредставлениеОшибки, Истина);
ПоказатьОшибкуСканирования(ПодключаемыйМодуль, Форма, НСтр("ru='Не удалось получить список устройств'"), ПредставлениеОшибки);
КонецПопытки;
Возврат ПодключенныеУстройства;
КонецФункции
// Возвращает настройку сканера по имени.
//
// Параметры:
// ПодключаемыйМодуль - компонента сканирования
// ИмяУстройства - Строка - имя сканера.
// ИмяНастройки - Строка - имя настройки,
// например "XRESOLUTION", или "PIXELTYPE", или "ROTATION", или "SUPPORTEDSIZES".
//
// Возвращаемое значение:
// Число - значение настройки сканера.
//
Функция НастройкаСканера(Форма, ПодключаемыйМодуль, ИмяУстройства, ИмяНастройки) Экспорт
Если Не ДоступноСканирование(Истина) Тогда
Возврат -1;
КонецЕсли;
Попытка
ЗаписатьЖурналСканирования("ПолучитьНастройку.Старт",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ПолучитьНастройку(%1, %2)",
ИмяУстройства, ИмяНастройки));
ЗначениеНастройки = ПодключаемыйМодуль.ПолучитьНастройку(ИмяУстройства, ИмяНастройки);
ЗаписатьЖурналСканирования("ПолучитьНастройку.Результат",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ПолучитьНастройку(%1, %2) = %3",
ИмяУстройства, ИмяНастройки, ЗначениеНастройки));
Возврат ЗначениеНастройки;
Исключение
ПредставлениеОшибки = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписатьЖурналСканирования("ПолучитьНастройку", ПредставлениеОшибки, Истина);
ПоказатьОшибкуСканирования(ПодключаемыйМодуль, Форма, НСтр("ru='Не удалось получить настройки устройства.'"), ПредставлениеОшибки);
Возврат -1;
КонецПопытки;
КонецФункции
Функция ЕстьУстройства(Форма, ПодключаемыйМодуль) Экспорт
ЗаписатьЖурналСканирования("ЕстьУстройства.Старт");
Попытка
ЕстьУстройства = ПодключаемыйМодуль.ЕстьУстройства();
ЗаписатьЖурналСканирования("ЕстьУстройства.Результат",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ЕстьУстройства() = %1", ЕстьУстройства));
Исключение
ПредставлениеОшибки = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписатьЖурналСканирования("ЕстьУстройства", ПредставлениеОшибки, Истина);
ПоказатьОшибкуСканирования(ПодключаемыйМодуль, Форма, НСтр("ru='Не удалось проверить наличие устройств'"), ПредставлениеОшибки);
ЕстьУстройства = Ложь;
КонецПопытки;
Возврат ЕстьУстройства;
КонецФункции
Процедура НачатьСканирование(Форма, ПодключаемыйМодуль, ПараметрыСканирования) Экспорт
ПараметрСжатие = ?(ВРег(ФорматКартинки) = "JPG", ПараметрыСканирования.КачествоJPG, ПараметрыСканирования.СжатиеTIFF);
ТекстСобытия = "НачатьСканирование" + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("(%1, %2, %3, %4, %5, %6, %7, %8, %9)",
ПараметрыСканирования.ПоказыватьДиалог,
ПараметрыСканирования.ВыбранноеУстройство,
ПараметрыСканирования.ФорматКартинки,
ПараметрыСканирования.Разрешение,
ПараметрыСканирования.Цветность,
ПараметрыСканирования.Поворот,
ПараметрыСканирования.РазмерБумаги,
ПараметрСжатие,
ПараметрыСканирования.ДвустороннееСканирование);
ЗаписатьЖурналСканирования("НачатьСканирование.Старт", ТекстСобытия);
Попытка
ПодключаемыйМодуль.НачатьСканирование(
ПараметрыСканирования.ПоказыватьДиалог,
ПараметрыСканирования.ВыбранноеУстройство,
ПараметрыСканирования.ФорматКартинки,
ПараметрыСканирования.Разрешение,
ПараметрыСканирования.Цветность,
ПараметрыСканирования.Поворот,
ПараметрыСканирования.РазмерБумаги,
ПараметрСжатие,
ПараметрыСканирования.ДвустороннееСканирование);
ЗаписатьЖурналСканирования("НачатьСканирование.Результат", ТекстСобытия);
Исключение
ПредставлениеОшибки = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписатьЖурналСканирования("НачатьСканирование", ПредставлениеОшибки, Истина);
ПоказатьОшибкуСканирования(ПодключаемыйМодуль, Форма, НСтр("ru='Не удалось отсканировать документ'"), ПредставлениеОшибки);
КонецПопытки;
КонецПроцедуры
Процедура ВключитьЛогированиеКомпоненты(ПодключаемыйМодуль, Знач Перезапуск = Ложь) Экспорт
СистемнаяИнформация = Новый СистемнаяИнформация();
ИдентификаторКлиента = СистемнаяИнформация.ИдентификаторКлиента;
ПараметрыЛогирования = РаботаСФайламиСлужебныйВызовСервера.ПараметрыЛогирования(ИдентификаторКлиента);
Если Не Перезапуск Тогда
Перезапуск = ПараметрыЛогирования.ДатаНачалаЛогированияСканирования = Дата(1,1,1);
КонецЕсли;
ИмяЛогФайла = ПараметрыЛогирования.ИмяЛогФайла;
Если Перезапуск И ИмяЛогФайла <> Неопределено Тогда
ПодключаемыйМодуль.LogFilePath = "";
ФайлЛога = Новый Файл(ИмяЛогФайла);
Если ФайлЛога.Существует() Тогда
УдалитьФайлы(ИмяЛогФайла);
КонецЕсли;
КонецЕсли;
КаталогЖурналаСканирования = ПараметрыЛогирования.КаталогЖурналаСканирования;
ИспользоватьКаталогЖурналаСканирования = ПараметрыЛогирования.ИспользоватьКаталогЖурналаСканирования;
Контекст = Новый Структура;
Контекст.Вставить("ПодключаемыйМодуль", ПодключаемыйМодуль);
ОповещениеПослеСозданияВременногоКаталогаДляПодключенияЛогФайлов = Новый ОписаниеОповещения("ОповещениеПослеСозданияВременногоКаталогаДляПодключенияЛогФайлов", ЭтотОбъект, Контекст);
Если ИспользоватьКаталогЖурналаСканирования И КаталогЖурналаСканирования <> Неопределено Тогда
ВыполнитьОбработкуОповещения(ОповещениеПослеСозданияВременногоКаталогаДляПодключенияЛогФайлов, КаталогЖурналаСканирования);
Иначе
ФайловаяСистемаКлиент.СоздатьВременныйКаталог(ОповещениеПослеСозданияВременногоКаталогаДляПодключенияЛогФайлов);
КонецЕсли;
КонецПроцедуры
Процедура ОповещениеПослеСозданияВременногоКаталогаДляПодключенияЛогФайлов(КаталогЖурналаСканирования, Контекст) Экспорт
ИмяЛогФайла = КаталогЖурналаСканирования + ПолучитьРазделительПути() + "ImageScan.log";
ПодключаемыйМодуль = Контекст.ПодключаемыйМодуль;
ПодключаемыйМодуль.LogFilePath = ИмяЛогФайла;
ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранить("КомпонентаСканирования", "ИмяЛогФайла", ИмяЛогФайла);
ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранить("КомпонентаСканирования", "ДатаНачалаЛогированияСканирования",
ОбщегоНазначенияКлиент.ДатаСеанса());
КонецПроцедуры
Процедура ЗаписатьЖурналСканирования(Событие, Комментарий = "", ЭтоОшибка = Ложь) Экспорт
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
НСтр("ru='Сканирование изображений'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка()) + "." + Событие,
?(ЭтоОшибка, "Ошибка", "Информация"), Комментарий,, Истина);
КонецПроцедуры
Процедура ПоказатьОшибкуСканирования(ПодключаемыйМодуль, Форма, Заголовок, ПодробноеПредставлениеОшибки,
ТекстОшибки = "", РежимТребуетсяПомощь = Ложь) Экспорт
ПараметрыОткрытияФормы = Новый Структура("Заголовок, ПодробноеПредставлениеОшибки",
Заголовок, ПодробноеПредставлениеОшибки);
ПараметрыОткрытияФормы.Вставить("ТекстОшибки", ТекстОшибки);
ПараметрыОткрытияФормы.Вставить("ИмяУстройстваСканирования", Форма.ИмяУстройстваСканирования);
Контекст = Новый Структура("РежимТребуетсяПомощь", РежимТребуетсяПомощь);
ПослеЗакрытияФормыОшибки = Новый ОписаниеОповещения("ПослеЗакрытияФормыОшибки", Форма, Контекст);
ОткрытьФорму("Обработка.Сканирование.Форма.ОшибкаСканирования", ПараметрыОткрытияФормы, Форма,,,, ПослеЗакрытияФормыОшибки);
КонецПроцедуры
Функция БылаОшибкаСканирования() Экспорт
ПараметрыЗаданияСканирования = ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекЗагрузить("КомпонентаСканирования", "ПараметрыЗаданияСканирования", Неопределено);
Возврат ПараметрыЗаданияСканирования <> Неопределено;
КонецФункции
Процедура УдалитьОшибкуСканирования(ПодключаемыйМодуль) Экспорт
ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранить("КомпонентаСканирования", "ПараметрыЗаданияСканирования", Неопределено);
ВключитьЛогированиеКомпоненты(ПодключаемыйМодуль, Истина);
КонецПроцедуры
Процедура ПолучитьТехническуюИнформацию(ПодробноеПредставлениеОшибки, ОповещениеПослеПолученияТехническойИнформации = Неопределено) Экспорт
Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = НСтр("ru='Техническая информация'");
Фильтр = НСтр("ru = 'Отчет о проблеме'") + "(*.zip)|*.zip";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = НСтр("ru='Сохранение технической информации о проблеме'");
Если Не ДиалогОткрытияФайла.Выбрать() Тогда
Возврат;
КонецЕсли;
МассивФайлов = ДиалогОткрытияФайла.ВыбранныеФайлы;
Если МассивФайлов.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Контекст = Новый Структура();
Контекст.Вставить("ПодробноеПредставлениеОшибки", ПодробноеПредставлениеОшибки);
Контекст.Вставить("ОповещениеПослеПолученияТехническойИнформации", ОповещениеПослеПолученияТехническойИнформации);
Контекст.Вставить("ИмяФайла", МассивФайлов[0]);
ОповещениеПослеСозданияВременногоКаталогаДляЛогФайлов = Новый ОписаниеОповещения("ПослеСозданияВременногоКаталогаДляЛогФайлов", ЭтотОбъект, Контекст);
ФайловаяСистемаКлиент.СоздатьВременныйКаталог(ОповещениеПослеСозданияВременногоКаталогаДляЛогФайлов);
КонецПроцедуры
Процедура ПослеСозданияВременногоКаталогаДляЛогФайлов(ИмяКаталога, Контекст) Экспорт
#Если Не ВебКлиент Тогда
ПодробноеПредставлениеОшибки = Контекст.ПодробноеПредставлениеОшибки;
ОповещениеПослеПолученияТехническойИнформации = Контекст.ОповещениеПослеПолученияТехническойИнформации;
ИмяФайла = Контекст.ИмяФайла;
КаталогВременныхФайлов = ИмяКаталога + ПолучитьРазделительПути();
ФайлыДляУдаления = Новый Массив;
ЗаписьZIP = Новый ЗаписьZipФайла(ИмяФайла);
ИмяЛогФайла = ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекЗагрузить("КомпонентаСканирования", "ИмяЛогФайла");
Если ИмяЛогФайла = Неопределено Тогда
ЗаписатьЖурналСканирования("ФайлКомпоненты", НСтр("ru='Не задано имя файла журнала компоненты сканирования.'"), Истина);
Иначе
ЛогФайл = Новый Файл(ИмяЛогФайла);
ИмяЛогФайлаДляСохранения = "";
Если ЛогФайл.Существует() Тогда
ИмяЛогФайлаДляСохранения = КаталогВременныхФайлов + "ImageScan.log";
ПереместитьФайл(ИмяЛогФайла, ИмяЛогФайлаДляСохранения);
ЗаписьZIP.Добавить(ИмяЛогФайлаДляСохранения);
Иначе
ЗаписатьЖурналСканирования("ФайлКомпоненты", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Файл журнала компоненты сканирования не существует. %1'"),
ИмяЛогФайла), Истина);
КонецЕсли;
КонецЕсли;
ФайлЖурнала = КаталогВременныхФайлов + "ЖурналРегистрации.xml";
АдресЛогов = РаботаСФайламиСлужебныйВызовСервера.ЖурналСканированияДляТехподдержки();
ДанныеЛогов = ПолучитьИзВременногоХранилища(АдресЛогов);
ДанныеЛогов.Записать(ФайлЖурнала);
ФайлыДляУдаления.Добавить(ФайлЖурнала);
ЗаписьZIP.Добавить(ФайлЖурнала);
КонтекстИсходящий = Новый Структура;
Контекст.Вставить("ПослеФормированияСводнойИнформации",
Новый ОписаниеОповещения("ПослеФормированияСводнойИнформации", ЭтотОбъект, ЗаписьZIP));
Контекст.Вставить("ФайлыДляУдаления", ФайлыДляУдаления);
Контекст.Вставить("ПодробноеПредставлениеОшибки", ПодробноеПредставлениеОшибки);
Контекст.Вставить("ОповещениеПослеПолученияТехническойИнформации", ОповещениеПослеПолученияТехническойИнформации);
Контекст.Вставить("КаталогВременныхФайлов", КаталогВременныхФайлов);
СводнаяИнформация(Контекст);
#КонецЕсли
КонецПроцедуры
Процедура СводнаяИнформация(Контекст)
Текст = НСтр("ru = 'Информация о компьютере:'") + Символы.ПС;
СисИнфо = Новый СистемнаяИнформация;
ПрограммаПросмотра = СисИнфо.ИнформацияПрограммыПросмотра;
Если Не ПустаяСтрока(ПрограммаПросмотра) Тогда
ПрограммаПросмотра = Символы.ПС + НСтр("ru = 'Программа просмотра:'") + " " + ПрограммаПросмотра;
КонецЕсли;
Текст = Текст + НСтр("ru = 'Операционная система:'") + " " + СисИнфо.ВерсияОС
+ Символы.ПС + НСтр("ru = 'Версия приложения:'") + " " + СисИнфо.ВерсияПриложения
+ Символы.ПС + НСтр("ru = 'Тип платформы:'") + " " + СисИнфо.ТипПлатформы
+ ПрограммаПросмотра + Символы.ПС;
Контекст.Вставить("СводнаяИнформация", Текст);
ОписаниеОповещения = Новый ОписаниеОповещения("СводнаяИнформацияПослеПолученияКомпоненты", ЭтотОбъект, Контекст);
ПроинициализироватьКомпоненту(ОписаниеОповещения, Истина);
КонецПроцедуры
Процедура СводнаяИнформацияПослеПолученияКомпоненты(РезультатИнициализации, Контекст) Экспорт
СводнаяИнформация = Контекст.СводнаяИнформация;
ИнформацияОКомпоненте = "";
ПодключаемыйМодуль = Неопределено;
Если РезультатИнициализации.Подключено Тогда
Попытка
ПодключаемыйМодуль = РезультатИнициализации.ПодключаемыйМодуль;
ВерсияКомпоненты = ПодключаемыйМодуль.Версия();
ИнформацияОКомпоненте = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Версия компоненты %1: %2'"), "ImageScan", ВерсияКомпоненты);
Исключение
ЗаписатьЖурналСканирования("Версия", ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Истина);
КонецПопытки;
КонецЕсли;
СводнаяИнформация = СводнаяИнформация + Символы.ПС + ИнформацияОКомпоненте
+ Символы.ПС + Символы.ПС + НСтр("ru='Техническая информация'") + ":"
+ Символы.ПС + Контекст.ПодробноеПредставлениеОшибки
+ Символы.ПС + Символы.ПС;
Если ОбщегоНазначенияКлиент.ИнформационнаяБазаФайловая() Тогда
РежимРаботы = ?(ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер(),
НСтр("ru = 'Файловый через веб'"), НСтр("ru = 'Файловый'"));
Иначе
РежимРаботы = НСтр("ru = 'Клиент-серверный'");
КонецЕсли;
СводнаяИнформация = СводнаяИнформация + НСтр("ru = 'Режим работы информационной базы'")+ " - "
+ РежимРаботы + Символы.ПС + РаботаСФайламиСлужебныйВызовСервера.ТехническаяИнформацияОВерсияхПодсистемИРасширениях() + Символы.ПС;
ИмяФайлаСводнойИнформации = Контекст.КаталогВременныхФайлов + "СводнаяИнформация.txt";
ПолучитьДвоичныеДанныеИзСтроки(СводнаяИнформация).Записать(ИмяФайлаСводнойИнформации);
КонтекстЗавершения = Новый Структура;
КонтекстЗавершения.Вставить("ИмяФайлаСводнойИнформации", ИмяФайлаСводнойИнформации);
КонтекстЗавершения.Вставить("ФайлыДляУдаления", Контекст.ФайлыДляУдаления);
КонтекстЗавершения.Вставить("ОповещениеПослеПолученияТехническойИнформации", Контекст.ОповещениеПослеПолученияТехническойИнформации);
УдалитьОшибкуСканирования(ПодключаемыйМодуль);
ВыполнитьОбработкуОповещения(Контекст.ПослеФормированияСводнойИнформации, КонтекстЗавершения);
КонецПроцедуры
Процедура ПослеФормированияСводнойИнформации(Контекст, ЗаписьZIP) Экспорт
ФайлыДляУдаления = Контекст.ФайлыДляУдаления;
ЗаписьZIP.Добавить(Контекст.ИмяФайлаСводнойИнформации);
ФайлыДляУдаления.Добавить(Контекст.ИмяФайлаСводнойИнформации);
ЗаписьZIP.Записать();
Для Каждого ФайлДляУдаления Из ФайлыДляУдаления Цикл
УдалитьФайлы(ФайлДляУдаления);
КонецЦикла;
Если Контекст.ОповещениеПослеПолученияТехническойИнформации <> Неопределено Тогда
ВыполнитьОбработкуОповещения(Контекст.ОповещениеПослеПолученияТехническойИнформации);
КонецЕсли;
КонецПроцедуры
#Область УдалениеДанныхФайловИВерсий
Процедура УдалитьДанные(ОбработчикЗавершения, ФайлИлиВерсия, УникальныйИдентификатор) Экспорт
@@ -83,4 +83,8 @@
КонецФункции
Функция НачалоТекущегоСеанса() Экспорт
Возврат РаботаСФайламиСлужебныйВызовСервера.НачалоТекущегоСеанса();
КонецФункции
#КонецОбласти
@@ -929,4 +929,23 @@
КонецФункции
Функция ПараметрыСканирования() Экспорт
ПараметрыСканирования = Новый Структура;
ПараметрыСканирования.Вставить("ПоказыватьДиалог", Истина);
ПараметрыСканирования.Вставить("ВыбранноеУстройство", "");
ПараметрыСканирования.Вставить("ФорматКартинки", "png");
ПараметрыСканирования.Вставить("Разрешение", 200);
ПараметрыСканирования.Вставить("Цветность", 1);
ПараметрыСканирования.Вставить("Поворот", 0);
ПараметрыСканирования.Вставить("РазмерБумаги", 1);
ПараметрыСканирования.Вставить("КачествоJPG", 100);
ПараметрыСканирования.Вставить("СжатиеTIFF", 6);
ПараметрыСканирования.Вставить("ДвустороннееСканирование", Ложь);
ПараметрыСканирования.Вставить("СохранятьВPDF", Ложь);
ПараметрыСканирования.Вставить("ИспользоватьImageMagickДляПреобразованияВPDF", Ложь);
Возврат ПараметрыСканирования;
КонецФункции
#КонецОбласти
@@ -4437,8 +4437,21 @@
КонецФункции
// Возвращает шаблон тела сообщения по умолчанию для доставки по электронной почте.
Функция ШаблонТекста() Экспорт
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
Функция ШаблонТекста(ВсеПараметрыТекстаПисьмаИФайлов = Неопределено) Экспорт
Если ВсеПараметрыТекстаПисьмаИФайлов <> Неопределено Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
"ru = 'Сформированы отчеты:
|
|%1'"),
"[" + ВсеПараметрыТекстаПисьмаИФайлов.СформированныеОтчеты + "]
|
|[" + ВсеПараметрыТекстаПисьмаИФайлов.СпособДоставки + "]
|
|[" + ВсеПараметрыТекстаПисьмаИФайлов.ЗаголовокСистемы + "]
|[" + ВсеПараметрыТекстаПисьмаИФайлов.ДатаВыполнения + "(DLF='DD')]");
Иначе
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
"ru = 'Сформированы отчеты:
|
|%1'"),
@@ -4447,7 +4460,9 @@
|[СпособДоставки]
|
|[ЗаголовокСистемы]
|[ДатаВыполнения(ДЛФ='DD')]");
|[ДатаВыполнения(DLF='DD')]");
КонецЕсли;
КонецФункции
Функция ПолучитьПериодИзПользовательскихНастроек(ПользовательскиеНастройкиКД) Экспорт
@@ -213,17 +213,27 @@
КонецФункции
// Возвращает шаблон темы по умолчанию для доставки по электронной почте.
Функция ШаблонТемы() Экспорт
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 от %2'"), "[НаименованиеРассылки]", "[ДатаВыполнения(ДЛФ='D')]");
Функция ШаблонТемы(ВсеПараметрыТекстаПисьмаИФайлов = Неопределено) Экспорт
Если ВсеПараметрыТекстаПисьмаИФайлов <> Неопределено Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 от %2'"), "[" + ВсеПараметрыТекстаПисьмаИФайлов.НаименованиеРассылки + "]",
"[" + ВсеПараметрыТекстаПисьмаИФайлов.ДатаВыполнения + "(DLF='D')]");
Иначе
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 от %2'"), "[НаименованиеРассылки]", "[ДатаВыполнения(DLF='D')]");
КонецЕсли;
КонецФункции
// Возвращает шаблон наименования архива по умолчанию.
Функция ШаблонИмениАрхива() Экспорт
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 от %2'"), "[НаименованиеРассылки]", "[ДатаВыполнения(ДФ='yyyy-MM-dd')]");
Функция ШаблонИмениАрхива(ВсеПараметрыТекстаПисьмаИФайлов = Неопределено) Экспорт
Если ВсеПараметрыТекстаПисьмаИФайлов <> Неопределено Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 от %2'"), "[" + ВсеПараметрыТекстаПисьмаИФайлов.НаименованиеРассылки + "]",
"[" + ВсеПараметрыТекстаПисьмаИФайлов.ДатаВыполнения + "(DF='yyyy-MM-dd')]");
Иначе
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 от %2'"), "[НаименованиеРассылки]", "[ДатаВыполнения(DF='yyyy-MM-dd')]");
КонецЕсли;
КонецФункции
// Конструктор для значения параметра ПараметрыДоставки функции ВыполнитьРассылку.
@@ -74,4 +74,24 @@
КонецФункции
Функция ПараметрыТекстаПисьмаИФайлов() Экспорт
ПараметрыРассылки = Новый Структура;
ПараметрыРассылки.Вставить("Получатель", НСтр("ru = 'Получатель'"));
ПараметрыРассылки.Вставить("ДатаВыполнения", НСтр("ru = 'Дата выполнения'"));
ПараметрыРассылки.Вставить("Автор", НСтр("ru = 'Автор'"));
ПараметрыРассылки.Вставить("НаименованиеРассылки", НСтр("ru = 'Наименование рассылки'"));
ПараметрыРассылки.Вставить("СформированныеОтчеты", НСтр("ru = 'Сформированные отчеты'"));
ПараметрыРассылки.Вставить("ЗаголовокСистемы", НСтр("ru = 'Заголовок системы'"));
ПараметрыРассылки.Вставить("СпособДоставки", НСтр("ru = 'Способ доставки'"));
ПараметрыРассылки.Вставить("ФорматОтчета", НСтр("ru = 'Формат отчета'"));
ПараметрыРассылки.Вставить("Период", НСтр("ru = 'Период'"));
ПараметрыРассылки.Вставить("ДатаРассылки", НСтр("ru = 'Дата рассылки'"));
ПараметрыРассылки.Вставить("НаименованиеОтчета", НСтр("ru = 'Наименование отчета'"));
Возврат ПараметрыРассылки;
КонецФункции
#КонецОбласти
@@ -1052,6 +1052,7 @@
// Если массив пуст, то результатом будет пустое соответствие.
// Реквизиты - Массив из Строка
// - ФиксированныйМассив из Строка - имена реквизитов в формате требований к свойствам структуры.
// - Строка - имена реквизитов через запятую
//
// Возвращаемое значение:
// Соответствие из КлючИЗначение - список объектов и значений их реквизитов:
@@ -1067,6 +1068,10 @@
Возврат ЗначенияРеквизитов;
КонецЕсли;
Если ТипЗнч(Реквизиты) = Тип("Строка") Тогда
Реквизиты = СтрРазделить(Реквизиты, ",");
КонецЕсли;
РеквизитыТипов = Новый Соответствие;
СсылкиПоТипам = Новый Соответствие;
Для Каждого Ссылка Из Ссылки Цикл
@@ -1095,6 +1100,8 @@
Для каждого СтандартныйРеквизит Из ОбъектМетаданных.СтандартныеРеквизиты Цикл
СтандартныеРеквизиты[СтандартныйРеквизит.Имя] = Истина;
КонецЦикла;
СтандартныеРеквизиты["ВерсияДанных"] = Истина;
Для каждого ИмяРеквизита Из Реквизиты Цикл
Если СтандартныеРеквизиты[ИмяРеквизита] <> Неопределено
Или ОбъектМетаданных.Реквизиты.Найти(ИмяРеквизита) <> Неопределено Тогда
@@ -5415,7 +5415,7 @@
Функция БазовыеСведенияКонтактнойИнформации(КонтактнаяИнформация = Неопределено) Экспорт
Результат = УправлениеКонтактнойИнформациейКлиентСервер.БазовыеПоляКонтактнойИнформации();
Результат = БазовыеПоляКонтактнойИнформации();
Если КонтактнаяИнформация = Неопределено Тогда
Возврат Результат;
КонецЕсли;
@@ -5431,6 +5431,42 @@
КонецФункции
// Возвращаемое значение:
// Структура:
// * Представление - Строка
// * ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации
// - Неопределено
// * Комментарий - Строка
//
Функция БазовыеПоляКонтактнойИнформации()
ПоляКонтактнойИнформации = Новый Структура;
ПоляКонтактнойИнформации.Вставить("Представление", "");
ПоляКонтактнойИнформации.Вставить("ТипКонтактнойИнформации", Неопределено);
ПоляКонтактнойИнформации.Вставить("Комментарий", "");
Возврат ПоляКонтактнойИнформации;
КонецФункции
// Возвращаемое значение:
// Структура - поля контактной информации для преобразования:
// * ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации
// - Неопределено
// * ДанныеXML - Строка
// * Представление - Строка
//
Функция ПоляКонтактнойИнформацииДляПреобразования() Экспорт
Результат = Новый Структура;
Результат.Вставить("ТипКонтактнойИнформации", Неопределено);
Результат.Вставить("ДанныеXML", "");
Результат.Вставить("Представление", "");
Возврат Результат;
КонецФункции
Процедура СоздатьЭлементыТабличнойЧасти(Знач Форма, Знач ИмяОбъекта, ИмяЭлементаДляРазмещения,
Знач СтрокаКонтактнойИнформации, Знач ДанныеВидаКонтактнойИнформации)
@@ -791,6 +791,7 @@
ПараметрыОбновления.Вставить("ЭтоДобавлениеКомментария", Истина);
ПараметрыОбновления.Вставить("ИмяЭлементаДляРазмещения", ДополнительныеПараметры.ИмяЭлементаДляРазмещения);
ПараметрыОбновления.Вставить("ИмяРеквизита", ДополнительныеПараметры.ИмяЭлемента);
ПараметрыОбновления.Вставить("ТипКонтактнойИнформации", СтрокаКонтактнойИнформации.Тип);
КонецЕсли;
КонецЕсли;
КонецЦикла;
@@ -313,42 +313,6 @@
КонецФункции
// Возвращаемое значение:
// Структура:
// * Представление - Строка
// * ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации
// - Неопределено
// * Комментарий - Строка
//
Функция БазовыеПоляКонтактнойИнформации() Экспорт
ПоляКонтактнойИнформации = Новый Структура;
ПоляКонтактнойИнформации.Вставить("Представление", "");
ПоляКонтактнойИнформации.Вставить("ТипКонтактнойИнформации", Неопределено);
ПоляКонтактнойИнформации.Вставить("Комментарий", "");
Возврат ПоляКонтактнойИнформации;
КонецФункции
// Возвращаемое значение:
// Структура - поля контактной информации для преобразования:
// * ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации
// - Неопределено
// * ДанныеXML - Строка
// * Представление - Строка
//
Функция ПоляКонтактнойИнформацииДляПреобразования() Экспорт
Результат = Новый Структура;
Результат.Вставить("ТипКонтактнойИнформации", Неопределено);
Результат.Вставить("ДанныеXML", "");
Результат.Вставить("Представление", "");
Возврат Результат;
КонецФункции
Функция ТипКонтактнойИнформацииВСтроку(Знач ТипКонтактнойИнформации)
Результат = Новый Соответствие;
@@ -906,7 +906,7 @@
Комментарий = Неопределено;
ТипКонтактнойИнформации = Неопределено;
Результат = УправлениеКонтактнойИнформациейКлиентСервер.ПоляКонтактнойИнформацииДляПреобразования();
Результат = УправлениеКонтактнойИнформацией.ПоляКонтактнойИнформацииДляПреобразования();
Если ТипЗнч(Данные) = Тип("ОбъектXDTO") Тогда
XMLСтрока = КонтактнаяИнформацияXDTOВXML(Данные);
@@ -54,7 +54,7 @@
//
Функция ПривестиКонтактнуюИнформациюXML(Знач Данные) Экспорт
Результат = УправлениеКонтактнойИнформациейКлиентСервер.ПоляКонтактнойИнформацииДляПреобразования();
Результат = УправлениеКонтактнойИнформацией.ПоляКонтактнойИнформацииДляПреобразования();
Если УправлениеКонтактнойИнформациейСлужебныйПовтИсп.ДоступенМодульЛокализации() Тогда
МодульУправлениеКонтактнойИнформациейЛокализация = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформациейЛокализация");
@@ -2745,7 +2745,9 @@
ПутьКДаннымРисунков = Новый Соответствие();
Для Каждого Рисунок Из Макет.Рисунки Цикл
ПутьКДаннымРисунков.Вставить(Рисунок.Имя, Рисунок.ПараметрРасшифровки);
Если Рисунок.ТипРисунка <> ТипРисункаТабличногоДокумента.Группа Тогда
ПутьКДаннымРисунков.Вставить(Рисунок.Имя, Рисунок.ПараметрРасшифровки);
КонецЕсли;
КонецЦикла;
ОбластиМакета = ОбластиМакета(Макет, ДанныеПечати);
@@ -2811,6 +2813,9 @@
ТабличныйДокумент.Вывести(ОбластьМакета);
Для Индекс = ВыведеноРисунков По ТабличныйДокумент.Рисунки.Количество() - 1 Цикл
Рисунок = ТабличныйДокумент.Рисунки[Индекс];
Если Рисунок.ТипРисунка = ТипРисункаТабличногоДокумента.Группа Тогда
Продолжить;
КонецЕсли;
Рисунок.ПараметрРасшифровки = ПутьКДаннымРисунков[Рисунок.Имя];
Если Не ЗначениеЗаполнено(Рисунок.ПараметрРасшифровки) Тогда
Продолжить;
@@ -3922,7 +3927,9 @@
Тексты = Новый Соответствие;
Для Каждого Рисунок Из Макет.Рисунки Цикл
Тексты.Вставить(Рисунок.ПараметрРасшифровки, Истина);
Если Рисунок.ТипРисунка <> ТипРисункаТабличногоДокумента.Группа Тогда
Тексты.Вставить(Рисунок.ПараметрРасшифровки, Истина);
КонецЕсли;
КонецЦикла;
Для Каждого Элемент Из Тексты Цикл
@@ -3949,7 +3956,7 @@
Объекты = ОбъектыПечати.ВыгрузитьЗначения();
ДанныеПечати = ДанныеПечати(Объекты, Поля, КодЯзыка);
Результат = Новый Соответствие();
Результат = Новый Соответствие;
Для Каждого ОписаниеОбласти Из ОбъектыПечати Цикл
Объект = ОписаниеОбласти.Значение;
@@ -3995,6 +4002,10 @@
Продолжить;
КонецЕсли;
Если Рисунок.ТипРисунка = ТипРисункаТабличногоДокумента.Группа Тогда
Продолжить;
КонецЕсли;
Если ЗначениеЗаполнено(Рисунок.ПараметрРасшифровки) Тогда
Картинка = КомплектПодписейИПечатей[Рисунок.ПараметрРасшифровки];
Иначе
@@ -5850,7 +5861,9 @@
Тексты.Вставить(Строка(Макет.НижнийКолонтитул.ТекстСправа), Истина);
Для Каждого Рисунок Из Макет.Рисунки Цикл
Тексты.Вставить(Рисунок.ПараметрРасшифровки, Истина);
Если Рисунок.ТипРисунка <> ТипРисункаТабличногоДокумента.Группа Тогда
Тексты.Вставить(Рисунок.ПараметрРасшифровки, Истина);
КонецЕсли;
КонецЦикла;
Для Каждого Область Из Макет.Области Цикл
@@ -1853,21 +1853,16 @@
Запрос.УстановитьПараметр("ИдентификаторСообщения", Письмо.ИдентификаторСообщения);
НачалоВыполненияЗапроса = ТекущаяУниверсальнаяДатаВМиллисекундах();
Выборка = Запрос.Выполнить().Выбрать();
ВремяВыполненияЗапроса = Окр((ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоВыполненияЗапроса)/1000, 2);
Если ВремяВыполненияЗапроса > 1 Тогда
ТекстЗаписиЖурнала = СтрШаблон(НСтр("ru = 'Запрос по получению данных писем основания загружаемого письма выполнялся дольше %1 сек, это дольше ожидаемого.'"),
ВремяВыполненияЗапроса);
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Информация,
Письмо,
ТекстЗаписиЖурнала);
ТекстЗаписиЖурнала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Запрос по получению данных писем основания загружаемого письма выполнялся дольше %1 сек, это дольше ожидаемого.'"),
ВремяВыполненияЗапроса);
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Письмо, ТекстЗаписиЖурнала);
КонецЕсли;
@@ -102,7 +102,7 @@
РеквизитСписокСостояние.Заголовок = НСтр("ru='Состояние оригинала'");
РеквизитСписокСостояние.ПутьКДанным = Список.Имя + ".СостояниеОригиналаПервичногоДокумента";
Если Не УчетОригиналовПервичныхДокументовВызовСервера.ПраваНаИзменениеСостояния() Тогда
Если Не ПраваНаИзменениеСостояния() Тогда
Возврат;
КонецЕсли;
@@ -145,7 +145,7 @@
Ключи = СтрокиСписка.ПолучитьКлючи(); // Массив из ДокументСсылка -
Ссылки = Новый Массив;
Для Каждого Ключ Из Ключи Цикл
Ссылки.Добавить(Ключ.Ссылка);
Ссылки.Добавить(Ключ);
КонецЦикла;
Запрос = Новый Запрос;
@@ -514,7 +514,7 @@
// См. ПодключаемыеКомандыПереопределяемый.ПриОпределенииКомандПодключенныхКОбъекту.
Процедура ПриОпределенииКомандПодключенныхКОбъекту(НастройкиФормы, Источники, ПодключенныеОтчетыИОбработки, Команды) Экспорт
Если Не УчетОригиналовПервичныхДокументовВызовСервера.ПраваНаИзменениеСостояния() Тогда
Если Не ПраваНаИзменениеСостояния() Тогда
Возврат;
КонецЕсли;
@@ -596,7 +596,7 @@
Команда.Обработчик = "УчетОригиналовПервичныхДокументовКлиент.Подключаемый_УстановитьСостояниеОригинала";
КонецЕсли;
Наименование = Справочники.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен.Наименование;
Наименование = Строка(Справочники.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен);
// Команда "Установить оригинал получен" на командой панели списка
Команда = Команды.Добавить();
@@ -616,8 +616,12 @@
#Область СлужебныеПроцедурыИФункции
// Записывает новое состояние оригинала документа.
//
Функция ПраваНаИзменениеСостояния()
Возврат ПравоДоступа("Редактирование", Метаданные.РегистрыСведений.СостоянияОригиналовПервичныхДокументов);
КонецФункции
// Параметры:
// ДанныеЗаписи - Массив из см. УстановитьНовоеСостояниеОригиналаМассив.ДанныеЗаписи.
// ИмяСостояния - Строка - устанавливаемое состояние.
@@ -629,22 +633,19 @@
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ВыполнитьПроверкуПравДоступа("Редактирование", Метаданные.РегистрыСведений.СостоянияОригиналовПервичныхДокументов);
УстановитьПривилегированныйРежим(Истина);
Если ТипЗнч(ДанныеЗаписи) = Тип("Массив") Тогда
УстановитьНовоеСостояниеОригиналаМассив(ДанныеЗаписи, ИмяСостояния, Изменено);
Иначе
УстановитьНовоеСостояниеОригиналаСтруктура(ДанныеЗаписи, ИмяСостояния, Изменено);
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
// Записывает новое состояние оригинала документа.
//
// Параметры:
// ДанныеЗаписи - Массив из Структура - массив содержащий данные об изменяемом состоянии оригинала:
// ДанныеЗаписи - Массив из Структура - данные об изменяемом состоянии оригинала:
// * ОбщееСостояние - Булево - Истина, если текущее состояние является общим;
// * Ссылка - ДокументСсылка - ссылка на документ, для которого необходимо изменить состояние оригинала;
// * СостояниеОригиналаПервичногоДокумента - СправочникСсылка.СостоянияОригиналовПервичныхДокументов -
@@ -939,8 +940,9 @@
МассивСсылокДляПроверки = Новый Массив;
ОбъектыЗаписи = Новый Массив;
Для Каждого Строка Из МассивСтрок Цикл
Если ЭтоОбъектУчета(Строка.Ссылка) Тогда
МассивСсылокДляПроверки.Добавить(Строка.Ссылка);
Ссылка = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Строка,"Ссылка");
Если ЭтоОбъектУчета(Ссылка) Тогда
МассивСсылокДляПроверки.Добавить(Ссылка);
ОбъектыЗаписи.Добавить(Строка);
КонецЕсли;
КонецЦикла;
@@ -130,22 +130,6 @@
КонецФункции
// Проверяет и возвращает признак того, есть ли у текущего пользователя права на изменение состояния
//
// Возвращаемое значение:
// Булево - Истина, если у текущего пользователя есть права на изменение состояния оригинала.
//
Функция ПраваНаИзменениеСостояния() Экспорт
Если ПравоДоступа("Редактирование",Метаданные.РегистрыСведений.СостоянияОригиналовПервичныхДокументов)
И ПравоДоступа("Изменение",Метаданные.РегистрыСведений.СостоянияОригиналовПервичныхДокументов) Тогда
Возврат Истина
Иначе
Возврат Ложь
КонецЕсли;
КонецФункции
// Возвращает ключ записи регистра общего состояния оригинала документа по ссылке.
//
// Параметры:
@@ -16,15 +16,9 @@
//
Процедура Подключаемый_УстановитьСостояниеОригинала(Ссылка, Параметры) Экспорт
Если Не УчетОригиналовПервичныхДокументовВызовСервера.ПраваНаИзменениеСостояния() Тогда
ПоказатьПредупреждение(, НСтр("ru = 'У пользователя недостаточно прав на изменение состояния оригинала первичного документа'"));
Возврат;
КонецЕсли;
Список = Параметры.Источник;
Если Список.ВыделенныеСтроки.Количество() = 0 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Не выделено ни одного документа, для которого можно установить выбранное состояние'"));
ПоказатьПредупреждение(, НСтр("ru = 'Не выделено ни одного документа, для которого можно установить выбранное состояние.'"));
Возврат;
КонецЕсли;
@@ -73,11 +67,6 @@
// Список - ТаблицаФормы - список формы, в котором будет происходить изменение состояния.
//
Процедура УстановитьСостояниеОригинала(Команда, Форма, Список) Экспорт
Если Не УчетОригиналовПервичныхДокументовВызовСервера.ПраваНаИзменениеСостояния() Тогда
ПоказатьПредупреждение(, НСтр("ru = 'У пользователя недостаточно прав на изменение состояния оригинала первичного документа'"));
Возврат;
КонецЕсли;
Если Список.ВыделенныеСтроки.Количество() = 0 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Не выделено ни одного документа, для которого можно установить выбранное состояние'"));
@@ -133,11 +122,6 @@
// Если не задан, то элемент с именем "ДекорацияСостояниеОригинала".
//
Процедура ОткрытьМенюВыбораСостояния(Знач Форма, Знач Источник = Неопределено) Экспорт
Если Не УчетОригиналовПервичныхДокументовВызовСервера.ПраваНаИзменениеСостояния() Тогда
ПоказатьПредупреждение(, НСтр("ru = 'У пользователя недостаточно прав на изменение состояния оригинала первичного документа'"));
Возврат;
КонецЕсли;
Если ТипЗнч(Источник) = Неопределено Тогда
Источник = Форма.Элементы.Найти("ДекорацияСостояниеОригинала");
@@ -149,7 +133,7 @@
НепроведенныеДокументы = ОбщегоНазначенияВызовСервера.ПроверитьПроведенностьДокументов(
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ДанныеЗаписи.Ссылка));
Если НепроведенныеДокументы.Количество() = 1 Тогда
ПоказатьПредупреждение(,НСтр("ru = 'Для выполнения команды предварительно проведите документ.'"));
ПоказатьПредупреждение(, НСтр("ru = 'Для выполнения команды предварительно проведите документ.'"));
Возврат;
КонецЕсли;
@@ -257,11 +241,7 @@
Если ИмяПоля = "СостояниеОригиналаПервичногоДокумента" Или ИмяПоля = "СостояниеОригиналПолучен" Тогда
СтандартнаяОбработка = Ложь;
Если Не УчетОригиналовПервичныхДокументовВызовСервера.ПраваНаИзменениеСостояния() Тогда
ПоказатьПредупреждение(, НСтр("ru = 'У пользователя недостаточно прав на изменение состояния оригинала первичного документа'"));
Возврат;
КонецЕсли;
Если УчетОригиналовПервичныхДокументовВызовСервера.ЭтоОбъектУчета(Список.ТекущиеДанные.Ссылка) Тогда
Если УчетОригиналовПервичныхДокументовВызовСервера.ЭтоОбъектУчета(Список.ТекущиеДанные.Ссылка) Тогда
Если ИмяПоля = "СостояниеОригиналаПервичногоДокумента" Тогда
ОткрытьМенюВыбораСостояния(Форма, Список);
ИначеЕсли ИмяПоля = "СостояниеОригиналПолучен" Тогда
@@ -486,14 +466,15 @@
//
Процедура ОткрытьМенюВыбораСостоянияЗавершениеМассив(ВыбранноеСостояниеИзСписка, ДополнительныеПараметры)
Изменено = Ложь;
Изменено = Ложь;
Ссылка = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеПараметры[0], "Ссылка");
Если ВыбранноеСостояниеИзСписка.Значение = "УточнитьПоПечатнымФормам" Тогда
ОткрытьФормуИзмененияСостоянийПечатныхФорм(ДополнительныеПараметры[0].Ссылка);
ОткрытьФормуИзмененияСостоянийПечатныхФорм(Ссылка);
Иначе
УчетОригиналовПервичныхДокументовВызовСервера.УстановитьНовоеСостояниеОригинала(ДополнительныеПараметры,ВыбранноеСостояниеИзСписка.Значение, Изменено);
УчетОригиналовПервичныхДокументовВызовСервера.УстановитьНовоеСостояниеОригинала(ДополнительныеПараметры, ВыбранноеСостояниеИзСписка.Значение, Изменено);
Если Изменено Тогда
ОповеститьПользователяОбУстановкеСостояний(1,ДополнительныеПараметры[0].Ссылка,ВыбранноеСостояниеИзСписка.Значение);
ОповеститьПользователяОбУстановкеСостояний(1, Ссылка, ВыбранноеСостояниеИзСписка.Значение);
Оповестить("ИзменениеСостоянияОригиналаПервичногоДокумента");
КонецЕсли;
КонецЕсли;
@@ -518,7 +499,7 @@
Если Изменено Тогда
ОповеститьПользователяОбУстановкеСостояний(1,ДополнительныеПараметры.Ссылка,ВыбранноеСостояниеИзСписка.Значение);
Оповестить("ИзменениеСостоянияОригиналаПервичногоДокумента");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
@@ -591,12 +591,17 @@
// ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
// ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина;
// ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок = Истина;
// ПараметрыЗапускаПрограммы.Оповещение = Новый ОписаниеОповещения("ПриПолученииРезультатаЗапускаПрограммы", ЭтотОбъект);
//
// Результат = ФайловаяСистемаКлиент.ЗапуститьПрограмму("ping 127.0.0.1 -n 5", ПараметрыЗапускаПрограммы);
//
// КодВозврата = Результат.КодВозврата;
// ПотокВывода = Результат.ПотокВывода;
// ПотокОшибок = Результат.ПотокОшибок;
// ФайловаяСистемаКлиент.ЗапуститьПрограмму("ping 127.0.0.1 -n 5", ПараметрыЗапускаПрограммы);
//
// Пример:
// &НаКлиенте
// Процедура ПриПолученииРезультатаЗапускаПрограммы(Результат, ДополнительныеПараметры) Экспорт
// КодВозврата = Результат.КодВозврата;
// ПотокВывода = Результат.ПотокВывода;
// ПотокОшибок = Результат.ПотокОшибок;
// КонецПроцедуры
//
Процедура ЗапуститьПрограмму(Знач КомандаЗапуска, Знач ПараметрыЗапускаПрограммы = Неопределено) Экспорт
@@ -693,42 +693,65 @@
ДатаПредупреждения = Неопределено;
// Сертификаты ЮЛ и ИП, выданные коммерческими АУЦ не действуют или не будут действовать.
Если ДатаПрекращенияДействия <> Неопределено И Не ДанныеУдостоверяющегоЦентра.Государственный И Не ЭтоФизическоеЛицо И (НаДату >= ДатаПрекращенияДействия
Или НаДату + 30*24*60*60 >= ДатаПрекращенияДействия И Не КонтекстПроверки.ЭтоПроверкаПодписи) Тогда
РезультатПроверкиУдостоверяющегоЦентра.Действует = (НаДату < ДатаПрекращенияДействия);
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ВозможенПеревыпуск = Истина;
Если НаДату < ДатаПрекращенияДействия Тогда
Если ЭтоИндивидуальныйПредприниматель Тогда
ТекстОшибки = НСтр(
"ru = 'С %1 нельзя будет подписывать документы этим сертификатом, так как не будут действовать сертификаты, выданные коммерческими аккредитованными удостоверяющими центрами индивидуальным предпринимателям.'");
Иначе
ТекстОшибки = НСтр(
"ru = 'С %1 нельзя будет подписывать документы этим сертификатом, так как не будут действовать сертификаты, выданные коммерческими аккредитованными удостоверяющими центрами юридическим лицам и их сотрудникам.'");
Если Не ДанныеУдостоверяющегоЦентра.Государственный И Не ЭтоФизическоеЛицо Тогда
ДатаОкончанияВыдачиСертификатовСотрудниковКоммерческимиУЦ = ДатаОкончанияВыдачиСертификатовСотрудниковКоммерческимиУЦ();
Если СвойстваСертификата.ДатаНачала > КонецДня(ДатаОкончанияВыдачиСертификатовСотрудниковКоммерческимиУЦ) Тогда
РезультатПроверкиУдостоверяющегоЦентра.Действует = Ложь;
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ВозможенПеревыпуск = Ложь;
ТекстОшибки = НСтр(
"ru = 'Сертификат не действует, так как выдан коммерческим аккредитованным удостоверяющим центром после %1.'");
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстОшибки, Формат(ДатаОкончанияВыдачиСертификатовСотрудниковКоммерческимиУЦ, "ДЛФ=D"));
Если Не КонтекстПроверки.ЭтоПроверкаПодписи Тогда
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ДополнительныеСведения = РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ТекстОшибки;
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.Решение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Подайте <a href = ""%1"">заявление</a> на новый сертификат.'"), "ПодатьЗаявлениеНаСертификат");
КонецЕсли;
ДатаПредупреждения = ДатаПрекращенияДействия;
Иначе
Если ЭтоИндивидуальныйПредприниматель Тогда
ТекстОшибки = НСтр(
"ru = 'Сертификат не действует c %1, так как с этой даты не действуют сертификаты, выданные коммерческими аккредитованными удостоверяющими центрами индивидуальным предпринимателям.'");
ИначеЕсли ДатаПрекращенияДействия <> Неопределено И НаДату >= ДатаПрекращенияДействия
Или НаДату + 30*24*60*60 >= ДатаПрекращенияДействия И Не КонтекстПроверки.ЭтоПроверкаПодписи Тогда
РезультатПроверкиУдостоверяющегоЦентра.Действует = (НаДату < ДатаПрекращенияДействия);
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ВозможенПеревыпуск = Истина;
Если НаДату < ДатаПрекращенияДействия Тогда
Если ЭтоИндивидуальныйПредприниматель Тогда
ТекстОшибки = НСтр(
"ru = 'С %1 нельзя будет подписывать документы этим сертификатом, так как не будут действовать сертификаты, выданные коммерческими аккредитованными удостоверяющими центрами индивидуальным предпринимателям.'");
Иначе
ТекстОшибки = НСтр(
"ru = 'С %1 нельзя будет подписывать документы этим сертификатом, так как не будут действовать сертификаты, выданные коммерческими аккредитованными удостоверяющими центрами юридическим лицам и их сотрудникам.'");
КонецЕсли;
ДатаПредупреждения = ДатаПрекращенияДействия;
Иначе
ТекстОшибки = НСтр(
"ru = 'Сертификат не действует c %1, так как с этой даты не действуют сертификаты, выданные коммерческими аккредитованными удостоверяющими центрами юридическим лицам и их сотрудникам.'");
Если ЭтоИндивидуальныйПредприниматель Тогда
ТекстОшибки = НСтр(
"ru = 'Сертификат не действует c %1, так как с этой даты не действуют сертификаты, выданные коммерческими аккредитованными удостоверяющими центрами индивидуальным предпринимателям.'");
Иначе
ТекстОшибки = НСтр(
"ru = 'Сертификат не действует c %1, так как с этой даты не действуют сертификаты, выданные коммерческими аккредитованными удостоверяющими центрами юридическим лицам и их сотрудникам.'");
КонецЕсли;
КонецЕсли;
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстОшибки, Формат(ДатаПрекращенияДействия, "ДЛФ=D"));
Если Не КонтекстПроверки.ЭтоПроверкаПодписи Тогда
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ДополнительныеСведения = РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ТекстОшибки;
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.Решение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Подайте <a href = ""%1"">заявление</a> на новый сертификат.'"), "ПодатьЗаявлениеНаСертификат");
КонецЕсли;
КонецЕсли;
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстОшибки, Формат(ДатаПрекращенияДействия, "ДЛФ=D"));
Если Не КонтекстПроверки.ЭтоПроверкаПодписи Тогда
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ДополнительныеСведения = РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.ТекстОшибки;
РезультатПроверкиУдостоверяющегоЦентра.Предупреждение.Решение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Подайте <a href = ""%1"">заявление</a> на новый сертификат.'"), "ПодатьЗаявлениеНаСертификат");
КонецЕсли;
КонецЕсли;
Если Не РезультатПроверкиУдостоверяющегоЦентра.Действует Или КонтекстПроверки.ЭтоПроверкаПодписи Тогда
@@ -799,6 +822,12 @@
КонецФункции
Функция ДатаОкончанияВыдачиСертификатовСотрудниковКоммерческимиУЦ()
Возврат Дата(2023, 08, 31);
КонецФункции
Функция СсылкаНаСтатьюОбУдостоверяющихЦентрах() Экспорт
Возврат "https://its.1c.ru/bmk/esig_uc";
@@ -89,7 +89,14 @@
Оповещение = Новый ОписаниеОповещения("УстановитьСписокОтзываСертификатаПослеПодключенияКомпоненты",
ЭтотОбъект, ПараметрыУстановкиСпискаОтзыва);
ВыполнитьПослеПроверкиРасширенияИКомпоненты(Оповещение);
Параметры = Новый Структура;
Если ЗначениеЗаполнено(ПараметрыУстановкиСпискаОтзыва.ТекстПояснения) Тогда
Параметры.Вставить("ТекстПояснения", ПараметрыУстановкиСпискаОтзыва.ТекстПояснения);
КонецЕсли;
ВыполнитьПослеПроверкиРасширенияИКомпоненты(Оповещение, Параметры);
КонецПроцедуры
@@ -116,6 +123,7 @@
// ## УстановкаВыполнена - Булево
// ## Сообщение - сообщение о результате установки
// * Форма - ФормаКлиентскогоПриложения - владелец формы установки
// * ТекстПояснения - Строка - текст пояснения для установки компоненты.
//
Функция ПараметрыУстановкиСпискаОтзыва(Сертификат) Экспорт
@@ -125,6 +133,7 @@
ПараметрыУстановкиСпискаОтзыва.Вставить("АдресВнутренний");
ПараметрыУстановкиСпискаОтзыва.Вставить("ОповещениеОЗавершении");
ПараметрыУстановкиСпискаОтзыва.Вставить("Форма");
ПараметрыУстановкиСпискаОтзыва.Вставить("ТекстПояснения");
Возврат ПараметрыУстановкиСпискаОтзыва;
@@ -2030,6 +2039,9 @@
ПараметрыУстановкиСпискаОтзыва.АдресВнутренний = АдресСпискаОтзываВнутренний.АдресВнутренний;
ПараметрыУстановкиСпискаОтзыва.ОповещениеОЗавершении = Новый ОписаниеОповещения("ПроверитьСертификатПовторно",
ЭтотОбъект, Контекст);
ПараметрыУстановкиСпискаОтзыва.ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для проверки сертификата требуется установка списка отзыва с помощью внешней компоненты %1.'"),
"ExtraCryptoAPI");
УстановитьСписокОтзываСертификата(ПараметрыУстановкиСпискаОтзыва);
Возврат;
КонецЕсли;
@@ -2070,6 +2082,13 @@
ТекстПредыдущейОшибки = Контекст.ДействияДляУстраненияОшибок.Получить("УстановитьСписокОтзываСертификата");
ПроверитьСертификатНаКлиентеПослеОшибкиПроверки(ТекстПредыдущейОшибки, Ложь, Контекст);
ТекстОшибкиУстановкиСпискаОтзыва = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось установить список отзыва при проверке сертификата: %1'"), Результат.Сообщение);
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
НСтр("ru = 'Электронная подпись.Обновление списков отзыва'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
"Предупреждение", ТекстОшибкиУстановкиСпискаОтзыва,, Истина);
Возврат;
КонецЕсли;
@@ -2346,6 +2365,9 @@
// - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования - программа
// для которой нужно создать и вернуть менеджер криптографии.
// - Структура - см. ЭлектроннаяПодпись.НовоеОписаниеПрограммы
// - ДвоичныеДанные - данные подписи или сертификата в кодировке DER для определения программы.
// - Строка - адрес двоичных данных, описанных выше, во временном хранилище.
//
//
// * ИнтерактивныйРежим - Булево - если Истина, тогда менеджер криптографии будет создан
// в режиме использования интерактивного режима криптографии
@@ -2858,7 +2880,7 @@
КонецПроцедуры
Асинх Функция ОбъектВнешнейКомпонентыExtraCryptoAPI(ПредложитьУстановить = Истина)
Асинх Функция ОбъектВнешнейКомпонентыExtraCryptoAPI(ПредложитьУстановить = Истина, ТекстПояснения = Неопределено)
Если Не ОбщегоНазначенияКлиент.ЭтоWindowsКлиент()
И Не ОбщегоНазначенияКлиент.ЭтоLinuxКлиент()
@@ -2870,9 +2892,13 @@
ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеКомпоненты();
ПараметрыПодключения = ОбщегоНазначенияКлиент.ПараметрыПодключенияКомпоненты();
ПараметрыПодключения.ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для упрощения работы с криптографией требуется установка внешней компоненты %1.'"),
ОписаниеКомпоненты.ИмяОбъекта);
Если ТекстПояснения = Неопределено Тогда
ПараметрыПодключения.ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для упрощения работы с криптографией требуется установка внешней компоненты %1.'"),
ОписаниеКомпоненты.ИмяОбъекта);
Иначе
ПараметрыПодключения.ТекстПояснения = ТекстПояснения;
КонецЕсли;
ПараметрыПодключения.ПредложитьУстановить = ПредложитьУстановить;
ПараметрыПодключения.ПредложитьЗагрузить = Ложь;
@@ -2918,8 +2944,13 @@
Результат = Новый Структура("Программа, Ошибка");
Если ОбъектКомпоненты = Неопределено Тогда
ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для получения данных о программе для работы с сертификатом электронной подписи требуется установка внешней компоненты %1.'"),
"ExtraCryptoAPI");
Попытка
ОбъектКомпоненты = Ждать ОбъектВнешнейКомпонентыExtraCryptoAPI(ПредложитьУстановить);
ОбъектКомпоненты = Ждать ОбъектВнешнейКомпонентыExtraCryptoAPI(ПредложитьУстановить, ТекстПояснения);
Исключение
Результат.Ошибка = ТекстОшибкиНеУстановленаКомпонента();
Возврат Результат;
@@ -9076,10 +9107,16 @@
Контекст = Новый Структура;
Контекст.Вставить("УстанавливатьРасширение", Истина);
Контекст.Вставить("УстанавливатьКомпоненту", Истина);
Контекст.Вставить("ТекстПояснения");
Если ТипЗнч(Параметры) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(Контекст, Параметры);
КонецЕсли;
Если Контекст.ТекстПояснения = Неопределено Тогда
Контекст.ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для выполнения требуется установка компоненты %1'"), "ExtraCryptoAPI")
КонецЕсли;
Контекст.Вставить("Оповещение", Оповещение);
@@ -9123,8 +9160,7 @@
КонецЕсли;
ПараметрыПодключения = ОбщегоНазначенияКлиент.ПараметрыПодключенияКомпоненты();
ПараметрыПодключения.ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для выполнения требуется установка компоненты %1'"), "ExtraCryptoAPI");
ПараметрыПодключения.ТекстПояснения = Контекст.ТекстПояснения;
ПараметрыПодключения.ПредложитьУстановить = Контекст.УстанавливатьКомпоненту;
ПараметрыПодключения.ПредложитьЗагрузить = Контекст.УстанавливатьКомпоненту;
ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеКомпоненты();
@@ -9322,7 +9358,14 @@
КонецЕсли;
// Результат выполнения фонового задания.
Результат = ПолучитьИзВременногоХранилища(РезультатВыполнения.АдресРезультата);
Попытка
Результат = ПолучитьИзВременногоХранилища(РезультатВыполнения.АдресРезультата);
Исключение
ТекстОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
ОбработатьОшибкуУстановкиСпискаОтзыва(ТекстОшибки, Контекст);
Возврат;
КонецПопытки;
УдалитьИзВременногоХранилища(РезультатВыполнения.АдресРезультата);
Если ЗначениеЗаполнено(Результат.СообщениеОбОшибке) И Не ЗначениеЗаполнено(Результат.ДанныеФайла) Тогда
@@ -9742,8 +9785,13 @@
Результат.Вставить("Ошибка", "");
Если ОбъектКомпоненты = Неопределено Тогда
ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для получения данных об установленных программах для работы с электронной подписью требуется установка внешней компоненты %1.'"),
"ExtraCryptoAPI");
Попытка
ОбъектКомпоненты = Ждать ОбъектВнешнейКомпонентыExtraCryptoAPI(ПредложитьУстановить);
ОбъектКомпоненты = Ждать ОбъектВнешнейКомпонентыExtraCryptoAPI(ПредложитьУстановить, ТекстПояснения);
Исключение
Результат.Ошибка = ТекстОшибкиНеУстановленаКомпонента();
Возврат Результат;
@@ -1710,8 +1710,8 @@
КонецЕсли;
ДатаПодписиИзМетки = Дата(3999, 12, 31);
Если ЗначениеЗаполнено(Подпись.НеподтвержденноеВремяПодписи) Тогда
ПараметрыПодписи.НеподтвержденнаяДатаПодписи = Подпись.НеподтвержденноеВремяПодписи + ДобавкаВремени;
Если ЗначениеЗаполнено(Подпись.НеподтвержденнаяДатаПодписи) Тогда
ПараметрыПодписи.НеподтвержденнаяДатаПодписи = Подпись.НеподтвержденнаяДатаПодписи + ДобавкаВремени;
КонецЕсли;
ПараметрыПодписи.ТипПодписи = ТипПодписиКриптографии(Подпись.ТипПодписи);
@@ -2461,12 +2461,32 @@
Представление = "";
ЭлектроннаяПодписьКлиентСерверЛокализация.ПриПолученииПредставленияСубъекта(Сертификат, Представление);
Если ПустаяСтрока(Представление) Тогда
Субъект = СвойстваСубъектаСертификата(Сертификат);
Если ЗначениеЗаполнено(Субъект.ОбщееИмя) Тогда
Если ЗначениеЗаполнено(Субъект.Фамилия) И ЗначениеЗаполнено(Субъект.Имя) Тогда
Представление = Субъект.Фамилия + " " + Субъект.Имя;
ИначеЕсли ЗначениеЗаполнено(Субъект.Фамилия) Тогда
Представление = Субъект.Фамилия;
ИначеЕсли ЗначениеЗаполнено(Субъект.Имя) Тогда
Представление = Субъект.Имя;
КонецЕсли;
Если ЗначениеЗаполнено(Представление) Тогда
Если ЗначениеЗаполнено(Субъект.Организация) Тогда
Представление = Представление + ", " + Субъект.Организация;
КонецЕсли;
Если ЗначениеЗаполнено(Субъект.Подразделение) Тогда
Представление = Представление + ", " + Субъект.Подразделение;
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(Субъект.ОбщееИмя) Тогда
Представление = Субъект.ОбщееИмя;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Представление;
КонецФункции
@@ -2603,6 +2623,14 @@
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Свойства, РасширенныеСвойства, Истина);
КонецЕсли;
Если Не ЗначениеЗаполнено(Свойства.Фамилия) И Субъект.Свойство("SN") Тогда
Свойства.Фамилия = ПодготовитьСтроку(Субъект.SN);
КонецЕсли;
Если Не ЗначениеЗаполнено(Свойства.Имя) И Субъект.Свойство("GN") Тогда
Свойства.Имя = ПодготовитьСтроку(Субъект.GN);
КонецЕсли;
Возврат Свойства;
КонецФункции
@@ -3711,9 +3739,9 @@
КонецФункции
Функция АлгоритмСформированнойПодписи(ДанныеПодписи, ВключаяOID = Ложь, ТолькоOID = Ложь) Экспорт
Функция АлгоритмСформированнойПодписи(ДанныеПодписи, ВключаяOID = Ложь, ТолькоOID = Ложь, АлгоритмПодписиНеСоответствуетГОСТ = Неопределено) Экспорт
Возврат АлгоритмПодписи(ДанныеПодписи, Ложь, ВключаяOID, ТолькоOID);
Возврат АлгоритмПодписи(ДанныеПодписи, Ложь, ВключаяOID, ТолькоOID, АлгоритмПодписиНеСоответствуетГОСТ);
КонецФункции
@@ -3723,12 +3751,13 @@
КонецФункции
Функция АлгоритмПодписи(Данные, ЭтоДанныеСертификата = Неопределено, ВключаяOID = Ложь, ТолькоOID = Ложь)
Функция АлгоритмПодписи(Данные, ЭтоДанныеСертификата, ВключаяOID = Ложь, ТолькоOID = Ложь, АлгоритмПодписиНеСоответствуетГОСТ = Неопределено)
ДвоичныеДанные = ДвоичныеДанныеИзДанных(Данные,
"ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписи");
АнализДанных = НовыйАнализДанных(ДвоичныеДанные);
OIDАлгоритмаХеширования = "";
Если ЭтоДанныеСертификата Тогда
// SEQUENCE (Certificate).
@@ -3754,6 +3783,7 @@
// OBJECT IDENTIFIER (algorithm).
ПропуститьНачалоБлока(АнализДанных, 0, 6);
Иначе
// SEQUENCE (PKCS #7 ContentInfo).
ПропуститьНачалоБлока(АнализДанных, 0, 16);
// OBJECT IDENTIFIER (contentType).
@@ -3783,8 +3813,13 @@
ПропуститьБлок(АнализДанных, 0, 2);
// SEQUENCE (issuerAndSerialNumber IssuerAndSerialNumber).
ПропуститьБлок(АнализДанных, 0, 16);
// SEQUENCE (digestAlgorithm DigestAlgorithmIdentifier).
ПропуститьБлок(АнализДанных, 0, 16);
// SEQUENCE (digestAlgorithm DigestAlgorithmIdentifier).
ПропуститьНачалоБлока(АнализДанных, 0, 16);
// OBJECT IDENTIFIER (algorithm).
ПропуститьНачалоБлока(АнализДанных, 0, 6);
OIDАлгоритмаХеширования = ПрочитанныйOID(АнализДанных);
ПропуститьРодительскийБлок(АнализДанных); // OBJECT IDENTIFIER (algorithm)
ПропуститьРодительскийБлок(АнализДанных); // SEQUENCE (digestAlgorithm DigestAlgorithmIdentifier).
// [0]CS (authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL).
ПропуститьБлок(АнализДанных, 2, 0, Ложь);
// SEQUENCE (digestEncryptionAlgorithm AlgorithmIdentifier).
@@ -3798,6 +3833,22 @@
Возврат "";
КонецЕсли;
СоответствующийOIDПодписи = АлгоритмПодписиСоответствующийАлгоритмуХешированияГОСТ(OIDАлгоритмаХеширования);
Если СоответствующийOIDПодписи <> Неопределено И OIDАлгоритмаПодписи <> СоответствующийOIDПодписи Тогда
ИдентификаторыАлгоритмов = ИдентификаторыАлгоритмовПодписи(Ложь);
АлгоритмНеправильный = АлгоритмПоOID(OIDАлгоритмаПодписи, ИдентификаторыАлгоритмов, Истина);
АлгоритмПравильный = АлгоритмПоOID(СоответствующийOIDПодписи, ИдентификаторыАлгоритмов, Истина);
ИдентификаторыАлгоритмов = ИдентификаторыАлгоритмовХеширования();
АлгоритмХеширования = АлгоритмПоOID(OIDАлгоритмаХеширования, ИдентификаторыАлгоритмов, Истина);
АлгоритмПодписиНеСоответствуетГОСТ = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Алгоритм %1, указанный в подписи, не соответствует стандарту, так как должен быть указан %2, соответствующий алгоритму хеширования %3.'"),
АлгоритмНеправильный, АлгоритмПравильный, АлгоритмХеширования);
OIDАлгоритмаПодписи = СоответствующийOIDПодписи;
КонецЕсли;
Если ТолькоOID Тогда
Возврат OIDАлгоритмаПодписи;
КонецЕсли;
@@ -4616,6 +4667,20 @@
КонецФункции
Функция АлгоритмПодписиСоответствующийАлгоритмуХешированияГОСТ(АлгоритмХеширования)
Если Не ЗначениеЗаполнено(АлгоритмХеширования) Тогда
Возврат Неопределено;
КонецЕсли;
Соответствие = Новый Соответствие;
Соответствие.Вставить("1.2.643.7.1.1.2.2", "1.2.643.7.1.1.1.1");
Соответствие.Вставить("1.2.643.7.1.1.2.3", "1.2.643.7.1.1.1.2");
Возврат Соответствие.Получить(АлгоритмХеширования);
КонецФункции
Функция СертификатСуществует(СертификатКриптографии) Экспорт
Если СертификатКриптографии = Неопределено Тогда
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="6f3c5b90-b030-4267-a973-33d12c2c7680">
<name>КомпонентаСканированияДокументов_3_1_0_1014</name>
<name>КомпонентаСканированияДокументов_3_1_0_1018</name>
<synonym>
<key>ru</key>
<value>Компонента сканирования документов</value>
+10 -11
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="f830cc56-4e44-41a9-8b17-1b1c3877f7f9">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="4b932d5e-2cdb-4dec-9c56-c0ffeaffafd6">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="4e8ca3ec-69a4-4fa3-8e00-003bf41afe93"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="094091ea-0a0a-4268-8de5-a92e2ccc3329"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="3bca20de-914f-408c-9cdf-5f15cb91f768"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="f27b525f-0973-4699-8676-e1b8a8b2a181"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="00fc955b-bd78-4a9a-bd0c-3467e02fd9ed"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="74b97582-fd3b-4c85-88c4-bfc52ad549bc"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="e4ef0130-3edf-43de-8764-1b54c88bbb90"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="0a2e600b-f69c-43e8-8343-4881abe77bc6"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="ebbbf3a2-71c6-49ea-9e41-0e8065749ecc"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="2f729347-ab29-406f-8f81-256f0065b045"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="87b8e073-59ce-430d-8b67-9a06cc7c4c51"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="54926faf-6b8a-4b0c-8828-de40555d641c"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="71f0d9ac-54bf-480e-8b12-9b0ca7c017b6"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="d898ccb7-618e-48c6-ac4d-4cd1242bc07f"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.9.179</version>
<version>3.1.9.199</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -857,13 +857,12 @@
<commonTemplates>CommonTemplate.КомпонентаПечатиQRКода</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаПечатиШтрихкодов</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаПоискаСтрок</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаСканированияДокументов_3_1_0_1014</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаСканированияДокументов_3_1_0_1018</commonTemplates>
<commonTemplates>CommonTemplate.МакетШтемпеляЭЦПOfficeOpen</commonTemplates>
<commonTemplates>CommonTemplate.ПолучениеДереваОбработчиковОбновления</commonTemplates>
<commonTemplates>CommonTemplate.ПустойМакетDOCX</commonTemplates>
<commonTemplates>CommonTemplate.СтруктураПодчиненности</commonTemplates>
<filterCriteria>FilterCriterion.СвязанныеДокументы</filterCriteria>
<filterCriteria>FilterCriterion.ФайлыВТоме</filterCriteria>
<commonModules>CommonModule.GoogleПереводчик</commonModules>
<commonModules>CommonModule.АвтономнаяРабота</commonModules>
<commonModules>CommonModule.АвтономнаяРаботаСлужебный</commonModules>
@@ -1 +1 @@
{6,1,1,e44204a0-6217-4906-8681-6e266c451894,1,077892e1-be16-48cf-b148-d977aadc7dd7,"3.1.9.179","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",7613,1,0,f830cc56-4e44-41a9-8b17-1b1c3877f7f9,f830cc56-4e44-41a9-8b17-1b1c3877f7f9,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,3eca2d7c-5946-4d13-ba84-e3ab5ef38b5b,3eca2d7c-5946-4d13-ba84-e3ab5ef38b5b,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,a3001de6-272f-444e-a8db-ec8cc3a670a2,a3001de6-272f-444e-a8db-ec8cc3a670a2,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754Line truncated
{6,1,1,98ce37ff-fa99-411e-b324-45e5458ee046,1,e7f0dc50-68f1-4dfe-b306-c90516c7ce82,"3.1.9.199","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",7612,1,0,4b932d5e-2cdb-4dec-9c56-c0ffeaffafd6,4b932d5e-2cdb-4dec-9c56-c0ffeaffafd6,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,3eca2d7c-5946-4d13-ba84-e3ab5ef38b5b,3eca2d7c-5946-4d13-ba84-e3ab5ef38b5b,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,a3001de6-272f-444e-a8db-ec8cc3a670a2,a3001de6-272f-444e-a8db-ec8cc3a670a2,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754Line truncated
@@ -1945,7 +1945,7 @@
Строка = СопоставленныеДанные.Получить(НомерСтроки - 1);
Ячейка = ТаблицаОтчет.ПолучитьОбласть(НомерСтроки + 1, 1, НомерСтроки + 1, 1);
Ячейка.ТекущаяОбласть.Текст = Строка.РезультатСопоставленияСтроки;
Ячейка.ТекущаяОбласть.Текст = ПредставлениеСтатусаЗагрузки(Строка.РезультатСопоставленияСтроки);
Ячейка.ТекущаяОбласть.Расшифровка = Строка.ОбъектСопоставления;
Ячейка.ТекущаяОбласть.Примечание.Текст = Строка.ОписаниеОшибки;
Если Строка.РезультатСопоставленияСтроки = "Создан" Тогда
@@ -2024,6 +2024,20 @@
ТаблицаОтчет.ФиксацияСверху = 1;
КонецПроцедуры
Функция ПредставлениеСтатусаЗагрузки(Статус)
Если Статус = "Создан" Тогда
Возврат НСтр("ru = 'Создан'");
ИначеЕсли Статус = "Обновлен" Тогда
Возврат НСтр("ru = 'Обновлен'");
ИначеЕсли Статус = "Пропущен" Тогда
Возврат НСтр("ru = 'Пропущен'");
КонецЕсли;
Возврат "";
КонецФункции
#КонецОбласти
//////////////////// Функциональные опции ///////////////////////////////////////
@@ -2325,6 +2325,12 @@
<stringQualifiers/>
</valueType>
</parameters>
<parameters>
<name>ОткрытаПоСценарию</name>
<valueType>
<types>Boolean</types>
</valueType>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -18,7 +18,7 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не Параметры.Свойство("ОткрытаПоСценарию") Тогда
Если Не Параметры.ОткрытаПоСценарию Тогда
ВызватьИсключение НСтр("ru = 'Обработка не предназначена для непосредственного использования.'");
КонецЕсли;
@@ -743,7 +743,7 @@
КонецФункции
&НаСервереБезКонтекста
Функция ВозможныйКодСсылки(Знач Ссылка, КэшМетаданных)
Функция КодОбъекта(Знач Ссылка, КэшМетаданных)
Мета = Ссылка.Метаданные();
ЕстьКод = КэшМетаданных[Мета];
@@ -757,7 +757,7 @@
КэшМетаданных[Мета] = ЕстьКод;
КонецЕсли;
Возврат ?(ЕстьКод, Ссылка.Код, Неопределено);
Возврат ?(ЕстьКод, ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Код"), Неопределено);
КонецФункции
&НаСервере
@@ -825,7 +825,7 @@
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("НаборСсылок", МассивСсылок);
Если ЕстьВладельцы Тогда
Запрос.УстановитьПараметр("Владелец", ЦелевойЭлемент.Владелец);
Запрос.УстановитьПараметр("Владелец", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЦелевойЭлемент, "Владелец"));
КонецЕсли;
Результат = Запрос.ВыполнитьПакет();
@@ -968,7 +968,7 @@
СтрокаДерева = КорневыеСтроки.Добавить();
СтрокаДерева.Ссылка = Ссылка;
СтрокаДерева.Данные = Строка(Ссылка);
СтрокаДерева.Код = Строка( ВозможныйКодСсылки(Ссылка, КэшМетаданных) );
СтрокаДерева.Код = Строка(КодОбъекта(Ссылка, КэшМетаданных));
СтрокаДерева.Пиктограмма = -1;
ОшибкиПоСсылке = СтрокаДерева.ПолучитьЭлементы();
@@ -1001,7 +1001,7 @@
КонецЕсли;
СтрокаОшибки.ПодробнаяПричина = СтрокаРезультата.ТекстОшибки;
КонецЦикла; // результаты замены
КонецЦикла;
Возврат КорневыеСтроки.Количество() > 0;
КонецФункции
@@ -18,7 +18,7 @@
ИнициализироватьОбъединяемыеСсылки(Параметры.НаборСсылок);
МетаданныеОбъекта = ОсновнойЭлемент.Ссылка.Метаданные();
МетаданныеОбъекта = ОсновнойЭлемент.Метаданные();
ЕстьПравоБезвозвратногоУдаления = ПравоДоступа("АдминистрированиеДанных", Метаданные)
Или ПравоДоступа("ИнтерактивноеУдаление", МетаданныеОбъекта);
СобытиеОповещенияОЗамене = Обработки.ЗаменаИОбъединениеЭлементов.СобытиеОповещенияОЗамене();
@@ -1072,24 +1072,25 @@
МаксСсылка = Неопределено;
МаксМест = -1;
ПометкиУдаления = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(
ТаблицаИспользования.ВыгрузитьКолонку("Ссылка"), "ПометкаУдаления");
Для Каждого Строка Из ТаблицаИспользования Цикл
Ссылка = Строка.Ссылка;
СтрокаИспользования = НовыеМестаИспользования.Найти(Ссылка, "Ссылка");
СтрокаИспользования = НовыеМестаИспользования.Найти(Строка.Ссылка, "Ссылка");
Если СтрокаИспользования = Неопределено Тогда
СтрокаИспользования = НовыеМестаИспользования.Добавить();
СтрокаИспользования.Ссылка = Ссылка;
СтрокаИспользования.Ссылка = Строка.Ссылка;
КонецЕсли;
Мест = Строка.Вхождения;
Если Мест > МаксМест И Не Ссылка.ПометкаУдаления Тогда
МаксСсылка = Ссылка;
Если Мест > МаксМест И Не ПометкиУдаления[Строка.Ссылка] Тогда
МаксСсылка = Строка.Ссылка;
МаксМест = Мест;
КонецЕсли;
СтрокаИспользования.МестИспользования = Мест;
СтрокаИспользования.Код = КодОбъекта(Ссылка, КэшМетаданных);
СтрокаИспользования.Владелец = ВладелецОбъекта(Ссылка, КэшМетаданных);
СтрокаИспользования.Код = КодОбъекта(Строка.Ссылка, КэшМетаданных);
СтрокаИспользования.Владелец = ВладелецОбъекта(Строка.Ссылка, КэшМетаданных);
СтрокаИспользования.НеИспользуется = ?(Мест = 0, НСтр("ru = 'Не используется'"), "");
КонецЦикла;
@@ -45,7 +45,7 @@
Функция ВерсияКалендарей() Экспорт
Возврат 61;
Возврат 63;
КонецФункции
@@ -57,7 +57,7 @@
Функция ВерсияОбновленияДанныхПроизводственныхКалендарей() Экспорт
Возврат "3.1.9.157";
Возврат "3.1.9.191";
КонецФункции
@@ -49,6 +49,9 @@
<Item Calendar="01" Year="2023" DayType="Воскресенье" Date="20231006" SwapDate="20231001"/>
<Item Calendar="01" Year="2024" DayType="Предпраздничный" Date="20240409" SwapDate=""/>
<Item Calendar="01" Year="2024" DayType="Праздник" Date="20240410" SwapDate=""/>
<Item Calendar="01" Year="2024" DayType="Суббота" Date="20240513" SwapDate="20240518"/>
<Item Calendar="01" Year="2024" DayType="Праздник" Date="20240514" SwapDate=""/>
<Item Calendar="01" Year="2024" DayType="Предпраздничный" Date="20240518" SwapDate="20240513"/>
<Item Calendar="01" Year="2024" DayType="Праздник" Date="20240616" SwapDate="20240617"/>
<Item Calendar="01" Year="2024" DayType="Воскресенье" Date="20240617" SwapDate="20240616"/>
<Item Calendar="01" Year="2024" DayType="Предпраздничный" Date="20241004" SwapDate=""/>
@@ -594,8 +597,7 @@
<Item Calendar="16" Year="2023" DayType="Праздник" Date="20231106" SwapDate=""/>
<Item Calendar="16" Year="2024" DayType="Предпраздничный" Date="20240409" SwapDate=""/>
<Item Calendar="16" Year="2024" DayType="Праздник" Date="20240410" SwapDate=""/>
<Item Calendar="16" Year="2024" DayType="Праздник" Date="20240616" SwapDate="20240617"/>
<Item Calendar="16" Year="2024" DayType="Воскресенье" Date="20240617" SwapDate="20240616"/>
<Item Calendar="16" Year="2024" DayType="Праздник" Date="20240616" SwapDate=""/>
<Item Calendar="16" Year="2024" DayType="Предпраздничный" Date="20240829" SwapDate=""/>
<Item Calendar="16" Year="2024" DayType="Праздник" Date="20240830" SwapDate=""/>
<Item Calendar="16" Year="2024" DayType="Предпраздничный" Date="20241105" SwapDate=""/>
@@ -867,8 +869,9 @@
<Item Calendar="75" Year="2022" DayType="Праздник" Date="20220202" SwapDate=""/>
<Item Calendar="75" Year="2023" DayType="Предпраздничный" Date="20230220" SwapDate=""/>
<Item Calendar="75" Year="2023" DayType="Праздник" Date="20230221" SwapDate=""/>
<Item Calendar="75" Year="2024" DayType="Праздник" Date="20240211" SwapDate="20240212"/>
<Item Calendar="75" Year="2024" DayType="Воскресенье" Date="20240212" SwapDate="20240211"/>
<Item Calendar="75" Year="2024" DayType="Предпраздничный" Date="20240209" SwapDate=""/>
<Item Calendar="75" Year="2024" DayType="Праздник" Date="20240210" SwapDate="20240212"/>
<Item Calendar="75" Year="2024" DayType="Суббота" Date="20240212" SwapDate="20240210"/>
<Item Calendar="85" Year="2016" DayType="Предпраздничный" Date="20160208" SwapDate=""/>
<Item Calendar="85" Year="2016" DayType="Праздник" Date="20160209" SwapDate=""/>
<Item Calendar="85" Year="2017" DayType="Праздник" Date="20170227" SwapDate=""/>
@@ -242,24 +242,20 @@
КонецЕсли;
Возврат ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(
АдминистраторИБ.ИдентификаторПользователяИБ);
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(АдминистраторИБ, "ИдентификаторПользователяИБ"));
КонецФункции
&НаСервереБезКонтекста
Функция ИмяПользователяИнформационнойБазы(Знач Пользователь)
Если ЗначениеЗаполнено(Пользователь) Тогда
ИдентификаторПользователяИБ = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователь, "ИдентификаторПользователяИБ");
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ИдентификаторПользователяИБ);
Возврат ПользовательИБ.Имя;
Иначе
Если Не ЗначениеЗаполнено(Пользователь) Тогда
Возврат "";
КонецЕсли;
ИдентификаторПользователяИБ = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователь, "ИдентификаторПользователяИБ");
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ИдентификаторПользователяИБ);
Возврат ПользовательИБ.Имя;
КонецФункции
@@ -533,7 +533,6 @@
<name>ОбработчикиСНизкимПриоритетомКоманднаяПанель</name>
<id>37</id>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<searchStringAddition>
<name>ОбработчикиСНизкимПриоритетомСтрокаПоиска</name>
@@ -673,6 +672,7 @@
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
<enabled>false</enabled>
<userVisible>
<common>true</common>
@@ -877,6 +877,38 @@
| И Изменяемые.Порядок <> ЗНАЧЕНИЕ(Перечисление.ПорядокОбработчиковОбновления.Критичный))
| ИЛИ (Читаемые.Порядок = ЗНАЧЕНИЕ(Перечисление.ПорядокОбработчиковОбновления.Обычный)
| И Изменяемые.Порядок = ЗНАЧЕНИЕ(Перечисление.ПорядокОбработчиковОбновления.Некритичный))
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЧтениеНизкогоПорядка.Читатель КАК Читатель,
| ЧтениеНизкогоПорядка.ОбъектМетаданных КАК ОбъектМетаданных,
| ЧтениеНизкогоПорядка.ПорядокЧитатель КАК ПорядокЧитатель,
| ЧтениеНизкогоПорядка.ПорядокПисатель КАК ПорядокПисатель,
| ЧтениеНизкогоПорядка.ПорядокЧитатель.Порядок КАК ЧислоПорядокЧитатель,
| ЧтениеНизкогоПорядка.ПорядокПисатель.Порядок КАК ЧислоПорядокПисатель,
| Приоритеты.Порядок КАК ПриоритетыПорядок,
| ЧтениеНизкогоПорядка.Писатель КАК Писатель,
| ОбработчикиЧитатели.ИмяОбъекта КАК ОбъектЧитатель,
| ОбработчикиПисатели.ИмяОбъекта КАК ОбъектПисатель,
| ЧтениеНизкогоПорядка.ПроцедураЧитатель КАК ПроцедураЧитатель,
| ЧтениеНизкогоПорядка.ПроцедураПисатель КАК ПроцедураПисатель
|ПОМЕСТИТЬ втВтЧтениеНизкогоПорядкаСФильтромПоПриоритету
|ИЗ
| ВтЧтениеНизкогоПорядка КАК ЧтениеНизкогоПорядка
| ЛЕВОЕ СОЕДИНЕНИЕ НовыеПриоритеты КАК Приоритеты
| ПО ЧтениеНизкогоПорядка.Читатель = Приоритеты.ОбработчикПисатель
| И ЧтениеНизкогоПорядка.Писатель = Приоритеты.ОбработчикЧитательИлиПисатель2
|
| ЛЕВОЕ СОЕДИНЕНИЕ Обработчики КАК ОбработчикиЧитатели
| ПО ЧтениеНизкогоПорядка.Читатель = ОбработчикиЧитатели.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Обработчики КАК ОбработчикиПисатели
| ПО ЧтениеНизкогоПорядка.Писатель = ОбработчикиПисатели.Ссылка
|ГДЕ
| НЕ (ОбработчикиЧитатели.ИмяОбъекта = ОбработчикиПисатели.ИмяОбъекта
| И ЧтениеНизкогоПорядка.ПорядокЧитатель.Порядок < ЧтениеНизкогоПорядка.ПорядокПисатель.Порядок
| И Приоритеты.Порядок = ""До"")
|";
#КонецОбласти
@@ -909,7 +941,7 @@
| ИСТИНА КАК ЗаданПорядокВыполнения,
| ИСТИНА КАК ЧтениеНизкогоПорядка
| ИЗ
| ВтЧтениеНизкогоПорядка КАК ЧтениеНизкогоПорядка) КАК Проблемы
| втВтЧтениеНизкогоПорядкаСФильтромПоПриоритету КАК ЧтениеНизкогоПорядка) КАК Проблемы
|
|СГРУППИРОВАТЬ ПО
| Проблемы.Обработчик
@@ -925,11 +957,17 @@
| ЧтениеНизкогоПорядка.ОбъектМетаданных КАК ОбъектМетаданных,
| ЧтениеНизкогоПорядка.ПорядокЧитатель КАК ПорядокЧитатель,
| ЧтениеНизкогоПорядка.ПорядокПисатель КАК ПорядокПисатель,
| ЧтениеНизкогоПорядка.ПорядокЧитатель.Порядок КАК ЧислоПорядокЧитатель,
| ЧтениеНизкогоПорядка.ПорядокПисатель.Порядок КАК ЧислоПорядокПисатель,
| ЧтениеНизкогоПорядка.ПриоритетыПорядок КАК ПриоритетыПорядок,
| ЧтениеНизкогоПорядка.Писатель КАК Писатель,
| ЧтениеНизкогоПорядка.ОбъектЧитатель КАК ОбъектЧитатель,
| ЧтениеНизкогоПорядка.ОбъектПисатель КАК ОбъектПисатель,
| ЧтениеНизкогоПорядка.ПроцедураЧитатель КАК ПроцедураЧитатель,
| ЧтениеНизкогоПорядка.ПроцедураПисатель КАК ПроцедураПисатель
|
|ИЗ ВтЧтениеНизкогоПорядка КАК ЧтениеНизкогоПорядка
|ИЗ
| втВтЧтениеНизкогоПорядкаСФильтромПоПриоритету КАК ЧтениеНизкогоПорядка
|";
#КонецОбласти
@@ -1010,7 +1048,7 @@
| Процедура1,
| Процедура2";
#КонецОбласти
#Область ТекстОписание
ТекстОписание =
"ВЫБРАТЬ
@@ -50,6 +50,8 @@
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОблачныйАрхив20") Тогда
МодульОблачныйАрхив20 = ОбщегоНазначения.ОбщийМодуль("ОблачныйАрхив20");
МодульОблачныйАрхив20.Обслуживание_ПриСозданииНаСервере(ЭтотОбъект);
Иначе
Элементы.СтраницаОблачныйАрхив.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОценкаПроизводительности") Тогда
@@ -646,14 +646,16 @@
Возврат "";
КонецЕсли;
ЧастиИмени = СтрРазделить(РеквизитПутьКДанным, ".");
ТерминКонстанта = "Константа";
ЧастиИмени = СтрРазделить(РеквизитПутьКДанным, ".");
Если ЧастиИмени.Количество() = 2 Тогда
КонстантаИмя = ЧастиИмени[1];
КонстантаЗначение = НаборКонстант[КонстантаИмя];
ИначеЕсли ЧастиИмени.Количество() = 1 И НРег(Лев(РеквизитПутьКДанным, 9)) = НРег("Константа") Тогда
КонстантаИмя = Сред(РеквизитПутьКДанным, 10);
КонстантаЗначение = ЭтотОбъект[РеквизитПутьКДанным];
ИначеЕсли ЧастиИмени.Количество() = 1
И СтрСравнить(Лев(РеквизитПутьКДанным, СтрДлина(ТерминКонстанта)), ТерминКонстанта) = 0 Тогда
КонстантаИмя = Сред(РеквизитПутьКДанным, СтрДлина(ТерминКонстанта) + 1);
КонстантаЗначение = ЭтотОбъект[РеквизитПутьКДанным];
Иначе
Возврат "";
КонецЕсли;
@@ -1266,26 +1266,30 @@
КонецФункции
&НаСервере
Процедура ОбновитьКомпоновщикОтбора(АдресРезультата)
Процедура ОбновитьКомпоновщикОтбора(Знач АдресРезультата)
Результат = ПолучитьИзВременногоХранилища(АдресРезультата);
УдалитьИзВременногоХранилища(АдресРезультата);
КомпоновщикПредварительногоОтбора.ЗагрузитьНастройки(Результат);
КомпоновщикПредварительногоОтбора.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.Полное);
СохранитьПользовательскиеНастройки();
КонецПроцедуры
&НаСервере
Процедура ОбновитьПравилаПоиска(АдресРезультата)
Процедура ОбновитьПравилаПоиска(Знач АдресРезультата)
Результат = ПолучитьИзВременногоХранилища(АдресРезультата);
УдалитьИзВременногоХранилища(АдресРезультата);
УчитыватьПрикладныеПравила = Результат.УчитыватьПрикладныеПравила;
СкрыватьНезначимыеДубли = Результат.СкрыватьНезначимыеДубли;
ЗначениеВРеквизитФормы(Результат.ПравилаПоиска, "ПравилаПоиска");
СохранитьПользовательскиеНастройки();
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьКомпоновщикОтбораИПравила(НастройкиФормы)
Процедура ИнициализироватьКомпоновщикОтбораИПравила(Знач НастройкиФормы)
// 1. Очистка и инициализация сведений об объекте метаданных.
ПредставлениеПравилОтбора = "";
ПредставлениеПравилПоиска = "";
@@ -1326,14 +1330,10 @@
Если ТипЗнч(НастройкиКД) = Тип("НастройкиКомпоновкиДанных") Тогда
Для Сч = -(НастройкиКД.Отбор.Элементы.Количество()-1) По 0 Цикл
Отбор = НастройкиКД.Отбор.Элементы[-Сч];
Если СтрНайти(Отбор.Представление, ПредставлениеВыбранногоМестаИспользования()) > 0 Тогда
ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(НастройкиКД.Отбор,,Отбор.Представление);
ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(НастройкиКД.Отбор,, Отбор.Представление);
КонецЕсли;
КонецЦикла;
КомпоновщикПредварительногоОтбора.ЗагрузитьНастройки(НастройкиКД);
@@ -1356,13 +1356,8 @@
// 5. Установка умолчаний.
// Отбор по пометке удаления.
Если Не ОтборыЗагружены Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(
КомпоновщикПредварительногоОтбора.Настройки.Отбор,
"ПометкаУдаления",
Ложь,
ВидСравненияКомпоновкиДанных.Равно,
,
Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора( КомпоновщикПредварительногоОтбора.Настройки.Отбор,
"ПометкаУдаления", Ложь, ВидСравненияКомпоновкиДанных.Равно,, Ложь);
КонецЕсли;
// Отбор по обработанным местам использования (переход по механизму "Возможные дубли")
@@ -1373,25 +1368,18 @@
Если ВыбранныеМестаИспользования.ЗначениеОтбора.Количество() > 0 Тогда
ГруппаОтбора = ОбщегоНазначенияКлиентСервер.СоздатьГруппуЭлементовОтбора(
КомпоновщикПредварительногоОтбора.Настройки.Отбор.Элементы
,ВыбранныеМестаИспользования.ПредставлениеОтбора
,ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли);
КомпоновщикПредварительногоОтбора.Настройки.Отбор.Элементы,
ВыбранныеМестаИспользования.ПредставлениеОтбора,
ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли);
КонецЕсли;
Для каждого РеквизитЗначениеОтбора Из ВыбранныеМестаИспользования.ЗначениеОтбора Цикл
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(
ГруппаОтбора,
РеквизитЗначениеОтбора.Ключ,
РеквизитЗначениеОтбора.Значение,
ВидСравненияКомпоновкиДанных.ВСписке,
"",
Истина);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(ГруппаОтбора,
РеквизитЗначениеОтбора.Ключ, РеквизитЗначениеОтбора.Значение,
ВидСравненияКомпоновкиДанных.ВСписке, "", Истина);
КонецЦикла;
УдалитьИзВременногоХранилища(АдресВыбранныхМестИспользования);
АдресВыбранныхМестИспользования = "";
@@ -1797,7 +1785,7 @@
КонецПроцедуры
&НаСервере
Функция ТекстПрогресса(ПараметрыПрогресса, ИсходныйТекстПрогресса)
Функция ТекстПрогресса(Знач ПараметрыПрогресса, Знач ИсходныйТекстПрогресса)
ЭтоЗамена = СтрНачинаетсяС(ИсходныйТекстПрогресса, НСтр("ru = 'Замена дублей'"));
ИмяРеквизитаПрогресса = ?(ЭтоЗамена, "КоличествоОбработанных", "КоличествоУдаленных");
@@ -2120,6 +2108,8 @@
ПредполагаемыеВозможныеДубли = СформироватьВозможныеДубли(МестаИспользования);
ОтборПоискаВозможныхДублей = СформироватьОтборВозможныхДублей(РеквизитФормыВЗначение("НайденныеДубли"));
ТипОбрабатываемогоОбъекта = ТипЗнч(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ИдентификаторОбрабатываемогоОбъекта,
"ЗначениеПустойСсылки"));
Для каждого МестоИспользования Из ПредполагаемыеВозможныеДубли Цикл
@@ -2129,7 +2119,7 @@
Продолжить;
КонецЕсли;
КлючиСвязи = КлючиСвязиМетаданных(ИдентификаторОбрабатываемогоОбъекта, МестоИспользования);
КлючиСвязи = КлючиСвязиМетаданных(ТипОбрабатываемогоОбъекта, МестоИспользования);
Если КлючиСвязи.Количество() > 0 Тогда
ДобавитьВозможныйДубль(ОбрабатываемыйОбъектМетаданных, МестоИспользования, КлючиСвязи, ОтборПоискаВозможныхДублей);
КонецЕсли;
@@ -2253,8 +2243,7 @@
КонецПроцедуры
// Функция - Степень родства метаданных
//
// Возвращает степень родства метаданных
//
// Возвращаемое значение:
// - Число - как связаны объекты метаданных между собой
@@ -2263,7 +2252,7 @@
// 2 - связь по Родителю/Владельцу
//
&НаСервереБезКонтекста
Функция КлючиСвязиМетаданных(Знач ИдентификаторОбрабатываемогоОбъекта, Знач МестоИспользования)
Функция КлючиСвязиМетаданных(Знач ТипОбрабатываемогоОбъекта, Знач МестоИспользования)
Результат = Новый ТаблицаЗначений;
Результат.Колонки.Добавить("Имя");
@@ -2271,7 +2260,7 @@
Для каждого РеквизитМестаИспользования Из МестоИспользования.Реквизиты Цикл
Если РеквизитМестаИспользования.Тип.Типы().Найти(ТипЗнч(ИдентификаторОбрабатываемогоОбъекта.ЗначениеПустойСсылки)) <> Неопределено Тогда
Если РеквизитМестаИспользования.Тип.Типы().Найти(ТипОбрабатываемогоОбъекта) <> Неопределено Тогда
СвязьМетаданных = Результат.Добавить();
СвязьМетаданных.Имя = РеквизитМестаИспользования.Имя;
СвязьМетаданных.СтепеньРодства = 1;
@@ -2281,7 +2270,7 @@
Для каждого РеквизитМестаИспользования Из МестоИспользования.СтандартныеРеквизиты Цикл
Если РеквизитМестаИспользования.Тип.Типы().Найти(ТипЗнч(ИдентификаторОбрабатываемогоОбъекта.ЗначениеПустойСсылки)) <> Неопределено Тогда
Если РеквизитМестаИспользования.Тип.Типы().Найти(ТипОбрабатываемогоОбъекта) <> Неопределено Тогда
СвязьМетаданных = Результат.Добавить();
СвязьМетаданных.Имя = РеквизитМестаИспользования.Имя;
СвязьМетаданных.СтепеньРодства = 2;
@@ -2342,7 +2331,7 @@
КонецПроцедуры
&НаСервере
Процедура ОтобратьВыбранныеМестаИспользования(ВыбранныйТип)
Процедура ОтобратьВыбранныеМестаИспользования(Знач ВыбранныйТип)
Перем АдресОтбора;
ВыбранныеМестаИспользования = Новый Структура("ПредставлениеОтбора, ЗначениеОтбора","", Новый Структура);
@@ -12,20 +12,19 @@
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭтоНоваяГруппа = Параметры.ЭтоНоваяГруппа;
Если ЭтоНоваяГруппа Тогда
ОбъектЗначение = Справочники[Параметры.ИмяСправочникаХранилищаФайлов].СоздатьГруппу();
Если Параметры.Свойство("Родитель")
И Параметры.Родитель <> Неопределено
Если Параметры.Родитель <> Неопределено
И ТипЗнч(Параметры.Родитель) = ТипЗнч(ОбъектЗначение.Ссылка) Тогда
Если Параметры.Родитель.ЭтоГруппа Тогда
СвойстваРодителя = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Параметры.Родитель, "ЭтоГруппа,Родитель");
Если СвойстваРодителя.ЭтоГруппа Тогда
ОбъектЗначение.Родитель = Параметры.Родитель;
ИначеЕсли Параметры.Родитель.Родитель <> Неопределено
И ТипЗнч(Параметры.Родитель.Родитель) = ТипЗнч(ОбъектЗначение.Ссылка) Тогда
ИначеЕсли СвойстваРодителя.Родитель <> Неопределено
И ТипЗнч(СвойстваРодителя.Родитель) = ТипЗнч(ОбъектЗначение.Ссылка) Тогда
ОбъектЗначение.Родитель = Параметры.Родитель.Родитель; // В качестве первого родителя была передана ссылка на элемент.
ОбъектЗначение.Родитель = СвойстваРодителя.Родитель; // В качестве первого родителя была передана ссылка на элемент.
КонецЕсли;
Иначе
@@ -603,10 +603,10 @@
КонецЕсли;
Если ТекущиеДанные.Расширение = "mxl" Тогда
ДокументСоШтампом = РаботаСФайламиСлужебныйВызовСервера.ТабличныйДокументСоШтампом(ТекущиеДанные.Ссылка, ТекущиеДанные.Ссылка);
ДокументСоШтампом = РаботаСФайламиСлужебныйВызовСервера.ТабличныйДокументСоШтампом(ТекущиеДанные.Ссылка);
РаботаСФайламиСлужебныйКлиент.ПечатьФайлаСоШтампом(ДокументСоШтампом);
ИначеЕсли ТекущиеДанные.Расширение = "docx" Тогда
ДокументСоШтампом = РаботаСФайламиСлужебныйВызовСервера.ОфисныйДокументСоШтампом(ТекущиеДанные.Ссылка, ТекущиеДанные.Ссылка);
ДокументСоШтампом = РаботаСФайламиСлужебныйВызовСервера.ОфисныйДокументСоШтампом(ТекущиеДанные.Ссылка);
ФайловаяСистемаКлиент.ОткрытьФайл(ДокументСоШтампом, , ТекущиеДанные.Наименование+".docx");
КонецЕсли;
КонецПроцедуры
@@ -339,8 +339,7 @@
Возврат;
КонецЕсли;
ОткрытьФорму(
"Обработка.РаботаСФайлами.Форма.ПрисоединенныйФайл",
ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ПрисоединенныйФайл",
Новый Структура("ЗначениеКопирования", ТекущаяСсылкаНаФайл()));
КонецПроцедуры
@@ -348,8 +347,9 @@
&НаКлиенте
Процедура Печать(Команда)
Если ЗначениеЗаполнено(ТекущаяСсылкаНаФайл()) Или ОбработатьКомандуЗаписиФайла() Тогда
Файлы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ТекущаяСсылкаНаФайл());
Файл = ТекущаяСсылкаНаФайл();
Если ЗначениеЗаполнено(Файл) Или ОбработатьКомандуЗаписиФайла() Тогда
Файлы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Файл);
РаботаСФайламиКлиент.НапечататьФайлы(Файлы, ЭтотОбъект.УникальныйИдентификатор);
КонецЕсли;
@@ -358,14 +358,10 @@
&НаКлиенте
Процедура ПечатьСоШтампом(Команда)
СсылкаНаТекущийОбъект = ТекущаяСсылкаНаФайл();
Если ЗначениеЗаполнено(СсылкаНаТекущийОбъект)
Или ОбработатьКомандуЗаписиФайла() Тогда
ДокументСоШтампом = РаботаСФайламиСлужебныйВызовСервера.ТабличныйДокументСоШтампом(
СсылкаНаТекущийОбъект, СсылкаНаТекущийОбъект);
Файл = ТекущаяСсылкаНаФайл();
Если ЗначениеЗаполнено(Файл) Или ОбработатьКомандуЗаписиФайла() Тогда
ДокументСоШтампом = РаботаСФайламиСлужебныйВызовСервера.ТабличныйДокументСоШтампом(Файл);
РаботаСФайламиСлужебныйКлиент.ПечатьФайлаСоШтампом(ДокументСоШтампом);
КонецЕсли;
КонецПроцедуры
@@ -373,10 +369,9 @@
&НаКлиенте
Процедура Отправить(Команда)
СсылкаНаТекущийОбъект = ТекущаяСсылкаНаФайл();
Если ЗначениеЗаполнено(СсылкаНаТекущийОбъект)
Или ОбработатьКомандуЗаписиФайла() Тогда
Файлы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(СсылкаНаТекущийОбъект);
Файл = ТекущаяСсылкаНаФайл();
Если ЗначениеЗаполнено(Файл) Или ОбработатьКомандуЗаписиФайла() Тогда
Файлы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Файл);
ПриОтправкеФайловПочтой(ПараметрыОтправки, Файлы, ЭтотОбъект.Объект.ВладелецФайла, УникальныйИдентификатор);
РаботаСФайламиСлужебныйКлиент.ОтправитьФайлыПоПочте(Файлы, УникальныйИдентификатор, ПараметрыОтправки);
КонецЕсли;
@@ -506,14 +501,12 @@
МассивФайловВРабочемКаталогеДляУдаления,
ИмяРабочегоКаталога);
СсылкаНаТекущийОбъект = ТекущаяСсылкаНаФайл();
РаботаСФайламиСлужебныйКлиент.ИнформироватьОШифровании(
МассивФайловВРабочемКаталогеДляУдаления,
ПараметрыВыполнения.ДанныеФайла.Владелец,
СсылкаНаТекущийОбъект);
Файл = ТекущаяСсылкаНаФайл();
РаботаСФайламиСлужебныйКлиент.ИнформироватьОШифровании(МассивФайловВРабочемКаталогеДляУдаления,
ПараметрыВыполнения.ДанныеФайла.Владелец, Файл);
ОповеститьОбИзменении(СсылкаНаТекущийОбъект);
Оповестить("Запись_Файл", Новый Структура, СсылкаНаТекущийОбъект);
ОповеститьОбИзменении(Файл);
Оповестить("Запись_Файл", Новый Структура, Файл);
УстановитьДоступностьКомандСпискаШифрования();
@@ -675,10 +668,10 @@
Возврат;
КонецЕсли;
СсылкаНаТекущийОбъект = ТекущаяСсылкаНаФайл();
Файл = ТекущаяСсылкаНаФайл();
УдалитьИзСпискаПодписейИЗаписатьФайл();
ОповеститьОбИзменении(СсылкаНаТекущийОбъект);
Оповестить("Запись_Файл", Новый Структура, СсылкаНаТекущийОбъект);
ОповеститьОбИзменении(Файл);
Оповестить("Запись_Файл", Новый Структура, Файл);
УстановитьДоступностьКомандСпискаЭП();
КонецПроцедуры
@@ -795,9 +788,9 @@
ОбновитьОбъект();
СсылкаНаТекущийОбъект = ТекущаяСсылкаНаФайл();
ОповеститьОбИзменении(СсылкаНаТекущийОбъект);
Оповестить("Запись_Файл", Новый Структура, СсылкаНаТекущийОбъект);
Файл = ТекущаяСсылкаНаФайл();
ОповеститьОбИзменении(Файл);
Оповестить("Запись_Файл", Новый Структура, Файл);
КонецПроцедуры
@@ -811,10 +804,10 @@
Возврат;
КонецЕсли;
СсылкаНаТекущийОбъект = ТекущаяСсылкаНаФайл();
Файл = ТекущаяСсылкаНаФайл();
ОсвободитьФайл();
ОповеститьОбИзменении(СсылкаНаТекущийОбъект);
Оповестить("Запись_Файл", Новый Структура("Событие", "РедактированиеОтменено"), СсылкаНаТекущийОбъект);
ОповеститьОбИзменении(Файл);
Оповестить("Запись_Файл", Новый Структура("Событие", "РедактированиеОтменено"), Файл);
РаботаСФайламиСлужебныйКлиент.ИзменитьКоличествоЗанятыхФайлов();
КонецПроцедуры
@@ -151,7 +151,7 @@
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СформироватьДеревоФайлов(ПапкаРодитель)
Процедура СформироватьДеревоФайлов(Знач ПапкаРодитель)
Запрос = Новый Запрос;
ТекстЗапроса =
@@ -247,18 +247,13 @@
ОбщиеПараметры.Вставить("ЕщеНеВстретилиВыгружаемуюПапку", Истина);
КонецЕсли;
ПараметрыВыполнения = ПараметрыВыполнения(
ОбработчикРезультата,
ТаблицаФайлов,
БазовыйКаталогСохранения,
РодительскаяПапка,
ОбщиеПараметры);
ПараметрыВыполнения = ПараметрыВыполнения(ОбработчикРезультата, ТаблицаФайлов, БазовыйКаталогСохранения,
РодительскаяПапка, ОбщиеПараметры);
ОбработчикЗавершения = Новый ОписаниеОповещения("ОбойтиДеревоФайлов2", ЭтотОбъект);
РаботаСФайламиСлужебныйКлиент.ЗарегистрироватьОбработчикЗавершения(ПараметрыВыполнения, ОбработчикЗавершения);
// Запуск цикла.
ОбойтиДеревоФайловЗапускЦикла(ПараметрыВыполнения);
НачатьОбходДереваФайлов(ПараметрыВыполнения);
КонецПроцедуры
// Возвращаемое значение:
@@ -274,10 +269,11 @@
// * ВГраница - Число
// * Индекс - Число
// * ТребуетсяЗапускЦикла - Булево
// * ЗаписьФайла - СправочникСсылка.Файлы
// * ЗаписьФайла - ДанныеФормыЭлементДерева из см. Обработка.РаботаСФайлами.Форма.ФормаЭкспортаПапки.ДеревоФайлов
//
&НаКлиенте
Функция ПараметрыВыполнения(Знач ОбработчикРезультата, Знач ТаблицаФайлов, Знач БазовыйКаталогСохранения, Знач РодительскаяПапка, Знач ОбщиеПараметры)
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("ОбработчикРезультата", ОбработчикРезультата);
ПараметрыВыполнения.Вставить("ТаблицаФайлов", ТаблицаФайлов);
@@ -296,28 +292,29 @@
ПараметрыВыполнения.Вставить("ЗаписьФайла", Неопределено);
Возврат ПараметрыВыполнения
Возврат ПараметрыВыполнения;
КонецФункции
&НаКлиенте
Процедура ОбойтиДеревоФайловЗапускЦикла(ПараметрыВыполнения)
Если ПараметрыВыполнения.ТребуетсяЗапускЦикла Тогда
Если РаботаСФайламиСлужебныйКлиент.БлокирующаяФормаОткрыта(ПараметрыВыполнения) Тогда
Возврат; // Был открыт еще один диалог - перезапуск цикла не нужен.
КонецЕсли;
ПараметрыВыполнения.Индекс = ПараметрыВыполнения.Индекс + 1;
ПараметрыВыполнения.ТребуетсяЗапускЦикла = Ложь;
Иначе
Возврат; // Цикл уже запущен.
Процедура НачатьОбходДереваФайлов(ПараметрыВыполнения)
Если Не ПараметрыВыполнения.ТребуетсяЗапускЦикла Тогда
Возврат;
КонецЕсли;
Если РаботаСФайламиСлужебныйКлиент.БлокирующаяФормаОткрыта(ПараметрыВыполнения) Тогда
Возврат;
КонецЕсли;
ПараметрыВыполнения.Индекс = ПараметрыВыполнения.Индекс + 1;
ПараметрыВыполнения.ТребуетсяЗапускЦикла = Ложь;
Для Индекс = ПараметрыВыполнения.Индекс По ПараметрыВыполнения.ВГраница Цикл
ПараметрыВыполнения.ЗаписьФайла = ПараметрыВыполнения.Элементы[Индекс];
ПараметрыВыполнения.Индекс = Индекс;
ОбойтиДеревоФайлов1(ПараметрыВыполнения);
Если РаботаСФайламиСлужебныйКлиент.БлокирующаяФормаОткрыта(ПараметрыВыполнения) Тогда
Возврат; // Пауза цикла. Стек очищается.
Возврат;
КонецЕсли;
КонецЦикла;
@@ -338,15 +335,11 @@
ОбработчикЗавершения = Новый ОписаниеОповещения("ОбойтиДеревоФайлов2", ЭтотОбъект);
РаботаСФайламиСлужебныйКлиент.ЗарегистрироватьОбработчикЗавершения(ПараметрыВыполнения, ОбработчикЗавершения);
ОбойтиДеревоФайлов(
ПараметрыВыполнения,
ПараметрыВыполнения.ЗаписьФайла,
ПараметрыВыполнения.БазовыйКаталогСохранения,
ПараметрыВыполнения.ЗаписьФайла.Папка,
ПараметрыВыполнения.ОбщиеПараметры);
ОбойтиДеревоФайлов(ПараметрыВыполнения, ПараметрыВыполнения.ЗаписьФайла, ПараметрыВыполнения.БазовыйКаталогСохранения,
ПараметрыВыполнения.ЗаписьФайла.Папка, ПараметрыВыполнения.ОбщиеПараметры);
Если РаботаСФайламиСлужебныйКлиент.БлокирующаяФормаОткрыта(ПараметрыВыполнения) Тогда
Возврат; // Пауза цикла. Стек очищается.
Возврат;
КонецЕсли;
ОбойтиДеревоФайлов2(ПараметрыВыполнения.АсинхронныйДиалог.РезультатКогдаНеОткрыт, ПараметрыВыполнения);
@@ -370,7 +363,7 @@
Возврат;
КонецЕсли;
ОбойтиДеревоФайловЗапускЦикла(ПараметрыВыполнения);
НачатьОбходДереваФайлов(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
@@ -423,15 +416,13 @@
КонецЕсли;
Если Ответ = КодВозвратаДиалога.Прервать Тогда
// Просто выйдем с ошибкой
ПараметрыВыполнения.Успех = Ложь;
ПараметрыВыполнения.ТребуетсяЗапускЦикла = Ложь; // Цикл перезапускать не требуется.
ПараметрыВыполнения.ТребуетсяЗапускЦикла = Ложь;
РаботаСФайламиСлужебныйКлиент.ВернутьРезультат(ПараметрыВыполнения.ОбработчикРезультата, ПараметрыВыполнения);
Возврат;
ИначеЕсли Ответ = КодВозвратаДиалога.Пропустить Тогда
// Пропустим данную ветку дерева и пойдем дальше.
ПараметрыВыполнения.Успех = Истина;
ПараметрыВыполнения.ТребуетсяЗапускЦикла = Ложь; // Цикл перезапускать не требуется.
ПараметрыВыполнения.ТребуетсяЗапускЦикла = Ложь;
РаботаСФайламиСлужебныйКлиент.ВернутьРезультат(ПараметрыВыполнения.ОбработчикРезультата, ПараметрыВыполнения);
Возврат;
КонецЕсли;
@@ -442,22 +433,19 @@
&НаКлиенте
Процедура ОбойтиДеревоФайлов6(ПараметрыВыполнения)
// Только в том случае, если в этой папке есть хоть один файл.
ДочерниеЭлементы = ПараметрыВыполнения.ЗаписьФайла.ПолучитьЭлементы();
Если ДочерниеЭлементы.Количество() > 0 Тогда
ОбработчикЗавершения = Новый ОписаниеОповещения("ОбойтиДеревоФайлов7", ЭтотОбъект);
РаботаСФайламиСлужебныйКлиент.ЗарегистрироватьОбработчикЗавершения(ПараметрыВыполнения, ОбработчикЗавершения);
ОбойтиДеревоФайлов(
ПараметрыВыполнения,
ПараметрыВыполнения.ЗаписьФайла,
ПараметрыВыполнения.БазовыйКаталогСохраненияФайла,
ПараметрыВыполнения.ЗаписьФайла.Папка,
ОбойтиДеревоФайлов(ПараметрыВыполнения, ПараметрыВыполнения.ЗаписьФайла,
ПараметрыВыполнения.БазовыйКаталогСохраненияФайла, ПараметрыВыполнения.ЗаписьФайла.Папка,
ПараметрыВыполнения.ОбщиеПараметры);
Если РаботаСФайламиСлужебныйКлиент.БлокирующаяФормаОткрыта(ПараметрыВыполнения) Тогда
Возврат; // Пауза цикла. Стек очищается.
Возврат;
КонецЕсли;
ОбойтиДеревоФайлов7(ПараметрыВыполнения.АсинхронныйДиалог.РезультатКогдаНеОткрыт, ПараметрыВыполнения);
@@ -469,6 +457,7 @@
&НаКлиенте
Процедура ОбойтиДеревоФайлов7(Результат, ПараметрыВыполнения) Экспорт
Если РаботаСФайламиСлужебныйКлиент.БлокирующаяФормаОткрыта(ПараметрыВыполнения) Тогда
ПараметрыВыполнения.ТребуетсяЗапускЦикла = Истина;
РаботаСФайламиСлужебныйКлиент.УстановитьПризнакБлокирующейФормы(ПараметрыВыполнения, Ложь);
@@ -484,8 +473,9 @@
// Продолжение обработки элемента.
ОбойтиДеревоФайлов8(ПараметрыВыполнения);
// Перезапуск цикла если был открыт асинхронный диалог.
ОбойтиДеревоФайловЗапускЦикла(ПараметрыВыполнения);
// Перезапуск, если был открыт диалог.
НачатьОбходДереваФайлов(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
@@ -556,8 +546,8 @@
ПараметрыВыполнения.Результат = КодВозвратаДиалога.Отмена;
ОбойтиДеревоФайлов11(ПараметрыВыполнения);
// Перезапуск цикла если был открыт асинхронный диалог.
ОбойтиДеревоФайловЗапускЦикла(ПараметрыВыполнения);
// Перезапуск, если был открыт диалог.
НачатьОбходДереваФайлов(ПараметрыВыполнения);
КонецПроцедуры
// Параметры:
@@ -637,7 +627,7 @@
ОбойтиДеревоФайлов13(ПараметрыВыполнения);
// Перезапуск цикла если был открыт асинхронный диалог.
ОбойтиДеревоФайловЗапускЦикла(ПараметрыВыполнения);
НачатьОбходДереваФайлов(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
@@ -663,9 +653,9 @@
&НаКлиенте
Процедура ОбойтиДеревоФайлов14(ПараметрыВыполнения)
ПараметрыВыполнения.ФайлНаДиске = Новый Файл(ПараметрыВыполнения.ПолноеИмяФайла);
Если ПараметрыВыполнения.ФайлНаДиске.Существует() Тогда
// Снимем флаг R|O для возможности удаления.
ПараметрыВыполнения.ФайлНаДиске.УстановитьТолькоЧтение(Ложь);
// Всегда удаляем и потом создадим заново.
@@ -1225,7 +1225,9 @@
ИдентификаторАдреса = ИдентификаторАдреса(НаселенныйПунктДетально, Истина);
Если ЗначениеЗаполнено(ИдентификаторАдреса) Тогда
Результат = МодульАдресныйКлассификаторСлужебный.АктуальныеАдресныеСведения(Новый Структура("Идентификатор", ИдентификаторАдреса));
СведенияОбАдресномОбъекта = МодульАдресныйКлассификаторСлужебный.СведенияОбАдресномОбъекта(ИдентификаторАдреса);
Результат = МодульАдресныйКлассификаторСлужебный.АктуальныеАдресныеСведения(СведенияОбАдресномОбъекта);
Если Не Результат.Отказ Тогда
ДанныеИзКлассификатора = РаботаСАдресами.ПодготовитьАдресДляВвода(Результат.Данные);
Loaded 100 of 214 files, more files were not shown because too many files have changed in this diff. Show more