Author SHA1 Message Date
Компания 1С 7032022f4e 3_1_6_310 2022-08-10 22:40:00 +03:00
Компания 1С 87df78bed4 3_1_6_297 2022-07-27 22:58:00 +03:00
Компания 1С 752ae958a8 3_1_6_283 2022-07-13 22:58:00 +03:00
Компания 1С 52bcc12ca3 3_1_6_271 2022-06-29 22:55:00 +03:00
Компания 1С 16b999090f 3_1_6_257 2022-06-15 22:56:00 +03:00
Компания 1С d01d5b4bec 3_1_6_245 2022-06-02 13:06:00 +03:00
Компания 1С 3b907f4106 3_1_6_227 2022-05-16 15:54:00 +03:00
Компания 1С 84cf7f3c95 3_1_6_209 2022-04-28 13:25:00 +03:00
Компания 1С f54d3317c8 3_1_6_198 2022-04-19 15:04:00 +03:00
Компания 1С 5b5aa608ea 3_1_6_180 2022-04-04 17:00:00 +03:00
Компания 1С 9623494cce 3_1_6_159 2022-03-18 12:14:00 +03:00
Компания 1С 6bf07ee90b 3_1_6_137 2022-03-01 23:21:00 +03:00
Компания 1С 3e5e0c470a 3_1_6_118 2022-02-16 16:31:00 +03:00
Компания 1С 6323e447c0 3_1_6_100 2022-01-31 23:15:00 +03:00
Компания 1С 8df53fc855 3_1_6_62 2021-12-24 12:49:00 +03:00
1253 changed files with 119212 additions and 25106 deletions

No files matched your search

@@ -75,7 +75,7 @@
<skipOnInput>false</skipOnInput>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Информация</picture>
<picture>StdPicture.Information</picture>
</picture>
</extInfo>
</items>
@@ -49,7 +49,7 @@
ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущееЗначение;
КонецЕсли;
ОсновнойЯзык = Метаданные.ОсновнойЯзык.КодЯзыка;
ОсновнойЯзык = ОбщегоНазначения.КодОсновногоЯзыка();
Для каждого Представление Из Параметры.Представления Цикл
@@ -698,6 +698,11 @@
<segments>Объект.ФормулаРасчетаКурса</segments>
</dataPath>
<titleLocation>None</titleLocation>
<toolTip>
<key>ru</key>
<value>Курсы других валют в формуле обозначаются в виде наименований, заключенных в квадратные скобки. Пример:
(0.55 * [Доллар США] + 0.45 * [Евро]) / 2</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>ФормулаРасчетаКурсаРасширеннаяПодсказка</name>
@@ -720,11 +725,16 @@
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>StartChoice</event>
<name>ФормулаРасчетаКурсаНачалоВыбора</name>
</handlers>
<width>35</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch>
<wrap>true</wrap>
<choiceButton>true</choiceButton>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
@@ -926,6 +936,20 @@
<itemValueType/>
</extInfo>
</attributes>
<attributes>
<name>ПредставлениеФормулы</name>
<id>15</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ПараметрыПрописиВалютыНаДругихЯзыках</name>
<title>
@@ -39,6 +39,7 @@
</li>
<li>Задайте способ расчета курса валюты в соответствующем поле, например, <strong>(USD+EUR)/2</strong>.
</li>
<li>Для построения сложных формул можно использовать конструктор, который открывается с помощью кнопки  <img src="StdPicture.InputFieldSelect"></img>.</li>
<li>Допустимыми разделителями дробной части чисел в формуле являются знаки точки и запятой, т.е. правильно:
<ul><li><strong>EUR*1.025</strong>
</li>
@@ -60,6 +60,13 @@
И КодыВалютЗагружаемыхИзИнтернета.НайтиПоЗначению(Объект.Код) <> Неопределено;
Элементы.КурсВалютыЗагружаетсяИзИнтернета.Доступность = ДоступнаЗагрузкаИзИнтернета;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда
МодульКонструкторФормул = ОбщегоНазначения.ОбщийМодуль("КонструкторФормул");
ПредставлениеФормулы = МодульКонструкторФормул.ПредставлениеФормулы(ПараметрыФормулы());
Иначе
Элементы.ФормулаРасчетаКурса.КнопкаВыбора = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -293,4 +300,87 @@
КонецПроцедуры
&НаКлиенте
Процедура ФормулаРасчетаКурсаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда
МодульКонструкторФормулКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонструкторФормулКлиент");
СтандартнаяОбработка = Ложь;
ОписаниеОповещения = Новый ОписаниеОповещения("ПриЗавершенииРедактированияФормулы", ЭтотОбъект);
МодульКонструкторФормулКлиент.НачатьРедактированиеФормулы(ПараметрыФормулы(), ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПараметрыФормулы()
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда
МодульКонструкторФормул = ОбщегоНазначения.ОбщийМодуль("КонструкторФормул");
ПараметрыФормулы = МодульКонструкторФормул.ПараметрыРедактированияФормулы();
ПараметрыФормулы.Формула = Объект.ФормулаРасчетаКурса;
ПараметрыФормулы.СкобкиОперандов = Ложь;
ПараметрыФормулы.Операнды = ОперандыФормулыРасчетаКурса(УникальныйИдентификатор);
ПараметрыФормулы.Операторы = ОператорыФормулыРасчетаКурса(УникальныйИдентификатор);
Возврат ПараметрыФормулы;
КонецЕсли;
КонецФункции
&НаСервереБезКонтекста
Функция ОперандыФормулыРасчетаКурса(УникальныйИдентификатор)
Возврат ПоместитьВоВременноеХранилище(ТаблицаОперандов(), УникальныйИдентификатор);
КонецФункции
&НаСервереБезКонтекста
Функция ОператорыФормулыРасчетаКурса(УникальныйИдентификатор)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда
МодульКонструкторФормул = ОбщегоНазначения.ОбщийМодуль("КонструкторФормул");
СписокОператоров = МодульКонструкторФормул.СписокОператоров("Операторы, ЧисловыеФункции");
Возврат ПоместитьВоВременноеХранилище(СписокОператоров, УникальныйИдентификатор);
КонецЕсли;
КонецФункции
&НаСервереБезКонтекста
Функция ТаблицаОперандов()
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда
МодульКонструкторФормул = ОбщегоНазначения.ОбщийМодуль("КонструкторФормул");
ТаблицаОперандов = МодульКонструкторФормул.ТаблицаПолей();
Для Каждого ОписаниеВалюты Из Справочники.Валюты.КодыВалют() Цикл
Если ЗначениеЗаполнено(СтрСоединить(СтрРазделить(ОписаниеВалюты.СимвольныйКод, "0123456789", Ложь), "")) Тогда
Операнд = ТаблицаОперандов.Добавить();
Операнд.Идентификатор = ОписаниеВалюты.СимвольныйКод;
Операнд.Представление = ОписаниеВалюты.СимвольныйКод;
Операнд.ТипЗначения = Новый ОписаниеТипов("Число");
КонецЕсли;
КонецЦикла;
Возврат ТаблицаОперандов;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ПриЗавершенииРедактированияФормулы(ОписаниеФормулы, ДополнительныеПараметры) Экспорт
Если ОписаниеФормулы = Неопределено Тогда
Возврат;
КонецЕсли;
Объект.ФормулаРасчетаКурса = ОписаниеФормулы.Формула;
ПредставлениеФормулы = ОписаниеФормулы.ПредставлениеФормулы;
Модифицированность = Истина;
КонецПроцедуры
#КонецОбласти
@@ -44,7 +44,8 @@
ТекстЗапроса =
"ВЫБРАТЬ
| Валюты.Ссылка КАК Ссылка,
| Валюты.Наименование КАК СимвольныйКод
| Валюты.Наименование КАК СимвольныйКод,
| Валюты.НаименованиеПолное КАК Представление
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
@@ -297,7 +297,7 @@
| КОНЕЦ КАК Важность
|ИЗ
| НастройкиОбщих КАК НастройкиОбщих
| ПОЛНОЕ СОЕДИНЕНИЕ НастройкиРазделенных КАК НастройкиРазделенных
| ПОЛНОЕ СОЕДИНЕНИЕ НастройкиРазделенных КАК НастройкиРазделенных // АПК:70 - существенно не замедляет запрос, так как в соединяемых таблицах малое количество записей.
| ПО НастройкиОбщих.Ссылка = НастройкиРазделенных.Ссылка
| И НастройкиОбщих.Подсистема = НастройкиРазделенных.Подсистема
|ГДЕ
@@ -1922,78 +1922,67 @@
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВариантыОтчетов.Ссылка,
ВариантыОтчетов.ВерсияДанных,
ВариантыОтчетов.ПометкаУдаления,
ЕСТЬNULL(ВариантыКонфигурации.КлючЗамеров, ВариантыРасширений.КлючЗамеров) КАК КлючЗамеров,
ВариантыОтчетов.Пользовательский,
НЕ ВариантыОтчетов.Пользовательский КАК Предопределенный,
ВариантыОтчетовПереопределяемый.Ссылка,
ВариантыОтчетовПереопределяемый.ПометкаУдаления,
ЕСТЬNULL(ВариантыКонфигурацииПереопределяемый.КлючЗамеров, ВариантыРасширенийПереопределяемый.КлючЗамеров) КАК
КлючЗамеров,
ВариантыОтчетовПереопределяемый.Пользовательский,
НЕ ВариантыОтчетовПереопределяемый.Пользовательский КАК Предопределенный,
ВЫБОР
КОГДА &amp;ЭтоОсновнойЯзык
И (ВариантыОтчетов.Пользовательский
ИЛИ ВариантыОтчетов.ПредопределенныйВариант В (
НЕОПРЕДЕЛЕНО,
ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка)))
ТОГДА ВариантыОтчетов.Наименование
И (ВариантыОтчетовПереопределяемый.Пользовательский
ИЛИ ВариантыОтчетовПереопределяемый.ПредопределенныйВариант В (НЕОПРЕДЕЛЕНО,
ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка)))
ТОГДА ВариантыОтчетовПереопределяемый.Наименование
КОГДА НЕ &amp;ЭтоОсновнойЯзык
И (ВариантыОтчетов.Пользовательский
ИЛИ ВариантыОтчетов.ПредопределенныйВариант В (
НЕОПРЕДЕЛЕНО,
ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка)))
ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияВариантов.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(1000))
И (ВариантыОтчетовПереопределяемый.Пользовательский
ИЛИ ВариантыОтчетовПереопределяемый.ПредопределенныйВариант В (НЕОПРЕДЕЛЕНО,
ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка)))
ТОГДА ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Наименование КАК СТРОКА(150))
КОГДА &amp;ЭтоОсновнойЯзык
ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(1000))
ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Наименование, ПредставленияИзРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(1000))
ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурацииПереопределяемый.Наименование,
ВариантыРасширенийПереопределяемый.Наименование), ВариантыОтчетовПереопределяемый.Наименование) КАК СТРОКА(150))
ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Наименование КАК СТРОКА(150))
КОНЕЦ КАК Наименование,
НЕ ВариантыОтчетов.ТолькоДляАвтора КАК ДоступенВсемПользователям,
ВариантыОтчетов.Отчет,
ВариантыОтчетов.КлючВарианта,
ВариантыОтчетов.ТипОтчета,
ВариантыОтчетов.Автор,
НЕ ВариантыОтчетовПереопределяемый.ТолькоДляАвтора КАК ДоступенВсемПользователям,
ВариантыОтчетовПереопределяемый.Отчет,
ВариантыОтчетовПереопределяемый.КлючВарианта,
ВариантыОтчетовПереопределяемый.ТипОтчета,
ВариантыОтчетовПереопределяемый.Автор,
ВЫБОР
КОГДА &amp;ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) &lt;> &quot;&quot;
ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000))
КОГДА &amp;ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = &quot;&quot;
ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыРасширений.Описание) КАК СТРОКА(1000))
КОГДА НЕ &amp;ЭтоОсновнойЯзык И ПОДСТРОКА(ПредставленияВариантов.Описание, 1, 1) &lt;> &quot;&quot;
ТОГДА ВЫРАЗИТЬ(ПредставленияВариантов.Описание КАК СТРОКА(1000))
ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Описание, ПредставленияИзРасширений.Описание), ВариантыОтчетов.Описание) КАК СТРОКА(1000))
КОГДА ПОДСТРОКА(ВариантыОтчетовПереопределяемый.Описание, 1, 1) &lt;> &quot;&quot;
ТОГДА ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Описание КАК СТРОКА(1000))
КОГДА ПОДСТРОКА(ВариантыОтчетовПереопределяемый.Описание, 1, 1) = &quot;&quot;
ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурацииПереопределяемый.Описание, ВариантыРасширенийПереопределяемый.Описание)
КАК СТРОКА(1000))
ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Описание КАК СТРОКА(1000))
КОНЕЦ КАК Описание,
&amp;ИмяОтчета КАК ИмяОтчета,
СведенияОРасширениях.ПолноеИмяОбъекта КАК ПолноеИмяОтчета,
СведенияОРасширенияхПереопределяемый.ПолноеИмяОбъекта КАК ПолноеИмяОтчета,
ВЫБОР
КОГДА ВариантыОтчетов.ПометкаУдаления = ИСТИНА
КОГДА ВариантыОтчетовПереопределяемый.ПометкаУдаления = ИСТИНА
ТОГДА 4
КОГДА ВариантыОтчетов.Пользовательский = ЛОЖЬ
КОГДА ВариантыОтчетовПереопределяемый.Пользовательский = ЛОЖЬ
ТОГДА 5
ИНАЧЕ 3
КОНЕЦ КАК ИндексКартинки
ИЗ
Справочник.ВариантыОтчетов КАК ВариантыОтчетов
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации
ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений
ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов
ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка
И (ПредставленияВариантов.КодЯзыка = &amp;КодЯзыка)
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияИзКонфигурации
ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзКонфигурации.Ссылка
И (ПредставленияИзКонфигурации.КодЯзыка = &amp;КодЯзыка)
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияИзРасширений
ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзРасширений.Ссылка
И (ПредставленияИзРасширений.КодЯзыка = &amp;КодЯзыка)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК СведенияОРасширениях
ПО СведенияОРасширениях.ВерсияРасширений = &amp;ВерсияРасширений
И СведенияОРасширениях.Идентификатор = ВариантыОтчетов.Отчет
Справочник.ВариантыОтчетов КАК ВариантыОтчетовПереопределяемый
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурацииПереопределяемый
ПО ВариантыОтчетовПереопределяемый.ПредопределенныйВариант = ВариантыКонфигурацииПереопределяемый.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширенийПереопределяемый
ПО ВариантыОтчетовПереопределяемый.ПредопределенныйВариант = ВариантыРасширенийПереопределяемый.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК СведенияОРасширенияхПереопределяемый
ПО СведенияОРасширенияхПереопределяемый.ВерсияРасширений = &amp;ВерсияРасширений
И СведенияОРасширенияхПереопределяемый.Идентификатор = ВариантыОтчетовПереопределяемый.Отчет
ГДЕ
ВариантыОтчетов.Отчет В(&amp;ДоступныеОтчеты)
ВариантыОтчетовПереопределяемый.Отчет В (&amp;ДоступныеОтчеты)
И ВЫБОР
КОГДА Не &amp;ЕстьОтборПоВариантам
ТОГДА НЕ ВариантыОтчетов.ПредопределенныйВариант В (&amp;ОтключенныеВариантыПрограммы)
ИНАЧЕ ВариантыОтчетов.Ссылка В (&amp;ВариантыПользователя)
КОГДА НЕ &amp;ЕстьОтборПоВариантам
ТОГДА НЕ ВариантыОтчетовПереопределяемый.ПредопределенныйВариант В (&amp;ОтключенныеВариантыПрограммы)
ИНАЧЕ ВариантыОтчетовПереопределяемый.Ссылка В (&amp;ВариантыПользователя)
КОНЕЦ</queryText>
<mainTable>Catalog.ВариантыОтчетов</mainTable>
<autoFillAvailableFields>true</autoFillAvailableFields>
@@ -92,36 +92,64 @@
Элементы.СтрокаПоиска.СписокВыбора.ЗагрузитьЗначения(ПерсональныеНастройкиСписка.СтрокаПоискаСписокВыбора);
КонецЕсли;
ОписаниеПоляИмяОтчета =
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя();
Если СуффиксТекущегоЯзыка <> Неопределено Тогда
Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда
СвойстваСписка.ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "ВариантыОтчетов.Наименование", "ВариантыОтчетов.Наименование" + СуффиксТекущегоЯзыка);
СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "ВариантыОтчетов.Описание", "ВариантыОтчетов.Описание" + СуффиксТекущегоЯзыка);
СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "ВариантыКонфигурации.Наименование", "ВариантыКонфигурации.Наименование" + СуффиксТекущегоЯзыка);
СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "ВариантыКонфигурации.Описание", "ВариантыКонфигурации.Описание" + СуффиксТекущегоЯзыка);
КонецЕсли;
Иначе
СвойстваСписка.ТекстЗапроса = ТекстЗапросаПредставленияНаДругихЯзыкахВТабличнойЧасти();
КонецЕсли;
ОписаниеПоляИмяОтчета =
"ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовМетаданных).Имя
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовРасширений).Имя
| ИНАЧЕ ПОДСТРОКА(ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК СТРОКА(150)), 14, 137)
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетовПереопределяемый.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Отчет КАК Справочник.ИдентификаторыОбъектовМетаданных).Имя
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетовПереопределяемый.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Отчет КАК Справочник.ИдентификаторыОбъектовРасширений).Имя
| ИНАЧЕ ПОДСТРОКА(ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Отчет КАК СТРОКА(150)), 14, 137)
|КОНЕЦ";
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
ОписаниеПоляИмяОтчета =
"ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовМетаданных).Имя
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовРасширений).Имя
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ДополнительныеОтчетыИОбработки)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ДополнительныеОтчетыИОбработки).ИмяОбъекта
| ИНАЧЕ ПОДСТРОКА(ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК СТРОКА(150)), 14, 137)
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетовПереопределяемый.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Отчет КАК Справочник.ИдентификаторыОбъектовМетаданных).Имя
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетовПереопределяемый.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Отчет КАК Справочник.ИдентификаторыОбъектовРасширений).Имя
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетовПереопределяемый.Отчет) = ТИП(Справочник.ДополнительныеОтчетыИОбработки)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Отчет КАК Справочник.ДополнительныеОтчетыИОбработки).ИмяОбъекта
| ИНАЧЕ ПОДСТРОКА(ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Отчет КАК СТРОКА(150)), 14, 137)
|КОНЕЦ";
КонецЕсли;
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "&ИмяОтчета", ОписаниеПоляИмяОтчета);
Если Не ЗначениеЗаполнено(СвойстваСписка.ТекстЗапроса) Тогда
СвойстваСписка.ТекстЗапроса = Список.ТекстЗапроса;
КонецЕсли;
СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "&ИмяОтчета", ОписаниеПоляИмяОтчета);
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
Если СуффиксТекущегоЯзыка = Неопределено Тогда
Список.Параметры.УстановитьЗначениеПараметра("КодЯзыка", ТекущийЯзык().КодЯзыка);
КонецЕсли;
Список.Параметры.УстановитьЗначениеПараметра("ДоступныеОтчеты", ВариантыОтчетов.ОтчетыТекущегоПользователя());
Список.Параметры.УстановитьЗначениеПараметра("ОтключенныеВариантыПрограммы", Новый Массив(ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы()));
Список.Параметры.УстановитьЗначениеПараметра("ЭтоОсновнойЯзык", ОбщегоНазначения.ЭтоОсновнойЯзык());
Список.Параметры.УстановитьЗначениеПараметра("КодЯзыка", ТекущийЯзык().КодЯзыка);
Список.Параметры.УстановитьЗначениеПараметра("ВерсияРасширений", ПараметрыСеанса.ВерсияРасширений);
ТекущийЭлемент = Элементы.Список;
@@ -891,4 +919,92 @@
КонецПроцедуры
&НаСервере
Функция ТекстЗапросаПредставленияНаДругихЯзыкахВТабличнойЧасти()
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВариантыОтчетовПереопределяемый.Ссылка,
| ВариантыОтчетовПереопределяемый.ПометкаУдаления,
| ЕСТЬNULL(ВариантыКонфигурацииПереопределяемый.КлючЗамеров, ВариантыРасширенийПереопределяемый.КлючЗамеров) КАК
| КлючЗамеров,
| ВариантыОтчетовПереопределяемый.Пользовательский,
| НЕ ВариантыОтчетовПереопределяемый.Пользовательский КАК Предопределенный,
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзык
| И (ВариантыОтчетовПереопределяемый.Пользовательский
| ИЛИ ВариантыОтчетовПереопределяемый.ПредопределенныйВариант В (НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка),
| ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка)))
| ТОГДА ВариантыОтчетовПереопределяемый.Наименование
| КОГДА НЕ &ЭтоОсновнойЯзык
| И (ВариантыОтчетовПереопределяемый.Пользовательский
| ИЛИ ВариантыОтчетовПереопределяемый.ПредопределенныйВариант В (НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка),
| ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка)))
| ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияВариантов.Наименование, ВариантыОтчетовПереопределяемый.Наименование) КАК
| СТРОКА(150))
| КОГДА &ЭтоОсновнойЯзык
| ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурацииПереопределяемый.Наименование,
| ВариантыРасширенийПереопределяемый.Наименование), ВариантыОтчетовПереопределяемый.Наименование) КАК СТРОКА(150))
| ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Наименование, ПредставленияИзРасширений.Наименование),
| ВариантыОтчетовПереопределяемый.Наименование) КАК СТРОКА(150))
| КОНЕЦ КАК Наименование,
| НЕ ВариантыОтчетовПереопределяемый.ТолькоДляАвтора КАК ДоступенВсемПользователям,
| ВариантыОтчетовПереопределяемый.Отчет,
| ВариантыОтчетовПереопределяемый.КлючВарианта,
| ВариантыОтчетовПереопределяемый.ТипОтчета,
| ВариантыОтчетовПереопределяемый.Автор,
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзык
| И ПОДСТРОКА(ВариантыОтчетовПереопределяемый.Описание, 1, 1) <> """"
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Описание КАК СТРОКА(1000))
| КОГДА &ЭтоОсновнойЯзык
| И ПОДСТРОКА(ВариантыОтчетовПереопределяемый.Описание, 1, 1) = """"
| ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурацииПереопределяемый.Описание, ВариантыРасширенийПереопределяемый.Описание)
| КАК СТРОКА(1000))
| КОГДА НЕ &ЭтоОсновнойЯзык
| И ПОДСТРОКА(ПредставленияВариантов.Описание, 1, 1) <> """"
| ТОГДА ВЫРАЗИТЬ(ПредставленияВариантов.Описание КАК СТРОКА(1000))
| ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Описание, ПредставленияИзРасширений.Описание),
| ВариантыОтчетовПереопределяемый.Описание) КАК СТРОКА(1000))
| КОНЕЦ КАК Описание,
| &ИмяОтчета КАК ИмяОтчета,
| СведенияОРасширениях.ПолноеИмяОбъекта КАК ПолноеИмяОтчета,
| ВЫБОР
| КОГДА ВариантыОтчетовПереопределяемый.ПометкаУдаления = ИСТИНА
| ТОГДА 4
| КОГДА ВариантыОтчетовПереопределяемый.Пользовательский = ЛОЖЬ
| ТОГДА 5
| ИНАЧЕ 3
| КОНЕЦ КАК ИндексКартинки
|ИЗ
| Справочник.ВариантыОтчетов КАК ВариантыОтчетовПереопределяемый
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурацииПереопределяемый
| ПО ВариантыОтчетовПереопределяемый.ПредопределенныйВариант = ВариантыКонфигурацииПереопределяемый.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширенийПереопределяемый
| ПО ВариантыОтчетовПереопределяемый.ПредопределенныйВариант = ВариантыРасширенийПереопределяемый.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов
| ПО ВариантыОтчетовПереопределяемый.Ссылка = ПредставленияВариантов.Ссылка
| И (ПредставленияВариантов.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияИзКонфигурации
| ПО ВариантыОтчетовПереопределяемый.ПредопределенныйВариант = ПредставленияИзКонфигурации.Ссылка
| И (ПредставленияИзКонфигурации.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияИзРасширений
| ПО ВариантыОтчетовПереопределяемый.ПредопределенныйВариант = ПредставленияИзРасширений.Ссылка
| И (ПредставленияИзРасширений.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК СведенияОРасширениях
| ПО СведенияОРасширениях.ВерсияРасширений = &ВерсияРасширений
| И СведенияОРасширениях.Идентификатор = ВариантыОтчетовПереопределяемый.Отчет
|ГДЕ
| ВариантыОтчетовПереопределяемый.Отчет В (&ДоступныеОтчеты)
| И ВЫБОР
| КОГДА НЕ &ЕстьОтборПоВариантам
| ТОГДА НЕ ВариантыОтчетовПереопределяемый.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы)
| ИНАЧЕ ВариантыОтчетовПереопределяемый.Ссылка В (&ВариантыПользователя)
| КОНЕЦ";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
@@ -337,21 +337,8 @@
ПредопределенныйВариант = ВариантОбъект.ПредопределенныйВариант.ПолучитьОбъект();
ВариантОбъект.Наименование = ПредопределенныйВариант.Наименование;
ПредставленияВарианта = ВариантОбъект.Представления.Выгрузить();
ВариантОбъект.Представления.Очистить();
ВариантОбъект.Представления.Загрузить(ПредопределенныйВариант.Представления.Выгрузить());
Если ПустаяСтрока(ВариантОбъект.Описание) Тогда
ВариантОбъект.Описание = ПредопределенныйВариант.Описание;
Иначе
ВариантОбъект.Представления.Сортировать("КодЯзыка");
ПредставленияВарианта.Сортировать("КодЯзыка");
Для каждого ПредставлениеВарианта Из ВариантОбъект.Представления Цикл
ОписаниеВарианта = ПредставленияВарианта.Найти(ПредставлениеВарианта.КодЯзыка, "КодЯзыка");
ПредставлениеВарианта.Описание = ОписаниеВарианта.Описание;
КонецЦикла;
КонецЕсли;
ВариантОбъект.Описание = ПредопределенныйВариант.Описание;
КонецПроцедуры
&НаКлиенте
@@ -106,7 +106,7 @@
СтандартнаяОбработка = Ложь;
Если ПараметрыОткрытия.ТипОтчета = "Дополнительный" Тогда // Для платформы.
ВыбраннаяФорма = "Справочник.ВариантыОтчетов.Форма.ФормаЭлемента";
ВыбраннаяФорма = "Справочник.ВариантыОтчетов.ФормаОбъекта";
Параметры.Вставить("ПараметрыОткрытияФормыОтчета", ПараметрыОткрытия);
Возврат;
КонецЕсли;
@@ -220,12 +220,12 @@
Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
Если Обработано = 0 И Отказано <> 0 Тогда
ШаблонСообщения = НСтр("ru = 'Процедуре УстановитьИсточникДанныхВарианта не удалось обработать некоторые варианты отчетов: %1'");
ШаблонСообщения = НСтр("ru = 'Не удалось обработать некоторые варианты отчетов: %1'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Отказано);
ВызватьИсключение ТекстСообщения;
Иначе
ШаблонКомментария = НСтр("ru = 'Процедура УстановитьИсточникДанныхВарианта обработала очередной пакет вариантов отчетов: %1'");
ШаблонКомментария = НСтр("ru = 'Обработан очередной пакет вариантов отчетов: %1'");
Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, Обработано);
ЗаписьЖурналаРегистрации(
ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
@@ -364,6 +364,48 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="52fd1e04-44b6-4405-a2de-ec5c0cf66b64">
<name>ОписаниеЯзык1</name>
<synonym>
<key>ru</key>
<value>Описание (дополнительный язык)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Выводится в панели отчетов как подсказка.</value>
</toolTip>
<multiLine>true</multiLine>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="9a647b38-73da-4491-997b-773059cfd1c9">
<name>ОписаниеЯзык2</name>
<synonym>
<key>ru</key>
<value>Описание (дополнительный язык 2)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Выводится в панели отчетов как подсказка.</value>
</toolTip>
<multiLine>true</multiLine>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="50a1e3bf-8624-4474-854e-21b89aaf97ed">
<name>Отчет</name>
<synonym>
@@ -54,8 +54,8 @@
// который требуется для анализа наличия расширений и контроля динамического обновления,
// а также из формы установки расширений конфигурации в режиме 1С:Предприятия.
//
// Для сеанса запущенного без разделителей возвращается только состав неразделенных (общих)
// расширений, независимо от установленных разделителей.
// Для сеанса запущенного без разделителей исключаются расширения, предназначенные
// только для неразделенного режима (инструменты администратора сервиса).
//
// Возвращаемое значение:
// ФиксированнаяСтруктура:
@@ -64,15 +64,6 @@
//
Функция УстановленныеРасширения(ПриЗапуске = Ложь) Экспорт
Если ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
Неразделенные = МодульРаботаВМоделиСервиса.СеансЗапущенБезРазделителей();
Иначе
Неразделенные = Ложь;
КонецЕсли;
РасширенияБазыДанных = РасширенияКонфигурации.Получить();
Если ПриЗапуске Тогда
РасширенияПриЗапуске = Новый Соответствие;
@@ -121,11 +112,19 @@
МодульОбновлениеКонфигурации = Неопределено;
КонецЕсли;
// Исключить из контроля расширения только для неразделенных пользователей,
// так как они не подключаются в областях и не вносят изменений
// в код конфигурации (это инструменты администратора сервиса).
НеразделенныйРежим = ОбщегоНазначения.РазделениеВключено()
И Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных();
Для Каждого Расширение Из Расширения Цикл
Если Неразделенные И Расширение.ОбластьДействия = ОбластьДействияРасширенияКонфигурации.РазделениеДанных Тогда
Если НеразделенныйРежим
И Расширение.ОбластьДействия = ОбластьДействияРасширенияКонфигурации.РазделениеДанных Тогда
Продолжить;
КонецЕсли;
Если МодульОбновлениеКонфигурации <> Неопределено И МодульОбновлениеКонфигурации.ЭтоИсправление(Расширение) Тогда
Если МодульОбновлениеКонфигурации <> Неопределено
И МодульОбновлениеКонфигурации.ЭтоИсправление(Расширение) Тогда
Исправления.Добавить(Расширение);
Иначе
Основные.Добавить(Расширение);
@@ -266,6 +265,7 @@
ВерсияРасширений = ПараметрыСеанса.ВерсияРасширений;
Если Не ЗначениеЗаполнено(ВерсияРасширений) Тогда
ОбновитьПоследнююВерсиюРасширений(ВерсияРасширений);
Возврат;
КонецЕсли;
@@ -326,6 +326,13 @@
КонецПроцедуры
// Возвращаемое значение:
// Структура:
// * ВерсияРасширений - СправочникСсылка.ВерсииРасширений
// - Неопределено
// * ДатаОбновления - Дата
// * ИдентификаторОбновления - УникальныйИдентификатор
//
Функция ПоследняяВерсияРасширений() Экспорт
ИмяПараметра = "СтандартныеПодсистемы.БазоваяФункциональность.ПоследняяВерсияРасширений";
@@ -334,9 +341,14 @@
Если ХранимыеСвойства = Неопределено
Или ТипЗнч(ХранимыеСвойства) <> Тип("Структура")
Или Не ХранимыеСвойства.Свойство("ВерсияРасширений")
Или Не ХранимыеСвойства.Свойство("ДатаОбновления") Тогда
Или Не ХранимыеСвойства.Свойство("ДатаОбновления")
Или Не ХранимыеСвойства.Свойство("ИдентификаторОбновления") Тогда
ХранимыеСвойства = Новый Структура("ВерсияРасширений, ДатаОбновления", , '00010101');
ХранимыеСвойства = Новый Структура;
ХранимыеСвойства.Вставить("ВерсияРасширений");
ХранимыеСвойства.Вставить("ДатаОбновления", '00010101');
ХранимыеСвойства.Вставить("ИдентификаторОбновления",
ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор());
КонецЕсли;
Возврат ХранимыеСвойства;
@@ -585,6 +597,46 @@
КонецФункции
// Возвращаемое значение:
// Булево
//
Функция ВсеРасширенияПодключены() Экспорт
УстановитьПривилегированныйРежим(Истина);
КоличествоРасширений = РасширенияКонфигурации.Получить().Количество();
КоличествоПодключенныхРасширений = РасширенияКонфигурации.Получить(,
ИсточникРасширенийКонфигурации.СеансАктивные).Количество();
Возврат КоличествоРасширений = КоличествоПодключенныхРасширений;
КонецФункции
// Возвращаемое значение:
// Дата - оперативная отметка универсального времени, полученная
// при первом вызове этой функции в сеансе.
// Разные ПК имеют разное время, что влияет на результат.
//
Функция ОперативнаяОтметкаВремениСеанса() Экспорт
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
Если Не ПараметрыСеанса.УстановленныеРасширения.Свойство("ОперативнаяОтметкаВремениСеанса") Тогда
УстановленныеРасширения = Новый Структура(ПараметрыСеанса.УстановленныеРасширения);
УстановленныеРасширения.Вставить("ОперативнаяОтметкаВремениСеанса",
ПолучитьТекущийСеансИнформационнойБазы().НачалоСеанса - СмещениеСтандартногоВремени());
ПараметрыСеанса.УстановленныеРасширения = Новый ФиксированнаяСтруктура(УстановленныеРасширения);
КонецЕсли;
ОтметкаВремени = ПараметрыСеанса.УстановленныеРасширения.ОперативнаяОтметкаВремениСеанса;
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
Возврат ОтметкаВремени;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -598,7 +650,7 @@
// Возвращаемое значение:
// Строка - строки вида "<Имя расширения> (<Версия расширения>) <Контрольная сумма>".
//
Функция КонтрольныеСуммыРасширений(Расширения, СвойстваПодключения = "")
Функция КонтрольныеСуммыРасширений(Расширения, СвойстваПодключения = "", ВключаяКонфигурацию = Истина)
Список = Новый СписокЗначений;
@@ -606,7 +658,7 @@
Список.Добавить(КонтрольнаяСуммаРасширения(Расширение, СвойстваПодключения));
КонецЦикла;
Если Список.Количество() <> 0 Тогда
Если ВключаяКонфигурацию И Список.Количество() <> 0 Тогда
КонтрольнаяСумма = "#" + Метаданные.Имя + " (" + Метаданные.Версия + ")";
Список.Добавить(КонтрольнаяСумма);
КонецЕсли;
@@ -875,16 +927,11 @@
ХранимыеСвойства.ВерсияРасширений = ВерсияРасширений;
ХранимыеСвойства.ДатаОбновления = ТекущаяДатаСеанса();
ХранимыеСвойства.ИдентификаторОбновления = Новый УникальныйИдентификатор;
ИмяПараметра = "СтандартныеПодсистемы.БазоваяФункциональность.ПоследняяВерсияРасширений";
СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(ИмяПараметра, ХранимыеСвойства, Истина);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный");
МодульУправлениеДоступомСлужебный.ЗапланироватьОбновлениеПараметровОграниченияДоступа(
"ОбновитьПоследнююВерсиюРасширений");
КонецЕсли;
КонецПроцедуры
// Для функции ДинамическиИзмененныеРасширения.
@@ -996,6 +1043,32 @@
КонецПроцедуры
// Для процедуры ДобавитьДополнительныеСведения модуля менеджера
// регистра сведений ПараметрыРаботыВерсийРасширений.
//
// Возвращаемое значение:
// Структура:
// * Подключенные - Строка - активные расширения сеанса (включая исправления).
// * Отключенные - Строка - отключенные расширения сеанса (включая исправления).
// * Все - Строка - все расширения базы данных (включая исправления).
//
Функция ОписаниеРасширенийДляЖурнала() Экспорт
Результат = Новый Структура;
Результат.Вставить("Подключенные", КонтрольныеСуммыРасширений(
РасширенияКонфигурации.Получить(, ИсточникРасширенийКонфигурации.СеансАктивные), "Все", Ложь));
Результат.Вставить("Отключенные", КонтрольныеСуммыРасширений(
РасширенияКонфигурации.Получить(, ИсточникРасширенийКонфигурации.СеансОтключенные), "Все", Ложь));
Результат.Вставить("Все", КонтрольныеСуммыРасширений(
РасширенияКонфигурации.Получить(), "Все", Ложь));
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -1096,9 +1096,6 @@
<edit>
<common>true</common>
</edit>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.ИндексКартинкиТекущий</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Владелец</segments>
</notDefaultUseAlwaysAttributes>
@@ -1146,7 +1143,7 @@
ВерсииФайловПереопределяемый.Комментарий КАК Комментарий,
ВерсииФайловПереопределяемый.Автор КАК Автор,
ВерсииФайловПереопределяемый.ДатаСоздания КАК ДатаСоздания,
ВерсииФайловПереопределяемый.ПолноеНаименование КАК ПолноеНаименование,
ВерсииФайловПереопределяемый.Наименование КАК ПолноеНаименование,
ВерсииФайловПереопределяемый.РодительскаяВерсия КАК РодительскаяВерсия,
ВЫБОР
КОГДА ВерсииФайловПереопределяемый.ПометкаУдаления
@@ -35,7 +35,7 @@
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
Элементы.ФормаОткрытьВерсию.Картинка = БиблиотекаКартинок.Лупа;
Элементы.ФормаОткрытьВерсию.Картинка = БиблиотекаКартинок.ПолеВводаОткрыть;
Элементы.ФормаОткрытьВерсию.Отображение = ОтображениеКнопки.Картинка;
Элементы.СписокКомментарий.Видимость = Ложь;
@@ -299,7 +299,7 @@
| ВерсииФайлов.Комментарий КАК Комментарий,
| ВерсииФайлов.Автор КАК Автор,
| ВерсииФайлов.ДатаСоздания КАК ДатаСоздания,
| ВерсииФайлов.ПолноеНаименование КАК ПолноеНаименование,
| ВерсииФайлов.Наименование КАК ПолноеНаименование,
| ВерсииФайлов.РодительскаяВерсия КАК РодительскаяВерсия,
| ВЫБОР
| КОГДА ВерсииФайлов.ПометкаУдаления
@@ -287,7 +287,7 @@
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ПолноеНаименование</segments>
<segments>Список.Description</segments>
</dataPath>
<extendedTooltip>
<name>СписокПолноеНаименованиеРасширеннаяПодсказка</name>
@@ -969,7 +969,7 @@
ВерсииФайлов.Комментарий,
ВерсииФайлов.Автор,
ВерсииФайлов.ДатаСоздания,
ВерсииФайлов.ПолноеНаименование,
ВерсииФайлов.Наименование,
ВерсииФайлов.ИндексКартинки,
ВерсииФайлов.ПометкаУдаления,
ВерсииФайлов.Расширение,
@@ -31,10 +31,6 @@
СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.НеИзвлечен;
КонецЕсли;
Если ТипЗнч(Владелец) = Тип("СправочникСсылка.Файлы") Тогда
Наименование = СокрЛП(ПолноеНаименование);
КонецЕсли;
Если Владелец.ТекущаяВерсия = Ссылка Тогда
Если ПометкаУдаления = Истина И Владелец.ПометкаУдаления <> Истина Тогда
ВызватьИсключение НСтр("ru = 'Активную версию нельзя удалить.'");
@@ -230,26 +230,6 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="f8ab477c-8e78-48c0-9f99-27748b109706">
<name>УдалитьЗашифрован</name>
<synonym>
<key>ru</key>
<value>(не используется) Зашифрована</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Признак того, что версия файла зашифрована</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<indexing>Index</indexing>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="24cff6c8-6c20-4383-b97c-6afa52738960">
<name>ИндексКартинки</name>
<synonym>
@@ -316,50 +296,6 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="2d51aae9-650d-4719-a94d-2609b69a2d36">
<name>УдалитьПодписанЭП</name>
<synonym>
<key>ru</key>
<value>(не используется) Подписана электронно</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Признак того, что версия файла подписана электронно</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="6025f5b5-6dc7-46b8-96e6-02823c5b4de7">
<name>ПолноеНаименование</name>
<synonym>
<key>ru</key>
<value>Полное наименование</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>256</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Имя версии файла (без расширения) длиной до 256 символов</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue">
<value> </value>
</fillValue>
<indexing>Index</indexing>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="5d9d88ea-b2e4-425c-bb4d-a005e867d56c">
<name>ПутьКФайлу</name>
<synonym>
@@ -0,0 +1,17 @@
<?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>
@@ -0,0 +1,307 @@
<?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>User settings group</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>
<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>16</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.Description</segments>
</dataPath>
<defaultItem>true</defaultItem>
<extendedTooltip>
<name>НаименованиеРасширеннаяПодсказка</name>
<id>18</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>НаименованиеКонтекстноеМеню</name>
<id>17</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>
<choiceMode>true</choiceMode>
<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>
<fileDragMode>AsFileRef</fileDragMode>
<rowPictureDataPath xsi:type="form:DataPath">
<segments>Список.DefaultPicture</segments>
</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>
<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>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
</handlers>
<excludedCommands>Abort</excludedCommands>
<excludedCommands>Cancel</excludedCommands>
<excludedCommands>ChangeHistory</excludedCommands>
<excludedCommands>Copy</excludedCommands>
<excludedCommands>Create</excludedCommands>
<excludedCommands>CreateFolder</excludedCommands>
<excludedCommands>Delete</excludedCommands>
<excludedCommands>DynamicListStandardSettings</excludedCommands>
<excludedCommands>Ignore</excludedCommands>
<excludedCommands>LevelDown</excludedCommands>
<excludedCommands>LevelUp</excludedCommands>
<excludedCommands>LoadDynamicListSettings</excludedCommands>
<excludedCommands>MoveItem</excludedCommands>
<excludedCommands>No</excludedCommands>
<excludedCommands>OK</excludedCommands>
<excludedCommands>OpenFromMainServer</excludedCommands>
<excludedCommands>OpenFromStandaloneServer</excludedCommands>
<excludedCommands>RestoreValues</excludedCommands>
<excludedCommands>Retry</excludedCommands>
<excludedCommands>SaveDynamicListSettings</excludedCommands>
<excludedCommands>SaveValues</excludedCommands>
<excludedCommands>SetDeletionMark</excludedCommands>
<excludedCommands>Yes</excludedCommands>
<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>DynamicList</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.PredefinedDataName</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Скрыть</segments>
</notDefaultUseAlwaysAttributes>
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
СправочникВидыКонтактнойИнформации.Ссылка,
СправочникВидыКонтактнойИнформации.Наименование,
СправочникВидыКонтактнойИнформации.ИмяПредопределенныхДанных,
ЛОЖЬ КАК Скрыть
ИЗ
Справочник.ВидыКонтактнойИнформации КАК СправочникВидыКонтактнойИнформации
ГДЕ
СправочникВидыКонтактнойИнформации.ПометкаУдаления = ЛОЖЬ</queryText>
<mainTable>Catalog.ВидыКонтактнойИнформации</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
<customQuery>true</customQuery>
<autoSaveUserSettings>true</autoSaveUserSettings>
<getInvisibleFieldPresentations>true</getInvisibleFieldPresentations>
</extInfo>
</attributes>
<commandInterface>
<navigationPanel/>
<commandBar/>
</commandInterface>
<extInfo xsi:type="form:DynamicListFormExtInfo"/>
</form:Form>
@@ -0,0 +1,72 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2022, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
// СтандартныеПодсистемы.ВерсионированиеОбъектов
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда
МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов");
МодульВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Для Каждого СтрокаТаблицы Из Строки Цикл
Если СтрНачинаетсяС(СтрокаТаблицы.Значение.Данные.ИмяПредопределенныхДанных, "Удалить") Тогда
СтрокаТаблицы.Значение.Данные.Скрыть = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Наименование.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Скрыть");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
КонецПроцедуры
#КонецОбласти
@@ -13,6 +13,13 @@
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "ЭтоГруппа", Истина);
// СтандартныеПодсистемы.ВерсионированиеОбъектов
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда
МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов");
МодульВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
КонецПроцедуры
#КонецОбласти
@@ -337,6 +337,7 @@
<name>ПриСозданииНаСервере</name>
</handlers>
<excludedCommands>CreateFolder</excludedCommands>
<excludedCommands>MoveItem</excludedCommands>
<windowOpeningMode>DontBlock</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoTitle>true</autoTitle>
@@ -422,19 +423,12 @@
КОНЕЦ
КОНЕЦ КАК ИндексПиктограммы,
СправочникВидыКонтактнойИнформации.Ссылка КАК Ссылка,
ВЫБОР
КОГДА &amp;ЭтоОсновнойЯзык
ТОГДА СправочникВидыКонтактнойИнформации.Наименование
ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ВидыКонтактнойИнформацииПредставления.Наименование, СправочникВидыКонтактнойИнформации.Наименование) КАК СТРОКА(150))
КОНЕЦ КАК Наименование,
СправочникВидыКонтактнойИнформации.Наименование КАК Наименование,
СправочникВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания,
СправочникВидыКонтактнойИнформации.Используется КАК Используется,
СправочникВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоГруппа
ИЗ
Справочник.ВидыКонтактнойИнформации КАК СправочникВидыКонтактнойИнформации
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКонтактнойИнформации.Представления КАК ВидыКонтактнойИнформацииПредставления
ПО (ВидыКонтактнойИнформацииПредставления.Ссылка = СправочникВидыКонтактнойИнформации.Ссылка)
И (ВидыКонтактнойИнформацииПредставления.КодЯзыка = &amp;КодЯзыка)
ГДЕ
СправочникВидыКонтактнойИнформации.Используется
И ЕСТЬNULL(СправочникВидыКонтактнойИнформации.Родитель.Используется, ИСТИНА)</queryText>
@@ -17,8 +17,92 @@
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
Список.Параметры.УстановитьЗначениеПараметра("ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык);
Список.Параметры.УстановитьЗначениеПараметра("КодЯзыка", ТекущийЯзык().КодЯзыка);
СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя();
Если СуффиксТекущегоЯзыка = Неопределено Тогда
Список.ТекстЗапроса = "ВЫБРАТЬ
| ВЫБОР
| КОГДА СправочникВидыКонтактнойИнформации.ЭтоГруппа
| ТОГДА ВЫБОР
| КОГДА СправочникВидыКонтактнойИнформации.ПометкаУдаления
| ТОГДА 1
| КОГДА СправочникВидыКонтактнойИнформации.Предопределенный
| ТОГДА 2
| ИНАЧЕ 0
| КОНЕЦ
| КОГДА СправочникВидыКонтактнойИнформации.ПометкаУдаления
| ТОГДА 4
| КОГДА СправочникВидыКонтактнойИнформации.Предопределенный
| ТОГДА ВЫБОР СправочникВидыКонтактнойИнформации.Тип
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
| ТОГДА 14
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
| ТОГДА 15
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница)
| ТОГДА 16
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Факс)
| ТОГДА 17
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое)
| ТОГДА 18
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
| ТОГДА 19
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Skype)
| ТОГДА 21
| ИНАЧЕ 3
| КОНЕЦ
| ИНАЧЕ ВЫБОР СправочникВидыКонтактнойИнформации.Тип
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
| ТОГДА 7
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
| ТОГДА 8
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница)
| ТОГДА 9
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Факс)
| ТОГДА 10
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое)
| ТОГДА 11
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
| ТОГДА 12
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Skype)
| ТОГДА 20
| ИНАЧЕ 3
| КОНЕЦ
| КОНЕЦ КАК ИндексПиктограммы,
| СправочникВидыКонтактнойИнформации.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзык
| ТОГДА СправочникВидыКонтактнойИнформации.Наименование
| ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ВидыКонтактнойИнформацииПредставления.Наименование,
| СправочникВидыКонтактнойИнформации.Наименование) КАК СТРОКА(150))
| КОНЕЦ КАК Наименование,
| СправочникВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания,
| СправочникВидыКонтактнойИнформации.Используется КАК Используется,
| СправочникВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоГруппа
|ИЗ
| Справочник.ВидыКонтактнойИнформации КАК СправочникВидыКонтактнойИнформации
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКонтактнойИнформации.Представления КАК ВидыКонтактнойИнформацииПредставления
| ПО (ВидыКонтактнойИнформацииПредставления.Ссылка = СправочникВидыКонтактнойИнформации.Ссылка)
| И (ВидыКонтактнойИнформацииПредставления.КодЯзыка = &КодЯзыка)
|ГДЕ
| СправочникВидыКонтактнойИнформации.Используется
| И ЕСТЬNULL(СправочникВидыКонтактнойИнформации.Родитель.Используется, ИСТИНА)";
Список.Параметры.УстановитьЗначениеПараметра("ЭтоОсновнойЯзык", ОбщегоНазначения.ЭтоОсновнойЯзык());
Список.Параметры.УстановитьЗначениеПараметра("КодЯзыка", ТекущийЯзык().КодЯзыка);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
// СтандартныеПодсистемы.ВерсионированиеОбъектов
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда
МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов");
МодульВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
КонецПроцедуры
@@ -369,7 +369,7 @@
<titleLocation>Right</titleLocation>
<toolTip>
<key>ru</key>
<value>Поле контактной информации хранит не только текущее значение, но и его историю изменений на указанную дату. Для просмотра истории необходимо в контекстном меню элемента контактной информации выбрать пункт «История изменений».</value>
<value>Поле контактной информации хранит не только текущее значение, но и его историю изменений на указанную дату. Для просмотра истории выберите в контекстном меню пункт &quot;История изменений&quot;.</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<handlers>
@@ -865,16 +865,16 @@
<id>183</id>
<title>
<key>ru</key>
<value>&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>В строке маски допустимо использование следующих специальных символов:&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>! - любой введенный символ преобразуется в верхний регистр;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>9 - допустимо ввести произвольный символ цифры;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333># - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>X (латинского алфавита) - допустимо ввести произвольный символ;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>^ - недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>@ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>&lt;/>&lt;/>&lt;/>&lt;/></value>
<value>&lt;font Arial>&lt;fontsize 8>&lt;color #333333>&lt;bgcolor #FFFFFF>В строке маски допустимо использование следующих специальных символов:&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;color #333333>&lt;bgcolor #FFFFFF>! - любой введенный символ преобразуется в верхний регистр;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;color #333333>&lt;bgcolor #FFFFFF>9 - допустимо ввести произвольный символ цифры;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;color #333333>&lt;bgcolor #FFFFFF># - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;color #333333>&lt;bgcolor #FFFFFF>N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;color #333333>&lt;bgcolor #FFFFFF>U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;color #333333>&lt;bgcolor #FFFFFF>X (латинского алфавита) - допустимо ввести произвольный символ;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;color #333333>&lt;bgcolor #FFFFFF>^ - недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;color #333333>&lt;bgcolor #FFFFFF>@ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.&lt;/>&lt;/>&lt;/>&lt;/>
</value>
</title>
<formatted>true</formatted>
<type>Label</type>
@@ -1438,6 +1438,19 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ХранитИсториюИзменений</name>
<id>4</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ДополнительныеНастройкиАдреса</name>
<title>
@@ -44,8 +44,6 @@
Элементы.ХранитьИсториюИзменений.Доступность = Ложь;
КонецЕсли;
Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь;
Если Объект.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес
ИЛИ НЕ СсылкаРодителя.Пустая()
ИЛИ СсылкаРодителя.Уровень() = 0 Тогда
@@ -69,7 +67,7 @@
Если ТабличнаяЧасть <> Неопределено Тогда
Если ТабличнаяЧасть.Реквизиты.Найти("ДействуетС") <> Неопределено Тогда
Элементы.ГруппаХранитьИсториюИзменений.Видимость = Истина;
ХранитИсториюИзменений = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
@@ -95,6 +93,13 @@
МодульРаботаСАдресами.ЗаполнитьМаскиНомераТелефона(Элементы.ШаблонМаскиНомераТелефона.СписокВыбора);
КонецЕсли;
// СтандартныеПодсистемы.ВерсионированиеОбъектов
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда
МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов");
МодульВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
КонецПроцедуры
&НаКлиенте
@@ -168,7 +173,9 @@
// Формирование идентификатора для формул дополнительного реквизита (сведения).
Если Не ЗначениеЗаполнено(ТекущийОбъект.ИдентификаторДляФормул)
Или ПараметрыЗаписи.Свойство("КогдаИдентификаторДляФормулУжеИспользуется") Тогда
НаименованиеОбъекта = НаименованиеДляФормированияИдентификатора(ТекущийОбъект.Наименование, ТекущийОбъект.Представления);
НаименованиеОбъекта = ЗаголовокДляИдентификатора(ТекущийОбъект);
ТекущийОбъект.ИдентификаторДляФормул = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул(
НаименованиеОбъекта, ТекущийОбъект.Ссылка, ТекущийОбъект.Родитель);
@@ -363,34 +370,41 @@
Элементы.ДополнительныеНастройкиАдреса.Видимость = ДоступныДополнительныеНастройкиАдреса;
Элементы.ДополнительныеНастройкиАдреса.Доступность = Не Объект.МеждународныйФорматАдреса;
Элементы.ВидРедактирования.Видимость = Истина;
Элементы.ГруппаХранитьИсториюИзменений.Видимость = ХранитИсториюИзменений;
ДоступностьПолейДляАдреса();
Иначе
Элементы.ДополнительныеНастройкиАдреса.Видимость = Ложь;
Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда
Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.АдресЭлектроннойПочты;
Элементы.ВидРедактирования.Видимость = Ложь;
Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь;
ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Skype") Тогда
Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Skype;
Элементы.ВидРедактирования.Видимость = Ложь;
Элементы.РазрешитьВводНесколькихЗначений.Доступность = Истина;
Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь;
ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон")
Или Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Факс") Тогда
Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Телефон;
Элементы.ВидРедактирования.Доступность = Объект.МожноИзменятьСпособРедактирования;
Элементы.ВидРедактирования.Видимость = Истина;
Элементы.ГруппаХранитьИсториюИзменений.Видимость = ХранитИсториюИзменений;
ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Другое") Тогда
Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Другое;
Элементы.ВидРедактирования.Доступность = Ложь;
Элементы.ВидРедактирования.Видимость = Ложь;
Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь;
ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.ВебСтраница") Тогда
Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Прочие;
Элементы.ВидРедактирования.Видимость = Ложь;
Элементы.ВидРедактирования.Видимость = Ложь;
Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь;
Иначе
Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Прочие;
Элементы.ВидРедактирования.Доступность = Ложь;
Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
@@ -400,20 +414,24 @@
Процедура ИзменитьРеквизитыПриИзмененииТипа()
Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда
Элементы.ХранитьИсториюИзменений.Доступность = Истина;
Элементы.ХранитьИсториюИзменений.Доступность = Объект.ВидРедактирования = "Диалог";
Иначе
Объект.ХранитьИсториюИзменений = Ложь;
Элементы.ХранитьИсториюИзменений.Доступность = Ложь;
ФлагХранитьИсториюИзменений = Ложь;
ДоступностьФлагаХранитьИсториюИзменений = Ложь;
Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда
Объект.ВидРедактирования = "ПолеВвода";
ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон")
Или Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Факс") Тогда
// Нет изменений
ФлагХранитьИсториюИзменений = Объект.ХранитьИсториюИзменений;
ДоступностьФлагаХранитьИсториюИзменений = Объект.ВидРедактирования = "Диалог";
Иначе
Объект.ВидРедактирования = "ПолеВводаИДиалог";
КонецЕсли;
Объект.ХранитьИсториюИзменений = ФлагХранитьИсториюИзменений;
Элементы.ХранитьИсториюИзменений.Доступность = ДоступностьФлагаХранитьИсториюИзменений;
КонецЕсли;
КонецПроцедуры
@@ -430,7 +448,17 @@
ПредлагаемыйИдентификатор = "";
Если Не Элементы.ИдентификаторДляФормул.ТолькоПросмотр Тогда
Представление = НаименованиеДляФормированияИдентификатора(Объект.Наименование, Объект.Представления);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка();
Представление = ?(ЗначениеЗаполнено(СуффиксТекущегоЯзыка),
Объект["Наименование"+ СуффиксТекущегоЯзыка],
Объект.Наименование);
Иначе
Представление = Объект.Наименование;
КонецЕсли;
ПредлагаемыйИдентификатор = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул(
Представление, Объект.Ссылка, Объект.Родитель);
Если ПредлагаемыйИдентификатор <> Объект.ИдентификаторДляФормул Тогда
@@ -443,23 +471,28 @@
&НаСервере
Процедура ЗаполнитьИдентификаторДляФормулНаСервере()
ЗаголовокДляИдентификатора = НаименованиеДляФормированияИдентификатора(Объект.Наименование, Объект.Представления);
ЗаголовокДляИдентификатора = ЗаголовокДляИдентификатора(Объект);
Объект.ИдентификаторДляФормул = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул(
ЗаголовокДляИдентификатора, Объект.Ссылка, Объект.Родитель);
КонецПроцедуры
&НаСервереБезКонтекста
Функция НаименованиеДляФормированияИдентификатора(Знач Наименование, Знач Представления)
Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда
Отбор = Новый Структура();
Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка());
НайденныеСтроки = Представления.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
Наименование = НайденныеСтроки[0].Наименование;
КонецЕсли;
Функция ЗаголовокДляИдентификатора(ТекущийОбъект)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка();
ЗаголовокДляИдентификатора = ?(ЗначениеЗаполнено(СуффиксТекущегоЯзыка),
ТекущийОбъект["Наименование"+ СуффиксТекущегоЯзыка],
ТекущийОбъект.Наименование);
Иначе
ЗаголовокДляИдентификатора = ТекущийОбъект.Наименование;
КонецЕсли;
Возврат Наименование;
Возврат ЗаголовокДляИдентификатора;
КонецФункции
&НаКлиенте
@@ -114,6 +114,20 @@
// Конец СтандартныеПодсистемы.ПоискИУдалениеДублей
// СтандартныеПодсистемы.ВерсионированиеОбъектов
//
// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
// Настройки - Структура - настройки подсистемы.
//
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
#КонецОбласти
#КонецОбласти
@@ -149,11 +163,14 @@
// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов
//
// Параметры:
// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки
// Настройки - см. ОбновлениеИнформационнойБазыСлужебный.НастройкиЗаполненияЭлементов
//
Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт
Настройки.ПриНачальномЗаполненииЭлемента = Ложь;
УправлениеКонтактнойИнформациейПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов(Настройки);
Настройки.ПриНачальномЗаполненииЭлемента = Истина;
Настройки.ИмяКлючевогоРеквизита = "ИмяПредопределенногоВида";
КонецПроцедуры
@@ -168,14 +185,20 @@
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "СправочникПользователи";
Элемент.Наименование = НСтр("ru = 'Контактная информация справочника ""Пользователи""'");
Элемент.ЭтоГруппа = Истина;
Элемент.Используется = Истина;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование",
"ru = 'Контактная информация справочника ""Пользователи""'", КодыЯзыков); // @НСтр-1
Иначе
Элемент.Наименование = НСтр("ru = 'Контактная информация справочника ""Пользователи""'",
ОбщегоНазначения.КодОсновногоЯзыка());
КонецЕсли;
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "EmailПользователя";
Элемент.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
Элемент.Наименование = НСтр("ru = 'Электронная почта'");
Элемент.МожноИзменятьСпособРедактирования = Истина;
Элемент.РазрешитьВводНесколькихЗначений = Истина;
Элемент.Родитель = Справочники.ВидыКонтактнойИнформации.СправочникПользователи;
@@ -183,11 +206,19 @@
Элемент.ВидРедактирования = "ПолеВвода";
Элемент.Используется = Истина;
Элемент.РеквизитДопУпорядочивания = 2;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование",
"ru = 'Электронная почта'", КодыЯзыков); // @НСтр-1
Иначе
Элемент.Наименование = НСтр("ru = 'Электронная почта'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецЕсли;
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ТелефонПользователя";
Элемент.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
Элемент.Наименование = НСтр("ru = 'Телефон'");
Элемент.МожноИзменятьСпособРедактирования = Истина;
Элемент.РазрешитьВводНесколькихЗначений = Истина;
Элемент.Родитель = Справочники.ВидыКонтактнойИнформации.СправочникПользователи;
@@ -195,10 +226,19 @@
Элемент.Используется = Истина;
Элемент.ВидРедактирования = "ПолеВводаИДиалог";
Элемент.РеквизитДопУпорядочивания = 1;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование",
"ru = 'Телефон'", КодыЯзыков); // @НСтр-1
Иначе
Элемент.Наименование = НСтр("ru = 'Телефон'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецЕсли;
УправлениеКонтактнойИнформациейПереопределяемый.ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти);
КонецПроцедуры
// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлемента
// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов
//
// Параметры:
// Объект - СправочникОбъект.ВидыКонтактнойИнформации - заполняемый объект.
@@ -208,6 +248,13 @@
//
Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт
УправлениеКонтактнойИнформациейПереопределяемый.ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры);
Результат = УправлениеКонтактнойИнформациейСлужебный.ПроверитьПараметрыВидаКонтактнойИнформации(Объект);
Если Результат.ЕстьОшибки Тогда
ВызватьИсключение Результат.ТекстОшибки;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -235,7 +282,7 @@
ИдентификаторПоПравилам = Ложь;
ТекстОшибки = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных.
|Идентификатор не должен содержать пробелов и специальных символов.'");
|Идентификатор не должен содержать пробелов и специальных символов.'");
ОбщегоНазначения.СообщитьПользователю(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, ИдентификаторДляФормул),,
"ИдентификаторДляФормул",, Отказ);
@@ -562,7 +609,8 @@
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать вид контактной информации: %1 по причине: %2'"),
НСтр("ru = 'Не удалось обработать вид контактной информации %1 по причине:
|%2'"),
ВидКонтактнойИнформацииСсылка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение,
Метаданные.Справочники.ВидыКонтактнойИнформации, ВидКонтактнойИнформацииСсылка.Ссылка, ТекстСообщения);
@@ -573,13 +621,14 @@
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре ЗаполнитьВидыКонтактнойИнформации не удалось обработать некоторые виды контактной информации (пропущены): %1'"),
НСтр("ru = 'Не удалось обработать некоторые виды контактной информации (пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Метаданные.Справочники.ВидыКонтактнойИнформации,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ЗаполнитьВидыКонтактнойИнформации обработала очередную порцию видов контактной информации: %1'"),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Обработана очередная порция видов контактной информации: %1'"),
ОбъектовОбработано));
КонецЕсли;
@@ -592,7 +641,7 @@
Представление = Наименования[Язык.КодЯзыка][ИмяВида];
Если ЗначениеЗаполнено(Представление) Тогда
Если Язык = Метаданные.ОсновнойЯзык Тогда
Если СтрСравнить(Язык.КодЯзыка, ОбщегоНазначения.КодОсновногоЯзыка()) = 0 Тогда
ВидКонтактнойИнформации.Наименование = Представление;
Иначе
@@ -89,17 +89,19 @@
КонецПроцедуры
Функция НаименованиеДляФормированияИдентификатора()
НаименованиеДляИдентификатора = Наименование;
Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда
Отбор = Новый Структура();
Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка());
НайденныеСтроки = Представления.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
НаименованиеДляИдентификатора = НайденныеСтроки[0].Наименование;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка();
ЗаголовокДляИдентификатора = ?(ЗначениеЗаполнено(СуффиксТекущегоЯзыка),
ЭтотОбъект["Наименование"+ СуффиксТекущегоЯзыка],
Наименование);
Иначе
ЗаголовокДляИдентификатора = Наименование;
КонецЕсли;
Возврат НаименованиеДляИдентификатора;
Возврат ЗаголовокДляИдентификатора;
КонецФункции
Процедура ПриЧтенииПредставленийНаСервере() Экспорт
@@ -157,45 +157,42 @@
<defaultObjectForm>Catalog.ВидыКонтактнойИнформации.Form.ФормаЭлемента</defaultObjectForm>
<defaultFolderForm>Catalog.ВидыКонтактнойИнформации.Form.ФормаГруппы</defaultFolderForm>
<defaultListForm>Catalog.ВидыКонтактнойИнформации.Form.ФормаСписка</defaultListForm>
<defaultChoiceForm>Catalog.ВидыКонтактнойИнформации.Form.ФормаВыбора</defaultChoiceForm>
<defaultFolderChoiceForm>Catalog.ВидыКонтактнойИнформации.Form.ФормаВыбораГруппы</defaultFolderChoiceForm>
<attributes uuid="0eea37cc-47f8-4819-85da-d4991f4e58ed">
<name>ТолькоНациональныйАдрес</name>
<attributes uuid="800ef5f0-fdd1-4f8b-8c0b-9744952bfb5b">
<name>ВводитьНомерПоМаске</name>
<synonym>
<key>ru</key>
<value>Только национальный адрес</value>
<value>Вводить номер по маске</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Допустимы только национальные адреса</value>
<value>Признак, что ввод номера телефона выполняется по маске.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:BooleanValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="322645d4-e3fb-467b-a55d-d8e74cff2ea3">
<name>ВидРедактирования</name>
<attributes uuid="b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a">
<name>ВключатьСтрануВПредставление</name>
<synonym>
<key>ru</key>
<value>Вид редактирования</value>
<value>Включать страну в представление</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>20</length>
</stringQualifiers>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Редактировать контактную информацию в только в поле ввода или только в диалоге (ручной ввод информации невозможен).</value>
<value>В представление будет включена страна адреса.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillChecking>ShowError</fillChecking>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
@@ -225,21 +222,25 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a">
<name>ВключатьСтрануВПредставление</name>
<attributes uuid="322645d4-e3fb-467b-a55d-d8e74cff2ea3">
<name>ВидРедактирования</name>
<synonym>
<key>ru</key>
<value>Включать страну в представление</value>
<value>Вид редактирования</value>
</synonym>
<type>
<types>Boolean</types>
<types>String</types>
<stringQualifiers>
<length>20</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>В представление будет включена страна адреса.</value>
<value>Редактировать контактную информацию в только в поле ввода или только в диалоге (ручной ввод информации невозможен).</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillChecking>ShowError</fillChecking>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
@@ -263,6 +264,61 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="8363bd46-1ea5-44f0-858a-05bc03f6020e">
<name>ИдентификаторДляФормул</name>
<synonym>
<key>ru</key>
<value>Идентификатор для формул</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>150</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="0f039952-09d3-49c8-b909-e8333a3fc8f9">
<name>ИмяГруппы</name>
<synonym>
<key>ru</key>
<value>Имя группы</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>150</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="d8fc4644-5351-443c-8b5d-5de2c4b855d1">
<name>ИмяПредопределенногоВида</name>
<synonym>
<key>ru</key>
<value>Имя предопределенного вида</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>150</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<use>ForFolderAndItem</use>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="64ff6058-c6f3-4682-b9a1-11ec438fa447">
<name>Используется</name>
<synonym>
@@ -285,6 +341,66 @@
<use>ForFolderAndItem</use>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="9cd2fc77-a4b0-457e-a6b0-63dbf521bf90">
<name>ИсправлятьУстаревшиеАдреса</name>
<synonym>
<key>ru</key>
<value>Исправлять устаревшие адреса</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Автоматические исправлять устаревшие адреса на новые</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="a321b6db-391b-4c65-8d27-ce486d10055e">
<name>МаскаНомераТелефона</name>
<synonym>
<key>ru</key>
<value>Маска номера телефона</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>150</length>
</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>
<attributes uuid="71dfde27-3762-4dd0-9252-6e703ce1b101">
<name>МеждународныйФорматАдреса</name>
<synonym>
<key>ru</key>
<value>Международный формат адреса</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Адрес редактируется в международном формате на английском языке.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="ced01234-9417-49ce-adf0-8cdd15e6dd7d">
<name>МожноИзменятьСпособРедактирования</name>
<synonym>
@@ -382,25 +498,6 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="45a2569e-820c-4d7d-ba74-4a781d26bb2b">
<name>УдалитьРедактированиеТолькоВДиалоге</name>
<synonym>
<key>ru</key>
<value>(не используется) Редактирование только в диалоге</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Редактировать контактную информацию только в диалоге (ручной ввод информации невозможен)</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:BooleanValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="996c7873-1cc9-44f6-915b-5c6ed7ef2370">
<name>РеквизитДопУпорядочивания</name>
<synonym>
@@ -486,6 +583,44 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="0eea37cc-47f8-4819-85da-d4991f4e58ed">
<name>ТолькоНациональныйАдрес</name>
<synonym>
<key>ru</key>
<value>Только национальный адрес</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Допустимы только национальные адреса</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:BooleanValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="45a2569e-820c-4d7d-ba74-4a781d26bb2b">
<name>УдалитьРедактированиеТолькоВДиалоге</name>
<synonym>
<key>ru</key>
<value>(не используется) Редактирование только в диалоге</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Редактировать контактную информацию только в диалоге (ручной ввод информации невозможен)</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:BooleanValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="8a13c899-1659-48cf-9aa2-07ca99547b7b">
<name>УказыватьОКТМО</name>
<synonym>
@@ -524,140 +659,6 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="71dfde27-3762-4dd0-9252-6e703ce1b101">
<name>МеждународныйФорматАдреса</name>
<synonym>
<key>ru</key>
<value>Международный формат адреса</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Адрес редактируется в международном формате на английском языке.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="d8fc4644-5351-443c-8b5d-5de2c4b855d1">
<name>ИмяПредопределенногоВида</name>
<synonym>
<key>ru</key>
<value>Имя предопределенного вида</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>150</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<use>ForFolderAndItem</use>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="0f039952-09d3-49c8-b909-e8333a3fc8f9">
<name>ИмяГруппы</name>
<synonym>
<key>ru</key>
<value>Имя группы</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>150</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="9cd2fc77-a4b0-457e-a6b0-63dbf521bf90">
<name>ИсправлятьУстаревшиеАдреса</name>
<synonym>
<key>ru</key>
<value>Исправлять устаревшие адреса</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Автоматические исправлять устаревшие адреса на новые</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="8363bd46-1ea5-44f0-858a-05bc03f6020e">
<name>ИдентификаторДляФормул</name>
<synonym>
<key>ru</key>
<value>Идентификатор для формул</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>150</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="a321b6db-391b-4c65-8d27-ce486d10055e">
<name>МаскаНомераТелефона</name>
<synonym>
<key>ru</key>
<value>Маска номера телефона</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>150</length>
</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>
<attributes uuid="800ef5f0-fdd1-4f8b-8c0b-9744952bfb5b">
<name>ВводитьНомерПоМаске</name>
<synonym>
<key>ru</key>
<value>Вводить номер по маске</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Признак, что ввод номера телефона выполняется по маске.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<tabularSections uuid="99387869-f8b1-4269-bd26-e39380d17b69">
<producedTypes>
<objectType typeId="9cb91b1a-ae31-403c-8c5d-e0fd01955e6c" valueTypeId="74fba94b-4c84-497d-a403-5c2dd8ebbc57"/>
@@ -723,6 +724,47 @@
</attributes>
<use>ForFolderAndItem</use>
</tabularSections>
<forms uuid="826c2821-147d-4aaf-910c-acfbdb58a29f">
<name>ИсправлениеВидовКонтактнойИнформации</name>
<synonym>
<key>ru</key>
<value>Исправление видов контактной информации</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="aeea0075-bdeb-41b7-b9cc-1da7b500455f">
<name>ФормаВыбора</name>
<synonym>
<key>ru</key>
<value>Форма выбора</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="11c086b0-c646-4701-983d-c38758286354">
<name>ФормаВыбораГруппы</name>
<synonym>
<key>ru</key>
<value>Форма выбора группы</value>
</synonym>
<help>
<pages>
<lang>ru</lang>
</pages>
</help>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="21fad9b6-44df-417c-ba18-de4b8af98a34">
<name>ФормаГруппы</name>
<synonym>
<key>ru</key>
<value>Форма группы</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="f5ef3f75-7d12-4284-844f-54d19d1f7e2f">
<name>ФормаСписка</name>
<synonym>
@@ -746,36 +788,4 @@
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="21fad9b6-44df-417c-ba18-de4b8af98a34">
<name>ФормаГруппы</name>
<synonym>
<key>ru</key>
<value>Форма группы</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="11c086b0-c646-4701-983d-c38758286354">
<name>ФормаВыбораГруппы</name>
<synonym>
<key>ru</key>
<value>Форма выбора группы</value>
</synonym>
<help>
<pages>
<lang>ru</lang>
</pages>
</help>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="826c2821-147d-4aaf-910c-acfbdb58a29f">
<name>ИсправлениеВидовКонтактнойИнформации</name>
<synonym>
<key>ru</key>
<value>Исправление видов контактной информации</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:Catalog>
@@ -162,7 +162,7 @@
<scale>2</scale>
</numberQualifiers>
<stringQualifiers>
<length>64</length>
<length>128</length>
</stringQualifiers>
<dateQualifiers/>
</type>
@@ -194,7 +194,7 @@
<scale>2</scale>
</numberQualifiers>
<stringQualifiers>
<length>64</length>
<length>128</length>
</stringQualifiers>
<dateQualifiers/>
</type>
@@ -226,7 +226,7 @@
<scale>2</scale>
</numberQualifiers>
<stringQualifiers>
<length>64</length>
<length>128</length>
</stringQualifiers>
<dateQualifiers/>
</type>
@@ -257,7 +257,7 @@
<scale>2</scale>
</numberQualifiers>
<stringQualifiers>
<length>64</length>
<length>128</length>
</stringQualifiers>
<dateQualifiers/>
</type>
@@ -288,7 +288,7 @@
<scale>2</scale>
</numberQualifiers>
<stringQualifiers>
<length>64</length>
<length>128</length>
</stringQualifiers>
<dateQualifiers/>
</type>
@@ -12,7 +12,9 @@
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ТипЗнч(Параметры.ОбновляемыеКомпоненты) <> Тип("Массив") Или Параметры.ОбновляемыеКомпоненты.Количество() = 0 Тогда
ВызватьИсключение НСтр("ru = 'Некорректное значение параметра формы ОбновляемыеКомпоненты.'");
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Некорректное значение параметра %1 формы %2.'"),
"ОбновляемыеКомпоненты", "ОбновлениеКомпонентСПортала1СИТС");
КонецЕсли;
ДанныеАутентификацииПорталаСохранены = ДанныеАутентификацииПорталаСохранены();
@@ -34,7 +34,7 @@
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Информация</picture>
<picture>StdPicture.Information</picture>
</picture>
</extInfo>
</items>
@@ -120,7 +120,7 @@
КонецПроцедуры
// Обработчик обновления на версию 3.1.5.282:
// Обработчик обновления на версию 3.1.6.48:
// - заполняет реквизиты совместимости для браузеров MacOS в справочнике "Внешние компоненты".
//
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
@@ -852,8 +852,18 @@
Процедура ИзменитьПараметрыРасширеннойФормыПодбора()
// Загрузка списка выбранных пользователей.
ПараметрыРасширеннойФормыПодбора = ПолучитьИзВременногоХранилища(Параметры.ПараметрыРасширеннойФормыПодбора);
ВыбранныеПользователиИГруппы.Загрузить(ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи);
Если ЗначениеЗаполнено(Параметры.ПараметрыРасширеннойФормыПодбора) Тогда
ПараметрыРасширеннойФормыПодбора = ПолучитьИзВременногоХранилища(Параметры.ПараметрыРасширеннойФормыПодбора);
Иначе
ПараметрыРасширеннойФормыПодбора = Параметры;
КонецЕсли;
Если ТипЗнч(ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи) = Тип("ТаблицаЗначений") Тогда
ВыбранныеПользователиИГруппы.Загрузить(ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи);
Иначе
Для Каждого ВыбранныйПользователь Из ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи Цикл
ВыбранныеПользователиИГруппы.Добавить().Пользователь = ВыбранныйПользователь;
КонецЦикла;
КонецЕсли;
ХранимыеПараметры.Вставить("ЗаголовокФормыПодбора", ПараметрыРасширеннойФормыПодбора.ЗаголовокФормыПодбора);
Пользователи.ЗаполнитьНомераКартинокПользователей(ВыбранныеПользователиИГруппы, "Пользователь", "НомерКартинки");
// Установка параметров расширенной формы подбора.
@@ -161,7 +161,8 @@
КонецЕсли;
КонецЕсли;
Если Не ПользователиСлужебныйПовтИсп.Настройки().ОбщиеНастройкиВхода Тогда
Если ОбщегоНазначения.РазделениеВключено()
Или Не ПользователиСлужебныйПовтИсп.Настройки().ОбщиеНастройкиВхода Тогда
Элементы.ГруппаИзменитьОграничение.Видимость = Ложь;
КонецЕсли;
@@ -154,15 +154,15 @@
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторых внешних пользователей (пропущены): %1
|%2'"), ПроблемныхОбъектов, СтрСоединить(СписокОшибок, Символы.ПС));
НСтр("ru = 'Не удалось обработать некоторых внешних пользователей (пропущены): %1
|%2'"), ПроблемныхОбъектов, СтрСоединить(СписокОшибок, Символы.ПС));
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Метаданные.Справочники.ВнешниеПользователи,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию внешних пользователей: %1'"),
ОбъектовОбработано));
НСтр("ru = 'Обработана очередная порция внешних пользователей: %1'"),
ОбъектовОбработано));
КонецЕсли;
КонецПроцедуры
@@ -83,7 +83,7 @@
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать вопрос шаблона анкеты: %1 по причине:
НСтр("ru = 'Не удалось обработать вопрос шаблона анкеты %1 по причине:
|%2'"),
Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение,
@@ -95,13 +95,13 @@
Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ВопросыШаблонаАнкеты");
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре ЗаполнитьРеквизитСпособОтображенияПодсказки не удалось обработать некоторые вопросы шаблона анкеты (пропущены): %1'"),
НСтр("ru = 'Не удалось обработать некоторые вопросы шаблона анкеты (пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Метаданные.Справочники.ВопросыШаблонаАнкеты,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ЗаполнитьРеквизитСпособОтображенияПодсказки обработала очередную порцию вопросов шаблона анкеты: %1'"),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Обработана очередная порция вопросов шаблона анкеты: %1'"),
ОбъектовОбработано));
КонецЕсли;
@@ -94,6 +94,16 @@
Процедура ПередЗаписью(Отказ)
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после блокировки регистра.
// Блокировка всего регистра используется вместо установки разделяемой блокировки на справочник,
// которая приводит к взаимоблокировке при иерархическом обновлении составов групп пользователей,
// а также вместо последовательной исключительной блокировки регистра в разрезе групп,
// которая также приводит к взаимоблокировке в ряде случаев.
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("РегистрСведений.СоставыГруппПользователей");
Блокировка.Заблокировать();
// АПК:75-вкл
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
@@ -225,10 +225,6 @@
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -1741,6 +1741,10 @@
<event>OnOpen</event>
<name>ПриОткрытии</name>
</handlers>
<handlers>
<event>OnReopen</event>
<name>ПриПовторномОткрытии</name>
</handlers>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
@@ -2146,6 +2150,32 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ПерейтиКВидуДоступа</name>
<id>11</id>
<valueType>
<types>AnyRef</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ПерейтиКЗначениюДоступа</name>
<id>12</id>
<valueType>
<types>AnyRef</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>Подобрать</name>
<title>
@@ -63,6 +63,9 @@
Элементы.ФормаЗаписатьИЗакрыть.Доступность = Не ТолькоПросмотр
И ПравоДоступа("Редактирование", Метаданные.Справочники.ГруппыДоступа);
Параметры.Свойство("ПерейтиКВидуДоступа", ПерейтиКВидуДоступа);
Параметры.Свойство("ПерейтиКЗначениюДоступа", ПерейтиКЗначениюДоступа);
КонецПроцедуры
&НаКлиенте
@@ -122,6 +125,17 @@
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ПерейтиКЗначениюДоступа) Тогда
ПодключитьОбработчикОжидания("ПерейтиКЗначениюДоступа", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриПовторномОткрытии()
ПодключитьОбработчикОжидания("ПерейтиКЗначениюДоступа", 0.1, Истина);
КонецПроцедуры
&НаСервере
@@ -1550,4 +1564,29 @@
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиКЗначениюДоступа()
Если ЗначениеЗаполнено(ПерейтиКЗначениюДоступа) Тогда
Элементы.ПользователиИДоступ.ТекущаяСтраница = Элементы.Доступ;
ТекущийЭлемент = Элементы.Доступ;
Отбор = Новый Структура("ВидДоступа", ПерейтиКВидуДоступа);
НайденныеСтроки = Объект.ВидыДоступа.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 1 Тогда
ТекущийЭлемент = Элементы.ВидыДоступаВидДоступаПредставление;
Элементы.ВидыДоступа.ТекущаяСтрока = НайденныеСтроки[0].ПолучитьИдентификатор();
Отбор.Вставить("ЗначениеДоступа", ПерейтиКЗначениюДоступа);
НайденныеСтроки = Объект.ЗначенияДоступа.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 1 Тогда
ТекущийЭлемент = Элементы.ЗначенияДоступаЗначениеДоступа;
Элементы.ЗначенияДоступа.ТекущаяСтрока = НайденныеСтроки[0].ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПерейтиКВидуДоступа = Неопределено;
ПерейтиКЗначениюДоступа = Неопределено;
КонецПроцедуры
#КонецОбласти
@@ -427,6 +427,11 @@
ЗаблокироватьДанныеДляРедактирования(ГруппаДоступа.Ссылка, ГруппаДоступа.ВерсияДанных);
КонецЕсли;
Если Не Справочники.ВерсииРасширений.ВсеРасширенияПодключены() Тогда
СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ГруппаДоступа.Ссылка, "ВидыДоступа, ЗначенияДоступа");
Справочники.ПрофилиГруппДоступа.ВосстановитьНесуществующиеВидыИЗначенияДоступа(СтарыеЗначения, ГруппаДоступа);
КонецЕсли;
ГруппаДоступа.ДополнительныеСвойства.Вставить("НеОбновлятьРолиПользователей");
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ГруппаДоступа);
ГруппаДоступаОбновлена = Истина;
@@ -1219,19 +1224,16 @@
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре Справочники.ГруппыДоступа.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось
|обновить вспомогательные данные некоторых групп доступа (пропущены): %1'"),
НСтр("ru = 'Не удалось обновить вспомогательные данные некоторых групп доступа (пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Информация,
Метаданные.НайтиПоПолномуИмени("Справочник.ГруппыДоступа"),,
Метаданные.Справочники.ГруппыДоступа,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедура Справочники.ГруппыДоступа.ОбработатьДанныеДляПереходаНаНовуюВерсию
|обработала очередную порцию групп доступа: %1'"),
ОбъектовОбработано));
НСтр("ru = 'Обработана очередная порция групп доступа: %1'"),
ОбъектовОбработано));
КонецЕсли;
Параметры.ОбработкаЗавершена = ОбработкаЗавершена;
@@ -1348,9 +1350,10 @@
ДопустимыеТипы = Метаданные.ОпределяемыеТипы.ЗначениеДоступа.Тип;
ИмяПараметраРаботыПрограммы = "СтандартныеПодсистемы.УправлениеДоступом.ИспользуемыеВидыДоступаИзмененныеПриЗагрузке";
Иначе
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Недопустимое значение ""%1"" параметра ВидСсылок функции СвойстваВидаСсылок.'"),
ВидСсылок);
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Недопустимое значение ""%1"" параметра %2 функции %3.'"),
ВидСсылок, "ВидСсылок", "СвойстваВидаСсылок");
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Возврат Новый Структура("ДопустимыеТипы, ИмяПараметраРаботыПрограммы", ДопустимыеТипы, ИмяПараметраРаботыПрограммы);
@@ -27,12 +27,15 @@
Возврат;
КонецЕсли;
СтандартныеПодсистемыСервер.ПроверитьДинамическоеОбновлениеВерсииПрограммы();
РегистрыСведений.ПраваРолей.ПроверитьДанныеРегистра();
СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка,
"Ссылка, Профиль, ПометкаУдаления, Пользователи, ВидыДоступа, ЗначенияДоступа");
Если Не Справочники.ВерсииРасширений.ВсеРасширенияПодключены() Тогда
Справочники.ПрофилиГруппДоступа.ВосстановитьНесуществующиеВидыИЗначенияДоступа(СтарыеЗначения, ЭтотОбъект);
КонецЕсли;
// Удаление пустых участников группы доступа.
Индекс = Пользователи.Количество() - 1;
Пока Индекс >= 0 Цикл
@@ -171,7 +174,8 @@
Справочники.ГруппыДоступа.ОбновитьРолиПользователейИзмененныхПриЗагрузке();
Если УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально() Тогда
ТипыИзмененныхУчастников = ТипыИзмененныхУчастников(Пользователи, СтарыеЗначения.Пользователи);
ТипыИзмененныхУчастников = ТипыИзмененныхУчастников(Пользователи, СтарыеЗначения.Пользователи,
ПометкаУдаления <> СтарыеЗначения.ПометкаУдаления);
УправлениеДоступомСлужебный.ЗапланироватьОбновлениеНаборовГруппДоступа(
"ГруппыДоступаПриИзмененииУчастников",
ТипыИзмененныхУчастников.Пользователи,
@@ -209,7 +213,7 @@
// * ВнешниеПользователи - Булево
// * Пользователи - Булево
//
Функция ТипыИзмененныхУчастников(НовыеУчастники, СтарыеУчастники)
Функция ТипыИзмененныхУчастников(НовыеУчастники, СтарыеУчастники, ИзмениласьПометкаУдаления)
ТипыИзмененныхУчастников = Новый Структура;
ТипыИзмененныхУчастников.Вставить("Пользователи", Ложь);
@@ -228,7 +232,8 @@
КонецЕсли;
ВсеУчастники.Свернуть("Пользователь", "ВидИзмененияСтроки");
Для Каждого Строка Из ВсеУчастники Цикл
Если Строка.ВидИзмененияСтроки = 0 Тогда
Если Строка.ВидИзмененияСтроки = 0
И Не ИзмениласьПометкаУдаления Тогда
Продолжить;
КонецЕсли;
Если ТипЗнч(Строка.Пользователь) = Тип("СправочникСсылка.Пользователи")
@@ -75,6 +75,16 @@
// Блокирует недопустимые действия с предопределенной группой "Все пользователи".
Процедура ПередЗаписью(Отказ)
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после блокировки регистра.
// Блокировка всего регистра используется вместо установки разделяемой блокировки на справочник,
// которая приводит к взаимоблокировке при иерархическом обновлении составов групп пользователей,
// а также вместо последовательной исключительной блокировки регистра в разрезе групп,
// которая также приводит к взаимоблокировке в ряде случаев.
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("РегистрСведений.СоставыГруппПользователей");
Блокировка.Заблокировать();
// АПК:75-вкл
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
@@ -22,7 +22,7 @@
ПараметрыФормы.Вставить("Отображение", "Список");
ПараметрыФормы.Вставить("ПроверкаДополнительныхОтчетовИОбработок", Истина);
ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаСписка", ПараметрыФормы);
ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.ФормаСписка", ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
@@ -630,10 +630,6 @@
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -706,24 +702,17 @@
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
Значения.Ссылка,
Значения.ВерсияДанных,
Значения.ПометкаУдаления,
Значения.Предопределенный,
Значения.Владелец,
Значения.Родитель,
Значения.ЭтоГруппа,
ВЫБОР
КОГДА &amp;ЭтоОсновнойЯзык
ТОГДА Значения.Наименование
ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150))
КОНЕЦ КАК Наименование,
Значения.Вес
ЗначенияПереопределяемый.Ссылка,
ЗначенияПереопределяемый.ВерсияДанных,
ЗначенияПереопределяемый.ПометкаУдаления,
ЗначенияПереопределяемый.Предопределенный,
ЗначенияПереопределяемый.Владелец,
ЗначенияПереопределяемый.Родитель,
ЗначенияПереопределяемый.ЭтоГруппа,
ЗначенияПереопределяемый.Наименование КАК Наименование,
ЗначенияПереопределяемый.Вес
ИЗ
Справочник.ЗначенияСвойствОбъектов КАК Значения
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектов.Представления КАК ЗначенияПредставления
ПО (ЗначенияПредставления.Ссылка = Значения.Ссылка)
И ЗначенияПредставления.КодЯзыка = &amp;КодЯзыка</queryText>
Справочник.ЗначенияСвойствОбъектов КАК ЗначенияПереопределяемый</queryText>
<mainTable>Catalog.ЗначенияСвойствОбъектов</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
@@ -49,10 +49,33 @@
ПриИзмененииСвойства();
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
Список, "ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык, Истина);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
Список, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина);
СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя();
Если СуффиксТекущегоЯзыка = Неопределено Тогда
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "ЗначенияПереопределяемый.Наименование КАК Наименование",
"ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, ЗначенияПереопределяемый.Наименование) КАК СТРОКА(150)) КАК Наименование");
СвойстваСписка.ТекстЗапроса = СвойстваСписка.ТекстЗапроса + "
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектов.Представления КАК ЗначенияПредставления
| ПО (ЗначенияПредставления.Ссылка = ЗначенияПереопределяемый.Ссылка)
| И ЗначенияПредставления.КодЯзыка = &КодЯзыка";
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
Список, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина);
Иначе
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -157,15 +180,8 @@
СтрокаЗаголовка = "";
Если ЗначениеЗаполнено(Свойство) Тогда
Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда
СтрокаЗаголовка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Свойство, "ЗаголовокФормыВыбораЗначения");
Иначе
Реквизиты = Новый Массив;
Реквизиты.Добавить("ЗаголовокФормыВыбораЗначения");
ЗначенияРеквизитов = УправлениеСвойствамиСлужебный.ЛокализованныеЗначенияРеквизитов(Свойство, Реквизиты);
СтрокаЗаголовка = ЗначенияРеквизитов.ЗаголовокФормыВыбораЗначения;
КонецЕсли;
СтрокаЗаголовка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Свойство, "ЗаголовокФормыВыбораЗначения",, ТекущийЯзык().КодЯзыка);
КонецЕсли;
Если ПустаяСтрока(СтрокаЗаголовка) Тогда
@@ -136,15 +136,8 @@
&НаСервере
Процедура УстановитьЗаголовок()
Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.Владелец, "Заголовок, ЗаголовокФормыЗначения");
Иначе
Реквизиты = Новый Массив;
Реквизиты.Добавить("Заголовок");
Реквизиты.Добавить("ЗаголовокФормыЗначения");
ЗначенияРеквизитов = УправлениеСвойствамиСлужебный.ЛокализованныеЗначенияРеквизитов(Объект.Владелец, Реквизиты);
КонецЕсли;
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.Владелец, "Заголовок, ЗаголовокФормыЗначения",, ТекущийЯзык().КодЯзыка);
ИмяСвойства = СокрЛП(ЗначенияРеквизитов.ЗаголовокФормыЗначения);
@@ -596,10 +596,6 @@
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -672,23 +668,16 @@
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
Значения.Ссылка,
Значения.ВерсияДанных,
Значения.ПометкаУдаления,
Значения.Предопределенный,
Значения.Владелец,
Значения.Родитель,
ВЫБОР
КОГДА &amp;ЭтоОсновнойЯзык
ТОГДА Значения.Наименование
ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150))
КОНЕЦ КАК Наименование,
Значения.Вес
ЗначенияПереопределяемый.Ссылка,
ЗначенияПереопределяемый.ВерсияДанных,
ЗначенияПереопределяемый.ПометкаУдаления,
ЗначенияПереопределяемый.Предопределенный,
ЗначенияПереопределяемый.Владелец,
ЗначенияПереопределяемый.Родитель,
ЗначенияПереопределяемый.Наименование КАК Наименование,
ЗначенияПереопределяемый.Вес
ИЗ
Справочник.ЗначенияСвойствОбъектовИерархия КАК Значения
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектовИерархия.Представления КАК ЗначенияПредставления
ПО (ЗначенияПредставления.Ссылка = Значения.Ссылка)
И ЗначенияПредставления.КодЯзыка = &amp;КодЯзыка</queryText>
Справочник.ЗначенияСвойствОбъектовИерархия КАК ЗначенияПереопределяемый</queryText>
<mainTable>Catalog.ЗначенияСвойствОбъектовИерархия</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
@@ -32,10 +32,32 @@
ПриИзмененииСвойства();
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
Список, "ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык, Истина);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
Список, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина);
СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя();
Если СуффиксТекущегоЯзыка = Неопределено Тогда
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = Список.ТекстЗапроса + "
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектовИерархия.Представления КАК ЗначенияПредставления
| ПО (ЗначенияПредставления.Ссылка = ЗначенияПереопределяемый.Ссылка)
| И ЗначенияПредставления.КодЯзыка = &КодЯзыка";
СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "ЗначенияПереопределяемый.Наименование КАК Наименование",
"ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, ЗначенияПереопределяемый.Наименование) КАК СТРОКА(150)) КАК Наименование");
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
Список, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина);
ИначеЕсли ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
@@ -111,15 +133,8 @@
СтрокаЗаголовка = "";
Если ЗначениеЗаполнено(Свойство) Тогда
Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда
СтрокаЗаголовка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Свойство, "ЗаголовокФормыВыбораЗначения");
Иначе
Реквизиты = Новый Массив;
Реквизиты.Добавить("ЗаголовокФормыВыбораЗначения");
ЗначенияРеквизитов = УправлениеСвойствамиСлужебный.ЛокализованныеЗначенияРеквизитов(Свойство, Реквизиты);
СтрокаЗаголовка = ЗначенияРеквизитов.ЗаголовокФормыВыбораЗначения;
КонецЕсли;
СтрокаЗаголовка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Свойство, "ЗаголовокФормыВыбораЗначения",, ТекущийЯзык().КодЯзыка);
КонецЕсли;
Если ПустаяСтрока(СтрокаЗаголовка) Тогда
@@ -136,16 +136,9 @@
&НаСервере
Процедура УстановитьЗаголовок()
Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.Владелец, "Заголовок, ЗаголовокФормыЗначения");
Иначе
Реквизиты = Новый Массив;
Реквизиты.Добавить("Заголовок");
Реквизиты.Добавить("ЗаголовокФормыЗначения");
ЗначенияРеквизитов = УправлениеСвойствамиСлужебный.ЛокализованныеЗначенияРеквизитов(Объект.Владелец, Реквизиты);
КонецЕсли;
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.Владелец, "Заголовок, ЗаголовокФормыЗначения",, ТекущийЯзык().КодЯзыка);
ИмяСвойства = СокрЛП(ЗначенияРеквизитов.ЗаголовокФормыЗначения);
Если НЕ ПустаяСтрока(ИмяСвойства) Тогда
@@ -490,10 +490,6 @@
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -490,10 +490,6 @@
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -132,6 +132,45 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ИдентификаторРасширения</name>
<id>65</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ИдентификаторРасширения</segments>
</dataPath>
<extendedTooltip>
<name>ИдентификаторРасширенияРасширеннаяПодсказка</name>
<id>67</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИдентификаторРасширенияКонтекстноеМеню</name>
<id>66</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>24</id>
@@ -360,7 +360,7 @@
</type>
<toolTip>
<key>ru</key>
<value>Имя расширения, которому принадлежит объект метаданных, соответствующий идентификатору</value>
<value>Имя расширения, которому принадлежит объект метаданных, соответствующий идентификатору объекта метаданных расширения</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
@@ -368,6 +368,27 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="3981b13c-f8e1-44cc-a8e8-59ee9635d029">
<name>ИдентификаторРасширения</name>
<synonym>
<key>ru</key>
<value>Идентификатор расширения</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>38</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Идентификатор расширения, которому принадлежит объект метаданных, соответствующий идентификатору объекта метаданных расширения</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="cf69b045-665d-4f6c-827f-5044beacd125">
<name>ХешСуммаРасширения</name>
<synonym>
@@ -492,9 +492,6 @@
<edit>
<common>true</common>
</edit>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ref</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.ВозможнаяПричина</segments>
</notDefaultUseAlwaysAttributes>
@@ -107,7 +107,7 @@
ВозможнаяПричина = НСтр("ru = 'График не был заполнен на очередной календарный год'");
Иначе
Если Выборка.ДатаОкончания < ДатаНеобходимойЗаполненности Тогда
ВозможнаяПричина = НСтр("ru = 'Период заполнения графика ограничен (см. поле «Дата окончания»)'")
ВозможнаяПричина = НСтр("ru = 'Период заполнения графика ограничен (см. поле ""Дата окончания"").'")
КонецЕсли;
КонецЕсли;
КонецЕсли;
@@ -269,7 +269,7 @@
</title>
<toolTip>
<key>ru</key>
<value>Если дата «по» не заполнена, график будет заполняться
<value>Если дата &quot;по&quot; не заполнена, график будет заполняться
по указанному шаблону до конца года производственного календаря</value>
</toolTip>
<toolTipRepresentation>ShowBottom</toolTipRepresentation>
@@ -938,7 +938,7 @@
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Информация</picture>
<picture>StdPicture.Information</picture>
</picture>
<fileDragMode>AsFileRef</fileDragMode>
</extInfo>
@@ -726,7 +726,7 @@
КонецЕсли;
// Переносим результат в исходное соответствие заполнения,
// чтобы не «затереть» даты, не входящие в интервал заполнения.
// чтобы не затереть даты, не входящие в интервал заполнения.
ДниГрафикаСоответствие = Новый Соответствие(ДниГрафика);
ДатаДня = Объект.ДатаНачала;
ДатаОкончания = Объект.ДатаОкончания;
@@ -912,7 +912,7 @@
ДоступноЗаполнениеПоШаблону = Ложь;
Если Форма.РучноеРедактирование Тогда
ИнформационныйТекст = НСтр("ru = 'График работы на текущий год изменен вручную.
|Нажмите «Заполнить по шаблону» чтобы вернуться к автоматическому заполнению.'");
|Нажмите ""Заполнить по шаблону"", чтобы вернуться к автоматическому заполнению.'");
ИнформационнаяКартинка = БиблиотекаКартинок.Предупреждение;
ДоступноЗаполнениеПоШаблону = Истина;
Иначе
@@ -923,7 +923,7 @@
КонецЕсли;
Иначе
ИнформационныйТекст = НСтр("ru = 'Отображаемый результат не соответствует настройке шаблона.
|Нажмите «Заполнить по шаблону», чтобы увидеть как выглядит график работы с учетом изменений шаблона.'");
|Нажмите ""Заполнить по шаблону"", чтобы увидеть как выглядит график работы с учетом изменений шаблона.'");
ИнформационнаяКартинка = БиблиотекаКартинок.Предупреждение;
ДоступноЗаполнениеПоШаблону = Истина;
КонецЕсли;
@@ -55,11 +55,8 @@
ТекстСообщения = НСтр("ru = 'Ключевая операция с приоритетом ""%1"" уже существует (%2).'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Строка(Приоритет));
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", Выборка.Наименование);
ЗаписьЖурналаРегистрации(НСтр("ru = 'Справочник.КлючевыеОперации.МодульОбъекта.ПередЗаписью'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,
,
НСтр("ru = 'Оценка производительности'"),
ТекстСообщения);
ЗаписьЖурналаРегистрации(НСтр("ru = 'Оценка производительности'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,, Выборка.Ссылка, ТекстСообщения);
ОценкаПроизводительностиСлужебный.СообщитьПользователю(ТекстСообщения);
Отказ = Истина;
КонецЕсли;
@@ -214,7 +214,7 @@
</type>
<toolTip>
<key>ru</key>
<value>Значение доступа, группа значений доступа, ключ доступа, идентификатор списка или значение для условия, которое извлекается через поле доступа (непосредственно или как группа значения доступа или через «точку» или через соединение)</value>
<value>Значение доступа, группа значений доступа, ключ доступа, идентификатор списка или значение для условия, которое извлекается через поле доступа (непосредственно или как группа значения доступа или через &quot;точку&quot; или через соединение)</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
@@ -0,0 +1,593 @@
<?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">
<title>
<key>ru</key>
<value>Условия видимости в подменю &quot;Печать&quot;</value>
</title>
<items xsi:type="form:Table">
<name>УсловияВидимости</name>
<id>1</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>None</titleLocation>
<items xsi:type="form:FormField">
<name>УсловияВидимостиПоле</name>
<id>29</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>УсловияВидимости.ПредставлениеПоля</segments>
</dataPath>
<extendedTooltip>
<name>УсловияВидимостиПолеРасширеннаяПодсказка</name>
<id>31</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УсловияВидимостиПолеКонтекстноеМеню</name>
<id>30</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">
<handlers>
<event>ChoiceProcessing</event>
<name>УсловияВидимостиПолеОбработкаВыбора</name>
</handlers>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<listChoiceMode>true</listChoiceMode>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>УсловияВидимостиВидСравнения</name>
<id>32</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>34</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УсловияВидимостиВидСравненияКонтекстноеМеню</name>
<id>33</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">
<handlers>
<event>StartChoice</event>
<name>УсловияВидимостиВидСравненияНачалоВыбора</name>
</handlers>
<handlers>
<event>ChoiceProcessing</event>
<name>УсловияВидимостиВидСравненияОбработкаВыбора</name>
</handlers>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<choiceButton>true</choiceButton>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>УсловияВидимостиЗначение</name>
<id>35</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>УсловияВидимости.Значение</segments>
</dataPath>
<extendedTooltip>
<name>УсловияВидимостиЗначениеРасширеннаяПодсказка</name>
<id>37</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УсловияВидимостиЗначениеКонтекстноеМеню</name>
<id>36</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>3</id>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>OnActivateRow</event>
<name>УсловияВидимостиПриАктивизацииСтроки</name>
</handlers>
<searchStringAddition>
<name>УсловияВидимостиСтрокаПоиска</name>
<id>5</id>
<extendedTooltip>
<name>УсловияВидимостиСтрокаПоискаРасширеннаяПодсказка</name>
<id>7</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УсловияВидимостиСтрокаПоискаКонтекстноеМеню</name>
<id>6</id>
<autoFill>true</autoFill>
</contextMenu>
<source>УсловияВидимости</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchStringAddition>
<viewStatusAddition>
<name>УсловияВидимостиСостояниеПросмотра</name>
<id>8</id>
<extendedTooltip>
<name>УсловияВидимостиСостояниеПросмотраРасширеннаяПодсказка</name>
<id>10</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УсловияВидимостиСостояниеПросмотраКонтекстноеМеню</name>
<id>9</id>
<autoFill>true</autoFill>
</contextMenu>
<type>ViewStatusAddition</type>
<source>УсловияВидимости</source>
<extInfo xsi:type="form:ViewStatusAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</viewStatusAddition>
<searchControlAddition>
<name>УсловияВидимостиУправлениеПоиском</name>
<id>11</id>
<extendedTooltip>
<name>УсловияВидимостиУправлениеПоискомРасширеннаяПодсказка</name>
<id>13</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УсловияВидимостиУправлениеПоискомКонтекстноеМеню</name>
<id>12</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>УсловияВидимости</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</searchControlAddition>
<extendedTooltip>
<name>УсловияВидимостиРасширеннаяПодсказка</name>
<id>4</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>
<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>
<useAlternationRowColorBWA>false</useAlternationRowColorBWA>
<autoInsertNewRow>true</autoInsertNewRow>
<searchOnInput>Auto</searchOnInput>
<initialListView>Auto</initialListView>
<horizontalStretch>true</horizontalStretch>
<verticalStretch>true</verticalStretch>
<enableStartDrag>true</enableStartDrag>
<enableDrag>true</enableDrag>
<fileDragMode>AsFileRef</fileDragMode>
<autoMaxCardHeight>true</autoMaxCardHeight>
<rowFilter xsi:type="core:UndefinedValue"/>
</items>
<commandBarLocation>Bottom</commandBarLocation>
<showCommandBar>true</showCommandBar>
<autoCommandBar>
<name>ФормаКоманднаяПанель</name>
<id>-1</id>
<items xsi:type="form:Button">
<name>ФормаЗаписатьИЗакрыть</name>
<id>49</id>
<title>
<key>ru</key>
<value>ОК</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<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>
<commandName>Form.StandardCommand.WriteAndClose</commandName>
<representation>Auto</representation>
<defaultButton>true</defaultButton>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>ФормаОтмена</name>
<id>47</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<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>
<commandName>Form.StandardCommand.Cancel</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>51</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСправкаРасширеннаяПодсказка</name>
<id>52</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.StandardCommand.Help</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</items>
<horizontalAlign>Right</horizontalAlign>
</autoCommandBar>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
</handlers>
<excludedCommands>Abort</excludedCommands>
<excludedCommands>ChangeHistory</excludedCommands>
<excludedCommands>Close</excludedCommands>
<excludedCommands>Copy</excludedCommands>
<excludedCommands>CustomizeForm</excludedCommands>
<excludedCommands>Delete</excludedCommands>
<excludedCommands>Ignore</excludedCommands>
<excludedCommands>No</excludedCommands>
<excludedCommands>OK</excludedCommands>
<excludedCommands>Reread</excludedCommands>
<excludedCommands>RestoreValues</excludedCommands>
<excludedCommands>Retry</excludedCommands>
<excludedCommands>SaveValues</excludedCommands>
<excludedCommands>SetDeletionMark</excludedCommands>
<excludedCommands>ShowInList</excludedCommands>
<excludedCommands>Write</excludedCommands>
<excludedCommands>Yes</excludedCommands>
<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>
<attributes>
<name>УсловияВидимости</name>
<title>
<key>ru</key>
<value>Условия видимости</value>
</title>
<id>2</id>
<valueType>
<types>ValueTable</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<columns>
<name>ПредставлениеПоля</name>
<title>
<key>ru</key>
<value>Поле</value>
</title>
<id>3</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>ПредставлениеВидаСравнения</name>
<title>
<key>ru</key>
<value>Вид сравнения</value>
</title>
<id>4</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>Значение</name>
<title>
<key>ru</key>
<value>Значение</value>
</title>
<id>5</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>Поле</name>
<id>7</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>ВидСравнения</name>
<id>8</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
</attributes>
<attributes>
<name>РеквизитыОбъекта</name>
<id>11</id>
<valueType>
<types>ValueTable</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<columns>
<name>Поле</name>
<id>13</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>Тип</name>
<id>14</id>
<valueType>
<types>TypeDescription</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>ПредставлениеПоля</name>
<id>15</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
</attributes>
<commandInterface>
<navigationPanel/>
<commandBar/>
</commandInterface>
<extInfo xsi:type="form:CatalogFormExtInfo">
<handlers>
<event>AfterWriteAtServer</event>
<name>ПослеЗаписиНаСервере</name>
</handlers>
<handlers>
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
<handlers>
<event>BeforeWrite</event>
<name>ПередЗаписью</name>
</handlers>
<handlers>
<event>BeforeWriteAtServer</event>
<name>ПередЗаписьюНаСервере</name>
</handlers>
</extInfo>
</form:Form>
@@ -0,0 +1,3 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link></head><body>С помощью кнопки <b>Видимость в подменю "Печать"</b> можно ограничить доступность соответствующей команды печати в зависимости от значений реквизитов элементов. 
<div>Видимость команд печати нужна для того, чтобы печатная форма могла быть сформирована только для подходящего документа.
<div>Для ввода условия нажмите <b>Добавить</b>.<br><div>Выберите <b>Поле</b> документа, <b>Вид сравнения</b>, напишите или выберите <b>Значение</b>, с которым будет сравниваться поле.</div></div></div></body></html>
@@ -0,0 +1,302 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2022, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ЗаполнитьСписокВыбораПоля();
СписокУсловий = ТекущийОбъект.УсловиеВидимости.Получить();
Если ТипЗнч(СписокУсловий) <> Тип("Массив") Тогда
Возврат;
КонецЕсли;
ИдентификаторыВидовСравнения = ИдентификаторыВидовСравнения();
ПредставленияВидовСравнения = ПредставленияВидовСравнения();
Для Каждого Условие Из СписокУсловий Цикл
ОписаниеПоля = ОписаниеПоля(Условие.Реквизит);
Если ОписаниеПоля = Неопределено Тогда
Продолжить;
КонецЕсли;
ОписаниеУсловия = УсловияВидимости.Добавить();
ЗаполнитьЗначенияСвойств(ОписаниеУсловия, ОписаниеПоля);
ОписаниеУсловия.ВидСравнения = ИдентификаторыВидовСравнения[Условие.ВидСравнения];
ОписаниеУсловия.ПредставлениеВидаСравнения = ПредставленияВидовСравнения[ОписаниеУсловия.ВидСравнения];
ОписаниеУсловия.Значение = Условие.Значение;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ОбновитьПовторноИспользуемыеЗначения();
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
СписокУсловий = Новый Массив;
Для Каждого Условие Из УсловияВидимости Цикл
ОписаниеУсловия = Новый Структура();
ОписаниеУсловия.Вставить("Реквизит", Условие.Поле);
ОписаниеУсловия.Вставить("ВидСравнения", ВидСравненияКомпоновкиДанных[Условие.ВидСравнения]);
ОписаниеУсловия.Вставить("Значение", Условие.Значение);
СписокУсловий.Добавить(ОписаниеУсловия);
КонецЦикла;
ТекущийОбъект.УсловиеВидимости = Новый ХранилищеЗначения(СписокУсловий, Новый СжатиеДанных(9));
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Для Каждого Условие Из УсловияВидимости Цикл
ИндексСтроки = УсловияВидимости.Индекс(Условие);
Если Не ЗначениеЗаполнено(Условие.ВидСравнения) Тогда
ТекстСообщения = НСтр("ru = 'Укажите вид сравнения'");
Поле = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("УсловияВидимости[%1].ПредставлениеВидаСравнения", Формат(ИндексСтроки, "ЧГ=0;"));
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, , Поле, , Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Условие.Поле) Тогда
ТекстСообщения = НСтр("ru = 'Выберите поле'");
Поле = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("УсловияВидимости[%1].ПредставлениеПоля", Формат(ИндексСтроки, "ЧГ=0;"));
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, , Поле, , Отказ);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыУсловияВидимости
&НаКлиенте
Процедура УсловияВидимостиПриАктивизацииСтроки(Элемент)
УстановитьОграничениеТипа();
КонецПроцедуры
&НаКлиенте
Процедура УсловияВидимостиПолеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ТекущиеДанные = Элементы.УсловияВидимости.ТекущиеДанные;
ТекущиеДанные.Поле = ВыбранноеЗначение;
Значение = Элементы.УсловияВидимостиПоле.СписокВыбора.НайтиПоЗначению(ВыбранноеЗначение);
ВыбранноеЗначение = Значение.Представление;
Если ТекущиеДанные.ВидСравнения = "Заполнено" Или ТекущиеДанные.ВидСравнения = "НеЗаполнено" Тогда
ТекущиеДанные.Значение = Неопределено;
КонецЕсли;
УстановитьОграничениеТипа();
КонецПроцедуры
&НаКлиенте
Процедура УсловияВидимостиВидСравненияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДанныеВыбора = Новый СписокЗначений();
ДанныеВыбора.Добавить("Равно");
ДанныеВыбора.Добавить("НеРавно");
ДанныеВыбора.Добавить("Заполнено");
ДанныеВыбора.Добавить("НеЗаполнено");
ДанныеВыбора.Добавить("ВСписке");
ДанныеВыбора.Добавить("НеВСписке");
ПредставленияВидовСравнения = ПредставленияВидовСравнения();
Для Каждого ОписаниеВидаСравнения Из ДанныеВыбора Цикл
ОписаниеВидаСравнения.Представление = ПредставленияВидовСравнения[ОписаниеВидаСравнения.Значение];
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура УсловияВидимостиВидСравненияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ТекущиеДанные = Элементы.УсловияВидимости.ТекущиеДанные;
ТекущиеДанные.ВидСравнения = ВыбранноеЗначение;
ВыбранноеЗначение = ПредставленияВидовСравнения()[ВыбранноеЗначение];
УстановитьОграничениеТипа();
КонецПроцедуры
&НаКлиенте
Процедура УсловияВидимостиВидСравненияПриИзменении(Элемент)
УстановитьОграничениеТипа();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ЗаполнитьСписокВыбораПоля()
Если Не ЗначениеЗаполнено(Объект.ИсточникДанных) Тогда
Возврат;
КонецЕсли;
ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(Объект.ИсточникДанных, Ложь);
Если ОбъектМетаданных = Неопределено Тогда
Возврат;
КонецЕсли;
КоллекцииРеквизитов = Новый Массив;
КоллекцииРеквизитов.Добавить(ОбъектМетаданных.СтандартныеРеквизиты);
КоллекцииРеквизитов.Добавить(ОбъектМетаданных.Реквизиты);
Для Каждого КоллекцияРеквизитов Из КоллекцииРеквизитов Цикл
Для Каждого Реквизит Из КоллекцияРеквизитов Цикл
ОписаниеРеквизита = РеквизитыОбъекта.Добавить();
ОписаниеРеквизита.Поле = Реквизит.Имя;
ОписаниеРеквизита.Тип = Реквизит.Тип;
ОписаниеРеквизита.ПредставлениеПоля = Реквизит.Представление();
Элементы.УсловияВидимостиПоле.СписокВыбора.Добавить(ОписаниеРеквизита.Поле, ОписаниеРеквизита.ПредставлениеПоля);
КонецЦикла;
КонецЦикла;
Элементы.УсловияВидимостиПоле.СписокВыбора.СортироватьПоПредставлению();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПредставленияВидовСравнения()
Результат = Новый Соответствие();
Результат.Вставить("Равно", НСтр("ru = 'Равно'"));
Результат.Вставить("НеРавно", НСтр("ru = 'Не равно'"));
Результат.Вставить("Заполнено", НСтр("ru = 'Заполнено'"));
Результат.Вставить("НеЗаполнено", НСтр("ru = 'Не заполнено'"));
Результат.Вставить("ВСписке", НСтр("ru = 'В списке'"));
Результат.Вставить("НеВСписке", НСтр("ru = 'Не в списке'"));
Возврат Результат;
КонецФункции
&НаСервере
Функция ИдентификаторыВидовСравнения()
Результат = Новый Соответствие();
Результат.Вставить(ВидСравненияКомпоновкиДанных.Равно, "Равно");
Результат.Вставить(ВидСравненияКомпоновкиДанных.НеРавно, "НеРавно");
Результат.Вставить(ВидСравненияКомпоновкиДанных.Заполнено, "Заполнено");
Результат.Вставить(ВидСравненияКомпоновкиДанных.НеЗаполнено, "НеЗаполнено");
Результат.Вставить(ВидСравненияКомпоновкиДанных.ВСписке, "ВСписке");
Результат.Вставить(ВидСравненияКомпоновкиДанных.НеВСписке, "НеВСписке");
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура УстановитьОграничениеТипа()
ТекущиеДанные = Элементы.УсловияВидимости.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Или Не ЗначениеЗаполнено(ТекущиеДанные.Поле) Тогда
Возврат;
КонецЕсли;
ОграничениеТипа = ТипЗначенияПоля(ТекущиеДанные.Поле);
Если ТекущиеДанные.ВидСравнения = "Заполнено" Или ТекущиеДанные.ВидСравнения = "НеЗаполнено" Тогда
ОграничениеТипа = Новый ОписаниеТипов();
ТекущиеДанные.Значение = Неопределено;
ИначеЕсли ТекущиеДанные.ВидСравнения = "ВСписке" Или ТекущиеДанные.ВидСравнения = "НеВСписке" Тогда
ОграничениеТипа = Новый ОписаниеТипов("СписокЗначений");
КонецЕсли;
Элементы.УсловияВидимостиЗначение.ОграничениеТипа = ОграничениеТипа;
ТекущиеДанные.Значение = ОграничениеТипа.ПривестиЗначение(ТекущиеДанные.Значение);
КонецПроцедуры
&НаКлиенте
Функция ТипЗначенияПоля(Поле)
Тип = Неопределено;
Если ЗначениеЗаполнено(Поле) Тогда
НайденныеСтроки = РеквизитыОбъекта.НайтиСтроки(Новый Структура("Поле", Поле));
Если НайденныеСтроки.Количество() > 0 Тогда
Тип = НайденныеСтроки[0].Тип;
КонецЕсли;
КонецЕсли;
Возврат Тип;
КонецФункции
&НаСервере
Функция ОписаниеПоля(Поле)
Если Не ЗначениеЗаполнено(Поле) Тогда
Возврат Неопределено;
КонецЕсли;
НайденныеСтроки = РеквизитыОбъекта.НайтиСтроки(Новый Структура("Поле", Поле));
Если НайденныеСтроки.Количество() > 0 Тогда
Возврат НайденныеСтроки[0];
КонецЕсли;
Возврат Неопределено;
КонецФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
// ТолькоПросмотр для видов сравнения Заполнено и НеЗаполнено
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(Элементы.УсловияВидимостиЗначение.Имя);
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("УсловияВидимости.ВидСравнения");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокВидовСравнения = Новый СписокЗначений();
СписокВидовСравнения.Добавить("Заполнено");
СписокВидовСравнения.Добавить("НеЗаполнено");
ЭлементОтбора.ПравоеЗначение = СписокВидовСравнения;
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,296 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2022, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныйПрограммныйИнтерфейс
// Параметры:
// Макет - УникальныйИдентификатор
//
// Возвращаемое значение:
// Массив из Строка
//
Функция ЯзыкиМакета(Макет) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| МакетыПечатныхФорм.Макет КАК Макет,
| &КодОсновногоЯзыка КАК КодЯзыка
|ИЗ
| Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм
|ГДЕ
| МакетыПечатныхФорм.Идентификатор = &Идентификатор
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| МакетыПечатныхФормПредставления.Макет,
| МакетыПечатныхФормПредставления.КодЯзыка
|ИЗ
| Справочник.МакетыПечатныхФорм.Представления КАК МакетыПечатныхФормПредставления
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм
| ПО МакетыПечатныхФормПредставления.Ссылка = МакетыПечатныхФорм.Ссылка
|ГДЕ
| МакетыПечатныхФорм.Идентификатор = &Идентификатор";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Идентификатор", Макет);
Запрос.УстановитьПараметр("КодОсновногоЯзыка", ОбщегоНазначения.КодОсновногоЯзыка());
Результат = Новый Массив;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Макет.Получить() <> Неопределено Тогда
Результат.Добавить(Выборка.КодЯзыка);
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ЗаписатьМакет(ОписаниеМакета) Экспорт
Ссылка = ОписаниеМакета.Ссылка;
Если ЗначениеЗаполнено(Ссылка) Тогда
Объект = Ссылка.ПолучитьОбъект();
Иначе
Объект = Справочники.МакетыПечатныхФорм.СоздатьЭлемент();
Объект.ИсточникДанных = ОписаниеМакета.Владелец;
Объект.ТипМакета = ОписаниеМакета.ТипМакета;
Объект.Идентификатор = Новый УникальныйИдентификатор;
КонецЕсли;
Наименование = ОписаниеМакета.Наименование;
КодЯзыка = ОписаниеМакета.КодЯзыка;
Макет = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(ОписаниеМакета.АдресМакетаВоВременномХранилище));
ОбщегоНазначения.УстановитьЗначениеРеквизита(Объект, "Наименование", Наименование, КодЯзыка);
ОбщегоНазначения.УстановитьЗначениеРеквизита(Объект, "Макет", Макет, КодЯзыка);
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.МакетыПечатныхФорм");
Если ЗначениеЗаполнено(Ссылка) Тогда
ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка);
КонецЕсли;
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
Объект.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Возврат "ПФ_" + Строка(Объект.Идентификатор);
КонецФункции
// Параметры:
// Макет - СправочникСсылка.МакетыПечатныхФорм
// Используется - Булево
//
Процедура УстановитьИспользованиеМакета(Макет, Используется) Экспорт
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.МакетыПечатныхФорм");
ЭлементБлокировки.УстановитьЗначение("Ссылка", Макет);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
Объект = Макет.ПолучитьОбъект();
Объект.Используется = Используется;
Объект.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Функция МакетСуществует(Идентификатор) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Ссылка
|ИЗ
| Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм
|ГДЕ
| МакетыПечатныхФорм.Идентификатор = &Идентификатор";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
Возврат Не Запрос.Выполнить().Пустой();
КонецФункции
Функция НайтиМакет(ПутьКМакету, КодЯзыка) Экспорт
Идентификатор = ИдентификаторМакета(ПутьКМакету);
Если Идентификатор <> Неопределено Тогда
Возврат МакетПечатнойФормыПоИдентификатору(Идентификатор, КодЯзыка);
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция МакетПечатнойФормыПоИдентификатору(Идентификатор, КодЯзыка)
ТекстЗапроса =
"ВЫБРАТЬ
| МакетыПечатныхФормПредставления.Макет
|ИЗ
| Справочник.МакетыПечатныхФорм.Представления КАК МакетыПечатныхФормПредставления
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм
| ПО МакетыПечатныхФормПредставления.Ссылка = МакетыПечатныхФорм.Ссылка
|ГДЕ
| МакетыПечатныхФорм.Идентификатор = &Идентификатор
| И МакетыПечатныхФормПредставления.КодЯзыка = &КодЯзыка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| МакетыПечатныхФорм.Макет
|ИЗ
| Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм
|ГДЕ
| МакетыПечатныхФорм.Идентификатор = &Идентификатор";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Макет = Выборка.Макет.Получить(); // ХранилищеЗначения
Если Макет = Неопределено Тогда
Продолжить;
КонецЕсли;
Макет.КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Возврат Макет;
КонецЦикла;
Возврат Неопределено;
КонецФункции
Функция ВладелецМакета(ПутьКМакету) Экспорт
Идентификатор = ИдентификаторМакета(ПутьКМакету);
Если Идентификатор = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| МакетыПечатныхФорм.ИсточникДанных КАК ИсточникДанных
|ИЗ
| Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм
|ГДЕ
| МакетыПечатныхФорм.Идентификатор = &Идентификатор";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.ИсточникДанных;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ИдентификаторМакета(ПутьКМакету)
ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина);
ИмяМакета = ЧастиПути[ЧастиПути.ВГраница()];
Если СтрНачинаетсяС(ИмяМакета, "ПФ_") Тогда
Идентификатор = Сред(ИмяМакета, 4);
Если СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(Идентификатор) Тогда
Возврат Новый УникальныйИдентификатор(Идентификатор);
КонецЕсли;
КонецЕсли;
Возврат Неопределено;
КонецФункции
// Возвращаемое значение:
// СправочникСсылка.МакетыПечатныхФорм
//
Функция СсылкаМакета(ПутьКМакету) Экспорт
Идентификатор = ИдентификаторМакета(ПутьКМакету);
Если Идентификатор = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| МакетыПечатныхФорм.Ссылка КАК Ссылка
|ИЗ
| Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм
|ГДЕ
| МакетыПечатныхФорм.Идентификатор = &Идентификатор";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Ссылка;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура УдалитьМакет(Ссылка, КодЯзыка = Неопределено) Экспорт
Объект = Ссылка.ПолучитьОбъект();
Если КодЯзыка = Неопределено Или КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка() Тогда
Объект.УстановитьПометкуУдаления(Истина);
Иначе
ОбщегоНазначения.УстановитьЗначениеРеквизита(Объект, "Макет", Новый ХранилищеЗначения(Неопределено), КодЯзыка);
КонецЕсли;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.МакетыПечатныхФорм");
ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
Объект.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -0,0 +1,306 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="de258ab8-2d16-4c69-9490-5819b7ae3d08">
<producedTypes>
<objectType typeId="051e970b-85e8-478c-81e9-e8b51fb82a19" valueTypeId="18443273-7896-4893-8681-2fe6df047bb2"/>
<refType typeId="d4f7b0ba-c9d8-4594-99eb-fb9f350f255c" valueTypeId="c300a14c-b79b-4ea1-9332-ed0c3d774dca"/>
<selectionType typeId="d24ef94c-8255-4b51-9bcd-9fa9bf61f4dc" valueTypeId="4a1af89b-4278-4a72-8196-3aafd61854db"/>
<listType typeId="4269cd6d-6f30-488d-a646-14ce94ae1a09" valueTypeId="83e6cc94-b323-4c9b-b8d9-1a231c0dbe43"/>
<managerType typeId="2ada52b2-d5d2-486a-b25b-e04cd275ab35" valueTypeId="a92c199d-9f53-4537-b08d-bb541fad7473"/>
</producedTypes>
<name>МакетыПечатныхФорм</name>
<synonym>
<key>ru</key>
<value>Макеты печатных форм</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.МакетыПечатныхФорм.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>PredefinedDataName</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Predefined</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Ref</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>DeletionMark</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>IsFolder</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Owner</name>
<fillFromFillingValue>true</fillFromFillingValue>
<fillValue xsi:type="core:UndefinedValue"/>
<fillChecking>ShowError</fillChecking>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Parent</name>
<synonym>
<key>ru</key>
<value>Основной вариант макета</value>
</synonym>
<fillFromFillingValue>true</fillFromFillingValue>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Description</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fillChecking>ShowError</fillChecking>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Code</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<objectPresentation>
<key>ru</key>
<value>Макет печатной формы</value>
</objectPresentation>
<hierarchical>true</hierarchical>
<hierarchyType>HierarchyOfItems</hierarchyType>
<limitLevelCount>true</limitLevelCount>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<descriptionLength>150</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
<attributes uuid="f7aacf70-0b59-410a-9929-ab4ab8a2431c">
<name>ИсточникДанных</name>
<synonym>
<key>ru</key>
<value>Источник данных</value>
</synonym>
<type>
<types>CatalogRef.ИдентификаторыОбъектовРасширений</types>
<types>CatalogRef.ИдентификаторыОбъектовМетаданных</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<indexing>Index</indexing>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="5bb6ba7a-ed61-4cdd-b3db-ec9da292e7a4">
<name>Используется</name>
<synonym>
<key>ru</key>
<value>Используется</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<indexing>Index</indexing>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="b37a9edd-b6bc-40eb-b5de-f54968abc119">
<name>Идентификатор</name>
<synonym>
<key>ru</key>
<value>Идентификатор</value>
</synonym>
<type>
<types>UUID</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="52338832-b15a-4e56-b13d-141141677008">
<name>Макет</name>
<synonym>
<key>ru</key>
<value>Макет</value>
</synonym>
<type>
<types>ValueStorage</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="e9616402-88cc-44ae-96ca-ba20cf7d38ad">
<name>УсловиеВидимости</name>
<synonym>
<key>ru</key>
<value>Условие видимости</value>
</synonym>
<type>
<types>ValueStorage</types>
</type>
<multiLine>true</multiLine>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="1b8212d7-b834-460c-9a2b-68a5de889e5b">
<name>ТипМакета</name>
<synonym>
<key>ru</key>
<value>Тип макета</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>4</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<tabularSections uuid="a816deca-4863-44e2-a8ff-89bfa5fbb0ac">
<producedTypes>
<objectType typeId="3a365e44-e054-4d53-9bff-320b132d9473" valueTypeId="2111fca4-ace0-4d05-b8da-b7e66e546a28"/>
<rowType typeId="53c0d0cd-8b38-42f8-ab82-6a216e542539" valueTypeId="68ee2ab5-f5d1-45c9-be5b-9dc455b0a8cb"/>
</producedTypes>
<name>Представления</name>
<synonym>
<key>ru</key>
<value>Представления</value>
</synonym>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>LineNumber</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<attributes uuid="157f3df0-97b7-461b-bd3e-1f2e12658adf">
<name>КодЯзыка</name>
<synonym>
<key>ru</key>
<value>Код языка</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>10</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Код языка представления реквизита</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillChecking>ShowError</fillChecking>
<dataHistory>Use</dataHistory>
<indexing>Index</indexing>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="d2d6968c-fbe6-4e09-9cdb-653ca9a97fcc">
<name>Наименование</name>
<synonym>
<key>ru</key>
<value>Наименование</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>150</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Представление реквизита на другом языке</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<indexing>Index</indexing>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="ea6f491e-9ec9-456d-ae30-4a258d87dff6">
<name>Макет</name>
<synonym>
<key>ru</key>
<value>Макет</value>
</synonym>
<type>
<types>ValueStorage</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<use>ForFolderAndItem</use>
</tabularSections>
<forms uuid="6ccec21e-f26f-482c-9ce2-1f058fc492c1">
<name>УсловияВидимостиВПодменюПечать</name>
<synonym>
<key>ru</key>
<value>Условия видимости в подменю &quot;Печать&quot;</value>
</synonym>
<help>
<pages>
<lang>ru</lang>
</pages>
</help>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:Catalog>
@@ -1863,9 +1863,6 @@
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>НаборыСвойств.КоличествоСведений</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>НаборыСвойств.НаименованиеНаДругихЯзыках</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>НаборыСвойств.Родитель</segments>
</notDefaultUseAlwaysAttributes>
@@ -1881,41 +1878,37 @@
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
Наборы.Ссылка КАК Ссылка,
Наборы.ВерсияДанных КАК ВерсияДанных,
Наборы.ПометкаУдаления КАК ПометкаУдаления,
Наборы.Предопределенный КАК Предопределенный,
Наборы.Родитель КАК Родитель,
Наборы.ЭтоГруппа КАК ЭтоГруппа,
Наборы.Наименование КАК Наименование,
Наборы.Используется КАК Используется,
НаборыПереопределяемый.Ссылка КАК Ссылка,
НаборыПереопределяемый.ВерсияДанных КАК ВерсияДанных,
НаборыПереопределяемый.ПометкаУдаления КАК ПометкаУдаления,
НаборыПереопределяемый.Предопределенный КАК Предопределенный,
НаборыПереопределяемый.Родитель КАК Родитель,
НаборыПереопределяемый.ЭтоГруппа КАК ЭтоГруппа,
НаборыПереопределяемый.Наименование КАК Наименование,
НаборыПереопределяемый.Используется КАК Используется,
ВЫРАЗИТЬ(&quot;&quot; КАК СТРОКА(150)) КАК Представление,
&amp;ЭтоНаборыДополнительныхСведений КАК ЭтоСведения,
НаборыПредставления.Наименование КАК НаименованиеНаДругихЯзыках,
ВЫБОР
КОГДА Наборы.ПометкаУдаления
КОГДА НаборыПереопределяемый.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА Наборы.Предопределенный
КОГДА НаборыПереопределяемый.Предопределенный
ТОГДА 2
ИНАЧЕ 0
КОНЕЦ КАК НомерКартинки,
Наборы.КоличествоРеквизитов КАК КоличествоРеквизитов,
Наборы.КоличествоСведений КАК КоличествоСведений
НаборыПереопределяемый.КоличествоРеквизитов КАК КоличествоРеквизитов,
НаборыПереопределяемый.КоличествоСведений КАК КоличествоСведений
ИЗ
Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.Представления КАК НаборыПредставления
ПО (НаборыПредставления.Ссылка = Наборы.Ссылка)
И (НаборыПредставления.КодЯзыка = &amp;КодЯзыка)
Справочник.НаборыДополнительныхРеквизитовИСведений КАК НаборыПереопределяемый
ГДЕ
ВЫБОР
КОГДА Наборы.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)
ТОГДА Наборы.Ссылка В (&amp;Наборы)
ИНАЧЕ Наборы.Родитель В (&amp;Наборы)
КОНЕЦ
И Наборы.Используется
И ЕСТЬNULL(Наборы.Родитель.Используется, ИСТИНА)</queryText>
КОГДА НаборыПереопределяемый.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)
ТОГДА НаборыПереопределяемый.Ссылка В (&amp;Наборы)
ИНАЧЕ НаборыПереопределяемый.Родитель В (&amp;Наборы)
КОНЕЦ
И НаборыПереопределяемый.Используется
И ЕСТЬNULL(НаборыПереопределяемый.Родитель.Используется, ИСТИНА)</queryText>
<mainTable>Catalog.НаборыДополнительныхРеквизитовИСведений</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
@@ -39,6 +39,35 @@
Элементы.СвойстваПодменюДобавить.Отображение = ОтображениеКнопки.Картинка;
КонецЕсли;
СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя();
Если СуффиксТекущегоЯзыка = Неопределено Тогда
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = СтрЗаменить(НаборыСвойств.ТекстЗапроса, "ГДЕ",
"ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.Представления КАК НаборыПредставления
|ПО (НаборыПредставления.Ссылка = НаборыПереопределяемый.Ссылка)
|И (НаборыПредставления.КодЯзыка = &КодЯзыка)
|ГДЕ");
СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "НаборыПереопределяемый.Наименование КАК Наименование",
"НаборыПереопределяемый.Наименование КАК Наименование, НаборыПредставления.Наименование КАК НаименованиеНаДругихЯзыках");
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.НаборыСвойств, СвойстваСписка);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
НаборыСвойств, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина);
ИначеЕсли ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект,, "НаборыСвойств");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -146,7 +175,7 @@
Данные.Представление = Строка(Данные.Ссылка);
Продолжить;
КонецЕсли;
Если ЗначениеЗаполнено(Данные.НаименованиеНаДругихЯзыках) Тогда
Если Данные.Свойство("НаименованиеНаДругихЯзыках") И ЗначениеЗаполнено(Данные.НаименованиеНаДругихЯзыках) Тогда
Данные.Представление = Данные.НаименованиеНаДругихЯзыках + " (" + Данные.КоличествоСведений + ")";
Продолжить;
КонецЕсли;
@@ -156,10 +185,11 @@
Данные.Представление = Строка(Данные.Ссылка);
Продолжить;
КонецЕсли;
Если ЗначениеЗаполнено(Данные.НаименованиеНаДругихЯзыках) Тогда
Данные.Представление = Данные.НаименованиеНаДругихЯзыках + " (" + Данные.КоличествоРеквизитов + ")";
Если Данные.Свойство("НаименованиеНаДругихЯзыках") И ЗначениеЗаполнено(Данные.НаименованиеНаДругихЯзыках) Тогда
Данные.Представление = Данные.НаименованиеНаДругихЯзыках + " (" + Данные.КоличествоСведений + ")";
Продолжить;
КонецЕсли;
Данные.Представление = Строка(Данные.Ссылка) + " (" + Данные.КоличествоРеквизитов + ")";
КонецЕсли;
КонецЦикла;
@@ -294,7 +324,7 @@
ПараметрыФормы.Вставить("ЭтоДополнительноеСведение", ЭтоНаборыДополнительныхСведений);
ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНабор);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.ФормаЭлемента",
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта",
ПараметрыФормы, Элементы.Свойства);
КонецПроцедуры
@@ -605,26 +635,46 @@
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Наборы.Ссылка КАК Ссылка
| Наборы.Ссылка КАК Ссылка,
| Наборы.ПометкаУдаления КАК ПометкаУдаления,
| Наборы.Предопределенный КАК Предопределенный,
| Наборы.ЭтоГруппа КАК ЭтоГруппа,
| Наборы.Родитель КАК Родитель,
| Наборы.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
| Наборы.ИмяПредопределенногоНабора КАК ИмяПредопределенногоНабора
|ИЗ
| Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы
|ГДЕ
| Наборы.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)";
Наборы = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Наборы = Запрос.Выполнить().Выгрузить();
ДоступныеНаборы = Новый Массив;
ДоступныеНаборыСписок.Очистить();
Для каждого Ссылка Из Наборы Цикл
ВидыСвойствНабора = УправлениеСвойствамиСлужебный.ВидыСвойствНабора(Ссылка, Ложь);
СвойстваНабора = Новый Структура;
СвойстваНабора.Вставить("ПометкаУдаления");
СвойстваНабора.Вставить("Предопределенный");
СвойстваНабора.Вставить("ЭтоГруппа");
СвойстваНабора.Вставить("Родитель");
СвойстваНабора.Вставить("ИмяПредопределенныхДанных");
СвойстваНабора.Вставить("ИмяПредопределенногоНабора");
Для Каждого Строка Из Наборы Цикл
Если СтрНачинаетсяС(Строка.ИмяПредопределенныхДанных, "Удалить") Тогда
Продолжить;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СвойстваНабора, Строка);
ВидыСвойствНабора = УправлениеСвойствамиСлужебный.ВидыСвойствНабора(СвойстваНабора, Ложь);
Если ЭтоНаборыДополнительныхСведений
И ВидыСвойствНабора.ДополнительныеСведения
ИЛИ НЕ ЭтоНаборыДополнительныхСведений
И ВидыСвойствНабора.ДополнительныеРеквизиты Тогда
ДоступныеНаборы.Добавить(Ссылка);
ДоступныеНаборыСписок.Добавить(Ссылка);
ДоступныеНаборы.Добавить(Строка.Ссылка);
ДоступныеНаборыСписок.Добавить(Строка.Ссылка);
КонецЕсли;
КонецЦикла;
@@ -633,9 +683,6 @@
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
НаборыСвойств, "Наборы", ДоступныеНаборы, Истина);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
НаборыСвойств, "ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык, Истина);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
НаборыСвойств, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина);
@@ -643,7 +690,7 @@
ПриИзмененииТекущегоНабораНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииТекущегоНабора()
@@ -795,7 +842,7 @@
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Набор", ТекущийНабор);
Запрос.УстановитьПараметр("ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык);
Запрос.УстановитьПараметр("ЭтоОсновнойЯзык", ОбщегоНазначения.ЭтоОсновнойЯзык());
Запрос.УстановитьПараметр("КодЯзыка", ТекущийЯзык().КодЯзыка);
Если Не ПоказатьНеиспользуемыеРеквизиты Тогда
@@ -804,11 +851,7 @@
| СвойстваНаборов.НомерСтроки,
| СвойстваНаборов.Свойство,
| СвойстваНаборов.ПометкаУдаления,
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзык
| ТОГДА Свойства.Заголовок
| ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, Свойства.Заголовок) КАК СТРОКА(150))
| КОНЕЦ КАК Заголовок,
| Свойства.Заголовок КАК Заголовок,
| Свойства.ВладелецДополнительныхЗначений,
| Свойства.ЗаполнятьОбязательно,
| Свойства.ТипЗначения КАК ТипЗначения,
@@ -822,9 +865,6 @@
| Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СвойстваНаборов
| ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства
| ПО СвойстваНаборов.Свойство = Свойства.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления
| ПО (СвойстваПредставления.Ссылка = Свойства.Ссылка)
| И СвойстваПредставления.КодЯзыка = &КодЯзыка
|ГДЕ
| СвойстваНаборов.Ссылка = &Набор
|
@@ -844,11 +884,7 @@
"ВЫБРАТЬ
| Свойства.Ссылка КАК Свойство,
| Свойства.ПометкаУдаления КАК ПометкаУдаления,
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзык
| ТОГДА Свойства.Заголовок
| ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, Свойства.Заголовок) КАК СТРОКА(150))
| КОНЕЦ КАК Заголовок,
| Свойства.Заголовок КАК Заголовок,
| Свойства.ВладелецДополнительныхЗначений,
| Свойства.ТипЗначения КАК ТипЗначения,
| ИСТИНА КАК Общее,
@@ -857,21 +893,9 @@
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ КАК НомерКартинки,
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзык
| ТОГДА Свойства.Подсказка
| ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Подсказка, Свойства.Подсказка) КАК СТРОКА(150))
| КОНЕЦ КАК Подсказка,
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзык
| ТОГДА Свойства.ЗаголовокФормыЗначения
| ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыЗначения, Свойства.ЗаголовокФормыЗначения) КАК СТРОКА(150))
| КОНЕЦ КАК ЗаголовокФормыЗначения,
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзык
| ТОГДА Свойства.ЗаголовокФормыВыбораЗначения
| ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыВыбораЗначения, Свойства.ЗаголовокФормыВыбораЗначения) КАК СТРОКА(150))
| КОНЕЦ КАК ЗаголовокФормыВыбораЗначения
| Свойства.Подсказка КАК Подсказка,
| Свойства.ЗаголовокФормыЗначения КАК ЗаголовокФормыЗначения,
| Свойства.ЗаголовокФормыВыбораЗначения КАК ЗаголовокФормыВыбораЗначения
|ИЗ
| ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства
| ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления
@@ -879,7 +903,6 @@
| И СвойстваПредставления.КодЯзыка = &КодЯзыка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СоставНабора
| ПО Свойства.Ссылка = СоставНабора.Свойство
|
|ГДЕ
| Свойства.ЭтоДополнительноеСведение = &ЭтоДополнительноеСведение
| И СоставНабора.Свойство ЕСТЬ NULL
@@ -900,6 +923,36 @@
"Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения");
КонецЕсли;
СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя();
Если СуффиксТекущегоЯзыка = Неопределено Тогда
Позиция = СтрНайти(Запрос.Текст, "ГДЕ");
Запрос.Текст = Лев(Запрос.Текст, Позиция - 1 ) + " ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления
| ПО Свойства.Ссылка = СвойстваПредставления.Ссылка
| И СвойстваПредставления.КодЯзыка = &КодЯзыка" + Сред(Запрос.Текст, Позиция -1);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Свойства.Заголовок КАК Заголовок",
"ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, Свойства.Заголовок) КАК СТРОКА(150)) КАК Заголовок");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Свойства.Подсказка КАК Подсказка",
"ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Подсказка, Свойства.Подсказка) КАК СТРОКА(150)) КАК Подсказка");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Свойства.ЗаголовокФормыЗначения КАК ЗаголовокФормыЗначения",
"ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыЗначения, Свойства.ЗаголовокФормыЗначения) КАК СТРОКА(150)) КАК ЗаголовокФормыЗначения");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Свойства.ЗаголовокФормыВыбораЗначения КАК ЗаголовокФормыВыбораЗначения",
"ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыВыбораЗначения, Свойства.ЗаголовокФормыВыбораЗначения) КАК СТРОКА(150)) КАК ЗаголовокФормыВыбораЗначения");
Иначе
Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(Запрос.Текст, "Свойства.Заголовок КАК Заголовок");
Если ПоказатьНеиспользуемыеРеквизиты Тогда
МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(Запрос.Текст, "Свойства.Подсказка КАК Подсказка");
МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(Запрос.Текст, "Свойства.ЗаголовокФормыЗначения КАК ЗаголовокФормыЗначения");
МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(Запрос.Текст, "Свойства.ЗаголовокФормыВыбораЗначения КАК ЗаголовокФормыВыбораЗначения");
КонецЕсли;
КонецЕсли;
КонецЕсли;
НачатьТранзакцию();
Попытка
РезультатыЗапроса = Запрос.ВыполнитьПакет();
@@ -494,5 +494,9 @@
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
<handlers>
<event>BeforeWriteAtServer</event>
<name>ПередЗаписьюНаСервере</name>
</handlers>
</extInfo>
</form:Form>
@@ -35,6 +35,11 @@
Элементы.ДополнительныеСведения.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект);
КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -47,6 +52,21 @@
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -59,6 +79,25 @@
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиент");
МодульМультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -48,9 +48,16 @@
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда
Возврат;
КонецЕсли;
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
Если ОбщегоНазначения.ЭтоОсновнойЯзык() Тогда
Возврат;
КонецЕсли;
#Иначе
Если СтрСравнить(СтандартныеПодсистемыКлиент.ПараметрКлиента("КодОсновногоЯзыка"), ОбщегоНазначенияКлиент.КодОсновногоЯзыка()) = 0 Тогда
Возврат;
КонецЕсли;
#КонецЕсли
Если ЗначениеЗаполнено(Данные.Родитель) Тогда
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
@@ -267,7 +274,7 @@
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать набор свойств: %1 по причине:
НСтр("ru = 'Не удалось обработать набор свойств %1 по причине:
|%2'"),
ОбновляемыйНабор.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение,
@@ -277,7 +284,8 @@
КонецЦикла;
Если ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = НСтр("ru = 'Процедура ОбработатьНаборыСвойствДляПереходаНаНовуюВерсию завершилась с ошибкой. Не все наборы свойств удалось обновить.'");
ТекстСообщения = НСтр("ru = 'Процедура %1 завершилась с ошибкой. Не все наборы свойств удалось обновить.'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, "ОбработатьНаборыСвойствДляПереходаНаНовуюВерсию");
ВызватьИсключение ТекстСообщения;
КонецЕсли;
@@ -285,6 +293,53 @@
КонецПроцедуры
// Начальное заполнение наборов
// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов
//
// Параметры:
// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки
//
Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт
Настройки.ПриНачальномЗаполненииЭлемента = Ложь;
УправлениеСвойствамиПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов(Настройки);
Настройки.ИмяКлючевогоРеквизита = "Ссылка";
КонецПроцедуры
// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов
//
// Параметры:
// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков
// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы
// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти
//
Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт
УправлениеСвойствамиПереопределяемый.ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти);
КонецПроцедуры
// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов
//
// Параметры:
// Объект - СправочникОбъект.ВидыКонтактнойИнформации - заполняемый объект.
// Данные - СтрокаТаблицыЗначений - данные заполнения объекта.
// ДополнительныеПараметры - Структура:
// * ПредопределенныеДанные - ТаблицаЗначений - данные заполненные в процедуре ПриНачальномЗаполненииЭлементов.
//
Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт
УправлениеСвойствамиПереопределяемый.ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры);
КонецПроцедуры
//
#КонецОбласти
@@ -320,12 +375,46 @@
НаборыСвойств[СвойстваНабора.Ссылка] = Новый ФиксированнаяСтруктура(НаборыСвойств[СвойстваНабора.Ссылка]);
КонецЦикла;
ПредопределенныеДанные = УправлениеСвойствамиСлужебный.ПредопределенныеНаборыСвойств();
НаименованиеНаЯзыкеПользователя = "Наименование" + "_" + ТекущийЯзык().КодЯзыка;
ЕстьЯзыковаяКолонка = ПредопределенныеДанные.Колонки.Найти(НаименованиеНаЯзыкеПользователя) <> Неопределено;
Для Каждого Набор Из ПредопределенныеДанные Цикл
Если ЕстьЯзыковаяКолонка Тогда
Наименование = ?(ЕстьЯзыковаяКолонка, Набор[НаименованиеНаЯзыкеПользователя], Набор["Наименование"]);
КонецЕсли;
Если ЗначениеЗаполнено(Набор.Родитель) Тогда
Родитель = СсылкаНаРодителя(Набор.Родитель);
СвойстваНабора = НаборыСвойств.Получить(Родитель);
СвойстваДочернегоНабора = СвойстваНабораНачальногоЗаполнения(НаборыСвойств, Набор, Родитель, Наименование);
СвойстваНабора.ДочерниеНаборы.Вставить(Набор.ИмяПредопределенногоНабора, СвойстваДочернегоНабора);
Иначе
СвойстваНабора = СвойстваНабораНачальногоЗаполнения(НаборыСвойств, Набор, Набор.Родитель, Наименование);
КонецЕсли;
КонецЦикла;
Возврат Новый ФиксированноеСоответствие(НаборыСвойств);
КонецФункции
// Только для внутреннего использования.
//
// Параметры:
// НаборыСвойств - Соответствие из КлючЗначение:
// * Ключ - Строка, СправочникСсылка.НаборыДополнительныхРеквизитовИСведений
// * Значение - см. НовыеСвойстваНабора
// Набор - СтрокаДереваЗначений:
// * Имя - Строка
// * ЭтоГруппа - Булево
// * Используется - Булево
// * Идентификатор - УникальныйИдентификатор
//
// Возвращаемое значение:
// Структура:
// * Имя - Строка
@@ -340,11 +429,10 @@
//
Функция СвойстваНабора(НаборыСвойств, Набор, Родитель = Неопределено, Наименования = Неопределено) Экспорт
ЗаголовокОшибки =
НСтр("ru = 'Ошибка в процедуре ПриСозданииПредопределенныхНаборовСвойств
|общего модуля УправлениеСвойствамиПереопределяемый.'")
+ Символы.ПС
+ Символы.ПС;
ЗаголовокОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка в процедуре %1 общего модуля %2.'"),
"ПриСозданииПредопределенныхНаборовСвойств", "УправлениеСвойствамиПереопределяемый")
+ Символы.ПС + Символы.ПС;
Если Не ЗначениеЗаполнено(Набор.Имя) Тогда
ВызватьИсключение ЗаголовокОшибки + НСтр("ru = 'Имя набора свойств не заполнено.'");
@@ -369,24 +457,25 @@
КонецЕсли;
Если НаборыСвойств.Получить(НаборСсылка) <> Неопределено Тогда
СвойстваНабора = НаборыСвойств.Получить(НаборСсылка);
СвойстваНабора = НаборыСвойств.Получить(НаборСсылка); // см. НовыеСвойстваНабора
ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Идентификатор ""%1"" набора свойств
|""%2"" уже используется для набора ""%3"".'"),
Набор.Идентификатор, Набор.Имя, СвойстваНабора.Имя);
КонецЕсли;
СвойстваНабора = Новый Структура;
СвойстваНабора.Вставить("Имя", Набор.Имя);
СвойстваНабора.Вставить("ЭтоГруппа", Набор.ЭтоГруппа);
СвойстваНабора.Вставить("Используется", Набор.Используется);
СвойстваНабора.Вставить("Ссылка", НаборСсылка);
СвойстваНабора.Вставить("Родитель", Родитель);
СвойстваНабора.Вставить("ДочерниеНаборы", ?(Родитель = Неопределено, Новый Соответствие, Неопределено));
СвойстваНабора = НовыеСвойстваНабора();
СвойстваНабора.Имя = Набор.Имя;
СвойстваНабора.ЭтоГруппа = Набор.ЭтоГруппа;
СвойстваНабора.Используется = Набор.Используется;
СвойстваНабора.Ссылка = НаборСсылка;
СвойстваНабора.Родитель = Родитель;
СвойстваНабора.ДочерниеНаборы = ?(Родитель = Неопределено, Новый Соответствие, Неопределено);
Если Наименования = Неопределено Тогда
СвойстваНабора.Вставить("Наименование", ПредставлениеНабораВерхнегоУровня(Набор.Имя));
СвойстваНабора.Наименование = ПредставлениеНабораВерхнегоУровня(Набор.Имя);
Иначе
СвойстваНабора.Вставить("Наименование", Наименования[Набор.Имя]);
СвойстваНабора.Наименование = Наименования[Набор.Имя];
КонецЕсли;
Если Родитель <> Неопределено Тогда
@@ -399,6 +488,122 @@
КонецФункции
// Только для внутреннего использования.
//
// Возвращаемое значение:
// Структура:
// * Имя - Строка
// * ЭтоГруппа - Булево
// * Используется - Булево
// * Ссылка - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений
// * Родитель - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений
// * ДочерниеНаборы - Соответствие из КлючИЗначение:
// ** Ключ - Строка
// ** Значение - см. СвойстваНабора
// * Наименование - Строка
//
Функция СвойстваНабораНачальногоЗаполнения(НаборыСвойств, Набор, Родитель = Неопределено, Наименование = Неопределено)
ЗаголовокОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка в процедуре %1 общего модуля %2.'")
+ Символы.ПС + Символы.ПС, "ПриНачальномЗаполненииЭлементов", "УправлениеСвойствамиПереопределяемый");
Если Не ЗначениеЗаполнено(Набор.ИмяПредопределенногоНабора) Тогда
ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 набора свойств не заполнено.'"), "ИмяПредопределенногоНабора");
КонецЕсли;
Если НаборыСвойств.Получить(Набор.ИмяПредопределенногоНабора) <> Неопределено Тогда
ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 набора свойств ""%2"" уже определено.'"),
"ИмяПредопределенногоНабора", Набор.ИмяПредопределенногоНабора);
КонецЕсли;
Если Не ЗначениеЗаполнено(Набор.Ссылка) Тогда
ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ссылка набора свойств ""%1"" не заполнен.'"),
Набор.ИмяПредопределенногоНабора);
КонецЕсли;
НаборСсылка = Набор.Ссылка;
Если НаборыСвойств.Получить(НаборСсылка) <> Неопределено Тогда
СвойстваНабора = НаборыСвойств.Получить(НаборСсылка);
ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ссылка ""%1"" набора свойств
|""%2"" уже используется для набора ""%3"".'"),
Набор.Ссылка, Набор.ИмяПредопределенногоНабора, СвойстваНабора.ИмяПредопределенногоНабора);
КонецЕсли;
Родитель = СсылкаНаРодителя(Родитель);
СвойстваНабора = НовыеСвойстваНабора();
СвойстваНабора.Имя = Набор.ИмяПредопределенногоНабора;
СвойстваНабора.ЭтоГруппа = Набор.ЭтоГруппа;
СвойстваНабора.Используется = Набор.Используется;
СвойстваНабора.Ссылка = НаборСсылка;
СвойстваНабора.Родитель = Родитель;
СвойстваНабора.ДочерниеНаборы = ?(Родитель = Неопределено, Новый Соответствие, Неопределено);
Если ЗначениеЗаполнено(Наименование) Тогда
СвойстваНабора.Вставить("Наименование", Наименование);
Иначе
СвойстваНабора.Вставить("Наименование", Набор["Наименование"]);
КонецЕсли;
СвойстваНабора = Новый ФиксированнаяСтруктура(СвойстваНабора);
НаборыСвойств.Вставить(СвойстваНабора.Имя, СвойстваНабора);
НаборыСвойств.Вставить(СвойстваНабора.Ссылка, СвойстваНабора);
Возврат СвойстваНабора;
КонецФункции
// Возвращаемое значение:
// Структура:
// * Имя - Строка
// * ЭтоГруппа - Булево
// * Используется - Неопределено
// * Ссылка - Неопределено
// * Родитель - Неопределено
// * ДочерниеНаборы - Неопределено
// * Наименование - Строка
//
Функция НовыеСвойстваНабора()
СвойстваНабора = Новый Структура;
СвойстваНабора.Вставить("Имя", "");
СвойстваНабора.Вставить("ЭтоГруппа", Ложь);
СвойстваНабора.Вставить("Используется", Неопределено);
СвойстваНабора.Вставить("Ссылка", Неопределено);
СвойстваНабора.Вставить("Родитель", Неопределено);
СвойстваНабора.Вставить("ДочерниеНаборы", Неопределено);
СвойстваНабора.Вставить("Наименование", "");
Возврат СвойстваНабора;
КонецФункции
Функция СсылкаНаРодителя(Родитель)
Если ЗначениеЗаполнено(Родитель) Тогда
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат Новый УникальныйИдентификатор(Родитель);
КонецЕсли;
Если ТипЗнч(Родитель) = Тип("Строка") Тогда
Родитель = ПолучитьСсылку(Новый УникальныйИдентификатор(Родитель));
ИначеЕсли ТипЗнч(Родитель) = Тип("УникальныйИдентификатор") Тогда
Родитель = ПолучитьСсылку(Родитель);
КонецЕсли;
КонецЕсли;
Возврат Родитель;
КонецФункции
#КонецЕсли
// АПК:361-выкл нет обращения к серверному коду.
@@ -98,6 +98,19 @@
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ПриЧтенииПредставленийНаСервере() Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриЧтенииПредставленийНаСервере(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли
@@ -0,0 +1,721 @@
<?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:FormField">
<name>ВладелецДанных</name>
<id>25</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>
<toolTip>
<key>ru</key>
<value>Имя домена-владельца данных. По этому имени определяется возможность использования аутентификации по протоколу OAuth. Например, mycompany.zzz.</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>ВладелецДанныхРасширеннаяПодсказка</name>
<id>27</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВладелецДанныхКонтекстноеМеню</name>
<id>26</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:FormField">
<name>ИмяИнтернетСервиса</name>
<id>22</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>Доменное имя сервера, на котором хранятся данные. Например, outlook.com.</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>ИмяИнтернетСервисаРасширеннаяПодсказка</name>
<id>24</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИмяИнтернетСервисаКонтекстноеМеню</name>
<id>23</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:FormField">
<name>АдресАвторизации</name>
<id>4</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.АдресАвторизации</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Адрес для интерактивной авторизации пользователя</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>АдресАвторизацииРасширеннаяПодсказка</name>
<id>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>5</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>28</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.АдресПеренаправления</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Адрес перенаправления пользователя после авторизации</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>АдресПеренаправленияРасширеннаяПодсказка</name>
<id>30</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>АдресПеренаправленияКонтекстноеМеню</name>
<id>29</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:FormField">
<name>АдресРегистрацииУстройства</name>
<id>49</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.АдресРегистрацииУстройства</segments>
</dataPath>
<extendedTooltip>
<name>АдресРегистрацииУстройстваРасширеннаяПодсказка</name>
<id>51</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>АдресРегистрацииУстройстваКонтекстноеМеню</name>
<id>50</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: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>
<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>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:FormField">
<name>АдресПолученияКлюча</name>
<id>7</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.АдресПолученияКлюча</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Адрес для получения и обновления токенов</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>АдресПолученияКлючаРасширеннаяПодсказка</name>
<id>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>
<items xsi:type="form:FormField">
<name>ЗапрашиваемыеРазрешения</name>
<id>34</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ЗапрашиваемыеРазрешения</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Идентификаторы разрешений, разделенные пробелом.</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>ЗапрашиваемыеРазрешенияРасширеннаяПодсказка</name>
<id>36</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗапрашиваемыеРазрешенияКонтекстноеМеню</name>
<id>35</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:FormField">
<name>ИдентификаторПриложения</name>
<id>16</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ИдентификаторПриложения</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Идентификатор этого приложения на сервере с данными</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>ИдентификаторПриложенияРасширеннаяПодсказка</name>
<id>18</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИдентификаторПриложенияКонтекстноеМеню</name>
<id>17</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:FormField">
<name>ПарольПриложения</name>
<id>19</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ПарольПриложения</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Секретный ключ доступа этого приложения к данным на сервере</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>ПарольПриложенияРасширеннаяПодсказка</name>
<id>21</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПарольПриложенияКонтекстноеМеню</name>
<id>20</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">
<handlers>
<event>EditTextChange</event>
<name>ПарольПриложенияИзменениеТекстаРедактирования</name>
</handlers>
<handlers>
<event>StartChoice</event>
<name>ПарольПриложенияНачалоВыбора</name>
</handlers>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<passwordMode>true</passwordMode>
<choiceButton>true</choiceButton>
<choiceButtonPicture xsi:type="core:PictureRef">
<picture>CommonPicture.ВводимыеСимволыСкрыты</picture>
</choiceButtonPicture>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДополнительныеПараметрыАвторизации</name>
<id>37</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ДополнительныеПараметрыАвторизации</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Дополнительные параметры, которые необходимо передать в запросе авторизации. Указываются в формате ИмяПараметра=Значение, разделитель - пробел.</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>ДополнительныеПараметрыАвторизацииРасширеннаяПодсказка</name>
<id>39</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДополнительныеПараметрыАвторизацииКонтекстноеМеню</name>
<id>38</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: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>
<toolTip>
<key>ru</key>
<value>Дополнительные параметры, которые необходимо передать в запросе обмена кода авторизации на токен доступа. Указываются в формате ИмяПараметра=Значение, разделитель - пробел.</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<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>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:FormField">
<name>ИспользоватьКлючПроверкиПодлинностиPKCE</name>
<id>31</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ИспользоватьКлючПроверкиПодлинностиPKCE</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<toolTip>
<key>ru</key>
<value>Установите этот флажок, если в запросах авторизации и обмена кода авторизации на токен доступа на сервере авторизации поддерживается защита с помощью ключа проверки подлинности &quot;Proof Key for Code Exchange (PKCE)&quot;</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>ИспользоватьКлючПроверкиПодлинностиPKCEРасширеннаяПодсказка</name>
<id>33</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИспользоватьКлючПроверкиПодлинностиPKCEКонтекстноеМеню</name>
<id>32</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>ИспользоватьПарольПриложения</name>
<id>43</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ИспользоватьПарольПриложения</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<toolTip>
<key>ru</key>
<value>Установите этот флажок, если для получения токенов требуется передавать в запросах пароль приложения (client_secret)</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<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>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<autoCommandBar>
<name>ФормаКоманднаяПанель</name>
<id>-1</id>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<windowOpeningMode>LockOwner</windowOpeningMode>
<autoSaveDataInSettings>Use</autoSaveDataInSettings>
<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>
<attributes>
<name>ПарольПриложения</name>
<title>
<key>ru</key>
<value>Пароль приложения</value>
</title>
<id>4</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<settingsSavedData xsi:type="form:DataPath">
<segments>ПарольПриложения</segments>
</settingsSavedData>
<savedData>true</savedData>
</attributes>
<attributes>
<name>ПарольИзменен</name>
<id>5</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<commandInterface>
<navigationPanel/>
<commandBar/>
</commandInterface>
<extInfo xsi:type="form:CatalogFormExtInfo">
<handlers>
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
<handlers>
<event>OnWriteAtServer</event>
<name>ПриЗаписиНаСервере</name>
</handlers>
</extInfo>
</form:Form>
@@ -0,0 +1,54 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2022, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
Если НЕ Объект.Ссылка.Пустая() Тогда
УстановитьПривилегированныйРежим(Истина);
ПарольУстановлен = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Объект.Ссылка) <> "";
УстановитьПривилегированныйРежим(Ложь);
ПарольПриложения = ?(ПарольУстановлен, ЭтотОбъект.УникальныйИдентификатор, "");
ПарольИзменен = Ложь;
РаботаСПочтовымиСообщениямиСлужебный.ОформитьПолеПароля(Элементы.ПарольПриложения);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ПарольИзменен Тогда
УстановитьПривилегированныйРежим(Истина);
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, ПарольПриложения, "ПарольПриложения");
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПарольПриложенияИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
Элементы.ПарольПриложения.КнопкаВыбора = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ПарольПриложенияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
РаботаСПочтовымиСообщениямиКлиент.ПолеПароляНачалоВыбора(Элемент, ПарольПриложения, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,234 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2022, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
// Возвращаемое значение:
// Структура:
// * Ссылка - СправочникСсылка.НастройкиАвторизацииИнтернетСервисов
// * ИмяИнтернетСервиса - Строка
// * ВладелецДанных - Строка
// * АдресАвторизации - Строка
// * АдресРегистрацииУстройства - Строка
// * АдресПолученияКлюча - Строка
// * АдресПеренаправления - Строка
// * ЗапрашиваемыеРазрешения - Строка
// * ИспользоватьКлючПроверкиПодлинностиPKCE - Булево
// * ИдентификаторПриложения - Строка
// * ИспользоватьПарольПриложения - Булево
// * ПарольПриложения - Строка
// * ДополнительныеПараметрыАвторизации - Строка
// * ДополнительныеПараметрыПолученияТокена - Строка
// * ПояснениеПоАдресуПеренаправления - Строка
// * ПояснениеПоИдентификаторуПриложения - Строка
// * ПояснениеПоПаролюПриложения - Строка
// * ПсевдонимАдресаПеренаправления - Строка
// * ПсевдонимИдентификатораПриложения - Строка
// * ПсевдонимПароляПриложения - Строка
// * АдресПеренаправленияПоУмолчанию - Строка
// * АдресПеренаправленияВебКлиент - Строка
//
Функция НастройкиАвторизацииИнтернетСервиса(ИмяИнтернетСервиса, ВладелецДанных) Экспорт
НастройкиАвторизации = Новый Структура;
НастройкиАвторизации.Вставить("Ссылка");
НастройкиАвторизации.Вставить("ИмяИнтернетСервиса");
НастройкиАвторизации.Вставить("ВладелецДанных");
НастройкиАвторизации.Вставить("АдресАвторизации");
НастройкиАвторизации.Вставить("АдресРегистрацииУстройства");
НастройкиАвторизации.Вставить("АдресПолученияКлюча");
НастройкиАвторизации.Вставить("АдресПеренаправления");
НастройкиАвторизации.Вставить("АдресПеренаправленияВебКлиент");
НастройкиАвторизации.Вставить("ЗапрашиваемыеРазрешения");
НастройкиАвторизации.Вставить("ИспользоватьКлючПроверкиПодлинностиPKCE");
НастройкиАвторизации.Вставить("ИдентификаторПриложения");
НастройкиАвторизации.Вставить("ИспользоватьПарольПриложения");
НастройкиАвторизации.Вставить("ПарольПриложения");
НастройкиАвторизации.Вставить("ДополнительныеПараметрыАвторизации");
НастройкиАвторизации.Вставить("ДополнительныеПараметрыПолученияТокена");
НастройкиАвторизации.Вставить("ПояснениеПоАдресуПеренаправления", "");
НастройкиАвторизации.Вставить("ПояснениеПоИдентификаторуПриложения", "");
НастройкиАвторизации.Вставить("ПояснениеПоПаролюПриложения", "");
НастройкиАвторизации.Вставить("ПсевдонимАдресаПеренаправления", "");
НастройкиАвторизации.Вставить("ПсевдонимИдентификатораПриложения", "");
НастройкиАвторизации.Вставить("ПсевдонимПароляПриложения", "");
НастройкиАвторизации.Вставить("АдресПеренаправленияПоУмолчанию", "");
ТекстЗапроса =
"ВЫБРАТЬ
| НастройкиАвторизацииИнтернетСервисов.Ссылка,
| НастройкиАвторизацииИнтернетСервисов.АдресАвторизации,
| НастройкиАвторизацииИнтернетСервисов.АдресПолученияКлюча,
| НастройкиАвторизацииИнтернетСервисов.АдресРегистрацииУстройства,
| НастройкиАвторизацииИнтернетСервисов.АдресПеренаправления,
| НастройкиАвторизацииИнтернетСервисов.АдресПеренаправленияВебКлиент,
| НастройкиАвторизацииИнтернетСервисов.ИспользоватьКлючПроверкиПодлинностиPKCE,
| НастройкиАвторизацииИнтернетСервисов.ИдентификаторПриложения,
| НастройкиАвторизацииИнтернетСервисов.ЗапрашиваемыеРазрешения,
| НастройкиАвторизацииИнтернетСервисов.ИспользоватьПарольПриложения,
| НастройкиАвторизацииИнтернетСервисов.ДополнительныеПараметрыАвторизации,
| НастройкиАвторизацииИнтернетСервисов.ДополнительныеПараметрыПолученияТокена,
| НастройкиАвторизацииИнтернетСервисов.ИмяИнтернетСервиса,
| НастройкиАвторизацииИнтернетСервисов.ВладелецДанных
|ИЗ
| Справочник.НастройкиАвторизацииИнтернетСервисов КАК НастройкиАвторизацииИнтернетСервисов
|ГДЕ
| НастройкиАвторизацииИнтернетСервисов.ВладелецДанных = &ВладелецДанных
| И НастройкиАвторизацииИнтернетСервисов.ИмяИнтернетСервиса = &ИмяИнтернетСервиса
| И НЕ НастройкиАвторизацииИнтернетСервисов.ПометкаУдаления";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ВладелецДанных", ВладелецДанных);
Запрос.УстановитьПараметр("ИмяИнтернетСервиса", ИмяИнтернетСервиса);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(НастройкиАвторизации, Выборка);
НастройкиАвторизации.ПарольПриложения = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Выборка.Ссылка, "ПарольПриложения");
КонецЕсли;
Возврат НастройкиАвторизации;
КонецФункции
// Параметры:
// НастройкиАвторизации - см. НастройкиАвторизацииИнтернетСервиса
//
Процедура ЗаписатьНастройкиАвторизации(НастройкиАвторизации) Экспорт
Если Не ПравоДоступа("Изменение", Метаданные.Справочники.УчетныеЗаписиЭлектроннойПочты) Тогда
ВызватьИсключение НСтр("ru = 'Недостаточно прав доступа.'");
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
НачатьТранзакцию();
Попытка
Если ЗначениеЗаполнено(НастройкиАвторизации.Ссылка) Тогда
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.НастройкиАвторизацииИнтернетСервисов");
ЭлементБлокировки.УстановитьЗначение("Ссылка", НастройкиАвторизации.Ссылка);
Блокировка.Заблокировать();
НастройкиАвторизацииОбъект = НастройкиАвторизации.Ссылка.ПолучитьОбъект();
Иначе
НастройкиАвторизацииОбъект = СоздатьЭлемент();
КонецЕсли;
Если ЗначениеЗаполнено(НастройкиАвторизации.Ссылка) Тогда
Для Каждого Элемент Из НастройкиАвторизации Цикл
Если Элемент.Ключ = "Ссылка" Или Элемент.Ключ = "ПарольПриложения" Тогда
Продолжить;
КонецЕсли;
ПроверяемоеСвойство = Новый Структура(Элемент.Ключ, null);
ЗаполнитьЗначенияСвойств(ПроверяемоеСвойство, НастройкиАвторизацииОбъект);
Если ПроверяемоеСвойство[Элемент.Ключ] <> null
И НастройкиАвторизацииОбъект[Элемент.Ключ] <> Элемент.Значение Тогда
НастройкиАвторизацииОбъект[Элемент.Ключ] = Элемент.Значение;
КонецЕсли;
КонецЦикла;
Иначе
ЗаполнитьЗначенияСвойств(НастройкиАвторизацииОбъект, НастройкиАвторизации, , "Ссылка");
КонецЕсли;
Если НастройкиАвторизацииОбъект.Модифицированность() Тогда
НастройкиАвторизацииОбъект.Записать();
КонецЕсли;
Если НастройкиАвторизации.ИспользоватьПарольПриложения Тогда
ПарольПриложения = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(НастройкиАвторизацииОбъект.Ссылка, "ПарольПриложения");
Если ПарольПриложения <> НастройкиАвторизации.ПарольПриложения Тогда
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(НастройкиАвторизацииОбъект.Ссылка, НастройкиАвторизации.ПарольПриложения, "ПарольПриложения");
КонецЕсли;
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Функция Разрешения()
Результат = Новый Соответствие;
ТекстЗапроса =
"ВЫБРАТЬ
| НастройкиАвторизацииИнтернетСервисов.Ссылка,
| НастройкиАвторизацииИнтернетСервисов.АдресАвторизации,
| НастройкиАвторизацииИнтернетСервисов.АдресПолученияКлюча,
| НастройкиАвторизацииИнтернетСервисов.АдресРегистрацииУстройства
|ИЗ
| Справочник.НастройкиАвторизацииИнтернетСервисов КАК НастройкиАвторизацииИнтернетСервисов
|ГДЕ
| НЕ НастройкиАвторизацииИнтернетСервисов.ПометкаУдаления";
Запрос = Новый Запрос(ТекстЗапроса);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Разрешения = Новый Массив;
ДобавитьРазрешениеДляИнтернетРесурса(Разрешения, Выборка.АдресАвторизации);
ДобавитьРазрешениеДляИнтернетРесурса(Разрешения, Выборка.АдресПолученияКлюча);
ДобавитьРазрешениеДляИнтернетРесурса(Разрешения, Выборка.АдресРегистрацииУстройства);
Результат.Вставить(Выборка.Ссылка, Разрешения);
КонецЦикла;
Возврат Результат;
КонецФункции
Процедура ДобавитьРазрешениеДляИнтернетРесурса(Разрешения, АдресИнтернетРесурса)
Если Не ЗначениеЗаполнено(АдресИнтернетРесурса) Тогда
Возврат;
КонецЕсли;
СтруктураURI = ОбщегоНазначенияКлиентСервер.СтруктураURI(АдресИнтернетРесурса);
Если Не ЗначениеЗаполнено(СтруктураURI.Схема) Или Не ЗначениеЗаполнено(СтруктураURI.Хост) Тогда
Возврат;
КонецЕсли;
МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме");
Разрешения.Добавить(
МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса(
ВРег(СтруктураURI.Схема),
СтруктураURI.Хост,
,
НСтр("ru = 'Электронная почта.'")));
КонецПроцедуры
// См. РаботаВБезопасномРежимеПереопределяемый.ПриЗаполненииРазрешенийНаДоступКВнешнимРесурсам.
Процедура ПриЗаполненииРазрешенийНаДоступКВнешнимРесурсам(ЗапросыРазрешений) Экспорт
Если ОбщегоНазначения.РазделениеВключено()
И Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме");
Для Каждого ОписаниеРазрешений Из Разрешения() Цикл
ЗапросыРазрешений.Добавить(МодульРаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов(
ОписаниеРазрешений.Значение, ОписаниеРазрешений.Ключ));
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -0,0 +1,27 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2022, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Наименование = ВладелецДанных + " / " + ИмяИнтернетСервиса;
КонецПроцедуры
#КонецОбласти
#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли
@@ -0,0 +1,340 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ffd14055-0847-48da-8807-0ba07decf6a5">
<producedTypes>
<objectType typeId="10786051-eef0-4293-9fd5-9bca70fe4b6e" valueTypeId="cc9b5b7f-c034-4275-89a1-f02c7cd004a1"/>
<refType typeId="f3b275ed-7599-4712-877a-e32d917ca3aa" valueTypeId="c719de67-cfd7-4f83-a854-8449b8353fe8"/>
<selectionType typeId="dcfbeac1-6ba6-4ee1-b4ff-2f476f682117" valueTypeId="32841d34-e475-43c5-a681-b235e4216a26"/>
<listType typeId="55d4f167-f67b-46e7-9b01-ee1d1cbe1fd0" valueTypeId="86132c10-16eb-4917-b829-030201004558"/>
<managerType typeId="2318afd5-d8fa-4e7d-9be4-e59ce5e64e5d" valueTypeId="5ac18854-cca9-444f-baea-3227067fc31c"/>
</producedTypes>
<name>НастройкиАвторизацииИнтернетСервисов</name>
<synonym>
<key>ru</key>
<value>Настройки авторизации Интернет-сервисов</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.НастройкиАвторизацииИнтернетСервисов.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>PredefinedDataName</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Predefined</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Ref</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>DeletionMark</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>IsFolder</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Owner</name>
<fillFromFillingValue>true</fillFromFillingValue>
<fillValue xsi:type="core:UndefinedValue"/>
<fillChecking>ShowError</fillChecking>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Parent</name>
<fillFromFillingValue>true</fillFromFillingValue>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Description</name>
<synonym>
<key>ru</key>
<value>Наименование</value>
</synonym>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Code</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<objectPresentation>
<key>ru</key>
<value>Настройки авторизации Интернет-сервиса</value>
</objectPresentation>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<descriptionLength>50</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
<defaultObjectForm>Catalog.НастройкиАвторизацииИнтернетСервисов.Form.ФормаЭлемента</defaultObjectForm>
<attributes uuid="ee808b7e-8313-4838-8a5a-9b49e3ce7e3e">
<name>ВладелецДанных</name>
<synonym>
<key>ru</key>
<value>Владелец данных</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>200</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="a8450a10-c18c-4b99-828b-870f38c32991">
<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:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="ad5e61a9-2f12-4629-9d7b-7882cc885992">
<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:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="68a66e43-123c-4dc4-8eb7-3b728a6dbf40">
<name>ИмяИнтернетСервиса</name>
<synonym>
<key>ru</key>
<value>Имя интернет сервиса</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>200</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="b016e858-7a3b-473a-a9b7-a6c718d0a028">
<name>ИдентификаторПриложения</name>
<synonym>
<key>ru</key>
<value>Идентификатор приложения</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="7db81d96-e359-4157-b5cb-3b50622d6556">
<name>АдресПеренаправления</name>
<synonym>
<key>ru</key>
<value>Адрес перенаправления</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="aa09ff66-3f4a-4746-9a99-697a2915b3fc">
<name>ИспользоватьКлючПроверкиПодлинностиPKCE</name>
<synonym>
<key>ru</key>
<value>Использовать ключ проверки подлинности (PKCE)</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="21305c37-31fb-46f3-85bc-8743c22faa02">
<name>ЗапрашиваемыеРазрешения</name>
<synonym>
<key>ru</key>
<value>Запрашиваемые разрешения</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="c5bace94-8fbc-4ad1-9567-a41332e8f00a">
<name>ИспользоватьПарольПриложения</name>
<synonym>
<key>ru</key>
<value>Использовать пароль приложения</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="9fc40f79-c538-4ea5-a939-67bdd540d805">
<name>ДополнительныеПараметрыАвторизации</name>
<synonym>
<key>ru</key>
<value>Дополнительные параметры авторизации</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="70443b2a-04db-4573-a4ea-e35078b383d7">
<name>ДополнительныеПараметрыПолученияТокена</name>
<synonym>
<key>ru</key>
<value>Дополнительные параметры получения токена</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="fb760c8a-d0bd-4445-9d68-85e5145d0182">
<name>АдресПеренаправленияВебКлиент</name>
<synonym>
<key>ru</key>
<value>Адрес перенаправления (Веб-клиент)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="ecf54919-4cf2-4b30-9efa-de517d823555">
<name>АдресРегистрацииУстройства</name>
<synonym>
<key>ru</key>
<value>Адрес регистрации устройства</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<forms uuid="a4814357-6575-4a55-808f-4a4c94047110">
<name>ФормаЭлемента</name>
<synonym>
<key>ru</key>
<value>Форма элемента</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:Catalog>
@@ -149,16 +149,16 @@
МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта);
ТекстСообщения = НСтр("ru = 'Не удалось обработать %ИмяОбъекта%: %Ссылка% по причине: %Причина%'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ИмяОбъекта%", ПолноеИмяОбъекта);
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Ссылка%", ОбъектыДляОбработки.Ссылка);
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Причина%", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать %1 %2 по причине:
|%3'"),
ПолноеИмяОбъекта, ОбъектыДляОбработки.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Предупреждение,
МетаданныеОбъекта,
ОбъектыДляОбработки.Ссылка,
ТекстСообщения);
УровеньЖурналаРегистрации.Предупреждение,
МетаданныеОбъекта,
ОбъектыДляОбработки.Ссылка,
ТекстСообщения);
КонецПопытки;
@@ -12,17 +12,12 @@
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормы = Новый Структура;
Если ТипЗнч(ПараметрыВыполненияКоманды.Источник) = Тип("ФормаКлиентскогоПриложения") Тогда
Если ПараметрыВыполненияКоманды.Источник.ИмяФормы =
"Справочник.Пользователи.Форма.ФормаСписка" Тогда
"Справочник.Пользователи.Форма.ФормаСписка" Тогда
ПараметрыФормы.Вставить("Отбор", "Пользователи");
ИначеЕсли ПараметрыВыполненияКоманды.Источник.ИмяФормы =
"Справочник.ВнешниеПользователи.Форма.ФормаСписка" Тогда
"Справочник.ВнешниеПользователи.Форма.ФормаСписка" Тогда
ПараметрыФормы.Вставить("Отбор", "ВнешниеПользователи");
КонецЕсли;
КонецЕсли;
@@ -732,10 +732,6 @@
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Пользователи поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -9,7 +9,7 @@
////////////////////////////////////////////////////////////////////////////////
// ИСПОЛЬЗОВАНИЕ ФОРМЫ //
//
// Описание параметров формы см. ПользователиПереопределяемый.ПриОпределенииФормыПодбораПользователей
// Описание параметров формы см. ПользователиПереопределяемый.ПриОпределенииФормыВыбораПользователей
//
#Область ОписаниеПеременных
@@ -950,6 +950,7 @@
// * ТекущаяСтрока - СправочникСсылка, Неопределено
// * ЗаголовокФормыПодбора - Строка
// * ЗаголовокКнопкиЗавершенияПодбора - Строка
//
&НаСервере
Функция ХранимыеПараметры()
@@ -1484,6 +1485,7 @@
КонецПроцедуры
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
@@ -462,6 +462,10 @@
<segments>АдресФотографии</segments>
</dataPath>
<titleLocation>None</titleLocation>
<toolTip>
<key>ru</key>
<value>Выбрать фото</value>
</toolTip>
<extendedTooltip>
<name>ФотографияРасширеннаяПодсказка</name>
<id>355</id>
@@ -475,6 +479,58 @@
<contextMenu>
<name>ФотографияКонтекстноеМеню</name>
<id>354</id>
<items xsi:type="form:Button">
<name>ФотографияКонтекстноеМенюВыбратьФотографию</name>
<id>371</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФотографияКонтекстноеМенюВыбратьФотографиюРасширеннаяПодсказка</name>
<id>372</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>369</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФотографияКонтекстноеМенюОчиститьФотографиюРасширеннаяПодсказка</name>
<id>370</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>
<autoFill>true</autoFill>
</contextMenu>
<type>PictureField</type>
@@ -2650,16 +2706,16 @@
</extInfo>
</items>
<items xsi:type="form:Button">
<name>ФормаСправка</name>
<id>349</id>
<name>ФормаВыбратьФотографию</name>
<id>373</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСправкаРасширеннаяПодсказка</name>
<id>350</id>
<name>ФормаВыбратьФотографиюРасширеннаяПодсказка</name>
<id>374</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -2667,7 +2723,7 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.StandardCommand.Help</commandName>
<commandName>Form.Command.ВыбратьФотографию</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
@@ -2813,6 +2869,32 @@
<importance>Normal</importance>
</extInfo>
</items>
<items xsi:type="form:Button">
<name>ФормаСправка</name>
<id>349</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСправкаРасширеннаяПодсказка</name>
<id>350</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.StandardCommand.Help</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<handlers>
@@ -3884,6 +3966,24 @@
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>ВыбратьФотографию</name>
<title>
<key>ru</key>
<value>Выбрать фотографию...</value>
</title>
<id>10</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ВыбратьФотографию</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<parameters>
<name>ГруппаНовогоПользователя</name>
<valueType>
@@ -37,9 +37,7 @@
Если НЕ ДоступноИзменениеПользователей Тогда
Если Объект.Ссылка.Пустая() Тогда
ВызватьИсключение
НСтр("ru = 'В демонстрационном режиме не поддерживается
|создание новых пользователей.'");
ВызватьИсключение НСтр("ru = 'В демонстрационном режиме создание новых учетных записей пользователей недоступно.'");
КонецЕсли;
ТолькоПросмотр = Истина;
КонецЕсли;
@@ -196,7 +194,8 @@
ОбновитьВидимостьРеквизитаПоказыватьВСпискеВыбора();
Если Не ПользователиСлужебныйПовтИсп.Настройки().ОбщиеНастройкиВхода Тогда
Если ОбщегоНазначения.РазделениеВключено()
Или Не ПользователиСлужебныйПовтИсп.Настройки().ОбщиеНастройкиВхода Тогда
Элементы.ГруппаИзменитьОграничение.Видимость = Ложь;
КонецЕсли;
@@ -313,21 +312,15 @@
ОчиститьСообщения();
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
Если ЗначениеЗаполнено(ИмяРеквизитаСПочтойДляВосстановленияПароля)
И ПользовательИБАдресЭлектроннойПочты <> ЭтотОбъект[ИмяРеквизитаСПочтойДляВосстановленияПароля] Тогда
Если ПарольДляПодтвержденияИзмененияПочты = Неопределено Тогда
Отказ = Истина;
ДополнительныеПараметры = Новый Структура("ПараметрыЗаписи", ПараметрыЗаписи);
Оповещение = Новый ОписаниеОповещения("ПослеЗапросаПароляДляИзмененияПочты", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму("Справочник.Пользователи.Форма.ВводПароля",, ЭтотОбъект,,,, Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
@@ -558,10 +551,12 @@
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
// СтандартныеПодсистемы.ПодключаемыеКоманды
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
Оповестить("Запись_Пользователи", Новый Структура, Объект.Ссылка);
@@ -897,7 +892,6 @@
&НаКлиенте
Процедура ПотребоватьСменуПароляПриВходеРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФорму("ОбщаяФорма.НастройкиВходаПользователей", , ЭтотОбъект);
КонецПроцедуры
@@ -907,7 +901,8 @@
ОповещениеОЗавершение = Новый ОписаниеОповещения("ФотографияНажатиеЗавершение", ЭтотОбъект);
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ФайловаяСистемаКлиент.ЗагрузитьФайл(ОповещениеОЗавершение,ПараметрыЗагрузки);
ПараметрыЗагрузки.Диалог.Фильтр = НСтр("ru = 'Изображения'") + "|*.JPG;*.JPEG;*.JP2;*.JPG2;*.PNG;*.BMP;*.TIFF";
ФайловаяСистемаКлиент.ЗагрузитьФайл(ОповещениеОЗавершение, ПараметрыЗагрузки);
КонецПроцедуры
&НаКлиенте
@@ -916,6 +911,17 @@
Возврат;
КонецЕсли;
Картинка = Новый Картинка(ПолучитьИзВременногоХранилища(Результат.Хранение));
Если Картинка.Формат() = ФорматКартинки.НеизвестныйФормат Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать файл с изображением.'"));
Возврат;
КонецЕсли;
Если Картинка.РазмерФайла() > 2 * 1024 * 1024 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать файл с изображением меньше 2 Мб.'"));
Возврат;
КонецЕсли;
Если ЭтоАдресВременногоХранилища(АдресФотографии) Тогда
УдалитьИзВременногоХранилища(АдресФотографии);
КонецЕсли;
@@ -1194,10 +1200,16 @@
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьФотографию(Команда)
ФотографияНажатие(Элементы.Фотография, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьФотографию(Команда)
АдресФотографии = ПоместитьВоВременноеХранилище(БиблиотекаКартинок.ПользовательБезФотографии, УникальныйИдентификатор);
ФотографияЗадана = Ложь;
Модифицированность = Истина;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -1223,7 +1235,6 @@
Процедура ВключитьРоли(Команда)
ОбработатьИнтерфейсРолей("ОбновитьСоставРолей", "ВключитьВсе");
ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект, Ложь);
КонецПроцедуры
@@ -1235,9 +1246,6 @@
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Поддержка дополнительных реквизитов.
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
@@ -2515,6 +2523,33 @@
КонецФункции
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер");
МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
////////////////////////////////////////////////////////////////////////////////
// Для работы интерфейса ролей.
@@ -2544,30 +2579,4 @@
КонецПроцедуры
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер");
МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
#КонецОбласти
@@ -167,14 +167,15 @@
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторых пользователей (пропущены): %1
НСтр("ru = 'Не удалось обработать некоторых сведения о пользователях (пропущены): %1
|%2'"), ПроблемныхОбъектов, СтрСоединить(СписокОшибок, Символы.ПС));
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Метаданные.Справочники.Пользователи,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию пользователей: %1'"),
ОбъектовОбработано));
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Обработана очередная порция сведений о пользователях: %1'"),
ОбъектовОбработано));
КонецЕсли;
КонецПроцедуры
@@ -196,7 +196,10 @@
<value>Причина отключения</value>
</synonym>
<type>
<types>EnumRef.ПричиныОтключенияДополнительныхОтчетовИОбработокВМоделиСервиса</types>
<types>String</types>
<stringQualifiers>
<length>10</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
@@ -676,9 +676,6 @@
<edit>
<common>true</common>
</edit>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ref</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.ИдентификаторРегламентногоЗадания</segments>
</notDefaultUseAlwaysAttributes>
@@ -77,10 +77,8 @@
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось установить источник данных правила проверки %1.
|Возможно он поврежден и не подлежит восстановлению.
|
|Информация для администратора: %2'"),
НСтр("ru = 'Не удалось обработать правило проверки %1 по причине:
|%2'"),
ОтключаемаяПроверкаСсылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(
@@ -100,14 +98,14 @@
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре Справочник.ПравилаПроверкиУчета.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые записи проблемных объектов (пропущены): %1'"),
НСтр("ru = 'Не удалось обработать некоторые правила проверки (пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
, ,
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Информация, , ,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедура Справочник.ПравилаПроверкиУчета.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию проблемных объектов: %1'"),
НСтр("ru = 'Обработана очередная порция правил проверки: %1'"),
ОбъектовОбработано));
КонецЕсли;
@@ -122,14 +122,14 @@
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
<attributes uuid="a2c42946-1cdb-457a-a45b-97781cfb4a15">
<name>Отчет</name>
<attributes uuid="a666af62-aa5d-4b2b-b9e5-017d1c93ae6a">
<name>ВидимостьПоУмолчанию</name>
<synonym>
<key>ru</key>
<value>Отчет</value>
<value>Видимость по умолчанию</value>
</synonym>
<type>
<types>CatalogRef.ИдентификаторыОбъектовМетаданных</types>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
@@ -138,29 +138,6 @@
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<indexing>Index</indexing>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="20adf54c-044c-4bea-8028-b6d20917a030">
<name>КлючВарианта</name>
<synonym>
<key>ru</key>
<value>Ключ варианта</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>256</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value> </value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<indexing>Index</indexing>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="dea6b05f-d3e1-4ff4-8f71-6a0c18134e94">
@@ -197,109 +174,26 @@
<indexing>Index</indexing>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="a666af62-aa5d-4b2b-b9e5-017d1c93ae6a">
<name>ВидимостьПоУмолчанию</name>
<attributes uuid="20adf54c-044c-4bea-8028-b6d20917a030">
<name>КлючВарианта</name>
<synonym>
<key>ru</key>
<value>Видимость по умолчанию</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value> </value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="7604b15a-8c5e-4515-84b9-c1d36f9efd0a">
<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>
<attributes uuid="a1a44832-6026-47ae-affd-5b6d52e84307">
<name>ХешНастроек</name>
<synonym>
<key>ru</key>
<value>Хеш настроек</value>
<value>Ключ варианта</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>32</length>
<length>256</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Используется при обновлении программы.</value>
<value> </value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="d2fd8650-d13a-411d-8206-61b16016bd82">
<name>НаименованияПолей</name>
<synonym>
<key>ru</key>
<value>Наименования полей</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Наименования полей, выведенных в отчете.
Используется при поиске.</value>
</toolTip>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="f98bcdb8-6eed-4b4f-b3da-d80b5e8bed44">
<name>НаименованияПараметровИОтборов</name>
<synonym>
<key>ru</key>
<value>Наименования параметров и отборов</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Наименования параметров и отборов отчета.
Используется при поиске.</value>
</toolTip>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<indexing>Index</indexing>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="fbaa5b0a-56dc-4bf1-b1b2-e48073f63d13">
@@ -315,6 +209,48 @@
<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>
<attributes uuid="2e54b3e8-6672-48d5-802a-23d5144fed79">
<name>КлючевыеСловаЯзык1</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>
<attributes uuid="2a7c4ae2-aab3-48b3-b04f-7be6989939e8">
<name>КлючевыеСловаЯзык2</name>
<synonym>
<key>ru</key>
<value>Ключевые слова (дополнительный язык 2)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Дополнительная терминология (в т.ч. специализированная или устаревшая).
Используется при поиске.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
@@ -340,6 +276,244 @@
<fillValue xsi:type="core:StringValue"/>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="f98bcdb8-6eed-4b4f-b3da-d80b5e8bed44">
<name>НаименованияПараметровИОтборов</name>
<synonym>
<key>ru</key>
<value>Наименования параметров и отборов</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Наименования параметров и отборов отчета.
Используется при поиске.</value>
</toolTip>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="daad5f66-3bb4-4389-bca1-bf528ad993a3">
<name>НаименованияПараметровИОтборовЯзык1</name>
<synonym>
<key>ru</key>
<value>Наименования параметров и отборов (дополнительный язык)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Наименования параметров и отборов отчета.
Используется при поиске.</value>
</toolTip>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="ad043f15-b2c9-4a05-82b9-6428708584b2">
<name>НаименованияПараметровИОтборовЯзык2</name>
<synonym>
<key>ru</key>
<value>Наименования параметров и отборов (дополнительный язык)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Наименования параметров и отборов отчета.
Используется при поиске.</value>
</toolTip>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="d2fd8650-d13a-411d-8206-61b16016bd82">
<name>НаименованияПолей</name>
<synonym>
<key>ru</key>
<value>Наименования полей</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Наименования полей, выведенных в отчете.
Используется при поиске.</value>
</toolTip>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="643f4f37-fa02-4976-8701-7a5a44b0109a">
<name>НаименованияПолейЯзык1</name>
<synonym>
<key>ru</key>
<value>Наименования полей (дополнительный язык)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Наименования полей, выведенных в отчете.
Используется при поиске.</value>
</toolTip>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="278a0559-07b2-4ee3-a821-c0395f9a33c1">
<name>НаименованияПолейЯзык2</name>
<synonym>
<key>ru</key>
<value>Наименования полей (дополнительный язык 2)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Наименования полей, выведенных в отчете.
Используется при поиске.</value>
</toolTip>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="7604b15a-8c5e-4515-84b9-c1d36f9efd0a">
<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>
<attributes uuid="54d9f5bb-599c-4d4b-b616-1445e7461813">
<name>ОписаниеЯзык1</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>
<attributes uuid="7d0dbd52-8bb0-4d72-87fa-2d7066e5e189">
<name>ОписаниеЯзык2</name>
<synonym>
<key>ru</key>
<value>Описание (дополнительный язык 2)</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>
<attributes uuid="a2c42946-1cdb-457a-a45b-97781cfb4a15">
<name>Отчет</name>
<synonym>
<key>ru</key>
<value>Отчет</value>
</synonym>
<type>
<types>CatalogRef.ИдентификаторыОбъектовМетаданных</types>
</type>
<toolTip>
<key>ru</key>
<value> </value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<indexing>Index</indexing>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="a1a44832-6026-47ae-affd-5b6d52e84307">
<name>ХешНастроек</name>
<synonym>
<key>ru</key>
<value>Хеш настроек</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>32</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Используется при обновлении программы.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<dataHistory>Use</dataHistory>
</attributes>
<tabularSections uuid="4033eb31-8281-402a-afff-431fa36e589e">
<producedTypes>
<objectType typeId="c02a6112-96e1-46f3-a7c0-d088161064ec" valueTypeId="ec191a41-a5aa-474b-b4dc-092ec6b87a55"/>
@@ -340,6 +340,180 @@
<fillValue xsi:type="core:StringValue"/>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="223e4ccf-5638-4576-bd88-7c54be68de47">
<name>ОписаниеЯзык1</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>
<attributes uuid="e3bae40b-5316-4392-8c82-b601922a6582">
<name>ОписаниеЯзык2</name>
<synonym>
<key>ru</key>
<value>Описание (дополнительный язык 2)</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>
<attributes uuid="26806602-54be-4b2f-96ae-3e2a31616a4e">
<name>НаименованияПолейЯзык1</name>
<synonym>
<key>ru</key>
<value>Наименования полей (дополнительный язык)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Наименования полей, выведенных в отчете.
Используется при поиске.</value>
</toolTip>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="738fc48f-5160-4786-84bb-053c188662ce">
<name>НаименованияПолейЯзык2</name>
<synonym>
<key>ru</key>
<value>Наименования полей (дополнительный язык 2)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Наименования полей, выведенных в отчете.
Используется при поиске.</value>
</toolTip>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="6e883b67-f74c-4791-8fb3-446534e3a6db">
<name>НаименованияПараметровИОтборовЯзык1</name>
<synonym>
<key>ru</key>
<value>Наименования параметров и отборов (дополнительный язык)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Наименования параметров и отборов отчета.
Используется при поиске.</value>
</toolTip>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="24fed307-445d-44b5-8964-9d08d1003061">
<name>НаименованияПараметровИОтборовЯзык2</name>
<synonym>
<key>ru</key>
<value>Наименования параметров и отборов (дополнительный язык 2)</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Наименования параметров и отборов отчета.
Используется при поиске.</value>
</toolTip>
<multiLine>true</multiLine>
<extendedEdit>true</extendedEdit>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="8e4c2dbe-15b7-4e04-9f07-892d70741a97">
<name>КлючевыеСловаЯзык1</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>
<attributes uuid="67691860-e374-451f-aee3-05a35df2a477">
<name>КлючевыеСловаЯзык2</name>
<synonym>
<key>ru</key>
<value>Ключевые слова (дополнительный язык 2)</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="9c484a15-039e-416d-af97-4c2bd90fd873">
<producedTypes>
<objectType typeId="f19341a5-7bb4-4938-be63-479e23748fb6" valueTypeId="b1c8206a-72e4-457d-a9b0-72c79c1c37e5"/>
@@ -66,7 +66,7 @@
ДополнительныеДанные.НеподписанныеДанные = Неопределено;
КонецЕсли;
ЭлектроннаяПодписьСлужебный.СброситьРазмерыИПоложениеОкна(ЭтотОбъект);
СтандартныеПодсистемыСервер.СброситьРазмерыИПоложениеОкна(ЭтотОбъект);
КонецПроцедуры
@@ -360,10 +360,6 @@
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -43,11 +43,11 @@
ВыбраннаяФорма = Метаданные.ОбщиеФормы.НастройкиЭлектроннойПодписиИШифрования;
ИначеЕсли Параметры.Свойство("Ключ")
И Параметры.Ключ.ЭтоПрограммаОблачногоСервиса
И Параметры.Ключ.ЭтоВстроенныйКриптопровайдер
И Метаданные.Обработки.Найти("ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата") <> Неопределено Тогда
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "Обработка.ПрограммыЭлектроннойПодписиИШифрования.Форма.ПрограммаВОблачномСервисе";
ВыбраннаяФорма = "Обработка.ПрограммыЭлектроннойПодписиИШифрования.Форма.ВстроенныйКриптопровайдер";
КонецЕсли;
КонецПроцедуры
@@ -55,7 +55,7 @@
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
Если Не ЭлектроннаяПодписьСлужебный.ИспользоватьЭлектроннуюПодписьВМоделиСервиса() Тогда
Параметры.Отбор.Вставить("ЭтоПрограммаОблачногоСервиса", Ложь);
Параметры.Отбор.Вставить("ЭтоВстроенныйКриптопровайдер", Ложь);
КонецЕсли;
КонецПроцедуры
@@ -145,7 +145,7 @@
////////////////////////////////////////////////////////////////////////////////
// Обновление информационной базы.
Процедура ЗаполнитьНачальныеНастройки(Программы = Неопределено, БезОблачнойПрограммы = Ложь) Экспорт
Процедура ЗаполнитьНачальныеНастройки(Программы = Неопределено, БезВстроенногоКриптопровайдера = Ложь) Экспорт
Если Программы = Неопределено Тогда
Программы = Новый Соответствие;
@@ -160,14 +160,14 @@
ЭлектроннаяПодпись.ЗаполнитьСписокПрограмм(ОписаниеПрограмм);
Если БезОблачнойПрограммы Тогда
Если БезВстроенногоКриптопровайдера Тогда
Возврат;
КонецЕсли;
Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда
ОбработкаПрограммыЭлектроннойПодписиИШифрования = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
"Обработка.ПрограммыЭлектроннойПодписиИШифрования");
ОбработкаПрограммыЭлектроннойПодписиИШифрования.ОбновитьПрограммуОблачногоСервиса();
ОбработкаПрограммыЭлектроннойПодписиИШифрования.ОбновитьВстроенныйКриптопровайдер();
КонецЕсли;
КонецПроцедуры
@@ -193,7 +193,7 @@
|ИЗ
| Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК ПрограммыЭлектроннойПодписиИШифрования
|ГДЕ
| НЕ ПрограммыЭлектроннойПодписиИШифрования.ЭтоПрограммаОблачногоСервиса";
| НЕ ПрограммыЭлектроннойПодписиИШифрования.ЭтоВстроенныйКриптопровайдер";
РезультатЗапроса = Запрос.Выполнить();
@@ -230,15 +230,15 @@
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре Справочники.ПрограммыЭлектроннойПодписиИШифрования.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые программы электронной подписи (пропущены): %1'"),
ПроблемныхОбъектов);
НСтр("ru = 'Не удалось обработать некоторые программы электронной подписи (пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Метаданные.НайтиПоПолномуИмени("Справочник.ПрограммыЭлектроннойПодписиИШифрования"),,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедура Справочники.ПрограммыЭлектроннойПодписиИШифрования.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию программ электронной подписи: %1'"),
ОбъектовОбработано));
Метаданные.Справочники.ПрограммыЭлектроннойПодписиИШифрования,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Обработана очередная порция программ электронной подписи: %1'"),
ОбъектовОбработано));
КонецЕсли;
Параметры.ОбработкаЗавершена = ОбработкаЗавершена;
@@ -258,12 +258,12 @@
Блокировка.Заблокировать();
Свойства = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Программа,
"ИмяПрограммы, ТипПрограммы, Наименование, ЭтоПрограммаОблачногоСервиса");
"ИмяПрограммы, ТипПрограммы, Наименование, ЭтоВстроенныйКриптопровайдер");
Отбор = Новый Структура("ИмяПрограммы, ТипПрограммы", Свойства.ИмяПрограммы, Свойства.ТипПрограммы);
Строки = ПоставляемыеНастройки.НайтиСтроки(Отбор);
Если Не Свойства.ЭтоПрограммаОблачногоСервиса
Если Не Свойства.ЭтоВстроенныйКриптопровайдер
И Строки.Количество() = 1
И Строки[0].Представление <> Свойства.Наименование Тогда
@@ -302,7 +302,7 @@
|ИЗ
| Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК ПрограммыЭлектроннойПодписиИШифрования
|ГДЕ
| ПрограммыЭлектроннойПодписиИШифрования.ЭтоПрограммаОблачногоСервиса";
| ПрограммыЭлектроннойПодписиИШифрования.ЭтоВстроенныйКриптопровайдер";
Программы = Новый Соответствие;
ДобавитьПрограммыНачальногоЗаполнения(Программы);
@@ -338,7 +338,7 @@
Если Метаданные.Обработки.Найти("ПрограммыЭлектроннойПодписиИШифрования") <> Неопределено Тогда
ОбработкаПрограммыЭлектроннойПодписиИШифрования = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(
"Обработка.ПрограммыЭлектроннойПодписиИШифрования");
ОбработкаПрограммыЭлектроннойПодписиИШифрования.ОбновитьПрограммуОблачногоСервиса(Истина,
ОбработкаПрограммыЭлектроннойПодписиИШифрования.ОбновитьВстроенныйКриптопровайдер(Истина,
ОбъектовОбработано, ПроблемныхОбъектов);
КонецЕсли;
@@ -22,7 +22,7 @@
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если ЭтоПрограммаОблачногоСервиса Тогда
Если ЭтоВстроенныйКриптопровайдер Тогда
ПроверяемыеРеквизиты.Очистить();
КонецЕсли;
@@ -238,7 +238,7 @@
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="6c1d8f6c-db33-46dc-8824-aceacb4bf9c1">
<name>ЭтоПрограммаОблачногоСервиса</name>
<name>ЭтоВстроенныйКриптопровайдер</name>
<synonym>
<key>ru</key>
<value>Это встроенный криптопровайдер</value>
@@ -285,7 +285,7 @@
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="dd07b255-25af-466e-a224-c561a8ca567b">
<name>ПрограммаВОблачномСервисе</name>
<name>ВстроенныйКриптопровайдер</name>
<synonym>
<key>ru</key>
<value>Встроенный криптопровайдер</value>
@@ -138,6 +138,63 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоиск</name>
<id>39</id>
<extendedTooltip>
<name>СписокПоискРасширеннаяПодсказка</name>
<id>41</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискКонтекстноеМеню</name>
<id>40</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоискУправление</name>
<id>42</id>
<extendedTooltip>
<name>СписокПоискУправлениеРасширеннаяПодсказка</name>
<id>44</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискУправлениеКонтекстноеМеню</name>
<id>43</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -47,7 +47,7 @@
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Производственный календарь «%1» на %2 год'"),
НСтр("ru = 'Производственный календарь ""%1"" на %2 год'"),
ПараметрыПечати.ПроизводственныйКалендарь,
Формат(ПараметрыПечати.НомерГода, "ЧГ=;"));
МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью");
@@ -62,7 +62,7 @@
Выборка.Следующий();
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Календарь уже является базовым для календаря «%1» и не может зависеть от другого.'"),
НСтр("ru = 'Календарь уже является базовым для календаря ""%1"" и не может зависеть от другого.'"),
Выборка.Ссылка);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Выборка.Ссылка, , "Объект.БазовыйКалендарь", Отказ);
Loaded 100 of 1253 files, more files were not shown because too many files have changed in this diff. Show more