+ обработка

This commit is contained in:
Dmitry Belyaev 2018-09-25 15:51:06 +03:00
parent 81e79d3dd8
commit 4ebcc20ca4
Signed by: b4tman
GPG Key ID: 014E87EC54B77673
4 changed files with 655 additions and 0 deletions

View File

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" 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:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.6">
<ExternalDataProcessor uuid="b647ca79-0f66-403e-a963-b99ed936a025">
<InternalInfo>
<xr:ContainedObject>
<xr:ClassId>c3831ec8-d8d5-4f93-8a22-f9bfae07327f</xr:ClassId>
<xr:ObjectId>63b57fa8-6b44-4789-a8f6-efd63f0f3651</xr:ObjectId>
</xr:ContainedObject>
<xr:GeneratedType name="ExternalDataProcessorObject.ОбъединениеXML" category="Object">
<xr:TypeId>9af80e9c-d587-48f4-89ad-882e52cafdf6</xr:TypeId>
<xr:ValueId>90d0e187-ef3f-42ab-811a-3aee2453999f</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>ОбъединениеXML</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Объединение XML</v8:content>
</v8:item>
</Synonym>
<Comment/>
<DefaultForm>ExternalDataProcessor.ОбъединениеXML.Form.Форма</DefaultForm>
<AuxiliaryForm/>
</Properties>
<ChildObjects>
<Attribute uuid="69c0e72d-fcbf-4378-a719-313f624fcb29">
<Properties>
<Name>ИмяФайла_А</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Имя файла - Приемник</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>256</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Attribute uuid="370e5efd-3594-4f54-86a9-f4288e7fd600">
<Properties>
<Name>ИмяФайла</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Имя файла - Источник</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>256</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Attribute uuid="fb0603b3-040a-49b9-abe0-4d6260cc2998">
<Properties>
<Name>ИмяФайла_Результат</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Имя файла - результат</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>256</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Form>Форма</Form>
</ChildObjects>
</ExternalDataProcessor>
</MetaDataObject>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" 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:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.6">
<Form uuid="3f564b8f-d3f8-4482-b089-40060aa96edc">
<Properties>
<Name>Форма</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Форма</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
<ExtendedPresentation/>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,240 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" 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:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.6">
<AutoSaveDataInSettings>Use</AutoSaveDataInSettings>
<SaveDataInSettings>UseList</SaveDataInSettings>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаОбъединить" id="38">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.Объединить</CommandName>
<ExtendedTooltip name="ФормаОбъединитьРасширеннаяПодсказка" id="39"/>
</Button>
</ChildItems>
</AutoCommandBar>
<ChildItems>
<Pages name=руппа1" id="10">
<ExtendedTooltip name=руппа1РасширеннаяПодсказка" id="11"/>
<ChildItems>
<Page name="ГрПараметры" id="12">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Параметры</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Параметры</v8:content>
</v8:item>
</ToolTip>
<ExtendedTooltip name="ГрПараметрыРасширеннаяПодсказка" id="13"/>
<ChildItems>
<InputField name="ИмяФайла_А" id="1">
<DataPath>Объект.ИмяФайла_А</DataPath>
<EditMode>EnterOnInput</EditMode>
<ChoiceButton>true</ChoiceButton>
<OpenButton>true</OpenButton>
<ContextMenu name="ИмяФайла_АКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="ИмяФайла_АРасширеннаяПодсказка" id="3"/>
<Events>
<Event name="StartChoice">ИмяФайла_АНачалоВыбора</Event>
<Event name="Opening">ИмяФайла_АОткрытие</Event>
</Events>
</InputField>
<InputField name="ИмяФайла_Б" id="4">
<DataPath>Объект.ИмяФайла</DataPath>
<EditMode>EnterOnInput</EditMode>
<ChoiceButton>true</ChoiceButton>
<OpenButton>true</OpenButton>
<ContextMenu name="ИмяФайлаКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="ИмяФайлаРасширеннаяПодсказка" id="6"/>
<Events>
<Event name="StartChoice">ИмяФайлаНачалоВыбора</Event>
<Event name="Opening">ИмяФайлаОткрытие</Event>
</Events>
</InputField>
<InputField name="ВыражениеПоискаКонтейнера" id="35">
<DataPath>ВыражениеПоискаКонтейнера</DataPath>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выражение XPath используемое для нахождения контейнера, дочерние элементы которого будут скопированны</v8:content>
</v8:item>
</ToolTip>
<ContextMenu name="ВыражениеПоискаКонтейнераКонтекстноеМеню" id="36"/>
<ExtendedTooltip name="ВыражениеПоискаКонтейнераРасширеннаяПодсказка" id="37"/>
</InputField>
</ChildItems>
</Page>
<Page name="ПросмотрУзлов" id="14">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Просмотр узлов</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Просмотр узлов</v8:content>
</v8:item>
</ToolTip>
<ExtendedTooltip name="ПросмотрУзловРасширеннаяПодсказка" id="15"/>
<ChildItems>
<InputField name="ТекПуть" id="32">
<DataPath>ТекПуть</DataPath>
<ReadOnly>true</ReadOnly>
<OpenButton>true</OpenButton>
<ContextMenu name="ТекПутьКонтекстноеМеню" id="33"/>
<ExtendedTooltip name="ТекПутьРасширеннаяПодсказка" id="34"/>
<Events>
<Event name="Opening">ТекПутьОткрытие</Event>
</Events>
</InputField>
<Table name="ДеревоФайла" id="16">
<Representation>Tree</Representation>
<ChangeRowSet>false</ChangeRowSet>
<ChangeRowOrder>false</ChangeRowOrder>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<DataPath>ДеревоФайла</DataPath>
<ContextMenu name="ДеревоФайлаКонтекстноеМеню" id="17"/>
<AutoCommandBar name="ДеревоФайлаКоманднаяПанель" id="18"/>
<ExtendedTooltip name="ДеревоФайлаРасширеннаяПодсказка" id="19"/>
<SearchStringAddition name="ДеревоФайлаСтрокаПоиска" id="20">
<AdditionSource>
<Item>ДеревоФайла</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="ДеревоФайлаСтрокаПоискаКонтекстноеМеню" id="21"/>
<ExtendedTooltip name="ДеревоФайлаСтрокаПоискаРасширеннаяПодсказка" id="22"/>
</SearchStringAddition>
<ViewStatusAddition name="ДеревоФайлаСостояниеПросмотра" id="23">
<AdditionSource>
<Item>ДеревоФайла</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="ДеревоФайлаСостояниеПросмотраКонтекстноеМеню" id="24"/>
<ExtendedTooltip name="ДеревоФайлаСостояниеПросмотраРасширеннаяПодсказка" id="25"/>
</ViewStatusAddition>
<SearchControlAddition name="ДеревоФайлаУправлениеПоиском" id="26">
<AdditionSource>
<Item>ДеревоФайла</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="ДеревоФайлаУправлениеПоискомКонтекстноеМеню" id="27"/>
<ExtendedTooltip name="ДеревоФайлаУправлениеПоискомРасширеннаяПодсказка" id="28"/>
</SearchControlAddition>
<Events>
<Event name="OnActivateRow">ДеревоФайлаПриАктивизацииСтроки</Event>
</Events>
<ChildItems>
<InputField name="ДеревоФайлаИмяУзла" id="29">
<DataPath>ДеревоФайла.ИмяУзла</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДеревоФайлаИмяУзлаКонтекстноеМеню" id="30"/>
<ExtendedTooltip name="ДеревоФайлаИмяУзлаРасширеннаяПодсказка" id="31"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</Page>
</ChildItems>
</Pages>
</ChildItems>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.ОбъединениеXML</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
<Save>
<Field>Объект.ИмяФайла_А</Field>
<Field>Объект.ИмяФайла</Field>
<Field>Объект.ИмяФайла_Результат</Field>
</Save>
</Attribute>
<Attribute name="ДеревоФайла" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Дерево файла</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueTree</v8:Type>
</Type>
<Columns>
<Column name="ИмяУзла" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Имя узла</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
</Columns>
</Attribute>
<Attribute name="ТекПуть" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тек путь</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ВыражениеПоискаКонтейнера" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выражение поиска контейнера</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<Save>
<Field>ВыражениеПоискаКонтейнера</Field>
</Save>
</Attribute>
</Attributes>
<Commands>
<Command name="Объединить" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Объединить</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Объединить</v8:content>
</v8:item>
</ToolTip>
<Action>Объединить</Action>
</Command>
</Commands>
</Form>

View File

@ -0,0 +1,249 @@
&НаСервере
Функция ПолучитьДокументDOM(АдресВХ)
Результат = Неопределено;
Если ЭтоАдресВременногоХранилища(АдресВХ) Тогда
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресВХ);
Поток = ДанныеФайла.ОткрытьПотокДляЧтения();
ЧтениеXML = Новый ЧтениеXML;
ПостроительDOM = Новый ПостроительDOM;
ЧтениеXML.ОткрытьПоток(Поток);
Результат = ПостроительDOM.Прочитать(ЧтениеXML);
ЧтениеXML.Закрыть();
Поток.Закрыть();
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция ПолучитьДанныеXML(ДокументDOM)
Результат = Неопределено;
Поток = Новый ПотокВПамяти;
ЗаписьXML = Новый ЗаписьXML;
ЗаписьDOM = Новый ЗаписьDOM;
Парам_XML = Новый ПараметрыЗаписиXML("UTF-8", "1.0");
ЗаписьXML.ОткрытьПоток(Поток, Парам_XML);
ЗаписьDOM.Записать(ДокументDOM, ЗаписьXML);
ЗаписьXML.Закрыть();
Данные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
Результат = ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор);
Данные = Неопределено;
Возврат Результат;
КонецФункции
&НаСервере
Функция НайтиКонтейнер(ДокументDOM, Выражение)
Результат = Неопределено;
Разыменователь = Новый РазыменовательПространствИменDOM(ДокументDOM);
ПоискУзла = ДокументDOM.ВычислитьВыражениеXPath(Выражение, ДокументDOM.ЭлементДокумента, Разыменователь);
Результат = ПоискУзла.ПолучитьСледующий();
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ИмяФайла_АНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВыборФайла("ИмяФайла_А", "Приемник");
КонецПроцедуры
&НаКлиенте
Процедура ИмяФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВыборФайла("ИмяФайла_Б", "Источник");
КонецПроцедуры
&НаКлиенте
Процедура ИмяФайла_АОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПросмотрФайла(Объект.ИмяФайла_А, "ИмяФайла_А");
КонецПроцедуры
&НаКлиенте
Процедура ИмяФайлаОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПросмотрФайла(Объект.ИмяФайла_Б, "ИмяФайла_Б");
КонецПроцедуры
&НаКлиенте
Процедура ТекПутьОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВыражениеПоискаКонтейнера = ТекПуть;
Элементы.Группа1.ТекущаяСтраница = Элементы.ГрПараметры;
КонецПроцедуры
&НаКлиенте
Процедура ВыборФайла(ИмяРеквизита, Описание="", Сохранение=Ложь)
Файл = Новый Файл(Объект[ИмяРеквизита]);
Режим = ?(Сохранение, РежимДиалогаВыбораФайла.Сохранение, РежимДиалогаВыбораФайла.Открытие);
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.Каталог = Файл.Путь;
ДиалогОткрытияФайла.ПолноеИмяФайла = Файл.Имя;
ДиалогОткрытияФайла.Фильтр = "Все файлы|*.*|Файлы XML (*.xml)|*.xml";
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = СтрШаблон("Выберите файл %1", Описание);
ДополнительныеПараметры = Новый Структура("ИмяРеквизита", ИмяРеквизита);
ДиалогОткрытияФайла.Показать(Новый ОписаниеОповещения("ВыборФайла_Завершение", ЭтаФорма, ДополнительныеПараметры));
КонецПроцедуры
&НаКлиенте
Процедура ВыборФайла_Завершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
Если НЕ (Неопределено = ВыбранныеФайлы) Тогда
Объект[ДополнительныеПараметры.ИмяРеквизита] = ВыбранныеФайлы[0];
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПросмотрФайла(ИмяФайла, ИмяРеквизита)
Если ПустаяСтрока(СокрЛП(ИмяФайла)) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Имя файла не заполнено",,ИмяРеквизита,"Объект."+ИмяРеквизита);
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура("ИмяРеквизита", ИмяРеквизита);
НачатьПомещениеФайла(Новый ОписаниеОповещения("ПросмотрФайлаослеПомещения", ЭтаФорма, ДополнительныеПараметры), , ИмяФайла, Ложь, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПросмотрФайлаослеПомещения(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
ИмяРеквизита = ДополнительныеПараметры.ИмяРеквизита;
Если НЕ Результат Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не получилось",,ИмяРеквизита,"Объект."+ИмяРеквизита);
Возврат;
КонецЕсли;
ПросмотрФайла_НаСервере(Адрес);
Элементы.Группа1.ТекущаяСтраница = Элементы.ПросмотрУзлов;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДеревооDOM(ТекСтрДерево, ЭлементDOM)
ТекСтрДерево.ИмяУзла = ЭлементDOM.ИмяУзла;
Для Каждого Дочерний Из ЭлементDOM.ДочерниеУзлы Цикл
НовСтр = ТекСтрДерево.Строки.Добавить();
ЗаполнитьДеревооDOM(НовСтр, Дочерний);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПросмотрФайла_НаСервере(АдресВХ)
ДокументDOM = ПолучитьДокументDOM(АдресВХ);
УдалитьИзВременногоХранилища(АдресВХ);
Д = РеквизитФормыВЗначение("ДеревоФайла");
Д.Строки.Очистить();
Корень = Д.Строки.Добавить();
ЗаполнитьДеревооDOM(Корень, ДокументDOM.ЭлементДокумента);
ДокументDOM = Неопределено;
ЗначениеВРеквизитФормы(Д, "ДеревоФайла");
КонецПроцедуры
&НаКлиенте
Процедура ДеревоФайлаПриАктивизацииСтроки(Элемент)
Ид = Элемент.ТекущаяСтрока;
Если Неопределено = Ид Тогда Возврат КонецЕсли;
ОбновитьТекПуть(Ид);
КонецПроцедуры
&НаСервере
Функция ПолучитьПуть(дфЭлементДерева)
Результат = "";
Если Неопределено = дфЭлементДерева Тогда Возврат Результат КонецЕсли;
Родитель = дфЭлементДерева.ПолучитьРодителя();
Разделитель = "/";
Возврат ПолучитьПуть(Родитель) + Разделитель + дфЭлементДерева.ИмяУзла;
КонецФункции
&НаСервере
Процедура ОбновитьТекПуть(ИдСтр)
Стр = ДеревоФайла.НайтиПоИдентификатору(ИдСтр);
ТекПуть = ПолучитьПуть(Стр);
КонецПроцедуры
&НаКлиенте
Процедура Объединить(Команда)
ДополнительныеПараметры = Новый Структура;
НачатьПомещениеФайла(Новый ОписаниеОповещения("Объединить_ПослеПомещения_А", ЭтаФорма, ДополнительныеПараметры), , Объект.ИмяФайла_А, Ложь, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура Объединить_ПослеПомещения_А(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если НЕ Результат Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не получилось",,"ИмяФайла_А","Объект.ИмяФайла_А");
Возврат;
КонецЕсли;
ДополнительныеПараметры.Вставить("Адрес_А", Адрес);
НачатьПомещениеФайла(Новый ОписаниеОповещения("Объединить_ПослеПомещения_Б", ЭтаФорма, ДополнительныеПараметры), , Объект.ИмяФайла_Б, Ложь, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьИмяФайла_Результата(ИмяФайласходный)
Файл = Новый Файл(ИмяФайласходный);
Возврат СтрШаблон("Результат%1", Файл.Расширение);
КонецФункции
&НаКлиенте
Процедура Объединить_ПослеПомещения_Б(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если НЕ Результат Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не получилось",,"ИмяФайла_Б","Объект.ИмяФайла_Б");
Возврат;
КонецЕсли;
ДополнительныеПараметры.Вставить("Адрес_Б", Адрес);
Адрес_Результат = Объединить_НаСервере(ДополнительныеПараметры);
Если ЭтоАдресВременногоХранилища(Адрес_Результат) Тогда
ПолучитьФайл(Адрес_Результат, ПолучитьИмяФайла_Результата(Объект.ИмяФайла_А), Истина);
УдалитьИзВременногоХранилища(Адрес_Результат);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция Объединить_НаСервере(ДополнительныеПараметры)
Результат = Неопределено;
Документ_А = ПолучитьДокументDOM(ДополнительныеПараметры.Адрес_А);
Документ_Б = ПолучитьДокументDOM(ДополнительныеПараметры.Адрес_Б);
УдалитьИзВременногоХранилища(ДополнительныеПараметры.Адрес_А);
УдалитьИзВременногоХранилища(ДополнительныеПараметры.Адрес_Б);
Контейнерсточник = НайтиКонтейнер(Документ_Б, ВыражениеПоискаКонтейнера);
Контейнерриемник = НайтиКонтейнер(Документ_А, ВыражениеПоискаКонтейнера);
Для Каждого ДочернийУзел Из Контейнерсточник.ДочерниеУзлы Цикл
НовыйУзел = Документ_А.ИмпортироватьУзел(ДочернийУзел, Истина);
Контейнерриемник.ДобавитьДочерний(НовыйУзел);
КонецЦикла;
Результат = ПолучитьДанныеXML(Документ_А);
Возврат Результат;
КонецФункции