Импорт из БСП

This commit is contained in:
Dmitry Belyaev 2019-02-21 16:29:02 +03:00
commit 976cb371bb
Signed by: b4tman
GPG Key ID: 014E87EC54B77673
34 changed files with 9963 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/*.e[rp]f

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<Help xmlns="http://v8.1c.ru/8.3/xcf/extrnprops" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.7">
<Page>ru</Page>
</Help>

View File

@ -0,0 +1,11 @@
<!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>
<h1 style="WHITE-SPACE: normal; WORD-SPACING: 0px; TEXT-TRANSFORM: none; COLOR: rgb(0,51,102); TEXT-ALIGN: left; FONT: bold 18pt Arial, Tahoma; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><span class="iss_sch_hl current" style="BACKGROUND-COLOR: yellow">Консоль</span><span class="Apple-converted-space"> </span><span class="iss_sch_hl" style="BACKGROUND-COLOR: rgb(0,255,255)">запросов</span> для управляемого приложения</h1>
<p style="WHITE-SPACE: normal; WORD-SPACING: 0px; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); FONT: 13px Verdana; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px">Инструмент "<span class="iss_sch_hl" style="BACKGROUND-COLOR: rgb(0,255,255)">Консоль</span><span class="Apple-converted-space"> </span><span class="iss_sch_hl" style="BACKGROUND-COLOR: rgb(0,255,255)">запросов</span>" предназначена для отладки и просмотра результатов выполнения запросов в режиме 1С:Предприятие. Данная обработка предназначена, в основном, для разработчиков конфигураций и специалистов по внедрению. </p>
<p style="WHITE-SPACE: normal; WORD-SPACING: 0px; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); FONT: 13px Verdana; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px">При разработке запросов в конфигураторе, как правило, требуется проводить отладку запроса на реальных данных. Данный инструмент позволяет вести разработку запроса (или пакета запросов) параллельно с просмотром результата. При работе с инструментом в толстом клиенте можно воспользоваться конструктором запросов, как и при работе в конфигураторе. Возможности по анализу результата запроса включают:</p>
<ul style="WHITE-SPACE: normal; WORD-SPACING: 0px; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); FONT: 13px Verdana; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px"><li>вывод данных временных таблиц,
</li><li>замер времени выполнения запроса и числа строк,
</li><li>подсветку указанных ячеек в результате запроса,
</li><li>интерактивное сравнение двух результатов запроса (только в толстом клиенте),
</li><li>а также вывод результата запроса в новом окне.
</li><li>вывод плана выполнения запроса, а также SQL-текст запроса, сформированного в СУБД. Для СУБД Microsoft SQL Server план выполнения выводится в виде дерева, а для остальных СУБД в текстовом формате технологического журнала. Для упрощения анализа запросов также предусмотрено два режима отображения текстов запросов: с именами таблиц и колонок СУБД или с именами объектов метаданных и реквизитов конфигурации.</li></ul><p style="WHITE-SPACE: normal; WORD-SPACING: 0px; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); FONT: 13px Verdana; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px">После завершения отладки, текст запроса можно перенести в код (с помощью команды формирования текста запроса для конфигуратора) или в отчеты конфигурации. К сервисным возможностям относятся работа сразу с несколькими запросами (пакет запросов), сохранение текста и параметров запросов в файле, автосохранение, экспорт результатов запроса в табличный документ и другое.</p>
<p style="WHITE-SPACE: normal; WORD-SPACING: 0px; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); FONT: 13px Verdana; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke-width: 0px">Если в запросе при выводе результатов требуется использовать точку с запятой, то ее следует экранировать символом обратного слеша - "<strong>\</strong>". <br>Пример: <em>ВЫБРАТЬ Номенклатура.Наименование + " \; " + Номенклатура.Наименование ИЗ Справочник.Номенклатура</em> </p></body></html>

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.7">
<Form uuid="fa515b18-8e83-489a-ade0-4ec882c66901">
<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,357 @@
<?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.7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбор запроса</v8:content>
</v8:item>
</Title>
<Width>80</Width>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<VerticalScroll>useIfNecessary</VerticalScroll>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ЗапросыВыбратьЗапрос" id="15">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.ВыбратьЗапрос</CommandName>
<ExtendedTooltip name="ЗапросыВыбратьЗапросExtendedTooltip" id="25"/>
</Button>
<ButtonGroup name=ормаГруппа1" id="18">
<CommandSource>Item.Запросы</CommandSource>
<ExtendedTooltip name=ормаГруппа1ExtendedTooltip" id="26"/>
</ButtonGroup>
<ButtonGroup name=ормаГруппа2" id="19">
<ExtendedTooltip name=ормаГруппа2ExtendedTooltip" id="27"/>
<ChildItems>
<Button name="ЗапросыВосстановитьЗапросыИзФайла" id="14">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ВосстановитьЗапросыИзФайла</CommandName>
<ExtendedTooltip name="ЗапросыВосстановитьЗапросыИзФайлаExtendedTooltip" id="28"/>
</Button>
<Button name="ФормаДобавитьЗапросыИзФайла" id="22">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ДобавитьЗапросыИзФайла</CommandName>
<ExtendedTooltip name=ормаДобавитьЗапросыИзФайлаExtendedTooltip" id="29"/>
</Button>
<Button name="ЗапросыСохранитьЗапросыВФайл" id="13">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.СохранитьЗапросыВФайл</CommandName>
<ExtendedTooltip name="ЗапросыСохранитьЗапросыВФайлExtendedTooltip" id="30"/>
</Button>
<Button name="ЗапросыСохранитьЗапросыВДругойФайл" id="17">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.СохранитьЗапросыВДругойФайл</CommandName>
<ExtendedTooltip name="ЗапросыСохранитьЗапросыВДругойФайлExtendedTooltip" id="31"/>
</Button>
</ChildItems>
</ButtonGroup>
<Button name="ФормаСравнитьРезультатыЗапросов" id="24">
<Type>CommandBarButton</Type>
<OnlyInAllActions>false</OnlyInAllActions>
<CommandName>Form.Command.СравнитьРезультатыЗапросов</CommandName>
<ExtendedTooltip name=ормаСравнитьРезультатыЗапросовExtendedTooltip" id="32"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<Table name="Запросы" id="1">
<Representation>List</Representation>
<CommandBarLocation>None</CommandBarLocation>
<MultipleChoice>true</MultipleChoice>
<RowSelectionMode>Row</RowSelectionMode>
<UseAlternationRowColor>true</UseAlternationRowColor>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<DataPath>Объект.Запросы</DataPath>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<RowFilter xsi:nil="true"/>
<ContextMenu name="ЗапросыКонтекстноеМеню" id="2">
<ChildItems>
<Button name="ЗапросыКонтекстноеМенюСравнитьРезультатыЗапросов" id="23">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.СравнитьРезультатыЗапросов</CommandName>
<ExtendedTooltip name="ЗапросыКонтекстноеМенюСравнитьРезультатыЗапросовExtendedTooltip" id="33"/>
</Button>
</ChildItems>
</ContextMenu>
<AutoCommandBar name="ЗапросыКоманднаяПанель" id="3"/>
<ExtendedTooltip name="ЗапросыExtendedTooltip" id="34"/>
<SearchStringAddition name="ЗапросыСтрокаПоиска" id="41">
<AdditionSource>
<Item>Запросы</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="ЗапросыСтрокаПоискаКонтекстноеМеню" id="42"/>
<ExtendedTooltip name="ЗапросыСтрокаПоискаРасширеннаяПодсказка" id="43"/>
</SearchStringAddition>
<ViewStatusAddition name="ЗапросыСостояниеПросмотра" id="44">
<AdditionSource>
<Item>Запросы</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="ЗапросыСостояниеПросмотраКонтекстноеМеню" id="45"/>
<ExtendedTooltip name="ЗапросыСостояниеПросмотраРасширеннаяПодсказка" id="46"/>
</ViewStatusAddition>
<SearchControlAddition name="ЗапросыУправлениеПоиском" id="47">
<AdditionSource>
<Item>Запросы</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="ЗапросыУправлениеПоискомКонтекстноеМеню" id="48"/>
<ExtendedTooltip name="ЗапросыУправлениеПоискомРасширеннаяПодсказка" id="49"/>
</SearchControlAddition>
<Events>
<Event name="1282f000-23b6-4887-87f4-9e8e79db3d32">ЗапросыВыбор</Event>
<Event name="2391e7b8-7235-45d7-ab7e-6ff3dc086396">ЗапросыПередНачаломДобавления</Event>
<Event name="2ccfdec5-583d-4eca-8319-e55de492665a">ЗапросыПередУдалением</Event>
</Events>
<ChildItems>
<InputField name="ЗапросыИмя" id="4">
<DataPath>Объект.Запросы.Имя</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ЗапросыИмяКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="ЗапросыИмяExtendedTooltip" id="35"/>
<Events>
<Event name="OnChange">ЗапросыИмяПриИзменении</Event>
</Events>
</InputField>
<LabelField name="ЗапросыID" id="11">
<DataPath>Объект.Запросы.Идентификатор</DataPath>
<Visible>false</Visible>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ЗапросыIDКонтекстноеМеню" id="12"/>
<ExtendedTooltip name="ЗапросыIDExtendedTooltip" id="36"/>
</LabelField>
<ColumnGroup name="ГруппаЗапроса" id="6">
<ReadOnly>true</ReadOnly>
<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>
<Group>Horizontal</Group>
<ExtendedTooltip name=руппаЗапросаExtendedTooltip" id="37"/>
<ChildItems>
<InputField name="ЗапросыВремяВыполнения" id="7">
<DataPath>Объект.Запросы.ВремяВыполнения</DataPath>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Время выполнения (сек.)</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ЗапросыВремяВыполненияКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="ЗапросыВремяВыполненияExtendedTooltip" id="38"/>
</InputField>
<InputField name="ЗапросыКоличествоСтрок" id="9">
<DataPath>Объект.Запросы.КоличествоСтрок</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ЗапросыКоличествоСтрокКонтекстноеМеню" id="10"/>
<ExtendedTooltip name="ЗапросыКоличествоСтрокExtendedTooltip" id="39"/>
</InputField>
</ChildItems>
</ColumnGroup>
</ChildItems>
</Table>
<InputField name="ИмяФайла" id="20">
<DataPath>Объект.ИмяФайла</DataPath>
<ReadOnly>true</ReadOnly>
<ContextMenu name="ИмяФайлаКонтекстноеМеню" id="21"/>
<ExtendedTooltip name="ИмяФайлаExtendedTooltip" id="40"/>
</InputField>
</ChildItems>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.ИнструментыРазработчикаКонсольЗапросов</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
<Attribute name="ИдентификаторТекущегоЗапроса" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Идентификатор текущего запроса</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:UUID</v8:Type>
</Type>
</Attribute>
<Attribute name="ИдентификаторТекущегоПараметра" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Идентификатор текущего параметра</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:UUID</v8:Type>
</Type>
</Attribute>
<Attribute name="СписокТипов" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Список типов</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueListType</v8:Type>
</Type>
</Attribute>
<Attribute name="ЗаданВопросОбУстановкеРасширения" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Задан вопрос об установке расширения</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</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>
<Shortcut>Ctrl+S</Shortcut>
<Picture>
<xr:Ref>StdPicture.SaveFile</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>СохранитьЗапросыВФайл</Action>
<Representation>Picture</Representation>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВосстановитьЗапросыИзФайла" id="2">
<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>
<Shortcut>Ctrl+O</Shortcut>
<Picture>
<xr:Ref>StdPicture.OpenFile</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>ВосстановитьЗапросыИзФайла</Action>
<Representation>TextPicture</Representation>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьЗапрос" id="3">
<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>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="СохранитьЗапросыВДругойФайл" id="4">
<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>
<Picture>
<xr:Ref>StdPicture.EndEdit</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>СохранитьЗапросыВДругойФайл</Action>
<Representation>Picture</Representation>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ДобавитьЗапросыИзФайла" id="5">
<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>
<Picture>
<xr:Ref>StdPicture.NewWindow</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>ДобавитьЗапросыИзФайла</Action>
<Representation>Picture</Representation>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="СравнитьРезультатыЗапросов" id="6">
<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>
<Picture>
<xr:Ref>StdPicture.ReadChanges</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>СравнитьРезультатыЗапросов</Action>
<Representation>TextPicture</Representation>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
</Commands>
</Form>

View File

@ -0,0 +1,456 @@

#Область ОбработчикиСобытий
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
// Считывание параметров передачи.
ПараметрыПередачи = ПолучитьИзВременногоХранилища(Параметры.АдресХранилища);
Объект.Запросы.Загрузить(ПараметрыПередачи.Запросы);
Объект.Параметры.Загрузить(ПараметрыПередачи.Параметры);
Объект.ИмяФайла = ПараметрыПередачи.ИмяФайла;
ИдентификаторТекущегоЗапроса = ПараметрыПередачи.ИдентификаторТекущегоЗапроса;
ИдентификаторТекущегоПараметра = ПараметрыПередачи.ИдентификаторТекущегоПараметра;
ОбработкаОбъект = ОбъектОбработки();
Объект.ДоступныеТипыДанных = ОбработкаОбъект.Метаданные().Реквизиты.ДоступныеТипыДанных.Тип;
СписокТипов = ОбъектОбработки().СформироватьСписокТипов();
ОбработкаОбъект.ФильтрацияСпискаТипов(СписокТипов, "");
Фильтр = Новый Структура;
Фильтр.Вставить("Идентификатор", ИдентификаторТекущегоЗапроса);
СтрокиЗапросовСИдентификатор = Объект.Запросы.НайтиСтроки(Фильтр);
Если СтрокиЗапросовСИдентификатор.Количество() > 0 Тогда
Элементы.Запросы.ТекущаяСтрока = СтрокиЗапросовСИдентификатор.Получить(0).ПолучитьИдентификатор();
КонецЕсли;
Заголовок = НСтр("ru = 'Выбрать запрос'");
КонецПроцедуры
&НаКлиенте
Процедура ЗапросыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
ЭлементКопирования = Элемент.ТекущиеДанные;
ИмяЗапросаПоУмолчанию = ЭтотОбъект.ВладелецФормы.ИмяЗапросаПоУмолчанию;
ИдентификаторЗапроса = Новый УникальныйИдентификатор;
Запрос = Объект.Запросы.Добавить();
Запрос.Имя = ИмяЗапросаПоУмолчанию;
Запрос.Идентификатор = ИдентификаторЗапроса;
Если Копирование Тогда
ИмяНовогоЗапроса = СформироватьИмяКопииЗапроса(ЭлементКопирования.Имя);
Запрос.Имя = ИмяНовогоЗапроса;
Запрос.Текст = ЭлементКопирования.Текст;
ИдентификаторТекущегоЗапроса = ЭлементКопирования.Идентификатор;
// Копирование параметров
Фильтр = Новый Структура;
Фильтр.Вставить("ИдентификаторЗапроса", ИдентификаторТекущегоЗапроса);
МассивПараметров = Объект.Параметры.НайтиСтроки(Фильтр);
Для каждого Стр Из МассивПараметров Цикл
ЭлементПараметр = Объект.Параметры.Добавить();
ЭлементПараметр.Идентификатор = Новый УникальныйИдентификатор;
ЭлементПараметр.ИдентификаторЗапроса = ИдентификаторЗапроса;
ЭлементПараметр.Имя = Стр.Имя;
ЭлементПараметр.Тип = Стр.Тип;
ЭлементПараметр.Значение = Стр.Значение;
ЭлементПараметр.ТипВФорме = Стр.ТипВФорме;
ЭлементПараметр.ЗначениеВФорме = Стр.ЗначениеВФорме;
КонецЦикла;
КонецЕсли;
ВладелецФормы.Модифицированность = Истина;
КонецПроцедуры
// Обработчик перед удалением Запроса.
// Удаляет параметры для данного запроса.
//
&НаКлиенте
Процедура ЗапросыПередУдалением(Элемент, Отказ)
ПараметрыВФорме = Объект.Параметры;
ИдентификаторУдаляемогоЗапроса = Элементы.Запросы.ТекущиеДанные.Идентификатор;
КоличествоСтрок = ПараметрыВФорме.Количество() - 1;
Пока КоличествоСтрок >= 0 Цикл
ТекущийПараметр = ПараметрыВФорме.Получить(КоличествоСтрок);
Если ТекущийПараметр.ИдентификаторЗапроса = ИдентификаторУдаляемогоЗапроса Тогда
ПараметрыВФорме.Удалить(КоличествоСтрок);
Модифицированность = Истина;
КонецЕсли;
КоличествоСтрок = КоличествоСтрок - 1;
КонецЦикла;
ВладелецФормы.Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ЗапросыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОбработкаВыбораЗапроса();
КонецПроцедуры
&НаКлиенте
Процедура ЗапросыИмяПриИзменении(Элемент)
ВладелецФормы.Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура СравнитьРезультатыЗапросов(Команда)
#Если Не ВебКлиент И Не ТонкийКлиент Тогда
ВыделенныеЗапросы = Элементы.Запросы.ВыделенныеСтроки;
Если ВыделенныеЗапросы.Количество() <> 2 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для сравнения необходимо выбрать только 2 запроса", "Объект'"));
Возврат;
Иначе
ИдентификаторСтрокиПервогоЗапроса = ВыделенныеЗапросы.Получить(0);
ИдентификаторСтрокиВторогоЗапроса = ВыделенныеЗапросы.Получить(1);
КонецЕсли;
ИдентификаторПервогоЗапроса = Объект.Запросы.НайтиПоИдентификатору(ИдентификаторСтрокиПервогоЗапроса).Идентификатор;
ИдентификаторВторогоЗапроса = Объект.Запросы.НайтиПоИдентификатору(ИдентификаторСтрокиВторогоЗапроса).Идентификатор;
ТабличныйДокументПервогоЗапроса = Неопределено;
ТабличныйДокументВторогоЗапроса = Неопределено;
ПолучитьТабличныеДокументыСравниваемыхЗапросов(ИдентификаторПервогоЗапроса, ИдентификаторВторогоЗапроса, ТабличныйДокументПервогоЗапроса, ТабличныйДокументВторогоЗапроса);
Если ТипЗнч(ТабличныйДокументПервогоЗапроса) <> Неопределено
И ТипЗнч(ТабличныйДокументВторогоЗапроса) <> Неопределено Тогда
// Сравниваются два файла.
Сравнение = Новый СравнениеФайлов;
Сравнение.СпособСравнения = СпособСравненияФайлов.ТабличныйДокумент;
Сравнение.ПервыйФайл = ТабличныйДокументПервогоЗапроса;
Сравнение.ВторойФайл = ТабличныйДокументВторогоЗапроса;
Сравнение.ПоказатьРазличияМодально();
КонецЕсли;
#Иначе
ПоказатьПредупреждение(, НСтр("ru = 'Сравнивать результаты можно только в режиме толстого клиента.", "Объект'"));
#КонецЕсли
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////
// ОБЩИЕ КОМАНДЫ
&НаКлиенте
Процедура СохранитьЗапросыВФайл(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("УстановитьИмяФайлаЗапроса", ЭтотОбъект, Объект.ИмяФайла);
СохранитьФайлЗапроса(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура СохранитьЗапросыВДругойФайл(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("УстановитьИмяФайлаЗапроса", ЭтотОбъект, "");
СохранитьФайлЗапроса(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьИмяФайлаЗапроса(ИмяФайла, ДополнительныеПараметры) Экспорт
Объект.ИмяФайла = ИмяФайла;
КонецПроцедуры
&НаКлиенте
Процедура ВосстановитьЗапросыИзФайла(Команда)
ОбработкаЧтенияФайла(Истина);
ВладелецФормы.Модифицированность = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьЗапрос(Команда)
ОбработкаВыбораЗапроса();
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьЗапросыИзФайла(Команда)
ОбработкаЧтенияФайла(Ложь);
ВладелецФормы.Модифицированность = Истина;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////
// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
&НаСервере
Функция ОбъектОбработки()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПоместитьЗапросыВСтруктуру(ИдентификаторЗапроса, ИдентификаторПараметра)
ПараметрыПередачи = Новый Структура;
ПараметрыПередачи.Вставить("АдресХранилища", ОбъектОбработки().ПоместитьЗапросыВоВременноеХранилище(Объект, ИдентификаторЗапроса, ИдентификаторПараметра));
Возврат ПараметрыПередачи;
КонецФункции
// Сохранение запросов.
//
// Параметры:
// ИмяФайла - имя файла XML.
// Объект - объект обработки.
//
&НаСервере
Функция СохранитьЗапросы(знач Объект)
ДвоичныеДанные = ОбъектОбработки().ЗаписатьЗапросыВФайлXML(Объект);
Возврат ДвоичныеДанные;
КонецФункции
&НаКлиенте
Процедура ОбработкаВыбораЗапроса()
ТекущаяСтрока = Элементы.Запросы.ТекущаяСтрока;
Если ТекущаяСтрока <> Неопределено Тогда
ТекущийЗапрос = Элементы.Запросы.ТекущиеДанные;
ИдентификаторТекущегоЗапроса = ТекущийЗапрос.Идентификатор;
ПараметрыПередачи = ПоместитьЗапросыВСтруктуру(ИдентификаторТекущегоЗапроса, ИдентификаторТекущегоПараметра);
// Передача в открывающую форму.
Закрыть();
Оповестить("ВыгрузитьЗапросыВРеквизиты", ПараметрыПередачи);
Оповестить("ОбновитьФормуКлиент");
Иначе
ПоказатьСообщениеПользователю(НСтр("ru = 'Выберите запрос.'"), "Объект");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьФайлЗапроса(ОписаниеОповещения)
Оповещение = Новый ОписаниеОповещения("СохранитьФайлЗапросаЗавершение", ЭтотОбъект, ОписаниеОповещения);
#Если Не ВебКлиент Тогда
// В тонком и толстом клиентах расширение подключено всегда.
СохранитьФайлЗапросаЗавершение(ОписаниеОповещения);
Возврат;
#КонецЕсли
// Если расширение и так уже подключено, незачем про него спрашивать.
РасширениеПодключено = ПодключитьРасширениеРаботыСФайлами();
Если РасширениеПодключено Тогда
СохранитьФайлЗапросаЗавершение(ОписаниеОповещения);
Возврат;
КонецЕсли;
Если Не ЗаданВопросОбУстановкеРасширения Тогда
ЗаданВопросОбУстановкеРасширения = Истина;
ОписаниеОповещенияВопрос = Новый ОписаниеОповещения("ЗадатьВопросОбУстановкеРасширения", ЭтотОбъект, Оповещение);
ПоказатьВопрос(ОписаниеОповещенияВопрос, Нстр("ru = 'Установить расширение для работы с файлами?'"), РежимДиалогаВопрос.ДаНет);
Иначе
СохранитьФайлЗапросаЗавершение(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗадатьВопросОбУстановкеРасширения(Ответ, Оповещение) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
НачатьУстановкуРасширенияРаботыСФайлами(Оповещение);
Иначе
СохранитьФайлЗапросаЗавершение(Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьФайлЗапросаЗавершение(Оповещение) Экспорт
ИмяФайла = Оповещение.ДополнительныеПараметры;
Если ПодключитьРасширениеРаботыСФайлами() Тогда
Если ПустаяСтрока(ИмяФайла) Тогда
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Заголовок = НСтр("ru = 'Выберите файл запросов'");
Диалог.ПредварительныйПросмотр = Ложь;
Диалог.Фильтр = НСтр("ru = 'Файл запросов (*.q1c)|*.q1c'");
Диалог.Расширение = "q1c";
Диалог.ПроверятьСуществованиеФайла = Истина;
Диалог.МножественныйВыбор = Ложь;
Если Диалог.Выбрать() Тогда
ИмяФайла = Диалог.ПолноеИмяФайла;
КонецЕсли;
КонецЕсли;
// Записываются текст и параметры запроса в файл.
Если Не ПустаяСтрока(ИмяФайла) Тогда
ДвоичныеДанные = СохранитьЗапросы(Объект);
ДвоичныеДанные.Записать(ИмяФайла);
ВладелецФормы.Модифицированность = Ложь;
КонецЕсли;
Иначе
ТекстСообщения = НСтр("ru = 'В данном браузере невозможно работать с файлами.'");
ПоказатьСообщениеПользователю(ТекстСообщения, "Объект");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаЧтенияФайла(Удалять)
// Выбор файла для загрузки.
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = НСтр("ru = 'Выберите файл запросов'");
Диалог.ПредварительныйПросмотр = Ложь;
Диалог.Фильтр = НСтр("ru = 'Файл запросов (*.q1c)|*.q1c'");
Диалог.Расширение = "q1c";
Диалог.ПроверятьСуществованиеФайла = Истина;
Диалог.МножественныйВыбор = Ложь;
Если Диалог.Выбрать() Тогда
ИмяФайла = Диалог.ПолноеИмяФайла;
КонецЕсли;
// Чтение данных из файла.
Если Не ПустаяСтрока(ИмяФайла) Тогда
Если Удалять Тогда
Объект.Запросы.Очистить();
Объект.Параметры.Очистить();
КонецЕсли;
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
ЗагрузитьЗапросыИзФайла(ДвоичныеДанные)
КонецЕсли;
Объект.ИмяФайла = ИмяФайла;
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьЗапросыИзФайла(ДвоичныеДанные)
ОбъектВнешнейОбработки = ОбъектОбработки().ПрочитатьЗапросыИзФайлаXML(ДвоичныеДанные);
ЗаполнитьЗапросыИПараметрыИзОбъектаВнешнейОбработки(ОбъектВнешнейОбработки);
КонецПроцедуры
// Заполняет из объекта внешней обработки запросы и параметры.
//
// Параметры:
// ОбъектОбработки - объект внешней обработки.
//
&НаСервере
Процедура ЗаполнитьЗапросыИПараметрыИзОбъектаВнешнейОбработки(ОбъектОбработки)
ЗапросыОбработка = ОбъектОбработки.Запросы;
ПараметрыОбработка = ОбъектОбработки.Параметры;
Объект.Запросы.Очистить();
Объект.Параметры.Очистить();
// Заполнение запросов и параметров в форме.
Для каждого ТекстЗапрос Из ЗапросыОбработка Цикл
ЭлементЗапроса = Объект.Запросы.Добавить();
ЭлементЗапроса.Идентификатор = ТекстЗапрос.Идентификатор;
ЭлементЗапроса.Имя = ТекстЗапрос.Имя;
ЭлементЗапроса.Текст = ТекстЗапрос.Текст;
КонецЦикла;
Для каждого ТекПараметр Из ПараметрыОбработка Цикл
ТипСтрока = ТекПараметр.Тип;
Значение = ТекПараметр.Значение;
Значение = ЗначениеИЗСтрокиВнутр(Значение);
Если ТипСтрока = "ТаблицаЗначений" ИЛИ ТипСтрока = "МоментВремени" ИЛИ ТипСтрока = "Граница" Тогда
ЭлементПараметр = Объект.Параметры.Добавить();
ЭлементПараметр.ИдентификаторЗапроса = ТекПараметр.ИдентификаторЗапроса;
ЭлементПараметр.Идентификатор = ТекПараметр.Идентификатор;
ЭлементПараметр.Имя = ТекПараметр.Имя;
ЭлементПараметр.Тип = СписокТипов.НайтиПоЗначению(ТипСтрока).Значение;
ЭлементПараметр.Значение = ТекПараметр.Значение;
ЭлементПараметр.ТипВФорме = СписокТипов.НайтиПоЗначению(ТипСтрока).Представление;
ЭлементПараметр.ЗначениеВФорме = ОбъектОбработки().ФормированиеПредставленияЗначения(Значение);
Иначе
Массив = Новый Массив;
Массив.Добавить(Тип(ТипСтрока));
Описание = Новый ОписаниеТипов(Массив);
ЭлементПараметр = Объект.Параметры.Добавить();
ЭлементПараметр.ИдентификаторЗапроса = ТекПараметр.ИдентификаторЗапроса;
ЭлементПараметр.Идентификатор = ТекПараметр.Идентификатор;
ЭлементПараметр.Имя = ТекПараметр.Имя;
ЭлементПараметр.Тип = ТипСтрока;
ЭлементПараметр.ТипВФорме = Описание;
ЭлементПараметр.Значение = ЗначениеВСтрокуВнутр(Значение);
ЭлементПараметр.ЗначениеВФорме = Значение;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьСообщениеПользователю(ТекстСообщения, ПутьКДанным)
ОчиститьСообщения();
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = ТекстСообщения;
Сообщение.ПутьКДанным = ПутьКДанным;
Сообщение.УстановитьДанные(Объект);
Сообщение.Сообщить();
КонецПроцедуры
&НаСервере
Процедура ПолучитьТабличныеДокументыСравниваемыхЗапросов(ИДПервогоЗапроса, ИДВторогоЗапроса, ФайлПервогоЗапроса, ФайлВторогоЗапроса)
ФильтрПервого = Новый Структура;
ФильтрПервого.Вставить("Идентификатор",ИДПервогоЗапроса);
АдресПервогоДокумента = Объект.Запросы.НайтиСтроки(ФильтрПервого).Получить(0).АдресРезультата;
ФильтрВторого = Новый Структура;
ФильтрПервого.Вставить("Идентификатор",ИДВторогоЗапроса);
АдресВторогоДокумента = Объект.Запросы.НайтиСтроки(ФильтрПервого).Получить(0).АдресРезультата;
Если ПустаяСтрока(АдресПервогоДокумента) ИЛИ ПустаяСтрока(АдресВторогоДокумента) Тогда
Возврат;
КонецЕсли;
ТДПервогоЗапроса = ПолучитьИзВременногоХранилища(АдресПервогоДокумента);
ТДВторогоЗапроса = ПолучитьИзВременногоХранилища(АдресВторогоДокумента);
ФайлПервогоЗапроса = ПолучитьИмяВременногоФайла("mxl");
ТДПервогоЗапроса.Записать(ФайлПервогоЗапроса);
ФайлВторогоЗапроса = ПолучитьИмяВременногоФайла("mxl");
ТДВторогоЗапроса.Записать(ФайлВторогоЗапроса);
КонецПроцедуры
// Формирует имя копии запроса.
//
// Параметры:
// Имя - передаваемое имя запроса.
//
&НаКлиенте
Функция СформироватьИмяКопииЗапроса(Имя)
Флаг = Истина;
Индекс = 1;
Пока Флаг Цикл
ФормируемоеИмяЗапроса = НСтр("ru = '%ИмяЗапроса% - Копия %НомерКопии%'");
ФормируемоеИмяЗапроса = СтрЗаменить(ФормируемоеИмяЗапроса, "%ИмяЗапроса%", Имя);
ФормируемоеИмяЗапроса = СтрЗаменить(ФормируемоеИмяЗапроса, "%НомерКопии%", Индекс);
Фильтр = Новый Структура;
Фильтр.Вставить("Имя", ФормируемоеИмяЗапроса);
МассивЗапросовПоФильтру = Объект.Запросы.НайтиСтроки(Фильтр);
Если МассивЗапросовПоФильтру.Количество() = 0 Тогда
Флаг = Ложь;
КонецЕсли;
Индекс = Индекс + 1;
КонецЦикла;
Возврат ФормируемоеИмяЗапроса;
КонецФункции
#КонецОбласти

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.7">
<Form uuid="c0fcbe6c-4da8-44e0-8874-c855fdab13d6">
<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,190 @@
<?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.7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Граница</v8:content>
</v8:item>
</Title>
<Width>50</Width>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<VerticalScroll>useIfNecessary</VerticalScroll>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаЗаписатьГраницу" id="8">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.ЗаписатьГраницу</CommandName>
<ExtendedTooltip name=ормаЗаписатьГраницуExtendedTooltip" id="11"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="NotificationProcessing">ОбработкаОповещения</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<UsualGroup name=руппа1" id="5">
<Group>Horizontal</Group>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name=руппа1ExtendedTooltip" id="12"/>
<ChildItems>
<InputField name="Тип" id="6">
<DataPath>Тип</DataPath>
<HorizontalStretch>false</HorizontalStretch>
<ChoiceButton>true</ChoiceButton>
<TextEdit>false</TextEdit>
<ContextMenu name="ТипКонтекстноеМеню" id="7"/>
<ExtendedTooltip name="ТипExtendedTooltip" id="13"/>
<Events>
<Event name="StartChoice">ТипНачалоВыбора</Event>
</Events>
</InputField>
<InputField name="ВидГраницы" id="3">
<DataPath>ВидГраницыФормы</DataPath>
<HorizontalStretch>false</HorizontalStretch>
<ListChoiceMode>true</ListChoiceMode>
<TextEdit>false</TextEdit>
<ContextMenu name="ВидГраницыКонтекстноеМеню" id="4"/>
<ExtendedTooltip name="ВидГраницыExtendedTooltip" id="14"/>
</InputField>
</ChildItems>
</UsualGroup>
<InputField name="ЗначениеВФорме" id="9">
<DataPath>ЗначениеВФорме</DataPath>
<ChoiceButton>true</ChoiceButton>
<ChooseType>false</ChooseType>
<ContextMenu name="ЗначениеВФормеКонтекстноеМеню" id="10"/>
<ExtendedTooltip name="ЗначениеВФормеExtendedTooltip" id="15"/>
<Events>
<Event name="OnChange">ЗначениеВФормеПриИзменении</Event>
<Event name="StartChoice">ЗначениеВФормеНачалоВыбора</Event>
</Events>
</InputField>
</ChildItems>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.ИнструментыРазработчикаКонсольЗапросов</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
<Attribute name="ИдентификаторТекущегоЗапроса" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Идентификатор текущего запроса</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:UUID</v8:Type>
</Type>
</Attribute>
<Attribute name="ИдентификаторТекущегоПараметра" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Идентификатор текущего параметра</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:UUID</v8:Type>
</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>
</Attribute>
<Attribute name="Значение" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Значение</v8:content>
</v8:item>
</Title>
<Type/>
</Attribute>
<Attribute name="ВидГраницыФормы" id="6">
<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="7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Список типов</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueListType</v8:Type>
</Type>
</Attribute>
<Attribute name="Тип" id="8">
<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="9">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Значение</v8:content>
</v8:item>
</Title>
<Type/>
</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>
<Representation>Text</Representation>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
</Commands>
</Form>

View File

@ -0,0 +1,217 @@

#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбработкаОбъект = ОбъектОбработки();
Объект.ДоступныеТипыДанных = ОбработкаОбъект.Метаданные().Реквизиты.ДоступныеТипыДанных.Тип;
Объект.ПутьКФормам = ОбработкаОбъект.Метаданные().ПолноеИмя() + ".Форма";
Элементы.ВидГраницы.СписокВыбора.Добавить("Включая");
Элементы.ВидГраницы.СписокВыбора.Добавить("Исключая");
ВидГраницыФормы = Элементы.ВидГраницы.СписокВыбора.Получить(0).Значение;
// Получение списка типов и его фильтрация.
СписокТипов = ОбъектОбработки().СформироватьСписокТипов();
ОбъектОбработки().ФильтрацияСпискаТипов(СписокТипов, "Граница");
// Считывание параметров передачи.
ПараметрыПередачи = ПолучитьИзВременногоХранилища(Параметры.АдресХранилища);
Объект.Запросы.Загрузить(ПараметрыПередачи.Запросы);
Объект.Параметры.Загрузить(ПараметрыПередачи.Параметры);
Объект.ИмяФайла = ПараметрыПередачи.ИмяФайла;
ИдентификаторТекущегоЗапроса = ПараметрыПередачи.ИдентификаторТекущегоЗапроса;
ИдентификаторТекущегоПараметра = ПараметрыПередачи.ИдентификаторТекущегоПараметра;
ЗаполнитьЗначения();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ПолучениеМоментаВремени" Тогда
ПолучениеМоментаВремени(Параметр);
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ФОРМЫ
&НаКлиенте
Процедура ТипНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОписаниеОповещения = Новый ОписаниеОповещения("ТипЗавершениеВыбора", ЭтотОбъект);
СписокТипов.ПоказатьВыборЭлемента(ОписаниеОповещения, НСтр("ru = 'Выбрать тип'"));
КонецПроцедуры
&НаКлиенте
Процедура ТипЗавершениеВыбора(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
Если ВыбранныйЭлемент <> Неопределено Тогда
ТекущийТип = ВыбранныйЭлемент;
Если ТекущийТип.Значение = "МоментВремени" Тогда
Тип = ТекущийТип.Представление;
Значение = Тип;
ЗначениеВФорме = Тип;
Иначе
Тип = ТекущийТип.Представление;
Массив = Новый Массив;
Массив.Добавить(Тип(ТекущийТип.Значение));
Описание = Новый ОписаниеТипов(Массив);
ЗначениеВФорме = Описание.ПривестиЗначение(ТекущийТип.Значение);
Значение = Описание.ПривестиЗначение(ТекущийТип.Значение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗначениеВФормеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПередаваемыеЗапросы = ПередачаЗапросов();
ПередаваемыеЗапросы.Вставить("Значение",Значение);
Если Тип = НСтр("ru = 'Момент времени'") Тогда
Путь = Объект.ПутьКФормам + "." + "МоментВремени";
ОткрытьФорму(Путь, ПередаваемыеЗапросы, ЭтотОбъект);
Иначе
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗначениеВФормеПриИзменении(Элемент)
ИзменениеЗначенияВФорме();
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////
// КОМАНДЫ
&НаКлиенте
Процедура ЗаписатьГраницу(Команда)
ВыгрузитьГраницуСервер();
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////
// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
&НаСервере
Функция ОбъектОбработки()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
// Передача табличной части "Запросы", "Параметры" в виде структуры.
//
&НаСервере
Функция ПередачаЗапросов()
АдресХранилища = ОбъектОбработки().ПоместитьЗапросыВоВременноеХранилище(Объект, ИдентификаторТекущегоЗапроса,ИдентификаторТекущегоПараметра);
ПараметрАдрес = Новый Структура;
ПараметрАдрес.Вставить("АдресХранилища", АдресХранилища);
Возврат ПараметрАдрес;
КонецФункции
&НаСервере
Процедура ПолучениеМоментаВремени(СтруктураПередачи)
Значение = СтруктураПередачи.ВнутрМоментВремени;
ЗначениеВФорме = СтруктураПередачи.ПредставлениеМоментаВремени;
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьГраницуСервер()
ПараметрыПередачи = ПоместитьЗапросыВСтруктуру(ИдентификаторТекущегоЗапроса, ИдентификаторТекущегоПараметра);
Закрыть();
Владелец = ЭтотОбъект.ВладелецФормы;
Владелец.Модифицированность = Истина;
Владелец.ВыгрузитьЗапросыВРеквизиты(ПараметрыПередачи);
КонецПроцедуры
&НаСервере
Функция ВнутрЗначениеОбъектаГраницы()
ВидГран = ОбъектОбработки().ОпределениеВидаГраницы(ВидГраницыФормы);
ГраницаФормы = Новый Граница(ЗначениеИзСтрокиВнутр(Значение),ВидГран);
Возврат ЗначениеВСтрокуВнутр(ГраницаФормы);
КонецФункции
&НаСервере
Функция ПоместитьЗапросыВСтруктуру(ИдентификаторЗапроса, ИдентификаторПараметра)
ПараметрыФормы = Объект.Параметры;
ПредставлениеГраницы = СформироватьГраницу();
Для каждого Стр Из ПараметрыФормы Цикл
Если Стр.Идентификатор = ИдентификаторТекущегоПараметра Тогда
Стр.Тип = "Граница";
Стр.Значение = ВнутрЗначениеОбъектаГраницы();
Стр.ТипВФорме = НСтр("ru ='Граница'");
Стр.ЗначениеВФорме = ПредставлениеГраницы;
КонецЕсли;
КонецЦикла;
ПараметрыПередачи = Новый Структура;
ПараметрыПередачи.Вставить("АдресХранилища", ОбъектОбработки().ПоместитьЗапросыВоВременноеХранилище(Объект,ИдентификаторЗапроса,ИдентификаторПараметра));
Возврат ПараметрыПередачи;
КонецФункции
&НаСервере
Процедура ЗаполнитьЗначения()
ПараметрыФормы = Объект.Параметры;
Для каждого ТекущийПараметр Из ПараметрыФормы Цикл
Если ТекущийПараметр.Идентификатор = ИдентификаторТекущегоПараметра Тогда
Значение = ТекущийПараметр.Значение;
Если ПустаяСтрока(Значение) Тогда
Возврат;
Иначе
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Граница = ЗначениеИзСтрокиВнутр(Значение);
Если ТипЗнч(Граница) <> Тип("Граница") Тогда
Возврат;
КонецЕсли;
ЗначениеЗагруженное = Граница.Значение;
ТипЗ = ОбъектОбработки().ИмяТипаИзЗначения(ЗначениеЗагруженное);
Тип = СписокТипов.НайтиПоЗначению(ТипЗ).Представление;
Если Тип <> НСтр("ru = 'Момент времени'") Тогда
ЗначениеВФорме = ЗначениеЗагруженное;
Иначе
ЗначениеВФорме = ОбъектОбработки().ФормированиеПредставленияЗначения(ЗначениеЗагруженное);
КонецЕсли;
Значение = ЗначениеВСтрокуВнутр(ЗначениеЗагруженное);
Если Граница.ВидГраницы = ВидГраницы.Включая Тогда
ВидГраницыФормы = элементы.ВидГраницы.СписокВыбора.Получить(0).Значение;
Иначе
ВидГраницыФормы = элементы.ВидГраницы.СписокВыбора.Получить(1).Значение;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СформироватьГраницу()
ВидГран = ОбъектОбработки().ОпределениеВидаГраницы(ВидГраницыФормы);
ГраницаФормы = Новый Граница(ЗначениеИзСтрокиВнутр(Значение),ВидГран);
Представление = ОбъектОбработки().ФормированиеПредставленияЗначения(ГраницаФормы);
Возврат Представление;
КонецФункции
&НаСервере
Процедура ИзменениеЗначенияВФорме()
Значение = ЗначениеВСтрокуВнутр(ЗначениеВФорме);
КонецПроцедуры
#КонецОбласти

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.7">
<Form uuid="6fe2bc87-d94d-4254-980d-0be690196d98">
<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,126 @@
<?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.7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Момент времени</v8:content>
</v8:item>
</Title>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<VerticalScroll>useIfNecessary</VerticalScroll>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаЗаписатьИЗакрыть" id="5">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.ЗаписатьИЗакрыть</CommandName>
<ExtendedTooltip name=ормаЗаписатьИЗакрытьExtendedTooltip" id="6"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<InputField name="Ссылка" id="3">
<DataPath>Ссылка</DataPath>
<ContextMenu name="СсылкаКонтекстноеМеню" id="4"/>
<ExtendedTooltip name="СсылкаExtendedTooltip" id="7"/>
</InputField>
<InputField name="Дата" id="1">
<DataPath>Дата</DataPath>
<ContextMenu name="ДатаКонтекстноеМеню" id="2"/>
<ExtendedTooltip name=атаExtendedTooltip" id="8"/>
</InputField>
</ChildItems>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.ИнструментыРазработчикаКонсольЗапросов</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
<Attribute name="Ссылка" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Ссылка</v8:content>
</v8:item>
</Title>
<Type>
<v8:TypeSet>cfg:AnyRef</v8:TypeSet>
</Type>
</Attribute>
<Attribute name="Дата" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Дата</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>DateTime</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Attribute>
<Attribute name="ИдентификаторТекущегоЗапроса" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Идентификатор текущего запроса</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:UUID</v8:Type>
</Type>
</Attribute>
<Attribute name="ИдентификаторТекущегоПараметра" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Идентификатор текущего параметра</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:UUID</v8:Type>
</Type>
</Attribute>
<Attribute name="ИмяФайла" id="6">
<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>
</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>
<Representation>Text</Representation>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
</Commands>
</Form>

View File

@ -0,0 +1,118 @@

#Область ОбработчикиСобытий
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбработкаОбъект = ОбъектОбработки();
Объект.ПутьКФормам = ОбработкаОбъект.Метаданные().ПолноеИмя() + ".Форма";
// Считывание параметров передачи.
ПараметрыПередачи = ПолучитьИзВременногоХранилища(Параметры.АдресХранилища);
Объект.Запросы.Загрузить(ПараметрыПередачи.Запросы);
Объект.Параметры.Загрузить(ПараметрыПередачи.Параметры);
Объект.ИмяФайла = ПараметрыПередачи.ИмяФайла;
ИдентификаторТекущегоЗапроса = ПараметрыПередачи.ИдентификаторТекущегоЗапроса;
ИдентификаторТекущегоПараметра = ПараметрыПередачи.ИдентификаторТекущегоПараметра;
Попытка // Если форма открывается не из главной формы.
МоментВремени = ЗначениеИзСтрокиВнутр(Параметры.Значение);
Дата = МоментВремени.Дата;
Ссылка = МоментВремени.Ссылка;
Исключение
ЗаполнитьЗначения();
КонецПопытки;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////
// КОМАНДЫ
&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
ВыгрузитьМоментВремениСервер();
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////
// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
&НаСервере
Функция ОбъектОбработки()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаКлиенте
Процедура ВыгрузитьМоментВремениСервер()
Владелец = ЭтотОбъект.ВладелецФормы;
ИмяФормыВладельца = Владелец.ИмяФормы;
ИмяОсновнойФормы = Объект.ПутьКФормам + ".Форма";
Если ИмяФормыВладельца = ИмяОсновнойФормы Тогда
ПараметрыПередачи = ПоместитьЗапросыВСтруктуру(ИдентификаторТекущегоЗапроса, ИдентификаторТекущегоПараметра);
Закрыть();
Владелец.Модифицированность = Истина;
Оповестить("ВыгрузитьЗапросыВРеквизиты", ПараметрыПередачи);
Иначе
ПредставлениеМоментаВремени = "";
ВнутрМоментВремени = ВнутрЗначениеОбъектаМВ(ПредставлениеМоментаВремени);
Закрыть();
ПараметрыПередачи = Новый Структура("ВнутрМоментВремени, ПредставлениеМоментаВремени",
ВнутрМоментВремени, ПредставлениеМоментаВремени);
Оповестить("ПолучениеМоментаВремени", ПараметрыПередачи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПоместитьЗапросыВСтруктуру(ИдентификаторЗапроса, ИдентификаторПараметра)
ПараметрыФормы = Объект.Параметры;
ПредставлениеМоментаВремени = "";
Для каждого Стр Из ПараметрыФормы Цикл
Если Стр.Идентификатор = ИдентификаторТекущегоПараметра Тогда
Стр.Тип = "МоментВремени";
Стр.Значение = ВнутрЗначениеОбъектаМВ(ПредставлениеМоментаВремени);
Стр.ТипВФорме = НСтр("ru = 'Момент времени'");
Стр.ЗначениеВФорме = ПредставлениеМоментаВремени;
КонецЕсли;
КонецЦикла;
ПараметрыПередачи = Новый Структура;
ПараметрыПередачи.Вставить("АдресХранилища", ОбъектОбработки().ПоместитьЗапросыВоВременноеХранилище(Объект,ИдентификаторЗапроса,ИдентификаторПараметра));
Возврат ПараметрыПередачи;
КонецФункции
&НаСервере
Функция ВнутрЗначениеОбъектаМВ(Представление)
МоментВремени = Новый МоментВремени(Дата, Ссылка);
Представление = ОбъектОбработки().ФормированиеПредставленияЗначения(МоментВремени);
Возврат ЗначениеВСтрокуВнутр(МоментВремени);
КонецФункции
&НаСервере
Процедура ЗаполнитьЗначения()
ПараметрыФормы = Объект.Параметры;
Для каждого ТекущийПараметр Из ПараметрыФормы Цикл
Если ТекущийПараметр.Идентификатор = ИдентификаторТекущегоПараметра Тогда
Значение = ТекущийПараметр.Значение;
Если ПустаяСтрока(Значение) Тогда
Возврат;
Иначе
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
МоментВремени = ЗначениеИзСтрокиВнутр(Значение);
Если ТипЗнч(МоментВремени) <> Тип("МоментВремени") Тогда
Возврат;
КонецЕсли;
Дата = МоментВремени.Дата;
Ссылка = МоментВремени.Ссылка;
КонецПроцедуры
#КонецОбласти

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.7">
<Form uuid="b8a520d4-c823-477e-ba92-708656e9c9c6">
<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,132 @@
<?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.7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Настройки</v8:content>
</v8:item>
</Title>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<VerticalScroll>useIfNecessary</VerticalScroll>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
<ChildItems>
<Button name="Записать" id="5">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.Записать</CommandName>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Записать и закрыть</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="ЗаписатьExtendedTooltip" id="15"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<UsualGroup name="Автосохранение" id="10">
<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>
<Group>Horizontal</Group>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="АвтосохранениеExtendedTooltip" id="16"/>
<ChildItems>
<CheckBoxField name="ИспользоватьАвтосохранение" id="1">
<DataPath>Объект.ИспользоватьАвтосохранение</DataPath>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Автоматически сохранять каждые (мин.):</v8:content>
</v8:item>
</Title>
<TitleLocation>Right</TitleLocation>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ИспользоватьАвтосохранениеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name=спользоватьАвтосохранениеExtendedTooltip" id="17"/>
</CheckBoxField>
<InputField name="ПериодАвтосохранения" id="3">
<DataPath>Объект.ПериодАвтосохранения</DataPath>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Период автосохранения (с)</v8:content>
</v8:item>
</Title>
<TitleLocation>None</TitleLocation>
<Width>4</Width>
<SpinButton>true</SpinButton>
<ContextMenu name="ПериодАвтосохраненияКонтекстноеМеню" id="4"/>
<ExtendedTooltip name=ериодАвтосохраненияExtendedTooltip" id="18"/>
</InputField>
</ChildItems>
</UsualGroup>
<CheckBoxField name="ВыводитьВРезультатахЗапросаЗначенияСсылок" id="8">
<DataPath>Объект.ВыводитьВРезультатахЗапросаЗначенияСсылок</DataPath>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выводить в результатах запроса значения ссылок</v8:content>
</v8:item>
</Title>
<TitleLocation>Right</TitleLocation>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ВыводитьВРезультатахЗапросаЗначенияСсылокКонтекстноеМеню" id="9"/>
<ExtendedTooltip name="ВыводитьВРезультатахЗапросаЗначенияСсылокExtendedTooltip" id="19"/>
</CheckBoxField>
<CheckBoxField name="ЧередованиеЦветовВРезультатеЗапроса" id="13">
<DataPath>Объект.ЧередованиеЦветовВРезультатеЗапроса</DataPath>
<TitleLocation>Right</TitleLocation>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ЧередованиеЦветовВРезультатеЗапросаКонтекстноеМеню" id="14"/>
<ExtendedTooltip name=ередованиеЦветовВРезультатеЗапросаExtendedTooltip" id="20"/>
</CheckBoxField>
<InputField name="ТипОбхода" id="11">
<DataPath>Объект.ТипОбхода</DataPath>
<ContextMenu name="ТипОбходаКонтекстноеМеню" id="12"/>
<ExtendedTooltip name="ТипОбходаExtendedTooltip" id="21"/>
</InputField>
</ChildItems>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.ИнструментыРазработчикаКонсольЗапросов</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</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>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
</Commands>
</Form>

View File

@ -0,0 +1,53 @@

#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ПараметрыПередачи = ПолучитьИзВременногоХранилища(Параметры.АдресХранилища);
Объект.ИспользоватьАвтосохранение = ПараметрыПередачи.ИспользоватьАвтосохранение;
Объект.ПериодАвтосохранения = ПараметрыПередачи.ПериодАвтосохранения;
Объект.ВыводитьВРезультатахЗапросаЗначенияСсылок = ПараметрыПередачи.ВыводитьВРезультатахЗапросаЗначенияСсылок;
Объект.ТипОбхода = ПараметрыПередачи.ТипОбхода;
Объект.ЧередованиеЦветовВРезультатеЗапроса = ПараметрыПередачи.ЧередованиеЦветовВРезультатеЗапроса;
Элементы.ТипОбхода.СписокВыбора.Добавить("Авто");
Элементы.ТипОбхода.СписокВыбора.Добавить("Прямой");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Записать(Команда)
ПараметрыПередачи = ПоместитьНастройкиВСтруктуру();
// Передача в открывающую форму.
Закрыть();
Владелец = ЭтотОбъект.ВладелецФормы;
Оповестить("ПередатьПараметрыНастроек" , ПараметрыПередачи);
Оповестить("ПередатьПараметрыНастроекАвтоСохранения");
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ОбъектОбработки()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПоместитьНастройкиВСтруктуру()
ПараметрыПередачи = Новый Структура;
ПараметрыПередачи.Вставить("АдресХранилища", ОбъектОбработки().ПоместитьНастройкиВоВременноеХранилище(Объект));
Возврат ПараметрыПередачи;
КонецФункции
#КонецОбласти

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.7">
<Form uuid="1b4b9089-8db7-4b59-be6b-c1e4b997a5c7">
<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,246 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Параметры.МеткаЗапроса) Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
МеткаЗапроса = Параметры.МеткаЗапроса;
ЭтотОбъект.Заголовок = НСтр("ru = 'План выполнения запроса ('") + Параметры.ИмяЗапроса + ")";
ПолноеИмяФайлаЖурнала = ФайлТехнологическийЖурнал(Параметры.ИдентификаторПроцессаОС, Параметры.КаталогСЛогФайлами);
Если НЕ ДанныеИзТехнологическогоЖурналаПрочитаны(ПолноеИмяФайлаЖурнала) Тогда
Элементы.ГруппаПланВыполненияЗапроса.ТекущаяСтраница = Элементы.ГруппаПолучениеПланаВыполненияЗапроса;
ТребуетсяПрочитатьЖурналИмя = ПолноеИмяФайлаЖурнала;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ТипПоказаЗапросаПриИзменении(Элемент)
Если ВидОтображенияДанных = 0 Тогда
Если ТипСУБД = "DBMSSQL" Тогда
Элементы.ДеревоОператорМетаданные.Видимость=Истина;
Элементы.ДеревоОператор.Видимость=Ложь;
Иначе
ПланВыполненияЗапросаТекст = ПланВыполненияЗапросаВМетаданных;
КонецЕсли;
СформированныйСКЛТекстЗапроса = ТекстЗапросаВВидеМетаданных;
Иначе
Если ТипСУБД = "DBMSSQL" Тогда
Элементы.ДеревоОператорМетаданные.Видимость=Ложь;
Элементы.ДеревоОператор.Видимость=Истина;
Иначе
ПланВыполненияЗапросаТекст = ПланВыполненияЗапросаИзТехЖурнала;
КонецЕсли;
СформированныйСКЛТекстЗапроса = ТекстЗапросаВСКЛ;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПланВыполненияЗапросаSQLServer
&НаКлиенте
Процедура ДеревоПриАктивизацииСтроки(Элемент)
Если ТипСУБД = "DBMSSQL" Тогда
Если ВидОтображенияДанных = 0 Тогда
ОписаниеОператора = Элемент.ТекущиеДанные.ОператорМетаданные;
Иначе
ОписаниеОператора = Элемент.ТекущиеДанные.Оператор;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеФункции
&НаСервере
Функция ОбъектОбработки()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ФайлТехнологическийЖурнал(ИдентификаторПроцессаОС, КаталогСЛогФайлами)
ОжидаемоеИмяФайла = ИмяФайлТехнологическийЖурнал(ТекущаяДатаСеанса());
ПолноеИмяФайлаЖурнала = НайтиФайлТехнологическийЖурнал(ОжидаемоеИмяФайла, ИдентификаторПроцессаОС, КаталогСЛогФайлами);
Если ЗначениеЗаполнено(ПолноеИмяФайлаЖурнала) Тогда
Возврат ПолноеИмяФайлаЖурнала;
Иначе
ОжидаемоеИмяФайла = ИмяФайлТехнологическийЖурнал(ТекущаяДатаСеанса() - 3600);
ПолноеИмяФайлаЖурнала = НайтиФайлТехнологическийЖурнал(ОжидаемоеИмяФайла, ИдентификаторПроцессаОС, КаталогСЛогФайлами);
Если ЗначениеЗаполнено(ПолноеИмяФайлаЖурнала) Тогда
Возврат ПолноеИмяФайлаЖурнала;
КонецЕсли;
КонецЕсли;
Возврат Неопределено;
КонецФункции
&НаСервере
Функция ИмяФайлТехнологическийЖурнал(ДатаФайла)
ОжидаемоеИмяФайла = Формат(ДатаФайла, "ДФ=yyMMddHH")+ ".log";
Возврат ОжидаемоеИмяФайла;
КонецФункции
&НаСервере
Функция НайтиФайлТехнологическийЖурнал(ИмяФайла, ИдентификаторПроцессаОС, КаталогСЛогФайлами)
СписокФайлов = НайтиФайлы(КаталогСЛогФайлами, "*.log", Истина);
Для каждого Файл Из СписокФайлов Цикл
Если Найти(Файл.Путь, "_" + ИдентификаторПроцессаОС) > 0 Тогда
Если Файл.Имя = ИмяФайла Тогда
Возврат Файл.ПолноеИмя;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
&НаСервере
Функция ДанныеИзТехнологическогоЖурналаПрочитаны(ПолноеИмяФайлаЖурнала)
ПрочитанныеДанные = Новый Структура("ТипСУБД, СКЛЗапрос, ПланВыполненияЗапроса");
ОбъектОбработки().ПрочитатьТехнологическийЖурнал(ПолноеИмяФайлаЖурнала, МеткаЗапроса, ПрочитанныеДанные);
ТипСУБД = ПрочитанныеДанные.ТипСУБД;
ТекстЗапросаВСКЛ = ПрочитанныеДанные.СКЛЗапрос;
ПланВыполненияЗапросаИзТехЖурнала = ПрочитанныеДанные.ПланВыполненияЗапроса;
Если НЕ ЗначениеЗаполнено(ТипСУБД) Тогда
Возврат Ложь;
КонецЕсли;
ВВидеМетаданных = ОбъектОбработки().ПреобразоватьВМетаданные(ТекстЗапросаВСКЛ, ПланВыполненияЗапросаИзТехЖурнала, ТипСУБД);
ТекстЗапросаВВидеМетаданных = ВВидеМетаданных.ТекстЗапросаВВидеМетаданных;
ПланВыполненияЗапросаВМетаданных = ВВидеМетаданных.ПланВыполненияЗапросаВМетаданных;
СформированныйСКЛТекстЗапроса = ВВидеМетаданных.ТекстЗапросаВВидеМетаданных;
ПланВыполненияЗапросаТекст = ВВидеМетаданных.ПланВыполненияЗапросаВМетаданных;
Если ТипСУБД = "DBMSSQL" Тогда
СуммарнаяСтоимостьОбщая = 0;
Элементы.ГруппаПланВыполненияЗапроса.ТекущаяСтраница = Элементы.ГруппаПланВыполненияЗапросаSQLСервер;
ДеревоПланаЗапроса = РеквизитФормыВЗначение("ДеревоПланаВыполненияЗапроса");
ОбъектОбработки().ПолучитьДеревоПланаВыполненияЗапроса(ПланВыполненияЗапросаИзТехЖурнала, ПланВыполненияЗапросаВМетаданных, ДеревоПланаЗапроса, СуммарнаяСтоимостьОбщая);
ЗначениеВРеквизитФормы(ДеревоПланаЗапроса, "ДеревоПланаВыполненияЗапроса");
СуммарнаяСтоимостьЗапроса = СуммарнаяСтоимостьОбщая;
Элементы.ГруппаИнформацияОСтоимостиЗапроса.Видимость = Истина;
Элементы.ПоказыватьПланВыполненияЗапросаВВиде.Видимость = Истина;
Максимум = НайтиМаксимальныйПоказательСтоимости(ДеревоПланаЗапроса.Строки);
УстановитьОформлениеДанныхВКолонкеСтоимость(Максимум);
Иначе
Элементы.ГруппаИнформацияОСтоимостиЗапроса.Видимость = Ложь;
Элементы.ГруппаПланВыполненияЗапроса.ТекущаяСтраница = Элементы.ГруппаПланВыполненияЗапросаТекстовоеПредставление;
Элементы.ПоказыватьПланВыполненияЗапросаВВиде.Видимость = Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервере
Процедура УстановитьОформлениеДанныхВКолонкеСтоимость(Максимум)
УсловноеОформление.Элементы.Очистить();
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ДеревоСтоимость");
ПолеОформления.Использование = Истина;
ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоПланаВыполненияЗапроса.Стоимость");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Максимум;
ЭлементОтбора.Использование = Истина;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(, , Истина));
КонецПроцедуры
&НаСервере
Функция НайтиМаксимальныйПоказательСтоимости(СтрокиДерева, Максимум = 0)
Для каждого Строка Из СтрокиДерева Цикл
Если Строка.Строки.Количество() > 0 Тогда
Максимум = НайтиМаксимальныйПоказательСтоимости(Строка.Строки, Максимум);
КонецЕсли;
Если Строка.Стоимость > Максимум Тогда
Максимум = Строка.Стоимость;
КонецЕсли;
КонецЦикла;
Возврат Максимум;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ЗначениеЗаполнено(ТребуетсяПрочитатьЖурналИмя) Тогда
ПодключитьОбработчикОжидания("ПрочитатьДанныеИзТехнологическогоЖурналаОбработчик", 2);
Элементы.ГруппаПолучениеПланаВыполненияЗапроса.Видимость = Истина;
КоличествоПопыток = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПрочитатьДанныеИзТехнологическогоЖурналаОбработчик()
Если ДанныеИзТехнологическогоЖурналаПрочитаны(ТребуетсяПрочитатьЖурналИмя) Тогда
ОтключитьОбработчикОжидания("ПрочитатьДанныеИзТехнологическогоЖурналаОбработчик");
ТребуетсяПрочитатьЖурналИмя = Неопределено;
Элементы.ГруппаПолучениеПланаВыполненияЗапроса.Видимость = Ложь;
Иначе
Если КоличествоПопыток < 5 Тогда
КоличествоПопыток = КоличествоПопыток + 1;
Иначе
ОтключитьОбработчикОжидания("ПрочитатьДанныеИзТехнологическогоЖурналаОбработчик");
ТребуетсяПрочитатьЖурналИмя = Неопределено;
Элементы.ГруппаПолучениеПланаВыполненияЗапроса.Видимость = Ложь;
ПоказатьПредупреждение(, НСтр("ru = 'Ошибка получения плана выполнения запроса'"));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказыватьПланВыполненияЗапросаВВидеПриИзменении(Элемент)
Если ПоказыватьПланВыполненияЗапросаВВиде = 0 Тогда
Элементы.ГруппаПланВыполненияЗапроса.ТекущаяСтраница = Элементы.ГруппаПланВыполненияЗапросаSQLСервер;
Иначе
Элементы.ГруппаПланВыполненияЗапроса.ТекущаяСтраница = Элементы.ГруппаПланВыполненияЗапросаТекстовоеПредставление;
КонецЕсли;
КонецПроцедуры
#КонецОбласти

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.7">
<Form uuid="2631699b-6892-4580-aa17-dfdcfb594e38">
<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,72 @@
<?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.7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Результат запроса</v8:content>
</v8:item>
</Title>
<AutoTitle>false</AutoTitle>
<VerticalScroll>useIfNecessary</VerticalScroll>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаЗакрыть" id="3">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.ЗакрытьФорму</CommandName>
<ExtendedTooltip name=ормаЗакрытьExtendedTooltip" id="4"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<SpreadSheetDocumentField name="Результат" id="1">
<DataPath>Результат</DataPath>
<TitleLocation>None</TitleLocation>
<VerticalScrollBar>true</VerticalScrollBar>
<HorizontalScrollBar>true</HorizontalScrollBar>
<Edit>true</Edit>
<ContextMenu name="РезультатКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="РезультатExtendedTooltip" id="5"/>
</SpreadSheetDocumentField>
</ChildItems>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.ИнструментыРазработчикаКонсольЗапросов</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
<Attribute name="Результат" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Результат</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type xmlns:mxl="http://v8.1c.ru/8.2/data/spreadsheet">mxl:SpreadsheetDocument</v8:Type>
</Type>
</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>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
</Commands>
</Form>

View File

@ -0,0 +1,19 @@

#Область ОбработчикиСобытий
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Результат = Параметры.РезультатЗапроса;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьФорму(Команда)
Закрыть();
КонецПроцедуры
#КонецОбласти

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.7">
<Form uuid="dc68ed1e-6fc1-41f6-afcd-ce639b389335">
<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,326 @@
<?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.7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Таблица значений</v8:content>
</v8:item>
</Title>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<VerticalScroll>useIfNecessary</VerticalScroll>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="НастройкиТаблицыЗначенийВыгрузитьТаблицуЗначений" id="17">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.ВыгрузитьТаблицуЗначений</CommandName>
<ExtendedTooltip name="НастройкиТаблицыЗначенийВыгрузитьТаблицуЗначенийРасширеннаяПодсказка" id="24"/>
</Button>
<ButtonGroup name="ФормаГруппаКнопок" id="8">
<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="25"/>
<ChildItems>
<Button name="ФормаДобавить" id="18">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.НастройкиТаблицыЗначений.StandardCommand.Add</CommandName>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Добавить колонку</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name=ормаДобавитьExtendedTooltip" id="26"/>
</Button>
<Button name="ФормаСкопировать" id="19">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.НастройкиТаблицыЗначений.StandardCommand.Copy</CommandName>
<ExtendedTooltip name=ормаСкопироватьExtendedTooltip" id="27"/>
</Button>
<Button name="ФормаИзменить" id="20">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.НастройкиТаблицыЗначений.StandardCommand.Change</CommandName>
<ExtendedTooltip name=ормаИзменитьExtendedTooltip" id="28"/>
</Button>
<Button name="ФормаУдалить" id="21">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.НастройкиТаблицыЗначений.StandardCommand.Delete</CommandName>
<ExtendedTooltip name=ормаУдалитьExtendedTooltip" id="29"/>
</Button>
<Button name="ФормаСортироватьСписокПоВозрастанию" id="22">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.НастройкиТаблицыЗначений.StandardCommand.SortListAsc</CommandName>
<ExtendedTooltip name=ормаСортироватьСписокПоВозрастаниюExtendedTooltip" id="30"/>
</Button>
<Button name="ФормаСортироватьСписокПоУбыванию" id="23">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.НастройкиТаблицыЗначений.StandardCommand.SortListDesc</CommandName>
<ExtendedTooltip name=ормаСортироватьСписокПоУбываниюExtendedTooltip" id="31"/>
</Button>
</ChildItems>
</ButtonGroup>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<Table name="НастройкиТаблицыЗначений" id="1">
<Representation>List</Representation>
<UseAlternationRowColor>true</UseAlternationRowColor>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<DataPath>НастройкиТаблицыЗначений</DataPath>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<RowFilter xsi:nil="true"/>
<ContextMenu name="НастройкиТаблицыЗначенийКонтекстноеМеню" id="2"/>
<AutoCommandBar name="НастройкиТаблицыЗначенийКоманднаяПанель" id="3">
<Autofill>false</Autofill>
</AutoCommandBar>
<ExtendedTooltip name="НастройкиТаблицыЗначенийРасширеннаяПодсказка" id="32"/>
<SearchStringAddition name="НастройкиТаблицыЗначенийСтрокаПоиска" id="36">
<AdditionSource>
<Item>НастройкиТаблицыЗначений</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="НастройкиТаблицыЗначенийСтрокаПоискаКонтекстноеМеню" id="37"/>
<ExtendedTooltip name="НастройкиТаблицыЗначенийСтрокаПоискаРасширеннаяПодсказка" id="38"/>
</SearchStringAddition>
<ViewStatusAddition name="НастройкиТаблицыЗначенийСостояниеПросмотра" id="39">
<AdditionSource>
<Item>НастройкиТаблицыЗначений</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="НастройкиТаблицыЗначенийСостояниеПросмотраКонтекстноеМеню" id="40"/>
<ExtendedTooltip name="НастройкиТаблицыЗначенийСостояниеПросмотраРасширеннаяПодсказка" id="41"/>
</ViewStatusAddition>
<SearchControlAddition name="НастройкиТаблицыЗначенийУправлениеПоиском" id="42">
<AdditionSource>
<Item>НастройкиТаблицыЗначений</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="НастройкиТаблицыЗначенийУправлениеПоискомКонтекстноеМеню" id="43"/>
<ExtendedTooltip name="НастройкиТаблицыЗначенийУправлениеПоискомРасширеннаяПодсказка" id="44"/>
</SearchControlAddition>
<Events>
<Event name="BeforeAddRow">НастройкиТаблицыЗначенийПередНачаломДобавления</Event>
<Event name="BeforeDeleteRow">НастройкиТаблицыЗначенийПередУдалением</Event>
</Events>
<ChildItems>
<InputField name="НастройкиТаблицыЗначенийНаименованиеКолонки" id="4">
<DataPath>НастройкиТаблицыЗначений.НаименованиеКолонки</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НастройкиТаблицыЗначенийНаименованиеКолонкиКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="НастройкиТаблицыЗначенийНаименованиеКолонкиРасширеннаяПодсказка" id="33"/>
<Events>
<Event name="TextEditEnd">НастройкитаблицыЗначенийНаименованиеКолонкиОкончаниеВводаТекста</Event>
</Events>
</InputField>
<InputField name="НастройкиТаблицыЗначенийТипКолонки" id="6">
<DataPath>НастройкиТаблицыЗначений.ТипКолонки</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НастройкиТаблицыЗначенийТипКолонкиКонтекстноеМеню" id="7"/>
<ExtendedTooltip name="НастройкиТаблицыЗначенийТипКолонкиРасширеннаяПодсказка" id="34"/>
<Events>
<Event name="OnChange">НастройкитаблицыЗначенийТипКолонкиПриИзменении</Event>
</Events>
</InputField>
</ChildItems>
</Table>
<Table name="ТаблицаЗначенийПараметр" id="13">
<Representation>List</Representation>
<UseAlternationRowColor>true</UseAlternationRowColor>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<DataPath>ТаблицаЗначенийПараметр</DataPath>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<RowFilter xsi:nil="true"/>
<ContextMenu name="ТаблицаЗначенийПараметрКонтекстноеМеню" id="14"/>
<AutoCommandBar name="ТаблицаЗначенийПараметрКоманднаяПанель" id="15"/>
<ExtendedTooltip name="ТаблицаЗначенийПараметрExtendedTooltip" id="35"/>
<SearchStringAddition name="ТаблицаЗначенийПараметрСтрокаПоиска" id="45">
<AdditionSource>
<Item>ТаблицаЗначенийПараметр</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="ТаблицаЗначенийПараметрСтрокаПоискаКонтекстноеМеню" id="46"/>
<ExtendedTooltip name="ТаблицаЗначенийПараметрСтрокаПоискаРасширеннаяПодсказка" id="47"/>
</SearchStringAddition>
<ViewStatusAddition name="ТаблицаЗначенийПараметрСостояниеПросмотра" id="48">
<AdditionSource>
<Item>ТаблицаЗначенийПараметр</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="ТаблицаЗначенийПараметрСостояниеПросмотраКонтекстноеМеню" id="49"/>
<ExtendedTooltip name="ТаблицаЗначенийПараметрСостояниеПросмотраРасширеннаяПодсказка" id="50"/>
</ViewStatusAddition>
<SearchControlAddition name="ТаблицаЗначенийПараметрУправлениеПоиском" id="51">
<AdditionSource>
<Item>ТаблицаЗначенийПараметр</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="ТаблицаЗначенийПараметрУправлениеПоискомКонтекстноеМеню" id="52"/>
<ExtendedTooltip name="ТаблицаЗначенийПараметрУправлениеПоискомРасширеннаяПодсказка" id="53"/>
</SearchControlAddition>
</Table>
</ChildItems>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.ИнструментыРазработчикаКонсольЗапросов</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
<Attribute name="НастройкиТаблицыЗначений" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Настройки таблицы значений</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueTable</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>
<Column name="ТипКолонки" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип колонки</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:TypeDescription</v8:Type>
</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>v8:ValueTable</v8:Type>
</Type>
</Attribute>
<Attribute name="ИдентификаторТекущегоПараметра" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Идентификатор текущего параметра</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:UUID</v8:Type>
</Type>
</Attribute>
<Attribute name="ИдентификаторТекущегоЗапроса" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Идентификатор текущего запроса</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:UUID</v8:Type>
</Type>
</Attribute>
<Attribute name="ИмяФайла" id="6">
<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="7">
<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="8">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Список типов</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueListType</v8:Type>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="ВыгрузитьТаблицуЗначений" id="2">
<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>
<Representation>Text</Representation>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
</Commands>
</Form>

View File

@ -0,0 +1,490 @@
&НаКлиенте
Перем ИмяКолонкиПоУмолчанию;
#Область ОбработчикиСобытий
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
// Считывание параметров передачи.
ПараметрыПередачи = ПолучитьИзВременногоХранилища(Параметры.АдресХранилища);
Объект.Запросы.Загрузить(ПараметрыПередачи.Запросы);
Объект.Параметры.Загрузить(ПараметрыПередачи.Параметры);
Объект.ИмяФайла = ПараметрыПередачи.ИмяФайла;
ИдентификаторТекущегоЗапроса = ПараметрыПередачи.ИдентификаторТекущегоЗапроса;
ИдентификаторТекущегоПараметра = ПараметрыПередачи.ИдентификаторТекущегоПараметра;
Объект.ДоступныеТипыДанных = ОбъектОбработки().Метаданные().Реквизиты.ДоступныеТипыДанных.Тип;
ОбъектОбработки().СформироватьСписокТипов(СписокТипов);
ЗаполнитьТаблицыПриОткрытии();
КонецПроцедуры
&НаКлиенте
Процедура НастройкиТаблицыЗначенийТипКолонкиПриИзменении(Элемент)
// Определение наименования колонки.
ПервыйТип = "";
ТекущаяКолонка = Элементы.НастройкиТаблицыЗначений.ТекущиеДанные;
ТипКолонки = ТекущаяКолонка.ТипКолонки;
СтароеИмяКолонки= ТекущаяКолонка.НаименованиеКолонки;
ДоступныеТипы = ТекущаяКолонка.ТипКолонки.Типы();
Количество = ДоступныеТипы.Количество();
Если Количество > 0 Тогда
Флаг = Ложь;
Для каждого ЭлементСписка Из СписокТипов Цикл
Если ЭлементСписка.Представление = Строка(ДоступныеТипы.Получить(0)) Тогда
Флаг = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Флаг Тогда
ПервыйТип = Строка(ДоступныеТипы.Получить(0)); // для примитивных типов.
Иначе
ПервыйТип = Новый(ДоступныеТипы.Получить(0));
ПервыйТип = ИмяТипаПоЗначению(ПервыйТип);
КонецЕсли;
КонецЕсли;
ИдентификаторСтроки = ТекущаяКолонка.ПолучитьИдентификатор();
Если Найти(ВРег(СтароеИмяКолонки), ВРег(ИмяКолонкиПоУмолчанию)) <> 0 Тогда
НовоеИмяКолонки = СформироватьИмяКолонки(ПервыйТип, ИдентификаторСтроки);
Иначе
НовоеИмяКолонки = СтароеИмяКолонки;
КонецЕсли;
ТекущаяКолонка.НаименованиеКолонки = НовоеИмяКолонки;
ТекущаяСтрока = Элементы.НастройкиТаблицыЗначений.ТекущаяСтрока;
ИнициализацияКолонкиВТЗКлиент(СтароеИмяКолонки, НовоеИмяКолонки, ТипКолонки);
КонецПроцедуры
&НаКлиенте
Процедура НастройкиТаблицыЗначенийПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
ИдентификаторСтроки = Новый УникальныйИдентификатор;
ИмяКолонки = СформироватьИмяКолонки(ИмяКолонкиПоУмолчанию, ИдентификаторСтроки);
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Строка"));
ТипКолонки = Новый ОписаниеТипов(МассивТипов);
ЭлементНастройки = НастройкиТаблицыЗначений.Добавить();
ЭлементНастройки.НаименованиеКолонки = ИмяКолонки;
ЭлементНастройки.ТипКолонки = ТипКолонки;
ИнициализацияКолонкиВТЗКлиент("", ИмяКолонки, ТипКолонки)
КонецПроцедуры
&НаКлиенте
Процедура НастройкиТаблицыЗначенийНаименованиеКолонкиОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
ТекущаяКолонкаТЗ = Элементы.НастройкиТаблицыЗначений.ТекущиеДанные;
СтароеИмя = ТекущаяКолонкаТЗ.НаименованиеКолонки;
ТипКолонки = ТекущаяКолонкаТЗ.ТипКолонки;
ИдентификаторСтроки = ТекущаяКолонкаТЗ.ПолучитьИдентификатор();
Текст = УбратьСимволыИзТекста(Текст);
Если Не ПустаяСтрока(Текст) Тогда
НовоеИмя = СформироватьИмяКолонки(Текст, ИдентификаторСтроки);
Иначе
НовоеИмя = СформироватьИмяКолонки(ИмяКолонкиПоУмолчанию, ИдентификаторСтроки);
ПоказатьСообщениеПользователю(НСтр("ru = 'Наименование колонки не может быть пустым.'"), "Объект");
КонецЕсли;
ТекущаяКолонкаТЗ.НаименованиеКолонки = НовоеИмя;
Если ТипКолонки.Типы().Количество() <> 0 Тогда
ИзменитьИмяРеквизитаИКолонкиСервер(СтароеИмя, НовоеИмя, ТипКолонки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НастройкиТаблицыЗначенийПередУдалением(Элемент, Отказ)
ТекущаяСтрока = Элементы.НастройкиТаблицыЗначений.ТекущаяСтрока;
ТекущаяКолонкаТЗ = Элементы.НастройкиТаблицыЗначений.ТекущиеДанные;
ИмяКолонки = ТекущаяКолонкаТЗ.НаименованиеКолонки;
ТипКолонки = ТекущаяКолонкаТЗ.ТипКолонки;
Если ТипКолонки.Типы().Количество() <> 0 Тогда
УдалитьКолонкуСервер(ИмяКолонки);
КонецЕсли;
ЭлементКоллекции = НастройкиТаблицыЗначений.НайтиПоИдентификатору(ТекущаяСтрока);
ИндексЭлементаКоллекции = НастройкиТаблицыЗначений.Индекс(ЭлементКоллекции);
НастройкиТаблицыЗначений.Удалить(ИндексЭлементаКоллекции);
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////
// КОМАНДЫ
&НаКлиенте
Процедура ВыгрузитьТаблицуЗначений(Команда)
ВыгрузитьТаблицуЗначенийСервер();
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////
// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
&НаСервере
Функция ОбъектОбработки()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
// Формирует колонки для Таблицы значений из Настроек таблицы значений.
//
// Изменяет реквизиты текущего параметра.
//
&НаКлиенте
Процедура ВыгрузитьТаблицуЗначенийСервер()
ПараметрыПередачи = ПоместитьЗапросыВСтруктуру(ИдентификаторТекущегоЗапроса, ИдентификаторТекущегоПараметра);
Закрыть();
Владелец = ЭтотОбъект.ВладелецФормы;
Владелец.Модифицированность = Истина;
Оповестить("ВыгрузитьЗапросыВРеквизиты", ПараметрыПередачи);
КонецПроцедуры
&НаСервере
Функция ВнутрЗначениеОбъектаТЗ()
ТЗ = РеквизитФормыВЗначение("ТаблицаЗначенийПараметр");
Возврат ЗначениеВСтрокуВнутр(ТЗ);
КонецФункции
&НаСервере
Функция ПоместитьЗапросыВСтруктуру(ИдентификаторЗапроса,ИдентификаторПараметра)
ПараметрыФормы = Объект.Параметры;
ПредставлениеТЗ = СформироватьПредставлениеТаблицыЗначений(ПредставлениеТЗ);
Для каждого Стр Из ПараметрыФормы Цикл
Если Стр.Идентификатор = ИдентификаторТекущегоПараметра Тогда
Стр.Тип = "ТаблицаЗначений";
Стр.Значение = ВнутрЗначениеОбъектаТЗ();
Стр.ТипВФорме = НСтр("ru = 'Таблица значений'");
Стр.ЗначениеВФорме = ПредставлениеТЗ;
КонецЕсли;
КонецЦикла;
ПараметрыПередачи = Новый Структура;
ПараметрыПередачи.Вставить("АдресХранилища", ОбъектОбработки().ПоместитьЗапросыВоВременноеХранилище(Объект, ИдентификаторЗапроса, ИдентификаторПараметра));
Возврат ПараметрыПередачи;
КонецФункции
// Заполняет таблицы значений в форме по загружаемой таблице значений.
//
&НаСервере
Процедура ЗаполнитьТаблицыПриОткрытии()
ПараметрыФормы = Объект.Параметры;
Для каждого ТекущийПараметр Из ПараметрыФормы Цикл
Если ТекущийПараметр.Идентификатор = ИдентификаторТекущегоПараметра Тогда
Значение = ТекущийПараметр.Значение;
Если ПустаяСтрока(Значение) Тогда
Возврат;
Иначе
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// Формирование таблицы "Настройки".
ТЗ = ЗначениеИзСтрокиВнутр(Значение);
Если ТипЗнч(ТЗ) <> Тип("ТаблицаЗначений") Тогда
Возврат;
КонецЕсли;
Колонки = ТЗ.Колонки;
Для Индекс = 0 По Колонки.Количество() - 1 Цикл
ТекущаяКолонка = Колонки.Получить(Индекс);
ИмяКолонки = ТекущаяКолонка.Имя;
ТипКолонки = ТекущаяКолонка.ТипЗначения;
Настройка = НастройкиТаблицыЗначений.Добавить();
Настройка.НаименованиеКолонки = ИмяКолонки;
Настройка.ТипКолонки = ТипКолонки;
ИнициализацияКолонкиВТЗСервер("", ИмяКолонки, ТипКолонки, "");
КонецЦикла;
// Заполнение таблицы значений.
Для каждого Строка Из ТЗ Цикл
ЭлементТЗ = ТаблицаЗначенийПараметр.Добавить();
Для каждого Колонка Из ТЗ.Колонки Цикл
ЭлементТЗ[Колонка.Имя] = Строка[Колонка.Имя];
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция СформироватьПредставлениеТаблицыЗначений(Представление)
ТЗ = РеквизитФормыВЗначение("ТаблицаЗначенийПараметр");
Представление = ОбъектОбработки().ФормированиеПредставленияЗначения(ТЗ);
Возврат Представление;
КонецФункции
// Формирует имя добавляемой колонки.
// Оно не должно совпадать с именем реквизита формы
// и с именем колонки.
//
// Параметры:
// Имя - передаваемое имя.
//
&НаКлиенте
Функция СформироватьИмяКолонки(знач ИмяКолонки, ИДТекСтроки)
НТЗ = НастройкиТаблицыЗначений;
Флаг = Истина;
Индекс = 0;
ИмяКолонки = СокрЛП(ИмяКолонки);
Пока Флаг Цикл
Имя = ИмяКолонки + Строка(Формат(Индекс, "ЧН=-"));
Имя = СтрЗаменить(Имя, "-", "");
// Если нет строки с таким именем.
Фильтр = Новый Структура("НаименованиеКолонки", Имя);
ОтфильтрованныеСтроки = НТЗ.НайтиСтроки(Фильтр);
Если ОтфильтрованныеСтроки.Количество() = 0 Тогда
Флаг = Ложь;
Иначе
Если ОтфильтрованныеСтроки.Получить(0).ПолучитьИдентификатор() <> ИДТекСтроки Тогда
Флаг = Истина;
Иначе
Флаг = Ложь;
КонецЕсли;
КонецЕсли;
// Если нет колонки с таким именем.
Колонки = Элементы.ТаблицаЗначенийПараметр.ПодчиненныеЭлементы;
КолКолонок = Колонки.Количество();
Для Индекс = 0 По КолКолонок - 1 Цикл
Если Колонки.Получить(Индекс).Имя = Имя Тогда
Флаг = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Результат = ?(Флаг, "", Имя);
Индекс = Индекс + 1;
КонецЦикла;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ИнициализацияКолонкиВТЗКлиент(СтароеИмяКолонки, НовоеИмяКолонки, ТипКолонки)
СообщениеСистемы = "";
ИнициализацияКолонкиВТЗСервер(СтароеИмяКолонки, НовоеИмяКолонки, ТипКолонки, СообщениеСистемы);
Если НЕ ПустаяСтрока(СообщениеСистемы) Тогда
ПоказатьСообщениеПользователю(СообщениеСистемы, "Объект");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИнициализацияКолонкиВТЗСервер(СтароеИмяКолонки, НовоеИмяКолонки, ТипКолонки, Сообщение = "");
НачатьТранзакцию();
ИмяУдаляемогоРеквизита = ИмяРодителя + "." + СтароеИмяКолонки;
// Заполнение массива удаляемыми реквизитами.
МассивУдаляемыхРеквизитов = Новый Массив;
РекРодителя = ПолучитьРеквизиты(ИмяРодителя);
Для каждого ТекРек Из РекРодителя Цикл
Если ТекРек.Имя = СтароеИмяКолонки Тогда
МассивУдаляемыхРеквизитов.Добавить(ИмяУдаляемогоРеквизита);
КонецЕсли;
КонецЦикла;
// Выгрузка значений в таблицу значений.
Если Не ПустаяСтрока(СтароеИмяКолонки) Тогда
ТЗЗначений = ТаблицаЗначенийПараметр.Выгрузить(, СтароеИмяКолонки);
Иначе
ТЗЗначений = Неопределено;
КонецЕсли;
// Добавление нового реквизита в объект.
ДобавляемыеРеквизиты = Новый Массив;
НовыйРеквизит = Новый РеквизитФормы(НовоеИмяКолонки, ТипКолонки, ИмяРодителя, НовоеИмяКолонки, Ложь);
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты, МассивУдаляемыхРеквизитов);
// Поиск колонки в "ТаблицаЗначенийПараметр" с условием ПутьКДанным=ПутьКНовомуРеквизиту.
ИмяДобавляемогоРеквизита = ИмяРодителя + "." + НовоеИмяКолонки;
НомерКолонки = ПоискКолонокВТЗСЗаданнымПутемКДанным(ИмяДобавляемогоРеквизита);
Если ТЗЗначений <> Неопределено Тогда
Если НомерКолонки <> Неопределено Тогда
ИмяПервойКолонки = ТЗЗначений.Колонки.Получить(0).Имя;
Индекс = 0;
Для Каждого Стр Из ТЗЗначений Цикл
ТаблицаЗначенийПараметр.Получить(Индекс)[НовоеИмяКолонки] = Стр[ИмяПервойКолонки];
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
Иначе
НоваяКолонкаТаблицы = Элементы.Добавить(НовоеИмяКолонки, Тип("ПолеФормы"), Элементы.ТаблицаЗначенийПараметр);
НоваяКолонкаТаблицы.ПутьКДанным = ИмяДобавляемогоРеквизита;
НоваяКолонкаТаблицы.Вид = ВидПоляФормы.ПолеВвода;
КонецЕсли;
ЗафиксироватьТранзакцию();
КонецПроцедуры
// Изменяет имя реквизита и колонки по идентификатору строки.
//
// Параметры:
// ИДСтроки - идентификатор строки таблицы значений настроек.
// Имя - новое передаваемое имя для реквизита и колонки.
//
&НаСервере
Процедура ИзменитьИмяРеквизитаИКолонкиСервер(СтароеИмя, НовоеИмя, ТипКолонки)
НачатьТранзакцию();
ИмяУдаляемогоРеквизита = ИмяРодителя + "." + СтароеИмя;
// Заполнение массива удаляемыми реквизитами.
МассивУдаляемыхРеквизитов = Новый Массив;
РекРодителя = ПолучитьРеквизиты(ИмяРодителя);
Для каждого ТекРек Из РекРодителя Цикл
Если ТекРек.Имя = СтароеИмя Тогда
МассивУдаляемыхРеквизитов.Добавить(ИмяУдаляемогоРеквизита);
КонецЕсли;
КонецЦикла;
// Выгрузка значений в таблицу значений.
ТЗЗначений = ТаблицаЗначенийПараметр.Выгрузить(, СтароеИмя);
// Добавление нового реквизита в объект.
ДобавляемыеРеквизиты = Новый Массив;
НовыйРеквизит = Новый РеквизитФормы(НовоеИмя, ТипКолонки, ИмяРодителя, НовоеИмя, Ложь);
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты, МассивУдаляемыхРеквизитов);
// Поиск колонки в "ТаблицаЗначенийПараметр" с условием ПутьКДанным = ПутьКНовомуРеквизиту.
ИмяДобавляемогоРеквизита = ИмяРодителя + "." + НовоеИмя;
НомерКолонки = ПоискКолонокВТЗСЗаданнымПутемКДанным(ИмяДобавляемогоРеквизита);
Если НомерКолонки <> Неопределено Тогда
ИмяПервойКолонки = ТЗЗначений.Колонки.Получить(0).Имя;
Индекс = 0;
Для Каждого СтарСтр Из ТЗЗначений Цикл
ТаблицаЗначенийПараметр.Получить(Индекс)[НовоеИмя] = СтарСтр[ИмяПервойКолонки];
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
ЗафиксироватьТранзакцию();
КонецПроцедуры
// Возвращает номер колонки с заданным путем.
//
// Параметры:
// ПутьКДанным - заданный путь.
//
// Возвращаемое значение: номер колонки или Неопределено.
//
&НаСервере
Функция ПоискКолонокВТЗСЗаданнымПутемКДанным(ПутьКДанным)
Колонки = Элементы.ТаблицаЗначенийПараметр.ПодчиненныеЭлементы;
КоличествоКолонок = Колонки.Количество();
Флаг = Ложь;
Для Индекс = 0 По КоличествоКолонок - 1 Цикл
ТекКолонка = Колонки.Получить(Индекс);
Если ТекКолонка.ПутьКДанным = ПутьКДанным Тогда
Возврат Индекс;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
// Удаляет колонку по имени.
//
// Параметры:
// ИмяКолонки - имя колонки.
//
&НаСервере
Процедура УдалитьКолонкуСервер(ИмяКолонки)
ИмяУдаляемогоРеквизита = ИмяРодителя + "." + ИмяКолонки;
// Заполнение массива удаляемыми реквизитами.
МассивУдаляемыхРеквизитов = Новый Массив;
РекРодителя = ПолучитьРеквизиты(ИмяРодителя);
Для каждого ТекРек Из РекРодителя Цикл
Если ТекРек.Имя = ИмяКолонки Тогда
МассивУдаляемыхРеквизитов.Добавить(ИмяУдаляемогоРеквизита);
КонецЕсли;
КонецЦикла;
ИзменитьРеквизиты(, МассивУдаляемыхРеквизитов);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьСообщениеПользователю(ТекстСообщения, ПутьКДанным)
ОчиститьСообщения();
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = ТекстСообщения;
Сообщение.ПутьКДанным = ПутьКДанным;
Сообщение.УстановитьДанные(Объект);
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Функция УбратьСимволыИзТекста(знач Текст)
Результат = "";
ДлинаТекста = СтрДлина(Текст);
Если ДлинаТекста = 0 Тогда
Возврат Результат;
КонецЕсли;
Для Индекс = 0 По ДлинаТекста - 1 Цикл
СимволТекста = Лев(Текст, 1);
Если Не ЭтоСимвол(СимволТекста) Тогда
Результат = Результат + СимволТекста;
КонецЕсли;
Текст = Сред(Текст, 2);
КонецЦикла;
Возврат Результат;
КонецФункции
&НаКлиенте
Функция ЭтоСимвол(Символ)
// Символы между 1040 и 1103 - Русские буквы.
// Символы между 48 и 57 - Цифры.
// Символы между 65 и 122 - Английские буквы.
Код = КодСимвола(Символ);
Если (Код >= 1040 И Код <= 1103) Или (Код >= 48 И Код <= 57) Или (Код >= 65 И Код <= 122) Тогда
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли;
КонецФункции
&НаСервере
Функция ИмяТипаПоЗначению(Значение)
Возврат Значение.Метаданные().Имя;
КонецФункции
///////////////////////////////////////////////////////////////////////////
// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ
ИмяРодителя = "ТаблицаЗначенийПараметр";
ИмяКолонкиПоУмолчанию = "Колонка";
#КонецОбласти

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.7">
<Form uuid="65b03d50-7314-4ee7-bd2d-3096bcd0f256">
<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,47 @@
<?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.7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Текст запроса для конфигуратора</v8:content>
</v8:item>
</Title>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<VerticalScroll>useIfNecessary</VerticalScroll>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаЗакрыть" id="6">
<Type>CommandBarButton</Type>
<Representation>Text</Representation>
<DefaultButton>true</DefaultButton>
<CommandName>Form.StandardCommand.Close</CommandName>
<ExtendedTooltip name="ФормаЗакрытьРасширеннаяПодсказка" id="7"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<TextDocumentField name="ТекстЗапроса" id="1">
<DataPath>ТекстЗапроса</DataPath>
<TitleLocation>None</TitleLocation>
<ContextMenu name="ТекстЗапросаКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="ТекстЗапросаExtendedTooltip" id="5"/>
</TextDocumentField>
</ChildItems>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.ИнструментыРазработчикаКонсольЗапросов</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
<Attribute name="ТекстЗапроса" id="2">
<Type>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/txtedt">d5p1:TextDocument</v8:Type>
</Type>
</Attribute>
</Attributes>
</Form>

View File

@ -0,0 +1,37 @@

#Область ОбработчикиСобытий
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Текст = Параметры.ТекстЗапроса;
ТекстЗапроса.УстановитьТекст(СформироватьТекстЗапросаДляКонфигуратора(Текст));
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////
// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
&НаСервере
Функция СформироватьТекстЗапросаДляКонфигуратора(Текст)
Результат = """";
Текст = Параметры.ТекстЗапроса;
ПереводСтроки = Символы.ВК+Символы.ПС;
Для Счетчик = 1 По СтрЧислоСтрок(Текст) Цикл
ТекСтрока = СтрПолучитьСтроку(Текст, Счетчик);
Если Счетчик > 1 Тогда
ТекСтрока = СтрЗаменить(ТекСтрока,"""","""""");
Результат = Результат + ПереводСтроки + "|"+ ТекСтрока;
Иначе
ТекСтрока = СтрЗаменить(ТекСтрока,"""","""""");
Результат = Результат + ТекСтрока;
КонецЕсли;
КонецЦикла;
Результат = Результат + """";
Возврат Результат;
КонецФункции
#КонецОбласти

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.7">
<Form uuid="85e77a67-909f-4bb9-abad-8d2402383848">
<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,16 @@
<?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.7">
<Template uuid="95d843f8-db40-4ff1-b848-1bfa16e5bdfd">
<Properties>
<Name>РезультатВыполненияЗапроса</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Результат выполнения запроса</v8:content>
</v8:item>
</Synonym>
<Comment/>
<TemplateType>SpreadsheetDocument</TemplateType>
</Properties>
</Template>
</MetaDataObject>

View File

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<languageSettings>
<currentLanguage>ru</currentLanguage>
<defaultLanguage>ru</defaultLanguage>
<languageInfo>
<id>ru</id>
<code>Русский</code>
<description>Русский</description>
</languageInfo>
</languageSettings>
<columns>
<size>1</size>
</columns>
<rowsItem>
<index>0</index>
<row>
<formatIndex>1</formatIndex>
<c>
<c>
<f>2</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>[ИмяЗапроса] (Записей в результате: [КоличествоСтрок])</v8:content>
</v8:item>
</tl>
</c>
</c>
</row>
</rowsItem>
<rowsItem>
<index>1</index>
<row>
<c>
<c>
<f>3</f>
<parameter>Значение</parameter>
<detailParameter>Расшифровка</detailParameter>
</c>
</c>
</row>
</rowsItem>
<templateMode>true</templateMode>
<defaultFormatIndex>4</defaultFormatIndex>
<height>2</height>
<vgRows>2</vgRows>
<namedItem xsi:type="NamedItemCells">
<name>ЗапросИмя</name>
<area>
<type>Rows</type>
<beginRow>0</beginRow>
<endRow>0</endRow>
<beginColumn>-1</beginColumn>
<endColumn>-1</endColumn>
</area>
</namedItem>
<namedItem xsi:type="NamedItemCells">
<name>ОбластьЯчейки</name>
<area>
<type>Rectangle</type>
<beginRow>1</beginRow>
<endRow>1</endRow>
<beginColumn>0</beginColumn>
<endColumn>0</endColumn>
</area>
</namedItem>
<line width="1" gap="false">
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">Solid</v8ui:style>
</line>
<font faceName="Arial" height="10" bold="true" italic="false" underline="true" strikeout="false" kind="Absolute" scale="100"/>
<format>
<height>96</height>
</format>
<format>
<font>0</font>
<height>96</height>
<width>72</width>
<verticalAlignment>Center</verticalAlignment>
<textColor>#5C5845</textColor>
<textPlacement>Auto</textPlacement>
<fillType>Template</fillType>
<protection>true</protection>
</format>
<format>
<border>0</border>
<verticalAlignment>Top</verticalAlignment>
<fillType>Parameter</fillType>
<protection>false</protection>
<columnSizeChange>QuickChange</columnSizeChange>
</format>
<format>
<width>72</width>
</format>
</document>