2_4_4_151

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

No files matched your search

@@ -660,6 +660,18 @@
<edit>
<common>true</common>
</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>
<extInfo xsi:type="form:DynamicListExtInfo">
<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;
ПрефиксЗаписи = Символы.ПС + " ";
СообщенияОбОшибках.Подробно = "";
Для Каждого СтрокаТаблицы Из ОтфильтрованныеВарианты Цикл
Если ТекущаяПричина <> СтрокаТаблицы.Причина Тогда
@@ -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'");
КонецЕсли;
ПараметрыПредупреждения = Новый Структура;
ПараметрыПредупреждения.Вставить("Текст", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Шаблон, РезультатВыполнения.Размещено, ПараметрыРазмещения.Варианты.Всего));
ПараметрыПредупреждения.Вставить("Подробно", ТекстОшибок);
СтандартныеПодсистемыКлиент.ВывестиПредупреждение(ЭтотОбъект, ПараметрыПредупреждения);
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, РезультатВыполнения.Размещено,
ПараметрыРазмещения.Варианты.Всего, ТекстОшибок), РежимДиалогаВопрос.ОК);
КонецЕсли;
КонецПроцедуры
@@ -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>
@@ -40,21 +40,3 @@
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("ПредставлениеСсылки");
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Представление = Данные.ПредставлениеСсылки;
КонецПроцедуры
#КонецОбласти
@@ -144,7 +144,6 @@
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
<defaultObjectForm>Catalog.ВидыПроверок.Form.ФормаЭлемента</defaultObjectForm>
<defaultListForm>Catalog.ВидыПроверок.Form.ФормаСписка</defaultListForm>
<attributes uuid="6423b849-7ca4-4501-8856-445157d7e5df">
<name>Свойство1</name>
<synonym>
@@ -300,26 +299,6 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</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">
<producedTypes>
<objectType typeId="0ce834b5-eb99-4dcb-bd5e-dfaa949cbd7f" valueTypeId="cc76a7e0-b1eb-46f9-b863-73611337868c"/>
@@ -399,13 +378,4 @@
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</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>
@@ -279,8 +279,6 @@
ВызватьИсключение НСтр("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 = 'Следующие пользователи не были включены в выбранную группу:'");
Подробно = Подробно + Символы.ПС + СообщениеПользователю.Пользователи;
ПараметрыПредупреждения.Вставить("Подробно", Подробно);
КонецЕсли;
СтандартныеПодсистемыКлиент.ВывестиПредупреждение(ЭтотОбъект, ПараметрыПредупреждения);
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1
|Следующие пользователи не были включены в выбранную группу:
|%2'"), СообщениеПользователю.Сообщение, СообщениеПользователю.Пользователи), РежимДиалогаВопрос.ОК);
КонецЕсли;
КонецПроцедуры
@@ -459,7 +459,7 @@
ДействияВФорме.СоставГруппы = "Редактирование";
ДействияВФорме.СвойстваЭлемента = "Редактирование";
ИначеЕсли Пользователи.РолиДоступны("ДобавлениеИзменениеВнешнихПользователей") Тогда
ИначеЕсли ПравоДоступа("Редактирование", Метаданные.Справочники.ГруппыВнешнихПользователей) Тогда
// Менеджер внешних пользователей.
ДействияВФорме.Роли = "";
ДействияВФорме.СоставГруппы = "Редактирование";
@@ -246,7 +246,7 @@
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.Наименование</segments>
<segments>Список.Description</segments>
</dataPath>
<defaultItem>true</defaultItem>
<extendedTooltip>
@@ -637,6 +637,10 @@
</rowPictureDataPath>
<autoMaxCardHeight>true</autoMaxCardHeight>
<extInfo xsi:type="form:DynamicListTableExtInfo">
<handlers>
<event>OnGetDataAtServer</event>
<name>СписокПриПолученииДанныхНаСервере</name>
</handlers>
<autoRefreshPeriod>60</autoRefreshPeriod>
<period>
<startDate>0001-01-01T00:00:00</startDate>
@@ -735,13 +739,7 @@
ГруппыДоступа.Предопределенный,
ГруппыДоступа.Родитель,
ГруппыДоступа.ЭтоГруппа,
ВЫБОР
КОГДА ТИПЗНАЧЕНИЯ(ГруппыДоступа.Пользователь) = ТИП(Справочник.Пользователи)
ТОГДА ГруппыДоступа.Наименование + &quot;: &quot; + ВЫРАЗИТЬ(ГруппыДоступа.Пользователь КАК Справочник.Пользователи).Наименование
КОГДА ТИПЗНАЧЕНИЯ(ГруппыДоступа.Пользователь) = ТИП(Справочник.ВнешниеПользователи)
ТОГДА ГруппыДоступа.Наименование + &quot;: &quot; + &amp;ОшибкаОбъектНеНайден
ИНАЧЕ ГруппыДоступа.Наименование
КОНЕЦ КАК Наименование,
ГруппыДоступа.Наименование,
ГруппыДоступа.Профиль,
ГруппыДоступа.Пользователь,
ГруппыДоступа.Комментарий,
@@ -19,11 +19,15 @@
УпрощенныйИнтерфейсНастройкиПравДоступа = УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа();
Если УпрощенныйИнтерфейсНастройкиПравДоступа Тогда
Если Элементы.Найти("ФормаСоздать") <> Неопределено Тогда
Элементы.ФормаСоздать.Видимость = Ложь;
Элементы.ФормаСкопировать.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюСоздать.Видимость = Ложь;
КонецЕсли;
Если Элементы.Найти("ФормаСкопировать") <> Неопределено Тогда
Элементы.ФормаСкопировать.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюСкопировать.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
Список.Параметры.УстановитьЗначениеПараметра("Профиль", Параметры.Профиль);
Если ЗначениеЗаполнено(Параметры.Профиль) Тогда
@@ -33,21 +37,16 @@
Заголовок = НСтр("ru = 'Группы доступа'");
Если Элементы.Найти("ФормаСоздатьГруппу") <> Неопределено Тогда
Элементы.ФормаСоздатьГруппу.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюСоздатьГруппу.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
Если НЕ ПравоДоступа("Чтение", Метаданные.Справочники.ПрофилиГруппДоступа) Тогда
Элементы.Профиль.Видимость = Ложь;
КонецЕсли;
Если ПравоДоступа("Просмотр", Метаданные.Справочники.ВнешниеПользователи) Тогда
Список.ТекстЗапроса = СтрЗаменить(
Список.ТекстЗапроса,
"&ОшибкаОбъектНеНайден",
"ЕстьNULL(ВЫРАЗИТЬ(ГруппыДоступа.Пользователь КАК Справочник.ВнешниеПользователи).Наименование, &ОшибкаОбъектНеНайден)");
КонецЕсли;
СписокНедоступныхГрупп = Новый СписокЗначений;
Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда
@@ -59,10 +58,6 @@
РежимВыбора = Параметры.РежимВыбора;
Список.Параметры.УстановитьЗначениеПараметра(
"ОшибкаОбъектНеНайден",
НСтр("ru = '<Объект не найден>'"));
Если Параметры.РежимВыбора Тогда
РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
@@ -171,6 +166,27 @@
КонецПроцедуры
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Для Каждого Строка Из Строки Цикл
Если ТипЗнч(Строка.Ключ) <> Тип("СправочникСсылка.ГруппыДоступа") Тогда
Продолжить;
КонецЕсли;
Данные = Строка.Значение.Данные;
Если Данные.ЭтоГруппа
Или Не ЗначениеЗаполнено(Данные.Пользователь) Тогда
Продолжить;
КонецЕсли;
Данные.Наименование =
УправлениеДоступомСлужебныйКлиентСервер.ПредставлениеГруппыДоступа(Данные);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СписокПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
@@ -1594,52 +1594,6 @@
<textSize>Normal</textSize>
</extInfo>
</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>
<name>ФормаКоманднаяПанель</name>
<id>-1</id>
@@ -713,7 +713,9 @@
&НаКлиенте
Процедура ВидыДоступаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
Если Не ТолькоПросмотр
И Не Элементы.Доступ.ТолькоПросмотр Тогда
Элементы.ВидыДоступа.ИзменитьСтроку();
КонецЕсли;
@@ -917,7 +919,7 @@
// Продолжение обработчика события ПослеЗаписи.
&НаКлиенте
Процедура ПослеЗаписиЗавершение(ПараметрыЗаписи)
Процедура ПослеЗаписиЗавершение(ПараметрыЗаписи) Экспорт
Если ПараметрыЗаписи.Свойство("ЗаписатьИЗакрыть") Тогда
ПодключитьОбработчикОжидания("ЗакрытьФорму", 0.1, Истина);
@@ -946,8 +948,6 @@
Элементы.Родитель.Видимость = Ложь;
Элементы.Профиль.ТолькоПросмотр = Истина;
Элементы.СвойстваПерсональнойГруппы.Видимость = Ложь;
Элементы.Ответственный.Видимость = Ложь;
Элементы.ОтветственныйЗаПерсональнуюГруппу.Видимость = Ложь;
Элементы.Комментарий.ТолькоПросмотр = Истина;
КонецПроцедуры
@@ -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) <> "?"
@@ -2723,7 +2713,7 @@
Запрос.Текст =
"ВЫБРАТЬ
| Идентификаторы.Ссылка КАК Ссылка,
| Идентификаторы.КлючОбъектаМетаданных
| Идентификаторы.КлючОбъектаМетаданных КАК ХранилищеКлюча
|ИЗ
| Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы";
@@ -2732,7 +2722,10 @@
ИдентификаторыИзКлючей = Новый Соответствие;
Пока Выборка.Следующий() Цикл
КлючОбъектаМетаданных = Выборка.КлючОбъектаМетаданных;
Если ТипЗнч(Выборка.ХранилищеКлюча) <> Тип("ХранилищеЗначения") Тогда
Продолжить;
КонецЕсли;
КлючОбъектаМетаданных = Выборка.ХранилищеКлюча.Получить();
Если КлючОбъектаМетаданных = Неопределено
Или КлючОбъектаМетаданных = Тип("Неопределено") Тогда
@@ -441,6 +441,10 @@
</rowPictureDataPath>
<autoMaxCardHeight>true</autoMaxCardHeight>
<extInfo xsi:type="form:DynamicListTableExtInfo">
<handlers>
<event>OnGetDataAtServer</event>
<name>СписокПриПолученииДанныхНаСервере</name>
</handlers>
<autoRefreshPeriod>60</autoRefreshPeriod>
<period>
<startDate>0001-01-01T00:00:00</startDate>
@@ -486,6 +490,18 @@
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ref</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">
<segments>Список.ДатаНеобходимойЗаполненности</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ссылка</segments>
</notDefaultUseAlwaysAttributes>
@@ -495,30 +511,6 @@
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
КалендарныеГрафики.Календарь КАК ГрафикРаботы,
МАКСИМУМ(КалендарныеГрафики.ДатаГрафика) КАК ДатаЗаполненности
ПОМЕСТИТЬ ВТДатыЗаполненностиГрафиков
ИЗ
РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
СГРУППИРОВАТЬ ПО
КалендарныеГрафики.Календарь
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь КАК ПроизводственныйКалендарь,
МАКСИМУМ(ДанныеПроизводственныхКалендарей.Дата) КАК ДатаЗаполненности
ПОМЕСТИТЬ ВТДатыЗаполненностиКалендарей
ИЗ
РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственныхКалендарей
СГРУППИРОВАТЬ ПО
ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СправочникГрафикиРаботы.Ссылка КАК Ссылка,
СправочникГрафикиРаботы.ВерсияДанных КАК ВерсияДанных,
СправочникГрафикиРаботы.ПометкаУдаления КАК ПометкаУдаления,
@@ -536,43 +528,13 @@
СправочникГрафикиРаботы.УдалитьВидКалендаря КАК УдалитьВидКалендаря,
СправочникГрафикиРаботы.ГоризонтПланирования КАК ГоризонтПланирования,
СправочникГрафикиРаботы.ВладелецГрафика КАК ВладелецГрафика,
ДОБАВИТЬКДАТЕ(&amp;ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования) КАК ДатаНеобходимойЗаполненности,
ДанныеГрафиков.ДатаЗаполненности КАК ДатаЗаполненности,
ДанныеПроизводственныхКалендарей.ДатаЗаполненности КАК ДатаЗаполненностиПроизводственногоКалендаря,
ВЫБОР
КОГДА ДанныеГрафиков.ДатаЗаполненности &lt; ДОБАВИТЬКДАТЕ(&amp;ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ТребуетЗаполнения,
ВЫБОР
КОГДА ДанныеГрафиков.ДатаЗаполненности &lt; ДОБАВИТЬКДАТЕ(&amp;ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования)
ТОГДА ВЫБОР
КОГДА СправочникГрафикиРаботы.ПроизводственныйКалендарь &lt;> ЗНАЧЕНИЕ(Справочник.ПроизводственныеКалендари.ПустаяСсылка)
ТОГДА ВЫБОР
КОГДА ДанныеПроизводственныхКалендарей.ДатаЗаполненности = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ВЫРАЗИТЬ(&amp;КалендарьНеЗаполнен КАК СТРОКА(100))
ИНАЧЕ ВЫБОР
КОГДА ДанныеПроизводственныхКалендарей.ДатаЗаполненности &lt; ДОБАВИТЬКДАТЕ(&amp;ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования)
ТОГДА ВЫРАЗИТЬ(&amp;КалендарьНеЗаполненНаГод КАК СТРОКА(100))
КОНЕЦ
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА СправочникГрафикиРаботы.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ВЫРАЗИТЬ(&amp;ГрафикНеЗаполнен КАК СТРОКА(100))
ИНАЧЕ ВЫБОР
КОГДА СправочникГрафикиРаботы.ДатаОкончания &lt; ДОБАВИТЬКДАТЕ(&amp;ТекущаяДата, МЕСЯЦ, СправочникГрафикиРаботы.ГоризонтПланирования)
ТОГДА ВЫРАЗИТЬ(&amp;ПериодГрафикаОграничен КАК СТРОКА(100))
КОНЕЦ
КОНЕЦ
КОНЕЦ
ИНАЧЕ &quot;&quot;
КОНЕЦ КАК ВозможнаяПричина
ДАТАВРЕМЯ(1, 1, 1) КАК ДатаНеобходимойЗаполненности,
ДАТАВРЕМЯ(1, 1, 1) КАК ДатаЗаполненности,
ДАТАВРЕМЯ(1, 1, 1) КАК ДатаЗаполненностиПроизводственногоКалендаря,
ЛОЖЬ КАК ТребуетЗаполнения,
&quot;&quot; КАК ВозможнаяПричина
ИЗ
Справочник.Календари КАК СправочникГрафикиРаботы
ЛЕВОЕ СОЕДИНЕНИЕ ВТДатыЗаполненностиГрафиков КАК ДанныеГрафиков
ПО СправочникГрафикиРаботы.Ссылка = ДанныеГрафиков.ГрафикРаботы
ЛЕВОЕ СОЕДИНЕНИЕ ВТДатыЗаполненностиКалендарей КАК ДанныеПроизводственныхКалендарей
ПО СправочникГрафикиРаботы.ПроизводственныйКалендарь = ДанныеПроизводственныхКалендарей.ПроизводственныйКалендарь</queryText>
Справочник.Календари КАК СправочникГрафикиРаботы</queryText>
<mainTable>Catalog.Календари</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<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 Тогда
@@ -567,7 +569,7 @@
СтрокаШаблона.ПредставлениеРасписания = ПредставлениеРасписанияДня(Форма, СтрокаШаблона.НомерСтроки);
КонецЦикла;
РасписаниеПредпраздничногоДня = ПредставлениеРасписанияДня(Форма, 0);
Форма.РасписаниеПредпраздничногоДня = ПредставлениеРасписанияДня(Форма, 0);
КонецПроцедуры
@@ -674,7 +676,7 @@
ИнформационныйТекст = НСтр("ru = 'График работы заполнен до %1'");
Форма.ЗаполненностьИнформационныйТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИнформационныйТекст, Формат(Форма.ДатаЗаполненности, "ДЛФ=D"));
Иначе
#Если Клиент Тогда
#Если ВебКлиент Или ТонкийКлиент Тогда
ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса();
#Иначе
ТекущаяДата = ТекущаяДатаСеанса();
@@ -463,28 +463,29 @@
ДатаДня = ДатаНачала;
Пока ДатаДня <= ДатаОкончания Цикл
ПраздничныйДень = Ложь;
Если Не ЗаполнятьПоПроизводственномуКалендарю Тогда
НерабочийДень = Ложь;
НомерДня = ДеньНедели(ДатаДня);
Иначе
Если ЗаполнятьПоПроизводственномуКалендарю И УчитыватьПраздники Тогда
ДанныеДня = ДанныеПроизводственногоКалендаря.НайтиСтроки(Новый Структура("Дата", ДатаДня))[0];
Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота Тогда
НомерДня = 6;
ИначеЕсли ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье Тогда
НомерДня = 7;
Иначе
НомерДня = ДеньНедели(?(ЗначениеЗаполнено(ДанныеДня.ДатаПереноса), ДанныеДня.ДатаПереноса, ДанныеДня.Дата));
Если ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник Тогда
ПраздничныйДень = Истина;
ИначеЕсли ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий Тогда
НерабочийДень = Истина;
КонецЕсли;
ПраздничныйДень = УчитыватьПраздники И ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник;
НерабочийДень = УчитыватьПраздники И ДанныеДня.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Нерабочий;
КонецЕсли;
КонецЕсли;
Если Не ПраздничныйДень И Не НерабочийДень Тогда
СтрокаДня = ШаблонЗаполнения[НомерДня - 1];
Если СтрокаДня.ДеньВключенВГрафик И Не ПраздничныйДень И Не НерабочийДень Тогда
Если СтрокаДня.ДеньВключенВГрафик Тогда
ДниВключенныеВГрафик.Вставить(ДатаДня, Истина);
КонецЕсли;
КонецЕсли;
ДатаДня = ДатаДня + ДлинаСуток;
КонецЦикла;
@@ -12,6 +12,8 @@
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан("Справочник.Календари");
Если Не УчитыватьПраздники Тогда
// Если график работы не учитывает праздники, то нужно удалить интервалы предпраздничного дня.
РасписаниеПредпраздничногоДня = РасписаниеРаботы.НайтиСтроки(Новый Структура("НомерДня", 0));
@@ -839,7 +839,7 @@
Элементы.ВыбиратьИерархически.Видимость = ХранимыеПараметры.ИспользоватьГруппы;
Если Не Пользователи.РолиДоступны("ДобавлениеИзменениеПользователей")
Если Не ПравоДоступа("Редактирование", Метаданные.Справочники.ГруппыПользователей)
Или ХранимыеПараметры.РасширенныйПодбор
Или ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда
@@ -847,7 +847,8 @@
Элементы.ПользователиСписокКонтекстноеМенюНазначитьГруппы.Видимость = Ложь;
Иначе
Элементы.НазначитьГруппы.Видимость = ХранимыеПараметры.ИспользоватьГруппы;
Элементы.ПользователиСписокКонтекстноеМенюНазначитьГруппы.Видимость = ХранимыеПараметры.ИспользоватьГруппы;
Элементы.ПользователиСписокКонтекстноеМенюНазначитьГруппы.Видимость =
ХранимыеПараметры.ИспользоватьГруппы;
КонецЕсли;
Элементы.СоздатьГруппуПользователей.Видимость =
@@ -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>
<representationInContextMenu>Auto</representationInContextMenu>
</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>
<enabled>true</enabled>
<userVisible>
@@ -792,6 +819,28 @@
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</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>
<navigationPanel/>
<commandBar/>
@@ -48,6 +48,9 @@
Элементы.ПредставлениеОбщегоРасписания.Доступность = РасписаниеДоступно();
ФормаГруппаДействий = Элементы.КоманднаяПанель.ПодчиненныеЭлементы.ФормаГруппаДействий;
ФормаГруппаДействий.ПодчиненныеЭлементы.ФормаВосстановитьПоНачальномуЗаполнению.Видимость = МодульПользователи.ЭтоПолноправныйПользователь();
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
@@ -169,18 +172,14 @@
КонецПроцедуры
&НаСервере
Функция ПодготовкаМассиваПроверок(МассивПроверок)
&НаКлиенте
Процедура ВосстановитьПоНачальномуЗаполнению(Команда)
ВосстановитьПоНачальномуЗаполнениюНаСервере();
КонецПроцедуры
ОтфильтрованныйМассив = Новый Массив;
Для Каждого Проверка Из МассивПроверок Цикл
Если Не Проверка.ЭтоГруппа Тогда
ОтфильтрованныйМассив.Добавить(Проверка);
КонецЕсли;
КонецЦикла;
Возврат ОтфильтрованныйМассив;
#КонецОбласти
КонецФункции
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ВыполнитьПроверкиНаСервере(МассивПроверок)
@@ -225,9 +224,28 @@
КонецФункции
#КонецОбласти
&НаСервере
Процедура ВосстановитьПоНачальномуЗаполнениюНаСервере()
#Область СлужебныеПроцедурыИФункции
КонтрольВеденияУчетаСлужебный.ОбновитьПараметрыСистемныхПроверок();
Если КонтрольВеденияУчетаСлужебный.ЕстьИзмененияПараметровСистемныхПроверок() Тогда
КонтрольВеденияУчетаСлужебный.ОбновитьВспомогательныеДанныеПоИзменениямКонфигурации();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПодготовкаМассиваПроверок(МассивПроверок)
ОтфильтрованныйМассив = Новый Массив;
Для Каждого Проверка Из МассивПроверок Цикл
Если Не Проверка.ЭтоГруппа Тогда
ОтфильтрованныйМассив.Добавить(Проверка);
КонецЕсли;
КонецЦикла;
Возврат ОтфильтрованныйМассив;
КонецФункции
&НаСервере
Функция СформироватьСтрокуСРасписанием()
@@ -335,6 +353,7 @@
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
#КонецОбласти
@@ -184,6 +184,9 @@
ПараметрыЗадания.Вставить("ДатаНачалаПроверки", Объект.ДатаНачалаПроверки);
ПараметрыЗадания.Вставить("ЛимитПроблем", Объект.ЛимитПроблем);
ПараметрыЗадания.Вставить("СпособВыполнения", Объект.СпособВыполнения);
ПараметрыЗадания.Вставить("ВажностьПроблемы", Объект.ВажностьПроблемы);
ПараметрыЗадания.Вставить("КонтекстПроверокВеденияУчета", Объект.КонтекстПроверокВеденияУчета);
ПараметрыЗадания.Вставить("УточнениеКонтекстаПроверокВеденияУчета", Объект.УточнениеКонтекстаПроверокВеденияУчета);
ПараметрыЗадания.Вставить("ПроверкаБылаОстановлена", Ложь);
ПараметрыЗадания.Вставить("РучнойЗапуск", Истина);
@@ -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>
<toolTip>
<key>ru</key>
<value>Группа к которой относится правило проверки</value>
<value>Группа, к которой относится правило проверки.</value>
</toolTip>
<fillFromFillingValue>true</fillFromFillingValue>
<fillValue xsi:type="core:ReferenceValue">
@@ -130,7 +130,6 @@
<value>Правило проверки учета</value>
</objectPresentation>
<hierarchical>true</hierarchical>
<limitLevelCount>true</limitLevelCount>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<descriptionLength>150</descriptionLength>
@@ -140,6 +139,7 @@
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
<defaultObjectForm>Catalog.ПравилаПроверкиУчета.Form.ФормаЭлемента</defaultObjectForm>
<defaultFolderForm>Catalog.ПравилаПроверкиУчета.Form.ФормаГруппы</defaultFolderForm>
<defaultListForm>Catalog.ПравилаПроверкиУчета.Form.ФормаСписка</defaultListForm>
<attributes uuid="776c171d-5dd5-4965-94dc-c2fe6792d5f2">
<name>ВажностьПроблемы</name>
@@ -206,7 +206,7 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="e16865c3-75d0-4b66-b52a-ca7991274d87">
<attributes uuid="49bd152e-479a-46fe-b3af-26ed9181dc34">
<name>Причины</name>
<synonym>
<key>ru</key>
@@ -226,7 +226,7 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="ca0a362a-edd9-4f33-9285-db7e7d3de7e9">
<attributes uuid="0a742dd2-1ff4-42de-b303-f2bb01b36fe2">
<name>Рекомендация</name>
<synonym>
<key>ru</key>
@@ -286,7 +286,7 @@
<fillValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="f1e1edf0-94f0-4dc1-8b4d-6f44866e98a4">
<attributes uuid="08c8a9bf-7b89-4d0e-a496-4c7efeca0577">
<name>ДополнительныеПараметры</name>
<synonym>
<key>ru</key>
@@ -305,7 +305,7 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="22093cbc-357a-4458-8c54-ce7f51cbf61e">
<attributes uuid="f6c2b015-9cfc-40d2-a93f-b0e88db4a23f">
<name>ДатаНачалаПроверки</name>
<synonym>
<key>ru</key>
@@ -325,7 +325,7 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="e614c04d-d877-42fa-b836-91b298e3d3d6">
<attributes uuid="103f3d8f-e47a-4772-bdd7-dd5f8508d22b">
<name>ЛимитПроблем</name>
<synonym>
<key>ru</key>
@@ -349,7 +349,7 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="72a16a43-433c-4bb0-919d-cf2bc43d016a">
<attributes uuid="ba8ea271-8716-49ef-8b10-f4b5798c1f62">
<name>РасписаниеВыполненияПроверки</name>
<synonym>
<key>ru</key>
@@ -368,7 +368,7 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="935cca1c-5ac6-4a7d-9c8e-e733e99cbd40">
<attributes uuid="3633c30c-9479-4801-89cc-a5734a41e465">
<name>Комментарий</name>
<synonym>
<key>ru</key>
@@ -384,8 +384,9 @@
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<use>ForFolderAndItem</use>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="f295c68d-7e29-48b8-a95a-56e96d9843c1">
@@ -405,16 +406,17 @@
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<use>ForFolderAndItem</use>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="7ebe16ee-8e5d-4b05-89b5-9539f73be90c">
<name>УточнениеКонтекстаПроверкиСостоянияСистемы</name>
<name>УточнениеКонтекстаПроверокВеденияУчета</name>
<synonym>
<key>ru</key>
<value>Уточнение контекста проверки состояния системы</value>
<value>Уточнение контекста проверок ведения учета</value>
</synonym>
<type>
<types>DefinedType.УточнениеКонтекстаПроверкиСостоянияСистемы</types>
<types>DefinedType.УточнениеКонтекстаПроверокВеденияУчета</types>
</type>
<toolTip>
<key>ru</key>
@@ -426,7 +428,7 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="38556870-93c1-4d45-8bbd-2bb663a7068d">
<attributes uuid="ea5d0221-fb1e-4626-862a-9c1209365d8f">
<name>ПроверкаВеденияУчетаИзменена</name>
<synonym>
<key>ru</key>
@@ -446,7 +448,7 @@
<use>ForFolderAndItem</use>
<dataHistory>Use</dataHistory>
</attributes>
<forms uuid="0b195c56-ac0f-4120-a097-3f4f9743c4f2">
<forms uuid="12bce69b-933c-4ce4-9d29-a47f3db0226e">
<name>ФормаЭлемента</name>
<synonym>
<key>ru</key>
@@ -460,7 +462,7 @@
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="a3337da8-d35d-4cd2-b1de-ffed887a5f73">
<forms uuid="82dcd6a3-c35b-421c-a8f9-77855ad2abca">
<name>ФормаСписка</name>
<synonym>
<key>ru</key>
@@ -469,4 +471,13 @@
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</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>
@@ -3,6 +3,16 @@
#Область ОбработчикиСобытий
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновитьПовторноИспользуемыеЗначения();
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если ЭтоПрограммаОблачногоСервиса Тогда
@@ -287,6 +287,40 @@
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</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>
<autoCommandBar>
<name>СписокКоманднаяПанель</name>
@@ -449,6 +483,15 @@
<edit>
<common>true</common>
</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>
<extInfo xsi:type="form:DynamicListExtInfo">
<mainTable>Catalog.ПроизводственныеКалендари</mainTable>
@@ -59,6 +59,43 @@
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Функция выявляет последний день, за который заполнены данные
// указанного производственного календаря.
//
// Параметры:
// ПроизводственныйКалендарь - СправочникСсылка.ПроизводственныеКалендари - календарь.
//
// Возвращаемое значение:
// Дата - дата, по которую заполнен производственный календарь, Неопределено, если календарь не заполнен.
//
Функция ДатаОкончанияЗаполненияПроизводственногоКалендаря(ПроизводственныйКалендарь) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ПроизводственныйКалендарь", ПроизводственныйКалендарь);
Запрос.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(ДанныеПроизводственногоКалендаря.Дата) КАК Дата
|ИЗ
| РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
|ГДЕ
| ДанныеПроизводственногоКалендаря.ПроизводственныйКалендарь = &ПроизводственныйКалендарь
|
|ИМЕЮЩИЕ
| МАКСИМУМ(ДанныеПроизводственногоКалендаря.Дата) ЕСТЬ НЕ NULL ";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Дата;
КонецЕсли;
Возврат Неопределено;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Функция читает данные производственного календаря из регистра.
@@ -160,11 +197,7 @@
КонецЕсли;
// Преобразовываем в таблицу.
ДанныеПроизводственногоКалендаря = Новый ТаблицаЗначений;
ДанныеПроизводственногоКалендаря.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));
ДанныеПроизводственногоКалендаря.Колонки.Добавить("ВидДня", Новый ОписаниеТипов("ПеречислениеСсылка.ВидыДнейПроизводственногоКалендаря"));
ДанныеПроизводственногоКалендаря.Колонки.Добавить("ДатаПереноса", Новый ОписаниеТипов("Дата"));
ДанныеПроизводственногоКалендаря = НовыеДанныеПроизводственныхКалендарей();
Для Каждого КлючИЗначение Из ВидыДней Цикл
НоваяСтрока = ДанныеПроизводственногоКалендаря.Добавить();
НоваяСтрока.Дата = КлючИЗначение.Ключ;
@@ -173,6 +206,8 @@
Если ДатаПереноса <> Неопределено Тогда
НоваяСтрока.ДатаПереноса = ДатаПереноса;
КонецЕсли;
НоваяСтрока.Год = НомерГода;
НоваяСтрока.КодПроизводственногоКалендаря = КодКалендаря;
КонецЦикла;
ДанныеПроизводственногоКалендаря.Сортировать("Дата");
@@ -214,12 +249,7 @@
КонецЕсли;
Для Каждого НомерГода Из НомераГодов Цикл
ДанныеКалендаря = РезультатЗаполненияПроизводственногоКалендаряПоУмолчанию(Выборка.КодКалендаря, НомерГода, Выборка.КодБазовогоКалендаря);
Для Каждого СтрокаДанных Из ДанныеКалендаря Цикл
НоваяСтрока = ТаблицаДанных.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаДанных);
НоваяСтрока.КодПроизводственногоКалендаря = Выборка.КодКалендаря;
НоваяСтрока.Год = НомерГода;
КонецЦикла;
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ДанныеКалендаря, ТаблицаДанных);
КонецЦикла;
КонецЦикла;
@@ -328,6 +358,7 @@
Процедура ОбновитьПроизводственныеКалендари(ТаблицаКалендарей) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("КлассификаторТаблица", ТаблицаКалендарей);
Запрос.Текст =
"ВЫБРАТЬ
| ВЫРАЗИТЬ(КлассификаторТаблица.Code КАК СТРОКА(2)) КАК Код,
@@ -345,7 +376,8 @@
| КлассификаторТаблица.Наименование КАК Наименование,
| ПроизводственныеКалендари.Ссылка КАК Ссылка,
| ЕСТЬNULL(ПроизводственныеКалендари.Код, """") КАК ПроизводственныйКалендарьКод,
| ЕСТЬNULL(ПроизводственныеКалендари.Наименование, """") КАК ПроизводственныйКалендарьНаименование
| ЕСТЬNULL(ПроизводственныеКалендари.Наименование, """") КАК ПроизводственныйКалендарьНаименование,
| ЕСТЬNULL(ПроизводственныеКалендари.БазовыйКалендарь.Код, """") КАК ПроизводственныйКалендарьКодБазового
|ИЗ
| КлассификаторТаблица КАК КлассификаторТаблица
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПроизводственныеКалендари КАК ПроизводственныеКалендари
@@ -353,12 +385,16 @@
|
|УПОРЯДОЧИТЬ ПО
| КодБазового";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
Запрос.УстановитьПараметр("КлассификаторТаблица", ТаблицаКалендарей);
Выборка = Запрос.Выполнить().Выбрать();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если СокрЛП(Выборка.Код) = СокрЛП(Выборка.ПроизводственныйКалендарьКод)
И СокрЛП(Выборка.Наименование) = СокрЛП(Выборка.ПроизводственныйКалендарьНаименование) Тогда
И СокрЛП(Выборка.Наименование) = СокрЛП(Выборка.ПроизводственныйКалендарьНаименование)
И СокрЛП(Выборка.КодБазового) = СокрЛП(Выборка.ПроизводственныйКалендарьКодБазового) Тогда
Продолжить;
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.Ссылка) Тогда
@@ -375,6 +411,10 @@
Если ЗначениеЗаполнено(Выборка.КодБазового) Тогда
СправочникОбъект.БазовыйКалендарь = НайтиПоКоду(Выборка.КодБазового);
КонецЕсли;
Если ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(СправочникОбъект);
Продолжить;
КонецЕсли;
СправочникОбъект.Записать();
КонецЦикла;
@@ -384,6 +424,22 @@
//
Функция ОбновитьДанныеПроизводственныхКалендарей(Знач ТаблицаДанных) Экспорт
ТаблицаИзменений = ТаблицаИзмененийПроизводственныхКалендарей();
ОбновитьОсновныеДанныеПроизводственныхКалендарей(ТаблицаДанных, ТаблицаИзменений);
ОбновитьДанныеЗависимыхПроизводственныхКалендарей(ТаблицаИзменений);
Возврат ТаблицаИзменений;
КонецФункции
Процедура ОбновитьОсновныеДанныеПроизводственныхКалендарей(ТаблицаДанных, ИзмененияКалендарей)
Если ТаблицаДанных.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
@@ -427,24 +483,94 @@
КлючиРегистра.Добавить("Год");
КлючиРегистра.Добавить("Дата");
ТаблицаИзменений = ТаблицаИзмененийПроизводственныхКалендарей();
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НаборЗаписей.Очистить();
ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Выборка);
ЗаполнитьЗначенияСвойств(ТаблицаИзменений.Добавить(), Выборка);
ЗаполнитьЗначенияСвойств(ИзмененияКалендарей.Добавить(), Выборка);
Для Каждого Ключ Из КлючиРегистра Цикл
НаборЗаписей.Отбор[Ключ].Установить(Выборка[Ключ]);
КонецЦикла;
НаборЗаписей.Записать(Истина);
КонецЦикла;
ТаблицаИзменений.Свернуть("КодПроизводственногоКалендаря, Год");
ИзмененияКалендарей.Свернуть("КодПроизводственногоКалендаря, Год");
Возврат ТаблицаИзменений;
КонецПроцедуры
КонецФункции
Процедура ОбновитьДанныеЗависимыхПроизводственныхКалендарей(ИзмененияКалендарей) Экспорт
Если ИзмененияКалендарей.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИзмененияКалендарей", ИзмененияКалендарей);
Запрос.Текст =
"ВЫБРАТЬ
| ИзмененияКалендарей.КодПроизводственногоКалендаря КАК КодПроизводственногоКалендаря,
| ИзмененияКалендарей.Год КАК Год
|ПОМЕСТИТЬ ВТИзмененияКалендарей
|ИЗ
| &ИзмененияКалендарей КАК ИзмененияКалендарей
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЗависимыеКалендари.Ссылка КАК ПроизводственныйКалендарь,
| ЗависимыеКалендари.Код КАК Код,
| ИзмененияБазовыхКалендарей.Год КАК Год,
| ЗависимыеКалендари.БазовыйКалендарь.Код КАК КодБазовогоКалендаря
|ИЗ
| Справочник.ПроизводственныеКалендари КАК ЗависимыеКалендари
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТИзмененияКалендарей КАК ИзмененияБазовыхКалендарей
| ПО ЗависимыеКалендари.БазовыйКалендарь.Код = ИзмененияБазовыхКалендарей.КодПроизводственногоКалендаря
| И (ЗависимыеКалендари.БазовыйКалендарь <> ЗНАЧЕНИЕ(Справочник.ПроизводственныеКалендари.ПустаяСсылка))
| ЛЕВОЕ СОЕДИНЕНИЕ ВТИзмененияКалендарей КАК ИзмененияЗависимыхКалендарей
| ПО (ИзмененияЗависимыхКалендарей.КодПроизводственногоКалендаря = ЗависимыеКалендари.Код)
| И (ИзмененияЗависимыхКалендарей.Год = ИзмененияБазовыхКалендарей.Год)
|ГДЕ
| ИзмененияЗависимыхКалендарей.Год ЕСТЬ NULL";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
КодыЗависимых = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Код");
ДанныеИзМакета = ДанныеПроизводственныхКалендарейИзМакета(КодыЗависимых, Ложь);
ОтборСтрок = Новый Структура(
"КодПроизводственногоКалендаря,
|Год");
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ОтборСтрок.КодПроизводственногоКалендаря = Выборка.Код;
ОтборСтрок.Год = Выборка.Год;
НайденныеСтроки = ДанныеИзМакета.НайтиСтроки(ОтборСтрок);
Если НайденныеСтроки.Количество() > 0 Тогда
// Если есть данные в макете, считаем, что перезаполнять не нужно.
Продолжить;
КонецЕсли;
ДанныеКалендаря = РезультатЗаполненияПроизводственногоКалендаряПоУмолчанию(Выборка.Код, Выборка.Год, Выборка.КодБазовогоКалендаря);
ДанныеКалендаря.Колонки.Добавить("ПроизводственныйКалендарь");
ДанныеКалендаря.ЗаполнитьЗначения(Выборка.ПроизводственныйКалендарь, "ПроизводственныйКалендарь");
НаборЗаписей = РегистрыСведений.ДанныеПроизводственногоКалендаря.СоздатьНаборЗаписей();
НаборЗаписей.Загрузить(ДанныеКалендаря);
НаборЗаписей.Отбор.ПроизводственныйКалендарь.Установить(Выборка.ПроизводственныйКалендарь);
НаборЗаписей.Отбор.Год.Установить(Выборка.Год);
Если ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда
ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей);
Иначе
НаборЗаписей.Записать(Истина);
КонецЕсли;
// Добавляем в таблицу изменений.
НоваяСтрока = ИзмененияКалендарей.Добавить();
НоваяСтрока.КодПроизводственногоКалендаря = Выборка.Код;
НоваяСтрока.Год = Выборка.Год;
КонецЦикла;
КонецПроцедуры
// Создает таблицу значений для описания изменений данных производственных календарей.
//
@@ -556,37 +682,6 @@
КонецФункции
// Функция выявляет последний день, за который заполнены данные
// указанного производственного календаря.
//
// Параметры:
// - ПроизводственныйКалендарь - тип СправочникСсылка.ПроизводственныеКалендари.
//
Функция ДатаОкончанияЗаполненияПроизводственногоКалендаря(ПроизводственныйКалендарь) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| МАКСИМУМ(ДанныеПроизводственногоКалендаря.Дата) КАК Дата
|ИЗ
| РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
|ГДЕ
| ДанныеПроизводственногоКалендаря.ПроизводственныйКалендарь = &ПроизводственныйКалендарь
|
|ИМЕЮЩИЕ
| МАКСИМУМ(ДанныеПроизводственногоКалендаря.Дата) ЕСТЬ НЕ NULL ";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ПроизводственныйКалендарь", ПроизводственныйКалендарь);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Дата;
КонецЕсли;
Возврат Неопределено;
КонецФункции
// Заполняет массив дат праздничных дней по производственному календарю
// для конкретного календарного года.
//
@@ -919,7 +919,7 @@
|ИЗ
| Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа
|ГДЕ
| НЕ(НЕ ИСТИНА В
| (ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
@@ -927,7 +927,7 @@
| ГДЕ
| ВидыДоступа.Ссылка = ПрофилиГруппДоступа.Ссылка
| И ТИПЗНАЧЕНИЯ(ВидыДоступа.ВидДоступа) = ТИП(ПланВидовХарактеристик.УдалитьВидыДоступа))
| И НЕ ИСТИНА В
| ИЛИ ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
@@ -943,7 +943,7 @@
|ИЗ
| Справочник.ГруппыДоступа КАК ГруппыДоступа
|ГДЕ
| НЕ(НЕ ИСТИНА В
| (ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
@@ -951,7 +951,7 @@
| ГДЕ
| ВидыДоступа.Ссылка = ГруппыДоступа.Ссылка
| И ТИПЗНАЧЕНИЯ(ВидыДоступа.ВидДоступа) = ТИП(ПланВидовХарактеристик.УдалитьВидыДоступа))
| И НЕ ИСТИНА В
| ИЛИ ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
@@ -1430,9 +1430,13 @@
КонецЕсли;
Если ПрофильИзменен Тогда
Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() Тогда
Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы()
И Не ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда
ЗаблокироватьДанныеДляРедактирования(ПрофильОбъект.Ссылка, ПрофильОбъект.ВерсияДанных);
КонецЕсли;
ПрофильОбъект.Наименование = СвойстваПрофиля.Наименование;
ПрофильОбъект.Роли.Очистить();
@@ -1479,9 +1483,12 @@
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ПрофильОбъект);
Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() Тогда
Если Не ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы()
И Не ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда
РазблокироватьДанныеДляРедактирования(ПрофильОбъект.Ссылка);
КонецЕсли;
КонецЕсли;
Возврат ПрофильИзменен;
@@ -25,24 +25,32 @@
СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка,
"Ссылка, ПометкаУдаления, Роли, Назначение, ВидыДоступа, ЗначенияДоступа");
Если Ссылка <> Справочники.ПрофилиГруппДоступа.Администратор Тогда
// Проверка ролей.
НомерСтроки = Роли.Количество() - 1;
РолиАдминистратора = Новый Массив;
РолиАдминистратора.Добавить("Роль.ПолныеПрава");
РолиАдминистратора.Добавить("Роль.АдминистраторСистемы");
ИдентификаторыРолей = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(РолиАдминистратора);
Пока НомерСтроки >= 0 Цикл
Если ВРег(Роли[НомерСтроки].Роль) = ВРег(ИдентификаторыРолей["Роль.ПолныеПрава"])
ИЛИ ВРег(Роли[НомерСтроки].Роль) = ВРег(ИдентификаторыРолей["Роль.АдминистраторСистемы"]) Тогда
ОбработанныеРоли = Новый Соответствие;
Индекс = Роли.Количество();
Пока Индекс > 0 Цикл
Индекс = Индекс - 1;
Роль = Роли[Индекс].Роль;
Если ОбработанныеРоли.Получить(Роль) <> Неопределено Тогда
Роли.Удалить(Индекс);
Продолжить;
КонецЕсли;
ОбработанныеРоли.Вставить(Роль, Истина);
Если Ссылка = Справочники.ПрофилиГруппДоступа.Администратор Тогда
Продолжить;
КонецЕсли;
Если Роль = ИдентификаторыРолей["Роль.ПолныеПрава"]
Или Роль = ИдентификаторыРолей["Роль.АдминистраторСистемы"] Тогда
Роли.Удалить(НомерСтроки);
Роли.Удалить(Индекс);
КонецЕсли;
НомерСтроки = НомерСтроки - 1;
КонецЦикла;
КонецЕсли;
Если НЕ ДополнительныеСвойства.Свойство("НеОбновлятьРеквизитПоставляемыйПрофильИзменен") Тогда
Если Не ДополнительныеСвойства.Свойство("НеОбновлятьРеквизитПоставляемыйПрофильИзменен") Тогда
ПоставляемыйПрофильИзменен =
Справочники.ПрофилиГруппДоступа.ПоставляемыйПрофильИзменен(ЭтотОбъект);
КонецЕсли;
@@ -47,6 +47,7 @@
ДвоичныеДанные = Новый ДвоичныеДанные(ВыбранныеФайлы[0]);
АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтотОбъект.УникальныйИдентификатор);
ЗагрузитьПрофильКлючевыхОперацийНаСервере(АдресХранилища);
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
@@ -108,7 +109,7 @@
КлючевыеОперации = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
Колонки = СтрРазделить(КлючевыеОперации["Columns"], ",",Ложь);
Если КлючевыеОперации.Свойства().Получить("Item") <> Неопределено Тогда
Если ТипЗнч(КлючевыеОперации["Item"]) = Тип("ОбъектXDTO") Тогда
ЗагрузитьОбъектXDTO(КлючевыеОперации["Item"], Колонки);
Иначе
@@ -116,6 +117,7 @@
ЗагрузитьОбъектXDTO(ТекЭлемент, Колонки);
КонецЦикла;
КонецЕсли;
КонецЕсли;
ЧтениеXML.Закрыть();
УдалитьФайлы(ИмяВременногоФайла);
@@ -285,6 +285,84 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</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">
<name>ПолучателиДобавить</name>
<id>97</id>
@@ -745,10 +823,10 @@
</columns>
</attributes>
<attributes>
<name>ИОМД</name>
<name>ИдентификаторОбъектаМетаданных</name>
<title>
<key>ru</key>
<value>ИОМД</value>
<value>Идентификатор объекта метаданных</value>
</title>
<id>4</id>
<valueType/>
@@ -845,6 +923,56 @@
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</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>
<name>ТипПолучателейРассылки</name>
<valueType>
@@ -117,6 +117,24 @@
МодульЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗаполненияСсылок(ПараметрыПоиска, Обработчик);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометки(Команда)
Для каждого Получатель Из Получатели Цикл
Получатель.Исключен = Истина;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СнятьПометки(Команда)
Для каждого Получатель Из Получатели Цикл
Получатель.Исключен = Ложь;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -231,7 +249,7 @@
ПараметрыПолучателей = Новый Структура(НаборПараметров);
ЗаполнитьЗначенияСвойств(ПараметрыПолучателей, ЭтотОбъект);
ПараметрыПолучателей.Личная = Ложь;
ПараметрыПолучателей.ТипПолучателейРассылки = ИОМД;
ПараметрыПолучателей.ТипПолучателейРассылки = ИдентификаторОбъектаМетаданных;
ПараметрыПолучателей.Получатели = Получатели;
РезультатВыполнения = РассылкаОтчетовВызовСервера.СформироватьСписокПолучателейРассылки(ПараметрыПолучателей);
@@ -294,7 +312,7 @@
Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки));
Если Найденные.Количество() = 1 Тогда
СтрокаПолучатель = Найденные[0];
ИОМД = СтрокаПолучатель.ИОМД;
ИдентификаторОбъектаМетаданных = СтрокаПолучатель.ИдентификаторОбъектаМетаданных;
ПутьФормыВыбора = СтрокаПолучатель.ПутьФормыВыбора;
ГруппаКонтактнойИнформацииТипаПолучателей = СтрокаПолучатель.ГруппаКИ;
// ГруппаКИ используется для поля "ВидПочтовогоАдресаПолучателей" в "СвязиПараметровВыбора.Отбор".
@@ -12,7 +12,7 @@
Элементы.Список.Отображение = ОтображениеТаблицы[Параметры.Отображение];
КонецЕсли;
ТекстОшибкиПриОткрытии = РассылкаОтчетовПовтИсп.ТекстОшибкиПроверкиПраваДобавления();
ТекстОшибкиПриОткрытии = РассылкаОтчетов.ТекстОшибкиПроверкиПраваДобавления();
Если ЗначениеЗаполнено(ТекстОшибкиПриОткрытии) Тогда
ВызватьИсключение ТекстОшибкиПриОткрытии;
КонецЕсли;
@@ -50,7 +50,7 @@
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ФОРМАВЫБРАТЬ", "Видимость", Ложь);
КонецЕсли;
Если Не Пользователи.РолиДоступны("ДобавлениеИзменениеРассылокОтчетов") Тогда
Если Не ПравоДоступа("Изменение", Метаданные.Справочники.РассылкиОтчетов) Тогда
// Режим показа только личных рассылок - скрываются группы и лишние колонки.
Элементы.Список.Отображение = ОтображениеТаблицы.Список;
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "ЭтоГруппа", Ложь, , , Истина,
@@ -169,7 +169,7 @@
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Автор", ПараметрыОтбора["Автор"],,,
Не ПараметрыОтбора["Автор"].Пустая());
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "СОшибками", ПараметрыОтбора["СОшибками"] = "Невыполненные",,,
ПараметрыОтбора["СОшибками"] <> "Все");
ПараметрыОтбора["СОшибками"] <> "Все" И ЗначениеЗаполнено(ПараметрыОтбора["СОшибками"]));
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "ОтчетОтбор", ПараметрыОтбора["Отчет"],
ЗначениеЗаполнено(ПараметрыОтбора["Отчет"]) И Не ПараметрыОтбора["Отчет"].Пустая());
@@ -4264,6 +4264,10 @@
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>TextEditEnd</event>
<name>ДругойСпособДоставкиОкончаниеВводаТекста</name>
</handlers>
<width>13</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -4273,7 +4277,7 @@
<spinButton>false</spinButton>
<openButton>false</openButton>
<listChoiceMode>true</listChoiceMode>
<chooseType>true</chooseType>
<incompleteChoiceMode>OnActivate</incompleteChoiceMode>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<choiceList>
@@ -9061,10 +9065,10 @@
<common>true</common>
</edit>
<columns>
<name>ИОМД</name>
<name>ИдентификаторОбъектаМетаданных</name>
<title>
<key>ru</key>
<value>ИОМД</value>
<value>Идентификатор объекта метаданных</value>
</title>
<id>1</id>
<valueType>
@@ -32,7 +32,7 @@
Возврат;
КонецЕсли;
ТекстОшибкиПриОткрытии = РассылкаОтчетовПовтИсп.ТекстОшибкиПроверкиПраваДобавления();
ТекстОшибкиПриОткрытии = РассылкаОтчетов.ТекстОшибкиПроверкиПраваДобавления();
Если ЗначениеЗаполнено(ТекстОшибкиПриОткрытии) Тогда
Возврат;
КонецЕсли;
@@ -163,7 +163,7 @@
Элементы.Автор.Доступность = Пользователи.ЭтоПолноправныйПользователь();
// Список форматов с пометками для форматов по умолчанию.
СписокФорматовПоУмолчанию = РассылкаОтчетовПовтИсп.СписокФорматов();
СписокФорматовПоУмолчанию = РассылкаОтчетов.СписокФорматов();
// Представление списка форматов по умолчанию.
СписокФорматовПоУмолчаниюПредставление = "";
@@ -482,7 +482,7 @@
Если ЗначениеЗаполнено(ТипПолучателейРассылки) Тогда
Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки));
Если Найденные.Количество() = 1 Тогда
ТекущийОбъект.ТипПолучателейРассылки = Найденные[0].ИОМД;
ТекущийОбъект.ТипПолучателейРассылки = Найденные[0].ИдентификаторОбъектаМетаданных;
Иначе
ТекущийОбъект.ТипПолучателейРассылки = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
КонецЕсли;
@@ -665,7 +665,7 @@
Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки));
Если Найденные.Количество() = 1 Тогда
СтрокаПолучатель = Найденные[0];
Объект.ТипПолучателейРассылки = СтрокаПолучатель.ИОМД;
Объект.ТипПолучателейРассылки = СтрокаПолучатель.ИдентификаторОбъектаМетаданных;
Объект.ВидПочтовогоАдресаПолучателей = СтрокаПолучатель.ОсновнойВидКИ;
КонецЕсли;
КонецПроцедуры
@@ -765,6 +765,11 @@
ВидимостьДоступностьКорректность(ЭтотОбъект, "ДругойСпособДоставки");
КонецПроцедуры
&НаКлиенте
Процедура ДругойСпособДоставкиОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
СтандартнаяОбработка = НЕ ПустаяСтрока(Текст);
КонецПроцедуры
&НаКлиенте
Процедура ПубликоватьПриИзменении(Элемент)
ВычислитьФлажкиДополнительныхСпособовДоставки();
@@ -896,35 +901,23 @@
Если СтруктураВыбора.СОшибками.Количество > 0 Тогда
Если СтруктураВыбора.Выбрано.Количество = 1 Тогда
ТекстСообщения = НСтр("ru = 'Не удалось добавить отчет из-за ошибок'");
ИначеЕсли СтруктураВыбора.Успешно.Количество = 0 Тогда
ТекстСообщения = НСтр("ru = 'Не удалось добавить отчеты из-за ошибок'");
ИначеЕсли СтруктураВыбора.Выбрано.Количество >= 6 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Добавлено отчетов: %1 из %2,
|Не добавлено из-за ошибок: %3'"),
НСтр("ru = 'Не удалось добавить отчет по причине:
|%1'"), СтруктураВыбора.СОшибками.Текст);
ИначеЕсли СтруктураВыбора.Успешно.Количество = 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось добавить отчеты по причине:
|%1'"), СтруктураВыбора.СОшибками.Текст);
Иначе
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Добавлено отчетов: %1 из %2
|Подробности:
|%3'"),
Формат(СтруктураВыбора.Успешно.Количество, "ЧН=0; ЧГ="),
Формат(СтруктураВыбора.Выбрано.Количество, "ЧН=0; ЧГ="),
Формат(СтруктураВыбора.СОшибками.Количество, "ЧН=0; ЧГ="));
Иначе
Разделитель = ", ";
ПредставлениеОтчетовУспешно = СтрЗаменить(Разделитель + СтруктураВыбора.Успешно.ПредставлениеОтчетов , Разделитель, Символы.ПС + " - ");
ПредставлениеОтчетовСОшибками = СтрЗаменить(Разделитель + СтруктураВыбора.СОшибками.ПредставлениеОтчетов, Разделитель, Символы.ПС + " - ");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Успешно добавлены отчеты:
|%1
|
|Следующие отчеты не удалось добавить из-за ошибок:
|%2'"),
ПредставлениеОтчетовУспешно,
ПредставлениеОтчетовСОшибками);
СтруктураВыбора.СОшибками.Текст);
КонецЕсли;
ПараметрыПредупреждения = Новый Структура("Заголовок, Текст, Подробно");
ПараметрыПредупреждения.Заголовок = НСтр("ru = 'Ошибки добавления отчетов в рассылку'");
ПараметрыПредупреждения.Текст = ТекстСообщения;
ПараметрыПредупреждения.Подробно = СтруктураВыбора.СОшибками.Текст;
СтандартныеПодсистемыКлиент.ВывестиПредупреждение(ЭтотОбъект, ПараметрыПредупреждения);
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено, ТекстСообщения, РежимДиалогаВопрос.ОК);
Иначе
@@ -1015,7 +1008,6 @@
КонецЕсли;
ИдентификаторКД = Элементы.ПользовательскиеНастройки.ТекущаяСтрока;
ТолькоПросмотрЗначения = Ложь;
ОтчетыКлиент.ПриАктивизацииСтрокиНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, ТолькоПросмотрЗначения);
РассылкаОтчетовКлиентПереопределяемый.ПриАктивизацииСтрокиНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, ТолькоПросмотрЗначения);
Если Элементы.ПользовательскиеНастройкиЗначение.ТолькоПросмотр <> ТолькоПросмотрЗначения Тогда
Элементы.ПользовательскиеНастройкиЗначение.ТолькоПросмотр = ТолькоПросмотрЗначения;
@@ -1037,7 +1029,6 @@
Возврат;
КонецЕсли;
ИдентификаторКД = Элементы.ПользовательскиеНастройки.ТекущаяСтрока;
ОтчетыКлиент.ПриОчисткеНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, СтандартнаяОбработка);
РассылкаОтчетовКлиентПереопределяемый.ПриОчисткеНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, СтандартнаяОбработка);
КонецПроцедуры
@@ -1335,13 +1326,13 @@
Возврат;
КонецЕсли;
НайденныеИОМД = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки));
Если НайденныеИОМД.Количество() <> 1 Тогда
НайденныеИдентификаторыОбъектовМетаданных = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки));
Если НайденныеИдентификаторыОбъектовМетаданных.Количество() <> 1 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Тип получателей не найден'"));
Возврат;
КонецЕсли;
МассивТипов = НайденныеИОМД[0].ОсновнойТип.Типы();
МассивТипов = НайденныеИдентификаторыОбъектовМетаданных[0].ОсновнойТип.Типы();
Если МассивТипов.Количество() <> 1 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Тип получателей не найден'"));
Возврат;
@@ -1835,7 +1826,6 @@
КонецЕсли;
ИдентификаторКД = Элементы.ПользовательскиеНастройки.ТекущаяСтрока;
Обработчик = Новый ОписаниеОповещения("ЗавершениеВыбораПользовательскойНастройки", ЭтотОбъект);
ОтчетыКлиент.ПриНачалеВыбораНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, СтандартнаяОбработка, Обработчик);
РассылкаОтчетовКлиентПереопределяемый.ПриНачалеВыбораНастройки(Отчет, КомпоновщикНастроекКД, ИдентификаторКД, СтандартнаяОбработка, Обработчик);
КонецПроцедуры
@@ -1984,7 +1974,9 @@
ПараметрыДоставки.Вставить("ДобавлятьСсылки", "");
РезультатВыполнения = ПроверитьСпособДоставки(Объект.Ссылка, ПараметрыДоставки);
СтандартныеПодсистемыКлиент.ВывестиПредупреждение(ЭтотОбъект, РезультатВыполнения);
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1
|%2'"), РезультатВыполнения.Текст, РезультатВыполнения.Подробно), РежимДиалогаВопрос.ОК);
КонецПроцедуры
@@ -2697,7 +2689,7 @@
ТипыКонтактнойИнформации = Новый Массив;
ТипыКонтактнойИнформации.Добавить(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
Попытка
ПочтовыеАдреса = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(Получатели, ТипыКонтактнойИнформации);
ПочтовыеАдреса = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(Получатели, ТипыКонтактнойИнформации,, ТекущаяДатаСеанса());
Исключение
Возврат СписокЗначений;
КонецПопытки;
@@ -2964,8 +2956,7 @@
УдалитьФайлы(Вложение.Значение);
КонецЦикла;
РезультатВыполнения = Новый Структура("Текст, Подробно");
РезультатВыполнения = Новый Структура("Текст, Подробно", "", "");
Если Выполнена Тогда
РезультатВыполнения.Текст = НСтр("ru = 'Тест способа доставки успешно пройден.'");
Иначе
@@ -3054,9 +3045,9 @@
// Структура кэша.
Кэш = Новый Структура;
Кэш.Вставить("ПустоеЗначениеОтчета", РассылкаОтчетовПовтИсп.ПустоеЗначениеОтчета());
Кэш.Вставить("ПустоеЗначениеОтчета", РассылкаОтчетов.ПустоеЗначениеОтчета());
Кэш.Вставить("ГруппаЛичныхРассылок", Справочники.РассылкиОтчетов.ЛичныеРассылки);
Кэш.Вставить("ЗаголовокСистемы", РассылкаОтчетовПовтИсп.ИмяЭтойИнформационнойБазы());
Кэш.Вставить("ЗаголовокСистемы", РассылкаОтчетов.ИмяЭтойИнформационнойБазы());
Кэш.Вставить("Соответствия", Новый ФиксированнаяСтруктура("ДниНедели, Месяцы", ДниНедели, Месяцы));
Кэш.Вставить("Шаблоны", Шаблоны);
Кэш.Вставить("ИсключаемыеОтчеты", РассылкаОтчетовПовтИсп.ИсключаемыеОтчеты());
@@ -3130,7 +3121,7 @@
// Заполнение списка выбора типов получателей.
Для Каждого СтрокаПолучатель Из ТаблицаТиповПолучателей Цикл
Элементы.ТипПолучателейРассылки.СписокВыбора.Добавить(СтрокаПолучатель.ТипПолучателей, СтрокаПолучатель.Представление);
Если СтрокаПолучатель.ИОМД = Объект.ТипПолучателейРассылки Тогда
Если СтрокаПолучатель.ИдентификаторОбъектаМетаданных = Объект.ТипПолучателейРассылки Тогда
ТипПолучателейРассылки = СтрокаПолучатель.ТипПолучателей;
Если Объект.ВидПочтовогоАдресаПолучателей.Пустая() И ЗначениеЗаполнено(СтрокаПолучатель.ОсновнойВидКИ) Тогда
Объект.ВидПочтовогоАдресаПолучателей = СтрокаПолучатель.ОсновнойВидКИ;
@@ -14,7 +14,12 @@
// Создание регламентного задания - пустышки (для хранения его идентификатора в данных).
УстановитьПривилегированныйРежим(Истина);
Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(РегламентноеЗадание);
Если Задание = Неопределено Тогда
// Из-за выполнения индивидуального регламентного задания непосредственно в необходимой области модели сервиса.
// Создание регламентного задания осуществляется платформенным способом,
// а не через программный интерфейс общего модуля РегламентныеЗадания.
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(Метаданные.РегламентныеЗадания.РассылкаОтчетов);
Задание.ИмяПользователя = РассылкаОтчетов.ИмяПользователяИБ(Автор);
Задание.Использование = Ложь;
@@ -23,6 +28,7 @@
РегламентноеЗадание = Задание.УникальныйИдентификатор;
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
// Соответствие флага подготовленности рассылки и задания пометке удаления рассылки.
@@ -363,35 +363,35 @@
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
СправочникРолиИсполнителей.Ссылка,
СправочникРолиИсполнителей.ПометкаУдаления,
СправочникРолиИсполнителей.Предопределенный,
СправочникРолиИсполнителей.Код,
СправочникРолиИсполнителей.Наименование,
СправочникРолиИсполнителей.ИспользуетсяБезОбъектовАдресации,
СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации,
СправочникРолиИсполнителей.ТипыОсновногоОбъектаАдресации,
СправочникРолиИсполнителей.ТипыДополнительногоОбъектаАдресации,
СправочникРолиИсполнителей.Комментарий,
СправочникРолиИсполнителейПереопределяемый.Ссылка,
СправочникРолиИсполнителейПереопределяемый.ПометкаУдаления,
СправочникРолиИсполнителейПереопределяемый.Предопределенный,
СправочникРолиИсполнителейПереопределяемый.Код,
СправочникРолиИсполнителейПереопределяемый.Наименование,
СправочникРолиИсполнителейПереопределяемый.ИспользуетсяБезОбъектовАдресации,
СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации,
СправочникРолиИсполнителейПереопределяемый.ТипыОсновногоОбъектаАдресации,
СправочникРолиИсполнителейПереопределяемый.ТипыДополнительногоОбъектаАдресации,
СправочникРолиИсполнителейПереопределяемый.Комментарий,
ВЫБОР
КОГДА СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации
КОГДА СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации
ТОГДА ИСТИНА
КОГДА СправочникРолиИсполнителей.Ссылка В
КОГДА СправочникРолиИсполнителейПереопределяемый.Ссылка В
(ВЫБРАТЬ ПЕРВЫЕ 1
РегистрСведений.ИсполнителиЗадач.РольИсполнителя.Ссылка
ИЗ
РегистрСведений.ИсполнителиЗадач
ГДЕ
РегистрСведений.ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителей.Ссылка)
РегистрСведений.ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЕстьИсполнители,
СправочникРолиИсполнителей.ВнешняяРоль,
СправочникРолиИсполнителей.КраткоеПредставление
СправочникРолиИсполнителейПереопределяемый.ВнешняяРоль,
СправочникРолиИсполнителейПереопределяемый.КраткоеПредставление
ИЗ
Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначение
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителей
ПО РолиИсполнителейНазначение.Ссылка = СправочникРолиИсполнителей.Ссылка</queryText>
Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначениеПереопределяемый
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителейПереопределяемый
ПО РолиИсполнителейНазначениеПереопределяемый.Ссылка = СправочникРолиИсполнителейПереопределяемый.Ссылка</queryText>
<mainTable>Catalog.РолиИсполнителей</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
@@ -10,32 +10,64 @@
КонецЕсли;
ТолькоПростыеРоли = Ложь;
Если Параметры.Свойство("ТолькоПростыеРоли", ТолькоПростыеРоли) И ТолькоПростыеРоли = Истина Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "ВнешняяРоль", Истина, , , Истина);
КонецЕсли;
ОтборГде = " ГДЕ РолиИсполнителейНазначение.ТипПользователей = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)";
ЭтоВнешнийПользователь = ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя();
Если ЭтоВнешнийПользователь Тогда
Если Элементы.КоманднаяПанель.ПодчиненныеЭлементы.Найти("ФормаИзменить") <> Неопределено Тогда
Элементы.КоманднаяПанель.ПодчиненныеЭлементы.ФормаИзменить.Видимость = Ложь;
КонецЕсли;
ТекущийВнешнийПользователь = ПользователиКлиентСервер.ТекущийВнешнийПользователь();
Имя = ТекущийВнешнийПользователь.ОбъектАвторизации.Метаданные().Имя;
ОтборГде = " ГДЕ РолиИсполнителейНазначение.ТипПользователей = ЗНАЧЕНИЕ(Справочник." + Имя + ".ПустаяСсылка)";
СтрокаОтбораВТекстеЗапроса = ОпределитьОтборДляВнешнегоПользователя();
Иначе
СтрокаОтбораВТекстеЗапроса = " ГДЕ РолиИсполнителейНазначениеПереопределяемый.ТипПользователей = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)";
КонецЕсли;
Список.ТекстЗапроса = Список.ТекстЗапроса + ОтборГде;
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ОсновнаяТаблица = "Справочник.РолиИсполнителей";
СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
СвойстваСписка.ТекстЗапроса = Список.ТекстЗапроса + СтрокаОтбораВТекстеЗапроса;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СписокПередНачаломИзменения(Элемент, Отказ)
Если ЭтоВнешнийПользователь Тогда
Отказ =Истина;
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ОпределитьОтборДляВнешнегоПользователя()
ТекущийВнешнийПользователь = ПользователиКлиентСервер.ТекущийВнешнийПользователь();
СтрокаОтбораВТекстеЗапроса = СтрЗаменить(" ГДЕ РолиИсполнителейНазначениеПереопределяемый.ТипПользователей = ЗНАЧЕНИЕ(Справочник.%Имя%.ПустаяСсылка)",
"%Имя%", ТекущийВнешнийПользователь.ОбъектАвторизации.Метаданные().Имя);
Возврат СтрокаОтбораВТекстеЗапроса;
КонецФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
@@ -59,5 +91,4 @@
КонецПроцедуры
#КонецОбласти
@@ -566,37 +566,37 @@
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
СправочникРолиИсполнителей.Ссылка,
СправочникРолиИсполнителей.ПометкаУдаления,
СправочникРолиИсполнителей.Предопределенный,
СправочникРолиИсполнителей.Код,
СправочникРолиИсполнителей.Наименование,
СправочникРолиИсполнителей.ИспользуетсяБезОбъектовАдресации,
СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации,
СправочникРолиИсполнителей.ТипыОсновногоОбъектаАдресации,
СправочникРолиИсполнителей.ТипыДополнительногоОбъектаАдресации,
СправочникРолиИсполнителей.Комментарий,
СправочникРолиИсполнителейПереопределяемый.Ссылка,
СправочникРолиИсполнителейПереопределяемый.ПометкаУдаления,
СправочникРолиИсполнителейПереопределяемый.Предопределенный,
СправочникРолиИсполнителейПереопределяемый.Код,
СправочникРолиИсполнителейПереопределяемый.Наименование,
СправочникРолиИсполнителейПереопределяемый.ИспользуетсяБезОбъектовАдресации,
СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации,
СправочникРолиИсполнителейПереопределяемый.ТипыОсновногоОбъектаАдресации,
СправочникРолиИсполнителейПереопределяемый.ТипыДополнительногоОбъектаАдресации,
СправочникРолиИсполнителейПереопределяемый.Комментарий,
ВЫБОР
КОГДА СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации
КОГДА СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации
ТОГДА ИСТИНА
КОГДА СправочникРолиИсполнителей.Ссылка В
КОГДА СправочникРолиИсполнителейПереопределяемый.Ссылка В
(ВЫБРАТЬ ПЕРВЫЕ 1
РегистрСведений.ИсполнителиЗадач.РольИсполнителя.Ссылка
ИЗ
РегистрСведений.ИсполнителиЗадач
ГДЕ
РегистрСведений.ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителей.Ссылка)
РегистрСведений.ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЕстьИсполнители,
СправочникРолиИсполнителей.ВнешняяРоль,
СправочникРолиИсполнителей.КраткоеПредставление
СправочникРолиИсполнителейПереопределяемый.ВнешняяРоль,
СправочникРолиИсполнителейПереопределяемый.КраткоеПредставление
ИЗ
Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначение
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителей
ПО РолиИсполнителейНазначение.Ссылка = СправочникРолиИсполнителей.Ссылка
Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначениеПереопределяемый
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителейПереопределяемый
ПО РолиИсполнителейНазначениеПереопределяемый.Ссылка = СправочникРолиИсполнителейПереопределяемый.Ссылка
ГДЕ
РолиИсполнителейНазначение.ТипПользователей = Значение(Справочник.Пользователи.ПустаяСсылка)</queryText>
РолиИсполнителейНазначениеПереопределяемый.ТипПользователей = Значение(Справочник.Пользователи.ПустаяСсылка)</queryText>
<mainTable>Catalog.РолиИсполнителей</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
@@ -28,6 +28,7 @@
Процедура НастроитьОтображениеСпискаРолей()
Если ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей") Тогда
ТекстЗапроса = "ВЫБРАТЬ
| СправочникРолиИсполнителей.Ссылка,
| СправочникРолиИсполнителей.ПометкаУдаления,
@@ -56,7 +57,9 @@
| СправочникРолиИсполнителей.КраткоеПредставление
|ИЗ
| Справочник.РолиИсполнителей КАК СправочникРолиИсполнителей";
Иначе
ТекстЗапроса = "ВЫБРАТЬ
| СправочникРолиИсполнителей.Ссылка,
| СправочникРолиИсполнителей.ПометкаУдаления,
@@ -91,7 +94,12 @@
| РолиИсполнителейНазначение.ТипПользователей = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)";
КонецЕсли;
Список.ТекстЗапроса = ТекстЗапроса;
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ОсновнаяТаблица = "Справочник.РолиИсполнителей";
СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
КонецПроцедуры
&НаСервере
@@ -36,6 +36,7 @@
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя() Тогда
ТекущийПользователь = ПользователиКлиентСервер.ТекущийВнешнийПользователь();
ОбъектАвторизации = Справочники[ТекущийПользователь.ОбъектАвторизации.Метаданные().Имя].ПустаяСсылка();
@@ -43,7 +44,7 @@
ОбъектАвторизации = Справочники.Пользователи.ПустаяСсылка();
КонецЕсли;
Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 50
| РолиИсполнителейНазначение.Ссылка КАК Ссылка
|ИЗ
| Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначение
@@ -1193,31 +1193,31 @@
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
Сертификаты.Ссылка КАК Ссылка,
Сертификаты.ПометкаУдаления КАК ПометкаУдаления,
Сертификаты.Наименование КАК Наименование,
Сертификаты.КомуВыдан КАК КомуВыдан,
Сертификаты.Фирма КАК Фирма,
Сертификаты.Фамилия КАК Фамилия,
Сертификаты.Имя КАК Имя,
Сертификаты.Отчество КАК Отчество,
Сертификаты.Должность КАК Должность,
Сертификаты.КемВыдан КАК КемВыдан,
Сертификаты.ДействителенДо КАК ДействителенДо,
Сертификаты.Подписание КАК Подписание,
Сертификаты.Шифрование КАК Шифрование,
Сертификаты.Отпечаток КАК Отпечаток,
Сертификаты.ДанныеСертификата КАК ДанныеСертификата,
Сертификаты.Программа КАК Программа,
Сертификаты.Отозван КАК Отозван,
Сертификаты.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча,
Сертификаты.Организация КАК Организация,
Сертификаты.Пользователь КАК Пользователь,
Сертификаты.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия,
Сертификаты.Предопределенный КАК Предопределенный,
Сертификаты.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
СертификатыПереопределяемый.Ссылка КАК Ссылка,
СертификатыПереопределяемый.ПометкаУдаления КАК ПометкаУдаления,
СертификатыПереопределяемый.Наименование КАК Наименование,
СертификатыПереопределяемый.КомуВыдан КАК КомуВыдан,
СертификатыПереопределяемый.Фирма КАК Фирма,
СертификатыПереопределяемый.Фамилия КАК Фамилия,
СертификатыПереопределяемый.Имя КАК Имя,
СертификатыПереопределяемый.Отчество КАК Отчество,
СертификатыПереопределяемый.Должность КАК Должность,
СертификатыПереопределяемый.КемВыдан КАК КемВыдан,
СертификатыПереопределяемый.ДействителенДо КАК ДействителенДо,
СертификатыПереопределяемый.Подписание КАК Подписание,
СертификатыПереопределяемый.Шифрование КАК Шифрование,
СертификатыПереопределяемый.Отпечаток КАК Отпечаток,
СертификатыПереопределяемый.ДанныеСертификата КАК ДанныеСертификата,
СертификатыПереопределяемый.Программа КАК Программа,
СертификатыПереопределяемый.Отозван КАК Отозван,
СертификатыПереопределяемый.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча,
СертификатыПереопределяемый.Организация КАК Организация,
СертификатыПереопределяемый.Пользователь КАК Пользователь,
СертификатыПереопределяемый.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия,
СертификатыПереопределяемый.Предопределенный КАК Предопределенный,
СертификатыПереопределяемый.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
ИЗ
Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК Сертификаты
Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыПереопределяемый
ГДЕ
&amp;ДополнительноеУсловие
{ГДЕ
@@ -1225,10 +1225,10 @@
(ВЫБРАТЬ ПЕРВЫЕ 1
ИСТИНА
ИЗ
РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователейПереопределяемый
ГДЕ
СоставыГруппПользователей.Пользователь = Сертификаты.Пользователь
И СоставыГруппПользователей.ГруппаПользователей В (&amp;ГруппаПользователей)))}</queryText>
СоставыГруппПользователейПереопределяемый.Пользователь = СертификатыПереопределяемый.Пользователь
И СоставыГруппПользователейПереопределяемый.ГруппаПользователей В (&amp;ГруппаПользователей)))}</queryText>
<mainTable>Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
@@ -17,12 +17,18 @@
ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата =
ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
"Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата");
ТекстЗапроса = Список.ТекстЗапроса;
ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ДополнитьЗапросСпискаСертификатов(
Список.ТекстЗапроса);
ТекстЗапроса);
Иначе
Список.ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "&ДополнительноеУсловие", "ИСТИНА");
ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "&ДополнительноеУсловие", "ИСТИНА");
КонецЕсли;
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
ГруппаПользователейПриИзмененииНаСервере();
КонецПроцедуры
@@ -503,31 +503,31 @@
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
Сертификаты.Ссылка КАК Ссылка,
Сертификаты.ПометкаУдаления КАК ПометкаУдаления,
Сертификаты.Наименование КАК Наименование,
Сертификаты.КомуВыдан КАК КомуВыдан,
Сертификаты.Фирма КАК Фирма,
Сертификаты.Фамилия КАК Фамилия,
Сертификаты.Имя КАК Имя,
Сертификаты.Отчество КАК Отчество,
Сертификаты.Должность КАК Должность,
Сертификаты.КемВыдан КАК КемВыдан,
Сертификаты.ДействителенДо КАК ДействителенДо,
Сертификаты.Подписание КАК Подписание,
Сертификаты.Шифрование КАК Шифрование,
Сертификаты.Отпечаток КАК Отпечаток,
Сертификаты.ДанныеСертификата КАК ДанныеСертификата,
Сертификаты.Программа КАК Программа,
Сертификаты.Отозван КАК Отозван,
Сертификаты.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча,
Сертификаты.Организация КАК Организация,
Сертификаты.Пользователь КАК Пользователь,
Сертификаты.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия,
Сертификаты.Предопределенный КАК Предопределенный,
Сертификаты.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
СертификатыПереопределяемый.Ссылка КАК Ссылка,
СертификатыПереопределяемый.ПометкаУдаления КАК ПометкаУдаления,
СертификатыПереопределяемый.Наименование КАК Наименование,
СертификатыПереопределяемый.КомуВыдан КАК КомуВыдан,
СертификатыПереопределяемый.Фирма КАК Фирма,
СертификатыПереопределяемый.Фамилия КАК Фамилия,
СертификатыПереопределяемый.Имя КАК Имя,
СертификатыПереопределяемый.Отчество КАК Отчество,
СертификатыПереопределяемый.Должность КАК Должность,
СертификатыПереопределяемый.КемВыдан КАК КемВыдан,
СертификатыПереопределяемый.ДействителенДо КАК ДействителенДо,
СертификатыПереопределяемый.Подписание КАК Подписание,
СертификатыПереопределяемый.Шифрование КАК Шифрование,
СертификатыПереопределяемый.Отпечаток КАК Отпечаток,
СертификатыПереопределяемый.ДанныеСертификата КАК ДанныеСертификата,
СертификатыПереопределяемый.Программа КАК Программа,
СертификатыПереопределяемый.Отозван КАК Отозван,
СертификатыПереопределяемый.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча,
СертификатыПереопределяемый.Организация КАК Организация,
СертификатыПереопределяемый.Пользователь КАК Пользователь,
СертификатыПереопределяемый.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия,
СертификатыПереопределяемый.Предопределенный КАК Предопределенный,
СертификатыПереопределяемый.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
ИЗ
Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК Сертификаты
Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыПереопределяемый
ГДЕ
&amp;ДополнительноеУсловие</queryText>
<mainTable>Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования</mainTable>
@@ -25,12 +25,18 @@
ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата =
ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
"Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата");
ТекстЗапроса = Список.ТекстЗапроса;
ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ДополнитьЗапросСпискаСертификатов(
Список.ТекстЗапроса);
ТекстЗапроса);
Иначе
Список.ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "&ДополнительноеУсловие", "ИСТИНА");
ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "&ДополнительноеУсловие", "ИСТИНА");
КонецЕсли;
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
КонецПроцедуры
&НаКлиенте
@@ -296,14 +296,14 @@
Запрос.Текст =
"ВЫБРАТЬ
| Сертификаты.Ссылка КАК Ссылка,
| Сертификаты.Отпечаток,
| Сертификаты.Отпечаток КАК Отпечаток,
| Сертификаты.Наименование КАК Представление,
| Сертификаты.ДанныеСертификата
| Сертификаты.ДанныеСертификата КАК ДанныеСертификата
|ИЗ
| Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК Сертификаты
|ГДЕ
| НЕ(НЕ Сертификаты.Ссылка В (&Ссылки)
| И НЕ Сертификаты.Отпечаток В (&Отпечатки))";
| (Сертификаты.Ссылка В (&Ссылки)
| ИЛИ Сертификаты.Отпечаток В (&Отпечатки))";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Строки = ТаблицаСертификатов.НайтиСтроки(Новый Структура("Ссылка", Выборка.Ссылка));
@@ -10,8 +10,8 @@
Возврат;
КонецЕсли;
ЭтоСеансСУстановленнымиЗначениямиРазделителей = РаботаВМоделиСервисаПовтИсп.РазделениеВключено()
И РаботаВМоделиСервисаПовтИсп.ДоступноИспользованиеРазделенныхДанных();
ЭтоСеансСУстановленнымиЗначениямиРазделителей = РаботаВМоделиСервиса.РазделениеВключено()
И РаботаВМоделиСервиса.ДоступноИспользованиеРазделенныхДанных();
// Начальная настройка группировки.
ГруппировкаДанных = Список.КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
@@ -9,7 +9,7 @@
КонецЕсли;
// Инициализируем внутренние флаги.
МожноДобавлятьВСправочник = Справочники.СтраныМира.ЕстьПравоДобавления();
МожноДобавлятьВСправочник = УправлениеКонтактнойИнформациейСлужебный.ЕстьПравоДобавления();
Если Параметры.РазрешитьДанныеКлассификатора=Неопределено Тогда
РазрешитьДанныеКлассификатора = Истина;
@@ -44,19 +44,7 @@
Возврат;
КонецЕсли;
ОбработкаПолученияДанныхВыбораЗаполнение(ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункцииКлиент
Процедура ОбработкаПолученияДанныхВыбораЗаполнение(ДанныеВыбора, Параметры, СтандартнаяОбработка)
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
ОбработкаПолученияДанныхВыбораЗаполнениеСервер(ДанныеВыбора, Параметры, СтандартнаяОбработка)
#КонецЕсли
УправлениеКонтактнойИнформациейСлужебныйВызовСервера.ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
КонецПроцедуры
@@ -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>
<defaultListForm>Catalog.СтраныМира.Form.ФормаСписка</defaultListForm>
<defaultChoiceForm>Catalog.СтраныМира.Form.ФормаСписка</defaultChoiceForm>
<choiceHistoryOnInput>DontUse</choiceHistoryOnInput>
<attributes uuid="f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8">
<name>НаименованиеПолное</name>
<synonym>
@@ -52,8 +52,9 @@
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УстановитьПривилегированныйРежим(Истина);
Логин = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка,"Логин");
Пароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка);
Мандат = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка, "Логин, Пароль");
Логин = Мандат.Логин;
Пароль = Мандат.Пароль;
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
@@ -137,7 +138,6 @@
&НаКлиенте
Процедура ПроверитьВозможностьСинхронизацииСОблачнымСервисом()
СообщениеОбОшибке = "";
СтруктураРезультата = Неопределено;
ВыполнитьПроверкуПодключения(Объект.Ссылка, СтруктураРезультата);
@@ -829,7 +829,7 @@
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>АвторизацияПриОтправкеПисем</name>
<name>ЛогинИПарольПриОтправкеПисем</name>
<id>78</id>
<items xsi:type="form:FormField">
<name>ИмяПользователяДляОтправкиПисем</name>
@@ -930,44 +930,6 @@
<textSize>Normal</textSize>
</extInfo>
</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>
<enabled>true</enabled>
<userVisible>
@@ -975,10 +937,10 @@
</userVisible>
<title>
<key>ru</key>
<value>Авторизация при отправке писем</value>
<value>Логин и пароль при отправке писем</value>
</title>
<extendedTooltip>
<name>АвторизацияПриОтправкеПисемРасширеннаяПодсказка</name>
<name>ЛогинИПарольПриОтправкеПисемРасширеннаяПодсказка</name>
<id>79</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1126,24 +1088,23 @@
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ИспользоватьЗащищенноеСоединениеДляИсходящейПочты</name>
<id>97</id>
<title>
<key>ru</key>
<value>Использовать безопасное соединение (SSL)</value>
</title>
<name>ШифрованиеПриОтправкеПочты</name>
<id>262</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИспользоватьЗащищенноеСоединениеДляИсходящейПочты</segments>
<segments>ШифрованиеПриОтправкеПочты</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<handlers>
<event>OnChange</event>
<name>ШифрованиеПриОтправкеПочтыПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ИспользоватьЗащищенноеСоединениеДляИсходящейПочтыРасширеннаяПодсказка</name>
<id>99</id>
<name>ШифрованиеПриОтправкеПочтыРасширеннаяПодсказка</name>
<id>264</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -1152,16 +1113,36 @@
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИспользоватьЗащищенноеСоединениеДляИсходящейПочтыКонтекстноеМеню</name>
<id>98</id>
<name>ШифрованиеПриОтправкеПочтыКонтекстноеМеню</name>
<id>263</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<type>RadioButtonField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<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 xsi:type="form:FormGroup">
<name>ДлительностьОжиданияИсходящейПочты</name>
@@ -1280,44 +1261,6 @@
<items xsi:type="form:FormGroup">
<name>Группа1</name>
<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>
<enabled>true</enabled>
<userVisible>
@@ -1512,12 +1455,15 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>НастройкиСервераВходящейПочты</name>
<id>109</id>
<items xsi:type="form:FormField">
<name>ИспользоватьБезопасныйВходНаСерверВходящейПочты</name>
<id>106</id>
<name>Протокол</name>
<id>116</id>
<title>
<key>ru</key>
<value>Безопасная проверка пароля</value>
<value>Протокол</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -1525,12 +1471,15 @@
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИспользоватьБезопасныйВходНаСерверВходящейПочты</segments>
<segments>Протокол</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<handlers>
<event>OnChange</event>
<name>ПротоколПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ИспользоватьБезопасныйВходНаСерверВходящейПочтыРасширеннаяПодсказка</name>
<id>108</id>
<name>ПротоколРасширеннаяПодсказка</name>
<id>118</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -1539,20 +1488,42 @@
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИспользоватьБезопасныйВходНаСерверВходящейПочтыКонтекстноеМеню</name>
<id>107</id>
<name>ПротоколКонтекстноеМеню</name>
<id>117</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<type>InputField</type>
<markRequiredComplete>true</markRequiredComplete>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
<extInfo xsi:type="form:InputFieldExtInfo">
<width>8</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch>
<wrap>true</wrap>
<listChoiceMode>true</listChoiceMode>
<autoMarkIncomplete>true</autoMarkIncomplete>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<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>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>НастройкиСервераВходящейПочты</name>
<id>109</id>
<name>ПротоколИПортСервераВходящейПочты</name>
<id>114</id>
<items xsi:type="form:FormField">
<name>СерверВходящейПочты</name>
<id>111</id>
@@ -1603,71 +1574,6 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ПротоколИПортСервераВходящейПочты</name>
<id>114</id>
<items xsi:type="form:FormField">
<name>Протокол</name>
<id>116</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>
<handlers>
<event>OnChange</event>
<name>ПротоколПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ПротоколРасширеннаяПодсказка</name>
<id>118</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПротоколКонтекстноеМеню</name>
<id>117</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<markRequiredComplete>true</markRequiredComplete>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<width>8</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<listChoiceMode>true</listChoiceMode>
<autoMarkIncomplete>true</autoMarkIncomplete>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<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>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ПортВходящейПочты</name>
<id>119</id>
@@ -1747,44 +1653,6 @@
<items xsi:type="form:FormGroup">
<name>ТипСоединенияИДлительностьОжидания</name>
<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>
<enabled>true</enabled>
<userVisible>
@@ -1814,6 +1682,63 @@
<currentRowUse>Auto</currentRowUse>
</extInfo>
</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>
<enabled>true</enabled>
<userVisible>
@@ -2868,7 +2793,7 @@ vasyapupkin@example.com завершена.</value>
</items>
<items xsi:type="form:Button">
<name>КнопкаОтмена</name>
<id>18</id>
<id>268</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -2876,7 +2801,7 @@ vasyapupkin@example.com завершена.</value>
</userVisible>
<extendedTooltip>
<name>КнопкаОтменаРасширеннаяПодсказка</name>
<id>19</id>
<id>269</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -2884,7 +2809,7 @@ vasyapupkin@example.com завершена.</value>
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.StandardCommand.Cancel</commandName>
<commandName>Form.Command.Отмена</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
@@ -3679,6 +3604,59 @@ vasyapupkin@example.com завершена.</value>
<common>true</common>
</edit>
</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>
<name>Назад</name>
<title>
@@ -3733,6 +3711,28 @@ vasyapupkin@example.com завершена.</value>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</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>
<name>КонтекстныйРежим</name>
<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");
Настройки.Вставить("СерверВходящейПочты", "pop." + ИмяСервераВУчетнойЗаписи);
Настройки.Вставить("ПортСервераВходящейПочты", 995);
Настройки.Вставить("Протокол", "IMAP");
Настройки.Вставить("СерверВходящейПочты", "imap." + ИмяСервераВУчетнойЗаписи);
Настройки.Вставить("ПортСервераВходящейПочты", 993);
Настройки.Вставить("ИспользоватьЗащищенноеСоединениеДляВходящейПочты", Истина);
Настройки.Вставить("ИспользоватьБезопасныйВходНаСерверВходящейПочты", Ложь);
Настройки.Вставить("СерверИсходящейПочты", "smtp." + ИмяСервераВУчетнойЗаписи);
Настройки.Вставить("ПортСервераИсходящейПочты", 465);
Настройки.Вставить("ИспользоватьЗащищенноеСоединениеДляИсходящейПочты", Истина);
Настройки.Вставить("ПортСервераИсходящейПочты", 587);
Настройки.Вставить("ИспользоватьЗащищенноеСоединениеДляИсходящейПочты", Ложь);
Настройки.Вставить("ИспользоватьБезопасныйВходНаСерверИсходящейПочты", Ложь);
Настройки.Вставить("ДлительностьОжиданияСервера", 30);
@@ -44,7 +44,7 @@
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Items.Список.CurrentData.Ref</segments>
<segments>Items.Список.CurrentData.Ссылка</segments>
</dataPath>
<extendedTooltip>
<name>ФормаСправочникУчетныеЗаписиЭлектроннойПочтыПроверитьУчетнуюЗаписьРасширеннаяПодсказка</name>
@@ -121,7 +121,7 @@
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.Description</segments>
<segments>Список.Наименование</segments>
</dataPath>
<defaultItem>true</defaultItem>
<extendedTooltip>
@@ -276,7 +276,7 @@
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Список.Ref</segments>
<segments>Список.Ссылка</segments>
</dataPath>
<extendedTooltip>
<name>СсылкаРасширеннаяПодсказка</name>
@@ -429,9 +429,16 @@
<userSettingsGroup>ГруппаПользовательскихНастроек</userSettingsGroup>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>Отборы</name>
<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>
@@ -467,6 +474,72 @@
<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>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Отборы</value>
</title>
<extendedTooltip>
<name>ОтборыРасширеннаяПодсказка</name>
<id>50</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">
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<autoCommandBar>
<name>Форма_КоманднаяПанель</name>
<id>-1</id>
@@ -501,11 +574,54 @@
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ref</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ссылка</segments>
</notDefaultUseAlwaysAttributes>
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
СправочникУчетныеЗаписиЭлектроннойПочты.Ссылка КАК Ссылка,
СправочникУчетныеЗаписиЭлектроннойПочты.ПометкаУдаления КАК ПометкаУдаления,
СправочникУчетныеЗаписиЭлектроннойПочты.Наименование КАК Наименование,
СправочникУчетныеЗаписиЭлектроннойПочты.SMTPАутентификация КАК SMTPАутентификация,
СправочникУчетныеЗаписиЭлектроннойПочты.АдресЭлектроннойПочты КАК АдресЭлектроннойПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ВремяОжидания КАК ВремяОжидания,
СправочникУчетныеЗаписиЭлектроннойПочты.ИмяПользователя КАК ИмяПользователя,
СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьБезопасныйВходНаСерверВходящейПочты КАК ИспользоватьБезопасныйВходНаСерверВходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьБезопасныйВходНаСерверИсходящейПочты КАК ИспользоватьБезопасныйВходНаСерверИсходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьДляОтправки КАК ИспользоватьДляОтправки,
СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьДляПолучения КАК ИспользоватьДляПолучения,
СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьЗащищенноеСоединениеДляВходящейПочты КАК ИспользоватьЗащищенноеСоединениеДляВходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты КАК ИспользоватьЗащищенноеСоединениеДляИсходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ОставлятьКопииСообщенийНаСервере КАК ОставлятьКопииСообщенийНаСервере,
СправочникУчетныеЗаписиЭлектроннойПочты.ПериодХраненияСообщенийНаСервере КАК ПериодХраненияСообщенийНаСервере,
СправочникУчетныеЗаписиЭлектроннойПочты.Пользователь КАК Пользователь,
СправочникУчетныеЗаписиЭлектроннойПочты.ПользовательSMTP КАК ПользовательSMTP,
СправочникУчетныеЗаписиЭлектроннойПочты.ПортСервераВходящейПочты КАК ПортСервераВходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ПортСервераИсходящейПочты КАК ПортСервераИсходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.ПротоколВходящейПочты КАК ПротоколВходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.СерверВходящейПочты КАК СерверВходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.СерверИсходящейПочты КАК СерверИсходящейПочты,
СправочникУчетныеЗаписиЭлектроннойПочты.СпособPOP3Аутентификации КАК СпособPOP3Аутентификации,
СправочникУчетныеЗаписиЭлектроннойПочты.СпособSMTPАутентификации КАК СпособSMTPАутентификации,
СправочникУчетныеЗаписиЭлектроннойПочты.ТребуетсяВходНаСерверПередОтправкой КАК ТребуетсяВходНаСерверПередОтправкой,
СправочникУчетныеЗаписиЭлектроннойПочты.УдалитьВПредставлениеВключатьИмяПользователя КАК УдалитьВПредставлениеВключатьИмяПользователя,
СправочникУчетныеЗаписиЭлектроннойПочты.УдалитьОтветственныйЗаОбработкуПисем КАК УдалитьОтветственныйЗаОбработкуПисем,
СправочникУчетныеЗаписиЭлектроннойПочты.УдалитьПароль КАК УдалитьПароль,
СправочникУчетныеЗаписиЭлектроннойПочты.УдалитьПарольSMTP КАК УдалитьПарольSMTP,
СправочникУчетныеЗаписиЭлектроннойПочты.ОтправлятьСкрытыеКопииПисемНаЭтотАдрес КАК ОтправлятьСкрытыеКопииПисемНаЭтотАдрес,
СправочникУчетныеЗаписиЭлектроннойПочты.ВладелецУчетнойЗаписи КАК ВладелецУчетнойЗаписи,
СправочникУчетныеЗаписиЭлектроннойПочты.Предопределенный КАК Предопределенный,
СправочникУчетныеЗаписиЭлектроннойПочты.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
ЕСТЬNULL(Пользователи.Недействителен, ЛОЖЬ) КАК ВладелецНедействителен
ИЗ
Справочник.УчетныеЗаписиЭлектроннойПочты КАК СправочникУчетныеЗаписиЭлектроннойПочты
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
ПО СправочникУчетныеЗаписиЭлектроннойПочты.ВладелецУчетнойЗаписи = Пользователи.Ссылка</queryText>
<mainTable>Catalog.УчетныеЗаписиЭлектроннойПочты</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
<customQuery>true</customQuery>
<autoSaveUserSettings>true</autoSaveUserSettings>
<getInvisibleFieldPresentations>true</getInvisibleFieldPresentations>
</extInfo>
@@ -527,6 +643,23 @@
<common>true</common>
</edit>
</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>
<navigationPanel/>
<commandBar/>
@@ -3,9 +3,18 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат;
КонецЕсли;
Элементы.ПоказыватьПерсональныеУчетныеЗаписиПользователей.Видимость = Пользователи.ЭтоПолноправныйПользователь();
ПереключитьВидимостьПерсональныхУчетныхЗаписей(Список, ПоказыватьПерсональныеУчетныеЗаписиПользователей);
ПереключитьВидимостьНедействительныхУчетныхЗаписей(Список, ПоказыватьНедействительные);
Элементы.ВладелецУчетнойЗаписи.Видимость = ПоказыватьПерсональныеУчетныеЗаписиПользователей;
Элементы.ПоказыватьНедействительные.Доступность = ПоказыватьПерсональныеУчетныеЗаписиПользователей;
КонецПроцедуры
#КонецОбласти
@@ -16,6 +25,12 @@
Процедура ПоказыватьПерсональныеУчетныеЗаписиПользователейПриИзменении(Элемент)
ПереключитьВидимостьПерсональныхУчетныхЗаписей(Список, ПоказыватьПерсональныеУчетныеЗаписиПользователей);
Элементы.ВладелецУчетнойЗаписи.Видимость = ПоказыватьПерсональныеУчетныеЗаписиПользователей;
Элементы.ПоказыватьНедействительные.Доступность = ПоказыватьПерсональныеУчетныеЗаписиПользователей;
КонецПроцедуры
&НаКлиенте
Процедура ПоказыватьНедействительныеПриИзменении(Элемент)
ПереключитьВидимостьНедействительныхУчетныхЗаписей(Список, ПоказыватьНедействительные);
КонецПроцедуры
#КонецОбласти
@@ -32,4 +47,26 @@
Не ПоказыватьПерсональныеУчетныеЗаписиПользователей);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПереключитьВидимостьНедействительныхУчетныхЗаписей(Список, ПоказыватьНедействительные)
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "ВладелецНедействителен", Ложь, ВидСравненияКомпоновкиДанных.Равно, ,
Не ПоказыватьНедействительные);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
Список.УсловноеОформление.Элементы.Очистить();
Элемент = Список.УсловноеОформление.Элементы.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВладелецНедействителен");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
КонецПроцедуры
#КонецОбласти
@@ -11,23 +11,32 @@
<div>Укажите <strong>Имя отправителя писем</strong> - имя владельца учетной записи, которое будет указываться в корреспонденции, при этом оно может отличаться от имени пользователя в программе, например, <a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователь</a> "Администратор", а имя его "Иван Иванович".</div>
</li><li>
<div>Укажите, как <strong>Использовать учетную запись</strong>:</div>
</li><li>
<ul><li>
<div>Включите флажок <strong>Для отправки писем</strong>;</div>
</li><li>
<div>Включите флажок <strong>Для получения писем</strong>.</div></li></ul><h3>Отправка писем (настройка сервера исходящей почты)</h3>
<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>.
</li><li>В поле <strong>Сервер</strong> укажите адрес SMTP-сервера, например, "smtp.Server.net".
</li><li>Укажите <strong>Порт</strong> компьютера для отправки почтовых сообщений, например, "465".
</li><li>Включите флажок <strong>Использовать безопасное соединение</strong> (SSL).
</li><li>При необходимости включите флажок <strong>Требуется вход на сервер перед отправкой</strong>.</li></ul><h3>Получение писем (настройка сервера входящей почты) </h3>
<div>Включите флажок <strong>Для получения писем</strong>.</div></li></ul></li><li>
<div>Укажите, <strong>Для кого учетная запись</strong>:</div>
<ul><li>
<div><strong>Для всех</strong>;</div>
</li><li>
<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>, он может отличаться от основного, в таком случае он будет предназначен только для получения писем.
</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> сервера входящей почты: POP или IMAP.
</li><li>Укажите <strong>Порт</strong> компьютера для получения входящей почты, например, 993.
</li><li>Включите флажок <strong>Использовать безопасное соединение (SSL)</strong>.
</li><li>Включите флажок <strong>Оставлять копии писем на сервере</strong>, для того чтобы программа не удалила письма в папке "Входящие" почтового ящика электронной почты. По умолчанию флажок отключен, в этом случае все письма после получения будут удалены с почтового сервера.
</li><li>Определите срок хранения писем на почтовом сервере с помощью поля <strong>Удалять письма с сервера через</strong> - например, через "10 дней".</li></ul><h3>Прочие настройки</h3>
</li><li>Выберите, когда производить <strong>Шифрование</strong>:
<ul><li><strong>Авто</strong>;
</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>
<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Изменен = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ТребуетсяВходНаСерверПередОтправкойПриИзменении(Элемент)
Элементы.ПолучениеПисем.Доступность = ДоступноПолучениеПисем Или Объект.ТребуетсяВходНаСерверПередОтправкой;
КонецПроцедуры
&НаКлиенте
Процедура ДляКогоУчетнаяЗаписьПриИзменении(Элемент)
Элементы.ПользовательУчетнойЗаписи.Доступность = ВидУчетнойЗаписи = "Персональная";
@@ -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>
<ul><li>При попытке сохранения программа проверяет введенные учетные записи электронной почты (пытается отослать пробное сообщение). Учетные записи, не прошедшие проверку, не сохраняются.
</li><li>Нажмите <strong>Создать</strong>, введите необходимые поля:
<ul><li>Укажите <strong>Адрес электронной почты</strong> учетной записи в формате <a href="mailto:name@server.net">name@server.net</a>;
</li><li>Введите <strong>Пароль</strong> учетной записи. Для системных учетных записей рекомендуется запомнить пароль, для того чтобы программа могла рассылать сообщения от такой учетной записи без участия пользователя. Тем не менее, решение о хранении паролей в информационной базе принимается в каждом случае индивидуально;
<ul><li>Укажите <strong>Адрес почты</strong> учетной записи в формате <a href="mailto:name@server.net">name@server.net</a>;
</li><li>Введите <strong>Пароль</strong> учетной записи;
</li><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>С помощью переключателя определите способ создания учетной записи:
<ul><li><strong>Определить параметры подключения автоматически</strong> (рекомендуется);
<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
// имя сервера с префиксом "imap.", защищенное соединение.
ВариантНастройки = Результат.Добавить();
@@ -629,6 +712,14 @@
Результат.Колонки.Добавить("ПортСервераИсходящейПочты");
Результат.Колонки.Добавить("ИспользоватьЗащищенноеСоединениеДляИсходящейПочты");
Если ИмяСервераВУчетнойЗаписи = "icloud.com" Тогда
ВариантНастройки = Результат.Добавить();
ВариантНастройки.СерверИсходящейПочты = "smtp.mail.me.com";
ВариантНастройки.ПортСервераИсходящейПочты = 587;
ВариантНастройки.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты = Ложь;
Возврат Результат;
КонецЕсли;
// Стандартные настройки, подходящие для ящиков gmail, yandex и mail.ru
// имя сервера с префиксом "smtp.", защищенное соединение, порт 465.
ВариантНастройки = Результат.Добавить();
@@ -688,6 +779,34 @@
КонецФункции
Функция РеквизитыТребующиеВводаПароляДляИзменения() Экспорт
Возврат "ИспользоватьДляОтправки,ИспользоватьДляПолучения,СерверВходящейПочты,СерверИсходящейПочты,ВладелецУчетнойЗаписи,ИспользоватьЗащищенноеСоединениеДляВходящейПочты,ИспользоватьЗащищенноеСоединениеДляИсходящейПочты,ИспользоватьБезопасныйВходНаСерверВходящейПочты,ИспользоватьБезопасныйВходНаСерверИсходящейПочты,Пользователь,ПользовательSMTP";
КонецФункции
Функция ТребуетсяПроверкаПароля(Ссылка, ЗначенияРеквизитовПередЗаписью) Экспорт
Если Ссылка.Пустая() Тогда
Возврат Ложь;
КонецЕсли;
СписокРеквизитов = РеквизитыТребующиеВводаПароляДляИзменения();
ЗаписанныеЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, СписокРеквизитов);
Результат = ЗначениеЗаполнено(ЗаписанныеЗначенияРеквизитов.ВладелецУчетнойЗаписи);
Если Результат Тогда
ДоИзменения = Новый Структура(СписокРеквизитов);
ЗаполнитьЗначенияСвойств(ДоИзменения, ЗаписанныеЗначенияРеквизитов);
ПослеИзменения = Новый Структура(СписокРеквизитов);
ЗаполнитьЗначенияСвойств(ПослеИзменения, ЗначенияРеквизитовПередЗаписью);
Результат = ОбщегоНазначения.ЗначениеВСтрокуXML(ДоИзменения) <> ОбщегоНазначения.ЗначениеВСтрокуXML(ПослеИзменения);
КонецЕсли;
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -53,24 +53,20 @@
Возврат;
КонецЕсли;
Если Не ДополнительныеСвойства.Свойство("НеПроверятьИзменениеНастроек") И Не Ссылка.Пустая() Тогда
СписокРеквизитов = "ИспользоватьДляОтправки,ИспользоватьДляПолучения,СерверВходящейПочты,СерверИсходящейПочты,ВладелецУчетнойЗаписи,ИспользоватьЗащищенноеСоединениеДляВходящейПочты,ИспользоватьЗащищенноеСоединениеДляИсходящейПочты,ИспользоватьБезопасныйВходНаСерверВходящейПочты,ИспользоватьБезопасныйВходНаСерверИсходящейПочты,Пользователь,ПользовательSMTP";
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, СписокРеквизитов);
ТребуетсяПроверкаПароля = ЗначениеЗаполнено(ЗначенияРеквизитов.ВладелецУчетнойЗаписи);
Если ТребуетсяПроверкаПароля Тогда
ДоИзменения = Новый Структура(СписокРеквизитов);
ЗаполнитьЗначенияСвойств(ДоИзменения, ЗначенияРеквизитов);
ПослеИзменения = Новый Структура(СписокРеквизитов);
ЗаполнитьЗначенияСвойств(ПослеИзменения, ЭтотОбъект);
ТребуетсяПроверкаПароля = ОбщегоНазначения.ЗначениеВСтрокуXML(ДоИзменения) <> ОбщегоНазначения.ЗначениеВСтрокуXML(ПослеИзменения);
Если Пользователь <> СокрЛП(Пользователь) Тогда
Пользователь = СокрЛП(Пользователь);
КонецЕсли;
Если ПользовательSMTP <> СокрЛП(ПользовательSMTP) Тогда
ПользовательSMTP = СокрЛП(ПользовательSMTP);
КонецЕсли;
Если Не ДополнительныеСвойства.Свойство("НеПроверятьИзменениеНастроек") И Не Ссылка.Пустая() Тогда
ТребуетсяПроверкаПароля = Справочники.УчетныеЗаписиЭлектроннойПочты.ТребуетсяПроверкаПароля(Ссылка, ЭтотОбъект);
Если ТребуетсяПроверкаПароля Тогда
ТекстСообщенияОбОшибке = НСтр("ru = 'Не подтвержден пароль для изменения настроек учетной записи.'");
ПроверкаПароля = Неопределено;
Если Не ДополнительныеСвойства.Свойство("Пароль", ПроверкаПароля) Или Не ПарольВведенВерно(ПроверкаПароля) Тогда
ТекстСообщенияОбОшибке = НСтр("ru = 'Не подтвержден пароль для изменения настроек учетной записи.'");
ВызватьИсключение ТекстСообщенияОбОшибке;
КонецЕсли;
КонецЕсли;
@@ -665,6 +665,8 @@
&НаКлиенте
Процедура Отправить(Команда)
ПриОтправкеФайловПочтой(ПараметрыОтправки, Элементы.Список.ВыделенныеСтроки, Элементы.Папки.ТекущиеДанные.Ссылка , УникальныйИдентификатор);
РаботаСФайламиСлужебныйКлиент.ОтправитьФайлыПоПочте(
Элементы.Список.ВыделенныеСтроки, УникальныйИдентификатор, ПараметрыОтправки, Истина);
@@ -1433,6 +1435,11 @@
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(ТипСправочникаСФайлами, "Предпросмотр", Предпросмотр);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПриОтправкеФайловПочтой(ПараметрыОтправки, Знач ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор)
РаботаСФайламиПереопределяемый.ПриОтправкеФайловПочтой(ПараметрыОтправки, ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьВидимостьПредпросмотра(ИспользоватьПредпросмотр)
+12 -3
View File
@@ -63,7 +63,6 @@
// которые необходимо обновить на новую версию.
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
УстановитьПривилегированныйРежим(Истина);
ОтработаныВсеФайлы = Ложь;
Ссылка = "";
@@ -83,14 +82,13 @@
|
|УПОРЯДОЧИТЬ ПО
| Ссылка";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
МассивСсылок = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок);
КоличествоСсылок = МассивСсылок.Количество();
Если КоличествоСсылок < 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>
</dataPath>
<titleLocation>None</titleLocation>
<excludedCommands>Copy</excludedCommands>
<excludedCommands>Delete</excludedCommands>
<excludedCommands>EndEdit</excludedCommands>
<excludedCommands>MoveDown</excludedCommands>
@@ -118,6 +117,10 @@
<event>BeforeAddRow</event>
<name>ШаблоныПередНачаломДобавления</name>
</handlers>
<handlers>
<event>BeforeDeleteRow</event>
<name>ШаблоныПередУдалением</name>
</handlers>
<handlers>
<event>OnActivateRow</event>
<name>ШаблоныПриАктивизацииСтроки</name>
@@ -212,10 +215,10 @@
<id>40</id>
<autoFill>true</autoFill>
</contextMenu>
<changeRowSet>true</changeRowSet>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount>
<selectionMode>MultiRow</selectionMode>
<rowSelectionMode>Row</rowSelectionMode>
<headerHeight>1</headerHeight>
<footerHeight>1</footerHeight>
@@ -226,7 +229,6 @@
<horizontalLinesBWA>false</horizontalLinesBWA>
<verticalLinesBWA>false</verticalLinesBWA>
<useAlternationRowColorBWA>false</useAlternationRowColorBWA>
<autoInsertNewRow>true</autoInsertNewRow>
<searchOnInput>Auto</searchOnInput>
<initialListView>Auto</initialListView>
<horizontalStretch>true</horizontalStretch>
@@ -515,6 +517,32 @@
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</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">
<name>ФормаИзменить</name>
<id>74</id>
@@ -811,10 +839,10 @@
</edit>
</attributes>
<attributes>
<name>ПустойСписокШаблонов</name>
<name>ПоказыватьФормуВыбораШаблонов</name>
<title>
<key>ru</key>
<value>Пустой список шаблонов</value>
<value>Показывать форму выбора шаблонов</value>
</title>
<id>7</id>
<valueType>
@@ -895,6 +923,55 @@
<common>true</common>
</edit>
</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>
<name>СформироватьИОтправить</name>
<title>
@@ -988,6 +1065,20 @@
<types>Boolean</types>
</valueType>
</parameters>
<parameters>
<name>ПараметрыСообщения</name>
<valueType/>
</parameters>
<parameters>
<name>ВладелецШаблона</name>
<valueType/>
</parameters>
<parameters>
<name>ПодготовитьШаблон</name>
<valueType>
<types>Boolean</types>
</valueType>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -6,8 +6,11 @@
Предмет = Параметры.Предмет;
ВидСообщения = Параметры.ВидСообщения;
РежимВыбора = Параметры.РежимВыбора;
ВладелецШаблона = Параметры.ВладелецШаблона;
ПараметрыСообщения = Параметры.ПараметрыСообщения;
ПодготовитьШаблон = Параметры.ПодготовитьШаблон;
Если ЗначениеЗаполнено(Предмет) Тогда
Если ЗначениеЗаполнено(Предмет) И ТипЗнч(Предмет) <> Тип("Строка") Тогда
ПолноеИмяТипаОснования = Предмет.Метаданные().ПолноеИмя();
КонецЕсли;
@@ -30,21 +33,15 @@
Если РежимВыбора Тогда
Элементы.ФормаСформироватьИОтправить.Видимость = Ложь;
Элементы.ФормаСформировать.Заголовок = НСтр("ru='Выбрать'");
ИначеЕсли ПодготовитьШаблон Тогда
Элементы.ФормаСформироватьИОтправить.Видимость = Ложь;
КонецЕсли;
ЗаполнитьСписокДоступныхШаблонов();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ПустойСписокШаблонов Тогда
ПараметрыОтправки = КонструкторПараметровОтправки();
ПараметрыОтправки.ДополнительныеПараметры.ПреобразовыватьHTMLДляФорматированногоДокумента = Ложь;
СформироватьСообщениеДляОтправки(ПараметрыОтправки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_ШаблоныСообщений" Тогда
@@ -60,6 +57,17 @@
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если НЕ ПоказыватьФормуВыбораШаблонов Тогда
ПараметрыОтправки = КонструкторПараметровОтправки();
ПараметрыОтправки.ДополнительныеПараметры.ПреобразовыватьHTMLДляФорматированногоДокумента = Ложь;
СформироватьСообщениеДляОтправки(ПараметрыОтправки);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыШаблоны
@@ -67,7 +75,16 @@
&НаКлиенте
Процедура ШаблоныПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Отказ = Истина;
Если Копирование И НЕ Группа Тогда
СоздатьНовыйШаблон(Элемент.ТекущиеДанные.Ссылка);
Иначе
СоздатьНовыйШаблон();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ШаблоныПередУдалением(Элемент, Отказ)
Отказ = Истина;
КонецПроцедуры
&НаКлиенте
@@ -157,6 +174,11 @@
Возврат;
КонецЕсли;
Если РежимВыбора Тогда
Закрыть(ТекущиеДанные.Ссылка);
Возврат;
КонецЕсли;
ПараметрыОтправки = КонструкторПараметровОтправки(ТекущиеДанные.Ссылка);
ПараметрыОтправки.ДополнительныеПараметры.ПреобразовыватьHTMLДляФорматированногоДокумента = Истина;
@@ -177,10 +199,18 @@
АдресРезультата = СформироватьСообщениеНаСервере(АдресВременногоХранилища, ПараметрыОтправки, ВидСообщения);
Результат = ПолучитьИзВременногоХранилища(АдресРезультата);
Результат.Вставить("Предмет", Предмет);
Результат.Вставить("Шаблон", ПараметрыОтправки.Шаблон);
Если ПараметрыОтправки.ДополнительныеПараметры.Свойство("ПараметрыСообщения")
И ТипЗнч(ПараметрыОтправки.ДополнительныеПараметры.ПараметрыСообщения) = Тип("Структура") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Результат, ПараметрыСообщения, Ложь);
КонецЕсли;
Если ПараметрыОтправки.ДополнительныеПараметры.ОтправитьСразу Тогда
ПослеФормированияИОтправкиСообщения(Результат, ПараметрыОтправки);
Иначе
Если РежимВыбора Тогда
Если ПодготовитьШаблон Тогда
Закрыть(Результат);
Иначе
Закрыть();
@@ -231,7 +261,7 @@
&НаКлиенте
Процедура ОтравитьСообщениеПроверкаУчетнойЗаписиВыполнена(УчетнаяЗаписьНастроена, ПараметрыОтправки) Экспорт
Если УчетнаяЗаписьНастроена Тогда
Если УчетнаяЗаписьНастроена = Истина Тогда
СформироватьСообщениеДляОтправки(ПараметрыОтправки);
КонецЕсли;
@@ -263,6 +293,7 @@
КонецЕсли;
ДополнительныеПараметры.ИсточникКонтактнойИнформации = Предмет;
ДополнительныеПараметры.Вставить("Предмет", Предмет);
Текст = ?(Сообщение.Свойство("Текст"), Сообщение.Текст, "");
Получатель = ?(Сообщение.Свойство("Получатель"), Сообщение.Получатель.ВыгрузитьЗначения(), Новый СписокЗначений);
МодульОтправкаSMSКлиент.ОтправитьSMS(Получатель, Текст, ДополнительныеПараметры);
@@ -288,15 +319,9 @@
&НаКлиенте
Функция КонструкторПараметровОтправки(Шаблон = Неопределено)
ПараметрыОтправки = Новый Структура();
ПараметрыОтправки.Вставить("Шаблон", Шаблон);
ПараметрыОтправки.Вставить("Предмет", Предмет);
ПараметрыОтправки.Вставить("УникальныйИдентификатор", УникальныйИдентификатор);
ПараметрыОтправки.Вставить("ДополнительныеПараметры", Новый Структура);
ПараметрыОтправки.ДополнительныеПараметры.Вставить("ПреобразовыватьHTMLДляФорматированногоДокумента", Ложь);
ПараметрыОтправки.ДополнительныеПараметры.Вставить("ВидСообщения", ВидСообщения);
ПараметрыОтправки.ДополнительныеПараметры.Вставить("ПроизвольныеПараметры", Новый Соответствие);
ПараметрыОтправки.ДополнительныеПараметры.Вставить("ОтправитьСразу", Ложь);
ПараметрыОтправки = ШаблоныСообщенийКлиентСервер.КонструкторПараметровОтправки(Шаблон, Предмет, УникальныйИдентификатор);
ПараметрыОтправки.ДополнительныеПараметры.ВидСообщения = ВидСообщения;
ПараметрыОтправки.ДополнительныеПараметры.ПараметрыСообщения = ПараметрыСообщения;
Возврат ПараметрыОтправки;
@@ -312,11 +337,17 @@
КонецПроцедуры
&НаКлиенте
Процедура СоздатьНовыйШаблон()
Процедура СоздатьНовыйШаблон(ЗначениеКопирования = Неопределено)
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ВидСообщения" , ВидСообщения);
ПараметрыФормы.Вставить("ПолноеИмяТипаОснования", ПолноеИмяТипаОснования);
ПараметрыФормы.Вставить("ТолькоДляАвтора", Истина);
ПараметрыФормы.Вставить("ВладелецШаблона", ВладелецШаблона);
ПараметрыФормы.Вставить("ЗначениеКопирования", ЗначениеКопирования);
ПараметрыФормы = Новый Структура("ВидСообщения, ПолноеИмяТипаОснования, ТолькоДляАвтора", ВидСообщения, ПолноеИмяТипаОснования, Истина);
Оповещение = Новый ОписаниеОповещения("ОбновитьОкно", ЭтотОбъект);
ОткрытьФорму("Справочник.ШаблоныСообщений.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект,,,, )
ОткрытьФорму("Справочник.ШаблоныСообщений.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект);
КонецПроцедуры
@@ -330,7 +361,7 @@
Шаблоны.Очистить();
ТипШаблона = ?(ПредназначенДляSMS, "SMS", "Письмо");
Запрос = ШаблоныСообщенийСлужебный.ПодготовитьЗапросДляПолученияСпискаШаблонов(ТипШаблона, Предмет);
Запрос = ШаблоныСообщенийСлужебный.ПодготовитьЗапросДляПолученияСпискаШаблонов(ТипШаблона, Предмет, ВладелецШаблона);
РезультатЗапроса = Запрос.Выполнить().Выбрать();
@@ -358,13 +389,15 @@
КонецЦикла;
Если Шаблоны.Количество() = 0 Тогда
ПустойСписокШаблонов = Истина;
Возврат;
НастройкиШаблоновСообщений = ШаблоныСообщенийСлужебныйПовтИсп.ПриОпределенииНастроек();
ПоказыватьФормуВыбораШаблонов = НастройкиШаблоновСообщений.ВсегдаПоказыватьФормуВыбораШаблонов;
Иначе
ПоказыватьФормуВыбораШаблонов = Истина;
КонецЕсли;
Шаблоны.Сортировать("Представление");
Если НЕ РежимВыбора Тогда
Если НЕ РежимВыбора И НЕ ПодготовитьШаблон Тогда
ПерваяСтрока = Шаблоны.Вставить(0);
ПерваяСтрока.Имя = "<БезШаблона>";
ПерваяСтрока.Представление = НСтр("ru = '<Без шаблона>'");
@@ -372,6 +405,12 @@
Если Шаблоны.Количество() = 0 Тогда
Элементы.ФормаСоздать.ТолькоВоВсехДействиях = Ложь;
Элементы.ФормаСоздать.Отображение = ОтображениеКнопки.КартинкаИТекст;
Элементы.ФормаСформировать.Доступность = Ложь;
Элементы.ФормаСформироватьИОтправить.Доступность = Ложь;
Иначе
Элементы.ФормаСформировать.Доступность = Истина;
Элементы.ФормаСформироватьИОтправить.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
@@ -530,6 +530,40 @@
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</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>
<autoCommandBar>
<name>СписокКоманднаяПанель</name>
@@ -712,6 +746,7 @@
ТОГДА &amp;Общий
ИНАЧЕ СправочникШаблоныСообщений.Назначение
КОНЕЦ КАК Назначение,
СправочникШаблоныСообщений.ВладелецШаблона Как ВладелецШаблона,
0 ЕстьФайлы
ИЗ
Справочник.ШаблоныСообщений КАК СправочникШаблоныСообщений
@@ -719,8 +754,8 @@
(&amp;Назначение = &quot;&quot;
ИЛИ СправочникШаблоныСообщений.Назначение = &amp;Назначение)
И (СправочникШаблоныСообщений.ВладелецШаблона = Неопределено
ИЛИ &amp;ПоказыватьКонтекстныеШаблоны)
</queryText>
ИЛИ СправочникШаблоныСообщений.ВладелецШаблона = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
ИЛИ &amp;ПоказыватьКонтекстныеШаблоны)</queryText>
<mainTable>Catalog.ШаблоныСообщений</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
@@ -162,6 +162,7 @@
| Справочник.ШаблоныСообщений КАК ШаблоныСообщений
|ГДЕ
| ШаблоныСообщений.Назначение <> """" И ШаблоныСообщений.Назначение <> ""Служебный""
| И ШаблоныСообщений.Назначение <> &Общий
|
|СГРУППИРОВАТЬ ПО
| ШаблоныСообщений.Назначение
@@ -169,6 +170,7 @@
|УПОРЯДОЧИТЬ ПО
| Назначение";
Запрос.УстановитьПараметр("Общий", ОбщийПредставление);
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл
@@ -177,6 +177,40 @@
<textSize>Normal</textSize>
</extInfo>
</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">
<name>Страницы</name>
<id>40</id>
@@ -3728,6 +3762,21 @@
<common>true</common>
</edit>
</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>
<name>ПроверитьШаблон</name>
<title>
@@ -3967,6 +4016,10 @@
<stringQualifiers/>
</valueType>
</parameters>
<parameters>
<name>ПараметрыСообщения</name>
<valueType/>
</parameters>
<commandInterface>
<navigationPanel>
<cmiFragmentRecord>
@@ -9,6 +9,10 @@
Возврат;
КонецЕсли;
Если Параметры.Свойство("ПараметрыСообщения") Тогда
ПараметрыСообщения = Параметры.ПараметрыСообщения;
КонецЕсли;
Элементы.ПолноеИмяТипаПараметраВводаНаОсновании.СписокВыбора.Добавить("Общий", НСтр("ru='Общий'"));
НастройкиШаблоновСообщений = ШаблоныСообщенийСлужебныйПовтИсп.ПриОпределенииНастроек();
Для каждого ПредметШаблона Из НастройкиШаблоновСообщений.ПредметыШаблонов Цикл
@@ -36,7 +40,7 @@
КонецЕсли;
ОтображениеЭлементовФормы();
ОтображениеЭлементовФормы(НастройкиШаблоновСообщений.ФорматПисьма);
ИнициализироватьФорматыСохранения();
СформироватьСписокРеквизитовИПечатныхФорм();
@@ -54,7 +58,6 @@
Элементы.ГруппаНазначение.Видимость = Ложь;
Элементы.ГруппаДоступ.Видимость = Ложь;
Элементы.ФормаГруппаСообщениеФормируется.Видимость = Ложь;
Элементы.Наименование.Видимость = Ложь;
Элементы.Назначение.Видимость = Ложь;
КонецЕсли;
@@ -85,13 +88,7 @@
КонецЕсли;
КонецЕсли;
Для каждого ПараметрШаблонаТекущийОбъект Из ТекущийОбъект.Параметры Цикл
Отбор = Новый Структура("ИмяПараметра", ПараметрШаблонаТекущийОбъект.ИмяПараметра);
НайденныеСтроки = Объект.Параметры.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
НайденныеСтроки[0].ОписаниеТипа = ПараметрШаблонаТекущийОбъект.ТипПараметра.Получить();
КонецЕсли;
КонецЦикла;
ЗаполнитьПроизвольныеПараметрыИзОбъекта(ТекущийОбъект);
Если ПустаяСтрока(Объект.ПолноеИмяТипаПараметраВводаНаОсновании) Тогда
Объект.Назначение = НСтр("ru='Общий'");
@@ -104,7 +101,9 @@
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ПоместитьНовыеФайлыВоВременноеХранилище(Вложения, УникальныйИдентификатор, Отказ);
Если НЕ ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() Тогда
ПоместитьФайлыИзЛокальнойФСВоВременноеХранилище(Вложения, УникальныйИдентификатор, Отказ);
КонецЕсли;
Если НЕ Объект.ПредназначенДляВводаНаОсновании Тогда
Объект.ПолноеИмяТипаПараметраВводаНаОсновании = "";
@@ -232,15 +231,9 @@
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Для каждого ПараметрШаблонаТекущийОбъект Из ТекущийОбъект.Параметры Цикл
Отбор = Новый Структура("ИмяПараметра", ПараметрШаблонаТекущийОбъект.ИмяПараметра);
НайденныеСтроки = Объект.Параметры.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
НайденныеСтроки[0].ОписаниеТипа = ПараметрШаблонаТекущийОбъект.ТипПараметра.Получить();
КонецЕсли;
КонецЦикла;
ЗаполнитьПроизвольныеПараметрыИзОбъекта(ТекущийОбъект);
ОтображениеЭлементовФормы();
КонецПроцедуры
&НаКлиенте
@@ -643,7 +636,7 @@
Если ТекущиеДанные.Ссылка = ПредопределенноеЗначение("Справочник.ШаблоныСообщенийПрисоединенныеФайлы.ПустаяСсылка") Тогда
ДополнительныеПараметры = Новый Структура("ТекущийИндексВКоллекции", Идентификатор);
ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("СкопироватьВложениеЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ТекстВопроса = НСтр("ru = 'Файл возможно скопировать только после его записи. Записать?'");
ТекстВопроса = НСтр("ru = 'Файл возможно скопировать только после записи шаблона сообщения. Записать?'");
ПоказатьВопрос(ОбработчикОповещенияОЗакрытии, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
СкопироватьФайлВложения(Идентификатор);
@@ -785,13 +778,27 @@
ВидСообщения = Параметры.ВидСообщения;
Если ЗначениеЗаполнено(Параметры.ПолноеИмяТипаОснования) Тогда
Если ЗначениеЗаполнено(Параметры.ПолноеИмяТипаОснования)
И ШаблоныСообщенийСлужебный.ОбъектЯвляетсяПредметомШаблона(Параметры.ПолноеИмяТипаОснования) Тогда
// Контекстный вызов
Объект.ПолноеИмяТипаПараметраВводаНаОсновании = Параметры.ПолноеИмяТипаОснования;
Элементы.ГруппаНазначение.Видимость = Ложь;
Объект.ПредназначенДляВводаНаОсновании = Истина;
ИмяВНазначение = Параметры.ПолноеИмяТипаОснования;
НазначениеШаблона = НастройкиШаблоновСообщений.ПредметыШаблонов.Найти(ИмяВНазначение, "Представление");
Если НазначениеШаблона = Неопределено Тогда
НазначениеШаблона = НастройкиШаблоновСообщений.ПредметыШаблонов.Найти(ИмяВНазначение, "Имя");
КонецЕсли;
Если НазначениеШаблона <> Неопределено Тогда
Объект.ПолноеИмяТипаПараметраВводаНаОсновании = НазначениеШаблона.Имя;
Объект.Назначение = НазначениеШаблона.Представление;
Иначе
Объект.ПолноеИмяТипаПараметраВводаНаОсновании = ИмяВНазначение;
Объект.Назначение = ИмяВНазначение;
КонецЕсли;
ИначеЕсли Параметры.ПараметрыВыбора.Количество() > 0 Тогда
ИмяВНазначение = ?(Параметры.ПараметрыВыбора.Свойство("Назначение"), Параметры.ПараметрыВыбора.Назначение, "");
@@ -883,7 +890,7 @@
КонецПроцедуры
&НаСервере
Процедура ОтображениеЭлементовФормы()
Процедура ОтображениеЭлементовФормы(ФорматаПисьма = "")
Если Объект.ПредназначенДляSMS Тогда
СуффиксЗаголовка = НСтр("ru = 'Шаблон сообщения SMS'");
@@ -904,12 +911,17 @@
Элементы.РеквизитыМенюДобавитьПараметрПочта.Видимость = Истина;
Элементы.РеквизитыКонтекстноеМенюДобавитьПараметрВТекстСообщенияДляSMS.Видимость = Ложь;
Элементы.РеквизитыМенюДобавитьПараметрВТекстСообщенияSMS.Видимость = Ложь;
Если НЕ ФорматаПисьмаПредопределен(ФорматаПисьма) Тогда
Если Объект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда
УстановитьЭлектронноеПисьмоHTML();
Иначе
УстановитьЭлектронноеПисьмоОбычныйТекст();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Заголовок = Объект.Наименование + " (" + СуффиксЗаголовка + ")";
Иначе
@@ -949,6 +961,27 @@
КонецПроцедуры
&НаСервере
Функция ФорматаПисьмаПредопределен(Знач ФорматаПисьма)
Если ЗначениеЗаполнено(ФорматаПисьма) Тогда
Если ФорматаПисьма = "ТолькоHTML" Тогда
Объект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML;
УстановитьЭлектронноеПисьмоHTML();
Элементы.ФормаЭлектронноеПисьмоHTML.Видимость = Ложь;
Возврат Истина;
ИначеЕсли ФорматаПисьма = "ТолькоОбычныйТекст" Тогда
Объект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст;
УстановитьЭлектронноеПисьмоОбычныйТекст();
Элементы.ФормаЭлектронноеПисьмоHTML.Видимость = Ложь;
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаСервере
Процедура УстановитьHTMLДляФорматированногоДокумента(ТекстШаблонаПисьмаHTML, СсылкаНаТекущийОбъект, СписокФайлов = Неопределено)
@@ -987,6 +1020,7 @@
ПараметрыШаблона = ШаблоныСообщенийСлужебный.ПараметрыШаблона(Объект);
СведенияОШаблоне = ШаблоныСообщенийСлужебный.СведенияОШаблоне(ПараметрыШаблона);
ПараметрыШаблона.ПараметрыСообщения = ПараметрыСообщения;
Реквизиты.ПолучитьЭлементы().Очистить();
СписокРеквизитов = РеквизитФормыВЗначение("Реквизиты");
@@ -996,7 +1030,6 @@
СформироватьСписокПечатныхФорм(СведенияОШаблоне);
КонецПроцедуры
&НаСервере
@@ -1192,7 +1225,7 @@
&НаКлиенте
Процедура ДобавитьВложениеВыполнить(Идентификатор = Неопределено)
#Если Не ВебКлиент Тогда
Если НЕ ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() Тогда
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.МножественныйВыбор = Истина;
@@ -1200,7 +1233,7 @@
ОписаниеОповещение = Новый ОписаниеОповещения("ДиалогВыбораФайловПослеВыбора", ЭтотОбъект, ДополнительныеПараметры);
Диалог.Показать(ОписаниеОповещение);
#Иначе
Иначе
Адрес = "";
ВыбранныйФайл = "";
@@ -1208,7 +1241,7 @@
ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("ПомещениеФайлаПриОкончании", ЭтотОбъект, ДополнительныеПараметры);
НачатьПомещениеФайла(ОбработчикОповещенияОЗакрытии, Адрес, ВыбранныйФайл, Истина, УникальныйИдентификатор);
#КонецЕсли
КонецЕсли
КонецПроцедуры
@@ -1332,21 +1365,21 @@
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ПоместитьНовыеФайлыВоВременноеХранилище(Вложения, УникальныйИдентификатор, Отказ)
Перем Данные, ЗагружаемыйФайл, СтрокаТаблицыВложений;
&НаКлиенте
Процедура ПоместитьФайлыИзЛокальнойФСВоВременноеХранилище(Вложения, УникальныйИдентификатор, Отказ)
Для Каждого СтрокаТаблицыВложений Из Вложения Цикл
Если СтрокаТаблицыВложений.Статус = "ВнешнийНовый" Тогда
Попытка
ЗагружаемыйФайл = Новый Файл(СтрокаТаблицыВложений.Имя);
Если ЗагружаемыйФайл.Существует() Тогда
Если НЕ СтрНачинаетсяС(СтрокаТаблицыВложений.Имя, "e1cib") Тогда
Данные = Новый ДвоичныеДанные(СтрокаТаблицыВложений.Имя);
СтрокаТаблицыВложений.Имя = ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор);
КонецЕсли;
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),,"Вложения",, Отказ);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),, "Вложения",, Отказ);
КонецПопытки;
КонецЕсли;
КонецЦикла;
@@ -1401,9 +1434,10 @@
Процедура СкопироватьВложениеЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
Записать();
Если Записать() Тогда
СкопироватьФайлВложения(ДополнительныеПараметры.ТекущийИндексВКоллекции);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
@@ -1652,6 +1686,21 @@
КонецФункции
&НаСервере
Процедура ЗаполнитьПроизвольныеПараметрыИзОбъекта(Знач ТекущийОбъект)
Перем НайденныеСтроки, Отбор, ПараметрШаблонаТекущийОбъект;
Для каждого ПараметрШаблонаТекущийОбъект Из ТекущийОбъект.Параметры Цикл
Отбор = Новый Структура("ИмяПараметра", ПараметрШаблонаТекущийОбъект.ИмяПараметра);
НайденныеСтроки = Объект.Параметры.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
НайденныеСтроки[0].ОписаниеТипа = ПараметрШаблонаТекущийОбъект.ТипПараметра.Получить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Внешняя обработка
&НаСервере
@@ -29,12 +29,18 @@
ЭтотОбъект.ПредназначенДляЭлектронныхПисем = Истина;
ЭтотОбъект.ПредназначенДляSMS = Ложь;
ЭтотОбъект.ПолноеИмяТипаПараметраВводаНаОсновании = НСтр("ru='Общий'");
Если ДанныеЗаполнения.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.HTML
ИЛИ ДанныеЗаполнения.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.HTMLСКартинками Тогда
ЭтотОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML;
Иначе
ЭтотОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда
МодульРаботаСПочтовымиСообщениямиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениямиСлужебный");
ТипыТекстовЭлектронныхПисемHTML = МодульРаботаСПочтовымиСообщениямиСлужебный.ТипТекстовЭлектронныхПисем("HTML");
ТипыТекстовЭлектронныхПисемHTMLСКартинками = МодульРаботаСПочтовымиСообщениямиСлужебный.ТипТекстовЭлектронныхПисем("HTMLСКартинками");
Если ДанныеЗаполнения.ТипТекста = ТипыТекстовЭлектронныхПисемHTML
ИЛИ ДанныеЗаполнения.ТипТекста = ТипыТекстовЭлектронныхПисемHTMLСКартинками Тогда
ЭтотОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
@@ -70,10 +76,10 @@
ЭтотОбъект.ТемаПисьма = ПараметрыШаблона.Тема;
Если ПараметрыШаблона.ФорматПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда
ЭтотОбъект.ТекстШаблонаПисьмаHTML = ПараметрыШаблона.Текст;
ЭтотОбъект.ТекстШаблонаПисьмаHTML = СтрЗаменить(ПараметрыШаблона.Текст, Символы.ПС, "<BR>");
ЭтотОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML;
Иначе
ЭтотОбъект.ТекстШаблонаПисьма = ПараметрыШаблона.Текст;
ЭтотОбъект.ТекстШаблонаПисьма = СтрЗаменить(ПараметрыШаблона.Текст, "<BR>", Символы.ПС);
ЭтотОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст;
КонецЕсли;
@@ -152,7 +152,7 @@
<value>Владелец шаблона</value>
</synonym>
<type>
<types>AnyRef</types>
<types>DefinedType.ВладелецШаблонаСообщения</types>
</type>
<toolTip>
<key>ru</key>
@@ -403,6 +403,7 @@
<value>Редактирует</value>
</synonym>
<type>
<types>CatalogRef.УчетныеЗаписиСинхронизацииФайлов</types>
<types>CatalogRef.Пользователи</types>
</type>
<toolTip>
@@ -411,7 +412,6 @@
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<quickChoice>DontUse</quickChoice>
<createOnInput>Use</createOnInput>
<fillValue xsi:type="core:ReferenceValue">
<value>Catalog.Пользователи.EmptyRef</value>
@@ -522,7 +522,7 @@
<name>ИДФайлаЭлектронногоПисьма</name>
<synonym>
<key>ru</key>
<value>ИДФайла электронного письма</value>
<value>Идентификатор файла электронного письма</value>
</synonym>
<type>
<types>String</types>
@@ -521,7 +521,7 @@
<name>ИДФайлаЭлектронногоПисьма</name>
<synonym>
<key>ru</key>
<value>ИДФайла электронного письма</value>
<value>Идентификатор файла электронного письма</value>
</synonym>
<type>
<types>String</types>
@@ -531,6 +531,81 @@
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</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>
<enabled>true</enabled>
<userVisible>
@@ -23,6 +23,7 @@
Если Объект.Ссылка.Пустая() Тогда
Объект.ВидПереключателя = Перечисления.ВидыПереключателяВАнкетах.Переключатель;
Объект.ВидФлажка = Перечисления.ВидыФлажкаВАнкетах.ПолеВвода;
КонецЕсли;
// СтандартныеПодсистемы.ПодключаемыеКоманды
@@ -291,6 +292,10 @@
Элементы.ГруппаВидПереключателя.ТекущаяСтраница = Элементы.ГруппаВидПереключателяОтображать;
ИначеЕсли Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.Булево") Тогда
Элементы.ГруппаВидПереключателя.ТекущаяСтраница = Элементы.ГруппаВидОтображенияБулевоОтображать;
Иначе
Элементы.ГруппаВидПереключателя.ТекущаяСтраница = Элементы.ГруппаВидПереключателяНеОтображать;
@@ -41,9 +41,8 @@
|ИЗ
| ПланВидовХарактеристик.ВопросыДляАнкетирования КАК ВопросыДляАнкетирования
|ГДЕ
| ВопросыДляАнкетирования.ВидПереключателя = &ПустаяСсылка";
Запрос.Параметры.Вставить("ПустаяСсылка", Перечисления.ВидыПереключателяВАнкетах.ПустаяСсылка());
| (ВопросыДляАнкетирования.ВидПереключателя = ЗНАЧЕНИЕ(Перечисление.ВидыПереключателяВАнкетах.ПустаяСсылка)
| ИЛИ ВопросыДляАнкетирования.ВидФлажка = ЗНАЧЕНИЕ(Перечисление.ВидыФлажкаВАнкетах.ПустаяСсылка))";
Результат = Запрос.Выполнить().Выгрузить();
МассивСсылок = Результат.ВыгрузитьКолонку("Ссылка");
@@ -57,20 +56,14 @@
Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "ПланВидовХарактеристик.ВопросыДляАнкетирования");
ПроблемныхОбъектов = 0;
ОбъектовОбработано = 0;
Пока Выборка.Следующий() Цикл
Попытка
ЗаполнитьРеквизитВидПереключателя(Выборка);
ОбъектовОбработано = ОбъектовОбработано + 1;
ЗаполнитьНовыеРеквизиты(Выборка.Ссылка);
Исключение
// Если не удалось обработать объект, повторяем попытку снова.
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать вопрос для анкетирования: %1 по причине:
|%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>
<dataHistory>Use</dataHistory>
</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">
<name>ФормаЭлемента</name>
<synonym>
@@ -627,44 +627,44 @@
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
Свойства.Ссылка,
Свойства.ВерсияДанных,
Свойства.ПометкаУдаления,
Свойства.Предопределенный,
Свойства.Заголовок,
СвойстваПереопределяемый.Ссылка,
СвойстваПереопределяемый.ВерсияДанных,
СвойстваПереопределяемый.ПометкаУдаления,
СвойстваПереопределяемый.Предопределенный,
СвойстваПереопределяемый.Заголовок,
ВЫБОР
КОГДА Свойства.НаборСвойств = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)
КОГДА СвойстваПереопределяемый.НаборСвойств = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)
ТОГДА &amp;ПредставлениеГруппировкиОбщихСвойств
КОГДА Свойства.НаборСвойств.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)
ТОГДА Свойства.НаборСвойств
ИНАЧЕ Свойства.НаборСвойств.Родитель.Наименование + &quot; (&quot; + Свойства.НаборСвойств.Наименование + &quot;)&quot;
КОГДА СвойстваПереопределяемый.НаборСвойств.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)
ТОГДА СвойстваПереопределяемый.НаборСвойств
ИНАЧЕ СвойстваПереопределяемый.НаборСвойств.Родитель.Наименование + &quot; (&quot; + СвойстваПереопределяемый.НаборСвойств.Наименование + &quot;)&quot;
КОНЕЦ КАК НаборСвойствГруппировка,
Свойства.НаборСвойств,
Свойства.ДополнительныеЗначенияИспользуются,
Свойства.ВладелецДополнительныхЗначений,
Свойства.Наименование,
Свойства.ТипЗначения,
Свойства.ЭтоДополнительноеСведение,
Свойства.МногострочноеПолеВвода,
Свойства.ЗаполнятьОбязательно,
Свойства.ЗаголовокФормыЗначения,
Свойства.ЗаголовокФормыВыбораЗначения,
Свойства.ФорматСвойства,
Свойства.Комментарий,
Свойства.Подсказка,
СвойстваПереопределяемый.НаборСвойств,
СвойстваПереопределяемый.ДополнительныеЗначенияИспользуются,
СвойстваПереопределяемый.ВладелецДополнительныхЗначений,
СвойстваПереопределяемый.Наименование,
СвойстваПереопределяемый.ТипЗначения,
СвойстваПереопределяемый.ЭтоДополнительноеСведение,
СвойстваПереопределяемый.МногострочноеПолеВвода,
СвойстваПереопределяемый.ЗаполнятьОбязательно,
СвойстваПереопределяемый.ЗаголовокФормыЗначения,
СвойстваПереопределяемый.ЗаголовокФормыВыбораЗначения,
СвойстваПереопределяемый.ФорматСвойства,
СвойстваПереопределяемый.Комментарий,
СвойстваПереопределяемый.Подсказка,
ВЫБОР
КОГДА Свойства.ЭтоДополнительноеСведение
КОГДА СвойстваПереопределяемый.ЭтоДополнительноеСведение
ТОГДА 2
ИНАЧЕ 1
КОНЕЦ + ВЫБОР
КОГДА Свойства.Предопределенный
КОГДА СвойстваПереопределяемый.Предопределенный
ТОГДА 6
КОГДА Свойства.ПометкаУдаления
КОГДА СвойстваПереопределяемый.ПометкаУдаления
ТОГДА 3
ИНАЧЕ 0
КОНЕЦ КАК НомерКартинки
ИЗ
ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства</queryText>
ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК СвойстваПереопределяемый</queryText>
<mainTable>ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
@@ -726,6 +726,23 @@
<itemValueType/>
</extInfo>
</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>
<name>ВыборВладельцаДополнительныхЗначений</name>
<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 в.".
</li><li>При этом для всех частей составного типа данных можно произвести их обычные настройки, например, настроить формат даты и определить параметры строки.
</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> - в программе предусмотрена возможность использования значений списка <strong>Пользователи</strong> (и других списков) в качестве дополнительного реквизита (сведения).</li></ul><h3>Особенности ввода дополнительных сведений типа Дополнительное значение или Дополнительное значение (иерархия)</h3>
<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"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:NumberValue">
<value>0</value>
</fillValue>
<content>
<metadata>Constant.МаксимальнаяДлительностьВыполненияИсполняющегоФоновогоЗадания</metadata>
<use>DontUse</use>
@@ -197,7 +199,7 @@
<use>DontUse</use>
</content>
<content>
<metadata>Constant.ЛогинДоступаКСервисуMorpher</metadata>
<metadata>Constant.УдалитьЛогинДоступаКСервисуMorpher</metadata>
<use>DontUse</use>
</content>
<content>
@@ -348,10 +350,6 @@
<metadata>ScheduledJob.ОбновлениеАгрегатов</metadata>
<use>DontUse</use>
</content>
<content>
<metadata>DocumentJournal.Взаимодействия</metadata>
<use>DontUse</use>
</content>
<content>
<metadata>ScheduledJob.ОбновлениеВнешнихКомпонентССайта</metadata>
<use>DontUse</use>
@@ -692,6 +690,10 @@
<metadata>Constant.ДетализироватьОбновлениеИБВЖурналеРегистрации</metadata>
<use>DontUse</use>
</content>
<content>
<metadata>ScheduledJob.СборИОтправкаОтчетовОбОшибках</metadata>
<use>DontUse</use>
</content>
<content>
<metadata>Constant.ИспользоватьСинхронизациюДанных</metadata>
<use>DontUse</use>
@@ -4,8 +4,7 @@
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
СтруктураПользователя = ОткрытьФорму("ОбщаяФорма.ПользователиСервиса", ,
ПараметрыВыполненияКоманды.Источник);
ОткрытьФорму("ОбщаяФорма.ПользователиСервиса",, ПараметрыВыполненияКоманды.Источник);
КонецПроцедуры
@@ -2,10 +2,14 @@
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормы = Новый Структура("ВидСообщения, Предмет");
ПараметрыФормы.ВидСообщения = "СообщениеSMS";
ПараметрыФормы.Предмет = ПараметрКоманды;
ОткрытьФорму("Справочник.ШаблоныСообщений.Форма.СформироватьСообщение", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
ДополнительныеПараметры = Новый Структура("ИмяФормыИсточникаСообщения", "");
Если ТипЗнч(ПараметрыВыполненияКоманды.Источник) = Тип("УправляемаяФорма") Тогда
ДополнительныеПараметры.ИмяФормыИсточникаСообщения = ПараметрыВыполненияКоманды.Источник.ИмяФормы;
КонецЕсли;
ШаблоныСообщенийКлиент.СформироватьСообщение(ПараметрКоманды, "СообщениеSMS",,, ДополнительныеПараметры);
КонецПроцедуры
#КонецОбласти
@@ -2,10 +2,13 @@
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормы = Новый Структура("ВидСообщения, Предмет");
ПараметрыФормы.ВидСообщения = "Письмо";
ПараметрыФормы.Предмет = ПараметрКоманды;
ОткрытьФорму("Справочник.ШаблоныСообщений.Форма.СформироватьСообщение", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
ДополнительныеПараметры = Новый Структура("ИмяФормыИсточникаСообщения", "");
Если ТипЗнч(ПараметрыВыполненияКоманды.Источник) = Тип("УправляемаяФорма") Тогда
ДополнительныеПараметры.ИмяФормыИсточникаСообщения = ПараметрыВыполненияКоманды.Источник.ИмяФормы;
КонецЕсли;
ШаблоныСообщенийКлиент.СформироватьСообщение(ПараметрКоманды, "Письмо",,, ДополнительныеПараметры);
КонецПроцедуры
#КонецОбласти
@@ -9,6 +9,6 @@
<representation>Auto</representation>
<toolTip>
<key>ru</key>
<value>Открыть отчет &quot;Связанные документы&quot;, который отображает связи текущего объекта с другими объектами информационной базы.</value>
<value>Перейти к иерархическому списку связанных документов</value>
</toolTip>
</mdclass:CommonCommand>
Loaded 100 of 632 files, more files were not shown because too many files have changed in this diff. Show more