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>
<representationInContextMenu>Auto</representationInContextMenu>
</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>
<enabled>true</enabled>
<userVisible>
@@ -556,6 +556,71 @@
<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>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>
<enabled>true</enabled>
<userVisible>
@@ -1300,6 +1300,15 @@
// Вспомогательные процедуры и функции.
// Для функции ЗарегистрированныеСсылки и процедуры ЗарегистрироватьСсылки.
//
// Параметры:
// ВидСсылок - Строка
//
// Возвращаемое значение:
// Структура:
// * ДопустимыеТипы - ОписаниеТипов
// * ИмяПараметраРаботыПрограммы - Строка
//
Функция СвойстваВидаСсылок(ВидСсылок)
Если ВидСсылок = "Профили" Тогда
@@ -1327,7 +1336,7 @@
ИмяПараметраРаботыПрограммы = "СтандартныеПодсистемы.УправлениеДоступом.ОграничиватьДоступНаУровнеЗаписейИзменениеПриЗагрузке";
ИначеЕсли ВидСсылок = "ИспользуемыеВидыДоступа" Тогда
ДопустимыеТипы = Метаданные.ОпределяемыеТипы.ЗначениеДоступа;
ДопустимыеТипы = Метаданные.ОпределяемыеТипы.ЗначениеДоступа.Тип;
ИмяПараметраРаботыПрограммы = "СтандартныеПодсистемы.УправлениеДоступом.ИспользуемыеВидыДоступаИзмененныеПриЗагрузке";
Иначе
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -3805,6 +3805,19 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>РазделениеВключено</name>
<id>19</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ЗагрузитьИзФайла</name>
<title>
@@ -85,6 +85,8 @@
УстановитьВидимостьДоступность();
РазделениеВключено = ОбщегоНазначения.РазделениеВключено();
КонецПроцедуры
&НаКлиенте
@@ -862,6 +864,15 @@
ЭлементКоманда.РегламентноеЗаданиеИспользование = Ложь;
КонецЕсли;
Иначе
Если РазделениеВключено
И Расписание.ПериодПовтораВТечениеДня <> 0
И Расписание.ПериодПовтораВТечениеДня < 60 Тогда
ТекстСообщения = НСтр("ru = 'Не допускается установка интервала повтора регламентного задания менее 60 секунд.'");
ПоказатьПредупреждение(, ТекстСообщения);
Возврат;
КонецЕсли;
ЭлементКоманда.РегламентноеЗаданиеРасписание.Очистить();
ЭлементКоманда.РегламентноеЗаданиеРасписание.Добавить(Расписание);
Если ДополнительныеОтчетыИОбработкиКлиентСервер.РасписаниеЗадано(Расписание) Тогда
@@ -568,6 +568,34 @@
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar>
</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>
</autoCommandBar>
<handlers>
@@ -457,6 +457,71 @@
<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>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>
<enabled>true</enabled>
<userVisible>
@@ -457,6 +457,71 @@
<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>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>
<enabled>true</enabled>
<userVisible>
@@ -281,7 +281,6 @@
<rowsPicture xsi:type="core:PictureRef">
<picture>CommonPicture.Папки</picture>
</rowsPicture>
<searchStringLocation>None</searchStringLocation>
<viewStatusLocation>None</viewStatusLocation>
<searchControlLocation>None</searchControlLocation>
<autoMaxCardHeight>true</autoMaxCardHeight>
@@ -301,7 +301,6 @@
<rowPictureDataPath xsi:type="form:DataPath">
<segments>Список.DefaultPicture</segments>
</rowPictureDataPath>
<searchStringLocation>None</searchStringLocation>
<viewStatusLocation>None</viewStatusLocation>
<searchControlLocation>None</searchControlLocation>
<autoMaxCardHeight>true</autoMaxCardHeight>
@@ -1962,8 +1962,6 @@
<rowsPicture xsi:type="core:PictureRef">
<picture>CommonPicture.СостоянияПользователей</picture>
</rowsPicture>
<searchStringLocation>None</searchStringLocation>
<searchControlLocation>None</searchControlLocation>
<autoMaxCardHeight>true</autoMaxCardHeight>
<extInfo xsi:type="form:DynamicListTableExtInfo">
<autoRefreshPeriod>60</autoRefreshPeriod>
@@ -301,6 +301,97 @@
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</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>
</autoCommandBar>
<excludedCommands>Copy</excludedCommands>
@@ -466,6 +466,71 @@
<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>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>
</autoCommandBar>
<handlers>
@@ -759,10 +759,10 @@
<usePurposes>MobileDevice</usePurposes>
</forms>
<templates uuid="5189beb9-b939-4f97-aca0-c2f3492ac8b9">
<name>КомпонентаXMLDSig_3_0_1_23</name>
<name>КомпонентаXMLDSig_3_0_1_25</name>
<synonym>
<key>ru</key>
<value>Компонента XMLDSig 3.0.1.23</value>
<value>Компонента XMLDSig</value>
</synonym>
<templateType>AddIn</templateType>
</templates>
@@ -656,6 +656,71 @@
<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>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>
</autoCommandBar>
<handlers>
@@ -36,58 +36,6 @@
<items xsi:type="form:FormGroup">
<name>КоманднаяПанель</name>
<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">
<name>ФормаИзменить</name>
<id>52</id>
@@ -141,32 +89,6 @@
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</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">
<name>ФормаСправка</name>
<id>54</id>
@@ -267,6 +189,7 @@
<type>CommandBar</type>
<extInfo xsi:type="form:CommandBarExtInfo">
<horizontalAlign>Left</horizontalAlign>
<commandSource>Form</commandSource>
</extInfo>
</items>
<items xsi:type="form:Table">
@@ -790,9 +713,8 @@
<rowPictureDataPath xsi:type="form:DataPath">
<segments>Список.DefaultPicture</segments>
</rowPictureDataPath>
<searchStringLocation>None</searchStringLocation>
<searchStringLocation>CommandBar</searchStringLocation>
<viewStatusLocation>None</viewStatusLocation>
<searchControlLocation>None</searchControlLocation>
<currentRowUse>SelectionPresentationAndChoice</currentRowUse>
<autoMaxCardHeight>true</autoMaxCardHeight>
<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>
<p>Описание свойств тома хранения файлов.</p>
<p>При создании нового тома автоматически проверяется доступ к указанному в поле <strong>Полный путь</strong> каталогу, в случае ошибки выводится соответствующее сообщение. Уже созданному тому нельзя поменять пути.</p>
<p>Поля <b>Полный путь для сервера 1С:Предприятия под управлением Microsoft Windows</b> и <b>Полный пусть для сервера 1С:Предприятия под управлением Linux</b> должны ссылаться на одну и ту же физическую сетевую папку. Нужно заполнять в том случае, если в кластере есть сервера как под управлением Microsoft Windows, так и Linux.</p>
<p>Для каждого тома необходимо указать:</p>
<ul><li><strong>Наименование</strong> - полное наименование тома для хранения файлов;
</li>
<li><strong>Код</strong> - заполняется автоматически;
</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>
<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><strong>Предел, МБ</strong> -можно указать максимальный размер всех файлов на томе (квота тома). Если суммарный размер файлов в томе превышает установленную квоту, то будет использован следующий по порядку том. Если ни на одном из доступных томов не будет достаточно места для размещения файла, то информация об этом будет записана в <a href="DataProcessor.ЖурналРегистрации/Help">журнал регистрации</a> и будет выдано сообщение об ошибке. Если квота установлена равной нулю, то при размещении файлов в томе она не проверяется;
</li>
<li><strong>Текущий размер, МБ</strong> - проставляется программой автоматически по мере наполнения тома, показывает, насколько том заполнен;
</li>
<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>.
</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> - пароль пользователя (если необходимо).
@@ -15,7 +15,8 @@
<li><strong>Полный путь Linux</strong> - путь к каталогу для сервера под управлением Linux.</li></ul><h3>Ввод тома хранения файлов</h3>
<ul><li>Нажмите <strong>Создать</strong>, заполните необходимые <a href="Catalog.ТомаХраненияФайлов.Form.ФормаЭлемента/Help">поля</a>.
</li>
<li>Необходимо указать один или несколько каталогов на жестком диске сервера, на котором работает программа, или других серверов в сети, которые будут использоваться для хранения в них всех файлов.</li></ul><h3>Правила хранения файлов в томах</h3>
<li>Необходимо указать один или несколько каталогов на жестком диске сервера, на котором работает программа, или других серверов в сети, которые будут использоваться для хранения в них всех файлов. Выбранный каталог для тома хранения файлов должен иметь общий доступ. </li>
<li>При этом необходимо проверять наличие полных прав на каталог тома хранения файлов у пользователей, от имени которых запущена служба 1С:Предприятия или веб-сервера. </li></ul><h3>Правила хранения файлов в томах</h3>
<ul><li>
<div>Переключение флажка <strong>Хранить файлы в томах на диске</strong> обратной силы не имеет. Если хранение файлов в томах отключили, то новые файлы добавляются в саму ИБ, а старые остаются томах. При этом папка с томом будет продолжать использоваться до того, пока в базе есть хотя бы один файл. Файлы, ранее сохраненные в тома, открываются из этих томов.</div>
</li>
@@ -371,6 +371,63 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СтрокаПоиска</name>
<id>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>
</autoCommandBar>
<handlers>
@@ -440,6 +440,26 @@
</picture>
<representationInContextMenu>Auto</representationInContextMenu>
</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">
<name>СтандартныеКомандыФормы</name>
<id>48</id>
@@ -492,6 +512,63 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СтрокаПоиска</name>
<id>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>
</autoCommandBar>
<handlers>
@@ -363,9 +363,6 @@
<rowPictureDataPath xsi:type="form:DataPath">
<segments>Список.DefaultPicture</segments>
</rowPictureDataPath>
<searchStringLocation>None</searchStringLocation>
<viewStatusLocation>None</viewStatusLocation>
<searchControlLocation>None</searchControlLocation>
<autoMaxCardHeight>true</autoMaxCardHeight>
<extInfo xsi:type="form:DynamicListTableExtInfo">
<autoRefreshPeriod>60</autoRefreshPeriod>
@@ -302,6 +302,10 @@
<metadata>InformationRegister.ОчередьИзвлеченияТекста</metadata>
<use>DontUse</use>
</content>
<content>
<metadata>Constant.ПутьКТомуБезУчетаРегиональныхНастроек</metadata>
<use>DontUse</use>
</content>
<content>
<metadata>Constant.МаксимальныйРазмерФайла</metadata>
<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>
<ul><li>Для сервера 1С:Предприятия под управлением Microsoft Windows - укажите путь к архиву с помощью кнопки <img src="StdPicture.InputFieldSelect"></img>; </li></ul><p>или</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>
<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>В списке выводится:</p>
<ul><li><strong>Файл электронной подписи</strong> - путь к файлу, содержащему электронную подпись.
</li><li><strong>Комментарий</strong> - сведения, которые поясняют добавляемую электронную подпись.</li></ul><h3>Добавление электронной подписи из файла</h3>
<ul><li>Выберите один или несколько файлов с электронными подписями.
</li><li>Нажмите <strong>Добавить</strong>,с помощью кнопки <img src="StdPicture.InputFieldSelect"></img> укажите путь к файлу подписи на жестком или сетевом диске.
</li><li>Напишите <strong>Комментарий</strong> к подписи.</li></ul><h3>Удаление электронной подписи</h3>
</li>
<li><strong>Комментарий</strong> - сведения, которые поясняют добавляемую электронную подпись.</li></ul><h3>Добавление электронной подписи из файла</h3>
<ul><li>Выберите один или несколько файлов с электронными подписями. Поддерживается только отсоединенная подпись. Расширение файла подписи должно быть .p7s. Формат отсоединенной подписи PKS#7, причем в нее обязательно должен быть включен сертификат, которым выполнена подпись. Если не включен, будет ошибка при проверке подписи и при добавлении из файла. Подписи файлов сохраняются в информационной базе, в отличие от самих файлов, которые также могут храниться в томах.</li>
<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 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><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
</li>
<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>В списке выводится:</p>
<ul><li><strong>Сохранить</strong> - флажок.
</li><li><strong>Автор подписи </strong>- представление лица, которому выдан сертификат;
</li><li><strong>Дата подписи</strong>;
</li><li><strong>Комментарий</strong> - подробная информация о подписи.</li></ul><p>Установите флажки для подписей, которые надо сохранить вместе с файлом, и нажмите <strong>Выбрать</strong>.</p>
</li>
<li><strong>Автор подписи </strong>- представление лица, которому выдан сертификат;
</li>
<li><strong>Дата подписи</strong>;
</li>
<li><strong>Комментарий</strong> - подробная информация о подписи.</li></ul><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>
<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">
<picture>CommonPicture.КоллекцияПиктограммФайлов</picture>
</rowsPicture>
<searchStringLocation>None</searchStringLocation>
<viewStatusLocation>None</viewStatusLocation>
<searchControlLocation>None</searchControlLocation>
<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);
Если КомпонентаСодержитЕдинственныйКлассОбъектов Тогда
ВызватьИсключение НСтр("ru = 'Не допустимо одновременно не указывать Идентификатор и ИдентификаторыСозданияОбъектов в ВнешниеКомпонентыСлужебный.ПроверитьПодключениеКомпоненты'");
ВызватьИсключение НСтр("ru = 'Недопустимо одновременно не указывать Идентификатор и ИдентификаторыСозданияОбъектов в ВнешниеКомпонентыСлужебный.ПроверитьПодключениеКомпоненты'");
КонецЕсли;
Идентификатор = СтрСоединить(ПараметрыПодключения.ИдентификаторыСозданияОбъектов, ", ");
КонецЕсли;
@@ -281,8 +294,10 @@
Результат.Вставить("Местоположение", "");
Результат.Вставить("Идентификатор", Идентификатор);
Результат.Вставить("ОписаниеОшибки", "");
Результат.Вставить("Версия", "");
Информация = ВнешниеКомпонентыСлужебныйВызовСервера.ИнформацияОСохраненнойКомпоненте(Идентификатор, Версия);
Результат.Вставить("Версия", Версия);
Если Информация.Состояние = "ОтключенаАдминистратором" Тогда
Результат.ОписаниеОшибки = НСтр("ru = 'Компонента отключена администратором.'");
Возврат Результат;
@@ -294,11 +309,7 @@
Результат.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("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).
|Состояние: %5'"),
@@ -8,40 +8,44 @@
#Область СлужебныйПрограммныйИнтерфейс
Функция ЭтоКомпонентаИзХранилища(Местоположение) Экспорт
Процедура ПроверитьМестоположениеКомпоненты(Идентификатор, Местоположение) Экспорт
Если СтрНачинаетсяС(Местоположение, "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ПослеПопыткиПодключения(Подключено, Контекст) Экспорт
@@ -387,7 +413,7 @@
// Параметры:
// ИнформацияОбОшибке - ИнформацияОбОшибке
// СтандартнаяОбработка - Булево
// Контекст - см. ВнешниеКомпонентыКлиент.КонтекстПодключенияКомпоненты
// Контекст - см. ОбщегоНазначенияСлужебныйКлиент.КонтекстПодключенияКомпоненты
//
Процедура ПодключитьКомпонентуИзРеестраWindowsПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
@@ -436,7 +462,7 @@
// * Подключено - Булево - признак подключения;
// * ПодключаемыйМодуль - ОбъектВнешнейКомпоненты - экземпляр объекта внешней компоненты.
// * ОписаниеОшибки - Строка - краткое описание ошибки. При отмене пользователем пустая строка.
// Контекст - см. ВнешниеКомпонентыКлиент.КонтекстПодключенияКомпоненты
// Контекст - см. ОбщегоНазначенияСлужебныйКлиент.КонтекстПодключенияКомпоненты
//
Процедура УстановитьКомпонентуПослеПроверкиДоступности(Результат, Контекст) Экспорт
@@ -284,7 +284,7 @@
ТекущаяДатаЗапрета = НачалоДня(НачалоДня) - Сутки;
ПредыдущаяДатаЗапрета = НачалоДня(ТекущаяДатаЗапрета) - Сутки;
Иначе
Возврат '00030303'; // Неизвестный формат.
Возврат '39990303'; // Неизвестный формат.
КонецЕсли;
Если ЗначениеЗаполнено(ТекущаяДатаЗапрета) Тогда
@@ -234,7 +234,7 @@
Результат.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов"));
Результат.Колонки.Добавить("ИмяКартинки", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Картинка", Новый ОписаниеТипов("Картинка"));
Результат.Колонки.Добавить("Порядок", Новый ОписаниеТипов("Число"));
Возврат Результат;
@@ -247,7 +247,7 @@
Результат.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов"));
Результат.Колонки.Добавить("ИмяКартинки", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Картинка", Новый ОписаниеТипов("Картинка"));
Результат.Колонки.Добавить("Порядок", Новый ОписаниеТипов("Число"));
Возврат Результат;
@@ -354,10 +354,10 @@
ДополнительныеПараметры = JSONВЗначение(ОписаниеПоля.Маска);
КонецЕсли;
ИмяКартинки = ДополнительныеПараметры["ИмяКартинки"];
Если ЗначениеЗаполнено(ИмяКартинки) Тогда
Реквизит.Картинка = БиблиотекаКартинок[ИмяКартинки];
Если ДополнительныеПараметры["Картинка"] <> Неопределено Тогда
Реквизит.Картинка = Новый Картинка(Base64Значение(ДополнительныеПараметры["Картинка"]));
КонецЕсли;
Порядок = ДополнительныеПараметры["Порядок"];
Если ЗначениеЗаполнено(Порядок) Тогда
Реквизит.Порядок = Порядок;
@@ -1154,8 +1154,11 @@
КонецЕсли;
Поле.ТипЗначения = СтрокаТаблицы.ТипЗначения;
ДополнительныеПараметры = Новый Структура("ИмяКартинки,Порядок");
ДополнительныеПараметры = Новый Структура("Порядок");
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, СтрокаТаблицы);
ДополнительныеПараметры.Вставить("Картинка", Base64Строка(СтрокаТаблицы.Картинка.ПолучитьДвоичныеДанные()));
Поле.ПараметрыРедактирования.УстановитьЗначениеПараметра("Маска", ЗначениеВJSON(ДополнительныеПараметры));
КонецЦикла;
@@ -1190,9 +1193,12 @@
Поле.Поле = Элемент.Идентификатор;
Поле.ТипЗначения = Элемент.ТипЗначения;
ДополнительныеПараметры = Новый Структура("ИмяКартинки,Порядок,ЭтоГруппа");
ДополнительныеПараметры = Новый Структура("Порядок,ЭтоГруппа");
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, Элемент);
ДополнительныеПараметры.ЭтоГруппа = ЭтоГруппа;
ДополнительныеПараметры.Вставить("Картинка", Base64Строка(Элемент.Картинка.ПолучитьДвоичныеДанные()));
Поле.ПараметрыРедактирования.УстановитьЗначениеПараметра("Маска", ЗначениеВJSON(ДополнительныеПараметры));
Поле.ПутьКДанным = Элемент.Идентификатор;
@@ -1617,7 +1623,7 @@
Группа.Идентификатор = "ЧисловыеФункции";
Группа.Представление = НСтр("ru = 'Числовые функции'");
Группа.Порядок = 4;
Группа.ИмяКартинки = Метаданные.ОбщиеКартинки.ТипФункция.Имя;
Группа.Картинка = БиблиотекаКартинок.ТипФункция;
Тип = Новый ОписаниеТипов("Число");
@@ -1634,7 +1640,7 @@
Группа.Идентификатор = "СтроковыеФункции";
Группа.Представление = НСтр("ru = 'Строковые функции'");
Группа.Порядок = 5;
Группа.ИмяКартинки = Метаданные.ОбщиеКартинки.ТипФункция.Имя;
Группа.Картинка = БиблиотекаКартинок.ТипФункция;
Тип = Новый ОписаниеТипов("Строка");
@@ -1658,7 +1664,7 @@
Группа.Идентификатор = "ПрочиеФункции";
Группа.Представление = НСтр("ru = 'Прочие функции'");
Группа.Порядок = 6;
Группа.ИмяКартинки = Метаданные.ОбщиеКартинки.ТипФункция.Имя;
Группа.Картинка = БиблиотекаКартинок.ТипФункция;
ДобавитьОператорВГруппу(Группа, "?", НСтр("ru = 'Условие'"), Новый ОписаниеТипов("Булево"));
ДобавитьОператорВГруппу(Группа, "ПредопределенноеЗначение", НСтр("ru = 'ПредопределенноеЗначение'"), Новый ОписаниеТипов);
@@ -1677,7 +1683,7 @@
Оператор.Идентификатор = Идентификатор;
Оператор.Представление = Представление;
Оператор.ТипЗначения = Тип;
Оператор.ИмяКартинки = Метаданные.ОбщиеКартинки.Пустая.Имя;
Оператор.Картинка = БиблиотекаКартинок.Пустая;
КонецПроцедуры
@@ -1733,7 +1739,7 @@
Группа.Идентификатор = "АгрегатныеФункции";
Группа.Представление = НСтр("ru = 'Агрегатные функции'");
Группа.Порядок = 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 Тогда
@@ -1150,7 +1216,7 @@
Если СтрокаСценария.ПорядковыйНомерВыполнения = 1 Тогда
// Сбрасываем признак кумулятивного изменения данных для обмена.
Константы.ЗарегистрированыИзмененияДанных.Установить(Ложь);
ИзменитьПризнакНеобходимостиОбменаДаннымиВМоделиСервиса(Ложь);
КонецЕсли;
СтруктураРезультат = Новый Структура;
@@ -1330,6 +1330,7 @@
НачатьТранзакцию();
Попытка
Если Не НастройкаСинхронизацииЗавершена(УзелОбмена) Тогда
// Изменения, зарегистрированные до момента завершения настройки синхронизации,
// являются некорректными, т.к. еще не были установлены отборы.
@@ -1337,9 +1338,12 @@
// Необходимо сбросить ранее установленный признак регистрации изменений для повторной отправки сообщения в МС.
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
МенеджерКонстанты = ОбщегоНазначения.ОбщийМодуль("Константы.ЗарегистрированыИзмененияДанных");
МенеджерКонстанты.Установить(Ложь);
МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиВМоделиСервиса");
МодульОбменДаннымиВМоделиСервиса.ИзменитьПризнакНеобходимостиОбменаДаннымиВМоделиСервиса(Ложь);
КонецЕсли;
КонецЕсли;
РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.УстановитьПризнакНастройкаЗавершена(УзелОбмена);
@@ -7567,18 +7571,14 @@
// Возвращаемое значение:
// УникальныйИдентификатор - идентификатор файла в сервисе передачи файлов.
//
Функция ПоместитьФайлВХранилищеВСервисе(Знач ИмяФайла, Знач УзелИнформационнойБазы, Знач РазмерЧасти = 1024, Знач ПараметрыАутентификации = Неопределено)
// Возвращаемое значение функции.
ИдентификаторФайла = Неопределено;
ДополнительныеПараметры = Новый Структура("ПараметрыАутентификации", ПараметрыАутентификации);
СообщениеОбОшибке = "";
Прокси = WSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы, СообщениеОбОшибке, ДополнительныеПараметры);
Функция ПоместитьФайлВХранилищеВСервисе(Прокси, Знач ИмяФайла, Знач УзелИнформационнойБазы, Знач РазмерЧастиКБ = 1024)
Перем ИдентификаторФайла;
Если Прокси = Неопределено Тогда
ВызватьИсключение СообщениеОбОшибке;
ВызватьИсключение НСтр("ru ='Не определен WS-прокси передачи файла выгрузки в базу приемник.
|Обратитесь к администратору.'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецЕсли;
КаталогФайлов = ПолучитьИмяВременногоФайла();
@@ -7593,19 +7593,17 @@
// Разделение файла на части.
ИдентификаторСессии = Новый УникальныйИдентификатор;
КоличествоЧастей = 1;
Если ЗначениеЗаполнено(РазмерЧасти) Тогда
ИменаФайлов = РазделитьФайл(ИмяНеразделенногоФайла, РазмерЧасти * 1024);
РазмерЧастиВБайтах = РазмерЧастиКБ * 1024;
ИменаФайлов = РазделитьФайл(ИмяНеразделенногоФайла, РазмерЧастиВБайтах);
КоличествоЧастей = ИменаФайлов.Количество();
Для НомерЧасти = 1 По КоличествоЧастей Цикл
ИмяФайлаЧасти = ИменаФайлов[НомерЧасти - 1];
ДанныеФайла = Новый ДвоичныеДанные(ИмяФайлаЧасти);
Прокси.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(СтруктураНастроекОбмена.ИмяПланаОбмена,
СтруктураНастроекОбмена.ТекущийУзелПланаОбменаКод,
ПараметрыОбмена.ИдентификаторФайла,
@@ -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(СтруктураНастроекОбмена.ИмяПланаОбмена,
СтруктураНастроекОбмена.ТекущийУзелПланаОбменаКод,
ИдентификаторФайлаСтрокой,
@@ -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 = 'Некорректное значение параметра ""РежимОбновления"".
|Доступные значения: ""%1"", ""%2""'"), РежимОбновленияОперативное, РежимОбновленияОтложенное);
НСтр("ru = 'Некорректное значение параметра ""%1"".
|Доступные значения: ""%2"", ""%3""'"), "РежимОбновления", РежимОбновленияОперативное, РежимОбновленияОтложенное);
КонецЕсли;
ПорядокСостоянияОбновлено = 4;
@@ -5933,4 +5939,28 @@
КонецФункции
Функция ОбъектРегистрируетсяНаПланеОбмена(Данные)
ТипОбъекта = ТипЗнч(Данные);
Кеш = ОбновлениеИнформационнойБазыСлужебныйПовтИсп.КешПроверкиЗарегистрированныхОбъектов();
ВходитВСостав = Кеш.Получить(ТипОбъекта);
Если ВходитВСостав <> Неопределено Тогда
Возврат ВходитВСостав;
КонецЕсли;
ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипОбъекта);
Если ОбъектМетаданных = Неопределено Тогда
Кеш.Вставить(ТипОбъекта, Ложь);
Возврат Ложь;
КонецЕсли;
СоставПланаОбмена = Метаданные.ПланыОбмена.ОбновлениеИнформационнойБазы.Состав;
ВходитВСостав = СоставПланаОбмена.Содержит(ОбъектМетаданных);
Кеш.Вставить(ТипОбъекта, ВходитВСостав);
Возврат ВходитВСостав;
КонецФункции
#КонецОбласти
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.5.192";
Описание.Версия = "3.1.5.208";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "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") Тогда
Результат.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("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 = 'Не удалось подключить внешнюю компоненту на клиенте
|%1
НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%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.ПерейтиКСодержимому();
КлючевыеОперацииДляЗаписи = Новый Массив;
СырыеЗамерыДляЗаписи = Новый Массив;
ЗагрузитьФайлОценкиПроизводительностиApdexExport(Чтение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";
Обработчик.ОбщиеДанные = Истина;
@@ -1644,6 +1673,12 @@
КонецПроцедуры
// Для функции см. ПолныйПутьТома
//
Процедура УстановитьСпособФормированияПутиТома() Экспорт
Константы.ПутьКТомуБезУчетаРегиональныхНастроек.Установить(Истина);
КонецПроцедуры
#КонецОбласти
#Область ВспомогательныеПроцедурыИФункции
@@ -86,6 +86,7 @@
Процедура ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы) Экспорт
Типы.Добавить(Метаданные.РегистрыСведений.ОчередьИзвлеченияТекста);
Типы.Добавить(Метаданные.Константы.ПутьКТомуБезУчетаРегиональныхНастроек);
ИсключаемыеТипы = ПрочитатьКэшВыгрузкиЗагрузкиФайловыхФункций().ОбъектыХранения;
Для Каждого ИсключаемыйТип Из ИсключаемыеТипы Цикл
@@ -204,4 +204,13 @@
КонецФункции
// Для функции см. ПолныйПутьТома.
//
// Возвращаемое значение:
// Булево
//
Функция ПутьКТомуБезУчетаРегиональныхНастроек() Экспорт
Возврат Константы.ПутьКТомуБезУчетаРегиональныхНастроек.Получить();
КонецФункции
#КонецОбласти
@@ -4352,8 +4352,11 @@
Функция ОписаниеОшибки_unauthorized_client()
Результат = ОбщееОписаниеОшибки("200007",
НСтр("ru = 'OAuth-клиент использует незарегистрированный сценарий аутентификации (Flow)
|или был передан некорректный redirect_uri.'"));
"OAuth-"
+ НСтр("ru = 'клиент использует незарегистрированный сценарий аутентификации'")
+ " (Flow) "
+ НСтр("ru = 'или был передан некорректный'")
+ " redirect_uri.");
Возврат Результат;
@@ -4367,7 +4370,9 @@
Функция ОписаниеОшибки_invalid_client()
Результат = ОбщееОписаниеОшибки("200008",
НСтр("ru = 'OAuth-клиент не зарегистрирован или неверно указан clientID.'"));
"OAuth-"
+ НСтр("ru = 'клиент не зарегистрирован или неверно указан'")
+ " clientID.");
Возврат Результат;
@@ -384,15 +384,7 @@
Запрос = 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()
ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйПовтИсп.ОписаниеКомпоненты();
ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеКомпоненты();
ОбъектКомпоненты = ОбщегоНазначения.ПодключитьКомпонентуИзМакета(ОписаниеКомпоненты.ИмяОбъекта,
ОписаниеКомпоненты.ПолноеИмяМакета);
@@ -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 = 'Не удалось определить путь к программе по причине:
|%1'"), ОписаниеПути.ТекстОшибки);
Иначе
ПутиКМодулям = СтрРазделить(ОписаниеПути.ПутьКПрограмме, ":", Ложь);
Если ПутиКМодулям.Количество() = 1 Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -230,6 +236,7 @@
НСтр("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.Вставить(Выборка.Программа, ОписаниеПути);
КонецЦикла;
@@ -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"?>
<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>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="4a728278-16d5-11ec-e398-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="4a7282aa-16d5-11ec-e398-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="4a7282b4-16d5-11ec-e398-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="4a7282b5-16d5-11ec-e398-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="4a7282be-16d5-11ec-e398-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="4a7282c8-16d5-11ec-e398-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="ef1f8629-e2de-4040-b221-53ef4cd3cdf3"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="dd4147cb-2228-11ec-5e88-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="dd414810-2228-11ec-5e88-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="dd414811-2228-11ec-5e88-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="dd41481a-2228-11ec-5e88-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="dd41481b-2228-11ec-5e88-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="dd414824-2228-11ec-5e88-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="42e6992d-8cc8-44a1-ac8f-6b1330ed99ce"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<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>
<includeHelpInContents>true</includeHelpInContents>
<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>
@@ -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>
@@ -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 Тогда
ПараметрыОбмена.ДлительнаяОперация = ПараметрыЗадания.ДлительнаяОперация;
ПараметрыОбмена.ДлительнаяОперацияРазрешена = Истина;
ПараметрыОбмена.ИдентификаторОперации = ПараметрыЗадания.ИдентификаторДлительнойОперации;
ПараметрыОбмена.ИдентификаторФайла = ПараметрыЗадания.ИдентификаторФайлаСообщенияВСервисе;
ПараметрыОбмена.ПараметрыАутентификации = ПараметрыЗадания.ПараметрыАутентификации;
ПараметрыОбмена.ИнтервалОжиданияНаСервере = 15;
КонецЕсли;
ОбменДаннымиСервер.ПроверитьВозможностьЗапускаОбмена(ПараметрыЗадания.УзелИнформационнойБазы, ПараметрыЗадания.Отказ);
@@ -2861,19 +2861,7 @@
<value>Новое значение</value>
</title>
<id>4</id>
<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>
<valueType/>
<view>
<common>true</common>
</view>
@@ -1099,9 +1099,9 @@
Если ТекущаяСтраница = Элементы.ШагПоискМестИспользования Тогда
ЗаполнитьМестаИспользования(Задание.АдресРезультата);
Активизировать();
Шаг = НастройкиМастера.ТекущийШаг;// см. ДобавитьШагМастера
ПерейтиНаШагМастера(Шаг.Индекс + 1);
Активизировать();
ИначеЕсли ТекущаяСтраница = Элементы.ШагОбъединение Тогда
@@ -4706,7 +4706,7 @@
&НаКлиенте
Процедура УстановитьПараметрыКомпоненты(ПолноеИмяМакета, ПараметрыПодключения)
ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиент.ОписаниеКомпоненты();
ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеКомпоненты();
ПолноеИмяМакета = ОписаниеКомпоненты.ПолноеИмяМакета;
ПараметрыПодключения.ИдентификаторыСозданияОбъектов.Добавить(ОписаниеКомпоненты.ИмяОбъекта);
@@ -4746,7 +4746,7 @@
&НаКлиенте
Процедура УстановитьПодключенныеМодули(РаботаСДвоичнымиДанными, Криптография, РезультатПодключения)
ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиент.ОписаниеКомпоненты();
ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеКомпоненты();
ОбъектКомпоненты = РезультатПодключения.ПодключаемыйМодуль.Получить(ОписаниеКомпоненты.ИмяОбъекта);
РаботаСДвоичнымиДанными = ОбъектКомпоненты;
Криптография = ОбъектКомпоненты;
@@ -248,11 +248,8 @@
Продолжить;
КонецЕсли;
ЭтоРазделенныйОбъектМетаданных = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса") Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
ЭтоРазделенныйОбъектМетаданных = ОписаниеОбъекта.РазделениеДанных.Свойство(МодульРаботаВМоделиСервиса.РазделительОсновныхДанных());
КонецЕсли;
ЭтоРазделенныйОбъектМетаданных = ЭтоРазделенныйОбъект(ОписаниеОбъекта);
Если ЭтоРазделенныйОбъектМетаданных Тогда
ЗаполнитьМодельДанныхПредоставляемыхДляСтандартногоИнтерфейсаOData(Результат, ОписаниеОбъекта.ПолноеИмя, Исключаемые);
@@ -266,6 +263,7 @@
КонецФункции
// Возвращает эталонный состав роли для назначения пользователю информационной базы,
// логин и пароль которого будет использоваться при подключении к стандартному интерфейсу
// OData (в модели сервиса).
@@ -389,6 +387,27 @@
#Область СлужебныеПроцедурыИФункции
Функция ЭтоРазделенныйОбъект(ОписаниеОбъекта)
ЭтоРазделенныйОбъектМетаданных = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса") Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
ЭтоРазделенныйОбъектМетаданных = ОписаниеОбъекта.РазделениеДанных.Свойство(МодульРаботаВМоделиСервиса.РазделительОсновныхДанных());
Иначе
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ОписаниеОбъекта.ПолноеИмя);
Если ЭтоСсылочныеДанные(ОбъектМетаданных)
ИЛИ ОбщегоНазначения.ЭтоРегистр(ОбъектМетаданных) Тогда
КонецЕсли;
Если ОбщегоНазначения.ЭтоЖурналДокументов(ОбъектМетаданных) Тогда
ЭтоРазделенныйОбъектМетаданных = ПравоДоступа("Чтение", ОбъектМетаданных, Метаданные.Роли.УдаленныйДоступOData);
КонецЕсли;
КонецЕсли;
Возврат ЭтоРазделенныйОбъектМетаданных;
КонецФункции
Функция ПараметрыНастройкиСоставаСтандартногоИнтерфейсаOData() Экспорт
Объект = Создать();
@@ -482,11 +501,7 @@
СвойстваОбъектовМетаданных = Интерфейс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 Тогда
@@ -13,6 +13,10 @@
<key>ru</key>
<value>Сохранять в репозиторий</value>
</title>
<title>
<key>en</key>
<value>Save to repository</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -66,6 +70,10 @@
<key>ru</key>
<value>Путь к каталогу SRC</value>
</inputHint>
<inputHint>
<key>en</key>
<value>SRC directory path</value>
</inputHint>
</extInfo>
</items>
<items xsi:type="form:FormField">
@@ -130,6 +138,10 @@
<key>ru</key>
<value>Параметры выгрузки</value>
</title>
<title>
<key>en</key>
<value>Export parameters</value>
</title>
<extendedTooltip>
<name>ГруппаВыгрузкаРасширеннаяПодсказка</name>
<id>79</id>
@@ -159,10 +171,18 @@
<key>ru</key>
<value>Настройки выгрузки описания обработчиков</value>
</title>
<title>
<key>en</key>
<value>Handler details export settings</value>
</title>
<toolTip>
<key>ru</key>
<value>Настройки параметров загрузки/выгрузки/группировки обработчиков обновления.</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Settings of update handler import, export, or grouping parameters.</value>
</toolTip>
<width>150</width>
<extendedTooltip>
<name>ГруппаНастройкиЗагрузкиВыгрузкиРасширеннаяПодсказка</name>
@@ -182,6 +202,10 @@
<key>ru</key>
<value>Загружать описание обработчиков из &lt;?>; Сохранять в &lt;?>;</value>
</collapsedRepresentationTitle>
<collapsedRepresentationTitle>
<key>en</key>
<value>Import handler details from &lt;?>; Save to &lt;?>;</value>
</collapsedRepresentationTitle>
<collapsed>true</collapsed>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -200,6 +224,10 @@
<key>ru</key>
<value>Библиотека</value>
</title>
<title>
<key>en</key>
<value>Library</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -353,6 +381,10 @@
<key>ru</key>
<value>Отборы обработчиков обновления</value>
</title>
<title>
<key>en</key>
<value>Update handler filters</value>
</title>
<extendedTooltip>
<name>ГруппаОтборыРасширеннаяПодсказка</name>
<id>124</id>
@@ -443,6 +475,10 @@
<key>ru</key>
<value>Установить номер сборки</value>
</title>
<title>
<key>en</key>
<value>Set assembly number</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -474,6 +510,10 @@
<key>ru</key>
<value>Быстрые отборы:</value>
</title>
<title>
<key>en</key>
<value>Quick filters:</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -544,6 +584,10 @@
<key>ru</key>
<value>Команды обработчиков обновления</value>
</title>
<title>
<key>en</key>
<value>Update handler commands</value>
</title>
<extendedTooltip>
<name>ГруппаКомандыТаблицыРасширеннаяПодсказка</name>
<id>157</id>
@@ -571,6 +615,10 @@
<key>ru</key>
<value>Обработчики обновления</value>
</title>
<title>
<key>en</key>
<value>Update handlers</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -1117,6 +1165,10 @@
<key>ru</key>
<value>Начальное заполнение</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Initial filling</value>
</toolTip>
<extendedTooltip>
<name>ОбработчикиОбновленияНачальноеЗаполнениеРасширеннаяПодсказка</name>
<id>25</id>
@@ -1154,6 +1206,10 @@
<key>ru</key>
<value>Обязательный</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Required</value>
</toolTip>
<extendedTooltip>
<name>ОбработчикиОбновленияВыполнятьВГруппеОбязательныхРасширеннаяПодсказка</name>
<id>37</id>
@@ -1194,6 +1250,10 @@
<key>ru</key>
<value>Многопоточный</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Multi-threaded</value>
</toolTip>
<extendedTooltip>
<name>ОбработчикиОбновленияМногопоточныйРасширеннаяПодсказка</name>
<id>70</id>
@@ -1444,6 +1504,11 @@
<key>ru</key>
<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>
<extendedTooltip>
<name>ОбработчикиОбновленияЗаписьЧитаемыхРасширеннаяПодсказка</name>
@@ -1485,6 +1550,10 @@
<key>ru</key>
<value>Повторная запись изменяемых объектов другими обработчиками.</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Rewriting objects that are modified by other handlers.</value>
</toolTip>
<extendedTooltip>
<name>ОбработчикиОбновленияПовторнаяЗаписьРасширеннаяПодсказка</name>
<id>148</id>
@@ -1525,6 +1594,10 @@
<key>ru</key>
<value>Задан порядок выполнения</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Execution order set</value>
</toolTip>
<extendedTooltip>
<name>ОбработчикиОбновленияЗаданПорядокВыполненияРасширеннаяПодсказка</name>
<id>151</id>
@@ -1565,6 +1638,10 @@
<key>ru</key>
<value>Изменен</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Changed</value>
</toolTip>
<extendedTooltip>
<name>ОбработчикиОбновленияИзмененРасширеннаяПодсказка</name>
<id>200</id>
@@ -1894,6 +1971,10 @@
<key>ru</key>
<value>Обработчики обновления стандартные</value>
</title>
<title>
<key>en</key>
<value>Standard update handlers</value>
</title>
<extendedTooltip>
<name>ОбработчикиОбновленияСтандартныеРасширеннаяПодсказка</name>
<id>233</id>
@@ -2261,6 +2342,60 @@
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</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">
<name>ПоказатьКодВыделенныхОбработчиков</name>
<id>230</id>
@@ -2567,6 +2702,10 @@
<key>ru</key>
<value>Отладка</value>
</title>
<title>
<key>en</key>
<value>Debug</value>
</title>
<extendedTooltip>
<name>ГруппаОтладкаРасширеннаяПодсказка</name>
<id>206</id>
@@ -2680,6 +2819,10 @@
<key>ru</key>
<value>Текущая библиотека</value>
</title>
<title>
<key>en</key>
<value>Current library</value>
</title>
<id>4</id>
<valueType>
<types>String</types>
@@ -2700,6 +2843,10 @@
<key>ru</key>
<value>Читаемый объект</value>
</title>
<title>
<key>en</key>
<value>Object to read</value>
</title>
<id>8</id>
<valueType>
<types>String</types>
@@ -2720,6 +2867,10 @@
<key>ru</key>
<value>Изменяемый объект</value>
</title>
<title>
<key>en</key>
<value>Object to change</value>
</title>
<id>9</id>
<valueType>
<types>String</types>
@@ -2837,6 +2988,10 @@
<key>ru</key>
<value>Каталог файлов ошибок</value>
</title>
<title>
<key>en</key>
<value>Error files directory</value>
</title>
<id>19</id>
<valueType>
<types>String</types>
@@ -3009,11 +3164,19 @@
<key>ru</key>
<value>Загрузить описания</value>
</title>
<title>
<key>en</key>
<value>Import details</value>
</title>
<id>1</id>
<toolTip>
<key>ru</key>
<value>Загрузить описание обработчиков обновления</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Import details of update handlers</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3034,11 +3197,19 @@
<key>ru</key>
<value>Сохранить в репозиторий</value>
</title>
<title>
<key>en</key>
<value>Save to repository</value>
</title>
<id>2</id>
<toolTip>
<key>ru</key>
<value>Сохранить в репозиторий</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Save to the repository</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3059,11 +3230,19 @@
<key>ru</key>
<value>Проверить конфликты</value>
</title>
<title>
<key>en</key>
<value>Check conflicts</value>
</title>
<id>3</id>
<toolTip>
<key>ru</key>
<value>Находит все пересечения обработчиков - изменение читаемых объектов и повторная запись.</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Looking for handlers' collisions: modifiable and rewritable objects.</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3081,11 +3260,19 @@
<key>ru</key>
<value>Контроль построения очереди</value>
</title>
<title>
<key>en</key>
<value>Queue building control</value>
</title>
<id>4</id>
<toolTip>
<key>ru</key>
<value>Построить очередь</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Build the queue</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3103,11 +3290,19 @@
<key>ru</key>
<value>Показать все описания обработчиков</value>
</title>
<title>
<key>en</key>
<value>Show all handler details</value>
</title>
<id>5</id>
<toolTip>
<key>ru</key>
<value>Текст процедуры ПриДобавленииОбработчиковОбновления со списком всех описаний обработчиков</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Text of the OnAddUpdateHandlers procedure with the list of all handler details</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3125,11 +3320,19 @@
<key>ru</key>
<value>Выполнить тест построения очереди</value>
</title>
<title>
<key>en</key>
<value>Test queue building</value>
</title>
<id>6</id>
<toolTip>
<key>ru</key>
<value>Выполнить тест построения очереди</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Test queue building</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3147,11 +3350,19 @@
<key>ru</key>
<value>Показать файл шаблона настройки генератора кода</value>
</title>
<title>
<key>en</key>
<value>Show template file for code generator customization</value>
</title>
<id>7</id>
<toolTip>
<key>ru</key>
<value>Показывает шаблон файла настроек тегов ERP для генерации кода описания обработчиков обновления (файл cut_tags.yml)</value>
</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>
<common>true</common>
</use>
@@ -3169,11 +3380,19 @@
<key>ru</key>
<value>Показать все таблицы описания всех обработчиков</value>
</title>
<title>
<key>en</key>
<value>Show all handler details tables</value>
</title>
<id>9</id>
<toolTip>
<key>ru</key>
<value>Показать табличные части</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Show tables</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3191,11 +3410,19 @@
<key>ru</key>
<value>Есть цикл в порядке обработчиков</value>
</title>
<title>
<key>en</key>
<value>Handler order has cycle</value>
</title>
<id>10</id>
<toolTip>
<key>ru</key>
<value>Проверить цикл в порядке обработчиков</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Check cycle in the handler order</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3213,11 +3440,19 @@
<key>ru</key>
<value>Рассчитать очередь</value>
</title>
<title>
<key>en</key>
<value>Calculate queue</value>
</title>
<id>12</id>
<toolTip>
<key>ru</key>
<value>Рассчитать очередь</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Calculate queue</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3235,11 +3470,19 @@
<key>ru</key>
<value>Показать все вызовы обработчиков</value>
</title>
<title>
<key>en</key>
<value>Show all handler calls</value>
</title>
<id>13</id>
<toolTip>
<key>ru</key>
<value>Текст процедуры ПриДобавленииОбработчиковОбновления со списком вызовов всех процедур описаний обработчиков</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Text of the OnAddUpdateHandlers procedure with the list of all handler details procedure calls</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3257,11 +3500,19 @@
<key>ru</key>
<value>Сохранить в репозиторий все обработчики</value>
</title>
<title>
<key>en</key>
<value>Save all handlers to repository</value>
</title>
<id>14</id>
<toolTip>
<key>ru</key>
<value>Полностью перезаписывает все процедуры описания обработчиков</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Totally overwrites all handler details procedures.</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3279,11 +3530,19 @@
<key>ru</key>
<value>Показать тексты всех модулей</value>
</title>
<title>
<key>en</key>
<value>Show texts of all modules</value>
</title>
<id>15</id>
<toolTip>
<key>ru</key>
<value>Показать тексты всех модулей</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Show texts of all modules</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3301,11 +3560,19 @@
<key>ru</key>
<value>для выделенных обработчиков</value>
</title>
<title>
<key>en</key>
<value>for selected handlers</value>
</title>
<id>16</id>
<toolTip>
<key>ru</key>
<value>в корень конфигурации и модули обновления установится максимальная сборка из обработчиков</value>
</toolTip>
<toolTip>
<key>en</key>
<value>The maximum assembly of handlers will be installed to the configuration root and update modules</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3323,11 +3590,19 @@
<key>ru</key>
<value>Показать приоритеты и конфликты обработчика</value>
</title>
<title>
<key>en</key>
<value>Show handler priorities and conflicts</value>
</title>
<id>17</id>
<toolTip>
<key>ru</key>
<value>Показать приоритеты конфликты обработчика</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Show handler priorities and conflicts</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3345,6 +3620,10 @@
<key>ru</key>
<value>Сохранить список обработчиков тех. проекта</value>
</title>
<title>
<key>en</key>
<value>Save list of handlers of technical design</value>
</title>
<id>11</id>
<use>
<common>true</common>
@@ -3363,6 +3642,10 @@
<key>ru</key>
<value>Показать код выделенных обработчиков</value>
</title>
<title>
<key>en</key>
<value>Show code of selected handlers</value>
</title>
<id>18</id>
<use>
<common>true</common>
@@ -3385,11 +3668,19 @@
<key>ru</key>
<value>Сформировать тексты</value>
</title>
<title>
<key>en</key>
<value>Generate texts</value>
</title>
<id>8</id>
<toolTip>
<key>ru</key>
<value>Сформировать тексты</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Generate texts</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3402,11 +3693,19 @@
<key>ru</key>
<value>Показать код описания обработчиков обновления</value>
</title>
<title>
<key>en</key>
<value>Show update handler details code</value>
</title>
<id>19</id>
<toolTip>
<key>ru</key>
<value>Показать код описания обработчиков обновления</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Show update handler details code</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3424,11 +3723,19 @@
<key>ru</key>
<value>Перейти в упрощенный режим</value>
</title>
<title>
<key>en</key>
<value>Go to simplified mode</value>
</title>
<id>20</id>
<toolTip>
<key>ru</key>
<value>Переключить режим формы</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Switch the form mode</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3446,11 +3753,19 @@
<key>ru</key>
<value>Показать объекты обработчика</value>
</title>
<title>
<key>en</key>
<value>Show handler objects</value>
</title>
<id>21</id>
<toolTip>
<key>ru</key>
<value>Показать объекты обработчика</value>
</toolTip>
<toolTip>
<key>en</key>
<value>Show handler objects</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -3462,6 +3777,50 @@
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</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>
<navigationPanel/>
<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>
<extInfo xsi:type="form:CommandBarExtInfo">
<horizontalAlign>Left</horizontalAlign>
<commandSource>Item.Список</commandSource>
</extInfo>
</items>
<items xsi:type="form:Table">
@@ -1123,7 +1124,6 @@
<borderColor xsi:type="core:ColorRef">
<color>Style.BorderColor</color>
</borderColor>
<searchStringLocation>None</searchStringLocation>
<viewStatusLocation>None</viewStatusLocation>
<searchControlLocation>None</searchControlLocation>
<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>
<representation>Auto</representation>
</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>
@@ -136,7 +136,6 @@
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:FormGroup">
<name>КомандыВыбора</name>
@@ -332,6 +331,27 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Удалить</value>
</title>
<extendedTooltip>
<name>Группа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">
<name>Обновить</name>
<id>573</id>
@@ -364,27 +384,6 @@
<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>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>Группа1РасширеннаяПодсказка1</name>
<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)'"),
СтрокаТаблицы.ОбнаруженныйМетаданные.Представление());
СтрокаТаблицы.Метаданные.Представление());
Возврат;
КонецЕсли;
КонецЕсли;
@@ -132,7 +132,8 @@
Возврат;
КонецЕсли;
ИнициализироватьФайлыИсправлений(ФайлыИсправленийСтрокой);
ОписаниеВыбранныхФайлов = ?(ЗначениеЗаполнено(ФайлыИсправленийСтрокой), ФайлыИсправленийСтрокой, ВыбранныеФайлы);
ИнициализироватьФайлыИсправлений(ОписаниеВыбранныхФайлов);
Если Параметры.ВыполнитьОбновление Тогда
ПерейтиКВыборуРежимаОбновления();
@@ -2888,6 +2888,12 @@
Объект.ПолучателиОтвета.Очистить();
Для каждого Получатель Из СписокПолучателей Цикл
Если ПустаяСтрока(Получатель.Представление) Тогда
Получатель.Адрес = "";
Получатель.Контакт = Неопределено;
Продолжить;
КонецЕсли;
ПочтовыеАдреса = ОбщегоНазначенияКлиентСервер.АдресаЭлектроннойПочтыИзСтроки(Получатель.Представление);
Для каждого ПочтовыйАдрес Из ПочтовыеАдреса Цикл
@@ -36,6 +36,7 @@
<types>ConstantValueManager.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском</types>
<types>ConstantValueManager.УдалитьЛогинДоступаКСервисуMorpher</types>
<types>CatalogObject.СценарииОбменовДанными</types>
<types>ConstantValueManager.ПутьКТомуБезУчетаРегиональныхНастроек</types>
<types>ConstantValueManager.РазрешитьВыполнениеДООРегламентнымиЗаданиямиВМоделиСервиса</types>
<types>ConstantValueManager.ИсточникДанныхАдресногоКлассификатора</types>
<types>ConstantValueManager.ИспользоватьПрофилиБезопасностиДляДОО</types>
@@ -91,6 +91,7 @@
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<indexing>Index</indexing>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
<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);
КоличествоДнейРазрешения = СтрПолучитьСтроку(ВнутреннееОписание, 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 = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли
@@ -100,11 +100,13 @@
КонецПроцедуры
// Только для внутреннего использования.
// Параметры:
// ЭлементДанных - РегистрСведенийНаборЗаписей.ИспользуемыеВидыДоступа
//
Процедура ЗарегистрироватьИзменениеПриЗагрузке(ЭлементДанных) Экспорт
СтарыеЗначения = СоздатьНаборЗаписей();
Если ЭлементДанных.Отбор.ТипЗначенийДоступа.Используется Тогда
Если ЭлементДанных.Отбор.ТипЗначенийДоступа.Использование Тогда
СтарыеЗначения.Отбор.ТипЗначенийДоступа.Установить(ЭлементДанных.Отбор.ТипЗначенийДоступа.Значение);
КонецЕсли;
@@ -169,6 +169,63 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Addition">
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СтрокаПоиска</name>
<id>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>
<enabled>true</enabled>
<userVisible>
Loaded 100 of 117 files, more files were not shown because too many files have changed in this diff. Show more