2_4_4_151

This commit is contained in:
Компания 1С committed 2018-02-09 12:57:00 +03:00
1 parent f275a43ce3
commit 3b3fa5fade
634 files changed
+30691 -15543

No files matched your search

@@ -660,6 +660,18 @@
<edit> <edit>
<common>true</common> <common>true</common>
</edit> </edit>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Кратность</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Курс</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Наименование</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ссылка</segments>
</notDefaultUseAlwaysAttributes>
<main>true</main> <main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo"> <extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ <queryText>ВЫБРАТЬ
@@ -20,11 +20,6 @@
Список.УстановитьОграниченияИспользованияВПорядке(ИзменяемыеПоля); Список.УстановитьОграниченияИспользованияВПорядке(ИзменяемыеПоля);
Список.УстановитьОграниченияИспользованияВОтборе(ИзменяемыеПоля); Список.УстановитьОграниченияИспользованияВОтборе(ИзменяемыеПоля);
Если Не Пользователи.РолиДоступны("ДобавлениеИзменениеКурсовВалют") Тогда
Элементы.ФормаПодборИзКлассификатора.Видимость = Ложь;
Элементы.ФормаЗагрузитьКурсыВалют.Видимость = Ложь;
КонецЕсли;
ДоступноИзменениеВалют = ПравоДоступа("Изменение", Метаданные.РегистрыСведений.КурсыВалют); ДоступноИзменениеВалют = ПравоДоступа("Изменение", Метаданные.РегистрыСведений.КурсыВалют);
ДоступнаЗагрузкаКурсов = Метаданные.Обработки.Найти("ЗагрузкаКурсовВалют") <> Неопределено И ДоступноИзменениеВалют; ДоступнаЗагрузкаКурсов = Метаданные.Обработки.Найти("ЗагрузкаКурсовВалют") <> Неопределено И ДоступноИзменениеВалют;
@@ -60,6 +60,22 @@
УстановитьДоступностьЭлементов(ЭтотОбъект); УстановитьДоступностьЭлементов(ЭтотОбъект);
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ПараметрыПрописиВалютыНажатие(Элемент)
ОписаниеОповещения = Новый ОписаниеОповещения("ПриИзмененииПараметровПрописиВалюты", ЭтотОбъект);
Если ЕстьФормаПрописей Тогда
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ТолькоПросмотр", ТолькоПросмотр);
ПараметрыОткрытия.Вставить("ПараметрыПрописи", Объект.ПараметрыПрописи);
ИмяФормыРедактированияПрописей = "Обработка.ЗагрузкаКурсовВалют.Форма.ПараметрыПрописиВалюты";
ОткрытьФорму(ИмяФормыРедактированияПрописей, ПараметрыОткрытия, ЭтотОбъект, , , , ОписаниеОповещения);
Иначе
ПоказатьВводСтроки(ОписаниеОповещения, Объект.ПараметрыПрописи, НСтр("ru = 'Параметры прописи валюты'"));
КонецЕсли;
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -116,20 +132,4 @@
Модифицированность = Истина; Модифицированность = Истина;
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ПараметрыПрописиВалютыНажатие(Элемент)
ОписаниеОповещения = Новый ОписаниеОповещения("ПриИзмененииПараметровПрописиВалюты", ЭтотОбъект);
Если ЕстьФормаПрописей Тогда
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ТолькоПросмотр", ТолькоПросмотр);
ПараметрыОткрытия.Вставить("ПараметрыПрописи", Объект.ПараметрыПрописи);
ИмяФормыРедактированияПрописей = "Обработка.ЗагрузкаКурсовВалют.Форма.ПараметрыПрописиВалюты";
ОткрытьФорму(ИмяФормыРедактированияПрописей, ПараметрыОткрытия, ЭтотОбъект, , , , ОписаниеОповещения);
Иначе
ПоказатьВводСтроки(ОписаниеОповещения, Объект.ПараметрыПрописи, НСтр("ru = 'Параметры прописи валюты'"));
КонецЕсли;
КонецПроцедуры
#КонецОбласти #КонецОбласти
@@ -111,7 +111,10 @@
КонецЕсли; КонецЕсли;
Если ЭтоНовый() Тогда Если ЭтоНовый() Тогда
ДополнительныеСвойства.Вставить("ОбновитьКурсы"); Если СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты
Или СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РасчетПоФормуле Тогда
ДополнительныеСвойства.Вставить("ОбновитьКурсы");
КонецЕсли;
ДополнительныеСвойства.Вставить("ЭтоНовый"); ДополнительныеСвойства.Вставить("ЭтоНовый");
Иначе Иначе
ПредыдущиеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Код,СпособУстановкиКурса,ОсновнаяВалюта,Наценка,ФормулаРасчетаКурса"); ПредыдущиеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Код,СпособУстановкиКурса,ОсновнаяВалюта,Наценка,ФормулаРасчетаКурса");
@@ -22,7 +22,10 @@
Если СообщенияОбОшибках <> Неопределено Тогда Если СообщенияОбОшибках <> Неопределено Тогда
Отказ = Истина; Отказ = Истина;
ОчиститьСообщения(); ОчиститьСообщения();
СтандартныеПодсистемыКлиент.ВывестиПредупреждение(ЭтотОбъект, СообщенияОбОшибках); СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1
|Подробности:
|%2'"), СообщенияОбОшибках.Текст, СообщенияОбОшибках.Подробно), РежимДиалогаВопрос.ОК);
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -233,7 +236,6 @@
Если КоличествоОшибок > 0 Тогда Если КоличествоОшибок > 0 Тогда
СообщенияОбОшибках = Новый Структура("Текст, Подробно"); СообщенияОбОшибках = Новый Структура("Текст, Подробно");
ТекущаяПричина = 0; ТекущаяПричина = 0;
ПрефиксЗаписи = Символы.ПС + " ";
СообщенияОбОшибках.Подробно = ""; СообщенияОбОшибках.Подробно = "";
Для Каждого СтрокаТаблицы Из ОтфильтрованныеВарианты Цикл Для Каждого СтрокаТаблицы Из ОтфильтрованныеВарианты Цикл
Если ТекущаяПричина <> СтрокаТаблицы.Причина Тогда Если ТекущаяПричина <> СтрокаТаблицы.Причина Тогда
@@ -65,7 +65,7 @@
// Вызов сервера // Вызов сервера
&НаСервереБезКонтекста &НаСервереБезКонтекста
Функция СброситьНастройкиПользователейСервер(Знач ИзменяемыеВарианты) Процедура СброситьНастройкиПользователейСервер(Знач ИзменяемыеВарианты)
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
Блокировка = Новый БлокировкаДанных; Блокировка = Новый БлокировкаДанных;
@@ -82,7 +82,7 @@
ОтменитьТранзакцию(); ОтменитьТранзакцию();
ВызватьИсключение; ВызватьИсключение;
КонецПопытки; КонецПопытки;
КонецФункции КонецПроцедуры
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Сервер // Сервер
@@ -396,16 +396,18 @@
КонецЕсли; КонецЕсли;
Если ПараметрыРазмещения.Действие = "Перемещение" Тогда Если ПараметрыРазмещения.Действие = "Перемещение" Тогда
Шаблон = НСтр("ru = 'Перемещено вариантов отчетов: %1 из %2.'"); Шаблон = НСтр("ru = 'Перемещено вариантов отчетов: %1 из %2.
|Подробности:
|%3'");
Иначе Иначе
Шаблон = НСтр("ru = 'Размещено вариантов отчетов: %1 из %2.'"); Шаблон = НСтр("ru = 'Размещено вариантов отчетов: %1 из %2.
|Подробности:
|%3'");
КонецЕсли; КонецЕсли;
ПараметрыПредупреждения = Новый Структура; СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено,
ПараметрыПредупреждения.Вставить("Текст", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, РезультатВыполнения.Размещено,
Шаблон, РезультатВыполнения.Размещено, ПараметрыРазмещения.Варианты.Всего)); ПараметрыРазмещения.Варианты.Всего, ТекстОшибок), РежимДиалогаВопрос.ОК);
ПараметрыПредупреждения.Вставить("Подробно", ТекстОшибок);
СтандартныеПодсистемыКлиент.ВывестиПредупреждение(ЭтотОбъект, ПараметрыПредупреждения);
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -4,7 +4,7 @@
Процедура ПередЗаписью(Отказ) Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда Если ОбменДанными.Загрузка Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -101,12 +101,22 @@
КонецЕсли; КонецЕсли;
Исключение Исключение
// Обработка исключения не требуется.
ЗаписьЖурналаРегистрации(НСтр("ru = 'Файлы.Ошибка удаления файла.'",
ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,
Файл, ОписаниеОшибки());
КонецПопытки; КонецПопытки;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
// Проверку ОбменДанными.Загрузка следует выполнять начиная с этой строки. // Проверку ОбменДанными.Загрузка следует выполнять начиная с этой строки.
// Сначала требуется физически удалить файл, а потом уже сведения о нем в информационной базе.
// Иначе данные о расположении файла будут недоступны.
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core">
<filter>
<viewMode>Normal</viewMode>
<userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID>
</filter>
<order>
<viewMode>Normal</viewMode>
<userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID>
</order>
<conditionalAppearance>
<viewMode>Normal</viewMode>
<userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID>
</conditionalAppearance>
<itemsViewMode>Normal</itemsViewMode>
<itemsUserSettingID>911b6018-f537-43e8-a417-da56b22f9aec</itemsUserSettingID>
</Settings>
@@ -1,295 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form">
<items xsi:type="form:FormGroup">
<name>СписокКомпоновщикНастроекПользовательскиеНастройки</name>
<id>1</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Группа пользовательских настроек</value>
</title>
<verticalStretch>false</verticalStretch>
<extendedTooltip>
<name>СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка</name>
<id>2</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>Vertical</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:Table">
<name>Список</name>
<id>3</id>
<title>
<key>ru</key>
<value>Список</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список</segments>
</dataPath>
<defaultItem>true</defaultItem>
<titleLocation>None</titleLocation>
<items xsi:type="form:FormField">
<name>ПредставлениеСсылки</name>
<id>40</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ПредставлениеСсылки</segments>
</dataPath>
<extendedTooltip>
<name>ПредставлениеСсылкиРасширеннаяПодсказка</name>
<id>42</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПредставлениеСсылкиКонтекстноеМеню</name>
<id>41</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Ссылка</name>
<id>43</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Список.Ref</segments>
</dataPath>
<extendedTooltip>
<name>СсылкаРасширеннаяПодсказка</name>
<id>45</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СсылкаКонтекстноеМеню</name>
<id>44</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<commandBarLocation>None</commandBarLocation>
<autoCommandBar>
<name>СписокКоманднаяПанель</name>
<id>5</id>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<searchStringAddition>
<name>СписокСтрокаПоиска</name>
<id>7</id>
<extendedTooltip>
<name>СписокСтрокаПоискаРасширеннаяПодсказка</name>
<id>9</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокСтрокаПоискаКонтекстноеМеню</name>
<id>8</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchStringAddition>
<viewStatusAddition>
<name>СписокСостояниеПросмотра</name>
<id>10</id>
<extendedTooltip>
<name>СписокСостояниеПросмотраРасширеннаяПодсказка</name>
<id>12</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокСостояниеПросмотраКонтекстноеМеню</name>
<id>11</id>
<autoFill>true</autoFill>
</contextMenu>
<type>ViewStatusAddition</type>
<source>Список</source>
<extInfo xsi:type="form:ViewStatusAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</viewStatusAddition>
<searchControlAddition>
<name>СписокУправлениеПоиском</name>
<id>13</id>
<extendedTooltip>
<name>СписокУправлениеПоискомРасширеннаяПодсказка</name>
<id>15</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокУправлениеПоискомКонтекстноеМеню</name>
<id>14</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchControlAddition>
<extendedTooltip>
<name>СписокРасширеннаяПодсказка</name>
<id>6</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>
<representation>HierarchicalList</representation>
<changeRowSet>true</changeRowSet>
<changeRowOrder>true</changeRowOrder>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<header>true</header>
<headerHeight>1</headerHeight>
<footerHeight>1</footerHeight>
<horizontalScrollBar>AutoUse</horizontalScrollBar>
<verticalScrollBar>AutoUse</verticalScrollBar>
<horizontalLines>true</horizontalLines>
<verticalLines>true</verticalLines>
<searchOnInput>Auto</searchOnInput>
<initialListView>Auto</initialListView>
<initialTreeView>ExpandTopLevel</initialTreeView>
<horizontalStretch>true</horizontalStretch>
<verticalStretch>true</verticalStretch>
<enableStartDrag>true</enableStartDrag>
<enableDrag>true</enableDrag>
<rowPictureDataPath xsi:type="form:DataPath">
<segments>Список.DefaultPicture</segments>
</rowPictureDataPath>
<autoMaxCardHeight>true</autoMaxCardHeight>
<extInfo xsi:type="form:DynamicListTableExtInfo">
<autoRefreshPeriod>60</autoRefreshPeriod>
<period>
<startDate>0001-01-01T00:00:00</startDate>
<endDate>0001-01-01T00:00:00</endDate>
</period>
<topLevelParent xsi:type="core:UndefinedValue"/>
<showRoot>true</showRoot>
<allowGettingCurrentRowURL>true</allowGettingCurrentRowURL>
<userSettingsGroup>СписокКомпоновщикНастроекПользовательскиеНастройки</userSettingsGroup>
</extInfo>
</items>
<autoCommandBar>
<name>ФормаКоманднаяПанель</name>
<id>-1</id>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<windowOpeningMode>DontBlock</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoTitle>true</autoTitle>
<autoUrl>true</autoUrl>
<group>Vertical</group>
<autoFillCheck>true</autoFillCheck>
<allowFormCustomize>true</allowFormCustomize>
<enabled>true</enabled>
<showTitle>auto</showTitle>
<showCloseButton>true</showCloseButton>
<attributes>
<name>Список</name>
<id>1</id>
<valueType>
<types>DynamicList</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<mainTable>Catalog.ВидыПроверок</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
<autoSaveUserSettings>true</autoSaveUserSettings>
<getInvisibleFieldPresentations>true</getInvisibleFieldPresentations>
</extInfo>
</attributes>
<commandInterface>
<navigationPanel/>
<commandBar/>
</commandInterface>
<extInfo xsi:type="form:DynamicListFormExtInfo"/>
</form:Form>
@@ -39,22 +39,4 @@
#КонецОбласти #КонецОбласти
#КонецЕсли #КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("ПредставлениеСсылки");
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Представление = Данные.ПредставлениеСсылки;
КонецПроцедуры
#КонецОбласти
@@ -144,7 +144,6 @@
<editType>InDialog</editType> <editType>InDialog</editType>
<choiceMode>BothWays</choiceMode> <choiceMode>BothWays</choiceMode>
<defaultObjectForm>Catalog.ВидыПроверок.Form.ФормаЭлемента</defaultObjectForm> <defaultObjectForm>Catalog.ВидыПроверок.Form.ФормаЭлемента</defaultObjectForm>
<defaultListForm>Catalog.ВидыПроверок.Form.ФормаСписка</defaultListForm>
<attributes uuid="6423b849-7ca4-4501-8856-445157d7e5df"> <attributes uuid="6423b849-7ca4-4501-8856-445157d7e5df">
<name>Свойство1</name> <name>Свойство1</name>
<synonym> <synonym>
@@ -300,26 +299,6 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="4d94689b-d0f2-4075-9dad-be712878e300">
<name>ПредставлениеСсылки</name>
<synonym>
<key>ru</key>
<value>Представление ссылки</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Поле, хранящее представление ссылки на вид проверки.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<tabularSections uuid="79da84c1-5ac2-4472-8eb9-f0484b9582c2"> <tabularSections uuid="79da84c1-5ac2-4472-8eb9-f0484b9582c2">
<producedTypes> <producedTypes>
<objectType typeId="0ce834b5-eb99-4dcb-bd5e-dfaa949cbd7f" valueTypeId="cc76a7e0-b1eb-46f9-b863-73611337868c"/> <objectType typeId="0ce834b5-eb99-4dcb-bd5e-dfaa949cbd7f" valueTypeId="cc76a7e0-b1eb-46f9-b863-73611337868c"/>
@@ -399,13 +378,4 @@
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes> <usePurposes>MobileDevice</usePurposes>
</forms> </forms>
<forms uuid="5011e9cb-bfde-46bf-be3f-8f6ccfbee406">
<name>ФормаСписка</name>
<synonym>
<key>ru</key>
<value>Форма списка</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:Catalog> </mdclass:Catalog>
@@ -279,8 +279,6 @@
ВызватьИсключение НСтр("ru = 'Не достаточно прав для совершения операции.'"); ВызватьИсключение НСтр("ru = 'Не достаточно прав для совершения операции.'");
КонецЕсли; КонецЕсли;
Зарегистрирована = Ложь;
ОбъектСправочника = РеквизитФормыВЗначение("Объект"); ОбъектСправочника = РеквизитФормыВЗначение("Объект");
Информация = ВнешниеКомпонентыСлужебный.ИнформацияОКомпоненте(ПараметрыЗагрузки.АдресХранилищаФайла); Информация = ВнешниеКомпонентыСлужебный.ИнформацияОКомпоненте(ПараметрыЗагрузки.АдресХранилищаФайла);
@@ -329,7 +327,7 @@
// Серверная логика обновления компоненты с сайта. // Серверная логика обновления компоненты с сайта.
&НаСервере &НаСервере
Функция ЗавершитьОбновлениеКомпонентыССайтаНаСервере(Результат) Процедура ЗавершитьОбновлениеКомпонентыССайтаНаСервере(Результат)
// Обновление формы по новому значению объекта в ИБ. // Обновление формы по новому значению объекта в ИБ.
ЭтотОбъект.Прочитать(); ЭтотОбъект.Прочитать();
@@ -337,7 +335,7 @@
Модифицированность = Ложь; Модифицированность = Ложь;
УстановитьВидимостьДоступность(); УстановитьВидимостьДоступность();
КонецФункции КонецПроцедуры
///////////////////////////////////////////////////////// /////////////////////////////////////////////////////////
// Представление данных на форме. // Представление данных на форме.
@@ -385,7 +383,7 @@
// Для внутреннего использования. // Для внутреннего использования.
&НаКлиенте &НаКлиенте
Функция ЗакрытьСПараметромЗакрытия() Процедура ЗакрытьСПараметромЗакрытия()
ПараметрЗакрытия = Неопределено; ПараметрЗакрытия = Неопределено;
@@ -400,7 +398,7 @@
Закрыть(ПараметрЗакрытия); Закрыть(ПараметрЗакрытия);
КонецФункции КонецПроцедуры
// Для внутреннего использования. // Для внутреннего использования.
&НаКлиенте &НаКлиенте
@@ -78,14 +78,14 @@
ХранимыеПараметры.Вставить("РасширенныйПодбор", Параметры.РасширенныйПодбор); ХранимыеПараметры.Вставить("РасширенныйПодбор", Параметры.РасширенныйПодбор);
Элементы.ВыбранныеПользователиИГруппы.Видимость = ХранимыеПараметры.РасширенныйПодбор; Элементы.ВыбранныеПользователиИГруппы.Видимость = ХранимыеПараметры.РасширенныйПодбор;
Элементы.ВидПользователей.Видимость = Не ХранимыеПараметры.РасширенныйПодбор; Элементы.ВидПользователей.Видимость = Не ХранимыеПараметры.РасширенныйПодбор;
ХранимыеПараметры.Вставить( ХранимыеПараметры.Вставить("ИспользоватьГруппы",
"ИспользоватьГруппы", ПолучитьФункциональнуюОпцию("ИспользоватьГруппыПользователей")); ПолучитьФункциональнуюОпцию("ИспользоватьГруппыПользователей"));
Если НЕ ПравоДоступа("Добавление", Метаданные.Справочники.ВнешниеПользователи) Тогда Если НЕ ПравоДоступа("Добавление", Метаданные.Справочники.ВнешниеПользователи) Тогда
Элементы.СоздатьВнешнегоПользователя.Видимость = Ложь; Элементы.СоздатьВнешнегоПользователя.Видимость = Ложь;
КонецЕсли; КонецЕсли;
Если Не Пользователи.РолиДоступны("ДобавлениеИзменениеВнешнихПользователей") Тогда Если Не ПравоДоступа("Редактирование", Метаданные.Справочники.ГруппыВнешнихПользователей) Тогда
Элементы.ВнешниеПользователиСписокКонтекстноеМенюНазначитьГруппы.Видимость = Ложь; Элементы.ВнешниеПользователиСписокКонтекстноеМенюНазначитьГруппы.Видимость = Ложь;
Элементы.НазначитьГруппы.Видимость = Ложь; Элементы.НазначитьГруппы.Видимость = Ложь;
КонецЕсли; КонецЕсли;
@@ -139,7 +139,9 @@
Элементы.ВыбратьГруппуВнешнихПользователей.Видимость = Ложь; Элементы.ВыбратьГруппуВнешнихПользователей.Видимость = Ложь;
КонецЕсли; КонецЕсли;
ХранимыеПараметры.Вставить("ГруппаВсеПользователи", Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи); ХранимыеПараметры.Вставить("ГруппаВсеПользователи",
Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи);
ХранимыеПараметры.Вставить("ТекущаяСтрока", Параметры.ТекущаяСтрока); ХранимыеПараметры.Вставить("ТекущаяСтрока", Параметры.ТекущаяСтрока);
НастроитьФормуПоИспользованиюГруппПользователей(); НастроитьФормуПоИспользованиюГруппПользователей();
ХранимыеПараметры.Удалить("ТекущаяСтрока"); ХранимыеПараметры.Удалить("ТекущаяСтрока");
@@ -1110,15 +1112,10 @@
ПоказатьОповещениеПользователя( ПоказатьОповещениеПользователя(
НСтр("ru = 'Перемещение пользователей'"), , СообщениеПользователю.Сообщение, БиблиотекаКартинок.Информация32); НСтр("ru = 'Перемещение пользователей'"), , СообщениеПользователю.Сообщение, БиблиотекаКартинок.Информация32);
Иначе Иначе
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено,
ПараметрыПредупреждения = Новый Структура("Текст", СообщениеПользователю.Сообщение); СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1
Если СообщениеПользователю.Пользователи <> Неопределено Тогда |Следующие пользователи не были включены в выбранную группу:
Подробно = НСтр("ru = 'Следующие пользователи не были включены в выбранную группу:'"); |%2'"), СообщениеПользователю.Сообщение, СообщениеПользователю.Пользователи), РежимДиалогаВопрос.ОК);
Подробно = Подробно + Символы.ПС + СообщениеПользователю.Пользователи;
ПараметрыПредупреждения.Вставить("Подробно", Подробно);
КонецЕсли;
СтандартныеПодсистемыКлиент.ВывестиПредупреждение(ЭтотОбъект, ПараметрыПредупреждения);
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -459,7 +459,7 @@
ДействияВФорме.СоставГруппы = "Редактирование"; ДействияВФорме.СоставГруппы = "Редактирование";
ДействияВФорме.СвойстваЭлемента = "Редактирование"; ДействияВФорме.СвойстваЭлемента = "Редактирование";
ИначеЕсли Пользователи.РолиДоступны("ДобавлениеИзменениеВнешнихПользователей") Тогда ИначеЕсли ПравоДоступа("Редактирование", Метаданные.Справочники.ГруппыВнешнихПользователей) Тогда
// Менеджер внешних пользователей. // Менеджер внешних пользователей.
ДействияВФорме.Роли = ""; ДействияВФорме.Роли = "";
ДействияВФорме.СоставГруппы = "Редактирование"; ДействияВФорме.СоставГруппы = "Редактирование";
@@ -246,7 +246,7 @@
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<dataPath xsi:type="form:DataPath"> <dataPath xsi:type="form:DataPath">
<segments>Список.Наименование</segments> <segments>Список.Description</segments>
</dataPath> </dataPath>
<defaultItem>true</defaultItem> <defaultItem>true</defaultItem>
<extendedTooltip> <extendedTooltip>
@@ -637,6 +637,10 @@
</rowPictureDataPath> </rowPictureDataPath>
<autoMaxCardHeight>true</autoMaxCardHeight> <autoMaxCardHeight>true</autoMaxCardHeight>
<extInfo xsi:type="form:DynamicListTableExtInfo"> <extInfo xsi:type="form:DynamicListTableExtInfo">
<handlers>
<event>OnGetDataAtServer</event>
<name>СписокПриПолученииДанныхНаСервере</name>
</handlers>
<autoRefreshPeriod>60</autoRefreshPeriod> <autoRefreshPeriod>60</autoRefreshPeriod>
<period> <period>
<startDate>0001-01-01T00:00:00</startDate> <startDate>0001-01-01T00:00:00</startDate>
@@ -735,13 +739,7 @@
ГруппыДоступа.Предопределенный, ГруппыДоступа.Предопределенный,
ГруппыДоступа.Родитель, ГруппыДоступа.Родитель,
ГруппыДоступа.ЭтоГруппа, ГруппыДоступа.ЭтоГруппа,
ВЫБОР ГруппыДоступа.Наименование,
КОГДА ТИПЗНАЧЕНИЯ(ГруппыДоступа.Пользователь) = ТИП(Справочник.Пользователи)
ТОГДА ГруппыДоступа.Наименование + &quot;: &quot; + ВЫРАЗИТЬ(ГруппыДоступа.Пользователь КАК Справочник.Пользователи).Наименование
КОГДА ТИПЗНАЧЕНИЯ(ГруппыДоступа.Пользователь) = ТИП(Справочник.ВнешниеПользователи)
ТОГДА ГруппыДоступа.Наименование + &quot;: &quot; + &amp;ОшибкаОбъектНеНайден
ИНАЧЕ ГруппыДоступа.Наименование
КОНЕЦ КАК Наименование,
ГруппыДоступа.Профиль, ГруппыДоступа.Профиль,
ГруппыДоступа.Пользователь, ГруппыДоступа.Пользователь,
ГруппыДоступа.Комментарий, ГруппыДоступа.Комментарий,
@@ -19,10 +19,14 @@
УпрощенныйИнтерфейсНастройкиПравДоступа = УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа(); УпрощенныйИнтерфейсНастройкиПравДоступа = УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа();
Если УпрощенныйИнтерфейсНастройкиПравДоступа Тогда Если УпрощенныйИнтерфейсНастройкиПравДоступа Тогда
Элементы.ФормаСоздать.Видимость = Ложь; Если Элементы.Найти("ФормаСоздать") <> Неопределено Тогда
Элементы.ФормаСкопировать.Видимость = Ложь; Элементы.ФормаСоздать.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюСоздать.Видимость = Ложь; Элементы.СписокКонтекстноеМенюСоздать.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюСкопировать.Видимость = Ложь; КонецЕсли;
Если Элементы.Найти("ФормаСкопировать") <> Неопределено Тогда
Элементы.ФормаСкопировать.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюСкопировать.Видимость = Ложь;
КонецЕсли;
КонецЕсли; КонецЕсли;
Список.Параметры.УстановитьЗначениеПараметра("Профиль", Параметры.Профиль); Список.Параметры.УстановитьЗначениеПараметра("Профиль", Параметры.Профиль);
@@ -33,21 +37,16 @@
Заголовок = НСтр("ru = 'Группы доступа'"); Заголовок = НСтр("ru = 'Группы доступа'");
Элементы.ФормаСоздатьГруппу.Видимость = Ложь; Если Элементы.Найти("ФормаСоздатьГруппу") <> Неопределено Тогда
Элементы.СписокКонтекстноеМенюСоздатьГруппу.Видимость = Ложь; Элементы.ФормаСоздатьГруппу.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюСоздатьГруппу.Видимость = Ложь;
КонецЕсли;
КонецЕсли; КонецЕсли;
Если НЕ ПравоДоступа("Чтение", Метаданные.Справочники.ПрофилиГруппДоступа) Тогда Если НЕ ПравоДоступа("Чтение", Метаданные.Справочники.ПрофилиГруппДоступа) Тогда
Элементы.Профиль.Видимость = Ложь; Элементы.Профиль.Видимость = Ложь;
КонецЕсли; КонецЕсли;
Если ПравоДоступа("Просмотр", Метаданные.Справочники.ВнешниеПользователи) Тогда
Список.ТекстЗапроса = СтрЗаменить(
Список.ТекстЗапроса,
"&ОшибкаОбъектНеНайден",
"ЕстьNULL(ВЫРАЗИТЬ(ГруппыДоступа.Пользователь КАК Справочник.ВнешниеПользователи).Наименование, &ОшибкаОбъектНеНайден)");
КонецЕсли;
СписокНедоступныхГрупп = Новый СписокЗначений; СписокНедоступныхГрупп = Новый СписокЗначений;
Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда
@@ -59,10 +58,6 @@
РежимВыбора = Параметры.РежимВыбора; РежимВыбора = Параметры.РежимВыбора;
Список.Параметры.УстановитьЗначениеПараметра(
"ОшибкаОбъектНеНайден",
НСтр("ru = '<Объект не найден>'"));
Если Параметры.РежимВыбора Тогда Если Параметры.РежимВыбора Тогда
РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
@@ -171,6 +166,27 @@
КонецПроцедуры КонецПроцедуры
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Для Каждого Строка Из Строки Цикл
Если ТипЗнч(Строка.Ключ) <> Тип("СправочникСсылка.ГруппыДоступа") Тогда
Продолжить;
КонецЕсли;
Данные = Строка.Значение.Данные;
Если Данные.ЭтоГруппа
Или Не ЗначениеЗаполнено(Данные.Пользователь) Тогда
Продолжить;
КонецЕсли;
Данные.Наименование =
УправлениеДоступомСлужебныйКлиентСервер.ПредставлениеГруппыДоступа(Данные);
КонецЦикла;
КонецПроцедуры
&НаКлиенте &НаКлиенте
Процедура СписокПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) Процедура СписокПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
@@ -1594,52 +1594,6 @@
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField">
<name>ОтветственныйЗаПерсональнуюГруппу</name>
<id>316</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>
<extendedTooltip>
<name>ОтветственныйЗаПерсональнуюГруппуExtendedTooltip</name>
<id>401</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ОтветственныйЗаПерсональнуюГруппуКонтекстноеМеню</name>
<id>317</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>
<clearButton>true</clearButton>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<autoCommandBar> <autoCommandBar>
<name>ФормаКоманднаяПанель</name> <name>ФормаКоманднаяПанель</name>
<id>-1</id> <id>-1</id>
@@ -713,7 +713,9 @@
&НаКлиенте &НаКлиенте
Процедура ВидыДоступаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) Процедура ВидыДоступаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда Если Не ТолькоПросмотр
И Не Элементы.Доступ.ТолькоПросмотр Тогда
Элементы.ВидыДоступа.ИзменитьСтроку(); Элементы.ВидыДоступа.ИзменитьСтроку();
КонецЕсли; КонецЕсли;
@@ -917,7 +919,7 @@
// Продолжение обработчика события ПослеЗаписи. // Продолжение обработчика события ПослеЗаписи.
&НаКлиенте &НаКлиенте
Процедура ПослеЗаписиЗавершение(ПараметрыЗаписи) Процедура ПослеЗаписиЗавершение(ПараметрыЗаписи) Экспорт
Если ПараметрыЗаписи.Свойство("ЗаписатьИЗакрыть") Тогда Если ПараметрыЗаписи.Свойство("ЗаписатьИЗакрыть") Тогда
ПодключитьОбработчикОжидания("ЗакрытьФорму", 0.1, Истина); ПодключитьОбработчикОжидания("ЗакрытьФорму", 0.1, Истина);
@@ -942,13 +944,11 @@
&НаСервере &НаСервере
Процедура ЗапретитьИзменениеВсегоКромеСоставаУчастников() Процедура ЗапретитьИзменениеВсегоКромеСоставаУчастников()
Элементы.Наименование.ТолькоПросмотр = Истина; Элементы.Наименование.ТолькоПросмотр = Истина;
Элементы.Родитель.Видимость = Ложь; Элементы.Родитель.Видимость = Ложь;
Элементы.Профиль.ТолькоПросмотр = Истина; Элементы.Профиль.ТолькоПросмотр = Истина;
Элементы.СвойстваПерсональнойГруппы.Видимость = Ложь; Элементы.СвойстваПерсональнойГруппы.Видимость = Ложь;
Элементы.Ответственный.Видимость = Ложь; Элементы.Комментарий.ТолькоПросмотр = Истина;
Элементы.ОтветственныйЗаПерсональнуюГруппу.Видимость = Ложь;
Элементы.Комментарий.ТолькоПросмотр = Истина;
КонецПроцедуры КонецПроцедуры
@@ -966,12 +966,8 @@
Если ЗначениеЗаполнено(ТекущийОбъект.Пользователь) Тогда Если ЗначениеЗаполнено(ТекущийОбъект.Пользователь) Тогда
// Подготовка к режиму персональной группы доступа. // Подготовка к режиму персональной группы доступа.
АвтоЗаголовок = Ложь; АвтоЗаголовок = Ложь;
Заголовок Заголовок = УправлениеДоступомСлужебныйКлиентСервер.ПредставлениеГруппыДоступа(ТекущийОбъект)
= ТекущийОбъект.Наименование + " " + НСтр("ru = '(Группа доступа)'");
+ ": "
+ ТекущийОбъект.Пользователь
+ " "
+ НСтр("ru = '(Группа доступа)'");
Отбор = Новый Структура("Пользователь", ТекущийОбъект.Пользователь); Отбор = Новый Структура("Пользователь", ТекущийОбъект.Пользователь);
НайденныеСтроки = ТекущийОбъект.Пользователи.НайтиСтроки(Отбор); НайденныеСтроки = ТекущийОбъект.Пользователи.НайтиСтроки(Отбор);
@@ -987,7 +983,6 @@
Элементы.Профиль.ТолькоПросмотр = ПользовательЗаполнен; Элементы.Профиль.ТолькоПросмотр = ПользовательЗаполнен;
Элементы.СвойстваПерсональнойГруппы.Видимость = ПользовательЗаполнен; Элементы.СвойстваПерсональнойГруппы.Видимость = ПользовательЗаполнен;
Элементы.ПользователиГруппы.Видимость = НЕ ПользовательЗаполнен; Элементы.ПользователиГруппы.Видимость = НЕ ПользовательЗаполнен;
Элементы.ОтветственныйЗаПерсональнуюГруппу.Видимость = ПользовательЗаполнен;
Элементы.ПользователиИДоступ.ОтображениеСтраниц = Элементы.ПользователиИДоступ.ОтображениеСтраниц =
?(ПользовательЗаполнен, ?(ПользовательЗаполнен,
@@ -1003,13 +998,12 @@
= УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа(); = УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа();
// Подготовка к режиму редактирования пользователей ответственным за участников. // Подготовка к режиму редактирования пользователей ответственным за участников.
Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда
Элементы.Наименование.ТолькоПросмотр = Истина; Элементы.Наименование.ТолькоПросмотр = Истина;
Элементы.Родитель.ТолькоПросмотр = Истина; Элементы.Родитель.ТолькоПросмотр = Истина;
Элементы.Профиль.ТолькоПросмотр = Истина; Элементы.Профиль.ТолькоПросмотр = Истина;
Элементы.Доступ.ТолькоПросмотр = Истина; Элементы.Доступ.ТолькоПросмотр = Истина;
Элементы.Ответственный.ТолькоПросмотр = Истина; Элементы.Ответственный.ТолькоПросмотр = Истина;
Элементы.ОтветственныйЗаПерсональнуюГруппу.ТолькоПросмотр = Истина;
Элементы.Комментарий.ТолькоПросмотр = Истина; Элементы.Комментарий.ТолькоПросмотр = Истина;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -41,6 +41,35 @@
#КонецОбласти #КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("Наименование");
Поля.Добавить("Пользователь");
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
Если Не ЗначениеЗаполнено(Данные.Пользователь) Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Представление = УправлениеДоступомСлужебныйКлиентСервер.ПредставлениеГруппыДоступа(Данные);
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
// Устанавливает пометку удаления группам доступа, если установлена // Устанавливает пометку удаления группам доступа, если установлена
@@ -186,15 +215,23 @@
КонецЕсли; КонецЕсли;
Если ГруппаДоступа.Модифицированность() Тогда Если ГруппаДоступа.Модифицированность() Тогда
Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() Тогда
Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы()
И Не ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда
ЗаблокироватьДанныеДляРедактирования(ГруппаДоступа.Ссылка, ГруппаДоступа.ВерсияДанных); ЗаблокироватьДанныеДляРедактирования(ГруппаДоступа.Ссылка, ГруппаДоступа.ВерсияДанных);
КонецЕсли; КонецЕсли;
ГруппаДоступа.ДополнительныеСвойства.Вставить("НеОбновлятьРолиПользователей"); ГруппаДоступа.ДополнительныеСвойства.Вставить("НеОбновлятьРолиПользователей");
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ГруппаДоступа); ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ГруппаДоступа);
ГруппаДоступаОбновлена = Истина; ГруппаДоступаОбновлена = Истина;
Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() Тогда
Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы()
И Не ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда
РазблокироватьДанныеДляРедактирования(ГруппаДоступа.Ссылка); РазблокироватьДанныеДляРедактирования(ГруппаДоступа.Ссылка);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
@@ -650,16 +650,7 @@
ОбновлениеИзФайлаПоказатьКонфликты(ПараметрыРегистрации); ОбновлениеИзФайлаПоказатьКонфликты(ПараметрыРегистрации);
Иначе Иначе
ОбработчикРезультата = Новый ОписаниеОповещения("ОбновлениеИзФайлаЗавершение", ЭтотОбъект, ПараметрыРегистрации); ОбработчикРезультата = Новый ОписаниеОповещения("ОбновлениеИзФайлаЗавершение", ЭтотОбъект, ПараметрыРегистрации);
Если ПараметрыРегистрации.ЭтоОтчет Тогда СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(ОбработчикРезультата, ПараметрыРегистрации.ТекстОшибки, РежимДиалогаВопрос.ОК);
ЗаголовокОшибки = НСтр("ru = 'Отчет не подключен'");
Иначе
ЗаголовокОшибки = НСтр("ru = 'Обработка не подключена'");
КонецЕсли;
ПараметрыПредупреждения = Новый Структура;
ПараметрыПредупреждения.Вставить("Текст", ПараметрыРегистрации.ТекстОшибки);
ПараметрыПредупреждения.Вставить("Подробно", ПараметрыРегистрации.КраткоеПредставлениеОшибки);
ПараметрыПредупреждения.Вставить("Заголовок", ЗаголовокОшибки);
СтандартныеПодсистемыКлиент.ВывестиПредупреждение(ЭтотОбъект, ПараметрыПредупреждения, ОбработчикРезультата);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -1005,12 +996,9 @@
&НаКлиенте &НаКлиенте
Процедура ПослеЗавершенияВыполненияСервернойКомандыВФоне(Задание, ВыполняемаяКоманда) Экспорт Процедура ПослеЗавершенияВыполненияСервернойКомандыВФоне(Задание, ВыполняемаяКоманда) Экспорт
Если Задание.Статус = "Ошибка" Тогда Если Задание.Статус = "Ошибка" Тогда
Результат = Новый Структура; ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ВводныйТекст = НСтр("ru = 'Не удалось выполнить команду.'"); НСтр("ru = 'Не удалось выполнить команду по причине:
Предупреждение = Новый Структура; |%1.'"), Задание.КраткоеПредставлениеОшибки);
Предупреждение.Вставить("Текст", ВводныйТекст + Символы.ПС + Задание.КраткоеПредставлениеОшибки);
Предупреждение.Вставить("Подробно", Задание.ПодробноеПредставлениеОшибки);
СтандартныеПодсистемыКлиент.ВывестиПредупреждение(ЭтотОбъект, Предупреждение);
Иначе Иначе
Результат = ПолучитьИзВременногоХранилища(Задание.АдресРезультата); Результат = ПолучитьИзВременногоХранилища(Задание.АдресРезультата);
ОповеститьФормы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Результат, "ОповеститьФормы"); ОповеститьФормы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Результат, "ОповеститьФормы");
@@ -324,7 +324,7 @@
Функция ПравоНастройкиРасписания() Функция ПравоНастройкиРасписания()
// Проверяет наличие права настройки расписания дополнительных отчетов и обработок. // Проверяет наличие права настройки расписания дополнительных отчетов и обработок.
Возврат Пользователи.РолиДоступны("ДобавлениеИзменениеДополнительныхОтчетовИОбработок"); Возврат ПравоДоступа("Изменение", Метаданные.Справочники.ДополнительныеОтчетыИОбработки);
КонецФункции КонецФункции
Функция ПредставлениеЗадания(Команда) Функция ПредставлениеЗадания(Команда)
@@ -145,7 +145,7 @@
СтандартныеПодсистемыСервер.ПроверитьДинамическоеОбновлениеВерсииПрограммы(); СтандартныеПодсистемыСервер.ПроверитьДинамическоеОбновлениеВерсииПрограммы();
Блокировка = Новый БлокировкаДанных; Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ИдентификаторыОбъектовМетаданных"); Блокировка.Добавить("Справочник.ИдентификаторыОбъектовМетаданных");
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
@@ -672,11 +672,8 @@
СписокДопустимыхТипов); СписокДопустимыхТипов);
КонецЕсли; КонецЕсли;
Если ЗначениеЗаполнено(ИдентификаторБиблиотеки) Тогда Если Не ЗначениеЗаполнено(ИдентификаторБиблиотеки) Тогда
Библиотека = ВРег(ИдентификаторБиблиотеки) <> ВРег(Метаданные.Имя);
Иначе
ИдентификаторБиблиотеки = Метаданные.Имя; ИдентификаторБиблиотеки = Метаданные.Имя;
Библиотека = Ложь;
КонецЕсли; КонецЕсли;
ПорядокБиблиотеки = Итог.ПорядокБиблиотек[ИдентификаторБиблиотеки]; ПорядокБиблиотеки = Итог.ПорядокБиблиотек[ИдентификаторБиблиотеки];
@@ -1087,7 +1084,7 @@
Если Параметры.РежимВыбора Тогда Если Параметры.РежимВыбора Тогда
СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(Форма, "ВыборПодбор"); СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(Форма, "ВыборПодбор");
РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; Форма.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
Иначе Иначе
Элементы.Список.РежимВыбора = Ложь; Элементы.Список.РежимВыбора = Ложь;
КонецЕсли; КонецЕсли;
@@ -1160,7 +1157,6 @@
ИменаРасширений(ИсточникРасширенийКонфигурации.СеансОтключенные)); ИменаРасширений(ИсточникРасширенийКонфигурации.СеансОтключенные));
СвойстваОбъектовМетаданных = СвойстваОбъектовМетаданных(ОбъектыРасширений); СвойстваОбъектовМетаданных = СвойстваОбъектовМетаданных(ОбъектыРасширений);
СправочникМенеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИмяСправочника(ОбъектыРасширений));
// Найден - состояние, когда для объекта метаданных найден идентификатор. // Найден - состояние, когда для объекта метаданных найден идентификатор.
СвойстваОбъектовМетаданных.Колонки.Добавить("Найден", Новый ОписаниеТипов("Булево")); СвойстваОбъектовМетаданных.Колонки.Добавить("Найден", Новый ОписаниеТипов("Булево"));
@@ -1680,12 +1676,6 @@
ОбъектыРасширений = ЭтоОбъектРасширений(Свойства.Ссылка); ОбъектыРасширений = ЭтоОбъектРасширений(Свойства.Ссылка);
Если ТипЗнч(Свойства.КлючОбъектаМетаданных) = Тип("ХранилищеЗначения") Тогда
КлючОбъектаМетаданных = Свойства.КлючОбъектаМетаданных.Получить();
Иначе
КлючОбъектаМетаданных = Свойства.КлючОбъектаМетаданных;
КонецЕсли;
Если НЕ Свойства.ПометкаУдаления Если НЕ Свойства.ПометкаУдаления
ИЛИ ЗначениеЗаполнено(Свойства.Родитель) ИЛИ ЗначениеЗаполнено(Свойства.Родитель)
ИЛИ Лев(Свойства.Наименование, 1) <> "?" ИЛИ Лев(Свойства.Наименование, 1) <> "?"
@@ -2723,7 +2713,7 @@
Запрос.Текст = Запрос.Текст =
"ВЫБРАТЬ "ВЫБРАТЬ
| Идентификаторы.Ссылка КАК Ссылка, | Идентификаторы.Ссылка КАК Ссылка,
| Идентификаторы.КлючОбъектаМетаданных | Идентификаторы.КлючОбъектаМетаданных КАК ХранилищеКлюча
|ИЗ |ИЗ
| Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы"; | Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы";
@@ -2732,7 +2722,10 @@
ИдентификаторыИзКлючей = Новый Соответствие; ИдентификаторыИзКлючей = Новый Соответствие;
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
КлючОбъектаМетаданных = Выборка.КлючОбъектаМетаданных; Если ТипЗнч(Выборка.ХранилищеКлюча) <> Тип("ХранилищеЗначения") Тогда
Продолжить;
КонецЕсли;
КлючОбъектаМетаданных = Выборка.ХранилищеКлюча.Получить();
Если КлючОбъектаМетаданных = Неопределено Если КлючОбъектаМетаданных = Неопределено
Или КлючОбъектаМетаданных = Тип("Неопределено") Тогда Или КлючОбъектаМетаданных = Тип("Неопределено") Тогда
@@ -441,6 +441,10 @@
</rowPictureDataPath> </rowPictureDataPath>
<autoMaxCardHeight>true</autoMaxCardHeight> <autoMaxCardHeight>true</autoMaxCardHeight>
<extInfo xsi:type="form:DynamicListTableExtInfo"> <extInfo xsi:type="form:DynamicListTableExtInfo">
<handlers>
<event>OnGetDataAtServer</event>
<name>СписокПриПолученииДанныхНаСервере</name>
</handlers>
<autoRefreshPeriod>60</autoRefreshPeriod> <autoRefreshPeriod>60</autoRefreshPeriod>
<period> <period>
<startDate>0001-01-01T00:00:00</startDate> <startDate>0001-01-01T00:00:00</startDate>
@@ -486,6 +490,18 @@
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ref</segments> <segments>Список.Ref</segments>
</notDefaultUseAlwaysAttributes> </notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.ВозможнаяПричина</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.ДатаЗаполненности</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.ДатаЗаполненностиПроизводственногоКалендаря</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.ДатаНеобходимойЗаполненности</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ссылка</segments> <segments>Список.Ссылка</segments>
</notDefaultUseAlwaysAttributes> </notDefaultUseAlwaysAttributes>
@@ -495,30 +511,6 @@
<main>true</main> <main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo"> <extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ <queryText>ВЫБРАТЬ
КалендарныеГрафики.Календарь КАК ГрафикРаботы,
МАКСИМУМ(КалендарныеГрафики.ДатаГрафика) КАК ДатаЗаполненности
ПОМЕСТИТЬ ВТДатыЗаполненностиГрафиков
ИЗ
РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
СГРУППИРОВАТЬ ПО
КалендарныеГрафики.Календарь
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь КАК ПроизводственныйКалендарь,
МАКСИМУМ(ДанныеПроизводственныхКалендарей.Дата) КАК ДатаЗаполненности
ПОМЕСТИТЬ ВТДатыЗаполненностиКалендарей
ИЗ
РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственныхКалендарей
СГРУППИРОВАТЬ ПО
ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СправочникГрафикиРаботы.Ссылка КАК Ссылка, СправочникГрафикиРаботы.Ссылка КАК Ссылка,
СправочникГрафикиРаботы.ВерсияДанных КАК ВерсияДанных, СправочникГрафикиРаботы.ВерсияДанных КАК ВерсияДанных,
СправочникГрафикиРаботы.ПометкаУдаления КАК ПометкаУдаления, СправочникГрафикиРаботы.ПометкаУдаления КАК ПометкаУдаления,
@@ -536,43 +528,13 @@
СправочникГрафикиРаботы.УдалитьВидКалендаря КАК УдалитьВидКалендаря, СправочникГрафикиРаботы.УдалитьВидКалендаря КАК УдалитьВидКалендаря,
СправочникГрафикиРаботы.ГоризонтПланирования КАК ГоризонтПланирования, СправочникГрафикиРаботы.ГоризонтПланирования КАК ГоризонтПланирования,
СправочникГрафикиРаботы.ВладелецГрафика КАК ВладелецГрафика, СправочникГрафикиРаботы.ВладелецГрафика КАК ВладелецГрафика,
ДОБАВИТЬКДАТЕ(&amp;ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования) КАК ДатаНеобходимойЗаполненности, ДАТАВРЕМЯ(1, 1, 1) КАК ДатаНеобходимойЗаполненности,
ДанныеГрафиков.ДатаЗаполненности КАК ДатаЗаполненности, ДАТАВРЕМЯ(1, 1, 1) КАК ДатаЗаполненности,
ДанныеПроизводственныхКалендарей.ДатаЗаполненности КАК ДатаЗаполненностиПроизводственногоКалендаря, ДАТАВРЕМЯ(1, 1, 1) КАК ДатаЗаполненностиПроизводственногоКалендаря,
ВЫБОР ЛОЖЬ КАК ТребуетЗаполнения,
КОГДА ДанныеГрафиков.ДатаЗаполненности &lt; ДОБАВИТЬКДАТЕ(&amp;ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования) &quot;&quot; КАК ВозможнаяПричина
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ТребуетЗаполнения,
ВЫБОР
КОГДА ДанныеГрафиков.ДатаЗаполненности &lt; ДОБАВИТЬКДАТЕ(&amp;ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования)
ТОГДА ВЫБОР
КОГДА СправочникГрафикиРаботы.ПроизводственныйКалендарь &lt;> ЗНАЧЕНИЕ(Справочник.ПроизводственныеКалендари.ПустаяСсылка)
ТОГДА ВЫБОР
КОГДА ДанныеПроизводственныхКалендарей.ДатаЗаполненности = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ВЫРАЗИТЬ(&amp;КалендарьНеЗаполнен КАК СТРОКА(100))
ИНАЧЕ ВЫБОР
КОГДА ДанныеПроизводственныхКалендарей.ДатаЗаполненности &lt; ДОБАВИТЬКДАТЕ(&amp;ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования)
ТОГДА ВЫРАЗИТЬ(&amp;КалендарьНеЗаполненНаГод КАК СТРОКА(100))
КОНЕЦ
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА СправочникГрафикиРаботы.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ВЫРАЗИТЬ(&amp;ГрафикНеЗаполнен КАК СТРОКА(100))
ИНАЧЕ ВЫБОР
КОГДА СправочникГрафикиРаботы.ДатаОкончания &lt; ДОБАВИТЬКДАТЕ(&amp;ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования)
ТОГДА ВЫРАЗИТЬ(&amp;ПериодГрафикаОграничен КАК СТРОКА(100))
КОНЕЦ
КОНЕЦ
КОНЕЦ
ИНАЧЕ &quot;&quot;
КОНЕЦ КАК ВозможнаяПричина
ИЗ ИЗ
Справочник.Календари КАК СправочникГрафикиРаботы Справочник.Календари КАК СправочникГрафикиРаботы</queryText>
ЛЕВОЕ СОЕДИНЕНИЕ ВТДатыЗаполненностиГрафиков КАК ДанныеГрафиков
ПО СправочникГрафикиРаботы.Ссылка = ДанныеГрафиков.ГрафикРаботы
ЛЕВОЕ СОЕДИНЕНИЕ ВТДатыЗаполненностиКалендарей КАК ДанныеПроизводственныхКалендарей
ПО СправочникГрафикиРаботы.ПроизводственныйКалендарь = ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь</queryText>
<mainTable>Catalog.Календари</mainTable> <mainTable>Catalog.Календари</mainTable>
<dynamicDataRead>true</dynamicDataRead> <dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields> <autoFillAvailableFields>true</autoFillAvailableFields>
@@ -14,8 +14,6 @@
УстановитьПараметрыСписка(); УстановитьПараметрыСписка();
ЗаполнитьУсловноеОформлениеСписка();
МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Справочники.Календари); МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Справочники.Календари);
ЕстьГрупповоеИзменениеРеквизитов = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов"); ЕстьГрупповоеИзменениеРеквизитов = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов");
Элементы.СписокИзменитьВыделенные.Видимость = ЕстьГрупповоеИзменениеРеквизитов И МожноРедактировать; Элементы.СписокИзменитьВыделенные.Видимость = ЕстьГрупповоеИзменениеРеквизитов И МожноРедактировать;
@@ -36,35 +34,117 @@
#КонецОбласти #КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Календари", Строки.ПолучитьКлючи());
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("КалендарьНеЗаполнен", НСтр("ru = 'Производственный календарь не заполнен'"));
Запрос.УстановитьПараметр("КалендарьНеЗаполненНаГод", НСтр("ru = 'Производственный календарь не заполнен на очередной календарный год'"));
Запрос.УстановитьПараметр("ГрафикНеЗаполнен", НСтр("ru = 'График не был заполнен на очередной календарный год'"));
Запрос.УстановитьПараметр("ПериодГрафикаОграничен", НСтр("ru = 'Период заполнения графика ограничен (см. поле «Дата окончания»)'"));
Запрос.Текст =
"ВЫБРАТЬ
| КалендарныеГрафики.Календарь КАК ГрафикРаботы,
| МАКСИМУМ(КалендарныеГрафики.ДатаГрафика) КАК ДатаЗаполненности
|ПОМЕСТИТЬ ВТДатыЗаполненностиГрафиков
|ИЗ
| РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
|ГДЕ
| КалендарныеГрафики.Календарь В(&Календари)
|
|СГРУППИРОВАТЬ ПО
| КалендарныеГрафики.Календарь
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь КАК ПроизводственныйКалендарь,
| МАКСИМУМ(ДанныеПроизводственныхКалендарей.Дата) КАК ДатаЗаполненности
|ПОМЕСТИТЬ ВТДатыЗаполненностиКалендарей
|ИЗ
| РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственныхКалендарей
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Календари КАК Календари
| ПО (Календари.ПроизводственныйКалендарь = ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь)
| И (Календари.Ссылка В (&Календари))
|
|СГРУППИРОВАТЬ ПО
| ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СправочникГрафикиРаботы.Ссылка КАК Ссылка,
| ДОБАВИТЬКДАТЕ(&ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования) КАК ДатаНеобходимойЗаполненности,
| ДанныеГрафиков.ДатаЗаполненности КАК ДатаЗаполненности,
| ДанныеПроизводственныхКалендарей.ДатаЗаполненности КАК ДатаЗаполненностиПроизводственногоКалендаря,
| ВЫБОР
| КОГДА ДанныеГрафиков.ДатаЗаполненности < ДОБАВИТЬКДАТЕ(&ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ТребуетЗаполнения,
| ВЫБОР
| КОГДА ДанныеГрафиков.ДатаЗаполненности < ДОБАВИТЬКДАТЕ(&ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования)
| ТОГДА ВЫБОР
| КОГДА СправочникГрафикиРаботы.ПроизводственныйКалендарь <> ЗНАЧЕНИЕ(Справочник.ПроизводственныеКалендари.ПустаяСсылка)
| ТОГДА ВЫБОР
| КОГДА ДанныеПроизводственныхКалендарей.ДатаЗаполненности = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ВЫРАЗИТЬ(&КалендарьНеЗаполнен КАК СТРОКА(100))
| ИНАЧЕ ВЫБОР
| КОГДА ДанныеПроизводственныхКалендарей.ДатаЗаполненности < ДОБАВИТЬКДАТЕ(&ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования)
| ТОГДА ВЫРАЗИТЬ(&КалендарьНеЗаполненНаГод КАК СТРОКА(100))
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА СправочникГрафикиРаботы.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ВЫРАЗИТЬ(&ГрафикНеЗаполнен КАК СТРОКА(100))
| ИНАЧЕ ВЫБОР
| КОГДА СправочникГрафикиРаботы.ДатаОкончания < ДОБАВИТЬКДАТЕ(&ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования)
| ТОГДА ВЫРАЗИТЬ(&ПериодГрафикаОграничен КАК СТРОКА(100))
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ """"
| КОНЕЦ КАК ВозможнаяПричина
|ИЗ
| Справочник.Календари КАК СправочникГрафикиРаботы
| ЛЕВОЕ СОЕДИНЕНИЕ ВТДатыЗаполненностиГрафиков КАК ДанныеГрафиков
| ПО СправочникГрафикиРаботы.Ссылка = ДанныеГрафиков.ГрафикРаботы
| ЛЕВОЕ СОЕДИНЕНИЕ ВТДатыЗаполненностиКалендарей КАК ДанныеПроизводственныхКалендарей
| ПО СправочникГрафикиРаботы.ПроизводственныйКалендарь = ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь
|ГДЕ
| СправочникГрафикиРаботы.Ссылка В(&Календари)";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаСписка = Строки[Выборка.Ссылка];
СтрокаСписка.Данные["ДатаНеобходимойЗаполненности"] = Выборка.ДатаНеобходимойЗаполненности;
СтрокаСписка.Данные["ДатаЗаполненности"] = Выборка.ДатаЗаполненности;
СтрокаСписка.Данные["ДатаЗаполненностиПроизводственногоКалендаря"] = Выборка.ДатаЗаполненностиПроизводственногоКалендаря;
СтрокаСписка.Данные["ТребуетЗаполнения"] = Выборка.ТребуетЗаполнения;
Если Выборка.ТребуетЗаполнения Тогда
Для Каждого КлючИЗначение Из СтрокаСписка.Оформление Цикл
КлючИЗначение.Значение.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныеДанныеЦвет);
КонецЦикла;
КонецЕсли;
СтрокаСписка.Оформление["ВозможнаяПричина"].УстановитьЗначениеПараметра("Текст", Выборка.ВозможнаяПричина);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
&НаСервере &НаСервере
Процедура УстановитьПараметрыСписка() Процедура УстановитьПараметрыСписка()
Список.Параметры.УстановитьЗначениеПараметра("ТекущаяДата", ТекущаяДатаСеанса());
Список.Параметры.УстановитьЗначениеПараметра("КалендарьНеЗаполнен", НСтр("ru = 'Производственный календарь не заполнен'"));
Список.Параметры.УстановитьЗначениеПараметра("КалендарьНеЗаполненНаГод", НСтр("ru = 'Производственный календарь не заполнен на очередной календарный год'"));
Список.Параметры.УстановитьЗначениеПараметра("ГрафикНеЗаполнен", НСтр("ru = 'График не был заполнен на очередной календарный год'"));
Список.Параметры.УстановитьЗначениеПараметра("ПериодГрафикаОграничен", НСтр("ru = 'Период заполнения графика ограничен (см. поле «Дата окончания»)'"));
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "ВладелецГрафика", , ВидСравненияКомпоновкиДанных.НеЗаполнено, , , Список, "ВладелецГрафика", , ВидСравненияКомпоновкиДанных.НеЗаполнено, , ,
РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный); РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
КонецПроцедуры КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУсловноеОформлениеСписка()
НовыйЭлемент = Список.УсловноеОформление.Элементы.Добавить();
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(НовыйЭлемент.Отбор, "ТребуетЗаполнения", Истина);
Оформление = НовыйЭлемент.Оформление.Элементы.Найти("ЦветТекста");
Оформление.Значение = ЦветаСтиля.ПросроченныеДанныеЦвет;
Оформление.Использование = Истина;
КонецПроцедуры
#КонецОбласти #КонецОбласти
@@ -20,6 +20,8 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан("Справочник.Календари", ЭтотОбъект);
// Если производственный календарь в системе единственный, заполняем его по умолчанию. // Если производственный календарь в системе единственный, заполняем его по умолчанию.
ПроизводственныеКалендари = Справочники.ПроизводственныеКалендари.СписокПроизводственныхКалендарей(); ПроизводственныеКалендари = Справочники.ПроизводственныеКалендари.СписокПроизводственныхКалендарей();
Если ПроизводственныеКалендари.Количество() = 1 Тогда Если ПроизводственныеКалендари.Количество() = 1 Тогда
@@ -567,7 +569,7 @@
СтрокаШаблона.ПредставлениеРасписания = ПредставлениеРасписанияДня(Форма, СтрокаШаблона.НомерСтроки); СтрокаШаблона.ПредставлениеРасписания = ПредставлениеРасписанияДня(Форма, СтрокаШаблона.НомерСтроки);
КонецЦикла; КонецЦикла;
РасписаниеПредпраздничногоДня = ПредставлениеРасписанияДня(Форма, 0); Форма.РасписаниеПредпраздничногоДня = ПредставлениеРасписанияДня(Форма, 0);
КонецПроцедуры КонецПроцедуры
@@ -674,7 +676,7 @@
ИнформационныйТекст = НСтр("ru = 'График работы заполнен до %1'"); ИнформационныйТекст = НСтр("ru = 'График работы заполнен до %1'");
Форма.ЗаполненностьИнформационныйТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИнформационныйТекст, Формат(Форма.ДатаЗаполненности, "ДЛФ=D")); Форма.ЗаполненностьИнформационныйТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИнформационныйТекст, Формат(Форма.ДатаЗаполненности, "ДЛФ=D"));
Иначе Иначе
#Если Клиент Тогда #Если ВебКлиент Или ТонкийКлиент Тогда
ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса(); ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса();
#Иначе #Иначе
ТекущаяДата = ТекущаяДатаСеанса(); ТекущаяДата = ТекущаяДатаСеанса();
@@ -463,28 +463,29 @@
ДатаДня = ДатаНачала; ДатаДня = ДатаНачала;
Пока ДатаДня <= ДатаОкончания Цикл Пока ДатаДня <= ДатаОкончания Цикл
ПраздничныйДень = Ложь; ПраздничныйДень = Ложь;
Если Не ЗаполнятьПоПроизводственномуКалендарю Тогда НерабочийДень = Ложь;
НомерДня = ДеньНедели(ДатаДня); НомерДня = ДеньНедели(ДатаДня);
Иначе Если ЗаполнятьПоПроизводственномуКалендарю И УчитыватьПраздники Тогда
ДанныеДня = ДанныеПроизводственногоКалендаря.НайтиСтроки(Новый Структура("Дата", ДатаДня))[0]; ДанныеДня = ДанныеПроизводственногоКалендаря.НайтиСтроки(Новый Структура("Дата", ДатаДня))[0];
Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота Тогда Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота Тогда
НомерДня = 6; НомерДня = 6;
ИначеЕсли ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье Тогда ИначеЕсли ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье Тогда
НомерДня = 7; НомерДня = 7;
Иначе Иначе
НомерДня = ДеньНедели(?(ЗначениеЗаполнено(ДанныеДня.ДатаПереноса), ДанныеДня.ДатаПереноса, ДанныеДня.Дата)); Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник Тогда
ПраздничныйДень = Истина;
ИначеЕсли ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий Тогда
НерабочийДень = Истина;
КонецЕсли;
КонецЕсли; КонецЕсли;
ПраздничныйДень = УчитыватьПраздники И ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник;
НерабочийДень = УчитыватьПраздники И ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий;
КонецЕсли; КонецЕсли;
Если Не ПраздничныйДень И Не НерабочийДень Тогда
СтрокаДня = ШаблонЗаполнения[НомерДня - 1]; СтрокаДня = ШаблонЗаполнения[НомерДня - 1];
Если СтрокаДня.ДеньВключенВГрафик И Не ПраздничныйДень И Не НерабочийДень Тогда Если СтрокаДня.ДеньВключенВГрафик Тогда
ДниВключенныеВГрафик.Вставить(ДатаДня, Истина); ДниВключенныеВГрафик.Вставить(ДатаДня, Истина);
КонецЕсли;
КонецЕсли; КонецЕсли;
ДатаДня = ДатаДня + ДлинаСуток; ДатаДня = ДатаДня + ДлинаСуток;
КонецЦикла; КонецЦикла;
@@ -12,6 +12,8 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан("Справочник.Календари");
Если Не УчитыватьПраздники Тогда Если Не УчитыватьПраздники Тогда
// Если график работы не учитывает праздники, то нужно удалить интервалы предпраздничного дня. // Если график работы не учитывает праздники, то нужно удалить интервалы предпраздничного дня.
РасписаниеПредпраздничногоДня = РасписаниеРаботы.НайтиСтроки(Новый Структура("НомерДня", 0)); РасписаниеПредпраздничногоДня = РасписаниеРаботы.НайтиСтроки(Новый Структура("НомерДня", 0));
@@ -839,15 +839,16 @@
Элементы.ВыбиратьИерархически.Видимость = ХранимыеПараметры.ИспользоватьГруппы; Элементы.ВыбиратьИерархически.Видимость = ХранимыеПараметры.ИспользоватьГруппы;
Если Не Пользователи.РолиДоступны("ДобавлениеИзменениеПользователей") Если Не ПравоДоступа("Редактирование", Метаданные.Справочники.ГруппыПользователей)
Или ХранимыеПараметры.РасширенныйПодбор Или ХранимыеПараметры.РасширенныйПодбор
Или ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда Или ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда
Элементы.НазначитьГруппы.Видимость = Ложь; Элементы.НазначитьГруппы.Видимость = Ложь;
Элементы.ПользователиСписокКонтекстноеМенюНазначитьГруппы.Видимость = Ложь; Элементы.ПользователиСписокКонтекстноеМенюНазначитьГруппы.Видимость = Ложь;
Иначе Иначе
Элементы.НазначитьГруппы.Видимость = ХранимыеПараметры.ИспользоватьГруппы; Элементы.НазначитьГруппы.Видимость = ХранимыеПараметры.ИспользоватьГруппы;
Элементы.ПользователиСписокКонтекстноеМенюНазначитьГруппы.Видимость = ХранимыеПараметры.ИспользоватьГруппы; Элементы.ПользователиСписокКонтекстноеМенюНазначитьГруппы.Видимость =
ХранимыеПараметры.ИспользоватьГруппы;
КонецЕсли; КонецЕсли;
Элементы.СоздатьГруппуПользователей.Видимость = Элементы.СоздатьГруппуПользователей.Видимость =
@@ -0,0 +1,245 @@
<?xml version="1.0" encoding="UTF-8"?>
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:form="http://g5.1c.ru/v8/dt/form">
<items xsi:type="form:FormField">
<name>Наименование</name>
<id>1</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.Description</segments>
</dataPath>
<extendedTooltip>
<name>НаименованиеРасширеннаяПодсказка</name>
<id>3</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>НаименованиеКонтекстноеМеню</name>
<id>2</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<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>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Родитель</name>
<id>12</id>
<title>
<key>ru</key>
<value>Вышестоящая группа (папка)</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.Parent</segments>
</dataPath>
<titleHeight>2</titleHeight>
<extendedTooltip>
<name>РодительРасширеннаяПодсказка</name>
<id>14</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>РодительКонтекстноеМеню</name>
<id>13</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>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаДляРазработчика</name>
<id>10</id>
<items xsi:type="form:FormField">
<name>Идентификатор</name>
<id>7</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Объект.Идентификатор</segments>
</dataPath>
<extendedTooltip>
<name>ИдентификаторРасширеннаяПодсказка</name>
<id>9</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИдентификаторКонтекстноеМеню</name>
<id>8</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<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>
<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>11</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>Vertical</group>
<behavior>Collapsible</behavior>
<collapsed>true</collapsed>
<controlRepresentation>Button</controlRepresentation>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<slaveItemsWidth>Equal</slaveItemsWidth>
<showTitle>auto</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Комментарий</name>
<id>15</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.Комментарий</segments>
</dataPath>
<extendedTooltip>
<name>КомментарийРасширеннаяПодсказка</name>
<id>17</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>КомментарийКонтекстноеМеню</name>
<id>16</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>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<autoCommandBar>
<name>ФормаКоманднаяПанель</name>
<id>-1</id>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<windowOpeningMode>LockOwner</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoTitle>true</autoTitle>
<autoUrl>true</autoUrl>
<group>Vertical</group>
<autoFillCheck>true</autoFillCheck>
<allowFormCustomize>true</allowFormCustomize>
<enabled>true</enabled>
<showTitle>auto</showTitle>
<showCloseButton>true</showCloseButton>
<attributes>
<name>Объект</name>
<id>1</id>
<valueType>
<types>CatalogObject.ПравилаПроверкиУчета</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<main>true</main>
<savedData>true</savedData>
</attributes>
<commandInterface>
<navigationPanel/>
<commandBar/>
</commandInterface>
<extInfo xsi:type="form:CatalogFormExtInfo">
<useForFoldersAndItems>Folders</useForFoldersAndItems>
</extInfo>
</form:Form>
@@ -64,6 +64,33 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Button">
<name>ФормаВосстановитьПоНачальномуЗаполнению</name>
<id>145</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаВосстановитьПоНачальномуЗаполнениюРасширеннаяПодсказка</name>
<id>146</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ВосстановитьПоНачальномуЗаполнению</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</items>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -792,6 +819,28 @@
<currentRowUse>DontUse</currentRowUse> <currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse> <selectedRowsUse>Auto</selectedRowsUse>
</formCommands> </formCommands>
<formCommands>
<name>ВосстановитьПоНачальномуЗаполнению</name>
<title>
<key>ru</key>
<value>Восстановить по начальному заполнению</value>
</title>
<id>2</id>
<toolTip>
<key>ru</key>
<value>Восстанавливает элементы справочника проверок ведения учета до состояния поставки. Функциональность аналогична соответствующему обработчику обновления.</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ВосстановитьПоНачальномуЗаполнению</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface> <commandInterface>
<navigationPanel/> <navigationPanel/>
<commandBar/> <commandBar/>
@@ -48,6 +48,9 @@
Элементы.ПредставлениеОбщегоРасписания.Доступность = РасписаниеДоступно(); Элементы.ПредставлениеОбщегоРасписания.Доступность = РасписаниеДоступно();
ФормаГруппаДействий = Элементы.КоманднаяПанель.ПодчиненныеЭлементы.ФормаГруппаДействий;
ФормаГруппаДействий.ПодчиненныеЭлементы.ФормаВосстановитьПоНачальномуЗаполнению.Видимость = МодульПользователи.ЭтоПолноправныйПользователь();
// СтандартныеПодсистемы.ПодключаемыеКоманды // СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды // Конец СтандартныеПодсистемы.ПодключаемыеКоманды
@@ -169,18 +172,14 @@
КонецПроцедуры КонецПроцедуры
&НаСервере &НаКлиенте
Функция ПодготовкаМассиваПроверок(МассивПроверок) Процедура ВосстановитьПоНачальномуЗаполнению(Команда)
ВосстановитьПоНачальномуЗаполнениюНаСервере();
ОтфильтрованныйМассив = Новый Массив; КонецПроцедуры
Для Каждого Проверка Из МассивПроверок Цикл
Если Не Проверка.ЭтоГруппа Тогда #КонецОбласти
ОтфильтрованныйМассив.Добавить(Проверка);
КонецЕсли; #Область СлужебныеПроцедурыИФункции
КонецЦикла;
Возврат ОтфильтрованныйМассив;
КонецФункции
&НаСервере &НаСервере
Функция ВыполнитьПроверкиНаСервере(МассивПроверок) Функция ВыполнитьПроверкиНаСервере(МассивПроверок)
@@ -225,9 +224,28 @@
КонецФункции КонецФункции
#КонецОбласти &НаСервере
Процедура ВосстановитьПоНачальномуЗаполнениюНаСервере()
КонтрольВеденияУчетаСлужебный.ОбновитьПараметрыСистемныхПроверок();
Если КонтрольВеденияУчетаСлужебный.ЕстьИзмененияПараметровСистемныхПроверок() Тогда
КонтрольВеденияУчетаСлужебный.ОбновитьВспомогательныеДанныеПоИзменениямКонфигурации();
КонецЕсли;
КонецПроцедуры
#Область СлужебныеПроцедурыИФункции &НаСервере
Функция ПодготовкаМассиваПроверок(МассивПроверок)
ОтфильтрованныйМассив = Новый Массив;
Для Каждого Проверка Из МассивПроверок Цикл
Если Не Проверка.ЭтоГруппа Тогда
ОтфильтрованныйМассив.Добавить(Проверка);
КонецЕсли;
КонецЦикла;
Возврат ОтфильтрованныйМассив;
КонецФункции
&НаСервере &НаСервере
Функция СформироватьСтрокуСРасписанием() Функция СформироватьСтрокуСРасписанием()
@@ -335,6 +353,7 @@
Процедура Подключаемый_ОбновитьКоманды() Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список); ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды // Конец СтандартныеПодсистемы.ПодключаемыеКоманды
#КонецОбласти #КонецОбласти
@@ -178,14 +178,17 @@
МассивПараметров = Новый Массив; МассивПараметров = Новый Массив;
ПараметрыЗадания = Новый Структура; ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Идентификатор", Объект.Идентификатор); ПараметрыЗадания.Вставить("Идентификатор", Объект.Идентификатор);
ПараметрыЗадания.Вставить("Наименование", Объект.Наименование); ПараметрыЗадания.Вставить("Наименование", Объект.Наименование);
ПараметрыЗадания.Вставить("ИдентификаторРегламентногоЗадания", Объект.ИдентификаторРегламентногоЗадания); ПараметрыЗадания.Вставить("ИдентификаторРегламентногоЗадания", Объект.ИдентификаторРегламентногоЗадания);
ПараметрыЗадания.Вставить("ДатаНачалаПроверки", Объект.ДатаНачалаПроверки); ПараметрыЗадания.Вставить("ДатаНачалаПроверки", Объект.ДатаНачалаПроверки);
ПараметрыЗадания.Вставить("ЛимитПроблем", Объект.ЛимитПроблем); ПараметрыЗадания.Вставить("ЛимитПроблем", Объект.ЛимитПроблем);
ПараметрыЗадания.Вставить("СпособВыполнения", Объект.СпособВыполнения); ПараметрыЗадания.Вставить("СпособВыполнения", Объект.СпособВыполнения);
ПараметрыЗадания.Вставить("ПроверкаБылаОстановлена", Ложь); ПараметрыЗадания.Вставить("ВажностьПроблемы", Объект.ВажностьПроблемы);
ПараметрыЗадания.Вставить("РучнойЗапуск", Истина); ПараметрыЗадания.Вставить("КонтекстПроверокВеденияУчета", Объект.КонтекстПроверокВеденияУчета);
ПараметрыЗадания.Вставить("УточнениеКонтекстаПроверокВеденияУчета", Объект.УточнениеКонтекстаПроверокВеденияУчета);
ПараметрыЗадания.Вставить("ПроверкаБылаОстановлена", Ложь);
ПараметрыЗадания.Вставить("РучнойЗапуск", Истина);
МассивПараметров.Добавить(ПараметрыЗадания); МассивПараметров.Добавить(ПараметрыЗадания);
@@ -221,7 +224,7 @@
Если ОтдельноеРегламентноеЗадание = Неопределено Тогда Если ОтдельноеРегламентноеЗадание = Неопределено Тогда
Элементы.ПредставлениеИндивидуальногоРасписания.Заголовок = Элементы.ПредставлениеИндивидуальногоРасписания.Заголовок =
Новый ФорматированнаяСтрока(НСтр("ru='Настроить индивидуальное расписание?'"), , , , ПоместитьВоВременноеХранилище("ДобавитьЗадание", УникальныйИдентификатор)); Новый ФорматированнаяСтрока(НСтр("ru='Настроить расписание'"), , , , ПоместитьВоВременноеХранилище("ДобавитьЗадание", УникальныйИдентификатор));
Иначе Иначе
Элементы.ПредставлениеИндивидуальногоРасписания.Заголовок = Элементы.ПредставлениеИндивидуальногоРасписания.Заголовок =
Новый ФорматированнаяСтрока(ОтдельноеРасписаниеПредставление, , , , ПоместитьВоВременноеХранилище(ОтдельноеРегламентноеЗадание.Расписание, УникальныйИдентификатор)); Новый ФорматированнаяСтрока(ОтдельноеРасписаниеПредставление, , , , ПоместитьВоВременноеХранилище(ОтдельноеРегламентноеЗадание.Расписание, УникальныйИдентификатор));
@@ -301,8 +304,6 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
КлючЗадания = Строка(Новый УникальныйИдентификатор);
ПараметрыЗадания = Новый Структура; ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Расписание", Расписание); ПараметрыЗадания.Вставить("Расписание", Расписание);
ПараметрыЗадания.Вставить("Использование", Истина); ПараметрыЗадания.Вставить("Использование", Истина);
@@ -331,7 +332,7 @@
Функция МетаданныеТекущейПроверки(Идентификатор) Функция МетаданныеТекущейПроверки(Идентификатор)
СтруктураПроверки = Новый Структура; СтруктураПроверки = Новый Структура;
Проверки = КонтрольВеденияУчетаПовтИсп.ПроверкиВеденияУчета().Проверки; Проверки = КонтрольВеденияУчетаСлужебныйПовтИсп.ПроверкиВеденияУчета().Проверки;
СтрокаПроверки = Проверки.Найти(Идентификатор, "Идентификатор"); СтрокаПроверки = Проверки.Найти(Идентификатор, "Идентификатор");
Если СтрокаПроверки = Неопределено Тогда Если СтрокаПроверки = Неопределено Тогда
@@ -4,14 +4,14 @@
Процедура ПередЗаписью(Отказ) Процедура ПередЗаписью(Отказ)
Если Не ЭтоГруппа И Использование = Ссылка.Использование Тогда
Использование = Не ПометкаУдаления;
КонецЕсли;
Если ОбменДанными.Загрузка Тогда Если ОбменДанными.Загрузка Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Если Не ЭтоГруппа И Использование = Ссылка.Использование Тогда
Использование = Не ПометкаУдаления;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ПроверкаВеденияУчетаИзменена = ОбъектБылИзменен(); ПроверкаВеденияУчетаИзменена = ОбъектБылИзменен();
@@ -64,7 +64,7 @@
КонецЦикла; КонецЦикла;
КонецФункции; КонецФункции
#КонецОбласти #КонецОбласти
@@ -74,7 +74,7 @@
</synonym> </synonym>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Группа к которой относится правило проверки</value> <value>Группа, к которой относится правило проверки.</value>
</toolTip> </toolTip>
<fillFromFillingValue>true</fillFromFillingValue> <fillFromFillingValue>true</fillFromFillingValue>
<fillValue xsi:type="core:ReferenceValue"> <fillValue xsi:type="core:ReferenceValue">
@@ -130,7 +130,6 @@
<value>Правило проверки учета</value> <value>Правило проверки учета</value>
</objectPresentation> </objectPresentation>
<hierarchical>true</hierarchical> <hierarchical>true</hierarchical>
<limitLevelCount>true</limitLevelCount>
<levelCount>2</levelCount> <levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop> <foldersOnTop>true</foldersOnTop>
<descriptionLength>150</descriptionLength> <descriptionLength>150</descriptionLength>
@@ -140,6 +139,7 @@
<editType>InDialog</editType> <editType>InDialog</editType>
<choiceMode>BothWays</choiceMode> <choiceMode>BothWays</choiceMode>
<defaultObjectForm>Catalog.ПравилаПроверкиУчета.Form.ФормаЭлемента</defaultObjectForm> <defaultObjectForm>Catalog.ПравилаПроверкиУчета.Form.ФормаЭлемента</defaultObjectForm>
<defaultFolderForm>Catalog.ПравилаПроверкиУчета.Form.ФормаГруппы</defaultFolderForm>
<defaultListForm>Catalog.ПравилаПроверкиУчета.Form.ФормаСписка</defaultListForm> <defaultListForm>Catalog.ПравилаПроверкиУчета.Form.ФормаСписка</defaultListForm>
<attributes uuid="776c171d-5dd5-4965-94dc-c2fe6792d5f2"> <attributes uuid="776c171d-5dd5-4965-94dc-c2fe6792d5f2">
<name>ВажностьПроблемы</name> <name>ВажностьПроблемы</name>
@@ -206,7 +206,7 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="e16865c3-75d0-4b66-b52a-ca7991274d87"> <attributes uuid="49bd152e-479a-46fe-b3af-26ed9181dc34">
<name>Причины</name> <name>Причины</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
@@ -226,7 +226,7 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="ca0a362a-edd9-4f33-9285-db7e7d3de7e9"> <attributes uuid="0a742dd2-1ff4-42de-b303-f2bb01b36fe2">
<name>Рекомендация</name> <name>Рекомендация</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
@@ -286,7 +286,7 @@
<fillValue xsi:type="core:UndefinedValue"/> <fillValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="f1e1edf0-94f0-4dc1-8b4d-6f44866e98a4"> <attributes uuid="08c8a9bf-7b89-4d0e-a496-4c7efeca0577">
<name>ДополнительныеПараметры</name> <name>ДополнительныеПараметры</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
@@ -305,7 +305,7 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="22093cbc-357a-4458-8c54-ce7f51cbf61e"> <attributes uuid="f6c2b015-9cfc-40d2-a93f-b0e88db4a23f">
<name>ДатаНачалаПроверки</name> <name>ДатаНачалаПроверки</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
@@ -325,7 +325,7 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="e614c04d-d877-42fa-b836-91b298e3d3d6"> <attributes uuid="103f3d8f-e47a-4772-bdd7-dd5f8508d22b">
<name>ЛимитПроблем</name> <name>ЛимитПроблем</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
@@ -349,7 +349,7 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="72a16a43-433c-4bb0-919d-cf2bc43d016a"> <attributes uuid="ba8ea271-8716-49ef-8b10-f4b5798c1f62">
<name>РасписаниеВыполненияПроверки</name> <name>РасписаниеВыполненияПроверки</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
@@ -368,7 +368,7 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="935cca1c-5ac6-4a7d-9c8e-e733e99cbd40"> <attributes uuid="3633c30c-9479-4801-89cc-a5734a41e465">
<name>Комментарий</name> <name>Комментарий</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
@@ -384,8 +384,9 @@
</toolTip> </toolTip>
<minValue xsi:type="core:UndefinedValue"/> <minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/> <fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<use>ForFolderAndItem</use>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="f295c68d-7e29-48b8-a95a-56e96d9843c1"> <attributes uuid="f295c68d-7e29-48b8-a95a-56e96d9843c1">
@@ -405,16 +406,17 @@
<maxValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/> <fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<use>ForFolderAndItem</use>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="7ebe16ee-8e5d-4b05-89b5-9539f73be90c"> <attributes uuid="7ebe16ee-8e5d-4b05-89b5-9539f73be90c">
<name>УточнениеКонтекстаПроверкиСостоянияСистемы</name> <name>УточнениеКонтекстаПроверокВеденияУчета</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Уточнение контекста проверки состояния системы</value> <value>Уточнение контекста проверок ведения учета</value>
</synonym> </synonym>
<type> <type>
<types>DefinedType.УточнениеКонтекстаПроверкиСостоянияСистемы</types> <types>DefinedType.УточнениеКонтекстаПроверокВеденияУчета</types>
</type> </type>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
@@ -426,7 +428,7 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="38556870-93c1-4d45-8bbd-2bb663a7068d"> <attributes uuid="ea5d0221-fb1e-4626-862a-9c1209365d8f">
<name>ПроверкаВеденияУчетаИзменена</name> <name>ПроверкаВеденияУчетаИзменена</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
@@ -446,7 +448,7 @@
<use>ForFolderAndItem</use> <use>ForFolderAndItem</use>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<forms uuid="0b195c56-ac0f-4120-a097-3f4f9743c4f2"> <forms uuid="12bce69b-933c-4ce4-9d29-a47f3db0226e">
<name>ФормаЭлемента</name> <name>ФормаЭлемента</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
@@ -460,7 +462,7 @@
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes> <usePurposes>MobileDevice</usePurposes>
</forms> </forms>
<forms uuid="a3337da8-d35d-4cd2-b1de-ffed887a5f73"> <forms uuid="82dcd6a3-c35b-421c-a8f9-77855ad2abca">
<name>ФормаСписка</name> <name>ФормаСписка</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
@@ -469,4 +471,13 @@
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes> <usePurposes>MobileDevice</usePurposes>
</forms> </forms>
<forms uuid="ad0b1720-282e-49d4-af80-324a887963c3">
<name>ФормаГруппы</name>
<synonym>
<key>ru</key>
<value>Форма группы</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:Catalog> </mdclass:Catalog>
@@ -3,6 +3,16 @@
#Область ОбработчикиСобытий #Область ОбработчикиСобытий
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновитьПовторноИспользуемыеЗначения();
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если ЭтоПрограммаОблачногоСервиса Тогда Если ЭтоПрограммаОблачногоСервиса Тогда
@@ -287,6 +287,40 @@
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField">
<name>Ссылка</name>
<id>36</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Список.Ref</segments>
</dataPath>
<extendedTooltip>
<name>СсылкаРасширеннаяПодсказка</name>
<id>38</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СсылкаКонтекстноеМеню</name>
<id>37</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<commandBarLocation>None</commandBarLocation> <commandBarLocation>None</commandBarLocation>
<autoCommandBar> <autoCommandBar>
<name>СписокКоманднаяПанель</name> <name>СписокКоманднаяПанель</name>
@@ -449,6 +483,15 @@
<edit> <edit>
<common>true</common> <common>true</common>
</edit> </edit>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Code</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ref</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.БазовыйКалендарь</segments>
</notDefaultUseAlwaysAttributes>
<main>true</main> <main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo"> <extInfo xsi:type="form:DynamicListExtInfo">
<mainTable>Catalog.ПроизводственныеКалендари</mainTable> <mainTable>Catalog.ПроизводственныеКалендари</mainTable>
@@ -59,6 +59,43 @@
#КонецОбласти #КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Функция выявляет последний день, за который заполнены данные
// указанного производственного календаря.
//
// Параметры:
// ПроизводственныйКалендарь - СправочникСсылка.ПроизводственныеКалендари - календарь.
//
// Возвращаемое значение:
// Дата - дата, по которую заполнен производственный календарь, Неопределено, если календарь не заполнен.
//
Функция ДатаОкончанияЗаполненияПроизводственногоКалендаря(ПроизводственныйКалендарь) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ПроизводственныйКалендарь", ПроизводственныйКалендарь);
Запрос.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(ДанныеПроизводственногоКалендаря.Дата) КАК Дата
|ИЗ
| РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
|ГДЕ
| ДанныеПроизводственногоКалендаря.ПроизводственныйКалендарь = &ПроизводственныйКалендарь
|
|ИМЕЮЩИЕ
| МАКСИМУМ(ДанныеПроизводственногоКалендаря.Дата) ЕСТЬ НЕ NULL ";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Дата;
КонецЕсли;
Возврат Неопределено;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
// Функция читает данные производственного календаря из регистра. // Функция читает данные производственного календаря из регистра.
@@ -160,11 +197,7 @@
КонецЕсли; КонецЕсли;
// Преобразовываем в таблицу. // Преобразовываем в таблицу.
ДанныеПроизводственногоКалендаря = Новый ТаблицаЗначений; ДанныеПроизводственногоКалендаря = НовыеДанныеПроизводственныхКалендарей();
ДанныеПроизводственногоКалендаря.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));
ДанныеПроизводственногоКалендаря.Колонки.Добавить("ВидДня", Новый ОписаниеТипов("ПеречислениеСсылка.ВидыДнейПроизводственногоКалендаря"));
ДанныеПроизводственногоКалендаря.Колонки.Добавить("ДатаПереноса", Новый ОписаниеТипов("Дата"));
Для Каждого КлючИЗначение Из ВидыДней Цикл Для Каждого КлючИЗначение Из ВидыДней Цикл
НоваяСтрока = ДанныеПроизводственногоКалендаря.Добавить(); НоваяСтрока = ДанныеПроизводственногоКалендаря.Добавить();
НоваяСтрока.Дата = КлючИЗначение.Ключ; НоваяСтрока.Дата = КлючИЗначение.Ключ;
@@ -173,6 +206,8 @@
Если ДатаПереноса <> Неопределено Тогда Если ДатаПереноса <> Неопределено Тогда
НоваяСтрока.ДатаПереноса = ДатаПереноса; НоваяСтрока.ДатаПереноса = ДатаПереноса;
КонецЕсли; КонецЕсли;
НоваяСтрока.Год = НомерГода;
НоваяСтрока.КодПроизводственногоКалендаря = КодКалендаря;
КонецЦикла; КонецЦикла;
ДанныеПроизводственногоКалендаря.Сортировать("Дата"); ДанныеПроизводственногоКалендаря.Сортировать("Дата");
@@ -214,12 +249,7 @@
КонецЕсли; КонецЕсли;
Для Каждого НомерГода Из НомераГодов Цикл Для Каждого НомерГода Из НомераГодов Цикл
ДанныеКалендаря = РезультатЗаполненияПроизводственногоКалендаряПоУмолчанию(Выборка.КодКалендаря, НомерГода, Выборка.КодБазовогоКалендаря); ДанныеКалендаря = РезультатЗаполненияПроизводственногоКалендаряПоУмолчанию(Выборка.КодКалендаря, НомерГода, Выборка.КодБазовогоКалендаря);
Для Каждого СтрокаДанных Из ДанныеКалендаря Цикл ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ДанныеКалендаря, ТаблицаДанных);
НоваяСтрока = ТаблицаДанных.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаДанных);
НоваяСтрока.КодПроизводственногоКалендаря = Выборка.КодКалендаря;
НоваяСтрока.Год = НомерГода;
КонецЦикла;
КонецЦикла; КонецЦикла;
КонецЦикла; КонецЦикла;
@@ -328,37 +358,43 @@
Процедура ОбновитьПроизводственныеКалендари(ТаблицаКалендарей) Экспорт Процедура ОбновитьПроизводственныеКалендари(ТаблицаКалендарей) Экспорт
Запрос = Новый Запрос; Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВЫРАЗИТЬ(КлассификаторТаблица.Code КАК СТРОКА(2)) КАК Код,
| ВЫРАЗИТЬ(КлассификаторТаблица.Base КАК СТРОКА(2)) КАК КодБазового,
| ВЫРАЗИТЬ(КлассификаторТаблица.Description КАК СТРОКА(100)) КАК Наименование
|ПОМЕСТИТЬ КлассификаторТаблица
|ИЗ
| &КлассификаторТаблица КАК КлассификаторТаблица
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КлассификаторТаблица.Код КАК Код,
| КлассификаторТаблица.КодБазового КАК КодБазового,
| КлассификаторТаблица.Наименование КАК Наименование,
| ПроизводственныеКалендари.Ссылка КАК Ссылка,
| ЕСТЬNULL(ПроизводственныеКалендари.Код, """") КАК ПроизводственныйКалендарьКод,
| ЕСТЬNULL(ПроизводственныеКалендари.Наименование, """") КАК ПроизводственныйКалендарьНаименование
|ИЗ
| КлассификаторТаблица КАК КлассификаторТаблица
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари
| ПО КлассификаторТаблица.Код = ПроизводственныеКалендари.Код
|
|УПОРЯДОЧИТЬ ПО
| КодБазового";
Запрос.УстановитьПараметр("КлассификаторТаблица", ТаблицаКалендарей); Запрос.УстановитьПараметр("КлассификаторТаблица", ТаблицаКалендарей);
Выборка = Запрос.Выполнить().Выбрать(); Запрос.Текст =
"ВЫБРАТЬ
| ВЫРАЗИТЬ(КлассификаторТаблица.Code КАК СТРОКА(2)) КАК Код,
| ВЫРАЗИТЬ(КлассификаторТаблица.Base КАК СТРОКА(2)) КАК КодБазового,
| ВЫРАЗИТЬ(КлассификаторТаблица.Description КАК СТРОКА(100)) КАК Наименование
|ПОМЕСТИТЬ КлассификаторТаблица
|ИЗ
| &КлассификаторТаблица КАК КлассификаторТаблица
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КлассификаторТаблица.Код КАК Код,
| КлассификаторТаблица.КодБазового КАК КодБазового,
| КлассификаторТаблица.Наименование КАК Наименование,
| ПроизводственныеКалендари.Ссылка КАК Ссылка,
| ЕСТЬNULL(ПроизводственныеКалендари.Код, """") КАК ПроизводственныйКалендарьКод,
| ЕСТЬNULL(ПроизводственныеКалендари.Наименование, """") КАК ПроизводственныйКалендарьНаименование,
| ЕСТЬNULL(ПроизводственныеКалендари.БазовыйКалендарь.Код, """") КАК ПроизводственныйКалендарьКодБазового
|ИЗ
| КлассификаторТаблица КАК КлассификаторТаблица
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари
| ПО КлассификаторТаблица.Код = ПроизводственныеКалендари.Код
|
|УПОРЯДОЧИТЬ ПО
| КодБазового";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
Если СокрЛП(Выборка.Код) = СокрЛП(Выборка.ПроизводственныйКалендарьКод) Если СокрЛП(Выборка.Код) = СокрЛП(Выборка.ПроизводственныйКалендарьКод)
И СокрЛП(Выборка.Наименование) = СокрЛП(Выборка.ПроизводственныйКалендарьНаименование) Тогда И СокрЛП(Выборка.Наименование) = СокрЛП(Выборка.ПроизводственныйКалендарьНаименование)
И СокрЛП(Выборка.КодБазового) = СокрЛП(Выборка.ПроизводственныйКалендарьКодБазового) Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
Если ЗначениеЗаполнено(Выборка.Ссылка) Тогда Если ЗначениеЗаполнено(Выборка.Ссылка) Тогда
@@ -375,6 +411,10 @@
Если ЗначениеЗаполнено(Выборка.КодБазового) Тогда Если ЗначениеЗаполнено(Выборка.КодБазового) Тогда
СправочникОбъект.БазовыйКалендарь = НайтиПоКоду(Выборка.КодБазового); СправочникОбъект.БазовыйКалендарь = НайтиПоКоду(Выборка.КодБазового);
КонецЕсли; КонецЕсли;
Если ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(СправочникОбъект);
Продолжить;
КонецЕсли;
СправочникОбъект.Записать(); СправочникОбъект.Записать();
КонецЦикла; КонецЦикла;
@@ -384,6 +424,22 @@
// //
Функция ОбновитьДанныеПроизводственныхКалендарей(Знач ТаблицаДанных) Экспорт Функция ОбновитьДанныеПроизводственныхКалендарей(Знач ТаблицаДанных) Экспорт
ТаблицаИзменений = ТаблицаИзмененийПроизводственныхКалендарей();
ОбновитьОсновныеДанныеПроизводственныхКалендарей(ТаблицаДанных, ТаблицаИзменений);
ОбновитьДанныеЗависимыхПроизводственныхКалендарей(ТаблицаИзменений);
Возврат ТаблицаИзменений;
КонецФункции
Процедура ОбновитьОсновныеДанныеПроизводственныхКалендарей(ТаблицаДанных, ИзмененияКалендарей)
Если ТаблицаДанных.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос; Запрос = Новый Запрос;
Запрос.Текст = Запрос.Текст =
"ВЫБРАТЬ "ВЫБРАТЬ
@@ -427,24 +483,94 @@
КлючиРегистра.Добавить("Год"); КлючиРегистра.Добавить("Год");
КлючиРегистра.Добавить("Дата"); КлючиРегистра.Добавить("Дата");
ТаблицаИзменений = ТаблицаИзмененийПроизводственныхКалендарей();
Выборка = Запрос.Выполнить().Выбрать(); Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
НаборЗаписей.Очистить(); НаборЗаписей.Очистить();
ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Выборка); ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Выборка);
ЗаполнитьЗначенияСвойств(ТаблицаИзменений.Добавить(), Выборка); ЗаполнитьЗначенияСвойств(ИзмененияКалендарей.Добавить(), Выборка);
Для Каждого Ключ Из КлючиРегистра Цикл Для Каждого Ключ Из КлючиРегистра Цикл
НаборЗаписей.Отбор[Ключ].Установить(Выборка[Ключ]); НаборЗаписей.Отбор[Ключ].Установить(Выборка[Ключ]);
КонецЦикла; КонецЦикла;
НаборЗаписей.Записать(Истина); НаборЗаписей.Записать(Истина);
КонецЦикла; КонецЦикла;
ТаблицаИзменений.Свернуть("КодПроизводственногоКалендаря, Год"); ИзмененияКалендарей.Свернуть("КодПроизводственногоКалендаря, Год");
Возврат ТаблицаИзменений; КонецПроцедуры
Процедура ОбновитьДанныеЗависимыхПроизводственныхКалендарей(ИзмененияКалендарей) Экспорт
КонецФункции Если ИзмененияКалендарей.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИзмененияКалендарей", ИзмененияКалендарей);
Запрос.Текст =
"ВЫБРАТЬ
| ИзмененияКалендарей.КодПроизводственногоКалендаря КАК КодПроизводственногоКалендаря,
| ИзмененияКалендарей.Год КАК Год
|ПОМЕСТИТЬ ВТИзмененияКалендарей
|ИЗ
| &ИзмененияКалендарей КАК ИзмененияКалендарей
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЗависимыеКалендари.Ссылка КАК ПроизводственныйКалендарь,
| ЗависимыеКалендари.Код КАК Код,
| ИзмененияБазовыхКалендарей.Год КАК Год,
| ЗависимыеКалендари.БазовыйКалендарь.Код КАК КодБазовогоКалендаря
|ИЗ
| Справочник.ПроизводственныеКалендари КАК ЗависимыеКалендари
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТИзмененияКалендарей КАК ИзмененияБазовыхКалендарей
| ПО ЗависимыеКалендари.БазовыйКалендарь.Код = ИзмененияБазовыхКалендарей.КодПроизводственногоКалендаря
| И (ЗависимыеКалендари.БазовыйКалендарь <> ЗНАЧЕНИЕ(Справочник.ПроизводственныеКалендари.ПустаяСсылка))
| ЛЕВОЕ СОЕДИНЕНИЕ ВТИзмененияКалендарей КАК ИзмененияЗависимыхКалендарей
| ПО (ИзмененияЗависимыхКалендарей.КодПроизводственногоКалендаря = ЗависимыеКалендари.Код)
| И (ИзмененияЗависимыхКалендарей.Год = ИзмененияБазовыхКалендарей.Год)
|ГДЕ
| ИзмененияЗависимыхКалендарей.Год ЕСТЬ NULL";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
КодыЗависимых = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Код");
ДанныеИзМакета = ДанныеПроизводственныхКалендарейИзМакета(КодыЗависимых, Ложь);
ОтборСтрок = Новый Структура(
"КодПроизводственногоКалендаря,
|Год");
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ОтборСтрок.КодПроизводственногоКалендаря = Выборка.Код;
ОтборСтрок.Год = Выборка.Год;
НайденныеСтроки = ДанныеИзМакета.НайтиСтроки(ОтборСтрок);
Если НайденныеСтроки.Количество() > 0 Тогда
// Если есть данные в макете, считаем, что перезаполнять не нужно.
Продолжить;
КонецЕсли;
ДанныеКалендаря = РезультатЗаполненияПроизводственногоКалендаряПоУмолчанию(Выборка.Код, Выборка.Год, Выборка.КодБазовогоКалендаря);
ДанныеКалендаря.Колонки.Добавить("ПроизводственныйКалендарь");
ДанныеКалендаря.ЗаполнитьЗначения(Выборка.ПроизводственныйКалендарь, "ПроизводственныйКалендарь");
НаборЗаписей = РегистрыСведений.ДанныеПроизводственногоКалендаря.СоздатьНаборЗаписей();
НаборЗаписей.Загрузить(ДанныеКалендаря);
НаборЗаписей.Отбор.ПроизводственныйКалендарь.Установить(Выборка.ПроизводственныйКалендарь);
НаборЗаписей.Отбор.Год.Установить(Выборка.Год);
Если ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда
ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей);
Иначе
НаборЗаписей.Записать(Истина);
КонецЕсли;
// Добавляем в таблицу изменений.
НоваяСтрока = ИзмененияКалендарей.Добавить();
НоваяСтрока.КодПроизводственногоКалендаря = Выборка.Код;
НоваяСтрока.Год = Выборка.Год;
КонецЦикла;
КонецПроцедуры
// Создает таблицу значений для описания изменений данных производственных календарей. // Создает таблицу значений для описания изменений данных производственных календарей.
// //
@@ -556,37 +682,6 @@
КонецФункции КонецФункции
// Функция выявляет последний день, за который заполнены данные
// указанного производственного календаря.
//
// Параметры:
// - ПроизводственныйКалендарь - тип СправочникСсылка.ПроизводственныеКалендари.
//
Функция ДатаОкончанияЗаполненияПроизводственногоКалендаря(ПроизводственныйКалендарь) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| МАКСИМУМ(ДанныеПроизводственногоКалендаря.Дата) КАК Дата
|ИЗ
| РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
|ГДЕ
| ДанныеПроизводственногоКалендаря.ПроизводственныйКалендарь = &ПроизводственныйКалендарь
|
|ИМЕЮЩИЕ
| МАКСИМУМ(ДанныеПроизводственногоКалендаря.Дата) ЕСТЬ НЕ NULL ";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ПроизводственныйКалендарь", ПроизводственныйКалендарь);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Дата;
КонецЕсли;
Возврат Неопределено;
КонецФункции
// Заполняет массив дат праздничных дней по производственному календарю // Заполняет массив дат праздничных дней по производственному календарю
// для конкретного календарного года. // для конкретного календарного года.
// //
@@ -919,22 +919,22 @@
|ИЗ |ИЗ
| Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа
|ГДЕ |ГДЕ
| НЕ(НЕ ИСТИНА В | (ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1 | (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА | ИСТИНА
| ИЗ | ИЗ
| Справочник.ПрофилиГруппДоступа.ВидыДоступа КАК ВидыДоступа | Справочник.ПрофилиГруппДоступа.ВидыДоступа КАК ВидыДоступа
| ГДЕ | ГДЕ
| ВидыДоступа.Ссылка = ПрофилиГруппДоступа.Ссылка | ВидыДоступа.Ссылка = ПрофилиГруппДоступа.Ссылка
| И ТИПЗНАЧЕНИЯ(ВидыДоступа.ВидДоступа) = ТИП(ПланВидовХарактеристик.УдалитьВидыДоступа)) | И ТИПЗНАЧЕНИЯ(ВидыДоступа.ВидДоступа) = ТИП(ПланВидовХарактеристик.УдалитьВидыДоступа))
| И НЕ ИСТИНА В | ИЛИ ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1 | (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА | ИСТИНА
| ИЗ | ИЗ
| Справочник.ПрофилиГруппДоступа.ЗначенияДоступа КАК ЗначенияДоступа | Справочник.ПрофилиГруппДоступа.ЗначенияДоступа КАК ЗначенияДоступа
| ГДЕ | ГДЕ
| ЗначенияДоступа.Ссылка = ПрофилиГруппДоступа.Ссылка | ЗначенияДоступа.Ссылка = ПрофилиГруппДоступа.Ссылка
| И ТИПЗНАЧЕНИЯ(ЗначенияДоступа.ВидДоступа) = ТИП(ПланВидовХарактеристик.УдалитьВидыДоступа))) | И ТИПЗНАЧЕНИЯ(ЗначенияДоступа.ВидДоступа) = ТИП(ПланВидовХарактеристик.УдалитьВидыДоступа)))
| |
|ОБЪЕДИНИТЬ ВСЕ |ОБЪЕДИНИТЬ ВСЕ
| |
@@ -943,22 +943,22 @@
|ИЗ |ИЗ
| Справочник.ГруппыДоступа КАК ГруппыДоступа | Справочник.ГруппыДоступа КАК ГруппыДоступа
|ГДЕ |ГДЕ
| НЕ(НЕ ИСТИНА В | (ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1 | (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА | ИСТИНА
| ИЗ | ИЗ
| Справочник.ГруппыДоступа.ВидыДоступа КАК ВидыДоступа | Справочник.ГруппыДоступа.ВидыДоступа КАК ВидыДоступа
| ГДЕ | ГДЕ
| ВидыДоступа.Ссылка = ГруппыДоступа.Ссылка | ВидыДоступа.Ссылка = ГруппыДоступа.Ссылка
| И ТИПЗНАЧЕНИЯ(ВидыДоступа.ВидДоступа) = ТИП(ПланВидовХарактеристик.УдалитьВидыДоступа)) | И ТИПЗНАЧЕНИЯ(ВидыДоступа.ВидДоступа) = ТИП(ПланВидовХарактеристик.УдалитьВидыДоступа))
| И НЕ ИСТИНА В | ИЛИ ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1 | (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА | ИСТИНА
| ИЗ | ИЗ
| Справочник.ГруппыДоступа.ЗначенияДоступа КАК ЗначенияДоступа | Справочник.ГруппыДоступа.ЗначенияДоступа КАК ЗначенияДоступа
| ГДЕ | ГДЕ
| ЗначенияДоступа.Ссылка = ГруппыДоступа.Ссылка | ЗначенияДоступа.Ссылка = ГруппыДоступа.Ссылка
| И ТИПЗНАЧЕНИЯ(ЗначенияДоступа.ВидДоступа) = ТИП(ПланВидовХарактеристик.УдалитьВидыДоступа)))"; | И ТИПЗНАЧЕНИЯ(ЗначенияДоступа.ВидДоступа) = ТИП(ПланВидовХарактеристик.УдалитьВидыДоступа)))";
Выборка = Запрос.Выполнить().Выбрать(); Выборка = Запрос.Выполнить().Выбрать();
@@ -1430,9 +1430,13 @@
КонецЕсли; КонецЕсли;
Если ПрофильИзменен Тогда Если ПрофильИзменен Тогда
Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() Тогда
Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы()
И Не ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда
ЗаблокироватьДанныеДляРедактирования(ПрофильОбъект.Ссылка, ПрофильОбъект.ВерсияДанных); ЗаблокироватьДанныеДляРедактирования(ПрофильОбъект.Ссылка, ПрофильОбъект.ВерсияДанных);
КонецЕсли; КонецЕсли;
ПрофильОбъект.Наименование = СвойстваПрофиля.Наименование; ПрофильОбъект.Наименование = СвойстваПрофиля.Наименование;
ПрофильОбъект.Роли.Очистить(); ПрофильОбъект.Роли.Очистить();
@@ -1479,9 +1483,12 @@
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ПрофильОбъект); ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ПрофильОбъект);
Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() Тогда Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы()
И Не ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда
РазблокироватьДанныеДляРедактирования(ПрофильОбъект.Ссылка); РазблокироватьДанныеДляРедактирования(ПрофильОбъект.Ссылка);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Возврат ПрофильИзменен; Возврат ПрофильИзменен;
@@ -25,24 +25,32 @@
СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка,
"Ссылка, ПометкаУдаления, Роли, Назначение, ВидыДоступа, ЗначенияДоступа"); "Ссылка, ПометкаУдаления, Роли, Назначение, ВидыДоступа, ЗначенияДоступа");
Если Ссылка <> Справочники.ПрофилиГруппДоступа.Администратор Тогда // Проверка ролей.
// Проверка ролей. РолиАдминистратора = Новый Массив;
НомерСтроки = Роли.Количество() - 1; РолиАдминистратора.Добавить("Роль.ПолныеПрава");
РолиАдминистратора = Новый Массив; РолиАдминистратора.Добавить("Роль.АдминистраторСистемы");
РолиАдминистратора.Добавить("Роль.ПолныеПрава"); ИдентификаторыРолей = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(РолиАдминистратора);
РолиАдминистратора.Добавить("Роль.АдминистраторСистемы"); ОбработанныеРоли = Новый Соответствие;
ИдентификаторыРолей = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(РолиАдминистратора); Индекс = Роли.Количество();
Пока НомерСтроки >= 0 Цикл Пока Индекс > 0 Цикл
Если ВРег(Роли[НомерСтроки].Роль) = ВРег(ИдентификаторыРолей["Роль.ПолныеПрава"]) Индекс = Индекс - 1;
ИЛИ ВРег(Роли[НомерСтроки].Роль) = ВРег(ИдентификаторыРолей["Роль.АдминистраторСистемы"]) Тогда Роль = Роли[Индекс].Роль;
Если ОбработанныеРоли.Получить(Роль) <> Неопределено Тогда
Роли.Удалить(НомерСтроки); Роли.Удалить(Индекс);
КонецЕсли; Продолжить;
НомерСтроки = НомерСтроки - 1; КонецЕсли;
КонецЦикла; ОбработанныеРоли.Вставить(Роль, Истина);
КонецЕсли; Если Ссылка = Справочники.ПрофилиГруппДоступа.Администратор Тогда
Продолжить;
КонецЕсли;
Если Роль = ИдентификаторыРолей["Роль.ПолныеПрава"]
Или Роль = ИдентификаторыРолей["Роль.АдминистраторСистемы"] Тогда
Роли.Удалить(Индекс);
КонецЕсли;
КонецЦикла;
Если НЕ ДополнительныеСвойства.Свойство("НеОбновлятьРеквизитПоставляемыйПрофильИзменен") Тогда Если Не ДополнительныеСвойства.Свойство("НеОбновлятьРеквизитПоставляемыйПрофильИзменен") Тогда
ПоставляемыйПрофильИзменен = ПоставляемыйПрофильИзменен =
Справочники.ПрофилиГруппДоступа.ПоставляемыйПрофильИзменен(ЭтотОбъект); Справочники.ПрофилиГруппДоступа.ПоставляемыйПрофильИзменен(ЭтотОбъект);
КонецЕсли; КонецЕсли;
@@ -47,6 +47,7 @@
ДвоичныеДанные = Новый ДвоичныеДанные(ВыбранныеФайлы[0]); ДвоичныеДанные = Новый ДвоичныеДанные(ВыбранныеФайлы[0]);
АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтотОбъект.УникальныйИдентификатор); АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтотОбъект.УникальныйИдентификатор);
ЗагрузитьПрофильКлючевыхОперацийНаСервере(АдресХранилища); ЗагрузитьПрофильКлючевыхОперацийНаСервере(АдресХранилища);
Модифицированность = Истина;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -108,14 +109,15 @@
КлючевыеОперации = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); КлючевыеОперации = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
Колонки = СтрРазделить(КлючевыеОперации["Columns"], ",",Ложь); Колонки = СтрРазделить(КлючевыеОперации["Columns"], ",",Ложь);
Если КлючевыеОперации.Свойства().Получить("Item") <> Неопределено Тогда
Если ТипЗнч(КлючевыеОперации["Item"]) = Тип("ОбъектXDTO") Тогда Если ТипЗнч(КлючевыеОперации["Item"]) = Тип("ОбъектXDTO") Тогда
ЗагрузитьОбъектXDTO(КлючевыеОперации["Item"], Колонки); ЗагрузитьОбъектXDTO(КлючевыеОперации["Item"], Колонки);
Иначе Иначе
Для Каждого ТекЭлемент Из КлючевыеОперации["Item"] Цикл Для Каждого ТекЭлемент Из КлючевыеОперации["Item"] Цикл
ЗагрузитьОбъектXDTO(ТекЭлемент, Колонки); ЗагрузитьОбъектXDTO(ТекЭлемент, Колонки);
КонецЦикла; КонецЦикла;
КонецЕсли; КонецЕсли;
КонецЕсли;
ЧтениеXML.Закрыть(); ЧтениеXML.Закрыть();
УдалитьФайлы(ИмяВременногоФайла); УдалитьФайлы(ИмяВременногоФайла);
@@ -285,6 +285,84 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:FormGroup">
<name>ПолучателиГруппаПометки</name>
<id>106</id>
<items xsi:type="form:Button">
<name>ПолучателиУстановитьПометки</name>
<id>108</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПолучателиУстановитьПометкиРасширеннаяПодсказка</name>
<id>109</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.УстановитьПометки</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>ПолучателиСнятьПометки</name>
<id>110</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПолучателиСнятьПометкиРасширеннаяПодсказка</name>
<id>111</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.СнятьПометки</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<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>ПолучателиГруппаПометкиРасширеннаяПодсказка</name>
<id>107</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<extInfo xsi:type="form:ButtonGroupExtInfo">
<representation>Compact</representation>
</extInfo>
</items>
<items xsi:type="form:Button"> <items xsi:type="form:Button">
<name>ПолучателиДобавить</name> <name>ПолучателиДобавить</name>
<id>97</id> <id>97</id>
@@ -745,10 +823,10 @@
</columns> </columns>
</attributes> </attributes>
<attributes> <attributes>
<name>ИОМД</name> <name>ИдентификаторОбъектаМетаданных</name>
<title> <title>
<key>ru</key> <key>ru</key>
<value>ИОМД</value> <value>Идентификатор объекта метаданных</value>
</title> </title>
<id>4</id> <id>4</id>
<valueType/> <valueType/>
@@ -845,6 +923,56 @@
<currentRowUse>DontUse</currentRowUse> <currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse> <selectedRowsUse>Auto</selectedRowsUse>
</formCommands> </formCommands>
<formCommands>
<name>УстановитьПометки</name>
<title>
<key>ru</key>
<value>Установить пометки</value>
</title>
<id>4</id>
<toolTip>
<key>ru</key>
<value>Установить пометки</value>
</toolTip>
<use>
<common>true</common>
</use>
<picture xsi:type="core:PictureRef">
<picture>StdPicture.CheckAll</picture>
</picture>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>УстановитьПометки</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>СнятьПометки</name>
<title>
<key>ru</key>
<value>Снять пометки</value>
</title>
<id>5</id>
<toolTip>
<key>ru</key>
<value>Снять пометки</value>
</toolTip>
<use>
<common>true</common>
</use>
<picture xsi:type="core:PictureRef">
<picture>StdPicture.UncheckAll</picture>
</picture>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>СнятьПометки</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<parameters> <parameters>
<name>ТипПолучателейРассылки</name> <name>ТипПолучателейРассылки</name>
<valueType> <valueType>
@@ -117,6 +117,24 @@
МодульЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗаполненияСсылок(ПараметрыПоиска, Обработчик); МодульЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗаполненияСсылок(ПараметрыПоиска, Обработчик);
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометки(Команда)
Для каждого Получатель Из Получатели Цикл
Получатель.Исключен = Истина;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СнятьПометки(Команда)
Для каждого Получатель Из Получатели Цикл
Получатель.Исключен = Ложь;
КонецЦикла;
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -231,7 +249,7 @@
ПараметрыПолучателей = Новый Структура(НаборПараметров); ПараметрыПолучателей = Новый Структура(НаборПараметров);
ЗаполнитьЗначенияСвойств(ПараметрыПолучателей, ЭтотОбъект); ЗаполнитьЗначенияСвойств(ПараметрыПолучателей, ЭтотОбъект);
ПараметрыПолучателей.Личная = Ложь; ПараметрыПолучателей.Личная = Ложь;
ПараметрыПолучателей.ТипПолучателейРассылки = ИОМД; ПараметрыПолучателей.ТипПолучателейРассылки = ИдентификаторОбъектаМетаданных;
ПараметрыПолучателей.Получатели = Получатели; ПараметрыПолучателей.Получатели = Получатели;
РезультатВыполнения = РассылкаОтчетовВызовСервера.СформироватьСписокПолучателейРассылки(ПараметрыПолучателей); РезультатВыполнения = РассылкаОтчетовВызовСервера.СформироватьСписокПолучателейРассылки(ПараметрыПолучателей);
@@ -294,7 +312,7 @@
Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки)); Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки));
Если Найденные.Количество() = 1 Тогда Если Найденные.Количество() = 1 Тогда
СтрокаПолучатель = Найденные[0]; СтрокаПолучатель = Найденные[0];
ИОМД = СтрокаПолучатель.ИОМД; ИдентификаторОбъектаМетаданных = СтрокаПолучатель.ИдентификаторОбъектаМетаданных;
ПутьФормыВыбора = СтрокаПолучатель.ПутьФормыВыбора; ПутьФормыВыбора = СтрокаПолучатель.ПутьФормыВыбора;
ГруппаКонтактнойИнформацииТипаПолучателей = СтрокаПолучатель.ГруппаКИ; ГруппаКонтактнойИнформацииТипаПолучателей = СтрокаПолучатель.ГруппаКИ;
// ГруппаКИ используется для поля "ВидПочтовогоАдресаПолучателей" в "СвязиПараметровВыбора.Отбор". // ГруппаКИ используется для поля "ВидПочтовогоАдресаПолучателей" в "СвязиПараметровВыбора.Отбор".
@@ -12,7 +12,7 @@
Элементы.Список.Отображение = ОтображениеТаблицы[Параметры.Отображение]; Элементы.Список.Отображение = ОтображениеТаблицы[Параметры.Отображение];
КонецЕсли; КонецЕсли;
ТекстОшибкиПриОткрытии = РассылкаОтчетовПовтИсп.ТекстОшибкиПроверкиПраваДобавления(); ТекстОшибкиПриОткрытии = РассылкаОтчетов.ТекстОшибкиПроверкиПраваДобавления();
Если ЗначениеЗаполнено(ТекстОшибкиПриОткрытии) Тогда Если ЗначениеЗаполнено(ТекстОшибкиПриОткрытии) Тогда
ВызватьИсключение ТекстОшибкиПриОткрытии; ВызватьИсключение ТекстОшибкиПриОткрытии;
КонецЕсли; КонецЕсли;
@@ -50,7 +50,7 @@
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФОРМАВЫБРАТЬ", "Видимость", Ложь); ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФОРМАВЫБРАТЬ", "Видимость", Ложь);
КонецЕсли; КонецЕсли;
Если Не Пользователи.РолиДоступны("ДобавлениеИзменениеРассылокОтчетов") Тогда Если Не ПравоДоступа("Изменение", Метаданные.Справочники.РассылкиОтчетов) Тогда
// Режим показа только личных рассылок - скрываются группы и лишние колонки. // Режим показа только личных рассылок - скрываются группы и лишние колонки.
Элементы.Список.Отображение = ОтображениеТаблицы.Список; Элементы.Список.Отображение = ОтображениеТаблицы.Список;
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "ЭтоГруппа", Ложь, , , Истина, ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "ЭтоГруппа", Ложь, , , Истина,
@@ -168,8 +168,8 @@
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Автор", ПараметрыОтбора["Автор"],,, ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Автор", ПараметрыОтбора["Автор"],,,
Не ПараметрыОтбора["Автор"].Пустая()); Не ПараметрыОтбора["Автор"].Пустая());
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "СОшибками", ПараметрыОтбора["СОшибками"] = "Невыполненные",,, ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "СОшибками", ПараметрыОтбора["СОшибками"] = "Невыполненные",,,
ПараметрыОтбора["СОшибками"] <> "Все"); ПараметрыОтбора["СОшибками"] <> "Все" И ЗначениеЗаполнено(ПараметрыОтбора["СОшибками"]));
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "ОтчетОтбор", ПараметрыОтбора["Отчет"], ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "ОтчетОтбор", ПараметрыОтбора["Отчет"],
ЗначениеЗаполнено(ПараметрыОтбора["Отчет"]) И Не ПараметрыОтбора["Отчет"].Пустая()); ЗначениеЗаполнено(ПараметрыОтбора["Отчет"]) И Не ПараметрыОтбора["Отчет"].Пустая());
@@ -4264,6 +4264,10 @@
<headerHorizontalAlign>Left</headerHorizontalAlign> <headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter> <showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo"> <extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>TextEditEnd</event>
<name>ДругойСпособДоставкиОкончаниеВводаТекста</name>
</handlers>
<width>13</width> <width>13</width>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
@@ -4273,7 +4277,7 @@
<spinButton>false</spinButton> <spinButton>false</spinButton>
<openButton>false</openButton> <openButton>false</openButton>
<listChoiceMode>true</listChoiceMode> <listChoiceMode>true</listChoiceMode>
<chooseType>true</chooseType> <incompleteChoiceMode>OnActivate</incompleteChoiceMode>
<typeDomainEnabled>true</typeDomainEnabled> <typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit> <textEdit>true</textEdit>
<choiceList> <choiceList>
@@ -9061,10 +9065,10 @@
<common>true</common> <common>true</common>
</edit> </edit>
<columns> <columns>
<name>ИОМД</name> <name>ИдентификаторОбъектаМетаданных</name>
<title> <title>
<key>ru</key> <key>ru</key>
<value>ИОМД</value> <value>Идентификатор объекта метаданных</value>
</title> </title>
<id>1</id> <id>1</id>
<valueType> <valueType>
@@ -32,7 +32,7 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
ТекстОшибкиПриОткрытии = РассылкаОтчетовПовтИсп.ТекстОшибкиПроверкиПраваДобавления(); ТекстОшибкиПриОткрытии = РассылкаОтчетов.ТекстОшибкиПроверкиПраваДобавления();
Если ЗначениеЗаполнено(ТекстОшибкиПриОткрытии) Тогда Если ЗначениеЗаполнено(ТекстОшибкиПриОткрытии) Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -163,7 +163,7 @@
Элементы.Автор.Доступность = Пользователи.ЭтоПолноправныйПользователь(); Элементы.Автор.Доступность = Пользователи.ЭтоПолноправныйПользователь();
// Список форматов с пометками для форматов по умолчанию. // Список форматов с пометками для форматов по умолчанию.
СписокФорматовПоУмолчанию = РассылкаОтчетовПовтИсп.СписокФорматов(); СписокФорматовПоУмолчанию = РассылкаОтчетов.СписокФорматов();
// Представление списка форматов по умолчанию. // Представление списка форматов по умолчанию.
СписокФорматовПоУмолчаниюПредставление = ""; СписокФорматовПоУмолчаниюПредставление = "";
@@ -482,7 +482,7 @@
Если ЗначениеЗаполнено(ТипПолучателейРассылки) Тогда Если ЗначениеЗаполнено(ТипПолучателейРассылки) Тогда
Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки)); Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки));
Если Найденные.Количество() = 1 Тогда Если Найденные.Количество() = 1 Тогда
ТекущийОбъект.ТипПолучателейРассылки = Найденные[0].ИОМД; ТекущийОбъект.ТипПолучателейРассылки = Найденные[0].ИдентификаторОбъектаМетаданных;
Иначе Иначе
ТекущийОбъект.ТипПолучателейРассылки = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(); ТекущийОбъект.ТипПолучателейРассылки = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
КонецЕсли; КонецЕсли;
@@ -665,7 +665,7 @@
Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки)); Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки));
Если Найденные.Количество() = 1 Тогда Если Найденные.Количество() = 1 Тогда
СтрокаПолучатель = Найденные[0]; СтрокаПолучатель = Найденные[0];
Объект.ТипПолучателейРассылки = СтрокаПолучатель.ИОМД; Объект.ТипПолучателейРассылки = СтрокаПолучатель.ИдентификаторОбъектаМетаданных;
Объект.ВидПочтовогоАдресаПолучателей = СтрокаПолучатель.ОсновнойВидКИ; Объект.ВидПочтовогоАдресаПолучателей = СтрокаПолучатель.ОсновнойВидКИ;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -765,6 +765,11 @@
ВидимостьДоступностьКорректность(ЭтотОбъект, "ДругойСпособДоставки"); ВидимостьДоступностьКорректность(ЭтотОбъект, "ДругойСпособДоставки");
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ДругойСпособДоставкиОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
СтандартнаяОбработка = НЕ ПустаяСтрока(Текст);
КонецПроцедуры
&НаКлиенте &НаКлиенте
Процедура ПубликоватьПриИзменении(Элемент) Процедура ПубликоватьПриИзменении(Элемент)
ВычислитьФлажкиДополнительныхСпособовДоставки(); ВычислитьФлажкиДополнительныхСпособовДоставки();
@@ -896,35 +901,23 @@
Если СтруктураВыбора.СОшибками.Количество > 0 Тогда Если СтруктураВыбора.СОшибками.Количество > 0 Тогда
Если СтруктураВыбора.Выбрано.Количество = 1 Тогда Если СтруктураВыбора.Выбрано.Количество = 1 Тогда
ТекстСообщения = НСтр("ru = 'Не удалось добавить отчет из-за ошибок'"); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось добавить отчет по причине:
|%1'"), СтруктураВыбора.СОшибками.Текст);
ИначеЕсли СтруктураВыбора.Успешно.Количество = 0 Тогда ИначеЕсли СтруктураВыбора.Успешно.Количество = 0 Тогда
ТекстСообщения = НСтр("ru = 'Не удалось добавить отчеты из-за ошибок'");
ИначеЕсли СтруктураВыбора.Выбрано.Количество >= 6 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Добавлено отчетов: %1 из %2, НСтр("ru = 'Не удалось добавить отчеты по причине:
|Не добавлено из-за ошибок: %3'"), |%1'"), СтруктураВыбора.СОшибками.Текст);
Формат(СтруктураВыбора.Успешно.Количество, "ЧН=0; ЧГ="),
Формат(СтруктураВыбора.Выбрано.Количество, "ЧН=0; ЧГ="),
Формат(СтруктураВыбора.СОшибками.Количество, "ЧН=0; ЧГ="));
Иначе Иначе
Разделитель = ", ";
ПредставлениеОтчетовУспешно = СтрЗаменить(Разделитель + СтруктураВыбора.Успешно.ПредставлениеОтчетов , Разделитель, Символы.ПС + " - ");
ПредставлениеОтчетовСОшибками = СтрЗаменить(Разделитель + СтруктураВыбора.СОшибками.ПредставлениеОтчетов, Разделитель, Символы.ПС + " - ");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Успешно добавлены отчеты: НСтр("ru = 'Добавлено отчетов: %1 из %2
|%1 |Подробности:
| |%3'"),
|Следующие отчеты не удалось добавить из-за ошибок: Формат(СтруктураВыбора.Успешно.Количество, "ЧН=0; ЧГ="),
|%2'"), Формат(СтруктураВыбора.Выбрано.Количество, "ЧН=0; ЧГ="),
ПредставлениеОтчетовУспешно, СтруктураВыбора.СОшибками.Текст);
ПредставлениеОтчетовСОшибками);
КонецЕсли; КонецЕсли;
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено, ТекстСообщения, РежимДиалогаВопрос.ОК);
ПараметрыПредупреждения = Новый Структура("Заголовок, Текст, Подробно");
ПараметрыПредупреждения.Заголовок = НСтр("ru = 'Ошибки добавления отчетов в рассылку'");
ПараметрыПредупреждения.Текст = ТекстСообщения;
ПараметрыПредупреждения.Подробно = СтруктураВыбора.СОшибками.Текст;
СтандартныеПодсистемыКлиент.ВывестиПредупреждение(ЭтотОбъект, ПараметрыПредупреждения);
Иначе Иначе
@@ -1015,7 +1008,6 @@
КонецЕсли; КонецЕсли;
ИдентификаторКД = Элементы.ПользовательскиеНастройки.ТекущаяСтрока; ИдентификаторКД = Элементы.ПользовательскиеНастройки.ТекущаяСтрока;
ТолькоПросмотрЗначения = Ложь; ТолькоПросмотрЗначения = Ложь;
ОтчетыКлиент.ПриАктивизацииСтрокиНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, ТолькоПросмотрЗначения);
РассылкаОтчетовКлиентПереопределяемый.ПриАктивизацииСтрокиНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, ТолькоПросмотрЗначения); РассылкаОтчетовКлиентПереопределяемый.ПриАктивизацииСтрокиНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, ТолькоПросмотрЗначения);
Если Элементы.ПользовательскиеНастройкиЗначение.ТолькоПросмотр <> ТолькоПросмотрЗначения Тогда Если Элементы.ПользовательскиеНастройкиЗначение.ТолькоПросмотр <> ТолькоПросмотрЗначения Тогда
Элементы.ПользовательскиеНастройкиЗначение.ТолькоПросмотр = ТолькоПросмотрЗначения; Элементы.ПользовательскиеНастройкиЗначение.ТолькоПросмотр = ТолькоПросмотрЗначения;
@@ -1037,7 +1029,6 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
ИдентификаторКД = Элементы.ПользовательскиеНастройки.ТекущаяСтрока; ИдентификаторКД = Элементы.ПользовательскиеНастройки.ТекущаяСтрока;
ОтчетыКлиент.ПриОчисткеНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, СтандартнаяОбработка);
РассылкаОтчетовКлиентПереопределяемый.ПриОчисткеНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, СтандартнаяОбработка); РассылкаОтчетовКлиентПереопределяемый.ПриОчисткеНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, СтандартнаяОбработка);
КонецПроцедуры КонецПроцедуры
@@ -1335,13 +1326,13 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
НайденныеИОМД = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки)); НайденныеИдентификаторыОбъектовМетаданных = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки));
Если НайденныеИОМД.Количество() <> 1 Тогда Если НайденныеИдентификаторыОбъектовМетаданных.Количество() <> 1 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Тип получателей не найден'")); ПоказатьПредупреждение(, НСтр("ru = 'Тип получателей не найден'"));
Возврат; Возврат;
КонецЕсли; КонецЕсли;
МассивТипов = НайденныеИОМД[0].ОсновнойТип.Типы(); МассивТипов = НайденныеИдентификаторыОбъектовМетаданных[0].ОсновнойТип.Типы();
Если МассивТипов.Количество() <> 1 Тогда Если МассивТипов.Количество() <> 1 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Тип получателей не найден'")); ПоказатьПредупреждение(, НСтр("ru = 'Тип получателей не найден'"));
Возврат; Возврат;
@@ -1835,7 +1826,6 @@
КонецЕсли; КонецЕсли;
ИдентификаторКД = Элементы.ПользовательскиеНастройки.ТекущаяСтрока; ИдентификаторКД = Элементы.ПользовательскиеНастройки.ТекущаяСтрока;
Обработчик = Новый ОписаниеОповещения("ЗавершениеВыбораПользовательскойНастройки", ЭтотОбъект); Обработчик = Новый ОписаниеОповещения("ЗавершениеВыбораПользовательскойНастройки", ЭтотОбъект);
ОтчетыКлиент.ПриНачалеВыбораНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, СтандартнаяОбработка, Обработчик);
РассылкаОтчетовКлиентПереопределяемый.ПриНачалеВыбораНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, СтандартнаяОбработка, Обработчик); РассылкаОтчетовКлиентПереопределяемый.ПриНачалеВыбораНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, СтандартнаяОбработка, Обработчик);
КонецПроцедуры КонецПроцедуры
@@ -1984,7 +1974,9 @@
ПараметрыДоставки.Вставить("ДобавлятьСсылки", ""); ПараметрыДоставки.Вставить("ДобавлятьСсылки", "");
РезультатВыполнения = ПроверитьСпособДоставки(Объект.Ссылка, ПараметрыДоставки); РезультатВыполнения = ПроверитьСпособДоставки(Объект.Ссылка, ПараметрыДоставки);
СтандартныеПодсистемыКлиент.ВывестиПредупреждение(ЭтотОбъект, РезультатВыполнения); СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1
|%2'"), РезультатВыполнения.Текст, РезультатВыполнения.Подробно), РежимДиалогаВопрос.ОК);
КонецПроцедуры КонецПроцедуры
@@ -2697,7 +2689,7 @@
ТипыКонтактнойИнформации = Новый Массив; ТипыКонтактнойИнформации = Новый Массив;
ТипыКонтактнойИнформации.Добавить(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты); ТипыКонтактнойИнформации.Добавить(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
Попытка Попытка
ПочтовыеАдреса = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(Получатели, ТипыКонтактнойИнформации); ПочтовыеАдреса = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(Получатели, ТипыКонтактнойИнформации,, ТекущаяДатаСеанса());
Исключение Исключение
Возврат СписокЗначений; Возврат СписокЗначений;
КонецПопытки; КонецПопытки;
@@ -2964,8 +2956,7 @@
УдалитьФайлы(Вложение.Значение); УдалитьФайлы(Вложение.Значение);
КонецЦикла; КонецЦикла;
РезультатВыполнения = Новый Структура("Текст, Подробно"); РезультатВыполнения = Новый Структура("Текст, Подробно", "", "");
Если Выполнена Тогда Если Выполнена Тогда
РезультатВыполнения.Текст = НСтр("ru = 'Тест способа доставки успешно пройден.'"); РезультатВыполнения.Текст = НСтр("ru = 'Тест способа доставки успешно пройден.'");
Иначе Иначе
@@ -3054,9 +3045,9 @@
// Структура кэша. // Структура кэша.
Кэш = Новый Структура; Кэш = Новый Структура;
Кэш.Вставить("ПустоеЗначениеОтчета", РассылкаОтчетовПовтИсп.ПустоеЗначениеОтчета()); Кэш.Вставить("ПустоеЗначениеОтчета", РассылкаОтчетов.ПустоеЗначениеОтчета());
Кэш.Вставить("ГруппаЛичныхРассылок", Справочники.РассылкиОтчетов.ЛичныеРассылки); Кэш.Вставить("ГруппаЛичныхРассылок", Справочники.РассылкиОтчетов.ЛичныеРассылки);
Кэш.Вставить("ЗаголовокСистемы", РассылкаОтчетовПовтИсп.ИмяЭтойИнформационнойБазы()); Кэш.Вставить("ЗаголовокСистемы", РассылкаОтчетов.ИмяЭтойИнформационнойБазы());
Кэш.Вставить("Соответствия", Новый ФиксированнаяСтруктура("ДниНедели, Месяцы", ДниНедели, Месяцы)); Кэш.Вставить("Соответствия", Новый ФиксированнаяСтруктура("ДниНедели, Месяцы", ДниНедели, Месяцы));
Кэш.Вставить("Шаблоны", Шаблоны); Кэш.Вставить("Шаблоны", Шаблоны);
Кэш.Вставить("ИсключаемыеОтчеты", РассылкаОтчетовПовтИсп.ИсключаемыеОтчеты()); Кэш.Вставить("ИсключаемыеОтчеты", РассылкаОтчетовПовтИсп.ИсключаемыеОтчеты());
@@ -3130,7 +3121,7 @@
// Заполнение списка выбора типов получателей. // Заполнение списка выбора типов получателей.
Для Каждого СтрокаПолучатель Из ТаблицаТиповПолучателей Цикл Для Каждого СтрокаПолучатель Из ТаблицаТиповПолучателей Цикл
Элементы.ТипПолучателейРассылки.СписокВыбора.Добавить(СтрокаПолучатель.ТипПолучателей, СтрокаПолучатель.Представление); Элементы.ТипПолучателейРассылки.СписокВыбора.Добавить(СтрокаПолучатель.ТипПолучателей, СтрокаПолучатель.Представление);
Если СтрокаПолучатель.ИОМД = Объект.ТипПолучателейРассылки Тогда Если СтрокаПолучатель.ИдентификаторОбъектаМетаданных = Объект.ТипПолучателейРассылки Тогда
ТипПолучателейРассылки = СтрокаПолучатель.ТипПолучателей; ТипПолучателейРассылки = СтрокаПолучатель.ТипПолучателей;
Если Объект.ВидПочтовогоАдресаПолучателей.Пустая() И ЗначениеЗаполнено(СтрокаПолучатель.ОсновнойВидКИ) Тогда Если Объект.ВидПочтовогоАдресаПолучателей.Пустая() И ЗначениеЗаполнено(СтрокаПолучатель.ОсновнойВидКИ) Тогда
Объект.ВидПочтовогоАдресаПолучателей = СтрокаПолучатель.ОсновнойВидКИ; Объект.ВидПочтовогоАдресаПолучателей = СтрокаПолучатель.ОсновнойВидКИ;
@@ -14,15 +14,21 @@
// Создание регламентного задания - пустышки (для хранения его идентификатора в данных). // Создание регламентного задания - пустышки (для хранения его идентификатора в данных).
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(РегламентноеЗадание); Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(РегламентноеЗадание);
Если Задание = Неопределено Тогда Если Задание = Неопределено Тогда
// Из-за выполнения индивидуального регламентного задания непосредственно в необходимой области модели сервиса.
// Создание регламентного задания осуществляется платформенным способом,
// а не через программный интерфейс общего модуля РегламентныеЗадания.
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(Метаданные.РегламентныеЗадания.РассылкаОтчетов); Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(Метаданные.РегламентныеЗадания.РассылкаОтчетов);
Задание.ИмяПользователя = РассылкаОтчетов.ИмяПользователяИБ(Автор); Задание.ИмяПользователя = РассылкаОтчетов.ИмяПользователяИБ(Автор);
Задание.Использование = Ложь; Задание.Использование = Ложь;
Задание.Наименование = ПредставлениеЗаданияПоРассылке(Наименование); Задание.Наименование = ПредставлениеЗаданияПоРассылке(Наименование);
Задание.Записать(); Задание.Записать();
РегламентноеЗадание = Задание.УникальныйИдентификатор; РегламентноеЗадание = Задание.УникальныйИдентификатор;
КонецЕсли; КонецЕсли;
УстановитьПривилегированныйРежим(Ложь); УстановитьПривилегированныйРежим(Ложь);
// Соответствие флага подготовленности рассылки и задания пометке удаления рассылки. // Соответствие флага подготовленности рассылки и задания пометке удаления рассылки.
@@ -363,35 +363,35 @@
<main>true</main> <main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo"> <extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ <queryText>ВЫБРАТЬ
СправочникРолиИсполнителей.Ссылка, СправочникРолиИсполнителейПереопределяемый.Ссылка,
СправочникРолиИсполнителей.ПометкаУдаления, СправочникРолиИсполнителейПереопределяемый.ПометкаУдаления,
СправочникРолиИсполнителей.Предопределенный, СправочникРолиИсполнителейПереопределяемый.Предопределенный,
СправочникРолиИсполнителей.Код, СправочникРолиИсполнителейПереопределяемый.Код,
СправочникРолиИсполнителей.Наименование, СправочникРолиИсполнителейПереопределяемый.Наименование,
СправочникРолиИсполнителей.ИспользуетсяБезОбъектовАдресации, СправочникРолиИсполнителейПереопределяемый.ИспользуетсяБезОбъектовАдресации,
СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации, СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации,
СправочникРолиИсполнителей.ТипыОсновногоОбъектаАдресации, СправочникРолиИсполнителейПереопределяемый.ТипыОсновногоОбъектаАдресации,
СправочникРолиИсполнителей.ТипыДополнительногоОбъектаАдресации, СправочникРолиИсполнителейПереопределяемый.ТипыДополнительногоОбъектаАдресации,
СправочникРолиИсполнителей.Комментарий, СправочникРолиИсполнителейПереопределяемый.Комментарий,
ВЫБОР ВЫБОР
КОГДА СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации КОГДА СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации
ТОГДА ИСТИНА ТОГДА ИСТИНА
КОГДА СправочникРолиИсполнителей.Ссылка В КОГДА СправочникРолиИсполнителейПереопределяемый.Ссылка В
(ВЫБРАТЬ ПЕРВЫЕ 1 (ВЫБРАТЬ ПЕРВЫЕ 1
РегистрСведений.ИсполнителиЗадач.РольИсполнителя.Ссылка РегистрСведений.ИсполнителиЗадач.РольИсполнителя.Ссылка
ИЗ ИЗ
РегистрСведений.ИсполнителиЗадач РегистрСведений.ИсполнителиЗадач
ГДЕ ГДЕ
РегистрСведений.ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителей.Ссылка) РегистрСведений.ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка)
ТОГДА ИСТИНА ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЕстьИсполнители, КОНЕЦ КАК ЕстьИсполнители,
СправочникРолиИсполнителей.ВнешняяРоль, СправочникРолиИсполнителейПереопределяемый.ВнешняяРоль,
СправочникРолиИсполнителей.КраткоеПредставление СправочникРолиИсполнителейПереопределяемый.КраткоеПредставление
ИЗ ИЗ
Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначение Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначениеПереопределяемый
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителей ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителейПереопределяемый
ПО РолиИсполнителейНазначение.Ссылка = СправочникРолиИсполнителей.Ссылка</queryText> ПО РолиИсполнителейНазначениеПереопределяемый.Ссылка = СправочникРолиИсполнителейПереопределяемый.Ссылка</queryText>
<mainTable>Catalog.РолиИсполнителей</mainTable> <mainTable>Catalog.РолиИсполнителей</mainTable>
<dynamicDataRead>true</dynamicDataRead> <dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields> <autoFillAvailableFields>true</autoFillAvailableFields>
@@ -10,32 +10,64 @@
КонецЕсли; КонецЕсли;
ТолькоПростыеРоли = Ложь; ТолькоПростыеРоли = Ложь;
Если Параметры.Свойство("ТолькоПростыеРоли", ТолькоПростыеРоли) И ТолькоПростыеРоли = Истина Тогда Если Параметры.Свойство("ТолькоПростыеРоли", ТолькоПростыеРоли) И ТолькоПростыеРоли = Истина Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "ВнешняяРоль", Истина, , , Истина); Список, "ВнешняяРоль", Истина, , , Истина);
КонецЕсли; КонецЕсли;
ОтборГде = " ГДЕ РолиИсполнителейНазначение.ТипПользователей = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)";
ЭтоВнешнийПользователь = ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя(); ЭтоВнешнийПользователь = ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя();
Если ЭтоВнешнийПользователь Тогда Если ЭтоВнешнийПользователь Тогда
Если Элементы.КоманднаяПанель.ПодчиненныеЭлементы.Найти("ФормаИзменить") <> Неопределено Тогда Если Элементы.КоманднаяПанель.ПодчиненныеЭлементы.Найти("ФормаИзменить") <> Неопределено Тогда
Элементы.КоманднаяПанель.ПодчиненныеЭлементы.ФормаИзменить.Видимость = Ложь; Элементы.КоманднаяПанель.ПодчиненныеЭлементы.ФормаИзменить.Видимость = Ложь;
КонецЕсли; КонецЕсли;
ТекущийВнешнийПользователь = ПользователиКлиентСервер.ТекущийВнешнийПользователь(); СтрокаОтбораВТекстеЗапроса = ОпределитьОтборДляВнешнегоПользователя();
Имя = ТекущийВнешнийПользователь.ОбъектАвторизации.Метаданные().Имя;
ОтборГде = " ГДЕ РолиИсполнителейНазначение.ТипПользователей = ЗНАЧЕНИЕ(Справочник." + Имя + ".ПустаяСсылка)"; Иначе
СтрокаОтбораВТекстеЗапроса = " ГДЕ РолиИсполнителейНазначениеПереопределяемый.ТипПользователей = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)";
КонецЕсли; КонецЕсли;
Список.ТекстЗапроса = Список.ТекстЗапроса + ОтборГде;
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ОсновнаяТаблица = "Справочник.РолиИсполнителей";
СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
СвойстваСписка.ТекстЗапроса = Список.ТекстЗапроса + СтрокаОтбораВТекстеЗапроса;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
КонецПроцедуры КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте &НаКлиенте
Процедура СписокПередНачаломИзменения(Элемент, Отказ) Процедура СписокПередНачаломИзменения(Элемент, Отказ)
Если ЭтоВнешнийПользователь Тогда Если ЭтоВнешнийПользователь Тогда
Отказ =Истина; Отказ = Истина;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ОпределитьОтборДляВнешнегоПользователя()
ТекущийВнешнийПользователь = ПользователиКлиентСервер.ТекущийВнешнийПользователь();
СтрокаОтбораВТекстеЗапроса = СтрЗаменить(" ГДЕ РолиИсполнителейНазначениеПереопределяемый.ТипПользователей = ЗНАЧЕНИЕ(Справочник.%Имя%.ПустаяСсылка)",
"%Имя%", ТекущийВнешнийПользователь.ОбъектАвторизации.Метаданные().Имя);
Возврат СтрокаОтбораВТекстеЗапроса;
КонецФункции
&НаСервере &НаСервере
Процедура УстановитьУсловноеОформление() Процедура УстановитьУсловноеОформление()
@@ -59,5 +91,4 @@
КонецПроцедуры КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -566,37 +566,37 @@
<main>true</main> <main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo"> <extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ <queryText>ВЫБРАТЬ
СправочникРолиИсполнителей.Ссылка, СправочникРолиИсполнителейПереопределяемый.Ссылка,
СправочникРолиИсполнителей.ПометкаУдаления, СправочникРолиИсполнителейПереопределяемый.ПометкаУдаления,
СправочникРолиИсполнителей.Предопределенный, СправочникРолиИсполнителейПереопределяемый.Предопределенный,
СправочникРолиИсполнителей.Код, СправочникРолиИсполнителейПереопределяемый.Код,
СправочникРолиИсполнителей.Наименование, СправочникРолиИсполнителейПереопределяемый.Наименование,
СправочникРолиИсполнителей.ИспользуетсяБезОбъектовАдресации, СправочникРолиИсполнителейПереопределяемый.ИспользуетсяБезОбъектовАдресации,
СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации, СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации,
СправочникРолиИсполнителей.ТипыОсновногоОбъектаАдресации, СправочникРолиИсполнителейПереопределяемый.ТипыОсновногоОбъектаАдресации,
СправочникРолиИсполнителей.ТипыДополнительногоОбъектаАдресации, СправочникРолиИсполнителейПереопределяемый.ТипыДополнительногоОбъектаАдресации,
СправочникРолиИсполнителей.Комментарий, СправочникРолиИсполнителейПереопределяемый.Комментарий,
ВЫБОР ВЫБОР
КОГДА СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации КОГДА СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации
ТОГДА ИСТИНА ТОГДА ИСТИНА
КОГДА СправочникРолиИсполнителей.Ссылка В КОГДА СправочникРолиИсполнителейПереопределяемый.Ссылка В
(ВЫБРАТЬ ПЕРВЫЕ 1 (ВЫБРАТЬ ПЕРВЫЕ 1
РегистрСведений.ИсполнителиЗадач.РольИсполнителя.Ссылка РегистрСведений.ИсполнителиЗадач.РольИсполнителя.Ссылка
ИЗ ИЗ
РегистрСведений.ИсполнителиЗадач РегистрСведений.ИсполнителиЗадач
ГДЕ ГДЕ
РегистрСведений.ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителей.Ссылка) РегистрСведений.ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка)
ТОГДА ИСТИНА ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЕстьИсполнители, КОНЕЦ КАК ЕстьИсполнители,
СправочникРолиИсполнителей.ВнешняяРоль, СправочникРолиИсполнителейПереопределяемый.ВнешняяРоль,
СправочникРолиИсполнителей.КраткоеПредставление СправочникРолиИсполнителейПереопределяемый.КраткоеПредставление
ИЗ ИЗ
Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначение Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначениеПереопределяемый
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителей ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителейПереопределяемый
ПО РолиИсполнителейНазначение.Ссылка = СправочникРолиИсполнителей.Ссылка ПО РолиИсполнителейНазначениеПереопределяемый.Ссылка = СправочникРолиИсполнителейПереопределяемый.Ссылка
ГДЕ ГДЕ
РолиИсполнителейНазначение.ТипПользователей = Значение(Справочник.Пользователи.ПустаяСсылка)</queryText> РолиИсполнителейНазначениеПереопределяемый.ТипПользователей = Значение(Справочник.Пользователи.ПустаяСсылка)</queryText>
<mainTable>Catalog.РолиИсполнителей</mainTable> <mainTable>Catalog.РолиИсполнителей</mainTable>
<dynamicDataRead>true</dynamicDataRead> <dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields> <autoFillAvailableFields>true</autoFillAvailableFields>
@@ -8,7 +8,7 @@
Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат; Возврат;
КонецЕсли; КонецЕсли;
НастроитьОтображениеСпискаРолей(); НастроитьОтображениеСпискаРолей();
КонецПроцедуры КонецПроцедуры
@@ -28,6 +28,7 @@
Процедура НастроитьОтображениеСпискаРолей() Процедура НастроитьОтображениеСпискаРолей()
Если ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей") Тогда Если ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей") Тогда
ТекстЗапроса = "ВЫБРАТЬ ТекстЗапроса = "ВЫБРАТЬ
| СправочникРолиИсполнителей.Ссылка, | СправочникРолиИсполнителей.Ссылка,
| СправочникРолиИсполнителей.ПометкаУдаления, | СправочникРолиИсполнителей.ПометкаУдаления,
@@ -56,7 +57,9 @@
| СправочникРолиИсполнителей.КраткоеПредставление | СправочникРолиИсполнителей.КраткоеПредставление
|ИЗ |ИЗ
| Справочник.РолиИсполнителей КАК СправочникРолиИсполнителей"; | Справочник.РолиИсполнителей КАК СправочникРолиИсполнителей";
Иначе Иначе
ТекстЗапроса = "ВЫБРАТЬ ТекстЗапроса = "ВЫБРАТЬ
| СправочникРолиИсполнителей.Ссылка, | СправочникРолиИсполнителей.Ссылка,
| СправочникРолиИсполнителей.ПометкаУдаления, | СправочникРолиИсполнителей.ПометкаУдаления,
@@ -89,9 +92,14 @@
| ПО РолиИсполнителейНазначение.Ссылка = СправочникРолиИсполнителей.Ссылка | ПО РолиИсполнителейНазначение.Ссылка = СправочникРолиИсполнителей.Ссылка
|ГДЕ |ГДЕ
| РолиИсполнителейНазначение.ТипПользователей = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)"; | РолиИсполнителейНазначение.ТипПользователей = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)";
КонецЕсли; КонецЕсли;
Список.ТекстЗапроса = ТекстЗапроса; СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ОсновнаяТаблица = "Справочник.РолиИсполнителей";
СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
КонецПроцедуры КонецПроцедуры
&НаСервере &НаСервере
@@ -36,6 +36,7 @@
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; СтандартнаяОбработка = Ложь;
Если ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя() Тогда Если ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя() Тогда
ТекущийПользователь = ПользователиКлиентСервер.ТекущийВнешнийПользователь(); ТекущийПользователь = ПользователиКлиентСервер.ТекущийВнешнийПользователь();
ОбъектАвторизации = Справочники[ТекущийПользователь.ОбъектАвторизации.Метаданные().Имя].ПустаяСсылка(); ОбъектАвторизации = Справочники[ТекущийПользователь.ОбъектАвторизации.Метаданные().Имя].ПустаяСсылка();
@@ -43,7 +44,7 @@
ОбъектАвторизации = Справочники.Пользователи.ПустаяСсылка(); ОбъектАвторизации = Справочники.Пользователи.ПустаяСсылка();
КонецЕсли; КонецЕсли;
Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 50
| РолиИсполнителейНазначение.Ссылка КАК Ссылка | РолиИсполнителейНазначение.Ссылка КАК Ссылка
|ИЗ |ИЗ
| Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначение | Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначение
@@ -1193,31 +1193,31 @@
<main>true</main> <main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo"> <extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ <queryText>ВЫБРАТЬ
Сертификаты.Ссылка КАК Ссылка, СертификатыПереопределяемый.Ссылка КАК Ссылка,
Сертификаты.ПометкаУдаления КАК ПометкаУдаления, СертификатыПереопределяемый.ПометкаУдаления КАК ПометкаУдаления,
Сертификаты.Наименование КАК Наименование, СертификатыПереопределяемый.Наименование КАК Наименование,
Сертификаты.КомуВыдан КАК КомуВыдан, СертификатыПереопределяемый.КомуВыдан КАК КомуВыдан,
Сертификаты.Фирма КАК Фирма, СертификатыПереопределяемый.Фирма КАК Фирма,
Сертификаты.Фамилия КАК Фамилия, СертификатыПереопределяемый.Фамилия КАК Фамилия,
Сертификаты.Имя КАК Имя, СертификатыПереопределяемый.Имя КАК Имя,
Сертификаты.Отчество КАК Отчество, СертификатыПереопределяемый.Отчество КАК Отчество,
Сертификаты.Должность КАК Должность, СертификатыПереопределяемый.Должность КАК Должность,
Сертификаты.КемВыдан КАК КемВыдан, СертификатыПереопределяемый.КемВыдан КАК КемВыдан,
Сертификаты.ДействителенДо КАК ДействителенДо, СертификатыПереопределяемый.ДействителенДо КАК ДействителенДо,
Сертификаты.Подписание КАК Подписание, СертификатыПереопределяемый.Подписание КАК Подписание,
Сертификаты.Шифрование КАК Шифрование, СертификатыПереопределяемый.Шифрование КАК Шифрование,
Сертификаты.Отпечаток КАК Отпечаток, СертификатыПереопределяемый.Отпечаток КАК Отпечаток,
Сертификаты.ДанныеСертификата КАК ДанныеСертификата, СертификатыПереопределяемый.ДанныеСертификата КАК ДанныеСертификата,
Сертификаты.Программа КАК Программа, СертификатыПереопределяемый.Программа КАК Программа,
Сертификаты.Отозван КАК Отозван, СертификатыПереопределяемый.Отозван КАК Отозван,
Сертификаты.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча, СертификатыПереопределяемый.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча,
Сертификаты.Организация КАК Организация, СертификатыПереопределяемый.Организация КАК Организация,
Сертификаты.Пользователь КАК Пользователь, СертификатыПереопределяемый.Пользователь КАК Пользователь,
Сертификаты.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия, СертификатыПереопределяемый.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия,
Сертификаты.Предопределенный КАК Предопределенный, СертификатыПереопределяемый.Предопределенный КАК Предопределенный,
Сертификаты.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных СертификатыПереопределяемый.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
ИЗ ИЗ
Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК Сертификаты Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыПереопределяемый
ГДЕ ГДЕ
&amp;ДополнительноеУсловие &amp;ДополнительноеУсловие
{ГДЕ {ГДЕ
@@ -1225,10 +1225,10 @@
(ВЫБРАТЬ ПЕРВЫЕ 1 (ВЫБРАТЬ ПЕРВЫЕ 1
ИСТИНА ИСТИНА
ИЗ ИЗ
РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователейПереопределяемый
ГДЕ ГДЕ
СоставыГруппПользователей.Пользователь = Сертификаты.Пользователь СоставыГруппПользователейПереопределяемый.Пользователь = СертификатыПереопределяемый.Пользователь
И СоставыГруппПользователей.ГруппаПользователей В (&amp;ГруппаПользователей)))}</queryText> И СоставыГруппПользователейПереопределяемый.ГруппаПользователей В (&amp;ГруппаПользователей)))}</queryText>
<mainTable>Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования</mainTable> <mainTable>Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования</mainTable>
<dynamicDataRead>true</dynamicDataRead> <dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields> <autoFillAvailableFields>true</autoFillAvailableFields>
@@ -17,12 +17,18 @@
ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата =
ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
"Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата");
ТекстЗапроса = Список.ТекстЗапроса;
ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ДополнитьЗапросСпискаСертификатов( ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ДополнитьЗапросСпискаСертификатов(
Список.ТекстЗапроса); ТекстЗапроса);
Иначе Иначе
Список.ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "&ДополнительноеУсловие", "ИСТИНА"); ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "&ДополнительноеУсловие", "ИСТИНА");
КонецЕсли; КонецЕсли;
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
ГруппаПользователейПриИзмененииНаСервере(); ГруппаПользователейПриИзмененииНаСервере();
КонецПроцедуры КонецПроцедуры
@@ -503,31 +503,31 @@
<main>true</main> <main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo"> <extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ <queryText>ВЫБРАТЬ
Сертификаты.Ссылка КАК Ссылка, СертификатыПереопределяемый.Ссылка КАК Ссылка,
Сертификаты.ПометкаУдаления КАК ПометкаУдаления, СертификатыПереопределяемый.ПометкаУдаления КАК ПометкаУдаления,
Сертификаты.Наименование КАК Наименование, СертификатыПереопределяемый.Наименование КАК Наименование,
Сертификаты.КомуВыдан КАК КомуВыдан, СертификатыПереопределяемый.КомуВыдан КАК КомуВыдан,
Сертификаты.Фирма КАК Фирма, СертификатыПереопределяемый.Фирма КАК Фирма,
Сертификаты.Фамилия КАК Фамилия, СертификатыПереопределяемый.Фамилия КАК Фамилия,
Сертификаты.Имя КАК Имя, СертификатыПереопределяемый.Имя КАК Имя,
Сертификаты.Отчество КАК Отчество, СертификатыПереопределяемый.Отчество КАК Отчество,
Сертификаты.Должность КАК Должность, СертификатыПереопределяемый.Должность КАК Должность,
Сертификаты.КемВыдан КАК КемВыдан, СертификатыПереопределяемый.КемВыдан КАК КемВыдан,
Сертификаты.ДействителенДо КАК ДействителенДо, СертификатыПереопределяемый.ДействителенДо КАК ДействителенДо,
Сертификаты.Подписание КАК Подписание, СертификатыПереопределяемый.Подписание КАК Подписание,
Сертификаты.Шифрование КАК Шифрование, СертификатыПереопределяемый.Шифрование КАК Шифрование,
Сертификаты.Отпечаток КАК Отпечаток, СертификатыПереопределяемый.Отпечаток КАК Отпечаток,
Сертификаты.ДанныеСертификата КАК ДанныеСертификата, СертификатыПереопределяемый.ДанныеСертификата КАК ДанныеСертификата,
Сертификаты.Программа КАК Программа, СертификатыПереопределяемый.Программа КАК Программа,
Сертификаты.Отозван КАК Отозван, СертификатыПереопределяемый.Отозван КАК Отозван,
Сертификаты.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча, СертификатыПереопределяемый.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча,
Сертификаты.Организация КАК Организация, СертификатыПереопределяемый.Организация КАК Организация,
Сертификаты.Пользователь КАК Пользователь, СертификатыПереопределяемый.Пользователь КАК Пользователь,
Сертификаты.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия, СертификатыПереопределяемый.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия,
Сертификаты.Предопределенный КАК Предопределенный, СертификатыПереопределяемый.Предопределенный КАК Предопределенный,
Сертификаты.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных СертификатыПереопределяемый.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
ИЗ ИЗ
Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК Сертификаты Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыПереопределяемый
ГДЕ ГДЕ
&amp;ДополнительноеУсловие</queryText> &amp;ДополнительноеУсловие</queryText>
<mainTable>Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования</mainTable> <mainTable>Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования</mainTable>
@@ -25,12 +25,18 @@
ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата =
ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
"Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата");
ТекстЗапроса = Список.ТекстЗапроса;
ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ДополнитьЗапросСпискаСертификатов( ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ДополнитьЗапросСпискаСертификатов(
Список.ТекстЗапроса); ТекстЗапроса);
Иначе Иначе
Список.ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "&ДополнительноеУсловие", "ИСТИНА"); ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "&ДополнительноеУсловие", "ИСТИНА");
КонецЕсли; КонецЕсли;
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -296,14 +296,14 @@
Запрос.Текст = Запрос.Текст =
"ВЫБРАТЬ "ВЫБРАТЬ
| Сертификаты.Ссылка КАК Ссылка, | Сертификаты.Ссылка КАК Ссылка,
| Сертификаты.Отпечаток, | Сертификаты.Отпечаток КАК Отпечаток,
| Сертификаты.Наименование КАК Представление, | Сертификаты.Наименование КАК Представление,
| Сертификаты.ДанныеСертификата | Сертификаты.ДанныеСертификата КАК ДанныеСертификата
|ИЗ |ИЗ
| Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК Сертификаты | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК Сертификаты
|ГДЕ |ГДЕ
| НЕ(НЕ Сертификаты.Ссылка В (&Ссылки) | (Сертификаты.Ссылка В (&Ссылки)
| И НЕ Сертификаты.Отпечаток В (&Отпечатки))"; | ИЛИ Сертификаты.Отпечаток В (&Отпечатки))";
Выборка = Запрос.Выполнить().Выбрать(); Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
Строки = ТаблицаСертификатов.НайтиСтроки(Новый Структура("Ссылка", Выборка.Ссылка)); Строки = ТаблицаСертификатов.НайтиСтроки(Новый Структура("Ссылка", Выборка.Ссылка));
@@ -10,8 +10,8 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
ЭтоСеансСУстановленнымиЗначениямиРазделителей = РаботаВМоделиСервисаПовтИсп.РазделениеВключено() ЭтоСеансСУстановленнымиЗначениямиРазделителей = РаботаВМоделиСервиса.РазделениеВключено()
И РаботаВМоделиСервисаПовтИсп.ДоступноИспользованиеРазделенныхДанных(); И РаботаВМоделиСервиса.ДоступноИспользованиеРазделенныхДанных();
// Начальная настройка группировки. // Начальная настройка группировки.
ГруппировкаДанных = Список.КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ГруппировкаДанных = Список.КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
@@ -9,7 +9,7 @@
КонецЕсли; КонецЕсли;
// Инициализируем внутренние флаги. // Инициализируем внутренние флаги.
МожноДобавлятьВСправочник = Справочники.СтраныМира.ЕстьПравоДобавления(); МожноДобавлятьВСправочник = УправлениеКонтактнойИнформациейСлужебный.ЕстьПравоДобавления();
Если Параметры.РазрешитьДанныеКлассификатора=Неопределено Тогда Если Параметры.РазрешитьДанныеКлассификатора=Неопределено Тогда
РазрешитьДанныеКлассификатора = Истина; РазрешитьДанныеКлассификатора = Истина;
@@ -44,24 +44,12 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
ОбработкаПолученияДанныхВыбораЗаполнение(ДанныеВыбора, Параметры, СтандартнаяОбработка); УправлениеКонтактнойИнформациейСлужебныйВызовСервера.ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункцииКлиент
Процедура ОбработкаПолученияДанныхВыбораЗаполнение(ДанныеВыбора, Параметры, СтандартнаяОбработка)
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
ОбработкаПолученияДанныхВыбораЗаполнениеСервер(ДанныеВыбора, Параметры, СтандартнаяОбработка)
#КонецЕсли
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныйПрограммныйИнтерфейс #Область СлужебныйПрограммныйИнтерфейс
@@ -126,225 +114,10 @@
Возврат УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоНаименованию(Наименование); Возврат УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоНаименованию(Наименование);
КонецФункции КонецФункции
// Возвращает флаг возможности добавления и изменения элементов.
//
Функция ЕстьПравоДобавления() Экспорт
Возврат ПравоДоступа("Добавление", Метаданные.Справочники.СтраныМира);
КонецФункции
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
// Возвращает поля поиска в порядке предпочтения для справочника стран мира.
//
// Возвращаемое значение:
// Массив - содержит структуры с полями:
// * Имя - Строка - имя реквизита поиска.
// * ШаблонПредставления - Строка - шаблон для формирования значения представления по именам реквизитов,
// например: "%1.Наименование (%1.Код)". Здесь "Наименование" и "Код" - имена
// реквизитов,
// "%1" - заполнитель для передачи псевдонима таблицы.
//
Функция ПоляПоиска()
Результат = Новый Массив;
СписокПолей = ПустаяСсылка().Метаданные().ВводПоСтроке;
ГраницаПолей = СписокПолей.Количество() - 1;
ВсеИменаСтрокой = "";
ПредставлениеРазделителя = ", ";
РазделительПредставлений = " + """ + ПредставлениеРазделителя + """ + ";
Для Индекс=0 По ГраницаПолей Цикл
ИмяПоля = СписокПолей[Индекс].Имя;
ВсеИменаСтрокой = ВсеИменаСтрокой + "," + ИмяПоля;
ШаблонПредставления = "%1." + ИмяПоля;
ОстальныеПоля = "";
Для Позиция=0 По ГраницаПолей Цикл
Если Позиция<>Индекс Тогда
ОстальныеПоля = ОстальныеПоля + РазделительПредставлений + СписокПолей[Позиция].Имя;
КонецЕсли;
КонецЦикла;
Если Не ПустаяСтрока(ОстальныеПоля) Тогда
ШаблонПредставления = ШаблонПредставления
+ " + "" ("" + "
+ "%1." + Сред(ОстальныеПоля, СтрДлина(РазделительПредставлений) + 1)
+ " + "")""";
КонецЕсли;
Результат.Добавить(
Новый Структура("Имя, ШаблонПредставления", ИмяПоля, ШаблонПредставления));
КонецЦикла;
Возврат Новый Структура("СписокПолей, ИменаПолейСтрокой", Результат, Сред(ВсеИменаСтрокой, 2));
КонецФункции
// Экранирует символы для использования в функции запроса ПОДОБНО.
//
Функция ЭкранироватьСимволыПодобия(Знач Текст, Знач СпецСимвол = "\")
Результат = Текст;
СимволыПодобия = "%_[]^" + СпецСимвол;
Для Позиция=1 По СтрДлина(СимволыПодобия) Цикл
ТекущийСимвол = Сред(СимволыПодобия, Позиция, 1);
Результат = СтрЗаменить(Результат, ТекущийСимвол, СпецСимвол + ТекущийСимвол);
КонецЦикла;
Возврат Результат;
КонецФункции
Процедура ОбработкаПолученияДанныхВыбораЗаполнениеСервер(ДанныеВыбора, Параметры, СтандартнаяОбработка)
Если Не ЕстьПравоДобавления() Тогда
// Нет прав на добавление страны мира, поведение по умолчанию.
Возврат;
КонецЕсли;
// Будем имитировать поведение платформы - поиск по всем доступным полям поиска с формированием подобного списка.
// Подразумеваем, что поля справочника и классификатора совпадают, за исключением отсутствующего в классификаторе поля
// "Ссылка".
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ПрефиксПараметраОтбора = "ПараметрыОтбора";
// Общий отбор по параметрам
ШаблонОтбора = "ИСТИНА";
Для Каждого КлючЗначение Из Параметры.Отбор Цикл
ЗначениеПоля = КлючЗначение.Значение;
ИмяПоля = КлючЗначение.Ключ;
ИмяПараметра = ПрефиксПараметраОтбора + ИмяПоля;
Если ТипЗнч(ЗначениеПоля)=Тип("Массив") Тогда
ШаблонОтбора = ШаблонОтбора + " И %1." + ИмяПоля + " В (&" + ИмяПараметра + ")";
Иначе
ШаблонОтбора = ШаблонОтбора + " И %1." + ИмяПоля + " = &" + ИмяПараметра;
КонецЕсли;
Запрос.УстановитьПараметр(ИмяПараметра, КлючЗначение.Значение);
КонецЦикла;
// Дополнительные отборы
Если Параметры.Свойство("ВыборГруппИЭлементов") Тогда
Если Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Группы Тогда
ШаблонОтбора = ШаблонОтбора + " И %1.ЭтоГруппа";
ИначеЕсли Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы Тогда
ШаблонОтбора = ШаблонОтбора + " И (НЕ %1.ЭтоГруппа)";
КонецЕсли;
КонецЕсли;
// Источники данных
Если (Параметры.Свойство("ТолькоДанныеКлассификатора") И Параметры.ТолькоДанныеКлассификатора) Тогда
// Запрос только по классификатору.
ШаблонЗапроса = "
|ВЫБРАТЬ ПЕРВЫЕ 50
| NULL КАК Ссылка,
| Классификатор.Код КАК Код,
| Классификатор.Наименование КАК Наименование,
| ЛОЖЬ КАК ПометкаУдаления,
| %2 КАК Представление
|ИЗ
| Классификатор КАК Классификатор
|ГДЕ
| Классификатор.%1 ПОДОБНО &СтрокаПоиска
| И (
| " + СтрЗаменить(ШаблонОтбора, "%1", "Классификатор") + "
| )
|УПОРЯДОЧИТЬ ПО
| Классификатор.%1
|";
Иначе
// Запрос и по справочнику и по классификатору.
ШаблонЗапроса = "
|ВЫБРАТЬ ПЕРВЫЕ 50
| СтраныМира.Ссылка КАК Ссылка,
| ЕСТЬNULL(СтраныМира.Код, Классификатор.Код) КАК Код,
| ЕСТЬNULL(СтраныМира.Наименование, Классификатор.Наименование) КАК Наименование,
| ЕСТЬNULL(СтраныМира.ПометкаУдаления, ЛОЖЬ) КАК ПометкаУдаления,
|
| ВЫБОР КОГДА СтраныМира.Ссылка ЕСТЬ NULL ТОГДА
| %2
| ИНАЧЕ
| %3
| КОНЕЦ КАК Представление
|
|ИЗ
| Справочник.СтраныМира КАК СтраныМира
|ПОЛНОЕ СОЕДИНЕНИЕ
| Классификатор
|ПО
| Классификатор.Код = СтраныМира.Код
| И Классификатор.Наименование = СтраныМира.Наименование
|ГДЕ
| (СтраныМира.%1 ПОДОБНО &СтрокаПоиска ИЛИ Классификатор.%1 ПОДОБНО &СтрокаПоиска)
| И (" + СтрЗаменить(ШаблонОтбора, "%1", "Классификатор") + ")
| И (" + СтрЗаменить(ШаблонОтбора, "%1", "СтраныМира") + ")
|
|УПОРЯДОЧИТЬ ПО
| ЕСТЬNULL(СтраныМира.%1, Классификатор.%1)
|";
КонецЕсли;
ИменаПолей = ПоляПоиска();
// Код + Наименование - ключевые поля соответствия справочника классификатору. Их обрабатываем всегда.
ИменаПолейСтрокой = "," + СтрЗаменить(ИменаПолей.ИменаПолейСтрокой, " ", "");
ИменаПолейСтрокой = СтрЗаменить(ИменаПолейСтрокой, ",Код", "");
ИменаПолейСтрокой = СтрЗаменить(ИменаПолейСтрокой, ",Наименование", "");
Запрос.Текст = "
|ВЫБРАТЬ
| Код, Наименование " + ИменаПолейСтрокой + "
|ПОМЕСТИТЬ
| Классификатор
|ИЗ
| &Классификатор КАК Классификатор
|ИНДЕКСИРОВАТЬ ПО
| Код, Наименование
| " + ИменаПолейСтрокой + "
|";
Запрос.УстановитьПараметр("Классификатор", УправлениеКонтактнойИнформацией.ТаблицаКлассификатора());
Запрос.Выполнить();
Запрос.УстановитьПараметр("СтрокаПоиска", ЭкранироватьСимволыПодобия(Параметры.СтрокаПоиска) + "%");
Для Каждого ДанныеПоля Из ИменаПолей.СписокПолей Цикл
ТекстЗапроса = СтрЗаменить(ШаблонЗапроса, "%1", ДанныеПоля.Имя);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%2", СтрЗаменить(ДанныеПоля.ШаблонПредставления, "%1", "Классификатор"));
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "%3", СтрЗаменить(ДанныеПоля.ШаблонПредставления, "%1", "СтраныМира"));
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
ДанныеВыбора = Новый СписокЗначений;
СтандартнаяОбработка = Ложь;
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.Ссылка) Тогда
// Данные справочника
ЭлементВыбора = Выборка.Ссылка;
Иначе
// Данные классификатора
РезультатВыбора = Новый Структура("Код, Наименование",
Выборка.Код, Выборка.Наименование);
ЭлементВыбора = Новый Структура("Значение, ПометкаУдаления, Предупреждение",
РезультатВыбора, Выборка.ПометкаУдаления, Неопределено);
КонецЕсли;
ДанныеВыбора.Добавить(ЭлементВыбора, Выборка.Представление);
КонецЦикла;
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#Область ОбновлениеИнформационнойБазы #Область ОбновлениеИнформационнойБазы
// Регистрирует к обработке страны мира. // Регистрирует к обработке страны мира.
@@ -147,7 +147,6 @@
<defaultObjectForm>Catalog.СтраныМира.Form.ФормаЭлемента</defaultObjectForm> <defaultObjectForm>Catalog.СтраныМира.Form.ФормаЭлемента</defaultObjectForm>
<defaultListForm>Catalog.СтраныМира.Form.ФормаСписка</defaultListForm> <defaultListForm>Catalog.СтраныМира.Form.ФормаСписка</defaultListForm>
<defaultChoiceForm>Catalog.СтраныМира.Form.ФормаСписка</defaultChoiceForm> <defaultChoiceForm>Catalog.СтраныМира.Form.ФормаСписка</defaultChoiceForm>
<choiceHistoryOnInput>DontUse</choiceHistoryOnInput>
<attributes uuid="f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8"> <attributes uuid="f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8">
<name>НаименованиеПолное</name> <name>НаименованиеПолное</name>
<synonym> <synonym>
@@ -52,8 +52,9 @@
Процедура ПриЧтенииНаСервере(ТекущийОбъект) Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
Логин = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка,"Логин"); Мандат = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка, "Логин, Пароль");
Пароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка); Логин = Мандат.Логин;
Пароль = Мандат.Пароль;
УстановитьПривилегированныйРежим(Ложь); УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры КонецПроцедуры
@@ -137,7 +138,6 @@
&НаКлиенте &НаКлиенте
Процедура ПроверитьВозможностьСинхронизацииСОблачнымСервисом() Процедура ПроверитьВозможностьСинхронизацииСОблачнымСервисом()
СообщениеОбОшибке = "";
СтруктураРезультата = Неопределено; СтруктураРезультата = Неопределено;
ВыполнитьПроверкуПодключения(Объект.Ссылка, СтруктураРезультата); ВыполнитьПроверкуПодключения(Объект.Ссылка, СтруктураРезультата);
@@ -829,7 +829,7 @@
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>АвторизацияПриОтправкеПисем</name> <name>ЛогинИПарольПриОтправкеПисем</name>
<id>78</id> <id>78</id>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
<name>ИмяПользователяДляОтправкиПисем</name> <name>ИмяПользователяДляОтправкиПисем</name>
@@ -930,44 +930,6 @@
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField">
<name>ИспользоватьБезопасныйВходНаСерверИсходящейПочты</name>
<id>86</id>
<title>
<key>ru</key>
<value>Безопасная проверка пароля</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИспользоватьБезопасныйВходНаСерверИсходящейПочты</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<extendedTooltip>
<name>ИспользоватьБезопасныйВходНаСерверИсходящейПочтыРасширеннаяПодсказка</name>
<id>88</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИспользоватьБезопасныйВходНаСерверИсходящейПочтыКонтекстноеМеню</name>
<id>87</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>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -975,10 +937,10 @@
</userVisible> </userVisible>
<title> <title>
<key>ru</key> <key>ru</key>
<value>Авторизация при отправке писем</value> <value>Логин и пароль при отправке писем</value>
</title> </title>
<extendedTooltip> <extendedTooltip>
<name>АвторизацияПриОтправкеПисемРасширеннаяПодсказка</name> <name>ЛогинИПарольПриОтправкеПисемРасширеннаяПодсказка</name>
<id>79</id> <id>79</id>
<type>Label</type> <type>Label</type>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
@@ -1126,24 +1088,23 @@
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
<name>ИспользоватьЗащищенноеСоединениеДляИсходящейПочты</name> <name>ШифрованиеПриОтправкеПочты</name>
<id>97</id> <id>262</id>
<title>
<key>ru</key>
<value>Использовать безопасное соединение (SSL)</value>
</title>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<dataPath xsi:type="form:DataPath"> <dataPath xsi:type="form:DataPath">
<segments>ИспользоватьЗащищенноеСоединениеДляИсходящейПочты</segments> <segments>ШифрованиеПриОтправкеПочты</segments>
</dataPath> </dataPath>
<titleLocation>Right</titleLocation> <handlers>
<event>OnChange</event>
<name>ШифрованиеПриОтправкеПочтыПриИзменении</name>
</handlers>
<extendedTooltip> <extendedTooltip>
<name>ИспользоватьЗащищенноеСоединениеДляИсходящейПочтыРасширеннаяПодсказка</name> <name>ШифрованиеПриОтправкеПочтыРасширеннаяПодсказка</name>
<id>99</id> <id>264</id>
<type>Label</type> <type>Label</type>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
@@ -1152,16 +1113,36 @@
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<contextMenu> <contextMenu>
<name>ИспользоватьЗащищенноеСоединениеДляИсходящейПочтыКонтекстноеМеню</name> <name>ШифрованиеПриОтправкеПочтыКонтекстноеМеню</name>
<id>98</id> <id>263</id>
<autoFill>true</autoFill> <autoFill>true</autoFill>
</contextMenu> </contextMenu>
<type>CheckBoxField</type> <type>RadioButtonField</type>
<editMode>Enter</editMode> <editMode>Enter</editMode>
<showInHeader>true</showInHeader> <showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign> <headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter> <showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/> <extInfo xsi:type="form:RadioButtonsFieldExtInfo">
<choiceList>
<presentation>
<key>ru</key>
<value>Авто</value>
</presentation>
<value xsi:type="core:StringValue">
<value>Авто</value>
</value>
</choiceList>
<choiceList>
<presentation>
<key>ru</key>
<value>Всегда (SSL)</value>
</presentation>
<value xsi:type="core:StringValue">
<value>SSL</value>
</value>
</choiceList>
<orientation>Vertical</orientation>
</extInfo>
</items> </items>
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>ДлительностьОжиданияИсходящейПочты</name> <name>ДлительностьОжиданияИсходящейПочты</name>
@@ -1280,44 +1261,6 @@
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>Группа1</name> <name>Группа1</name>
<id>187</id> <id>187</id>
<items xsi:type="form:FormField">
<name>ТребуетсяВходНаСерверПередОтправкой</name>
<id>75</id>
<title>
<key>ru</key>
<value>Требуется авторизация на сервере входящей почты перед отправкой</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ТребуетсяВходНаСерверПередОтправкой</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<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>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -1512,53 +1455,15 @@
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField">
<name>ИспользоватьБезопасныйВходНаСерверВходящейПочты</name>
<id>106</id>
<title>
<key>ru</key>
<value>Безопасная проверка пароля</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИспользоватьБезопасныйВходНаСерверВходящейПочты</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<extendedTooltip>
<name>ИспользоватьБезопасныйВходНаСерверВходящейПочтыРасширеннаяПодсказка</name>
<id>108</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИспользоватьБезопасныйВходНаСерверВходящейПочтыКонтекстноеМеню</name>
<id>107</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:FormGroup"> <items xsi:type="form:FormGroup">
<name>НастройкиСервераВходящейПочты</name> <name>НастройкиСервераВходящейПочты</name>
<id>109</id> <id>109</id>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
<name>СерверВходящейПочты</name> <name>Протокол</name>
<id>111</id> <id>116</id>
<title> <title>
<key>ru</key> <key>ru</key>
<value>Сервер</value> <value>Протокол</value>
</title> </title>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
@@ -1566,12 +1471,15 @@
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<dataPath xsi:type="form:DataPath"> <dataPath xsi:type="form:DataPath">
<segments>СерверВходящейПочты</segments> <segments>Протокол</segments>
</dataPath> </dataPath>
<titleLocation>Left</titleLocation> <handlers>
<event>OnChange</event>
<name>ПротоколПриИзменении</name>
</handlers>
<extendedTooltip> <extendedTooltip>
<name>СерверВходящейПочтыРасширеннаяПодсказка</name> <name>ПротоколРасширеннаяПодсказка</name>
<id>113</id> <id>118</id>
<type>Label</type> <type>Label</type>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
@@ -1580,8 +1488,8 @@
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<contextMenu> <contextMenu>
<name>СерверВходящейПочтыКонтекстноеМеню</name> <name>ПротоколКонтекстноеМеню</name>
<id>112</id> <id>117</id>
<autoFill>true</autoFill> <autoFill>true</autoFill>
</contextMenu> </contextMenu>
<type>InputField</type> <type>InputField</type>
@@ -1591,15 +1499,25 @@
<headerHorizontalAlign>Left</headerHorizontalAlign> <headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter> <showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo"> <extInfo xsi:type="form:InputFieldExtInfo">
<width>22</width> <width>8</width>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch> <horizontalStretch>false</horizontalStretch>
<wrap>true</wrap> <wrap>true</wrap>
<listChoiceMode>true</listChoiceMode>
<autoMarkIncomplete>true</autoMarkIncomplete> <autoMarkIncomplete>true</autoMarkIncomplete>
<chooseType>true</chooseType> <chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled> <typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit> <choiceList>
<value xsi:type="core:StringValue">
<value>IMAP</value>
</value>
</choiceList>
<choiceList>
<value xsi:type="core:StringValue">
<value>POP</value>
</value>
</choiceList>
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </items>
@@ -1607,11 +1525,11 @@
<name>ПротоколИПортСервераВходящейПочты</name> <name>ПротоколИПортСервераВходящейПочты</name>
<id>114</id> <id>114</id>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
<name>Протокол</name> <name>СерверВходящейПочты</name>
<id>116</id> <id>111</id>
<title> <title>
<key>ru</key> <key>ru</key>
<value>Протокол</value> <value>Сервер</value>
</title> </title>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
@@ -1619,15 +1537,12 @@
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<dataPath xsi:type="form:DataPath"> <dataPath xsi:type="form:DataPath">
<segments>Протокол</segments> <segments>СерверВходящейПочты</segments>
</dataPath> </dataPath>
<handlers> <titleLocation>Left</titleLocation>
<event>OnChange</event>
<name>ПротоколПриИзменении</name>
</handlers>
<extendedTooltip> <extendedTooltip>
<name>ПротоколРасширеннаяПодсказка</name> <name>СерверВходящейПочтыРасширеннаяПодсказка</name>
<id>118</id> <id>113</id>
<type>Label</type> <type>Label</type>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
@@ -1636,8 +1551,8 @@
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<contextMenu> <contextMenu>
<name>ПротоколКонтекстноеМеню</name> <name>СерверВходящейПочтыКонтекстноеМеню</name>
<id>117</id> <id>112</id>
<autoFill>true</autoFill> <autoFill>true</autoFill>
</contextMenu> </contextMenu>
<type>InputField</type> <type>InputField</type>
@@ -1647,24 +1562,15 @@
<headerHorizontalAlign>Left</headerHorizontalAlign> <headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter> <showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo"> <extInfo xsi:type="form:InputFieldExtInfo">
<width>8</width> <width>22</width>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch>
<wrap>true</wrap> <wrap>true</wrap>
<listChoiceMode>true</listChoiceMode>
<autoMarkIncomplete>true</autoMarkIncomplete> <autoMarkIncomplete>true</autoMarkIncomplete>
<chooseType>true</chooseType> <chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled> <typeDomainEnabled>true</typeDomainEnabled>
<choiceList> <textEdit>true</textEdit>
<value xsi:type="core:StringValue">
<value>IMAP</value>
</value>
</choiceList>
<choiceList>
<value xsi:type="core:StringValue">
<value>POP</value>
</value>
</choiceList>
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </items>
@@ -1747,44 +1653,6 @@
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>ТипСоединенияИДлительностьОжидания</name> <name>ТипСоединенияИДлительностьОжидания</name>
<id>122</id> <id>122</id>
<items xsi:type="form:FormField">
<name>ИспользоватьЗащищенноеСоединениеДляВходящейПочты</name>
<id>124</id>
<title>
<key>ru</key>
<value>Защищенное соединение (SSL)</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИспользоватьЗащищенноеСоединениеДляВходящейПочты</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<extendedTooltip>
<name>ИспользоватьЗащищенноеСоединениеДляВходящейПочтыРасширеннаяПодсказка</name>
<id>126</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИспользоватьЗащищенноеСоединениеДляВходящейПочтыКонтекстноеМеню</name>
<id>125</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>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -1814,6 +1682,63 @@
<currentRowUse>Auto</currentRowUse> <currentRowUse>Auto</currentRowUse>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField">
<name>ШифрованиеПриПолученииПочты</name>
<id>265</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>267</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ШифрованиеПриПолученииПочтыКонтекстноеМеню</name>
<id>266</id>
<autoFill>true</autoFill>
</contextMenu>
<type>RadioButtonField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:RadioButtonsFieldExtInfo">
<choiceList>
<presentation>
<key>ru</key>
<value>Авто</value>
</presentation>
<value xsi:type="core:StringValue">
<value>Авто</value>
</value>
</choiceList>
<choiceList>
<presentation>
<key>ru</key>
<value>Всегда (SSL)</value>
</presentation>
<value xsi:type="core:StringValue">
<value>SSL</value>
</value>
</choiceList>
<orientation>Vertical</orientation>
</extInfo>
</items>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -2868,7 +2793,7 @@ vasyapupkin@example.com завершена.</value>
</items> </items>
<items xsi:type="form:Button"> <items xsi:type="form:Button">
<name>КнопкаОтмена</name> <name>КнопкаОтмена</name>
<id>18</id> <id>268</id>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -2876,7 +2801,7 @@ vasyapupkin@example.com завершена.</value>
</userVisible> </userVisible>
<extendedTooltip> <extendedTooltip>
<name>КнопкаОтменаРасширеннаяПодсказка</name> <name>КнопкаОтменаРасширеннаяПодсказка</name>
<id>19</id> <id>269</id>
<type>Label</type> <type>Label</type>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
@@ -2884,7 +2809,7 @@ vasyapupkin@example.com завершена.</value>
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<commandName>Form.StandardCommand.Cancel</commandName> <commandName>Form.Command.Отмена</commandName>
<buttonImportance>Normal</buttonImportance> <buttonImportance>Normal</buttonImportance>
<representation>Auto</representation> <representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
@@ -3679,6 +3604,59 @@ vasyapupkin@example.com завершена.</value>
<common>true</common> <common>true</common>
</edit> </edit>
</attributes> </attributes>
<attributes>
<name>ТребуетсяАвторизацияПриОтправкеПисем</name>
<title>
<key>ru</key>
<value>Требуется авторизация</value>
</title>
<id>40</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>41</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ШифрованиеПриПолученииПочты</name>
<title>
<key>ru</key>
<value>Шифрование</value>
</title>
<id>42</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands> <formCommands>
<name>Назад</name> <name>Назад</name>
<title> <title>
@@ -3733,6 +3711,28 @@ vasyapupkin@example.com завершена.</value>
<currentRowUse>DontUse</currentRowUse> <currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse> <selectedRowsUse>Auto</selectedRowsUse>
</formCommands> </formCommands>
<formCommands>
<name>Отмена</name>
<title>
<key>ru</key>
<value>Отмена</value>
</title>
<id>4</id>
<toolTip>
<key>ru</key>
<value>Отмена</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>Отмена</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<parameters> <parameters>
<name>КонтекстныйРежим</name> <name>КонтекстныйРежим</name>
<valueType> <valueType>
@@ -85,6 +85,8 @@
Элементы.ДляКогоУчетнаяЗапись.Видимость = ЭтоПолноправныйПользователь; Элементы.ДляКогоУчетнаяЗапись.Видимость = ЭтоПолноправныйПользователь;
ВидУчетнойЗаписи = ?(ЭтоПолноправныйПользователь, "Общая", "Персональная"); ВидУчетнойЗаписи = ?(ЭтоПолноправныйПользователь, "Общая", "Персональная");
ТребуетсяАвторизацияПриОтправкеПисем = Истина;
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -148,6 +150,16 @@
УстановитьВидимостьЭлементов(); УстановитьВидимостьЭлементов();
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ШифрованиеПриОтправкеПочтыПриИзменении(Элемент)
ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = ШифрованиеПриОтправкеПочты = "SSL";
КонецПроцедуры
&НаКлиенте
Процедура ШифрованиеПриПолученииПочтыПриИзменении(Элемент)
ИспользоватьЗащищенноеСоединениеДляВходящейПочты = ШифрованиеПриПолученииПочты = "SSL";
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область ОбработчикиКомандФормы #Область ОбработчикиКомандФормы
@@ -193,6 +205,11 @@
НастроитьЭлементыТекущейСтраницы() НастроитьЭлементыТекущейСтраницы()
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура Отмена(Команда)
Закрыть(Ложь);
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -467,6 +484,9 @@
КонецЕсли; КонецЕсли;
НастройкиЗаполнены = Истина; НастройкиЗаполнены = Истина;
ШифрованиеПриОтправкеПочты = ?(ИспользоватьЗащищенноеСоединениеДляИсходящейПочты, "SSL", "Авто");
ШифрованиеПриПолученииПочты = ?(ИспользоватьЗащищенноеСоединениеДляВходящейПочты, "SSL", "Авто");
КонецПроцедуры КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста &НаКлиентеНаСервереБезКонтекста
@@ -483,15 +503,15 @@
Настройки.Вставить("ПарольДляОтправкиПисем", Пароль); Настройки.Вставить("ПарольДляОтправкиПисем", Пароль);
Настройки.Вставить("ПарольДляПолученияПисем", Пароль); Настройки.Вставить("ПарольДляПолученияПисем", Пароль);
Настройки.Вставить("Протокол", "POP"); Настройки.Вставить("Протокол", "IMAP");
Настройки.Вставить("СерверВходящейПочты", "pop." + ИмяСервераВУчетнойЗаписи); Настройки.Вставить("СерверВходящейПочты", "imap." + ИмяСервераВУчетнойЗаписи);
Настройки.Вставить("ПортСервераВходящейПочты", 995); Настройки.Вставить("ПортСервераВходящейПочты", 993);
Настройки.Вставить("ИспользоватьЗащищенноеСоединениеДляВходящейПочты", Истина); Настройки.Вставить("ИспользоватьЗащищенноеСоединениеДляВходящейПочты", Истина);
Настройки.Вставить("ИспользоватьБезопасныйВходНаСерверВходящейПочты", Ложь); Настройки.Вставить("ИспользоватьБезопасныйВходНаСерверВходящейПочты", Ложь);
Настройки.Вставить("СерверИсходящейПочты", "smtp." + ИмяСервераВУчетнойЗаписи); Настройки.Вставить("СерверИсходящейПочты", "smtp." + ИмяСервераВУчетнойЗаписи);
Настройки.Вставить("ПортСервераИсходящейПочты", 465); Настройки.Вставить("ПортСервераИсходящейПочты", 587);
Настройки.Вставить("ИспользоватьЗащищенноеСоединениеДляИсходящейПочты", Истина); Настройки.Вставить("ИспользоватьЗащищенноеСоединениеДляИсходящейПочты", Ложь);
Настройки.Вставить("ИспользоватьБезопасныйВходНаСерверИсходящейПочты", Ложь); Настройки.Вставить("ИспользоватьБезопасныйВходНаСерверИсходящейПочты", Ложь);
Настройки.Вставить("ДлительностьОжиданияСервера", 30); Настройки.Вставить("ДлительностьОжиданияСервера", 30);
@@ -44,7 +44,7 @@
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<dataPath xsi:type="form:DataPath"> <dataPath xsi:type="form:DataPath">
<segments>Items.Список.CurrentData.Ref</segments> <segments>Items.Список.CurrentData.Ссылка</segments>
</dataPath> </dataPath>
<extendedTooltip> <extendedTooltip>
<name>ФормаСправочникУчетныеЗаписиЭлектроннойПочтыПроверитьУчетнуюЗаписьРасширеннаяПодсказка</name> <name>ФормаСправочникУчетныеЗаписиЭлектроннойПочтыПроверитьУчетнуюЗаписьРасширеннаяПодсказка</name>
@@ -121,7 +121,7 @@
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<dataPath xsi:type="form:DataPath"> <dataPath xsi:type="form:DataPath">
<segments>Список.Description</segments> <segments>Список.Наименование</segments>
</dataPath> </dataPath>
<defaultItem>true</defaultItem> <defaultItem>true</defaultItem>
<extendedTooltip> <extendedTooltip>
@@ -276,7 +276,7 @@
<enabled>true</enabled> <enabled>true</enabled>
<userVisible/> <userVisible/>
<dataPath xsi:type="form:DataPath"> <dataPath xsi:type="form:DataPath">
<segments>Список.Ref</segments> <segments>Список.Ссылка</segments>
</dataPath> </dataPath>
<extendedTooltip> <extendedTooltip>
<name>СсылкаРасширеннаяПодсказка</name> <name>СсылкаРасширеннаяПодсказка</name>
@@ -429,25 +429,101 @@
<userSettingsGroup>ГруппаПользовательскихНастроек</userSettingsGroup> <userSettingsGroup>ГруппаПользовательскихНастроек</userSettingsGroup>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField"> <items xsi:type="form:FormGroup">
<name>ПоказыватьПерсональныеУчетныеЗаписиПользователей</name> <name>Отборы</name>
<id>40</id> <id>49</id>
<items xsi:type="form:FormField">
<name>ПоказыватьПерсональныеУчетныеЗаписиПользователей</name>
<id>40</id>
<title>
<key>ru</key>
<value>Показывать персональные</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ПоказыватьПерсональныеУчетныеЗаписиПользователей</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<handlers>
<event>OnChange</event>
<name>ПоказыватьПерсональныеУчетныеЗаписиПользователейПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ПоказыватьПерсональныеУчетныеЗаписиПользователейРасширеннаяПодсказка</name>
<id>42</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПоказыватьПерсональныеУчетныеЗаписиПользователейКонтекстноеМеню</name>
<id>41</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>46</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ПоказыватьНедействительные</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<handlers>
<event>OnChange</event>
<name>ПоказыватьНедействительныеПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ПоказыватьНедействительныеРасширеннаяПодсказка</name>
<id>48</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПоказыватьНедействительныеКонтекстноеМеню</name>
<id>47</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>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<dataPath xsi:type="form:DataPath"> <title>
<segments>ПоказыватьПерсональныеУчетныеЗаписиПользователей</segments> <key>ru</key>
</dataPath> <value>Отборы</value>
<titleLocation>Right</titleLocation> </title>
<handlers>
<event>OnChange</event>
<name>ПоказыватьПерсональныеУчетныеЗаписиПользователейПриИзменении</name>
</handlers>
<extendedTooltip> <extendedTooltip>
<name>ПоказыватьПерсональныеУчетныеЗаписиПользователейРасширеннаяПодсказка</name> <name>ОтборыРасширеннаяПодсказка</name>
<id>42</id> <id>50</id>
<type>Label</type> <type>Label</type>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
@@ -455,17 +531,14 @@
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<contextMenu> <type>UsualGroup</type>
<name>ПоказыватьПерсональныеУчетныеЗаписиПользователейКонтекстноеМеню</name> <extInfo xsi:type="form:UsualGroupExtInfo">
<id>41</id> <behavior>Auto</behavior>
<autoFill>true</autoFill> <showLeftMargin>true</showLeftMargin>
</contextMenu> <united>true</united>
<type>CheckBoxField</type> <throughAlign>Auto</throughAlign>
<editMode>Enter</editMode> <currentRowUse>Auto</currentRowUse>
<showInHeader>true</showInHeader> </extInfo>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items> </items>
<autoCommandBar> <autoCommandBar>
<name>Форма_КоманднаяПанель</name> <name>Форма_КоманднаяПанель</name>
@@ -501,11 +574,54 @@
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ref</segments> <segments>Список.Ref</segments>
</notDefaultUseAlwaysAttributes> </notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ссылка</segments>
</notDefaultUseAlwaysAttributes>
<main>true</main> <main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo"> <extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
СправочникУчетныеЗаписиЭлектроннойПочты.Ссылка КАК Ссылка,
СправочникУчетныеЗаписиЭлектроннойПочты.ПометкаУдаления КАК ПометкаУдаления,
СправочникУчетныеЗаписиЭлектроннойПочты.Наименование КАК Наименование,
СправочникУчетныеЗаписиЭлектроннойПочты.SMTPАутентификация КАК SMTPАутентификация,
СправочникУчетныеЗаписиЭлектроннойПочты.АдресЭлектроннойПочты КАК АдресЭлектроннойПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ВремяОжидания КАК ВремяОжидания,
СправочникУчетныеЗаписиЭлектроннойПочты.ИмяПользователя КАК ИмяПользователя,
СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьБезопасныйВходНаСерверВходящейПочты КАК ИспользоватьБезопасныйВходНаСерверВходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьБезопасныйВходНаСерверИсходящейПочты КАК ИспользоватьБезопасныйВходНаСерверИсходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьДляОтправки КАК ИспользоватьДляОтправки,
СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьДляПолучения КАК ИспользоватьДляПолучения,
СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьЗащищенноеСоединениеДляВходящейПочты КАК ИспользоватьЗащищенноеСоединениеДляВходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты КАК ИспользоватьЗащищенноеСоединениеДляИсходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ОставлятьКопииСообщенийНаСервере КАК ОставлятьКопииСообщенийНаСервере,
СправочникУчетныеЗаписиЭлектроннойПочты.ПериодХраненияСообщенийНаСервере КАК ПериодХраненияСообщенийНаСервере,
СправочникУчетныеЗаписиЭлектроннойПочты.Пользователь КАК Пользователь,
СправочникУчетныеЗаписиЭлектроннойПочты.ПользовательSMTP КАК ПользовательSMTP,
СправочникУчетныеЗаписиЭлектроннойПочты.ПортСервераВходящейПочты КАК ПортСервераВходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ПортСервераИсходящейПочты КАК ПортСервераИсходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ПротоколВходящейПочты КАК ПротоколВходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.СерверВходящейПочты КАК СерверВходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.СерверИсходящейПочты КАК СерверИсходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.СпособPOP3Аутентификации КАК СпособPOP3Аутентификации,
СправочникУчетныеЗаписиЭлектроннойПочты.СпособSMTPАутентификации КАК СпособSMTPАутентификации,
СправочникУчетныеЗаписиЭлектроннойПочты.ТребуетсяВходНаСерверПередОтправкой КАК ТребуетсяВходНаСерверПередОтправкой,
СправочникУчетныеЗаписиЭлектроннойПочты.УдалитьВПредставлениеВключатьИмяПользователя КАК УдалитьВПредставлениеВключатьИмяПользователя,
СправочникУчетныеЗаписиЭлектроннойПочты.УдалитьОтветственныйЗаОбработкуПисем КАК УдалитьОтветственныйЗаОбработкуПисем,
СправочникУчетныеЗаписиЭлектроннойПочты.УдалитьПароль КАК УдалитьПароль,
СправочникУчетныеЗаписиЭлектроннойПочты.УдалитьПарольSMTP КАК УдалитьПарольSMTP,
СправочникУчетныеЗаписиЭлектроннойПочты.ОтправлятьСкрытыеКопииПисемНаЭтотАдрес КАК ОтправлятьСкрытыеКопииПисемНаЭтотАдрес,
СправочникУчетныеЗаписиЭлектроннойПочты.ВладелецУчетнойЗаписи КАК ВладелецУчетнойЗаписи,
СправочникУчетныеЗаписиЭлектроннойПочты.Предопределенный КАК Предопределенный,
СправочникУчетныеЗаписиЭлектроннойПочты.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
ЕСТЬNULL(Пользователи.Недействителен, ЛОЖЬ) КАК ВладелецНедействителен
ИЗ
Справочник.УчетныеЗаписиЭлектроннойПочты КАК СправочникУчетныеЗаписиЭлектроннойПочты
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
ПО СправочникУчетныеЗаписиЭлектроннойПочты.ВладелецУчетнойЗаписи = Пользователи.Ссылка</queryText>
<mainTable>Catalog.УчетныеЗаписиЭлектроннойПочты</mainTable> <mainTable>Catalog.УчетныеЗаписиЭлектроннойПочты</mainTable>
<dynamicDataRead>true</dynamicDataRead> <dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields> <autoFillAvailableFields>true</autoFillAvailableFields>
<customQuery>true</customQuery>
<autoSaveUserSettings>true</autoSaveUserSettings> <autoSaveUserSettings>true</autoSaveUserSettings>
<getInvisibleFieldPresentations>true</getInvisibleFieldPresentations> <getInvisibleFieldPresentations>true</getInvisibleFieldPresentations>
</extInfo> </extInfo>
@@ -527,6 +643,23 @@
<common>true</common> <common>true</common>
</edit> </edit>
</attributes> </attributes>
<attributes>
<name>ПоказыватьНедействительные</name>
<title>
<key>ru</key>
<value>Показывать недействительные</value>
</title>
<id>3</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<commandInterface> <commandInterface>
<navigationPanel/> <navigationPanel/>
<commandBar/> <commandBar/>
@@ -3,9 +3,18 @@
&НаСервере &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат;
КонецЕсли;
Элементы.ПоказыватьПерсональныеУчетныеЗаписиПользователей.Видимость = Пользователи.ЭтоПолноправныйПользователь(); Элементы.ПоказыватьПерсональныеУчетныеЗаписиПользователей.Видимость = Пользователи.ЭтоПолноправныйПользователь();
ПереключитьВидимостьПерсональныхУчетныхЗаписей(Список, ПоказыватьПерсональныеУчетныеЗаписиПользователей); ПереключитьВидимостьПерсональныхУчетныхЗаписей(Список, ПоказыватьПерсональныеУчетныеЗаписиПользователей);
ПереключитьВидимостьНедействительныхУчетныхЗаписей(Список, ПоказыватьНедействительные);
Элементы.ВладелецУчетнойЗаписи.Видимость = ПоказыватьПерсональныеУчетныеЗаписиПользователей; Элементы.ВладелецУчетнойЗаписи.Видимость = ПоказыватьПерсональныеУчетныеЗаписиПользователей;
Элементы.ПоказыватьНедействительные.Доступность = ПоказыватьПерсональныеУчетныеЗаписиПользователей;
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
@@ -16,6 +25,12 @@
Процедура ПоказыватьПерсональныеУчетныеЗаписиПользователейПриИзменении(Элемент) Процедура ПоказыватьПерсональныеУчетныеЗаписиПользователейПриИзменении(Элемент)
ПереключитьВидимостьПерсональныхУчетныхЗаписей(Список, ПоказыватьПерсональныеУчетныеЗаписиПользователей); ПереключитьВидимостьПерсональныхУчетныхЗаписей(Список, ПоказыватьПерсональныеУчетныеЗаписиПользователей);
Элементы.ВладелецУчетнойЗаписи.Видимость = ПоказыватьПерсональныеУчетныеЗаписиПользователей; Элементы.ВладелецУчетнойЗаписи.Видимость = ПоказыватьПерсональныеУчетныеЗаписиПользователей;
Элементы.ПоказыватьНедействительные.Доступность = ПоказыватьПерсональныеУчетныеЗаписиПользователей;
КонецПроцедуры
&НаКлиенте
Процедура ПоказыватьНедействительныеПриИзменении(Элемент)
ПереключитьВидимостьНедействительныхУчетныхЗаписей(Список, ПоказыватьНедействительные);
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
@@ -31,5 +46,27 @@
Список, "ВладелецУчетнойЗаписи", СписокПользователей, ВидСравненияКомпоновкиДанных.ВСписке, , Список, "ВладелецУчетнойЗаписи", СписокПользователей, ВидСравненияКомпоновкиДанных.ВСписке, ,
Не ПоказыватьПерсональныеУчетныеЗаписиПользователей); Не ПоказыватьПерсональныеУчетныеЗаписиПользователей);
КонецПроцедуры КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПереключитьВидимостьНедействительныхУчетныхЗаписей(Список, ПоказыватьНедействительные)
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "ВладелецНедействителен", Ложь, ВидСравненияКомпоновкиДанных.Равно, ,
Не ПоказыватьНедействительные);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
Список.УсловноеОформление.Элементы.Очистить();
Элемент = Список.УсловноеОформление.Элементы.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВладелецНедействителен");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
КонецПроцедуры
#КонецОбласти #КонецОбласти
@@ -11,23 +11,32 @@
<div>Укажите <strong>Имя отправителя писем</strong> - имя владельца учетной записи, которое будет указываться в корреспонденции, при этом оно может отличаться от имени пользователя в программе, например, <a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователь</a> "Администратор", а имя его "Иван Иванович".</div> <div>Укажите <strong>Имя отправителя писем</strong> - имя владельца учетной записи, которое будет указываться в корреспонденции, при этом оно может отличаться от имени пользователя в программе, например, <a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователь</a> "Администратор", а имя его "Иван Иванович".</div>
</li><li> </li><li>
<div>Укажите, как <strong>Использовать учетную запись</strong>:</div> <div>Укажите, как <strong>Использовать учетную запись</strong>:</div>
</li><li> <ul><li>
<div>Включите флажок <strong>Для отправки писем</strong>;</div> <div>Включите флажок <strong>Для отправки писем</strong>;</div>
</li><li> </li><li>
<div>Включите флажок <strong>Для получения писем</strong>.</div></li></ul><h3>Отправка писем (настройка сервера исходящей почты)</h3> <div>Включите флажок <strong>Для получения писем</strong>.</div></li></ul></li><li>
<ul><li>Укажите <strong>Имя пользователя</strong> учетной записи в формате <a href="mailto:User@Server.net">User@Server.net</a>, он может отличаться от основного, в таком случае он будет предназначен только для отправки писем.</li></ul><ul><li>При необходимости введите <strong>Пароль</strong> учетной записи (если он не введен, программа запрашивает его при отправке писем). </li></ul><ul><li>При необходимости включите флажок <strong>Безопасная проверка пароля</strong>. <div>Укажите, <strong>Для кого учетная запись</strong>:</div>
</li><li>В поле <strong>Сервер</strong> укажите адрес SMTP-сервера, например, "smtp.Server.net". <ul><li>
</li><li>Укажите <strong>Порт</strong> компьютера для отправки почтовых сообщений, например, "465". <div><strong>Для всех</strong>;</div>
</li><li>Включите флажок <strong>Использовать безопасное соединение</strong> (SSL). </li><li>
</li><li>При необходимости включите флажок <strong>Требуется вход на сервер перед отправкой</strong>.</li></ul><h3>Получение писем (настройка сервера входящей почты) </h3> <div><strong>Только для</strong> (укажите имя <a name="СтандартныеПодсистемы.Пользователи"></a><a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователя</a>, выбрав его из <a href="Catalog.Пользователи/Help">списка</a>).</div></li></ul></li></ul><h3>Отправка писем (настройка сервера исходящей почты)</h3>
<ul><li>В поле <strong>Сервер</strong> укажите адрес SMTP-сервера, например, "smtp.Server.net".
<ul><li>Укажите <strong>Порт</strong> компьютера для отправки почтовых сообщений, например, "465".
</li><li>С помощью переключателя укажите, когда будет производиться <strong>Шифрование</strong>:
<ul><li><strong>Авто</strong>;
</li><li><strong>Всегда (SSL)</strong>.</li></ul></li></ul></li><li>При необходимости включите флажок <strong>Требуется авторизация</strong>, с помощью переключателя выберите, на каком сервере:
<ul><li>на сервере исходящей почты (SMTP):
<ul><li>Укажите <strong>Имя пользователя</strong> учетной записи в формате <a href="mailto:User@Server.net">User@Server.net</a>, он может отличаться от основного, в таком случае он будет предназначен только для отправки писем.
</li><li>При необходимости введите <strong>Пароль</strong> учетной записи (если он не введен, программа запрашивает его при отправке писем). </li></ul></li><li>на сервере входящей почты (POP).</li></ul></li><li>При необходимости включите флажок <strong>Отправлять скрытые копии писем на этот адрес</strong>. </li></ul><h3>Получение писем (настройка сервера входящей почты) </h3>
<ul><li>Укажите <strong>Имя пользователя</strong> учетной записи в формате <a href="mailto:User@Server.net">User@Server.net</a>, он может отличаться от основного, в таком случае он будет предназначен только для получения писем. <ul><li>Укажите <strong>Имя пользователя</strong> учетной записи в формате <a href="mailto:User@Server.net">User@Server.net</a>, он может отличаться от основного, в таком случае он будет предназначен только для получения писем.
</li><li>При необходимости введите <strong>Пароль</strong> учетной записи (если он не введен, программа запрашивает его для получения писем). </li></ul><ul><li>При необходимости включите флажок <strong>Безопасная проверка пароля</strong>. </li><li>При необходимости введите <strong>Пароль</strong> учетной записи (если он не введен, программа запрашивает его для получения писем). </li></ul><ul><li>Выберите <strong>Протокол</strong> сервера входящей почты: <strong>POP</strong> или <strong>IMAP</strong>.
</li><li>В поле <strong>Сервер</strong> укажите адрес POP3 сервера, например, "imap.Server.net".  </li><li>В поле <strong>Сервер</strong> укажите адрес POP3 сервера, например, "imap.Server.net". 
</li><li>Выберите <strong>Протокол</strong> сервера входящей почты: POP или IMAP.
</li><li>Укажите <strong>Порт</strong> компьютера для получения входящей почты, например, 993. </li><li>Укажите <strong>Порт</strong> компьютера для получения входящей почты, например, 993.
</li><li>Включите флажок <strong>Использовать безопасное соединение (SSL)</strong>. </li><li>Выберите, когда производить <strong>Шифрование</strong>:
</li><li>Включите флажок <strong>Оставлять копии писем на сервере</strong>, для того чтобы программа не удалила письма в папке "Входящие" почтового ящика электронной почты. По умолчанию флажок отключен, в этом случае все письма после получения будут удалены с почтового сервера. <ul><li><strong>Авто</strong>;
</li><li>Определите срок хранения писем на почтовом сервере с помощью поля <strong>Удалять письма с сервера через</strong> - например, через "10 дней".</li></ul><h3>Прочие настройки</h3> </li><li><strong>Всегда (SSL)</strong>.</li></ul></li><li>Если выбран протокол сервера входящей почты <strong>POP</strong>, можно изменить настройки хранения электронной почты на сервере:
<ul><li>Включите флажок <strong>Оставлять копии писем на сервере</strong>, для того чтобы программа не удалила письма в папке "Входящие" почтового ящика электронной почты. По умолчанию флажок отключен, в этом случае все письма после получения будут удалены с почтового сервера. После этого стаовится доступным флажок:
<ul><li>Определите срок хранения писем на почтовом сервере с помощью флажка <strong>Удалять письма с сервера через</strong> - например, через "10 дней".</li></ul></li></ul></li></ul><h3>Прочие настройки</h3>
<ul><li>Укажите <strong>Длительность ожидания сервера</strong> - например, "30 сек".</li></ul><h3>Проверка настроек</h3> <ul><li>Укажите <strong>Длительность ожидания сервера</strong> - например, "30 сек".</li></ul><h3>Проверка настроек</h3>
<ul><li> <ul><li>
<p>Нажмите <strong>Проверить настройки</strong> для проверки введенных параметров учетной записи.</p> <p>Нажмите <strong>Проверить настройки</strong> для проверки введенных параметров учетной записи.</p>
@@ -57,6 +57,15 @@
Элементы.ГруппаДляКогоУчетнаяЗапись.Доступность = Пользователи.ЭтоПолноправныйПользователь(); Элементы.ГруппаДляКогоУчетнаяЗапись.Доступность = Пользователи.ЭтоПолноправныйПользователь();
ВладелецУчетнойЗаписи = Объект.ВладелецУчетнойЗаписи; ВладелецУчетнойЗаписи = Объект.ВладелецУчетнойЗаписи;
ТребуетсяАвторизацияПриОтправкеПисем = ЗначениеЗаполнено(Объект.ПользовательSMTP);
Элементы.АвторизацияПриОтправкеПисем.Доступность = ТребуетсяАвторизацияПриОтправкеПисем;
ШифрованиеПриОтправкеПочты = ?(Объект.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты, "SSL", "Авто");
ШифрованиеПриПолученииПочты = ?(Объект.ИспользоватьЗащищенноеСоединениеДляВходящейПочты, "SSL", "Авто");
СпособАвторизацииПриОтправкеПочты = ?(Объект.ТребуетсяВходНаСерверПередОтправкой, "POP", "SMTP");
РеквизитыТребующиеВводаПароляДляИзменения = Справочники.УчетныеЗаписиЭлектроннойПочты.РеквизитыТребующиеВводаПароляДляИзменения();
КонецПроцедуры КонецПроцедуры
&НаСервере &НаСервере
@@ -136,8 +145,11 @@
Объект.ВладелецУчетнойЗаписи = Неопределено; Объект.ВладелецУчетнойЗаписи = Неопределено;
КонецЕсли; КонецЕсли;
ТребуетсяПроверкаПароля = Объект.ВладелецУчетнойЗаписи <> ВладелецУчетнойЗаписи ЗначенияРеквизитовПередЗаписью = Новый Структура(РеквизитыТребующиеВводаПароляДляИзменения);
Или ЗначениеЗаполнено(Объект.ВладелецУчетнойЗаписи); ЗаполнитьЗначенияСвойств(ЗначенияРеквизитовПередЗаписью, Объект);
ТребуетсяПроверкаПароля = ТребуетсяПроверкаПароля(Объект.Ссылка, ЗначенияРеквизитовПередЗаписью);
Если Не ПараметрыЗаписи.Свойство("ПарольВведен") И ТребуетсяПроверкаПароля Тогда Если Не ПараметрыЗаписи.Свойство("ПарольВведен") И ТребуетсяПроверкаПароля Тогда
Отказ = Истина; Отказ = Истина;
ЗапроситьПароль(ПараметрыЗаписи); ЗапроситьПароль(ПараметрыЗаписи);
@@ -203,16 +215,6 @@
Объект.АдресЭлектроннойПочты = СокрЛП(Объект.АдресЭлектроннойПочты); Объект.АдресЭлектроннойПочты = СокрЛП(Объект.АдресЭлектроннойПочты);
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьЗащищенноеСоединениеДляИсходящейПочтыПриИзменении(Элемент)
УстановитьПортИсходящейПочты();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьЗащищенноеСоединениеДляВходящейПочтыПриИзменении(Элемент)
УстановитьПортВходящейПочты();
КонецПроцедуры
&НаКлиенте &НаКлиенте
Процедура ОставлятьКопииПисемНаСервереПриИзменении(Элемент) Процедура ОставлятьКопииПисемНаСервереПриИзменении(Элемент)
УстановитьДоступностьЭлементов(); УстановитьДоступностьЭлементов();
@@ -233,11 +235,6 @@
ПарольSMTPИзменен = Истина; ПарольSMTPИзменен = Истина;
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ТребуетсяВходНаСерверПередОтправкойПриИзменении(Элемент)
Элементы.ПолучениеПисем.Доступность = ДоступноПолучениеПисем Или Объект.ТребуетсяВходНаСерверПередОтправкой;
КонецПроцедуры
&НаКлиенте &НаКлиенте
Процедура ДляКогоУчетнаяЗаписьПриИзменении(Элемент) Процедура ДляКогоУчетнаяЗаписьПриИзменении(Элемент)
Элементы.ПользовательУчетнойЗаписи.Доступность = ВидУчетнойЗаписи = "Персональная"; Элементы.ПользовательУчетнойЗаписи.Доступность = ВидУчетнойЗаписи = "Персональная";
@@ -249,6 +246,34 @@
ОповеститьОбИзмененииВладельцаУчетнойЗаписи(); ОповеститьОбИзмененииВладельцаУчетнойЗаписи();
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ТребуетсяВходНаСерверПередОтправкойПриИзменении(Элемент)
Элементы.ПолучениеПисем.Доступность = ДоступноПолучениеПисем Или Объект.ТребуетсяВходНаСерверПередОтправкой;
КонецПроцедуры
&НаКлиенте
Процедура ТребуетсяАвторизацияПриОтправкеПисемПриИзменении(Элемент)
Элементы.АвторизацияПриОтправкеПисем.Доступность = ТребуетсяАвторизацияПриОтправкеПисем;
КонецПроцедуры
&НаКлиенте
Процедура ШифрованиеПриОтправкеПочтыПриИзменении(Элемент)
Объект.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = ШифрованиеПриОтправкеПочты = "SSL";
УстановитьПортИсходящейПочты();
КонецПроцедуры
&НаКлиенте
Процедура ШифрованиеПриПолученииПочтыПриИзменении(Элемент)
Объект.ИспользоватьЗащищенноеСоединениеДляВходящейПочты = ШифрованиеПриПолученииПочты = "SSL";
УстановитьПортВходящейПочты();
КонецПроцедуры
&НаКлиенте
Процедура СпособАвторизацииПриОтправкеПочтыПриИзменении(Элемент)
Объект.ТребуетсяВходНаСерверПередОтправкой = ?(СпособАвторизацииПриОтправкеПочты = "POP", Истина, Ложь);
Элементы.ЛогинИПарольПриОтправкеПисем.Доступность = Не Объект.ТребуетсяВходНаСерверПередОтправкой;
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область ОбработчикиКомандФормы #Область ОбработчикиКомандФормы
@@ -395,4 +420,9 @@
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
&НаСервереБезКонтекста
Функция ТребуетсяПроверкаПароля(Ссылка, ЗначенияРеквизитов)
Возврат Справочники.УчетныеЗаписиЭлектроннойПочты.ТребуетсяПроверкаПароля(Ссылка, ЗначенияРеквизитов);
КонецФункции
#КонецОбласти #КонецОбласти
@@ -10,11 +10,13 @@
</li><li>Настройка системной учетной записи производится по соответствующей команде в разделе <strong>Администрирование - Органайзер</strong>. Также можно <img src="StdPicture.Change"></img><strong>Изменить</strong> ее в списке.</li></ul><h3>Ввод учетной записи электронной почты</h3> </li><li>Настройка системной учетной записи производится по соответствующей команде в разделе <strong>Администрирование - Органайзер</strong>. Также можно <img src="StdPicture.Change"></img><strong>Изменить</strong> ее в списке.</li></ul><h3>Ввод учетной записи электронной почты</h3>
<ul><li>При попытке сохранения программа проверяет введенные учетные записи электронной почты (пытается отослать пробное сообщение). Учетные записи, не прошедшие проверку, не сохраняются. <ul><li>При попытке сохранения программа проверяет введенные учетные записи электронной почты (пытается отослать пробное сообщение). Учетные записи, не прошедшие проверку, не сохраняются.
</li><li>Нажмите <strong>Создать</strong>, введите необходимые поля: </li><li>Нажмите <strong>Создать</strong>, введите необходимые поля:
<ul><li>Укажите <strong>Адрес электронной почты</strong> учетной записи в формате <a href="mailto:name@server.net">name@server.net</a>; <ul><li>Укажите <strong>Адрес почты</strong> учетной записи в формате <a href="mailto:name@server.net">name@server.net</a>;
</li><li>Введите <strong>Пароль</strong> учетной записи. Для системных учетных записей рекомендуется запомнить пароль, для того чтобы программа могла рассылать сообщения от такой учетной записи без участия пользователя. Тем не менее, решение о хранении паролей в информационной базе принимается в каждом случае индивидуально; </li><li>Введите <strong>Пароль</strong> учетной записи;
</li><li>Установите с помощью флажков, как <strong>Использовать учетную запись</strong>: </li><li>Установите с помощью флажков, как <strong>Использовать учетную запись</strong>:
<ul><li><strong>Для отправки почты</strong>; <ul><li><strong>Для отправки почты</strong>;
</li><li><strong>Для получения почты</strong>;</li></ul></li><li>Укажите <strong>Имя отправителя</strong> (Ваше имя или название организации); </li><li><strong>Для получения почты</strong>;</li></ul></li><li>Укажите, <strong>Для кого учетная запись</strong>:
<ul><li><strong>Для всех</strong>;
</li><li><strong>Только для меня</strong>.</li></ul></li><li>Укажите <strong>Имя отправителя</strong> (Ваше имя или название организации);
</li><li>С помощью переключателя определите способ создания учетной записи: </li><li>С помощью переключателя определите способ создания учетной записи:
<ul><li><strong>Определить параметры подключения автоматически</strong> (рекомендуется); <ul><li><strong>Определить параметры подключения автоматически</strong> (рекомендуется);
<ul><li>Нажмите <strong>Создать</strong>. Программа предпримет попытку автоматической настройки и проверки учетной записи. Следуйте указаниям программы. При этом если при автоматической настройке произошел сбой, можно попытаться настроить параметры вручную (см. ниже). </li></ul></li><li><strong>Настроить параметры подключения вручную</strong>;</li></ul></li><li> <ul><li>Нажмите <strong>Создать</strong>. Программа предпримет попытку автоматической настройки и проверки учетной записи. Следуйте указаниям программы. При этом если при автоматической настройке произошел сбой, можно попытаться настроить параметры вручную (см. ниже). </li></ul></li><li><strong>Настроить параметры подключения вручную</strong>;</li></ul></li><li>
@@ -45,6 +45,80 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныйПрограммныйИнтерфейс
// Регистрирует на плане обмена ОбновлениеИнформационнойБазы объекты,
// которые необходимо обновить на новую версию.
//
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда
МодульВзаимодействия = ОбщегоНазначения.ОбщийМодуль("Взаимодействия");
МодульВзаимодействия.ЗарегистрироватьУчетныеЗаписиЭлектроннойПочтыКОбработкеДляПереходаНаНовуюВерсию(Параметры);
КонецЕсли;
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
УчетныеЗаписи = Новый Массив;
Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.УчетныеЗаписиЭлектроннойПочты");
Пока Выборка.Следующий() Цикл
УчетныеЗаписи.Добавить(Выборка.Ссылка);
КонецЦикла;
ТекстЗапроса =
"ВЫБРАТЬ
| УчетныеЗаписиЭлектроннойПочты.Ссылка КАК Ссылка
|ИЗ
| Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты
|ГДЕ
| УчетныеЗаписиЭлектроннойПочты.Ссылка В(&УчетныеЗаписи)";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("УчетныеЗаписи", УчетныеЗаписи);
Блокировка = Новый БлокировкаДанных;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда
МодульВзаимодействия = ОбщегоНазначения.ОбщийМодуль("Взаимодействия");
МодульВзаимодействия.ПередУстановкойБлокировкиВОбработчикеОбновленияУчетныхЗаписейЭлектроннойПочты(Блокировка);
КонецЕсли;
Блокировка.Добавить("Справочник.УчетныеЗаписиЭлектроннойПочты");
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
ВладельцыУчетныхЗаписей = Новый Соответствие;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда
МодульВзаимодействия = ОбщегоНазначения.ОбщийМодуль("Взаимодействия");
ВладельцыУчетныхЗаписей = МодульВзаимодействия.ВладельцыУчетныхЗаписейЭлектроннойПочты(УчетныеЗаписи);
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
УчетнаяЗапись = Выборка.Ссылка.ПолучитьОбъект();
УчетнаяЗапись.ДополнительныеСвойства.Вставить("НеПроверятьИзменениеНастроек");
Если ВладельцыУчетныхЗаписей[Выборка.Ссылка] <> Неопределено Тогда
УчетнаяЗапись.ВладелецУчетнойЗаписи = ВладельцыУчетныхЗаписей[Выборка.Ссылка];
КонецЕсли;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(УчетнаяЗапись);
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ЗаписьЖурналаРегистрации(НСтр("ru = 'Обновление персональных учетных записей'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение;
КонецПопытки;
Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.УчетныеЗаписиЭлектроннойПочты");
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
Функция РазрешенияУчетныхЗаписей(УчетнаяЗапись = Неопределено) Экспорт Функция РазрешенияУчетныхЗаписей(УчетнаяЗапись = Неопределено) Экспорт
@@ -515,6 +589,15 @@
Результат.Колонки.Добавить("ПортСервераВходящейПочты"); Результат.Колонки.Добавить("ПортСервераВходящейПочты");
Результат.Колонки.Добавить("ИспользоватьЗащищенноеСоединениеДляВходящейПочты"); Результат.Колонки.Добавить("ИспользоватьЗащищенноеСоединениеДляВходящейПочты");
// icloud.com
Если ИмяСервераВУчетнойЗаписи = "icloud.com" Тогда
ВариантНастройки = Результат.Добавить();
ВариантНастройки.СерверИсходящейПочты = "imap.mail.me.com";
ВариантНастройки.ПортСервераИсходящейПочты = 993;
ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Истина;
Возврат Результат;
КонецЕсли;
// Стандартные настройки, подходящие для ящиков gmail, yandex и mail.ru // Стандартные настройки, подходящие для ящиков gmail, yandex и mail.ru
// имя сервера с префиксом "imap.", защищенное соединение. // имя сервера с префиксом "imap.", защищенное соединение.
ВариантНастройки = Результат.Добавить(); ВариантНастройки = Результат.Добавить();
@@ -629,6 +712,14 @@
Результат.Колонки.Добавить("ПортСервераИсходящейПочты"); Результат.Колонки.Добавить("ПортСервераИсходящейПочты");
Результат.Колонки.Добавить("ИспользоватьЗащищенноеСоединениеДляИсходящейПочты"); Результат.Колонки.Добавить("ИспользоватьЗащищенноеСоединениеДляИсходящейПочты");
Если ИмяСервераВУчетнойЗаписи = "icloud.com" Тогда
ВариантНастройки = Результат.Добавить();
ВариантНастройки.СерверИсходящейПочты = "smtp.mail.me.com";
ВариантНастройки.ПортСервераИсходящейПочты = 587;
ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Ложь;
Возврат Результат;
КонецЕсли;
// Стандартные настройки, подходящие для ящиков gmail, yandex и mail.ru // Стандартные настройки, подходящие для ящиков gmail, yandex и mail.ru
// имя сервера с префиксом "smtp.", защищенное соединение, порт 465. // имя сервера с префиксом "smtp.", защищенное соединение, порт 465.
ВариантНастройки = Результат.Добавить(); ВариантНастройки = Результат.Добавить();
@@ -688,6 +779,34 @@
КонецФункции КонецФункции
Функция РеквизитыТребующиеВводаПароляДляИзменения() Экспорт
Возврат "ИспользоватьДляОтправки,ИспользоватьДляПолучения,СерверВходящейПочты,СерверИсходящейПочты,ВладелецУчетнойЗаписи,ИспользоватьЗащищенноеСоединениеДляВходящейПочты,ИспользоватьЗащищенноеСоединениеДляИсходящейПочты,ИспользоватьБезопасныйВходНаСерверВходящейПочты,ИспользоватьБезопасныйВходНаСерверИсходящейПочты,Пользователь,ПользовательSMTP";
КонецФункции
Функция ТребуетсяПроверкаПароля(Ссылка, ЗначенияРеквизитовПередЗаписью) Экспорт
Если Ссылка.Пустая() Тогда
Возврат Ложь;
КонецЕсли;
СписокРеквизитов = РеквизитыТребующиеВводаПароляДляИзменения();
ЗаписанныеЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, СписокРеквизитов);
Результат = ЗначениеЗаполнено(ЗаписанныеЗначенияРеквизитов.ВладелецУчетнойЗаписи);
Если Результат Тогда
ДоИзменения = Новый Структура(СписокРеквизитов);
ЗаполнитьЗначенияСвойств(ДоИзменения, ЗаписанныеЗначенияРеквизитов);
ПослеИзменения = Новый Структура(СписокРеквизитов);
ЗаполнитьЗначенияСвойств(ПослеИзменения, ЗначенияРеквизитовПередЗаписью);
Результат = ОбщегоНазначения.ЗначениеВСтрокуXML(ДоИзменения) <> ОбщегоНазначения.ЗначениеВСтрокуXML(ПослеИзменения);
КонецЕсли;
Возврат Результат;
КонецФункции
#КонецОбласти #КонецОбласти
#КонецЕсли #КонецЕсли
@@ -53,24 +53,20 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Если Пользователь <> СокрЛП(Пользователь) Тогда
Пользователь = СокрЛП(Пользователь);
КонецЕсли;
Если ПользовательSMTP <> СокрЛП(ПользовательSMTP) Тогда
ПользовательSMTP = СокрЛП(ПользовательSMTP);
КонецЕсли;
Если Не ДополнительныеСвойства.Свойство("НеПроверятьИзменениеНастроек") И Не Ссылка.Пустая() Тогда Если Не ДополнительныеСвойства.Свойство("НеПроверятьИзменениеНастроек") И Не Ссылка.Пустая() Тогда
ТребуетсяПроверкаПароля = Справочники.УчетныеЗаписиЭлектроннойПочты.ТребуетсяПроверкаПароля(Ссылка, ЭтотОбъект);
СписокРеквизитов = "ИспользоватьДляОтправки,ИспользоватьДляПолучения,СерверВходящейПочты,СерверИсходящейПочты,ВладелецУчетнойЗаписи,ИспользоватьЗащищенноеСоединениеДляВходящейПочты,ИспользоватьЗащищенноеСоединениеДляИсходящейПочты,ИспользоватьБезопасныйВходНаСерверВходящейПочты,ИспользоватьБезопасныйВходНаСерверИсходящейПочты,Пользователь,ПользовательSMTP";
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, СписокРеквизитов);
ТребуетсяПроверкаПароля = ЗначениеЗаполнено(ЗначенияРеквизитов.ВладелецУчетнойЗаписи);
Если ТребуетсяПроверкаПароля Тогда Если ТребуетсяПроверкаПароля Тогда
ДоИзменения = Новый Структура(СписокРеквизитов);
ЗаполнитьЗначенияСвойств(ДоИзменения, ЗначенияРеквизитов);
ПослеИзменения = Новый Структура(СписокРеквизитов);
ЗаполнитьЗначенияСвойств(ПослеИзменения, ЭтотОбъект);
ТребуетсяПроверкаПароля = ОбщегоНазначения.ЗначениеВСтрокуXML(ДоИзменения) <> ОбщегоНазначения.ЗначениеВСтрокуXML(ПослеИзменения);
КонецЕсли;
Если ТребуетсяПроверкаПароля Тогда
ТекстСообщенияОбОшибке = НСтр("ru = 'Не подтвержден пароль для изменения настроек учетной записи.'");
ПроверкаПароля = Неопределено; ПроверкаПароля = Неопределено;
Если Не ДополнительныеСвойства.Свойство("Пароль", ПроверкаПароля) Или Не ПарольВведенВерно(ПроверкаПароля) Тогда Если Не ДополнительныеСвойства.Свойство("Пароль", ПроверкаПароля) Или Не ПарольВведенВерно(ПроверкаПароля) Тогда
ТекстСообщенияОбОшибке = НСтр("ru = 'Не подтвержден пароль для изменения настроек учетной записи.'");
ВызватьИсключение ТекстСообщенияОбОшибке; ВызватьИсключение ТекстСообщенияОбОшибке;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -665,6 +665,8 @@
&НаКлиенте &НаКлиенте
Процедура Отправить(Команда) Процедура Отправить(Команда)
ПриОтправкеФайловПочтой(ПараметрыОтправки, Элементы.Список.ВыделенныеСтроки, Элементы.Папки.ТекущиеДанные.Ссылка , УникальныйИдентификатор);
РаботаСФайламиСлужебныйКлиент.ОтправитьФайлыПоПочте( РаботаСФайламиСлужебныйКлиент.ОтправитьФайлыПоПочте(
Элементы.Список.ВыделенныеСтроки, УникальныйИдентификатор, ПараметрыОтправки, Истина); Элементы.Список.ВыделенныеСтроки, УникальныйИдентификатор, ПараметрыОтправки, Истина);
@@ -1433,6 +1435,11 @@
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(ТипСправочникаСФайлами, "Предпросмотр", Предпросмотр); ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(ТипСправочникаСФайлами, "Предпросмотр", Предпросмотр);
КонецПроцедуры КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПриОтправкеФайловПочтой(ПараметрыОтправки, Знач ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор)
РаботаСФайламиПереопределяемый.ПриОтправкеФайловПочтой(ПараметрыОтправки, ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте &НаКлиенте
Процедура УстановитьВидимостьПредпросмотра(ИспользоватьПредпросмотр) Процедура УстановитьВидимостьПредпросмотра(ИспользоватьПредпросмотр)
+12 -3
View File
@@ -63,7 +63,6 @@
// которые необходимо обновить на новую версию. // которые необходимо обновить на новую версию.
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
УстановитьПривилегированныйРежим(Истина);
ОтработаныВсеФайлы = Ложь; ОтработаныВсеФайлы = Ложь;
Ссылка = ""; Ссылка = "";
@@ -83,14 +82,13 @@
| |
|УПОРЯДОЧИТЬ ПО |УПОРЯДОЧИТЬ ПО
| Ссылка"; | Ссылка";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
МассивСсылок = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); МассивСсылок = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок); ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок);
КоличествоСсылок = МассивСсылок.Количество(); КоличествоСсылок = МассивСсылок.Количество();
Если КоличествоСсылок < 1000 Тогда Если КоличествоСсылок < 1000 Тогда
ОтработаныВсеФайлы = Истина; ОтработаныВсеФайлы = Истина;
КонецЕсли; КонецЕсли;
@@ -116,6 +114,17 @@
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
БлокировкаДанных = Новый БлокировкаДанных;
ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("Справочник.Файлы");
ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", Выборка.Ссылка);
ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("Справочник.ВерсииФайлов");
ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", Выборка.Ссылка.ТекущаяВерсия);
ЭлементБлокировкиДанных.Режим = РежимБлокировкиДанных.Разделяемый;
БлокировкаДанных.Заблокировать();
ОбновляемыйФайл = Выборка.Ссылка.ПолучитьОбъект(); ОбновляемыйФайл = Выборка.Ссылка.ПолучитьОбъект();
ОбновляемыйФайл.ДатаМодификацииУниверсальная = ОбновляемыйФайл.ТекущаяВерсия.ДатаМодификацииУниверсальная; ОбновляемыйФайл.ДатаМодификацииУниверсальная = ОбновляемыйФайл.ТекущаяВерсия.ДатаМодификацииУниверсальная;
ОбновляемыйФайл.ТипХраненияФайла = ОбновляемыйФайл.ТекущаяВерсия.ТипХраненияФайла; ОбновляемыйФайл.ТипХраненияФайла = ОбновляемыйФайл.ТекущаяВерсия.ТипХраненияФайла;
@@ -27,7 +27,6 @@
Функция ВыполнитьКопированиеЭлемента(ЭлементКопирования) Функция ВыполнитьКопированиеЭлемента(ЭлементКопирования)
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
ШаблонАнкетыОбъект = Справочники.ШаблоныАнкет.СоздатьЭлемент(); ШаблонАнкетыОбъект = Справочники.ШаблоныАнкет.СоздатьЭлемент();
@@ -78,7 +77,7 @@
| Ссылка ИЕРАРХИЯ, | Ссылка ИЕРАРХИЯ,
| Код"; | Код";
Запрос.УстановитьПараметр("ШаблонАнкеты",ЭлементКопирования); Запрос.УстановитьПараметр("ШаблонАнкеты", ЭлементКопирования);
Результат = Запрос.Выполнить(); Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда Если Результат.Пустой() Тогда
@@ -87,9 +86,7 @@
КонецЕсли; КонецЕсли;
Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ДобавитьЭлементыСправочникаВопросыШаблонаАнкеты(ШаблонАнкетыОбъект.Ссылка, Выборка);
ДобавитьЭлементыСправочникаВопросыШаблонаАнкеты(ШаблонАнкетыОбъект.Ссылка,Выборка);
ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию();
Исключение Исключение
@@ -104,7 +101,7 @@
КонецФункции КонецФункции
&НаСервере &НаСервере
Процедура ДобавитьЭлементыСправочникаВопросыШаблонаАнкеты(Ссылка,Выборка,Родитель = Неопределено) Процедура ДобавитьЭлементыСправочникаВопросыШаблонаАнкеты(Ссылка, Выборка, Родитель = Неопределено)
ВопросыСУсловием = Новый Соответствие; ВопросыСУсловием = Новый Соответствие;
@@ -363,7 +363,6 @@
КонецЕсли; КонецЕсли;
Если ТекущиеДанные.ТипСтроки = "Корень" Тогда Если ТекущиеДанные.ТипСтроки = "Корень" Тогда
Отказ = Истина;
Возврат; Возврат;
ИначеЕсли ТекущиеДанные.ТипСтроки = "Раздел" ИначеЕсли ТекущиеДанные.ТипСтроки = "Раздел"
ИЛИ (ТекущиеДанные.ТипСтроки = "Вопрос" И ТекущиеДанные.ТипВопроса <> ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Табличный") ИЛИ (ТекущиеДанные.ТипСтроки = "Вопрос" И ТекущиеДанные.ТипВопроса <> ПредопределенноеЗначение("Перечисление.ТипыВопросовШаблонаАнкеты.Табличный")
@@ -57,7 +57,6 @@
<segments>Шаблоны</segments> <segments>Шаблоны</segments>
</dataPath> </dataPath>
<titleLocation>None</titleLocation> <titleLocation>None</titleLocation>
<excludedCommands>Copy</excludedCommands>
<excludedCommands>Delete</excludedCommands> <excludedCommands>Delete</excludedCommands>
<excludedCommands>EndEdit</excludedCommands> <excludedCommands>EndEdit</excludedCommands>
<excludedCommands>MoveDown</excludedCommands> <excludedCommands>MoveDown</excludedCommands>
@@ -118,6 +117,10 @@
<event>BeforeAddRow</event> <event>BeforeAddRow</event>
<name>ШаблоныПередНачаломДобавления</name> <name>ШаблоныПередНачаломДобавления</name>
</handlers> </handlers>
<handlers>
<event>BeforeDeleteRow</event>
<name>ШаблоныПередУдалением</name>
</handlers>
<handlers> <handlers>
<event>OnActivateRow</event> <event>OnActivateRow</event>
<name>ШаблоныПриАктивизацииСтроки</name> <name>ШаблоныПриАктивизацииСтроки</name>
@@ -212,10 +215,10 @@
<id>40</id> <id>40</id>
<autoFill>true</autoFill> <autoFill>true</autoFill>
</contextMenu> </contextMenu>
<changeRowSet>true</changeRowSet>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount> <autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<rowSelectionMode>Row</rowSelectionMode> <rowSelectionMode>Row</rowSelectionMode>
<headerHeight>1</headerHeight> <headerHeight>1</headerHeight>
<footerHeight>1</footerHeight> <footerHeight>1</footerHeight>
@@ -226,7 +229,6 @@
<horizontalLinesBWA>false</horizontalLinesBWA> <horizontalLinesBWA>false</horizontalLinesBWA>
<verticalLinesBWA>false</verticalLinesBWA> <verticalLinesBWA>false</verticalLinesBWA>
<useAlternationRowColorBWA>false</useAlternationRowColorBWA> <useAlternationRowColorBWA>false</useAlternationRowColorBWA>
<autoInsertNewRow>true</autoInsertNewRow>
<searchOnInput>Auto</searchOnInput> <searchOnInput>Auto</searchOnInput>
<initialListView>Auto</initialListView> <initialListView>Auto</initialListView>
<horizontalStretch>true</horizontalStretch> <horizontalStretch>true</horizontalStretch>
@@ -515,6 +517,32 @@
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar> <locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</items> </items>
<items xsi:type="form:Button">
<name>ФормаСкопировать</name>
<id>78</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСкопироватьРасширеннаяПодсказка</name>
<id>79</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Item.Шаблоны.StandardCommand.Copy</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button"> <items xsi:type="form:Button">
<name>ФормаИзменить</name> <name>ФормаИзменить</name>
<id>74</id> <id>74</id>
@@ -811,10 +839,10 @@
</edit> </edit>
</attributes> </attributes>
<attributes> <attributes>
<name>ПустойСписокШаблонов</name> <name>ПоказыватьФормуВыбораШаблонов</name>
<title> <title>
<key>ru</key> <key>ru</key>
<value>Пустой список шаблонов</value> <value>Показывать форму выбора шаблонов</value>
</title> </title>
<id>7</id> <id>7</id>
<valueType> <valueType>
@@ -895,6 +923,55 @@
<common>true</common> <common>true</common>
</edit> </edit>
</attributes> </attributes>
<attributes>
<name>ПараметрыСообщения</name>
<title>
<key>ru</key>
<value>Параметры сообщения</value>
</title>
<id>12</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ВладелецШаблона</name>
<title>
<key>ru</key>
<value>Владелец шаблона</value>
</title>
<id>13</id>
<valueType>
<types>DefinedType.ВладелецШаблонаСообщения</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ПодготовитьШаблон</name>
<title>
<key>ru</key>
<value>Подготовить шаблон</value>
</title>
<id>14</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands> <formCommands>
<name>СформироватьИОтправить</name> <name>СформироватьИОтправить</name>
<title> <title>
@@ -988,6 +1065,20 @@
<types>Boolean</types> <types>Boolean</types>
</valueType> </valueType>
</parameters> </parameters>
<parameters>
<name>ПараметрыСообщения</name>
<valueType/>
</parameters>
<parameters>
<name>ВладелецШаблона</name>
<valueType/>
</parameters>
<parameters>
<name>ПодготовитьШаблон</name>
<valueType>
<types>Boolean</types>
</valueType>
</parameters>
<commandInterface> <commandInterface>
<navigationPanel/> <navigationPanel/>
<commandBar/> <commandBar/>
@@ -3,11 +3,14 @@
&НаСервере &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Предмет = Параметры.Предмет; Предмет = Параметры.Предмет;
ВидСообщения = Параметры.ВидСообщения; ВидСообщения = Параметры.ВидСообщения;
РежимВыбора = Параметры.РежимВыбора; РежимВыбора = Параметры.РежимВыбора;
ВладелецШаблона = Параметры.ВладелецШаблона;
ПараметрыСообщения = Параметры.ПараметрыСообщения;
ПодготовитьШаблон = Параметры.ПодготовитьШаблон;
Если ЗначениеЗаполнено(Предмет) Тогда Если ЗначениеЗаполнено(Предмет) И ТипЗнч(Предмет) <> Тип("Строка") Тогда
ПолноеИмяТипаОснования = Предмет.Метаданные().ПолноеИмя(); ПолноеИмяТипаОснования = Предмет.Метаданные().ПолноеИмя();
КонецЕсли; КонецЕсли;
@@ -23,28 +26,22 @@
Если НЕ ПравоДоступа("Изменение", Метаданные.Справочники.ШаблоныСообщений) Тогда Если НЕ ПравоДоступа("Изменение", Метаданные.Справочники.ШаблоныСообщений) Тогда
ЕстьПравоИзменения = Ложь; ЕстьПравоИзменения = Ложь;
Элементы.ФормаИзменить.Видимость = Ложь; Элементы.ФормаИзменить.Видимость = Ложь;
Элементы.ФормаСоздать.Видимость = Ложь; Элементы.ФормаСоздать.Видимость = Ложь;
Иначе Иначе
ЕстьПравоИзменения = Истина; ЕстьПравоИзменения = Истина;
КонецЕсли; КонецЕсли;
Если РежимВыбора Тогда Если РежимВыбора Тогда
Элементы.ФормаСформироватьИОтправить.Видимость = Ложь; Элементы.ФормаСформироватьИОтправить.Видимость = Ложь;
Элементы.ФормаСформировать.Заголовок = НСтр("ru='Выбрать'");
ИначеЕсли ПодготовитьШаблон Тогда
Элементы.ФормаСформироватьИОтправить.Видимость = Ложь;
КонецЕсли; КонецЕсли;
ЗаполнитьСписокДоступныхШаблонов(); ЗаполнитьСписокДоступныхШаблонов();
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ПустойСписокШаблонов Тогда
ПараметрыОтправки = КонструкторПараметровОтправки();
ПараметрыОтправки.ДополнительныеПараметры.ПреобразовыватьHTMLДляФорматированногоДокумента = Ложь;
СформироватьСообщениеДляОтправки(ПараметрыОтправки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте &НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_ШаблоныСообщений" Тогда Если ИмяСобытия = "Запись_ШаблоныСообщений" Тогда
@@ -60,6 +57,17 @@
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если НЕ ПоказыватьФормуВыбораШаблонов Тогда
ПараметрыОтправки = КонструкторПараметровОтправки();
ПараметрыОтправки.ДополнительныеПараметры.ПреобразовыватьHTMLДляФорматированногоДокумента = Ложь;
СформироватьСообщениеДляОтправки(ПараметрыОтправки);
КонецЕсли;
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыШаблоны #Область ОбработчикиСобытийЭлементовТаблицыФормыШаблоны
@@ -67,7 +75,16 @@
&НаКлиенте &НаКлиенте
Процедура ШаблоныПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) Процедура ШаблоныПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Отказ = Истина; Отказ = Истина;
СоздатьНовыйШаблон(); Если Копирование И НЕ Группа Тогда
СоздатьНовыйШаблон(Элемент.ТекущиеДанные.Ссылка);
Иначе
СоздатьНовыйШаблон();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ШаблоныПередУдалением(Элемент, Отказ)
Отказ = Истина;
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -157,6 +174,11 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Если РежимВыбора Тогда
Закрыть(ТекущиеДанные.Ссылка);
Возврат;
КонецЕсли;
ПараметрыОтправки = КонструкторПараметровОтправки(ТекущиеДанные.Ссылка); ПараметрыОтправки = КонструкторПараметровОтправки(ТекущиеДанные.Ссылка);
ПараметрыОтправки.ДополнительныеПараметры.ПреобразовыватьHTMLДляФорматированногоДокумента = Истина; ПараметрыОтправки.ДополнительныеПараметры.ПреобразовыватьHTMLДляФорматированногоДокумента = Истина;
@@ -177,10 +199,18 @@
АдресРезультата = СформироватьСообщениеНаСервере(АдресВременногоХранилища, ПараметрыОтправки, ВидСообщения); АдресРезультата = СформироватьСообщениеНаСервере(АдресВременногоХранилища, ПараметрыОтправки, ВидСообщения);
Результат = ПолучитьИзВременногоХранилища(АдресРезультата); Результат = ПолучитьИзВременногоХранилища(АдресРезультата);
Результат.Вставить("Предмет", Предмет);
Результат.Вставить("Шаблон", ПараметрыОтправки.Шаблон);
Если ПараметрыОтправки.ДополнительныеПараметры.Свойство("ПараметрыСообщения")
И ТипЗнч(ПараметрыОтправки.ДополнительныеПараметры.ПараметрыСообщения) = Тип("Структура") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Результат, ПараметрыСообщения, Ложь);
КонецЕсли;
Если ПараметрыОтправки.ДополнительныеПараметры.ОтправитьСразу Тогда Если ПараметрыОтправки.ДополнительныеПараметры.ОтправитьСразу Тогда
ПослеФормированияИОтправкиСообщения(Результат, ПараметрыОтправки); ПослеФормированияИОтправкиСообщения(Результат, ПараметрыОтправки);
Иначе Иначе
Если РежимВыбора Тогда Если ПодготовитьШаблон Тогда
Закрыть(Результат); Закрыть(Результат);
Иначе Иначе
Закрыть(); Закрыть();
@@ -231,7 +261,7 @@
&НаКлиенте &НаКлиенте
Процедура ОтравитьСообщениеПроверкаУчетнойЗаписиВыполнена(УчетнаяЗаписьНастроена, ПараметрыОтправки) Экспорт Процедура ОтравитьСообщениеПроверкаУчетнойЗаписиВыполнена(УчетнаяЗаписьНастроена, ПараметрыОтправки) Экспорт
Если УчетнаяЗаписьНастроена Тогда Если УчетнаяЗаписьНастроена = Истина Тогда
СформироватьСообщениеДляОтправки(ПараметрыОтправки); СформироватьСообщениеДляОтправки(ПараметрыОтправки);
КонецЕсли; КонецЕсли;
@@ -263,6 +293,7 @@
КонецЕсли; КонецЕсли;
ДополнительныеПараметры.ИсточникКонтактнойИнформации = Предмет; ДополнительныеПараметры.ИсточникКонтактнойИнформации = Предмет;
ДополнительныеПараметры.Вставить("Предмет", Предмет);
Текст = ?(Сообщение.Свойство("Текст"), Сообщение.Текст, ""); Текст = ?(Сообщение.Свойство("Текст"), Сообщение.Текст, "");
Получатель = ?(Сообщение.Свойство("Получатель"), Сообщение.Получатель.ВыгрузитьЗначения(), Новый СписокЗначений); Получатель = ?(Сообщение.Свойство("Получатель"), Сообщение.Получатель.ВыгрузитьЗначения(), Новый СписокЗначений);
МодульОтправкаSMSКлиент.ОтправитьSMS(Получатель, Текст, ДополнительныеПараметры); МодульОтправкаSMSКлиент.ОтправитьSMS(Получатель, Текст, ДополнительныеПараметры);
@@ -288,15 +319,9 @@
&НаКлиенте &НаКлиенте
Функция КонструкторПараметровОтправки(Шаблон = Неопределено) Функция КонструкторПараметровОтправки(Шаблон = Неопределено)
ПараметрыОтправки = Новый Структура(); ПараметрыОтправки = ШаблоныСообщенийКлиентСервер.КонструкторПараметровОтправки(Шаблон, Предмет, УникальныйИдентификатор);
ПараметрыОтправки.Вставить("Шаблон", Шаблон); ПараметрыОтправки.ДополнительныеПараметры.ВидСообщения = ВидСообщения;
ПараметрыОтправки.Вставить("Предмет", Предмет); ПараметрыОтправки.ДополнительныеПараметры.ПараметрыСообщения = ПараметрыСообщения;
ПараметрыОтправки.Вставить("УникальныйИдентификатор", УникальныйИдентификатор);
ПараметрыОтправки.Вставить("ДополнительныеПараметры", Новый Структура);
ПараметрыОтправки.ДополнительныеПараметры.Вставить("ПреобразовыватьHTMLДляФорматированногоДокумента", Ложь);
ПараметрыОтправки.ДополнительныеПараметры.Вставить("ВидСообщения", ВидСообщения);
ПараметрыОтправки.ДополнительныеПараметры.Вставить("ПроизвольныеПараметры", Новый Соответствие);
ПараметрыОтправки.ДополнительныеПараметры.Вставить("ОтправитьСразу", Ложь);
Возврат ПараметрыОтправки; Возврат ПараметрыОтправки;
@@ -312,11 +337,17 @@
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
Процедура СоздатьНовыйШаблон() Процедура СоздатьНовыйШаблон(ЗначениеКопирования = Неопределено)
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ВидСообщения" , ВидСообщения);
ПараметрыФормы.Вставить("ПолноеИмяТипаОснования", ПолноеИмяТипаОснования);
ПараметрыФормы.Вставить("ТолькоДляАвтора", Истина);
ПараметрыФормы.Вставить("ВладелецШаблона", ВладелецШаблона);
ПараметрыФормы.Вставить("ЗначениеКопирования", ЗначениеКопирования);
ПараметрыФормы = Новый Структура("ВидСообщения, ПолноеИмяТипаОснования, ТолькоДляАвтора", ВидСообщения, ПолноеИмяТипаОснования, Истина);
Оповещение = Новый ОписаниеОповещения("ОбновитьОкно", ЭтотОбъект); Оповещение = Новый ОписаниеОповещения("ОбновитьОкно", ЭтотОбъект);
ОткрытьФорму("Справочник.ШаблоныСообщений.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект,,,, ) ОткрытьФорму("Справочник.ШаблоныСообщений.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект);
КонецПроцедуры КонецПроцедуры
@@ -330,7 +361,7 @@
Шаблоны.Очистить(); Шаблоны.Очистить();
ТипШаблона = ?(ПредназначенДляSMS, "SMS", "Письмо"); ТипШаблона = ?(ПредназначенДляSMS, "SMS", "Письмо");
Запрос = ШаблоныСообщенийСлужебный.ПодготовитьЗапросДляПолученияСпискаШаблонов(ТипШаблона, Предмет); Запрос = ШаблоныСообщенийСлужебный.ПодготовитьЗапросДляПолученияСпискаШаблонов(ТипШаблона, Предмет, ВладелецШаблона);
РезультатЗапроса = Запрос.Выполнить().Выбрать(); РезультатЗапроса = Запрос.Выполнить().Выбрать();
@@ -358,13 +389,15 @@
КонецЦикла; КонецЦикла;
Если Шаблоны.Количество() = 0 Тогда Если Шаблоны.Количество() = 0 Тогда
ПустойСписокШаблонов = Истина; НастройкиШаблоновСообщений = ШаблоныСообщенийСлужебныйПовтИсп.ПриОпределенииНастроек();
Возврат; ПоказыватьФормуВыбораШаблонов = НастройкиШаблоновСообщений.ВсегдаПоказыватьФормуВыбораШаблонов;
Иначе
ПоказыватьФормуВыбораШаблонов = Истина;
КонецЕсли; КонецЕсли;
Шаблоны.Сортировать("Представление"); Шаблоны.Сортировать("Представление");
Если НЕ РежимВыбора Тогда Если НЕ РежимВыбора И НЕ ПодготовитьШаблон Тогда
ПерваяСтрока = Шаблоны.Вставить(0); ПерваяСтрока = Шаблоны.Вставить(0);
ПерваяСтрока.Имя = "<БезШаблона>"; ПерваяСтрока.Имя = "<БезШаблона>";
ПерваяСтрока.Представление = НСтр("ru = '<Без шаблона>'"); ПерваяСтрока.Представление = НСтр("ru = '<Без шаблона>'");
@@ -372,8 +405,14 @@
Если Шаблоны.Количество() = 0 Тогда Если Шаблоны.Количество() = 0 Тогда
Элементы.ФормаСоздать.ТолькоВоВсехДействиях = Ложь; Элементы.ФормаСоздать.ТолькоВоВсехДействиях = Ложь;
Элементы.ФормаСоздать.Отображение = ОтображениеКнопки.КартинкаИТекст;
Элементы.ФормаСформировать.Доступность = Ложь;
Элементы.ФормаСформироватьИОтправить.Доступность = Ложь;
Иначе
Элементы.ФормаСформировать.Доступность = Истина;
Элементы.ФормаСформироватьИОтправить.Доступность = Истина;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -530,6 +530,40 @@
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField">
<name>ВладелецШаблона</name>
<id>53</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Список.ВладелецШаблона</segments>
</dataPath>
<extendedTooltip>
<name>ВладелецШаблонаРасширеннаяПодсказка</name>
<id>55</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВладелецШаблонаКонтекстноеМеню</name>
<id>54</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<commandBarLocation>None</commandBarLocation> <commandBarLocation>None</commandBarLocation>
<autoCommandBar> <autoCommandBar>
<name>СписокКоманднаяПанель</name> <name>СписокКоманднаяПанель</name>
@@ -712,15 +746,16 @@
ТОГДА &amp;Общий ТОГДА &amp;Общий
ИНАЧЕ СправочникШаблоныСообщений.Назначение ИНАЧЕ СправочникШаблоныСообщений.Назначение
КОНЕЦ КАК Назначение, КОНЕЦ КАК Назначение,
СправочникШаблоныСообщений.ВладелецШаблона Как ВладелецШаблона,
0 ЕстьФайлы 0 ЕстьФайлы
ИЗ ИЗ
Справочник.ШаблоныСообщений КАК СправочникШаблоныСообщений Справочник.ШаблоныСообщений КАК СправочникШаблоныСообщений
ГДЕ ГДЕ
(&amp;Назначение = &quot;&quot; (&amp;Назначение = &quot;&quot;
ИЛИ СправочникШаблоныСообщений.Назначение = &amp;Назначение) ИЛИ СправочникШаблоныСообщений.Назначение = &amp;Назначение)
И (СправочникШаблоныСообщений.ВладелецШаблона = Неопределено И (СправочникШаблоныСообщений.ВладелецШаблона = Неопределено
ИЛИ &amp;ПоказыватьКонтекстныеШаблоны) ИЛИ СправочникШаблоныСообщений.ВладелецШаблона = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
</queryText> ИЛИ &amp;ПоказыватьКонтекстныеШаблоны)</queryText>
<mainTable>Catalog.ШаблоныСообщений</mainTable> <mainTable>Catalog.ШаблоныСообщений</mainTable>
<dynamicDataRead>true</dynamicDataRead> <dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields> <autoFillAvailableFields>true</autoFillAvailableFields>
@@ -151,7 +151,7 @@
Элементы.НазначениеФильтр.СписокВыбора.Добавить("", НСтр("ru = 'Все'")); Элементы.НазначениеФильтр.СписокВыбора.Добавить("", НСтр("ru = 'Все'"));
ОбщийПредставление = НСтр("ru = 'Общий'"); ОбщийПредставление = НСтр("ru = 'Общий'");
Список.Параметры.УстановитьЗначениеПараметра("Общий", ОбщийПредставление); Список.Параметры.УстановитьЗначениеПараметра("Общий", ОбщийПредставление);
Элементы.НазначениеФильтр.СписокВыбора.Добавить("Общий", ОбщийПредставление); Элементы.НазначениеФильтр.СписокВыбора.Добавить("Общий", ОбщийПредставление);
Запрос = Новый Запрос; Запрос = Новый Запрос;
@@ -162,6 +162,7 @@
| Справочник.ШаблоныСообщений КАК ШаблоныСообщений | Справочник.ШаблоныСообщений КАК ШаблоныСообщений
|ГДЕ |ГДЕ
| ШаблоныСообщений.Назначение <> """" И ШаблоныСообщений.Назначение <> ""Служебный"" | ШаблоныСообщений.Назначение <> """" И ШаблоныСообщений.Назначение <> ""Служебный""
| И ШаблоныСообщений.Назначение <> &Общий
| |
|СГРУППИРОВАТЬ ПО |СГРУППИРОВАТЬ ПО
| ШаблоныСообщений.Назначение | ШаблоныСообщений.Назначение
@@ -169,6 +170,7 @@
|УПОРЯДОЧИТЬ ПО |УПОРЯДОЧИТЬ ПО
| Назначение"; | Назначение";
Запрос.УстановитьПараметр("Общий", ОбщийПредставление);
РезультатЗапроса = Запрос.Выполнить().Выбрать(); РезультатЗапроса = Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл Пока РезультатЗапроса.Следующий() Цикл
@@ -177,6 +177,40 @@
<textSize>Normal</textSize> <textSize>Normal</textSize>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField">
<name>ВладелецШаблона</name>
<id>358</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ВладелецШаблона</segments>
</dataPath>
<extendedTooltip>
<name>ВладелецШаблонаРасширеннаяПодсказка</name>
<id>360</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВладелецШаблонаКонтекстноеМеню</name>
<id>359</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>Страницы</name> <name>Страницы</name>
<id>40</id> <id>40</id>
@@ -3728,6 +3762,21 @@
<common>true</common> <common>true</common>
</edit> </edit>
</attributes> </attributes>
<attributes>
<name>ПараметрыСообщения</name>
<title>
<key>ru</key>
<value>Параметры сообщения</value>
</title>
<id>13</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands> <formCommands>
<name>ПроверитьШаблон</name> <name>ПроверитьШаблон</name>
<title> <title>
@@ -3967,6 +4016,10 @@
<stringQualifiers/> <stringQualifiers/>
</valueType> </valueType>
</parameters> </parameters>
<parameters>
<name>ПараметрыСообщения</name>
<valueType/>
</parameters>
<commandInterface> <commandInterface>
<navigationPanel> <navigationPanel>
<cmiFragmentRecord> <cmiFragmentRecord>
@@ -9,6 +9,10 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Если Параметры.Свойство("ПараметрыСообщения") Тогда
ПараметрыСообщения = Параметры.ПараметрыСообщения;
КонецЕсли;
Элементы.ПолноеИмяТипаПараметраВводаНаОсновании.СписокВыбора.Добавить("Общий", НСтр("ru='Общий'")); Элементы.ПолноеИмяТипаПараметраВводаНаОсновании.СписокВыбора.Добавить("Общий", НСтр("ru='Общий'"));
НастройкиШаблоновСообщений = ШаблоныСообщенийСлужебныйПовтИсп.ПриОпределенииНастроек(); НастройкиШаблоновСообщений = ШаблоныСообщенийСлужебныйПовтИсп.ПриОпределенииНастроек();
Для каждого ПредметШаблона Из НастройкиШаблоновСообщений.ПредметыШаблонов Цикл Для каждого ПредметШаблона Из НастройкиШаблоновСообщений.ПредметыШаблонов Цикл
@@ -36,7 +40,7 @@
КонецЕсли; КонецЕсли;
ОтображениеЭлементовФормы(); ОтображениеЭлементовФормы(НастройкиШаблоновСообщений.ФорматПисьма);
ИнициализироватьФорматыСохранения(); ИнициализироватьФорматыСохранения();
СформироватьСписокРеквизитовИПечатныхФорм(); СформироватьСписокРеквизитовИПечатныхФорм();
@@ -51,11 +55,10 @@
КонецЕсли; КонецЕсли;
Если Параметры.Свойство("ВладелецШаблона") Тогда Если Параметры.Свойство("ВладелецШаблона") Тогда
Элементы.ГруппаНазначение.Видимость = Ложь; Элементы.ГруппаНазначение.Видимость = Ложь;
Элементы.ГруппаДоступ.Видимость = Ложь; Элементы.ГруппаДоступ.Видимость = Ложь;
Элементы.ФормаГруппаСообщениеФормируется.Видимость = Ложь; Элементы.ФормаГруппаСообщениеФормируется.Видимость = Ложь;
Элементы.Наименование.Видимость = Ложь; Элементы.Назначение.Видимость = Ложь;
Элементы.Назначение.Видимость = Ложь;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -85,13 +88,7 @@
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Для каждого ПараметрШаблонаТекущийОбъект Из ТекущийОбъект.Параметры Цикл ЗаполнитьПроизвольныеПараметрыИзОбъекта(ТекущийОбъект);
Отбор = Новый Структура("ИмяПараметра", ПараметрШаблонаТекущийОбъект.ИмяПараметра);
НайденныеСтроки = Объект.Параметры.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
НайденныеСтроки[0].ОписаниеТипа = ПараметрШаблонаТекущийОбъект.ТипПараметра.Получить();
КонецЕсли;
КонецЦикла;
Если ПустаяСтрока(Объект.ПолноеИмяТипаПараметраВводаНаОсновании) Тогда Если ПустаяСтрока(Объект.ПолноеИмяТипаПараметраВводаНаОсновании) Тогда
Объект.Назначение = НСтр("ru='Общий'"); Объект.Назначение = НСтр("ru='Общий'");
@@ -104,7 +101,9 @@
&НаКлиенте &НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ПоместитьНовыеФайлыВоВременноеХранилище(Вложения, УникальныйИдентификатор, Отказ); Если НЕ ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() Тогда
ПоместитьФайлыИзЛокальнойФСВоВременноеХранилище(Вложения, УникальныйИдентификатор, Отказ);
КонецЕсли;
Если НЕ Объект.ПредназначенДляВводаНаОсновании Тогда Если НЕ Объект.ПредназначенДляВводаНаОсновании Тогда
Объект.ПолноеИмяТипаПараметраВводаНаОсновании = ""; Объект.ПолноеИмяТипаПараметраВводаНаОсновании = "";
@@ -232,15 +231,9 @@
&НаСервере &НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Для каждого ПараметрШаблонаТекущийОбъект Из ТекущийОбъект.Параметры Цикл ЗаполнитьПроизвольныеПараметрыИзОбъекта(ТекущийОбъект);
Отбор = Новый Структура("ИмяПараметра", ПараметрШаблонаТекущийОбъект.ИмяПараметра);
НайденныеСтроки = Объект.Параметры.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
НайденныеСтроки[0].ОписаниеТипа = ПараметрШаблонаТекущийОбъект.ТипПараметра.Получить();
КонецЕсли;
КонецЦикла;
ОтображениеЭлементовФормы(); ОтображениеЭлементовФормы();
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -643,7 +636,7 @@
Если ТекущиеДанные.Ссылка = ПредопределенноеЗначение("Справочник.ШаблоныСообщенийПрисоединенныеФайлы.ПустаяСсылка") Тогда Если ТекущиеДанные.Ссылка = ПредопределенноеЗначение("Справочник.ШаблоныСообщенийПрисоединенныеФайлы.ПустаяСсылка") Тогда
ДополнительныеПараметры = Новый Структура("ТекущийИндексВКоллекции", Идентификатор); ДополнительныеПараметры = Новый Структура("ТекущийИндексВКоллекции", Идентификатор);
ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("СкопироватьВложениеЗавершение", ЭтотОбъект, ДополнительныеПараметры); ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("СкопироватьВложениеЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ТекстВопроса = НСтр("ru = 'Файл возможно скопировать только после его записи. Записать?'"); ТекстВопроса = НСтр("ru = 'Файл возможно скопировать только после записи шаблона сообщения. Записать?'");
ПоказатьВопрос(ОбработчикОповещенияОЗакрытии, ТекстВопроса, РежимДиалогаВопрос.ДаНет); ПоказатьВопрос(ОбработчикОповещенияОЗакрытии, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе Иначе
СкопироватьФайлВложения(Идентификатор); СкопироватьФайлВложения(Идентификатор);
@@ -785,13 +778,27 @@
ВидСообщения = Параметры.ВидСообщения; ВидСообщения = Параметры.ВидСообщения;
Если ЗначениеЗаполнено(Параметры.ПолноеИмяТипаОснования) Тогда Если ЗначениеЗаполнено(Параметры.ПолноеИмяТипаОснования)
И ШаблоныСообщенийСлужебный.ОбъектЯвляетсяПредметомШаблона(Параметры.ПолноеИмяТипаОснования) Тогда
// Контекстный вызов // Контекстный вызов
Объект.ПолноеИмяТипаПараметраВводаНаОсновании = Параметры.ПолноеИмяТипаОснования; Объект.ПолноеИмяТипаПараметраВводаНаОсновании = Параметры.ПолноеИмяТипаОснования;
Элементы.ГруппаНазначение.Видимость = Ложь; Элементы.ГруппаНазначение.Видимость = Ложь;
Объект.ПредназначенДляВводаНаОсновании = Истина; Объект.ПредназначенДляВводаНаОсновании = Истина;
ИмяВНазначение = Параметры.ПолноеИмяТипаОснования;
НазначениеШаблона = НастройкиШаблоновСообщений.ПредметыШаблонов.Найти(ИмяВНазначение, "Представление");
Если НазначениеШаблона = Неопределено Тогда
НазначениеШаблона = НастройкиШаблоновСообщений.ПредметыШаблонов.Найти(ИмяВНазначение, "Имя");
КонецЕсли;
Если НазначениеШаблона <> Неопределено Тогда
Объект.ПолноеИмяТипаПараметраВводаНаОсновании = НазначениеШаблона.Имя;
Объект.Назначение = НазначениеШаблона.Представление;
Иначе
Объект.ПолноеИмяТипаПараметраВводаНаОсновании = ИмяВНазначение;
Объект.Назначение = ИмяВНазначение;
КонецЕсли;
ИначеЕсли Параметры.ПараметрыВыбора.Количество() > 0 Тогда ИначеЕсли Параметры.ПараметрыВыбора.Количество() > 0 Тогда
ИмяВНазначение = ?(Параметры.ПараметрыВыбора.Свойство("Назначение"), Параметры.ПараметрыВыбора.Назначение, ""); ИмяВНазначение = ?(Параметры.ПараметрыВыбора.Свойство("Назначение"), Параметры.ПараметрыВыбора.Назначение, "");
@@ -883,7 +890,7 @@
КонецПроцедуры КонецПроцедуры
&НаСервере &НаСервере
Процедура ОтображениеЭлементовФормы() Процедура ОтображениеЭлементовФормы(ФорматаПисьма = "")
Если Объект.ПредназначенДляSMS Тогда Если Объект.ПредназначенДляSMS Тогда
СуффиксЗаголовка = НСтр("ru = 'Шаблон сообщения SMS'"); СуффиксЗаголовка = НСтр("ru = 'Шаблон сообщения SMS'");
@@ -904,12 +911,17 @@
Элементы.РеквизитыМенюДобавитьПараметрПочта.Видимость = Истина; Элементы.РеквизитыМенюДобавитьПараметрПочта.Видимость = Истина;
Элементы.РеквизитыКонтекстноеМенюДобавитьПараметрВТекстСообщенияДляSMS.Видимость = Ложь; Элементы.РеквизитыКонтекстноеМенюДобавитьПараметрВТекстСообщенияДляSMS.Видимость = Ложь;
Элементы.РеквизитыМенюДобавитьПараметрВТекстСообщенияSMS.Видимость = Ложь; Элементы.РеквизитыМенюДобавитьПараметрВТекстСообщенияSMS.Видимость = Ложь;
Если Объект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда
УстановитьЭлектронноеПисьмоHTML(); Если НЕ ФорматаПисьмаПредопределен(ФорматаПисьма) Тогда
Иначе Если Объект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда
УстановитьЭлектронноеПисьмоОбычныйТекст(); УстановитьЭлектронноеПисьмоHTML();
Иначе
УстановитьЭлектронноеПисьмоОбычныйТекст();
КонецЕсли;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Заголовок = Объект.Наименование + " (" + СуффиксЗаголовка + ")"; Заголовок = Объект.Наименование + " (" + СуффиксЗаголовка + ")";
Иначе Иначе
@@ -935,7 +947,7 @@
Элементы.ГруппаДоступ.Видимость = Элементы.ГруппаДоступ.Видимость =
НЕ ПараметрыДоступа("Изменение", Метаданные.Справочники.ШаблоныСообщений, "Ссылка").ОграничениеУсловием; НЕ ПараметрыДоступа("Изменение", Метаданные.Справочники.ШаблоныСообщений, "Ссылка").ОграничениеУсловием;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки");
Элементы.ФормаГруппаСообщениеФормируется.Видимость = МодульДополнительныеОтчетыИОбработки.ИспользуютсяДополнительныеОтчетыИОбработки(); Элементы.ФормаГруппаСообщениеФормируется.Видимость = МодульДополнительныеОтчетыИОбработки.ИспользуютсяДополнительныеОтчетыИОбработки();
@@ -949,6 +961,27 @@
КонецПроцедуры КонецПроцедуры
&НаСервере
Функция ФорматаПисьмаПредопределен(Знач ФорматаПисьма)
Если ЗначениеЗаполнено(ФорматаПисьма) Тогда
Если ФорматаПисьма = "ТолькоHTML" Тогда
Объект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML;
УстановитьЭлектронноеПисьмоHTML();
Элементы.ФормаЭлектронноеПисьмоHTML.Видимость = Ложь;
Возврат Истина;
ИначеЕсли ФорматаПисьма = "ТолькоОбычныйТекст" Тогда
Объект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст;
УстановитьЭлектронноеПисьмоОбычныйТекст();
Элементы.ФормаЭлектронноеПисьмоHTML.Видимость = Ложь;
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаСервере &НаСервере
Процедура УстановитьHTMLДляФорматированногоДокумента(ТекстШаблонаПисьмаHTML, СсылкаНаТекущийОбъект, СписокФайлов = Неопределено) Процедура УстановитьHTMLДляФорматированногоДокумента(ТекстШаблонаПисьмаHTML, СсылкаНаТекущийОбъект, СписокФайлов = Неопределено)
@@ -987,6 +1020,7 @@
ПараметрыШаблона = ШаблоныСообщенийСлужебный.ПараметрыШаблона(Объект); ПараметрыШаблона = ШаблоныСообщенийСлужебный.ПараметрыШаблона(Объект);
СведенияОШаблоне = ШаблоныСообщенийСлужебный.СведенияОШаблоне(ПараметрыШаблона); СведенияОШаблоне = ШаблоныСообщенийСлужебный.СведенияОШаблоне(ПараметрыШаблона);
ПараметрыШаблона.ПараметрыСообщения = ПараметрыСообщения;
Реквизиты.ПолучитьЭлементы().Очистить(); Реквизиты.ПолучитьЭлементы().Очистить();
СписокРеквизитов = РеквизитФормыВЗначение("Реквизиты"); СписокРеквизитов = РеквизитФормыВЗначение("Реквизиты");
@@ -995,7 +1029,6 @@
ЗначениеВРеквизитФормы(СписокРеквизитов, "Реквизиты"); ЗначениеВРеквизитФормы(СписокРеквизитов, "Реквизиты");
СформироватьСписокПечатныхФорм(СведенияОШаблоне); СформироватьСписокПечатныхФорм(СведенияОШаблоне);
КонецПроцедуры КонецПроцедуры
@@ -1192,23 +1225,23 @@
&НаКлиенте &НаКлиенте
Процедура ДобавитьВложениеВыполнить(Идентификатор = Неопределено) Процедура ДобавитьВложениеВыполнить(Идентификатор = Неопределено)
#Если Не ВебКлиент Тогда Если НЕ ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() Тогда
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.МножественныйВыбор = Истина; Диалог.МножественныйВыбор = Истина;
ДополнительныеПараметры = Новый Структура("Идентификатор", Идентификатор); ДополнительныеПараметры = Новый Структура("Идентификатор", Идентификатор);
ОписаниеОповещение = Новый ОписаниеОповещения("ДиалогВыбораФайловПослеВыбора", ЭтотОбъект, ДополнительныеПараметры); ОписаниеОповещение = Новый ОписаниеОповещения("ДиалогВыбораФайловПослеВыбора", ЭтотОбъект, ДополнительныеПараметры);
Диалог.Показать(ОписаниеОповещение); Диалог.Показать(ОписаниеОповещение);
#Иначе Иначе
Адрес = ""; Адрес = "";
ВыбранныйФайл = ""; ВыбранныйФайл = "";
ДополнительныеПараметры = Новый Структура("Идентификатор", Идентификатор); ДополнительныеПараметры = Новый Структура("Идентификатор", Идентификатор);
ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("ПомещениеФайлаПриОкончании", ЭтотОбъект, ДополнительныеПараметры); ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("ПомещениеФайлаПриОкончании", ЭтотОбъект, ДополнительныеПараметры);
НачатьПомещениеФайла(ОбработчикОповещенияОЗакрытии, Адрес, ВыбранныйФайл, Истина, УникальныйИдентификатор); НачатьПомещениеФайла(ОбработчикОповещенияОЗакрытии, Адрес, ВыбранныйФайл, Истина, УникальныйИдентификатор);
#КонецЕсли КонецЕсли
КонецПроцедуры КонецПроцедуры
@@ -1332,25 +1365,25 @@
КонецФункции КонецФункции
&НаКлиентеНаСервереБезКонтекста &НаКлиенте
Процедура ПоместитьНовыеФайлыВоВременноеХранилище(Вложения, УникальныйИдентификатор, Отказ) Процедура ПоместитьФайлыИзЛокальнойФСВоВременноеХранилище(Вложения, УникальныйИдентификатор, Отказ)
Перем Данные, ЗагружаемыйФайл, СтрокаТаблицыВложений;
Для Каждого СтрокаТаблицыВложений Из Вложения Цикл Для Каждого СтрокаТаблицыВложений Из Вложения Цикл
Если СтрокаТаблицыВложений.Статус = "ВнешнийНовый" Тогда Если СтрокаТаблицыВложений.Статус = "ВнешнийНовый" Тогда
Попытка Попытка
ЗагружаемыйФайл = Новый Файл(СтрокаТаблицыВложений.Имя);
Если ЗагружаемыйФайл.Существует() Тогда ЗагружаемыйФайл = Новый Файл(СтрокаТаблицыВложений.Имя);
Данные = Новый ДвоичныеДанные(СтрокаТаблицыВложений.Имя); Если НЕ СтрНачинаетсяС(СтрокаТаблицыВложений.Имя, "e1cib") Тогда
Данные = Новый ДвоичныеДанные(СтрокаТаблицыВложений.Имя);
СтрокаТаблицыВложений.Имя = ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор); СтрокаТаблицыВложений.Имя = ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор);
КонецЕсли; КонецЕсли;
Исключение Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),,"Вложения",, Отказ); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),, "Вложения",, Отказ);
КонецПопытки; КонецПопытки;
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -1401,8 +1434,9 @@
Процедура СкопироватьВложениеЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт Процедура СкопироватьВложениеЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
Записать(); Если Записать() Тогда
СкопироватьФайлВложения(ДополнительныеПараметры.ТекущийИндексВКоллекции); СкопироватьФайлВложения(ДополнительныеПараметры.ТекущийИндексВКоллекции);
КонецЕсли;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -1652,6 +1686,21 @@
КонецФункции КонецФункции
&НаСервере
Процедура ЗаполнитьПроизвольныеПараметрыИзОбъекта(Знач ТекущийОбъект)
Перем НайденныеСтроки, Отбор, ПараметрШаблонаТекущийОбъект;
Для каждого ПараметрШаблонаТекущийОбъект Из ТекущийОбъект.Параметры Цикл
Отбор = Новый Структура("ИмяПараметра", ПараметрШаблонаТекущийОбъект.ИмяПараметра);
НайденныеСтроки = Объект.Параметры.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
НайденныеСтроки[0].ОписаниеТипа = ПараметрШаблонаТекущийОбъект.ТипПараметра.Получить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Внешняя обработка // Внешняя обработка
&НаСервере &НаСервере
@@ -11,7 +11,7 @@
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
ЗаполнитьНаОснованииСтруктуры(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка); ЗаполнитьНаОснованииСтруктуры(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -29,12 +29,18 @@
ЭтотОбъект.ПредназначенДляЭлектронныхПисем = Истина; ЭтотОбъект.ПредназначенДляЭлектронныхПисем = Истина;
ЭтотОбъект.ПредназначенДляSMS = Ложь; ЭтотОбъект.ПредназначенДляSMS = Ложь;
ЭтотОбъект.ПолноеИмяТипаПараметраВводаНаОсновании = НСтр("ru='Общий'"); ЭтотОбъект.ПолноеИмяТипаПараметраВводаНаОсновании = НСтр("ru='Общий'");
ЭтотОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда
МодульРаботаСПочтовымиСообщениямиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениямиСлужебный");
ТипыТекстовЭлектронныхПисемHTML = МодульРаботаСПочтовымиСообщениямиСлужебный.ТипТекстовЭлектронныхПисем("HTML");
ТипыТекстовЭлектронныхПисемHTMLСКартинками = МодульРаботаСПочтовымиСообщениямиСлужебный.ТипТекстовЭлектронныхПисем("HTMLСКартинками");
Если ДанныеЗаполнения.ТипТекста = ТипыТекстовЭлектронныхПисемHTML
ИЛИ ДанныеЗаполнения.ТипТекста = ТипыТекстовЭлектронныхПисемHTMLСКартинками Тогда
ЭтотОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML;
КонецЕсли;
Если ДанныеЗаполнения.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.HTML
ИЛИ ДанныеЗаполнения.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.HTMLСКартинками Тогда
ЭтотОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML;
Иначе
ЭтотОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -70,10 +76,10 @@
ЭтотОбъект.ТемаПисьма = ПараметрыШаблона.Тема; ЭтотОбъект.ТемаПисьма = ПараметрыШаблона.Тема;
Если ПараметрыШаблона.ФорматПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда Если ПараметрыШаблона.ФорматПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда
ЭтотОбъект.ТекстШаблонаПисьмаHTML = ПараметрыШаблона.Текст; ЭтотОбъект.ТекстШаблонаПисьмаHTML = СтрЗаменить(ПараметрыШаблона.Текст, Символы.ПС, "<BR>");
ЭтотОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML; ЭтотОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML;
Иначе Иначе
ЭтотОбъект.ТекстШаблонаПисьма = ПараметрыШаблона.Текст; ЭтотОбъект.ТекстШаблонаПисьма = СтрЗаменить(ПараметрыШаблона.Текст, "<BR>", Символы.ПС);
ЭтотОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст; ЭтотОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст;
КонецЕсли; КонецЕсли;
@@ -152,7 +152,7 @@
<value>Владелец шаблона</value> <value>Владелец шаблона</value>
</synonym> </synonym>
<type> <type>
<types>AnyRef</types> <types>DefinedType.ВладелецШаблонаСообщения</types>
</type> </type>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
@@ -403,6 +403,7 @@
<value>Редактирует</value> <value>Редактирует</value>
</synonym> </synonym>
<type> <type>
<types>CatalogRef.УчетныеЗаписиСинхронизацииФайлов</types>
<types>CatalogRef.Пользователи</types> <types>CatalogRef.Пользователи</types>
</type> </type>
<toolTip> <toolTip>
@@ -411,7 +412,6 @@
</toolTip> </toolTip>
<minValue xsi:type="core:UndefinedValue"/> <minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/>
<quickChoice>DontUse</quickChoice>
<createOnInput>Use</createOnInput> <createOnInput>Use</createOnInput>
<fillValue xsi:type="core:ReferenceValue"> <fillValue xsi:type="core:ReferenceValue">
<value>Catalog.Пользователи.EmptyRef</value> <value>Catalog.Пользователи.EmptyRef</value>
@@ -522,7 +522,7 @@
<name>ИДФайлаЭлектронногоПисьма</name> <name>ИДФайлаЭлектронногоПисьма</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>ИДФайла электронного письма</value> <value>Идентификатор файла электронного письма</value>
</synonym> </synonym>
<type> <type>
<types>String</types> <types>String</types>
@@ -521,7 +521,7 @@
<name>ИДФайлаЭлектронногоПисьма</name> <name>ИДФайлаЭлектронногоПисьма</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>ИДФайла электронного письма</value> <value>Идентификатор файла электронного письма</value>
</synonym> </synonym>
<type> <type>
<types>String</types> <types>String</types>
@@ -531,6 +531,81 @@
<scrollOnCompress>false</scrollOnCompress> <scrollOnCompress>false</scrollOnCompress>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormGroup">
<name>ГруппаВидОтображенияБулевоОтображать</name>
<id>162</id>
<items xsi:type="form:FormField">
<name>ВидОтображенияБулево</name>
<id>164</id>
<title>
<key>ru</key>
<value>Вид</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ВидФлажка</segments>
</dataPath>
<extendedTooltip>
<name>ВидОтображенияБулевоРасширеннаяПодсказка</name>
<id>166</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВидОтображенияБулевоКонтекстноеМеню</name>
<id>165</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">
<width>12</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<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>163</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>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -23,6 +23,7 @@
Если Объект.Ссылка.Пустая() Тогда Если Объект.Ссылка.Пустая() Тогда
Объект.ВидПереключателя = Перечисления.ВидыПереключателяВАнкетах.Переключатель; Объект.ВидПереключателя = Перечисления.ВидыПереключателяВАнкетах.Переключатель;
Объект.ВидФлажка = Перечисления.ВидыФлажкаВАнкетах.ПолеВвода;
КонецЕсли; КонецЕсли;
// СтандартныеПодсистемы.ПодключаемыеКоманды // СтандартныеПодсистемы.ПодключаемыеКоманды
@@ -291,6 +292,10 @@
Элементы.ГруппаВидПереключателя.ТекущаяСтраница = Элементы.ГруппаВидПереключателяОтображать; Элементы.ГруппаВидПереключателя.ТекущаяСтраница = Элементы.ГруппаВидПереключателяОтображать;
ИначеЕсли Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.Булево") Тогда
Элементы.ГруппаВидПереключателя.ТекущаяСтраница = Элементы.ГруппаВидОтображенияБулевоОтображать;
Иначе Иначе
Элементы.ГруппаВидПереключателя.ТекущаяСтраница = Элементы.ГруппаВидПереключателяНеОтображать; Элементы.ГруппаВидПереключателя.ТекущаяСтраница = Элементы.ГруппаВидПереключателяНеОтображать;
@@ -41,9 +41,8 @@
|ИЗ |ИЗ
| ПланВидовХарактеристик.ВопросыДляАнкетирования КАК ВопросыДляАнкетирования | ПланВидовХарактеристик.ВопросыДляАнкетирования КАК ВопросыДляАнкетирования
|ГДЕ |ГДЕ
| ВопросыДляАнкетирования.ВидПереключателя = &ПустаяСсылка"; | (ВопросыДляАнкетирования.ВидПереключателя = ЗНАЧЕНИЕ(Перечисление.ВидыПереключателяВАнкетах.ПустаяСсылка)
Запрос.Параметры.Вставить("ПустаяСсылка", Перечисления.ВидыПереключателяВАнкетах.ПустаяСсылка()); | ИЛИ ВопросыДляАнкетирования.ВидФлажка = ЗНАЧЕНИЕ(Перечисление.ВидыФлажкаВАнкетах.ПустаяСсылка))";
Результат = Запрос.Выполнить().Выгрузить(); Результат = Запрос.Выполнить().Выгрузить();
МассивСсылок = Результат.ВыгрузитьКолонку("Ссылка"); МассивСсылок = Результат.ВыгрузитьКолонку("Ссылка");
@@ -57,20 +56,14 @@
Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "ПланВидовХарактеристик.ВопросыДляАнкетирования"); Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "ПланВидовХарактеристик.ВопросыДляАнкетирования");
ПроблемныхОбъектов = 0;
ОбъектовОбработано = 0;
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
Попытка Попытка
ЗаполнитьРеквизитВидПереключателя(Выборка); ЗаполнитьНовыеРеквизиты(Выборка.Ссылка);
ОбъектовОбработано = ОбъектовОбработано + 1;
Исключение Исключение
// Если не удалось обработать объект, повторяем попытку снова. // Если не удалось обработать объект, повторяем попытку снова.
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать вопрос для анкетирования: %1 по причине: НСтр("ru = 'Не удалось обработать вопрос для анкетирования: %1 по причине:
|%2'"), |%2'"),
@@ -82,17 +75,6 @@
КонецЦикла; КонецЦикла;
Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "ПланВидовХарактеристик.ВопросыДляАнкетирования"); Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "ПланВидовХарактеристик.ВопросыДляАнкетирования");
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре ЗаполнитьРеквизитВидПереключателя не удалось обработать некоторые вопросы для анкетирования (пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Метаданные.ПланыВидовХарактеристик.ВопросыДляАнкетирования,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ЗаполнитьРеквизитВидПереключателя обработала очередную порцию вопросов для анкетирования : %1'"),
ОбъектовОбработано));
КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -100,9 +82,9 @@
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
// Заполняет значение нового реквизита ВидПереключателя у переданного объекта. // Заполняет значения новых реквизитов ВидПереключателя и ВидФлажка у переданного объекта.
// //
Процедура ЗаполнитьРеквизитВидПереключателя(Выборка) Процедура ЗаполнитьНовыеРеквизиты(ВопросДляАнкетирования)
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
@@ -110,23 +92,29 @@
// Блокируем объект от изменения другими сеансами. // Блокируем объект от изменения другими сеансами.
Блокировка = Новый БлокировкаДанных; Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("ПланВидовХарактеристик.ВопросыДляАнкетирования"); ЭлементБлокировки = Блокировка.Добавить("ПланВидовХарактеристик.ВопросыДляАнкетирования");
ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка); ЭлементБлокировки.УстановитьЗначение("Ссылка", ВопросДляАнкетирования);
Блокировка.Заблокировать(); Блокировка.Заблокировать();
Объект = Выборка.Ссылка.ПолучитьОбъект(); Объект = ВопросДляАнкетирования.ПолучитьОбъект();
// Если объект ранее был удален или обработан другими сеансами, пропускаем его. // Если объект ранее был удален или обработан другими сеансами, пропускаем его.
Если Объект = Неопределено Тогда Если Объект = Неопределено Тогда
ОтменитьТранзакцию(); ОтменитьТранзакцию();
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Если Объект.ВидПереключателя <> Перечисления.ВидыПереключателяВАнкетах.ПустаяСсылка() Тогда Если Объект.ВидПереключателя <> Перечисления.ВидыПереключателяВАнкетах.ПустаяСсылка() И Объект.ВидФлажка <> Перечисления.ВидыФлажкаВАнкетах.ПустаяСсылка() Тогда
ОтменитьТранзакцию(); ОтменитьТранзакцию();
Возврат; Возврат;
КонецЕсли; КонецЕсли;
// Обработка объекта. // Обработка объекта.
Объект.ВидПереключателя = Перечисления.ВидыПереключателяВАнкетах.Переключатель; Если Объект.ВидПереключателя = Перечисления.ВидыПереключателяВАнкетах.ПустаяСсылка() Тогда
Объект.ВидПереключателя = Перечисления.ВидыПереключателяВАнкетах.Переключатель;
КонецЕсли;
Если Объект.ВидФлажка = Перечисления.ВидыФлажкаВАнкетах.ПустаяСсылка() Тогда
Объект.ВидФлажка = Перечисления.ВидыФлажкаВАнкетах.Флажок;
КонецЕсли;
// Запись обработанного объекта. // Запись обработанного объекта.
ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект);
@@ -397,6 +397,27 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="a0be938b-139e-41bd-b067-f5241ff68c90">
<name>ВидФлажка</name>
<synonym>
<key>ru</key>
<value>Вид флажка</value>
</synonym>
<type>
<types>EnumRef.ВидыФлажкаВАнкетах</types>
</type>
<toolTip>
<key>ru</key>
<value>Внешний вид флажка для выбора одного из двух значений - Да или Нет</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:ReferenceValue">
<value>Enum.ВидыПереключателяВАнкетах.EnumValue.Переключатель</value>
</fillValue>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<forms uuid="a0b74de9-06b5-416c-9dd0-2f9dc209fe91"> <forms uuid="a0b74de9-06b5-416c-9dd0-2f9dc209fe91">
<name>ФормаЭлемента</name> <name>ФормаЭлемента</name>
<synonym> <synonym>
@@ -627,44 +627,44 @@
<main>true</main> <main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo"> <extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ <queryText>ВЫБРАТЬ
Свойства.Ссылка, СвойстваПереопределяемый.Ссылка,
Свойства.ВерсияДанных, СвойстваПереопределяемый.ВерсияДанных,
Свойства.ПометкаУдаления, СвойстваПереопределяемый.ПометкаУдаления,
Свойства.Предопределенный, СвойстваПереопределяемый.Предопределенный,
Свойства.Заголовок, СвойстваПереопределяемый.Заголовок,
ВЫБОР ВЫБОР
КОГДА Свойства.НаборСвойств = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка) КОГДА СвойстваПереопределяемый.НаборСвойств = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)
ТОГДА &amp;ПредставлениеГруппировкиОбщихСвойств ТОГДА &amp;ПредставлениеГруппировкиОбщихСвойств
КОГДА Свойства.НаборСвойств.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка) КОГДА СвойстваПереопределяемый.НаборСвойств.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)
ТОГДА Свойства.НаборСвойств ТОГДА СвойстваПереопределяемый.НаборСвойств
ИНАЧЕ Свойства.НаборСвойств.Родитель.Наименование + &quot; (&quot; + Свойства.НаборСвойств.Наименование + &quot;)&quot; ИНАЧЕ СвойстваПереопределяемый.НаборСвойств.Родитель.Наименование + &quot; (&quot; + СвойстваПереопределяемый.НаборСвойств.Наименование + &quot;)&quot;
КОНЕЦ КАК НаборСвойствГруппировка, КОНЕЦ КАК НаборСвойствГруппировка,
Свойства.НаборСвойств, СвойстваПереопределяемый.НаборСвойств,
Свойства.ДополнительныеЗначенияИспользуются, СвойстваПереопределяемый.ДополнительныеЗначенияИспользуются,
Свойства.ВладелецДополнительныхЗначений, СвойстваПереопределяемый.ВладелецДополнительныхЗначений,
Свойства.Наименование, СвойстваПереопределяемый.Наименование,
Свойства.ТипЗначения, СвойстваПереопределяемый.ТипЗначения,
Свойства.ЭтоДополнительноеСведение, СвойстваПереопределяемый.ЭтоДополнительноеСведение,
Свойства.МногострочноеПолеВвода, СвойстваПереопределяемый.МногострочноеПолеВвода,
Свойства.ЗаполнятьОбязательно, СвойстваПереопределяемый.ЗаполнятьОбязательно,
Свойства.ЗаголовокФормыЗначения, СвойстваПереопределяемый.ЗаголовокФормыЗначения,
Свойства.ЗаголовокФормыВыбораЗначения, СвойстваПереопределяемый.ЗаголовокФормыВыбораЗначения,
Свойства.ФорматСвойства, СвойстваПереопределяемый.ФорматСвойства,
Свойства.Комментарий, СвойстваПереопределяемый.Комментарий,
Свойства.Подсказка, СвойстваПереопределяемый.Подсказка,
ВЫБОР ВЫБОР
КОГДА Свойства.ЭтоДополнительноеСведение КОГДА СвойстваПереопределяемый.ЭтоДополнительноеСведение
ТОГДА 2 ТОГДА 2
ИНАЧЕ 1 ИНАЧЕ 1
КОНЕЦ + ВЫБОР КОНЕЦ + ВЫБОР
КОГДА Свойства.Предопределенный КОГДА СвойстваПереопределяемый.Предопределенный
ТОГДА 6 ТОГДА 6
КОГДА Свойства.ПометкаУдаления КОГДА СвойстваПереопределяемый.ПометкаУдаления
ТОГДА 3 ТОГДА 3
ИНАЧЕ 0 ИНАЧЕ 0
КОНЕЦ КАК НомерКартинки КОНЕЦ КАК НомерКартинки
ИЗ ИЗ
ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства</queryText> ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК СвойстваПереопределяемый</queryText>
<mainTable>ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения</mainTable> <mainTable>ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения</mainTable>
<dynamicDataRead>true</dynamicDataRead> <dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields> <autoFillAvailableFields>true</autoFillAvailableFields>
@@ -726,6 +726,23 @@
<itemValueType/> <itemValueType/>
</extInfo> </extInfo>
</attributes> </attributes>
<attributes>
<name>НаборСвойствОтбор</name>
<title>
<key>ru</key>
<value>Набор свойств отбор</value>
</title>
<id>5</id>
<valueType>
<types>CatalogRef.НаборыДополнительныхРеквизитовИСведений</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<parameters> <parameters>
<name>ВыборВладельцаДополнительныхЗначений</name> <name>ВыборВладельцаДополнительныхЗначений</name>
<valueType> <valueType>
@@ -81,6 +81,8 @@
ЭлементГруппировкиДанных = ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ЭлементГруппировкиДанных = ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ЭлементГруппировкиДанных.Поле = Новый ПолеКомпоновкиДанных("НаборСвойствГруппировка"); ЭлементГруппировкиДанных.Поле = Новый ПолеКомпоновкиДанных("НаборСвойствГруппировка");
ЭлементГруппировкиДанных.Использование = Истина; ЭлементГруппировкиДанных.Использование = Истина;
Параметры.Отбор.Свойство("НаборСвойств", НаборСвойствОтбор);
КонецПроцедуры КонецПроцедуры
&НаСервере &НаСервере
@@ -90,8 +92,13 @@
УсловиеЗапроса = УсловиеЗапроса =
" "
|ГДЕ |ГДЕ
| Свойства.НаборСвойств В (&Наборы)"; | СвойстваПереопределяемый.НаборСвойств В (&Наборы)";
Список.ТекстЗапроса = Список.ТекстЗапроса + УсловиеЗапроса;
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = Список.ТекстЗапроса + УсловиеЗапроса;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список,
СвойстваСписка);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
Список, "Наборы", Параметры.ОтображаемыеНаборыСвойств, Истина); Список, "Наборы", Параметры.ОтображаемыеНаборыСвойств, Истина);
КонецЕсли; КонецЕсли;
@@ -127,6 +134,19 @@
ПараметрыФормы = Новый Структура; ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЭтоДополнительноеСведение", ЭтоДополнительноеСведение); ПараметрыФормы.Вставить("ЭтоДополнительноеСведение", ЭтоДополнительноеСведение);
Если Элемент.ТекущиеДанные = Неопределено Тогда
НаборСвойств = НаборСвойствОтбор;
ИначеЕсли Элемент.ТекущиеДанные.Свойство("ГруппировкаСтроки") Тогда
НаборСвойств = Элемент.ТекущиеДанные.ГруппировкаСтроки.Ключ;
ИначеЕсли Элемент.ТекущиеДанные.Свойство("РодительскаяГруппировкаСтроки") Тогда
НаборСвойств = Элемент.ТекущиеДанные.РодительскаяГруппировкаСтроки.Ключ;
Иначе
НаборСвойств = НаборСвойствОтбор;
КонецЕсли;
ПараметрыФормы.Вставить("НаборСвойств", НаборСвойств);
ПараметрыФормы.Вставить("ТекущийНаборСвойств", НаборСвойств);
Если Копирование Тогда Если Копирование Тогда
ПараметрыФормы.Вставить("ЗначениеКопирования", Элемент.ТекущаяСтрока); ПараметрыФормы.Вставить("ЗначениеКопирования", Элемент.ТекущаяСтрока);
Иначе Иначе
@@ -135,6 +155,7 @@
КонецЕсли; КонецЕсли;
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", ПараметрыФормы); ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", ПараметрыФормы);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры КонецПроцедуры
@@ -96,7 +96,8 @@
<ul><li>Например, дату основания фирмы иногда невозможно указать точно. В этом случае можно предоставить возможность выбора типа данных (<strong>Дата</strong> или <strong>Строка</strong>) во время ввода. Если точная дата известна, то можно будет выбрать тип <strong>Дата</strong> и ввести, если неизвестна, то можно будет ввести дату в виде строки типа "Начало 19 в.". <ul><li>Например, дату основания фирмы иногда невозможно указать точно. В этом случае можно предоставить возможность выбора типа данных (<strong>Дата</strong> или <strong>Строка</strong>) во время ввода. Если точная дата известна, то можно будет выбрать тип <strong>Дата</strong> и ввести, если неизвестна, то можно будет ввести дату в виде строки типа "Начало 19 в.".
</li><li>При этом для всех частей составного типа данных можно произвести их обычные настройки, например, настроить формат даты и определить параметры строки. </li><li>При этом для всех частей составного типа данных можно произвести их обычные настройки, например, настроить формат даты и определить параметры строки.
</li><li>При вводе значений дополнительных реквизитов (сведений) составного типа данных сначала предлагается выбрать тип данных.</li></ul></li><li><strong>Булево</strong> - обычно это значения типа <strong>Истина</strong> и <strong>Ложь</strong>, <strong>Да</strong> или <strong>Нет</strong>. </li><li>При вводе значений дополнительных реквизитов (сведений) составного типа данных сначала предлагается выбрать тип данных.</li></ul></li><li><strong>Булево</strong> - обычно это значения типа <strong>Истина</strong> и <strong>Ложь</strong>, <strong>Да</strong> или <strong>Нет</strong>.
<ul><li>Для дополнительных реквизитов в <strong>Конструкторе форматной строки</strong> можно установить другой формат этих значений. Можно написать <strong>Представления значения булево Ложь</strong> и <strong>булево Истина</strong>. В этом случае при вводе вместо обычного <strong>Да</strong> или <strong>Нет</strong> для выбора будут предложены значения, введенные при настройке дополнительного реквизита. </li></ul></li><li><strong>Дополнительное значение</strong> - этот тип данных часто используется, при этом ввод информации сводится к выбору значений из списка. Предлагается программой по умолчанию. Применяется как обычный список значений, так и сгруппированный. С помощью дополнительных реквизитов (сведений) типа <strong>Дополнительное значение</strong> можно описывать различные свойства объектов программы. <ul><li>Для дополнительных реквизитов в <strong>Конструкторе форматной строки</strong> можно установить другой формат этих значений. Можно написать <strong>Представления значения булево Ложь</strong> и <strong>булево Истина</strong>. В этом случае при вводе вместо обычного <strong>Да</strong> или <strong>Нет</strong> для выбора будут предложены значения, введенные при настройке дополнительного реквизита.
<ul><li><strong>Внимание!</strong> В списках и отчетах отбор для таких дополнительных реквизитов с условием <strong>Равно</strong> и <strong>Не равно</strong> не поддерживается.</li></ul></li></ul></li><li><strong>Дополнительное значение</strong> - этот тип данных часто используется, при этом ввод информации сводится к выбору значений из списка. Предлагается программой по умолчанию. Применяется как обычный список значений, так и сгруппированный. С помощью дополнительных реквизитов (сведений) типа <strong>Дополнительное значение</strong> можно описывать различные свойства объектов программы.
</li><li><strong>Дополнительное значение (иерархия)</strong> - такая структура списков также широко используется, ее называют иерархией элементов. Элементы в таком списке имеют одинаковые свойства, но могут иметь подчиненные элементы. При этом иерархия может быть довольно сложной. </li><li><strong>Дополнительное значение (иерархия)</strong> - такая структура списков также широко используется, ее называют иерархией элементов. Элементы в таком списке имеют одинаковые свойства, но могут иметь подчиненные элементы. При этом иерархия может быть довольно сложной.
</li><li><strong>Пользователь</strong> - в программе предусмотрена возможность использования значений списка <strong>Пользователи</strong> (и других списков) в качестве дополнительного реквизита (сведения).</li></ul><h3>Особенности ввода дополнительных сведений типа Дополнительное значение или Дополнительное значение (иерархия)</h3> </li><li><strong>Пользователь</strong> - в программе предусмотрена возможность использования значений списка <strong>Пользователи</strong> (и других списков) в качестве дополнительного реквизита (сведения).</li></ul><h3>Особенности ввода дополнительных сведений типа Дополнительное значение или Дополнительное значение (иерархия)</h3>
<ul><li>Кроме обычных полей доступны: <ul><li>Кроме обычных полей доступны:
@@ -1425,6 +1425,9 @@
Объект.ЗаполнятьОбязательно = Ложь; Объект.ЗаполнятьОбязательно = Ложь;
Элементы.ГруппаСвойстваИЗависимости.Видимость = Ложь; Элементы.ГруппаСвойстваИЗависимости.Видимость = Ложь;
Иначе Иначе
РеквизитБулево = (Объект.ТипЗначения = Новый ОписаниеТипов("Булево"));
Элементы.ЗаполнятьОбязательно.Видимость = Не РеквизитБулево;
Элементы.ЗадатьУсловиеЗаполнения.Видимость = Не РеквизитБулево;
Элементы.ГруппаСвойстваИЗависимости.Видимость = Истина; Элементы.ГруппаСвойстваИЗависимости.Видимость = Истина;
Если МожноНастраиватьВидимостьДоступность Тогда Если МожноНастраиватьВидимостьДоступность Тогда
@@ -1581,9 +1584,15 @@
Значения, "Владелец", ВладелецЗначений, , , Истина); Значения, "Владелец", ВладелецЗначений, , , Истина);
Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда
Значения.ОсновнаяТаблица = "Справочник.ЗначенияСвойствОбъектов"; СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ОсновнаяТаблица = "Справочник.ЗначенияСвойствОбъектов";
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Значения,
СвойстваСписка);
Иначе Иначе
Значения.ОсновнаяТаблица = "Справочник.ЗначенияСвойствОбъектовИерархия"; СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ОсновнаяТаблица = "Справочник.ЗначенияСвойствОбъектовИерархия";
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Значения,
СвойстваСписка);
КонецЕсли; КонецЕсли;
// Отображение уточнений. // Отображение уточнений.
@@ -1669,7 +1678,7 @@
КонецЕсли; КонецЕсли;
СтрокаНаборы = ПользователиСлужебныйКлиентСервер.ПредметЦелогоЧисла(СписокНаборов.Количество(), СтрокаНаборы = ПользователиСлужебныйКлиентСервер.ПредметЦелогоЧисла(СписокНаборов.Количество(),
"Л = ru_RU", НСтр("ru = 'набор,набора,наборов,,,,,,0'")); "", НСтр("ru = 'набор,набора,наборов,,,,,,0'"));
ТекстКомментария = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонУточнения, Формат(СписокНаборов.Количество(), "ЧГ="), СтрокаНаборы); ТекстКомментария = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонУточнения, Формат(СписокНаборов.Количество(), "ЧГ="), СтрокаНаборы);
Иначе Иначе
@@ -15,7 +15,9 @@
<minValue xsi:type="core:UndefinedValue"/> <minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/> <fillValue xsi:type="core:NumberValue">
<value>0</value>
</fillValue>
<content> <content>
<metadata>Constant.МаксимальнаяДлительностьВыполненияИсполняющегоФоновогоЗадания</metadata> <metadata>Constant.МаксимальнаяДлительностьВыполненияИсполняющегоФоновогоЗадания</metadata>
<use>DontUse</use> <use>DontUse</use>
@@ -197,7 +199,7 @@
<use>DontUse</use> <use>DontUse</use>
</content> </content>
<content> <content>
<metadata>Constant.ЛогинДоступаКСервисуMorpher</metadata> <metadata>Constant.УдалитьЛогинДоступаКСервисуMorpher</metadata>
<use>DontUse</use> <use>DontUse</use>
</content> </content>
<content> <content>
@@ -348,10 +350,6 @@
<metadata>ScheduledJob.ОбновлениеАгрегатов</metadata> <metadata>ScheduledJob.ОбновлениеАгрегатов</metadata>
<use>DontUse</use> <use>DontUse</use>
</content> </content>
<content>
<metadata>DocumentJournal.Взаимодействия</metadata>
<use>DontUse</use>
</content>
<content> <content>
<metadata>ScheduledJob.ОбновлениеВнешнихКомпонентССайта</metadata> <metadata>ScheduledJob.ОбновлениеВнешнихКомпонентССайта</metadata>
<use>DontUse</use> <use>DontUse</use>
@@ -692,6 +690,10 @@
<metadata>Constant.ДетализироватьОбновлениеИБВЖурналеРегистрации</metadata> <metadata>Constant.ДетализироватьОбновлениеИБВЖурналеРегистрации</metadata>
<use>DontUse</use> <use>DontUse</use>
</content> </content>
<content>
<metadata>ScheduledJob.СборИОтправкаОтчетовОбОшибках</metadata>
<use>DontUse</use>
</content>
<content> <content>
<metadata>Constant.ИспользоватьСинхронизациюДанных</metadata> <metadata>Constant.ИспользоватьСинхронизациюДанных</metadata>
<use>DontUse</use> <use>DontUse</use>
@@ -4,8 +4,7 @@
&НаКлиенте &НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
СтруктураПользователя = ОткрытьФорму("ОбщаяФорма.ПользователиСервиса", , ОткрытьФорму("ОбщаяФорма.ПользователиСервиса",, ПараметрыВыполненияКоманды.Источник);
ПараметрыВыполненияКоманды.Источник);
КонецПроцедуры КонецПроцедуры
@@ -2,10 +2,14 @@
&НаКлиенте &НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормы = Новый Структура("ВидСообщения, Предмет");
ПараметрыФормы.ВидСообщения = "СообщениеSMS"; ДополнительныеПараметры = Новый Структура("ИмяФормыИсточникаСообщения", "");
ПараметрыФормы.Предмет = ПараметрКоманды; Если ТипЗнч(ПараметрыВыполненияКоманды.Источник) = Тип("УправляемаяФорма") Тогда
ОткрытьФорму("Справочник.ШаблоныСообщений.Форма.СформироватьСообщение", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка); ДополнительныеПараметры.ИмяФормыИсточникаСообщения = ПараметрыВыполненияКоманды.Источник.ИмяФормы;
КонецЕсли;
ШаблоныСообщенийКлиент.СформироватьСообщение(ПараметрКоманды, "СообщениеSMS",,, ДополнительныеПараметры);
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
@@ -2,10 +2,13 @@
&НаКлиенте &НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормы = Новый Структура("ВидСообщения, Предмет");
ПараметрыФормы.ВидСообщения = "Письмо"; ДополнительныеПараметры = Новый Структура("ИмяФормыИсточникаСообщения", "");
ПараметрыФормы.Предмет = ПараметрКоманды; Если ТипЗнч(ПараметрыВыполненияКоманды.Источник) = Тип("УправляемаяФорма") Тогда
ОткрытьФорму("Справочник.ШаблоныСообщений.Форма.СформироватьСообщение", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка); ДополнительныеПараметры.ИмяФормыИсточникаСообщения = ПараметрыВыполненияКоманды.Источник.ИмяФормы;
КонецЕсли;
ШаблоныСообщенийКлиент.СформироватьСообщение(ПараметрКоманды, "Письмо",,, ДополнительныеПараметры);
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
@@ -9,6 +9,6 @@
<representation>Auto</representation> <representation>Auto</representation>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Открыть отчет &quot;Связанные документы&quot;, который отображает связи текущего объекта с другими объектами информационной базы.</value> <value>Перейти к иерархическому списку связанных документов</value>
</toolTip> </toolTip>
</mdclass:CommonCommand> </mdclass:CommonCommand>
Loaded 100 of 634 files, more files were not shown because too many files have changed in this diff. Show more