3_0_1_204

This commit is contained in:
Компания 1С committed 2018-07-11 00:47:00 +03:00
1 parent b783b07432
commit b308afecb3
1138 files changed
+139039 -77616

No files matched your search

@@ -402,6 +402,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -537,6 +538,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -904,6 +906,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
@@ -1178,6 +1181,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -64,6 +64,13 @@
ИнициализацияФормы();
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
#КонецОбласти
@@ -27,6 +27,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
@@ -439,6 +440,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -574,6 +576,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1205,6 +1208,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -58,6 +58,13 @@
ИнициализацияФормы();
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
&НаКлиенте
@@ -140,6 +140,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
@@ -300,6 +301,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<throughAlign>Auto</throughAlign>
@@ -511,6 +513,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -546,6 +549,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<throughAlign>Auto</throughAlign>
@@ -968,6 +972,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -996,6 +1001,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<throughAlign>Auto</throughAlign>
@@ -1023,6 +1029,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1149,6 +1156,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
@@ -40,6 +40,13 @@
ИнициализацияФормы();
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
&НаКлиенте
@@ -165,6 +165,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -272,6 +273,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -96,6 +96,43 @@
// Конец СтандартныеПодсистемы.БизнесПроцессыИЗадачи
// СтандартныеПодсистемы.УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"ПрисоединитьДополнительныеТаблицы
|ЭтотСписок КАК Задание
|
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсполнителиЗадач КАК ИсполнителиЗадач
|ПО
| ИсполнителиЗадач.РольИсполнителя = Задание.Исполнитель
| И ИсполнителиЗадач.ОсновнойОбъектАдресации = Задание.ОсновнойОбъектАдресации
| И ИсполнителиЗадач.ДополнительныйОбъектАдресации = Задание.ДополнительныйОбъектАдресации
|
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсполнителиЗадач КАК ПроверяющиеЗадач
|ПО
| ПроверяющиеЗадач.РольИсполнителя = Задание.Проверяющий
| И ПроверяющиеЗадач.ОсновнойОбъектАдресации = Задание.ОсновнойОбъектАдресацииПроверяющий
| И ПроверяющиеЗадач.ДополнительныйОбъектАдресации = Задание.ДополнительныйОбъектАдресацииПроверяющий
|;
|РазрешитьЧтение
|ГДЕ
| ЗначениеРазрешено(Автор)
| ИЛИ ЗначениеРазрешено(Исполнитель КРОМЕ Справочник.РолиИсполнителей)
| ИЛИ ЗначениеРазрешено(ИсполнителиЗадач.Исполнитель)
| ИЛИ ЗначениеРазрешено(Проверяющий КРОМЕ Справочник.РолиИсполнителей)
| ИЛИ ЗначениеРазрешено(ПроверяющиеЗадач.Исполнитель)
|;
|РазрешитьИзменениеЕслиРазрешеноЧтение
|ГДЕ
| ЗначениеРазрешено(Автор)";
КонецПроцедуры
// Конец СтандартныеПодсистемы.УправлениеДоступом
#КонецОбласти
#КонецОбласти
@@ -42,32 +42,24 @@
БизнесПроцессыИЗадачиСервер.ПроверитьПраваНаИзменениеСостоянияБизнесПроцесса(ЭтотОбъект);
Если ЗначениеЗаполнено(ГлавнаяЗадача)
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГлавнаяЗадача, "БизнесПроцесс") = ЭтотОбъект.Ссылка Тогда
Если ЗначениеЗаполнено(ГлавнаяЗадача)
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГлавнаяЗадача, "БизнесПроцесс") = Ссылка Тогда
ВызватьИсключение НСтр("ru = 'Собственная задача бизнес-процесса не может быть указана как главная задача.'");
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ГруппаИсполнителейЗадач = ?(ТипЗнч(Исполнитель) = Тип("СправочникСсылка.РолиИсполнителей"),
БизнесПроцессыИЗадачиСервер.ГруппаИсполнителейЗадач(Исполнитель, ОсновнойОбъектАдресации, ДополнительныйОбъектАдресации),
ГруппаИсполнителейЗадач = ?(ТипЗнч(Исполнитель) = Тип("СправочникСсылка.РолиИсполнителей"),
БизнесПроцессыИЗадачиСервер.ГруппаИсполнителейЗадач(Исполнитель, ОсновнойОбъектАдресации, ДополнительныйОбъектАдресации),
Исполнитель);
ГруппаИсполнителейЗадачПроверяющий = ?(ТипЗнч(Проверяющий) = Тип("СправочникСсылка.РолиИсполнителей"),
БизнесПроцессыИЗадачиСервер.ГруппаИсполнителейЗадач(Проверяющий, ОсновнойОбъектАдресацииПроверяющий, ДополнительныйОбъектАдресацииПроверяющий),
ГруппаИсполнителейЗадачПроверяющий = ?(ТипЗнч(Проверяющий) = Тип("СправочникСсылка.РолиИсполнителей"),
БизнесПроцессыИЗадачиСервер.ГруппаИсполнителейЗадач(Проверяющий, ОсновнойОбъектАдресацииПроверяющий, ДополнительныйОбъектАдресацииПроверяющий),
Проверяющий);
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если НЕ ЭтоНовый() И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Предмет") <> Предмет Тогда
ИзменитьПредметЗадач();
ИзменитьПредметЗадач();
КонецЕсли;
КонецПроцедуры
@@ -389,19 +381,19 @@
Строка.НомерНабора = 1;
Строка.Чтение = Истина;
Строка.Изменение = Истина;
Строка.ЗначениеДоступа = ЭтотОбъект.Автор;
Строка.ЗначениеДоступа = Автор;
// Чтение: набор № 2.
Строка = Таблица.Добавить();
Строка.НомерНабора = 2;
Строка.Чтение = Истина;
Строка.ЗначениеДоступа = ЭтотОбъект.ГруппаИсполнителейЗадач;
Строка.ЗначениеДоступа = ГруппаИсполнителейЗадач;
// Чтение: набор № 3.
Строка = Таблица.Добавить();
Строка.НомерНабора = 3;
Строка.Чтение = Истина;
Строка.ЗначениеДоступа = ЭтотОбъект.ГруппаИсполнителейЗадачПроверяющий;
Строка.ЗначениеДоступа = ГруппаИсполнителейЗадачПроверяющий;
КонецПроцедуры
@@ -159,6 +159,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -527,6 +528,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -555,6 +557,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<throughAlign>Auto</throughAlign>
@@ -680,6 +683,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<throughAlign>Auto</throughAlign>
@@ -105,6 +105,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -11,8 +11,8 @@
Если Параметры.Свойство("Владелец")
И ТипЗнч(Параметры.Владелец) = Тип("ПланВидовХарактеристикСсылка.ВопросыДляАнкетирования")
И НЕ Параметры.Владелец.Пустая() Тогда
Объект.Владелец = Параметры.Владелец;
Объект.Владелец = Параметры.Владелец;
Иначе
@@ -29,6 +29,10 @@
Элементы.ТребуетОткрытогоОтвета.Видимость = (Объект.Владелец.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.НесколькоВариантовИз);
КонецЕсли;
Если Параметры.Свойство("Наименование") Тогда
Объект.Наименование = Параметры.Наименование;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -172,6 +172,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1727,6 +1728,7 @@
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<autoMaxRowsCount>true</autoMaxRowsCount>
<choiceMode>true</choiceMode>
<selectionMode>MultiRow</selectionMode>
<header>true</header>
<headerHeight>1</headerHeight>
@@ -1779,6 +1781,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1908,7 +1911,7 @@
ГДЕ
Варианты.Отчет В(&amp;ДоступныеОтчеты)
И ВЫБОР
КОГДА &amp;ВариантыПользователя ЕСТЬ NULL
КОГДА Не &amp;ЕстьОтборПоВариантам
ТОГДА НЕ Варианты.ПредопределенныйВариант В (&amp;ОтключенныеВариантыПрограммы)
ИНАЧЕ Варианты.Ссылка В (&amp;ВариантыПользователя)
КОНЕЦ</queryText>
@@ -121,7 +121,7 @@
Список.Параметры.УстановитьЗначениеПараметра("ТипРасширение", Перечисления.ТипыОтчетов.Расширение);
Список.Параметры.УстановитьЗначениеПараметра("ТипДополнительный", Перечисления.ТипыОтчетов.Дополнительный);
Список.Параметры.УстановитьЗначениеПараметра("ДоступныеОтчеты", ВариантыОтчетов.ОтчетыТекущегоПользователя());
Список.Параметры.УстановитьЗначениеПараметра("ОтключенныеВариантыПрограммы", ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы());
Список.Параметры.УстановитьЗначениеПараметра("ОтключенныеВариантыПрограммы", Новый Массив(ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы()));
ТекущийЭлемент = Элементы.Список;
@@ -493,7 +493,8 @@
КонецЕсли;
РезультатПоиска = ВариантыОтчетов.НайтиСсылки(ПараметрыПоиска);
ВариантыПользователя = ?(РезультатПоиска = Неопределено, Null, РезультатПоиска.Ссылки);
ВариантыПользователя = ?(РезультатПоиска = Неопределено, Новый Массив, РезультатПоиска.Ссылки);
Список.Параметры.УстановитьЗначениеПараметра("ЕстьОтборПоВариантам", РезультатПоиска <> Неопределено);
Список.Параметры.УстановитьЗначениеПараметра("ВариантыПользователя", ВариантыПользователя);
КонецПроцедуры
@@ -287,6 +287,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1159,6 +1160,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1876,6 +1878,10 @@
<event>AfterWriteAtServer</event>
<name>ПослеЗаписиНаСервере</name>
</handlers>
<handlers>
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
<handlers>
<event>BeforeWriteAtServer</event>
<name>ПередЗаписьюНаСервере</name>
@@ -115,6 +115,18 @@
СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева(ЭтотОбъект, "ДеревоПодсистем", "*", Истина);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
@@ -24,6 +24,28 @@
// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
// СтандартныеПодсистемы.УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтение
|ГДЕ
| Пользовательский = ЛОЖЬ
| ИЛИ ТолькоДляАвтора = ЛОЖЬ
| ИЛИ ЭтоАвторизованныйПользователь(Автор)
|;
|РазрешитьИзменениеЕслиРазрешеноЧтение
|ГДЕ
| ЭтоАвторизованныйПользователь(Автор)";
Ограничение.ТекстДляВнешнихПользователей = Ограничение.Текст;
КонецПроцедуры
// Конец СтандартныеПодсистемы.УправлениеДоступом
#КонецОбласти
#КонецОбласти
@@ -144,10 +166,9 @@
ШаблонКомментария = НСтр("ru = 'Не удалось установить источник данных варианта отчета %1.
|Возможно он поврежден и не подлежит восстановлению.
|
|Информация для администратора: %2'");
|Техническая информация о проблеме: %2'");
Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонКомментария, Вариант.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(
ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Предупреждение,
@@ -166,7 +187,6 @@
Иначе
ШаблонКомментария = НСтр("ru = 'Процедура УстановитьИсточникДанныхВарианта обработала очередной пакет вариантов отчетов: %1'");
Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, Обработано);
ЗаписьЖурналаРегистрации(
ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Информация,
@@ -8,7 +8,7 @@
Если ИменаПараметровСеанса = Неопределено
Или ИменаПараметровСеанса.Найти("УстановленныеРасширения") <> Неопределено Тогда
ПараметрыСеанса.УстановленныеРасширения = КонтрольныеСуммыРасширений();
ПараметрыСеанса.УстановленныеРасширения = УстановленныеРасширения();
УстановленныеПараметры.Добавить("УстановленныеРасширения");
КонецЕсли;
@@ -35,64 +35,59 @@
КонецПроцедуры
// Расширения подключаются только в разделенном режиме, когда
// вход в область данных выполнен под разделенным пользователем,
// поэтому обновление кэшей допустимо выполнять только в этом случае.
//
Функция УстановленныеРасширенияДоступны() Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
СеансЗапущенБезРазделителей = МодульРаботаВМоделиСервиса.СеансЗапущенБезРазделителей();
Иначе
СеансЗапущенБезРазделителей = Истина;
КонецЕсли;
Возврат Не ОбщегоНазначения.РазделениеВключено()
Или Не СеансЗапущенБезРазделителей;
КонецФункции
// Возвращает контрольные суммы всех установленных расширений.
//
// Возвращает отдельные контрольные суммы для основных расширений и
// исправлений для установки параметра сеанса УстановленныеРасширения и
// дальнейшей проверки изменений.
//
// Вызывается при запуске для установки параметра сеанса УстановленныеРасширения,
// который требуется для анализа наличия расширений и контроля динамического обновления,
// а также из формы установки расширений конфигурации в режиме 1С:Предприятия.
//
// Параметры:
// Расширения - Неопределено - получить контрольные суммы установленных расширений.
// - ДанныеФормыКоллекция - получить контрольные суммы из указанного списка.
// Для сеанса запущенного без разделителей возвращается только состав неразделенных (общих)
// расширений, независимо от установленных разделителей.
//
// Возвращаемое значение:
// Строка - строки вида "<Имя расширения> (<Версия расширения>) <Контрольная сумма>".
// ФиксированнаяСтруктура - со свойствами:
// * Основные - Строка - контрольная сумма всех расширений, кроме исправительных расширений.
// * Исправления - Строка - контрольная сумма всех исправительных расширений.
//
Функция КонтрольныеСуммыРасширений(Расширения = Неопределено) Экспорт
Функция УстановленныеРасширения() Экспорт
Если Расширения = Неопределено Тогда
Расширения = РасширенияКонфигурации.Получить();
Если ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
Неразделенные = МодульРаботаВМоделиСервиса.СеансЗапущенБезРазделителей();
Иначе
Неразделенные = Ложь;
КонецЕсли;
Список = Новый СписокЗначений;
Расширения = РасширенияКонфигурации.Получить();
Для Каждого Расширение Из Расширения Цикл
Если ТипЗнч(Расширение) = Тип("РасширениеКонфигурации") Тогда
КонтрольнаяСумма = Base64Строка(Расширение.ХешСумма);
Иначе
КонтрольнаяСумма = Расширение.КонтрольнаяСумма;
КонецЕсли;
Список.Добавить(Расширение.Имя + " (" + Расширение.Версия + ") " + КонтрольнаяСумма);
КонецЦикла;
Основные = Новый Массив;
Исправления = Новый Массив;
Если Список.Количество() <> 0 Тогда
Список.Добавить("#" + Метаданные.Имя + " (" + Метаданные.Версия + ")");
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбновлениеКонфигурации") Тогда
МодульОбновлениеКонфигурации = ОбщегоНазначения.ОбщийМодуль("ОбновлениеКонфигурации");
Для Каждого Расширение Из Расширения Цикл
Если Неразделенные И Расширение.ОбластьДействия = ОбластьДействияРасширенияКонфигурации.РазделениеДанных Тогда
Продолжить;
КонецЕсли;
Если МодульОбновлениеКонфигурации.ЭтоИсправление(Расширение) Тогда
Исправления.Добавить(Расширение);
Иначе
Основные.Добавить(Расширение);
КонецЕсли;
КонецЦикла;
Иначе
Основные = Расширения;
КонецЕсли;
КонтрольныеСуммы = "";
Для Каждого Элемент Из Список Цикл
КонтрольныеСуммы = КонтрольныеСуммы + Символы.ПС + Элемент.Значение;
КонецЦикла;
УстановленныеРасширения = Новый Структура;
УстановленныеРасширения.Вставить("Основные", КонтрольныеСуммыРасширений(Основные));
УстановленныеРасширения.Вставить("Исправления", КонтрольныеСуммыРасширений(Исправления));
Возврат СокрЛ(КонтрольныеСуммы);
Возврат Новый ФиксированнаяСтруктура(УстановленныеРасширения);
КонецФункции
@@ -101,29 +96,17 @@
УстановитьПривилегированныйРежим(Истина);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
СеансЗапущенБезРазделителей = МодульРаботаВМоделиСервиса.СеансЗапущенБезРазделителей();
Иначе
СеансЗапущенБезРазделителей = Истина;
КонецЕсли;
УстановленныеРасширения = УстановленныеРасширения();
// При входе неразделенного администратора в область получить список неразделенных расширений невозможно.
// Считаем что они не изменились.
Если ОбщегоНазначения.РазделениеВключено()
И СеансЗапущенБезРазделителей
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат Ложь;
КонецЕсли;
Возврат ПараметрыСеанса.УстановленныеРасширения <> КонтрольныеСуммыРасширений();
Возврат ПараметрыСеанса.УстановленныеРасширения.Основные <> УстановленныеРасширения.Основные
Или ПараметрыСеанса.УстановленныеРасширения.Исправления <> УстановленныеРасширения.Исправления;
КонецФункции
// Добавляет сведения, что сеанс начал использование версии метаданных.
Процедура ЗарегистрироватьИспользованиеВерсииРасширений() Экспорт
Если Не УстановленныеРасширенияДоступны() Тогда
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
@@ -156,6 +139,7 @@
КонецПопытки;
Если РезультатыЗапроса[0].Выбрать().Количество() < 2 Тогда
ОбновитьПоследнююВерсиюРасширений(ВерсияРасширений);
Возврат;
КонецЕсли;
@@ -176,8 +160,27 @@
НаборЗаписей.ОбменДанными.Загрузка = Истина;
НаборЗаписей.Записать();
ОбновитьПоследнююВерсиюРасширений(ВерсияРасширений);
КонецПроцедуры
Функция ПоследняяВерсияРасширений() Экспорт
ИмяПараметра = "СтандартныеПодсистемы.БазоваяФункциональность.ПоследняяВерсияРасширений";
ХранимыеСвойства = СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ИмяПараметра, Истина);
Если ХранимыеСвойства = Неопределено
Или ТипЗнч(ХранимыеСвойства) <> Тип("Структура")
Или Не ХранимыеСвойства.Свойство("ВерсияРасширений")
Или Не ХранимыеСвойства.Свойство("ДатаОбновления") Тогда
ХранимыеСвойства = Новый Структура("ВерсияРасширений, ДатаОбновления", , '00010101');
КонецЕсли;
Возврат ХранимыеСвойства;
КонецФункции
// Удаляет устаревшие версии метаданных.
Процедура УдалитьУстаревшиеВерсииПараметров() Экспорт
@@ -244,7 +247,10 @@
// использоваться сеансами, которые были открыты до этого события.
ВерсияИспользуемаяВНезарегистрированныхСеансах = Неопределено;
ДатаОкончанияСеансовИспользующихРасширенияБезРегистрации = '00010101';
Если ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения) Тогда
Если ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения.Основные)
Или ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения.Исправления) Тогда
Если Не РезультатыЗапроса[1].Пустой() Тогда
Свойства = РезультатыЗапроса[1].Выгрузить()[0];
ДатаОкончанияСеансовИспользующихРасширенияБезРегистрации
@@ -330,7 +336,10 @@
// Удаление всех регистраций использования метаданных.
ВсеЗаписи = РегистрыСведений.СеансыВерсийРасширений.СоздатьНаборЗаписей();
ВсеЗаписи.Записать();
Если ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения) Тогда
Если ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения.Основные)
Или ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения.Исправления) Тогда
ВключитьЗаданиеУдалениеУстаревшихПараметровРаботыВерсийРасширений(Ложь);
КонецЕсли;
Если ВерсииУдалялись
@@ -365,7 +374,7 @@
КонецПроцедуры
// Вызывается из формы УстановленныеРасширения.
// Вызывается из формы Расширения.
Процедура ПриУдаленииВсехРасширений() Экспорт
ЗарегистрироватьПервыйВходПослеУдаленияВсехРасширений();
@@ -385,16 +394,48 @@
#Область СлужебныеПроцедурыИФункции
// Возвращает контрольные суммы указанных расширений.
//
// Параметры:
// Расширения - Массив - получить контрольные суммы указанных расширений.
//
// Возвращаемое значение:
// Строка - строки вида "<Имя расширения> (<Версия расширения>) <Контрольная сумма>".
//
Функция КонтрольныеСуммыРасширений(Расширения)
Список = Новый СписокЗначений;
Для Каждого Расширение Из Расширения Цикл
КонтрольнаяСумма = Base64Строка(Расширение.ХешСумма);
Список.Добавить(Расширение.Имя + " (" + Расширение.Версия + ") " + КонтрольнаяСумма);
КонецЦикла;
Если Список.Количество() <> 0 Тогда
Список.Добавить("#" + Метаданные.Имя + " (" + Метаданные.Версия + ")");
КонецЕсли;
КонтрольныеСуммы = "";
Для Каждого Элемент Из Список Цикл
КонтрольныеСуммы = КонтрольныеСуммы + Символы.ПС + Элемент.Значение;
КонецЦикла;
Возврат СокрЛ(КонтрольныеСуммы);
КонецФункции
// Возвращает текущую версию расширений.
// Для поиска версии используется описание подключенных расширений.
//
Функция ВерсияРасширений()
Если Не УстановленныеРасширенияДоступны() Тогда
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат ПустаяСсылка();
КонецЕсли;
Если Не ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения) Тогда
Если Не ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения.Основные)
И Не ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения.Исправления) Тогда
ЗарегистрироватьПервыйВходПослеУдаленияВсехРасширений();
КонецЕсли;
@@ -523,6 +564,32 @@
КонецПроцедуры
// Для процедуры ЗарегистрироватьИспользованиеВерсииРасширений.
Процедура ОбновитьПоследнююВерсиюРасширений(ВерсияРасширений)
Если КонфигурацияБазыДанныхИзмененаДинамически() Тогда
Возврат;
КонецЕсли;
ХранимыеСвойства = ПоследняяВерсияРасширений();
Если ХранимыеСвойства.ВерсияРасширений = ВерсияРасширений Тогда
Возврат;
КонецЕсли;
ХранимыеСвойства.ВерсияРасширений = ВерсияРасширений;
ХранимыеСвойства.ДатаОбновления = ТекущаяДатаСеанса();
ИмяПараметра = "СтандартныеПодсистемы.БазоваяФункциональность.ПоследняяВерсияРасширений";
СтандартныеПодсистемыСервер.УстановитьПараметрРаботыРасширения(ИмяПараметра, ХранимыеСвойства, Истина);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный");
МодульУправлениеДоступомСлужебный.УстановитьОбновлениеДоступа(Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -22,6 +22,24 @@
// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
// СтандартныеПодсистемы.УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтение
|ГДЕ
| ЧтениеОбъектаРазрешено(Владелец.ВладелецФайла)
|;
|РазрешитьИзменениеЕслиРазрешеноЧтение
|ГДЕ
| ИзменениеОбъектаРазрешено(Владелец.ВладелецФайла)";
КонецПроцедуры
// Конец СтандартныеПодсистемы.УправлениеДоступом
#КонецОбласти
#КонецОбласти
@@ -37,4 +55,4 @@
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -80,6 +80,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -160,12 +161,14 @@
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>Clearing</event>
<name>РодительОчистка</name>
</handlers>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<openButton>false</openButton>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
@@ -374,6 +377,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1044,6 +1048,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -33,12 +33,12 @@
</li><li>
<div>Настройка <strong>Запрещать ввод некорректного адреса</strong> используется для полей <strong>Адрес</strong>, <strong>Телефон</strong> или <strong>Адрес электронной почты</strong>. Такая настройка позволяет запретить ввод российских адресов, телефонов или адресов электронной почты, которые заполнены не по установленным правилам.</div>
</li><li>
<div>Включите флажок <strong>Разрешить ввод нескольких значений</strong>, для того чтобы можно было ввести несколько значений. Например, у организации или физического лица может быть несколько адресов электронной почты или номеров телефонов, по которым можно с ними связаться.</div></li></ul><h3>Особенности настройки поля Адрес </h3>
<ul><li>Включите флажок <strong>Только российский</strong>, для того чтобы запретить выбор другой страны при заполнении адреса. Используйте эту возможность, если у сотрудников Вашей организации только российские адреса, это ускорит ввод информации. При этом становятся доступными дополнительные настройки:
<ul><li><strong>Запрещать ввод некорректного адреса</strong> - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора - для использования этой возможности включите флажок <strong>Редактировать только в диалоге</strong>).
</li><li><strong>Проверять по КЛАДР</strong>;
</li><li><strong>Проверять по ФИАС</strong> - при использовании классификатора ФИАС адреса ведутся в дополнительных разрезах (например, <strong>Округ</strong>);
</li><li><strong>Скрывать неактуальные адреса</strong> - включите флажок, для того чтобы программа не показывала в списках устаревшие адреса на момент последней загрузки классификатора адреса. Такие адреса помечены в списках значком <img src="CommonPicture.КонтактнаяИнформацияНеактуально"></img>. По умолчанию флажок отключен.
<div>Включите флажок <strong>Разрешить ввод нескольких значений</strong>, для того чтобы можно было ввести несколько значений. Например, у организации или физического лица может быть несколько адресов электронной почты или номеров телефонов, по которым можно с ними связаться.</div></li></ul><h3>Международный формат адреса</h3>
<li>Для создания международного адреса (например, для валютных платежей), включите флажок <strong>Международный формат адреса</strong>, в этом случае ссылка <strong>Дополнительные настройки адреса</strong> становится недоступной.
<h3>Дополнительные настройки поля Адрес </h3>
<p>С помощью соответствующей ссылки можно перейти к дополнительным настройкам адреса:</p>
<ul><li>Включите флажок <strong>Только российский адрес</strong>, для того чтобы запретить выбор другой страны при заполнении адреса. Используйте эту возможность, если у сотрудников Вашей организации только российские адреса, это ускорит ввод информации. При этом становятся доступными дополнительные настройки:
<ul><li><strong>Запрещать ввод некорректного адреса</strong> - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора - для использования этой возможности включите флажок <strong>Редактировать только в диалоге</strong>). Адрес проверяется по ФИАС.
</li><li><strong>Указывать ОКТМО</strong> - включите флажок, для того чтобы автоматически заполнялось поле ОКТМО. При необходимости поле можно отредактировать.</li></ul></li><li><strong>Включать страну в представление</strong> - включите флажок, для того чтобы при автоматическом составлении полного адреса в поле <strong>Адрес</strong> указывалась страна.
</li><li>Если включена возможность хранить историю изменения адреса, то в поле выводится состояние <strong>Хранит историю изменений</strong>.</li></ul><h3>Особенности настройки поля Телефон и факс</h3>
<ul><li>
@@ -56,4 +56,4 @@
<div><strong>Однострочное узкое</strong> - если вид контактной информации <strong>Другое</strong> используется для ввода текстовых данных небольшой длины, то размер поля ввода можно уменьшить.</div></li></ul></li></ul><h3>См. также: </h3>
<ul><li>
<div><a href="Catalog.ВидыКонтактнойИнформации/Help">Виды контактной информации</a>; </div></li></ul><ul><li><a href="DataProcessor.ВводКонтактнойИнформации/Help">Ввод контактной информации</a>;
</li><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
</li><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></li></body></html>
@@ -1,4 +1,3 @@
#Область ОбработчикиСобытийФормы
&НаСервере
@@ -153,6 +152,11 @@
КонецПроцедуры
&НаКлиенте
Процедура РодительОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура МеждународныйФорматАдресаПриИзменении(Элемент)
@@ -5,7 +5,7 @@
<p>Поставка программы осуществляется c предопределенными группами и элементами списка. Предопределенные группы списка соответствуют спискам или документам программы - носителям контактной информации. Добавление новых групп в список запрещено. Элементы внутри этих групп определяют состав контактной информации соответствующих объектов программы.</p>
<p>В списках и табличных частях документов программы предусмотрено несколько предопределенных видов контактной информации, кроме того, имеется возможность добавлять новые виды контактной информации. </p>
<p>Настройку видов контактной информации рекомендуется выполнить на этапе начального заполнения программы. Эта рекомендация не исключает настройку в процессе ведения контактной информации. Настройку обычно выполняет администратор программы.</p>
<p>Список открывается соответствующей командой панели навигации раздела <strong>Администрирование - Общие настройки</strong>.</p>
<p>Список открывается соответствующей командой панели навигации раздела <strong>Администрирование - Общие настройки - Контактная информация</strong>.</p>
<h3>Добавление нового поля контактной информации в список или документ</h3>
<ul><li>
<div>Выбрав соответствующую группу в списке, нажмите  <strong>Создать</strong>. Заполните необходимые <a href="Catalog.ВидыКонтактнойИнформации.Form.ФормаЭлемента/Help">поля</a>.</div></li></ul><h3>Предопределенные виды контактной информации</h3>
@@ -112,4 +112,5 @@
#КонецОбласти
#КонецЕсли
@@ -3,11 +3,11 @@
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
Если ЭтотОбъект.ОбменДанными.Загрузка Тогда
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если НЕ ЭтотОбъект.ЭтоГруппа Тогда
Если НЕ ЭтоГруппа Тогда
Результат = УправлениеКонтактнойИнформациейСлужебный.ПроверитьПараметрыВидаКонтактнойИнформации(ЭтотОбъект);
Если Результат.ЕстьОшибки Тогда
Отказ = Истина;
@@ -17,6 +17,18 @@
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если ЭтоГруппа Тогда
НепроверяемыеРеквизиты = Новый Массив;
НепроверяемыеРеквизиты.Добавить("Родитель");
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, НепроверяемыеРеквизиты);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -80,6 +80,7 @@
<fillValue xsi:type="core:ReferenceValue">
<value>Catalog.ВидыКонтактнойИнформации.EmptyRef</value>
</fillValue>
<fillChecking>ShowError</fillChecking>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
@@ -190,7 +191,9 @@
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fillValue xsi:type="core:StringValue">
<value>МногострочноеШирокое</value>
</fillValue>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
@@ -374,7 +377,7 @@
<name>РеквизитДопУпорядочивания</name>
<synonym>
<key>ru</key>
<value>Реквизит доп упорядочивания</value>
<value>Порядок</value>
</synonym>
<type>
<types>Number</types>
@@ -106,6 +106,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -0,0 +1,752 @@
<?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>
<items xsi:type="form:FormGroup">
<name>Начальная</name>
<id>3</id>
<items xsi:type="form:FormGroup">
<name>Шапка</name>
<id>11</id>
<items xsi:type="form:Decoration">
<name>Предупреждение32</name>
<id>13</id>
<title>
<key>ru</key>
<value>Предупреждение32</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Предупреждение32РасширеннаяПодсказка</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>Предупреждение32КонтекстноеМеню</name>
<id>14</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<skipOnInput>false</skipOnInput>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Предупреждение32</picture>
</picture>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ДекорацияПояснение</name>
<id>16</id>
<title>
<key>ru</key>
<value>%1
Проверить обновление компоненты?</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<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>Label</type>
<maxWidth>75</maxWidth>
<autoMaxHeight>true</autoMaxHeight>
<font xsi:type="core:FontRef">
<font>Style.NormalTextFont</font>
<scale>100</scale>
</font>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Шапка</value>
</title>
<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>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Button">
<name>ПодключитьИнтернетПоддержку</name>
<id>22</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПодключитьИнтернетПоддержкуРасширеннаяПодсказка</name>
<id>23</id>
<title>
<key>ru</key>
<value>Для использования веб-сервиса 1С и загрузки внешних компонент необходимо выполнить подключение к Интернет-поддержке пользователей.</value>
</title>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Hyperlink</type>
<commandName>Form.Command.ПодключитьИнтернетПоддержку</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<toolTipRepresentation>Button</toolTipRepresentation>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Начальная</value>
</title>
<extendedTooltip>
<name>НачальнаяРасширеннаяПодсказка</name>
<id>4</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ДлительнаяОперация</name>
<id>32</id>
<items xsi:type="form:Decoration">
<name>ДлительнаяОперация48</name>
<id>34</id>
<title>
<key>ru</key>
<value>Длительная операция48</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДлительнаяОперация48РасширеннаяПодсказка</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>ДлительнаяОперация48КонтекстноеМеню</name>
<id>35</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.ДлительнаяОперация48</picture>
</picture>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ДлительнаяОперацияНадпись</name>
<id>37</id>
<title>
<key>ru</key>
<value>Выполняется получение компоненты с Портала 1С:ИТС</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<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>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Длительная операция</value>
</title>
<extendedTooltip>
<name>ДлительнаяОперацияРасширеннаяПодсказка</name>
<id>33</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>AlwaysHorizontal</group>
<verticalAlign>Center</verticalAlign>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>Ошибка</name>
<id>42</id>
<items xsi:type="form:Decoration">
<name>Ошибка32</name>
<id>47</id>
<title>
<key>ru</key>
<value>Ошибка32</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Ошибка32РасширеннаяПодсказка</name>
<id>49</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>Ошибка32КонтекстноеМеню</name>
<id>48</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Ошибка32</picture>
</picture>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>КраткоеПредставлениеОшибки</name>
<id>44</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>КраткоеПредставлениеОшибки</segments>
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>КраткоеПредставлениеОшибкиРасширеннаяПодсказка</name>
<id>46</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>КраткоеПредставлениеОшибкиКонтекстноеМеню</name>
<id>45</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>
<height>2</height>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Ошибка</value>
</title>
<extendedTooltip>
<name>ОшибкаРасширеннаяПодсказка</name>
<id>43</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>AlwaysHorizontal</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>Выполнено</name>
<id>50</id>
<items xsi:type="form:Decoration">
<name>Успешно32</name>
<id>52</id>
<title>
<key>ru</key>
<value>Успешно32</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Успешно32РасширеннаяПодсказка</name>
<id>54</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>Успешно32КонтекстноеМеню</name>
<id>53</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Успешно32</picture>
</picture>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>РезультатВыполнения</name>
<id>58</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>РезультатВыполнения</segments>
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>РезультатВыполненияРасширеннаяПодсказка</name>
<id>60</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>РезультатВыполненияКонтекстноеМеню</name>
<id>59</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>
<height>2</height>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Выполнено</value>
</title>
<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>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>AlwaysHorizontal</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Страницы</value>
</title>
<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>Pages</type>
<extInfo xsi:type="form:PagesGroupExtInfo">
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<commandBarLocation>Bottom</commandBarLocation>
<showCommandBar>true</showCommandBar>
<autoCommandBar>
<name>ФормаКоманднаяПанель</name>
<id>-1</id>
<items xsi:type="form:Button">
<name>Загрузить</name>
<id>28</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<defaultItem>true</defaultItem>
<extendedTooltip>
<name>ЗагрузитьРасширеннаяПодсказка</name>
<id>29</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.Загрузить</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>30</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<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>
<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>61</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗакрытьРасширеннаяПодсказка</name>
<id>62</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.StandardCommand.Close</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<horizontalAlign>Right</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>OnOpen</event>
<name>ПриОткрытии</name>
</handlers>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
</handlers>
<excludedCommands>Help</excludedCommands>
<windowOpeningMode>LockOwner</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoTitle>true</autoTitle>
<autoUrl>true</autoUrl>
<group>Vertical</group>
<autoFillCheck>true</autoFillCheck>
<enabled>true</enabled>
<showTitle>auto</showTitle>
<showCloseButton>true</showCloseButton>
<attributes>
<name>ДоступнаЗагрузкаСПортала</name>
<title>
<key>ru</key>
<value>Доступна загрузка с портала 1С:ИТС</value>
</title>
<id>2</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ДанныеАутентификацииПорталаСохранены</name>
<title>
<key>ru</key>
<value>Данные аутентификации портала сохранены</value>
</title>
<id>3</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>КраткоеПредставлениеОшибки</name>
<title>
<key>ru</key>
<value>Краткое представление ошибки</value>
</title>
<id>4</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>РезультатВыполнения</name>
<title>
<key>ru</key>
<value>Результат выполнения</value>
</title>
<id>5</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>МассивСсылок</name>
<title>
<key>ru</key>
<value>Массив ссылок</value>
</title>
<id>1</id>
<valueType>
<types>ValueList</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<extInfo xsi:type="form:ValueListExtInfo">
<itemValueType/>
</extInfo>
</attributes>
<formCommands>
<name>ПодключитьИнтернетПоддержку</name>
<title>
<key>ru</key>
<value>Подключить интернет поддержку</value>
</title>
<id>1</id>
<toolTip>
<key>ru</key>
<value>Подключить интернет поддержку</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ПодключитьИнтернетПоддержку</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>Загрузить</name>
<title>
<key>ru</key>
<value>Загрузить</value>
</title>
<id>2</id>
<toolTip>
<key>ru</key>
<value>Загрузить</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>Загрузить</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<parameters>
<name>МассивСсылок</name>
<valueType/>
<keyParameter>true</keyParameter>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar/>
</commandInterface>
</form:Form>
@@ -0,0 +1,175 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат;
КонецЕсли;
Если ТипЗнч(Параметры.МассивСсылок) <> Тип("Массив")
Или Параметры.МассивСсылок.Количество() = 0 Тогда
ВызватьИсключение НСтр("ru = 'Должна быть хоть одна ссылка указана.'");
КонецЕсли;
ДанныеАутентификацииПорталаСохранены = ДанныеАутентификацииПорталаСохранены();
ДоступнаЗагрузкаСПортала = ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаСПортала();
ТекстПояснения = "";
ПредложитьОбновление = Ложь;
Для Каждого Ссылка Из Параметры.МассивСсылок Цикл
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Идентификатор, Версия, ОбновлятьСПортала1СИТС");
ТекстПояснения = ТекстПояснения
+ ВнешниеКомпонентыСлужебный.ПредставлениеКомпоненты(Реквизиты.Идентификатор, Реквизиты. Версия)
+ ?(Реквизиты.ОбновлятьСПортала1СИТС, "", НСтр("ru = ' - обновление отключено.'"))
+ Символы.ПС;
ПредложитьОбновление = ПредложитьОбновление Или Реквизиты.ОбновлятьСПортала1СИТС;
Если Реквизиты.ОбновлятьСПортала1СИТС Тогда
МассивСсылок.Добавить(Ссылка);
КонецЕсли;
КонецЦикла;
Если ПредложитьОбновление Тогда
Элементы.ДекорацияПояснение.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1
|Проверить обновление компоненты?'"),
ТекстПояснения);
Элементы.ПодключитьИнтернетПоддержку.Видимость = Не ДанныеАутентификацииПорталаСохранены;
Элементы.Закрыть.Видимость = Ложь;
Иначе
Элементы.ДекорацияПояснение.Заголовок = ТекстПояснения;
Элементы.ПодключитьИнтернетПоддержку.Видимость = Ложь;
Элементы.Загрузить.Видимость = Ложь;
Элементы.Отмена.Видимость = Ложь;
Элементы.Закрыть.Видимость = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Не ДоступнаЗагрузкаСПортала Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПодключитьИнтернетПоддержку(Команда = Неопределено)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей") Тогда
МодульИнтернетПоддержкаПользователейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ИнтернетПоддержкаПользователейКлиент");
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияИнтернетПоддержки", ЭтотОбъект);
МодульИнтернетПоддержкаПользователейКлиент.ПодключитьИнтернетПоддержкуПользователей(Оповещение, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Загрузить(Команда)
Если Не ДанныеАутентификацииПорталаСохранены Тогда
ПодключитьИнтернетПоддержку();
Возврат;
КонецЕсли;
Элементы.Загрузить.Доступность = Ложь;
Элементы.Страницы.ТекущаяСтраница = Элементы.ДлительнаяОперация;
ДлительнаяОперация = НачатьОбновлениеКомпонентСПортала();
Если ДлительнаяОперация = Неопределено Тогда
КраткоеПредставлениеОшибки = НСтр("ru = 'Не удалось создать фоновое задание обновления компоненты.'");
Элементы.Страницы.ТекущаяСтраница = Элементы.Ошибка;
КонецЕсли;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ФормаВладелец = ЭтотОбъект;
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
Оповещение = Новый ОписаниеОповещения("ПослеОбновленияКомпонентСПортала", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ПараметрыОжидания);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ПослеПодключенияИнтернетПоддержки(Результат, Параметр) Экспорт
Если ТипЗнч(Результат) = Тип("Структура") Тогда
Элементы.ПодключитьИнтернетПоддержку.Видимость = Ложь;
ДанныеАутентификацииПорталаСохранены = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДанныеАутентификацииПорталаСохранены()
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей") Тогда
МодульИнтернетПоддержкаПользователей = ОбщегоНазначения.ОбщийМодуль("ИнтернетПоддержкаПользователей");
Возврат МодульИнтернетПоддержкаПользователей.ЗаполненыДанныеАутентификацииПользователяИнтернетПоддержки();
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаСервере
Функция НачатьОбновлениеКомпонентСПортала()
Если Не ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаСПортала() Тогда
Возврат Неопределено;
КонецЕсли;
ПараметрыПроцедуры = Новый Структура;
ПараметрыПроцедуры.Вставить("МассивСсылок", МассивСсылок.ВыгрузитьЗначения());
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Обновление внешней компоненты.'");
Возврат ДлительныеОперации.ВыполнитьВФоне("ВнешниеКомпонентыСлужебный.ОбновитьКомпонентыСПортала",
ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
&НаКлиенте
Процедура ПослеОбновленияКомпонентСПортала(Результат, ДополнительныеПараметры) Экспорт
// Ответ:
// - Структура - Выполнено - результат в структуре.
// - Неопределено - Отменено пользователем.
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Ошибка" Тогда
КраткоеПредставлениеОшибки = Результат.КраткоеПредставлениеОшибки;
Элементы.Страницы.ТекущаяСтраница = Элементы.Ошибка;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
РезультатВыполнения = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
Элементы.Страницы.ТекущаяСтраница = Элементы.Выполнено;
Элементы.Загрузить.Видимость = Ложь;
Элементы.Отмена.Видимость = Ложь;
Элементы.Закрыть.Видимость = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,605 @@
<?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>
<items xsi:type="form:FormGroup">
<name>Начальная</name>
<id>3</id>
<items xsi:type="form:FormGroup">
<name>Шапка</name>
<id>11</id>
<items xsi:type="form:Decoration">
<name>Предупреждение32</name>
<id>13</id>
<title>
<key>ru</key>
<value>Предупреждение32</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Предупреждение32РасширеннаяПодсказка</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>Предупреждение32КонтекстноеМеню</name>
<id>14</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<skipOnInput>false</skipOnInput>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Предупреждение32</picture>
</picture>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ДекорацияПояснение</name>
<id>16</id>
<title>
<key>ru</key>
<value>%1
Компонента не загружена в программу.
Загрузить?</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<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>Label</type>
<maxWidth>75</maxWidth>
<autoMaxHeight>true</autoMaxHeight>
<font xsi:type="core:FontRef">
<font>Style.NormalTextFont</font>
<scale>100</scale>
</font>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Шапка</value>
</title>
<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>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Button">
<name>ПодключитьИнтернетПоддержку</name>
<id>22</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПодключитьИнтернетПоддержкуРасширеннаяПодсказка</name>
<id>23</id>
<title>
<key>ru</key>
<value>Для использования веб-сервиса 1С и загрузки внешних компонент необходимо выполнить подключение к Интернет-поддержке пользователей.</value>
</title>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Hyperlink</type>
<commandName>Form.Command.ПодключитьИнтернетПоддержку</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<toolTipRepresentation>Button</toolTipRepresentation>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Начальная</value>
</title>
<extendedTooltip>
<name>НачальнаяРасширеннаяПодсказка</name>
<id>4</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ДлительнаяОперация</name>
<id>32</id>
<items xsi:type="form:Decoration">
<name>ДлительнаяОперация48</name>
<id>34</id>
<title>
<key>ru</key>
<value>Длительная операция48</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДлительнаяОперация48РасширеннаяПодсказка</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>ДлительнаяОперация48КонтекстноеМеню</name>
<id>35</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.ДлительнаяОперация48</picture>
</picture>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ДлительнаяОперацияНадпись</name>
<id>37</id>
<title>
<key>ru</key>
<value>Выполняется получение компоненты с Портала 1С:ИТС</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<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>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Длительная операция</value>
</title>
<extendedTooltip>
<name>ДлительнаяОперацияРасширеннаяПодсказка</name>
<id>33</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>AlwaysHorizontal</group>
<verticalAlign>Center</verticalAlign>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>Ошибка</name>
<id>42</id>
<items xsi:type="form:Decoration">
<name>Ошибка32</name>
<id>47</id>
<title>
<key>ru</key>
<value>Ошибка32</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Ошибка32РасширеннаяПодсказка</name>
<id>49</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>Ошибка32КонтекстноеМеню</name>
<id>48</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Ошибка32</picture>
</picture>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>КраткоеПредставлениеОшибки</name>
<id>44</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>КраткоеПредставлениеОшибки</segments>
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>КраткоеПредставлениеОшибкиРасширеннаяПодсказка</name>
<id>46</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>КраткоеПредставлениеОшибкиКонтекстноеМеню</name>
<id>45</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>
<height>2</height>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Ошибка</value>
</title>
<extendedTooltip>
<name>ОшибкаРасширеннаяПодсказка</name>
<id>43</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>AlwaysHorizontal</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Страницы</value>
</title>
<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>Pages</type>
<extInfo xsi:type="form:PagesGroupExtInfo">
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<commandBarLocation>Bottom</commandBarLocation>
<showCommandBar>true</showCommandBar>
<autoCommandBar>
<name>ФормаКоманднаяПанель</name>
<id>-1</id>
<items xsi:type="form:Button">
<name>Загрузить</name>
<id>28</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<defaultItem>true</defaultItem>
<extendedTooltip>
<name>ЗагрузитьРасширеннаяПодсказка</name>
<id>29</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.Загрузить</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>30</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<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>
<commandName>Form.StandardCommand.Cancel</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<horizontalAlign>Right</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>OnOpen</event>
<name>ПриОткрытии</name>
</handlers>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
</handlers>
<excludedCommands>Help</excludedCommands>
<windowOpeningMode>LockOwner</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoTitle>true</autoTitle>
<autoUrl>true</autoUrl>
<group>Vertical</group>
<autoFillCheck>true</autoFillCheck>
<enabled>true</enabled>
<showTitle>auto</showTitle>
<showCloseButton>true</showCloseButton>
<attributes>
<name>ДоступнаЗагрузкаСПортала</name>
<title>
<key>ru</key>
<value>Доступна загрузка с портала 1С:ИТС</value>
</title>
<id>2</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ДанныеАутентификацииПорталаСохранены</name>
<title>
<key>ru</key>
<value>Данные аутентификации портала сохранены</value>
</title>
<id>3</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>КраткоеПредставлениеОшибки</name>
<title>
<key>ru</key>
<value>Краткое представление ошибки</value>
</title>
<id>4</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ПодключитьИнтернетПоддержку</name>
<title>
<key>ru</key>
<value>Подключить интернет поддержку</value>
</title>
<id>1</id>
<toolTip>
<key>ru</key>
<value>Подключить интернет поддержку</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ПодключитьИнтернетПоддержку</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>Загрузить</name>
<title>
<key>ru</key>
<value>Загрузить</value>
</title>
<id>2</id>
<toolTip>
<key>ru</key>
<value>Загрузить</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>Загрузить</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<parameters>
<name>ТекстПояснения</name>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
</parameters>
<parameters>
<name>Идентификатор</name>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<keyParameter>true</keyParameter>
</parameters>
<parameters>
<name>Версия</name>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<keyParameter>true</keyParameter>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar/>
</commandInterface>
</form:Form>
@@ -0,0 +1,144 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат;
КонецЕсли;
Если Не ПустаяСтрока(Параметры.ТекстПояснения) Тогда
Элементы.ДекорацияПояснение.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1
|
|Компонента не загружена в программу.
|Загрузить?'"),
Параметры.ТекстПояснения);
КонецЕсли;
ДанныеАутентификацииПорталаСохранены = ДанныеАутентификацииПорталаСохранены();
ДоступнаЗагрузкаСПортала = ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаСПортала();
Элементы.ПодключитьИнтернетПоддержку.Видимость = Не ДанныеАутентификацииПорталаСохранены;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Не ДоступнаЗагрузкаСПортала Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПодключитьИнтернетПоддержку(Команда = Неопределено)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей") Тогда
МодульИнтернетПоддержкаПользователейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ИнтернетПоддержкаПользователейКлиент");
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияИнтернетПоддержки", ЭтотОбъект);
МодульИнтернетПоддержкаПользователейКлиент.ПодключитьИнтернетПоддержкуПользователей(Оповещение, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Загрузить(Команда)
Если Не ДанныеАутентификацииПорталаСохранены Тогда
ПодключитьИнтернетПоддержку();
Возврат;
КонецЕсли;
Элементы.Загрузить.Доступность = Ложь;
Элементы.Страницы.ТекущаяСтраница = Элементы.ДлительнаяОперация;
ДлительнаяОперация = НачатьПолучениеКомпонентыСПортала(Параметры.Идентификатор, Параметры.Версия);
Если ДлительнаяОперация = Неопределено Тогда
КраткоеПредставлениеОшибки = НСтр("ru = 'Не удалось создать фоновое задание обновления компоненты.'");
Элементы.Страницы.ТекущаяСтраница = Элементы.Ошибка;
КонецЕсли;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ФормаВладелец = ЭтотОбъект;
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
Оповещение = Новый ОписаниеОповещения("ПослеПолученияКомпонентыСПортала", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ПараметрыОжидания);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ПослеПодключенияИнтернетПоддержки(Результат, Параметр) Экспорт
Если ТипЗнч(Результат) = Тип("Структура") Тогда
Элементы.ПодключитьИнтернетПоддержку.Видимость = Ложь;
ДанныеАутентификацииПорталаСохранены = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДанныеАутентификацииПорталаСохранены()
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей") Тогда
МодульИнтернетПоддержкаПользователей = ОбщегоНазначения.ОбщийМодуль("ИнтернетПоддержкаПользователей");
Возврат МодульИнтернетПоддержкаПользователей.ЗаполненыДанныеАутентификацииПользователяИнтернетПоддержки();
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаСервере
Функция НачатьПолучениеКомпонентыСПортала(Идентификатор, Версия)
Если Не ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаСПортала() Тогда
Возврат Неопределено;
КонецЕсли;
ПараметрыПроцедуры = Новый Структура;
ПараметрыПроцедуры.Вставить("Идентификатор", Идентификатор);
ПараметрыПроцедуры.Вставить("Версия", Версия);
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Получение внешней компоненты.'");
Возврат ДлительныеОперации.ВыполнитьВФоне("ВнешниеКомпонентыСлужебный.НоваяКомпонентаСПортала",
ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
&НаКлиенте
Процедура ПослеПолученияКомпонентыСПортала(Результат, ДополнительныеПараметры) Экспорт
// Ответ:
// - Структура - Выполнено - результат в структуре.
// - Неопределено - Отменено пользователем.
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Ошибка" Тогда
КраткоеПредставлениеОшибки = Результат.КраткоеПредставлениеОшибки;
Элементы.Страницы.ТекущаяСтраница = Элементы.Ошибка;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
Закрыть(Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -136,6 +136,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -146,36 +147,43 @@
<items xsi:type="form:FormGroup">
<name>КоманднаяПанель</name>
<id>36</id>
<items xsi:type="form:Button">
<name>ФормаСоздать</name>
<id>69</id>
<title>
<key>ru</key>
<value>Добавить из файла...</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСоздатьРасширеннаяПодсказка</name>
<id>70</id>
<title>
<key>ru</key>
<value>Добавить из файла на диске...</value>
</title>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.StandardCommand.Create</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаДействие</name>
<id>65</id>
<items xsi:type="form:Button">
<name>ФормаОбновитьССайта</name>
<id>67</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаОбновитьССайтаРасширеннаяПодсказка</name>
<id>68</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ОбновитьССайта</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</items>
<items xsi:type="form:Button">
<name>ФормаОбновитьИзФайла</name>
<id>58</id>
@@ -227,6 +235,33 @@
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</items>
<items xsi:type="form:Button">
<name>ОбновитьСПортала1СИТС</name>
<id>67</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ОбновитьСПортала1СИТСРасширеннаяПодсказка</name>
<id>68</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ОбновитьСПортала1СИТС</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
<enabled>true</enabled>
@@ -368,7 +403,7 @@
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ОбновлятьССайта</name>
<name>ОбновлятьСПортала1СИТС</name>
<id>28</id>
<visible>true</visible>
<enabled>true</enabled>
@@ -376,11 +411,11 @@
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ОбновлятьССайта</segments>
<segments>Список.ОбновлятьСПортала1СИТС</segments>
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>ОбновлятьССайтаРасширеннаяПодсказка</name>
<name>ОбновлятьСПортала1СИТСРасширеннаяПодсказка</name>
<id>30</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -390,7 +425,7 @@
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ОбновлятьССайтаКонтекстноеМеню</name>
<name>ОбновлятьСПортала1СИТСКонтекстноеМеню</name>
<id>29</id>
<autoFill>true</autoFill>
</contextMenu>
@@ -710,7 +745,7 @@
Таблица.Версия КАК Версия,
Таблица.Идентификатор КАК Идентификатор,
Таблица.Использование КАК Использование,
Таблица.ОбновлятьССайта КАК ОбновлятьССайта,
Таблица.ОбновлятьСПортала1СИТС КАК ОбновлятьСПортала1СИТС,
Таблица.ДатаВерсии КАК ДатаВерсии
ИЗ
Справочник.ВнешниеКомпоненты КАК Таблица</queryText>
@@ -743,7 +778,7 @@
<name>ОбновитьИзФайла</name>
<title>
<key>ru</key>
<value>Обновить из файла на диске...</value>
<value>Обновить из файла...</value>
</title>
<id>2</id>
<toolTip>
@@ -761,6 +796,7 @@
<name>ОбновитьИзФайла</name>
</handler>
</action>
<representation>TextPicture</representation>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
@@ -790,24 +826,28 @@
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>ОбновитьССайта</name>
<name>ОбновитьСПортала1СИТС</name>
<title>
<key>ru</key>
<value>Обновить с сайта</value>
<value>Обновить с Портала 1С:ИТС</value>
</title>
<id>1</id>
<toolTip>
<key>ru</key>
<value>Обновить с сайта</value>
<value>Обновить с Портала 1С:ИТС</value>
</toolTip>
<use>
<common>true</common>
</use>
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.ОбновлениеВнешнихКомпонентССайта</picture>
</picture>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ОбновитьССайта</name>
<name>ОбновитьСПортала</name>
</handler>
</action>
<representation>TextPicture</representation>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
@@ -10,10 +10,10 @@
Возврат;
КонецЕсли;
Если Не ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаССайта() Тогда
Если Не ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаСПортала() Тогда
Элементы.ОбновлятьССайта.Видимость = Ложь;
Элементы.ФормаОбновитьССайта.Видимость = Ложь;
Элементы.ОбновлятьСПортала1СИТС.Видимость = Ложь;
Элементы.ОбновитьСПортала1СИТС.Видимость = Ложь;
КонецЕсли;
@@ -55,9 +55,17 @@
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОбновитьССайта(Команда)
Процедура ОбновитьСПортала(Команда)
ОбновитьКомпонентыССайта();
МассивСсылок = Элементы.Список.ВыделенныеСтроки;
Если МассивСсылок.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеОбновленияКомпонентыСПортала", ЭтотОбъект);
ВнешниеКомпонентыСлужебныйКлиент.ОбновитьКомпонентыСПортала(Оповещение, МассивСсылок);
КонецПроцедуры
@@ -72,6 +80,7 @@
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", ДанныеСтроки.Ссылка);
ПараметрыФормы.Вставить("ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии", Истина);
ОткрытьФорму("Справочник.ВнешниеКомпоненты.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры
@@ -92,90 +101,13 @@
#Область СлужебныеПроцедурыИФункции
// Выполняет обновление компонент с сайта
&НаКлиенте
Процедура ОбновитьКомпонентыССайта()
Процедура ПослеОбновленияКомпонентыСПортала(Результат, ДополнительныеПараметры) Экспорт
МассивСсылок = Элементы.Список.ВыделенныеСтроки;
Если МассивСсылок.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ДлительнаяОперация = НачатьОбновлениеКомпонентССайтаНаСервере(МассивСсылок);
Если ДлительнаяОперация = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ТекстСообщения = НСтр("ru = 'Выполняется обновление внешних компонент...'");
ПараметрыОжидания.ВыводитьОкноОжидания = Истина;
ПараметрыОжидания.ВыводитьСообщения = Истина;
Оповещение = Новый ОписаниеОповещения("ОбновитьКомпонентыССайтаЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ПараметрыОжидания);
Элементы.Список.Обновить();
КонецПроцедуры
// Продолжение процедуры ОбновитьКомпонентыССайта
&НаКлиенте
Процедура ОбновитьКомпонентыССайтаЗавершение(Результат, ДополнительныеПараметры) Экспорт
// Ответ:
// - Структура - Выполнено - результат в структуре.
// - Неопределено - Отменено пользователем.
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Сообщения <> Неопределено Тогда
Для каждого СообщениеПользователю Из Результат.Сообщения Цикл
ПоказатьОповещениеПользователя(НСтр("ru = 'Обновление с сайта'"),,
СообщениеПользователю.Текст, БиблиотекаКартинок.Информация32);
КонецЦикла;
КонецЕсли;
Если Результат.Статус = "Ошибка" Тогда
ТекстОшибки = НСтр("ru = 'Ошибка при обновлении с сайта: %1.'");
ПоказатьОповещениеПользователя(НСтр("ru = 'Обновление с сайта'"),,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки,
Результат.КраткоеПредставлениеОшибки),
БиблиотекаКартинок.Ошибка32);
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
Элементы.Список.Обновить();
ПоказатьОповещениеПользователя(НСтр("ru = 'Обновление с сайта'"),,
НСтр("ru = 'Обновление с сайта завершено.'"), БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
/////////////////////////////////////////////////////////
// Серверная логика модели представления.
// Серверная логика обновления компоненты с сайта.
&НаСервере
Функция НачатьОбновлениеКомпонентССайтаНаСервере(МассивСсылок)
Если Не ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаССайта() Тогда
Возврат Неопределено;
КонецЕсли;
Если МассивСсылок.Количество() = 0 Тогда
Возврат Неопределено;
КонецЕсли;
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Обновление внешней компоненты.'");
Возврат ДлительныеОперации.ВыполнитьВФоне("ВнешниеКомпонентыСлужебный.ОбновитьКомпонентыССайта",
МассивСсылок, ПараметрыВыполнения);
КонецФункции
/////////////////////////////////////////////////////////
// Представление данных на форме.
@@ -1,9 +1,21 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Информация о внешней компоненте.</p>
<p>Открывается из списка <a href="Catalog.ВнешниеКомпоненты/Help">Внешние компоненты</a> по кнопке <strong>Создать</strong> или двойному щелчку мыши (также по команде <strong>Еще - Изменить</strong>).</p>
<p>Открывается из списка <a href="Catalog.ВнешниеКомпоненты/Help">Внешние компоненты</a> по кнопке <strong>Добавить из файла</strong> или двойному щелчку мыши (также по команде <strong>Еще - Изменить</strong>).</p>
<p>Разработчик размещает в файле внешней компоненты необходимую информацию для ее установки, поэтому основные поля в карточке внешней компоненты заполняются автоматически. Поля являются обязательными для заполнения:</p>
<ul><li><strong>Идентификатор</strong> - внутренний идентификатор объекта внешней компоненты;
</li><li><strong>Наименование</strong> - полное наименование внешней компоненты - выводится пользователям при установке внешней компоненты;
</li><li><strong>Версия</strong> - номер версии, с его помощью впоследствии можно определить актуальность внешней компоненты.</li></ul><p>Если после автоматического заполнения остались незаполненными поля, которые являются обязательными для заполнения, карточка не запишется. В этом случае необходимо заполнить их вручную.</p>
<h3>См. также:</h3>
</li><li><strong>Версия</strong> - номер версии, с его помощью впоследствии можно определить актуальность внешней компоненты;
</li><li><strong>Наименование</strong> - полное наименование внешней компоненты - выводится пользователям при установке внешней компоненты.
</li><li><strong>Обновлять с портала 1С:ИТС</strong> - включите флажок, для того чтобы внешняя компонента автоматически обновлялась с сайта 1С:ИТС.</li></ul><p>Если после автоматического заполнения остались незаполненными поля, которые являются обязательными для заполнения, карточка не запишется. В этом случае необходимо заполнить их вручную.</p>
<h3>Состояние внешней компоненты</h3>
<p>С помощью тумблера можно установить состояние внешней компоненты:</p>
<ul><li><strong>Используется</strong> - устанавливается по умолчанию при подключении внешней компоненты;
</li><li><strong>Отключена</strong> - если использование внешней компоненты в данный момент по каким-либо причинам не нужно (например, сначала ее необходимо протестировать, когда в программе не будет пользователей), можно не удалять ее, а выбрать это положение тумблера. В этом случае внешняя компоненты останется в программе, но не будет никому доступна.</li></ul><h3>Обновление внешней компоненты с портала 1С:ИТС</h3>
<ul><li>
<div>Нажмите кнопку <img src="CommonPicture.ОбновлениеВнешнихКомпонентССайта"></img>, для того чтобы обновить внешнюю компоненту с портала 1С:ИТС. Доступно для внешних компонент, полученных на портале 1С:ИТС.</div></li></ul><h3>Обновление внешней компоненты</h3>
<ul><li>Нажмите кнопку <img src="CommonPicture.ОбновитьФайлИзФайлаНаДиске"></img> <strong>Обновить из файла</strong>. Программа выводит <strong>Предупреждение безопасности</strong>.
</li><li>Если внешняя компонента получена из надежного источника и не может содержать вирусы, нажмите кнопку <strong>Продолжить</strong>.
</li><li>Укажите путь к файлу на компьютере, нажмите кнопку <strong>Открыть</strong>.
</li><li>Информация в карточке внешней компоненты будет обновлена.</li></ul><h3>Сохранение на компьютер</h3>
<ul><li>Сохраненную на компьютер внешнюю компоненту можно будет использовать в случае нештатных ситуаций.
</li><li>Нажмите <img src="CommonPicture.СохранитьФайлКак"></img> <strong>Сохранить как</strong>.  Укажите путь к файлу на компьютере. Нажмите <strong>Сохранить</strong>.</li></ul><h3>См. также:</h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -1,4 +1,11 @@
#Область ОписаниеПеременных
&НаКлиенте
Перем ДополнительнаяИнформация;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
@@ -16,10 +23,10 @@
УстановитьВидимостьДоступность();
Если Не ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаССайта() Тогда
Если Не ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаСПортала() Тогда
Элементы.ОбновлятьССайта.Видимость = Ложь;
Элементы.ФормаОбновитьССайта.Видимость = Ложь;
Элементы.ОбновлятьСПортала1СИТС.Видимость = Ложь;
Элементы.ОбновитьСПортала1СИТС.Видимость = Ложь;
КонецЕсли;
@@ -40,9 +47,9 @@
// Если вызвана команда "Перечитать" необходимо удалить буфер данных компоненты
Если ЭтоАдресВременногоХранилища(АдресДвоичныхДанныхКомпоненты) Тогда
УдалитьИзВременногоХранилища(АдресДвоичныхДанныхКомпоненты);
АдресДвоичныхДанныхКомпоненты = Неопределено;
КонецЕсли;
АдресДвоичныхДанныхКомпоненты = Неопределено;
УстановитьВидимостьДоступность();
КонецПроцедуры
@@ -58,22 +65,39 @@
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Записана = Истина; // Факт записи свидетельствует положительный результат при закрытии отдельно от записи.
Параметры.ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии = Ложь; // Избежание закрытия формы при ошибке.
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Если Не ПараметрыЗаписи.Свойство("ЗаписатьИЗакрыть") Тогда
УстановитьВидимостьДоступность();
КонецЕсли;
УстановитьВидимостьДоступность();
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ПараметрыЗаписи.Свойство("ЗаписатьИЗакрыть") Тогда
ЗакрытьСПараметромЗакрытия();
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
ПараметрЗакрытия = ВнешниеКомпонентыСлужебныйКлиент.РезультатЗагрузкиКомпоненты();
ПараметрЗакрытия.Загружена = Записана;
ПараметрЗакрытия.Идентификатор = Объект.Идентификатор;
ПараметрЗакрытия.Версия = Объект.Версия;
ПараметрЗакрытия.Наименование = Объект.Наименование;
ПараметрЗакрытия.ДополнительнаяИнформация = ДополнительнаяИнформация;
Закрыть(ПараметрЗакрытия);
КонецПроцедуры
#КонецОбласти
@@ -87,23 +111,28 @@
КонецПроцедуры
&НаКлиенте
Процедура ОбновлятьСПортала1СИТСПриИзменении(Элемент)
УстановитьВидимостьДоступность();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
Процедура ОбновитьСПортала(Команда)
ОчиститьСообщения();
Записать(Новый Структура("ЗаписатьИЗакрыть"));
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьССайта(Команда)
ОчиститьСообщения();
ОбновитьКомпонентуССайта();
Если Модифицированность Тогда
Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопросаЗаписатьОбъект", ЭтотОбъект);
ПоказатьВопрос(Оповещение,
НСтр("ru = 'Для проверки обновления необходимо записать объект. Записать?'"),
РежимДиалогаВопрос.ДаНет);
Иначе
НачатьОбновлениеКомпонентыСПортала();
КонецЕсли;
КонецПроцедуры
@@ -127,10 +156,39 @@
КонецПроцедуры
&НаКлиенте
Процедура ПоддерживаемыеКлиентскиеПриложения(Команда)
Реквизиты = Новый Структура;
Реквизиты.Вставить("Windows_x86");
Реквизиты.Вставить("Windows_x86_64");
Реквизиты.Вставить("Linux_x86");
Реквизиты.Вставить("Linux_x86_64");
Реквизиты.Вставить("Windows_x86_Firefox");
Реквизиты.Вставить("Linux_x86_Firefox");
Реквизиты.Вставить("Linux_x86_64_Firefox");
Реквизиты.Вставить("Windows_x86_MSIE");
Реквизиты.Вставить("Windows_x86_64_MSIE");
Реквизиты.Вставить("Windows_x86_Chrome");
Реквизиты.Вставить("Linux_x86_Chrome");
Реквизиты.Вставить("Linux_x86_64_Chrome");
Реквизиты.Вставить("MacOS_x86_64_Safari");
ЗаполнитьЗначенияСвойств(Реквизиты, Объект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ПоддерживаемыеКлиенты", Реквизиты);
ОткрытьФорму("ОбщаяФорма.ПоддерживаемыеКлиентскиеПриложения", ПараметрыФормы);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область КлиентскаяЛогика
// Строит диалог загрузки компоненты из файла.
&НаКлиенте
Процедура ЗагрузитьКомпонентуИзФайла()
@@ -150,19 +208,19 @@
// - КодВозвратаДиалога.Отмена - Отклонить.
// - Неопределено - Закрыто окно.
Если Ответ <> "Продолжить" Тогда
ЗагрузитьКомпонентуЗавершение(Контекст);
ЗагрузитьКомпонентуПриОтображенииОшибки();
Возврат;
КонецЕсли;
ПараметрыДиалога = Новый Структура;
ПараметрыДиалога.Вставить("Режим", РежимДиалогаВыбораФайла.Открытие);
ПараметрыДиалога.Вставить("Заголовок", НСтр("ru = 'Выберите файл внешней компоненты'"));
ПараметрыДиалога.Вставить("Фильтр", НСтр("ru = 'Внешняя компонента (*.zip)|*.zip|Все файлы(*.*)|*.*'"));
Оповещение = Новый ОписаниеОповещения("ЗагрузитьКомпонентуПослеПомещенияФайла", ЭтотОбъект, Контекст);
СтандартныеПодсистемыКлиент.ПоказатьПомещениеФайла(Оповещение,
УникальныйИдентификатор, Объект.ИмяФайла, ПараметрыДиалога);
КонецПроцедуры
// Продолжение процедуры ЗагрузитьКомпонентуИзФайла.
@@ -170,7 +228,7 @@
Процедура ЗагрузитьКомпонентуПослеПомещенияФайла(ПомещенныеФайлы, Контекст) Экспорт
Если ПомещенныеФайлы = Неопределено Или ПомещенныеФайлы.Количество() = 0 Тогда
ЗагрузитьКомпонентуЗавершение(Контекст);
ЗагрузитьКомпонентуПриОтображенииОшибки(НСтр("ru = 'Файл не удалось загрузить на сервер.'"));
Возврат;
КонецЕсли;
@@ -181,177 +239,177 @@
ПараметрыЗагрузки.Вставить("ИмяФайла", ТолькоИмяФайла(ОписаниеФайла.Имя));
Результат = ЗагрузитьКомпонентуИзФайлаНаСервере(ПараметрыЗагрузки);
Если Не Результат.Загружено
Или Не ЭтоАдресВременногоХранилища(АдресДвоичныхДанныхКомпоненты)Тогда
// Ошибка при загрузке.
Оповещение = Новый ОписаниеОповещения("ЗагрузитьКомпонентуПослеОтображенияОшибки", ЭтотОбъект, Контекст);
СтрокаСПредупреждением = Новый ФорматированнаяСтрока(
Результат.ОписаниеОшибки, Символы.ПС,
НСтр("ru = 'Необходимо указать zip-архив с внешней компонентой.
|Подробнее:'"),
Новый ФорматированнаяСтрока("http://its.1c.ru/db/metodtorg/content/3221/hdoc",,,, "http://its.1c.ru/db/metodtorg/content/3221/hdoc"), ".");
ПоказатьПредупреждение(Оповещение, СтрокаСПредупреждением);
Иначе
// Успешно загружена.
Если ПроверитьЗаполнение() Тогда
ЗагрузитьКомпонентуЗавершение(Контекст);
КонецЕсли;
Если Результат.Загружена И ЭтоАдресВременногоХранилища(АдресДвоичныхДанныхКомпоненты)Тогда
ДополнительнаяИнформация = Результат.ДополнительнаяИнформация;
Иначе
ЗагрузитьКомпонентуПриОтображенииОшибки(Результат.ОписаниеОшибки);
КонецЕсли;
КонецПроцедуры
// Продолжение процедуры ЗагрузитьКомпонентуИзФайла.
&НаКлиенте
Процедура ЗагрузитьКомпонентуПослеОтображенияОшибки(Контекст) Экспорт
Процедура ЗагрузитьКомпонентуПриОтображенииОшибки(ОписаниеОшибки = "")
ЗагрузитьКомпонентуЗавершение(Контекст);
Если ПустаяСтрока(ОписаниеОшибки) Тогда
ЗагрузитьКомпонентуПослеОтображенияОшибки(Неопределено);
Иначе
Оповещение = Новый ОписаниеОповещения("ЗагрузитьКомпонентуПослеОтображенияОшибки", ЭтотОбъект);
СтрокаСПредупреждением = Новый ФорматированнаяСтрока(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1
|Необходимо указать zip-архив с внешней компонентой.
|Подробнее:'"),
ОписаниеОшибки),
Новый ФорматированнаяСтрока("http://its.1c.ru/db/metodtorg/content/3221/hdoc",,,,
"http://its.1c.ru/db/metodtorg/content/3221/hdoc"), ".");
ПоказатьПредупреждение(Оповещение, СтрокаСПредупреждением);
КонецЕсли;
КонецПроцедуры
// Продолжение процедуры ЗагрузитьКомпонентуИзФайла.
&НаКлиенте
Процедура ЗагрузитьКомпонентуЗавершение(Контекст)
Процедура ЗагрузитьКомпонентуПослеОтображенияОшибки(ДополнительныеПараметры) Экспорт
Если Параметры.ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии И Открыта() Тогда
// Открыта через программный интерфейс.
Если Параметры.ПоказатьДиалогЗагрузкиИзФайлаПриОткрытии Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
// Выполняет обновление компоненты с сайта.
&НаКлиенте
Процедура ОбновитьКомпонентуССайта()
Процедура ПослеЗакрытияВопросаЗаписатьОбъект(РезультатВопроса, Контекст) Экспорт
ДлительнаяОперация = НачатьОбновлениеКомпонентыССайтаНаСервере();
Если ДлительнаяОперация = Неопределено Тогда
Возврат;
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
Записать();
НачатьОбновлениеКомпонентыСПортала();
КонецЕсли;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ТекстСообщения = НСтр("ru = 'Выполняется обновление внешней компоненты...'");
ПараметрыОжидания.ВыводитьОкноОжидания = Истина;
Оповещение = Новый ОписаниеОповещения("ОбновитьКомпонентуССайтаЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ПараметрыОжидания);
КонецПроцедуры
// Продолжение процедуры ОбновитьКомпонентуССайта.
&НаКлиенте
Процедура ОбновитьКомпонентуССайтаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Процедура НачатьОбновлениеКомпонентыСПортала()
// Ответ:
// - Структура - Выполнено - результат в структуре.
// - Неопределено - Отменено пользователем.
Если Результат = Неопределено Тогда
ЭтоНовый = Объект.Ссылка.Пустая();
Если ЭтоНовый Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Ошибка" Тогда
ПоказатьПредупреждение(, Результат.КраткоеПредставлениеОшибки);
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
ЗавершитьОбновлениеКомпонентыССайтаНаСервере(Результат);
ПоказатьОповещениеПользователя(НСтр("ru = 'Обновление с сайта'"),,
НСтр("ru = 'Внешняя компонента успешно обновлена.'"), БиблиотекаКартинок.Успешно32);
КонецЕсли;
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(Объект.Ссылка);
Оповещение = Новый ОписаниеОповещения("ПослеОбновленияКомпонентыСПортала", ЭтотОбъект);
ВнешниеКомпонентыСлужебныйКлиент.ОбновитьКомпонентыСПортала(Оповещение, МассивСсылок);
КонецПроцедуры
/////////////////////////////////////////////////////////
// Серверная логика модели представления.
&НаКлиенте
Процедура ПослеОбновленияКомпонентыСПортала(Результат, ДополнительныеПараметры) Экспорт
ОбновитьКарточкуПослеОбновленияКомпонентыСПортала();
КонецПроцедуры
#КонецОбласти
#Область СервернаяЛогика
// Серверная логика процедуры ЗагрузитьКомпонентуИзФайла.
&НаСервере
Функция ЗагрузитьКомпонентуИзФайлаНаСервере(ПараметрыЗагрузки)
Если Не Пользователи.ЭтоПолноправныйПользователь(,, Ложь) Тогда
ВызватьИсключение НСтр("ru = 'Не достаточно прав для совершения операции.'");
ВызватьИсключение НСтр("ru = 'Недостаточно прав для совершения операции.'");
КонецЕсли;
ОбъектСправочника = РеквизитФормыВЗначение("Объект");
Информация = ВнешниеКомпонентыСлужебный.ИнформацияОКомпоненте(ПараметрыЗагрузки.АдресХранилищаФайла);
Информация = ВнешниеКомпонентыСлужебный.ИнформацияОКомпонентеИзФайла(ПараметрыЗагрузки.АдресХранилищаФайла,,
Параметры.ПараметрыПоискаДополнительнойИнформации);
Результат = РезультатЗагрузкиКомпоненты();
Если Не Информация.Разобрано Тогда
Возврат Новый Структура("Загружено, ОписаниеОшибки", Ложь, Информация.ОписаниеОшибки);
Результат.ОписаниеОшибки = Информация.ОписаниеОшибки;
Возврат Результат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ОбъектСправочника, Информация.Реквизиты); // По данным манифеста.
Если ЗначениеЗаполнено(ОбъектСправочника.Идентификатор)
И ЗначениеЗаполнено(Информация.Реквизиты.Идентификатор) Тогда
Если ОбъектСправочника.Идентификатор <> Информация.Реквизиты.Идентификатор Тогда
Результат.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Текущий идентификатор %1 отличается от загружаемого %2
|Обновление невозможно.'"),
ОбъектСправочника.Идентификатор,
Информация.Реквизиты.Идентификатор);
Возврат Результат;
КонецЕсли;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ОбъектСправочника, Информация.Реквизиты,, "Идентификатор"); // По данным манифеста.
Если Не ЗначениеЗаполнено(ОбъектСправочника.Идентификатор) Тогда
ОбъектСправочника.Идентификатор = Информация.Реквизиты.Идентификатор;
КонецЕсли;
ОбъектСправочника.ИмяФайла = ПараметрыЗагрузки.ИмяФайла; // Установка имени файла.
АдресДвоичныхДанныхКомпоненты = ПоместитьВоВременноеХранилище(Информация.ДвоичныеДанные,
УникальныйИдентификатор);
ОбъектСправочника.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Загружена из файла %1. %2.'"),
ОбъектСправочника.ИмяФайла,
ТекущаяДатаСеанса());
ЗначениеВРеквизитФормы(ОбъектСправочника, "Объект");
Модифицированность = Истина;
УстановитьВидимостьДоступность();
Возврат Новый Структура("Загружено", Истина);
Результат.Загружена = Истина;
Результат.ДополнительнаяИнформация = Информация.ДополнительнаяИнформация;
Возврат Результат;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция РезультатЗагрузкиКомпоненты()
Результат = Новый Структура;
Результат.Вставить("Загружена", Ложь);
Результат.Вставить("ОписаниеОшибки", "");
Результат.Вставить("ДополнительнаяИнформация", Новый Соответствие);
Возврат Результат;
КонецФункции
// Серверная логика обновления компоненты с сайта.
&НаСервере
Функция НачатьОбновлениеКомпонентыССайтаНаСервере()
Процедура ОбновитьКарточкуПослеОбновленияКомпонентыСПортала()
Если Не ВнешниеКомпонентыСлужебный.ДоступнаЗагрузкаССайта() Тогда
Возврат Неопределено;
КонецЕсли;
ЭтоНовый = Объект.Ссылка.Пустая();
Если ЭтоНовый Тогда
Возврат Неопределено;
КонецЕсли;
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(Объект.Ссылка);
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Обновление внешней компоненты.'");
Возврат ДлительныеОперации.ВыполнитьВФоне("ВнешниеКомпонентыСлужебный.ОбновитьКомпонентыССайта",
МассивСсылок, ПараметрыВыполнения);
КонецФункции
// Серверная логика обновления компоненты с сайта.
&НаСервере
Процедура ЗавершитьОбновлениеКомпонентыССайтаНаСервере(Результат)
// Обновление формы по новому значению объекта в ИБ.
ЭтотОбъект.Прочитать();
Модифицированность = Ложь;
УстановитьВидимостьДоступность();
КонецПроцедуры
/////////////////////////////////////////////////////////
// Представление данных на форме.
#КонецОбласти
#Область Представление
// Для внутреннего использования.
&НаСервере
Процедура УстановитьВидимостьДоступность()
СправочникОбъект = РеквизитФормыВЗначение("Объект");
ЭтоНовый = Объект.Ссылка.Пустая();
// Отображение описания ошибки.
Элементы.ОшибкаКомпоненты.Видимость = Ложь;
// Зависимость использования и автоматического обновления.
КомпонентаОтключена = (Объект.Использование = Перечисления.ВариантыИспользованияВнешнихКомпонент.Отключена);
Элементы.ОбновлятьССайта.Доступность = Не КомпонентаОтключена;
Элементы.Информация.Видимость = Не ЭтоНовый И ЗначениеЗаполнено(Объект.ОписаниеОшибки);
// Параметры отображения предупреждений при редактировании
ОтображатьПредупреждение = ОтображениеПредупрежденияПриРедактировании.Отображать;
@@ -374,33 +432,20 @@
// Доступность кнопки Сохранить в файл
Элементы.ФормаСохранитьКак.Доступность = Не ЭтоНовый;
Элементы.ФормаОбновитьССайта.Доступность = Не ЭтоНовый;
Элементы.ОбновитьСПортала1СИТС.Доступность = Не ЭтоНовый;
// Зависимость использования и автоматического обновления.
КомпонентаОтключена = (Объект.Использование = Перечисления.ВариантыИспользованияВнешнихКомпонент.Отключена);
Элементы.ОбновлятьСПортала1СИТС.Доступность = Не КомпонентаОтключена И СправочникОбъект.ЭтоКомпонентаПоследнейВерсии();
Элементы.ОбновитьСПортала1СИТС.Доступность = Объект.ОбновлятьСПортала1СИТС;
КонецПроцедуры
/////////////////////////////////////////////////////////
// Прочее.
#КонецОбласти
// Для внутреннего использования.
&НаКлиенте
Процедура ЗакрытьСПараметромЗакрытия()
ПараметрЗакрытия = Неопределено;
Если Параметры.ВернутьРезультатЗагрузкиИзФайла Тогда
ПараметрЗакрытия = Новый Структура;
ПараметрЗакрытия.Вставить("Идентификатор", Объект.Идентификатор);
ПараметрЗакрытия.Вставить("Версия" , Объект.Версия);
ПараметрЗакрытия.Вставить("Наименование" , Объект.Наименование);
КонецЕсли;
Закрыть(ПараметрЗакрытия);
КонецПроцедуры
#Область Прочее
// Для внутреннего использования.
&НаКлиенте
Функция ТолькоИмяФайла(ВыбранноеИмяФайла)
@@ -410,4 +455,6 @@
КонецФункции
#КонецОбласти
#КонецОбласти
@@ -6,18 +6,23 @@
</li><li>Работа с буфером обмена, сканирование и т.п.;
</li><li>Печать штрихкодов, извлечение текстов, компонента склонения и т.д.</li></ul><p>Внешние компоненты можно подключить к программе из файла на компьютере. При необходимости, одновременно могут быть подключены сразу несколько версий одной внешней компоненты. Например, это полезно, когда на разных клиентских компьютерах используются разные драйверы или оборудование.</p>
<p>Программа предоставляет администратору возможность контролировать список внешних компонент, используемых на клиентских рабочих местах. Без контроля администратора пользователи не могут подключать к программе какие-либо сторонние внешние компоненты.</p>
<p>В списке отражаются все установленные в программе внешние компоненты.</p>
<p>В списке отражаются все установленные в программе внешние компоненты. В колонке <img src="CommonPicture.ОбновлениеВнешнихКомпонентССайта" width="16" height="16"></img> флажками обозначаются внешние компоненты, которые обновляются с сайта 1С:ИТС.</p>
<h3>Подключение внешней компоненты</h3>
<ul><li>Нажмите <strong>Создать</strong>.
<ul><li>Нажмите <strong>Добавить из файла</strong>.
</li><li>Программа выводит <strong>Предупреждение безопасности</strong>. Если внешняя компонента получена из надежного источника и не может содержать вирусы, нажмите <strong>Продолжить</strong>.
</li><li>Укажите путь к файлу на компьютере, нажмите <strong>Открыть</strong>.
</li><li>Разработчик размещает в файле внешней компоненты необходимую информацию для ее установки, поэтому основные поля в <a href="Catalog.ВнешниеКомпоненты.Form.ФормаЭлемента/Help">карточке внешней компоненты</a> заполняются автоматически.</li></ul><h3>Обновление внешней компоненты</h3>
<ul><li>Нажмите кнопку <img src="CommonPicture.ОбновитьФайлИзФайлаНаДиске"></img>. Программа выводит <strong>Предупреждение безопасности</strong>.
</li><li>Разработчик размещает в файле внешней компоненты необходимую информацию для ее установки, поэтому основные поля в <a href="Catalog.ВнешниеКомпоненты.Form.ФормаЭлемента/Help">карточке внешней компоненты</a> заполняются автоматически.</li></ul><h3>Обновление внешней компоненты с портала 1С:ИТС</h3>
<ul><li>
<div>С помощью кнопки <img src="CommonPicture.ОбновлениеВнешнихКомпонентССайта"></img> можно обновить внешнюю компоненту с сайта 1С:ИТС. </div>
</li><li>
<div>Доступно для внешних компонент, которые были получены на портале 1С:ИТС. Для обновления нужно зарегистрироваться на портале 1С:ИТС.</div></li></ul><h3>Обновление внешней компоненты из файла</h3>
<ul><li>Нажмите кнопку <strong>Обновить из файла</strong>. Программа выводит <strong>Предупреждение безопасности</strong>.
</li><li>Если внешняя компонента получена из надежного источника и не может содержать вирусы, нажмите кнопку <strong>Продолжить</strong>.
</li><li>Укажите путь к файлу на компьютере, нажмите кнопку <strong>Открыть</strong>.
</li><li>Информация в карточке внешней компоненты будет обновлена.</li></ul><h3>Сохранение внешних компонент на компьютер</h3>
<ul><li>Сохраненную на компьютер внешнюю компоненту можно будет использовать в случае нештатных ситуаций.
</li><li>Нажмите кнопку <img src="CommonPicture.СохранитьФайлКак"></img>. Укажите путь к файлу на компьютере. Нажмите <strong>Сохранить</strong>.</li></ul><h3>Отборы в списке</h3>
</li><li>Выполните команду <strong>Сохранить как</strong> контекстного меню по правой кнопке мыши или меню <strong>Еще</strong>.  
</li><li>Укажите путь к файлу на компьютере. Нажмите <strong>Сохранить</strong>.</li></ul><h3>Отборы в списке</h3>
<p>С помощью поля <strong>Показывать</strong> в списке можно отобрать внешние компоненты по следующим признакам:</p>
<ul><li><strong>Все</strong>;
</li><li><strong>Используемые</strong>;
@@ -24,4 +24,75 @@
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Возвращает ссылку на справочник внешней компоненты по идентификатору и версии.
//
// Параметры:
// Идентификатор - Строка - идентификатор объекта внешнего компонента.
// Версия - Строка - (необязательный) версия компоненты.
//
// Возвращаемое значение:
// СправочникСсылка.ВнешниеКомпоненты - ссылка на контейнер внешней компоненты в информационной базе.
//
Функция НайтиПоИдентификатору(Идентификатор, Версия = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
Если Не ЗначениеЗаполнено(Версия) Тогда
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ВнешниеКомпоненты.Идентификатор КАК Идентификатор,
| ВнешниеКомпоненты.ДатаВерсии КАК ДатаВерсии,
| ВЫБОР
| КОГДА ВнешниеКомпоненты.Использование = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияВнешнихКомпонент.Используется)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК Использование,
| ВнешниеКомпоненты.Ссылка КАК Ссылка
|ИЗ
| Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты
|ГДЕ
| ВнешниеКомпоненты.Идентификатор = &Идентификатор
|
|УПОРЯДОЧИТЬ ПО
| Использование УБЫВ,
| ДатаВерсии УБЫВ";
Иначе
Запрос.УстановитьПараметр("Версия", Версия);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ВнешниеКомпоненты.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ВнешниеКомпоненты.Использование = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияВнешнихКомпонент.Используется)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК Использование
|ИЗ
| Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты
|ГДЕ
| ВнешниеКомпоненты.Идентификатор = &Идентификатор
| И ВнешниеКомпоненты.Версия = &Версия
|
|УПОРЯДОЧИТЬ ПО
| Использование УБЫВ";
КонецЕсли;
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат ПустаяСсылка();
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Результат.Выгрузить()[0].Ссылка;
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -2,121 +2,12 @@
#Область ОбработчикиСобытий
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
// Если внешняя компонента используется, то необходим контроль уникальности идентификатора и версии объекта.
Если Использование = Перечисления.ВариантыИспользованияВнешнихКомпонент.Используется Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
Запрос.УстановитьПараметр("Версия", Версия);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты
|ГДЕ
| ВнешниеКомпоненты.Идентификатор = &Идентификатор
| И ВнешниеКомпоненты.Версия = &Версия
| И ВнешниеКомпоненты.Использование = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияВнешнихКомпонент.Используется)
| И ВнешниеКомпоненты.Ссылка <> &Ссылка";
Конфликтующие = Запрос.Выполнить();
Если Не Конфликтующие.Пустой() Тогда
Отказ = Истина;
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Идентификатор ""%1"" и версия ""%2"", указанные для данной компоненты,
|уже используются другой компонентой.
|Для продолжения необходимо изменить использование с ""%3"" на ""%4"".'"),
Идентификатор,
Версия,
Строка(Перечисления.ВариантыИспользованияВнешнихКомпонент.Используется),
Строка(Перечисления.ВариантыИспользованияВнешнихКомпонент.Отключена));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, , "Объект.Использование");
КонецЕсли;
КонецЕсли;
Если ОбновлятьССайта Тогда
// ОбновлятьССайта может быть установлен только у компоненты максимальной версии.
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
Запрос.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(ВнешниеКомпоненты.ДатаВерсии) КАК ДатаВерсии
|ИЗ
| Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты
|ГДЕ
| ВнешниеКомпоненты.Идентификатор = &Идентификатор";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Выборка.Следующий();
ЭтоМаксимальнаяВерсия = (Выборка.ДатаВерсии = Null) Или (Выборка.ДатаВерсии = ДатаВерсии);
Если Не ЭтоМаксимальнаяВерсия Тогда
Отказ = Истина;
ТекстОшибки = НСтр("ru = 'Автоматическое обновление может быть включено только для компоненты
|последней версии.
|
|Для продолжения необходимо отключить обновление с сайта.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, , "Объект.ОбновлятьССайта");
КонецЕсли;
// Не должно быть несколько объектов (в т.ч. разной версии, в т.ч. отключенных) с одним идентификатором
// у которых одновременно включен ОбновлятьССайта.
Если Не Отказ Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты
|ГДЕ
| ВнешниеКомпоненты.Идентификатор = &Идентификатор
| И ВнешниеКомпоненты.ОбновлятьССайта
| И ВнешниеКомпоненты.Ссылка <> &Ссылка";
Конфликтующие = Запрос.Выполнить();
Если Не Конфликтующие.Пустой() Тогда
Отказ = Истина;
ТекстОшибки = НСтр("ru = 'Автоматическое обновление уже включено для другой версии компоненты.
|
|Для продолжения необходимо отключить обновление с сайта.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, , "Объект.ОбновлятьССайта");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Связь реквизитов с пометкой удаления.
Если ПометкаУдаления Тогда
Использование = Перечисления.ВариантыИспользованияВнешнихКомпонент.Отключена;
@@ -124,7 +15,20 @@
// Связь реквизитов с вариантом использования.
Если Использование = Перечисления.ВариантыИспользованияВнешнихКомпонент.Отключена Тогда
ОбновлятьССайта = Ложь;
ОбновлятьСПортала1СИТС = Ложь;
КонецЕсли;
// Не должно быть несколько компонент с одним идентификатором, с одновременно включенными ОбновлятьСПортала1СИТС.
Если Не ЭтоКомпонентаПоследнейВерсии() Тогда
ОбновлятьСПортала1СИТС = Ложь;
КонецЕсли;
// Контроль уникальности идентификатора и версии компоненты.
Если Не ЭтоУникальнаяКомпонента() Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Внешняя компонента со значениями Идентификатор ""%1"" и версия ""%2"" уже загружена в программу.'"),
Идентификатор,
Версия);
КонецЕсли;
// Помещение двоичных данных компоненты
@@ -135,6 +39,89 @@
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Если была загружается компонента новой версии, а у одной из старых есть признак ОбновлятьСПортала1СИТС
// то при перезаписи компонент младших версий признак будет сброшен.
Если ЭтоКомпонентаПоследнейВерсии() Тогда
ПерезаписатьКомпонентыМладшихВерсий();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ЭтоКомпонентаПоследнейВерсии() Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
Запрос.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(ВнешниеКомпоненты.ДатаВерсии) КАК ДатаВерсии
|ИЗ
| Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты
|ГДЕ
| ВнешниеКомпоненты.Идентификатор = &Идентификатор";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат (Выборка.ДатаВерсии = Null) Или (Выборка.ДатаВерсии <= ДатаВерсии)
КонецФункции
Функция ЭтоУникальнаяКомпонента()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
Запрос.УстановитьПараметр("Версия", Версия);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты
|ГДЕ
| ВнешниеКомпоненты.Идентификатор = &Идентификатор
| И ВнешниеКомпоненты.Версия = &Версия
| И ВнешниеКомпоненты.Использование = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияВнешнихКомпонент.Используется)
| И ВнешниеКомпоненты.Ссылка <> &Ссылка";
Результат = Запрос.Выполнить();
Возврат Результат.Пустой();
КонецФункции
Процедура ПерезаписатьКомпонентыМладшихВерсий()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ВнешниеКомпоненты.Ссылка КАК Ссылка
|ИЗ
| Справочник.ВнешниеКомпоненты КАК ВнешниеКомпоненты
|ГДЕ
| ВнешниеКомпоненты.Идентификатор = &Идентификатор
| И ВнешниеКомпоненты.Использование = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияВнешнихКомпонент.Используется)
| И ВнешниеКомпоненты.Ссылка <> &Ссылка";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.Записать();
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -244,17 +244,17 @@
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="e5b578a1-e33b-4d49-8064-427aa928a844">
<name>ОбновлятьССайта</name>
<name>ОбновлятьСПортала1СИТС</name>
<synonym>
<key>ru</key>
<value>Обновлять с сайта 1С</value>
<value>Обновлять с Портала 1С:ИТС</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Обновлять с сайта 1С</value>
<value>Обновлять с Портала 1С:ИТС</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
@@ -498,4 +498,22 @@
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="b848d70a-9d08-4b1a-8df1-17697432516d">
<name>ПоискКомпонентыНаПортале1СИТС</name>
<synonym>
<key>ru</key>
<value>Поиск компоненты на Портале 1С:ИТС</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="9a30b92d-0c5b-4e11-a741-2b6efa8ac229">
<name>ОбновлениеКомпонентСПортала1СИТС</name>
<synonym>
<key>ru</key>
<value>Обновление компонент с Портала 1С:ИТС</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:Catalog>
@@ -995,6 +995,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1566,6 +1567,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1594,6 +1596,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1848,6 +1851,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1956,6 +1960,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -81,8 +81,9 @@
ХранимыеПараметры.Вставить("ИспользоватьГруппы",
ПолучитьФункциональнуюОпцию("ИспользоватьГруппыПользователей"));
Если НЕ ПравоДоступа("Добавление", Метаданные.Справочники.ВнешниеПользователи) Тогда
Элементы.СоздатьВнешнегоПользователя.Видимость = Ложь;
Если Не ПравоДоступа("Добавление", Метаданные.Справочники.ВнешниеПользователи) Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"СоздатьВнешнегоПользователя", "Видимость", Ложь);
КонецЕсли;
Если Не ПравоДоступа("Редактирование", Метаданные.Справочники.ГруппыВнешнихПользователей) Тогда
@@ -135,8 +136,12 @@
Элементы.ВнешниеПользователиСписок.РежимВыбора = Ложь;
Элементы.ГруппыВнешнихПользователей.РежимВыбора = Ложь;
Элементы.Комментарии.Видимость = Ложь;
Элементы.ВыбратьВнешнегоПользователя.Видимость = Ложь;
Элементы.ВыбратьГруппуВнешнихПользователей.Видимость = Ложь;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ВыбратьВнешнегоПользователя", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ВыбратьГруппуВнешнихПользователей", "Видимость", Ложь);
КонецЕсли;
ХранимыеПараметры.Вставить("ГруппаВсеПользователи",
@@ -931,11 +936,16 @@
Если Параметры.РежимВыбора Тогда
Элементы.ВыбратьГруппуВнешнихПользователей.Видимость =
?(ХранимыеПараметры.РасширенныйПодбор, Ложь, ВыборГруппВнешнихПользователей);
Элементы.ВыбратьВнешнегоПользователя.КнопкаПоУмолчанию =
?(ХранимыеПараметры.РасширенныйПодбор, Ложь, Не ВыборГруппВнешнихПользователей);
Элементы.ВыбратьВнешнегоПользователя.Видимость = Не ХранимыеПараметры.РасширенныйПодбор;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ВыбратьГруппуВнешнихПользователей", "Видимость", ?(ХранимыеПараметры.РасширенныйПодбор,
Ложь, ВыборГруппВнешнихПользователей));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ВыбратьВнешнегоПользователя", "КнопкаПоУмолчанию", ?(ХранимыеПараметры.РасширенныйПодбор,
Ложь, Не ВыборГруппВнешнихПользователей));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ВыбратьВнешнегоПользователя", "Видимость", Не ХранимыеПараметры.РасширенныйПодбор);
АвтоЗаголовок = Ложь;
@@ -950,12 +960,11 @@
Заголовок = НСтр("ru = 'Подбор внешних пользователей и групп'");
КонецЕсли;
Элементы.ВыбратьВнешнегоПользователя.Заголовок =
НСтр("ru = 'Выбрать внешних пользователей'");
Элементы.ВыбратьГруппуВнешнихПользователей.Заголовок =
НСтр("ru = 'Выбрать группы'");
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ВыбратьВнешнегоПользователя", "Заголовок", НСтр("ru = 'Выбрать внешних пользователей'"));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ВыбратьГруппуВнешнихПользователей", "Заголовок", НСтр("ru = 'Выбрать группы'"));
Иначе
Если ХранимыеПараметры.РасширенныйПодбор Тогда
Заголовок = ХранимыеПараметры.ЗаголовокФормыПодбора;
@@ -968,7 +977,8 @@
Если ВыборГруппВнешнихПользователей Тогда
Заголовок = НСтр("ru = 'Выбор внешнего пользователя или группы'");
Элементы.ВыбратьВнешнегоПользователя.Заголовок = НСтр("ru = 'Выбрать внешнего пользователя'");
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ВыбратьВнешнегоПользователя", "Заголовок", НСтр("ru = 'Выбрать внешнего пользователя'"));
Иначе
Заголовок = НСтр("ru = 'Выбор внешнего пользователя'");
КонецЕсли;
@@ -133,6 +133,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
@@ -237,6 +238,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
@@ -357,6 +359,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -385,6 +388,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -560,6 +564,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -926,6 +931,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1069,6 +1075,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1804,6 +1811,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
@@ -1903,14 +1911,8 @@
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>StartChoice</event>
<name>КомментарийНачалоВыбора</name>
</handlers>
<autoMaxHeight>true</autoMaxHeight>
<verticalStretch>true</verticalStretch>
<wrap>true</wrap>
<multiLine>true</multiLine>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
@@ -170,6 +170,13 @@
ТекущееПредставлениеОбъектаАвторизации = Строка(Объект.ОбъектАвторизации);
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
&НаСервере
@@ -595,14 +602,6 @@
КонецПроцедуры
&НаКлиенте
Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(
Элемент.ТекстРедактирования, ЭтотОбъект, "Объект.Комментарий");
КонецПроцедуры
&НаКлиенте
Процедура СтраницыГлавноеИКомментарийПриСменеСтраницы(Элемент, ТекущаяСтраница)
@@ -27,6 +27,24 @@
// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
// СтандартныеПодсистемы.УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.ТекстДляВнешнихПользователей =
"РазрешитьЧтение
|ГДЕ
| ЗначениеРазрешено(Ссылка)
|;
|РазрешитьИзменениеЕслиРазрешеноЧтение
|ГДЕ
| ЭтоАвторизованныйПользователь(Ссылка)";
КонецПроцедуры
// Конец СтандартныеПодсистемы.УправлениеДоступом
#КонецОбласти
#КонецОбласти
@@ -19,6 +19,24 @@
// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
// СтандартныеПодсистемы.УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтение
|ГДЕ
| ЧтениеОбъектаРазрешено(ВладелецФайла)
|;
|РазрешитьИзменениеЕслиРазрешеноЧтение
|ГДЕ
| ИзменениеОбъектаРазрешено(ВладелецФайла)";
КонецПроцедуры
// Конец СтандартныеПодсистемы.УправлениеДоступом
#КонецОбласти
#КонецОбласти
@@ -264,6 +264,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -292,6 +293,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1545,13 +1547,8 @@
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>StartChoice</event>
<name>КомментарийНачалоВыбора</name>
</handlers>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<multiLine>true</multiLine>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
@@ -102,6 +102,13 @@
ОбработатьИнтерфейсРолей("ЗаполнитьРоли", Объект.Роли);
ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриЧтенииНаСервере", Истина);
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
&НаСервере
@@ -222,14 +229,6 @@
КонецПроцедуры
&НаКлиенте
Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(
Элемент.ТекстРедактирования, ЭтотОбъект, "Объект.Комментарий");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыРоли
@@ -24,6 +24,20 @@
// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
// СтандартныеПодсистемы.УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.ТекстДляВнешнихПользователей =
"РазрешитьЧтениеИзменение
|ГДЕ
| Ссылка = Значение(Справочник.ГруппыВнешнихПользователей.ВсеВнешниеПользователи)";
КонецПроцедуры
// Конец СтандартныеПодсистемы.УправлениеДоступом
#КонецОбласти
#КонецОбласти
@@ -33,6 +33,13 @@
ТолькоПросмотр = Истина;
КонецЕсли;
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
&НаСервере
@@ -19,14 +19,17 @@
УпрощенныйИнтерфейсНастройкиПравДоступа = УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа();
Если УпрощенныйИнтерфейсНастройкиПравДоступа Тогда
Если Элементы.Найти("ФормаСоздать") <> Неопределено Тогда
Элементы.ФормаСоздать.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюСоздать.Видимость = Ложь;
КонецЕсли;
Если Элементы.Найти("ФормаСкопировать") <> Неопределено Тогда
Элементы.ФормаСкопировать.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюСкопировать.Видимость = Ложь;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ФормаСоздать", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"СписокКонтекстноеМенюСоздать", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ФормаСкопировать", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"СписокКонтекстноеМенюСкопировать", "Видимость", Ложь);
КонецЕсли;
Список.Параметры.УстановитьЗначениеПараметра("Профиль", Параметры.Профиль);
@@ -37,10 +40,11 @@
Заголовок = НСтр("ru = 'Группы доступа'");
Если Элементы.Найти("ФормаСоздатьГруппу") <> Неопределено Тогда
Элементы.ФормаСоздатьГруппу.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюСоздатьГруппу.Видимость = Ложь;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ФормаСоздатьГруппу", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"СписокКонтекстноеМенюСоздатьГруппу", "Видимость", Ложь);
КонецЕсли;
Если НЕ ПравоДоступа("Чтение", Метаданные.Справочники.ПрофилиГруппДоступа) Тогда
@@ -95,17 +99,14 @@
ПереносДопустим = НЕ ЗначениеЗаполнено(Элементы.Список.ТекущиеДанные.Пользователь)
И Элементы.Список.ТекущиеДанные.Ссылка <> РодительПерсональныхГруппДоступа;
Если Элементы.Найти("ФормаПеренестиЭлемент") <> Неопределено Тогда
Элементы.ФормаПеренестиЭлемент.Доступность = ПереносДопустим;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ФормаПеренестиЭлемент", "Доступность", ПереносДопустим);
Если Элементы.Найти("СписокКонтекстноеМенюПеренестиЭлемент") <> Неопределено Тогда
Элементы.СписокКонтекстноеМенюПеренестиЭлемент.Доступность = ПереносДопустим;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"СписокКонтекстноеМенюПеренестиЭлемент", "Доступность", ПереносДопустим);
Если Элементы.Найти("СписокПеренестиЭлемент") <> Неопределено Тогда
Элементы.СписокПеренестиЭлемент.Доступность = ПереносДопустим;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"СписокПеренестиЭлемент", "Доступность", ПереносДопустим);
КонецПроцедуры
@@ -1545,6 +1545,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -139,6 +139,13 @@
НачальнаяНастройкаПриЧтенииИСоздании(ТекущийОбъект);
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
&НаКлиенте
@@ -26,6 +26,22 @@
// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
// СтандартныеПодсистемы.УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЭтоГруппа
| ИЛИ Профиль <> Значение(Справочник.ПрофилиГруппДоступа.Администратор)
| И ЭтоАвторизованныйПользователь(Ответственный)";
КонецПроцедуры
// Конец СтандартныеПодсистемы.УправлениеДоступом
// ТехнологияСервиса.ВыгрузкаЗагрузкаДанных
// См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриРегистрацииОбработчиковВыгрузкиДанных.
@@ -773,36 +789,47 @@
ОбъектовОбработано = 0;
ПроблемныхОбъектов = 0;
ШаблонОшибкиОбработкиГруппыДоступа =
НСтр("ru = 'Не удалось обработать группу доступа ""%1"" по причине:
|%2'");
ШаблонОшибкиОбновленияТаблицГруппДоступа =
НСтр("ru = 'Не удалось обновить таблицы группы доступа ""%1"" по причине:
|%2'");
ШаблонОшибкиОбновленияЗначенийГруппДоступа =
НСтр("ru = 'Не удалось обновить значения доступа группы доступа ""%1"" по причине:
|%2'");
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ГруппыДоступа");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
Пока Выборка.Следующий() Цикл
Попытка
РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра(Выборка.Ссылка);
Исключение
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обновить таблицы группы доступа ""%1"" по причине:
|%2'"),
Строка(Выборка.Ссылка),
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Предупреждение, , , ТекстСообщения);
Продолжить;
КонецПопытки;
ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка);
НачатьТранзакцию();
Попытка
ШаблонОшибки = ШаблонОшибкиОбработкиГруппыДоступа;
Блокировка.Заблокировать();
ШаблонОшибки = ШаблонОшибкиОбновленияТаблицГруппДоступа;
РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра(Выборка.Ссылка);
ШаблонОшибки = ШаблонОшибкиОбновленияЗначенийГруппДоступа;
РегистрыСведений.ЗначенияГруппДоступа.ОбновитьДанныеРегистра(Выборка.Ссылка);
ШаблонОшибки = ШаблонОшибкиОбработкиГруппыДоступа;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обновить значения доступа группы доступа ""%1"" по причине:
|%2'"),
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки,
Строка(Выборка.Ссылка),
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Предупреждение, , , ТекстСообщения);
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Предупреждение, , , ТекстСообщения);
Продолжить;
КонецПопытки;
@@ -56,7 +56,7 @@
КонецЕсли;
// Проверка наличия только пользователей.
Для каждого ТекущаяСтрока Из ЭтотОбъект.Пользователи Цикл
Для каждого ТекущаяСтрока Из Пользователи Цикл
Если ТипЗнч(ТекущаяСтрока.Пользователь) <> Тип("СправочникСсылка.Пользователи") Тогда
ВызватьИсключение
НСтр("ru = 'Предопределенная группа доступа Администраторы
@@ -142,6 +142,16 @@
Справочники.ГруппыДоступа.ОбновитьВспомогательныеДанныеГруппДоступаИзмененныхПриЗагрузке();
Справочники.ГруппыДоступа.ОбновитьРолиПользователейИзмененныхПриЗагрузке();
Если УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально() Тогда
Если Не ПометкаУдаления Тогда
УправлениеДоступомСлужебный.ЗапланироватьОбновлениеДоступаПриИзмененииУчастниковГруппыДоступа(Ссылка,
Пользователи, СтарыеЗначения.Пользователи);
КонецЕсли;
Если ПометкаУдаления <> СтарыеЗначения.ПометкаУдаления Тогда
УправлениеДоступомСлужебный.ОбновитьГруппыДоступаРазрешенногоКлючаДоступа(Ссылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
@@ -893,14 +893,8 @@
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>StartChoice</event>
<name>КомментарийНачалоВыбора</name>
</handlers>
<height>2</height>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<multiLine>true</multiLine>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
@@ -57,14 +57,6 @@
КонецПроцедуры
&НаКлиенте
Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(
Элемент.ТекстРедактирования, ЭтотОбъект, "Объект.Комментарий");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСостав
@@ -94,6 +94,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
@@ -1,9 +1,5 @@
<?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>Разделы командного интерфейса</value>
</title>
<items xsi:type="form:Table">
<name>Разделы</name>
<id>1</id>
@@ -321,6 +317,7 @@
</handlers>
<windowOpeningMode>LockOwner</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoTitle>true</autoTitle>
<autoUrl>true</autoUrl>
<group>Vertical</group>
<autoFillCheck>true</autoFillCheck>
@@ -404,10 +401,6 @@
<value>ОК</value>
</title>
<id>1</id>
<toolTip>
<key>ru</key>
<value>ОК</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -426,10 +419,6 @@
<value>Выделить все</value>
</title>
<id>2</id>
<toolTip>
<key>ru</key>
<value>Выделить все</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -446,10 +435,6 @@
<value>Снять выделение со всех</value>
</title>
<id>3</id>
<toolTip>
<key>ru</key>
<value>Снять выделение со всех</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -170,6 +170,103 @@
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаПояснениеСервис</name>
<id>130</id>
<items xsi:type="form:Decoration">
<name>КартинкаПояснения</name>
<id>132</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КартинкаПоясненияРасширеннаяПодсказка</name>
<id>134</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>КартинкаПоясненияКонтекстноеМеню</name>
<id>133</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Информация32</picture>
</picture>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ПояснениеСервис</name>
<id>127</id>
<title>
<key>ru</key>
<value>Правила добавления новых и использования существующих дополнительных обработок устанавливает провайдер сервиса.
Обратитесь за консультацией в службу поддержки сервиса или в компанию, которая предоставила доступ.</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПояснениеСервисРасширеннаяПодсказка</name>
<id>129</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПояснениеСервисКонтекстноеМеню</name>
<id>128</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Пояснение для сервиса</value>
</title>
<extendedTooltip>
<name>ГруппаПояснениеСервисРасширеннаяПодсказка</name>
<id>131</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>КоманднаяПанель</name>
<id>19</id>
@@ -179,6 +276,10 @@
<items xsi:type="form:Button">
<name>Создать</name>
<id>27</id>
<title>
<key>ru</key>
<value>Добавить из файла...</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -187,6 +288,10 @@
<extendedTooltip>
<name>СоздатьРасширеннаяПодсказка</name>
<id>37</id>
<title>
<key>ru</key>
<value>Добавить из файла на диске...</value>
</title>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -1593,7 +1698,7 @@
<name>ВыгрузитьВФайл</name>
<title>
<key>ru</key>
<value>Выгрузить в файл...</value>
<value>Сохранить как...</value>
</title>
<id>1</id>
<toolTip>
@@ -1603,13 +1708,16 @@
<use>
<common>true</common>
</use>
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.СохранитьФайлКак</picture>
</picture>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ВыгрузитьВФайл</name>
</handler>
</action>
<functionalOptions>FunctionalOption.СтандартныеПодсистемыВЛокальномРежиме</functionalOptions>
<representation>Picture</representation>
<representation>TextPicture</representation>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
@@ -1617,23 +1725,26 @@
<name>ЗагрузитьИзФайла</name>
<title>
<key>ru</key>
<value>Загрузить из файла...</value>
<value>Обновить из файла...</value>
</title>
<id>2</id>
<toolTip>
<key>ru</key>
<value>Загрузить обработку (отчет) из файла на компьютере</value>
<value>Обновить обработку (отчет) из файла на компьютере</value>
</toolTip>
<use>
<common>true</common>
</use>
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.ОбновитьФайлИзФайлаНаДиске</picture>
</picture>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ЗагрузитьФайлОбработкиОтчета</name>
</handler>
</action>
<functionalOptions>FunctionalOption.СтандартныеПодсистемыВЛокальномРежиме</functionalOptions>
<representation>Picture</representation>
<representation>TextPicture</representation>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
@@ -105,6 +105,8 @@
Элементы.СоздатьГруппу.Видимость = Ложь;
КонецЕсли;
Элементы.ГруппаПояснениеСервис.Видимость = ОбщегоНазначения.РазделениеВключено();
КонецПроцедуры
&НаСервере
@@ -150,6 +150,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -178,6 +179,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -261,6 +263,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -426,6 +429,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -573,6 +577,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1197,6 +1202,7 @@
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>HorizontalIfPossible</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
@@ -2091,6 +2097,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -2344,6 +2351,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -3062,6 +3070,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -3926,22 +3935,25 @@
<name>ЗагрузитьИзФайла</name>
<title>
<key>ru</key>
<value>Загрузить из файла...</value>
<value>Обновить из файла...</value>
</title>
<id>1</id>
<toolTip>
<key>ru</key>
<value>Загрузить обработку (отчет) из файла на компьютере</value>
<value>Обновить из файла на диске...</value>
</toolTip>
<use>
<common>true</common>
</use>
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.ОбновитьФайлИзФайлаНаДиске</picture>
</picture>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ЗагрузитьИзФайла</name>
</handler>
</action>
<representation>Picture</representation>
<representation>TextPicture</representation>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
@@ -3949,16 +3961,19 @@
<name>ВыгрузитьВФайл</name>
<title>
<key>ru</key>
<value>Выгрузить в файл...</value>
<value>Сохранить как...</value>
</title>
<id>2</id>
<toolTip>
<key>ru</key>
<value>Выгрузить обработку (отчет) в файл на компьютер</value>
<value>Сохранить как...</value>
</toolTip>
<use>
<common>true</common>
</use>
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.СохранитьФайлКак</picture>
</picture>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ВыгрузитьВФайл</name>
@@ -11,7 +11,7 @@
<div><strong>Режим работы</strong> - <a href="#1">режим подключения</a> дополнительных отчетов и обработок, принимает значения <strong>Безопасный</strong> и <strong>Небезопасный</strong>.</div>
</li><li>
<div>
<p>С помощью переключателя <strong>Публикация </strong>можно включить или отключить доступность обработки или отчета, регулируя использование дополнительных отчетов и обработок. Можно сделать дополнительную обработку или отчет доступной для всех, только для администратора или отключить. Реквизит может принимать следующие значения:</p>
<p>С помощью тумблера <strong>Публикация </strong>можно включить или отключить доступность обработки или отчета, регулируя использование дополнительных отчетов и обработок. Можно сделать дополнительную обработку или отчет доступной для всех, только для администратора или отключить. Реквизит может принимать следующие значения:</p>
<ul><li>
<div><strong>Используется</strong> - обработка доступна для использования. Команды обработки доступны в программе для всех пользователей с установленной ролью "Использование дополнительных отчетов и обработок".</div>
</li><li>
@@ -32,13 +32,13 @@
</li><li><strong>Версия</strong>;
</li><li><strong>Имя объекта</strong>;
</li><li><strong>Описание</strong> - подробная информация о дополнительном отчете или обработке.</li></ul></li><li><strong>Группа</strong> - включите дополнительную обработку или отчет в одну из групп. Выберите нужную группу из списка. Группы помогают упорядочить дополнительные отчеты и обработки.</li></ul><h3>Загрузка из файла</h3>
<ul><li>С помощью команды <strong>Загрузить из файла</strong> можно обновить обработку во внутреннем хранилище программы. Вид загружаемой обработки должен соответствовать текущему виду обработки. Укажите путь к файлу, нажмите <strong>Открыть</strong>.</li></ul><h3>Выгрузка в файл</h3>
<ul><li>С помощью команды <strong>Выгрузить в файл</strong> можно выгрузить дополнительный отчет или обработку из хранилища в файл на диске компьютера. Укажите папку на компьютере, нажмите <strong>Сохранить</strong>. Имя файлу присваивается автоматически, имеется возможность его переименовать.</li></ul><h3><a name="1">Режим работы</a></h3>
<ul><li>С помощью кнопки <strong>Обновить из файла</strong> можно обновить обработку во внутреннем хранилище программы. Вид загружаемой обработки должен соответствовать текущему виду обработки. Укажите путь к файлу, нажмите <strong>Открыть</strong>.</li></ul><h3>Выгрузка в файл</h3>
<ul><li>С помощью кнопки <strong>Сохранить как</strong> можно выгрузить дополнительный отчет или обработку из хранилища в файл на диске компьютера. Укажите папку на компьютере, нажмите <strong>Сохранить</strong>. Имя файлу присваивается автоматически, имеется возможность его переименовать.</li></ul><h3><a name="1">Режим работы</a></h3>
<ul><li>Как правило, большинство обработок должны выполняться в безопасном режиме. Это гарантирует, что они не содержат "ненадежный" программный код, который выполняется на сервере.
</li><li>Однако некоторые обработки могут требовать выполнения в небезопасном режиме. Такие обработки следует загружать только из надежных источников (поставщиков) или перед загрузкой самостоятельно выполнять их аудит.
</li><li>Подробнее о безопасном режиме работы см. документацию по платформе 1С:Предприятие.</li></ul><h3>Особенности регистрации <a name="A">назначаемых</a> дополнительных обработок и отчетов</h3>
<ul><li>Для дополнительных обработок или отчетов, предназначенных для работы со списками или документами программы, можно выбрать из списка объекты, в которых будут доступны команды обработки или отчета.
<ul><li><strong>Назначение</strong> -  для выбора объектов программы нажмите ссылку, которая принимает значение <strong>Не определено</strong> (если ни одного объекта не выбрано) или перечисляет выбранные объекты. С помощью флажков выберите нужные объекты.
<ul><li><strong>Размещение</strong> -  для выбора объектов программы нажмите ссылку, которая принимает значение <strong>Не определено</strong> (если ни одного объекта не выбрано) или перечисляет выбранные объекты. С помощью флажков выберите нужные объекты.
</li><li><strong>Показывать</strong> - команды обработок или отчетов могут быть доступны:
<ul><li>из списка выбранных объектов, если установлен флажок <strong>В списках</strong>; 
</li><li>из окна самого объекта, если установлен флажок <strong>В формах элементов справочников и документов</strong>. Можно установить оба флажка одновременно.</li></ul></li></ul></li><li>
@@ -92,7 +92,7 @@
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.ДополнительныеОтчетыИОбработки.Форма.ПодборРазделов") Тогда
Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.ДополнительныеОтчетыИОбработки.Форма.РазмещениеВРазделах") Тогда
Если ТипЗнч(ВыбранноеЗначение) <> Тип("СписокЗначений") Тогда
Возврат;
@@ -173,6 +173,13 @@
| И НЕ ДанныеРегистра.Пользователь.Недействителен";
БыстрыйДоступ.Загрузить(Запрос.Выполнить().Выгрузить());
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
&НаСервере
@@ -291,7 +298,7 @@
ПараметрыФормы.Вставить("Разделы", Разделы);
ПараметрыФормы.Вставить("ВидОбработки", Объект.Вид);
ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.Форма.ПодборРазделов", ПараметрыФормы, ЭтотОбъект);
ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.Форма.РазмещениеВРазделах", ПараметрыФормы, ЭтотОбъект);
Иначе
// Выбор объектов метаданных
ПараметрыФормы = ПодготовитьПараметрыФормыВыборОбъектовМетаданных();
@@ -650,7 +657,10 @@
ОбновлениеИзФайлаПоказатьКонфликты(ПараметрыРегистрации);
Иначе
ОбработчикРезультата = Новый ОписаниеОповещения("ОбновлениеИзФайлаЗавершение", ЭтотОбъект, ПараметрыРегистрации);
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(ОбработчикРезультата, ПараметрыРегистрации.ТекстОшибки, РежимДиалогаВопрос.ОК);
ПараметрыВопроса = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
ПараметрыВопроса.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(ОбработчикРезультата, ПараметрыРегистрации.ТекстОшибки,
РежимДиалогаВопрос.ОК, ПараметрыВопроса);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
@@ -23,10 +23,7 @@
</li><li><strong>Информация</strong> - описание дополнительной обработки или отчета, которое было написано разработчиком;
</li><li><strong>Имя файла</strong> - расширение и имя файла дополнительной обработки (отчета);
</li><li><strong>Безопасный режим</strong> - принимает значение "Да", если дополнительный отчет или обработка выполняется в безопасном режиме. Как правило, большинство обработок должны выполняться в безопасном режиме. Это гарантирует, что они не содержат "ненадежный программный код, который выполняется на сервере. Однако некоторые обработки могут требовать выполнения в небезопасном режиме. Об этом программа размещает предупреждение. Такие обработки следует загружать только из надежных источников (поставщиков) или перед загрузкой самостоятельно выполнять их аудит. Подробнее о безопасном режиме работы см. документацию по платформе 1С:Предприятие.</li></ul><h3>Добавление дополнительных отчетов или обработок</h3>
<ul><li>По команде <strong>Создать</strong> программа предложит выбрать файл <a href="v8help://1cv8/ExtRepotrs">внешнего отчета или обработки</a> на компьютере (укажите путь к каталогу на диске) и <a href="Catalog.ДополнительныеОтчетыИОбработки.Form.ФормаЭлемента/Help">настроить его параметры</a>. Набор сведений зависит от назначения обработки или отчета. Если указан неверный файл, то программа выдаст сообщение об ошибке, например, сообщение о том, что дополнительная обработка предназначена для другой версии программы. </li></ul><h3>Группировка дополнительных отчетов и обработок</h3>
<p>Если список большой, то для удобства его использования можно сгруппировать дополнительные отчеты и обработки по различным признакам. Для этого введите необходимое количество групп:</p>
<ul><li>Нажмите <strong>Создать группу</strong> и введите наименование группы. Можно подчинить новую группу другой группе. Для этого в поле <strong>Родитель</strong> выберите группу из списка.
</li><li>Перетащите в группу нужные дополнительные отчеты и обработки с помощью мыши.</li></ul><h3>Отборы</h3>
<ul><li>С помощью кнопки <strong>Добавить из файла</strong> программа предложит выбрать файл <a href="v8help://1cv8/ExtRepotrs">внешнего отчета или обработки</a> на компьютере (укажите путь к каталогу на диске) и <a href="Catalog.ДополнительныеОтчетыИОбработки.Form.ФормаЭлемента/Help">настроить его параметры</a>. Набор сведений зависит от назначения обработки или отчета. Если указан неверный файл, то программа выдаст сообщение об ошибке, например, сообщение о том, что дополнительная обработка предназначена для другой версии программы. </li></ul><h3>Отборы</h3>
<p>Если дополнительных отчетов и обработок в списке много, то для удобства поиска можно воспользоваться отборами:</p>
<ul><li>
<div>по полю <strong>Вид</strong> - выберите один из видов дополнительных отчетов и обработок из списка для отбора, например, "Отчет".  </div>
@@ -34,8 +31,8 @@
<div>по полю <strong>Публикация</strong> - выберите нужное состояние для отбора, например, "Используется".</div>
</li><li>
<div>по полям <strong>Вид</strong> и <strong>Публикация</strong> - можно сочетать два вида отбора в больших списках.</div></li></ul><h3>Загрузка из файла</h3>
<ul><li>С помощью команды <strong>Загрузить из файла</strong> можно обновить обработку во внутреннем хранилище программы. Укажите путь к файлу, нажмите <strong>Открыть</strong>.</li></ul><h3>Выгрузка в файл</h3>
<ul><li>С помощью команды <strong>Еще -</strong> <strong>Выгрузить в файл</strong> можно выгрузить дополнительный отчет или обработку из хранилища в файл на диске компьютера. Укажите папку на компьютере, нажмите <strong>Сохранить</strong>. Имя файлу присваивается автоматически, имеется возможность его переименовать.</li></ul><h3><a name="1">Виды дополнительных отчетов и обработок</a></h3>
<ul><li>С помощью кнопки <strong>Обновить из файла</strong> можно обновить обработку во внутреннем хранилище программы. Укажите путь к файлу, нажмите <strong>Открыть</strong>.</li></ul><h3>Выгрузка в файл</h3>
<ul><li>С помощью кнопки <strong>Сохранить как</strong> можно выгрузить дополнительный отчет или обработку из хранилища в файл на диске компьютера. Укажите папку на компьютере, нажмите <strong>Сохранить</strong>. Имя файлу присваивается автоматически, имеется возможность его переименовать.</li></ul><h3><a name="1">Виды дополнительных отчетов и обработок</a></h3>
<p>Существует несколько видов дополнительных отчетов и обработок:</p>
<ul><li><strong>Глобальные отчеты и обработки</strong> - используются независимо от данных программы, также называются общими. Команды для их использования размещаются в разделах программы. С помощью глобальных отчетов и обработок можно загружать данные в программу, производить обновление или очистку индекса полнотекстового поиска и т.д. Они содержат команды, вызываемые только из разделов командного интерфейса. Команды не зависят от конкретных объектов программы. Список доступных разделов для размещения команд определен разработчиком заранее и включен в файл дополнительного отчета или обработки, его невозможно изменить.
</li><li><strong>Назначаемые дополнительные отчеты и обработки</strong> - предназначены для конкретных документов или списков программы, которых может быть несколько, при этом список доступных назначений определен разработчиком заранее и включен в текст дополнительного отчета или обработки, поэтому при настройке дополнительного отчета или обработки можно только выбирать из этого списка. К этому типу относятся несколько видов дополнительных отчетов и обработок:
@@ -25,6 +25,22 @@
// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
// СтандартныеПодсистемы.УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Ссылка)";
Ограничение.ТекстДляВнешнихПользователей = Ограничение.Текст;
КонецПроцедуры
// Конец СтандартныеПодсистемы.УправлениеДоступом
#КонецОбласти
#КонецОбласти
@@ -83,7 +83,7 @@
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Имя ""%1"", используемое отчетом (обработкой) ""%2"", уже занято другим опубликованным дополнительным отчетом (обработкой).'"),
ИмяОбъекта,
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЭтотОбъект.Ссылка, "Наименование"));
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Наименование"));
КонецЕсли;
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, , "Объект.Публикация");
КонецЕсли;
@@ -825,10 +825,10 @@
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="eafaec9c-030b-4e5f-8fa8-e17dad2feec9">
<name>ПодборРазделов</name>
<name>РазмещениеВРазделах</name>
<synonym>
<key>ru</key>
<value>Подбор разделов</value>
<value>Размещение в разделах</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
@@ -217,6 +217,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -431,6 +431,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -21,7 +21,6 @@
</dataPath>
<titleLocation>None</titleLocation>
<excludedCommands>CancelSearch</excludedCommands>
<excludedCommands>Choose</excludedCommands>
<excludedCommands>Copy</excludedCommands>
<excludedCommands>CreateFolder</excludedCommands>
<excludedCommands>Delete</excludedCommands>
@@ -202,6 +202,10 @@
<commandBar/>
</commandInterface>
<extInfo xsi:type="form:CatalogFormExtInfo">
<handlers>
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
<useForFoldersAndItems>Folders</useForFoldersAndItems>
</extInfo>
</form:Form>
@@ -18,4 +18,16 @@
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
#КонецОбласти
@@ -103,6 +103,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -341,6 +342,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -447,6 +449,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -32,6 +32,14 @@
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ФорматированныйТекст = ТекущийОбъект.Содержание.Получить();
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
&НаСервере
@@ -23,6 +23,20 @@
// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
// СтандартныеПодсистемы.УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЭтоАвторизованныйПользователь(Автор)";
КонецПроцедуры
// Конец СтандартныеПодсистемы.УправлениеДоступом
#КонецОбласти
#КонецОбласти
@@ -19,6 +19,24 @@
// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
// СтандартныеПодсистемы.УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтение
|ГДЕ
| ЧтениеОбъектаРазрешено(ВладелецФайла)
|;
|РазрешитьИзменениеЕслиРазрешеноЧтение
|ГДЕ
| ИзменениеОбъектаРазрешено(ВладелецФайла)";
КонецПроцедуры
// Конец СтандартныеПодсистемы.УправлениеДоступом
#КонецОбласти
#КонецОбласти
@@ -190,6 +190,10 @@
<event>AfterWriteAtServer</event>
<name>ПослеЗаписиНаСервере</name>
</handlers>
<handlers>
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
<useForFoldersAndItems>Folders</useForFoldersAndItems>
</extInfo>
</form:Form>
@@ -29,6 +29,18 @@
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -270,5 +270,9 @@
<event>AfterWriteAtServer</event>
<name>ПослеЗаписиНаСервере</name>
</handlers>
<handlers>
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
</extInfo>
</form:Form>
@@ -68,6 +68,18 @@
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -23,6 +23,21 @@
// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
// СтандартныеПодсистемы.УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Владелец)
| ИЛИ НЕ Владелец.ЭтоДополнительноеСведение";
КонецПроцедуры
// Конец СтандартныеПодсистемы.УправлениеДоступом
#КонецОбласти
#КонецОбласти
@@ -264,5 +264,9 @@
<event>AfterWriteAtServer</event>
<name>ПослеЗаписиНаСервере</name>
</handlers>
<handlers>
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
</extInfo>
</form:Form>
@@ -68,6 +68,18 @@
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -23,6 +23,21 @@
// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
// СтандартныеПодсистемы.УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Владелец)
| ИЛИ НЕ Владелец.ЭтоДополнительноеСведение";
КонецПроцедуры
// Конец СтандартныеПодсистемы.УправлениеДоступом
#КонецОбласти
#КонецОбласти
@@ -87,7 +87,7 @@
Попытка
Обновлен = СтандартныеПодсистемыСервер.ПараметрРаботыПрограммы(
"СтандартныеПодсистемы.ИдентификаторыОбъектовМетаданных");
"СтандартныеПодсистемы.БазоваяФункциональность.ИдентификаторыОбъектовМетаданных");
Исключение
Если Обновить Тогда
ВызватьИсключение;
@@ -104,8 +104,7 @@
КонецЕсли;
Если ОбъектыРасширений
И ЗначениеЗаполнено(ПараметрыСеанса.ПодключенныеРасширения)
И Справочники.ВерсииРасширений.УстановленныеРасширенияДоступны() Тогда
И ЗначениеЗаполнено(ПараметрыСеанса.ПодключенныеРасширения) Тогда
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Если Обновить Тогда
@@ -332,6 +331,42 @@
КонецПроцедуры
// См. ОбщегоНазначения.ИдентификаторыОбъектовМетаданных.
Функция ИдентификаторыОбъектовМетаданных(ПолныеИменаОбъектовМетаданных, КромеНесуществующих = Ложь, ОдинЭлемент = Ложь) Экспорт
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
ИдентификаторыПоПолнымИменам = КэшИдентификаторов().ИдентификаторыПоПолнымИменам;
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
Результат = Новый Соответствие;
ПолныеИменаБезКэша = Новый Массив;
Для Каждого ПолноеИмя Из ПолныеИменаОбъектовМетаданных Цикл
Идентификатор = ИдентификаторыПоПолнымИменам.Получить(ПолноеИмя);
Если Идентификатор = Неопределено Тогда
ПолныеИменаБезКэша.Добавить(ПолноеИмя);
Иначе
Результат.Вставить(ПолноеИмя, Идентификатор);
КонецЕсли;
КонецЦикла;
Если ПолныеИменаБезКэша.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
Идентификаторы = ИдентификаторыОбъектовМетаданныхСПопыткойПовтора(ПолныеИменаБезКэша,
КромеНесуществующих, ОдинЭлемент);
Для Каждого КлючИЗначение Из Идентификаторы Цикл
Результат.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
ИдентификаторыПоПолнымИменам.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
Возврат Результат;
КонецФункции
// Возвращает объект метаданных по переданному идентификатору.
//
// Параметры:
@@ -361,7 +396,7 @@
Идентификаторы = Новый Массив;
Идентификаторы.Добавить(Идентификатор);
ОбъектыМетаданных = ОбъектыМетаданныхПоИдентификаторамСПопыткойПовтора(Идентификаторы, КромеНесуществующихИНедоступных);
ОбъектыМетаданных = ОбъектыМетаданныхПоИдентификаторам(Идентификаторы, КромеНесуществующихИНедоступных);
Возврат ОбъектыМетаданных.Получить(Идентификатор);
@@ -394,7 +429,53 @@
//
Функция ОбъектыМетаданныхПоИдентификаторам(Идентификаторы, КромеНесуществующихИНедоступных = Ложь) Экспорт
Возврат ОбъектыМетаданныхПоИдентификаторамСПопыткойПовтора(Идентификаторы, КромеНесуществующихИНедоступных);
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
ОписаниеОбъектовМетаданныхПоИдентификаторам = КэшИдентификаторов().ОписаниеОбъектовМетаданныхПоИдентификаторам;
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
Результат = Новый Соответствие;
ИдентификаторыБезКэша = Новый Массив;
Для Каждого Идентификатор Из Идентификаторы Цикл
Описание = ОписаниеОбъектовМетаданныхПоИдентификаторам.Получить(Идентификатор);
Если Описание = Неопределено
Или Не КромеНесуществующихИНедоступных
И Описание.Ключ = Неопределено Тогда
ИдентификаторыБезКэша.Добавить(Идентификатор);
ИначеЕсли Описание.Ключ = Неопределено Тогда
Результат.Вставить(Идентификатор, Описание.Объект);
ИначеЕсли ТипЗнч(Описание.Ключ) = Тип("Тип") Тогда
Результат.Вставить(Идентификатор, Метаданные.НайтиПоТипу(Описание.Ключ));
Иначе
Результат.Вставить(Идентификатор, Метаданные.НайтиПоПолномуИмени(Описание.Ключ));
КонецЕсли;
КонецЦикла;
Если ИдентификаторыБезКэша.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
ОбъектыМетаданныхПоИдентификаторам = ОбъектыМетаданныхПоИдентификаторамСПопыткойПовтора(ИдентификаторыБезКэша,
КромеНесуществующихИНедоступных);
Для Каждого КлючИЗначение Из ОбъектыМетаданныхПоИдентификаторам Цикл
ОписаниеОбъектаМетаданных = КлючИЗначение.Значение;
Если ТипЗнч(ОписаниеОбъектаМетаданных) = Тип("Структура") Тогда
Результат.Вставить(КлючИЗначение.Ключ, ОписаниеОбъектаМетаданных.Объект);
ОписаниеОбъектаМетаданных.Объект = Неопределено;
Иначе
Результат.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
ОписаниеОбъектаМетаданных = Новый Структура("Объект, Ключ", КлючИЗначение.Значение)
КонецЕсли;
ОписаниеОбъектовМетаданныхПоИдентификаторам.Вставить(КлючИЗначение.Ключ, ОписаниеОбъектаМетаданных);
КонецЦикла;
Возврат Результат;
КонецФункции
@@ -540,15 +621,15 @@
Если ОбъектыРасширений
И ЗначениеЗаполнено(ПараметрыСеанса.ПодключенныеРасширения)
И Не Справочники.ВерсииРасширений.УстановленныеРасширенияДоступны() Тогда
И Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
ТекстОшибки =
НСтр("ru = 'Невозможно обновить идентификаторы объектов расширений
|в сеансе неразделенного пользователя, так как
|расширения для разделенных пользователей не подключены.'");
ВызватьИсключениеПоОшибке(Истина, ТекстОшибки);
Возврат;
ВызватьИсключениеПоОшибке(Истина,
ОписаниеОшибкиИдентификаторыОбъектовРасширенийНедоступныВНеразделенномРежиме());
КонецЕсли;
ПроверкаИспользования(ОбъектыРасширений);
@@ -569,7 +650,7 @@
Если Не ОбъектыРасширений Тогда
СтандартныеПодсистемыСервер.ОбновитьПараметрРаботыПрограммы(
"СтандартныеПодсистемы.ИдентификаторыОбъектовМетаданных", Истина);
"СтандартныеПодсистемы.БазоваяФункциональность.ИдентификаторыОбъектовМетаданных", Истина);
КонецЕсли;
КонецПроцедуры
@@ -609,26 +690,10 @@
ТипОписанияОбъектаМетаданных);
КонецЕсли;
Возврат СтандартныеПодсистемыПовтИсп.ИдентификаторОбъектаМетаданныхПоПолномуИмени(ПолноеИмяОбъектаМетаданных);
КонецФункции
// Продолжение процедуры ИдентификаторОбъектаМетаданных.
Функция ИдентификаторОбъектаМетаданныхПоПолномуИмени(ПолноеИмяОбъектаМетаданных) Экспорт
Массив = Новый Массив;
Массив.Добавить(ПолноеИмяОбъектаМетаданных);
Идентификаторы = ИдентификаторыОбъектовМетаданныхСПопыткойПовтора(Массив, Истина);
Возврат Идентификаторы.Получить(ПолноеИмяОбъектаМетаданных);
КонецФункции
// См. ОбщегоНазначения.ИдентификаторыОбъектовМетаданных.
Функция ИдентификаторыОбъектовМетаданных(ПолныеИменаОбъектовМетаданных) Экспорт
Возврат ИдентификаторыОбъектовМетаданныхСПопыткойПовтора(ПолныеИменаОбъектовМетаданных);
Возврат ИдентификаторыОбъектовМетаданных(Массив, , Истина).Получить(ПолноеИмяОбъектаМетаданных);
КонецФункции
@@ -890,6 +955,7 @@
Строка.Синоним = НСтр("ru = 'Планы обмена'");
Строка.ИмяВЕдЧисле = "ПланОбмена";
Строка.СинонимВЕдЧисле = НСтр("ru = 'План обмена'");
Строка.ОбъектыРасширений = Истина;
// Справочники
Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить();
@@ -898,6 +964,7 @@
Строка.Синоним = НСтр("ru = 'Справочники'");
Строка.ИмяВЕдЧисле = "Справочник";
Строка.СинонимВЕдЧисле = НСтр("ru = 'Справочник'");
Строка.ОбъектыРасширений = Истина;
// Документы
Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить();
@@ -906,6 +973,7 @@
Строка.Синоним = НСтр("ru = 'Документы'");
Строка.ИмяВЕдЧисле = "Документ";
Строка.СинонимВЕдЧисле = НСтр("ru = 'Документ'");
Строка.ОбъектыРасширений = Истина;
// ЖурналыДокументов
Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить();
@@ -967,6 +1035,7 @@
Строка.Синоним = НСтр("ru = 'Регистры сведений'");
Строка.ИмяВЕдЧисле = "РегистрСведений";
Строка.СинонимВЕдЧисле = НСтр("ru = 'Регистр сведений'");
Строка.ОбъектыРасширений = Истина;
// РегистрыНакопления
Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить();
@@ -1480,7 +1549,7 @@
ИЛИ Свойства.ЗначениеПустойСсылки <> СвойстваОбъекта.ЗначениеПустойСсылки
ИЛИ Свойства.ИмяРасширения <> СвойстваОбъекта.ИмяРасширения
ИЛИ Свойства.ХешСуммаРасширения <> СвойстваОбъекта.ХешСуммаРасширения
ИЛИ Свойства.ИмяПредопределенныхДанных <> ""
ИЛИ Свойства.ИмяПредопределенныхДанных <> СвойстваОбъекта.ИмяПредопределенныхДанных
ИЛИ Свойства.ПометкаУдаления
ИЛИ КлючОбъектаМетаданных = Неопределено
ИЛИ СвойстваОбъекта.БезКлючаОбъектаМетаданных
@@ -1496,7 +1565,7 @@
// Установка новых свойств идентификатора объекта метаданных.
ЗаполнитьЗначенияСвойств(Свойства, СвойстваОбъекта);
Свойства.ИмяПредопределенныхДанных = "";
Свойства.ИмяПредопределенныхДанных = СвойстваОбъекта.ИмяПредопределенныхДанных;
Если КлючОбъектаМетаданных = Неопределено
ИЛИ СвойстваОбъекта.БезКлючаОбъектаМетаданных
@@ -1912,6 +1981,7 @@
СвойстваОбъектовМетаданных.Колонки.Добавить("ПорядокКоллекции", Новый ОписаниеТипов("Число"));
СвойстваОбъектовМетаданных.Колонки.Добавить("Родитель", Новый ОписаниеТипов(МассивТиповРодителя));
СвойстваОбъектовМетаданных.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(150)));
СвойстваОбъектовМетаданных.Колонки.Добавить("ИмяПредопределенныхДанных", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(255)));
СвойстваОбъектовМетаданных.Колонки.Добавить("Синоним", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(255)));
СвойстваОбъектовМетаданных.Колонки.Добавить("ПолныйСиноним", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(510)));
СвойстваОбъектовМетаданных.Колонки.Добавить("БезДанных", Новый ОписаниеТипов("Булево"));
@@ -1925,16 +1995,22 @@
СвойстваКоллекций = СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений);
КонецЕсли;
Если ОбъектыРасширений И Не ЗначениеЗаполнено(ПараметрыСеанса.ПодключенныеРасширения) Тогда
Возврат СвойстваОбъектовМетаданных;
КонецЕсли;
ИменаПредопределенныхДанных = ?(ОбъектыРасширений,
Метаданные.Справочники.ИдентификаторыОбъектовРасширений,
Метаданные.Справочники.ИдентификаторыОбъектовМетаданных).ПолучитьИменаПредопределенных();
Для каждого СвойстваКоллекции Из СвойстваКоллекций Цикл
ДобавитьСвойстваОбъектовМетаданных(Метаданные[СвойстваКоллекции.Имя], СвойстваКоллекции,
СвойстваОбъектовМетаданных, ОбъектыРасширений);
ИменаПредопределенных = Новый Соответствие;
Для Каждого ИмяПредопределенного Из ИменаПредопределенныхДанных Цикл
ИменаПредопределенных.Вставить(ИмяПредопределенного, Ложь);
КонецЦикла;
СвойстваОбъектовМетаданных.Индексы.Добавить("ПолноеИмя");
Если Не ОбъектыРасширений Или ЗначениеЗаполнено(ПараметрыСеанса.ПодключенныеРасширения) Тогда
Для каждого СвойстваКоллекции Из СвойстваКоллекций Цикл
ДобавитьСвойстваОбъектовМетаданных(Метаданные[СвойстваКоллекции.Имя], СвойстваКоллекции,
СвойстваОбъектовМетаданных, ОбъектыРасширений, ИменаПредопределенных);
КонецЦикла;
СвойстваОбъектовМетаданных.Индексы.Добавить("ПолноеИмя");
КонецЕсли;
Возврат СвойстваОбъектовМетаданных;
@@ -1944,10 +2020,11 @@
Знач СвойстваКоллекции,
Знач СвойстваОбъектовМетаданных,
Знач ОбъектыРасширений,
Знач ИменаПредопределенных,
Знач ПолноеИмяРодителя = "",
Знач ПолныйСинонимРодителя = "")
Для каждого ОбъектМетаданных Из КоллекцияОбъектовМетаданных Цикл
Для Каждого ОбъектМетаданных Из КоллекцияОбъектовМетаданных Цикл
ПолноеИмя = ОбъектМетаданных.ПолноеИмя();
Расширение = ОбъектМетаданных.РасширениеКонфигурации();
@@ -1961,7 +2038,8 @@
МетаданныеНайтиПоПолномуИмени(ПолноеИмя);
КонецЕсли;
Если НЕ СвойстваКоллекции.БезДанных
Если Не СвойстваКоллекции.БезДанных
И Не ОбъектыРасширений
И СтрНайти(СвойстваКоллекции.ИмяВЕдЧисле, "Регистр") = 0
И СтрНайти(СвойстваКоллекции.ИмяВЕдЧисле, "Константа") = 0 Тогда
@@ -1997,9 +2075,15 @@
СвойстваКоллекции,
СвойстваОбъектовМетаданных,
ОбъектыРасширений,
ИменаПредопределенных,
ПолноеИмя,
НоваяСтрока.ПолныйСиноним + ". ");
КонецЕсли;
ИмяПредопределенного = СтрЗаменить(ПолноеИмя, ".", "");
Если ИменаПредопределенных.Получить(ИмяПредопределенного) <> Неопределено Тогда
НоваяСтрока.ИмяПредопределенныхДанных = ИмяПредопределенного;
ИменаПредопределенных.Вставить(ИмяПредопределенного, Истина);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
@@ -2476,14 +2560,14 @@
КонецФункции
// Для функций ИдентификаторОбъектаМетаданныхПоПолномуИмени, ИдентификаторыОбъектовМетаданных.
Функция ИдентификаторыОбъектовМетаданныхСПопыткойПовтора(ПолныеИменаОбъектовМетаданных, ОдинЭлемент = Ложь)
Функция ИдентификаторыОбъектовМетаданныхСПопыткойПовтора(ПолныеИменаОбъектовМетаданных, КромеНесуществующих, ОдинЭлемент)
СтандартныеПодсистемыПовтИсп.ИдентификаторыОбъектовМетаданныхПроверкаИспользования(Истина,
ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных());
Попытка
Идентификаторы = ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора(
ПолныеИменаОбъектовМетаданных, ОдинЭлемент);
ПолныеИменаОбъектовМетаданных, КромеНесуществующих, ОдинЭлемент);
Исключение
Если Не ОбщегоНазначения.РазделениеВключено()
Или Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
@@ -2498,7 +2582,7 @@
Если Идентификаторы = Неопределено Тогда
ОбновитьДанныеСправочника();
Идентификаторы = ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора(
ПолныеИменаОбъектовМетаданных, ОдинЭлемент);
ПолныеИменаОбъектовМетаданных, КромеНесуществующих, ОдинЭлемент);
КонецЕсли;
Возврат Идентификаторы;
@@ -2506,13 +2590,13 @@
КонецФункции
// Для функций ИдентификаторыОбъектовМетаданных.
Функция ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора(ПолныеИменаОбъектовМетаданных, ОдинЭлемент)
Функция ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора(ПолныеИменаОбъектовМетаданных, КромеНесуществующих, ОдинЭлемент)
УстановитьПривилегированныйРежим(Истина);
ДоступныИдентификаторыОбъектовРасширений =
ЗначениеЗаполнено(ПараметрыСеанса.ПодключенныеРасширения)
И Справочники.ВерсииРасширений.УстановленныеРасширенияДоступны();
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных();
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ПолныеИмена", ПолныеИменаОбъектовМетаданных);
@@ -2553,6 +2637,7 @@
Выгрузка.Индексы.Добавить("ПолноеИмя");
Ошибки = Новый Массив;
ДобавитьУточнениеОшибкиПараметровРаботыПрограммыДляРазработчика = Ложь;
ИдентификаторыИзКлючей = Неопределено;
@@ -2565,6 +2650,9 @@
// Если идентификатор не найден по полному имени, возможно что полное имя задано с ошибкой.
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъектаМетаданных);
Если ОбъектМетаданных = Неопределено Тогда
Если КромеНесуществующих Тогда
Продолжить;
КонецЕсли;
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Объект метаданных не найден по полному имени:
|""%1"".'"),
@@ -2602,6 +2690,19 @@
Продолжить;
КонецЕсли;
Расширение = ОбъектМетаданных.РасширениеКонфигурации();
Если Расширение <> Неопределено
И Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Идентификаторы объектов метаданных расширений не поддерживаются в неразделенном режиме.
|Невозможно вернуть идентификатор объекта метаданных ""%1""
|расширения ""%2"" версии ""%3"".'"),
ПолноеИмяОбъектаМетаданных, Расширение.Имя, Расширение.Версия);
Ошибки.Добавить(ОписаниеОшибки);
Продолжить;
КонецЕсли;
Если СтандартныеПодсистемыСервер.ВерсияПрограммыОбновленаДинамически() Тогда
Если ИдентификаторыИзКлючей = Неопределено Тогда
ИдентификаторыИзКлючей = ИдентификаторыИзКлючей();
@@ -2614,14 +2715,13 @@
Продолжить;
КонецЕсли;
ШаблонОшибки = ?(ДоступныИдентификаторыОбъектовРасширений,
ШаблонОшибки = ?(Расширение <> Неопределено,
НСтр("ru = 'Для объекта метаданных ""%1""
|не найден идентификатор в справочнике ""Идентификаторы объектов метаданных"" и
|регистре сведений ""Идентификаторы объектов версий расширений"".'"),
|не найден идентификатор в регистре сведений ""Идентификаторы объектов версий расширений"".'"),
НСтр("ru = 'Для объекта метаданных ""%1""
|не найден идентификатор в справочнике ""Идентификаторы объектов метаданных"".'"));
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ПолноеИмяОбъектаМетаданных)
+ СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика();
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ПолноеИмяОбъектаМетаданных);
ДобавитьУточнениеОшибкиПараметровРаботыПрограммыДляРазработчика = Истина;
Ошибки.Добавить(ОписаниеОшибки);
Продолжить;
@@ -2633,8 +2733,8 @@
|регистре сведений ""Идентификаторы объектов версий расширений"".'"),
НСтр("ru = 'Для объекта метаданных ""%1""
|найдено несколько идентификаторов в справочнике ""Идентификаторы объектов метаданных"".'"));
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ПолноеИмяОбъектаМетаданных)
+ СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика();
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ПолноеИмяОбъектаМетаданных);
ДобавитьУточнениеОшибкиПараметровРаботыПрограммыДляРазработчика = Истина;
Ошибки.Добавить(ОписаниеОшибки);
Продолжить;
@@ -2660,6 +2760,7 @@
ПолноеИмяОбъектаМетаданных, НазваниеСправочника, РезультатПроверки.ОбъектМетаданных);
КонецЕсли;
ДобавитьУточнениеОшибкиПараметровРаботыПрограммыДляРазработчика = Истина;
Ошибки.Добавить(ОписаниеОшибки);
Продолжить;
КонецЕсли;
@@ -2696,8 +2797,8 @@
КонецЕсли;
КонецЦикла;
ТекстВсехОшибок = ТекстВсехОшибок
+ СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика();
ТекстВсехОшибок = ТекстВсехОшибок + ?(ДобавитьУточнениеОшибкиПараметровРаботыПрограммыДляРазработчика,
СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), "");
ВызватьИсключение ЗаголовокОшибки + Разделитель + ТекстВсехОшибок;
КонецЕсли;
@@ -2990,13 +3091,39 @@
+ СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика();
КонецЕсли;
ОбъектыМетаданныхИдентификаторов.Вставить(Свойства.Ссылка, РезультатПроверки.ОбъектМетаданных);
ОписаниеОбъектаМетаданных = Новый Структура("Объект, Ключ", РезультатПроверки.ОбъектМетаданных);
Если РезультатПроверки.КлючОбъектаМетаданных <> Неопределено Тогда
ОписаниеОбъектаМетаданных.Ключ = РезультатПроверки.КлючОбъектаМетаданных;
Иначе
ОписаниеОбъектаМетаданных.Ключ = Свойства.ПолноеИмя;
КонецЕсли;
ОбъектыМетаданныхИдентификаторов.Вставить(Свойства.Ссылка, ОписаниеОбъектаМетаданных);
КонецЦикла;
Возврат ОбъектыМетаданныхИдентификаторов;
КонецФункции
// Для функций ОбъектыМетаданныхПоИдентификаторам, ИдентификаторыОбъектовМетаданных.
Функция КэшИдентификаторов()
КлючДанныхПовторногоИспользования = Строка(ПараметрыСеанса.КлючДанныхПовторногоИспользования);
Возврат СтандартныеПодсистемыПовтИсп.КэшИдентификаторовОбъектовМетаданных(КлючДанныхПовторногоИспользования);
КонецФункции
// Для вызова из СтандартныеПодсистемыПовтИсп.КэшИдентификаторовОбъектовМетаданных.
Функция КэшИдентификаторовОбъектовМетаданных(КлючДанныхПовторногоИспользования) Экспорт
Хранилище = Новый Структура;
Хранилище.Вставить("ИдентификаторыПоПолнымИменам", Новый Соответствие);
Хранилище.Вставить("ОписаниеОбъектовМетаданныхПоИдентификаторам", Новый Соответствие);
Возврат Новый ФиксированнаяСтруктура(Хранилище);
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции замены идентификатора в базе данных.
@@ -135,6 +135,51 @@
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<defaultPresentation>AsDescription</defaultPresentation>
<predefined>
<items id="11f4f8a3-e2c3-4d4f-b7e2-a0bfaa1f0194">
<name>РегистрСведенийНастройкиВариантовОтчетов</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="9f48c326-12f8-4b88-a79b-bdb9afebcdb5">
<name>РегистрСведенийДанныеБизнесПроцессов</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="eca991f5-cbc7-4eaf-b7e9-04e65369c25c">
<name>РегистрСведенийДополнительныеСведения</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="be5c1ebb-eafe-4294-aa88-91b181f4e9de">
<name>РегистрСведенийИсполнителиЗадач</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="59edb0b6-aebb-4b30-99fd-60134db1affb">
<name>РегистрСведенийНапоминанияПользователя</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="d8a38942-8a25-40ae-8832-e08416c8f5c1">
<name>РегистрСведенийНастройкиУчетныхЗаписейЭлектроннойПочты</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="911a6de4-2849-4b14-80e2-2bef5cad025c">
<name>РегистрСведенийПредметыПапкиВзаимодействий</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
</predefined>
<predefinedDataUpdate>DontAutoUpdate</predefinedDataUpdate>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
<defaultObjectForm>Catalog.ИдентификаторыОбъектовМетаданных.Form.ФормаЭлемента</defaultObjectForm>
@@ -135,7 +135,7 @@
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<defaultPresentation>AsDescription</defaultPresentation>
<predefinedDataUpdate>AutoUpdate</predefinedDataUpdate>
<predefinedDataUpdate>DontAutoUpdate</predefinedDataUpdate>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
<defaultObjectForm>Catalog.ИдентификаторыОбъектовРасширений.Form.ФормаЭлемента</defaultObjectForm>
@@ -72,6 +72,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -211,6 +212,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -352,6 +354,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
@@ -587,6 +590,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -666,6 +670,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1229,6 +1234,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
@@ -1351,6 +1357,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1379,6 +1386,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1482,6 +1490,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1702,6 +1711,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1766,6 +1776,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -1946,6 +1957,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -2065,6 +2077,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -2170,6 +2183,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -676,7 +676,7 @@
ИнформационныйТекст = НСтр("ru = 'График работы заполнен до %1'");
Форма.ЗаполненностьИнформационныйТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИнформационныйТекст, Формат(Форма.ДатаЗаполненности, "ДЛФ=D"));
Иначе
#Если ВебКлиент Или ТонкийКлиент Тогда
#Если ВебКлиент Или ТонкийКлиент ИЛИ МобильныйКлиент Тогда
ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса();
#Иначе
ТекущаяДата = ТекущаяДатаСеанса();
@@ -0,0 +1,484 @@
<?xml version="1.0" encoding="UTF-8"?>
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form">
<items xsi:type="form:FormGroup">
<name>ГруппаПользовательскихНастроек</name>
<id>1</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Группа пользовательских настроек</value>
</title>
<verticalStretch>false</verticalStretch>
<extendedTooltip>
<name>ГруппаПользовательскихНастроекРасширеннаяПодсказка</name>
<id>2</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>КоманднаяПанель</name>
<id>19</id>
<items xsi:type="form:Button">
<name>ФормаВключитьВозможностьРедактирования</name>
<id>23</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаВключитьВозможностьРедактированияExtendedTooltip</name>
<id>24</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ВключитьВозможностьРедактирования</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Командная панель</value>
</title>
<extendedTooltip>
<name>КоманднаяПанельРасширеннаяПодсказка</name>
<id>20</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>CommandBar</type>
<extInfo xsi:type="form:CommandBarExtInfo">
<horizontalAlign>Left</horizontalAlign>
<commandSource>Form</commandSource>
</extInfo>
</items>
<items xsi:type="form:Table">
<name>Список</name>
<id>3</id>
<title>
<key>ru</key>
<value>Список</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список</segments>
</dataPath>
<defaultItem>true</defaultItem>
<titleLocation>None</titleLocation>
<items xsi:type="form:FormField">
<name>СписокНаименование</name>
<id>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>
<items xsi:type="form:FormField">
<name>СписокСписок</name>
<id>25</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.Список</segments>
</dataPath>
<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>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ДляВнешнихПользователей</name>
<id>28</id>
<title>
<key>ru</key>
<value>ВП</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ДляВнешнихПользователей</segments>
</dataPath>
<extendedTooltip>
<name>ДляВнешнихПользователейРасширеннаяПодсказка</name>
<id>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>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>31</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.Хеш</segments>
</dataPath>
<extendedTooltip>
<name>ХешРасширеннаяПодсказка</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>ХешКонтекстноеМеню</name>
<id>32</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Ссылка</name>
<id>34</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Список.Ref</segments>
</dataPath>
<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>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>
<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>
<rowPictureDataPath xsi:type="form:DataPath">
<segments>Список.DefaultPicture</segments>
</rowPictureDataPath>
<autoMaxCardHeight>true</autoMaxCardHeight>
<extInfo xsi:type="form:DynamicListTableExtInfo">
<autoRefreshPeriod>60</autoRefreshPeriod>
<period>
<startDate>0001-01-01T00:00:00</startDate>
<endDate>0001-01-01T00:00:00</endDate>
</period>
<topLevelParent xsi:type="core:UndefinedValue"/>
<showRoot>true</showRoot>
<allowGettingCurrentRowURL>true</allowGettingCurrentRowURL>
<userSettingsGroup>ГруппаПользовательскихНастроек</userSettingsGroup>
</extInfo>
</items>
<autoCommandBar>
<name>ФормаКоманднаяПанель</name>
<id>-1</id>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
</handlers>
<windowOpeningMode>DontBlock</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoTitle>true</autoTitle>
<autoUrl>true</autoUrl>
<group>Vertical</group>
<autoFillCheck>true</autoFillCheck>
<allowFormCustomize>true</allowFormCustomize>
<enabled>true</enabled>
<showTitle>auto</showTitle>
<showCloseButton>true</showCloseButton>
<attributes>
<name>Список</name>
<id>1</id>
<valueType>
<types>DynamicList</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<mainTable>Catalog.КлючиДоступа</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
<autoSaveUserSettings>true</autoSaveUserSettings>
<getInvisibleFieldPresentations>true</getInvisibleFieldPresentations>
</extInfo>
</attributes>
<formCommands>
<name>ВключитьВозможностьРедактирования</name>
<title>
<key>ru</key>
<value>Включить возможность редактирования</value>
</title>
<id>1</id>
<toolTip>
<key>ru</key>
<value>Включить возможность редактирования только для целей поиска неисправности (требуется углубленное понимание работы механизма)</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ВключитьВозможностьРедактирования</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
</commandInterface>
<extInfo xsi:type="form:DynamicListFormExtInfo"/>
</form:Form>
@@ -0,0 +1,32 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат;
КонецЕсли;
ТолькоПросмотр = Истина;
Если Параметры.РежимВыбора Тогда
РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
Иначе
Элементы.Список.РежимВыбора = Ложь;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ВключитьВозможностьРедактирования(Команда)
ТолькоПросмотр = Ложь;
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,59 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат;
КонецЕсли;
ТолькоПросмотр = Истина;
РасшифровкаСоставаПолей = РасшифровкаСоставаПолей(Объект.СоставПолей);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ВключитьВозможностьРедактирования(Команда)
ТолькоПросмотр = Ложь;
ПоказатьПредупреждение(,
НСтр("ru = 'Ключ доступа не следует изменять, так как он сопоставлен с разными объектами.
|Чтобы исправить нестандартную проблему следует удалить ключ доступа или
|связь с ним в регистрах и выполнить процедуру обновления доступа.'"));
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция РасшифровкаСоставаПолей(СоставПолей)
ТекущееЧисло = СоставПолей;
Расшифровка = "";
НомерТабличнойЧасти = 0;
Пока ТекущееЧисло > 0 Цикл
Остаток = ТекущееЧисло - Цел(ТекущееЧисло / 16) * 16;
Если НомерТабличнойЧасти = 0 Тогда
Расшифровка = НСтр("ru = 'Шапка'") + ": " + Остаток;
Иначе
Расшифровка = Расшифровка + ", " + НСтр("ru = 'Табличная часть'") + " " + НомерТабличнойЧасти + ": " + Остаток;
КонецЕсли;
ТекущееЧисло = Цел(ТекущееЧисло / 16);
НомерТабличнойЧасти = НомерТабличнойЧасти + 1;
КонецЦикла;
Возврат Расшифровка;
КонецФункции
#КонецОбласти
@@ -0,0 +1,859 @@
<?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="16939af9-e459-43da-8e0d-5d5891af6e0c">
<producedTypes>
<objectType typeId="d8a88bf4-4b52-41df-b3c4-3fe185a72c0c" valueTypeId="9a6e2ade-0fb8-47a7-b352-5e9976696d95"/>
<refType typeId="4aaa43fc-dd07-4baf-8f05-c129c5afda80" valueTypeId="20323143-2be0-49bb-8278-74caf1ad3cfd"/>
<selectionType typeId="45cd3fda-2ea3-4b02-b973-41113cd43bca" valueTypeId="fe97e1fa-b92f-4814-ac95-547da6d196cc"/>
<listType typeId="57c42149-4074-4e33-b28c-fdf893fd6865" valueTypeId="ae1b3750-b717-47fb-9c9a-d0448d78b749"/>
<managerType typeId="00988702-a738-4521-8ed9-52f20c04c18a" valueTypeId="4cf2a3d8-e249-477e-a8cb-f96a7a9c7955"/>
</producedTypes>
<name>КлючиДоступа</name>
<synonym>
<key>ru</key>
<value>Ключи доступа</value>
</synonym>
<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>
<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>DontUse</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<objectPresentation>
<key>ru</key>
<value>Ключ доступа</value>
</objectPresentation>
<explanation>
<key>ru</key>
<value>Группа однотипных объектов или записей регистра с одинаковым доступом. Ключ доступа содержит проверяемые значения (организацию, группу доступа контрагентов, … произвольное значение), полученные через поля доступа.</value>
</explanation>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<descriptionLength>36</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
<defaultObjectForm>Catalog.КлючиДоступа.Form.ФормаЭлемента</defaultObjectForm>
<defaultListForm>Catalog.КлючиДоступа.Form.ФормаСписка</defaultListForm>
<defaultChoiceForm>Catalog.КлючиДоступа.Form.ФормаСписка</defaultChoiceForm>
<attributes uuid="1d736a09-6c8f-433a-bf5b-201996bf4c62">
<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>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="157988ad-d482-41df-b3e3-f2a0383d7130">
<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="33af87a9-db69-41da-a33a-0435da2155e3">
<name>Хеш</name>
<synonym>
<key>ru</key>
<value>Хеш</value>
</synonym>
<type>
<types>Number</types>
<numberQualifiers>
<precision>10</precision>
<nonNegative>true</nonNegative>
</numberQualifiers>
</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="c95831b4-7d1d-4a9a-b5d0-caa03c4f4eca">
<name>СоставПолей</name>
<synonym>
<key>ru</key>
<value>Состав полей</value>
</synonym>
<type>
<types>Number</types>
<numberQualifiers>
<precision>17</precision>
<nonNegative>true</nonNegative>
</numberQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Количество полей в шапке и табличных частях, которые задействованы в ключе доступа (количество закодировано в группах по 4 бита, начиная с младших).
Используется при поиске объектов и записей регистров с устаревшими ключами доступа.</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="81b63f1d-2c65-4efb-8599-8a4d97b612ab">
<name>Значение1</name>
<synonym>
<key>ru</key>
<value>Значение 1</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</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="4b13a2c6-a6ce-47a0-8d9e-1a5dbe8d4b00">
<name>Значение2</name>
<synonym>
<key>ru</key>
<value>Значение 2</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</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="d1dde981-615a-461f-b0c5-a85f51003a2c">
<name>Значение3</name>
<synonym>
<key>ru</key>
<value>Значение 3</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</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="f5970c48-63d7-4064-bdfc-482b72939347">
<name>Значение4</name>
<synonym>
<key>ru</key>
<value>Значение 4</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</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="5c8039c0-34d8-4443-bd8f-dfe3dc2977a8">
<name>Значение5</name>
<synonym>
<key>ru</key>
<value>Значение 5</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</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="335f379a-2974-44ce-a668-e7ffe2ce6263">
<producedTypes>
<objectType typeId="c91156b8-8359-4b88-bb17-214a5811aca8" valueTypeId="b03280ea-9696-4c46-bb5e-14b44be6bec5"/>
<rowType typeId="c129dccd-37e4-409e-81d9-44048a6b28a6" valueTypeId="e7949cfc-d78b-4f0b-bbb9-cd6f19c32e4a"/>
</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="7edd75a2-9d03-4330-9185-28d0f0d4a2e4">
<name>Значение6</name>
<synonym>
<key>ru</key>
<value>Значение 6</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="f7cc4f9e-cf9a-41f5-865f-d64108b981a5">
<name>Значение7</name>
<synonym>
<key>ru</key>
<value>Значение 7</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="b58f8947-344c-4902-832c-d8004da55c34">
<name>Значение8</name>
<synonym>
<key>ru</key>
<value>Значение 8</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="35cccc1d-3d67-4d39-aa79-2c30a5347587">
<name>Значение9</name>
<synonym>
<key>ru</key>
<value>Значение 9</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="b6ee01eb-31ab-4f39-b4ff-37a04e3c7f35">
<name>Значение10</name>
<synonym>
<key>ru</key>
<value>Значение 10</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
</tabularSections>
<tabularSections uuid="0776dfb2-67e0-4e11-9f94-abde790ff7e2">
<producedTypes>
<objectType typeId="5f56fdff-bec7-454e-9e8c-18f245f45892" valueTypeId="deca0f53-11d2-4a89-a013-13021e008d9a"/>
<rowType typeId="80f3f921-58c0-49e9-8f48-8e061e62ef7c" valueTypeId="9c15d3d7-fa16-499f-b1f4-879bf0338f8c"/>
</producedTypes>
<name>ТабличнаяЧасть1</name>
<synonym>
<key>ru</key>
<value>Табличная часть 1</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="9c92b833-7406-48e2-9f59-69d575a3898f">
<name>Значение1</name>
<synonym>
<key>ru</key>
<value>Значение 1</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="0cc5334f-8147-455c-8262-540324415812">
<name>Значение2</name>
<synonym>
<key>ru</key>
<value>Значение 2</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="f3c4e6db-7c4e-4027-8bfd-f7854d566fc1">
<name>Значение3</name>
<synonym>
<key>ru</key>
<value>Значение 3</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="0eeb2f75-7092-4487-891f-cdbc9aa978cb">
<name>Значение4</name>
<synonym>
<key>ru</key>
<value>Значение 4</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="4ac60443-c7cb-492f-98b4-7e48bf9bfaa6">
<name>Значение5</name>
<synonym>
<key>ru</key>
<value>Значение 5</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
</tabularSections>
<tabularSections uuid="22979d50-ea57-4fab-9673-1b537838aead">
<producedTypes>
<objectType typeId="f2898d7f-ff05-4faa-89c3-bba1ee064ab6" valueTypeId="ff1dc3c5-7d1e-46ac-b743-71078d311e96"/>
<rowType typeId="d11f0778-78de-442a-a3bd-88ed83f540bc" valueTypeId="6d8e5cb8-0325-464d-aaaa-ef525adeb89d"/>
</producedTypes>
<name>ТабличнаяЧасть2</name>
<synonym>
<key>ru</key>
<value>Табличная часть 2</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="14676ee5-c247-46c6-a37e-c4362de79bb9">
<name>Значение1</name>
<synonym>
<key>ru</key>
<value>Значение 1</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="9fa36fe3-814e-4472-94ee-5d9d2b230b24">
<name>Значение2</name>
<synonym>
<key>ru</key>
<value>Значение 2</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="4b59dc62-0352-45a8-b33b-c42f4eea75ee">
<name>Значение3</name>
<synonym>
<key>ru</key>
<value>Значение 3</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="ea8a50ce-f09c-49f7-be58-ff2864e4eaa3">
<name>Значение4</name>
<synonym>
<key>ru</key>
<value>Значение 4</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="2020d672-bef4-4b30-885e-7f41364e412b">
<name>Значение5</name>
<synonym>
<key>ru</key>
<value>Значение 5</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
</tabularSections>
<tabularSections uuid="c292ddbc-9402-4c43-93d8-f8efafa6456e">
<producedTypes>
<objectType typeId="63ba96a9-0076-4f8a-a339-664fa1b8c10d" valueTypeId="4060e2b6-842a-4863-959b-152a4287fee8"/>
<rowType typeId="936c6038-2931-46cf-99bc-316a202b7638" valueTypeId="c8938644-aa3a-4dca-b176-174d27d8673c"/>
</producedTypes>
<name>ТабличнаяЧасть3</name>
<synonym>
<key>ru</key>
<value>Табличная часть 3</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="0281cbd6-972d-4632-9a6a-f8791e2534ee">
<name>Значение1</name>
<synonym>
<key>ru</key>
<value>Значение 1</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="bae01f18-b6f3-44e4-93c3-ffcb3ef01b98">
<name>Значение2</name>
<synonym>
<key>ru</key>
<value>Значение 2</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="98d66bf0-617a-40aa-97bd-896d37a966ab">
<name>Значение3</name>
<synonym>
<key>ru</key>
<value>Значение 3</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="1847bb2f-8309-4c49-b752-ef7ec16d4230">
<name>Значение4</name>
<synonym>
<key>ru</key>
<value>Значение 4</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="ca23f432-e2a3-4385-8cc1-7e9c96f9d7a1">
<name>Значение5</name>
<synonym>
<key>ru</key>
<value>Значение 5</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
</tabularSections>
<tabularSections uuid="e1856045-f394-45b8-9f0c-298812f1f514">
<producedTypes>
<objectType typeId="cac7e327-cfce-4c34-87c5-521c594c9f18" valueTypeId="0bc6dff5-cc09-4dc4-bd80-61509460d357"/>
<rowType typeId="e1bfe5c9-03a3-4157-8bf0-ecb795ddd8a3" valueTypeId="354a056e-327b-4d94-a924-ed85cfb6618a"/>
</producedTypes>
<name>ТабличнаяЧасть4</name>
<synonym>
<key>ru</key>
<value>Табличная часть 4</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="eb175c1d-7fcb-4807-82e3-688639468116">
<name>Значение1</name>
<synonym>
<key>ru</key>
<value>Значение 1</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="4ed9c099-700f-409b-bd91-e24719046953">
<name>Значение2</name>
<synonym>
<key>ru</key>
<value>Значение 2</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="85b935b4-5eec-40cf-9d99-02cb3f599492">
<name>Значение3</name>
<synonym>
<key>ru</key>
<value>Значение 3</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="5764a412-4a20-4b2e-9905-ce74a9cac3ae">
<name>Значение4</name>
<synonym>
<key>ru</key>
<value>Значение 4</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="c4330791-d8f7-400f-b270-dee567e7a695">
<name>Значение5</name>
<synonym>
<key>ru</key>
<value>Значение 5</value>
</synonym>
<type>
<types>DefinedType.ЗначениеДоступа</types>
</type>
<toolTip>
<key>ru</key>
<value>Тоже, что реквизит Значение 1</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
</tabularSections>
<forms uuid="aab8ec4d-51de-4c1a-9794-266c119332d1">
<name>ФормаСписка</name>
<synonym>
<key>ru</key>
<value>Форма списка</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="77cb6e52-37a9-423c-8260-6998161adcb5">
<name>ФормаЭлемента</name>
<synonym>
<key>ru</key>
<value>Форма элемента</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
</mdclass:Catalog>
@@ -650,13 +650,6 @@
<skipOnInput>false</skipOnInput>
<titleLocation>None</titleLocation>
<excludedCommands>Change</excludedCommands>
<excludedCommands>Choose</excludedCommands>
<excludedCommands>Copy</excludedCommands>
<excludedCommands>Create</excludedCommands>
<excludedCommands>CreateFolder</excludedCommands>
<excludedCommands>Delete</excludedCommands>
<excludedCommands>MoveItem</excludedCommands>
<excludedCommands>SetDeletionMark</excludedCommands>
<items xsi:type="form:FormField">
<name>Представление</name>
<id>4</id>
@@ -1583,6 +1576,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -0,0 +1,82 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
// Возвращает реквизиты объекта, которые разрешается редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
Возврат Результат;
КонецФункции
// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Возвращает ссылку на справочник внешней компоненты по идентификатору и версии.
//
// Параметры:
// Идентификатор - Строка - идентификатор объекта внешнего компонента.
// Версия - Строка - (необязательный) версия компоненты.
//
// Возвращаемое значение:
// СправочникСсылка.ВнешниеКомпоненты - ссылка на контейнер внешней компоненты в информационной базе.
//
Функция НайтиПоИдентификатору(Идентификатор, Версия = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
Если Не ЗначениеЗаполнено(Версия) Тогда
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ВнешниеКомпоненты.Ссылка КАК Ссылка
|ИЗ
| Справочник.ОбщиеВнешниеКомпоненты КАК ВнешниеКомпоненты
|ГДЕ
| ВнешниеКомпоненты.Идентификатор = &Идентификатор
|
|УПОРЯДОЧИТЬ ПО
| ВнешниеКомпоненты.ДатаВерсии УБЫВ";
Иначе
Запрос.УстановитьПараметр("Версия", Версия);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ВнешниеКомпоненты.Ссылка КАК Ссылка
|ИЗ
| Справочник.ОбщиеВнешниеКомпоненты КАК ВнешниеКомпоненты
|ГДЕ
| ВнешниеКомпоненты.Идентификатор = &Идентификатор
| И ВнешниеКомпоненты.Версия = &Версия";
КонецЕсли;
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат ПустаяСсылка();
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Результат.Выгрузить()[0].Ссылка;
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -0,0 +1,387 @@
<?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="46417026-c44a-4a06-af41-9cf6495a33b4">
<producedTypes>
<objectType typeId="d7f8cb83-b0fd-4cb5-a40f-6872c9869fa4" valueTypeId="d3b236a0-5ff7-4925-a8e4-cadf5b1a6145"/>
<refType typeId="a9d51596-9576-47e4-9426-f35b081100ae" valueTypeId="8ef71878-93fc-42bb-ad99-490dc71a45d0"/>
<selectionType typeId="c880a3f7-0f8f-4ca2-a0cc-6ff7174ee047" valueTypeId="0f75a3a6-a7d2-4225-b35d-ce0faaeb2f25"/>
<listType typeId="0c480581-c3a7-456d-acc2-c1c8d3f1325a" valueTypeId="1293465e-c97f-4f49-99ee-0d2dc2f059d3"/>
<managerType typeId="6ce17795-082f-45f0-a22e-600fe646b0b5" valueTypeId="163a0c77-9c4c-4239-a15c-dcebbc6a9280"/>
</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>
<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>
<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="363c15f3-660e-4e19-b3cc-37c5d05e8d22">
<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"/>
<fillChecking>ShowError</fillChecking>
<fillValue xsi:type="core:StringValue"/>
<indexing>Index</indexing>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="eeb4b6f1-2476-467d-9862-6fe9d3013b2c">
<name>Версия</name>
<synonym>
<key>ru</key>
<value>Версия</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>20</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Версия внешней компоненты</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillChecking>ShowError</fillChecking>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="59d5cd7d-7f53-4015-89d9-bb8ad89f8c04">
<name>ДатаВерсии</name>
<synonym>
<key>ru</key>
<value>Дата версии</value>
</synonym>
<type>
<types>Date</types>
<dateQualifiers/>
</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="9d7f7dde-fea8-4064-abe2-bb7d04500cb2">
<name>ХранилищеКомпоненты</name>
<synonym>
<key>ru</key>
<value>Хранилище компоненты</value>
</synonym>
<type>
<types>ValueStorage</types>
</type>
<toolTip>
<key>ru</key>
<value>Двоичные данные внешней компоненты, содержит ZIP-архив (служебное поле)</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="3af45dae-f563-4d23-a87a-11b4d9d5d7a7">
<name>Windows_x86</name>
<synonym>
<key>ru</key>
<value>Windows x86</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="fe102b7b-b61f-4572-b2d0-c0af11bfb7d7">
<name>Windows_x86_64</name>
<synonym>
<key>ru</key>
<value>Windows x86_64</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="2cfa0db8-f0e6-4513-ab19-52dccff302bc">
<name>Linux_x86</name>
<synonym>
<key>ru</key>
<value>Linux x86</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="b9fece39-6e5d-44c0-af5c-ad13cfb71560">
<name>Linux_x86_64</name>
<synonym>
<key>ru</key>
<value>Linux x86_64</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="a9c30e99-c265-471d-9115-50ac2bb05191">
<name>Windows_x86_Firefox</name>
<synonym>
<key>ru</key>
<value>Windows x86 Firefox</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="d388c9ca-1dbd-45b9-ac33-5ffa8cb11499">
<name>Linux_x86_Firefox</name>
<synonym>
<key>ru</key>
<value>Linux x86 Firefox</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="efebb079-b913-4249-b128-e0ffc7ab43dd">
<name>Linux_x86_64_Firefox</name>
<synonym>
<key>ru</key>
<value>Linux x86_64 Firefox</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="52077ee4-fef1-451f-8338-86563ff5cf60">
<name>Windows_x86_MSIE</name>
<synonym>
<key>ru</key>
<value>Windows x86 MSIE</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="8e6780f8-8d0e-47d1-ac26-47bf5d906f61">
<name>Windows_x86_64_MSIE</name>
<synonym>
<key>ru</key>
<value>Windows x86_64 MSIE</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="fd4a26c1-31e0-4216-92e0-1e090ec4f094">
<name>Windows_x86_Chrome</name>
<synonym>
<key>ru</key>
<value>Windows x86 Chrome</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="637148a3-0f54-4d41-91dd-a0aa6e191015">
<name>Linux_x86_Chrome</name>
<synonym>
<key>ru</key>
<value>Linux x86 Chrome</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="9a86e2fe-a9bc-4f0a-a16e-a97944fe8539">
<name>Linux_x86_64_Chrome</name>
<synonym>
<key>ru</key>
<value>Linux x86_64 Chrome</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="86755cbc-efd8-43e7-bba8-975c0a51f38f">
<name>MacOS_x86_64_Safari</name>
<synonym>
<key>ru</key>
<value>Mac OS x86_64 Safari</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>
</mdclass:Catalog>
Loaded 100 of 1138 files, more files were not shown because too many files have changed in this diff. Show more