diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl
index fe2502d5b..f0c07c8ed 100644
--- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl
@@ -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);
- Шаблон = Объект.ТемаПисьма + "
" + "
" + Шаблон;
- Иначе
- ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.ПростойТекст");
- Шаблон = Объект.ТемаПисьма + Символы.ПС + Символы.ПС + Шаблон;
- КонецЕсли;
-
- СформированныеОтчеты = "";
- Для Каждого СтрокаОтчет Из Объект.Отчеты Цикл
- ПредставлениеОтчета = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1. %2",
- СтрокаОтчет.НомерСтроки, СтрокаОтчет.Представление);
- СформированныеОтчеты = СформированныеОтчеты + Символы.ПС + ПредставлениеОтчета;
- КонецЦикла;
- СформированныеОтчеты = СокрЛП(СформированныеОтчеты);
- Если Объект.Архивировать Тогда
- СформированныеОтчеты = СформированныеОтчеты + Символы.ПС + Символы.ПС + НСтр(
- "ru = 'Файлы отчетов запакованы в архив'") + " ";
-
- СтруктураИмениАрхива = Новый Структура("НаименованиеРассылки, ДатаВыполнения", Объект.Наименование,
- ОбщегоНазначенияКлиент.ДатаСеанса());
- ИмяАрхива = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Объект.ИмяАрхива, СтруктураИмениАрхива);
- ИмяАрхива = ИмяАрхива + ".zip";
-
- СформированныеОтчеты = СокрЛП(
- СформированныеОтчеты + """" + ИмяАрхива + """");
- КонецЕсли;
-
- ПараметрыДоставки = РассылкаОтчетовКлиентСервер.ПараметрыДоставки();
- ЗаполнитьЗначенияСвойств(ПараметрыДоставки, Объект);
- ПараметрыДоставки.ВыполненаВПапку = Объект.ИспользоватьПапку;
- ПараметрыДоставки.ВыполненаВСетевойКаталог = Объект.ИспользоватьСетевойКаталог;
- ПараметрыДоставки.ВыполненаНаFTP = Объект.ИспользоватьFTPРесурс;
- СпособДоставки = РассылкаОтчетовКлиентСервер.ПредставлениеСпособовДоставки(ПараметрыДоставки);
-
- ПараметрыШаблона = Новый Структура;
- ПараметрыШаблона.Вставить("НаименованиеРассылки", Объект.Наименование);
- ПараметрыШаблона.Вставить("Автор", Объект.Автор);
- ПараметрыШаблона.Вставить("ЗаголовокСистемы", Кэш.ЗаголовокСистемы);
- ПараметрыШаблона.Вставить("ДатаВыполнения", ОбщегоНазначенияКлиент.ДатаСеанса());
- ПараметрыШаблона.Вставить("СформированныеОтчеты", СформированныеОтчеты);
- ПараметрыШаблона.Вставить("СпособДоставки", СпособДоставки);
-
- Если ВидРассылки = "Персонализирована" Тогда
- ПервыйПолучатель = ПолучитьПервогоПолучателя();
- ПараметрыШаблона.Вставить("Получатель", ПервыйПолучатель.Наименование);
- ПервыйПолучательСсылка = ПервыйПолучатель.Ссылка;
- Иначе
- ПервыйПолучательСсылка = Неопределено;
- КонецЕсли;
- ДобавитьДополнительныеПараметрыШаблона(ПараметрыШаблона, ПервыйПолучательСсылка);
-
- // Схематичное отображение отчетов в тексте письма
- Если Объект.ВставлятьОтчетыВТекстПисьма Тогда
- ОтчетыВТекстеПисьма = "";
- Для Каждого СтрокаОтчет Из Объект.Отчеты Цикл
- ОтчетыВТекстеПисьма = ОтчетыВТекстеПисьма + Символы.ПС
- + "------------------------------------------" + Символы.ПС
- + СтрокаОтчет.Представление;
- КонецЦикла;
- Если Объект.ПисьмоВФорматеHTML Тогда
- ОтчетыВТекстеПисьма = СтрЗаменить(ОтчетыВТекстеПисьма, Символы.ПС, Символы.ПС + "
");
- КонецЕсли;
- Шаблон = Шаблон + Символы.ПС + Символы.ПС + ОтчетыВТекстеПисьма;
- КонецЕсли;
-
- // Вывод списка вложений
- Если Объект.ПрикреплятьОтчетыВоВложения Тогда
- ПлановыйСписокОтчетов = ПлановыйСписокОтчетовВоВложениях();
- Если ПлановыйСписокОтчетов.Количество() > 0 Тогда
- СписокОтчетов = СтрСоединить(ПлановыйСписокОтчетов, Символы.ПС);
-
- ТекстВложения = Символы.ПС + Символы.ПС + НСтр("ru = 'Вложения письма:'");
- Если Объект.Архивировать Тогда
- СтруктураИмениАрхива = Новый Структура("НаименованиеРассылки, ДатаВыполнения", Объект.Наименование,
- ОбщегоНазначенияКлиент.ДатаСеанса());
- ИмяАрхива = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Объект.ИмяАрхива, СтруктураИмениАрхива);
- ИмяАрхива = ИмяАрхива + ".zip";
- ТекстВложения = ТекстВложения + Символы.ПС + Символы.ПС + ИмяАрхива;
- Иначе
- ТекстВложения = ТекстВложения + Символы.ПС;
- КонецЕсли;
- НомерФайла = 1;
- Для Каждого ПолноеИмяФайла Из ПлановыйСписокОтчетов Цикл
- ИмяФайлаСПорядком = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1. %2",
- НомерФайла, ПолноеИмяФайла);
- Если Объект.ПисьмоВФорматеHTML Тогда
- ТекстВложения = ТекстВложения + "" + ИмяФайлаСПорядком + "
";
- Иначе
- ТекстВложения = ТекстВложения + Символы.ПС + Символы.Таб + ИмяФайлаСПорядком;
- КонецЕсли;
- НомерФайла = НомерФайла + 1;
- КонецЦикла;
-
- Если Объект.ПисьмоВФорматеHTML Тогда
- ТекстВложения = СтрЗаменить(ТекстВложения, Символы.ПС, Символы.ПС + "
");
- КонецЕсли;
- Шаблон = Шаблон + Символы.ПС + ТекстВложения;
- КонецЕсли;
- КонецЕсли;
-
- Текст = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Шаблон, ПараметрыШаблона);
-
- ПараметрыФормы = Новый Структура;
- ПараметрыФормы.Вставить("НаименованиеРассылки", Объект.Наименование);
- ПараметрыФормы.Вставить("ТипТекста", ТипТекста);
- ПараметрыФормы.Вставить("Текст", Текст);
- Если КартинкиДля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);
+ Шаблон = Объект.ТемаПисьма + "
" + "
" + Шаблон;
+ Иначе
+ ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.ПростойТекст");
+ Шаблон = Объект.ТемаПисьма + Символы.ПС + Символы.ПС + Шаблон;
+ КонецЕсли;
+
+ СформированныеОтчеты = "";
+ Для Каждого СтрокаОтчет Из Объект.Отчеты Цикл
+ ПредставлениеОтчета = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1. %2",
+ СтрокаОтчет.НомерСтроки, СтрокаОтчет.Представление);
+ СформированныеОтчеты = СформированныеОтчеты + Символы.ПС + ПредставлениеОтчета;
+ КонецЦикла;
+ СформированныеОтчеты = СокрЛП(СформированныеОтчеты);
+ Если Объект.Архивировать Тогда
+ СформированныеОтчеты = СформированныеОтчеты + Символы.ПС + Символы.ПС + НСтр(
+ "ru = 'Файлы отчетов запакованы в архив'") + " ";
+
+ СтруктураИмениАрхива = Новый Структура("НаименованиеРассылки, ДатаВыполнения", Объект.Наименование,
+ ТекущаяДатаСеанса());
+ ИмяАрхива = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Объект.ИмяАрхива, СтруктураИмениАрхива);
+ ИмяАрхива = ИмяАрхива + ".zip";
+
+ СформированныеОтчеты = СокрЛП(
+ СформированныеОтчеты + """" + ИмяАрхива + """");
+ КонецЕсли;
+
+ ПараметрыДоставки = РассылкаОтчетовКлиентСервер.ПараметрыДоставки();
+ ЗаполнитьЗначенияСвойств(ПараметрыДоставки, Объект);
+ ПараметрыДоставки.ВыполненаВПапку = Объект.ИспользоватьПапку;
+ ПараметрыДоставки.ВыполненаВСетевойКаталог = Объект.ИспользоватьСетевойКаталог;
+ ПараметрыДоставки.ВыполненаНаFTP = Объект.ИспользоватьFTPРесурс;
+ СпособДоставки = РассылкаОтчетовКлиентСервер.ПредставлениеСпособовДоставки(ПараметрыДоставки);
+
+ ПараметрыШаблона = Новый Структура;
+ ПараметрыШаблона.Вставить("НаименованиеРассылки", Объект.Наименование);
+ ПараметрыШаблона.Вставить("Автор", Объект.Автор);
+ ПараметрыШаблона.Вставить("ЗаголовокСистемы", Кэш.ЗаголовокСистемы);
+ ПараметрыШаблона.Вставить("ДатаВыполнения", ТекущаяДатаСеанса());
+ ПараметрыШаблона.Вставить("СформированныеОтчеты", СформированныеОтчеты);
+ ПараметрыШаблона.Вставить("СпособДоставки", СпособДоставки);
+
+ Если ВидРассылки = "Персонализирована" Тогда
+ ПервыйПолучатель = ПолучитьПервогоПолучателя();
+ ПараметрыШаблона.Вставить("Получатель", ПервыйПолучатель.Наименование);
+ ПервыйПолучательСсылка = ПервыйПолучатель.Ссылка;
+ Иначе
+ ПервыйПолучательСсылка = Неопределено;
+ КонецЕсли;
+ ДобавитьДополнительныеПараметрыШаблона(ПараметрыШаблона, ПервыйПолучательСсылка);
+
+ // Схематичное отображение отчетов в тексте письма
+ Если Объект.ВставлятьОтчетыВТекстПисьма Тогда
+ ОтчетыВТекстеПисьма = "";
+ Для Каждого СтрокаОтчет Из Объект.Отчеты Цикл
+ ОтчетыВТекстеПисьма = ОтчетыВТекстеПисьма + Символы.ПС
+ + "------------------------------------------" + Символы.ПС
+ + СтрокаОтчет.Представление;
+ КонецЦикла;
+ Если Объект.ПисьмоВФорматеHTML Тогда
+ ОтчетыВТекстеПисьма = СтрЗаменить(ОтчетыВТекстеПисьма, Символы.ПС, Символы.ПС + "
");
+ КонецЕсли;
+ Шаблон = Шаблон + Символы.ПС + Символы.ПС + ОтчетыВТекстеПисьма;
+ КонецЕсли;
+
+ // Вывод списка вложений
+ Если Объект.ПрикреплятьОтчетыВоВложения Тогда
+ ПлановыйСписокОтчетов = ПлановыйСписокОтчетовВоВложениях();
+ Если ПлановыйСписокОтчетов.Количество() > 0 Тогда
+ СписокОтчетов = СтрСоединить(ПлановыйСписокОтчетов, Символы.ПС);
+
+ ТекстВложения = Символы.ПС + Символы.ПС + НСтр("ru = 'Вложения письма:'");
+ Если Объект.Архивировать Тогда
+ СтруктураИмениАрхива = Новый Структура("НаименованиеРассылки, ДатаВыполнения", Объект.Наименование, ТекущаяДатаСеанса());
+ ИмяАрхива = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Объект.ИмяАрхива, СтруктураИмениАрхива);
+ ИмяАрхива = ИмяАрхива + ".zip";
+ ТекстВложения = ТекстВложения + Символы.ПС + Символы.ПС + ИмяАрхива;
+ Иначе
+ ТекстВложения = ТекстВложения + Символы.ПС;
+ КонецЕсли;
+ НомерФайла = 1;
+ Для Каждого ПолноеИмяФайла Из ПлановыйСписокОтчетов Цикл
+ ИмяФайлаСПорядком = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1. %2",
+ НомерФайла, ПолноеИмяФайла);
+ Если Объект.ПисьмоВФорматеHTML Тогда
+ ТекстВложения = ТекстВложения + "" + ИмяФайлаСПорядком + "
";
+ Иначе
+ ТекстВложения = ТекстВложения + Символы.ПС + Символы.Таб + ИмяФайлаСПорядком;
+ КонецЕсли;
+ НомерФайла = НомерФайла + 1;
+ КонецЦикла;
+
+ Если Объект.ПисьмоВФорматеHTML Тогда
+ ТекстВложения = СтрЗаменить(ТекстВложения, Символы.ПС, Символы.ПС + "
");
+ КонецЕсли;
+ Шаблон = Шаблон + Символы.ПС + ТекстВложения;
+ КонецЕсли;
+ КонецЕсли;
+
+ Текст = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Шаблон, ПараметрыШаблона);
+
+ ПараметрыФормы = Новый Структура;
+ ПараметрыФормы.Вставить("НаименованиеРассылки", Объект.Наименование);
+ ПараметрыФормы.Вставить("ТипТекста", ТипТекста);
+ ПараметрыФормы.Вставить("Текст", Текст);
+ Если КартинкиДляHTML.Количество() > 0 Тогда
+ ПараметрыФормы.Вставить("АдресКартинокДляHTML", ПоместитьКартинкиВоВременноеХранилище(КартинкиДляHTML));
+ КонецЕсли;
+
+ ПреобразоватьПараметрыТекста(Объект, "ПараметрыВПредставление");
+
+ Возврат ПараметрыФормы;
+
+КонецФункции
+
////////////////////////////////////////////////////////////////////////////////
// Запись объекта
diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Module.bsl
index 5feaff705..a523f87c6 100644
--- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Module.bsl
+++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Module.bsl
@@ -852,7 +852,7 @@
Контекст.ОшибкаНаСервере.Вставить("ОписаниеОшибки", ДополнительныеПараметры.РезультатПроверкиСертификата.ОписаниеОшибкиНаСервере);
КонецЕсли;
- ОбработатьОшибку(Контекст.Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере,,,Результат.Значение = "ПоказатьОшибку");
+ ОбработатьОшибку(Контекст.Оповещение, Контекст.ОшибкаНаКлиенте, Контекст.ОшибкаНаСервере,,, Результат <> Неопределено И Результат.Значение = "ПоказатьОшибку");
Возврат;
КонецЕсли;
diff --git a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl
index e72bc0214..15a6d3d89 100644
--- a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl
+++ b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl
@@ -92,7 +92,14 @@
Пока Выборка.Следующий() Цикл
ТекСостояние = СостояниеПорядок.Добавить();
ТекСостояние.Ссылка = Выборка.Ссылка;
- ТекСостояние.Порядок = Выборка.Ссылка.РеквизитДопУпорядочивания;
+ КонецЦикла;
+
+ Ссылки = СостояниеПорядок.ВыгрузитьКолонку("Ссылка");
+ РеквизитыПорядок = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(Ссылки, "РеквизитДопУпорядочивания");
+
+ Для Каждого Состояние Из СостояниеПорядок Цикл
+ ТекПорядок = РеквизитыПорядок.Получить(Состояние.Ссылка);
+ Состояние.Порядок = ТекПорядок;
КонецЦикла;
СостояниеПорядок.Сортировать("Порядок");
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl
index 999e368b5..08218d0a6 100644
--- a/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl
@@ -953,9 +953,8 @@
&НаКлиенте
Процедура ПечатьСоШтампом(Команда)
- Если ЗначениеЗаполнено(Объект.Ссылка)
- Или Записать() Тогда
- ДокументСоШтампом = РаботаСФайламиСлужебныйВызовСервера.ТабличныйДокументСоШтампом(Объект.Ссылка, Объект.Ссылка);
+ Если ЗначениеЗаполнено(Объект.Ссылка) Или Записать() Тогда
+ ДокументСоШтампом = РаботаСФайламиСлужебныйВызовСервера.ТабличныйДокументСоШтампом(Объект.Ссылка);
РаботаСФайламиСлужебныйКлиент.ПечатьФайлаСоШтампом(ДокументСоШтампом);
КонецЕсли;
diff --git a/SSL/src/Catalogs/ШаблоныСообщений/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ШаблоныСообщений/Forms/ФормаЭлемента/Module.bsl
index f664bd01a..ac1430683 100644
--- a/SSL/src/Catalogs/ШаблоныСообщений/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/ШаблоныСообщений/Forms/ФормаЭлемента/Module.bsl
@@ -359,6 +359,8 @@
ЗаполнитьПроизвольныеПараметрыИзОбъекта(ТекущийОбъект);
ОтображениеЭлементовФормы();
+ УстановитьТекстШаблона(ТекущийОбъект);
+
КонецПроцедуры
&НаКлиенте
diff --git a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Form.form b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Form.form
index 6395ad7e6..80718d7a0 100644
--- a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Form.form
+++ b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Form.form
@@ -5416,7 +5416,8 @@
КОНЕЦ
И Наборы.Используется
И ЕСТЬNULL(Наборы.Родитель.Используется, ИСТИНА)
- И НЕ Наборы.Ссылка В (&ИсключаемыеНаборы)
+ И НЕ Наборы.Ссылка В (&ИсключаемыеНаборы)
+ И НЕ Наборы.ПометкаУдаления
Catalog.НаборыДополнительныхРеквизитовИСведений
true
true
@@ -5498,10 +5499,6 @@
ДополнительныеСведения
ДополнительныеСведения
-
- Метки
- Метки
-
Представления
Представления
diff --git a/SSL/src/CommonForms/ВыборРолиИсполнителя/Module.bsl b/SSL/src/CommonForms/ВыборРолиИсполнителя/Module.bsl
index 1f80b6e15..a8fe962bd 100644
--- a/SSL/src/CommonForms/ВыборРолиИсполнителя/Module.bsl
+++ b/SSL/src/CommonForms/ВыборРолиИсполнителя/Module.bsl
@@ -36,14 +36,16 @@
Если ЗаданыТипыОсновногоОбъектаАдресации И ОсновнойОбъектАдресации = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
- СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено.'"), Роль.ТипыОсновногоОбъектаАдресации.Наименование ),,,
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено.'"),
+ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Роль, "ТипыОсновногоОбъектаАдресации")),,,
"ОсновнойОбъектАдресации", Отказ);
ИначеЕсли ЗаданыТипыДополнительногоОбъектаАдресации И ДополнительныйОбъектАдресации = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
- СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено.'"), Роль.ТипыДополнительногоОбъектаАдресации.Наименование ),,,
- "ДополнительныйОбъектАдресации", Отказ);
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено.'"),
+ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Роль, "ТипыДополнительногоОбъектаАдресации")),,,
+ "ДополнительныйОбъектАдресации", Отказ);
КонецЕсли;
@@ -88,10 +90,21 @@
&НаСервере
Процедура УстановитьТипыОбъектовАдресации()
- ТипыОсновногоОбъектаАдресации = Роль.ТипыОсновногоОбъектаАдресации.ТипЗначения;
- ТипыДополнительногоОбъектаАдресации = Роль.ТипыДополнительногоОбъектаАдресации.ТипЗначения;
- ИспользуетсяСОбъектамиАдресации = Роль.ИспользуетсяСОбъектамиАдресации;
- ИспользуетсяБезОбъектовАдресации = Роль.ИспользуетсяБезОбъектовАдресации;
+ ТипыОсновногоОбъектаАдресации = Неопределено;
+ ТипыДополнительногоОбъектаАдресации = Неопределено;
+ ИспользуетсяСОбъектамиАдресации = Ложь;
+ ИспользуетсяБезОбъектовАдресации = Ложь;
+
+ Если Не Роль.Пустая() Тогда
+ СведенияОРоли = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Роль,
+ "ИспользуетсяСОбъектамиАдресации,ИспользуетсяБезОбъектовАдресации,ТипыОсновногоОбъектаАдресации,ТипыДополнительногоОбъектаАдресации");
+ ИспользуетсяСОбъектамиАдресации = СведенияОРоли.ИспользуетсяСОбъектамиАдресации;
+ ИспользуетсяБезОбъектовАдресации = СведенияОРоли.ИспользуетсяБезОбъектовАдресации;
+ Если ИспользуетсяСОбъектамиАдресации Тогда
+ ТипыОсновногоОбъектаАдресации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СведенияОРоли.ТипыОсновногоОбъектаАдресации, "ТипЗначения");
+ ТипыДополнительногоОбъектаАдресации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СведенияОРоли.ТипыДополнительногоОбъектаАдресации, "ТипЗначения");
+ КонецЕсли;
+ КонецЕсли;
КонецПроцедуры
@@ -103,20 +116,21 @@
ЗаданыТипыДополнительногоОбъектаАдресации = ИспользуетсяСОбъектамиАдресации
И ЗначениеЗаполнено(ТипыДополнительногоОбъектаАдресации);
- Элементы.ОсновнойОбъектАдресации.Заголовок = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
- Роль.ТипыОсновногоОбъектаАдресации, "Наименование",, ТекущийЯзык().КодЯзыка);
+ СведенияОРоли = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Роль,
+ "ТипыОсновногоОбъектаАдресации,ТипыДополнительногоОбъектаАдресации");
+
+ Элементы.ОсновнойОбъектАдресации.Заголовок = Строка(СведенияОРоли.ТипыОсновногоОбъектаАдресации);
Элементы.ОсновнойОбъектАдресации.Доступность = ЗаданыТипыОсновногоОбъектаАдресации;
Элементы.ОсновнойОбъектАдресации.АвтоОтметкаНезаполненного = ЗаданыТипыОсновногоОбъектаАдресации
И НЕ ИспользуетсяБезОбъектовАдресации;
Элементы.ОсновнойОбъектАдресации.ОграничениеТипа = ТипыОсновногоОбъектаАдресации;
- Элементы.ДополнительныйОбъектАдресации.Заголовок = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
- Роль.ТипыДополнительногоОбъектаАдресации, "Наименование",, ТекущийЯзык().КодЯзыка);
+ Элементы.ДополнительныйОбъектАдресации.Заголовок = Строка(СведенияОРоли.ТипыДополнительногоОбъектаАдресации);
Элементы.ДополнительныйОбъектАдресации.Доступность = ЗаданыТипыДополнительногоОбъектаАдресации;
Элементы.ДополнительныйОбъектАдресации.АвтоОтметкаНезаполненного = ЗаданыТипыДополнительногоОбъектаАдресации
И НЕ ИспользуетсяБезОбъектовАдресации;
Элементы.ДополнительныйОбъектАдресации.ОграничениеТипа = ТипыДополнительногоОбъектаАдресации;
-
+
КонецПроцедуры
&НаСервере
diff --git a/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Module.bsl b/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Module.bsl
index a36a11d48..b2135d248 100644
--- a/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Module.bsl
+++ b/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Module.bsl
@@ -192,20 +192,13 @@
Процедура ПолучитьАдминистратораИБ(ПользовательИБ = Неопределено)
Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
-
Если ЗначениеЗаполнено(АдминистраторИБ) Тогда
-
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(
- АдминистраторИБ.ИдентификаторПользователяИБ);
-
+ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(АдминистраторИБ, "ИдентификаторПользователяИБ"));
Иначе
-
ПользовательИБ = Неопределено;
-
КонецЕсли;
-
ИмяАдминистратораИнформационнойБазы = ?(ПользовательИБ = Неопределено, "", ПользовательИБ.Имя);
-
КонецЕсли;
КонецПроцедуры
diff --git a/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form
index 222a0adcd..40ab12f07 100644
--- a/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form
+++ b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form
@@ -6113,7 +6113,7 @@
4
ru
- Показать скрыть оригинал
+ Показать/скрыть поставляемый макет