3_1_5_208

This commit is contained in:
Компания 1С committed 2021-09-30 23:11:00 +03:00
1 parent 8e46accf22
commit f3d355688f
117 files changed
+3990 -1371

No files matched your search

@@ -221,6 +221,63 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СтрокаПоиска</name>
<id>89</id>
<extendedTooltip>
<name>СтрокаПоискаРасширеннаяПодсказка</name>
<id>91</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СтрокаПоискаКонтекстноеМеню</name>
<id>90</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Валюты</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>УправлениеПоиском</name>
<id>92</id>
<extendedTooltip>
<name>УправлениеПоискомРасширеннаяПодсказка</name>
<id>94</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УправлениеПоискомКонтекстноеМеню</name>
<id>93</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Валюты</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -556,6 +556,71 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Внешние пользователи поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>ВнешниеПользователиПоиск</name>
<id>229</id>
<extendedTooltip>
<name>ВнешниеПользователиПоискРасширеннаяПодсказка</name>
<id>231</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнешниеПользователиПоискКонтекстноеМеню</name>
<id>230</id>
<autoFill>true</autoFill>
</contextMenu>
<source>ВнешниеПользователиСписок</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Внешние пользователи поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>ВнешниеПользователиПоискУправление</name>
<id>232</id>
<extendedTooltip>
<name>ВнешниеПользователиПоискУправлениеРасширеннаяПодсказка</name>
<id>234</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВнешниеПользователиПоискУправлениеКонтекстноеМеню</name>
<id>233</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>ВнешниеПользователиСписок</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -1300,6 +1300,15 @@
// Вспомогательные процедуры и функции. // Вспомогательные процедуры и функции.
// Для функции ЗарегистрированныеСсылки и процедуры ЗарегистрироватьСсылки. // Для функции ЗарегистрированныеСсылки и процедуры ЗарегистрироватьСсылки.
//
// Параметры:
// ВидСсылок - Строка
//
// Возвращаемое значение:
// Структура:
// * ДопустимыеТипы - ОписаниеТипов
// * ИмяПараметраРаботыПрограммы - Строка
//
Функция СвойстваВидаСсылок(ВидСсылок) Функция СвойстваВидаСсылок(ВидСсылок)
Если ВидСсылок = "Профили" Тогда Если ВидСсылок = "Профили" Тогда
@@ -1327,7 +1336,7 @@
ИмяПараметраРаботыПрограммы = "СтандартныеПодсистемы.УправлениеДоступом.ОграничиватьДоступНаУровнеЗаписейИзменениеПриЗагрузке"; ИмяПараметраРаботыПрограммы = "СтандартныеПодсистемы.УправлениеДоступом.ОграничиватьДоступНаУровнеЗаписейИзменениеПриЗагрузке";
ИначеЕсли ВидСсылок = "ИспользуемыеВидыДоступа" Тогда ИначеЕсли ВидСсылок = "ИспользуемыеВидыДоступа" Тогда
ДопустимыеТипы = Метаданные.ОпределяемыеТипы.ЗначениеДоступа; ДопустимыеТипы = Метаданные.ОпределяемыеТипы.ЗначениеДоступа.Тип;
ИмяПараметраРаботыПрограммы = "СтандартныеПодсистемы.УправлениеДоступом.ИспользуемыеВидыДоступаИзмененныеПриЗагрузке"; ИмяПараметраРаботыПрограммы = "СтандартныеПодсистемы.УправлениеДоступом.ИспользуемыеВидыДоступаИзмененныеПриЗагрузке";
Иначе Иначе
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -3805,6 +3805,19 @@
<common>true</common> <common>true</common>
</edit> </edit>
</attributes> </attributes>
<attributes>
<name>РазделениеВключено</name>
<id>19</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands> <formCommands>
<name>ЗагрузитьИзФайла</name> <name>ЗагрузитьИзФайла</name>
<title> <title>
@@ -85,6 +85,8 @@
УстановитьВидимостьДоступность(); УстановитьВидимостьДоступность();
РазделениеВключено = ОбщегоНазначения.РазделениеВключено();
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -862,6 +864,15 @@
ЭлементКоманда.РегламентноеЗаданиеИспользование = Ложь; ЭлементКоманда.РегламентноеЗаданиеИспользование = Ложь;
КонецЕсли; КонецЕсли;
Иначе Иначе
Если РазделениеВключено
И Расписание.ПериодПовтораВТечениеДня <> 0
И Расписание.ПериодПовтораВТечениеДня < 60 Тогда
ТекстСообщения = НСтр("ru = 'Не допускается установка интервала повтора регламентного задания менее 60 секунд.'");
ПоказатьПредупреждение(, ТекстСообщения);
Возврат;
КонецЕсли;
ЭлементКоманда.РегламентноеЗаданиеРасписание.Очистить(); ЭлементКоманда.РегламентноеЗаданиеРасписание.Очистить();
ЭлементКоманда.РегламентноеЗаданиеРасписание.Добавить(Расписание); ЭлементКоманда.РегламентноеЗаданиеРасписание.Добавить(Расписание);
Если ДополнительныеОтчетыИОбработкиКлиентСервер.РасписаниеЗадано(Расписание) Тогда Если ДополнительныеОтчетыИОбработкиКлиентСервер.РасписаниеЗадано(Расписание) Тогда
@@ -568,6 +568,34 @@
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar> <locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</items> </items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СтрокаПоиска</name>
<id>47</id>
<extendedTooltip>
<name>СтрокаПоискаРасширеннаяПодсказка</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>СтрокаПоискаКонтекстноеМеню</name>
<id>48</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
</autoCommandBar> </autoCommandBar>
<handlers> <handlers>
@@ -457,6 +457,71 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоиск</name>
<id>74</id>
<extendedTooltip>
<name>СписокПоискРасширеннаяПодсказка</name>
<id>76</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискКонтекстноеМеню</name>
<id>75</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоискУправление</name>
<id>77</id>
<extendedTooltip>
<name>СписокПоискУправлениеРасширеннаяПодсказка</name>
<id>79</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискУправлениеКонтекстноеМеню</name>
<id>78</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -457,6 +457,71 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоиск</name>
<id>74</id>
<extendedTooltip>
<name>СписокПоискРасширеннаяПодсказка</name>
<id>76</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискКонтекстноеМеню</name>
<id>75</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоискУправление</name>
<id>77</id>
<extendedTooltip>
<name>СписокПоискУправлениеРасширеннаяПодсказка</name>
<id>79</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискУправлениеКонтекстноеМеню</name>
<id>78</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -281,7 +281,6 @@
<rowsPicture xsi:type="core:PictureRef"> <rowsPicture xsi:type="core:PictureRef">
<picture>CommonPicture.Папки</picture> <picture>CommonPicture.Папки</picture>
</rowsPicture> </rowsPicture>
<searchStringLocation>None</searchStringLocation>
<viewStatusLocation>None</viewStatusLocation> <viewStatusLocation>None</viewStatusLocation>
<searchControlLocation>None</searchControlLocation> <searchControlLocation>None</searchControlLocation>
<autoMaxCardHeight>true</autoMaxCardHeight> <autoMaxCardHeight>true</autoMaxCardHeight>
@@ -301,7 +301,6 @@
<rowPictureDataPath xsi:type="form:DataPath"> <rowPictureDataPath xsi:type="form:DataPath">
<segments>Список.DefaultPicture</segments> <segments>Список.DefaultPicture</segments>
</rowPictureDataPath> </rowPictureDataPath>
<searchStringLocation>None</searchStringLocation>
<viewStatusLocation>None</viewStatusLocation> <viewStatusLocation>None</viewStatusLocation>
<searchControlLocation>None</searchControlLocation> <searchControlLocation>None</searchControlLocation>
<autoMaxCardHeight>true</autoMaxCardHeight> <autoMaxCardHeight>true</autoMaxCardHeight>
@@ -1962,8 +1962,6 @@
<rowsPicture xsi:type="core:PictureRef"> <rowsPicture xsi:type="core:PictureRef">
<picture>CommonPicture.СостоянияПользователей</picture> <picture>CommonPicture.СостоянияПользователей</picture>
</rowsPicture> </rowsPicture>
<searchStringLocation>None</searchStringLocation>
<searchControlLocation>None</searchControlLocation>
<autoMaxCardHeight>true</autoMaxCardHeight> <autoMaxCardHeight>true</autoMaxCardHeight>
<extInfo xsi:type="form:DynamicListTableExtInfo"> <extInfo xsi:type="form:DynamicListTableExtInfo">
<autoRefreshPeriod>60</autoRefreshPeriod> <autoRefreshPeriod>60</autoRefreshPeriod>
@@ -301,6 +301,97 @@
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar> <locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</items> </items>
<items xsi:type="form:Button">
<name>ФормаСправка</name>
<id>34</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСправкаРасширеннаяПодсказка</name>
<id>35</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.StandardCommand.Help</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоиск</name>
<id>28</id>
<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>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоискУправление</name>
<id>31</id>
<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>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
</autoCommandBar> </autoCommandBar>
<excludedCommands>Copy</excludedCommands> <excludedCommands>Copy</excludedCommands>
@@ -466,6 +466,71 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоиск</name>
<id>58</id>
<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>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоискУправление</name>
<id>61</id>
<extendedTooltip>
<name>СписокПоискУправлениеРасширеннаяПодсказка</name>
<id>63</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискУправлениеКонтекстноеМеню</name>
<id>62</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
</autoCommandBar> </autoCommandBar>
<handlers> <handlers>
@@ -759,10 +759,10 @@
<usePurposes>MobileDevice</usePurposes> <usePurposes>MobileDevice</usePurposes>
</forms> </forms>
<templates uuid="5189beb9-b939-4f97-aca0-c2f3492ac8b9"> <templates uuid="5189beb9-b939-4f97-aca0-c2f3492ac8b9">
<name>КомпонентаXMLDSig_3_0_1_23</name> <name>КомпонентаXMLDSig_3_0_1_25</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Компонента XMLDSig 3.0.1.23</value> <value>Компонента XMLDSig</value>
</synonym> </synonym>
<templateType>AddIn</templateType> <templateType>AddIn</templateType>
</templates> </templates>
@@ -656,6 +656,71 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Строка поиска</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СтрокаПоиска</name>
<id>62</id>
<extendedTooltip>
<name>СтрокаПоискаРасширеннаяПодсказка</name>
<id>64</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СтрокаПоискаКонтекстноеМеню</name>
<id>63</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Дополнение1</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>УправлениеПоиском</name>
<id>65</id>
<extendedTooltip>
<name>УправлениеПоискомРасширеннаяПодсказка</name>
<id>67</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УправлениеПоискомКонтекстноеМеню</name>
<id>66</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
</autoCommandBar> </autoCommandBar>
<handlers> <handlers>
@@ -36,58 +36,6 @@
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>КоманднаяПанель</name> <name>КоманднаяПанель</name>
<id>64</id> <id>64</id>
<items xsi:type="form:Button">
<name>ФормаСоздать</name>
<id>48</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСоздатьРасширеннаяПодсказка</name>
<id>49</id>
<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:Button">
<name>ФормаСкопировать</name>
<id>50</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<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>
<commandName>Form.StandardCommand.Copy</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button"> <items xsi:type="form:Button">
<name>ФормаИзменить</name> <name>ФормаИзменить</name>
<id>52</id> <id>52</id>
@@ -141,32 +89,6 @@
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar> <locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</items> </items>
<items xsi:type="form:FormGroup">
<name>ФормаСтандартныеКоманды</name>
<id>46</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Форма стандартные команды</value>
</title>
<extendedTooltip>
<name>ФормаСтандартныеКомандыРасширеннаяПодсказка</name>
<id>47</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<extInfo xsi:type="form:ButtonGroupExtInfo">
<commandSource>Form</commandSource>
</extInfo>
</items>
<items xsi:type="form:Button"> <items xsi:type="form:Button">
<name>ФормаСправка</name> <name>ФормаСправка</name>
<id>54</id> <id>54</id>
@@ -267,6 +189,7 @@
<type>CommandBar</type> <type>CommandBar</type>
<extInfo xsi:type="form:CommandBarExtInfo"> <extInfo xsi:type="form:CommandBarExtInfo">
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
<commandSource>Form</commandSource>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:Table"> <items xsi:type="form:Table">
@@ -790,9 +713,8 @@
<rowPictureDataPath xsi:type="form:DataPath"> <rowPictureDataPath xsi:type="form:DataPath">
<segments>Список.DefaultPicture</segments> <segments>Список.DefaultPicture</segments>
</rowPictureDataPath> </rowPictureDataPath>
<searchStringLocation>None</searchStringLocation> <searchStringLocation>CommandBar</searchStringLocation>
<viewStatusLocation>None</viewStatusLocation> <viewStatusLocation>None</viewStatusLocation>
<searchControlLocation>None</searchControlLocation>
<currentRowUse>SelectionPresentationAndChoice</currentRowUse> <currentRowUse>SelectionPresentationAndChoice</currentRowUse>
<autoMaxCardHeight>true</autoMaxCardHeight> <autoMaxCardHeight>true</autoMaxCardHeight>
<extInfo xsi:type="form:DynamicListTableExtInfo"> <extInfo xsi:type="form:DynamicListTableExtInfo">
@@ -1,20 +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.10570.1001"></meta></head><body> <!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.10570.1001"></meta></head><body>
<p>Описание свойств тома хранения файлов.</p> <p>Описание свойств тома хранения файлов.</p>
<p>При создании нового тома автоматически проверяется доступ к указанному в поле <strong>Полный путь</strong> каталогу, в случае ошибки выводится соответствующее сообщение. Уже созданному тому нельзя поменять пути.</p> <p>При создании нового тома автоматически проверяется доступ к указанному в поле <strong>Полный путь</strong> каталогу, в случае ошибки выводится соответствующее сообщение. Уже созданному тому нельзя поменять пути.</p>
<p>Поля <b>Полный путь для сервера 1С:Предприятия под управлением Microsoft Windows</b> и <b>Полный пусть для сервера 1С:Предприятия под управлением Linux</b> должны ссылаться на одну и ту же физическую сетевую папку. Нужно заполнять в том случае, если в кластере есть сервера как под управлением Microsoft Windows, так и Linux.</p>
<p>Для каждого тома необходимо указать:</p> <p>Для каждого тома необходимо указать:</p>
<ul><li><strong>Наименование</strong> - полное наименование тома для хранения файлов; <ul><li><strong>Наименование</strong> - полное наименование тома для хранения файлов;
</li> </li>
<li><strong>Код</strong> - заполняется автоматически; <li><strong>Код</strong> - заполняется автоматически;
</li> </li>
<li><strong>Полный путь </strong><strong><b><span style="font-size: 8.5pt; font-family: Verdana, sans-serif;">к общей папке на компьютере</span></b> под управлением Microsoft Windows -</strong> напишите путь к каталогу тома для сервера под управлением Microsoft Windows в формате <strong>UNC - </strong>\\Имя компьютера\Наименование папки; </li></ul><p>или</p> <li><strong>Полный путь </strong><strong><b><span style="font-size: 8.5pt; font-family: Verdana, sans-serif;">к общей папке на компьютере</span></b> под управлением Microsoft Windows -</strong> напишите путь к каталогу тома для сервера под управлением Microsoft Windows в формате <strong>UNC - </strong>\\Имя компьютера\Наименование папки; </li></ul><p>или</p>
<ul><ul><li><strong>Полный путь <b><span style="font-size: 8.5pt; font-family: Verdana, sans-serif;">к общей папке на компьютере</span></b> под управлением </strong><strong>Linux</strong> - напишите путь к каталогу для сервера под управлением Linux;</li></ul><li><strong>Порядок </strong>- введите целое число, по умолчанию равно 1. Заполнение томов осуществляется по порядку заполнения (по возрастанию) до полного заполнения тома. Эту особенность можно использовать, например, для временного отключения тома путем увеличения ему порядка заполнения. <ul><li><strong>Полный путь <b><span style="font-size: 8.5pt; font-family: Verdana, sans-serif;">к общей папке на компьютере</span></b> под управлением </strong><strong>Linux</strong> - напишите путь к каталогу тома для сервера под управлением Linux;</li></ul>Поля <b>Полный путь для сервера 1С:Предприятия под управлением Microsoft Windows</b> и <b>Полный пусть для сервера 1С:Предприятия под управлением Linux</b> должны ссылаться на одну и ту же физическую сетевую папку. Нужно заполнять в том случае, если в кластере есть сервера как под управлением Microsoft Windows, так и Linux.<br><ul><li><strong>Порядок </strong>- введите целое число, по умолчанию равно 1. Заполнение томов осуществляется по порядку заполнения (по возрастанию) до полного заполнения тома. Эту особенность можно использовать, например, для временного отключения тома путем увеличения ему порядка заполнения.
</li> </li>
<li><strong>Предел, МБ</strong> -можно указать максимальный размер всех файлов на томе (квота тома). Если суммарный размер файлов в томе превышает установленную квоту, то будет использован следующий по порядку том. Если ни на одном из доступных томов не будет достаточно места для размещения файла, то информация об этом будет записана в <a href="DataProcessor.ЖурналРегистрации/Help">журнал регистрации</a> и будет выдано сообщение об ошибке. Если квота установлена равной нулю, то при размещении файлов в томе она не проверяется; <li><strong>Предел, МБ</strong> -можно указать максимальный размер всех файлов на томе (квота тома). Если суммарный размер файлов в томе превышает установленную квоту, то будет использован следующий по порядку том. Если ни на одном из доступных томов не будет достаточно места для размещения файла, то информация об этом будет записана в <a href="DataProcessor.ЖурналРегистрации/Help">журнал регистрации</a> и будет выдано сообщение об ошибке. Если квота установлена равной нулю, то при размещении файлов в томе она не проверяется;
</li> </li>
<li><strong>Текущий размер, МБ</strong> - проставляется программой автоматически по мере наполнения тома, показывает, насколько том заполнен; <li><strong>Текущий размер, МБ</strong> - проставляется программой автоматически по мере наполнения тома, показывает, насколько том заполнен;
</li> </li>
<li>На вкладке <strong>Комментарий</strong> напишите подробную информацию о томе.</li></ul><h3>Особенности заполнения поля Полный путь для Linux</h3> <li>На вкладке <strong>Комментарий</strong> напишите подробную информацию о томе.</li></ul><h3>Особенности заполнения поля Полный путь для Linux</h3>
<ul><li>Если сервер 1С:Предприятия работает под Linux, то путь к тому хранения файлов можно указать только локальный, например <strong>/home/path</strong>. Для того чтобы использовать UNC путь, нужно сделать на него ссылку. Для этого под правами администратора сделайте следующее: Поля <b>Полный путь для сервера 1С:Предприятия под управлением Microsoft Windows</b> и <b>Полный пусть для сервера 1С:Предприятия под управлением Linux</b> должны ссылаться на одну и ту же физическую сетевую папку. Нужно заполнять в том случае, если в кластере есть сервера как под управлением Microsoft Windows, так и Linux.<br><ul><li>Если сервер 1С:Предприятия работает под Linux, то путь к тому хранения файлов можно указать только локальный, например <strong>/home/path</strong>. Для того чтобы использовать UNC путь, нужно сделать на него ссылку. Для этого под правами администратора сделайте следующее:
<ul><li>выполните команду вида <strong>mkdir folder</strong>, где вместо "folder" напишите имя своего каталога. Например, в каталоге <strong>/home</strong> выполните команду <strong>mkdir shared</strong> - будет создан каталог shared с полным путем <strong>/home/shared</strong>. <ul><li>выполните команду вида <strong>mkdir folder</strong>, где вместо "folder" напишите имя своего каталога. Например, в каталоге <strong>/home</strong> выполните команду <strong>mkdir shared</strong> - будет создан каталог shared с полным путем <strong>/home/shared</strong>.
</li> </li>
<li>выполните команду вида<strong>mount -t cifs //server/share folder -o //domain/user, password=pwd</strong>, где<br>- где <strong>//server/share</strong> - UNC путь к другому компьютеру , <strong>folder</strong> - путь к каталогу на Linux компьютере, например <strong>\home\shared</strong>, <strong>//domain/user</strong> - имя домена/пользователя, если необходимо, <strong>pwd</strong> - пароль пользователя (если необходимо). <li>выполните команду вида<strong>mount -t cifs //server/share folder -o //domain/user, password=pwd</strong>, где<br>- где <strong>//server/share</strong> - UNC путь к другому компьютеру , <strong>folder</strong> - путь к каталогу на Linux компьютере, например <strong>\home\shared</strong>, <strong>//domain/user</strong> - имя домена/пользователя, если необходимо, <strong>pwd</strong> - пароль пользователя (если необходимо).
@@ -15,7 +15,8 @@
<li><strong>Полный путь Linux</strong> - путь к каталогу для сервера под управлением Linux.</li></ul><h3>Ввод тома хранения файлов</h3> <li><strong>Полный путь Linux</strong> - путь к каталогу для сервера под управлением Linux.</li></ul><h3>Ввод тома хранения файлов</h3>
<ul><li>Нажмите <strong>Создать</strong>, заполните необходимые <a href="Catalog.ТомаХраненияФайлов.Form.ФормаЭлемента/Help">поля</a>. <ul><li>Нажмите <strong>Создать</strong>, заполните необходимые <a href="Catalog.ТомаХраненияФайлов.Form.ФормаЭлемента/Help">поля</a>.
</li> </li>
<li>Необходимо указать один или несколько каталогов на жестком диске сервера, на котором работает программа, или других серверов в сети, которые будут использоваться для хранения в них всех файлов.</li></ul><h3>Правила хранения файлов в томах</h3> <li>Необходимо указать один или несколько каталогов на жестком диске сервера, на котором работает программа, или других серверов в сети, которые будут использоваться для хранения в них всех файлов. Выбранный каталог для тома хранения файлов должен иметь общий доступ. </li>
<li>При этом необходимо проверять наличие полных прав на каталог тома хранения файлов у пользователей, от имени которых запущена служба 1С:Предприятия или веб-сервера. </li></ul><h3>Правила хранения файлов в томах</h3>
<ul><li> <ul><li>
<div>Переключение флажка <strong>Хранить файлы в томах на диске</strong> обратной силы не имеет. Если хранение файлов в томах отключили, то новые файлы добавляются в саму ИБ, а старые остаются томах. При этом папка с томом будет продолжать использоваться до того, пока в базе есть хотя бы один файл. Файлы, ранее сохраненные в тома, открываются из этих томов.</div> <div>Переключение флажка <strong>Хранить файлы в томах на диске</strong> обратной силы не имеет. Если хранение файлов в томах отключили, то новые файлы добавляются в саму ИБ, а старые остаются томах. При этом папка с томом будет продолжать использоваться до того, пока в базе есть хотя бы один файл. Файлы, ранее сохраненные в тома, открываются из этих томов.</div>
</li> </li>
@@ -371,6 +371,63 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СтрокаПоиска</name>
<id>32</id>
<extendedTooltip>
<name>СтрокаПоискаРасширеннаяПодсказка</name>
<id>34</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СтрокаПоискаКонтекстноеМеню</name>
<id>33</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>УправлениеПоиском</name>
<id>35</id>
<extendedTooltip>
<name>УправлениеПоискомРасширеннаяПодсказка</name>
<id>37</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УправлениеПоискомКонтекстноеМеню</name>
<id>36</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
</autoCommandBar> </autoCommandBar>
<handlers> <handlers>
@@ -440,6 +440,26 @@
</picture> </picture>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:FormGroup">
<name>НастройкаПорядкаЭлементов</name>
<id>58</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>НастройкаПорядкаЭлементовРасширеннаяПодсказка</name>
<id>59</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<extInfo xsi:type="form:ButtonGroupExtInfo"/>
</items>
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>СтандартныеКомандыФормы</name> <name>СтандартныеКомандыФормы</name>
<id>48</id> <id>48</id>
@@ -492,6 +512,63 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СтрокаПоиска</name>
<id>52</id>
<extendedTooltip>
<name>СтрокаПоискаРасширеннаяПодсказка</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>СтрокаПоискаКонтекстноеМеню</name>
<id>53</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>УправлениеПоиском</name>
<id>55</id>
<extendedTooltip>
<name>УправлениеПоискомРасширеннаяПодсказка</name>
<id>57</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УправлениеПоискомКонтекстноеМеню</name>
<id>56</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
</autoCommandBar> </autoCommandBar>
<handlers> <handlers>
@@ -363,9 +363,6 @@
<rowPictureDataPath xsi:type="form:DataPath"> <rowPictureDataPath xsi:type="form:DataPath">
<segments>Список.DefaultPicture</segments> <segments>Список.DefaultPicture</segments>
</rowPictureDataPath> </rowPictureDataPath>
<searchStringLocation>None</searchStringLocation>
<viewStatusLocation>None</viewStatusLocation>
<searchControlLocation>None</searchControlLocation>
<autoMaxCardHeight>true</autoMaxCardHeight> <autoMaxCardHeight>true</autoMaxCardHeight>
<extInfo xsi:type="form:DynamicListTableExtInfo"> <extInfo xsi:type="form:DynamicListTableExtInfo">
<autoRefreshPeriod>60</autoRefreshPeriod> <autoRefreshPeriod>60</autoRefreshPeriod>
@@ -302,6 +302,10 @@
<metadata>InformationRegister.ОчередьИзвлеченияТекста</metadata> <metadata>InformationRegister.ОчередьИзвлеченияТекста</metadata>
<use>DontUse</use> <use>DontUse</use>
</content> </content>
<content>
<metadata>Constant.ПутьКТомуБезУчетаРегиональныхНастроек</metadata>
<use>DontUse</use>
</content>
<content> <content>
<metadata>Constant.МаксимальныйРазмерФайла</metadata> <metadata>Constant.МаксимальныйРазмерФайла</metadata>
<use>DontUse</use> <use>DontUse</use>
@@ -41,29 +41,8 @@
Отбор = Новый Структура("Корреспондент", Корреспондент); Отбор = Новый Структура("Корреспондент", Корреспондент);
ЗначенияЗаполнения = Новый Структура("Корреспондент", Корреспондент); ЗначенияЗаполнения = Новый Структура("Корреспондент", Корреспондент);
РезультатПроверки = ЭтоОбменВРежимеСервисаЧерезWS(Корреспондент);
Если РезультатПроверки.РазделениеВключено Тогда
Если РезультатПроверки.ВидТранспортаПоУмолчанию = ПредопределенноеЗначение("Перечисление.ВидыТранспортаСообщенийОбмена.WS")
Или РезультатПроверки.ВидТранспортаПоУмолчанию = ПредопределенноеЗначение("Перечисление.ВидыТранспортаСообщенийОбмена.WSПассивныйРежим") Тогда
РазрешенныеНастройкиТранспорта = Новый Массив;
РазрешенныеНастройкиТранспорта.Добавить(РезультатПроверки.ВидТранспортаПоУмолчанию);
ПараметрыОткрытияФормы = Новый Структура;
ПараметрыОткрытияФормы.Вставить("РазрешенныеНастройкиТранспорта", РазрешенныеНастройкиТранспорта);
Иначе
ТекстИсключения = НСтр("ru ='Настройка транспорта сообщений в режиме сервиса актуальна только для синхронизаций использующих ВЕБ-сервисы'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецЕсли;
ОбменДаннымиКлиент.ОткрытьФормуЗаписиРегистраСведенийПоОтбору(Отбор, ОбменДаннымиКлиент.ОткрытьФормуЗаписиРегистраСведенийПоОтбору(Отбор,
ЗначенияЗаполнения, "НастройкиТранспортаОбменаДанными", ПараметрыВыполненияКоманды.Источник, , ПараметрыОткрытияФормы); ЗначенияЗаполнения, "НастройкиТранспортаОбменаДанными", ПараметрыВыполненияКоманды.Источник);
КонецПроцедуры КонецПроцедуры
@@ -78,14 +57,4 @@
КонецФункции КонецФункции
&НаСервере
Функция ЭтоОбменВРежимеСервисаЧерезWS(Корреспондент)
РезультатПроверки = Новый Структура;
РезультатПроверки.Вставить("РазделениеВключено", ОбщегоНазначения.РазделениеВключено());
РезультатПроверки.Вставить("ВидТранспортаПоУмолчанию", РегистрыСведений.НастройкиТранспортаОбменаДанными.ВидТранспортаСообщенийОбменаПоУмолчанию(Корреспондент));
Возврат РезультатПроверки;
КонецФункции
#КонецОбласти #КонецОбласти
@@ -17,7 +17,7 @@
ПараметрыФормы = Новый Структура(); ПараметрыФормы = Новый Структура();
Если ПараметрыРезервногоКопирования.Свойство("РезультатКопирования") Тогда Если ПараметрыРезервногоКопирования.Свойство("РезультатКопирования") Тогда
ПараметрыФормы.Вставить("РежимРаботы", ?(ПараметрыРезервногоКопирования.РезультатКопирования, "УспешноВыполнено", "НеВыполнено")); ПараметрыФормы.Вставить("РежимРаботы", ?(ПараметрыРезервногоКопирования.РезультатКопирования = Истина, "УспешноВыполнено", "НеВыполнено"));
ПараметрыФормы.Вставить("ИмяФайлаРезервнойКопии", ПараметрыРезервногоКопирования.ИмяФайлаРезервнойКопии); ПараметрыФормы.Вставить("ИмяФайлаРезервнойКопии", ПараметрыРезервногоКопирования.ИмяФайлаРезервнойКопии);
КонецЕсли; КонецЕсли;
@@ -5,5 +5,6 @@
<p>В одном из полей укажите <strong>Путь к архиву с файлами начального образа</strong>:</p> <p>В одном из полей укажите <strong>Путь к архиву с файлами начального образа</strong>:</p>
<ul><li>Для сервера 1С:Предприятия под управлением Microsoft Windows - укажите путь к архиву с помощью кнопки <img src="StdPicture.InputFieldSelect"></img>; </li></ul><p>или</p> <ul><li>Для сервера 1С:Предприятия под управлением Microsoft Windows - укажите путь к архиву с помощью кнопки <img src="StdPicture.InputFieldSelect"></img>; </li></ul><p>или</p>
<ul><li>Для сервера 1С:Предприятия под управлением Linux - напишите путь к архиву.</li></ul><p>Нажмите <strong>Разместить</strong>.</p> <ul><li>Для сервера 1С:Предприятия под управлением Linux - напишите путь к архиву.</li></ul><p>Нажмите <strong>Разместить</strong>.</p>
<p>Поля <b>Полный путь для сервера 1С:Предприятия под управлением Microsoft Windows</b> и <b>Полный пусть для сервера 1С:Предприятия под управлением Linux</b> должны ссылаться на одну и ту же физическую сетевую папку. Нужно заполнять в том случае, если в кластере есть сервера как под управлением Microsoft Windows, так и Linux.</p>
<h3>См. также:</h3> <h3>См. также:</h3>
<ul><li><a href="Catalog.Файлы/Help">Общая информация о файлах</a>.</li></ul></body></html> <ul><li><a href="Catalog.Файлы/Help">Общая информация о файлах</a>.</li></ul></body></html>
@@ -3,11 +3,16 @@
<p>Открывается из <a href="id7e32c295-a769-4cff-a3eb-992f7031475f/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">списка файлов</a> (<a href="idc13fb1cd-fe72-48a6-b383-55b6323619ce/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">списка присоединенных файлов объекта</a>), списка <a href="idb3554203-b930-496d-a712-353bc13a0946/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">Присоединенные файлы</a>по кнопке <img src="CommonPicture.ПодписанЗашифрованЗаголовок"></img> <strong>Электронная подпись и шифрование - Добавить электронную подпись из файла</strong>. Также можно найти эту команду в меню <strong>Еще</strong> <a href="id526c688e-a4d4-45f7-8bba-b8ceff38fe27/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">карточки файла</a> (<a href="id59775ce0-f778-45f6-9453-bbd0a0ec1f27/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">карточки присоединенного файла</a>). </p> <p>Открывается из <a href="id7e32c295-a769-4cff-a3eb-992f7031475f/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">списка файлов</a> (<a href="idc13fb1cd-fe72-48a6-b383-55b6323619ce/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">списка присоединенных файлов объекта</a>), списка <a href="idb3554203-b930-496d-a712-353bc13a0946/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">Присоединенные файлы</a>по кнопке <img src="CommonPicture.ПодписанЗашифрованЗаголовок"></img> <strong>Электронная подпись и шифрование - Добавить электронную подпись из файла</strong>. Также можно найти эту команду в меню <strong>Еще</strong> <a href="id526c688e-a4d4-45f7-8bba-b8ceff38fe27/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">карточки файла</a> (<a href="id59775ce0-f778-45f6-9453-bbd0a0ec1f27/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">карточки присоединенного файла</a>). </p>
<p>В списке выводится:</p> <p>В списке выводится:</p>
<ul><li><strong>Файл электронной подписи</strong> - путь к файлу, содержащему электронную подпись. <ul><li><strong>Файл электронной подписи</strong> - путь к файлу, содержащему электронную подпись.
</li><li><strong>Комментарий</strong> - сведения, которые поясняют добавляемую электронную подпись.</li></ul><h3>Добавление электронной подписи из файла</h3> </li>
<ul><li>Выберите один или несколько файлов с электронными подписями. <li><strong>Комментарий</strong> - сведения, которые поясняют добавляемую электронную подпись.</li></ul><h3>Добавление электронной подписи из файла</h3>
</li><li>Нажмите <strong>Добавить</strong>,с помощью кнопки <img src="StdPicture.InputFieldSelect"></img> укажите путь к файлу подписи на жестком или сетевом диске. <ul><li>Выберите один или несколько файлов с электронными подписями. Поддерживается только отсоединенная подпись. Расширение файла подписи должно быть .p7s. Формат отсоединенной подписи PKS#7, причем в нее обязательно должен быть включен сертификат, которым выполнена подпись. Если не включен, будет ошибка при проверке подписи и при добавлении из файла. Подписи файлов сохраняются в информационной базе, в отличие от самих файлов, которые также могут храниться в томах.</li>
</li><li>Напишите <strong>Комментарий</strong> к подписи.</li></ul><h3>Удаление электронной подписи</h3> <li>На данный момент не поддерживается работа с присоединенной подписью в формате PKC#7. </li>
<li>Нажмите <strong>Добавить</strong>,с помощью кнопки <img src="StdPicture.InputFieldSelect"></img> укажите путь к файлу подписи на жестком или сетевом диске.
</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>См. также:</h3>
<ul style="MARGIN-RIGHT: 0px" dir="ltr"><li><a href="ide7b0ae70-0192-456c-9dc5-e66049fa9df2/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">Общая информация о файлах</a>; <ul style="MARGIN-RIGHT: 0px" dir="ltr"><li><a href="ide7b0ae70-0192-456c-9dc5-e66049fa9df2/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">Общая информация о файлах</a>;
</li><li><a href="id304525f8-c697-4835-b0a6-4ed3cbcaf3c6/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">Настройки электронной подписи и шифрования</a>; </li>
</li><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html> <li><a href="id304525f8-c697-4835-b0a6-4ed3cbcaf3c6/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">Настройки электронной подписи и шифрования</a>;
</li>
<li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -530,7 +530,8 @@
КонецФункции КонецФункции
&НаСервере &НаСервере
Процедура ВывестиРодительскиеОбъекты(ТекущийОбъект, ДеревоРодитель, ВыведенныеОбъекты, СлужебныеОбъекты = Неопределено) Процедура ВывестиРодительскиеОбъекты(ТекущийОбъект, ДеревоРодитель, ВыведенныеОбъекты,
СлужебныеОбъекты = Неопределено, ИндексСвязейОбъектов = Неопределено)
МетаданныеОбъекта = ТекущийОбъект.Метаданные(); МетаданныеОбъекта = ТекущийОбъект.Метаданные();
СписокРеквизитов = Новый СписокЗначений; СписокРеквизитов = Новый СписокЗначений;
@@ -539,6 +540,10 @@
СлужебныеОбъекты = Новый Соответствие; СлужебныеОбъекты = Новый Соответствие;
КонецЕсли; КонецЕсли;
Если ИндексСвязейОбъектов = Неопределено Тогда
ИндексСвязейОбъектов = Новый Соответствие;
КонецЕсли;
Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда
@@ -664,17 +669,25 @@
Если Выборка.Следующий() Тогда Если Выборка.Следующий() Тогда
Если ИндексСвязейОбъектов[ТекущийОбъект] = Выборка.Ссылка Тогда
Продолжить;
КонецЕсли;
ИндексСвязейОбъектов.Вставить(ТекущийОбъект, Выборка.Ссылка);
НоваяСтрока = ДобавитьСтрокуВДерево(ДеревоРодитель, Выборка, ВыведенныеОбъекты); НоваяСтрока = ДобавитьСтрокуВДерево(ДеревоРодитель, Выборка, ВыведенныеОбъекты);
Если НоваяСтрока <> Неопределено Если НоваяСтрока <> Неопределено
И Не ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, ЭлементСписка.Значение) Тогда И Не ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, ЭлементСписка.Значение) Тогда
ВывестиРодительскиеОбъекты(ЭлементСписка.Значение, НоваяСтрока, ВыведенныеОбъекты, СлужебныеОбъекты); ВывестиРодительскиеОбъекты(ЭлементСписка.Значение, НоваяСтрока, ВыведенныеОбъекты,
СлужебныеОбъекты, ИндексСвязейОбъектов);
ИначеЕсли СлужебныеОбъекты[ЭлементСписка.Значение] = Неопределено Тогда ИначеЕсли СлужебныеОбъекты[ЭлементСписка.Значение] = Неопределено Тогда
СлужебныеОбъекты.Вставить(ЭлементСписка.Значение, Истина); СлужебныеОбъекты.Вставить(ЭлементСписка.Значение, Истина);
ВывестиРодительскиеОбъекты(ЭлементСписка.Значение, ДеревоРодитель, ВыведенныеОбъекты, СлужебныеОбъекты); ВывестиРодительскиеОбъекты(ЭлементСписка.Значение, ДеревоРодитель, ВыведенныеОбъекты,
СлужебныеОбъекты, ИндексСвязейОбъектов);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -816,7 +829,8 @@
КонецФункции КонецФункции
&НаСервере &НаСервере
Процедура ВывестиПодчиненныеОбъекты(ТекущийОбъект, ДеревоРодитель, ВыведенныеОбъекты, СлужебныеОбъекты = Неопределено) Процедура ВывестиПодчиненныеОбъекты(ТекущийОбъект, ДеревоРодитель, ВыведенныеОбъекты,
СлужебныеОбъекты = Неопределено, ИндексСвязейОбъектов = Неопределено)
Таблица = ОбъектыПоКритериюОтбора(ТекущийОбъект); Таблица = ОбъектыПоКритериюОтбора(ТекущийОбъект);
Если Таблица = Неопределено Тогда Если Таблица = Неопределено Тогда
@@ -827,6 +841,10 @@
СлужебныеОбъекты = Новый Соответствие; СлужебныеОбъекты = Новый Соответствие;
КонецЕсли; КонецЕсли;
Если ИндексСвязейОбъектов = Неопределено Тогда
ИндексСвязейОбъектов = Новый Соответствие;
КонецЕсли;
КэшПоТипамОбъектов = Новый Соответствие; КэшПоТипамОбъектов = Новый Соответствие;
КэшРеквизитовОбъекта = Новый Соответствие; КэшРеквизитовОбъекта = Новый Соответствие;
@@ -914,17 +932,25 @@
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
Если ИндексСвязейОбъектов[ТекущийОбъект] = Выборка.Ссылка Тогда
Продолжить;
КонецЕсли;
ИндексСвязейОбъектов.Вставить(ТекущийОбъект, Выборка.Ссылка);
НоваяСтрока = ДобавитьСтрокуВДерево(ДеревоРодитель, Выборка, ВыведенныеОбъекты, Истина); НоваяСтрока = ДобавитьСтрокуВДерево(ДеревоРодитель, Выборка, ВыведенныеОбъекты, Истина);
Если НоваяСтрока <> Неопределено Если НоваяСтрока <> Неопределено
И Не ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, Выборка.Ссылка) Тогда И Не ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, Выборка.Ссылка) Тогда
ВывестиПодчиненныеОбъекты(Выборка.Ссылка, НоваяСтрока, ВыведенныеОбъекты, СлужебныеОбъекты); ВывестиПодчиненныеОбъекты(Выборка.Ссылка, НоваяСтрока, ВыведенныеОбъекты,
СлужебныеОбъекты, ИндексСвязейОбъектов);
ИначеЕсли СлужебныеОбъекты[Выборка.Ссылка] = Неопределено Тогда ИначеЕсли СлужебныеОбъекты[Выборка.Ссылка] = Неопределено Тогда
СлужебныеОбъекты.Вставить(Выборка.Ссылка, Истина); СлужебныеОбъекты.Вставить(Выборка.Ссылка, Истина);
ВывестиПодчиненныеОбъекты(Выборка.Ссылка, ДеревоРодитель, ВыведенныеОбъекты, СлужебныеОбъекты); ВывестиПодчиненныеОбъекты(Выборка.Ссылка, ДеревоРодитель, ВыведенныеОбъекты,
СлужебныеОбъекты, ИндексСвязейОбъектов);
КонецЕсли; КонецЕсли;
@@ -3,12 +3,16 @@
<p>Открывается при выполнении команды <img src="CommonPicture.ПодписанЗашифрованЗаголовок"></img> <strong>Электронные подписи и шифрование -</strong> <strong>Сохранить вместе с электронной подписью</strong>, например, из <a href="Catalog.Файлы.Form.Файлы/Help">списка файлов</a>, <a href="DataProcessor.РаботаСФайлами.Form.ПрисоединенныеФайлы/Help">присоединенных файлов</a> или <a href="Catalog.Файлы.Form.ФормаЭлемента/Help">карточки файла</a> (<a href="DataProcessor.РаботаСФайлами.Form.ПрисоединенныйФайл/Help">карточки присоединенного файла</a>), если <a href="CommonForm.НастройкиЭлектроннойПодписиИШифрования/Help">персональная настройка</a> действий <strong>При сохранении с электронной подписью</strong> установлена в "Спрашивать". Команду можно найти в панели навигации или в меню <strong>Еще</strong>, а также в контекстном меню по правой кнопке мыши.</p> <p>Открывается при выполнении команды <img src="CommonPicture.ПодписанЗашифрованЗаголовок"></img> <strong>Электронные подписи и шифрование -</strong> <strong>Сохранить вместе с электронной подписью</strong>, например, из <a href="Catalog.Файлы.Form.Файлы/Help">списка файлов</a>, <a href="DataProcessor.РаботаСФайлами.Form.ПрисоединенныеФайлы/Help">присоединенных файлов</a> или <a href="Catalog.Файлы.Form.ФормаЭлемента/Help">карточки файла</a> (<a href="DataProcessor.РаботаСФайлами.Form.ПрисоединенныйФайл/Help">карточки присоединенного файла</a>), если <a href="CommonForm.НастройкиЭлектроннойПодписиИШифрования/Help">персональная настройка</a> действий <strong>При сохранении с электронной подписью</strong> установлена в "Спрашивать". Команду можно найти в панели навигации или в меню <strong>Еще</strong>, а также в контекстном меню по правой кнопке мыши.</p>
<p>В списке выводится:</p> <p>В списке выводится:</p>
<ul><li><strong>Сохранить</strong> - флажок. <ul><li><strong>Сохранить</strong> - флажок.
</li><li><strong>Автор подписи </strong>- представление лица, которому выдан сертификат; </li>
</li><li><strong>Дата подписи</strong>; <li><strong>Автор подписи </strong>- представление лица, которому выдан сертификат;
</li><li><strong>Комментарий</strong> - подробная информация о подписи.</li></ul><p>Установите флажки для подписей, которые надо сохранить вместе с файлом, и нажмите <strong>Выбрать</strong>.</p> </li>
<li><strong>Дата подписи</strong>;
</li>
<li><strong>Комментарий</strong> - подробная информация о подписи.</li></ul><p>Установите флажки для подписей, которые надо сохранить вместе с файлом, и нажмите <strong>Выбрать</strong>.</p>
<p>Предусмотрено сохранение сертификата вместе с электронной подписью. Для этого включите флажок <strong>Сохранять сертификат вместе с подписью</strong>.</p> <p>Предусмотрено сохранение сертификата вместе с электронной подписью. Для этого включите флажок <strong>Сохранять сертификат вместе с подписью</strong>.</p>
<p>Для того чтобы не видеть это окно и всегда сохранять все подписи, включите флажок <strong>Больше не спрашивать</strong>. </p> <p>Для того чтобы не видеть это окно и всегда сохранять все подписи, включите флажок <strong>Больше не спрашивать</strong>. </p>
<h3>См. также:</h3> <p>Файл электронной подписи сохраняется с расширением .p7s, поддерживается работа только с отсоединенной подписью в формате PKC#7, </p>На данный момент не поддерживается работа с присоединенной подписью в формате PKC#7. <br><h3>См. также:</h3>
<ul dir="ltr"><li> <ul dir="ltr"><li>
<div style="MARGIN-RIGHT: 0px"><a href="Catalog.Файлы/Help">Общая информация о файлах</a>;</div> <div style="MARGIN-RIGHT: 0px"><a href="Catalog.Файлы/Help">Общая информация о файлах</a>;</div>
</li><li><a href="CommonForm.НастройкиЭлектроннойПодписиИШифрования/Help">Настройки электронной подписи и шифрования</a>.</li></ul></body></html> </li>
<li><a href="CommonForm.НастройкиЭлектроннойПодписиИШифрования/Help">Настройки электронной подписи и шифрования</a>.</li></ul></body></html>
@@ -418,7 +418,6 @@
<rowsPicture xsi:type="core:PictureRef"> <rowsPicture xsi:type="core:PictureRef">
<picture>CommonPicture.КоллекцияПиктограммФайлов</picture> <picture>CommonPicture.КоллекцияПиктограммФайлов</picture>
</rowsPicture> </rowsPicture>
<searchStringLocation>None</searchStringLocation>
<viewStatusLocation>None</viewStatusLocation> <viewStatusLocation>None</viewStatusLocation>
<searchControlLocation>None</searchControlLocation> <searchControlLocation>None</searchControlLocation>
<autoMaxCardHeight>true</autoMaxCardHeight> <autoMaxCardHeight>true</autoMaxCardHeight>
@@ -5793,6 +5793,7 @@
ТипЭлемента = ТипЗнч(ЭлементНастройки); ТипЭлемента = ТипЗнч(ЭлементНастройки);
Если ЭлементНастройки <> Неопределено Если ЭлементНастройки <> Неопределено
И ТипЭлемента <> Тип("ПолеГруппировкиКомпоновкиДанных") И ТипЭлемента <> Тип("ПолеГруппировкиКомпоновкиДанных")
И ТипЭлемента <> Тип("АвтоПолеГруппировкиКомпоновкиДанных")
И ТипЭлемента <> Тип("АвтоЭлементПорядкаКомпоновкиДанных") И ТипЭлемента <> Тип("АвтоЭлементПорядкаКомпоновкиДанных")
И ТипЭлемента <> Тип("ЭлементПорядкаКомпоновкиДанных") И ТипЭлемента <> Тип("ЭлементПорядкаКомпоновкиДанных")
И ТипЭлемента <> Тип("ЭлементУсловногоОформленияКомпоновкиДанных") И ТипЭлемента <> Тип("ЭлементУсловногоОформленияКомпоновкиДанных")
@@ -702,7 +702,7 @@
&НаКлиенте &НаКлиенте
Процедура НастройкиПоУмолчанию(Команда) Процедура НастройкиПоУмолчанию(Команда)
ПараметрыЗаполнения = Новый Структура; ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("ИмяСобытия", "НастройкиПоУмолчанию"); ПараметрыЗаполнения.Вставить("ИмяСобытия", ОтчетыКлиентСервер.ИмяСобытияНастройкиПоУмолчанию());
Если ВариантМодифицирован Тогда Если ВариантМодифицирован Тогда
ПараметрыЗаполнения.Вставить("СброситьНастройкиВарианта", Истина); ПараметрыЗаполнения.Вставить("СброситьНастройкиВарианта", Истина);
@@ -712,6 +712,8 @@
ПараметрыЗаполнения.Вставить("СброситьПользовательскиеНастройки", Истина); ПараметрыЗаполнения.Вставить("СброситьПользовательскиеНастройки", Истина);
ПараметрыЗаполнения.Вставить("ПользовательскиеНастройкиМодифицированы", Истина); ПараметрыЗаполнения.Вставить("ПользовательскиеНастройкиМодифицированы", Истина);
НастройкиОтчета.Вставить("ОтчетСформирован", Ложь);
ОбновитьЭлементыФормыНастроек(ПараметрыЗаполнения); ОбновитьЭлементыФормыНастроек(ПараметрыЗаполнения);
КонецПроцедуры КонецПроцедуры
@@ -1256,6 +1258,7 @@
Если ФоновоеЗаданиеИдентификатор <> ПараметрыФормирования.ИдентификаторЗадания Тогда Если ФоновоеЗаданиеИдентификатор <> ПараметрыФормирования.ИдентификаторЗадания Тогда
ПоказатьВыбранныйУровеньГруппировок(); ПоказатьВыбранныйУровеньГруппировок();
ПереопределитьРезультатФормированияОтчета(Результат);
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -1291,17 +1294,31 @@
МодульОценкаПроизводительностиКлиент.ЗавершитьЗамерВремени(ИдентификаторЗамера); МодульОценкаПроизводительностиКлиент.ЗавершитьЗамерВремени(ИдентификаторЗамера);
КонецЕсли; КонецЕсли;
ОтчетСформирован = ?(Результат = Неопределено, Ложь, Результат.Статус = "Выполнено"); ПереопределитьРезультатФормированияОтчета(Результат);
СброситьТекущуюОбласть();
ПоказатьВыбранныйУровеньГруппировок();
КонецПроцедуры
&НаКлиенте
Процедура ПереопределитьРезультатФормированияОтчета(Результат)
ОтчетСформирован = ОтчетСформирован(Результат);
ИнтеграцияПодсистемБСПКлиент.ПослеФормирования(ЭтотОбъект, ОтчетСформирован); ИнтеграцияПодсистемБСПКлиент.ПослеФормирования(ЭтотОбъект, ОтчетСформирован);
ОтчетыКлиентПереопределяемый.ПослеФормирования(ЭтотОбъект, ОтчетСформирован); ОтчетыКлиентПереопределяемый.ПослеФормирования(ЭтотОбъект, ОтчетСформирован);
СброситьТекущуюОбласть();
ПоказатьВыбранныйУровеньГруппировок();
НастройкиОтчета.Вставить("ОтчетСформирован", ОтчетСформирован); НастройкиОтчета.Вставить("ОтчетСформирован", ОтчетСформирован);
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Функция ОтчетСформирован(Результат)
Возврат ?(Результат = Неопределено, Ложь, Результат.Статус = "Выполнено");
КонецФункции
&НаСервере &НаСервере
Функция РезультатФормированияОтчета(Знач ФормированиеПриОткрытии, Непосредственно) Функция РезультатФормированияОтчета(Знач ФормированиеПриОткрытии, Непосредственно)
@@ -3368,7 +3385,10 @@
Процедура ЗагрузитьВариант(КлючВарианта) Процедура ЗагрузитьВариант(КлючВарианта)
Если Не РежимРасшифровки И Не ВариантМодифицирован Тогда Если Не РежимРасшифровки И Не ВариантМодифицирован Тогда
КлючОбъекта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( КлючОбъекта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1/%2/ТекущиеПользовательскиеНастройки'"), НастройкиОтчета.ПолноеИмя, КлючТекущегоВарианта); НСтр("ru = '%1/%2/%3'"),
НастройкиОтчета.ПолноеИмя,
КлючТекущегоВарианта,
"ТекущиеПользовательскиеНастройки");
ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить( ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить(
КлючОбъекта, "", Отчет.КомпоновщикНастроек.ПользовательскиеНастройки); КлючОбъекта, "", Отчет.КомпоновщикНастроек.ПользовательскиеНастройки);
@@ -3743,7 +3763,10 @@
КонецЕсли; КонецЕсли;
ОтчетыСервер.УстановитьДоступныеЗначения(ОтчетОбъект, ЭтотОбъект); ОтчетыСервер.УстановитьДоступныеЗначения(ОтчетОбъект, ЭтотОбъект);
ОтчетыСервер.ИнициализироватьПредопределенныеПараметрыВывода(НастройкиОтчета, Отчет.КомпоновщикНастроек.Настройки); ОтчетыСервер.ИнициализироватьПредопределенныеПараметрыВывода(
НастройкиОтчета,
Отчет.КомпоновщикНастроек.Настройки,
ОтчетыСервер.ТребуетсяСброситьПредопределенныеПараметрыВывода(ПараметрыЗагрузки));
Если ПараметрыЗагрузки.ВариантМодифицирован Тогда Если ПараметрыЗагрузки.ВариантМодифицирован Тогда
ВариантМодифицирован = Истина; ВариантМодифицирован = Истина;
@@ -301,6 +301,8 @@
// //
Процедура УстановитьПометкуУдаленияЗадач(БизнесПроцессСсылка, ПометкаУдаления) Экспорт Процедура УстановитьПометкуУдаленияЗадач(БизнесПроцессСсылка, ПометкаУдаления) Экспорт
ПредставлениеСсылки = Строка(БизнесПроцессСсылка);
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
Блокировка = Новый БлокировкаДанных; Блокировка = Новый БлокировкаДанных;
@@ -326,7 +328,7 @@
Исключение Исключение
ОтменитьТранзакцию(); ОтменитьТранзакцию();
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,
БизнесПроцессСсылка.Метаданные(), БизнесПроцессСсылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); БизнесПроцессСсылка.Метаданные(), ПредставлениеСсылки, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение; ВызватьИсключение;
КонецПопытки; КонецПопытки;
@@ -612,9 +612,9 @@
КонецПроцедуры КонецПроцедуры
Процедура ТекстЗапросаСпискаПредупрежденияВерсий(СписокТекстЗапроса) Экспорт Функция ТекстЗапросаСпискаПредупрежденияВерсий() Экспорт
СписокТекстЗапроса = Возврат
"ВЫБРАТЬ "ВЫБРАТЬ
| НепринятаяВерсия.АвторВерсии, | НепринятаяВерсия.АвторВерсии,
| НепринятаяВерсия.Объект, | НепринятаяВерсия.Объект,
@@ -697,7 +697,7 @@
| ВерсииДругойПрограммы.ТипВерсииОбъекта В (ЗНАЧЕНИЕ(Перечисление.ТипыВерсийОбъекта.ПринятыеДанныеПоКоллизии), | ВерсииДругойПрограммы.ТипВерсииОбъекта В (ЗНАЧЕНИЕ(Перечисление.ТипыВерсийОбъекта.ПринятыеДанныеПоКоллизии),
| ЗНАЧЕНИЕ(Перечисление.ТипыВерсийОбъекта.НеПринятыеДанныеПоКоллизии))"; | ЗНАЧЕНИЕ(Перечисление.ТипыВерсийОбъекта.НеПринятыеДанныеПоКоллизии))";
КонецПроцедуры КонецФункции
// Возвращает описание команды для добавления в отчете "Результаты проверки учета". // Возвращает описание команды для добавления в отчете "Результаты проверки учета".
// //
@@ -13,7 +13,8 @@
// Возвращаемое значение: // Возвращаемое значение:
// Структура: // Структура:
// * Кэшировать - Булево - (по умолчанию Истина) использовать механизм кэширования компонент на клиенте. // * Кэшировать - Булево - (по умолчанию Истина) использовать механизм кэширования компонент на клиенте.
// * ПредложитьУстановить - Булево - (по умолчанию Истина) предлагать устанавливать и обновлять компоненту. // * ПредложитьУстановить - Булево - (по умолчанию Истина) предлагать устанавливать компоненту.
// * ПредложитьЗагрузить - Булево - (по умолчанию Истина) предлагать загрузить компоненту с сайта ИТС.
// * ТекстПояснения - Строка - для чего нужна компонента и что не будет работать, если ее не устанавливать. // * ТекстПояснения - Строка - для чего нужна компонента и что не будет работать, если ее не устанавливать.
// * ИдентификаторыСозданияОбъектов - Массив - массив строк идентификаторов создания экземпляров модуля объекта, // * ИдентификаторыСозданияОбъектов - Массив - массив строк идентификаторов создания экземпляров модуля объекта,
// используется только для компонент, у которых есть несколько идентификаторов создания объектов, // используется только для компонент, у которых есть несколько идентификаторов создания объектов,
@@ -31,6 +32,7 @@
Параметры = Новый Структура; Параметры = Новый Структура;
Параметры.Вставить("Кэшировать", Истина); Параметры.Вставить("Кэшировать", Истина);
Параметры.Вставить("ПредложитьУстановить", Истина); Параметры.Вставить("ПредложитьУстановить", Истина);
Параметры.Вставить("ПредложитьЗагрузить", Истина);
Параметры.Вставить("ТекстПояснения", ""); Параметры.Вставить("ТекстПояснения", "");
Параметры.Вставить("ИдентификаторыСозданияОбъектов", Новый Массив); Параметры.Вставить("ИдентификаторыСозданияОбъектов", Новый Массив);
@@ -96,7 +98,11 @@
ПараметрыПодключения = ПараметрыПодключения(); ПараметрыПодключения = ПараметрыПодключения();
КонецЕсли; КонецЕсли;
Контекст = КонтекстПодключенияКомпоненты(Оповещение, Идентификатор, Версия, ПараметрыПодключения); Контекст = ОбщегоНазначенияСлужебныйКлиент.КонтекстПодключенияКомпоненты();
ЗаполнитьЗначенияСвойств(Контекст, ПараметрыПодключения);
Контекст.Оповещение = Оповещение;
Контекст.Идентификатор = Идентификатор;
Контекст.Версия = Версия;
ВнешниеКомпонентыСлужебныйКлиент.ПодключитьКомпоненту(Контекст); ВнешниеКомпонентыСлужебныйКлиент.ПодключитьКомпоненту(Контекст);
@@ -157,6 +163,8 @@
// Возвращаемое значение: // Возвращаемое значение:
// Структура: // Структура:
// * ТекстПояснения - Строка - для чего нужна компонента и что не будет работать, если ее не устанавливать. // * ТекстПояснения - Строка - для чего нужна компонента и что не будет работать, если ее не устанавливать.
// * ПредложитьЗагрузить - Булево - предложить загрузить компоненту с сайта ИТС
// * ПредложитьУстановить - Булево - (по умолчанию Ложь) предлагать устанавливать компоненту.
// //
// Пример: // Пример:
// //
@@ -169,6 +177,8 @@
Параметры = Новый Структура; Параметры = Новый Структура;
Параметры.Вставить("ТекстПояснения", ""); Параметры.Вставить("ТекстПояснения", "");
Параметры.Вставить("ПредложитьЗагрузить", Истина);
Параметры.Вставить("ПредложитьУстановить", Ложь);
Возврат Параметры; Возврат Параметры;
@@ -214,12 +224,13 @@
ПараметрыУстановки = ПараметрыУстановки(); ПараметрыУстановки = ПараметрыУстановки();
КонецЕсли; КонецЕсли;
Контекст = Новый Структура; Контекст = ОбщегоНазначенияСлужебныйКлиент.КонтекстПодключенияКомпоненты();
Контекст.Вставить("Оповещение", Оповещение); Контекст.Оповещение = Оповещение;
Контекст.Вставить("Идентификатор", Идентификатор); Контекст.Идентификатор = Идентификатор;
Контекст.Вставить("Версия", Версия); Контекст.Версия = Версия;
Контекст.Вставить("ПредложитьЗагрузить", Истина); Контекст.ТекстПояснения = ПараметрыУстановки.ТекстПояснения;
Контекст.Вставить("ТекстПояснения", ПараметрыУстановки.ТекстПояснения); Контекст.ПредложитьЗагрузить = ПараметрыУстановки.ПредложитьЗагрузить;
Контекст.ПредложитьУстановить = ПараметрыУстановки.ПредложитьУстановить;
ВнешниеКомпонентыСлужебныйКлиент.УстановитьКомпоненту(Контекст); ВнешниеКомпонентыСлужебныйКлиент.УстановитьКомпоненту(Контекст);
@@ -328,39 +339,3 @@
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Параметры:
// Оповещение - ОписаниеОповещения
// Идентификатор - Строка
// Версия - Строка
// ПараметрыПодключения - см. ПараметрыПодключения
//
// Возвращаемое значение:
// Структура:
// * Оповещение - ОписаниеОповещения
// * Идентификатор - Строка
// * Версия - Строка
// * Кэшировать - Булево
// * ПредложитьУстановить - Булево
// * ПредложитьЗагрузить - Булево
// * ТекстПояснения - Строка
// * ИдентификаторыСозданияОбъектов - Массив
//
Функция КонтекстПодключенияКомпоненты(Оповещение, Идентификатор, Версия, ПараметрыПодключения) Экспорт
Контекст = Новый Структура;
Контекст.Вставить("Оповещение", Оповещение);
Контекст.Вставить("Идентификатор", Идентификатор);
Контекст.Вставить("Версия", Версия);
Контекст.Вставить("Кэшировать", ПараметрыПодключения.Кэшировать);
Контекст.Вставить("ПредложитьУстановить", ПараметрыПодключения.ПредложитьУстановить);
Контекст.Вставить("ПредложитьЗагрузить", ПараметрыПодключения.ПредложитьУстановить);
Контекст.Вставить("ТекстПояснения", ПараметрыПодключения.ТекстПояснения);
Контекст.Вставить("ИдентификаторыСозданияОбъектов", ПараметрыПодключения.ИдентификаторыСозданияОбъектов);
Возврат Контекст;
КонецФункции
#КонецОбласти
@@ -51,6 +51,7 @@
Результат = Новый Структура; Результат = Новый Структура;
Результат.Вставить("Подключено", Ложь); Результат.Вставить("Подключено", Ложь);
Результат.Вставить("ПодключаемыйМодуль", Неопределено); Результат.Вставить("ПодключаемыйМодуль", Неопределено);
Результат.Вставить("Версия", Версия);
Результат.Вставить("ОписаниеОшибки", РезультатПроверки.ОписаниеОшибки); Результат.Вставить("ОписаниеОшибки", РезультатПроверки.ОписаниеОшибки);
Возврат Результат; Возврат Результат;
КонецЕсли; КонецЕсли;
@@ -167,26 +167,39 @@
КонецФункции КонецФункции
Функция ЭтоКомпонентаИзХранилища(Местоположение) Экспорт Процедура ПроверитьМестоположениеКомпоненты(Идентификатор, Местоположение) Экспорт
// В модели сервиса недоступно подключение необщих внешних компонент на сервере.
Если Не (ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()) Тогда
Если СтрНачинаетсяС(Местоположение, "e1cib/data/Справочник.ВнешниеКомпоненты.ХранилищеКомпоненты") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ВнешниеКомпонентыВМоделиСервиса") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ВнешниеКомпонентыВМоделиСервиса") Тогда
МодульВнешниеКомпонентыВМоделиСервисаСлужебный = ОбщегоНазначения.ОбщийМодуль("ВнешниеКомпонентыВМоделиСервисаСлужебный"); МодульВнешниеКомпонентыВМоделиСервисаСлужебный = ОбщегоНазначения.ОбщийМодуль("ВнешниеКомпонентыВМоделиСервисаСлужебный");
Если МодульВнешниеКомпонентыВМоделиСервисаСлужебный.ЭтоКомпонентаИзХранилища(Местоположение) Тогда Если МодульВнешниеКомпонентыВМоделиСервисаСлужебный.ЭтоКомпонентаИзХранилища(Местоположение) Тогда
Возврат Истина; Возврат;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Возврат Ложь; // В модели сервиса небезопасно подключать внешние компоненты на сервере 1С:Предприятие
// из справочника "Внешние компоненты" (допустимо только из справочника "Общие внешние компоненты").
Если Не (ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()) Тогда
Если Не СтрНачинаетсяС(Местоположение, "e1cib/data/Справочник.ВнешниеКомпоненты.ХранилищеКомпоненты") Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ВнешниеКомпонентыВМоделиСервиса") Тогда
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось подключить компоненту ""%1"" по причине:
|Доступ запрещен. Обратитесь к администратору сервиса, чтобы разместить внешнюю компоненту в справочник ""Общие внешние компоненты"".'"), Идентификатор);
Иначе
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось подключить компоненту ""%1"" по причине:
|Доступ запрещен.'"), Идентификатор);
КонецЕсли;
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецЕсли;
КонецФункции Если СтрНачинаетсяС(Местоположение, "e1cib/data/Справочник.ВнешниеКомпоненты.ХранилищеКомпоненты") Тогда
Возврат;
КонецЕсли;
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось подключить компоненту ""%1"" по причине:
|Недопустимое местоположение компоненты ""%2"".'"), Идентификатор, Местоположение);
КонецПроцедуры
#Область ОбработчикиСобытийПодсистемКонфигурации #Область ОбработчикиСобытийПодсистемКонфигурации
@@ -272,7 +285,7 @@
Если ПустаяСтрока(Идентификатор) Тогда Если ПустаяСтрока(Идентификатор) Тогда
КомпонентаСодержитЕдинственныйКлассОбъектов = (ПараметрыПодключения.ИдентификаторыСозданияОбъектов.Количество() = 0); КомпонентаСодержитЕдинственныйКлассОбъектов = (ПараметрыПодключения.ИдентификаторыСозданияОбъектов.Количество() = 0);
Если КомпонентаСодержитЕдинственныйКлассОбъектов Тогда Если КомпонентаСодержитЕдинственныйКлассОбъектов Тогда
ВызватьИсключение НСтр("ru = 'Не допустимо одновременно не указывать Идентификатор и ИдентификаторыСозданияОбъектов в ВнешниеКомпонентыСлужебный.ПроверитьПодключениеКомпоненты'"); ВызватьИсключение НСтр("ru = 'Недопустимо одновременно не указывать Идентификатор и ИдентификаторыСозданияОбъектов в ВнешниеКомпонентыСлужебный.ПроверитьПодключениеКомпоненты'");
КонецЕсли; КонецЕсли;
Идентификатор = СтрСоединить(ПараметрыПодключения.ИдентификаторыСозданияОбъектов, ", "); Идентификатор = СтрСоединить(ПараметрыПодключения.ИдентификаторыСозданияОбъектов, ", ");
КонецЕсли; КонецЕсли;
@@ -281,8 +294,10 @@
Результат.Вставить("Местоположение", ""); Результат.Вставить("Местоположение", "");
Результат.Вставить("Идентификатор", Идентификатор); Результат.Вставить("Идентификатор", Идентификатор);
Результат.Вставить("ОписаниеОшибки", ""); Результат.Вставить("ОписаниеОшибки", "");
Результат.Вставить("Версия", "");
Информация = ВнешниеКомпонентыСлужебныйВызовСервера.ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия); Информация = ВнешниеКомпонентыСлужебныйВызовСервера.ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия);
Результат.Вставить("Версия", Версия);
Если Информация.Состояние = "ОтключенаАдминистратором" Тогда Если Информация.Состояние = "ОтключенаАдминистратором" Тогда
Результат.ОписаниеОшибки = НСтр("ru = 'Компонента отключена администратором.'"); Результат.ОписаниеОшибки = НСтр("ru = 'Компонента отключена администратором.'");
Возврат Результат; Возврат Результат;
@@ -294,11 +309,7 @@
Результат.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не предусмотрена работа компоненты в операционной системе %1.'"), Строка(СистемнаяИнформация.ТипПлатформы)); Результат.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не предусмотрена работа компоненты в операционной системе %1.'"), Строка(СистемнаяИнформация.ТипПлатформы));
Возврат Результат; Возврат Результат;
КонецЕсли; КонецЕсли;
Если Не ЭтоКомпонентаИзХранилища(Информация.Местоположение) Тогда ПроверитьМестоположениеКомпоненты(Идентификатор, Информация.Местоположение);
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось подключить компоненту ""%1"" по причине:
|Указано недопустимое местоположение внешней компоненты ""%2"".'"), Идентификатор, Информация.Местоположение);
КонецЕсли;
Результат.Местоположение = Информация.Местоположение; Результат.Местоположение = Информация.Местоположение;
Возврат Результат; Возврат Результат;
@@ -336,6 +347,9 @@
// Идентификатор - Строка - идентификатор объекта внешней компоненты. // Идентификатор - Строка - идентификатор объекта внешней компоненты.
// Версия - Строка // Версия - Строка
// - Неопределено - версия компоненты. // - Неопределено - версия компоненты.
// ПутьКМакетуДляПоискаПоследнейВерсии
// - Неопределено
// - Строка
// //
// Возвращаемое значение: // Возвращаемое значение:
// Структура: // Структура:
@@ -345,8 +359,11 @@
// * Местоположение - Строка // * Местоположение - Строка
// * Ссылка - ЛюбаяСсылка // * Ссылка - ЛюбаяСсылка
// * Реквизиты - см. РеквизитыКомпоненты // * Реквизиты - см. РеквизитыКомпоненты
// * ПоследняяВерсияКомпонентыИзМакета
// - см. СтандартныеПодсистемыПовтИсп.ПоследняяВерсияКомпонентыИзМакета
// - Неопределено
// //
Функция ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия = Неопределено) Экспорт Функция ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия = Неопределено, ПутьКМакетуДляПоискаПоследнейВерсии = Неопределено) Экспорт
Результат = Новый Структура; Результат = Новый Структура;
Результат.Вставить("Ссылка"); Результат.Вставить("Ссылка");
@@ -355,6 +372,7 @@
Результат.Вставить("Состояние"); Результат.Вставить("Состояние");
Результат.Вставить("ДоступнаЗагрузкаИзФайла", ДоступнаЗагрузкаИзФайла()); Результат.Вставить("ДоступнаЗагрузкаИзФайла", ДоступнаЗагрузкаИзФайла());
Результат.Вставить("ДоступнаЗагрузкаСПортала", ДоступнаЗагрузкаСПортала()); Результат.Вставить("ДоступнаЗагрузкаСПортала", ДоступнаЗагрузкаСПортала());
Результат.Вставить("ПоследняяВерсияКомпонентыИзМакета");
Если ОбщегоНазначения.РазделениеВключено() Если ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ВнешниеКомпонентыВМоделиСервиса") Тогда И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ВнешниеКомпонентыВМоделиСервиса") Тогда
@@ -371,6 +389,11 @@
КонецЕсли КонецЕсли
КонецЕсли; КонецЕсли;
Если ПутьКМакетуДляПоискаПоследнейВерсии <> Неопределено Тогда
Результат.ПоследняяВерсияКомпонентыИзМакета = СтандартныеПодсистемыПовтИсп.ПоследняяВерсияКомпонентыИзМакета(
ПутьКМакетуДляПоискаПоследнейВерсии);
КонецЕсли;
Если Результат.Состояние = "НеНайдена" Тогда Если Результат.Состояние = "НеНайдена" Тогда
Возврат Результат; Возврат Результат;
КонецЕсли; КонецЕсли;
@@ -12,14 +12,16 @@
// Идентификатор - Строка // Идентификатор - Строка
// Версия - Строка // Версия - Строка
// - Неопределено // - Неопределено
// ПутьКМакетуДляПоискаПоследнейВерсии - Неопределено, Строка
// //
// Возвращаемое значение: // Возвращаемое значение:
// см. ВнешниеКомпонентыСлужебный.ИнформацияОСохраненнойКомпоненте // см. ВнешниеКомпонентыСлужебный.ИнформацияОСохраненнойКомпоненте
// //
Функция ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия = Неопределено) Экспорт Функция ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия = Неопределено, ПутьКМакетуДляПоискаПоследнейВерсии = Неопределено) Экспорт
Результат = ВнешниеКомпонентыСлужебный.ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия); Результат = ВнешниеКомпонентыСлужебный.ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия, ПутьКМакетуДляПоискаПоследнейВерсии);
Если Результат.Состояние = "НайденаВХранилище" Или Результат.Состояние = "НайденаВОбщемХранилище" Тогда Если Результат.Состояние = "НайденаВХранилище" Или Результат.Состояние = "НайденаВОбщемХранилище" Тогда
Версия = Результат.Реквизиты.Версия;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для идентификатора %1 (версия %2) получена внешняя компонента %3 (версия %4). НСтр("ru = 'Для идентификатора %1 (версия %2) получена внешняя компонента %3 (версия %4).
|Состояние: %5'"), |Состояние: %5'"),
@@ -8,40 +8,44 @@
#Область СлужебныйПрограммныйИнтерфейс #Область СлужебныйПрограммныйИнтерфейс
Функция ЭтоКомпонентаИзХранилища(Местоположение) Экспорт Процедура ПроверитьМестоположениеКомпоненты(Идентификатор, Местоположение) Экспорт
Если СтрНачинаетсяС(Местоположение, "e1cib/data/Справочник.ВнешниеКомпоненты.ХранилищеКомпоненты") Тогда Если СтрНачинаетсяС(Местоположение, "e1cib/data/Справочник.ВнешниеКомпоненты.ХранилищеКомпоненты") Тогда
Возврат Истина; Возврат;
КонецЕсли; КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ВнешниеКомпонентыВМоделиСервиса") Тогда Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ВнешниеКомпонентыВМоделиСервиса") Тогда
МодульВнешниеКомпонентыВМоделиСервисаСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ВнешниеКомпонентыВМоделиСервисаСлужебныйКлиент"); МодульВнешниеКомпонентыВМоделиСервисаСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ВнешниеКомпонентыВМоделиСервисаСлужебныйКлиент");
Если МодульВнешниеКомпонентыВМоделиСервисаСлужебныйКлиент.ЭтоКомпонентаИзХранилища(Местоположение) Тогда Если МодульВнешниеКомпонентыВМоделиСервисаСлужебныйКлиент.ЭтоКомпонентаИзХранилища(Местоположение) Тогда
Возврат Истина; Возврат;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Возврат Ложь; ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" в клиентском приложении
|по причине:
|указано некорректное местоположение внешней компоненты
|%2'"),
Идентификатор, Местоположение);
КонецФункции КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПроверитьДоступностьКомпоненты
// Параметры: // Параметры:
// Оповещение - ОписаниеОповещения // Оповещение - ОписаниеОповещения
// Контекст - см. ВнешниеКомпонентыКлиент.КонтекстПодключенияКомпоненты // Контекст - см. ОбщегоНазначенияСлужебныйКлиент.КонтекстПодключенияКомпоненты
// //
Процедура ПроверитьДоступностьКомпоненты(Оповещение, Контекст) Процедура ПроверитьДоступностьКомпоненты(Оповещение, Контекст) Экспорт
ПутьКМакетуДляПоискаПоследнейВерсии = Неопределено;
ИскатьКомпонентуПоследнейВерсии = ЗначениеЗаполнено(Контекст.ИсходноеМестоположение) И НЕ Контекст.ВыполненПоискНовойВерсии;
Если ИскатьКомпонентуПоследнейВерсии Тогда
ПутьКМакетуДляПоискаПоследнейВерсии = Контекст.ИсходноеМестоположение;
КонецЕсли;
Информация = ВнешниеКомпонентыСлужебныйВызовСервера.ИнформацияОСохраненнойКомпоненте( Информация = ВнешниеКомпонентыСлужебныйВызовСервера.ИнформацияОСохраненнойКомпоненте(
Контекст.Идентификатор, Контекст.Идентификатор, Контекст.Версия, ПутьКМакетуДляПоискаПоследнейВерсии);
Контекст.Версия);
Контекст.Вставить("Местоположение", Информация.Местоположение); Контекст.Местоположение = Информация.Местоположение;
// Информация.Состояние: // Информация.Состояние:
// * НеНайдена // * НеНайдена
@@ -50,6 +54,8 @@
// * ОтключенаАдминистратором // * ОтключенаАдминистратором
Результат = РезультатДоступностиКомпоненты(); Результат = РезультатДоступностиКомпоненты();
Результат.КомпонентаПоследнейВерсии = Информация.ПоследняяВерсияКомпонентыИзМакета;
Результат.Местоположение = Информация.Местоположение;
Если Информация.Состояние = "ОтключенаАдминистратором" Тогда Если Информация.Состояние = "ОтключенаАдминистратором" Тогда
@@ -82,6 +88,17 @@
Если ТекущийКлиентПоддерживаетсяКомпонентой(Информация.Реквизиты) Тогда Если ТекущийКлиентПоддерживаетсяКомпонентой(Информация.Реквизиты) Тогда
Результат.Доступна = Истина; Результат.Доступна = Истина;
Результат.Вставить("Версия", Информация.Реквизиты.Версия);
Если ИскатьКомпонентуПоследнейВерсии Тогда
// Версия внешней компоненты больше, чем версия макета.
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(Результат.Версия,
Результат.КомпонентаПоследнейВерсии.Версия) > 0 Тогда
Результат.КомпонентаПоследнейВерсии = Новый Структура("Идентификатор, Версия, Местоположение",
Контекст.Идентификатор, Результат.Версия, Информация.Местоположение);
КонецЕсли;
КонецЕсли;
ВыполнитьОбработкуОповещения(Оповещение, Результат); ВыполнитьОбработкуОповещения(Оповещение, Результат);
Иначе Иначе
@@ -104,6 +121,12 @@
КонецПроцедуры КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПроверитьДоступностьКомпоненты
Процедура ПроверитьДоступностьКомпонентыПослеПоискаКомпонентыНаПортале(Загружена, КонтекстПоиска) Экспорт Процедура ПроверитьДоступностьКомпонентыПослеПоискаКомпонентыНаПортале(Загружена, КонтекстПоиска) Экспорт
Оповещение = КонтекстПоиска.Оповещение; Оповещение = КонтекстПоиска.Оповещение;
@@ -128,7 +151,10 @@
Результат = Новый Структура; Результат = Новый Структура;
Результат.Вставить("Доступна", Ложь); Результат.Вставить("Доступна", Ложь);
Результат.Вставить("Версия", "");
Результат.Вставить("КомпонентаПоследнейВерсии", Неопределено);
Результат.Вставить("ОписаниеОшибки", ""); Результат.Вставить("ОписаниеОшибки", "");
Результат.Вставить("Местоположение", "");
Возврат Результат; Возврат Результат;
@@ -253,7 +279,7 @@
// * Подключено - Булево - признак подключения; // * Подключено - Булево - признак подключения;
// * ПодключаемыйМодуль - ОбъектВнешнейКомпоненты - экземпляр объекта внешней компоненты. // * ПодключаемыйМодуль - ОбъектВнешнейКомпоненты - экземпляр объекта внешней компоненты.
// * ОписаниеОшибки - Строка - краткое описание ошибки. При отмене пользователем пустая строка // * ОписаниеОшибки - Строка - краткое описание ошибки. При отмене пользователем пустая строка
// Контекст - см. ВнешниеКомпонентыКлиент.КонтекстПодключенияКомпоненты // Контекст - см. ОбщегоНазначенияСлужебныйКлиент.КонтекстПодключенияКомпоненты
// //
Процедура ПодключитьКомпонентуПослеПроверкиДоступности(Результат, Контекст) Экспорт Процедура ПодключитьКомпонентуПослеПроверкиДоступности(Результат, Контекст) Экспорт
@@ -329,7 +355,7 @@
// //
// Параметры: // Параметры:
// Подключено - Булево // Подключено - Булево
// Контекст - см. ВнешниеКомпонентыКлиент.КонтекстПодключенияКомпоненты // Контекст - см. ОбщегоНазначенияСлужебныйКлиент.КонтекстПодключенияКомпоненты
// //
Процедура ПодключитьКомпонентуИзРеестраWindowsПослеПопыткиПодключения(Подключено, Контекст) Экспорт Процедура ПодключитьКомпонентуИзРеестраWindowsПослеПопыткиПодключения(Подключено, Контекст) Экспорт
@@ -387,7 +413,7 @@
// Параметры: // Параметры:
// ИнформацияОбОшибке - ИнформацияОбОшибке // ИнформацияОбОшибке - ИнформацияОбОшибке
// СтандартнаяОбработка - Булево // СтандартнаяОбработка - Булево
// Контекст - см. ВнешниеКомпонентыКлиент.КонтекстПодключенияКомпоненты // Контекст - см. ОбщегоНазначенияСлужебныйКлиент.КонтекстПодключенияКомпоненты
// //
Процедура ПодключитьКомпонентуИзРеестраWindowsПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт Процедура ПодключитьКомпонентуИзРеестраWindowsПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
@@ -436,7 +462,7 @@
// * Подключено - Булево - признак подключения; // * Подключено - Булево - признак подключения;
// * ПодключаемыйМодуль - ОбъектВнешнейКомпоненты - экземпляр объекта внешней компоненты. // * ПодключаемыйМодуль - ОбъектВнешнейКомпоненты - экземпляр объекта внешней компоненты.
// * ОписаниеОшибки - Строка - краткое описание ошибки. При отмене пользователем пустая строка. // * ОписаниеОшибки - Строка - краткое описание ошибки. При отмене пользователем пустая строка.
// Контекст - см. ВнешниеКомпонентыКлиент.КонтекстПодключенияКомпоненты // Контекст - см. ОбщегоНазначенияСлужебныйКлиент.КонтекстПодключенияКомпоненты
// //
Процедура УстановитьКомпонентуПослеПроверкиДоступности(Результат, Контекст) Экспорт Процедура УстановитьКомпонентуПослеПроверкиДоступности(Результат, Контекст) Экспорт
@@ -284,7 +284,7 @@
ТекущаяДатаЗапрета = НачалоДня(НачалоДня) - Сутки; ТекущаяДатаЗапрета = НачалоДня(НачалоДня) - Сутки;
ПредыдущаяДатаЗапрета = НачалоДня(ТекущаяДатаЗапрета) - Сутки; ПредыдущаяДатаЗапрета = НачалоДня(ТекущаяДатаЗапрета) - Сутки;
Иначе Иначе
Возврат '00030303'; // Неизвестный формат. Возврат '39990303'; // Неизвестный формат.
КонецЕсли; КонецЕсли;
Если ЗначениеЗаполнено(ТекущаяДатаЗапрета) Тогда Если ЗначениеЗаполнено(ТекущаяДатаЗапрета) Тогда
@@ -234,7 +234,7 @@
Результат.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); Результат.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); Результат.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов")); Результат.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов"));
Результат.Колонки.Добавить("ИмяКартинки", Новый ОписаниеТипов("Строка")); Результат.Колонки.Добавить("Картинка", Новый ОписаниеТипов("Картинка"));
Результат.Колонки.Добавить("Порядок", Новый ОписаниеТипов("Число")); Результат.Колонки.Добавить("Порядок", Новый ОписаниеТипов("Число"));
Возврат Результат; Возврат Результат;
@@ -247,7 +247,7 @@
Результат.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); Результат.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); Результат.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов")); Результат.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов"));
Результат.Колонки.Добавить("ИмяКартинки", Новый ОписаниеТипов("Строка")); Результат.Колонки.Добавить("Картинка", Новый ОписаниеТипов("Картинка"));
Результат.Колонки.Добавить("Порядок", Новый ОписаниеТипов("Число")); Результат.Колонки.Добавить("Порядок", Новый ОписаниеТипов("Число"));
Возврат Результат; Возврат Результат;
@@ -354,10 +354,10 @@
ДополнительныеПараметры = JSONВЗначение(ОписаниеПоля.Маска); ДополнительныеПараметры = JSONВЗначение(ОписаниеПоля.Маска);
КонецЕсли; КонецЕсли;
ИмяКартинки = ДополнительныеПараметры["ИмяКартинки"]; Если ДополнительныеПараметры["Картинка"] <> Неопределено Тогда
Если ЗначениеЗаполнено(ИмяКартинки) Тогда Реквизит.Картинка = Новый Картинка(Base64Значение(ДополнительныеПараметры["Картинка"]));
Реквизит.Картинка = БиблиотекаКартинок[ИмяКартинки];
КонецЕсли; КонецЕсли;
Порядок = ДополнительныеПараметры["Порядок"]; Порядок = ДополнительныеПараметры["Порядок"];
Если ЗначениеЗаполнено(Порядок) Тогда Если ЗначениеЗаполнено(Порядок) Тогда
Реквизит.Порядок = Порядок; Реквизит.Порядок = Порядок;
@@ -1154,8 +1154,11 @@
КонецЕсли; КонецЕсли;
Поле.ТипЗначения = СтрокаТаблицы.ТипЗначения; Поле.ТипЗначения = СтрокаТаблицы.ТипЗначения;
ДополнительныеПараметры = Новый Структура("ИмяКартинки,Порядок"); ДополнительныеПараметры = Новый Структура("Порядок");
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, СтрокаТаблицы); ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, СтрокаТаблицы);
ДополнительныеПараметры.Вставить("Картинка", Base64Строка(СтрокаТаблицы.Картинка.ПолучитьДвоичныеДанные()));
Поле.ПараметрыРедактирования.УстановитьЗначениеПараметра("Маска", ЗначениеВJSON(ДополнительныеПараметры)); Поле.ПараметрыРедактирования.УстановитьЗначениеПараметра("Маска", ЗначениеВJSON(ДополнительныеПараметры));
КонецЦикла; КонецЦикла;
@@ -1190,9 +1193,12 @@
Поле.Поле = Элемент.Идентификатор; Поле.Поле = Элемент.Идентификатор;
Поле.ТипЗначения = Элемент.ТипЗначения; Поле.ТипЗначения = Элемент.ТипЗначения;
ДополнительныеПараметры = Новый Структура("ИмяКартинки,Порядок,ЭтоГруппа"); ДополнительныеПараметры = Новый Структура("Порядок,ЭтоГруппа");
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, Элемент); ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, Элемент);
ДополнительныеПараметры.ЭтоГруппа = ЭтоГруппа; ДополнительныеПараметры.ЭтоГруппа = ЭтоГруппа;
ДополнительныеПараметры.Вставить("Картинка", Base64Строка(Элемент.Картинка.ПолучитьДвоичныеДанные()));
Поле.ПараметрыРедактирования.УстановитьЗначениеПараметра("Маска", ЗначениеВJSON(ДополнительныеПараметры)); Поле.ПараметрыРедактирования.УстановитьЗначениеПараметра("Маска", ЗначениеВJSON(ДополнительныеПараметры));
Поле.ПутьКДанным = Элемент.Идентификатор; Поле.ПутьКДанным = Элемент.Идентификатор;
@@ -1617,7 +1623,7 @@
Группа.Идентификатор = "ЧисловыеФункции"; Группа.Идентификатор = "ЧисловыеФункции";
Группа.Представление = НСтр("ru = 'Числовые функции'"); Группа.Представление = НСтр("ru = 'Числовые функции'");
Группа.Порядок = 4; Группа.Порядок = 4;
Группа.ИмяКартинки = Метаданные.ОбщиеКартинки.ТипФункция.Имя; Группа.Картинка = БиблиотекаКартинок.ТипФункция;
Тип = Новый ОписаниеТипов("Число"); Тип = Новый ОписаниеТипов("Число");
@@ -1634,7 +1640,7 @@
Группа.Идентификатор = "СтроковыеФункции"; Группа.Идентификатор = "СтроковыеФункции";
Группа.Представление = НСтр("ru = 'Строковые функции'"); Группа.Представление = НСтр("ru = 'Строковые функции'");
Группа.Порядок = 5; Группа.Порядок = 5;
Группа.ИмяКартинки = Метаданные.ОбщиеКартинки.ТипФункция.Имя; Группа.Картинка = БиблиотекаКартинок.ТипФункция;
Тип = Новый ОписаниеТипов("Строка"); Тип = Новый ОписаниеТипов("Строка");
@@ -1658,7 +1664,7 @@
Группа.Идентификатор = "ПрочиеФункции"; Группа.Идентификатор = "ПрочиеФункции";
Группа.Представление = НСтр("ru = 'Прочие функции'"); Группа.Представление = НСтр("ru = 'Прочие функции'");
Группа.Порядок = 6; Группа.Порядок = 6;
Группа.ИмяКартинки = Метаданные.ОбщиеКартинки.ТипФункция.Имя; Группа.Картинка = БиблиотекаКартинок.ТипФункция;
ДобавитьОператорВГруппу(Группа, "?", НСтр("ru = 'Условие'"), Новый ОписаниеТипов("Булево")); ДобавитьОператорВГруппу(Группа, "?", НСтр("ru = 'Условие'"), Новый ОписаниеТипов("Булево"));
ДобавитьОператорВГруппу(Группа, "ПредопределенноеЗначение", НСтр("ru = 'ПредопределенноеЗначение'"), Новый ОписаниеТипов); ДобавитьОператорВГруппу(Группа, "ПредопределенноеЗначение", НСтр("ru = 'ПредопределенноеЗначение'"), Новый ОписаниеТипов);
@@ -1677,7 +1683,7 @@
Оператор.Идентификатор = Идентификатор; Оператор.Идентификатор = Идентификатор;
Оператор.Представление = Представление; Оператор.Представление = Представление;
Оператор.ТипЗначения = Тип; Оператор.ТипЗначения = Тип;
Оператор.ИмяКартинки = Метаданные.ОбщиеКартинки.Пустая.Имя; Оператор.Картинка = БиблиотекаКартинок.Пустая;
КонецПроцедуры КонецПроцедуры
@@ -1733,7 +1739,7 @@
Группа.Идентификатор = "АгрегатныеФункции"; Группа.Идентификатор = "АгрегатныеФункции";
Группа.Представление = НСтр("ru = 'Агрегатные функции'"); Группа.Представление = НСтр("ru = 'Агрегатные функции'");
Группа.Порядок = 5; Группа.Порядок = 5;
Группа.ИмяКартинки = Метаданные.ОбщиеКартинки.ТипФункция.Имя; Группа.Картинка = БиблиотекаКартинок.ТипФункция;
Тип = Новый ОписаниеТипов("Число"); Тип = Новый ОписаниеТипов("Число");
@@ -435,8 +435,74 @@
КонецПроцедуры КонецПроцедуры
// Устанавливает константу-признак изменения данных Процедура ИзменитьПризнакНеобходимостиОбменаДаннымиВМоделиСервиса(НеобходимоВыполнитьОбмен, ДополнительныеПараметры = Неопределено) Экспорт
// и отсылает менеджеру сервиса сообщение об изменении с номером текущей области.
НеобходимоВыполнитьОбмен = (НеобходимоВыполнитьОбмен = Истина); // Защита на не булевское значение
ИнтервалОжидания = 180; // 1 попытка в 200 секунд (180 ожидание + 20 секунд попытка блокировки платформы)
КоличествоПопыток = 65; // По умолчанию 3 часа 30 минут (12600 секунд)
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
Если ДополнительныеПараметры.Свойство("ИнтервалОжидания") Тогда
ИнтервалОжидания = ДополнительныеПараметры.ИнтервалОжидания;
КонецЕсли;
Если ДополнительныеПараметры.Свойство("КоличествоПопыток") Тогда
КоличествоПопыток = ДополнительныеПараметры.КоличествоПопыток;
КонецЕсли;
КонецЕсли;
БлокировкаДанных = Новый БлокировкаДанных;
ЭлементБлокировки = БлокировкаДанных.Добавить("Константа.ЗарегистрированыИзмененияДанных");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЗначениеКонстантыИзменено = Ложь;
Для ПопыткаИзменения = 1 По КоличествоПопыток Цикл
НачатьТранзакцию();
Попытка
БлокировкаДанных.Заблокировать();
Константы.ЗарегистрированыИзмененияДанных.Установить(НеобходимоВыполнитьОбмен);
ЗначениеКонстантыИзменено = Истина;
ЗафиксироватьТранзакцию();
Прервать;
Исключение
ОтменитьТранзакцию();
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса") Тогда
МодульОбщегоНазначенияБТС = ОбщегоНазначения.ОбщийМодуль("ОбщегоНазначенияБТС");
МодульОбщегоНазначенияБТС.Пауза(ИнтервалОжидания);
КонецЕсли;
КонецПопытки
КонецЦикла;
Если НЕ ЗначениеКонстантыИзменено Тогда
ТекстИсключения = НСтр("ru ='Ошибка блокировки константы ""Зарегистрированы изменения данных"".
|Повторите попытку позже.'", ОбщегоНазначения.КодОсновногоЯзыка());
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСинхронизацииДанных(),
УровеньЖурналаРегистрации.Ошибка, , , ТекстИсключения);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецПроцедуры
// Включает признак изменения данных и отсылает в менеджер сервиса
// сообщение об изменении с номером текущей области.
// //
Процедура УстановитьПризнакИзмененияДанных() Экспорт Процедура УстановитьПризнакИзмененияДанных() Экспорт
@@ -458,7 +524,7 @@
Новый Структура("КодУзла", ОбменДаннымиСервер.КодУзлаПланаОбменаСтрокой(ОбластьДанных)), Новый Структура("КодУзла", ОбменДаннымиСервер.КодУзлаПланаОбменаСтрокой(ОбластьДанных)),
МодульРаботаВМоделиСервисаБТСПовтИсп.КонечнаяТочкаМенеджераСервиса()); МодульРаботаВМоделиСервисаБТСПовтИсп.КонечнаяТочкаМенеджераСервиса());
Константы.ЗарегистрированыИзмененияДанных.Установить(Истина); ИзменитьПризнакНеобходимостиОбменаДаннымиВМоделиСервиса(Истина);
ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию();
Исключение Исключение
@@ -1011,7 +1077,7 @@
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
// Сбрасываем признак кумулятивного изменения данных для обмена // Сбрасываем признак кумулятивного изменения данных для обмена
Константы.ЗарегистрированыИзмененияДанных.Установить(Ложь); ИзменитьПризнакНеобходимостиОбменаДаннымиВМоделиСервиса(Ложь);
Если СценарийОбменаДанными.Количество() > 0 Тогда Если СценарийОбменаДанными.Количество() > 0 Тогда
@@ -1150,7 +1216,7 @@
Если СтрокаСценария.ПорядковыйНомерВыполнения = 1 Тогда Если СтрокаСценария.ПорядковыйНомерВыполнения = 1 Тогда
// Сбрасываем признак кумулятивного изменения данных для обмена. // Сбрасываем признак кумулятивного изменения данных для обмена.
Константы.ЗарегистрированыИзмененияДанных.Установить(Ложь); ИзменитьПризнакНеобходимостиОбменаДаннымиВМоделиСервиса(Ложь);
КонецЕсли; КонецЕсли;
СтруктураРезультат = Новый Структура; СтруктураРезультат = Новый Структура;
@@ -1330,6 +1330,7 @@
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
Если Не НастройкаСинхронизацииЗавершена(УзелОбмена) Тогда Если Не НастройкаСинхронизацииЗавершена(УзелОбмена) Тогда
// Изменения, зарегистрированные до момента завершения настройки синхронизации, // Изменения, зарегистрированные до момента завершения настройки синхронизации,
// являются некорректными, т.к. еще не были установлены отборы. // являются некорректными, т.к. еще не были установлены отборы.
@@ -1337,9 +1338,12 @@
// Необходимо сбросить ранее установленный признак регистрации изменений для повторной отправки сообщения в МС. // Необходимо сбросить ранее установленный признак регистрации изменений для повторной отправки сообщения в МС.
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
МенеджерКонстанты = ОбщегоНазначения.ОбщийМодуль("Константы.ЗарегистрированыИзмененияДанных");
МенеджерКонстанты.Установить(Ложь); МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиВМоделиСервиса");
МодульОбменДаннымиВМоделиСервиса.ИзменитьПризнакНеобходимостиОбменаДаннымиВМоделиСервиса(Ложь);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.УстановитьПризнакНастройкаЗавершена(УзелОбмена); РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.УстановитьПризнакНастройкаЗавершена(УзелОбмена);
@@ -7567,18 +7571,14 @@
// Возвращаемое значение: // Возвращаемое значение:
// УникальныйИдентификатор - идентификатор файла в сервисе передачи файлов. // УникальныйИдентификатор - идентификатор файла в сервисе передачи файлов.
// //
Функция ПоместитьФайлВХранилищеВСервисе(Знач ИмяФайла, Знач УзелИнформационнойБазы, Знач РазмерЧасти = 1024, Знач ПараметрыАутентификации = Неопределено) Функция ПоместитьФайлВХранилищеВСервисе(Прокси, Знач ИмяФайла, Знач УзелИнформационнойБазы, Знач РазмерЧастиКБ = 1024)
Перем ИдентификаторФайла;
// Возвращаемое значение функции.
ИдентификаторФайла = Неопределено;
ДополнительныеПараметры = Новый Структура("ПараметрыАутентификации", ПараметрыАутентификации);
СообщениеОбОшибке = "";
Прокси = WSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы, СообщениеОбОшибке, ДополнительныеПараметры);
Если Прокси = Неопределено Тогда Если Прокси = Неопределено Тогда
ВызватьИсключение СообщениеОбОшибке;
ВызватьИсключение НСтр("ru ='Не определен WS-прокси передачи файла выгрузки в базу приемник.
|Обратитесь к администратору.'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецЕсли; КонецЕсли;
КаталогФайлов = ПолучитьИмяВременногоФайла(); КаталогФайлов = ПолучитьИмяВременногоФайла();
@@ -7593,19 +7593,17 @@
// Разделение файла на части. // Разделение файла на части.
ИдентификаторСессии = Новый УникальныйИдентификатор; ИдентификаторСессии = Новый УникальныйИдентификатор;
КоличествоЧастей = 1; РазмерЧастиВБайтах = РазмерЧастиКБ * 1024;
Если ЗначениеЗаполнено(РазмерЧасти) Тогда ИменаФайлов = РазделитьФайл(ИмяНеразделенногоФайла, РазмерЧастиВБайтах);
ИменаФайлов = РазделитьФайл(ИмяНеразделенногоФайла, РазмерЧасти * 1024);
КоличествоЧастей = ИменаФайлов.Количество(); КоличествоЧастей = ИменаФайлов.Количество();
Для НомерЧасти = 1 По КоличествоЧастей Цикл Для НомерЧасти = 1 По КоличествоЧастей Цикл
ИмяФайлаЧасти = ИменаФайлов[НомерЧасти - 1]; ИмяФайлаЧасти = ИменаФайлов[НомерЧасти - 1];
ДанныеФайла = Новый ДвоичныеДанные(ИмяФайлаЧасти); ДанныеФайла = Новый ДвоичныеДанные(ИмяФайлаЧасти);
Прокси.PutFilePart(ИдентификаторСессии, НомерЧасти, ДанныеФайла); Прокси.PutFilePart(ИдентификаторСессии, НомерЧасти, ДанныеФайла);
КонецЦикла; КонецЦикла;
Иначе
ДанныеФайла = Новый ДвоичныеДанные(ИмяНеразделенногоФайла);
Прокси.PutFilePart(ИдентификаторСессии, 1, ДанныеФайла);
КонецЕсли;
Попытка Попытка
УдалитьФайлы(КаталогФайлов); УдалитьФайлы(КаталогФайлов);
@@ -10148,6 +10146,82 @@
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
// Останавливает выполнение кода на заданное время.
// Метод продублирован из БТС, т.к. п/с может использоваться без указанной библиотеки.
//
// Параметры:
// Секунд - Число - время ожидания в секундах.
//
Процедура Пауза(Секунд) Экспорт
ТекущийСеансИнформационнойБазы = ПолучитьТекущийСеансИнформационнойБазы();
ФоновоеЗадание = ТекущийСеансИнформационнойБазы.ПолучитьФоновоеЗадание();
Если ФоновоеЗадание = Неопределено Тогда
Параметры = Новый Массив;
Параметры.Добавить(Секунд);
ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбменДаннымиСервер.Пауза", Параметры);
КонецЕсли;
ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Секунд);
КонецПроцедуры
Процедура ОжиданиеЗавершенияОперации(СтруктураНастроекОбмена, ПараметрыОбмена, Прокси, ДействиеПриОбменеВЭтойИБ = Неопределено)
Если ПараметрыОбмена.ИнтервалОжиданияНаСервере = 0 Тогда
Если ДействиеПриОбменеВЭтойИБ <> Неопределено Тогда
// В этой ИБ "Загрузка", значит в корреспонденте "Выгрузка"
Если ДействиеПриОбменеВЭтойИБ = Перечисления.ДействияПриОбмене.ЗагрузкаДанных Тогда
ДействиеВКорреспондентеСтрокой = НСтр("ru ='выгрузка'", ОбщегоНазначения.КодОсновногоЯзыка());
Иначе
ДействиеВКорреспондентеСтрокой = НСтр("ru ='загрузка'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецЕсли;
ШаблонСообщения = НСтр("ru = 'Ожидание выполнения операции (%1 данных в базе-корреспонденте)...'", ОбщегоНазначения.КодОсновногоЯзыка());
ЗаписьЖурналаРегистрацииОбменаДанными(СтрШаблон(ШаблонСообщения, ДействиеВКорреспондентеСтрокой), СтруктураНастроекОбмена);
КонецЕсли;
Возврат;
КонецЕсли;
Пока ПараметрыОбмена.ДлительнаяОперация Цикл // Замена рекурсии
Пауза(ПараметрыОбмена.ИнтервалОжиданияНаСервере);
СтрокаСообщенияОбОшибке = "";
СостояниеОперации = Прокси.GetContinuousOperationStatus(ПараметрыОбмена.ИдентификаторОперации, СтрокаСообщенияОбОшибке);
Если СостояниеОперации = "Active" Тогда
ПараметрыОбмена.ИнтервалОжиданияНаСервере = Мин(ПараметрыОбмена.ИнтервалОжиданияНаСервере + 30, 180);
ИначеЕсли СостояниеОперации = "Completed" Тогда
ПараметрыОбмена.ИнтервалОжиданияНаСервере = 15;
ПараметрыОбмена.ДлительнаяОперация = Ложь;
ПараметрыОбмена.ИдентификаторОперации = Неопределено;
Иначе
ВызватьИсключение СтрШаблон(НСтр("ru = 'Ошибка в базе-корреспонденте:%1 %2'"), Символы.ПС, СтрокаСообщенияОбОшибке);;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Процедура удаляет неактуальные записи в регистре сведений. // Процедура удаляет неактуальные записи в регистре сведений.
// Запись считается неактуальной, если план обмена, для которого была создана запись, // Запись считается неактуальной, если план обмена, для которого была создана запись,
// был переименован или удален. // был переименован или удален.
@@ -14265,6 +14339,7 @@
ФайлСообщенияОбмена = ""; ФайлСообщенияОбмена = "";
Попытка Попытка
Прокси.UploadData(СтруктураНастроекОбмена.ИмяПланаОбмена, Прокси.UploadData(СтруктураНастроекОбмена.ИмяПланаОбмена,
СтруктураНастроекОбмена.ТекущийУзелПланаОбменаКод, СтруктураНастроекОбмена.ТекущийУзелПланаОбменаКод,
ПараметрыОбмена.ИдентификаторФайла, ПараметрыОбмена.ИдентификаторФайла,
@@ -14274,49 +14349,19 @@
Если ПараметрыОбмена.ДлительнаяОперация Тогда Если ПараметрыОбмена.ДлительнаяОперация Тогда
Если ПараметрыОбмена.ИнтервалОжиданияНаСервере > 0 Тогда ОжиданиеЗавершенияОперации(СтруктураНастроекОбмена, ПараметрыОбмена, Прокси, Перечисления.ДействияПриОбмене.ЗагрузкаДанных);
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
МодульОбщегоНазначенияБТС = ОбщегоНазначения.ОбщийМодуль("ОбщегоНазначенияБТС");
Пока ПараметрыОбмена.ДлительнаяОперация Цикл
МодульОбщегоНазначенияБТС.Пауза(ПараметрыОбмена.ИнтервалОжиданияНаСервере);
СтрокаСообщенияОбОшибке = "";
СостояниеОперации = Прокси.GetContinuousOperationStatus(ПараметрыОбмена.ИдентификаторОперации, СтрокаСообщенияОбОшибке);
Если СостояниеОперации = "Active" Тогда
ПараметрыОбмена.ИнтервалОжиданияНаСервере = Мин(ПараметрыОбмена.ИнтервалОжиданияНаСервере + 30, 180);
Продолжить;
ИначеЕсли СостояниеОперации <> "Completed" Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка в базе-корреспонденте: %1'"),
СтрокаСообщенияОбОшибке);
Иначе
ПараметрыОбмена.ДлительнаяОперация = Ложь;
КонецЕсли;
КонецЦикла;
Иначе
ВызватьИсключение НСтр("ru = 'Запуск асинхронной операции на сервере без подсистемы ""ТехнологияСервиса.БазоваяФункциональность"" не поддерживается.'");
КонецЕсли;
Иначе
ЗаписьЖурналаРегистрацииОбменаДанными(НСтр("ru = 'Ожидание получения данных от базы-корреспондента...'",
ОбщегоНазначения.КодОсновногоЯзыка()), СтруктураНастроекОбмена);
Возврат;
КонецЕсли;
КонецЕсли; КонецЕсли;
ФайлСообщенияОбмена = ПолучитьФайлИзХранилищаВСервисе( УИДФайлаСообщения = Новый УникальныйИдентификатор(ПараметрыОбмена.ИдентификаторФайла);
Новый УникальныйИдентификатор(ПараметрыОбмена.ИдентификаторФайла), ФайлСообщенияОбмена = ПолучитьФайлИзХранилищаВСервисе(УИДФайлаСообщения, УзелИнформационнойБазы, 1024, ПараметрыОбмена.ПараметрыАутентификации);
УзелИнформационнойБазы,,
ПараметрыОбмена.ПараметрыАутентификации);
Исключение Исключение
ЗаписьЖурналаРегистрацииОбменаДанными(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СтруктураНастроекОбмена, Истина); ЗаписьЖурналаРегистрацииОбменаДанными(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СтруктураНастроекОбмена, Истина);
СтруктураНастроекОбмена.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Ошибка; СтруктураНастроекОбмена.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Ошибка;
Отказ = Истина; Отказ = Истина;
КонецПопытки; КонецПопытки;
КонецЕсли; КонецЕсли;
@@ -14422,8 +14467,8 @@
Попытка Попытка
ИдентификаторФайлаСтрокой = Строка(ПоместитьФайлВХранилищеВСервисе( ИдентификаторФайлаУИД = ПоместитьФайлВХранилищеВСервисе(Прокси, ФайлСообщенияОбмена, УзелИнформационнойБазы, 1024);
ФайлСообщенияОбмена, УзелИнформационнойБазы,, ПараметрыОбмена.ПараметрыАутентификации)); ИдентификаторФайлаСтрокой = Строка(ИдентификаторФайлаУИД);
Попытка Попытка
УдалитьФайлы(ВременныйКаталог); УдалитьФайлы(ВременныйКаталог);
@@ -14439,6 +14484,7 @@
СтруктураНастроекОбмена.ТекущийУзелПланаОбменаКод, СтруктураНастроекОбмена.ТекущийУзелПланаОбменаКод,
ИдентификаторФайлаСтрокой); ИдентификаторФайлаСтрокой);
Иначе Иначе
Прокси.DownloadData(СтруктураНастроекОбмена.ИмяПланаОбмена, Прокси.DownloadData(СтруктураНастроекОбмена.ИмяПланаОбмена,
СтруктураНастроекОбмена.ТекущийУзелПланаОбменаКод, СтруктураНастроекОбмена.ТекущийУзелПланаОбменаКод,
ИдентификаторФайлаСтрокой, ИдентификаторФайлаСтрокой,
@@ -14448,34 +14494,7 @@
Если ПараметрыОбмена.ДлительнаяОперация Тогда Если ПараметрыОбмена.ДлительнаяОперация Тогда
Если ПараметрыОбмена.ИнтервалОжиданияНаСервере > 0 Тогда ОжиданиеЗавершенияОперации(СтруктураНастроекОбмена, ПараметрыОбмена, Прокси, Перечисления.ДействияПриОбмене.ВыгрузкаДанных);
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
МодульОбщегоНазначенияБТС = ОбщегоНазначения.ОбщийМодуль("ОбщегоНазначенияБТС");
Пока ПараметрыОбмена.ДлительнаяОперация Цикл
МодульОбщегоНазначенияБТС.Пауза(ПараметрыОбмена.ИнтервалОжиданияНаСервере);
СтрокаСообщенияОбОшибке = "";
СостояниеОперации = Прокси.GetContinuousOperationStatus(ПараметрыОбмена.ИдентификаторОперации, СтрокаСообщенияОбОшибке);
Если СостояниеОперации = "Active" Тогда
Продолжить;
ИначеЕсли СостояниеОперации <> "Completed" Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка в базе-корреспонденте: %1'"),
СтрокаСообщенияОбОшибке);
Иначе
ПараметрыОбмена.ДлительнаяОперация = Ложь;
КонецЕсли;
КонецЦикла;
Иначе
ВызватьИсключение НСтр("ru = 'Запуск асинхронной операции на сервере без подсистемы ""ТехнологияСервиса.БазоваяФункциональность"" не поддерживается.'");
КонецЕсли;
Иначе
ЗаписьЖурналаРегистрацииОбменаДанными(НСтр("ru = 'Ожидание загрузки данных в базе-корреспонденте...'",
ОбщегоНазначения.КодОсновногоЯзыка()), СтруктураНастроекОбмена);
Возврат;
КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -34,7 +34,9 @@
Данные.Записать(); Данные.Записать();
Если ОбъектРегистрируетсяНаПланеОбмена(Данные) Тогда
ОтметитьВыполнениеОбработки(Данные); ОтметитьВыполнениеОбработки(Данные);
КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -74,7 +76,9 @@
Объект.Записать(); Объект.Записать();
КонецЕсли; КонецЕсли;
Если ОбъектРегистрируетсяНаПланеОбмена(Объект) Тогда
ОтметитьВыполнениеОбработки(Объект); ОтметитьВыполнениеОбработки(Объект);
КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -107,7 +111,9 @@
НаборЗаписей.Записать(Замещать); НаборЗаписей.Записать(Замещать);
Если ОбъектРегистрируетсяНаПланеОбмена(НаборЗаписей) Тогда
ОтметитьВыполнениеОбработки(НаборЗаписей); ОтметитьВыполнениеОбработки(НаборЗаписей);
КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -3213,8 +3219,8 @@
Перечисления.РежимыВыполненияОбработчиков.Отложенно); Перечисления.РежимыВыполненияОбработчиков.Отложенно);
Иначе Иначе
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Некорректное значение параметра ""РежимОбновления"". НСтр("ru = 'Некорректное значение параметра ""%1"".
|Доступные значения: ""%1"", ""%2""'"), РежимОбновленияОперативное, РежимОбновленияОтложенное); |Доступные значения: ""%2"", ""%3""'"), "РежимОбновления", РежимОбновленияОперативное, РежимОбновленияОтложенное);
КонецЕсли; КонецЕсли;
ПорядокСостоянияОбновлено = 4; ПорядокСостоянияОбновлено = 4;
@@ -5933,4 +5939,28 @@
КонецФункции КонецФункции
Функция ОбъектРегистрируетсяНаПланеОбмена(Данные)
ТипОбъекта = ТипЗнч(Данные);
Кеш = ОбновлениеИнформационнойБазыСлужебныйПовтИсп.КешПроверкиЗарегистрированныхОбъектов();
ВходитВСостав = Кеш.Получить(ТипОбъекта);
Если ВходитВСостав <> Неопределено Тогда
Возврат ВходитВСостав;
КонецЕсли;
ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипОбъекта);
Если ОбъектМетаданных = Неопределено Тогда
Кеш.Вставить(ТипОбъекта, Ложь);
Возврат Ложь;
КонецЕсли;
СоставПланаОбмена = Метаданные.ПланыОбмена.ОбновлениеИнформационнойБазы.Состав;
ВходитВСостав = СоставПланаОбмена.Содержит(ОбъектМетаданных);
Кеш.Вставить(ТипОбъекта, ВходитВСостав);
Возврат ВходитВСостав;
КонецФункции
#КонецОбласти #КонецОбласти
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы"; Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.5.192"; Описание.Версия = "3.1.5.208";
Описание.ИдентификаторИнтернетПоддержки = "SSL"; Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно"; Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0"; Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -3586,9 +3586,14 @@
КонецЕсли; КонецЕсли;
// Проверка, что обработчик не был удален. // Проверка, что обработчик не был удален.
НайденныйОбработчик = ИтерацияОбновления.Обработчики.Найти(Обработчик.ИмяОбработчика, "Процедура"); ДополнительныйОтбор = Новый Структура;
Если НайденныйОбработчик = Неопределено Тогда ДополнительныйОтбор.Вставить("РежимВыполнения", "Отложенно");
ДополнительныйОтбор.Вставить("Процедура", Обработчик.ИмяОбработчика);
НайденныйОбработчик = ИтерацияОбновления.Обработчики.НайтиСтроки(ДополнительныйОтбор);
Если НайденныйОбработчик.Количество() = 0 Тогда
Продолжить; Продолжить;
Иначе
НайденныйОбработчик = НайденныйОбработчик[0];
КонецЕсли; КонецЕсли;
// Необходимо запланировать выполнение незавершенного обработчика. // Необходимо запланировать выполнение незавершенного обработчика.
@@ -112,4 +112,16 @@
КонецФункции КонецФункции
// Кеширует типы объектов метаданных при проверке наличия
// записываемого объекта на составе плана обмена ОбновлениеИнформационнойБазы.
//
// Возвращаемое значение:
// Соответствие
//
Функция КешПроверкиЗарегистрированныхОбъектов() Экспорт
Возврат Новый Соответствие;
КонецФункции
#КонецОбласти #КонецОбласти
@@ -105,7 +105,9 @@
Процедура ПоказатьПоискИУстановкуОбновлений(ПараметрыУстановкиОбновлений = Неопределено) Экспорт Процедура ПоказатьПоискИУстановкуОбновлений(ПараметрыУстановкиОбновлений = Неопределено) Экспорт
Результат = ПоддерживаетсяУстановкаОбновлений(); Результат = ПоддерживаетсяУстановкаОбновлений();
Если Результат.Поддерживается Тогда Если Результат.Поддерживается
Или Результат.ПоддерживаетсяУстановкаИсправлений Тогда
ОткрытьФорму("Обработка.УстановкаОбновлений.Форма.Форма", ПараметрыУстановкиОбновлений); ОткрытьФорму("Обработка.УстановкаОбновлений.Форма.Форма", ПараметрыУстановкиОбновлений);
Иначе Иначе
ПоказатьПредупреждение(, Результат.ОписаниеОшибки); ПоказатьПредупреждение(, Результат.ОписаниеОшибки);
@@ -2861,7 +2861,7 @@
ОсновнаяТаблица = СвойстваСписка.ОсновнаяТаблица; ОсновнаяТаблица = СвойстваСписка.ОсновнаяТаблица;
Если Не ПустаяСтрока(ОсновнаяТаблица) Тогда Если ОсновнаяТаблица <> Неопределено Тогда
ДинамическийСписок.ОсновнаяТаблица = ОсновнаяТаблица; ДинамическийСписок.ОсновнаяТаблица = ОсновнаяТаблица;
КонецЕсли; КонецЕсли;
@@ -5717,7 +5717,21 @@
// //
Функция ПодключитьКомпонентуИзМакета(Знач Идентификатор, Знач ПолноеИмяМакета) Экспорт Функция ПодключитьКомпонентуИзМакета(Знач Идентификатор, Знач ПолноеИмяМакета) Экспорт
Результат = ПодключитьКомпонентуПоИдентификатору(Идентификатор, ПолноеИмяМакета); РезультатПроверкиВнешнейКомпоненты = Неопределено;
Если ПодсистемаСуществует("СтандартныеПодсистемы.ВнешниеКомпоненты") Тогда
МодульВнешниеКомпонентыСлужебный = ОбщийМодуль("ВнешниеКомпонентыСлужебный");
РезультатПроверкиВнешнейКомпоненты = МодульВнешниеКомпонентыСлужебный.ПроверитьПодключениеКомпоненты(Идентификатор);
РезультатПроверкиВнешнейКомпоненты.Вставить("Доступна",
Не ЗначениеЗаполнено(РезультатПроверкиВнешнейКомпоненты.ОписаниеОшибки));
КонецЕсли;
КомпонентаПоследнейВерсии = СтандартныеПодсистемыСервер.КомпонентаПоследнейВерсии(
Идентификатор, ПолноеИмяМакета, РезультатПроверкиВнешнейКомпоненты);
Результат = ПодключитьКомпонентуПоИдентификатору(Идентификатор,
КомпонентаПоследнейВерсии.Местоположение);
Возврат Результат.ПодключаемыйМодуль; Возврат Результат.ПодключаемыйМодуль;
КонецФункции КонецФункции
@@ -5868,17 +5882,13 @@
Функция ПодключитьКомпонентуПоИдентификатору(Знач Идентификатор, Знач Местоположение) Экспорт Функция ПодключитьКомпонентуПоИдентификатору(Знач Идентификатор, Знач Местоположение) Экспорт
ПроверитьМестоположениеКомпоненты(Идентификатор, Местоположение);
Результат = Новый Структура; Результат = Новый Структура;
Результат.Вставить("Подключено", Ложь); Результат.Вставить("Подключено", Ложь);
Результат.Вставить("ПодключаемыйМодуль", Неопределено); Результат.Вставить("ПодключаемыйМодуль", Неопределено);
Результат.Вставить("ОписаниеОшибки", ""); Результат.Вставить("ОписаниеОшибки", "");
Если Не МестоположениеКомпонентыКорректно(Местоположение) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Указан несуществующий макет ""%1"" при подключении внешней компоненты.'"),
Местоположение);
КонецЕсли;
Если Не ПодключитьВнешнююКомпоненту(Местоположение, Идентификатор + "SymbolicName") Тогда Если Не ПодключитьВнешнююКомпоненту(Местоположение, Идентификатор + "SymbolicName") Тогда
Результат.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( Результат.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" на сервере по причине: НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" на сервере по причине:
@@ -9015,22 +9025,22 @@
#Область ВнешниеКомпоненты #Область ВнешниеКомпоненты
Функция МестоположениеКомпонентыКорректно(Местоположение) Процедура ПроверитьМестоположениеКомпоненты(Идентификатор, Местоположение)
Если МакетСуществует(Местоположение) Тогда Если МакетСуществует(Местоположение) Тогда
Возврат Истина; Возврат;
КонецЕсли; КонецЕсли;
Если ПодсистемаСуществует("СтандартныеПодсистемы.ВнешниеКомпоненты") Тогда Если ПодсистемаСуществует("СтандартныеПодсистемы.ВнешниеКомпоненты") Тогда
МодульВнешниеКомпонентыСлужебный = ОбщийМодуль("ВнешниеКомпонентыСлужебный"); МодульВнешниеКомпонентыСлужебный = ОбщийМодуль("ВнешниеКомпонентыСлужебный");
Если МодульВнешниеКомпонентыСлужебный.ЭтоКомпонентаИзХранилища(Местоположение) Тогда МодульВнешниеКомпонентыСлужебный.ПроверитьМестоположениеКомпоненты(Идентификатор, Местоположение);
Возврат Истина; Иначе
КонецЕсли; ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Указан несуществующий макет ""%1"" при подключении внешней компоненты ""%2"".'"),
Местоположение, Идентификатор);
КонецЕсли; КонецЕсли;
Возврат Ложь; КонецПроцедуры
КонецФункции
Функция МакетСуществует(ПолноеИмяМакета) Функция МакетСуществует(ПолноеИмяМакета)
@@ -904,7 +904,8 @@
// Возвращаемое значение: // Возвращаемое значение:
// Структура: // Структура:
// * Кэшировать - Булево - (по умолчанию Истина) использовать механизм кэширования компонент на клиенте. // * Кэшировать - Булево - (по умолчанию Истина) использовать механизм кэширования компонент на клиенте.
// * ПредложитьУстановить - Булево - (по умолчанию Истина) предлагать устанавливать и обновлять компоненту. // * ПредложитьУстановить - Булево - (по умолчанию Истина) предлагать устанавливать.
// * ПредложитьЗагрузить - Булево - (по умолчанию Ложь) предлагать загрузить компоненту с сайта ИТС.
// * ТекстПояснения - Строка - для чего нужна компонента и что не будет работать, если ее не устанавливать. // * ТекстПояснения - Строка - для чего нужна компонента и что не будет работать, если ее не устанавливать.
// * ИдентификаторыСозданияОбъектов - Массив - идентификатор создания экземпляра модуля объекта, // * ИдентификаторыСозданияОбъектов - Массив - идентификатор создания экземпляра модуля объекта,
// используется только для компонент, у которых есть несколько идентификаторов создания объектов, // используется только для компонент, у которых есть несколько идентификаторов создания объектов,
@@ -921,6 +922,7 @@
Параметры = Новый Структура; Параметры = Новый Структура;
Параметры.Вставить("Кэшировать", Истина); Параметры.Вставить("Кэшировать", Истина);
Параметры.Вставить("ПредложитьУстановить", Истина); Параметры.Вставить("ПредложитьУстановить", Истина);
Параметры.Вставить("ПредложитьЗагрузить", Ложь);
Параметры.Вставить("ТекстПояснения", ""); Параметры.Вставить("ТекстПояснения", "");
Параметры.Вставить("ИдентификаторыСозданияОбъектов", Новый Массив); Параметры.Вставить("ИдентификаторыСозданияОбъектов", Новый Массив);
@@ -990,14 +992,11 @@
ЗаполнитьЗначенияСвойств(Параметры, ПараметрыПодключения); ЗаполнитьЗначенияСвойств(Параметры, ПараметрыПодключения);
КонецЕсли; КонецЕсли;
Контекст = Новый Структура; Контекст = ОбщегоНазначенияСлужебныйКлиент.КонтекстПодключенияКомпоненты();
Контекст.Вставить("Оповещение", Оповещение); ЗаполнитьЗначенияСвойств(Контекст, Параметры);
Контекст.Вставить("Идентификатор", Идентификатор); Контекст.Оповещение = Оповещение;
Контекст.Вставить("Местоположение", ПолноеИмяМакета); Контекст.Идентификатор = Идентификатор;
Контекст.Вставить("Кэшировать", Параметры.Кэшировать); Контекст.Местоположение = ПолноеИмяМакета;
Контекст.Вставить("ПредложитьУстановить", Параметры.ПредложитьУстановить);
Контекст.Вставить("ТекстПояснения", Параметры.ТекстПояснения);
Контекст.Вставить("ИдентификаторыСозданияОбъектов", Параметры.ИдентификаторыСозданияОбъектов);
ОбщегоНазначенияСлужебныйКлиент.ПодключитьКомпоненту(Контекст); ОбщегоНазначенияСлужебныйКлиент.ПодключитьКомпоненту(Контекст);
@@ -1069,6 +1068,7 @@
Контекст.Вставить("Оповещение", Оповещение); Контекст.Вставить("Оповещение", Оповещение);
Контекст.Вставить("Местоположение", ПолноеИмяМакета); Контекст.Вставить("Местоположение", ПолноеИмяМакета);
Контекст.Вставить("ТекстПояснения", Параметры.ТекстПояснения); Контекст.Вставить("ТекстПояснения", Параметры.ТекстПояснения);
Контекст.Вставить("Идентификатор", ПолноеИмяМакета);
ОбщегоНазначенияСлужебныйКлиент.УстановитьКомпоненту(Контекст); ОбщегоНазначенияСлужебныйКлиент.УстановитьКомпоненту(Контекст);
@@ -47,15 +47,45 @@
#Область ВнешниеКомпоненты #Область ВнешниеКомпоненты
// Контекст подключения компоненты.
//
// Возвращаемое значение:
// Структура - контекст подключения компоненты:
// * Оповещение - Неопределено, ОписаниеОповещения - оповещение.
// * Идентификатор - Строка - идентификатор объекта компоненты, идентификатор внешней компоненты.
// * Версия - Неопределено, Строка - версия компоненты.
// * Местоположение - Строка - местоположение макета или ссылка на внешнюю компоненту.
// * ИсходноеМестоположение - Строка - местоположение начального вызова, для хранения кэша.
// * Кэшировать - Булево - признак сохранения подключенной компоненты в кэше.
// * ПредложитьУстановить - Булево - предлагать устанавливать компоненту.
// * ПредложитьЗагрузить - Булево - предлагать загружать компоненту с сайта ИТС.
// * ТекстПояснения - Строка - для чего нужна компонента и что не будет работать, если ее не устанавливать.
// * ИдентификаторыСозданияОбъектов - Массив -идентификатор создания экземпляра модуля объекта,
// используется только для компонент, у которых есть несколько идентификаторов создания объектов,
// при задании параметр Идентификатор будет игнорироваться.
// * ВыполненПоискНовойВерсии - Булево - поиск новой версии компоненты производился.
//
Функция КонтекстПодключенияКомпоненты() Экспорт
Контекст = Новый Структура;
Контекст.Вставить("Оповещение", Неопределено);
Контекст.Вставить("Идентификатор", Неопределено);
Контекст.Вставить("Версия", "");
Контекст.Вставить("Местоположение", "");
Контекст.Вставить("ИсходноеМестоположение", "");
Контекст.Вставить("Кэшировать", Истина);
Контекст.Вставить("ПредложитьУстановить", Истина);
Контекст.Вставить("ПредложитьЗагрузить", Ложь);
Контекст.Вставить("ТекстПояснения", "");
Контекст.Вставить("ИдентификаторыСозданияОбъектов", Новый Массив);
Контекст.Вставить("ВыполненПоискНовойВерсии", Ложь);
Возврат Контекст;
КонецФункции
// Параметры: // Параметры:
// Контекст - Структура: // Контекст - см. КонтекстПодключенияКомпоненты.
// * Оповещение - ОписаниеОповещения
// * Идентификатор - Строка
// * Местоположение - Строка
// * Кэшировать - Булево
// * ПредложитьУстановить - Булево
// * ТекстПояснения - Строка
// * ИдентификаторыСозданияОбъектов - Массив из Строка
// //
Процедура ПодключитьКомпоненту(Контекст) Экспорт Процедура ПодключитьКомпоненту(Контекст) Экспорт
@@ -64,10 +94,9 @@
Если КомпонентаСодержитЕдинственныйКлассОбъектов Тогда Если КомпонентаСодержитЕдинственныйКлассОбъектов Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось подключить внешнюю компоненту на клиенте НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" в клиентском приложении
|%1
|по причине: |по причине:
|Не допустимо одновременно не указывать Идентификатор и ИдентификаторыСозданияОбъектов'"), |Недопустимо одновременно не указывать Идентификатор и ИдентификаторыСозданияОбъектов.'"),
Контекст.Местоположение); Контекст.Местоположение);
Иначе Иначе
// В случае, когда в компоненте есть несколько классов объектов // В случае, когда в компоненте есть несколько классов объектов
@@ -77,34 +106,56 @@
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Если Не МестоположениеКомпонентыКорректно(Контекст.Местоположение) Тогда ПроверитьМестоположениеКомпоненты(Контекст.Идентификатор, Контекст.Местоположение);
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" на клиенте
|по причине:
|указано некорректное местоположение внешней компоненты
|%2'"),
Контекст.Идентификатор,
Контекст.Местоположение);
КонецЕсли;
Если Не Контекст.ВыполненПоискНовойВерсии Тогда
Если Контекст.Кэшировать Тогда Если Контекст.Кэшировать Тогда
ПодключаемыйМодуль = ПолучитьОбъектКомпонентыИзКэша(Контекст.Местоположение); ПодключаемыйМодуль = ПолучитьОбъектКомпонентыИзКэша(Контекст.Местоположение);
Если ПодключаемыйМодуль <> Неопределено Тогда Если ПодключаемыйМодуль <> Неопределено Тогда
ПодключитьКомпонентуОповеститьОПодключении(ПодключаемыйМодуль, Контекст); ПодключитьКомпонентуОповеститьОПодключении(ПодключаемыйМодуль, Контекст);
Возврат; Возврат;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
// Проверка факта подключения внешней компоненты в этом сеансе ранее. // Проверка факта подключения внешней компоненты в этом сеансе ранее.
СимволическоеИмя = ПолучитьСимволическоеИмяКомпонентыИзКэша(Контекст.Местоположение); СимволическоеИмя = ПолучитьСимволическоеИмяКомпонентыИзКэша(Контекст.Местоположение);
Если СимволическоеИмя = Неопределено Тогда Если СимволическоеИмя <> Неопределено Тогда
// Если в кэше уже есть символическое имя - значит к этому сеансу ранее компонента уже подключалась.
Подключено = Истина;
Контекст.Вставить("СимволическоеИмя", СимволическоеИмя);
ПодключитьКомпонентуПослеПопыткиПодключения(Подключено, Контекст);
Возврат;
КонецЕсли;
// Поиск более свежей версии компоненты в макетах и справочнике.
Если ЭтоМакет(Контекст.Местоположение) Тогда
Контекст.ИсходноеМестоположение = Контекст.Местоположение;
Оповещение = Новый ОписаниеОповещения("ПодключитьПослеПоискаВнешнейКомпоненты", ЭтотОбъект, Контекст);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ВнешниеКомпоненты") Тогда
МодульВнешниеКомпонентыСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль(
"ВнешниеКомпонентыСлужебныйКлиент");
КонтекстПроверкиКомпоненты = КонтекстПодключенияКомпоненты();
КонтекстПроверкиКомпоненты.Идентификатор = Контекст.Идентификатор;
КонтекстПроверкиКомпоненты.Версия = Неопределено;
КонтекстПроверкиКомпоненты.ПредложитьУстановить = Контекст.ПредложитьУстановить;
КонтекстПроверкиКомпоненты.ПредложитьЗагрузить = Контекст.ПредложитьЗагрузить;
КонтекстПроверкиКомпоненты.ТекстПояснения = Контекст.ТекстПояснения;
КонтекстПроверкиКомпоненты.ИсходноеМестоположение = Контекст.ИсходноеМестоположение;
КонтекстПроверкиКомпоненты.ИдентификаторыСозданияОбъектов = Контекст.ИдентификаторыСозданияОбъектов;
МодульВнешниеКомпонентыСлужебныйКлиент.ПроверитьДоступностьКомпоненты(Оповещение,
КонтекстПроверкиКомпоненты);
Иначе
ВыполнитьОбработкуОповещения(Оповещение, Неопределено);
КонецЕсли;
Возврат;
КонецЕсли;
КонецЕсли;
// Генерация уникального имени. // Генерация уникального имени.
СимволическоеИмя = "С" + СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", ""); СимволическоеИмя = "С" + СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", "");
Контекст.Вставить("СимволическоеИмя", СимволическоеИмя); Контекст.Вставить("СимволическоеИмя", СимволическоеИмя);
Оповещение = Новый ОписаниеОповещения( Оповещение = Новый ОписаниеОповещения(
@@ -113,15 +164,6 @@
НачатьПодключениеВнешнейКомпоненты(Оповещение, Контекст.Местоположение, СимволическоеИмя); НачатьПодключениеВнешнейКомпоненты(Оповещение, Контекст.Местоположение, СимволическоеИмя);
Иначе
// Если в кэше уже есть символическое имя - значит к этому сеансу ранее компонента уже подключалась.
Подключено = Истина;
Контекст.Вставить("СимволическоеИмя", СимволическоеИмя);
ПодключитьКомпонентуПослеПопыткиПодключения(Подключено, Контекст);
КонецЕсли;
КонецПроцедуры КонецПроцедуры
// Продолжение процедуры ПодключитьКомпоненту. // Продолжение процедуры ПодключитьКомпоненту.
@@ -155,18 +197,11 @@
// * Оповещение - ОписаниеОповещения // * Оповещение - ОписаниеОповещения
// * Местоположение - Строка // * Местоположение - Строка
// * ТекстПояснения - Строка // * ТекстПояснения - Строка
// * Идентификатор - Строка
// //
Процедура УстановитьКомпоненту(Контекст) Экспорт Процедура УстановитьКомпоненту(Контекст) Экспорт
Если Не МестоположениеКомпонентыКорректно(Контекст.Местоположение) Тогда ПроверитьМестоположениеКомпоненты(Контекст.Идентификатор, Контекст.Местоположение);
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось установить внешнюю компоненту ""%1"" на клиенте
|%2
|по причине:
|Не допустимо устанавливать компоненты из указанного местоположения.'"),
Контекст.Идентификатор,
Контекст.Местоположение);
КонецЕсли;
// Проверка факта подключения внешней компоненты в этом сеансе ранее. // Проверка факта подключения внешней компоненты в этом сеансе ранее.
СимволическоеИмя = ПолучитьСимволическоеИмяКомпонентыИзКэша(Контекст.Местоположение); СимволическоеИмя = ПолучитьСимволическоеИмяКомпонентыИзКэша(Контекст.Местоположение);
@@ -492,13 +527,39 @@
#Область ВнешниеКомпоненты #Область ВнешниеКомпоненты
// Продолжение процедуры ПодключитьКомпоненту.
//
// Параметры:
// Результат - см. ВнешниеКомпонентыСлужебныйКлиент.РезультатДоступностиКомпоненты
// Контекст - см. ОбщегоНазначенияСлужебныйКлиент.КонтекстПодключенияКомпоненты
//
Процедура ПодключитьПослеПоискаВнешнейКомпоненты(Результат, Контекст) Экспорт
Контекст.ВыполненПоискНовойВерсии = Истина;
Если Результат.КомпонентаПоследнейВерсии = Неопределено Тогда
КомпонентаПоследнейВерсии = СтандартныеПодсистемыВызовСервера.КомпонентаПоследнейВерсии(
Контекст.Идентификатор, Контекст.ИсходноеМестоположение, Результат);
Иначе
КомпонентаПоследнейВерсии = Результат.КомпонентаПоследнейВерсии;
КонецЕсли;
Контекст.Местоположение = КомпонентаПоследнейВерсии.Местоположение;
Контекст.Версия = КомпонентаПоследнейВерсии.Версия;
ПодключитьКомпоненту(Контекст);
КонецПроцедуры
// Продолжение процедуры ПодключитьКомпоненту. // Продолжение процедуры ПодключитьКомпоненту.
Процедура ПодключитьКомпонентуПослеПопыткиПодключения(Подключено, Контекст) Экспорт Процедура ПодключитьКомпонентуПослеПопыткиПодключения(Подключено, Контекст) Экспорт
Если Подключено Тогда Если Подключено Тогда
// Сохранение факта подключения внешней компоненты к этому сеансу. // Сохранение факта подключения внешней компоненты к этому сеансу.
ЗаписатьСимволическоеИмяКомпонентыВКэш(Контекст.Местоположение, Контекст.СимволическоеИмя);
ИсходноеМестоположение = ?(ЗначениеЗаполнено(Контекст.ИсходноеМестоположение),
Контекст.ИсходноеМестоположение, Контекст.Местоположение);
ЗаписатьСимволическоеИмяКомпонентыВКэш(ИсходноеМестоположение, Контекст.СимволическоеИмя);
ПодключаемыйМодуль = Неопределено; ПодключаемыйМодуль = Неопределено;
@@ -512,7 +573,7 @@
КонецПопытки; КонецПопытки;
Если Контекст.Кэшировать Тогда Если Контекст.Кэшировать Тогда
ЗаписатьОбъектКомпонентыВКэш(Контекст.Местоположение, ПодключаемыйМодуль) ЗаписатьОбъектКомпонентыВКэш(ИсходноеМестоположение, ПодключаемыйМодуль)
КонецЕсли; КонецЕсли;
ПодключитьКомпонентуОповеститьОПодключении(ПодключаемыйМодуль, Контекст); ПодключитьКомпонентуОповеститьОПодключении(ПодключаемыйМодуль, Контекст);
@@ -565,6 +626,7 @@
КонтекстУстановки.Вставить("Оповещение", Оповещение); КонтекстУстановки.Вставить("Оповещение", Оповещение);
КонтекстУстановки.Вставить("Местоположение", Контекст.Местоположение); КонтекстУстановки.Вставить("Местоположение", Контекст.Местоположение);
КонтекстУстановки.Вставить("ТекстПояснения", Контекст.ТекстПояснения); КонтекстУстановки.Вставить("ТекстПояснения", Контекст.ТекстПояснения);
КонтекстУстановки.Вставить("Идентификатор", Контекст.Идентификатор);
УстановитьКомпоненту(КонтекстУстановки); УстановитьКомпоненту(КонтекстУстановки);
@@ -768,18 +830,25 @@
КонецФункции КонецФункции
Функция МестоположениеКомпонентыКорректно(Местоположение) Процедура ПроверитьМестоположениеКомпоненты(Идентификатор, Местоположение)
Если ЭтоМакет(Местоположение) Тогда
Возврат;
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ВнешниеКомпоненты") Тогда Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ВнешниеКомпоненты") Тогда
МодульВнешниеКомпонентыСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ВнешниеКомпонентыСлужебныйКлиент"); МодульВнешниеКомпонентыСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ВнешниеКомпонентыСлужебныйКлиент");
Если МодульВнешниеКомпонентыСлужебныйКлиент.ЭтоКомпонентаИзХранилища(Местоположение) Тогда МодульВнешниеКомпонентыСлужебныйКлиент.ПроверитьМестоположениеКомпоненты(Идентификатор, Местоположение);
Возврат Истина; Иначе
КонецЕсли; ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" в клиентском приложении
|по причине:
|указано некорректное местоположение внешней компоненты
|%2'"),
Идентификатор, Местоположение);
КонецЕсли; КонецЕсли;
Возврат ЭтоМакет(Местоположение); КонецПроцедуры
КонецФункции
Функция ЭтоМакет(Местоположение) Функция ЭтоМакет(Местоположение)
@@ -2138,4 +2138,10 @@
Возврат Новый ФиксированныйМассив(ПараметрыВыбора); Возврат Новый ФиксированныйМассив(ПараметрыВыбора);
КонецФункции КонецФункции
Функция ИмяСобытияНастройкиПоУмолчанию() Экспорт
Возврат "НастройкиПоУмолчанию";
КонецФункции
#КонецОбласти #КонецОбласти
@@ -737,12 +737,20 @@
// Параметры: // Параметры:
// Контекст - Структура - сведения о варианте отчета и о идентификаторе его метаданных. // Контекст - Структура - сведения о варианте отчета и о идентификаторе его метаданных.
// Настройки - НастройкиКомпоновкиДанных - настройки, чьи параметры вывода устанавливаются. // Настройки - НастройкиКомпоновкиДанных - настройки, чьи параметры вывода устанавливаются.
// Сбросить - Булево - признак того, что параметры вывода необходимо вернуть к исходному состоянию.
// //
Процедура ИнициализироватьПредопределенныеПараметрыВывода(Контекст, Настройки) Экспорт Процедура ИнициализироватьПредопределенныеПараметрыВывода(Контекст, Настройки, Сбросить = Ложь) Экспорт
Если Настройки = Неопределено Тогда Если Настройки = Неопределено Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Если Сбросить Тогда
СброситьПредопределенныеПараметрыВывода(Настройки);
Возврат;
КонецЕсли;
ПараметрыВывода = Настройки.ПараметрыВывода.Элементы; ПараметрыВывода = Настройки.ПараметрыВывода.Элементы;
// Параметр Заголовок всегда доступен и только в форме настроек отчета. // Параметр Заголовок всегда доступен и только в форме настроек отчета.
@@ -783,6 +791,8 @@
Если СвязанныйОбъект.Значение <> ТипВыводаТекстаКомпоновкиДанных.НеВыводить Тогда Если СвязанныйОбъект.Значение <> ТипВыводаТекстаКомпоновкиДанных.НеВыводить Тогда
СвязанныйОбъект.Значение = ТипВыводаТекстаКомпоновкиДанных.Авто; СвязанныйОбъект.Значение = ТипВыводаТекстаКомпоновкиДанных.Авто;
КонецЕсли; КонецЕсли;
СохранитьСтандартныеЗначенияПредопределенныхПараметровВывода(Настройки);
КонецПроцедуры КонецПроцедуры
Процедура УстановитьСтандартныйЗаголовокОтчета(Заголовок, Контекст) Процедура УстановитьСтандартныйЗаголовокОтчета(Заголовок, Контекст)
@@ -824,6 +834,122 @@
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
Процедура СохранитьСтандартныеЗначенияПредопределенныхПараметровВывода(Настройки)
СтандартныеСвойства = СтандартныеСвойстваПредопределенныхПараметровВывода(Настройки);
Если СтандартныеСвойства <> Неопределено Тогда
Возврат;
КонецЕсли;
СтандартныеСвойства = Новый Массив;
ПараметрыВывода = Настройки.ПараметрыВывода.Элементы;
ИдентификаторыПараметровВывода = СтрРазделить("TITLE, TITLEOUTPUT, DATAPARAMETERSOUTPUT, FILTEROUTPUT", ", ", Ложь);
Для Каждого Идентификатор Из ИдентификаторыПараметровВывода Цикл
НайденныйПараметр = ПараметрыВывода.Найти(Идентификатор);
Если НайденныйПараметр = Неопределено Тогда
Продолжить;
КонецЕсли;
СвойстваПараметра = СтандартныеСвойстваПредопределенногоПараметраВывода();
ЗаполнитьЗначенияСвойств(СвойстваПараметра, НайденныйПараметр);
СвойстваПараметра.Идентификатор = Идентификатор;
СтандартныеСвойства.Добавить(СвойстваПараметра);
КонецЦикла;
Если СвойстваПараметра.Количество() > 0 Тогда
Настройки.ДополнительныеСвойства.Вставить(
КлючСтандартныхСвойствПредопределенныхПараметровВывода(), СтандартныеСвойства);
КонецЕсли;
КонецПроцедуры
Процедура СброситьПредопределенныеПараметрыВывода(Настройки)
СтандартныеСвойства = СтандартныеСвойстваПредопределенныхПараметровВывода(Настройки);
Если СтандартныеСвойства = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыВывода = Настройки.ПараметрыВывода.Элементы;
Для Каждого СвойстваПараметра Из СтандартныеСвойства Цикл
НайденныйПараметр = ПараметрыВывода.Найти(СвойстваПараметра.Идентификатор);
Если НайденныйПараметр = Неопределено Тогда
Продолжить;
КонецЕсли;
ЗаполнитьЗначенияСвойств(НайденныйПараметр, СвойстваПараметра);
КонецЦикла;
КонецПроцедуры
Функция ТребуетсяСброситьПредопределенныеПараметрыВывода(ПараметрыЗагрузки) Экспорт
Если ПараметрыЗагрузки.Свойство("СброситьНастройкиВарианта")
И ПараметрыЗагрузки.СброситьНастройкиВарианта = Истина Тогда
Возврат Ложь;
КонецЕсли;
Если ПараметрыЗагрузки.Свойство("ИмяСобытия")
И ПараметрыЗагрузки.ИмяСобытия = ОтчетыКлиентСервер.ИмяСобытияНастройкиПоУмолчанию() Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
Функция КлючСтандартныхСвойствПредопределенныхПараметровВывода()
Возврат "СтандартныеСвойстваПредопределенныхПараметровВывода";
КонецФункции
// Параметры:
// Настройки - НастройкиКомпоновкиДанных
//
// Возвращаемое значение:
// - Неопределено
// - Массив из Структура:
// * Идентификатор - Строка
// * Использование - Булево
// * Значение - Неопределено
//
Функция СтандартныеСвойстваПредопределенныхПараметровВывода(Настройки)
Возврат ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
Настройки.ДополнительныеСвойства,
КлючСтандартныхСвойствПредопределенныхПараметровВывода());
КонецФункции
// Возвращаемое значение:
// Структура:
// * Идентификатор - Строка
// * Использование - Булево
// * Значение - Неопределено
//
Функция СтандартныеСвойстваПредопределенногоПараметраВывода()
Возврат Новый Структура("Идентификатор, Использование, Значение", "", Ложь, Неопределено);
КонецФункции
Процедура УстановитьФиксированныеОтборы(СтруктураОтборов, НастройкиКД, НастройкиОтчета) Экспорт Процедура УстановитьФиксированныеОтборы(СтруктураОтборов, НастройкиКД, НастройкиОтчета) Экспорт
Если ТипЗнч(НастройкиКД) <> Тип("НастройкиКомпоновкиДанных") Если ТипЗнч(НастройкиКД) <> Тип("НастройкиКомпоновкиДанных")
Или СтруктураОтборов = Неопределено Или СтруктураОтборов = Неопределено
@@ -1242,13 +1242,14 @@
Попытка Попытка
СуществующиеКлючевыеОперации = СуществующиеКлючевыеОперации(); СуществующиеКлючевыеОперации = СуществующиеКлючевыеОперации();
КлючевыеОперацииДляЗаписи = Новый Массив;
СырыеЗамерыДляЗаписи = Новый Массив;
Для Каждого Файл Из НайтиФайлы(КаталогФайлов, "*.XML") Цикл Для Каждого Файл Из НайтиФайлы(КаталогФайлов, "*.XML") Цикл
ЧтениеXML = Новый ЧтениеXML; ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(Файл.ПолноеИмя); ЧтениеXML.ОткрытьФайл(Файл.ПолноеИмя);
ЧтениеXML.ПерейтиКСодержимому(); ЧтениеXML.ПерейтиКСодержимому();
КлючевыеОперацииДляЗаписи = Новый Массив;
СырыеЗамерыДляЗаписи = Новый Массив;
ЗагрузитьФайлОценкиПроизводительностиApdexExport(ЧтениеXML, СуществующиеКлючевыеОперации, КлючевыеОперацииДляЗаписи, СырыеЗамерыДляЗаписи); ЗагрузитьФайлОценкиПроизводительностиApdexExport(ЧтениеXML, СуществующиеКлючевыеОперации, КлючевыеОперацииДляЗаписи, СырыеЗамерыДляЗаписи);
ЧтениеXML.Закрыть(); ЧтениеXML.Закрыть();
КонецЦикла; КонецЦикла;
@@ -540,13 +540,21 @@
Если ОбщегоНазначения.РазделениеВключено() Тогда Если ОбщегоНазначения.РазделениеВключено() Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
ЗначениеРазделителя = "";
Если ПутьКТомуБезУчетаРегиональныхНастроек() Тогда
ЗначениеРазделителя = ?(МодульРаботаВМоделиСервиса.ИспользованиеРазделителяСеанса(), ЗначениеРазделителя = ?(МодульРаботаВМоделиСервиса.ИспользованиеРазделителяСеанса(),
МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса(), ""); Формат(МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса(), "ЧГ=;"),
"");
Иначе
ЗначениеРазделителя = ?(МодульРаботаВМоделиСервиса.ИспользованиеРазделителяСеанса(),
МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса(),
"");
КонецЕсли;
Иначе Иначе
ЗначениеРазделителя = ""; ЗначениеРазделителя = "";
КонецЕсли; КонецЕсли;
Возврат СтрЗаменить(КорневойКаталог, "%z", ЗначениеРазделителя); Возврат СтрЗаменить(КорневойКаталог, "%z",ЗначениеРазделителя);
КонецФункции КонецФункции
@@ -734,6 +742,14 @@
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
// Для функции см. ПолныйПутьТома.
//
// Возвращаемое значение:
// Булево
//
Функция ПутьКТомуБезУчетаРегиональныхНастроек() Экспорт
Возврат РаботаСФайламиСлужебныйПовтИсп.ПутьКТомуБезУчетаРегиональныхНастроек();
КонецФункции
// Сохраняет двоичные данные файла в том или копирует данные из файла по переданному пути. // Сохраняет двоичные данные файла в том или копирует данные из файла по переданному пути.
// Перед вызовом необходимо заполнить сведения о файле (см. ЗаполнитьСведенияОФайле). // Перед вызовом необходимо заполнить сведения о файле (см. ЗаполнитьСведенияОФайле).
@@ -761,10 +777,6 @@
ПутьКФайлу = ПолноеИмяФайлаВТоме(СвойстваФайла); ПутьКФайлу = ПолноеИмяФайлаВТоме(СвойстваФайла);
Если ЗначениеЗаполнено(ПрисоединенныйФайл.Ссылка) Тогда
РаботаСФайламиСлужебный.УдалитьЗаписьИзРегистраДвоичныеДанныеФайлов(ПрисоединенныйФайл.Ссылка);
КонецЕсли;
Попытка Попытка
Если ТипЗнч(ДвоичныеДанныеИлиПуть) = Тип("Строка") Тогда Если ТипЗнч(ДвоичныеДанныеИлиПуть) = Тип("Строка") Тогда
@@ -817,6 +829,11 @@
ВызватьИсключение СтрокаИсключения; ВызватьИсключение СтрокаИсключения;
КонецПопытки; КонецПопытки;
Если ЗначениеЗаполнено(ПрисоединенныйФайл.Ссылка) Тогда
РаботаСФайламиСлужебный.УдалитьЗаписьИзРегистраДвоичныеДанныеФайлов(ПрисоединенныйФайл.Ссылка);
КонецЕсли;
КонецПроцедуры КонецПроцедуры
Процедура ОчиститьУдаленныеФайлы() Экспорт Процедура ОчиститьУдаленныеФайлы() Экспорт
@@ -833,7 +850,13 @@
// Том - СправочникСсылка.ТомаХраненияФайлов // Том - СправочникСсылка.ТомаХраненияФайлов
// //
Процедура ОчиститьУдаленныеФайлыВТоме(Том) Процедура ОчиститьУдаленныеФайлыВТоме(Том)
ВремяПоследнейОчистки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Том, "ВремяПоследнейОчисткиФайлов"); РеквизитыТома = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Том, "ВремяПоследнейОчисткиФайлов, ПометкаУдаления");
Если РеквизитыТома.ПометкаУдаления <> Неопределено И РеквизитыТома.ПометкаУдаления Тогда
Возврат;
КонецЕсли;
ВремяПоследнейОчистки = РеквизитыТома.ВремяПоследнейОчисткиФайлов;
КорневойКаталог = ПолныйПутьТома(Том); КорневойКаталог = ПолныйПутьТома(Том);
ФайлыДляУдаления = ФайлыДляУдаления(КорневойКаталог, ВремяПоследнейОчистки); ФайлыДляУдаления = ФайлыДляУдаления(КорневойКаталог, ВремяПоследнейОчистки);
@@ -1567,6 +1590,12 @@
// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления. // См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
Обработчик.НачальноеЗаполнение = Истина;
Обработчик.ОбщиеДанные = Истина;
Обработчик.Процедура = "РаботаСФайламиВТомахСлужебный.УстановитьСпособФормированияПутиТома";
Обработчик.РежимВыполнения = "Оперативно";
Обработчик = Обработчики.Добавить(); Обработчик = Обработчики.Добавить();
Обработчик.Версия = "2.4.1.1"; Обработчик.Версия = "2.4.1.1";
Обработчик.ОбщиеДанные = Истина; Обработчик.ОбщиеДанные = Истина;
@@ -1644,6 +1673,12 @@
КонецПроцедуры КонецПроцедуры
// Для функции см. ПолныйПутьТома
//
Процедура УстановитьСпособФормированияПутиТома() Экспорт
Константы.ПутьКТомуБезУчетаРегиональныхНастроек.Установить(Истина);
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область ВспомогательныеПроцедурыИФункции #Область ВспомогательныеПроцедурыИФункции
@@ -86,6 +86,7 @@
Процедура ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы) Экспорт Процедура ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы) Экспорт
Типы.Добавить(Метаданные.РегистрыСведений.ОчередьИзвлеченияТекста); Типы.Добавить(Метаданные.РегистрыСведений.ОчередьИзвлеченияТекста);
Типы.Добавить(Метаданные.Константы.ПутьКТомуБезУчетаРегиональныхНастроек);
ИсключаемыеТипы = ПрочитатьКэшВыгрузкиЗагрузкиФайловыхФункций().ОбъектыХранения; ИсключаемыеТипы = ПрочитатьКэшВыгрузкиЗагрузкиФайловыхФункций().ОбъектыХранения;
Для Каждого ИсключаемыйТип Из ИсключаемыеТипы Цикл Для Каждого ИсключаемыйТип Из ИсключаемыеТипы Цикл
@@ -204,4 +204,13 @@
КонецФункции КонецФункции
// Для функции см. ПолныйПутьТома.
//
// Возвращаемое значение:
// Булево
//
Функция ПутьКТомуБезУчетаРегиональныхНастроек() Экспорт
Возврат Константы.ПутьКТомуБезУчетаРегиональныхНастроек.Получить();
КонецФункции
#КонецОбласти #КонецОбласти
@@ -4352,8 +4352,11 @@
Функция ОписаниеОшибки_unauthorized_client() Функция ОписаниеОшибки_unauthorized_client()
Результат = ОбщееОписаниеОшибки("200007", Результат = ОбщееОписаниеОшибки("200007",
НСтр("ru = 'OAuth-клиент использует незарегистрированный сценарий аутентификации (Flow) "OAuth-"
|или был передан некорректный redirect_uri.'")); + НСтр("ru = 'клиент использует незарегистрированный сценарий аутентификации'")
+ " (Flow) "
+ НСтр("ru = 'или был передан некорректный'")
+ " redirect_uri.");
Возврат Результат; Возврат Результат;
@@ -4367,7 +4370,9 @@
Функция ОписаниеОшибки_invalid_client() Функция ОписаниеОшибки_invalid_client()
Результат = ОбщееОписаниеОшибки("200008", Результат = ОбщееОписаниеОшибки("200008",
НСтр("ru = 'OAuth-клиент не зарегистрирован или неверно указан clientID.'")); "OAuth-"
+ НСтр("ru = 'клиент не зарегистрирован или неверно указан'")
+ " clientID.");
Возврат Результат; Возврат Результат;
@@ -384,15 +384,7 @@
Запрос = HTTPЗапросКСервисуСклонения(СклоняемыйТекст); Запрос = HTTPЗапросКСервисуСклонения(СклоняемыйТекст);
Попытка Попытка
Ответ = ВыполнитьЗапросСервисуСклонений(Соединение, Запрос); Ответ = ВыполнитьЗапросСервисуСклонений(Соединение, Запрос);
Исключение
ЗарегистрироватьОшибкуСервисаСклонений(ИнформацияОбОшибке(), ПоказыватьСообщения);
УстановитьДоступностьСервисаСклонения(Ложь);
Возврат Неопределено;
КонецПопытки;
УстановитьОтключениеБезопасногоРежима(Ложь);
СтруктураОтвета = СтруктураОтветаСервисаСклонений(Ответ); СтруктураОтвета = СтруктураОтветаСервисаСклонений(Ответ);
СтруктураСклонения = СклонениеПредставленийОбъектовКлиентСервер.СтруктураСклонения(); СтруктураСклонения = СклонениеПредставленийОбъектовКлиентСервер.СтруктураСклонения();
СтруктураСклонения.Именительный = СклоняемыйТекст; СтруктураСклонения.Именительный = СклоняемыйТекст;
СтруктураСклонения.Родительный = СтруктураОтвета.Р; СтруктураСклонения.Родительный = СтруктураОтвета.Р;
@@ -400,6 +392,12 @@
СтруктураСклонения.Винительный = СтруктураОтвета.В; СтруктураСклонения.Винительный = СтруктураОтвета.В;
СтруктураСклонения.Творительный = СтруктураОтвета.Т; СтруктураСклонения.Творительный = СтруктураОтвета.Т;
СтруктураСклонения.Предложный = СтруктураОтвета.П; СтруктураСклонения.Предложный = СтруктураОтвета.П;
Исключение
ЗарегистрироватьОшибкуСервисаСклонений(ИнформацияОбОшибке(), ПоказыватьСообщения);
УстановитьДоступностьСервисаСклонения(Ложь);
Возврат Неопределено;
КонецПопытки;
УстановитьОтключениеБезопасногоРежима(Ложь);
Возврат СтруктураСклонения; Возврат СтруктураСклонения;
@@ -424,4 +424,10 @@
КонецФункции КонецФункции
Функция КомпонентаПоследнейВерсии(Идентификатор, Местоположение, ВнешняяКомпонента) Экспорт
Возврат СтандартныеПодсистемыСервер.КомпонентаПоследнейВерсии(Идентификатор, Местоположение, ВнешняяКомпонента);
КонецФункции
#КонецОбласти #КонецОбласти
@@ -436,6 +436,85 @@
КонецФункции КонецФункции
// Последняя версия компоненты из макета.
//
// Параметры:
// Местоположение - Строка - местоположение
//
// Возвращаемое значение:
// ФиксированнаяСтруктура - последняя версия компоненты из макета:
// * Версия - Строка
// * Местоположение - Строка
//
Функция ПоследняяВерсияКомпонентыИзМакета(Местоположение) Экспорт
МестоположениеМакетаРазделенное = СтрРазделить(Местоположение, ".");
НачалоИмениМакета = МестоположениеМакетаРазделенное.Получить(МестоположениеМакетаРазделенное.ВГраница());
Если МестоположениеМакетаРазделенное[0] = "ОбщийМакет" Тогда
ПутьКМакетам = Метаданные.ОбщиеМакеты;
Иначе
МестоположениеМакетаРазделенное.Удалить(МестоположениеМакетаРазделенное.ВГраница());
МестоположениеМакетаРазделенное.Удалить(МестоположениеМакетаРазделенное.ВГраница());
МетаданныеПоПолномуИмени = Метаданные.НайтиПоПолномуИмени(СтрСоединить(МестоположениеМакетаРазделенное, "."));
Если МетаданныеПоПолномуИмени = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Неизвестный тип объекта метаданных ""%1"".'"), МетаданныеПоПолномуИмени);
КонецЕсли;
ПутьКМакетам = МетаданныеПоПолномуИмени.Макеты;
КонецЕсли;
ТаблицаВерсий = Новый ТаблицаЗначений;
ТаблицаВерсий.Колонки.Добавить("ПолноеИмяМакета");
ТаблицаВерсий.Колонки.Добавить("Версия");
ТаблицаВерсий.Колонки.Добавить("РасширеннаяВерсия", ОбщегоНазначения.ОписаниеТипаСтрока(23));
Для Каждого Макет Из ПутьКМакетам Цикл
Если Макет.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.ВнешняяКомпонента Тогда
Продолжить;
КонецЕсли;
ИмяМакета = Макет.Имя;
Если СтрНачинаетсяС(ВРег(ИмяМакета), ВРег(НачалоИмениМакета)) Тогда
СтрокаТаблицыВерсий = ТаблицаВерсий.Добавить();
СтрокаТаблицыВерсий.ПолноеИмяМакета = Макет.ПолноеИмя();
Если ВРег(ИмяМакета) = ВРег(НачалоИмениМакета) Тогда
СтрокаТаблицыВерсий.РасширеннаяВерсия = "00000_00000_00000_00000";
СтрокаТаблицыВерсий.Версия = "0.0.0.0";
Иначе
Версия = Сред(ИмяМакета, СтрДлина(НачалоИмениМакета) + 1);
ЧастиВерсии = СтрРазделить(Версия, "_", Ложь);
РасширенныеЧастиВерсии = Новый Массив;
Для Каждого ЧастьВерсии Из ЧастиВерсии Цикл
РасширенныеЧастиВерсии.Добавить(ВРег(Прав("0000" + ЧастьВерсии, 5)));
КонецЦикла;
СтрокаТаблицыВерсий.РасширеннаяВерсия = СтрСоединить(РасширенныеЧастиВерсии, "_");
СтрокаТаблицыВерсий.Версия = СтрСоединить(ЧастиВерсии, ".");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ТаблицаВерсий.Количество() = 0 Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не существует макет внешней компоненты %1 в метаданных
|%2.'"),
ИмяМакета,
ПутьКМакетам);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ТаблицаВерсий.Сортировать("РасширеннаяВерсия Убыв");
Параметры = Новый Структура;
Параметры.Вставить("Версия", ТаблицаВерсий[0].Версия);
Параметры.Вставить("Местоположение", ТаблицаВерсий[0].ПолноеИмяМакета);
Возврат Новый ФиксированнаяСтруктура(Параметры);
КонецФункции
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -1822,6 +1822,69 @@
КонецФункции КонецФункции
// Компонента последней версии.
//
// Параметры:
// Идентификатор - Строка - идентификатор компоненты.
// Местоположение - Строка - местоположение макета компоненты (без указания версии).
// ВнешняяКомпонента - Неопределено
// - Структура - данные внешней компоненты:
// * Идентификатор - Строка - идентификатор компоненты в справочнике.
// * Версия - Строка - версия.
// * Местоположение - Строка - местоположение.
// * Доступна - Булево - признак доступности.
//
// Возвращаемое значение:
// Структура - компонента последней версии из справочника или макета:
// * Идентификатор - Строка - идентификатор компоненты в справочнике.
// * Местоположение - Строка - макет компоненты, адрес ссылки в справочнике.
// * Версия - Строка - версия.
//
Функция КомпонентаПоследнейВерсии(Идентификатор, Местоположение, ВнешняяКомпонента = Неопределено) Экспорт
КомпонентаПоследнейВерсии = Новый Структура;
КомпонентаПоследнейВерсии.Вставить("Идентификатор", Идентификатор);
КомпонентаПоследнейВерсии.Вставить("Местоположение", "");
КомпонентаПоследнейВерсии.Вставить("Версия", "");
// Информация о внешней компоненте.
Если ВнешняяКомпонента <> Неопределено И ВнешняяКомпонента.Доступна Тогда
ПоследняяВерсияВнешнейКомпоненты = Новый Структура("Версия, Местоположение",
ВнешняяКомпонента.Версия, ВнешняяКомпонента.Местоположение);
Иначе
ПоследняяВерсияВнешнейКомпоненты = Неопределено;
КонецЕсли;
// Информация о компоненте из макета.
Если ЗначениеЗаполнено(Местоположение) Тогда
ПоследняяВерсияКомпонентыИзМакета = СтандартныеПодсистемыПовтИсп.ПоследняяВерсияКомпонентыИзМакета(
Местоположение);
Иначе
ПоследняяВерсияКомпонентыИзМакета = Неопределено;
КонецЕсли;
Если ПоследняяВерсияВнешнейКомпоненты <> Неопределено И ПоследняяВерсияКомпонентыИзМакета <> Неопределено Тогда
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ПоследняяВерсияВнешнейКомпоненты.Версия,
ПоследняяВерсияКомпонентыИзМакета.Версия) > 0 Тогда
ЗаполнитьЗначенияСвойств(КомпонентаПоследнейВерсии, ПоследняяВерсияВнешнейКомпоненты);
Возврат КомпонентаПоследнейВерсии;
Иначе
ЗаполнитьЗначенияСвойств(КомпонентаПоследнейВерсии, ПоследняяВерсияКомпонентыИзМакета);
Возврат КомпонентаПоследнейВерсии;
КонецЕсли;
ИначеЕсли ПоследняяВерсияКомпонентыИзМакета <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(КомпонентаПоследнейВерсии, ПоследняяВерсияКомпонентыИзМакета);
Возврат КомпонентаПоследнейВерсии;
ИначеЕсли ПоследняяВерсияВнешнейКомпоненты <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(КомпонентаПоследнейВерсии, ПоследняяВерсияВнешнейКомпоненты);
Возврат КомпонентаПоследнейВерсии;
КонецЕсли;
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Не существует внешняя компонента с идентификатором %1'", "ru"), Идентификатор);
КонецФункции
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -230,10 +230,37 @@
ВыборкаПисьма = ВыборкаУчетныеЗаписи.Выбрать(); ВыборкаПисьма = ВыборкаУчетныеЗаписи.Выбрать();
Пока ВыборкаПисьма.Следующий() Цикл Пока ВыборкаПисьма.Следующий() Цикл
ПараметрыПисьма = Взаимодействия.ПараметрыПисьмаДляОтправки(ВыборкаПисьма.Ссылка.ПолучитьОбъект());
ПисьмоОбъект = ВыборкаПисьма.Ссылка.ПолучитьОбъект();
ПараметрыПисьма = Взаимодействия.ПараметрыПисьмаДляОтправки(ПисьмоОбъект);
Попытка
Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(УчетнаяЗапись, ПараметрыПисьма); Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(УчетнаяЗапись, ПараметрыПисьма);
Исключение
ШаблонСообщенияОбОшибке = НСтр("ru = 'При подготовке письма %1 к отправке произошла ошибка
|%2'", ОбщегоНазначения.КодОсновногоЯзыка());
ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонСообщенияОбОшибке,
Взаимодействия.ПредставлениеПисьма(ПисьмоОбъект.Тема, ПисьмоОбъект.Дата),
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , ТекстСообщенияОбОшибке);
МенеджерЗаписи = РегистрыСведений.НепринятыеКОбработкеПочтовымСерверомИсходящиеПисьма.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Письмо = ВыборкаПисьма.Ссылка;
МенеджерЗаписи.КоличествоПопыток = 5;
МенеджерЗаписи.ИнформацияООшибке = ТекстСообщенияОбОшибке;
МенеджерЗаписи.Записать();
Продолжить;
КонецПопытки;
Письма.Добавить(Письмо); Письма.Добавить(Письмо);
СсылкиПисем.Вставить(ВыборкаПисьма.Ссылка, Письмо); СсылкиПисем.Вставить(ВыборкаПисьма.Ссылка, Письмо);
КонецЦикла; КонецЦикла;
ТекстОшибки = Неопределено; ТекстОшибки = Неопределено;
@@ -287,7 +287,6 @@
НастройкиПодсистемы = Новый Структура; НастройкиПодсистемы = Новый Структура;
НастройкиПодсистемы.Вставить("ПерсональныеНастройки", ЭлектроннаяПодпись.ПерсональныеНастройки()); НастройкиПодсистемы.Вставить("ПерсональныеНастройки", ЭлектроннаяПодпись.ПерсональныеНастройки());
НастройкиПодсистемы.Вставить("ОбщиеНастройки", ЭлектроннаяПодпись.ОбщиеНастройки()); НастройкиПодсистемы.Вставить("ОбщиеНастройки", ЭлектроннаяПодпись.ОбщиеНастройки());
НастройкиПодсистемы.Вставить("ОписаниеКомпоненты", ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеКомпоненты());
НастройкиПодсистемы = Новый ФиксированнаяСтруктура(НастройкиПодсистемы); НастройкиПодсистемы = Новый ФиксированнаяСтруктура(НастройкиПодсистемы);
Параметры.Вставить("ЭлектроннаяПодпись", НастройкиПодсистемы); Параметры.Вставить("ЭлектроннаяПодпись", НастройкиПодсистемы);
КонецЕсли; КонецЕсли;
@@ -2010,7 +2009,7 @@
Функция ОбъектВнешнейКомпонентыXMLDSig() Функция ОбъектВнешнейКомпонентыXMLDSig()
ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеКомпоненты(); ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеКомпоненты();
ОбъектКомпоненты = ОбщегоНазначения.ПодключитьКомпонентуИзМакета(ОписаниеКомпоненты.ИмяОбъекта, ОбъектКомпоненты = ОбщегоНазначения.ПодключитьКомпонентуИзМакета(ОписаниеКомпоненты.ИмяОбъекта,
ОписаниеКомпоненты.ПолноеИмяМакета); ОписаниеКомпоненты.ПолноеИмяМакета);
@@ -2101,8 +2100,19 @@
ВызватьИсключение ТекстОшибки; ВызватьИсключение ТекстОшибки;
КонецЕсли; КонецЕсли;
ОписаниеПути = ПутьКПрограмме(ОписаниеПрограммы.Ссылка);
Если ЗначениеЗаполнено(ОписаниеПути.ТекстОшибки) Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось определить путь к программе электронной подписи
|""%1"" по причине:
|%2'"),
ОписаниеПрограммы.Ссылка,
ОписаниеПути.ТекстОшибки);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Свойства = Новый Структура("Тип, Путь", ОписаниеПрограммы.ТипПрограммы, ""); Свойства = Новый Структура("Тип, Путь", ОписаниеПрограммы.ТипПрограммы, "");
Свойства.Путь = ПутьКПрограмме(ОписаниеПрограммы.Ссылка).ПутьКПрограмме; Свойства.Путь = ОписаниеПути.ПутьКПрограмме;
Возврат Свойства; Возврат Свойства;
@@ -2879,7 +2889,7 @@
Функция ПутьКПрограмме(ПрограммаСсылка) Функция ПутьКПрограмме(ПрограммаСсылка)
Результат = Новый Структура("ПутьКПрограмме, Существует", "", Ложь); Результат = Новый Структура("ПутьКПрограмме, Существует, ТекстОшибки", "", Ложь, "");
Если Не ТребуетсяПутьКПрограмме() Тогда Если Не ТребуетсяПутьКПрограмме() Тогда
Возврат Результат; Возврат Результат;
@@ -436,12 +436,27 @@
// * АдресСертификата - Строка // * АдресСертификата - Строка
// * ОткрытьДанные - см. ОткрытьСертификат.ОткрытьДанные // * ОткрытьДанные - см. ОткрытьСертификат.ОткрытьДанные
// * ДанныеСертификата - см. ОткрытьСертификат.ДанныеСертификата // * ДанныеСертификата - см. ОткрытьСертификат.ДанныеСертификата
// Контекст открытия сертификата.
//
// Возвращаемое значение:
// Структура - контекст открытия сертификата:
// * ДанныеСертификата - см. ОткрытьСертификат.ДанныеСертификата
// * ОткрытьДанные - см. ОткрытьСертификат.ОткрытьДанные
// * АдресСертификата - Строка
// * Ссылка - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования
// * Отпечаток - Строка
// * ОшибкаНаКлиенте - Структура
// //
Функция КонтекстОткрытияСертификата() Функция КонтекстОткрытияСертификата()
Контекст = Новый Структура; Контекст = Новый Структура;
Контекст.Вставить("ДанныеСертификата"); Контекст.Вставить("ДанныеСертификата");
Контекст.Вставить("ОткрытьДанные"); Контекст.Вставить("ОткрытьДанные");
Контекст.Вставить("АдресСертификата"); Контекст.Вставить("АдресСертификата");
Контекст.Вставить("Ссылка");
Контекст.Вставить("Отпечаток");
Контекст.Вставить("ОшибкаНаКлиенте", Новый Структура);
Возврат Контекст; Возврат Контекст;
КонецФункции КонецФункции
@@ -488,8 +503,8 @@
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Контекст.Вставить("Ссылка", Ссылка); Контекст.Ссылка = Ссылка;
Контекст.Вставить("Отпечаток", Отпечаток); Контекст.Отпечаток = Отпечаток;
Если Контекст.АдресСертификата = Неопределено Если Контекст.АдресСертификата = Неопределено
И Ссылка = Неопределено Тогда И Ссылка = Неопределено Тогда
@@ -506,11 +521,10 @@
Процедура ОткрытьСертификатПослеПоискаСертификата(Результат, Контекст) Экспорт Процедура ОткрытьСертификатПослеПоискаСертификата(Результат, Контекст) Экспорт
Если ТипЗнч(Результат) = Тип("СертификатКриптографии") Тогда Если ТипЗнч(Результат) = Тип("СертификатКриптографии") Тогда
Контекст.Вставить("ОшибкаНаКлиенте", Новый Структура);
Результат.НачатьВыгрузку(Новый ОписаниеОповещения( Результат.НачатьВыгрузку(Новый ОписаниеОповещения(
"ОткрытьСертификатПослеВыгрузкиНайденногоСертификата", ЭтотОбъект, Контекст)); "ОткрытьСертификатПослеВыгрузкиНайденногоСертификата", ЭтотОбъект, Контекст));
Иначе Иначе
Контекст.Вставить("ОшибкаНаКлиенте", Результат); Контекст.ОшибкаНаКлиенте = Результат;
ОткрытьСертификатЗавершение(Контекст); ОткрытьСертификатЗавершение(Контекст);
КонецЕсли; КонецЕсли;
@@ -529,10 +543,12 @@
Процедура ОткрытьСертификатЗавершение(Контекст) Процедура ОткрытьСертификатЗавершение(Контекст)
ПараметрыФормы = Новый Структура; ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ссылка", Контекст.Ссылка); ПараметрыФормы.Вставить("Ссылка");
ПараметрыФормы.Вставить("АдресСертификата", Контекст.АдресСертификата); ПараметрыФормы.Вставить("АдресСертификата");
ПараметрыФормы.Вставить("Отпечаток", Контекст.Отпечаток); ПараметрыФормы.Вставить("Отпечаток");
ПараметрыФормы.Вставить("ОшибкаНаКлиенте", Контекст.ОшибкаНаКлиенте); ПараметрыФормы.Вставить("ОшибкаНаКлиенте");
ЗаполнитьЗначенияСвойств(ПараметрыФормы, Контекст);
ОткрытьФорму("ОбщаяФорма.Сертификат", ПараметрыФормы); ОткрытьФорму("ОбщаяФорма.Сертификат", ПараметрыФормы);
@@ -3166,13 +3182,6 @@
КонецПроцедуры КонецПроцедуры
// См. ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеКомпоненты
Функция ОписаниеКомпоненты() Экспорт
Возврат СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().ЭлектроннаяПодпись.ОписаниеКомпоненты;
КонецФункции
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Общие процедуры и функции управляемых форм. // Общие процедуры и функции управляемых форм.
@@ -4625,7 +4634,7 @@
ПараметрыПодключения = ОбщегоНазначенияКлиент.ПараметрыПодключенияКомпоненты(); ПараметрыПодключения = ОбщегоНазначенияКлиент.ПараметрыПодключенияКомпоненты();
ПараметрыПодключения.ТекстПояснения = ТекстПояснения; ПараметрыПодключения.ТекстПояснения = ТекстПояснения;
ОписаниеКомпоненты = ОписаниеКомпоненты(); ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеКомпоненты();
ОбщегоНазначенияКлиент.ПодключитьКомпонентуИзМакета( ОбщегоНазначенияКлиент.ПодключитьКомпонентуИзМакета(
Новый ОписаниеОповещения("ПослеПодключенияКомпоненты", ЭтотОбъект, Контекст), Новый ОписаниеОповещения("ПослеПодключенияКомпоненты", ЭтотОбъект, Контекст),
@@ -221,6 +221,12 @@
ТекстОшибки = НСтр("ru = 'Не указан путь к программе.'"); ТекстОшибки = НСтр("ru = 'Не указан путь к программе.'");
НеУказанПуть = Истина; НеУказанПуть = Истина;
ИначеЕсли Не ОписаниеПути.Существует Тогда ИначеЕсли Не ОписаниеПути.Существует Тогда
Если ОписаниеПути.Свойство("ТекстОшибки")
И ЗначениеЗаполнено(ОписаниеПути.ТекстОшибки) Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось определить путь к программе по причине:
|%1'"), ОписаниеПути.ТекстОшибки);
Иначе
ПутиКМодулям = СтрРазделить(ОписаниеПути.ПутьКПрограмме, ":", Ложь); ПутиКМодулям = СтрРазделить(ОписаниеПути.ПутьКПрограмме, ":", Ложь);
Если ПутиКМодулям.Количество() = 1 Тогда Если ПутиКМодулям.Количество() = 1 Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -230,6 +236,7 @@
НСтр("ru = 'Ни один из файлов не существует: ""%1"".'"), НСтр("ru = 'Ни один из файлов не существует: ""%1"".'"),
СтрСоединить(ПутиКМодулям, """, """)); СтрСоединить(ПутиКМодулям, """, """));
КонецЕсли; КонецЕсли;
КонецЕсли;
Иначе Иначе
ТекстОшибки = ""; ТекстОшибки = "";
ПутьКПрограмме = ОписаниеПути.ПутьКПрограмме; ПутьКПрограмме = ОписаниеПути.ПутьКПрограмме;
@@ -1322,6 +1329,24 @@
КонецФункции КонецФункции
// Описание подключения внешней компоненты (XMLDSIG).
//
// Возвращаемое значение:
// Структура:
// * ПолноеИмяМакета - Строка
// * ИмяОбъекта - Строка
//
Функция ОписаниеКомпоненты() Экспорт
Параметры = Новый Структура;
Параметры.Вставить("ИмяОбъекта", "XMLDSignAddIn");
Параметры.Вставить("ПолноеИмяМакета",
"Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Макет.КомпонентаXMLDSig");
Возврат Параметры;
КонецФункции
Функция ИдентификаторыАлгоритмовХешированияИОткрытогоКлюча() Экспорт Функция ИдентификаторыАлгоритмовХешированияИОткрытогоКлюча() Экспорт
Идентификаторы = Новый Массив; Идентификаторы = Новый Массив;
@@ -123,71 +123,6 @@
КонецФункции КонецФункции
// Возвращаемое значение:
// ФиксированнаяСтруктура:
// * ИмяОбъекта - Строка
// * ПолноеИмяМакета - Строка
//
Функция ОписаниеКомпоненты() Экспорт
ИменаМакетовБезВерсии = Новый Массив;
ИменаМакетовБезВерсии.Добавить("КомпонентаExtraCryptoAPI");
ИменаМакетовБезВерсии.Добавить("КомпонентаXMLDSig");
ВерсииМакетов = Новый Соответствие;
Для Каждого Макет Из Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.Макеты Цикл
Если Макет.ТипМакета <> Метаданные.СвойстваОбъектов.ТипМакета.ВнешняяКомпонента Тогда
Продолжить;
КонецЕсли;
ИмяМакета = Макет.Имя;
Для Каждого ИмяМакетаБезВерсии Из ИменаМакетовБезВерсии Цикл
Если СтрНачинаетсяС(ВРег(ИмяМакета), ВРег(ИмяМакетаБезВерсии)) Тогда
Версия = Сред(ИмяМакета, СтрДлина(ИмяМакетаБезВерсии) + 1);
ЧастиВерсии = СтрРазделить(Версия, "_", Ложь);
РасширенныеЧастиВерсии = Новый Массив;
Для Каждого ЧастьВерсии Из ЧастиВерсии Цикл
РасширенныеЧастиВерсии.Добавить(ВРег(Прав("0000" + ЧастьВерсии, 5)));
КонецЦикла;
РасширеннаяВерсия = СтрСоединить(РасширенныеЧастиВерсии, "_");
ВерсииМакета = ВерсииМакетов.Получить(ИмяМакетаБезВерсии);
Если ВерсииМакета = Неопределено Тогда
ВерсииМакета = Новый СписокЗначений;
ВерсииМакетов.Вставить(ИмяМакетаБезВерсии, ВерсииМакета);
КонецЕсли;
ВерсииМакета.Добавить(РасширеннаяВерсия, ИмяМакета);
КонецЕсли;
КонецЦикла;
КонецЦикла;
ВерсииМакета = Неопределено;
Для Каждого ИмяМакетаБезВерсии Из ИменаМакетовБезВерсии Цикл
ВерсииМакета = ВерсииМакетов.Получить(ИмяМакетаБезВерсии);
Если ВерсииМакета <> Неопределено Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если ВерсииМакета = Неопределено Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось найти макет внешней компоненты в метаданных справочника
|%1.'"),
"СертификатыКлючейЭлектроннойПодписиИШифрования");
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ВерсииМакета.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
ПолноеИмяМакета = "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Макет."
+ ВерсииМакета[0].Представление;
Параметры = Новый Структура;
Параметры.Вставить("ИмяОбъекта", "XMLDSignAddIn");
Параметры.Вставить("ПолноеИмяМакета", ПолноеИмяМакета);
Возврат Новый ФиксированнаяСтруктура(Параметры);
КонецФункции
// Возвращаемое значение: // Возвращаемое значение:
// Структура: // Структура:
// * Ссылка - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования // * Ссылка - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
@@ -266,9 +201,12 @@
ПутиКПрограммамНаСерверахLinux = Новый Соответствие; ПутиКПрограммамНаСерверахLinux = Новый Соответствие;
Выборка = Запрос.Выполнить().Выбрать(); Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
ТекстыОшибок = Новый Массив;
ОписаниеПути = Новый Структура; ОписаниеПути = Новый Структура;
ОписаниеПути.Вставить("ПутьКПрограмме", Выборка.ПутьКПрограмме); ОписаниеПути.Вставить("ПутьКПрограмме", Выборка.ПутьКПрограмме);
ОписаниеПути.Вставить("Существует", ОдинИзМодулейСуществует(Выборка.ПутьКПрограмме)); ОписаниеПути.Вставить("Существует", ОдинИзМодулейСуществует(Выборка.ПутьКПрограмме, ТекстыОшибок));
ОписаниеПути.Вставить("ТекстОшибки", ?(ОписаниеПути.Существует, "",
СтрСоединить(ТекстыОшибок, Символы.ПС)));
ПутиКПрограммамНаСерверахLinux.Вставить(Выборка.Программа, ОписаниеПути); ПутиКПрограммамНаСерверахLinux.Вставить(Выборка.Программа, ОписаниеПути);
КонецЦикла; КонецЦикла;
@@ -320,15 +258,20 @@
Если ПутиКМодулямПрограммы = Неопределено Тогда Если ПутиКМодулямПрограммы = Неопределено Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
ОписаниеПути = Новый Структура("ПутьКПрограмме, Существует", ПутиКМодулямПрограммы[0], Ложь); ТекстыОшибок = Новый Массив;
ОписаниеПути = Новый Структура("ПутьКПрограмме, Существует, ТекстОшибки",
ПутиКМодулямПрограммы[0], Ложь, "");
Для Каждого ПутиКМодулям Из ПутиКМодулямПрограммы Цикл Для Каждого ПутиКМодулям Из ПутиКМодулямПрограммы Цикл
Если Не ОдинИзМодулейСуществует(ПутиКМодулям) Тогда Если Не ОдинИзМодулейСуществует(ПутиКМодулям, ТекстыОшибок) Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
ОписаниеПути.ПутьКПрограмме = ПутиКМодулям; ОписаниеПути.ПутьКПрограмме = ПутиКМодулям;
ОписаниеПути.Существует = Истина; ОписаниеПути.Существует = Истина;
Прервать; Прервать;
КонецЦикла; КонецЦикла;
Если Не ОписаниеПути.Существует Тогда
ОписаниеПути.ТекстОшибки = СтрСоединить(ТекстыОшибок, Символы.ПС);
КонецЕсли;
Прервать; Прервать;
КонецЦикла; КонецЦикла;
@@ -336,13 +279,20 @@
КонецФункции КонецФункции
Функция ОдинИзМодулейСуществует(ПутиКМодулям) Функция ОдинИзМодулейСуществует(ПутиКМодулям, ТекстыОшибок)
МодулиПрограммы = СтрРазделить(ПутиКМодулям, ":"); МодулиПрограммы = СтрРазделить(ПутиКМодулям, ":");
Результат = Ложь; Результат = Ложь;
Для Каждого МодульПрограммы Из МодулиПрограммы Цикл Для Каждого МодульПрограммы Из МодулиПрограммы Цикл
Файл = Новый Файл(МодульПрограммы); Файл = Новый Файл(МодульПрограммы);
Если Файл.Существует() Тогда Попытка
Существует = Файл.Существует();
Исключение
Существует = Ложь;
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстыОшибок.Добавить(КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
КонецПопытки;
Если Существует Тогда
Результат = Истина; Результат = Истина;
Прервать; Прервать;
КонецЕсли; КонецЕсли;
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="67b04258-04cc-4d85-9bd0-0862a104a5c9">
<name>ТипОшибка</name>
<synonym>
<key>ru</key>
<value>Тип ошибка</value>
</synonym>
</mdclass:CommonPicture>
+10 -10
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="4a72826e-16d5-11ec-e398-0242ac110002"> <mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="dd4147ca-2228-11ec-5e88-0242ac110002">
<name>БиблиотекаСтандартныхПодсистем</name> <name>БиблиотекаСтандартныхПодсистем</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value> <value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym> </synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="4a728278-16d5-11ec-e398-0242ac110002"/> <containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="dd4147cb-2228-11ec-5e88-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="4a7282aa-16d5-11ec-e398-0242ac110002"/> <containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="dd414810-2228-11ec-5e88-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="4a7282b4-16d5-11ec-e398-0242ac110002"/> <containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="dd414811-2228-11ec-5e88-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="4a7282b5-16d5-11ec-e398-0242ac110002"/> <containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="dd41481a-2228-11ec-5e88-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="4a7282be-16d5-11ec-e398-0242ac110002"/> <containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="dd41481b-2228-11ec-5e88-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="4a7282c8-16d5-11ec-e398-0242ac110002"/> <containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="dd414824-2228-11ec-5e88-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="ef1f8629-e2de-4040-b221-53ef4cd3cdf3"/> <containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="42e6992d-8cc8-44a1-ac8f-6b1330ed99ce"/>
<defaultRunMode>ManagedApplication</defaultRunMode> <defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant> <scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles> <defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles> <defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor> <vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.5.192</version> <version>3.1.5.208</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress> <updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents> <includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities> <usedMobileApplicationFunctionalities>
@@ -491,7 +491,6 @@
<commonPictures>CommonPicture.ТипКонстанта</commonPictures> <commonPictures>CommonPicture.ТипКонстанта</commonPictures>
<commonPictures>CommonPicture.ТипМакрос</commonPictures> <commonPictures>CommonPicture.ТипМакрос</commonPictures>
<commonPictures>CommonPicture.ТипНеопределено</commonPictures> <commonPictures>CommonPicture.ТипНеопределено</commonPictures>
<commonPictures>CommonPicture.ТипОшибка</commonPictures>
<commonPictures>CommonPicture.ТипПапка</commonPictures> <commonPictures>CommonPicture.ТипПапка</commonPictures>
<commonPictures>CommonPicture.ТипСоставнойДополнительный</commonPictures> <commonPictures>CommonPicture.ТипСоставнойДополнительный</commonPictures>
<commonPictures>CommonPicture.ТипСоставнойОсновной</commonPictures> <commonPictures>CommonPicture.ТипСоставнойОсновной</commonPictures>
@@ -1655,6 +1654,7 @@
<constants>Constant.ПроверятьИспользованиеУдаляемыхОбъектов</constants> <constants>Constant.ПроверятьИспользованиеУдаляемыхОбъектов</constants>
<constants>Constant.ПроверятьЭлектронныеПодписиНаСервере</constants> <constants>Constant.ПроверятьЭлектронныеПодписиНаСервере</constants>
<constants>Constant.ПрофильБезопасностиИнформационнойБазы</constants> <constants>Constant.ПрофильБезопасностиИнформационнойБазы</constants>
<constants>Constant.ПутьКТомуБезУчетаРегиональныхНастроек</constants>
<constants>Constant.РазрешитьВыполнениеДООРегламентнымиЗаданиямиВМоделиСервиса</constants> <constants>Constant.РазрешитьВыполнениеДООРегламентнымиЗаданиямиВМоделиСервиса</constants>
<constants>Constant.РежимОчисткиФайлов</constants> <constants>Constant.РежимОчисткиФайлов</constants>
<constants>Constant.СведенияОБлокируемыхОбъектах</constants> <constants>Constant.СведенияОБлокируемыхОбъектах</constants>
@@ -1 +1 @@
{6,1,1,ad0e7d92-16d5-11ec-6794-0242ac110002,1,94040bb4-16d5-11ec-059c-0242ac110002,"3.1.5.192","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6466,1,0,4a72826e-16d5-11ec-e398-0242ac110002,4a72826e-16d5-11ec-e398-0242ac110002,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63Line truncated {6,1,1,4260491c-2229-11ec-ef84-0242ac110002,1,27e531b0-2229-11ec-be93-0242ac110002,"3.1.5.208","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6465,1,0,dd4147ca-2228-11ec-5e88-0242ac110002,dd4147ca-2228-11ec-5e88-0242ac110002,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63Line truncated
@@ -0,0 +1,29 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2021, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
ПредыдущееЗначение = Константы.ПутьКТомуБезУчетаРегиональныхНастроек.Получить();
Если ПредыдущееЗначение <> Значение
И РаботаСФайламиВТомахСлужебный.ЕстьТомаХраненияФайлов() Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru='Изменение способа формирования пути к тому запрещено. Есть файлы в томах.'"),
,,,Отказ);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Constant 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="6a9f1485-21a4-41e8-b8a7-26340eff5085">
<producedTypes>
<managerType typeId="cdc07643-4dce-4ee1-9ac6-427f175d9990" valueTypeId="55633c90-7d30-46ad-bf94-547e1c316df2"/>
<valueManagerType typeId="5339b5dd-c96a-4b3b-8e1e-6bf348b084cc" valueTypeId="fd5f54e9-a45f-434d-b4d3-b4e6dfcfe69e"/>
<valueKeyType typeId="b79c3d0d-4110-44cd-92e7-786caa271869" valueTypeId="070dae92-97ed-4dd9-a7a7-ece45e9506da"/>
</producedTypes>
<name>ПутьКТомуБезУчетаРегиональныхНастроек</name>
<synonym>
<key>ru</key>
<value>Путь к тому без учета региональных настроек</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<useStandardCommands>true</useStandardCommands>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataLockControlMode>Managed</dataLockControlMode>
</mdclass:Constant>
@@ -47,30 +47,30 @@
Объект.ИсточникВыгрузки = "Отбор"; Объект.ИсточникВыгрузки = "Отбор";
РазделениеВключено = ОбщегоНазначения.РазделениеВключено(); РазделениеВключено = ОбщегоНазначения.РазделениеВключено();
ЗаполнитьВерсиюФорматаПоУмолчанию(МассивДоступныхВерсий);
Если МассивДоступныхВерсий.Количество() = 0 Тогда
СтрокаПоддерживаемыеВерсииФормата = НСтр("ru = 'Не обнаружены поддерживаемые версии формата'");
Элементы.ФормаВыполнитьОперацию.Доступность = Ложь;
Элементы.СтрокаПоддерживаемыеВерсииФормата.ЦветТекста = ЦветаСтиля.ПоясняющийОшибкуТекст;
Иначе
ПредставлениеСпискаВерсий = "";
Для Каждого ЭлементМассива Из МассивДоступныхВерсий Цикл
ПредставлениеСпискаВерсий = ПредставлениеСпискаВерсий + "; " + ЭлементМассива.Ключ;
Элементы.ВерсияФормата.СписокВыбора.Добавить(ЭлементМассива.Ключ);
Элементы.ВерсияФорматаЗагрузка.СписокВыбора.Добавить(ЭлементМассива.Ключ);
КонецЦикла;
ПредставлениеСпискаВерсий = Сред(ПредставлениеСпискаВерсий, 3);
СтрокаПоддерживаемыеВерсииФормата = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Поддерживаемые версии формата: %1'"), ПредставлениеСпискаВерсий);
Объект.ВерсияФормата = Элементы.ВерсияФормата.СписокВыбора[МассивДоступныхВерсий.Количество()-1].Значение;
ОбновитьПравилаВыгрузкиНаСервере();
ОбновитьПравилаЗагрузкиНаСервере();
КонецЕсли;
КонецПроцедуры КонецПроцедуры
&НаСервере &НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
Если ЗначениеЗаполнено(Объект.ВерсияФормата) Тогда
Если Элементы.ВерсияФормата.СписокВыбора.НайтиПоЗначению(Объект.ВерсияФормата) = Неопределено Тогда
МассивДоступныхВерсий = Новый Соответствие;
ОбменДаннымиПереопределяемый.ПриПолученииДоступныхВерсийФормата(МассивДоступныхВерсий);
ЗаполнитьВерсиюФорматаПоУмолчанию(МассивДоступныхВерсий);
Иначе
ОбновитьПравилаВыгрузкиНаСервере(); ОбновитьПравилаВыгрузкиНаСервере();
ОбновитьПравилаЗагрузкиНаСервере();
КонецЕсли;
КонецЕсли;
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -989,6 +989,39 @@
МодульДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания); МодульДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
КонецПроцедуры КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВерсиюФорматаПоУмолчанию(МассивДоступныхВерсий)
Если МассивДоступныхВерсий.Количество() = 0 Тогда
СтрокаПоддерживаемыеВерсииФормата = НСтр("ru ='Не обнаружены поддерживаемые версии формата'", ОбщегоНазначения.КодОсновногоЯзыка());
Элементы.ФормаВыполнитьОперацию.Доступность = Ложь;
Элементы.СтрокаПоддерживаемыеВерсииФормата.ЦветТекста = ЦветаСтиля.ПоясняющийОшибкуТекст;
Иначе
Элементы.ВерсияФормата.СписокВыбора.Очистить();
ПредставлениеСпискаВерсий = "";
Для Каждого ЭлементМассива Из МассивДоступныхВерсий Цикл
ПредставлениеСпискаВерсий = ПредставлениеСпискаВерсий + "; " + ЭлементМассива.Ключ;
Элементы.ВерсияФормата.СписокВыбора.Добавить(ЭлементМассива.Ключ);
КонецЦикла;
ПредставлениеСпискаВерсий = Сред(ПредставлениеСпискаВерсий, 3);
СтрокаПоддерживаемыеВерсииФормата = СтрШаблон(НСтр("ru = 'Поддерживаемые версии формата: %1'"), ПредставлениеСпискаВерсий);
Объект.ВерсияФормата = Элементы.ВерсияФормата.СписокВыбора[МассивДоступныхВерсий.Количество()-1].Значение;
ОбновитьПравилаВыгрузкиНаСервере();
ОбновитьПравилаЗагрузкиНаСервере();
КонецЕсли;
КонецПроцедуры
#Область ЗагрузкаНастроекВыгрузки #Область ЗагрузкаНастроекВыгрузки
&НаСервере &НаСервере
@@ -24,11 +24,14 @@
"ВидТранспортаСообщенийОбмена,ВыполнятьЗагрузку,ВыполнятьВыгрузку"); "ВидТранспортаСообщенийОбмена,ВыполнятьЗагрузку,ВыполнятьВыгрузку");
Если ПараметрыЗадания.ВидТранспортаСообщенийОбмена = Перечисления.ВидыТранспортаСообщенийОбмена.WS Тогда Если ПараметрыЗадания.ВидТранспортаСообщенийОбмена = Перечисления.ВидыТранспортаСообщенийОбмена.WS Тогда
ПараметрыОбмена.ДлительнаяОперация = ПараметрыЗадания.ДлительнаяОперация; ПараметрыОбмена.ДлительнаяОперация = ПараметрыЗадания.ДлительнаяОперация;
ПараметрыОбмена.ДлительнаяОперацияРазрешена = Истина; ПараметрыОбмена.ДлительнаяОперацияРазрешена = Истина;
ПараметрыОбмена.ИдентификаторОперации = ПараметрыЗадания.ИдентификаторДлительнойОперации; ПараметрыОбмена.ИдентификаторОперации = ПараметрыЗадания.ИдентификаторДлительнойОперации;
ПараметрыОбмена.ИдентификаторФайла = ПараметрыЗадания.ИдентификаторФайлаСообщенияВСервисе; ПараметрыОбмена.ИдентификаторФайла = ПараметрыЗадания.ИдентификаторФайлаСообщенияВСервисе;
ПараметрыОбмена.ПараметрыАутентификации = ПараметрыЗадания.ПараметрыАутентификации; ПараметрыОбмена.ПараметрыАутентификации = ПараметрыЗадания.ПараметрыАутентификации;
ПараметрыОбмена.ИнтервалОжиданияНаСервере = 15;
КонецЕсли; КонецЕсли;
ОбменДаннымиСервер.ПроверитьВозможностьЗапускаОбмена(ПараметрыЗадания.УзелИнформационнойБазы, ПараметрыЗадания.Отказ); ОбменДаннымиСервер.ПроверитьВозможностьЗапускаОбмена(ПараметрыЗадания.УзелИнформационнойБазы, ПараметрыЗадания.Отказ);
@@ -2861,19 +2861,7 @@
<value>Новое значение</value> <value>Новое значение</value>
</title> </title>
<id>4</id> <id>4</id>
<valueType> <valueType/>
<types>Boolean</types>
<types>String</types>
<types>Date</types>
<types>Number</types>
<types>AnyRef</types>
<numberQualifiers>
<precision>30</precision>
<scale>10</scale>
</numberQualifiers>
<stringQualifiers/>
<dateQualifiers/>
</valueType>
<view> <view>
<common>true</common> <common>true</common>
</view> </view>
@@ -1099,9 +1099,9 @@
Если ТекущаяСтраница = Элементы.ШагПоискМестИспользования Тогда Если ТекущаяСтраница = Элементы.ШагПоискМестИспользования Тогда
ЗаполнитьМестаИспользования(Задание.АдресРезультата); ЗаполнитьМестаИспользования(Задание.АдресРезультата);
Активизировать();
Шаг = НастройкиМастера.ТекущийШаг;// см. ДобавитьШагМастера Шаг = НастройкиМастера.ТекущийШаг;// см. ДобавитьШагМастера
ПерейтиНаШагМастера(Шаг.Индекс + 1); ПерейтиНаШагМастера(Шаг.Индекс + 1);
Активизировать();
ИначеЕсли ТекущаяСтраница = Элементы.ШагОбъединение Тогда ИначеЕсли ТекущаяСтраница = Элементы.ШагОбъединение Тогда
@@ -4706,7 +4706,7 @@
&НаКлиенте &НаКлиенте
Процедура УстановитьПараметрыКомпоненты(ПолноеИмяМакета, ПараметрыПодключения) Процедура УстановитьПараметрыКомпоненты(ПолноеИмяМакета, ПараметрыПодключения)
ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиент.ОписаниеКомпоненты(); ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеКомпоненты();
ПолноеИмяМакета = ОписаниеКомпоненты.ПолноеИмяМакета; ПолноеИмяМакета = ОписаниеКомпоненты.ПолноеИмяМакета;
ПараметрыПодключения.ИдентификаторыСозданияОбъектов.Добавить(ОписаниеКомпоненты.ИмяОбъекта); ПараметрыПодключения.ИдентификаторыСозданияОбъектов.Добавить(ОписаниеКомпоненты.ИмяОбъекта);
@@ -4746,7 +4746,7 @@
&НаКлиенте &НаКлиенте
Процедура УстановитьПодключенныеМодули(РаботаСДвоичнымиДанными, Криптография, РезультатПодключения) Процедура УстановитьПодключенныеМодули(РаботаСДвоичнымиДанными, Криптография, РезультатПодключения)
ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиент.ОписаниеКомпоненты(); ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеКомпоненты();
ОбъектКомпоненты = РезультатПодключения.ПодключаемыйМодуль.Получить(ОписаниеКомпоненты.ИмяОбъекта); ОбъектКомпоненты = РезультатПодключения.ПодключаемыйМодуль.Получить(ОписаниеКомпоненты.ИмяОбъекта);
РаботаСДвоичнымиДанными = ОбъектКомпоненты; РаботаСДвоичнымиДанными = ОбъектКомпоненты;
Криптография = ОбъектКомпоненты; Криптография = ОбъектКомпоненты;
@@ -248,11 +248,8 @@
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
ЭтоРазделенныйОбъектМетаданных = Ложь; ЭтоРазделенныйОбъектМетаданных = ЭтоРазделенныйОбъект(ОписаниеОбъекта);
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса") Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
ЭтоРазделенныйОбъектМетаданных = ОписаниеОбъекта.РазделениеДанных.Свойство(МодульРаботаВМоделиСервиса.РазделительОсновныхДанных());
КонецЕсли;
Если ЭтоРазделенныйОбъектМетаданных Тогда Если ЭтоРазделенныйОбъектМетаданных Тогда
ЗаполнитьМодельДанныхПредоставляемыхДляСтандартногоИнтерфейсаOData(Результат, ОписаниеОбъекта.ПолноеИмя, Исключаемые); ЗаполнитьМодельДанныхПредоставляемыхДляСтандартногоИнтерфейсаOData(Результат, ОписаниеОбъекта.ПолноеИмя, Исключаемые);
@@ -266,6 +263,7 @@
КонецФункции КонецФункции
// Возвращает эталонный состав роли для назначения пользователю информационной базы, // Возвращает эталонный состав роли для назначения пользователю информационной базы,
// логин и пароль которого будет использоваться при подключении к стандартному интерфейсу // логин и пароль которого будет использоваться при подключении к стандартному интерфейсу
// OData (в модели сервиса). // OData (в модели сервиса).
@@ -389,6 +387,27 @@
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
Функция ЭтоРазделенныйОбъект(ОписаниеОбъекта)
ЭтоРазделенныйОбъектМетаданных = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса") Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
ЭтоРазделенныйОбъектМетаданных = ОписаниеОбъекта.РазделениеДанных.Свойство(МодульРаботаВМоделиСервиса.РазделительОсновныхДанных());
Иначе
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ОписаниеОбъекта.ПолноеИмя);
Если ЭтоСсылочныеДанные(ОбъектМетаданных)
ИЛИ ОбщегоНазначения.ЭтоРегистр(ОбъектМетаданных) Тогда
КонецЕсли;
Если ОбщегоНазначения.ЭтоЖурналДокументов(ОбъектМетаданных) Тогда
ЭтоРазделенныйОбъектМетаданных = ПравоДоступа("Чтение", ОбъектМетаданных, Метаданные.Роли.УдаленныйДоступOData);
КонецЕсли;
КонецЕсли;
Возврат ЭтоРазделенныйОбъектМетаданных;
КонецФункции
Функция ПараметрыНастройкиСоставаСтандартногоИнтерфейсаOData() Экспорт Функция ПараметрыНастройкиСоставаСтандартногоИнтерфейсаOData() Экспорт
Объект = Создать(); Объект = Создать();
@@ -482,11 +501,7 @@
СвойстваОбъектовМетаданных = ИнтерфейсODataСлужебный.СвойстваОбъектаМоделиКонфигурации( СвойстваОбъектовМетаданных = ИнтерфейсODataСлужебный.СвойстваОбъектаМоделиКонфигурации(
ИнтерфейсODataСлужебныйПовтИсп.ОписаниеМоделиДанныхКонфигурации(), ПолноеИмя); ИнтерфейсODataСлужебныйПовтИсп.ОписаниеМоделиДанныхКонфигурации(), ПолноеИмя);
ЭтоРазделенныйОбъектМетаданных = Ложь; ЭтоРазделенныйОбъектМетаданных = ЭтоРазделенныйОбъект(СвойстваОбъектовМетаданных);
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса") Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
ЭтоРазделенныйОбъектМетаданных = СвойстваОбъектовМетаданных.РазделениеДанных.Свойство(МодульРаботаВМоделиСервиса.РазделительОсновныхДанных());
КонецЕсли;
Строка.Чтение = Истина; Строка.Чтение = Истина;
Строка.ПолноеИмя = ПолноеИмя; Строка.ПолноеИмя = ПолноеИмя;
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<ConditionalAppearance xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows">
<item>
<selection>
<item>
<field>ЗаполнятьПустые</field>
</item>
</selection>
<filter>
<item xsi:type="FilterItemComparison">
<left xsi:type="dcscor:Field">ЗаполнятьПустые</left>
<comparisonType>Equal</comparisonType>
<right xsi:type="xs:boolean">true</right>
</item>
</filter>
<appearance>
<dcscor:item xsi:type="SettingsParameterValue">
<dcscor:parameter>Шрифт</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Font" ref="sys:DefaultGUIFont" bold="true" italic="false" underline="false" strikeout="false" kind="WindowsFont"/>
</dcscor:item>
</appearance>
</item>
</ConditionalAppearance>
@@ -123,10 +123,6 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Если ЕстьЦиклПорядкаВыполненияОбработчиков() Тогда
Возврат;
КонецЕсли;
Адрес = ПоместитьДанныеОбработчикаВХранилище(ВладелецФормы.УникальныйИдентификатор); Адрес = ПоместитьДанныеОбработчикаВХранилище(ВладелецФормы.УникальныйИдентификатор);
Модифицированность = Ложь; Модифицированность = Ложь;
Закрыть(Адрес); Закрыть(Адрес);
@@ -149,6 +145,7 @@
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы #Область ОбработчикиСобытийЭлементовШапкиФормы
@@ -423,6 +420,7 @@
Адрес = ПоместитьДанныеОбработчикаВХранилище(ВладелецФормы.УникальныйИдентификатор); Адрес = ПоместитьДанныеОбработчикаВХранилище(ВладелецФормы.УникальныйИдентификатор);
Оповестить("ИзменилосьОписаниеОбработчикаОбновления", Адрес); Оповестить("ИзменилосьОписаниеОбработчикаОбновления", Адрес);
Элементы.Объявление.Видимость = Модифицированность; Элементы.Объявление.Видимость = Модифицированность;
Элементы.ВыделитьПустойПорядок.Видимость = Ложь;
КонецПроцедуры КонецПроцедуры
@@ -518,6 +516,29 @@
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ВыделитьПустойПорядок(Команда)
ВыделенныеСтроки = Элементы.ПриоритетыВыполнения.ВыделенныеСтроки;
УжеВыделенные = Новый Массив;
Для Каждого ИдСтроки Из ВыделенныеСтроки Цикл
Приоритет = Объект.ПриоритетыВыполнения.НайтиПоИдентификатору(ИдСтроки);
Если ПустаяСтрока(Приоритет.Порядок) Тогда
УжеВыделенные.Добавить(ИдСтроки);
КонецЕсли;
КонецЦикла;
ВыделенныеСтроки.Очистить();
Для Каждого ИдСтроки Из УжеВыделенные Цикл
ВыделенныеСтроки.Добавить(ИдСтроки);
КонецЦикла;
Для Каждого Приоритет Из Объект.ПриоритетыВыполнения Цикл
Если ПустаяСтрока(Приоритет.Порядок) Тогда
ВыделенныеСтроки.Добавить(Приоритет.НомерСтроки-1);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -555,10 +576,6 @@
Возврат Ложь; Возврат Ложь;
КонецЕсли; КонецЕсли;
Если ЕстьЦиклПорядкаВыполненияОбработчиков() Тогда
Возврат Ложь;
КонецЕсли;
ТекущийОбработчик = Объект.ОбработчикиОбновления[0]; ТекущийОбработчик = Объект.ОбработчикиОбновления[0];
Если ТекущийОбработчик.РежимВыполнения = "Отложенно" Если ТекущийОбработчик.РежимВыполнения = "Отложенно"
И Объект.ИзменяемыеОбъекты.Количество() = 0 Тогда И Объект.ИзменяемыеОбъекты.Количество() = 0 Тогда
@@ -13,6 +13,10 @@
<key>ru</key> <key>ru</key>
<value>Сохранять в репозиторий</value> <value>Сохранять в репозиторий</value>
</title> </title>
<title>
<key>en</key>
<value>Save to repository</value>
</title>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -66,6 +70,10 @@
<key>ru</key> <key>ru</key>
<value>Путь к каталогу SRC</value> <value>Путь к каталогу SRC</value>
</inputHint> </inputHint>
<inputHint>
<key>en</key>
<value>SRC directory path</value>
</inputHint>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormField"> <items xsi:type="form:FormField">
@@ -130,6 +138,10 @@
<key>ru</key> <key>ru</key>
<value>Параметры выгрузки</value> <value>Параметры выгрузки</value>
</title> </title>
<title>
<key>en</key>
<value>Export parameters</value>
</title>
<extendedTooltip> <extendedTooltip>
<name>ГруппаВыгрузкаРасширеннаяПодсказка</name> <name>ГруппаВыгрузкаРасширеннаяПодсказка</name>
<id>79</id> <id>79</id>
@@ -159,10 +171,18 @@
<key>ru</key> <key>ru</key>
<value>Настройки выгрузки описания обработчиков</value> <value>Настройки выгрузки описания обработчиков</value>
</title> </title>
<title>
<key>en</key>
<value>Handler details export settings</value>
</title>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Настройки параметров загрузки/выгрузки/группировки обработчиков обновления.</value> <value>Настройки параметров загрузки/выгрузки/группировки обработчиков обновления.</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Settings of update handler import, export, or grouping parameters.</value>
</toolTip>
<width>150</width> <width>150</width>
<extendedTooltip> <extendedTooltip>
<name>ГруппаНастройкиЗагрузкиВыгрузкиРасширеннаяПодсказка</name> <name>ГруппаНастройкиЗагрузкиВыгрузкиРасширеннаяПодсказка</name>
@@ -182,6 +202,10 @@
<key>ru</key> <key>ru</key>
<value>Загружать описание обработчиков из &lt;?>; Сохранять в &lt;?>;</value> <value>Загружать описание обработчиков из &lt;?>; Сохранять в &lt;?>;</value>
</collapsedRepresentationTitle> </collapsedRepresentationTitle>
<collapsedRepresentationTitle>
<key>en</key>
<value>Import handler details from &lt;?>; Save to &lt;?>;</value>
</collapsedRepresentationTitle>
<collapsed>true</collapsed> <collapsed>true</collapsed>
<showLeftMargin>true</showLeftMargin> <showLeftMargin>true</showLeftMargin>
<united>true</united> <united>true</united>
@@ -200,6 +224,10 @@
<key>ru</key> <key>ru</key>
<value>Библиотека</value> <value>Библиотека</value>
</title> </title>
<title>
<key>en</key>
<value>Library</value>
</title>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -353,6 +381,10 @@
<key>ru</key> <key>ru</key>
<value>Отборы обработчиков обновления</value> <value>Отборы обработчиков обновления</value>
</title> </title>
<title>
<key>en</key>
<value>Update handler filters</value>
</title>
<extendedTooltip> <extendedTooltip>
<name>ГруппаОтборыРасширеннаяПодсказка</name> <name>ГруппаОтборыРасширеннаяПодсказка</name>
<id>124</id> <id>124</id>
@@ -443,6 +475,10 @@
<key>ru</key> <key>ru</key>
<value>Установить номер сборки</value> <value>Установить номер сборки</value>
</title> </title>
<title>
<key>en</key>
<value>Set assembly number</value>
</title>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -474,6 +510,10 @@
<key>ru</key> <key>ru</key>
<value>Быстрые отборы:</value> <value>Быстрые отборы:</value>
</title> </title>
<title>
<key>en</key>
<value>Quick filters:</value>
</title>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -544,6 +584,10 @@
<key>ru</key> <key>ru</key>
<value>Команды обработчиков обновления</value> <value>Команды обработчиков обновления</value>
</title> </title>
<title>
<key>en</key>
<value>Update handler commands</value>
</title>
<extendedTooltip> <extendedTooltip>
<name>ГруппаКомандыТаблицыРасширеннаяПодсказка</name> <name>ГруппаКомандыТаблицыРасширеннаяПодсказка</name>
<id>157</id> <id>157</id>
@@ -571,6 +615,10 @@
<key>ru</key> <key>ru</key>
<value>Обработчики обновления</value> <value>Обработчики обновления</value>
</title> </title>
<title>
<key>en</key>
<value>Update handlers</value>
</title>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -1117,6 +1165,10 @@
<key>ru</key> <key>ru</key>
<value>Начальное заполнение</value> <value>Начальное заполнение</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Initial filling</value>
</toolTip>
<extendedTooltip> <extendedTooltip>
<name>ОбработчикиОбновленияНачальноеЗаполнениеРасширеннаяПодсказка</name> <name>ОбработчикиОбновленияНачальноеЗаполнениеРасширеннаяПодсказка</name>
<id>25</id> <id>25</id>
@@ -1154,6 +1206,10 @@
<key>ru</key> <key>ru</key>
<value>Обязательный</value> <value>Обязательный</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Required</value>
</toolTip>
<extendedTooltip> <extendedTooltip>
<name>ОбработчикиОбновленияВыполнятьВГруппеОбязательныхРасширеннаяПодсказка</name> <name>ОбработчикиОбновленияВыполнятьВГруппеОбязательныхРасширеннаяПодсказка</name>
<id>37</id> <id>37</id>
@@ -1194,6 +1250,10 @@
<key>ru</key> <key>ru</key>
<value>Многопоточный</value> <value>Многопоточный</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Multi-threaded</value>
</toolTip>
<extendedTooltip> <extendedTooltip>
<name>ОбработчикиОбновленияМногопоточныйРасширеннаяПодсказка</name> <name>ОбработчикиОбновленияМногопоточныйРасширеннаяПодсказка</name>
<id>70</id> <id>70</id>
@@ -1444,6 +1504,11 @@
<key>ru</key> <key>ru</key>
<value>Текущий обработчик изменяет объекты, которые читаются другими обработчиками <value>Текущий обработчик изменяет объекты, которые читаются другими обработчиками
или другие обработчики изменяют объекты, которые читает текущий обработчик.</value> или другие обработчики изменяют объекты, которые читает текущий обработчик.</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Either this handler modifies objects readable by other handlers
or other handlers modify objects readable by this handler.</value>
</toolTip> </toolTip>
<extendedTooltip> <extendedTooltip>
<name>ОбработчикиОбновленияЗаписьЧитаемыхРасширеннаяПодсказка</name> <name>ОбработчикиОбновленияЗаписьЧитаемыхРасширеннаяПодсказка</name>
@@ -1485,6 +1550,10 @@
<key>ru</key> <key>ru</key>
<value>Повторная запись изменяемых объектов другими обработчиками.</value> <value>Повторная запись изменяемых объектов другими обработчиками.</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Rewriting objects that are modified by other handlers.</value>
</toolTip>
<extendedTooltip> <extendedTooltip>
<name>ОбработчикиОбновленияПовторнаяЗаписьРасширеннаяПодсказка</name> <name>ОбработчикиОбновленияПовторнаяЗаписьРасширеннаяПодсказка</name>
<id>148</id> <id>148</id>
@@ -1525,6 +1594,10 @@
<key>ru</key> <key>ru</key>
<value>Задан порядок выполнения</value> <value>Задан порядок выполнения</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Execution order set</value>
</toolTip>
<extendedTooltip> <extendedTooltip>
<name>ОбработчикиОбновленияЗаданПорядокВыполненияРасширеннаяПодсказка</name> <name>ОбработчикиОбновленияЗаданПорядокВыполненияРасширеннаяПодсказка</name>
<id>151</id> <id>151</id>
@@ -1565,6 +1638,10 @@
<key>ru</key> <key>ru</key>
<value>Изменен</value> <value>Изменен</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Changed</value>
</toolTip>
<extendedTooltip> <extendedTooltip>
<name>ОбработчикиОбновленияИзмененРасширеннаяПодсказка</name> <name>ОбработчикиОбновленияИзмененРасширеннаяПодсказка</name>
<id>200</id> <id>200</id>
@@ -1894,6 +1971,10 @@
<key>ru</key> <key>ru</key>
<value>Обработчики обновления стандартные</value> <value>Обработчики обновления стандартные</value>
</title> </title>
<title>
<key>en</key>
<value>Standard update handlers</value>
</title>
<extendedTooltip> <extendedTooltip>
<name>ОбработчикиОбновленияСтандартныеРасширеннаяПодсказка</name> <name>ОбработчикиОбновленияСтандартныеРасширеннаяПодсказка</name>
<id>233</id> <id>233</id>
@@ -2261,6 +2342,60 @@
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar> <locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</items> </items>
<items xsi:type="form:Button">
<name>СохранитьВФайл</name>
<id>253</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СохранитьВФайлРасширеннаяПодсказка</name>
<id>254</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>255</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗагрузитьИзФайлаРасширеннаяПодсказка</name>
<id>256</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"> <items xsi:type="form:Button">
<name>ПоказатьКодВыделенныхОбработчиков</name> <name>ПоказатьКодВыделенныхОбработчиков</name>
<id>230</id> <id>230</id>
@@ -2567,6 +2702,10 @@
<key>ru</key> <key>ru</key>
<value>Отладка</value> <value>Отладка</value>
</title> </title>
<title>
<key>en</key>
<value>Debug</value>
</title>
<extendedTooltip> <extendedTooltip>
<name>ГруппаОтладкаРасширеннаяПодсказка</name> <name>ГруппаОтладкаРасширеннаяПодсказка</name>
<id>206</id> <id>206</id>
@@ -2680,6 +2819,10 @@
<key>ru</key> <key>ru</key>
<value>Текущая библиотека</value> <value>Текущая библиотека</value>
</title> </title>
<title>
<key>en</key>
<value>Current library</value>
</title>
<id>4</id> <id>4</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -2700,6 +2843,10 @@
<key>ru</key> <key>ru</key>
<value>Читаемый объект</value> <value>Читаемый объект</value>
</title> </title>
<title>
<key>en</key>
<value>Object to read</value>
</title>
<id>8</id> <id>8</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -2720,6 +2867,10 @@
<key>ru</key> <key>ru</key>
<value>Изменяемый объект</value> <value>Изменяемый объект</value>
</title> </title>
<title>
<key>en</key>
<value>Object to change</value>
</title>
<id>9</id> <id>9</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -2837,6 +2988,10 @@
<key>ru</key> <key>ru</key>
<value>Каталог файлов ошибок</value> <value>Каталог файлов ошибок</value>
</title> </title>
<title>
<key>en</key>
<value>Error files directory</value>
</title>
<id>19</id> <id>19</id>
<valueType> <valueType>
<types>String</types> <types>String</types>
@@ -3009,11 +3164,19 @@
<key>ru</key> <key>ru</key>
<value>Загрузить описания</value> <value>Загрузить описания</value>
</title> </title>
<title>
<key>en</key>
<value>Import details</value>
</title>
<id>1</id> <id>1</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Загрузить описание обработчиков обновления</value> <value>Загрузить описание обработчиков обновления</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Import details of update handlers</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3034,11 +3197,19 @@
<key>ru</key> <key>ru</key>
<value>Сохранить в репозиторий</value> <value>Сохранить в репозиторий</value>
</title> </title>
<title>
<key>en</key>
<value>Save to repository</value>
</title>
<id>2</id> <id>2</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Сохранить в репозиторий</value> <value>Сохранить в репозиторий</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Save to the repository</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3059,11 +3230,19 @@
<key>ru</key> <key>ru</key>
<value>Проверить конфликты</value> <value>Проверить конфликты</value>
</title> </title>
<title>
<key>en</key>
<value>Check conflicts</value>
</title>
<id>3</id> <id>3</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Находит все пересечения обработчиков - изменение читаемых объектов и повторная запись.</value> <value>Находит все пересечения обработчиков - изменение читаемых объектов и повторная запись.</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Looking for handlers' collisions: modifiable and rewritable objects.</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3081,11 +3260,19 @@
<key>ru</key> <key>ru</key>
<value>Контроль построения очереди</value> <value>Контроль построения очереди</value>
</title> </title>
<title>
<key>en</key>
<value>Queue building control</value>
</title>
<id>4</id> <id>4</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Построить очередь</value> <value>Построить очередь</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Build the queue</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3103,11 +3290,19 @@
<key>ru</key> <key>ru</key>
<value>Показать все описания обработчиков</value> <value>Показать все описания обработчиков</value>
</title> </title>
<title>
<key>en</key>
<value>Show all handler details</value>
</title>
<id>5</id> <id>5</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Текст процедуры ПриДобавленииОбработчиковОбновления со списком всех описаний обработчиков</value> <value>Текст процедуры ПриДобавленииОбработчиковОбновления со списком всех описаний обработчиков</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Text of the OnAddUpdateHandlers procedure with the list of all handler details</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3125,11 +3320,19 @@
<key>ru</key> <key>ru</key>
<value>Выполнить тест построения очереди</value> <value>Выполнить тест построения очереди</value>
</title> </title>
<title>
<key>en</key>
<value>Test queue building</value>
</title>
<id>6</id> <id>6</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Выполнить тест построения очереди</value> <value>Выполнить тест построения очереди</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Test queue building</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3147,11 +3350,19 @@
<key>ru</key> <key>ru</key>
<value>Показать файл шаблона настройки генератора кода</value> <value>Показать файл шаблона настройки генератора кода</value>
</title> </title>
<title>
<key>en</key>
<value>Show template file for code generator customization</value>
</title>
<id>7</id> <id>7</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Показывает шаблон файла настроек тегов ERP для генерации кода описания обработчиков обновления (файл cut_tags.yml)</value> <value>Показывает шаблон файла настроек тегов ERP для генерации кода описания обработчиков обновления (файл cut_tags.yml)</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Shows a template of ERP tag settings file used to generate the update handler details code (the cut_tags.yml file)</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3169,11 +3380,19 @@
<key>ru</key> <key>ru</key>
<value>Показать все таблицы описания всех обработчиков</value> <value>Показать все таблицы описания всех обработчиков</value>
</title> </title>
<title>
<key>en</key>
<value>Show all handler details tables</value>
</title>
<id>9</id> <id>9</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Показать табличные части</value> <value>Показать табличные части</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Show tables</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3191,11 +3410,19 @@
<key>ru</key> <key>ru</key>
<value>Есть цикл в порядке обработчиков</value> <value>Есть цикл в порядке обработчиков</value>
</title> </title>
<title>
<key>en</key>
<value>Handler order has cycle</value>
</title>
<id>10</id> <id>10</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Проверить цикл в порядке обработчиков</value> <value>Проверить цикл в порядке обработчиков</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Check cycle in the handler order</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3213,11 +3440,19 @@
<key>ru</key> <key>ru</key>
<value>Рассчитать очередь</value> <value>Рассчитать очередь</value>
</title> </title>
<title>
<key>en</key>
<value>Calculate queue</value>
</title>
<id>12</id> <id>12</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Рассчитать очередь</value> <value>Рассчитать очередь</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Calculate queue</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3235,11 +3470,19 @@
<key>ru</key> <key>ru</key>
<value>Показать все вызовы обработчиков</value> <value>Показать все вызовы обработчиков</value>
</title> </title>
<title>
<key>en</key>
<value>Show all handler calls</value>
</title>
<id>13</id> <id>13</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Текст процедуры ПриДобавленииОбработчиковОбновления со списком вызовов всех процедур описаний обработчиков</value> <value>Текст процедуры ПриДобавленииОбработчиковОбновления со списком вызовов всех процедур описаний обработчиков</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Text of the OnAddUpdateHandlers procedure with the list of all handler details procedure calls</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3257,11 +3500,19 @@
<key>ru</key> <key>ru</key>
<value>Сохранить в репозиторий все обработчики</value> <value>Сохранить в репозиторий все обработчики</value>
</title> </title>
<title>
<key>en</key>
<value>Save all handlers to repository</value>
</title>
<id>14</id> <id>14</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Полностью перезаписывает все процедуры описания обработчиков</value> <value>Полностью перезаписывает все процедуры описания обработчиков</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Totally overwrites all handler details procedures.</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3279,11 +3530,19 @@
<key>ru</key> <key>ru</key>
<value>Показать тексты всех модулей</value> <value>Показать тексты всех модулей</value>
</title> </title>
<title>
<key>en</key>
<value>Show texts of all modules</value>
</title>
<id>15</id> <id>15</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Показать тексты всех модулей</value> <value>Показать тексты всех модулей</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Show texts of all modules</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3301,11 +3560,19 @@
<key>ru</key> <key>ru</key>
<value>для выделенных обработчиков</value> <value>для выделенных обработчиков</value>
</title> </title>
<title>
<key>en</key>
<value>for selected handlers</value>
</title>
<id>16</id> <id>16</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>в корень конфигурации и модули обновления установится максимальная сборка из обработчиков</value> <value>в корень конфигурации и модули обновления установится максимальная сборка из обработчиков</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>The maximum assembly of handlers will be installed to the configuration root and update modules</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3323,11 +3590,19 @@
<key>ru</key> <key>ru</key>
<value>Показать приоритеты и конфликты обработчика</value> <value>Показать приоритеты и конфликты обработчика</value>
</title> </title>
<title>
<key>en</key>
<value>Show handler priorities and conflicts</value>
</title>
<id>17</id> <id>17</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Показать приоритеты конфликты обработчика</value> <value>Показать приоритеты конфликты обработчика</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Show handler priorities and conflicts</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3345,6 +3620,10 @@
<key>ru</key> <key>ru</key>
<value>Сохранить список обработчиков тех. проекта</value> <value>Сохранить список обработчиков тех. проекта</value>
</title> </title>
<title>
<key>en</key>
<value>Save list of handlers of technical design</value>
</title>
<id>11</id> <id>11</id>
<use> <use>
<common>true</common> <common>true</common>
@@ -3363,6 +3642,10 @@
<key>ru</key> <key>ru</key>
<value>Показать код выделенных обработчиков</value> <value>Показать код выделенных обработчиков</value>
</title> </title>
<title>
<key>en</key>
<value>Show code of selected handlers</value>
</title>
<id>18</id> <id>18</id>
<use> <use>
<common>true</common> <common>true</common>
@@ -3385,11 +3668,19 @@
<key>ru</key> <key>ru</key>
<value>Сформировать тексты</value> <value>Сформировать тексты</value>
</title> </title>
<title>
<key>en</key>
<value>Generate texts</value>
</title>
<id>8</id> <id>8</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Сформировать тексты</value> <value>Сформировать тексты</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Generate texts</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3402,11 +3693,19 @@
<key>ru</key> <key>ru</key>
<value>Показать код описания обработчиков обновления</value> <value>Показать код описания обработчиков обновления</value>
</title> </title>
<title>
<key>en</key>
<value>Show update handler details code</value>
</title>
<id>19</id> <id>19</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Показать код описания обработчиков обновления</value> <value>Показать код описания обработчиков обновления</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Show update handler details code</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3424,11 +3723,19 @@
<key>ru</key> <key>ru</key>
<value>Перейти в упрощенный режим</value> <value>Перейти в упрощенный режим</value>
</title> </title>
<title>
<key>en</key>
<value>Go to simplified mode</value>
</title>
<id>20</id> <id>20</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Переключить режим формы</value> <value>Переключить режим формы</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Switch the form mode</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3446,11 +3753,19 @@
<key>ru</key> <key>ru</key>
<value>Показать объекты обработчика</value> <value>Показать объекты обработчика</value>
</title> </title>
<title>
<key>en</key>
<value>Show handler objects</value>
</title>
<id>21</id> <id>21</id>
<toolTip> <toolTip>
<key>ru</key> <key>ru</key>
<value>Показать объекты обработчика</value> <value>Показать объекты обработчика</value>
</toolTip> </toolTip>
<toolTip>
<key>en</key>
<value>Show handler objects</value>
</toolTip>
<use> <use>
<common>true</common> <common>true</common>
</use> </use>
@@ -3462,6 +3777,50 @@
<currentRowUse>Auto</currentRowUse> <currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse> <selectedRowsUse>Auto</selectedRowsUse>
</formCommands> </formCommands>
<formCommands>
<name>СохранитьВФайл</name>
<title>
<key>ru</key>
<value>Сохранить в файл</value>
</title>
<id>22</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>23</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>
<commandInterface> <commandInterface>
<navigationPanel/> <navigationPanel/>
<commandBar/> <commandBar/>
@@ -285,6 +285,13 @@
&НаКлиенте &НаКлиенте
Процедура ЗавершениеРедактированияОбработчика(Результат, ДополнительныеПараметры) Экспорт Процедура ЗавершениеРедактированияОбработчика(Результат, ДополнительныеПараметры) Экспорт
Если ЭтотОбъект.ТекущийЭлемент <> Неопределено И ЭтотОбъект.ТекущийЭлемент.Имя <> "ОбработчикиОбновления" Тогда
ЭтотОбъект.ТекущийЭлемент = Элементы.ОбработчикиОбновления;
Если ЭтотОбъект.ТекущийЭлемент.ТекущийЭлемент <> Неопределено И ЭтотОбъект.ТекущийЭлемент.ТекущийЭлемент.Имя <> "ОбработчикиОбновленияПроцедура" Тогда
ЭтотОбъект.ТекущийЭлемент.ТекущийЭлемент = Элементы.ОбработчикиОбновленияПроцедура;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Результат) Тогда Если ЗначениеЗаполнено(Результат) Тогда
ОбновитьДанныеОбработчика(Результат); ОбновитьДанныеОбработчика(Результат);
ИначеЕсли Элементы.ОбработчикиОбновления.ТекущиеДанные <> Неопределено ИначеЕсли Элементы.ОбработчикиОбновления.ТекущиеДанные <> Неопределено
@@ -458,6 +465,38 @@
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура СохранитьВФайл(Команда)
#Если НЕ ВебКлиент Тогда
ОбработчикВыбораФайла = Новый ОписаниеОповещения("ДиалогВыбораФайлаЗавершение", ЭтотОбъект, "");
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
ДиалогВыбораФайла.Заголовок = НСтр("ru = 'Укажите имя файла'");
ДиалогВыбораФайла.Фильтр = ФильтрФайловРезервнойКопии();
ДиалогВыбораФайла.МножественныйВыбор = Ложь;
ФайловаяСистемаКлиент.ПоказатьДиалогВыбора(ОбработчикВыбораФайла, ДиалогВыбораФайла);
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзФайла(Команда)
#Если НЕ ВебКлиент Тогда
Оповещение = Новый ОписаниеОповещения("ВыбратьФайлПослеПомещенияФайла", ЭтотОбъект);
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.Диалог.Заголовок = НСтр("ru = 'Укажите файл'");
ПараметрыЗагрузки.Диалог.Фильтр = ФильтрФайловРезервнойКопии();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ФайловаяСистемаКлиент.ЗагрузитьФайл(Оповещение, ПараметрыЗагрузки);
#КонецЕсли
КонецПроцедуры
#Область ПодменюОтладки #Область ПодменюОтладки
&НаКлиенте &НаКлиенте
@@ -4109,6 +4148,74 @@
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Функция ФильтрФайловРезервнойКопии()
Возврат НСтр("ru = 'Описание обработчиков (*.handlers)|*.handlers|Все файлы (*.*)|*.*'");
КонецФункции
&НаКлиенте
Процедура ДиалогВыбораФайлаЗавершение(ВыбранныйФайл, ДополнительныеПараметры) Экспорт
Если ВыбранныйФайл <> Неопределено Тогда
ИмяФайлаРезервнойКопии = ВыбранныйФайл[0];
Адрес = ПоместитьВоВременноеХранилище(ДанныеДляСохраненияВФайл());
ПараметрыСохранения = ФайловаяСистемаКлиент.ПараметрыСохраненияФайла();
ФайловаяСистемаКлиент.СохранитьФайл(Неопределено, Адрес, ИмяФайлаРезервнойКопии, ПараметрыСохранения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьФайлПослеПомещенияФайла(ВыбранныйФайл, ДополнительныеПараметры) Экспорт
Если ВыбранныйФайл <> Неопределено Тогда
ЗагрузитьДанныеИзФайла(ВыбранныйФайл.Хранение);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ДанныеДляСохраненияВФайл()
Данные = Новый Структура;
Данные.Вставить("ОбработчикиОбновления", Объект.ОбработчикиОбновления.Выгрузить());
Данные.Вставить("ЧитаемыеОбъекты", Объект.ЧитаемыеОбъекты.Выгрузить());
Данные.Вставить("ИзменяемыеОбъекты", Объект.ИзменяемыеОбъекты.Выгрузить());
Данные.Вставить("БлокируемыеОбъекты", Объект.БлокируемыеОбъекты.Выгрузить());
Данные.Вставить("ПриоритетыВыполнения", Объект.ПриоритетыВыполнения.Выгрузить());
Данные.Вставить("КонфликтыОбработчиков", Объект.КонфликтыОбработчиков.Выгрузить());
Возврат ЗначениеВСтрокуВнутр(Данные);
КонецФункции
&НаСервере
Процедура ЗагрузитьДанныеИзФайла(Адрес)
ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(Адрес); // ДвоичныеДанные
ВременныйФайл = ПолучитьИмяВременногоФайла(".tmp");
ДвоичныеДанныеФайла.Записать(ВременныйФайл);
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ВременныйФайл);
Строка = Текст.ПолучитьТекст();
Данные = ЗначениеИзСтрокиВнутр(Строка);
ФайловаяСистема.УдалитьВременныйФайл(ВременныйФайл);
Объект.ОбработчикиОбновления.Загрузить(Данные.ОбработчикиОбновления);
Объект.ЧитаемыеОбъекты.Загрузить(Данные.ЧитаемыеОбъекты);
Объект.ИзменяемыеОбъекты.Загрузить(Данные.ИзменяемыеОбъекты);
Объект.БлокируемыеОбъекты.Загрузить(Данные.БлокируемыеОбъекты);
Объект.ПриоритетыВыполнения.Загрузить(Данные.ПриоритетыВыполнения);
Объект.КонфликтыОбработчиков.Загрузить(Данные.КонфликтыОбработчиков);;
Обработка = ОбъектОбработки();
ОбновитьДанныеФормы(Обработка);
ТекущаяБиблиотека = "";
Модифицированность = Ложь;
КонецПроцедуры
&НаСервере &НаСервере
Процедура ПриИзмененииОбъектаПоискаНаСервере(ИмяТабличнойЧасти, ТекстОтбора) Процедура ПриИзмененииОбъектаПоискаНаСервере(ИмяТабличнойЧасти, ТекстОтбора)
@@ -369,10 +369,13 @@
&НаСервере &НаСервере
Процедура ПеренестиВТома(ФайлОбъект, СвойстваТома) Процедура ПеренестиВТома(ФайлОбъект, СвойстваТома)
ДанныеФайла = РаботаСФайлами.ДвоичныеДанныеФайла(ФайлОбъект.Ссылка); ДанныеФайла = РаботаСФайлами.ДвоичныеДанныеФайла(ФайлОбъект.Ссылка);
ФайлОбъект.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске;
РаботаСФайламиВТомахСлужебный.ДобавитьФайл(ФайлОбъект, ДанныеФайла, РаботаСФайламиВТомахСлужебный.ДобавитьФайл(ФайлОбъект, ДанныеФайла,
ФайлОбъект.ДатаМодификацииУниверсальная, , ?(ПереноситьВТом, ТомХраненияПриемник, Неопределено)); ФайлОбъект.ДатаМодификацииУниверсальная, , ?(ПереноситьВТом, ТомХраненияПриемник, Неопределено));
Если ФайлОбъект.ТипХраненияФайла <> Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
РаботаСФайламиСлужебный.УдалитьЗаписьИзРегистраДвоичныеДанныеФайлов(ФайлОбъект.Ссылка); РаботаСФайламиСлужебный.УдалитьЗаписьИзРегистраДвоичныеДанныеФайлов(ФайлОбъект.Ссылка);
КонецЕсли;
ФайлОбъект.Записать(); ФайлОбъект.Записать();
КонецПроцедуры КонецПроцедуры
@@ -226,6 +226,15 @@
ВыбранноеПолеКД.Поле = Новый ПолеКомпоновкиДанных("Наименование"); ВыбранноеПолеКД.Поле = Новый ПолеКомпоновкиДанных("Наименование");
ВыбранноеПолеКД = НастройкиКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПолеКД = НастройкиКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПолеКД.Поле = Новый ПолеКомпоновкиДанных("ПометкаУдаления"); ВыбранноеПолеКД.Поле = Новый ПолеКомпоновкиДанных("ПометкаУдаления");
Если Характеристики.Иерархический
И Характеристики.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда
ВыбранноеПолеКД = НастройкиКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПолеКД.Поле = Новый ПолеКомпоновкиДанных("ЭтоГруппа");
ВыбранноеПолеКД = НастройкиКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПолеКД.Поле = Новый ПолеКомпоновкиДанных("Родитель");
КонецЕсли;
// Сортировки. // Сортировки.
НастройкиКД.Порядок.Элементы.Очистить(); НастройкиКД.Порядок.Элементы.Очистить();
@@ -233,14 +242,7 @@
ЭлементПорядкаКД.Поле = Новый ПолеКомпоновкиДанных("Ссылка"); ЭлементПорядкаКД.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
// Отборы. // Отборы.
Если Характеристики.Иерархический //
И Характеристики.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда
ЭлементОтбораКД = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЭтоГруппа");
ЭлементОтбораКД.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораКД.ПравоеЗначение = Ложь;
КонецЕсли;
Если ОбъектМетаданных = Метаданные.Справочники.Пользователи Тогда Если ОбъектМетаданных = Метаданные.Справочники.Пользователи Тогда
ЭлементОтбораКД = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбораКД = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Служебный"); ЭлементОтбораКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Служебный");
@@ -280,6 +282,39 @@
ЭлементОтбораКД.ВидСравнения = ?(ЭталонныйОбъект = Неопределено, ВидСравненияКомпоновкиДанных.Больше, ВидСравненияКомпоновкиДанных.НеРавно); ЭлементОтбораКД.ВидСравнения = ?(ЭталонныйОбъект = Неопределено, ВидСравненияКомпоновкиДанных.Больше, ВидСравненияКомпоновкиДанных.НеРавно);
ОтборыКандидатов.Вставить("Ссылка", ЭлементОтбораКД); ОтборыКандидатов.Вставить("Ссылка", ЭлементОтбораКД);
Если Характеристики.Иерархический
И Характеристики.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда
ЭлементОтбораКД = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЭтоГруппа");
ЭлементОтбораКД.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборыКандидатов.Вставить("ЭтоГруппа", ЭлементОтбораКД);
ГруппаИЛИ = НастройкиКД.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИЛИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаИ = ГруппаИЛИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ЭлементОтбораКД = ГруппаИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЭтоГруппа");
ЭлементОтбораКД.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораКД.ПравоеЗначение = Ложь;
ГруппаИ = ГруппаИЛИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ЭлементОтбораКД = ГруппаИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЭтоГруппа");
ЭлементОтбораКД.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораКД.ПравоеЗначение = Истина;
ЭлементОтбораКД = ГруппаИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКД.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Родитель");
ЭлементОтбораКД.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборыКандидатов.Вставить("Родитель", ЭлементОтбораКД);
КонецЕсли;
// Результат и цикл поиска // Результат и цикл поиска
КоллекцияДублей = КоллекцияДублей(ПараметрыПоиска, ПоляДляСравненияНаПодобие, ПоляДляСравненияНаРавенство); КоллекцияДублей = КоллекцияДублей(ПараметрыПоиска, ПоляДляСравненияНаПодобие, ПоляДляСравненияНаРавенство);
@@ -873,7 +908,7 @@
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
ОбязательныеКолонки = СтрРазделить("Код,Наименование,Родитель,ПометкаУдаления", ","); ОбязательныеКолонки = СтрРазделить("Код,Наименование,Родитель,ПометкаУдаления,ЭтоГруппа", ",");
Для Каждого ИмяПоляТаблицы Из ОбязательныеКолонки Цикл Для Каждого ИмяПоляТаблицы Из ОбязательныеКолонки Цикл
Если ТаблицаДублей.Колонки.Найти(ИмяПоляТаблицы) = Неопределено Тогда Если ТаблицаДублей.Колонки.Найти(ИмяПоляТаблицы) = Неопределено Тогда
ТаблицаДублей.Колонки.Добавить(ИмяПоляТаблицы); ТаблицаДублей.Колонки.Добавить(ИмяПоляТаблицы);
@@ -882,7 +917,7 @@
ТаблицаДублей.Индексы.Добавить("Ссылка"); ТаблицаДублей.Индексы.Добавить("Ссылка");
ТаблицаДублей.Индексы.Добавить("Родитель"); ТаблицаДублей.Индексы.Добавить("Родитель");
ТаблицаДублей.Индексы.Добавить("Ссылка, Родитель"); ТаблицаДублей.Индексы.Добавить("Ссылка, Родитель,ЭтоГруппа");
Возврат ТаблицаДублей; Возврат ТаблицаДублей;
КонецФункции КонецФункции
@@ -156,6 +156,7 @@
<type>CommandBar</type> <type>CommandBar</type>
<extInfo xsi:type="form:CommandBarExtInfo"> <extInfo xsi:type="form:CommandBarExtInfo">
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
<commandSource>Item.Список</commandSource>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:Table"> <items xsi:type="form:Table">
@@ -1123,7 +1124,6 @@
<borderColor xsi:type="core:ColorRef"> <borderColor xsi:type="core:ColorRef">
<color>Style.BorderColor</color> <color>Style.BorderColor</color>
</borderColor> </borderColor>
<searchStringLocation>None</searchStringLocation>
<viewStatusLocation>None</viewStatusLocation> <viewStatusLocation>None</viewStatusLocation>
<searchControlLocation>None</searchControlLocation> <searchControlLocation>None</searchControlLocation>
<currentRowUse>SelectionPresentationAndChoice</currentRowUse> <currentRowUse>SelectionPresentationAndChoice</currentRowUse>
@@ -2123,6 +2123,7 @@
Элементы.ГруппаКомандаДобавить.Видимость = Ложь; Элементы.ГруппаКомандаДобавить.Видимость = Ложь;
Элементы.ДобавитьКомментарий.Доступность = Ложь; Элементы.ДобавитьКомментарий.Доступность = Ложь;
Элементы.ФормаОчиститьАдрес.Доступность = Ложь; Элементы.ФормаОчиститьАдрес.Доступность = Ложь;
Элементы.АдресНаДату.Доступность = Ложь;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -1,28 +0,0 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2021, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытий
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыРаботы = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске();
ПараметрыРезервногоКопирования = ПараметрыРаботы.РезервноеКопированиеИБ;
ПараметрыФормы = Новый Структура();
Если ПараметрыРезервногоКопирования.Свойство("РезультатКопирования") Тогда
ПараметрыФормы.Вставить("РежимРаботы", ?(ПараметрыРезервногоКопирования.РезультатКопирования, "УспешноВыполнено", "НеВыполнено"));
ПараметрыФормы.Вставить("ИмяФайлаРезервнойКопии", ПараметрыРезервногоКопирования.ИмяФайлаРезервнойКопии);
КонецЕсли;
ОткрытьФорму("Обработка.РезервноеКопированиеИБ.Форма.РезервноеКопированиеДанных", ПараметрыФормы);
КонецПроцедуры
#КонецОбласти
@@ -212,14 +212,4 @@
<group>ActionsPanelTools</group> <group>ActionsPanelTools</group>
<representation>Auto</representation> <representation>Auto</representation>
</commands> </commands>
<commands uuid="61892a62-9381-401d-af31-9073ef2509fb">
<name>ПоказатьРезультат</name>
<synonym>
<key>ru</key>
<value>Показать результат</value>
</synonym>
<comment>Служебная команда. Не для размещения в командном интерфейсе</comment>
<group>NavigationPanelSeeAlso</group>
<representation>Auto</representation>
</commands>
</mdclass:DataProcessor> </mdclass:DataProcessor>
@@ -136,7 +136,6 @@
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>КомандыВыбора</name> <name>КомандыВыбора</name>
@@ -332,6 +331,27 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Удалить</value>
</title>
<extendedTooltip>
<name>Группа1РасширеннаяПодсказка7</name>
<id>563</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<extInfo xsi:type="form:ButtonGroupExtInfo"/>
</items>
<items xsi:type="form:Button"> <items xsi:type="form:Button">
<name>Обновить</name> <name>Обновить</name>
<id>573</id> <id>573</id>
@@ -364,27 +384,6 @@
<userVisible> <userVisible>
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<title>
<key>ru</key>
<value>Удалить</value>
</title>
<extendedTooltip>
<name>Группа1РасширеннаяПодсказка7</name>
<id>563</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<extInfo xsi:type="form:ButtonGroupExtInfo"/>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip> <extendedTooltip>
<name>Группа1РасширеннаяПодсказка1</name> <name>Группа1РасширеннаяПодсказка1</name>
<id>682</id> <id>682</id>
@@ -670,7 +670,7 @@
Элементы.СтраницыИнформация.ТекущаяСтраница = Элементы.СтраницаВыборОбрабатываемыхОбъектов; Элементы.СтраницыИнформация.ТекущаяСтраница = Элементы.СтраницаВыборОбрабатываемыхОбъектов;
Элементы.СтраницыОтображениеСостояния.Видимость = Ложь; Элементы.СтраницыОтображениеСостояния.Видимость = Ложь;
Элементы.СтраницыИнформация.ТолькоПросмотр = Ложь; Элементы.СтраницыИнформация.ТолькоПросмотр = Ложь;
Элементы.ГруппаАктивныПослеПоискаПомеченные.Доступность = Истина; Элементы.ГруппаАктивныПослеПоискаПомеченные.Доступность = ДеревоПомеченныхНаУдаление.ПолучитьЭлементы().Количество() > 0;
Элементы.КоманднаяПанельПоискПомеченных.Видимость = Истина; Элементы.КоманднаяПанельПоискПомеченных.Видимость = Истина;
Элементы.КоманднаяПанельОбработкаОшибок.Видимость = Ложь; Элементы.КоманднаяПанельОбработкаОшибок.Видимость = Ложь;
@@ -696,7 +696,7 @@
Элементы.ГруппаНастройкиОтбораПоиска.Доступность = Истина; Элементы.ГруппаНастройкиОтбораПоиска.Доступность = Истина;
Элементы.ПредставлениеПрогресса.Видимость = Ложь; Элементы.ПредставлениеПрогресса.Видимость = Ложь;
Элементы.ДеревоПомеченныхНаУдалениеУдалитьВыбранные.КнопкаПоУмолчанию = Истина; Элементы.ДеревоПомеченныхНаУдалениеУдалитьВыбранные.КнопкаПоУмолчанию = Истина;
Элементы.ГруппаАктивныПослеПоискаПомеченные.Доступность = НЕ ВыполняетсяЗадание; Элементы.ГруппаАктивныПослеПоискаПомеченные.Доступность = ДеревоПомеченныхНаУдаление.ПолучитьЭлементы().Количество() > 0;;
КонецПроцедуры КонецПроцедуры
&НаСервере &НаСервере
@@ -1053,6 +1053,11 @@
ЗаполнитьЗначенияСвойств(Результат.Добавить(), СведенияОМестеИспользования); ЗаполнитьЗначенияСвойств(Результат.Добавить(), СведенияОМестеИспользования);
КонецЕсли; КонецЕсли;
Если ОбщегоНазначения.ЭтоПоследовательность(СведенияОМестеИспользования.Метаданные) Тогда
// Если ссылка есть в таблице границ, но больше её нигде нет, то данные можно удалить.
Продолжить;
КонецЕсли;
Если НЕ ЭтоСсылка Если НЕ ЭтоСсылка
И НЕ ЭтоКонстанта И НЕ ЭтоКонстанта
И ЗаписьСуществует(СведенияОМестеИспользования) И ЗаписьСуществует(СведенияОМестеИспользования)
@@ -1633,7 +1638,8 @@
ОписаниеСвязиДанных.Данные = СтрокаТаблицы.МестоИспользования; ОписаниеСвязиДанных.Данные = СтрокаТаблицы.МестоИспользования;
ОписаниеСвязиДанных.Метаданные = СтрокаТаблицы.Метаданные; ОписаниеСвязиДанных.Метаданные = СтрокаТаблицы.Метаданные;
Если ОбщегоНазначения.ЭтоСлужебнаяСвязьДанных(ОписаниеСвязиДанных, ПараметрыВыполнения.ИсключенияПоискаСсылок) Если ОбщегоНазначения.ЭтоСлужебнаяСвязьДанных(ОписаниеСвязиДанных, ПараметрыВыполнения.ИсключенияПоискаСсылок)
ИЛИ СвязьТолькоСВедущимиИзмерениямиРегистров(ОписаниеСвязиДанных) Тогда ИЛИ СвязьТолькоСВедущимиИзмерениямиРегистров(ОписаниеСвязиДанных)
ИЛИ ОбщегоНазначения.ЭтоПоследовательность(СтрокаТаблицы.Метаданные) Тогда
Продолжить; // Связь не препятствует удалению. Продолжить; // Связь не препятствует удалению.
КонецЕсли; КонецЕсли;
@@ -1720,7 +1726,7 @@
Если НЕ Метаданные.Константы.Содержит(СтрокаТаблицы.Метаданные) Тогда Если НЕ Метаданные.Константы.Содержит(СтрокаТаблицы.Метаданные) Тогда
Причина.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( Причина.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Обнаружены неразрешимые ссылки (%1)'"), НСтр("ru = 'Обнаружены неразрешимые ссылки (%1)'"),
СтрокаТаблицы.ОбнаруженныйМетаданные.Представление()); СтрокаТаблицы.Метаданные.Представление());
Возврат; Возврат;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -132,7 +132,8 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
ИнициализироватьФайлыИсправлений(ФайлыИсправленийСтрокой); ОписаниеВыбранныхФайлов = ?(ЗначениеЗаполнено(ФайлыИсправленийСтрокой), ФайлыИсправленийСтрокой, ВыбранныеФайлы);
ИнициализироватьФайлыИсправлений(ОписаниеВыбранныхФайлов);
Если Параметры.ВыполнитьОбновление Тогда Если Параметры.ВыполнитьОбновление Тогда
ПерейтиКВыборуРежимаОбновления(); ПерейтиКВыборуРежимаОбновления();
@@ -2888,6 +2888,12 @@
Объект.ПолучателиОтвета.Очистить(); Объект.ПолучателиОтвета.Очистить();
Для каждого Получатель Из СписокПолучателей Цикл Для каждого Получатель Из СписокПолучателей Цикл
Если ПустаяСтрока(Получатель.Представление) Тогда
Получатель.Адрес = "";
Получатель.Контакт = Неопределено;
Продолжить;
КонецЕсли;
ПочтовыеАдреса = ОбщегоНазначенияКлиентСервер.АдресаЭлектроннойПочтыИзСтроки(Получатель.Представление); ПочтовыеАдреса = ОбщегоНазначенияКлиентСервер.АдресаЭлектроннойПочтыИзСтроки(Получатель.Представление);
Для каждого ПочтовыйАдрес Из ПочтовыеАдреса Цикл Для каждого ПочтовыйАдрес Из ПочтовыеАдреса Цикл
@@ -36,6 +36,7 @@
<types>ConstantValueManager.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском</types> <types>ConstantValueManager.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском</types>
<types>ConstantValueManager.УдалитьЛогинДоступаКСервисуMorpher</types> <types>ConstantValueManager.УдалитьЛогинДоступаКСервисуMorpher</types>
<types>CatalogObject.СценарииОбменовДанными</types> <types>CatalogObject.СценарииОбменовДанными</types>
<types>ConstantValueManager.ПутьКТомуБезУчетаРегиональныхНастроек</types>
<types>ConstantValueManager.РазрешитьВыполнениеДООРегламентнымиЗаданиямиВМоделиСервиса</types> <types>ConstantValueManager.РазрешитьВыполнениеДООРегламентнымиЗаданиямиВМоделиСервиса</types>
<types>ConstantValueManager.ИсточникДанныхАдресногоКлассификатора</types> <types>ConstantValueManager.ИсточникДанныхАдресногоКлассификатора</types>
<types>ConstantValueManager.ИспользоватьПрофилиБезопасностиДляДОО</types> <types>ConstantValueManager.ИспользоватьПрофилиБезопасностиДляДОО</types>
@@ -91,6 +91,7 @@
</toolTip> </toolTip>
<minValue xsi:type="core:UndefinedValue"/> <minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/>
<indexing>Index</indexing>
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/> <fillValue xsi:type="core:UndefinedValue"/>
@@ -2556,13 +2556,14 @@
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Если ЗначениеЗаполнено(ТекущиеЗначенияСвойств.ОписаниеДатыЗапрета) Тогда
МенеджерЗаписи.Раздел = Раздел; МенеджерЗаписи.Раздел = Раздел;
МенеджерЗаписи.Объект = НовыйОбъект; МенеджерЗаписи.Объект = НовыйОбъект;
МенеджерЗаписи.Пользователь = Пользователь; МенеджерЗаписи.Пользователь = Пользователь;
МенеджерЗаписи.ДатаЗапрета = ВнутренняяДатаЗапрета(ТекущиеЗначенияСвойств); МенеджерЗаписи.ДатаЗапрета = ВнутренняяДатаЗапрета(ТекущиеЗначенияСвойств);
МенеджерЗаписи.ОписаниеДатыЗапрета = ВнутреннееОписаниеДатыЗапрета(ТекущиеЗначенияСвойств); МенеджерЗаписи.ОписаниеДатыЗапрета = ВнутреннееОписаниеДатыЗапрета(ТекущиеЗначенияСвойств);
МенеджерЗаписи.Комментарий = ТекущиеЗначенияСвойств.Комментарий; МенеджерЗаписи.Комментарий = ТекущиеЗначенияСвойств.Комментарий;
Если ДатаЗапретаУстановлена(МенеджерЗаписи, Пользователь, Истина) Тогда
МенеджерЗаписи.Записать(); МенеджерЗаписи.Записать();
КонецЕсли; КонецЕсли;
@@ -2673,6 +2674,10 @@
&НаСервереБезКонтекста &НаСервереБезКонтекста
Процедура ЗаписатьДатуЗапретаСОписанием(Знач Раздел, Знач Объект, Знач Пользователь, Знач ДатаЗапрета, Знач ВнутреннееОписаниеДатыЗапрета, Знач Комментарий) Процедура ЗаписатьДатуЗапретаСОписанием(Знач Раздел, Знач Объект, Знач Пользователь, Знач ДатаЗапрета, Знач ВнутреннееОписаниеДатыЗапрета, Знач Комментарий)
Если Не ЗначениеЗаполнено(ДатаЗапрета) Тогда
ДатаЗапрета = '39991231';
КонецЕсли;
МенеджерЗаписи = РегистрыСведений.ДатыЗапретаИзменения.СоздатьМенеджерЗаписи(); МенеджерЗаписи = РегистрыСведений.ДатыЗапретаИзменения.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Раздел = Раздел; МенеджерЗаписи.Раздел = Раздел;
МенеджерЗаписи.Объект = Объект; МенеджерЗаписи.Объект = Объект;
@@ -3579,7 +3584,7 @@
Если ЗначениеЗаполнено(Данные.ОписаниеДатыЗапрета) Если ЗначениеЗаполнено(Данные.ОписаниеДатыЗапрета)
И Данные.ОписаниеДатыЗапрета <> "ПроизвольнаяДата" Тогда И Данные.ОписаниеДатыЗапрета <> "ПроизвольнаяДата" Тогда
Возврат '00020202'; // Сохраняемое значение относительной даты запрета. Возврат '39990202'; // Сохраняемое значение относительной даты запрета.
КонецЕсли; КонецЕсли;
Возврат Данные.ДатаЗапрета; Возврат Данные.ДатаЗапрета;
@@ -3610,7 +3615,7 @@
ОписаниеДатыЗапрета = СтрПолучитьСтроку(ВнутреннееОписание, 1); ОписаниеДатыЗапрета = СтрПолучитьСтроку(ВнутреннееОписание, 1);
КоличествоДнейРазрешения = СтрПолучитьСтроку(ВнутреннееОписание, 2); КоличествоДнейРазрешения = СтрПолучитьСтроку(ВнутреннееОписание, 2);
Если ДатыЗапретаИзмененияСлужебныйКлиентСервер.ОписанияДатЗапрета()[ОписаниеДатыЗапрета] = Неопределено Тогда Если ДатыЗапретаИзмененияСлужебныйКлиентСервер.ОписанияДатЗапрета()[ОписаниеДатыЗапрета] = Неопределено Тогда
Данные.ДатаЗапрета = '00030303'; // Неизвестный формат. Данные.ДатаЗапрета = '39990303'; // Неизвестный формат.
Иначе Иначе
Данные.ОписаниеДатыЗапрета = ОписаниеДатыЗапрета; Данные.ОписаниеДатыЗапрета = ОписаниеДатыЗапрета;
Если ЗначениеЗаполнено(КоличествоДнейРазрешения) Тогда Если ЗначениеЗаполнено(КоличествоДнейРазрешения) Тогда
@@ -3641,7 +3646,9 @@
Возврат Ложь; Возврат Ложь;
КонецЕсли; КонецЕсли;
Возврат Данные.ОписаниеДатыЗапрета <> ""; Возврат Данные.ОписаниеДатыЗапрета <> ""
И Не (Данные.ОписаниеДатыЗапрета = "ПроизвольнаяДата"
И Данные.ДатаЗапрета = '00010101');
КонецФункции КонецФункции
@@ -12,6 +12,10 @@
Процедура ПередЗаписью(Отказ, Замещение) Процедура ПередЗаписью(Отказ, Замещение)
// АПК:75-выкл проверка ОбменДанными.Загрузка должна быть после записи изменений в журнал.
ЗаписатьИзмененийВЖурналРегистрации(ЭтотОбъект, Замещение);
// АПК:75-вкл
Если ОбменДанными.Загрузка Тогда Если ОбменДанными.Загрузка Тогда
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -43,6 +47,115 @@
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ЗаписатьИзмененийВЖурналРегистрации(ЭтотОбъект, Замещение)
Таблица = ЭтотОбъект.Выгрузить();
Таблица.Колонки.Добавить("ВидИзмененияСтроки", Новый ОписаниеТипов("Число"));
Таблица.ЗаполнитьЗначения(1, "ВидИзмененияСтроки");
Если Замещение Тогда
СтарыеЗаписи = РегистрыСведений.ДатыЗапретаИзменения.СоздатьНаборЗаписей();
Для Каждого ЭлементОтбора Из ЭтотОбъект.Отбор Цикл
Если ЭлементОтбора.Использование Тогда
СтарыеЗаписи.Отбор[ЭлементОтбора.Имя].Установить(ЭлементОтбора.Значение);
КонецЕсли;
КонецЦикла;
СтарыеЗаписи.Прочитать();
Для Каждого СтараяЗапись Из СтарыеЗаписи Цикл
НоваяСтрока = Таблица.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтараяЗапись);
НоваяСтрока.ВидИзмененияСтроки = -1;
КонецЦикла;
КонецЕсли;
МетаданныеРегистра = Метаданные.РегистрыСведений.ДатыЗапретаИзменения;
Поля = Новый СписокЗначений;
ШиринаКолонок = Новый Соответствие;
ДобавитьПоле(Поля, ШиринаКолонок, МетаданныеРегистра.Измерения.Раздел, 20);
ДобавитьПоле(Поля, ШиринаКолонок, МетаданныеРегистра.Измерения.Объект, 40);
ДобавитьПоле(Поля, ШиринаКолонок, МетаданныеРегистра.Измерения.Пользователь, 40);
ДобавитьПоле(Поля, ШиринаКолонок, МетаданныеРегистра.Ресурсы.ДатаЗапрета, 20);
ДобавитьПоле(Поля, ШиринаКолонок, МетаданныеРегистра.Реквизиты.ОписаниеДатыЗапрета, 22);
ДобавитьПоле(Поля, ШиринаКолонок, МетаданныеРегистра.Реквизиты.Комментарий, 20);
СписокПолей = СтрСоединить(Поля.ВыгрузитьЗначения(), ",");
Таблица.Свернуть(СписокПолей, "ВидИзмененияСтроки");
ДобавленныеСтроки = Таблица.НайтиСтроки(Новый Структура("ВидИзмененияСтроки", 1));
УдаленныеСтроки = Таблица.НайтиСтроки(Новый Структура("ВидИзмененияСтроки", -1));
Если Не ЗначениеЗаполнено(ДобавленныеСтроки)
И Не ЗначениеЗаполнено(УдаленныеСтроки) Тогда
Возврат;
КонецЕсли;
Заголовок = Новый Массив;
Заголовок.Добавить("");
Для Каждого Поле Из Поля Цикл
Заголовок.Добавить(ДополненнаяСтрока(Поле.Представление,
ШиринаКолонок.Получить(Поле.Значение)));
КонецЦикла;
СтрокиКомментария = Новый Массив;
СтрокиКомментария.Добавить(СтрСоединить(Заголовок, " | "));
Если ЗначениеЗаполнено(ДобавленныеСтроки) Тогда
ДобавитьСтроки(СтрокиКомментария, ДобавленныеСтроки, Поля, ШиринаКолонок, "+");
КонецЕсли;
Если ЗначениеЗаполнено(УдаленныеСтроки) Тогда
ДобавитьСтроки(СтрокиКомментария, УдаленныеСтроки, Поля, ШиринаКолонок, "-");
КонецЕсли;
Комментарий = СтрСоединить(СтрокиКомментария, Символы.ПС) + Символы.ПС;
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Даты запрета.Регистрация изменений'",
ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Информация, МетаданныеРегистра,
,
Комментарий,
РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);
КонецПроцедуры
Процедура ДобавитьПоле(Поля, ШиринаКолонок, МетаданныеПоля, ШиринаКолонки);
Поля.Добавить(МетаданныеПоля.Имя, МетаданныеПоля.Представление());
ШиринаКолонок.Вставить(МетаданныеПоля.Имя, ШиринаКолонки);
КонецПроцедуры
Функция ДополненнаяСтрока(Значение, ШиринаКолонки)
Строка = Строка(Значение);
ДлинаСтроки = СтрДлина(Строка);
Если ТипЗнч(ШиринаКолонки) <> Тип("Число")
Или ШиринаКолонки <= ДлинаСтроки Тогда
Возврат Строка;
КонецЕсли;
Пробелы = " ";
Возврат Строка + Лев(Пробелы, ШиринаКолонки - ДлинаСтроки);
КонецФункции
Процедура ДобавитьСтроки(СтрокиКомментария, СтрокиТаблицы, Поля, ШиринаКолонок, Операция)
Для Каждого СтрокаТаблицы Из СтрокиТаблицы Цикл
СтрокаКомментария = Новый Массив;
Для Каждого Поле Из Поля Цикл
СтрокаКомментария.Добавить(ДополненнаяСтрока(СтрокаТаблицы[Поле.Значение],
ШиринаКолонок.Получить(Поле.Значение)));
КонецЦикла;
СтрокиКомментария.Добавить(Операция + "| " + СтрСоединить(СтрокаКомментария, " | "));
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Иначе #Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли #КонецЕсли
@@ -100,11 +100,13 @@
КонецПроцедуры КонецПроцедуры
// Только для внутреннего использования. // Параметры:
// ЭлементДанных - РегистрСведенийНаборЗаписей.ИспользуемыеВидыДоступа
//
Процедура ЗарегистрироватьИзменениеПриЗагрузке(ЭлементДанных) Экспорт Процедура ЗарегистрироватьИзменениеПриЗагрузке(ЭлементДанных) Экспорт
СтарыеЗначения = СоздатьНаборЗаписей(); СтарыеЗначения = СоздатьНаборЗаписей();
Если ЭлементДанных.Отбор.ТипЗначенийДоступа.Используется Тогда Если ЭлементДанных.Отбор.ТипЗначенийДоступа.Использование Тогда
СтарыеЗначения.Отбор.ТипЗначенийДоступа.Установить(ЭлементДанных.Отбор.ТипЗначенийДоступа.Значение); СтарыеЗначения.Отбор.ТипЗначенийДоступа.Установить(ЭлементДанных.Отбор.ТипЗначенийДоступа.Значение);
КонецЕсли; КонецЕсли;
@@ -169,6 +169,63 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СтрокаПоиска</name>
<id>40</id>
<extendedTooltip>
<name>СтрокаПоискаРасширеннаяПодсказка</name>
<id>42</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СтрокаПоискаКонтекстноеМеню</name>
<id>41</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>УправлениеПоиском</name>
<id>43</id>
<extendedTooltip>
<name>УправлениеПоискомРасширеннаяПодсказка</name>
<id>45</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УправлениеПоискомКонтекстноеМеню</name>
<id>44</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
Loaded 100 of 117 files, more files were not shown because too many files have changed in this diff. Show more