1
0
mirror of https://github.com/nkrasnov322/do_code_editor.git synced 2025-01-26 17:51:11 +02:00
init
This commit is contained in:
nkrasnov322 2024-08-27 00:18:14 +03:00
parent 571b060d99
commit a8bd19a5d1
72 changed files with 23021 additions and 0 deletions

View File

@ -0,0 +1,36 @@
<?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.17">
<Catalog uuid="d689b3e0-2560-4c67-ae0b-e7825c6bcbc5">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.АвтоподстановкиДляОбъектов" category="Object">
<xr:TypeId>1112ea98-2cd6-4d28-a1ca-e9812a568a66</xr:TypeId>
<xr:ValueId>be496021-8f82-4829-b440-98ceb9f98548</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.АвтоподстановкиДляОбъектов" category="Ref">
<xr:TypeId>bbe269d0-6cc2-40ae-9ca9-e0845293fec4</xr:TypeId>
<xr:ValueId>0a407e11-cb1b-47d4-b697-99cab1d81051</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.АвтоподстановкиДляОбъектов" category="Selection">
<xr:TypeId>89fdfdb8-eed0-4e66-a533-296fd11059db</xr:TypeId>
<xr:ValueId>dfce1eec-0b29-40da-a143-8deda30c29fe</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.АвтоподстановкиДляОбъектов" category="List">
<xr:TypeId>fad85f82-1cb5-41b6-a5ae-17544a9060c6</xr:TypeId>
<xr:ValueId>0dfb2f96-4e66-482b-94d4-6193196aaae2</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.АвтоподстановкиДляОбъектов" category="Manager">
<xr:TypeId>32bb6cb9-d013-44a3-bc46-06447ee44176</xr:TypeId>
<xr:ValueId>5d59ae5d-6c8e-41c3-9365-5b995b2bb4c8</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>АвтоподстановкиДляОбъектов</Name>
<Comment/>
<ExtendedConfigurationObject>2c03cd64-3ff5-495f-ab69-b51dee54de2d</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Form>ФормаЭлемента</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="2e93da04-68ff-4c30-bd2e-894dc6641ee2">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ФормаЭлемента</Name>
<Comment/>
<ExtendedConfigurationObject>34c6bdca-68fb-4a65-84b4-e1a55aab7fe6</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,309 @@
<?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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="OnOpen" callType="After">РК_ПриОткрытииПосле</Event>
<Event name="BeforeWrite" callType="After">РК_ПередЗаписьюПосле</Event>
<Event name="OnCreateAtServer" callType="After">РК_ПриСозданииНаСервереПосле</Event>
</Events>
<ChildItems>
<LabelDecoration name="ПояснениеПредопределенного" id="26">
<TextColor>style:ИнформационнаяНадпись</TextColor>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенная автоподстановка не редактируется</v8:content>
</v8:item>
</Title>
<ContextMenu name="ПояснениеПредопределенногоКонтекстноеМеню" id="27"/>
<ExtendedTooltip name="ПояснениеПредопределенногоРасширеннаяПодсказка" id="28"/>
</LabelDecoration>
<InputField name="Наименование" id="1">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="3"/>
</InputField>
<InputField name="Родитель" id="4">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="РодительКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="6"/>
</InputField>
<RadioButtonField name="ТипОбъекта" id="29">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип</v8:content>
</v8:item>
</Title>
<RadioButtonType>Tumbler</RadioButtonType>
<ChoiceList>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Общая</v8:content>
</v8:item>
</Presentation>
<Value xsi:nil="true"/>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Для документов</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xr:DesignTimeRef">Enum.ТипыОбъектов.EnumValue.ДокументыПредприятия</Value>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Для мероприятий</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xr:DesignTimeRef">Enum.ТипыОбъектов.EnumValue.Мероприятия</Value>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Для наименования задач</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xr:DesignTimeRef">Enum.ТипыОбъектов.EnumValue.НаименованияОписанияЗадач</Value>
</xr:Value>
</xr:Item>
</ChoiceList>
<ContextMenu name="ТипОбъектаКонтекстноеМеню" id="30"/>
<ExtendedTooltip name="ТипОбъектаРасширеннаяПодсказка" id="31"/>
<Events>
<Event name="OnChange" callType="After">РК_ТипОбъектаПриИзмененииПосле</Event>
</Events>
</RadioButtonField>
<InputField name="Выражение" id="7">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>80</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>12</Height>
<MultiLine>true</MultiLine>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Объект - СправочникОбъект.ДокументПредприятия, СправочникОбъект.Мероприятия; Результат - возвращаемый результат.</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="9"/>
</InputField>
<InputField name="Комментарий" id="21">
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="22"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="23"/>
</InputField>
<UsualGroup name="ГруппаДаты" id="19">
<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>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ThroughAlign>DontUse</ThroughAlign>
<ExtendedTooltip name="ГруппаДатыРасширеннаяПодсказка" id="20"/>
<ChildItems>
<InputField name="ДатаСоздания" id="10">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаСозданияКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="ДатаСозданияРасширеннаяПодсказка" id="12"/>
</InputField>
<InputField name="ДатаИзменения" id="13">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаИзмененияКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="ДатаИзмененияРасширеннаяПодсказка" id="15"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes/>
<BaseForm version="2.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<ChildItems>
<LabelDecoration name="ПояснениеПредопределенного" id="26">
<TextColor>style:ИнформационнаяНадпись</TextColor>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенная автоподстановка не редактируется</v8:content>
</v8:item>
</Title>
<ContextMenu name="ПояснениеПредопределенногоКонтекстноеМеню" id="27"/>
<ExtendedTooltip name="ПояснениеПредопределенногоРасширеннаяПодсказка" id="28"/>
</LabelDecoration>
<InputField name="Наименование" id="1">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="3"/>
</InputField>
<InputField name="Родитель" id="4">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="РодительКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="6"/>
</InputField>
<RadioButtonField name="ТипОбъекта" id="29">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип</v8:content>
</v8:item>
</Title>
<RadioButtonType>Tumbler</RadioButtonType>
<ChoiceList>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Общая</v8:content>
</v8:item>
</Presentation>
<Value xsi:nil="true"/>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Для документов</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xr:DesignTimeRef">Enum.ТипыОбъектов.EnumValue.ДокументыПредприятия</Value>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Для мероприятий</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xr:DesignTimeRef">Enum.ТипыОбъектов.EnumValue.Мероприятия</Value>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Для наименования задач</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xr:DesignTimeRef">Enum.ТипыОбъектов.EnumValue.НаименованияОписанияЗадач</Value>
</xr:Value>
</xr:Item>
</ChoiceList>
<ContextMenu name="ТипОбъектаКонтекстноеМеню" id="30"/>
<ExtendedTooltip name="ТипОбъектаРасширеннаяПодсказка" id="31"/>
</RadioButtonField>
<InputField name="Выражение" id="7">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>80</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>12</Height>
<MultiLine>true</MultiLine>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Объект - СправочникОбъект.ДокументПредприятия, СправочникОбъект.Мероприятия; Результат - возвращаемый результат.</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="9"/>
</InputField>
<InputField name="Комментарий" id="21">
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="22"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="23"/>
</InputField>
<UsualGroup name="ГруппаДаты" id="19">
<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>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ThroughAlign>DontUse</ThroughAlign>
<ExtendedTooltip name="ГруппаДатыРасширеннаяПодсказка" id="20"/>
<ChildItems>
<InputField name="ДатаСоздания" id="10">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаСозданияКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="ДатаСозданияРасширеннаяПодсказка" id="12"/>
</InputField>
<InputField name="ДатаИзменения" id="13">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаИзмененияКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="ДатаИзмененияРасширеннаяПодсказка" id="15"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>

View File

@ -0,0 +1,989 @@

#Область ОбработчикиСобытийФормы
&НаСервере
Процедура РК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
РК_Сервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РК_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Объект[ЭтотОбъект.РК_РеквизитКода] = View().getText();
КонецПроцедуры
&НаКлиенте
Процедура РК_ПриОткрытииПосле(Отказ)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Процедура РК_ТипОбъектаПриИзмененииПосле(Элемент)
ОбновитьПользовательскиеОбъекты();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
Процедура ConsoleOnReady(Элемент)
Если ЭтотОбъект.РК_ИсходникиЗагружены Тогда
ИнициализацияРедактора();
//АктивироватьДополнительныеФункции();
ЗагрузитьКод();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ConsoleOnClick(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
РК_Клиент.ОбработатьСобытиеРедактора(ДанныеСобытия.Event.eventData1C, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИнициализацияРедактора
&НаКлиенте
Процедура ЗагрузитьКод() Экспорт
вью = View();
вью.minimap(Ложь);
вью.setText(Объект[ЭтотОбъект.РК_РеквизитКода], Неопределено, Ложь);
вью.setOriginalText(Объект[ЭтотОбъект.РК_РеквизитКода]);
КонецПроцедуры
&НаСервере
Функция ТекстОписанияПользовательскихОбъектов()
customObjects = Новый Структура;
customObjects.Вставить("Результат", Новый Структура);
ТипыОбъектов = Перечисления.ТипыОбъектов;
СписокРеквизитов = Новый Массив;
МетаданныеТипаОбъекта = Неопределено;
Если Объект.ТипОбъекта = ТипыОбъектов.ДокументыПредприятия Тогда
МетаданныеТипаОбъекта = Метаданные.Справочники.ДокументыПредприятия;
ИначеЕсли Объект.ТипОбъекта = ТипыОбъектов.Мероприятия Тогда
МетаданныеТипаОбъекта = Метаданные.Справочники.Мероприятия;
КонецЕсли;
Если МетаданныеТипаОбъекта = Неопределено Тогда
СписокРеквизитов.Добавить("Ссылка");
Иначе
ДобавитьРеквизитОбъекта(СписокРеквизитов, МетаданныеТипаОбъекта.СтандартныеРеквизиты);
ДобавитьРеквизитОбъекта(СписокРеквизитов, МетаданныеТипаОбъекта.Реквизиты);
ДобавитьРеквизитОбъекта(СписокРеквизитов, МетаданныеТипаОбъекта.ТабличныеЧасти);
КонецЕсли;
НовыйОбъект = Новый Структура("properties", Новый Структура);
customObjects.Вставить("Объект", НовыйОбъект);
Для Каждого СтрокаСвойство Из СписокРеквизитов Цикл
НовыйОбъект.properties.Вставить(СтрокаСвойство, Новый Структура);
КонецЦикла;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("customObjects", customObjects));
ТекстJSON = ЗаписьJSON.Закрыть();
Возврат ТекстJSON;
КонецФункции
Процедура ДобавитьРеквизитОбъекта(СписокРеквизитов, Реквизиты)
Для Каждого Реквизит Из Реквизиты Цикл
СписокРеквизитов.Добавить(Реквизит.Имя);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Функция ИндексныйФайл()
Возврат ЭтотОбъект.РК_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
ЭтотОбъект.РК_HTML = СкопированныйФайл;
ЭтотОбъект.РК_ИсходникиЗагружены = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(ЭтотОбъект.РК_КаталогИсходников);
Файл = Новый ЗаписьТекста(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Исключение
Сообщить("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки()); //, Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеЗаписиФайлаМакета", ЭтотОбъект);
ИмяФайла = ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресМакета);
ДанныеМакета.НачатьЗапись(Оповещение, ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходникиНаКлиенте()
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияВременныхФайлов", ЭтотОбъект);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_КаталогИсходников, "*.*");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияИндексногоФайла", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияФайлаВерсии", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
Сообщить("Не удалось создать каталог для исходников"); // , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияКаталога", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
ЭтотОбъект.РК_КаталогИсходников = ИмяКаталога + "bsl_console\";
Оповещение = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект);
НачатьСозданиеКаталога(Оповещение, ЭтотОбъект.РК_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходники()
Оповещение = Новый ОписаниеОповещения("ПриПолученииКаталогаВременныхФайлов", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
ИзвлечьИсходники();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбнулитьМетаданные() Экспорт
View().clearMetadata();
ОбновитьСписокОбщихМодулей();
ОбновитьПользовательскиеОбъекты();
//View().updateMetadata(ТекстОписанияОбъекта());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПользовательскиеОбъекты()
ТекстОписанияПользовательскихОбъектов = ТекстОписанияПользовательскихОбъектов();
Если ТекстОписанияПользовательскихОбъектов = Неопределено Тогда
Возврат;
КонецЕсли;
View().updateMetadata(ТекстОписанияПользовательскихОбъектов());
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияРедактора()
Инфо = Новый СистемнаяИнформация();
View().init(Инфо.ВерсияПриложения);
View().setOption("autoResizeEditorLayout", Истина);
View().setOption("renderQueryDelimiters", Истина);
View().setOption("generateModificationEvent", Истина);
View().hideScrollX();
View().hideScrollY();
ПодключитьОбработчикОжидания("ОбнулитьМетаданные", 1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейсРедактора
&НаКлиенте
Функция View() Экспорт
Возврат Элементы.ПолеHTML.Документ.defaultView;
КонецФункции
&НаКлиенте
Процедура УстановитьТекст(Текст, Позиция, УчитыватьОтступПервойСтроки)
View().setText(Текст, Позиция, УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстКода() Экспорт
Объект[ЭтотОбъект.РК_РеквизитКода] = ЭтотОбъект.View().getText();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекст(ДляВыполнения = Ложь)
Код = View().getText();
Возврат Код;
КонецФункции
#КонецОбласти
#Область КонструкторЗапросов
&НаКлиенте
Процедура ПриЗакрытииКонструктораЗапросов(Текст, ДопПараметры) Экспорт
Если Текст <> Неопределено Тогда
Если Не View().queryMode Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, Символы.ПС + "|");
Текст = СтрЗаменить(Текст, """", """""");
Текст = """" + Текст + """";
КонецЕсли;
УстановитьТекст(Текст, ДопПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(Текст, ДопПараметры)
Конструктор = Новый КонструкторЗапроса();
Если ЗначениеЗаполнено(Текст) Тогда
Попытка
Конструктор.Текст = Текст;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте запроса:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораЗапросов", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовыйЗапрос(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторЗапроса("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьТекстЗапроса(Текст)
ТекстЗапроса = СтрЗаменить(Текст, "|", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """""", "$");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$", """");
Возврат ТекстЗапроса;
КонецФункции
&НаКлиенте
Процедура ВызватьКонструкторЗапроса(ПараметрыЗапроса) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовыйЗапрос", ЭтотОбъект);
ТекстВопроса = "Не найден текст запроса." + Символы.ПС + "Создать новый запрос?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТекстЗапроса = ПодготовитьТекстЗапроса(ПараметрыЗапроса.text);
ОткрытьКонструкторЗапроса(ТекстЗапроса, ПараметрыЗапроса.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонструкторФорматнойСтроки
&НаКлиенте
Процедура ПриЗакрытииКонструктораФорматнойСтроки(ФорматнаяСтрока, ДопПараметры) Экспорт
Если ФорматнаяСтрока <> Неопределено Тогда
ФорматнаяСтрока = СтрЗаменить(ФорматнаяСтрока, "'", "");
ФорматнаяСтрока = """" + ФорматнаяСтрока + """";
УстановитьТекст(ФорматнаяСтрока, ДопПараметры, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ДопПараметры)
Конструктор = Новый КонструкторФорматнойСтроки();
Попытка
Конструктор.Текст = ФорматнаяСтрока;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте форматной строки:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораФорматнойСтроки", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовуюФорматнуюСтроку(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторФорматнойСтроки("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВызватьКонструкторФорматнойСтроки(ПараметрыСтроки) Экспорт
Если ПараметрыСтроки = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовуюФорматнуюСтроку", ЭтотОбъект);
ТекстВопроса = "Форматная строка не найдена." + Символы.ПС + "Создать новую форматную строку?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ФорматнаяСтрока = СтрЗаменить(СтрЗаменить(ПараметрыСтроки.text, "|", ""), """", "");
ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ПараметрыСтроки.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДинамическоеОбновлениеМетаданных
&НаКлиенте
Функция ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьОписаниеОбъектаМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьСписокОбъектовМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбработкаСобытияПолученияМетаданных(Событие) Экспорт
ПараметрыЗапроса = НРег(Событие.metadata);
ВызыватьПодсказку = (Событие.trigger = "suggestion");
ДанныеОбновлены = Ложь;
Если 0 < СтрНайти(ПараметрыЗапроса, ".") Тогда
ЧастиЗапроса = СтрРазделить(ПараметрыЗапроса, ".");
Если ЧастиЗапроса[0] = "module" Тогда
Если ЧастиЗапроса.Количество() = 2 Тогда
ДанныеОбновлены = ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса);
Иначе
ДанныеОбновлены = ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Если Событие.trigger = "suggestion" И ДанныеОбновлены Тогда
View().triggerSuggestions();
КонецЕсли;
Если Событие.trigger = "snippet" Тогда
View().updateSnippetByGUID(Событие.snippet_guid);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСобытияПолученияПеременной(Событие) Экспорт
ИмяПеременной = Событие.variableName;
ИдентификаторПеременной = Событие.variableId;
ПутьКДанным = Событие.variablePath;
ПутьКДанным = СтрЗаменить(ПутьКДанным, "undefined", "");
Описание = РК_Сервер.ПолучитьОписаниеПеременной(ИдентификаторПеременной, ИмяПеременной, ПутьКДанным, Объект.РК_АдресХраненияПеременных);
Если ЗначениеЗаполнено(Описание) Тогда
View().updateVariableDescription(ИдентификаторПеременной, Описание);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаОбщихМодулейКлиент
&НаСервере
Функция СохранитьОбщиеМодулиВХранилище(КоллекцияОбщихМодулей) Экспорт
Файл = Новый ЗаписьJSON();
Файл.УстановитьСтроку();
Попытка
ЗаписатьJSON(Файл, КоллекцияОбщихМодулей.Общие);
Исключение
ВызватьИсключение("Не удалось сохранить коллекцию метаданных:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ЗначениеКоллекции = Файл.Закрыть();
Возврат ПоместитьВоВременноеХранилище(ЗначениеКоллекции, Новый УникальныйИдентификатор());
КонецФункции
&НаСервере
Процедура ЗаполнитьИменаОбщихМодулей(КоллекцияОбщихМодулей) Экспорт
// Соответствие между именем общего неглобального модуля в нижнем регистре
// и именем модуля, как оно задано в конфигураторе для правильной загрузки
// текстов общих модулей
ОбщиеМодули = Новый Соответствие();
Для Каждого Обход Из КоллекцияОбщихМодулей.Общие Цикл
ОбщиеМодули.Вставить(НРег(Обход.Ключ), Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ИменаОбщихМодулей = Новый ФиксированноеСоответствие(ОбщиеМодули);
// Именя глобальных модулей для загрузки текстов
Модули = Новый Массив();
Для Каждого Обход Из КоллекцияОбщихМодулей.Глобальные Цикл
Модули.Добавить(Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ГлобальныйМодули = Новый ФиксированныйМассив(Модули);
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
Путь = СтрРазделить(ПолноеИмяФайла, ЭтотОбъект.РК_РазделительПути, Ложь);
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
КонецФункции
&НаКлиенте
Функция НормализоватьПуть(Путь)
Путь = СокрЛП(Путь);
Если Прав(Путь, 1) <> ЭтотОбъект.РК_РазделительПути Тогда
Путь = Путь + ЭтотОбъект.РК_РазделительПути;
КонецЕсли;
Возврат Путь;
КонецФункции
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
КаталогИсходногоКода = ЭтотОбъект.РК_КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
Возврат КаталогИсходногоКода;
КонецФункции
&НаКлиенте
Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + ЭтотОбъект.РК_РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст);
КонецЦикла;
Состояние("Общие модули загружены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
ИмяВКонфигураторе = ЭтотОбъект.РК_ИменаОбщихМодулей.Получить(НРег(ИмяМодуля));
Если ИмяВКонфигураторе = Неопределено Тогда
ИмяВКонфигураторе = ИмяМодуля;
КонецЕсли;
ФайлМодуля = СтрШаблон("CommonModules%1%2%1Ext%1Module.bsl", ЭтотОбъект.РК_РазделительПути, ИмяВКонфигураторе);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
ИмяТипа = ?(ТипМодуля = "manager", "ManagerModule", "ObjectModule");
ФайлМодуля = СтрШаблон("%1%2Ext%2%3.bsl", СтруктураВыгрузки.ИмяКаталога, ЭтотОбъект.РК_РазделительПути, ИмяТипа);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = РК_Сервер.ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
ЗагруженоФункций = View().parseMetadataModule(Модуль.Текст, АдресЗагрузки);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ЭтотОбъект.РК_ГлобальныйМодули <> Неопределено И 0 < ЭтотОбъект.РК_ГлобальныйМодули.Количество());
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЕстьГлобальныеМодули Тогда
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
Если КаталогНаДиске.Существует() Тогда
Индекс = 0;
Пока Индекс < ЭтотОбъект.РК_ГлобальныйМодули.Количество() Цикл
ИмяМодуля = ЭтотОбъект.РК_ГлобальныйМодули.Получить(Индекс);
ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Истина);
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
ИмяМодуля = ЧастиЗапроса[1];
ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 4;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
СтруктураВыгрузки = Новый Структура();
СтруктураВыгрузки.Вставить("ТипМодуля" , ЧастиЗапроса[1]);
СтруктураВыгрузки.Вставить("ТипМетаданных" , ЧастиЗапроса[2]);
СтруктураВыгрузки.Вставить("ОбъектМетаданных" , ЧастиЗапроса[3]);
РК_Сервер.ДополнитьСтруктуруВыгрузкиИсходниковМетаданных(СтруктураВыгрузки, ЭтотОбъект.РК_РазделительПути);
Если ЗначениеЗаполнено(СтруктураВыгрузки.ИмяКаталога) Тогда
ЗагруженоФункций = ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокОбщихМодулей()
КоллекцияМетаданных = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресОбщихМодулей);
Если КоллекцияМетаданных <> Неопределено Тогда
Результат = View().updateMetadata(КоллекцияМетаданных, "commonModules.items");
ЗагрузитьГлобальныеМодули();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаВЧисло(Значение, ЗначениеПоУмолчанию = 0)
СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = ТипЧисло.ПривестиЗначение(Значение);
Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, ЗначениеПоУмолчанию);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(Текст)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыводаОшибки(ДопПараметры) Экспорт
Если ДопПараметры.ЗакрыватьКонсоль Тогда
ЗакрытьКонсоль(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Текст, ЗакрыватьКонсоль)
ПараметрыОповещения = Новый Структура("ЗакрыватьКонсоль", ЗакрыватьКонсоль);
Оповещение = Новый ОписаниеОповещения("ПослеВыводаОшибки", ЭтотОбъект, ПараметрыОповещения);
ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьРазделительПути()
ЭтотОбъект.РК_РазделительПути = ПолучитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИмяТемы()
ИмяТемы = Неопределено;
Имена = Новый Соответствие();
Имена.Вставить("СветлаяТема", "bsl-white");
Имена.Вставить("ТемнаяТема", "bsl-dark");
Для Каждого Элемент Из Элементы.Тема.ПодчиненныеЭлементы Цикл
Если Элемент.Пометка Тогда
ИмяТемы = Имена[Элемент.Имя];
КонецЕсли;
КонецЦикла;
Возврат ИмяТемы;
КонецФункции
&НаКлиенте
Процедура ПереключитьТему(Тема)
View().setTheme(Тема);
КонецПроцедуры
&НаСервере
Функция ЭтотОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект().ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция ПолучитьТекстМакета(ИмяМакета, УдалятьПереносыСтрок)
Макет = ПолучитьМакет(ИмяМакета);
Текст = Макет.ПолучитьТекст();
Если УдалятьПереносыСтрок Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ВебДокументДоступен()
Если Элементы.ПолеHTML.Документ <> Неопределено И Элементы.ПолеHTML.Документ.defaultView <> Неопределено Тогда
Попытка
ПолучитьТекст();
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьПользовательскиеФункции()
JSON = ПолучитьТекстМакета("ПользовательскиеФункции", Истина);
Результат = View().updateCustomFunctions(JSON);
Если ТипЗнч(Результат) = Тип("Булево") Тогда
СообщитьПользователю("Пользовательские функции успешно загружены!");
Иначе
Ошибка = "Не удалось загрузить пользовательские функции: " + Символы.ПС + Результат.errorDescription;
ВывестиОшибку(Ошибка, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
ЭтотОбъект.РК_ИндексныйФайл = "";
Если ДопПараметры.СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКонсоль(СтандартноеЗакрытие)
Если ЗначениеЗаполнено(ЭтотОбъект.РК_ИндексныйФайл) Тогда
ПараметрыОповещения = Новый Структура("СтандартноеЗакрытие", СтандартноеЗакрытие);
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияИндексногоФайла", ЭтотОбъект, ПараметрыОповещения);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
Если СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеБыстрымиПодсказками()
Элементы.БыстрыеПодсказки.Пометка = ЭтотОбъект.БыстрыеПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюКартыКода()
Элементы.КартаКода.Пометка = ЭтотОбъект.ВидимостьКартыКода;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСтрокиСостояния()
Элементы.СтрокаСостояния.Пометка = ЭтотОбъект.ВидимостьСтрокиСостояния;
Если ЭтотОбъект.ВидимостьСтрокиСостояния Тогда
View().showStatusBar();
Иначе
View().hideStatusBar();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюПробеловТабуляций()
Элементы.ОтображатьПробелыИТабуляции.Пометка = ЭтотОбъект.ОтображатьПробелыИТабуляции;
View().renderWhitespace(ЭтотОбъект.ОтображатьПробелыИТабуляции);
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСравнения()
Элементы.СравнитьСОригиналом.Видимость = ЗначениеЗаполнено(ЭтотОбъект.ИмяСохраненногоФайла);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,36 @@
<?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.17">
<Catalog uuid="ed478949-9787-456a-89d5-dafe6e5de95a">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.АвтоподстановкиДляПроцессов" category="Object">
<xr:TypeId>9a3ec1a8-e655-4d5e-80d3-087725b43fbc</xr:TypeId>
<xr:ValueId>3be23813-8bc2-43ee-8a9b-a70344aa6e04</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.АвтоподстановкиДляПроцессов" category="Ref">
<xr:TypeId>6d3ddd76-a03b-46cf-b075-8cdff292302c</xr:TypeId>
<xr:ValueId>537009d5-a7c1-4762-b170-1494505f90e4</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.АвтоподстановкиДляПроцессов" category="Selection">
<xr:TypeId>11bb157a-d198-4461-a788-486d79561f5c</xr:TypeId>
<xr:ValueId>7cb8ea2b-55c7-44b6-840a-6e9117b312b4</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.АвтоподстановкиДляПроцессов" category="List">
<xr:TypeId>bd4e093e-9b2b-4119-aa6d-94a1277f981f</xr:TypeId>
<xr:ValueId>b3433f96-6556-4eae-a622-6abf3f9df0bc</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.АвтоподстановкиДляПроцессов" category="Manager">
<xr:TypeId>47435fdf-6e25-4a65-90e1-01896f83ef28</xr:TypeId>
<xr:ValueId>99dcf489-d8d7-4217-8466-8eb94662c8c6</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>АвтоподстановкиДляПроцессов</Name>
<Comment/>
<ExtendedConfigurationObject>5006573b-081a-4071-a1bb-388a1ea75d59</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Form>ФормаЭлемента</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="37698159-c852-420d-a23d-f85305cbc0c5">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ФормаЭлемента</Name>
<Comment/>
<ExtendedConfigurationObject>d8c32196-5472-4367-b082-f1a107011af9</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,176 @@
<?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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="OnOpen" callType="After">РК_ПриОткрытииПосле</Event>
<Event name="BeforeWrite" callType="After">РК_ПередЗаписьюПосле</Event>
<Event name="OnCreateAtServer" callType="After">РК_ПриСозданииНаСервереПосле</Event>
</Events>
<ChildItems>
<LabelDecoration name="ПояснениеПредопределенного" id="26">
<TextColor>style:ИнформационнаяНадпись</TextColor>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенная автоподстановка не редактируется</v8:content>
</v8:item>
</Title>
<ContextMenu name="ПояснениеПредопределенногоКонтекстноеМеню" id="27"/>
<ExtendedTooltip name="ПояснениеПредопределенногоРасширеннаяПодсказка" id="28"/>
</LabelDecoration>
<InputField name="Наименование" id="1">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="3"/>
</InputField>
<InputField name="Родитель" id="4">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="РодительКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="6"/>
</InputField>
<InputField name="Выражение" id="7">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>80</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>12</Height>
<MultiLine>true</MultiLine>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Объект - БизнесПроцессОбъект.&lt;Тип бизнес-процесса&gt;; Результат - возвращаемый результат.</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="9"/>
</InputField>
<InputField name="Комментарий" id="21">
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="22"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="23"/>
</InputField>
<UsualGroup name="ГруппаДаты" id="19">
<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>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ThroughAlign>DontUse</ThroughAlign>
<ExtendedTooltip name="ГруппаДатыРасширеннаяПодсказка" id="20"/>
<ChildItems>
<InputField name="ДатаСоздания" id="10">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаСозданияКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="ДатаСозданияРасширеннаяПодсказка" id="12"/>
</InputField>
<InputField name="ДатаИзменения" id="13">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаИзмененияКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="ДатаИзмененияРасширеннаяПодсказка" id="15"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes/>
<BaseForm version="2.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<ChildItems>
<LabelDecoration name="ПояснениеПредопределенного" id="26">
<TextColor>style:ИнформационнаяНадпись</TextColor>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенная автоподстановка не редактируется</v8:content>
</v8:item>
</Title>
<ContextMenu name="ПояснениеПредопределенногоКонтекстноеМеню" id="27"/>
<ExtendedTooltip name="ПояснениеПредопределенногоРасширеннаяПодсказка" id="28"/>
</LabelDecoration>
<InputField name="Наименование" id="1">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="3"/>
</InputField>
<InputField name="Родитель" id="4">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="РодительКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="6"/>
</InputField>
<InputField name="Выражение" id="7">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>80</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>12</Height>
<MultiLine>true</MultiLine>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Объект - БизнесПроцессОбъект.&lt;Тип бизнес-процесса&gt;; Результат - возвращаемый результат.</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="9"/>
</InputField>
<InputField name="Комментарий" id="21">
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="22"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="23"/>
</InputField>
<UsualGroup name="ГруппаДаты" id="19">
<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>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ThroughAlign>DontUse</ThroughAlign>
<ExtendedTooltip name="ГруппаДатыРасширеннаяПодсказка" id="20"/>
<ChildItems>
<InputField name="ДатаСоздания" id="10">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаСозданияКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="ДатаСозданияРасширеннаяПодсказка" id="12"/>
</InputField>
<InputField name="ДатаИзменения" id="13">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаИзмененияКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="ДатаИзмененияРасширеннаяПодсказка" id="15"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>

View File

@ -0,0 +1,988 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура РК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
РК_Сервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РК_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Объект[ЭтотОбъект.РК_РеквизитКода] = View().getText();
КонецПроцедуры
&НаКлиенте
Процедура РК_ПриОткрытииПосле(Отказ)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
Процедура ConsoleOnReady(Элемент)
Если ЭтотОбъект.РК_ИсходникиЗагружены Тогда
ИнициализацияРедактора();
//АктивироватьДополнительныеФункции();
ЗагрузитьКод();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ConsoleOnClick(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
РК_Клиент.ОбработатьСобытиеРедактора(ДанныеСобытия.Event.eventData1C, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИнициализацияРедактора
&НаКлиенте
Процедура ЗагрузитьКод() Экспорт
вью = View();
вью.minimap(Ложь);
вью.setText(Объект[ЭтотОбъект.РК_РеквизитКода], Неопределено, Ложь);
вью.setOriginalText(Объект[ЭтотОбъект.РК_РеквизитКода]);
КонецПроцедуры
&НаСервере
Функция ТекстОписанияПользовательскихОбъектов()
СписокРеквизитов = Новый Массив;
БП = Метаданные.БизнесПроцессы[0];
Для Каждого Реквизит Из БП.СтандартныеРеквизиты Цикл
СписокРеквизитов.Добавить(Реквизит.Имя);
КонецЦикла;
Для Каждого Реквизит Из БП.Реквизиты Цикл
СписокРеквизитов.Добавить(Реквизит.Имя);
КонецЦикла;
Для Каждого Реквизит Из БП.ТабличныеЧасти Цикл
СписокРеквизитов.Добавить(Реквизит.Имя);
КонецЦикла;
Для Каждого БП Из Метаданные.БизнесПроцессы Цикл
НовыеРеквизиты = Новый Массив;
Для Каждого Реквизит Из БП.СтандартныеРеквизиты Цикл
НовыеРеквизиты.Добавить(Реквизит.Имя);
КонецЦикла;
Для Каждого Реквизит Из БП.Реквизиты Цикл
НовыеРеквизиты.Добавить(Реквизит.Имя);
КонецЦикла;
Для Каждого Реквизит Из БП.ТабличныеЧасти Цикл
НовыеРеквизиты.Добавить(Реквизит.Имя);
КонецЦикла;
РазницаЭлементов = ОбщегоНазначенияКлиентСервер.РазностьМассивов(СписокРеквизитов, НовыеРеквизиты);
СписокРеквизитов = ОбщегоНазначенияКлиентСервер.РазностьМассивов(СписокРеквизитов, РазницаЭлементов);
КонецЦикла;
НовыйОбъект = Новый Структура("properties", Новый Структура);
customObjects = Новый Структура;
customObjects.Вставить("Объект", НовыйОбъект);
customObjects.Вставить("Результат", Новый Структура);
Для Каждого СтрокаСвойство Из СписокРеквизитов Цикл
НовыйОбъект.properties.Вставить(СтрокаСвойство, Новый Структура);
КонецЦикла;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("customObjects", customObjects));
ТекстJSON = ЗаписьJSON.Закрыть();
Возврат ТекстJSON;
КонецФункции
&НаКлиенте
Функция ИндексныйФайл()
Возврат ЭтотОбъект.РК_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
ЭтотОбъект.РК_HTML = СкопированныйФайл;
ЭтотОбъект.РК_ИсходникиЗагружены = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(ЭтотОбъект.РК_КаталогИсходников);
Файл = Новый ЗаписьТекста(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Исключение
Сообщить("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки()); //, Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеЗаписиФайлаМакета", ЭтотОбъект);
ИмяФайла = ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресМакета);
ДанныеМакета.НачатьЗапись(Оповещение, ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходникиНаКлиенте()
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияВременныхФайлов", ЭтотОбъект);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_КаталогИсходников, "*.*");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияИндексногоФайла", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияФайлаВерсии", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
Сообщить("Не удалось создать каталог для исходников"); // , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияКаталога", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
ЭтотОбъект.РК_КаталогИсходников = ИмяКаталога + "bsl_console\";
Оповещение = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект);
НачатьСозданиеКаталога(Оповещение, ЭтотОбъект.РК_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходники()
Оповещение = Новый ОписаниеОповещения("ПриПолученииКаталогаВременныхФайлов", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
ИзвлечьИсходники();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбнулитьМетаданные() Экспорт
View().clearMetadata();
ОбновитьСписокОбщихМодулей();
ОбновитьПользовательскиеОбъекты();
//View().updateMetadata(ТекстОписанияОбъекта());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПользовательскиеОбъекты()
ТекстОписанияПользовательскихОбъектов = ТекстОписанияПользовательскихОбъектов();
Если ТекстОписанияПользовательскихОбъектов = Неопределено Тогда
Возврат;
КонецЕсли;
View().updateMetadata(ТекстОписанияПользовательскихОбъектов());
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияРедактора()
Инфо = Новый СистемнаяИнформация();
View().init(Инфо.ВерсияПриложения);
View().setOption("autoResizeEditorLayout", Истина);
View().setOption("renderQueryDelimiters", Истина);
View().setOption("generateModificationEvent", Истина);
View().hideScrollX();
View().hideScrollY();
ПодключитьОбработчикОжидания("ОбнулитьМетаданные", 1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейсРедактора
&НаКлиенте
Функция View() Экспорт
Возврат Элементы.ПолеHTML.Документ.defaultView;
КонецФункции
&НаКлиенте
Процедура УстановитьТекст(Текст, Позиция, УчитыватьОтступПервойСтроки)
View().setText(Текст, Позиция, УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстКода() Экспорт
Объект[ЭтотОбъект.РК_РеквизитКода] = ЭтотОбъект.View().getText();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекст(ДляВыполнения = Ложь)
Код = View().getText();
Возврат Код;
КонецФункции
#КонецОбласти
#Область КонструкторЗапросов
&НаКлиенте
Процедура ПриЗакрытииКонструктораЗапросов(Текст, ДопПараметры) Экспорт
Если Текст <> Неопределено Тогда
Если Не View().queryMode Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, Символы.ПС + "|");
Текст = СтрЗаменить(Текст, """", """""");
Текст = """" + Текст + """";
КонецЕсли;
УстановитьТекст(Текст, ДопПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(Текст, ДопПараметры)
Конструктор = Новый КонструкторЗапроса();
Если ЗначениеЗаполнено(Текст) Тогда
Попытка
Конструктор.Текст = Текст;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте запроса:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораЗапросов", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовыйЗапрос(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторЗапроса("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьТекстЗапроса(Текст)
ТекстЗапроса = СтрЗаменить(Текст, "|", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """""", "$");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$", """");
Возврат ТекстЗапроса;
КонецФункции
&НаКлиенте
Процедура ВызватьКонструкторЗапроса(ПараметрыЗапроса) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовыйЗапрос", ЭтотОбъект);
ТекстВопроса = "Не найден текст запроса." + Символы.ПС + "Создать новый запрос?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТекстЗапроса = ПодготовитьТекстЗапроса(ПараметрыЗапроса.text);
ОткрытьКонструкторЗапроса(ТекстЗапроса, ПараметрыЗапроса.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонструкторФорматнойСтроки
&НаКлиенте
Процедура ПриЗакрытииКонструктораФорматнойСтроки(ФорматнаяСтрока, ДопПараметры) Экспорт
Если ФорматнаяСтрока <> Неопределено Тогда
ФорматнаяСтрока = СтрЗаменить(ФорматнаяСтрока, "'", "");
ФорматнаяСтрока = """" + ФорматнаяСтрока + """";
УстановитьТекст(ФорматнаяСтрока, ДопПараметры, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ДопПараметры)
Конструктор = Новый КонструкторФорматнойСтроки();
Попытка
Конструктор.Текст = ФорматнаяСтрока;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте форматной строки:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораФорматнойСтроки", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовуюФорматнуюСтроку(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторФорматнойСтроки("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВызватьКонструкторФорматнойСтроки(ПараметрыСтроки) Экспорт
Если ПараметрыСтроки = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовуюФорматнуюСтроку", ЭтотОбъект);
ТекстВопроса = "Форматная строка не найдена." + Символы.ПС + "Создать новую форматную строку?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ФорматнаяСтрока = СтрЗаменить(СтрЗаменить(ПараметрыСтроки.text, "|", ""), """", "");
ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ПараметрыСтроки.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДинамическоеОбновлениеМетаданных
&НаКлиенте
Функция ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьОписаниеОбъектаМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьСписокОбъектовМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбработкаСобытияПолученияМетаданных(Событие) Экспорт
ПараметрыЗапроса = НРег(Событие.metadata);
ВызыватьПодсказку = (Событие.trigger = "suggestion");
ДанныеОбновлены = Ложь;
Если 0 < СтрНайти(ПараметрыЗапроса, ".") Тогда
ЧастиЗапроса = СтрРазделить(ПараметрыЗапроса, ".");
Если ЧастиЗапроса[0] = "module" Тогда
Если ЧастиЗапроса.Количество() = 2 Тогда
ДанныеОбновлены = ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса);
Иначе
ДанныеОбновлены = ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Если Событие.trigger = "suggestion" И ДанныеОбновлены Тогда
View().triggerSuggestions();
КонецЕсли;
Если Событие.trigger = "snippet" Тогда
View().updateSnippetByGUID(Событие.snippet_guid);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСобытияПолученияПеременной(Событие) Экспорт
ИмяПеременной = Событие.variableName;
ИдентификаторПеременной = Событие.variableId;
ПутьКДанным = Событие.variablePath;
ПутьКДанным = СтрЗаменить(ПутьКДанным, "undefined", "");
Описание = РК_Сервер.ПолучитьОписаниеПеременной(ИдентификаторПеременной, ИмяПеременной, ПутьКДанным, Объект.РК_АдресХраненияПеременных);
Если ЗначениеЗаполнено(Описание) Тогда
View().updateVariableDescription(ИдентификаторПеременной, Описание);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаОбщихМодулейКлиент
&НаСервере
Функция СохранитьОбщиеМодулиВХранилище(КоллекцияОбщихМодулей) Экспорт
Файл = Новый ЗаписьJSON();
Файл.УстановитьСтроку();
Попытка
ЗаписатьJSON(Файл, КоллекцияОбщихМодулей.Общие);
Исключение
ВызватьИсключение("Не удалось сохранить коллекцию метаданных:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ЗначениеКоллекции = Файл.Закрыть();
Возврат ПоместитьВоВременноеХранилище(ЗначениеКоллекции, Новый УникальныйИдентификатор());
КонецФункции
&НаСервере
Процедура ЗаполнитьИменаОбщихМодулей(КоллекцияОбщихМодулей) Экспорт
// Соответствие между именем общего неглобального модуля в нижнем регистре
// и именем модуля, как оно задано в конфигураторе для правильной загрузки
// текстов общих модулей
ОбщиеМодули = Новый Соответствие();
Для Каждого Обход Из КоллекцияОбщихМодулей.Общие Цикл
ОбщиеМодули.Вставить(НРег(Обход.Ключ), Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ИменаОбщихМодулей = Новый ФиксированноеСоответствие(ОбщиеМодули);
// Именя глобальных модулей для загрузки текстов
Модули = Новый Массив();
Для Каждого Обход Из КоллекцияОбщихМодулей.Глобальные Цикл
Модули.Добавить(Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ГлобальныйМодули = Новый ФиксированныйМассив(Модули);
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
Путь = СтрРазделить(ПолноеИмяФайла, ЭтотОбъект.РК_РазделительПути, Ложь);
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
КонецФункции
&НаКлиенте
Функция НормализоватьПуть(Путь)
Путь = СокрЛП(Путь);
Если Прав(Путь, 1) <> ЭтотОбъект.РК_РазделительПути Тогда
Путь = Путь + ЭтотОбъект.РК_РазделительПути;
КонецЕсли;
Возврат Путь;
КонецФункции
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
КаталогИсходногоКода = ЭтотОбъект.РК_КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
Возврат КаталогИсходногоКода;
КонецФункции
&НаКлиенте
Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + ЭтотОбъект.РК_РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст);
КонецЦикла;
Состояние("Общие модули загружены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
ИмяВКонфигураторе = ЭтотОбъект.РК_ИменаОбщихМодулей.Получить(НРег(ИмяМодуля));
Если ИмяВКонфигураторе = Неопределено Тогда
ИмяВКонфигураторе = ИмяМодуля;
КонецЕсли;
ФайлМодуля = СтрШаблон("CommonModules%1%2%1Ext%1Module.bsl", ЭтотОбъект.РК_РазделительПути, ИмяВКонфигураторе);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
ИмяТипа = ?(ТипМодуля = "manager", "ManagerModule", "ObjectModule");
ФайлМодуля = СтрШаблон("%1%2Ext%2%3.bsl", СтруктураВыгрузки.ИмяКаталога, ЭтотОбъект.РК_РазделительПути, ИмяТипа);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = РК_Сервер.ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
ЗагруженоФункций = View().parseMetadataModule(Модуль.Текст, АдресЗагрузки);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ЭтотОбъект.РК_ГлобальныйМодули <> Неопределено И 0 < ЭтотОбъект.РК_ГлобальныйМодули.Количество());
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЕстьГлобальныеМодули Тогда
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
Если КаталогНаДиске.Существует() Тогда
Индекс = 0;
Пока Индекс < ЭтотОбъект.РК_ГлобальныйМодули.Количество() Цикл
ИмяМодуля = ЭтотОбъект.РК_ГлобальныйМодули.Получить(Индекс);
ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Истина);
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
ИмяМодуля = ЧастиЗапроса[1];
ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 4;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
СтруктураВыгрузки = Новый Структура();
СтруктураВыгрузки.Вставить("ТипМодуля" , ЧастиЗапроса[1]);
СтруктураВыгрузки.Вставить("ТипМетаданных" , ЧастиЗапроса[2]);
СтруктураВыгрузки.Вставить("ОбъектМетаданных" , ЧастиЗапроса[3]);
РК_Сервер.ДополнитьСтруктуруВыгрузкиИсходниковМетаданных(СтруктураВыгрузки, ЭтотОбъект.РК_РазделительПути);
Если ЗначениеЗаполнено(СтруктураВыгрузки.ИмяКаталога) Тогда
ЗагруженоФункций = ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокОбщихМодулей()
КоллекцияМетаданных = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресОбщихМодулей);
Если КоллекцияМетаданных <> Неопределено Тогда
Результат = View().updateMetadata(КоллекцияМетаданных, "commonModules.items");
ЗагрузитьГлобальныеМодули();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаВЧисло(Значение, ЗначениеПоУмолчанию = 0)
СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = ТипЧисло.ПривестиЗначение(Значение);
Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, ЗначениеПоУмолчанию);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(Текст)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыводаОшибки(ДопПараметры) Экспорт
Если ДопПараметры.ЗакрыватьКонсоль Тогда
ЗакрытьКонсоль(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Текст, ЗакрыватьКонсоль)
ПараметрыОповещения = Новый Структура("ЗакрыватьКонсоль", ЗакрыватьКонсоль);
Оповещение = Новый ОписаниеОповещения("ПослеВыводаОшибки", ЭтотОбъект, ПараметрыОповещения);
ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьРазделительПути()
ЭтотОбъект.РК_РазделительПути = ПолучитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИмяТемы()
ИмяТемы = Неопределено;
Имена = Новый Соответствие();
Имена.Вставить("СветлаяТема", "bsl-white");
Имена.Вставить("ТемнаяТема", "bsl-dark");
Для Каждого Элемент Из Элементы.Тема.ПодчиненныеЭлементы Цикл
Если Элемент.Пометка Тогда
ИмяТемы = Имена[Элемент.Имя];
КонецЕсли;
КонецЦикла;
Возврат ИмяТемы;
КонецФункции
&НаКлиенте
Процедура ПереключитьТему(Тема)
View().setTheme(Тема);
КонецПроцедуры
&НаСервере
Функция ЭтотОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект().ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция ПолучитьТекстМакета(ИмяМакета, УдалятьПереносыСтрок)
Макет = ПолучитьМакет(ИмяМакета);
Текст = Макет.ПолучитьТекст();
Если УдалятьПереносыСтрок Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ВебДокументДоступен()
Если Элементы.ПолеHTML.Документ <> Неопределено И Элементы.ПолеHTML.Документ.defaultView <> Неопределено Тогда
Попытка
ПолучитьТекст();
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьПользовательскиеФункции()
JSON = ПолучитьТекстМакета("ПользовательскиеФункции", Истина);
Результат = View().updateCustomFunctions(JSON);
Если ТипЗнч(Результат) = Тип("Булево") Тогда
СообщитьПользователю("Пользовательские функции успешно загружены!");
Иначе
Ошибка = "Не удалось загрузить пользовательские функции: " + Символы.ПС + Результат.errorDescription;
ВывестиОшибку(Ошибка, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
ЭтотОбъект.РК_ИндексныйФайл = "";
Если ДопПараметры.СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКонсоль(СтандартноеЗакрытие)
Если ЗначениеЗаполнено(ЭтотОбъект.РК_ИндексныйФайл) Тогда
ПараметрыОповещения = Новый Структура("СтандартноеЗакрытие", СтандартноеЗакрытие);
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияИндексногоФайла", ЭтотОбъект, ПараметрыОповещения);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
Если СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеБыстрымиПодсказками()
Элементы.БыстрыеПодсказки.Пометка = ЭтотОбъект.БыстрыеПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюКартыКода()
Элементы.КартаКода.Пометка = ЭтотОбъект.ВидимостьКартыКода;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСтрокиСостояния()
Элементы.СтрокаСостояния.Пометка = ЭтотОбъект.ВидимостьСтрокиСостояния;
Если ЭтотОбъект.ВидимостьСтрокиСостояния Тогда
View().showStatusBar();
Иначе
View().hideStatusBar();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюПробеловТабуляций()
Элементы.ОтображатьПробелыИТабуляции.Пометка = ЭтотОбъект.ОтображатьПробелыИТабуляции;
View().renderWhitespace(ЭтотОбъект.ОтображатьПробелыИТабуляции);
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСравнения()
Элементы.СравнитьСОригиналом.Видимость = ЗначениеЗаполнено(ЭтотОбъект.ИмяСохраненногоФайла);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,52 @@
<?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.17">
<Catalog uuid="a4bed30d-8af1-4aaa-bdbb-d0eee14e2861">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.Алгоритмы" category="Object">
<xr:TypeId>83b22b46-264e-479c-85bb-4c57ae8ee20c</xr:TypeId>
<xr:ValueId>295004f4-6d59-47af-b10b-bdac0bd37b1f</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.Алгоритмы" category="Ref">
<xr:TypeId>84b27cf8-94ce-4333-bfa6-f6e08e2853f4</xr:TypeId>
<xr:ValueId>d945e62d-2429-4654-98ff-10f8844548f5</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.Алгоритмы" category="Selection">
<xr:TypeId>51dd5a6a-0dda-429c-ae7c-794e12eb2254</xr:TypeId>
<xr:ValueId>a6321381-b56a-40cf-8ee8-29eca6817c1f</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.Алгоритмы" category="List">
<xr:TypeId>f7331162-a0d7-4ae8-b6d1-f84c4ac446a2</xr:TypeId>
<xr:ValueId>fe2a603d-a009-40a9-9d6b-dc578ee1a695</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.Алгоритмы" category="Manager">
<xr:TypeId>4cb71a27-8a7e-4cbc-bc0b-9c3d7e018365</xr:TypeId>
<xr:ValueId>8f9e5443-3ea8-4c2f-bfa1-23c5652d82c1</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>Алгоритмы</Name>
<Comment/>
<ExtendedConfigurationObject>111d829a-c6ff-4140-9893-7ae64d52c62b</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Attribute uuid="e5d0cd79-2eac-4c47-86ed-379cea98254e">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>Выражение</Name>
<Comment/>
<ExtendedConfigurationObject>7eab032c-ed5d-4bfc-be34-388050f9c5a8</ExtendedConfigurationObject>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Properties>
</Attribute>
<Form>ФормаЭлемента</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="337554c0-1d9b-439a-9d7a-7d88fb7534f8">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ФормаЭлемента</Name>
<Comment/>
<ExtendedConfigurationObject>3fd56071-2745-40df-be91-604e645a5b40</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,314 @@
<?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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="OnOpen" callType="After">РК_ПриОткрытииПосле</Event>
<Event name="BeforeWrite" callType="Before">РК_ПередЗаписьюПеред</Event>
<Event name="BeforeWrite" callType="After">РК_ПередЗаписьюПосле</Event>
<Event name="OnCreateAtServer" callType="After">РК_ПриСозданииНаСервереПосле</Event>
</Events>
<ChildItems>
<LabelDecoration name="ПояснениеПредопределенного" id="24">
<TextColor>style:ИнформационнаяНадпись</TextColor>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенный алгоритм не редактируется</v8:content>
</v8:item>
</Title>
<ContextMenu name="ПояснениеПредопределенногоКонтекстноеМеню" id="25"/>
<ExtendedTooltip name="ПояснениеПредопределенногоРасширеннаяПодсказка" id="26"/>
</LabelDecoration>
<UsualGroup name="ГруппаПометкаУдаления" id="27">
<Visible>false</Visible>
<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>
<HorizontalStretch>true</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<BackColor>style:ОбъектПомеченНаУдаление</BackColor>
<ExtendedTooltip name="ГруппаПометкаУдаленияРасширеннаяПодсказка" id="28"/>
<ChildItems>
<PictureDecoration name="ПометкаУдаленияКартинка" id="29">
<Width>5</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>1</Height>
<HorizontalStretch>false</HorizontalStretch>
<SkipOnInput>false</SkipOnInput>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пометка удаления картинка</v8:content>
</v8:item>
</Title>
<FileDragMode>AsFile</FileDragMode>
<ContextMenu name="ПометкаУдаленияКартинкаКонтекстноеМеню" id="30"/>
<ExtendedTooltip name="ПометкаУдаленияКартинкаРасширеннаяПодсказка" id="31"/>
</PictureDecoration>
<LabelDecoration name="ПометкаУдаленияНадпись" id="32">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Алгоритм помечен на удаление</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<ContextMenu name="ПометкаУдаленияНадписьКонтекстноеМеню" id="33"/>
<ExtendedTooltip name="ПометкаУдаленияНадписьРасширеннаяПодсказка" id="34"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<InputField name="Наименование" id="1">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="3"/>
</InputField>
<InputField name="Родитель" id="21">
<ContextMenu name="РодительКонтекстноеМеню" id="22"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="23"/>
</InputField>
<InputField name="КлючДляВызова" id="13">
<SkipOnInput>true</SkipOnInput>
<ToolTipRepresentation>Button</ToolTipRepresentation>
<WarningOnEditRepresentation>Show</WarningOnEditRepresentation>
<WarningOnEdit>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Изменение ключа может сделать неработоспособными скрипты, вызывающие этот алгоритм</v8:content>
</v8:item>
</WarningOnEdit>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="КлючДляВызоваКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="КлючДляВызоваРасширеннаяПодсказка" id="15">
<Title formatted="true">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>По этому ключу можно будет вызвать алгоритм в скриптах:
&lt;i&gt;Справочники.Алгоритмы.Вызвать(&lt;/&gt;&lt;b&gt;&lt;i&gt;КлючДляВызова&lt;/&gt;&lt;/&gt;&lt;b&gt;&lt;/&gt;&lt;i&gt;, Параметры)&lt;/&gt;</v8:content>
</v8:item>
</Title>
</ExtendedTooltip>
</InputField>
<TextDocumentField name="Выражение" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выражение на встроенном языке</v8:content>
</v8:item>
</Title>
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>80</Width>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="6"/>
</TextDocumentField>
<InputField name="Комментарий" id="18">
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="19"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="20"/>
</InputField>
<UsualGroup name="ГруппаДаты" id="16">
<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>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ThroughAlign>DontUse</ThroughAlign>
<ExtendedTooltip name="ГруппаДатыРасширеннаяПодсказка" id="17"/>
<ChildItems>
<InputField name="ДатаСоздания" id="7">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаСозданияКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="ДатаСозданияРасширеннаяПодсказка" id="9"/>
</InputField>
<InputField name="ДатаИзменения" id="10">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаИзмененияКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="ДатаИзмененияРасширеннаяПодсказка" id="12"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes/>
<BaseForm version="2.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<ChildItems>
<LabelDecoration name="ПояснениеПредопределенного" id="24">
<TextColor>style:ИнформационнаяНадпись</TextColor>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенный алгоритм не редактируется</v8:content>
</v8:item>
</Title>
<ContextMenu name="ПояснениеПредопределенногоКонтекстноеМеню" id="25"/>
<ExtendedTooltip name="ПояснениеПредопределенногоРасширеннаяПодсказка" id="26"/>
</LabelDecoration>
<UsualGroup name="ГруппаПометкаУдаления" id="27">
<Visible>false</Visible>
<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>
<HorizontalStretch>true</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<BackColor>style:ОбъектПомеченНаУдаление</BackColor>
<ExtendedTooltip name="ГруппаПометкаУдаленияРасширеннаяПодсказка" id="28"/>
<ChildItems>
<PictureDecoration name="ПометкаУдаленияКартинка" id="29">
<Width>5</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>1</Height>
<HorizontalStretch>false</HorizontalStretch>
<SkipOnInput>false</SkipOnInput>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пометка удаления картинка</v8:content>
</v8:item>
</Title>
<FileDragMode>AsFile</FileDragMode>
<ContextMenu name="ПометкаУдаленияКартинкаКонтекстноеМеню" id="30"/>
<ExtendedTooltip name="ПометкаУдаленияКартинкаРасширеннаяПодсказка" id="31"/>
</PictureDecoration>
<LabelDecoration name="ПометкаУдаленияНадпись" id="32">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Алгоритм помечен на удаление</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<ContextMenu name="ПометкаУдаленияНадписьКонтекстноеМеню" id="33"/>
<ExtendedTooltip name="ПометкаУдаленияНадписьРасширеннаяПодсказка" id="34"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<InputField name="Наименование" id="1">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="3"/>
</InputField>
<InputField name="Родитель" id="21">
<ContextMenu name="РодительКонтекстноеМеню" id="22"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="23"/>
</InputField>
<InputField name="КлючДляВызова" id="13">
<SkipOnInput>true</SkipOnInput>
<ToolTipRepresentation>Button</ToolTipRepresentation>
<WarningOnEditRepresentation>Show</WarningOnEditRepresentation>
<WarningOnEdit>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Изменение ключа может сделать неработоспособными скрипты, вызывающие этот алгоритм</v8:content>
</v8:item>
</WarningOnEdit>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="КлючДляВызоваКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="КлючДляВызоваРасширеннаяПодсказка" id="15">
<Title formatted="true">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>По этому ключу можно будет вызвать алгоритм в скриптах:
&lt;i&gt;Справочники.Алгоритмы.Вызвать(&lt;/&gt;&lt;b&gt;&lt;i&gt;КлючДляВызова&lt;/&gt;&lt;/&gt;&lt;b&gt;&lt;/&gt;&lt;i&gt;, Параметры)&lt;/&gt;</v8:content>
</v8:item>
</Title>
</ExtendedTooltip>
</InputField>
<TextDocumentField name="Выражение" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выражение на встроенном языке</v8:content>
</v8:item>
</Title>
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>80</Width>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="6"/>
</TextDocumentField>
<InputField name="Комментарий" id="18">
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="19"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="20"/>
</InputField>
<UsualGroup name="ГруппаДаты" id="16">
<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>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ThroughAlign>DontUse</ThroughAlign>
<ExtendedTooltip name="ГруппаДатыРасширеннаяПодсказка" id="17"/>
<ChildItems>
<InputField name="ДатаСоздания" id="7">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаСозданияКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="ДатаСозданияРасширеннаяПодсказка" id="9"/>
</InputField>
<InputField name="ДатаИзменения" id="10">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаИзмененияКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="ДатаИзмененияРасширеннаяПодсказка" id="12"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>

View File

@ -0,0 +1,955 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура РК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
РК_Сервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РК_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Объект[ЭтотОбъект.РК_РеквизитКода] = View().getText();
КонецПроцедуры
&НаКлиенте
Процедура РК_ПриОткрытииПосле(Отказ)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
Процедура ConsoleOnReady(Элемент)
Если ЭтотОбъект.РК_ИсходникиЗагружены Тогда
ИнициализацияРедактора();
//АктивироватьДополнительныеФункции();
ЗагрузитьКод();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ConsoleOnClick(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
РК_Клиент.ОбработатьСобытиеРедактора(ДанныеСобытия.Event.eventData1C, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИнициализацияРедактора
&НаКлиенте
Процедура ЗагрузитьКод() Экспорт
вью = View();
вью.minimap(Ложь);
вью.setText(Объект[ЭтотОбъект.РК_РеквизитКода], Неопределено, Ложь);
вью.setOriginalText(Объект[ЭтотОбъект.РК_РеквизитКода]);
КонецПроцедуры
&НаСервере
Функция ТекстОписанияПользовательскихОбъектов()
customObjects = Новый Структура;
customObjects.Вставить("Параметры", Новый Структура);
customObjects.Вставить("Результат", Новый Структура);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("customObjects", customObjects));
ТекстJSON = ЗаписьJSON.Закрыть();
Возврат ТекстJSON;
КонецФункции
&НаКлиенте
Функция ИндексныйФайл()
Возврат ЭтотОбъект.РК_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
ЭтотОбъект.РК_HTML = СкопированныйФайл;
ЭтотОбъект.РК_ИсходникиЗагружены = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(ЭтотОбъект.РК_КаталогИсходников);
Файл = Новый ЗаписьТекста(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Исключение
Сообщить("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки()); //, Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеЗаписиФайлаМакета", ЭтотОбъект);
ИмяФайла = ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресМакета);
ДанныеМакета.НачатьЗапись(Оповещение, ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходникиНаКлиенте()
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияВременныхФайлов", ЭтотОбъект);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_КаталогИсходников, "*.*");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияИндексногоФайла", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияФайлаВерсии", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
Сообщить("Не удалось создать каталог для исходников"); // , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияКаталога", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
ЭтотОбъект.РК_КаталогИсходников = ИмяКаталога + "bsl_console\";
Оповещение = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект);
НачатьСозданиеКаталога(Оповещение, ЭтотОбъект.РК_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходники()
Оповещение = Новый ОписаниеОповещения("ПриПолученииКаталогаВременныхФайлов", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
ИзвлечьИсходники();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбнулитьМетаданные() Экспорт
View().clearMetadata();
ОбновитьСписокОбщихМодулей();
ОбновитьПользовательскиеОбъекты();
//View().updateMetadata(ТекстОписанияОбъекта());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПользовательскиеОбъекты()
ТекстОписанияПользовательскихОбъектов = ТекстОписанияПользовательскихОбъектов();
Если ТекстОписанияПользовательскихОбъектов = Неопределено Тогда
Возврат;
КонецЕсли;
View().updateMetadata(ТекстОписанияПользовательскихОбъектов());
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияРедактора()
Инфо = Новый СистемнаяИнформация();
View().init(Инфо.ВерсияПриложения);
View().setOption("autoResizeEditorLayout", Истина);
View().setOption("renderQueryDelimiters", Истина);
View().setOption("generateModificationEvent", Истина);
View().hideScrollX();
View().hideScrollY();
ПодключитьОбработчикОжидания("ОбнулитьМетаданные", 1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейсРедактора
&НаКлиенте
Функция View() Экспорт
Возврат Элементы.ПолеHTML.Документ.defaultView;
КонецФункции
&НаКлиенте
Процедура УстановитьТекст(Текст, Позиция, УчитыватьОтступПервойСтроки)
View().setText(Текст, Позиция, УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстКода() Экспорт
Объект[ЭтотОбъект.РК_РеквизитКода] = ЭтотОбъект.View().getText();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекст(ДляВыполнения = Ложь)
Код = View().getText();
Возврат Код;
КонецФункции
#КонецОбласти
#Область КонструкторЗапросов
&НаКлиенте
Процедура ПриЗакрытииКонструктораЗапросов(Текст, ДопПараметры) Экспорт
Если Текст <> Неопределено Тогда
Если Не View().queryMode Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, Символы.ПС + "|");
Текст = СтрЗаменить(Текст, """", """""");
Текст = """" + Текст + """";
КонецЕсли;
УстановитьТекст(Текст, ДопПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(Текст, ДопПараметры)
Конструктор = Новый КонструкторЗапроса();
Если ЗначениеЗаполнено(Текст) Тогда
Попытка
Конструктор.Текст = Текст;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте запроса:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораЗапросов", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовыйЗапрос(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторЗапроса("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьТекстЗапроса(Текст)
ТекстЗапроса = СтрЗаменить(Текст, "|", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """""", "$");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$", """");
Возврат ТекстЗапроса;
КонецФункции
&НаКлиенте
Процедура ВызватьКонструкторЗапроса(ПараметрыЗапроса) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовыйЗапрос", ЭтотОбъект);
ТекстВопроса = "Не найден текст запроса." + Символы.ПС + "Создать новый запрос?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТекстЗапроса = ПодготовитьТекстЗапроса(ПараметрыЗапроса.text);
ОткрытьКонструкторЗапроса(ТекстЗапроса, ПараметрыЗапроса.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонструкторФорматнойСтроки
&НаКлиенте
Процедура ПриЗакрытииКонструктораФорматнойСтроки(ФорматнаяСтрока, ДопПараметры) Экспорт
Если ФорматнаяСтрока <> Неопределено Тогда
ФорматнаяСтрока = СтрЗаменить(ФорматнаяСтрока, "'", "");
ФорматнаяСтрока = """" + ФорматнаяСтрока + """";
УстановитьТекст(ФорматнаяСтрока, ДопПараметры, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ДопПараметры)
Конструктор = Новый КонструкторФорматнойСтроки();
Попытка
Конструктор.Текст = ФорматнаяСтрока;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте форматной строки:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораФорматнойСтроки", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовуюФорматнуюСтроку(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторФорматнойСтроки("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВызватьКонструкторФорматнойСтроки(ПараметрыСтроки) Экспорт
Если ПараметрыСтроки = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовуюФорматнуюСтроку", ЭтотОбъект);
ТекстВопроса = "Форматная строка не найдена." + Символы.ПС + "Создать новую форматную строку?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ФорматнаяСтрока = СтрЗаменить(СтрЗаменить(ПараметрыСтроки.text, "|", ""), """", "");
ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ПараметрыСтроки.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДинамическоеОбновлениеМетаданных
&НаКлиенте
Функция ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьОписаниеОбъектаМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьСписокОбъектовМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбработкаСобытияПолученияМетаданных(Событие) Экспорт
ПараметрыЗапроса = НРег(Событие.metadata);
ВызыватьПодсказку = (Событие.trigger = "suggestion");
ДанныеОбновлены = Ложь;
Если 0 < СтрНайти(ПараметрыЗапроса, ".") Тогда
ЧастиЗапроса = СтрРазделить(ПараметрыЗапроса, ".");
Если ЧастиЗапроса[0] = "module" Тогда
Если ЧастиЗапроса.Количество() = 2 Тогда
ДанныеОбновлены = ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса);
Иначе
ДанныеОбновлены = ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Если Событие.trigger = "suggestion" И ДанныеОбновлены Тогда
View().triggerSuggestions();
КонецЕсли;
Если Событие.trigger = "snippet" Тогда
View().updateSnippetByGUID(Событие.snippet_guid);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСобытияПолученияПеременной(Событие) Экспорт
ИмяПеременной = Событие.variableName;
ИдентификаторПеременной = Событие.variableId;
ПутьКДанным = Событие.variablePath;
ПутьКДанным = СтрЗаменить(ПутьКДанным, "undefined", "");
Описание = РК_Сервер.ПолучитьОписаниеПеременной(ИдентификаторПеременной, ИмяПеременной, ПутьКДанным, Объект.РК_АдресХраненияПеременных);
Если ЗначениеЗаполнено(Описание) Тогда
View().updateVariableDescription(ИдентификаторПеременной, Описание);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаОбщихМодулейКлиент
&НаСервере
Функция СохранитьОбщиеМодулиВХранилище(КоллекцияОбщихМодулей) Экспорт
Файл = Новый ЗаписьJSON();
Файл.УстановитьСтроку();
Попытка
ЗаписатьJSON(Файл, КоллекцияОбщихМодулей.Общие);
Исключение
ВызватьИсключение("Не удалось сохранить коллекцию метаданных:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ЗначениеКоллекции = Файл.Закрыть();
Возврат ПоместитьВоВременноеХранилище(ЗначениеКоллекции, Новый УникальныйИдентификатор());
КонецФункции
&НаСервере
Процедура ЗаполнитьИменаОбщихМодулей(КоллекцияОбщихМодулей) Экспорт
// Соответствие между именем общего неглобального модуля в нижнем регистре
// и именем модуля, как оно задано в конфигураторе для правильной загрузки
// текстов общих модулей
ОбщиеМодули = Новый Соответствие();
Для Каждого Обход Из КоллекцияОбщихМодулей.Общие Цикл
ОбщиеМодули.Вставить(НРег(Обход.Ключ), Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ИменаОбщихМодулей = Новый ФиксированноеСоответствие(ОбщиеМодули);
// Именя глобальных модулей для загрузки текстов
Модули = Новый Массив();
Для Каждого Обход Из КоллекцияОбщихМодулей.Глобальные Цикл
Модули.Добавить(Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ГлобальныйМодули = Новый ФиксированныйМассив(Модули);
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
Путь = СтрРазделить(ПолноеИмяФайла, ЭтотОбъект.РК_РазделительПути, Ложь);
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
КонецФункции
&НаКлиенте
Функция НормализоватьПуть(Путь)
Путь = СокрЛП(Путь);
Если Прав(Путь, 1) <> ЭтотОбъект.РК_РазделительПути Тогда
Путь = Путь + ЭтотОбъект.РК_РазделительПути;
КонецЕсли;
Возврат Путь;
КонецФункции
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
КаталогИсходногоКода = ЭтотОбъект.РК_КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
Возврат КаталогИсходногоКода;
КонецФункции
&НаКлиенте
Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + ЭтотОбъект.РК_РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст);
КонецЦикла;
Состояние("Общие модули загружены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
ИмяВКонфигураторе = ЭтотОбъект.РК_ИменаОбщихМодулей.Получить(НРег(ИмяМодуля));
Если ИмяВКонфигураторе = Неопределено Тогда
ИмяВКонфигураторе = ИмяМодуля;
КонецЕсли;
ФайлМодуля = СтрШаблон("CommonModules%1%2%1Ext%1Module.bsl", ЭтотОбъект.РК_РазделительПути, ИмяВКонфигураторе);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
ИмяТипа = ?(ТипМодуля = "manager", "ManagerModule", "ObjectModule");
ФайлМодуля = СтрШаблон("%1%2Ext%2%3.bsl", СтруктураВыгрузки.ИмяКаталога, ЭтотОбъект.РК_РазделительПути, ИмяТипа);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = РК_Сервер.ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
ЗагруженоФункций = View().parseMetadataModule(Модуль.Текст, АдресЗагрузки);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ЭтотОбъект.РК_ГлобальныйМодули <> Неопределено И 0 < ЭтотОбъект.РК_ГлобальныйМодули.Количество());
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЕстьГлобальныеМодули Тогда
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
Если КаталогНаДиске.Существует() Тогда
Индекс = 0;
Пока Индекс < ЭтотОбъект.РК_ГлобальныйМодули.Количество() Цикл
ИмяМодуля = ЭтотОбъект.РК_ГлобальныйМодули.Получить(Индекс);
ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Истина);
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
ИмяМодуля = ЧастиЗапроса[1];
ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 4;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
СтруктураВыгрузки = Новый Структура();
СтруктураВыгрузки.Вставить("ТипМодуля" , ЧастиЗапроса[1]);
СтруктураВыгрузки.Вставить("ТипМетаданных" , ЧастиЗапроса[2]);
СтруктураВыгрузки.Вставить("ОбъектМетаданных" , ЧастиЗапроса[3]);
РК_Сервер.ДополнитьСтруктуруВыгрузкиИсходниковМетаданных(СтруктураВыгрузки, ЭтотОбъект.РК_РазделительПути);
Если ЗначениеЗаполнено(СтруктураВыгрузки.ИмяКаталога) Тогда
ЗагруженоФункций = ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокОбщихМодулей()
КоллекцияМетаданных = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресОбщихМодулей);
Если КоллекцияМетаданных <> Неопределено Тогда
Результат = View().updateMetadata(КоллекцияМетаданных, "commonModules.items");
ЗагрузитьГлобальныеМодули();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаВЧисло(Значение, ЗначениеПоУмолчанию = 0)
СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = ТипЧисло.ПривестиЗначение(Значение);
Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, ЗначениеПоУмолчанию);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(Текст)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыводаОшибки(ДопПараметры) Экспорт
Если ДопПараметры.ЗакрыватьКонсоль Тогда
ЗакрытьКонсоль(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Текст, ЗакрыватьКонсоль)
ПараметрыОповещения = Новый Структура("ЗакрыватьКонсоль", ЗакрыватьКонсоль);
Оповещение = Новый ОписаниеОповещения("ПослеВыводаОшибки", ЭтотОбъект, ПараметрыОповещения);
ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьРазделительПути()
ЭтотОбъект.РК_РазделительПути = ПолучитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИмяТемы()
ИмяТемы = Неопределено;
Имена = Новый Соответствие();
Имена.Вставить("СветлаяТема", "bsl-white");
Имена.Вставить("ТемнаяТема", "bsl-dark");
Для Каждого Элемент Из Элементы.Тема.ПодчиненныеЭлементы Цикл
Если Элемент.Пометка Тогда
ИмяТемы = Имена[Элемент.Имя];
КонецЕсли;
КонецЦикла;
Возврат ИмяТемы;
КонецФункции
&НаКлиенте
Процедура ПереключитьТему(Тема)
View().setTheme(Тема);
КонецПроцедуры
&НаСервере
Функция ЭтотОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект().ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция ПолучитьТекстМакета(ИмяМакета, УдалятьПереносыСтрок)
Макет = ПолучитьМакет(ИмяМакета);
Текст = Макет.ПолучитьТекст();
Если УдалятьПереносыСтрок Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ВебДокументДоступен()
Если Элементы.ПолеHTML.Документ <> Неопределено И Элементы.ПолеHTML.Документ.defaultView <> Неопределено Тогда
Попытка
ПолучитьТекст();
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьПользовательскиеФункции()
JSON = ПолучитьТекстМакета("ПользовательскиеФункции", Истина);
Результат = View().updateCustomFunctions(JSON);
Если ТипЗнч(Результат) = Тип("Булево") Тогда
СообщитьПользователю("Пользовательские функции успешно загружены!");
Иначе
Ошибка = "Не удалось загрузить пользовательские функции: " + Символы.ПС + Результат.errorDescription;
ВывестиОшибку(Ошибка, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
ЭтотОбъект.РК_ИндексныйФайл = "";
Если ДопПараметры.СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКонсоль(СтандартноеЗакрытие)
Если ЗначениеЗаполнено(ЭтотОбъект.РК_ИндексныйФайл) Тогда
ПараметрыОповещения = Новый Структура("СтандартноеЗакрытие", СтандартноеЗакрытие);
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияИндексногоФайла", ЭтотОбъект, ПараметрыОповещения);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
Если СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеБыстрымиПодсказками()
Элементы.БыстрыеПодсказки.Пометка = ЭтотОбъект.БыстрыеПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюКартыКода()
Элементы.КартаКода.Пометка = ЭтотОбъект.ВидимостьКартыКода;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСтрокиСостояния()
Элементы.СтрокаСостояния.Пометка = ЭтотОбъект.ВидимостьСтрокиСостояния;
Если ЭтотОбъект.ВидимостьСтрокиСостояния Тогда
View().showStatusBar();
Иначе
View().hideStatusBar();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюПробеловТабуляций()
Элементы.ОтображатьПробелыИТабуляции.Пометка = ЭтотОбъект.ОтображатьПробелыИТабуляции;
View().renderWhitespace(ЭтотОбъект.ОтображатьПробелыИТабуляции);
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСравнения()
Элементы.СравнитьСОригиналом.Видимость = ЗначениеЗаполнено(ЭтотОбъект.ИмяСохраненногоФайла);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,52 @@
<?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.17">
<Catalog uuid="57943e54-e7ea-4b98-985d-22fa1e6bbe41">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.АлгоритмыПроверки" category="Object">
<xr:TypeId>1172e0cf-3de2-4804-b71b-ef5a0f277afd</xr:TypeId>
<xr:ValueId>865b5e96-e0ee-42bf-a8ec-c214707370b0</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.АлгоритмыПроверки" category="Ref">
<xr:TypeId>5843ac1f-030e-42cf-8e75-b16f3990b431</xr:TypeId>
<xr:ValueId>d1064c66-4358-4f59-8061-774de2c29b82</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.АлгоритмыПроверки" category="Selection">
<xr:TypeId>b97ca8f9-c7c0-4c2c-ab15-9ef6582a7a78</xr:TypeId>
<xr:ValueId>6d53be46-d776-4137-97b2-0a86fcb48bef</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.АлгоритмыПроверки" category="List">
<xr:TypeId>f201423e-cac9-49e3-80f3-f2b4922cb19e</xr:TypeId>
<xr:ValueId>10e7561c-aacf-43d8-b379-28d59fbb57d4</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.АлгоритмыПроверки" category="Manager">
<xr:TypeId>3c00c433-0e01-4dc2-9f62-ae84945b3a26</xr:TypeId>
<xr:ValueId>10a826a0-7c55-46f2-a2ad-629332ffd799</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>АлгоритмыПроверки</Name>
<Comment/>
<ExtendedConfigurationObject>59556701-d153-47b4-a9c8-5ba7c19b06e3</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Attribute uuid="3294de25-74ef-48b4-a812-03ed71da1cf3">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ВыражениеУсловия</Name>
<Comment/>
<ExtendedConfigurationObject>9c7a40b9-9c59-41eb-b17b-a7f8ffafdc3e</ExtendedConfigurationObject>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Properties>
</Attribute>
<Form>ФормаЭлемента</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="a21daede-f886-4be9-a949-02070ee70046">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ФормаЭлемента</Name>
<Comment/>
<ExtendedConfigurationObject>95f8b4ce-1640-479c-b50d-eb5adeec60c5</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,982 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура РК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
РК_Сервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РК_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Объект[ЭтотОбъект.РК_РеквизитКода] = View().getText();
КонецПроцедуры
&НаКлиенте
Процедура РК_ПриОткрытииПосле(Отказ)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
КонецПроцедуры
&НаКлиенте
&После("РедактированиеПараметровЗавершено")
Процедура РК_РедактированиеПараметровЗавершено(Результат, ПараметрыОповещения)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
ОбновитьПользовательскиеОбъекты();
КонецПроцедуры
&НаКлиенте
Процедура РК_ТипОбъектаОбработкаВыбораПосле(Элемент, ВыбранноеЗначение, ДополнительныеДанные, СтандартнаяОбработка)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
ОбновитьПользовательскиеОбъекты();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
Процедура ConsoleOnReady(Элемент)
Если ЭтотОбъект.РК_ИсходникиЗагружены Тогда
ИнициализацияРедактора();
//АктивироватьДополнительныеФункции();
ЗагрузитьКод();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ConsoleOnClick(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
РК_Клиент.ОбработатьСобытиеРедактора(ДанныеСобытия.Event.eventData1C, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИнициализацияРедактора
&НаКлиенте
Процедура ЗагрузитьКод() Экспорт
вью = View();
вью.minimap(Ложь);
вью.setText(Объект[ЭтотОбъект.РК_РеквизитКода], Неопределено, Ложь);
вью.setOriginalText(Объект[ЭтотОбъект.РК_РеквизитКода]);
КонецПроцедуры
&НаСервере
Функция ТекстОписанияПользовательскихОбъектов()
customObjects = Новый Структура;
customObjects.Вставить("Результат", Новый Структура);
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Объект, "Параметры") Тогда
Для Каждого ПараметрАлгоритма Из Объект.Параметры Цикл
customObjects.Вставить(ПараметрАлгоритма.Имя, Новый Структура);
КонецЦикла;
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ЭтотОбъект, "ДеревоРеквизитовОбъекта") Тогда
Дерево = РеквизитФормыВЗначение("ДеревоРеквизитовОбъекта");
Для Каждого СтрокаОбъект Из Дерево.Строки Цикл
НовыйОбъект = Новый Структура("properties", Новый Структура);
customObjects.Вставить(СтрокаОбъект.НаименованиеРеквизита, НовыйОбъект);
Для Каждого СтрокаСвойство Из СтрокаОбъект.Строки Цикл
НовыйОбъект.properties.Вставить(СтрокаСвойство.НаименованиеРеквизита, Новый Структура);
КонецЦикла;
КонецЦикла;
КонецЕсли;
Если customObjects.Количество() = 0 Тогда
Возврат Неопределено;
КонецЕсли;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("customObjects", customObjects));
ТекстJSON = ЗаписьJSON.Закрыть();
Возврат ТекстJSON;
КонецФункции
&НаКлиенте
Функция ИндексныйФайл()
Возврат ЭтотОбъект.РК_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
ЭтотОбъект.РК_HTML = СкопированныйФайл;
ЭтотОбъект.РК_ИсходникиЗагружены = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(ЭтотОбъект.РК_КаталогИсходников);
Файл = Новый ЗаписьТекста(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Исключение
Сообщить("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки()); //, Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеЗаписиФайлаМакета", ЭтотОбъект);
ИмяФайла = ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресМакета);
ДанныеМакета.НачатьЗапись(Оповещение, ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходникиНаКлиенте()
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияВременныхФайлов", ЭтотОбъект);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_КаталогИсходников, "*.*");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияИндексногоФайла", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияФайлаВерсии", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
Сообщить("Не удалось создать каталог для исходников"); // , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияКаталога", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
ЭтотОбъект.РК_КаталогИсходников = ИмяКаталога + "bsl_console\";
Оповещение = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект);
НачатьСозданиеКаталога(Оповещение, ЭтотОбъект.РК_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходники()
Оповещение = Новый ОписаниеОповещения("ПриПолученииКаталогаВременныхФайлов", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
ИзвлечьИсходники();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбнулитьМетаданные() Экспорт
View().clearMetadata();
ОбновитьСписокОбщихМодулей();
ОбновитьПользовательскиеОбъекты();
//View().updateMetadata(ТекстОписанияОбъекта());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПользовательскиеОбъекты()
View().updateMetadata(ТекстОписанияПользовательскихОбъектов());
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияРедактора()
Инфо = Новый СистемнаяИнформация();
View().init(Инфо.ВерсияПриложения);
View().setOption("autoResizeEditorLayout", Истина);
View().setOption("renderQueryDelimiters", Истина);
View().setOption("generateModificationEvent", Истина);
View().hideScrollX();
View().hideScrollY();
ПодключитьОбработчикОжидания("ОбнулитьМетаданные", 1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейсРедактора
&НаКлиенте
Функция View() Экспорт
Возврат Элементы.ПолеHTML.Документ.defaultView;
КонецФункции
&НаКлиенте
Процедура УстановитьТекст(Текст, Позиция, УчитыватьОтступПервойСтроки)
View().setText(Текст, Позиция, УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстКода() Экспорт
Объект[ЭтотОбъект.РК_РеквизитКода] = ЭтотОбъект.View().getText();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекст(ДляВыполнения = Ложь)
Код = View().getText();
Возврат Код;
КонецФункции
#КонецОбласти
#Область КонструкторЗапросов
&НаКлиенте
Процедура ПриЗакрытииКонструктораЗапросов(Текст, ДопПараметры) Экспорт
Если Текст <> Неопределено Тогда
Если Не View().queryMode Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, Символы.ПС + "|");
Текст = СтрЗаменить(Текст, """", """""");
Текст = """" + Текст + """";
КонецЕсли;
УстановитьТекст(Текст, ДопПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(Текст, ДопПараметры)
Конструктор = Новый КонструкторЗапроса();
Если ЗначениеЗаполнено(Текст) Тогда
Попытка
Конструктор.Текст = Текст;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте запроса:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораЗапросов", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовыйЗапрос(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторЗапроса("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьТекстЗапроса(Текст)
ТекстЗапроса = СтрЗаменить(Текст, "|", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """""", "$");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$", """");
Возврат ТекстЗапроса;
КонецФункции
&НаКлиенте
Процедура ВызватьКонструкторЗапроса(ПараметрыЗапроса) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовыйЗапрос", ЭтотОбъект);
ТекстВопроса = "Не найден текст запроса." + Символы.ПС + "Создать новый запрос?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТекстЗапроса = ПодготовитьТекстЗапроса(ПараметрыЗапроса.text);
ОткрытьКонструкторЗапроса(ТекстЗапроса, ПараметрыЗапроса.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонструкторФорматнойСтроки
&НаКлиенте
Процедура ПриЗакрытииКонструктораФорматнойСтроки(ФорматнаяСтрока, ДопПараметры) Экспорт
Если ФорматнаяСтрока <> Неопределено Тогда
ФорматнаяСтрока = СтрЗаменить(ФорматнаяСтрока, "'", "");
ФорматнаяСтрока = """" + ФорматнаяСтрока + """";
УстановитьТекст(ФорматнаяСтрока, ДопПараметры, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ДопПараметры)
Конструктор = Новый КонструкторФорматнойСтроки();
Попытка
Конструктор.Текст = ФорматнаяСтрока;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте форматной строки:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораФорматнойСтроки", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовуюФорматнуюСтроку(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторФорматнойСтроки("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВызватьКонструкторФорматнойСтроки(ПараметрыСтроки) Экспорт
Если ПараметрыСтроки = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовуюФорматнуюСтроку", ЭтотОбъект);
ТекстВопроса = "Форматная строка не найдена." + Символы.ПС + "Создать новую форматную строку?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ФорматнаяСтрока = СтрЗаменить(СтрЗаменить(ПараметрыСтроки.text, "|", ""), """", "");
ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ПараметрыСтроки.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДинамическоеОбновлениеМетаданных
&НаКлиенте
Функция ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьОписаниеОбъектаМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьСписокОбъектовМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбработкаСобытияПолученияМетаданных(Событие) Экспорт
ПараметрыЗапроса = НРег(Событие.metadata);
ВызыватьПодсказку = (Событие.trigger = "suggestion");
ДанныеОбновлены = Ложь;
Если 0 < СтрНайти(ПараметрыЗапроса, ".") Тогда
ЧастиЗапроса = СтрРазделить(ПараметрыЗапроса, ".");
Если ЧастиЗапроса[0] = "module" Тогда
Если ЧастиЗапроса.Количество() = 2 Тогда
ДанныеОбновлены = ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса);
Иначе
ДанныеОбновлены = ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Если Событие.trigger = "suggestion" И ДанныеОбновлены Тогда
View().triggerSuggestions();
КонецЕсли;
Если Событие.trigger = "snippet" Тогда
View().updateSnippetByGUID(Событие.snippet_guid);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСобытияПолученияПеременной(Событие) Экспорт
ИмяПеременной = Событие.variableName;
ИдентификаторПеременной = Событие.variableId;
ПутьКДанным = Событие.variablePath;
ПутьКДанным = СтрЗаменить(ПутьКДанным, "undefined", "");
Описание = РК_Сервер.ПолучитьОписаниеПеременной(ИдентификаторПеременной, ИмяПеременной, ПутьКДанным, Объект.РК_АдресХраненияПеременных);
Если ЗначениеЗаполнено(Описание) Тогда
View().updateVariableDescription(ИдентификаторПеременной, Описание);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаОбщихМодулейКлиент
&НаСервере
Функция СохранитьОбщиеМодулиВХранилище(КоллекцияОбщихМодулей) Экспорт
Файл = Новый ЗаписьJSON();
Файл.УстановитьСтроку();
Попытка
ЗаписатьJSON(Файл, КоллекцияОбщихМодулей.Общие);
Исключение
ВызватьИсключение("Не удалось сохранить коллекцию метаданных:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ЗначениеКоллекции = Файл.Закрыть();
Возврат ПоместитьВоВременноеХранилище(ЗначениеКоллекции, Новый УникальныйИдентификатор());
КонецФункции
&НаСервере
Процедура ЗаполнитьИменаОбщихМодулей(КоллекцияОбщихМодулей) Экспорт
// Соответствие между именем общего неглобального модуля в нижнем регистре
// и именем модуля, как оно задано в конфигураторе для правильной загрузки
// текстов общих модулей
ОбщиеМодули = Новый Соответствие();
Для Каждого Обход Из КоллекцияОбщихМодулей.Общие Цикл
ОбщиеМодули.Вставить(НРег(Обход.Ключ), Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ИменаОбщихМодулей = Новый ФиксированноеСоответствие(ОбщиеМодули);
// Именя глобальных модулей для загрузки текстов
Модули = Новый Массив();
Для Каждого Обход Из КоллекцияОбщихМодулей.Глобальные Цикл
Модули.Добавить(Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ГлобальныйМодули = Новый ФиксированныйМассив(Модули);
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
Путь = СтрРазделить(ПолноеИмяФайла, ЭтотОбъект.РК_РазделительПути, Ложь);
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
КонецФункции
&НаКлиенте
Функция НормализоватьПуть(Путь)
Путь = СокрЛП(Путь);
Если Прав(Путь, 1) <> ЭтотОбъект.РК_РазделительПути Тогда
Путь = Путь + ЭтотОбъект.РК_РазделительПути;
КонецЕсли;
Возврат Путь;
КонецФункции
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
КаталогИсходногоКода = ЭтотОбъект.РК_КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
Возврат КаталогИсходногоКода;
КонецФункции
&НаКлиенте
Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + ЭтотОбъект.РК_РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст);
КонецЦикла;
Состояние("Общие модули загружены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
ИмяВКонфигураторе = ЭтотОбъект.РК_ИменаОбщихМодулей.Получить(НРег(ИмяМодуля));
Если ИмяВКонфигураторе = Неопределено Тогда
ИмяВКонфигураторе = ИмяМодуля;
КонецЕсли;
ФайлМодуля = СтрШаблон("CommonModules%1%2%1Ext%1Module.bsl", ЭтотОбъект.РК_РазделительПути, ИмяВКонфигураторе);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
ИмяТипа = ?(ТипМодуля = "manager", "ManagerModule", "ObjectModule");
ФайлМодуля = СтрШаблон("%1%2Ext%2%3.bsl", СтруктураВыгрузки.ИмяКаталога, ЭтотОбъект.РК_РазделительПути, ИмяТипа);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = РК_Сервер.ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
ЗагруженоФункций = View().parseMetadataModule(Модуль.Текст, АдресЗагрузки);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ЭтотОбъект.РК_ГлобальныйМодули <> Неопределено И 0 < ЭтотОбъект.РК_ГлобальныйМодули.Количество());
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЕстьГлобальныеМодули Тогда
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
Если КаталогНаДиске.Существует() Тогда
Индекс = 0;
Пока Индекс < ЭтотОбъект.РК_ГлобальныйМодули.Количество() Цикл
ИмяМодуля = ЭтотОбъект.РК_ГлобальныйМодули.Получить(Индекс);
ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Истина);
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
ИмяМодуля = ЧастиЗапроса[1];
ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 4;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
СтруктураВыгрузки = Новый Структура();
СтруктураВыгрузки.Вставить("ТипМодуля" , ЧастиЗапроса[1]);
СтруктураВыгрузки.Вставить("ТипМетаданных" , ЧастиЗапроса[2]);
СтруктураВыгрузки.Вставить("ОбъектМетаданных" , ЧастиЗапроса[3]);
РК_Сервер.ДополнитьСтруктуруВыгрузкиИсходниковМетаданных(СтруктураВыгрузки, ЭтотОбъект.РК_РазделительПути);
Если ЗначениеЗаполнено(СтруктураВыгрузки.ИмяКаталога) Тогда
ЗагруженоФункций = ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокОбщихМодулей()
КоллекцияМетаданных = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресОбщихМодулей);
Если КоллекцияМетаданных <> Неопределено Тогда
Результат = View().updateMetadata(КоллекцияМетаданных, "commonModules.items");
ЗагрузитьГлобальныеМодули();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаВЧисло(Значение, ЗначениеПоУмолчанию = 0)
СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = ТипЧисло.ПривестиЗначение(Значение);
Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, ЗначениеПоУмолчанию);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(Текст)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыводаОшибки(ДопПараметры) Экспорт
Если ДопПараметры.ЗакрыватьКонсоль Тогда
ЗакрытьКонсоль(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Текст, ЗакрыватьКонсоль)
ПараметрыОповещения = Новый Структура("ЗакрыватьКонсоль", ЗакрыватьКонсоль);
Оповещение = Новый ОписаниеОповещения("ПослеВыводаОшибки", ЭтотОбъект, ПараметрыОповещения);
ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьРазделительПути()
ЭтотОбъект.РК_РазделительПути = ПолучитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИмяТемы()
ИмяТемы = Неопределено;
Имена = Новый Соответствие();
Имена.Вставить("СветлаяТема", "bsl-white");
Имена.Вставить("ТемнаяТема", "bsl-dark");
Для Каждого Элемент Из Элементы.Тема.ПодчиненныеЭлементы Цикл
Если Элемент.Пометка Тогда
ИмяТемы = Имена[Элемент.Имя];
КонецЕсли;
КонецЦикла;
Возврат ИмяТемы;
КонецФункции
&НаКлиенте
Процедура ПереключитьТему(Тема)
View().setTheme(Тема);
КонецПроцедуры
&НаСервере
Функция ЭтотОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект().ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция ПолучитьТекстМакета(ИмяМакета, УдалятьПереносыСтрок)
Макет = ПолучитьМакет(ИмяМакета);
Текст = Макет.ПолучитьТекст();
Если УдалятьПереносыСтрок Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ВебДокументДоступен()
Если Элементы.ПолеHTML.Документ <> Неопределено И Элементы.ПолеHTML.Документ.defaultView <> Неопределено Тогда
Попытка
ПолучитьТекст();
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьПользовательскиеФункции()
JSON = ПолучитьТекстМакета("ПользовательскиеФункции", Истина);
Результат = View().updateCustomFunctions(JSON);
Если ТипЗнч(Результат) = Тип("Булево") Тогда
СообщитьПользователю("Пользовательские функции успешно загружены!");
Иначе
Ошибка = "Не удалось загрузить пользовательские функции: " + Символы.ПС + Результат.errorDescription;
ВывестиОшибку(Ошибка, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
ЭтотОбъект.РК_ИндексныйФайл = "";
Если ДопПараметры.СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКонсоль(СтандартноеЗакрытие)
Если ЗначениеЗаполнено(ЭтотОбъект.РК_ИндексныйФайл) Тогда
ПараметрыОповещения = Новый Структура("СтандартноеЗакрытие", СтандартноеЗакрытие);
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияИндексногоФайла", ЭтотОбъект, ПараметрыОповещения);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
Если СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеБыстрымиПодсказками()
Элементы.БыстрыеПодсказки.Пометка = ЭтотОбъект.БыстрыеПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюКартыКода()
Элементы.КартаКода.Пометка = ЭтотОбъект.ВидимостьКартыКода;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСтрокиСостояния()
Элементы.СтрокаСостояния.Пометка = ЭтотОбъект.ВидимостьСтрокиСостояния;
Если ЭтотОбъект.ВидимостьСтрокиСостояния Тогда
View().showStatusBar();
Иначе
View().hideStatusBar();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюПробеловТабуляций()
Элементы.ОтображатьПробелыИТабуляции.Пометка = ЭтотОбъект.ОтображатьПробелыИТабуляции;
View().renderWhitespace(ЭтотОбъект.ОтображатьПробелыИТабуляции);
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСравнения()
Элементы.СравнитьСОригиналом.Видимость = ЗначениеЗаполнено(ЭтотОбъект.ИмяСохраненногоФайла);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,36 @@
<?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.17">
<Catalog uuid="693e0054-19a0-4582-bc91-c91843469fa2">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.ВычисляемыеПараметрыЧатБота" category="Object">
<xr:TypeId>50c8d1cc-95c8-40b0-990c-35a8728f3e8b</xr:TypeId>
<xr:ValueId>7fb79cdc-5deb-4c46-9d68-425625438b19</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.ВычисляемыеПараметрыЧатБота" category="Ref">
<xr:TypeId>d87c952e-3486-46d7-ac03-a485a9f11687</xr:TypeId>
<xr:ValueId>32d5673f-48a6-490f-9c7c-2e2bfec95995</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.ВычисляемыеПараметрыЧатБота" category="Selection">
<xr:TypeId>0440941b-6a38-46df-8fe8-ae2ade8cfc3d</xr:TypeId>
<xr:ValueId>b3c6f0e2-98f1-41f5-afdf-bd0fb4d8d871</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.ВычисляемыеПараметрыЧатБота" category="List">
<xr:TypeId>d2abf11a-b70b-4c04-a537-a9bba1898be8</xr:TypeId>
<xr:ValueId>19de8bd0-3497-4135-88f5-7cbfb8499de4</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.ВычисляемыеПараметрыЧатБота" category="Manager">
<xr:TypeId>b8958e84-0f7f-40da-90eb-fd44e3e5d7c7</xr:TypeId>
<xr:ValueId>15888893-d53a-4713-9623-40d5cf15be9c</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ВычисляемыеПараметрыЧатБота</Name>
<Comment/>
<ExtendedConfigurationObject>a8dd55d8-e15d-40b4-aab4-3e42fceca011</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Form>ФормаЭлемента</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="b76a1b94-0767-43a9-bca2-02efbfe5b7ce">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ФормаЭлемента</Name>
<Comment/>
<ExtendedConfigurationObject>53746507-7ec5-4ef2-9c3b-b84b37e4a86d</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,138 @@
<?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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<CommandSet>
<ExcludedCommand>Abort</ExcludedCommand>
<ExcludedCommand>Cancel</ExcludedCommand>
<ExcludedCommand>ChangeHistory</ExcludedCommand>
<ExcludedCommand>Close</ExcludedCommand>
<ExcludedCommand>Copy</ExcludedCommand>
<ExcludedCommand>CustomizeForm</ExcludedCommand>
<ExcludedCommand>Delete</ExcludedCommand>
<ExcludedCommand>Help</ExcludedCommand>
<ExcludedCommand>Ignore</ExcludedCommand>
<ExcludedCommand>No</ExcludedCommand>
<ExcludedCommand>OK</ExcludedCommand>
<ExcludedCommand>OpenFromMainServer</ExcludedCommand>
<ExcludedCommand>OpenFromStandaloneServer</ExcludedCommand>
<ExcludedCommand>Reread</ExcludedCommand>
<ExcludedCommand>RestoreValues</ExcludedCommand>
<ExcludedCommand>Retry</ExcludedCommand>
<ExcludedCommand>SaveValues</ExcludedCommand>
<ExcludedCommand>ShowInList</ExcludedCommand>
<ExcludedCommand>Yes</ExcludedCommand>
</CommandSet>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаПроверить" id="10">
<Type>CommandBarButton</Type>
<CommandName>0</CommandName>
<ExtendedTooltip name="ФормаПроверитьРасширеннаяПодсказка" id="11"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnOpen" callType="After">РК_ПриОткрытииПосле</Event>
<Event name="BeforeWrite" callType="After">РК_ПередЗаписьюПосле</Event>
<Event name="OnCreateAtServer" callType="After">РК_ПриСозданииНаСервереПосле</Event>
</Events>
<ChildItems>
<InputField name="Наименование" id="4">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<AutoMaxWidth>false</AutoMaxWidth>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Наименование</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="6"/>
</InputField>
<InputField name="Скрипт" id="7">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>50</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>10</Height>
<MultiLine>true</MultiLine>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Исполняемый код</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="СкриптКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="СкриптРасширеннаяПодсказка" id="9"/>
</InputField>
</ChildItems>
<Attributes/>
<BaseForm version="2.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<CommandSet>
<ExcludedCommand>Abort</ExcludedCommand>
<ExcludedCommand>Cancel</ExcludedCommand>
<ExcludedCommand>ChangeHistory</ExcludedCommand>
<ExcludedCommand>Close</ExcludedCommand>
<ExcludedCommand>Copy</ExcludedCommand>
<ExcludedCommand>CustomizeForm</ExcludedCommand>
<ExcludedCommand>Delete</ExcludedCommand>
<ExcludedCommand>Help</ExcludedCommand>
<ExcludedCommand>Ignore</ExcludedCommand>
<ExcludedCommand>No</ExcludedCommand>
<ExcludedCommand>OK</ExcludedCommand>
<ExcludedCommand>OpenFromMainServer</ExcludedCommand>
<ExcludedCommand>OpenFromStandaloneServer</ExcludedCommand>
<ExcludedCommand>Reread</ExcludedCommand>
<ExcludedCommand>RestoreValues</ExcludedCommand>
<ExcludedCommand>Retry</ExcludedCommand>
<ExcludedCommand>SaveValues</ExcludedCommand>
<ExcludedCommand>ShowInList</ExcludedCommand>
<ExcludedCommand>Yes</ExcludedCommand>
</CommandSet>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<ChildItems>
<InputField name="Наименование" id="4">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<AutoMaxWidth>false</AutoMaxWidth>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Наименование</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="6"/>
</InputField>
<InputField name="Скрипт" id="7">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>50</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>10</Height>
<MultiLine>true</MultiLine>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Исполняемый код</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="СкриптКонтекстноеМеню" id="8">
<ChildItems>
<Button name="ФормаПроверить" id="10">
<Type>CommandBarButton</Type>
<CommandName>0</CommandName>
<ExtendedTooltip name="ФормаПроверитьРасширеннаяПодсказка" id="11"/>
</Button>
</ChildItems>
</ContextMenu>
<ExtendedTooltip name="СкриптРасширеннаяПодсказка" id="9"/>
</InputField>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>

View File

@ -0,0 +1,954 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура РК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
РК_Сервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РК_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Объект[ЭтотОбъект.РК_РеквизитКода] = View().getText();
КонецПроцедуры
&НаКлиенте
Процедура РК_ПриОткрытииПосле(Отказ)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
Процедура ConsoleOnReady(Элемент)
Если ЭтотОбъект.РК_ИсходникиЗагружены Тогда
ИнициализацияРедактора();
//АктивироватьДополнительныеФункции();
ЗагрузитьКод();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ConsoleOnClick(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
РК_Клиент.ОбработатьСобытиеРедактора(ДанныеСобытия.Event.eventData1C, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИнициализацияРедактора
&НаКлиенте
Процедура ЗагрузитьКод() Экспорт
вью = View();
вью.minimap(Ложь);
вью.setText(Объект[ЭтотОбъект.РК_РеквизитКода], Неопределено, Ложь);
вью.setOriginalText(Объект[ЭтотОбъект.РК_РеквизитКода]);
КонецПроцедуры
&НаСервере
Функция ТекстОписанияПользовательскихОбъектов()
customObjects = Новый Структура;
customObjects.Вставить("ЗначениеПараметра", Новый Структура);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("customObjects", customObjects));
ТекстJSON = ЗаписьJSON.Закрыть();
Возврат ТекстJSON;
КонецФункции
&НаКлиенте
Функция ИндексныйФайл()
Возврат ЭтотОбъект.РК_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
ЭтотОбъект.РК_HTML = СкопированныйФайл;
ЭтотОбъект.РК_ИсходникиЗагружены = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(ЭтотОбъект.РК_КаталогИсходников);
Файл = Новый ЗаписьТекста(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Исключение
Сообщить("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки()); //, Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеЗаписиФайлаМакета", ЭтотОбъект);
ИмяФайла = ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресМакета);
ДанныеМакета.НачатьЗапись(Оповещение, ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходникиНаКлиенте()
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияВременныхФайлов", ЭтотОбъект);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_КаталогИсходников, "*.*");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияИндексногоФайла", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияФайлаВерсии", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
Сообщить("Не удалось создать каталог для исходников"); // , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияКаталога", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
ЭтотОбъект.РК_КаталогИсходников = ИмяКаталога + "bsl_console\";
Оповещение = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект);
НачатьСозданиеКаталога(Оповещение, ЭтотОбъект.РК_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходники()
Оповещение = Новый ОписаниеОповещения("ПриПолученииКаталогаВременныхФайлов", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
ИзвлечьИсходники();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбнулитьМетаданные() Экспорт
View().clearMetadata();
ОбновитьСписокОбщихМодулей();
ОбновитьПользовательскиеОбъекты();
//View().updateMetadata(ТекстОписанияОбъекта());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПользовательскиеОбъекты()
ТекстОписанияПользовательскихОбъектов = ТекстОписанияПользовательскихОбъектов();
Если ТекстОписанияПользовательскихОбъектов = Неопределено Тогда
Возврат;
КонецЕсли;
View().updateMetadata(ТекстОписанияПользовательскихОбъектов());
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияРедактора()
Инфо = Новый СистемнаяИнформация();
View().init(Инфо.ВерсияПриложения);
View().setOption("autoResizeEditorLayout", Истина);
View().setOption("renderQueryDelimiters", Истина);
View().setOption("generateModificationEvent", Истина);
View().hideScrollX();
View().hideScrollY();
ПодключитьОбработчикОжидания("ОбнулитьМетаданные", 1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейсРедактора
&НаКлиенте
Функция View() Экспорт
Возврат Элементы.ПолеHTML.Документ.defaultView;
КонецФункции
&НаКлиенте
Процедура УстановитьТекст(Текст, Позиция, УчитыватьОтступПервойСтроки)
View().setText(Текст, Позиция, УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстКода() Экспорт
Объект[ЭтотОбъект.РК_РеквизитКода] = ЭтотОбъект.View().getText();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекст(ДляВыполнения = Ложь)
Код = View().getText();
Возврат Код;
КонецФункции
#КонецОбласти
#Область КонструкторЗапросов
&НаКлиенте
Процедура ПриЗакрытииКонструктораЗапросов(Текст, ДопПараметры) Экспорт
Если Текст <> Неопределено Тогда
Если Не View().queryMode Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, Символы.ПС + "|");
Текст = СтрЗаменить(Текст, """", """""");
Текст = """" + Текст + """";
КонецЕсли;
УстановитьТекст(Текст, ДопПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(Текст, ДопПараметры)
Конструктор = Новый КонструкторЗапроса();
Если ЗначениеЗаполнено(Текст) Тогда
Попытка
Конструктор.Текст = Текст;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте запроса:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораЗапросов", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовыйЗапрос(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторЗапроса("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьТекстЗапроса(Текст)
ТекстЗапроса = СтрЗаменить(Текст, "|", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """""", "$");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$", """");
Возврат ТекстЗапроса;
КонецФункции
&НаКлиенте
Процедура ВызватьКонструкторЗапроса(ПараметрыЗапроса) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовыйЗапрос", ЭтотОбъект);
ТекстВопроса = "Не найден текст запроса." + Символы.ПС + "Создать новый запрос?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТекстЗапроса = ПодготовитьТекстЗапроса(ПараметрыЗапроса.text);
ОткрытьКонструкторЗапроса(ТекстЗапроса, ПараметрыЗапроса.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонструкторФорматнойСтроки
&НаКлиенте
Процедура ПриЗакрытииКонструктораФорматнойСтроки(ФорматнаяСтрока, ДопПараметры) Экспорт
Если ФорматнаяСтрока <> Неопределено Тогда
ФорматнаяСтрока = СтрЗаменить(ФорматнаяСтрока, "'", "");
ФорматнаяСтрока = """" + ФорматнаяСтрока + """";
УстановитьТекст(ФорматнаяСтрока, ДопПараметры, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ДопПараметры)
Конструктор = Новый КонструкторФорматнойСтроки();
Попытка
Конструктор.Текст = ФорматнаяСтрока;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте форматной строки:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораФорматнойСтроки", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовуюФорматнуюСтроку(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторФорматнойСтроки("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВызватьКонструкторФорматнойСтроки(ПараметрыСтроки) Экспорт
Если ПараметрыСтроки = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовуюФорматнуюСтроку", ЭтотОбъект);
ТекстВопроса = "Форматная строка не найдена." + Символы.ПС + "Создать новую форматную строку?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ФорматнаяСтрока = СтрЗаменить(СтрЗаменить(ПараметрыСтроки.text, "|", ""), """", "");
ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ПараметрыСтроки.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДинамическоеОбновлениеМетаданных
&НаКлиенте
Функция ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьОписаниеОбъектаМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьСписокОбъектовМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбработкаСобытияПолученияМетаданных(Событие) Экспорт
ПараметрыЗапроса = НРег(Событие.metadata);
ВызыватьПодсказку = (Событие.trigger = "suggestion");
ДанныеОбновлены = Ложь;
Если 0 < СтрНайти(ПараметрыЗапроса, ".") Тогда
ЧастиЗапроса = СтрРазделить(ПараметрыЗапроса, ".");
Если ЧастиЗапроса[0] = "module" Тогда
Если ЧастиЗапроса.Количество() = 2 Тогда
ДанныеОбновлены = ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса);
Иначе
ДанныеОбновлены = ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Если Событие.trigger = "suggestion" И ДанныеОбновлены Тогда
View().triggerSuggestions();
КонецЕсли;
Если Событие.trigger = "snippet" Тогда
View().updateSnippetByGUID(Событие.snippet_guid);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСобытияПолученияПеременной(Событие) Экспорт
ИмяПеременной = Событие.variableName;
ИдентификаторПеременной = Событие.variableId;
ПутьКДанным = Событие.variablePath;
ПутьКДанным = СтрЗаменить(ПутьКДанным, "undefined", "");
Описание = РК_Сервер.ПолучитьОписаниеПеременной(ИдентификаторПеременной, ИмяПеременной, ПутьКДанным, Объект.РК_АдресХраненияПеременных);
Если ЗначениеЗаполнено(Описание) Тогда
View().updateVariableDescription(ИдентификаторПеременной, Описание);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаОбщихМодулейКлиент
&НаСервере
Функция СохранитьОбщиеМодулиВХранилище(КоллекцияОбщихМодулей) Экспорт
Файл = Новый ЗаписьJSON();
Файл.УстановитьСтроку();
Попытка
ЗаписатьJSON(Файл, КоллекцияОбщихМодулей.Общие);
Исключение
ВызватьИсключение("Не удалось сохранить коллекцию метаданных:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ЗначениеКоллекции = Файл.Закрыть();
Возврат ПоместитьВоВременноеХранилище(ЗначениеКоллекции, Новый УникальныйИдентификатор());
КонецФункции
&НаСервере
Процедура ЗаполнитьИменаОбщихМодулей(КоллекцияОбщихМодулей) Экспорт
// Соответствие между именем общего неглобального модуля в нижнем регистре
// и именем модуля, как оно задано в конфигураторе для правильной загрузки
// текстов общих модулей
ОбщиеМодули = Новый Соответствие();
Для Каждого Обход Из КоллекцияОбщихМодулей.Общие Цикл
ОбщиеМодули.Вставить(НРег(Обход.Ключ), Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ИменаОбщихМодулей = Новый ФиксированноеСоответствие(ОбщиеМодули);
// Именя глобальных модулей для загрузки текстов
Модули = Новый Массив();
Для Каждого Обход Из КоллекцияОбщихМодулей.Глобальные Цикл
Модули.Добавить(Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ГлобальныйМодули = Новый ФиксированныйМассив(Модули);
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
Путь = СтрРазделить(ПолноеИмяФайла, ЭтотОбъект.РК_РазделительПути, Ложь);
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
КонецФункции
&НаКлиенте
Функция НормализоватьПуть(Путь)
Путь = СокрЛП(Путь);
Если Прав(Путь, 1) <> ЭтотОбъект.РК_РазделительПути Тогда
Путь = Путь + ЭтотОбъект.РК_РазделительПути;
КонецЕсли;
Возврат Путь;
КонецФункции
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
КаталогИсходногоКода = ЭтотОбъект.РК_КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
Возврат КаталогИсходногоКода;
КонецФункции
&НаКлиенте
Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + ЭтотОбъект.РК_РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст);
КонецЦикла;
Состояние("Общие модули загружены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
ИмяВКонфигураторе = ЭтотОбъект.РК_ИменаОбщихМодулей.Получить(НРег(ИмяМодуля));
Если ИмяВКонфигураторе = Неопределено Тогда
ИмяВКонфигураторе = ИмяМодуля;
КонецЕсли;
ФайлМодуля = СтрШаблон("CommonModules%1%2%1Ext%1Module.bsl", ЭтотОбъект.РК_РазделительПути, ИмяВКонфигураторе);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
ИмяТипа = ?(ТипМодуля = "manager", "ManagerModule", "ObjectModule");
ФайлМодуля = СтрШаблон("%1%2Ext%2%3.bsl", СтруктураВыгрузки.ИмяКаталога, ЭтотОбъект.РК_РазделительПути, ИмяТипа);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = РК_Сервер.ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
ЗагруженоФункций = View().parseMetadataModule(Модуль.Текст, АдресЗагрузки);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ЭтотОбъект.РК_ГлобальныйМодули <> Неопределено И 0 < ЭтотОбъект.РК_ГлобальныйМодули.Количество());
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЕстьГлобальныеМодули Тогда
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
Если КаталогНаДиске.Существует() Тогда
Индекс = 0;
Пока Индекс < ЭтотОбъект.РК_ГлобальныйМодули.Количество() Цикл
ИмяМодуля = ЭтотОбъект.РК_ГлобальныйМодули.Получить(Индекс);
ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Истина);
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
ИмяМодуля = ЧастиЗапроса[1];
ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 4;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
СтруктураВыгрузки = Новый Структура();
СтруктураВыгрузки.Вставить("ТипМодуля" , ЧастиЗапроса[1]);
СтруктураВыгрузки.Вставить("ТипМетаданных" , ЧастиЗапроса[2]);
СтруктураВыгрузки.Вставить("ОбъектМетаданных" , ЧастиЗапроса[3]);
РК_Сервер.ДополнитьСтруктуруВыгрузкиИсходниковМетаданных(СтруктураВыгрузки, ЭтотОбъект.РК_РазделительПути);
Если ЗначениеЗаполнено(СтруктураВыгрузки.ИмяКаталога) Тогда
ЗагруженоФункций = ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокОбщихМодулей()
КоллекцияМетаданных = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресОбщихМодулей);
Если КоллекцияМетаданных <> Неопределено Тогда
Результат = View().updateMetadata(КоллекцияМетаданных, "commonModules.items");
ЗагрузитьГлобальныеМодули();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаВЧисло(Значение, ЗначениеПоУмолчанию = 0)
СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = ТипЧисло.ПривестиЗначение(Значение);
Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, ЗначениеПоУмолчанию);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(Текст)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыводаОшибки(ДопПараметры) Экспорт
Если ДопПараметры.ЗакрыватьКонсоль Тогда
ЗакрытьКонсоль(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Текст, ЗакрыватьКонсоль)
ПараметрыОповещения = Новый Структура("ЗакрыватьКонсоль", ЗакрыватьКонсоль);
Оповещение = Новый ОписаниеОповещения("ПослеВыводаОшибки", ЭтотОбъект, ПараметрыОповещения);
ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьРазделительПути()
ЭтотОбъект.РК_РазделительПути = ПолучитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИмяТемы()
ИмяТемы = Неопределено;
Имена = Новый Соответствие();
Имена.Вставить("СветлаяТема", "bsl-white");
Имена.Вставить("ТемнаяТема", "bsl-dark");
Для Каждого Элемент Из Элементы.Тема.ПодчиненныеЭлементы Цикл
Если Элемент.Пометка Тогда
ИмяТемы = Имена[Элемент.Имя];
КонецЕсли;
КонецЦикла;
Возврат ИмяТемы;
КонецФункции
&НаКлиенте
Процедура ПереключитьТему(Тема)
View().setTheme(Тема);
КонецПроцедуры
&НаСервере
Функция ЭтотОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект().ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция ПолучитьТекстМакета(ИмяМакета, УдалятьПереносыСтрок)
Макет = ПолучитьМакет(ИмяМакета);
Текст = Макет.ПолучитьТекст();
Если УдалятьПереносыСтрок Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ВебДокументДоступен()
Если Элементы.ПолеHTML.Документ <> Неопределено И Элементы.ПолеHTML.Документ.defaultView <> Неопределено Тогда
Попытка
ПолучитьТекст();
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьПользовательскиеФункции()
JSON = ПолучитьТекстМакета("ПользовательскиеФункции", Истина);
Результат = View().updateCustomFunctions(JSON);
Если ТипЗнч(Результат) = Тип("Булево") Тогда
СообщитьПользователю("Пользовательские функции успешно загружены!");
Иначе
Ошибка = "Не удалось загрузить пользовательские функции: " + Символы.ПС + Результат.errorDescription;
ВывестиОшибку(Ошибка, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
ЭтотОбъект.РК_ИндексныйФайл = "";
Если ДопПараметры.СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКонсоль(СтандартноеЗакрытие)
Если ЗначениеЗаполнено(ЭтотОбъект.РК_ИндексныйФайл) Тогда
ПараметрыОповещения = Новый Структура("СтандартноеЗакрытие", СтандартноеЗакрытие);
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияИндексногоФайла", ЭтотОбъект, ПараметрыОповещения);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
Если СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеБыстрымиПодсказками()
Элементы.БыстрыеПодсказки.Пометка = ЭтотОбъект.БыстрыеПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюКартыКода()
Элементы.КартаКода.Пометка = ЭтотОбъект.ВидимостьКартыКода;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСтрокиСостояния()
Элементы.СтрокаСостояния.Пометка = ЭтотОбъект.ВидимостьСтрокиСостояния;
Если ЭтотОбъект.ВидимостьСтрокиСостояния Тогда
View().showStatusBar();
Иначе
View().hideStatusBar();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюПробеловТабуляций()
Элементы.ОтображатьПробелыИТабуляции.Пометка = ЭтотОбъект.ОтображатьПробелыИТабуляции;
View().renderWhitespace(ЭтотОбъект.ОтображатьПробелыИТабуляции);
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСравнения()
Элементы.СравнитьСОригиналом.Видимость = ЗначениеЗаполнено(ЭтотОбъект.ИмяСохраненногоФайла);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,36 @@
<?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.17">
<Catalog uuid="f66aa73a-4637-436a-8a89-7ac19d922e68">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.ГрупповыеПоказатели" category="Object">
<xr:TypeId>2889720e-ed68-4128-a60a-2bd18a02601e</xr:TypeId>
<xr:ValueId>80ad3022-8fd8-4f33-a758-ac3cd1028216</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.ГрупповыеПоказатели" category="Ref">
<xr:TypeId>dae41b0e-faf9-40e6-b630-2144f857a864</xr:TypeId>
<xr:ValueId>262b09e3-33a1-4786-9016-3bc2865af1fa</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.ГрупповыеПоказатели" category="Selection">
<xr:TypeId>80771396-ae69-45d4-a037-7b584e0287c0</xr:TypeId>
<xr:ValueId>2623f57b-70ce-4608-ae46-14159394a1c1</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.ГрупповыеПоказатели" category="List">
<xr:TypeId>7b1b255c-c9c6-4ee9-9314-3ecbdc7f85fc</xr:TypeId>
<xr:ValueId>562bc3cc-8243-4465-86a2-c1bf8573c108</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.ГрупповыеПоказатели" category="Manager">
<xr:TypeId>1ed699d9-e1d0-4e6f-a085-ae1712bd89e3</xr:TypeId>
<xr:ValueId>96637aa4-edb4-4a0c-9d6b-59fbf876f56a</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ГрупповыеПоказатели</Name>
<Comment/>
<ExtendedConfigurationObject>7eb52de0-10fb-467f-8678-564da520395d</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Form>ФормаЭлемента</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="fcdb174e-ab8e-4013-8514-1b4414f51b45">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ФормаЭлемента</Name>
<Comment/>
<ExtendedConfigurationObject>3a7f15fc-2f08-46c7-84a9-4d1223369590</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,494 @@
<?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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="OnOpen" callType="After">РК_ПриОткрытииПосле</Event>
<Event name="BeforeWrite" callType="After">РК_ПередЗаписьюПосле</Event>
<Event name="OnCreateAtServer" callType="After">РК_ПриСозданииНаСервереПосле</Event>
</Events>
<ChildItems>
<UsualGroup name="ГруппаПометкаУдаления" id="51">
<Visible>false</Visible>
<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>
<HorizontalStretch>true</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<BackColor>style:ОбъектПомеченНаУдаление</BackColor>
<ExtendedTooltip name="ГруппаПометкаУдаленияРасширеннаяПодсказка" id="52"/>
<ChildItems>
<PictureDecoration name="ПометкаУдаленияКартинка" id="53">
<Width>5</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>1</Height>
<HorizontalStretch>false</HorizontalStretch>
<SkipOnInput>false</SkipOnInput>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пометка удаления картинка</v8:content>
</v8:item>
</Title>
<FileDragMode>AsFile</FileDragMode>
<ContextMenu name="ПометкаУдаленияКартинкаКонтекстноеМеню" id="54"/>
<ExtendedTooltip name="ПометкаУдаленияКартинкаРасширеннаяПодсказка" id="55"/>
</PictureDecoration>
<LabelDecoration name="ПометкаУдаленияНадпись" id="56">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Групповой показатель помечен на удаление</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<ContextMenu name="ПометкаУдаленияНадписьКонтекстноеМеню" id="57"/>
<ExtendedTooltip name="ПометкаУдаленияНадписьРасширеннаяПодсказка" id="58"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаПредопределенный" id="59">
<Visible>false</Visible>
<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>
<HorizontalStretch>true</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<BackColor>style:ОбъектПомеченНаУдаление</BackColor>
<ExtendedTooltip name="ГруппаПредопределенныйРасширеннаяПодсказка" id="60"/>
<ChildItems>
<PictureDecoration name="ПредопределенныйКартинка" id="61">
<Width>5</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>1</Height>
<HorizontalStretch>false</HorizontalStretch>
<SkipOnInput>false</SkipOnInput>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенный картинка</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<FileDragMode>AsFile</FileDragMode>
<ContextMenu name="ПредопределенныйКартинкаКонтекстноеМеню" id="62"/>
<ExtendedTooltip name="ПредопределенныйКартинкаРасширеннаяПодсказка" id="63"/>
</PictureDecoration>
<LabelDecoration name="ПредопределенныйНадпись" id="64">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенный элемент не доступен для изменения. Скопируйте его для внесения изменений.</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<ContextMenu name="ПредопределенныйНадписьКонтекстноеМеню" id="65"/>
<ExtendedTooltip name="ПредопределенныйНадписьРасширеннаяПодсказка" id="66"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<InputField name="Наименование" id="1">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="3"/>
</InputField>
<InputField name="Выражение" id="4">
<TitleLocation>Left</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Параметры.Результат = ...;</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="6"/>
</InputField>
<Pages name="Страницы" id="7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Страницы</v8:content>
</v8:item>
</Title>
<PagesRepresentation>TabsOnTop</PagesRepresentation>
<ExtendedTooltip name="СтраницыРасширеннаяПодсказка" id="8"/>
<ChildItems>
<Page name="ГруппаСвойства" id="9">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Свойства</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="ГруппаСвойстваРасширеннаяПодсказка" id="10"/>
<ChildItems>
<Table name="Свойства" id="11">
<Representation>List</Representation>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<RowFilter xsi:nil="true"/>
<ContextMenu name="СвойстваКонтекстноеМеню" id="12"/>
<AutoCommandBar name="СвойстваКоманднаяПанель" id="13"/>
<ExtendedTooltip name="СвойстваРасширеннаяПодсказка" id="14"/>
<SearchStringAddition name="СвойстваСтрокаПоиска" id="15">
<AdditionSource>
<Item>Свойства</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="СвойстваСтрокаПоискаКонтекстноеМеню" id="16"/>
<ExtendedTooltip name="СвойстваСтрокаПоискаРасширеннаяПодсказка" id="17"/>
</SearchStringAddition>
<ViewStatusAddition name="СвойстваСостояниеПросмотра" id="18">
<AdditionSource>
<Item>Свойства</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="СвойстваСостояниеПросмотраКонтекстноеМеню" id="19"/>
<ExtendedTooltip name="СвойстваСостояниеПросмотраРасширеннаяПодсказка" id="20"/>
</ViewStatusAddition>
<SearchControlAddition name="СвойстваУправлениеПоиском" id="21">
<AdditionSource>
<Item>Свойства</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="СвойстваУправлениеПоискомКонтекстноеМеню" id="22"/>
<ExtendedTooltip name="СвойстваУправлениеПоискомРасширеннаяПодсказка" id="23"/>
</SearchControlAddition>
<ChildItems>
<InputField name="СвойстваИмяСвойства" id="27">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СвойстваИмяСвойстваКонтекстноеМеню" id="28"/>
<ExtendedTooltip name="СвойстваИмяСвойстваРасширеннаяПодсказка" id="29"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</Page>
<Page name="ГруппаСобытия" id="30">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>События</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="ГруппаСобытияРасширеннаяПодсказка" id="31"/>
<ChildItems>
<Table name="События" id="32">
<Representation>List</Representation>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<RowFilter xsi:nil="true"/>
<ContextMenu name="СобытияКонтекстноеМеню" id="33"/>
<AutoCommandBar name="СобытияКоманднаяПанель" id="34"/>
<ExtendedTooltip name="СобытияРасширеннаяПодсказка" id="35"/>
<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>
<ChildItems>
<InputField name="СобытияИмяСобытия" id="48">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СобытияИмяСобытияКонтекстноеМеню" id="49"/>
<ExtendedTooltip name="СобытияИмяСобытияРасширеннаяПодсказка" id="50"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</Page>
</ChildItems>
</Pages>
</ChildItems>
<Attributes/>
<BaseForm version="2.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<ChildItems>
<UsualGroup name="ГруппаПометкаУдаления" id="51">
<Visible>false</Visible>
<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>
<HorizontalStretch>true</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<BackColor>style:ОбъектПомеченНаУдаление</BackColor>
<ExtendedTooltip name="ГруппаПометкаУдаленияРасширеннаяПодсказка" id="52"/>
<ChildItems>
<PictureDecoration name="ПометкаУдаленияКартинка" id="53">
<Width>5</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>1</Height>
<HorizontalStretch>false</HorizontalStretch>
<SkipOnInput>false</SkipOnInput>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пометка удаления картинка</v8:content>
</v8:item>
</Title>
<FileDragMode>AsFile</FileDragMode>
<ContextMenu name="ПометкаУдаленияКартинкаКонтекстноеМеню" id="54"/>
<ExtendedTooltip name="ПометкаУдаленияКартинкаРасширеннаяПодсказка" id="55"/>
</PictureDecoration>
<LabelDecoration name="ПометкаУдаленияНадпись" id="56">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Групповой показатель помечен на удаление</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<ContextMenu name="ПометкаУдаленияНадписьКонтекстноеМеню" id="57"/>
<ExtendedTooltip name="ПометкаУдаленияНадписьРасширеннаяПодсказка" id="58"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаПредопределенный" id="59">
<Visible>false</Visible>
<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>
<HorizontalStretch>true</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<BackColor>style:ОбъектПомеченНаУдаление</BackColor>
<ExtendedTooltip name="ГруппаПредопределенныйРасширеннаяПодсказка" id="60"/>
<ChildItems>
<PictureDecoration name="ПредопределенныйКартинка" id="61">
<Width>5</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>1</Height>
<HorizontalStretch>false</HorizontalStretch>
<SkipOnInput>false</SkipOnInput>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенный картинка</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<FileDragMode>AsFile</FileDragMode>
<ContextMenu name="ПредопределенныйКартинкаКонтекстноеМеню" id="62"/>
<ExtendedTooltip name="ПредопределенныйКартинкаРасширеннаяПодсказка" id="63"/>
</PictureDecoration>
<LabelDecoration name="ПредопределенныйНадпись" id="64">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенный элемент не доступен для изменения. Скопируйте его для внесения изменений.</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<ContextMenu name="ПредопределенныйНадписьКонтекстноеМеню" id="65"/>
<ExtendedTooltip name="ПредопределенныйНадписьРасширеннаяПодсказка" id="66"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<InputField name="Наименование" id="1">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="3"/>
</InputField>
<InputField name="Выражение" id="4">
<TitleLocation>Left</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Параметры.Результат = ...;</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="6"/>
</InputField>
<Pages name="Страницы" id="7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Страницы</v8:content>
</v8:item>
</Title>
<PagesRepresentation>TabsOnTop</PagesRepresentation>
<ExtendedTooltip name="СтраницыРасширеннаяПодсказка" id="8"/>
<ChildItems>
<Page name="ГруппаСвойства" id="9">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Свойства</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="ГруппаСвойстваРасширеннаяПодсказка" id="10"/>
<ChildItems>
<Table name="Свойства" id="11">
<Representation>List</Representation>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<RowFilter xsi:nil="true"/>
<ContextMenu name="СвойстваКонтекстноеМеню" id="12"/>
<AutoCommandBar name="СвойстваКоманднаяПанель" id="13"/>
<ExtendedTooltip name="СвойстваРасширеннаяПодсказка" id="14"/>
<SearchStringAddition name="СвойстваСтрокаПоиска" id="15">
<AdditionSource>
<Item>Свойства</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="СвойстваСтрокаПоискаКонтекстноеМеню" id="16"/>
<ExtendedTooltip name="СвойстваСтрокаПоискаРасширеннаяПодсказка" id="17"/>
</SearchStringAddition>
<ViewStatusAddition name="СвойстваСостояниеПросмотра" id="18">
<AdditionSource>
<Item>Свойства</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="СвойстваСостояниеПросмотраКонтекстноеМеню" id="19"/>
<ExtendedTooltip name="СвойстваСостояниеПросмотраРасширеннаяПодсказка" id="20"/>
</ViewStatusAddition>
<SearchControlAddition name="СвойстваУправлениеПоиском" id="21">
<AdditionSource>
<Item>Свойства</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="СвойстваУправлениеПоискомКонтекстноеМеню" id="22"/>
<ExtendedTooltip name="СвойстваУправлениеПоискомРасширеннаяПодсказка" id="23"/>
</SearchControlAddition>
<ChildItems>
<InputField name="СвойстваИмяСвойства" id="27">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СвойстваИмяСвойстваКонтекстноеМеню" id="28"/>
<ExtendedTooltip name="СвойстваИмяСвойстваРасширеннаяПодсказка" id="29"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</Page>
<Page name="ГруппаСобытия" id="30">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>События</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="ГруппаСобытияРасширеннаяПодсказка" id="31"/>
<ChildItems>
<Table name="События" id="32">
<Representation>List</Representation>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<RowFilter xsi:nil="true"/>
<ContextMenu name="СобытияКонтекстноеМеню" id="33"/>
<AutoCommandBar name="СобытияКоманднаяПанель" id="34"/>
<ExtendedTooltip name="СобытияРасширеннаяПодсказка" id="35"/>
<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>
<ChildItems>
<InputField name="СобытияИмяСобытия" id="48">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СобытияИмяСобытияКонтекстноеМеню" id="49"/>
<ExtendedTooltip name="СобытияИмяСобытияРасширеннаяПодсказка" id="50"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</Page>
</ChildItems>
</Pages>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>

View File

@ -0,0 +1,956 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура РК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
РК_Сервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РК_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Объект[ЭтотОбъект.РК_РеквизитКода] = View().getText();
КонецПроцедуры
&НаКлиенте
Процедура РК_ПриОткрытииПосле(Отказ)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
Процедура ConsoleOnReady(Элемент)
Если ЭтотОбъект.РК_ИсходникиЗагружены Тогда
ИнициализацияРедактора();
//АктивироватьДополнительныеФункции();
ЗагрузитьКод();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ConsoleOnClick(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
РК_Клиент.ОбработатьСобытиеРедактора(ДанныеСобытия.Event.eventData1C, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИнициализацияРедактора
&НаКлиенте
Процедура ЗагрузитьКод() Экспорт
вью = View();
вью.minimap(Ложь);
вью.setText(Объект[ЭтотОбъект.РК_РеквизитКода], Неопределено, Ложь);
вью.setOriginalText(Объект[ЭтотОбъект.РК_РеквизитКода]);
КонецПроцедуры
&НаСервере
Функция ТекстОписанияПользовательскихОбъектов()
НовыйОбъект = Новый Структура("properties", Новый Структура);
НовыйОбъект.properties.Вставить("Результат", Новый Структура);
customObjects = Новый Структура;
customObjects.Вставить("Параметры", НовыйОбъект);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("customObjects", customObjects));
ТекстJSON = ЗаписьJSON.Закрыть();
Возврат ТекстJSON;
КонецФункции
&НаКлиенте
Функция ИндексныйФайл()
Возврат ЭтотОбъект.РК_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
ЭтотОбъект.РК_HTML = СкопированныйФайл;
ЭтотОбъект.РК_ИсходникиЗагружены = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(ЭтотОбъект.РК_КаталогИсходников);
Файл = Новый ЗаписьТекста(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Исключение
Сообщить("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки()); //, Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеЗаписиФайлаМакета", ЭтотОбъект);
ИмяФайла = ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресМакета);
ДанныеМакета.НачатьЗапись(Оповещение, ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходникиНаКлиенте()
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияВременныхФайлов", ЭтотОбъект);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_КаталогИсходников, "*.*");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияИндексногоФайла", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияФайлаВерсии", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
Сообщить("Не удалось создать каталог для исходников"); // , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияКаталога", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
ЭтотОбъект.РК_КаталогИсходников = ИмяКаталога + "bsl_console\";
Оповещение = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект);
НачатьСозданиеКаталога(Оповещение, ЭтотОбъект.РК_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходники()
Оповещение = Новый ОписаниеОповещения("ПриПолученииКаталогаВременныхФайлов", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
ИзвлечьИсходники();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбнулитьМетаданные() Экспорт
View().clearMetadata();
ОбновитьСписокОбщихМодулей();
ОбновитьПользовательскиеОбъекты();
//View().updateMetadata(ТекстОписанияОбъекта());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПользовательскиеОбъекты()
ТекстОписанияПользовательскихОбъектов = ТекстОписанияПользовательскихОбъектов();
Если ТекстОписанияПользовательскихОбъектов = Неопределено Тогда
Возврат;
КонецЕсли;
View().updateMetadata(ТекстОписанияПользовательскихОбъектов());
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияРедактора()
Инфо = Новый СистемнаяИнформация();
View().init(Инфо.ВерсияПриложения);
View().setOption("autoResizeEditorLayout", Истина);
View().setOption("renderQueryDelimiters", Истина);
View().setOption("generateModificationEvent", Истина);
View().hideScrollX();
View().hideScrollY();
ПодключитьОбработчикОжидания("ОбнулитьМетаданные", 1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейсРедактора
&НаКлиенте
Функция View() Экспорт
Возврат Элементы.ПолеHTML.Документ.defaultView;
КонецФункции
&НаКлиенте
Процедура УстановитьТекст(Текст, Позиция, УчитыватьОтступПервойСтроки)
View().setText(Текст, Позиция, УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстКода() Экспорт
Объект[ЭтотОбъект.РК_РеквизитКода] = ЭтотОбъект.View().getText();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекст(ДляВыполнения = Ложь)
Код = View().getText();
Возврат Код;
КонецФункции
#КонецОбласти
#Область КонструкторЗапросов
&НаКлиенте
Процедура ПриЗакрытииКонструктораЗапросов(Текст, ДопПараметры) Экспорт
Если Текст <> Неопределено Тогда
Если Не View().queryMode Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, Символы.ПС + "|");
Текст = СтрЗаменить(Текст, """", """""");
Текст = """" + Текст + """";
КонецЕсли;
УстановитьТекст(Текст, ДопПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(Текст, ДопПараметры)
Конструктор = Новый КонструкторЗапроса();
Если ЗначениеЗаполнено(Текст) Тогда
Попытка
Конструктор.Текст = Текст;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте запроса:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораЗапросов", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовыйЗапрос(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторЗапроса("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьТекстЗапроса(Текст)
ТекстЗапроса = СтрЗаменить(Текст, "|", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """""", "$");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$", """");
Возврат ТекстЗапроса;
КонецФункции
&НаКлиенте
Процедура ВызватьКонструкторЗапроса(ПараметрыЗапроса) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовыйЗапрос", ЭтотОбъект);
ТекстВопроса = "Не найден текст запроса." + Символы.ПС + "Создать новый запрос?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТекстЗапроса = ПодготовитьТекстЗапроса(ПараметрыЗапроса.text);
ОткрытьКонструкторЗапроса(ТекстЗапроса, ПараметрыЗапроса.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонструкторФорматнойСтроки
&НаКлиенте
Процедура ПриЗакрытииКонструктораФорматнойСтроки(ФорматнаяСтрока, ДопПараметры) Экспорт
Если ФорматнаяСтрока <> Неопределено Тогда
ФорматнаяСтрока = СтрЗаменить(ФорматнаяСтрока, "'", "");
ФорматнаяСтрока = """" + ФорматнаяСтрока + """";
УстановитьТекст(ФорматнаяСтрока, ДопПараметры, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ДопПараметры)
Конструктор = Новый КонструкторФорматнойСтроки();
Попытка
Конструктор.Текст = ФорматнаяСтрока;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте форматной строки:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораФорматнойСтроки", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовуюФорматнуюСтроку(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторФорматнойСтроки("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВызватьКонструкторФорматнойСтроки(ПараметрыСтроки) Экспорт
Если ПараметрыСтроки = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовуюФорматнуюСтроку", ЭтотОбъект);
ТекстВопроса = "Форматная строка не найдена." + Символы.ПС + "Создать новую форматную строку?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ФорматнаяСтрока = СтрЗаменить(СтрЗаменить(ПараметрыСтроки.text, "|", ""), """", "");
ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ПараметрыСтроки.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДинамическоеОбновлениеМетаданных
&НаКлиенте
Функция ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьОписаниеОбъектаМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьСписокОбъектовМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбработкаСобытияПолученияМетаданных(Событие) Экспорт
ПараметрыЗапроса = НРег(Событие.metadata);
ВызыватьПодсказку = (Событие.trigger = "suggestion");
ДанныеОбновлены = Ложь;
Если 0 < СтрНайти(ПараметрыЗапроса, ".") Тогда
ЧастиЗапроса = СтрРазделить(ПараметрыЗапроса, ".");
Если ЧастиЗапроса[0] = "module" Тогда
Если ЧастиЗапроса.Количество() = 2 Тогда
ДанныеОбновлены = ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса);
Иначе
ДанныеОбновлены = ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Если Событие.trigger = "suggestion" И ДанныеОбновлены Тогда
View().triggerSuggestions();
КонецЕсли;
Если Событие.trigger = "snippet" Тогда
View().updateSnippetByGUID(Событие.snippet_guid);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСобытияПолученияПеременной(Событие) Экспорт
ИмяПеременной = Событие.variableName;
ИдентификаторПеременной = Событие.variableId;
ПутьКДанным = Событие.variablePath;
ПутьКДанным = СтрЗаменить(ПутьКДанным, "undefined", "");
Описание = РК_Сервер.ПолучитьОписаниеПеременной(ИдентификаторПеременной, ИмяПеременной, ПутьКДанным, Объект.РК_АдресХраненияПеременных);
Если ЗначениеЗаполнено(Описание) Тогда
View().updateVariableDescription(ИдентификаторПеременной, Описание);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаОбщихМодулейКлиент
&НаСервере
Функция СохранитьОбщиеМодулиВХранилище(КоллекцияОбщихМодулей) Экспорт
Файл = Новый ЗаписьJSON();
Файл.УстановитьСтроку();
Попытка
ЗаписатьJSON(Файл, КоллекцияОбщихМодулей.Общие);
Исключение
ВызватьИсключение("Не удалось сохранить коллекцию метаданных:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ЗначениеКоллекции = Файл.Закрыть();
Возврат ПоместитьВоВременноеХранилище(ЗначениеКоллекции, Новый УникальныйИдентификатор());
КонецФункции
&НаСервере
Процедура ЗаполнитьИменаОбщихМодулей(КоллекцияОбщихМодулей) Экспорт
// Соответствие между именем общего неглобального модуля в нижнем регистре
// и именем модуля, как оно задано в конфигураторе для правильной загрузки
// текстов общих модулей
ОбщиеМодули = Новый Соответствие();
Для Каждого Обход Из КоллекцияОбщихМодулей.Общие Цикл
ОбщиеМодули.Вставить(НРег(Обход.Ключ), Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ИменаОбщихМодулей = Новый ФиксированноеСоответствие(ОбщиеМодули);
// Именя глобальных модулей для загрузки текстов
Модули = Новый Массив();
Для Каждого Обход Из КоллекцияОбщихМодулей.Глобальные Цикл
Модули.Добавить(Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ГлобальныйМодули = Новый ФиксированныйМассив(Модули);
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
Путь = СтрРазделить(ПолноеИмяФайла, ЭтотОбъект.РК_РазделительПути, Ложь);
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
КонецФункции
&НаКлиенте
Функция НормализоватьПуть(Путь)
Путь = СокрЛП(Путь);
Если Прав(Путь, 1) <> ЭтотОбъект.РК_РазделительПути Тогда
Путь = Путь + ЭтотОбъект.РК_РазделительПути;
КонецЕсли;
Возврат Путь;
КонецФункции
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
КаталогИсходногоКода = ЭтотОбъект.РК_КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
Возврат КаталогИсходногоКода;
КонецФункции
&НаКлиенте
Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + ЭтотОбъект.РК_РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст);
КонецЦикла;
Состояние("Общие модули загружены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
ИмяВКонфигураторе = ЭтотОбъект.РК_ИменаОбщихМодулей.Получить(НРег(ИмяМодуля));
Если ИмяВКонфигураторе = Неопределено Тогда
ИмяВКонфигураторе = ИмяМодуля;
КонецЕсли;
ФайлМодуля = СтрШаблон("CommonModules%1%2%1Ext%1Module.bsl", ЭтотОбъект.РК_РазделительПути, ИмяВКонфигураторе);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
ИмяТипа = ?(ТипМодуля = "manager", "ManagerModule", "ObjectModule");
ФайлМодуля = СтрШаблон("%1%2Ext%2%3.bsl", СтруктураВыгрузки.ИмяКаталога, ЭтотОбъект.РК_РазделительПути, ИмяТипа);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = РК_Сервер.ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
ЗагруженоФункций = View().parseMetadataModule(Модуль.Текст, АдресЗагрузки);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ЭтотОбъект.РК_ГлобальныйМодули <> Неопределено И 0 < ЭтотОбъект.РК_ГлобальныйМодули.Количество());
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЕстьГлобальныеМодули Тогда
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
Если КаталогНаДиске.Существует() Тогда
Индекс = 0;
Пока Индекс < ЭтотОбъект.РК_ГлобальныйМодули.Количество() Цикл
ИмяМодуля = ЭтотОбъект.РК_ГлобальныйМодули.Получить(Индекс);
ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Истина);
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
ИмяМодуля = ЧастиЗапроса[1];
ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 4;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
СтруктураВыгрузки = Новый Структура();
СтруктураВыгрузки.Вставить("ТипМодуля" , ЧастиЗапроса[1]);
СтруктураВыгрузки.Вставить("ТипМетаданных" , ЧастиЗапроса[2]);
СтруктураВыгрузки.Вставить("ОбъектМетаданных" , ЧастиЗапроса[3]);
РК_Сервер.ДополнитьСтруктуруВыгрузкиИсходниковМетаданных(СтруктураВыгрузки, ЭтотОбъект.РК_РазделительПути);
Если ЗначениеЗаполнено(СтруктураВыгрузки.ИмяКаталога) Тогда
ЗагруженоФункций = ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокОбщихМодулей()
КоллекцияМетаданных = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресОбщихМодулей);
Если КоллекцияМетаданных <> Неопределено Тогда
Результат = View().updateMetadata(КоллекцияМетаданных, "commonModules.items");
ЗагрузитьГлобальныеМодули();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаВЧисло(Значение, ЗначениеПоУмолчанию = 0)
СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = ТипЧисло.ПривестиЗначение(Значение);
Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, ЗначениеПоУмолчанию);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(Текст)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыводаОшибки(ДопПараметры) Экспорт
Если ДопПараметры.ЗакрыватьКонсоль Тогда
ЗакрытьКонсоль(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Текст, ЗакрыватьКонсоль)
ПараметрыОповещения = Новый Структура("ЗакрыватьКонсоль", ЗакрыватьКонсоль);
Оповещение = Новый ОписаниеОповещения("ПослеВыводаОшибки", ЭтотОбъект, ПараметрыОповещения);
ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьРазделительПути()
ЭтотОбъект.РК_РазделительПути = ПолучитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИмяТемы()
ИмяТемы = Неопределено;
Имена = Новый Соответствие();
Имена.Вставить("СветлаяТема", "bsl-white");
Имена.Вставить("ТемнаяТема", "bsl-dark");
Для Каждого Элемент Из Элементы.Тема.ПодчиненныеЭлементы Цикл
Если Элемент.Пометка Тогда
ИмяТемы = Имена[Элемент.Имя];
КонецЕсли;
КонецЦикла;
Возврат ИмяТемы;
КонецФункции
&НаКлиенте
Процедура ПереключитьТему(Тема)
View().setTheme(Тема);
КонецПроцедуры
&НаСервере
Функция ЭтотОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект().ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция ПолучитьТекстМакета(ИмяМакета, УдалятьПереносыСтрок)
Макет = ПолучитьМакет(ИмяМакета);
Текст = Макет.ПолучитьТекст();
Если УдалятьПереносыСтрок Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ВебДокументДоступен()
Если Элементы.ПолеHTML.Документ <> Неопределено И Элементы.ПолеHTML.Документ.defaultView <> Неопределено Тогда
Попытка
ПолучитьТекст();
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьПользовательскиеФункции()
JSON = ПолучитьТекстМакета("ПользовательскиеФункции", Истина);
Результат = View().updateCustomFunctions(JSON);
Если ТипЗнч(Результат) = Тип("Булево") Тогда
СообщитьПользователю("Пользовательские функции успешно загружены!");
Иначе
Ошибка = "Не удалось загрузить пользовательские функции: " + Символы.ПС + Результат.errorDescription;
ВывестиОшибку(Ошибка, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
ЭтотОбъект.РК_ИндексныйФайл = "";
Если ДопПараметры.СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКонсоль(СтандартноеЗакрытие)
Если ЗначениеЗаполнено(ЭтотОбъект.РК_ИндексныйФайл) Тогда
ПараметрыОповещения = Новый Структура("СтандартноеЗакрытие", СтандартноеЗакрытие);
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияИндексногоФайла", ЭтотОбъект, ПараметрыОповещения);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
Если СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеБыстрымиПодсказками()
Элементы.БыстрыеПодсказки.Пометка = ЭтотОбъект.БыстрыеПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюКартыКода()
Элементы.КартаКода.Пометка = ЭтотОбъект.ВидимостьКартыКода;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСтрокиСостояния()
Элементы.СтрокаСостояния.Пометка = ЭтотОбъект.ВидимостьСтрокиСостояния;
Если ЭтотОбъект.ВидимостьСтрокиСостояния Тогда
View().showStatusBar();
Иначе
View().hideStatusBar();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюПробеловТабуляций()
Элементы.ОтображатьПробелыИТабуляции.Пометка = ЭтотОбъект.ОтображатьПробелыИТабуляции;
View().renderWhitespace(ЭтотОбъект.ОтображатьПробелыИТабуляции);
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСравнения()
Элементы.СравнитьСОригиналом.Видимость = ЗначениеЗаполнено(ЭтотОбъект.ИмяСохраненногоФайла);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,36 @@
<?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.17">
<Catalog uuid="aede0edc-a3ae-4cc2-856d-717f48458110">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.Метрики" category="Object">
<xr:TypeId>1903603f-a930-474f-8096-835ef064ffa7</xr:TypeId>
<xr:ValueId>3f25b5a3-2202-4ebd-8720-4b2594c87492</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.Метрики" category="Ref">
<xr:TypeId>6c9c5343-298a-4239-83fc-9bc605c56108</xr:TypeId>
<xr:ValueId>2dbe69a2-cdca-4244-a2c2-43c477f47fe6</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.Метрики" category="Selection">
<xr:TypeId>2ab619c1-8012-4baa-aa45-c16d1962229d</xr:TypeId>
<xr:ValueId>898a1b03-6b2b-4762-af1c-1bb7736a01d4</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.Метрики" category="List">
<xr:TypeId>be3a595a-ff62-478d-b2c9-67bcd072c635</xr:TypeId>
<xr:ValueId>62283e85-5a1c-47b6-9483-2c4dfbc503aa</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.Метрики" category="Manager">
<xr:TypeId>0468fe31-3e2d-43d3-8f8f-afa11fc41a46</xr:TypeId>
<xr:ValueId>6a61ae88-7e8d-4892-a120-f5bd4e0eb696</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>Метрики</Name>
<Comment/>
<ExtendedConfigurationObject>4f896512-9bfb-449f-a2fe-56a6f4ca4570</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Form>ФормаЭлемента</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="c9802fce-e5d0-4da4-a859-51f629cd271a">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ФормаЭлемента</Name>
<Comment/>
<ExtendedConfigurationObject>4f30277c-f3b8-4ec3-bcec-605332706c65</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,356 @@
<?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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.17">
<CommandSet>
<ExcludedCommand>Abort</ExcludedCommand>
<ExcludedCommand>Cancel</ExcludedCommand>
<ExcludedCommand>Copy</ExcludedCommand>
<ExcludedCommand>Delete</ExcludedCommand>
<ExcludedCommand>Ignore</ExcludedCommand>
<ExcludedCommand>No</ExcludedCommand>
<ExcludedCommand>OK</ExcludedCommand>
<ExcludedCommand>RestoreValues</ExcludedCommand>
<ExcludedCommand>Retry</ExcludedCommand>
<ExcludedCommand>SaveValues</ExcludedCommand>
<ExcludedCommand>Yes</ExcludedCommand>
</CommandSet>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаВычислитьРезультат" id="43">
<Type>CommandBarButton</Type>
<CommandName>0</CommandName>
<ExtendedTooltip name="ФормаВычислитьРезультатРасширеннаяПодсказка" id="44"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnOpen" callType="After">РК_ПриОткрытииПосле</Event>
<Event name="BeforeWrite" callType="After">РК_ПередЗаписьюПосле</Event>
<Event name="OnCreateAtServer" callType="After">РК_ПриСозданииНаСервереПосле</Event>
</Events>
<ChildItems>
<InputField name="Наименование" id="4">
<EditMode>EnterOnInput</EditMode>
<Width>40</Width>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="6"/>
</InputField>
<UsualGroup name="НаименованиеИНедействителен" id="19">
<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>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="НаименованиеИНедействителенРасширеннаяПодсказка" id="20"/>
<ChildItems>
<UsualGroup name="ГруппаПериодЗамеров" id="32">
<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>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаПериодЗамеровРасширеннаяПодсказка" id="33"/>
<ChildItems>
<InputField name="ПериодЗамеров" id="10">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Замерять каждые</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<SpinButton>true</SpinButton>
<ContextMenu name="ПериодЗамеровКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="ПериодЗамеровРасширеннаяПодсказка" id="12"/>
</InputField>
<LabelDecoration name="ПериодЗамеровЕдИзм" id="34">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>минут</v8:content>
</v8:item>
</Title>
<ContextMenu name="ПериодЗамеровЕдИзмКонтекстноеМеню" id="35"/>
<ExtendedTooltip name="ПериодЗамеровЕдИзмРасширеннаяПодсказка" id="36"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<LabelDecoration name="ОтступПоГоризонтали" id="21">
<HorizontalStretch>true</HorizontalStretch>
<ContextMenu name="ОтступПоГоризонталиКонтекстноеМеню" id="22"/>
<ExtendedTooltip name="ОтступПоГоризонталиРасширеннаяПодсказка" id="23"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаПериодХранения" id="27">
<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>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаПериодХраненияРасширеннаяПодсказка" id="28"/>
<ChildItems>
<InputField name="ПериодХранения" id="24">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Хранить замеры</v8:content>
</v8:item>
</Title>
<SpinButton>true</SpinButton>
<ContextMenu name="ПериодХраненияКонтекстноеМеню" id="25"/>
<ExtendedTooltip name="ПериодХраненияРасширеннаяПодсказка" id="26"/>
</InputField>
<LabelDecoration name="ПериодХраненияЕдИзм" id="29">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>дней (если 0, то бессрочно)</v8:content>
</v8:item>
</Title>
<ContextMenu name="ПериодХраненияЕдИзмКонтекстноеМеню" id="30"/>
<ExtendedTooltip name="ПериодХраненияЕдИзмРасширеннаяПодсказка" id="31"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<CheckBoxField name="Недействителен" id="7">
<TitleLocation>Right</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="НедействителенКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="НедействителенРасширеннаяПодсказка" id="9"/>
</CheckBoxField>
<InputField name="Выражение" id="40">
<AutoMaxWidth>false</AutoMaxWidth>
<Height>9</Height>
<AutoMaxHeight>false</AutoMaxHeight>
<MultiLine>true</MultiLine>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Результат = ... ;</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="41"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="42"/>
</InputField>
<InputField name="Описание" id="37">
<TitleLocation>Left</TitleLocation>
<Height>2</Height>
<VerticalStretch>false</VerticalStretch>
<MultiLine>true</MultiLine>
<ContextMenu name="ОписаниеКонтекстноеМеню" id="38"/>
<ExtendedTooltip name="ОписаниеРасширеннаяПодсказка" id="39"/>
</InputField>
</ChildItems>
<Attributes/>
<BaseForm version="2.17">
<CommandSet>
<ExcludedCommand>Abort</ExcludedCommand>
<ExcludedCommand>Cancel</ExcludedCommand>
<ExcludedCommand>Copy</ExcludedCommand>
<ExcludedCommand>Delete</ExcludedCommand>
<ExcludedCommand>Ignore</ExcludedCommand>
<ExcludedCommand>No</ExcludedCommand>
<ExcludedCommand>OK</ExcludedCommand>
<ExcludedCommand>RestoreValues</ExcludedCommand>
<ExcludedCommand>Retry</ExcludedCommand>
<ExcludedCommand>SaveValues</ExcludedCommand>
<ExcludedCommand>Yes</ExcludedCommand>
</CommandSet>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаВычислитьРезультат" id="43">
<Type>CommandBarButton</Type>
<CommandName>0</CommandName>
<ExtendedTooltip name="ФормаВычислитьРезультатРасширеннаяПодсказка" id="44"/>
</Button>
</ChildItems>
</AutoCommandBar>
<ChildItems>
<InputField name="Наименование" id="4">
<EditMode>EnterOnInput</EditMode>
<Width>40</Width>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="6"/>
</InputField>
<UsualGroup name="НаименованиеИНедействителен" id="19">
<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>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="НаименованиеИНедействителенРасширеннаяПодсказка" id="20"/>
<ChildItems>
<UsualGroup name="ГруппаПериодЗамеров" id="32">
<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>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаПериодЗамеровРасширеннаяПодсказка" id="33"/>
<ChildItems>
<InputField name="ПериодЗамеров" id="10">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Замерять каждые</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<SpinButton>true</SpinButton>
<ContextMenu name="ПериодЗамеровКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="ПериодЗамеровРасширеннаяПодсказка" id="12"/>
</InputField>
<LabelDecoration name="ПериодЗамеровЕдИзм" id="34">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>минут</v8:content>
</v8:item>
</Title>
<ContextMenu name="ПериодЗамеровЕдИзмКонтекстноеМеню" id="35"/>
<ExtendedTooltip name="ПериодЗамеровЕдИзмРасширеннаяПодсказка" id="36"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<LabelDecoration name="ОтступПоГоризонтали" id="21">
<HorizontalStretch>true</HorizontalStretch>
<ContextMenu name="ОтступПоГоризонталиКонтекстноеМеню" id="22"/>
<ExtendedTooltip name="ОтступПоГоризонталиРасширеннаяПодсказка" id="23"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаПериодХранения" id="27">
<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>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаПериодХраненияРасширеннаяПодсказка" id="28"/>
<ChildItems>
<InputField name="ПериодХранения" id="24">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Хранить замеры</v8:content>
</v8:item>
</Title>
<SpinButton>true</SpinButton>
<ContextMenu name="ПериодХраненияКонтекстноеМеню" id="25"/>
<ExtendedTooltip name="ПериодХраненияРасширеннаяПодсказка" id="26"/>
</InputField>
<LabelDecoration name="ПериодХраненияЕдИзм" id="29">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>дней (если 0, то бессрочно)</v8:content>
</v8:item>
</Title>
<ContextMenu name="ПериодХраненияЕдИзмКонтекстноеМеню" id="30"/>
<ExtendedTooltip name="ПериодХраненияЕдИзмРасширеннаяПодсказка" id="31"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<CheckBoxField name="Недействителен" id="7">
<TitleLocation>Right</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="НедействителенКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="НедействителенРасширеннаяПодсказка" id="9"/>
</CheckBoxField>
<InputField name="Выражение" id="40">
<AutoMaxWidth>false</AutoMaxWidth>
<Height>9</Height>
<AutoMaxHeight>false</AutoMaxHeight>
<MultiLine>true</MultiLine>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Результат = ... ;</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="41"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="42"/>
</InputField>
<InputField name="Описание" id="37">
<TitleLocation>Left</TitleLocation>
<Height>2</Height>
<VerticalStretch>false</VerticalStretch>
<MultiLine>true</MultiLine>
<ContextMenu name="ОписаниеКонтекстноеМеню" id="38"/>
<ExtendedTooltip name="ОписаниеРасширеннаяПодсказка" id="39"/>
</InputField>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>

View File

@ -0,0 +1,954 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура РК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
РК_Сервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РК_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Объект[ЭтотОбъект.РК_РеквизитКода] = View().getText();
КонецПроцедуры
&НаКлиенте
Процедура РК_ПриОткрытииПосле(Отказ)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
Процедура ConsoleOnReady(Элемент)
Если ЭтотОбъект.РК_ИсходникиЗагружены Тогда
ИнициализацияРедактора();
//АктивироватьДополнительныеФункции();
ЗагрузитьКод();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ConsoleOnClick(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
РК_Клиент.ОбработатьСобытиеРедактора(ДанныеСобытия.Event.eventData1C, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИнициализацияРедактора
&НаКлиенте
Процедура ЗагрузитьКод() Экспорт
вью = View();
вью.minimap(Ложь);
вью.setText(Объект[ЭтотОбъект.РК_РеквизитКода], Неопределено, Ложь);
вью.setOriginalText(Объект[ЭтотОбъект.РК_РеквизитКода]);
КонецПроцедуры
&НаСервере
Функция ТекстОписанияПользовательскихОбъектов()
customObjects = Новый Структура;
customObjects.Вставить("Результат", Новый Структура);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("customObjects", customObjects));
ТекстJSON = ЗаписьJSON.Закрыть();
Возврат ТекстJSON;
КонецФункции
&НаКлиенте
Функция ИндексныйФайл()
Возврат ЭтотОбъект.РК_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
ЭтотОбъект.РК_HTML = СкопированныйФайл;
ЭтотОбъект.РК_ИсходникиЗагружены = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(ЭтотОбъект.РК_КаталогИсходников);
Файл = Новый ЗаписьТекста(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Исключение
Сообщить("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки()); //, Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеЗаписиФайлаМакета", ЭтотОбъект);
ИмяФайла = ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресМакета);
ДанныеМакета.НачатьЗапись(Оповещение, ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходникиНаКлиенте()
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияВременныхФайлов", ЭтотОбъект);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_КаталогИсходников, "*.*");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияИндексногоФайла", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияФайлаВерсии", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
Сообщить("Не удалось создать каталог для исходников"); // , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияКаталога", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
ЭтотОбъект.РК_КаталогИсходников = ИмяКаталога + "bsl_console\";
Оповещение = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект);
НачатьСозданиеКаталога(Оповещение, ЭтотОбъект.РК_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходники()
Оповещение = Новый ОписаниеОповещения("ПриПолученииКаталогаВременныхФайлов", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
ИзвлечьИсходники();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбнулитьМетаданные() Экспорт
View().clearMetadata();
ОбновитьСписокОбщихМодулей();
ОбновитьПользовательскиеОбъекты();
//View().updateMetadata(ТекстОписанияОбъекта());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПользовательскиеОбъекты()
ТекстОписанияПользовательскихОбъектов = ТекстОписанияПользовательскихОбъектов();
Если ТекстОписанияПользовательскихОбъектов = Неопределено Тогда
Возврат;
КонецЕсли;
View().updateMetadata(ТекстОписанияПользовательскихОбъектов());
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияРедактора()
Инфо = Новый СистемнаяИнформация();
View().init(Инфо.ВерсияПриложения);
View().setOption("autoResizeEditorLayout", Истина);
View().setOption("renderQueryDelimiters", Истина);
View().setOption("generateModificationEvent", Истина);
View().hideScrollX();
View().hideScrollY();
ПодключитьОбработчикОжидания("ОбнулитьМетаданные", 1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейсРедактора
&НаКлиенте
Функция View() Экспорт
Возврат Элементы.ПолеHTML.Документ.defaultView;
КонецФункции
&НаКлиенте
Процедура УстановитьТекст(Текст, Позиция, УчитыватьОтступПервойСтроки)
View().setText(Текст, Позиция, УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстКода() Экспорт
Объект[ЭтотОбъект.РК_РеквизитКода] = ЭтотОбъект.View().getText();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекст(ДляВыполнения = Ложь)
Код = View().getText();
Возврат Код;
КонецФункции
#КонецОбласти
#Область КонструкторЗапросов
&НаКлиенте
Процедура ПриЗакрытииКонструктораЗапросов(Текст, ДопПараметры) Экспорт
Если Текст <> Неопределено Тогда
Если Не View().queryMode Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, Символы.ПС + "|");
Текст = СтрЗаменить(Текст, """", """""");
Текст = """" + Текст + """";
КонецЕсли;
УстановитьТекст(Текст, ДопПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(Текст, ДопПараметры)
Конструктор = Новый КонструкторЗапроса();
Если ЗначениеЗаполнено(Текст) Тогда
Попытка
Конструктор.Текст = Текст;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте запроса:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораЗапросов", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовыйЗапрос(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторЗапроса("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьТекстЗапроса(Текст)
ТекстЗапроса = СтрЗаменить(Текст, "|", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """""", "$");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$", """");
Возврат ТекстЗапроса;
КонецФункции
&НаКлиенте
Процедура ВызватьКонструкторЗапроса(ПараметрыЗапроса) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовыйЗапрос", ЭтотОбъект);
ТекстВопроса = "Не найден текст запроса." + Символы.ПС + "Создать новый запрос?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТекстЗапроса = ПодготовитьТекстЗапроса(ПараметрыЗапроса.text);
ОткрытьКонструкторЗапроса(ТекстЗапроса, ПараметрыЗапроса.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонструкторФорматнойСтроки
&НаКлиенте
Процедура ПриЗакрытииКонструктораФорматнойСтроки(ФорматнаяСтрока, ДопПараметры) Экспорт
Если ФорматнаяСтрока <> Неопределено Тогда
ФорматнаяСтрока = СтрЗаменить(ФорматнаяСтрока, "'", "");
ФорматнаяСтрока = """" + ФорматнаяСтрока + """";
УстановитьТекст(ФорматнаяСтрока, ДопПараметры, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ДопПараметры)
Конструктор = Новый КонструкторФорматнойСтроки();
Попытка
Конструктор.Текст = ФорматнаяСтрока;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте форматной строки:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораФорматнойСтроки", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовуюФорматнуюСтроку(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторФорматнойСтроки("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВызватьКонструкторФорматнойСтроки(ПараметрыСтроки) Экспорт
Если ПараметрыСтроки = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовуюФорматнуюСтроку", ЭтотОбъект);
ТекстВопроса = "Форматная строка не найдена." + Символы.ПС + "Создать новую форматную строку?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ФорматнаяСтрока = СтрЗаменить(СтрЗаменить(ПараметрыСтроки.text, "|", ""), """", "");
ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ПараметрыСтроки.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДинамическоеОбновлениеМетаданных
&НаКлиенте
Функция ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьОписаниеОбъектаМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьСписокОбъектовМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбработкаСобытияПолученияМетаданных(Событие) Экспорт
ПараметрыЗапроса = НРег(Событие.metadata);
ВызыватьПодсказку = (Событие.trigger = "suggestion");
ДанныеОбновлены = Ложь;
Если 0 < СтрНайти(ПараметрыЗапроса, ".") Тогда
ЧастиЗапроса = СтрРазделить(ПараметрыЗапроса, ".");
Если ЧастиЗапроса[0] = "module" Тогда
Если ЧастиЗапроса.Количество() = 2 Тогда
ДанныеОбновлены = ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса);
Иначе
ДанныеОбновлены = ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Если Событие.trigger = "suggestion" И ДанныеОбновлены Тогда
View().triggerSuggestions();
КонецЕсли;
Если Событие.trigger = "snippet" Тогда
View().updateSnippetByGUID(Событие.snippet_guid);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСобытияПолученияПеременной(Событие) Экспорт
ИмяПеременной = Событие.variableName;
ИдентификаторПеременной = Событие.variableId;
ПутьКДанным = Событие.variablePath;
ПутьКДанным = СтрЗаменить(ПутьКДанным, "undefined", "");
Описание = РК_Сервер.ПолучитьОписаниеПеременной(ИдентификаторПеременной, ИмяПеременной, ПутьКДанным, Объект.РК_АдресХраненияПеременных);
Если ЗначениеЗаполнено(Описание) Тогда
View().updateVariableDescription(ИдентификаторПеременной, Описание);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаОбщихМодулейКлиент
&НаСервере
Функция СохранитьОбщиеМодулиВХранилище(КоллекцияОбщихМодулей) Экспорт
Файл = Новый ЗаписьJSON();
Файл.УстановитьСтроку();
Попытка
ЗаписатьJSON(Файл, КоллекцияОбщихМодулей.Общие);
Исключение
ВызватьИсключение("Не удалось сохранить коллекцию метаданных:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ЗначениеКоллекции = Файл.Закрыть();
Возврат ПоместитьВоВременноеХранилище(ЗначениеКоллекции, Новый УникальныйИдентификатор());
КонецФункции
&НаСервере
Процедура ЗаполнитьИменаОбщихМодулей(КоллекцияОбщихМодулей) Экспорт
// Соответствие между именем общего неглобального модуля в нижнем регистре
// и именем модуля, как оно задано в конфигураторе для правильной загрузки
// текстов общих модулей
ОбщиеМодули = Новый Соответствие();
Для Каждого Обход Из КоллекцияОбщихМодулей.Общие Цикл
ОбщиеМодули.Вставить(НРег(Обход.Ключ), Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ИменаОбщихМодулей = Новый ФиксированноеСоответствие(ОбщиеМодули);
// Именя глобальных модулей для загрузки текстов
Модули = Новый Массив();
Для Каждого Обход Из КоллекцияОбщихМодулей.Глобальные Цикл
Модули.Добавить(Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ГлобальныйМодули = Новый ФиксированныйМассив(Модули);
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
Путь = СтрРазделить(ПолноеИмяФайла, ЭтотОбъект.РК_РазделительПути, Ложь);
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
КонецФункции
&НаКлиенте
Функция НормализоватьПуть(Путь)
Путь = СокрЛП(Путь);
Если Прав(Путь, 1) <> ЭтотОбъект.РК_РазделительПути Тогда
Путь = Путь + ЭтотОбъект.РК_РазделительПути;
КонецЕсли;
Возврат Путь;
КонецФункции
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
КаталогИсходногоКода = ЭтотОбъект.РК_КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
Возврат КаталогИсходногоКода;
КонецФункции
&НаКлиенте
Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + ЭтотОбъект.РК_РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст);
КонецЦикла;
Состояние("Общие модули загружены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
ИмяВКонфигураторе = ЭтотОбъект.РК_ИменаОбщихМодулей.Получить(НРег(ИмяМодуля));
Если ИмяВКонфигураторе = Неопределено Тогда
ИмяВКонфигураторе = ИмяМодуля;
КонецЕсли;
ФайлМодуля = СтрШаблон("CommonModules%1%2%1Ext%1Module.bsl", ЭтотОбъект.РК_РазделительПути, ИмяВКонфигураторе);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
ИмяТипа = ?(ТипМодуля = "manager", "ManagerModule", "ObjectModule");
ФайлМодуля = СтрШаблон("%1%2Ext%2%3.bsl", СтруктураВыгрузки.ИмяКаталога, ЭтотОбъект.РК_РазделительПути, ИмяТипа);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = РК_Сервер.ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
ЗагруженоФункций = View().parseMetadataModule(Модуль.Текст, АдресЗагрузки);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ЭтотОбъект.РК_ГлобальныйМодули <> Неопределено И 0 < ЭтотОбъект.РК_ГлобальныйМодули.Количество());
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЕстьГлобальныеМодули Тогда
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
Если КаталогНаДиске.Существует() Тогда
Индекс = 0;
Пока Индекс < ЭтотОбъект.РК_ГлобальныйМодули.Количество() Цикл
ИмяМодуля = ЭтотОбъект.РК_ГлобальныйМодули.Получить(Индекс);
ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Истина);
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
ИмяМодуля = ЧастиЗапроса[1];
ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 4;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
СтруктураВыгрузки = Новый Структура();
СтруктураВыгрузки.Вставить("ТипМодуля" , ЧастиЗапроса[1]);
СтруктураВыгрузки.Вставить("ТипМетаданных" , ЧастиЗапроса[2]);
СтруктураВыгрузки.Вставить("ОбъектМетаданных" , ЧастиЗапроса[3]);
РК_Сервер.ДополнитьСтруктуруВыгрузкиИсходниковМетаданных(СтруктураВыгрузки, ЭтотОбъект.РК_РазделительПути);
Если ЗначениеЗаполнено(СтруктураВыгрузки.ИмяКаталога) Тогда
ЗагруженоФункций = ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокОбщихМодулей()
КоллекцияМетаданных = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресОбщихМодулей);
Если КоллекцияМетаданных <> Неопределено Тогда
Результат = View().updateMetadata(КоллекцияМетаданных, "commonModules.items");
ЗагрузитьГлобальныеМодули();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаВЧисло(Значение, ЗначениеПоУмолчанию = 0)
СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = ТипЧисло.ПривестиЗначение(Значение);
Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, ЗначениеПоУмолчанию);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(Текст)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыводаОшибки(ДопПараметры) Экспорт
Если ДопПараметры.ЗакрыватьКонсоль Тогда
ЗакрытьКонсоль(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Текст, ЗакрыватьКонсоль)
ПараметрыОповещения = Новый Структура("ЗакрыватьКонсоль", ЗакрыватьКонсоль);
Оповещение = Новый ОписаниеОповещения("ПослеВыводаОшибки", ЭтотОбъект, ПараметрыОповещения);
ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьРазделительПути()
ЭтотОбъект.РК_РазделительПути = ПолучитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИмяТемы()
ИмяТемы = Неопределено;
Имена = Новый Соответствие();
Имена.Вставить("СветлаяТема", "bsl-white");
Имена.Вставить("ТемнаяТема", "bsl-dark");
Для Каждого Элемент Из Элементы.Тема.ПодчиненныеЭлементы Цикл
Если Элемент.Пометка Тогда
ИмяТемы = Имена[Элемент.Имя];
КонецЕсли;
КонецЦикла;
Возврат ИмяТемы;
КонецФункции
&НаКлиенте
Процедура ПереключитьТему(Тема)
View().setTheme(Тема);
КонецПроцедуры
&НаСервере
Функция ЭтотОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект().ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция ПолучитьТекстМакета(ИмяМакета, УдалятьПереносыСтрок)
Макет = ПолучитьМакет(ИмяМакета);
Текст = Макет.ПолучитьТекст();
Если УдалятьПереносыСтрок Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ВебДокументДоступен()
Если Элементы.ПолеHTML.Документ <> Неопределено И Элементы.ПолеHTML.Документ.defaultView <> Неопределено Тогда
Попытка
ПолучитьТекст();
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьПользовательскиеФункции()
JSON = ПолучитьТекстМакета("ПользовательскиеФункции", Истина);
Результат = View().updateCustomFunctions(JSON);
Если ТипЗнч(Результат) = Тип("Булево") Тогда
СообщитьПользователю("Пользовательские функции успешно загружены!");
Иначе
Ошибка = "Не удалось загрузить пользовательские функции: " + Символы.ПС + Результат.errorDescription;
ВывестиОшибку(Ошибка, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
ЭтотОбъект.РК_ИндексныйФайл = "";
Если ДопПараметры.СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКонсоль(СтандартноеЗакрытие)
Если ЗначениеЗаполнено(ЭтотОбъект.РК_ИндексныйФайл) Тогда
ПараметрыОповещения = Новый Структура("СтандартноеЗакрытие", СтандартноеЗакрытие);
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияИндексногоФайла", ЭтотОбъект, ПараметрыОповещения);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
Если СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеБыстрымиПодсказками()
Элементы.БыстрыеПодсказки.Пометка = ЭтотОбъект.БыстрыеПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюКартыКода()
Элементы.КартаКода.Пометка = ЭтотОбъект.ВидимостьКартыКода;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСтрокиСостояния()
Элементы.СтрокаСостояния.Пометка = ЭтотОбъект.ВидимостьСтрокиСостояния;
Если ЭтотОбъект.ВидимостьСтрокиСостояния Тогда
View().showStatusBar();
Иначе
View().hideStatusBar();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюПробеловТабуляций()
Элементы.ОтображатьПробелыИТабуляции.Пометка = ЭтотОбъект.ОтображатьПробелыИТабуляции;
View().renderWhitespace(ЭтотОбъект.ОтображатьПробелыИТабуляции);
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСравнения()
Элементы.СравнитьСОригиналом.Видимость = ЗначениеЗаполнено(ЭтотОбъект.ИмяСохраненногоФайла);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,36 @@
<?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.17">
<Catalog uuid="49b3a2a8-a49d-4719-a147-d9c3be2870cc">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.ОбластиПоискаЧатБота" category="Object">
<xr:TypeId>dc318959-4d65-46f7-a3d6-60fcfb6bfa75</xr:TypeId>
<xr:ValueId>67250c82-6726-49cd-9108-c2a3e51de398</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.ОбластиПоискаЧатБота" category="Ref">
<xr:TypeId>506d4cb5-5ddc-4661-add8-8279d1a860e5</xr:TypeId>
<xr:ValueId>02ad5d99-db95-418b-8431-de1a87a73955</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.ОбластиПоискаЧатБота" category="Selection">
<xr:TypeId>5e3cb9be-28db-4bfe-898a-db8138fda5ce</xr:TypeId>
<xr:ValueId>e4e7792b-9357-4ce9-be8a-0f97865fca0c</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.ОбластиПоискаЧатБота" category="List">
<xr:TypeId>84dda006-7cf5-47f0-b798-de846775ea44</xr:TypeId>
<xr:ValueId>c157a411-b387-45c1-96a9-e7de110794c8</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.ОбластиПоискаЧатБота" category="Manager">
<xr:TypeId>83d61031-97ba-42d4-b14e-ea15a576aa57</xr:TypeId>
<xr:ValueId>b1818dde-0cd8-483a-ad4b-873945486538</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ОбластиПоискаЧатБота</Name>
<Comment/>
<ExtendedConfigurationObject>17020a52-8a24-4d68-aae7-ffa19da39ffe</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Form>ФормаЭлемента</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="6d772ac6-84fd-4881-b8bf-7a79912695d3">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ФормаЭлемента</Name>
<Comment/>
<ExtendedConfigurationObject>127b8fde-e392-4ec0-87a4-3f8119911be5</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,183 @@
<?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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<CommandSet>
<ExcludedCommand>Abort</ExcludedCommand>
<ExcludedCommand>Cancel</ExcludedCommand>
<ExcludedCommand>ChangeHistory</ExcludedCommand>
<ExcludedCommand>Close</ExcludedCommand>
<ExcludedCommand>Copy</ExcludedCommand>
<ExcludedCommand>CustomizeForm</ExcludedCommand>
<ExcludedCommand>Delete</ExcludedCommand>
<ExcludedCommand>Help</ExcludedCommand>
<ExcludedCommand>Ignore</ExcludedCommand>
<ExcludedCommand>No</ExcludedCommand>
<ExcludedCommand>OK</ExcludedCommand>
<ExcludedCommand>OpenFromMainServer</ExcludedCommand>
<ExcludedCommand>OpenFromStandaloneServer</ExcludedCommand>
<ExcludedCommand>Reread</ExcludedCommand>
<ExcludedCommand>RestoreValues</ExcludedCommand>
<ExcludedCommand>Retry</ExcludedCommand>
<ExcludedCommand>SaveValues</ExcludedCommand>
<ExcludedCommand>ShowInList</ExcludedCommand>
<ExcludedCommand>Yes</ExcludedCommand>
</CommandSet>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаЗаполнить" id="14">
<Type>CommandBarButton</Type>
<CommandName>0</CommandName>
<ToolTipRepresentation>Balloon</ToolTipRepresentation>
<ExtendedTooltip name="ФормаЗаполнитьРасширеннаяПодсказка" id="15"/>
</Button>
<Button name="ФормаПроверить" id="10">
<Type>CommandBarButton</Type>
<CommandName>0</CommandName>
<ExtendedTooltip name="ФормаПроверитьРасширеннаяПодсказка" id="11"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnOpen" callType="After">РК_ПриОткрытииПосле</Event>
<Event name="BeforeWrite" callType="After">РК_ПередЗаписьюПосле</Event>
<Event name="OnCreateAtServer" callType="After">РК_ПриСозданииНаСервереПосле</Event>
</Events>
<ChildItems>
<UsualGroup name="НаименованиеИТекстСообщения" id="12">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Наименование и текст сообщения</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Наименование и текст сообщения</v8:content>
</v8:item>
</ToolTip>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="НаименованиеИТекстСообщенияРасширеннаяПодсказка" id="13"/>
<ChildItems>
<InputField name="Наименование" id="4">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>25</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Наименование</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="6"/>
</InputField>
</ChildItems>
</UsualGroup>
<InputField name="Скрипт" id="7">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>50</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>10</Height>
<MultiLine>true</MultiLine>
<ContextMenu name="СкриптКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="СкриптРасширеннаяПодсказка" id="9"/>
</InputField>
</ChildItems>
<Attributes/>
<BaseForm version="2.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<CommandSet>
<ExcludedCommand>Abort</ExcludedCommand>
<ExcludedCommand>Cancel</ExcludedCommand>
<ExcludedCommand>ChangeHistory</ExcludedCommand>
<ExcludedCommand>Close</ExcludedCommand>
<ExcludedCommand>Copy</ExcludedCommand>
<ExcludedCommand>CustomizeForm</ExcludedCommand>
<ExcludedCommand>Delete</ExcludedCommand>
<ExcludedCommand>Help</ExcludedCommand>
<ExcludedCommand>Ignore</ExcludedCommand>
<ExcludedCommand>No</ExcludedCommand>
<ExcludedCommand>OK</ExcludedCommand>
<ExcludedCommand>OpenFromMainServer</ExcludedCommand>
<ExcludedCommand>OpenFromStandaloneServer</ExcludedCommand>
<ExcludedCommand>Reread</ExcludedCommand>
<ExcludedCommand>RestoreValues</ExcludedCommand>
<ExcludedCommand>Retry</ExcludedCommand>
<ExcludedCommand>SaveValues</ExcludedCommand>
<ExcludedCommand>ShowInList</ExcludedCommand>
<ExcludedCommand>Yes</ExcludedCommand>
</CommandSet>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаЗаполнить" id="14">
<Type>CommandBarButton</Type>
<CommandName>0</CommandName>
<ToolTipRepresentation>Balloon</ToolTipRepresentation>
<ExtendedTooltip name="ФормаЗаполнитьРасширеннаяПодсказка" id="15"/>
</Button>
</ChildItems>
</AutoCommandBar>
<ChildItems>
<UsualGroup name="НаименованиеИТекстСообщения" id="12">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Наименование и текст сообщения</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Наименование и текст сообщения</v8:content>
</v8:item>
</ToolTip>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="НаименованиеИТекстСообщенияРасширеннаяПодсказка" id="13"/>
<ChildItems>
<InputField name="Наименование" id="4">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>25</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Наименование</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="6"/>
</InputField>
</ChildItems>
</UsualGroup>
<InputField name="Скрипт" id="7">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>50</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>10</Height>
<MultiLine>true</MultiLine>
<ContextMenu name="СкриптКонтекстноеМеню" id="8">
<ChildItems>
<Button name="ФормаПроверить" id="10">
<Type>CommandBarButton</Type>
<CommandName>0</CommandName>
<ExtendedTooltip name="ФормаПроверитьРасширеннаяПодсказка" id="11"/>
</Button>
</ChildItems>
</ContextMenu>
<ExtendedTooltip name="СкриптРасширеннаяПодсказка" id="9"/>
</InputField>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>

View File

@ -0,0 +1,957 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура РК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
РК_Сервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РК_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Объект[ЭтотОбъект.РК_РеквизитКода] = View().getText();
КонецПроцедуры
&НаКлиенте
Процедура РК_ПриОткрытииПосле(Отказ)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
Процедура ConsoleOnReady(Элемент)
Если ЭтотОбъект.РК_ИсходникиЗагружены Тогда
ИнициализацияРедактора();
//АктивироватьДополнительныеФункции();
ЗагрузитьКод();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ConsoleOnClick(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
РК_Клиент.ОбработатьСобытиеРедактора(ДанныеСобытия.Event.eventData1C, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИнициализацияРедактора
&НаКлиенте
Процедура ЗагрузитьКод() Экспорт
вью = View();
вью.minimap(Ложь);
вью.setText(Объект[ЭтотОбъект.РК_РеквизитКода], Неопределено, Ложь);
вью.setOriginalText(Объект[ЭтотОбъект.РК_РеквизитКода]);
КонецПроцедуры
&НаСервере
Функция ТекстОписанияПользовательскихОбъектов()
customObjects = Новый Структура;
customObjects.Вставить("ТекстСообщения", Новый Структура);
customObjects.Вставить("Результат", Новый Структура("properties", Новый Структура));
customObjects.Результат.properties.Вставить("Сообщение", Новый Структура);
customObjects.Результат.properties.Вставить("Действия", Новый Структура);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("customObjects", customObjects));
ТекстJSON = ЗаписьJSON.Закрыть();
Возврат ТекстJSON;
КонецФункции
&НаКлиенте
Функция ИндексныйФайл()
Возврат ЭтотОбъект.РК_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
ЭтотОбъект.РК_HTML = СкопированныйФайл;
ЭтотОбъект.РК_ИсходникиЗагружены = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(ЭтотОбъект.РК_КаталогИсходников);
Файл = Новый ЗаписьТекста(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Исключение
Сообщить("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки()); //, Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеЗаписиФайлаМакета", ЭтотОбъект);
ИмяФайла = ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресМакета);
ДанныеМакета.НачатьЗапись(Оповещение, ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходникиНаКлиенте()
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияВременныхФайлов", ЭтотОбъект);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_КаталогИсходников, "*.*");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияИндексногоФайла", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияФайлаВерсии", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
Сообщить("Не удалось создать каталог для исходников"); // , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияКаталога", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
ЭтотОбъект.РК_КаталогИсходников = ИмяКаталога + "bsl_console\";
Оповещение = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект);
НачатьСозданиеКаталога(Оповещение, ЭтотОбъект.РК_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходники()
Оповещение = Новый ОписаниеОповещения("ПриПолученииКаталогаВременныхФайлов", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
ИзвлечьИсходники();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбнулитьМетаданные() Экспорт
View().clearMetadata();
ОбновитьСписокОбщихМодулей();
ОбновитьПользовательскиеОбъекты();
//View().updateMetadata(ТекстОписанияОбъекта());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПользовательскиеОбъекты()
ТекстОписанияПользовательскихОбъектов = ТекстОписанияПользовательскихОбъектов();
Если ТекстОписанияПользовательскихОбъектов = Неопределено Тогда
Возврат;
КонецЕсли;
View().updateMetadata(ТекстОписанияПользовательскихОбъектов());
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияРедактора()
Инфо = Новый СистемнаяИнформация();
View().init(Инфо.ВерсияПриложения);
View().setOption("autoResizeEditorLayout", Истина);
View().setOption("renderQueryDelimiters", Истина);
View().setOption("generateModificationEvent", Истина);
View().hideScrollX();
View().hideScrollY();
ПодключитьОбработчикОжидания("ОбнулитьМетаданные", 1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейсРедактора
&НаКлиенте
Функция View() Экспорт
Возврат Элементы.ПолеHTML.Документ.defaultView;
КонецФункции
&НаКлиенте
Процедура УстановитьТекст(Текст, Позиция, УчитыватьОтступПервойСтроки)
View().setText(Текст, Позиция, УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстКода() Экспорт
Объект[ЭтотОбъект.РК_РеквизитКода] = ЭтотОбъект.View().getText();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекст(ДляВыполнения = Ложь)
Код = View().getText();
Возврат Код;
КонецФункции
#КонецОбласти
#Область КонструкторЗапросов
&НаКлиенте
Процедура ПриЗакрытииКонструктораЗапросов(Текст, ДопПараметры) Экспорт
Если Текст <> Неопределено Тогда
Если Не View().queryMode Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, Символы.ПС + "|");
Текст = СтрЗаменить(Текст, """", """""");
Текст = """" + Текст + """";
КонецЕсли;
УстановитьТекст(Текст, ДопПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(Текст, ДопПараметры)
Конструктор = Новый КонструкторЗапроса();
Если ЗначениеЗаполнено(Текст) Тогда
Попытка
Конструктор.Текст = Текст;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте запроса:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораЗапросов", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовыйЗапрос(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторЗапроса("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьТекстЗапроса(Текст)
ТекстЗапроса = СтрЗаменить(Текст, "|", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """""", "$");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$", """");
Возврат ТекстЗапроса;
КонецФункции
&НаКлиенте
Процедура ВызватьКонструкторЗапроса(ПараметрыЗапроса) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовыйЗапрос", ЭтотОбъект);
ТекстВопроса = "Не найден текст запроса." + Символы.ПС + "Создать новый запрос?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТекстЗапроса = ПодготовитьТекстЗапроса(ПараметрыЗапроса.text);
ОткрытьКонструкторЗапроса(ТекстЗапроса, ПараметрыЗапроса.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонструкторФорматнойСтроки
&НаКлиенте
Процедура ПриЗакрытииКонструктораФорматнойСтроки(ФорматнаяСтрока, ДопПараметры) Экспорт
Если ФорматнаяСтрока <> Неопределено Тогда
ФорматнаяСтрока = СтрЗаменить(ФорматнаяСтрока, "'", "");
ФорматнаяСтрока = """" + ФорматнаяСтрока + """";
УстановитьТекст(ФорматнаяСтрока, ДопПараметры, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ДопПараметры)
Конструктор = Новый КонструкторФорматнойСтроки();
Попытка
Конструктор.Текст = ФорматнаяСтрока;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте форматной строки:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораФорматнойСтроки", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовуюФорматнуюСтроку(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторФорматнойСтроки("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВызватьКонструкторФорматнойСтроки(ПараметрыСтроки) Экспорт
Если ПараметрыСтроки = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовуюФорматнуюСтроку", ЭтотОбъект);
ТекстВопроса = "Форматная строка не найдена." + Символы.ПС + "Создать новую форматную строку?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ФорматнаяСтрока = СтрЗаменить(СтрЗаменить(ПараметрыСтроки.text, "|", ""), """", "");
ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ПараметрыСтроки.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДинамическоеОбновлениеМетаданных
&НаКлиенте
Функция ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьОписаниеОбъектаМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьСписокОбъектовМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбработкаСобытияПолученияМетаданных(Событие) Экспорт
ПараметрыЗапроса = НРег(Событие.metadata);
ВызыватьПодсказку = (Событие.trigger = "suggestion");
ДанныеОбновлены = Ложь;
Если 0 < СтрНайти(ПараметрыЗапроса, ".") Тогда
ЧастиЗапроса = СтрРазделить(ПараметрыЗапроса, ".");
Если ЧастиЗапроса[0] = "module" Тогда
Если ЧастиЗапроса.Количество() = 2 Тогда
ДанныеОбновлены = ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса);
Иначе
ДанныеОбновлены = ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Если Событие.trigger = "suggestion" И ДанныеОбновлены Тогда
View().triggerSuggestions();
КонецЕсли;
Если Событие.trigger = "snippet" Тогда
View().updateSnippetByGUID(Событие.snippet_guid);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСобытияПолученияПеременной(Событие) Экспорт
ИмяПеременной = Событие.variableName;
ИдентификаторПеременной = Событие.variableId;
ПутьКДанным = Событие.variablePath;
ПутьКДанным = СтрЗаменить(ПутьКДанным, "undefined", "");
Описание = РК_Сервер.ПолучитьОписаниеПеременной(ИдентификаторПеременной, ИмяПеременной, ПутьКДанным, Объект.РК_АдресХраненияПеременных);
Если ЗначениеЗаполнено(Описание) Тогда
View().updateVariableDescription(ИдентификаторПеременной, Описание);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаОбщихМодулейКлиент
&НаСервере
Функция СохранитьОбщиеМодулиВХранилище(КоллекцияОбщихМодулей) Экспорт
Файл = Новый ЗаписьJSON();
Файл.УстановитьСтроку();
Попытка
ЗаписатьJSON(Файл, КоллекцияОбщихМодулей.Общие);
Исключение
ВызватьИсключение("Не удалось сохранить коллекцию метаданных:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ЗначениеКоллекции = Файл.Закрыть();
Возврат ПоместитьВоВременноеХранилище(ЗначениеКоллекции, Новый УникальныйИдентификатор());
КонецФункции
&НаСервере
Процедура ЗаполнитьИменаОбщихМодулей(КоллекцияОбщихМодулей) Экспорт
// Соответствие между именем общего неглобального модуля в нижнем регистре
// и именем модуля, как оно задано в конфигураторе для правильной загрузки
// текстов общих модулей
ОбщиеМодули = Новый Соответствие();
Для Каждого Обход Из КоллекцияОбщихМодулей.Общие Цикл
ОбщиеМодули.Вставить(НРег(Обход.Ключ), Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ИменаОбщихМодулей = Новый ФиксированноеСоответствие(ОбщиеМодули);
// Именя глобальных модулей для загрузки текстов
Модули = Новый Массив();
Для Каждого Обход Из КоллекцияОбщихМодулей.Глобальные Цикл
Модули.Добавить(Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ГлобальныйМодули = Новый ФиксированныйМассив(Модули);
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
Путь = СтрРазделить(ПолноеИмяФайла, ЭтотОбъект.РК_РазделительПути, Ложь);
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
КонецФункции
&НаКлиенте
Функция НормализоватьПуть(Путь)
Путь = СокрЛП(Путь);
Если Прав(Путь, 1) <> ЭтотОбъект.РК_РазделительПути Тогда
Путь = Путь + ЭтотОбъект.РК_РазделительПути;
КонецЕсли;
Возврат Путь;
КонецФункции
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
КаталогИсходногоКода = ЭтотОбъект.РК_КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
Возврат КаталогИсходногоКода;
КонецФункции
&НаКлиенте
Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + ЭтотОбъект.РК_РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст);
КонецЦикла;
Состояние("Общие модули загружены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
ИмяВКонфигураторе = ЭтотОбъект.РК_ИменаОбщихМодулей.Получить(НРег(ИмяМодуля));
Если ИмяВКонфигураторе = Неопределено Тогда
ИмяВКонфигураторе = ИмяМодуля;
КонецЕсли;
ФайлМодуля = СтрШаблон("CommonModules%1%2%1Ext%1Module.bsl", ЭтотОбъект.РК_РазделительПути, ИмяВКонфигураторе);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
ИмяТипа = ?(ТипМодуля = "manager", "ManagerModule", "ObjectModule");
ФайлМодуля = СтрШаблон("%1%2Ext%2%3.bsl", СтруктураВыгрузки.ИмяКаталога, ЭтотОбъект.РК_РазделительПути, ИмяТипа);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = РК_Сервер.ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
ЗагруженоФункций = View().parseMetadataModule(Модуль.Текст, АдресЗагрузки);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ЭтотОбъект.РК_ГлобальныйМодули <> Неопределено И 0 < ЭтотОбъект.РК_ГлобальныйМодули.Количество());
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЕстьГлобальныеМодули Тогда
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
Если КаталогНаДиске.Существует() Тогда
Индекс = 0;
Пока Индекс < ЭтотОбъект.РК_ГлобальныйМодули.Количество() Цикл
ИмяМодуля = ЭтотОбъект.РК_ГлобальныйМодули.Получить(Индекс);
ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Истина);
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
ИмяМодуля = ЧастиЗапроса[1];
ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 4;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
СтруктураВыгрузки = Новый Структура();
СтруктураВыгрузки.Вставить("ТипМодуля" , ЧастиЗапроса[1]);
СтруктураВыгрузки.Вставить("ТипМетаданных" , ЧастиЗапроса[2]);
СтруктураВыгрузки.Вставить("ОбъектМетаданных" , ЧастиЗапроса[3]);
РК_Сервер.ДополнитьСтруктуруВыгрузкиИсходниковМетаданных(СтруктураВыгрузки, ЭтотОбъект.РК_РазделительПути);
Если ЗначениеЗаполнено(СтруктураВыгрузки.ИмяКаталога) Тогда
ЗагруженоФункций = ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокОбщихМодулей()
КоллекцияМетаданных = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресОбщихМодулей);
Если КоллекцияМетаданных <> Неопределено Тогда
Результат = View().updateMetadata(КоллекцияМетаданных, "commonModules.items");
ЗагрузитьГлобальныеМодули();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаВЧисло(Значение, ЗначениеПоУмолчанию = 0)
СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = ТипЧисло.ПривестиЗначение(Значение);
Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, ЗначениеПоУмолчанию);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(Текст)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыводаОшибки(ДопПараметры) Экспорт
Если ДопПараметры.ЗакрыватьКонсоль Тогда
ЗакрытьКонсоль(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Текст, ЗакрыватьКонсоль)
ПараметрыОповещения = Новый Структура("ЗакрыватьКонсоль", ЗакрыватьКонсоль);
Оповещение = Новый ОписаниеОповещения("ПослеВыводаОшибки", ЭтотОбъект, ПараметрыОповещения);
ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьРазделительПути()
ЭтотОбъект.РК_РазделительПути = ПолучитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИмяТемы()
ИмяТемы = Неопределено;
Имена = Новый Соответствие();
Имена.Вставить("СветлаяТема", "bsl-white");
Имена.Вставить("ТемнаяТема", "bsl-dark");
Для Каждого Элемент Из Элементы.Тема.ПодчиненныеЭлементы Цикл
Если Элемент.Пометка Тогда
ИмяТемы = Имена[Элемент.Имя];
КонецЕсли;
КонецЦикла;
Возврат ИмяТемы;
КонецФункции
&НаКлиенте
Процедура ПереключитьТему(Тема)
View().setTheme(Тема);
КонецПроцедуры
&НаСервере
Функция ЭтотОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект().ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция ПолучитьТекстМакета(ИмяМакета, УдалятьПереносыСтрок)
Макет = ПолучитьМакет(ИмяМакета);
Текст = Макет.ПолучитьТекст();
Если УдалятьПереносыСтрок Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ВебДокументДоступен()
Если Элементы.ПолеHTML.Документ <> Неопределено И Элементы.ПолеHTML.Документ.defaultView <> Неопределено Тогда
Попытка
ПолучитьТекст();
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьПользовательскиеФункции()
JSON = ПолучитьТекстМакета("ПользовательскиеФункции", Истина);
Результат = View().updateCustomFunctions(JSON);
Если ТипЗнч(Результат) = Тип("Булево") Тогда
СообщитьПользователю("Пользовательские функции успешно загружены!");
Иначе
Ошибка = "Не удалось загрузить пользовательские функции: " + Символы.ПС + Результат.errorDescription;
ВывестиОшибку(Ошибка, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
ЭтотОбъект.РК_ИндексныйФайл = "";
Если ДопПараметры.СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКонсоль(СтандартноеЗакрытие)
Если ЗначениеЗаполнено(ЭтотОбъект.РК_ИндексныйФайл) Тогда
ПараметрыОповещения = Новый Структура("СтандартноеЗакрытие", СтандартноеЗакрытие);
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияИндексногоФайла", ЭтотОбъект, ПараметрыОповещения);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
Если СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеБыстрымиПодсказками()
Элементы.БыстрыеПодсказки.Пометка = ЭтотОбъект.БыстрыеПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюКартыКода()
Элементы.КартаКода.Пометка = ЭтотОбъект.ВидимостьКартыКода;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСтрокиСостояния()
Элементы.СтрокаСостояния.Пометка = ЭтотОбъект.ВидимостьСтрокиСостояния;
Если ЭтотОбъект.ВидимостьСтрокиСостояния Тогда
View().showStatusBar();
Иначе
View().hideStatusBar();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюПробеловТабуляций()
Элементы.ОтображатьПробелыИТабуляции.Пометка = ЭтотОбъект.ОтображатьПробелыИТабуляции;
View().renderWhitespace(ЭтотОбъект.ОтображатьПробелыИТабуляции);
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСравнения()
Элементы.СравнитьСОригиналом.Видимость = ЗначениеЗаполнено(ЭтотОбъект.ИмяСохраненногоФайла);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,36 @@
<?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.17">
<Catalog uuid="6963a31b-8997-4de9-b465-ea61f6ea8c3f">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.ПоказателиВиджетов" category="Object">
<xr:TypeId>30de5269-f445-414a-ac6b-0e29cff191c9</xr:TypeId>
<xr:ValueId>9693c868-01a1-4bc9-b90e-87a0cc41245b</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.ПоказателиВиджетов" category="Ref">
<xr:TypeId>4552caa1-5410-4a44-a20c-19eb31947dd6</xr:TypeId>
<xr:ValueId>94ec563b-d80d-497e-9019-1cb5fcb6c288</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.ПоказателиВиджетов" category="Selection">
<xr:TypeId>d93e7d20-6ecc-4650-8be6-eb1036b09ad9</xr:TypeId>
<xr:ValueId>0e16d3e9-1a10-4f75-a94f-8aed998a9583</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.ПоказателиВиджетов" category="List">
<xr:TypeId>7220b214-3c61-4544-8634-fb8f3774dbf1</xr:TypeId>
<xr:ValueId>1e2af532-0de9-43e1-8a11-9236e857e005</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.ПоказателиВиджетов" category="Manager">
<xr:TypeId>0f2a236b-88ee-4bea-9c40-9350fe68e542</xr:TypeId>
<xr:ValueId>ac4aa34a-2494-4c06-a84c-f52e3874257e</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ПоказателиВиджетов</Name>
<Comment/>
<ExtendedConfigurationObject>2fac22e0-71e2-4f10-8c6e-2eb45e402f77</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Form>ФормаЭлемента</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="d749e369-80cc-46cc-8363-6567aeba3204">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ФормаЭлемента</Name>
<Comment/>
<ExtendedConfigurationObject>28a5dbd2-dcd3-4742-b6d0-04c1d178ecd4</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,640 @@
<?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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.17">
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="OnOpen" callType="After">РК_ПриОткрытииПосле</Event>
<Event name="BeforeWrite" callType="After">РК_ПередЗаписьюПосле</Event>
<Event name="OnCreateAtServer" callType="After">РК_ПриСозданииНаСервереПосле</Event>
</Events>
<ChildItems>
<UsualGroup name="ГруппаПометкаУдаления" id="62">
<Visible>false</Visible>
<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>
<HorizontalStretch>true</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<BackColor>style:ОбъектПомеченНаУдаление</BackColor>
<ExtendedTooltip name="ГруппаПометкаУдаленияРасширеннаяПодсказка" id="63"/>
<ChildItems>
<PictureDecoration name="ПометкаУдаленияКартинка" id="64">
<Width>5</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>1</Height>
<HorizontalStretch>false</HorizontalStretch>
<SkipOnInput>false</SkipOnInput>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пометка удаления картинка</v8:content>
</v8:item>
</Title>
<FileDragMode>AsFile</FileDragMode>
<ContextMenu name="ПометкаУдаленияКартинкаКонтекстноеМеню" id="65"/>
<ExtendedTooltip name="ПометкаУдаленияКартинкаРасширеннаяПодсказка" id="66"/>
</PictureDecoration>
<LabelDecoration name="ПометкаУдаленияНадпись" id="67">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Показатель помечен на удаление</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<ContextMenu name="ПометкаУдаленияНадписьКонтекстноеМеню" id="68"/>
<ExtendedTooltip name="ПометкаУдаленияНадписьРасширеннаяПодсказка" id="69"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаПредопределенный" id="70">
<Visible>false</Visible>
<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>
<HorizontalStretch>true</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<BackColor>style:ОбъектПомеченНаУдаление</BackColor>
<ExtendedTooltip name="ГруппаПредопределенныйРасширеннаяПодсказка" id="71"/>
<ChildItems>
<PictureDecoration name="ПредопределенныйКартинка" id="72">
<Width>5</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>1</Height>
<HorizontalStretch>false</HorizontalStretch>
<SkipOnInput>false</SkipOnInput>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенный картинка</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<FileDragMode>AsFile</FileDragMode>
<ContextMenu name="ПредопределенныйКартинкаКонтекстноеМеню" id="73"/>
<ExtendedTooltip name="ПредопределенныйКартинкаРасширеннаяПодсказка" id="74"/>
</PictureDecoration>
<LabelDecoration name="ПредопределенныйНадпись" id="75">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенный элемент не доступен для изменения. Скопируйте его для внесения изменений.</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<ContextMenu name="ПредопределенныйНадписьКонтекстноеМеню" id="76"/>
<ExtendedTooltip name="ПредопределенныйНадписьРасширеннаяПодсказка" id="77"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<InputField name="Наименование" id="1">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="3"/>
</InputField>
<InputField name="Условие" id="37">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="УсловиеКонтекстноеМеню" id="38"/>
<ExtendedTooltip name="УсловиеРасширеннаяПодсказка" id="39"/>
</InputField>
<UsualGroup name="ГруппаОформление" id="80">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Оформление</v8:content>
</v8:item>
</Title>
<Group>Vertical</Group>
<Behavior>Collapsible</Behavior>
<ControlRepresentation>Picture</ControlRepresentation>
<ExtendedTooltip name="ГруппаОформлениеРасширеннаяПодсказка" id="81"/>
<ChildItems>
<InputField name="Заголовок" id="119">
<ContextMenu name="ЗаголовокКонтекстноеМеню" id="120"/>
<ExtendedTooltip name="ЗаголовокРасширеннаяПодсказка" id="121"/>
</InputField>
<InputField name="Подсказка" id="25">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПодсказкаКонтекстноеМеню" id="26"/>
<ExtendedTooltip name="ПодсказкаРасширеннаяПодсказка" id="27"/>
</InputField>
<InputField name="Картинка" id="16">
<EditMode>EnterOnInput</EditMode>
<DropListButton>true</DropListButton>
<ContextMenu name="КартинкаКонтекстноеМеню" id="17"/>
<ExtendedTooltip name="КартинкаРасширеннаяПодсказка" id="18"/>
</InputField>
<InputField name="ЦветВиджетаСерии" id="40">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ЦветВиджетаСерииКонтекстноеМеню" id="41"/>
<ExtendedTooltip name="ЦветВиджетаСерииРасширеннаяПодсказка" id="42"/>
</InputField>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаЗначение" id="93">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Значение</v8:content>
</v8:item>
</Title>
<Group>Vertical</Group>
<Behavior>Collapsible</Behavior>
<ControlRepresentation>Picture</ControlRepresentation>
<ExtendedTooltip name="ГруппаЗначениеРасширеннаяПодсказка" id="94"/>
<ChildItems>
<InputField name="Тип" id="31">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ТипКонтекстноеМеню" id="32"/>
<ExtendedTooltip name="ТипРасширеннаяПодсказка" id="33"/>
</InputField>
<InputField name="Выражение" id="4">
<TitleLocation>Left</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="6"/>
</InputField>
<InputField name="ГрупповойПоказатель" id="7">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ГрупповойПоказательКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="ГрупповойПоказательРасширеннаяПодсказка" id="9"/>
</InputField>
<InputField name="СвойствоГрупповогоПоказателя" id="28">
<EditMode>EnterOnInput</EditMode>
<DropListButton>true</DropListButton>
<ContextMenu name="СвойствоГрупповогоПоказателяКонтекстноеМеню" id="29"/>
<ExtendedTooltip name="СвойствоГрупповогоПоказателяРасширеннаяПодсказка" id="30"/>
</InputField>
<InputField name="ТипЗначенияПоказателя" id="34">
<EditMode>EnterOnInput</EditMode>
<DropListButton>true</DropListButton>
<ChoiceList>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Массив</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">Массив</Value>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Число</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">Число</Value>
</xr:Value>
</xr:Item>
</ChoiceList>
<ContextMenu name="ТипЗначенияПоказателяКонтекстноеМеню" id="35"/>
<ExtendedTooltip name="ТипЗначенияПоказателяРасширеннаяПодсказка" id="36"/>
</InputField>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаДействие" id="78">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Действие</v8:content>
</v8:item>
</Title>
<Group>Vertical</Group>
<Behavior>Collapsible</Behavior>
<ControlRepresentation>Picture</ControlRepresentation>
<ExtendedTooltip name="ГруппаДействиеРасширеннаяПодсказка" id="79"/>
<ChildItems>
<InputField name="Действие" id="10">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДействиеКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="ДействиеРасширеннаяПодсказка" id="12"/>
</InputField>
<InputField name="ПараметрДействия1" id="19">
<TitleLocation>Left</TitleLocation>
<TitleHeight>2</TitleHeight>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПараметрДействия1КонтекстноеМеню" id="20"/>
<ExtendedTooltip name="ПараметрДействия1РасширеннаяПодсказка" id="21"/>
</InputField>
<InputField name="ПараметрДействия2" id="22">
<TitleLocation>Left</TitleLocation>
<TitleHeight>2</TitleHeight>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПараметрДействия2КонтекстноеМеню" id="23"/>
<ExtendedTooltip name="ПараметрДействия2РасширеннаяПодсказка" id="24"/>
</InputField>
<InputField name="Источник" id="13">
<EditMode>EnterOnInput</EditMode>
<DropListButton>true</DropListButton>
<ContextMenu name="ИсточникКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="ИсточникРасширеннаяПодсказка" id="15"/>
</InputField>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаСобытияОповещения" id="117">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>События оповещения</v8:content>
</v8:item>
</Title>
<Behavior>Collapsible</Behavior>
<ControlRepresentation>Picture</ControlRepresentation>
<ExtendedTooltip name="ГруппаСобытияОповещенияРасширеннаяПодсказка" id="118"/>
<ChildItems>
<Table name="События" id="43">
<Representation>List</Representation>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<RowFilter xsi:nil="true"/>
<ContextMenu name="СобытияКонтекстноеМеню" id="44"/>
<AutoCommandBar name="СобытияКоманднаяПанель" id="45"/>
<ExtendedTooltip name="СобытияРасширеннаяПодсказка" id="46"/>
<SearchStringAddition name="СобытияСтрокаПоиска" id="47">
<AdditionSource>
<Item>События</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="СобытияСтрокаПоискаКонтекстноеМеню" id="48"/>
<ExtendedTooltip name="СобытияСтрокаПоискаРасширеннаяПодсказка" id="49"/>
</SearchStringAddition>
<ViewStatusAddition name="СобытияСостояниеПросмотра" id="50">
<AdditionSource>
<Item>События</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="СобытияСостояниеПросмотраКонтекстноеМеню" id="51"/>
<ExtendedTooltip name="СобытияСостояниеПросмотраРасширеннаяПодсказка" id="52"/>
</ViewStatusAddition>
<SearchControlAddition name="СобытияУправлениеПоиском" id="53">
<AdditionSource>
<Item>События</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="СобытияУправлениеПоискомКонтекстноеМеню" id="54"/>
<ExtendedTooltip name="СобытияУправлениеПоискомРасширеннаяПодсказка" id="55"/>
</SearchControlAddition>
<ChildItems>
<InputField name="СобытияИмяСобытия" id="59">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СобытияИмяСобытияКонтекстноеМеню" id="60"/>
<ExtendedTooltip name="СобытияИмяСобытияРасширеннаяПодсказка" id="61"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes/>
<BaseForm version="2.17">
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<ChildItems>
<UsualGroup name="ГруппаПометкаУдаления" id="62">
<Visible>false</Visible>
<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>
<HorizontalStretch>true</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<BackColor>style:ОбъектПомеченНаУдаление</BackColor>
<ExtendedTooltip name="ГруппаПометкаУдаленияРасширеннаяПодсказка" id="63"/>
<ChildItems>
<PictureDecoration name="ПометкаУдаленияКартинка" id="64">
<Width>5</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>1</Height>
<HorizontalStretch>false</HorizontalStretch>
<SkipOnInput>false</SkipOnInput>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пометка удаления картинка</v8:content>
</v8:item>
</Title>
<FileDragMode>AsFile</FileDragMode>
<ContextMenu name="ПометкаУдаленияКартинкаКонтекстноеМеню" id="65"/>
<ExtendedTooltip name="ПометкаУдаленияКартинкаРасширеннаяПодсказка" id="66"/>
</PictureDecoration>
<LabelDecoration name="ПометкаУдаленияНадпись" id="67">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Показатель помечен на удаление</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<ContextMenu name="ПометкаУдаленияНадписьКонтекстноеМеню" id="68"/>
<ExtendedTooltip name="ПометкаУдаленияНадписьРасширеннаяПодсказка" id="69"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаПредопределенный" id="70">
<Visible>false</Visible>
<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>
<HorizontalStretch>true</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<BackColor>style:ОбъектПомеченНаУдаление</BackColor>
<ExtendedTooltip name="ГруппаПредопределенныйРасширеннаяПодсказка" id="71"/>
<ChildItems>
<PictureDecoration name="ПредопределенныйКартинка" id="72">
<Width>5</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>1</Height>
<HorizontalStretch>false</HorizontalStretch>
<SkipOnInput>false</SkipOnInput>
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенный картинка</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<FileDragMode>AsFile</FileDragMode>
<ContextMenu name="ПредопределенныйКартинкаКонтекстноеМеню" id="73"/>
<ExtendedTooltip name="ПредопределенныйКартинкаРасширеннаяПодсказка" id="74"/>
</PictureDecoration>
<LabelDecoration name="ПредопределенныйНадпись" id="75">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенный элемент не доступен для изменения. Скопируйте его для внесения изменений.</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<ContextMenu name="ПредопределенныйНадписьКонтекстноеМеню" id="76"/>
<ExtendedTooltip name="ПредопределенныйНадписьРасширеннаяПодсказка" id="77"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<InputField name="Наименование" id="1">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="3"/>
</InputField>
<InputField name="Условие" id="37">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="УсловиеКонтекстноеМеню" id="38"/>
<ExtendedTooltip name="УсловиеРасширеннаяПодсказка" id="39"/>
</InputField>
<UsualGroup name="ГруппаОформление" id="80">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Оформление</v8:content>
</v8:item>
</Title>
<Group>Vertical</Group>
<Behavior>Collapsible</Behavior>
<ControlRepresentation>Picture</ControlRepresentation>
<ExtendedTooltip name="ГруппаОформлениеРасширеннаяПодсказка" id="81"/>
<ChildItems>
<InputField name="Заголовок" id="119">
<ContextMenu name="ЗаголовокКонтекстноеМеню" id="120"/>
<ExtendedTooltip name="ЗаголовокРасширеннаяПодсказка" id="121"/>
</InputField>
<InputField name="Подсказка" id="25">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПодсказкаКонтекстноеМеню" id="26"/>
<ExtendedTooltip name="ПодсказкаРасширеннаяПодсказка" id="27"/>
</InputField>
<InputField name="Картинка" id="16">
<EditMode>EnterOnInput</EditMode>
<DropListButton>true</DropListButton>
<ContextMenu name="КартинкаКонтекстноеМеню" id="17"/>
<ExtendedTooltip name="КартинкаРасширеннаяПодсказка" id="18"/>
</InputField>
<InputField name="ЦветВиджетаСерии" id="40">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ЦветВиджетаСерииКонтекстноеМеню" id="41"/>
<ExtendedTooltip name="ЦветВиджетаСерииРасширеннаяПодсказка" id="42"/>
</InputField>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаЗначение" id="93">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Значение</v8:content>
</v8:item>
</Title>
<Group>Vertical</Group>
<Behavior>Collapsible</Behavior>
<ControlRepresentation>Picture</ControlRepresentation>
<ExtendedTooltip name="ГруппаЗначениеРасширеннаяПодсказка" id="94"/>
<ChildItems>
<InputField name="Тип" id="31">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ТипКонтекстноеМеню" id="32"/>
<ExtendedTooltip name="ТипРасширеннаяПодсказка" id="33"/>
</InputField>
<InputField name="Выражение" id="4">
<TitleLocation>Left</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="6"/>
</InputField>
<InputField name="ГрупповойПоказатель" id="7">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ГрупповойПоказательКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="ГрупповойПоказательРасширеннаяПодсказка" id="9"/>
</InputField>
<InputField name="СвойствоГрупповогоПоказателя" id="28">
<EditMode>EnterOnInput</EditMode>
<DropListButton>true</DropListButton>
<ContextMenu name="СвойствоГрупповогоПоказателяКонтекстноеМеню" id="29"/>
<ExtendedTooltip name="СвойствоГрупповогоПоказателяРасширеннаяПодсказка" id="30"/>
</InputField>
<InputField name="ТипЗначенияПоказателя" id="34">
<EditMode>EnterOnInput</EditMode>
<DropListButton>true</DropListButton>
<ChoiceList>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Массив</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">Массив</Value>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Число</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">Число</Value>
</xr:Value>
</xr:Item>
</ChoiceList>
<ContextMenu name="ТипЗначенияПоказателяКонтекстноеМеню" id="35"/>
<ExtendedTooltip name="ТипЗначенияПоказателяРасширеннаяПодсказка" id="36"/>
</InputField>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаДействие" id="78">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Действие</v8:content>
</v8:item>
</Title>
<Group>Vertical</Group>
<Behavior>Collapsible</Behavior>
<ControlRepresentation>Picture</ControlRepresentation>
<ExtendedTooltip name="ГруппаДействиеРасширеннаяПодсказка" id="79"/>
<ChildItems>
<InputField name="Действие" id="10">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДействиеКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="ДействиеРасширеннаяПодсказка" id="12"/>
</InputField>
<InputField name="ПараметрДействия1" id="19">
<TitleLocation>Left</TitleLocation>
<TitleHeight>2</TitleHeight>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПараметрДействия1КонтекстноеМеню" id="20"/>
<ExtendedTooltip name="ПараметрДействия1РасширеннаяПодсказка" id="21"/>
</InputField>
<InputField name="ПараметрДействия2" id="22">
<TitleLocation>Left</TitleLocation>
<TitleHeight>2</TitleHeight>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПараметрДействия2КонтекстноеМеню" id="23"/>
<ExtendedTooltip name="ПараметрДействия2РасширеннаяПодсказка" id="24"/>
</InputField>
<InputField name="Источник" id="13">
<EditMode>EnterOnInput</EditMode>
<DropListButton>true</DropListButton>
<ContextMenu name="ИсточникКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="ИсточникРасширеннаяПодсказка" id="15"/>
</InputField>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаСобытияОповещения" id="117">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>События оповещения</v8:content>
</v8:item>
</Title>
<Behavior>Collapsible</Behavior>
<ControlRepresentation>Picture</ControlRepresentation>
<ExtendedTooltip name="ГруппаСобытияОповещенияРасширеннаяПодсказка" id="118"/>
<ChildItems>
<Table name="События" id="43">
<Representation>List</Representation>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<RowFilter xsi:nil="true"/>
<ContextMenu name="СобытияКонтекстноеМеню" id="44"/>
<AutoCommandBar name="СобытияКоманднаяПанель" id="45"/>
<ExtendedTooltip name="СобытияРасширеннаяПодсказка" id="46"/>
<SearchStringAddition name="СобытияСтрокаПоиска" id="47">
<AdditionSource>
<Item>События</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="СобытияСтрокаПоискаКонтекстноеМеню" id="48"/>
<ExtendedTooltip name="СобытияСтрокаПоискаРасширеннаяПодсказка" id="49"/>
</SearchStringAddition>
<ViewStatusAddition name="СобытияСостояниеПросмотра" id="50">
<AdditionSource>
<Item>События</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="СобытияСостояниеПросмотраКонтекстноеМеню" id="51"/>
<ExtendedTooltip name="СобытияСостояниеПросмотраРасширеннаяПодсказка" id="52"/>
</ViewStatusAddition>
<SearchControlAddition name="СобытияУправлениеПоиском" id="53">
<AdditionSource>
<Item>События</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="СобытияУправлениеПоискомКонтекстноеМеню" id="54"/>
<ExtendedTooltip name="СобытияУправлениеПоискомРасширеннаяПодсказка" id="55"/>
</SearchControlAddition>
<ChildItems>
<InputField name="СобытияИмяСобытия" id="59">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="СобытияИмяСобытияКонтекстноеМеню" id="60"/>
<ExtendedTooltip name="СобытияИмяСобытияРасширеннаяПодсказка" id="61"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>

View File

@ -0,0 +1,967 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура РК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
РК_Сервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РК_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Объект[ЭтотОбъект.РК_РеквизитКода] = View().getText();
КонецПроцедуры
&НаКлиенте
Процедура РК_ПриОткрытииПосле(Отказ)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
КонецПроцедуры
&НаСервере
&После("ОбновитьДоступностьЗначения")
Процедура РК_ОбновитьДоступностьЗначения()
Если Не РК_Сервер.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
ЭлементHTML = Элементы.Найти("ПолеHTML");
ЭлементHTML.Доступность =
Объект.Тип = Перечисления.ТипыПоказателейВиджетов.Обычный;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
Процедура ConsoleOnReady(Элемент)
Если ЭтотОбъект.РК_ИсходникиЗагружены Тогда
ИнициализацияРедактора();
//АктивироватьДополнительныеФункции();
ЗагрузитьКод();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ConsoleOnClick(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
РК_Клиент.ОбработатьСобытиеРедактора(ДанныеСобытия.Event.eventData1C, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИнициализацияРедактора
&НаКлиенте
Процедура ЗагрузитьКод() Экспорт
вью = View();
вью.minimap(Ложь);
вью.setText(Объект[ЭтотОбъект.РК_РеквизитКода], Неопределено, Ложь);
вью.setOriginalText(Объект[ЭтотОбъект.РК_РеквизитКода]);
КонецПроцедуры
&НаСервере
Функция ТекстОписанияПользовательскихОбъектов()
НовыйОбъект = Новый Структура("properties", Новый Структура);
НовыйОбъект.properties.Вставить("Результат", Новый Структура);
customObjects = Новый Структура;
customObjects.Вставить("Параметры", НовыйОбъект);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("customObjects", customObjects));
ТекстJSON = ЗаписьJSON.Закрыть();
Возврат ТекстJSON;
КонецФункции
&НаКлиенте
Функция ИндексныйФайл()
Возврат ЭтотОбъект.РК_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
ЭтотОбъект.РК_HTML = СкопированныйФайл;
ЭтотОбъект.РК_ИсходникиЗагружены = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(ЭтотОбъект.РК_КаталогИсходников);
Файл = Новый ЗаписьТекста(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Исключение
Сообщить("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки()); //, Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеЗаписиФайлаМакета", ЭтотОбъект);
ИмяФайла = ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресМакета);
ДанныеМакета.НачатьЗапись(Оповещение, ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходникиНаКлиенте()
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияВременныхФайлов", ЭтотОбъект);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_КаталогИсходников, "*.*");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияИндексногоФайла", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияФайлаВерсии", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
Сообщить("Не удалось создать каталог для исходников"); // , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияКаталога", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
ЭтотОбъект.РК_КаталогИсходников = ИмяКаталога + "bsl_console\";
Оповещение = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект);
НачатьСозданиеКаталога(Оповещение, ЭтотОбъект.РК_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходники()
Оповещение = Новый ОписаниеОповещения("ПриПолученииКаталогаВременныхФайлов", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
ИзвлечьИсходники();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбнулитьМетаданные() Экспорт
View().clearMetadata();
ОбновитьСписокОбщихМодулей();
ОбновитьПользовательскиеОбъекты();
//View().updateMetadata(ТекстОписанияОбъекта());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПользовательскиеОбъекты()
ТекстОписанияПользовательскихОбъектов = ТекстОписанияПользовательскихОбъектов();
Если ТекстОписанияПользовательскихОбъектов = Неопределено Тогда
Возврат;
КонецЕсли;
View().updateMetadata(ТекстОписанияПользовательскихОбъектов());
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияРедактора()
Инфо = Новый СистемнаяИнформация();
View().init(Инфо.ВерсияПриложения);
View().setOption("autoResizeEditorLayout", Истина);
View().setOption("renderQueryDelimiters", Истина);
View().setOption("generateModificationEvent", Истина);
View().hideScrollX();
View().hideScrollY();
ПодключитьОбработчикОжидания("ОбнулитьМетаданные", 1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейсРедактора
&НаКлиенте
Функция View() Экспорт
Возврат Элементы.ПолеHTML.Документ.defaultView;
КонецФункции
&НаКлиенте
Процедура УстановитьТекст(Текст, Позиция, УчитыватьОтступПервойСтроки)
View().setText(Текст, Позиция, УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстКода() Экспорт
Объект[ЭтотОбъект.РК_РеквизитКода] = ЭтотОбъект.View().getText();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекст(ДляВыполнения = Ложь)
Код = View().getText();
Возврат Код;
КонецФункции
#КонецОбласти
#Область КонструкторЗапросов
&НаКлиенте
Процедура ПриЗакрытииКонструктораЗапросов(Текст, ДопПараметры) Экспорт
Если Текст <> Неопределено Тогда
Если Не View().queryMode Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, Символы.ПС + "|");
Текст = СтрЗаменить(Текст, """", """""");
Текст = """" + Текст + """";
КонецЕсли;
УстановитьТекст(Текст, ДопПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(Текст, ДопПараметры)
Конструктор = Новый КонструкторЗапроса();
Если ЗначениеЗаполнено(Текст) Тогда
Попытка
Конструктор.Текст = Текст;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте запроса:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораЗапросов", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовыйЗапрос(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторЗапроса("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьТекстЗапроса(Текст)
ТекстЗапроса = СтрЗаменить(Текст, "|", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """""", "$");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$", """");
Возврат ТекстЗапроса;
КонецФункции
&НаКлиенте
Процедура ВызватьКонструкторЗапроса(ПараметрыЗапроса) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовыйЗапрос", ЭтотОбъект);
ТекстВопроса = "Не найден текст запроса." + Символы.ПС + "Создать новый запрос?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТекстЗапроса = ПодготовитьТекстЗапроса(ПараметрыЗапроса.text);
ОткрытьКонструкторЗапроса(ТекстЗапроса, ПараметрыЗапроса.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонструкторФорматнойСтроки
&НаКлиенте
Процедура ПриЗакрытииКонструктораФорматнойСтроки(ФорматнаяСтрока, ДопПараметры) Экспорт
Если ФорматнаяСтрока <> Неопределено Тогда
ФорматнаяСтрока = СтрЗаменить(ФорматнаяСтрока, "'", "");
ФорматнаяСтрока = """" + ФорматнаяСтрока + """";
УстановитьТекст(ФорматнаяСтрока, ДопПараметры, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ДопПараметры)
Конструктор = Новый КонструкторФорматнойСтроки();
Попытка
Конструктор.Текст = ФорматнаяСтрока;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте форматной строки:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораФорматнойСтроки", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовуюФорматнуюСтроку(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторФорматнойСтроки("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВызватьКонструкторФорматнойСтроки(ПараметрыСтроки) Экспорт
Если ПараметрыСтроки = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовуюФорматнуюСтроку", ЭтотОбъект);
ТекстВопроса = "Форматная строка не найдена." + Символы.ПС + "Создать новую форматную строку?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ФорматнаяСтрока = СтрЗаменить(СтрЗаменить(ПараметрыСтроки.text, "|", ""), """", "");
ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ПараметрыСтроки.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДинамическоеОбновлениеМетаданных
&НаКлиенте
Функция ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьОписаниеОбъектаМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьСписокОбъектовМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбработкаСобытияПолученияМетаданных(Событие) Экспорт
ПараметрыЗапроса = НРег(Событие.metadata);
ВызыватьПодсказку = (Событие.trigger = "suggestion");
ДанныеОбновлены = Ложь;
Если 0 < СтрНайти(ПараметрыЗапроса, ".") Тогда
ЧастиЗапроса = СтрРазделить(ПараметрыЗапроса, ".");
Если ЧастиЗапроса[0] = "module" Тогда
Если ЧастиЗапроса.Количество() = 2 Тогда
ДанныеОбновлены = ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса);
Иначе
ДанныеОбновлены = ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Если Событие.trigger = "suggestion" И ДанныеОбновлены Тогда
View().triggerSuggestions();
КонецЕсли;
Если Событие.trigger = "snippet" Тогда
View().updateSnippetByGUID(Событие.snippet_guid);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСобытияПолученияПеременной(Событие) Экспорт
ИмяПеременной = Событие.variableName;
ИдентификаторПеременной = Событие.variableId;
ПутьКДанным = Событие.variablePath;
ПутьКДанным = СтрЗаменить(ПутьКДанным, "undefined", "");
Описание = РК_Сервер.ПолучитьОписаниеПеременной(ИдентификаторПеременной, ИмяПеременной, ПутьКДанным, Объект.РК_АдресХраненияПеременных);
Если ЗначениеЗаполнено(Описание) Тогда
View().updateVariableDescription(ИдентификаторПеременной, Описание);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаОбщихМодулейКлиент
&НаСервере
Функция СохранитьОбщиеМодулиВХранилище(КоллекцияОбщихМодулей) Экспорт
Файл = Новый ЗаписьJSON();
Файл.УстановитьСтроку();
Попытка
ЗаписатьJSON(Файл, КоллекцияОбщихМодулей.Общие);
Исключение
ВызватьИсключение("Не удалось сохранить коллекцию метаданных:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ЗначениеКоллекции = Файл.Закрыть();
Возврат ПоместитьВоВременноеХранилище(ЗначениеКоллекции, Новый УникальныйИдентификатор());
КонецФункции
&НаСервере
Процедура ЗаполнитьИменаОбщихМодулей(КоллекцияОбщихМодулей) Экспорт
// Соответствие между именем общего неглобального модуля в нижнем регистре
// и именем модуля, как оно задано в конфигураторе для правильной загрузки
// текстов общих модулей
ОбщиеМодули = Новый Соответствие();
Для Каждого Обход Из КоллекцияОбщихМодулей.Общие Цикл
ОбщиеМодули.Вставить(НРег(Обход.Ключ), Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ИменаОбщихМодулей = Новый ФиксированноеСоответствие(ОбщиеМодули);
// Именя глобальных модулей для загрузки текстов
Модули = Новый Массив();
Для Каждого Обход Из КоллекцияОбщихМодулей.Глобальные Цикл
Модули.Добавить(Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ГлобальныйМодули = Новый ФиксированныйМассив(Модули);
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
Путь = СтрРазделить(ПолноеИмяФайла, ЭтотОбъект.РК_РазделительПути, Ложь);
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
КонецФункции
&НаКлиенте
Функция НормализоватьПуть(Путь)
Путь = СокрЛП(Путь);
Если Прав(Путь, 1) <> ЭтотОбъект.РК_РазделительПути Тогда
Путь = Путь + ЭтотОбъект.РК_РазделительПути;
КонецЕсли;
Возврат Путь;
КонецФункции
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
КаталогИсходногоКода = ЭтотОбъект.РК_КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
Возврат КаталогИсходногоКода;
КонецФункции
&НаКлиенте
Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + ЭтотОбъект.РК_РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст);
КонецЦикла;
Состояние("Общие модули загружены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
ИмяВКонфигураторе = ЭтотОбъект.РК_ИменаОбщихМодулей.Получить(НРег(ИмяМодуля));
Если ИмяВКонфигураторе = Неопределено Тогда
ИмяВКонфигураторе = ИмяМодуля;
КонецЕсли;
ФайлМодуля = СтрШаблон("CommonModules%1%2%1Ext%1Module.bsl", ЭтотОбъект.РК_РазделительПути, ИмяВКонфигураторе);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
ИмяТипа = ?(ТипМодуля = "manager", "ManagerModule", "ObjectModule");
ФайлМодуля = СтрШаблон("%1%2Ext%2%3.bsl", СтруктураВыгрузки.ИмяКаталога, ЭтотОбъект.РК_РазделительПути, ИмяТипа);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = РК_Сервер.ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
ЗагруженоФункций = View().parseMetadataModule(Модуль.Текст, АдресЗагрузки);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ЭтотОбъект.РК_ГлобальныйМодули <> Неопределено И 0 < ЭтотОбъект.РК_ГлобальныйМодули.Количество());
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЕстьГлобальныеМодули Тогда
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
Если КаталогНаДиске.Существует() Тогда
Индекс = 0;
Пока Индекс < ЭтотОбъект.РК_ГлобальныйМодули.Количество() Цикл
ИмяМодуля = ЭтотОбъект.РК_ГлобальныйМодули.Получить(Индекс);
ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Истина);
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
ИмяМодуля = ЧастиЗапроса[1];
ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 4;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
СтруктураВыгрузки = Новый Структура();
СтруктураВыгрузки.Вставить("ТипМодуля" , ЧастиЗапроса[1]);
СтруктураВыгрузки.Вставить("ТипМетаданных" , ЧастиЗапроса[2]);
СтруктураВыгрузки.Вставить("ОбъектМетаданных" , ЧастиЗапроса[3]);
РК_Сервер.ДополнитьСтруктуруВыгрузкиИсходниковМетаданных(СтруктураВыгрузки, ЭтотОбъект.РК_РазделительПути);
Если ЗначениеЗаполнено(СтруктураВыгрузки.ИмяКаталога) Тогда
ЗагруженоФункций = ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокОбщихМодулей()
КоллекцияМетаданных = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресОбщихМодулей);
Если КоллекцияМетаданных <> Неопределено Тогда
Результат = View().updateMetadata(КоллекцияМетаданных, "commonModules.items");
ЗагрузитьГлобальныеМодули();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаВЧисло(Значение, ЗначениеПоУмолчанию = 0)
СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = ТипЧисло.ПривестиЗначение(Значение);
Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, ЗначениеПоУмолчанию);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(Текст)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыводаОшибки(ДопПараметры) Экспорт
Если ДопПараметры.ЗакрыватьКонсоль Тогда
ЗакрытьКонсоль(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Текст, ЗакрыватьКонсоль)
ПараметрыОповещения = Новый Структура("ЗакрыватьКонсоль", ЗакрыватьКонсоль);
Оповещение = Новый ОписаниеОповещения("ПослеВыводаОшибки", ЭтотОбъект, ПараметрыОповещения);
ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьРазделительПути()
ЭтотОбъект.РК_РазделительПути = ПолучитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИмяТемы()
ИмяТемы = Неопределено;
Имена = Новый Соответствие();
Имена.Вставить("СветлаяТема", "bsl-white");
Имена.Вставить("ТемнаяТема", "bsl-dark");
Для Каждого Элемент Из Элементы.Тема.ПодчиненныеЭлементы Цикл
Если Элемент.Пометка Тогда
ИмяТемы = Имена[Элемент.Имя];
КонецЕсли;
КонецЦикла;
Возврат ИмяТемы;
КонецФункции
&НаКлиенте
Процедура ПереключитьТему(Тема)
View().setTheme(Тема);
КонецПроцедуры
&НаСервере
Функция ЭтотОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект().ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция ПолучитьТекстМакета(ИмяМакета, УдалятьПереносыСтрок)
Макет = ПолучитьМакет(ИмяМакета);
Текст = Макет.ПолучитьТекст();
Если УдалятьПереносыСтрок Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ВебДокументДоступен()
Если Элементы.ПолеHTML.Документ <> Неопределено И Элементы.ПолеHTML.Документ.defaultView <> Неопределено Тогда
Попытка
ПолучитьТекст();
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьПользовательскиеФункции()
JSON = ПолучитьТекстМакета("ПользовательскиеФункции", Истина);
Результат = View().updateCustomFunctions(JSON);
Если ТипЗнч(Результат) = Тип("Булево") Тогда
СообщитьПользователю("Пользовательские функции успешно загружены!");
Иначе
Ошибка = "Не удалось загрузить пользовательские функции: " + Символы.ПС + Результат.errorDescription;
ВывестиОшибку(Ошибка, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
ЭтотОбъект.РК_ИндексныйФайл = "";
Если ДопПараметры.СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКонсоль(СтандартноеЗакрытие)
Если ЗначениеЗаполнено(ЭтотОбъект.РК_ИндексныйФайл) Тогда
ПараметрыОповещения = Новый Структура("СтандартноеЗакрытие", СтандартноеЗакрытие);
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияИндексногоФайла", ЭтотОбъект, ПараметрыОповещения);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
Если СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеБыстрымиПодсказками()
Элементы.БыстрыеПодсказки.Пометка = ЭтотОбъект.БыстрыеПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюКартыКода()
Элементы.КартаКода.Пометка = ЭтотОбъект.ВидимостьКартыКода;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСтрокиСостояния()
Элементы.СтрокаСостояния.Пометка = ЭтотОбъект.ВидимостьСтрокиСостояния;
Если ЭтотОбъект.ВидимостьСтрокиСостояния Тогда
View().showStatusBar();
Иначе
View().hideStatusBar();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюПробеловТабуляций()
Элементы.ОтображатьПробелыИТабуляции.Пометка = ЭтотОбъект.ОтображатьПробелыИТабуляции;
View().renderWhitespace(ЭтотОбъект.ОтображатьПробелыИТабуляции);
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСравнения()
Элементы.СравнитьСОригиналом.Видимость = ЗначениеЗаполнено(ЭтотОбъект.ИмяСохраненногоФайла);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,34 @@
<?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.17">
<Catalog uuid="b762a15b-44be-46ca-b442-809bad4208ed">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.Пользователи" category="Object">
<xr:TypeId>023e8d1f-c316-40be-9696-692af36ca886</xr:TypeId>
<xr:ValueId>16abff34-3dfe-4a02-afa6-106483256748</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.Пользователи" category="Ref">
<xr:TypeId>80d62754-2a68-4c1d-83b3-4280059fe850</xr:TypeId>
<xr:ValueId>5c885136-a931-4874-b188-2af4f5b9adf8</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.Пользователи" category="Selection">
<xr:TypeId>bf616a39-b92d-4ef6-af55-416f9a663844</xr:TypeId>
<xr:ValueId>a69d012c-e44d-474d-afae-f435243bbfd9</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.Пользователи" category="List">
<xr:TypeId>4d82dba1-504b-4a71-8b2e-51f5c522ca01</xr:TypeId>
<xr:ValueId>f3edc84c-1656-4103-a82a-b59323ed0fc7</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.Пользователи" category="Manager">
<xr:TypeId>c2006b4c-5e69-4611-a137-61aed6f3bf75</xr:TypeId>
<xr:ValueId>e62fbf7b-6697-4623-acaf-fcb6a1ad2679</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>Пользователи</Name>
<Comment/>
<ExtendedConfigurationObject>8b2ea620-4dc9-422d-974d-b35609a7ba01</ExtendedConfigurationObject>
</Properties>
<ChildObjects/>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,36 @@
<?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.17">
<Catalog uuid="e2d1ddfb-d646-4cf8-9d5b-3222f77901bc">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.ПравилаАвтозаполненияФайлов" category="Object">
<xr:TypeId>d838bfea-a44c-47d8-9812-1a00e555aeca</xr:TypeId>
<xr:ValueId>0081c1bd-e033-4c1a-aba0-121a2e43b049</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.ПравилаАвтозаполненияФайлов" category="Ref">
<xr:TypeId>2794f8a5-07eb-4ec7-919b-4580d7e4aaf9</xr:TypeId>
<xr:ValueId>7c63a1fd-ef07-4d0f-8cac-25cdb126674a</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.ПравилаАвтозаполненияФайлов" category="Selection">
<xr:TypeId>eb3582b3-01b3-40c2-b59d-40d56a862e2f</xr:TypeId>
<xr:ValueId>23ab91ee-e09f-440a-9865-71da0bc96726</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.ПравилаАвтозаполненияФайлов" category="List">
<xr:TypeId>e36b013d-2de1-4df0-bc8d-03c4fe251a31</xr:TypeId>
<xr:ValueId>173e27b7-a541-40ad-877b-7a4e7459930b</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.ПравилаАвтозаполненияФайлов" category="Manager">
<xr:TypeId>ba1d79af-f3a1-4dfc-926c-a97260b9e959</xr:TypeId>
<xr:ValueId>91c20e7e-080b-46e1-8e5f-1348349f23b3</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ПравилаАвтозаполненияФайлов</Name>
<Comment/>
<ExtendedConfigurationObject>bf40fab1-67c9-4b24-bb99-42d4ddfdb3dd</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Form>ВводСкрипта</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="feb4052b-d137-4772-8b02-454de28992ef">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ВводСкрипта</Name>
<Comment/>
<ExtendedConfigurationObject>c66ec099-009b-4a34-8e8a-6750845e12ea</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,168 @@
<?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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.17">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Введите скрипт</v8:content>
</v8:item>
</Title>
<AutoTitle>false</AutoTitle>
<CommandBarLocation>Bottom</CommandBarLocation>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<HorizontalAlign>Right</HorizontalAlign>
<Autofill>false</Autofill>
<ChildItems>
<Button name="ФормаОК" id="5">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>0</CommandName>
<ExtendedTooltip name="ФормаОКРасширеннаяПодсказка" id="6"/>
</Button>
<Button name="ФормаДобавитьСклонение" id="9">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ДобавитьСклонение</CommandName>
<ExtendedTooltip name="ФормаДобавитьСклонениеРасширеннаяПодсказка" id="10"/>
</Button>
<Button name="ФормаДобавитьАлгоритм" id="11">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ДобавитьАлгоритм</CommandName>
<ExtendedTooltip name="ФормаДобавитьАлгоритмРасширеннаяПодсказка" id="12"/>
</Button>
<Button name="ФормаОтмена" id="2">
<Type>CommandBarButton</Type>
<CommandName>0</CommandName>
<ExtendedTooltip name="ФормаОтменаРасширеннаяПодсказка" id="7"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnOpen" callType="After">РК_ПриОткрытииПосле</Event>
<Event name="9cc34712-da5f-4faa-a653-343d2085fbe8" callType="After">РК_ПередЗаписьюПосле</Event>
</Events>
<ChildItems>
<InputField name="Комментарий" id="3">
<TitleLocation>None</TitleLocation>
<Width>60</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>10</Height>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="4"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="8"/>
</InputField>
</ChildItems>
<Attributes/>
<Commands>
<Command name="ДобавитьСклонение" id="1000002">
<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 callType="After">РК_ДобавитьСклонениеПосле</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ДобавитьАлгоритм" id="1000004">
<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>
</Command>
</Commands>
<BaseForm version="2.17">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Введите скрипт</v8:content>
</v8:item>
</Title>
<AutoTitle>false</AutoTitle>
<CommandBarLocation>Bottom</CommandBarLocation>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<HorizontalAlign>Right</HorizontalAlign>
<Autofill>false</Autofill>
<ChildItems>
<Button name="ФормаОК" id="5">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>0</CommandName>
<ExtendedTooltip name="ФормаОКРасширеннаяПодсказка" id="6"/>
</Button>
<Button name="ФормаДобавитьСклонение" id="9">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ДобавитьСклонение</CommandName>
<ExtendedTooltip name="ФормаДобавитьСклонениеРасширеннаяПодсказка" id="10"/>
</Button>
<Button name="ФормаДобавитьАлгоритм" id="11">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ДобавитьАлгоритм</CommandName>
<ExtendedTooltip name="ФормаДобавитьАлгоритмРасширеннаяПодсказка" id="12"/>
</Button>
<Button name="ФормаОтмена" id="2">
<Type>CommandBarButton</Type>
<CommandName>0</CommandName>
<ExtendedTooltip name="ФормаОтменаРасширеннаяПодсказка" id="7"/>
</Button>
</ChildItems>
</AutoCommandBar>
<ChildItems>
<InputField name="Комментарий" id="3">
<TitleLocation>None</TitleLocation>
<Width>60</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>10</Height>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="4"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="8"/>
</InputField>
</ChildItems>
<Attributes/>
<Commands>
<Command name="ДобавитьСклонение" id="1000001">
<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 callType="Before">ДобавитьСклонение</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ДобавитьАлгоритм" id="1000003">
<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 callType="Before">ДобавитьАлгоритм</Action>
</Command>
</Commands>
</BaseForm>
</Form>

View File

@ -0,0 +1,36 @@
<?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.17">
<Catalog uuid="d76951e5-6989-47e3-8bb4-45d1c3f497d4">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.СкриптыСхемДляКомплексныхПроцессов" category="Object">
<xr:TypeId>fbec7510-2b56-4219-910b-dba102542e94</xr:TypeId>
<xr:ValueId>e2b2b486-ef4e-4e01-a84f-a16d82caf0a9</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.СкриптыСхемДляКомплексныхПроцессов" category="Ref">
<xr:TypeId>61fb8dae-78e6-4ffd-9f2a-c3744ef724e7</xr:TypeId>
<xr:ValueId>1bfe5f9e-724a-4db8-92ac-80909d340907</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.СкриптыСхемДляКомплексныхПроцессов" category="Selection">
<xr:TypeId>54865d7f-6e94-4e63-9e53-9df6931b2de1</xr:TypeId>
<xr:ValueId>dca5c336-13ae-4a6c-b52b-eeadc7ee5a3d</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.СкриптыСхемДляКомплексныхПроцессов" category="List">
<xr:TypeId>258a76e0-cc5a-4f7c-b36f-db4112290dca</xr:TypeId>
<xr:ValueId>f644b645-5ccf-4f06-b688-82bfb7bf1b6a</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.СкриптыСхемДляКомплексныхПроцессов" category="Manager">
<xr:TypeId>d8d37459-1322-4bdf-9907-2cdc42aaeb9c</xr:TypeId>
<xr:ValueId>6096d023-80b2-467d-86de-dc7272c9a26d</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>СкриптыСхемДляКомплексныхПроцессов</Name>
<Comment/>
<ExtendedConfigurationObject>8dc54628-a4de-418b-ae74-33e471930fdc</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Form>ФормаЭлемента</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="e4b83285-9c24-4518-8354-f052fd85f01e">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ФормаЭлемента</Name>
<Comment/>
<ExtendedConfigurationObject>a1a53166-e20c-4ed1-8ff1-f14ddb320fff</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,534 @@
<?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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="OnOpen" callType="After">РК_ПриОткрытииПосле</Event>
<Event name="BeforeWrite" callType="After">РК_ПередЗаписьюПосле</Event>
<Event name="OnCreateAtServer" callType="After">РК_ПриСозданииНаСервереПосле</Event>
</Events>
<ChildItems>
<InputField name="Наименование" id="22">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="23"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="24"/>
</InputField>
<InputField name="Родитель" id="25">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="РодительКонтекстноеМеню" id="26"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="27"/>
</InputField>
<UsualGroup name="ГруппаВыражениеИПараметры" id="51">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа выражение и параметры</v8:content>
</v8:item>
</Title>
<Group>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаВыражениеИПараметрыРасширеннаяПодсказка" id="52"/>
<ChildItems>
<InputField name="Выражение" id="28">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>45</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>12</Height>
<MultiLine>true</MultiLine>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="29"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="30"/>
</InputField>
<UsualGroup name="ГруппаОтступКнопки" id="78">
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа отступ кнопки</v8:content>
</v8:item>
</ToolTip>
<Height>15</Height>
<VerticalStretch>false</VerticalStretch>
<Group>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаОтступКнопкиРасширеннаяПодсказка" id="79"/>
<ChildItems>
<Button name="ВставитьОбъектРеквизит" id="80">
<Type>UsualButton</Type>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<CommandName>0</CommandName>
<ExtendedTooltip name="ВставитьОбъектРеквизитРасширеннаяПодсказка" id="81"/>
</Button>
</ChildItems>
</UsualGroup>
<Table name="КонтекстВыполнения" id="53">
<Representation>Tree</Representation>
<CommandBarLocation>None</CommandBarLocation>
<ReadOnly>true</ReadOnly>
<ChangeRowSet>false</ChangeRowSet>
<ChangeRowOrder>false</ChangeRowOrder>
<Width>31</Width>
<Header>false</Header>
<HorizontalLines>false</HorizontalLines>
<AutoInsertNewRow>true</AutoInsertNewRow>
<InitialTreeView>ExpandTopLevel</InitialTreeView>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<DataPath>КонтекстВыполнения</DataPath>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Контекст выполнения</v8:content>
</v8:item>
</Title>
<CommandSet>
<ExcludedCommand>Add</ExcludedCommand>
<ExcludedCommand>Change</ExcludedCommand>
<ExcludedCommand>Copy</ExcludedCommand>
<ExcludedCommand>CopyToClipboard</ExcludedCommand>
<ExcludedCommand>Delete</ExcludedCommand>
<ExcludedCommand>EndEdit</ExcludedCommand>
<ExcludedCommand>HierarchicalList</ExcludedCommand>
<ExcludedCommand>List</ExcludedCommand>
<ExcludedCommand>MoveDown</ExcludedCommand>
<ExcludedCommand>MoveUp</ExcludedCommand>
<ExcludedCommand>OutputList</ExcludedCommand>
<ExcludedCommand>SelectAll</ExcludedCommand>
<ExcludedCommand>SortListAsc</ExcludedCommand>
<ExcludedCommand>SortListDesc</ExcludedCommand>
<ExcludedCommand>Tree</ExcludedCommand>
</CommandSet>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<ContextMenu name="КонтекстВыполненияКонтекстноеМеню" id="54"/>
<AutoCommandBar name="КонтекстВыполненияКоманднаяПанель" id="55"/>
<ExtendedTooltip name="КонтекстВыполненияРасширеннаяПодсказка" id="56"/>
<SearchStringAddition name="КонтекстВыполненияСтрокаПоиска" id="57">
<AdditionSource>
<Item>КонтекстВыполнения</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="КонтекстВыполненияСтрокаПоискаКонтекстноеМеню" id="58"/>
<ExtendedTooltip name="КонтекстВыполненияСтрокаПоискаРасширеннаяПодсказка" id="59"/>
</SearchStringAddition>
<ViewStatusAddition name="КонтекстВыполненияСостояниеПросмотра" id="60">
<AdditionSource>
<Item>КонтекстВыполнения</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="КонтекстВыполненияСостояниеПросмотраКонтекстноеМеню" id="61"/>
<ExtendedTooltip name="КонтекстВыполненияСостояниеПросмотраРасширеннаяПодсказка" id="62"/>
</ViewStatusAddition>
<SearchControlAddition name="КонтекстВыполненияУправлениеПоиском" id="63">
<AdditionSource>
<Item>КонтекстВыполнения</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="КонтекстВыполненияУправлениеПоискомКонтекстноеМеню" id="64"/>
<ExtendedTooltip name="КонтекстВыполненияУправлениеПоискомРасширеннаяПодсказка" id="65"/>
</SearchControlAddition>
<ChildItems>
<InputField name="КонтекстВыполненияПредставление" id="72">
<DataPath>КонтекстВыполнения.Представление</DataPath>
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Представление</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<Width>15</Width>
<ContextMenu name="КонтекстВыполненияПредставлениеКонтекстноеМеню" id="73"/>
<ExtendedTooltip name="КонтекстВыполненияПредставлениеРасширеннаяПодсказка" id="74"/>
</InputField>
<InputField name="КонтекстВыполненияТип" id="75">
<DataPath>КонтекстВыполнения.Тип</DataPath>
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<ShowInFooter>false</ShowInFooter>
<Width>10</Width>
<TextColor>style:НедоступныеДанныеЦвет</TextColor>
<ContextMenu name="КонтекстВыполненияТипКонтекстноеМеню" id="76"/>
<ExtendedTooltip name="КонтекстВыполненияТипРасширеннаяПодсказка" id="77"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</UsualGroup>
<InputField name="Комментарий" id="31">
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="32"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="33"/>
</InputField>
<UsualGroup name="ГруппаДатыХеш" id="34">
<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>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ThroughAlign>DontUse</ThroughAlign>
<ExtendedTooltip name="ГруппаДатыХешРасширеннаяПодсказка" id="35"/>
<ChildItems>
<InputField name="ДатаСоздания" id="36">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаСозданияКонтекстноеМеню" id="37"/>
<ExtendedTooltip name="ДатаСозданияРасширеннаяПодсказка" id="38"/>
</InputField>
<InputField name="ДатаИзменения" id="39">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаИзмененияКонтекстноеМеню" id="40"/>
<ExtendedTooltip name="ДатаИзмененияРасширеннаяПодсказка" id="41"/>
</InputField>
<InputField name="ХешВыражения" id="48">
<UserVisible>
<xr:Common>false</xr:Common>
</UserVisible>
<ReadOnly>true</ReadOnly>
<ContextMenu name="ХешВыраженияКонтекстноеМеню" id="49"/>
<ExtendedTooltip name="ХешВыраженияРасширеннаяПодсказка" id="50"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes>
<Attribute name="КонтекстВыполнения" id="1000001">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Контекст выполнения</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueTree</v8:Type>
</Type>
<Columns>
<Column name="Представление" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Представление</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column 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>
</Column>
<Column name="ПолныйПуть" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Полный путь</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
</Columns>
</Attribute>
</Attributes>
<BaseForm version="2.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<ChildItems>
<InputField name="Наименование" id="22">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="23"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="24"/>
</InputField>
<InputField name="Родитель" id="25">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="РодительКонтекстноеМеню" id="26"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="27"/>
</InputField>
<UsualGroup name="ГруппаВыражениеИПараметры" id="51">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа выражение и параметры</v8:content>
</v8:item>
</Title>
<Group>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаВыражениеИПараметрыРасширеннаяПодсказка" id="52"/>
<ChildItems>
<InputField name="Выражение" id="28">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>45</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>12</Height>
<MultiLine>true</MultiLine>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="29"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="30"/>
</InputField>
<UsualGroup name="ГруппаОтступКнопки" id="78">
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа отступ кнопки</v8:content>
</v8:item>
</ToolTip>
<Height>15</Height>
<VerticalStretch>false</VerticalStretch>
<Group>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаОтступКнопкиРасширеннаяПодсказка" id="79"/>
<ChildItems>
<Button name="ВставитьОбъектРеквизит" id="80">
<Type>UsualButton</Type>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<CommandName>0</CommandName>
<ExtendedTooltip name="ВставитьОбъектРеквизитРасширеннаяПодсказка" id="81"/>
</Button>
</ChildItems>
</UsualGroup>
<Table name="КонтекстВыполнения" id="53">
<Representation>Tree</Representation>
<CommandBarLocation>None</CommandBarLocation>
<ReadOnly>true</ReadOnly>
<ChangeRowSet>false</ChangeRowSet>
<ChangeRowOrder>false</ChangeRowOrder>
<Width>31</Width>
<Header>false</Header>
<HorizontalLines>false</HorizontalLines>
<AutoInsertNewRow>true</AutoInsertNewRow>
<InitialTreeView>ExpandTopLevel</InitialTreeView>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Контекст выполнения</v8:content>
</v8:item>
</Title>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<ContextMenu name="КонтекстВыполненияКонтекстноеМеню" id="54"/>
<AutoCommandBar name="КонтекстВыполненияКоманднаяПанель" id="55"/>
<ExtendedTooltip name="КонтекстВыполненияРасширеннаяПодсказка" id="56"/>
<SearchStringAddition name="КонтекстВыполненияСтрокаПоиска" id="57">
<AdditionSource>
<Item>КонтекстВыполнения</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="КонтекстВыполненияСтрокаПоискаКонтекстноеМеню" id="58"/>
<ExtendedTooltip name="КонтекстВыполненияСтрокаПоискаРасширеннаяПодсказка" id="59"/>
</SearchStringAddition>
<ViewStatusAddition name="КонтекстВыполненияСостояниеПросмотра" id="60">
<AdditionSource>
<Item>КонтекстВыполнения</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="КонтекстВыполненияСостояниеПросмотраКонтекстноеМеню" id="61"/>
<ExtendedTooltip name="КонтекстВыполненияСостояниеПросмотраРасширеннаяПодсказка" id="62"/>
</ViewStatusAddition>
<SearchControlAddition name="КонтекстВыполненияУправлениеПоиском" id="63">
<AdditionSource>
<Item>КонтекстВыполнения</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="КонтекстВыполненияУправлениеПоискомКонтекстноеМеню" id="64"/>
<ExtendedTooltip name="КонтекстВыполненияУправлениеПоискомРасширеннаяПодсказка" id="65"/>
</SearchControlAddition>
<ChildItems>
<InputField name="КонтекстВыполненияПредставление" id="72">
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Представление</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<Width>15</Width>
<ContextMenu name="КонтекстВыполненияПредставлениеКонтекстноеМеню" id="73"/>
<ExtendedTooltip name="КонтекстВыполненияПредставлениеРасширеннаяПодсказка" id="74"/>
</InputField>
<InputField name="КонтекстВыполненияТип" id="75">
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<ShowInFooter>false</ShowInFooter>
<Width>10</Width>
<TextColor>style:НедоступныеДанныеЦвет</TextColor>
<ContextMenu name="КонтекстВыполненияТипКонтекстноеМеню" id="76"/>
<ExtendedTooltip name="КонтекстВыполненияТипРасширеннаяПодсказка" id="77"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</UsualGroup>
<InputField name="Комментарий" id="31">
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="32"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="33"/>
</InputField>
<UsualGroup name="ГруппаДатыХеш" id="34">
<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>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ThroughAlign>DontUse</ThroughAlign>
<ExtendedTooltip name="ГруппаДатыХешРасширеннаяПодсказка" id="35"/>
<ChildItems>
<InputField name="ДатаСоздания" id="36">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаСозданияКонтекстноеМеню" id="37"/>
<ExtendedTooltip name="ДатаСозданияРасширеннаяПодсказка" id="38"/>
</InputField>
<InputField name="ДатаИзменения" id="39">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаИзмененияКонтекстноеМеню" id="40"/>
<ExtendedTooltip name="ДатаИзмененияРасширеннаяПодсказка" id="41"/>
</InputField>
<InputField name="ХешВыражения" id="48">
<UserVisible>
<xr:Common>false</xr:Common>
</UserVisible>
<ReadOnly>true</ReadOnly>
<ContextMenu name="ХешВыраженияКонтекстноеМеню" id="49"/>
<ExtendedTooltip name="ХешВыраженияРасширеннаяПодсказка" id="50"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes>
<Attribute name="КонтекстВыполнения" id="1000001">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Контекст выполнения</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueTree</v8:Type>
</Type>
<Columns>
<Column name="Представление" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Представление</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column 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>
</Column>
<Column name="ПолныйПуть" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Полный путь</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
</Columns>
</Attribute>
</Attributes>
</BaseForm>
</Form>

View File

@ -0,0 +1,953 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура РК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
РК_Сервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РК_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Объект[ЭтотОбъект.РК_РеквизитКода] = View().getText();
КонецПроцедуры
&НаКлиенте
Процедура РК_ПриОткрытииПосле(Отказ)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
Процедура ConsoleOnReady(Элемент)
Если ЭтотОбъект.РК_ИсходникиЗагружены Тогда
ИнициализацияРедактора();
//АктивироватьДополнительныеФункции();
ЗагрузитьКод();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ConsoleOnClick(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
РК_Клиент.ОбработатьСобытиеРедактора(ДанныеСобытия.Event.eventData1C, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИнициализацияРедактора
&НаКлиенте
Процедура ЗагрузитьКод() Экспорт
вью = View();
вью.minimap(Ложь);
вью.setText(Объект[ЭтотОбъект.РК_РеквизитКода], Неопределено, Ложь);
вью.setOriginalText(Объект[ЭтотОбъект.РК_РеквизитКода]);
КонецПроцедуры
&НаСервере
Функция ТекстОписанияПользовательскихОбъектов()
НовыйОбъект = Новый Структура;
НовыйОбъект.Вставить("properties", Новый Структура);
Дерево = РеквизитФормыВЗначение("КонтекстВыполнения");
Для Каждого Строка Из Дерево.Строки Цикл
РК_Сервер.РазобратьСтрокуДерева(НовыйОбъект.properties, Строка, "ПолныйПуть");
КонецЦикла;
customObjects = Новый Структура;
customObjects.Вставить("Параметры", НовыйОбъект);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("customObjects", customObjects));
ТекстJSON = ЗаписьJSON.Закрыть();
Возврат ТекстJSON;
КонецФункции
&НаКлиенте
Функция ИндексныйФайл()
Возврат ЭтотОбъект.РК_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
ЭтотОбъект.РК_HTML = СкопированныйФайл;
ЭтотОбъект.РК_ИсходникиЗагружены = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(ЭтотОбъект.РК_КаталогИсходников);
Файл = Новый ЗаписьТекста(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Исключение
Сообщить("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки()); //, Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеЗаписиФайлаМакета", ЭтотОбъект);
ИмяФайла = ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресМакета);
ДанныеМакета.НачатьЗапись(Оповещение, ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходникиНаКлиенте()
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияВременныхФайлов", ЭтотОбъект);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_КаталогИсходников, "*.*");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияИндексногоФайла", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияФайлаВерсии", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
Сообщить("Не удалось создать каталог для исходников"); // , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияКаталога", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
ЭтотОбъект.РК_КаталогИсходников = ИмяКаталога + "bsl_console\";
Оповещение = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект);
НачатьСозданиеКаталога(Оповещение, ЭтотОбъект.РК_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходники()
Оповещение = Новый ОписаниеОповещения("ПриПолученииКаталогаВременныхФайлов", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
ИзвлечьИсходники();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбнулитьМетаданные() Экспорт
View().clearMetadata();
ОбновитьСписокОбщихМодулей();
ОбновитьПользовательскиеОбъекты();
//View().updateMetadata(ТекстОписанияОбъекта());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПользовательскиеОбъекты()
View().updateMetadata(ТекстОписанияПользовательскихОбъектов());
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияРедактора()
Инфо = Новый СистемнаяИнформация();
View().init(Инфо.ВерсияПриложения);
View().setOption("autoResizeEditorLayout", Истина);
View().setOption("renderQueryDelimiters", Истина);
View().setOption("generateModificationEvent", Истина);
View().hideScrollX();
View().hideScrollY();
ПодключитьОбработчикОжидания("ОбнулитьМетаданные", 1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейсРедактора
&НаКлиенте
Функция View() Экспорт
Возврат Элементы.ПолеHTML.Документ.defaultView;
КонецФункции
&НаКлиенте
Процедура УстановитьТекст(Текст, Позиция, УчитыватьОтступПервойСтроки)
View().setText(Текст, Позиция, УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстКода() Экспорт
Объект[ЭтотОбъект.РК_РеквизитКода] = ЭтотОбъект.View().getText();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекст(ДляВыполнения = Ложь)
Код = View().getText();
Возврат Код;
КонецФункции
#КонецОбласти
#Область КонструкторЗапросов
&НаКлиенте
Процедура ПриЗакрытииКонструктораЗапросов(Текст, ДопПараметры) Экспорт
Если Текст <> Неопределено Тогда
Если Не View().queryMode Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, Символы.ПС + "|");
Текст = СтрЗаменить(Текст, """", """""");
Текст = """" + Текст + """";
КонецЕсли;
УстановитьТекст(Текст, ДопПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(Текст, ДопПараметры)
Конструктор = Новый КонструкторЗапроса();
Если ЗначениеЗаполнено(Текст) Тогда
Попытка
Конструктор.Текст = Текст;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте запроса:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораЗапросов", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовыйЗапрос(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторЗапроса("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьТекстЗапроса(Текст)
ТекстЗапроса = СтрЗаменить(Текст, "|", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """""", "$");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$", """");
Возврат ТекстЗапроса;
КонецФункции
&НаКлиенте
Процедура ВызватьКонструкторЗапроса(ПараметрыЗапроса) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовыйЗапрос", ЭтотОбъект);
ТекстВопроса = "Не найден текст запроса." + Символы.ПС + "Создать новый запрос?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТекстЗапроса = ПодготовитьТекстЗапроса(ПараметрыЗапроса.text);
ОткрытьКонструкторЗапроса(ТекстЗапроса, ПараметрыЗапроса.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонструкторФорматнойСтроки
&НаКлиенте
Процедура ПриЗакрытииКонструктораФорматнойСтроки(ФорматнаяСтрока, ДопПараметры) Экспорт
Если ФорматнаяСтрока <> Неопределено Тогда
ФорматнаяСтрока = СтрЗаменить(ФорматнаяСтрока, "'", "");
ФорматнаяСтрока = """" + ФорматнаяСтрока + """";
УстановитьТекст(ФорматнаяСтрока, ДопПараметры, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ДопПараметры)
Конструктор = Новый КонструкторФорматнойСтроки();
Попытка
Конструктор.Текст = ФорматнаяСтрока;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте форматной строки:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораФорматнойСтроки", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовуюФорматнуюСтроку(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторФорматнойСтроки("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВызватьКонструкторФорматнойСтроки(ПараметрыСтроки) Экспорт
Если ПараметрыСтроки = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовуюФорматнуюСтроку", ЭтотОбъект);
ТекстВопроса = "Форматная строка не найдена." + Символы.ПС + "Создать новую форматную строку?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ФорматнаяСтрока = СтрЗаменить(СтрЗаменить(ПараметрыСтроки.text, "|", ""), """", "");
ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ПараметрыСтроки.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДинамическоеОбновлениеМетаданных
&НаКлиенте
Функция ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьОписаниеОбъектаМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьСписокОбъектовМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбработкаСобытияПолученияМетаданных(Событие) Экспорт
ПараметрыЗапроса = НРег(Событие.metadata);
ВызыватьПодсказку = (Событие.trigger = "suggestion");
ДанныеОбновлены = Ложь;
Если 0 < СтрНайти(ПараметрыЗапроса, ".") Тогда
ЧастиЗапроса = СтрРазделить(ПараметрыЗапроса, ".");
Если ЧастиЗапроса[0] = "module" Тогда
Если ЧастиЗапроса.Количество() = 2 Тогда
ДанныеОбновлены = ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса);
Иначе
ДанныеОбновлены = ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Если Событие.trigger = "suggestion" И ДанныеОбновлены Тогда
View().triggerSuggestions();
КонецЕсли;
Если Событие.trigger = "snippet" Тогда
View().updateSnippetByGUID(Событие.snippet_guid);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСобытияПолученияПеременной(Событие) Экспорт
ИмяПеременной = Событие.variableName;
ИдентификаторПеременной = Событие.variableId;
ПутьКДанным = Событие.variablePath;
ПутьКДанным = СтрЗаменить(ПутьКДанным, "undefined", "");
Описание = РК_Сервер.ПолучитьОписаниеПеременной(ИдентификаторПеременной, ИмяПеременной, ПутьКДанным, Объект.РК_АдресХраненияПеременных);
Если ЗначениеЗаполнено(Описание) Тогда
View().updateVariableDescription(ИдентификаторПеременной, Описание);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаОбщихМодулейКлиент
&НаСервере
Функция СохранитьОбщиеМодулиВХранилище(КоллекцияОбщихМодулей) Экспорт
Файл = Новый ЗаписьJSON();
Файл.УстановитьСтроку();
Попытка
ЗаписатьJSON(Файл, КоллекцияОбщихМодулей.Общие);
Исключение
ВызватьИсключение("Не удалось сохранить коллекцию метаданных:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ЗначениеКоллекции = Файл.Закрыть();
Возврат ПоместитьВоВременноеХранилище(ЗначениеКоллекции, Новый УникальныйИдентификатор());
КонецФункции
&НаСервере
Процедура ЗаполнитьИменаОбщихМодулей(КоллекцияОбщихМодулей) Экспорт
// Соответствие между именем общего неглобального модуля в нижнем регистре
// и именем модуля, как оно задано в конфигураторе для правильной загрузки
// текстов общих модулей
ОбщиеМодули = Новый Соответствие();
Для Каждого Обход Из КоллекцияОбщихМодулей.Общие Цикл
ОбщиеМодули.Вставить(НРег(Обход.Ключ), Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ИменаОбщихМодулей = Новый ФиксированноеСоответствие(ОбщиеМодули);
// Именя глобальных модулей для загрузки текстов
Модули = Новый Массив();
Для Каждого Обход Из КоллекцияОбщихМодулей.Глобальные Цикл
Модули.Добавить(Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ГлобальныйМодули = Новый ФиксированныйМассив(Модули);
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
Путь = СтрРазделить(ПолноеИмяФайла, ЭтотОбъект.РК_РазделительПути, Ложь);
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
КонецФункции
&НаКлиенте
Функция НормализоватьПуть(Путь)
Путь = СокрЛП(Путь);
Если Прав(Путь, 1) <> ЭтотОбъект.РК_РазделительПути Тогда
Путь = Путь + ЭтотОбъект.РК_РазделительПути;
КонецЕсли;
Возврат Путь;
КонецФункции
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
КаталогИсходногоКода = ЭтотОбъект.РК_КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
Возврат КаталогИсходногоКода;
КонецФункции
&НаКлиенте
Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + ЭтотОбъект.РК_РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст);
КонецЦикла;
Состояние("Общие модули загружены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
ИмяВКонфигураторе = ЭтотОбъект.РК_ИменаОбщихМодулей.Получить(НРег(ИмяМодуля));
Если ИмяВКонфигураторе = Неопределено Тогда
ИмяВКонфигураторе = ИмяМодуля;
КонецЕсли;
ФайлМодуля = СтрШаблон("CommonModules%1%2%1Ext%1Module.bsl", ЭтотОбъект.РК_РазделительПути, ИмяВКонфигураторе);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
ИмяТипа = ?(ТипМодуля = "manager", "ManagerModule", "ObjectModule");
ФайлМодуля = СтрШаблон("%1%2Ext%2%3.bsl", СтруктураВыгрузки.ИмяКаталога, ЭтотОбъект.РК_РазделительПути, ИмяТипа);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = РК_Сервер.ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
ЗагруженоФункций = View().parseMetadataModule(Модуль.Текст, АдресЗагрузки);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ЭтотОбъект.РК_ГлобальныйМодули <> Неопределено И 0 < ЭтотОбъект.РК_ГлобальныйМодули.Количество());
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЕстьГлобальныеМодули Тогда
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
Если КаталогНаДиске.Существует() Тогда
Индекс = 0;
Пока Индекс < ЭтотОбъект.РК_ГлобальныйМодули.Количество() Цикл
ИмяМодуля = ЭтотОбъект.РК_ГлобальныйМодули.Получить(Индекс);
ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Истина);
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
ИмяМодуля = ЧастиЗапроса[1];
ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 4;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
СтруктураВыгрузки = Новый Структура();
СтруктураВыгрузки.Вставить("ТипМодуля" , ЧастиЗапроса[1]);
СтруктураВыгрузки.Вставить("ТипМетаданных" , ЧастиЗапроса[2]);
СтруктураВыгрузки.Вставить("ОбъектМетаданных" , ЧастиЗапроса[3]);
РК_Сервер.ДополнитьСтруктуруВыгрузкиИсходниковМетаданных(СтруктураВыгрузки, ЭтотОбъект.РК_РазделительПути);
Если ЗначениеЗаполнено(СтруктураВыгрузки.ИмяКаталога) Тогда
ЗагруженоФункций = ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокОбщихМодулей()
КоллекцияМетаданных = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресОбщихМодулей);
Если КоллекцияМетаданных <> Неопределено Тогда
Результат = View().updateMetadata(КоллекцияМетаданных, "commonModules.items");
ЗагрузитьГлобальныеМодули();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаВЧисло(Значение, ЗначениеПоУмолчанию = 0)
СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = ТипЧисло.ПривестиЗначение(Значение);
Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, ЗначениеПоУмолчанию);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(Текст)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыводаОшибки(ДопПараметры) Экспорт
Если ДопПараметры.ЗакрыватьКонсоль Тогда
ЗакрытьКонсоль(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Текст, ЗакрыватьКонсоль)
ПараметрыОповещения = Новый Структура("ЗакрыватьКонсоль", ЗакрыватьКонсоль);
Оповещение = Новый ОписаниеОповещения("ПослеВыводаОшибки", ЭтотОбъект, ПараметрыОповещения);
ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьРазделительПути()
ЭтотОбъект.РК_РазделительПути = ПолучитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИмяТемы()
ИмяТемы = Неопределено;
Имена = Новый Соответствие();
Имена.Вставить("СветлаяТема", "bsl-white");
Имена.Вставить("ТемнаяТема", "bsl-dark");
Для Каждого Элемент Из Элементы.Тема.ПодчиненныеЭлементы Цикл
Если Элемент.Пометка Тогда
ИмяТемы = Имена[Элемент.Имя];
КонецЕсли;
КонецЦикла;
Возврат ИмяТемы;
КонецФункции
&НаКлиенте
Процедура ПереключитьТему(Тема)
View().setTheme(Тема);
КонецПроцедуры
&НаСервере
Функция ЭтотОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект().ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция ПолучитьТекстМакета(ИмяМакета, УдалятьПереносыСтрок)
Макет = ПолучитьМакет(ИмяМакета);
Текст = Макет.ПолучитьТекст();
Если УдалятьПереносыСтрок Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ВебДокументДоступен()
Если Элементы.ПолеHTML.Документ <> Неопределено И Элементы.ПолеHTML.Документ.defaultView <> Неопределено Тогда
Попытка
ПолучитьТекст();
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьПользовательскиеФункции()
JSON = ПолучитьТекстМакета("ПользовательскиеФункции", Истина);
Результат = View().updateCustomFunctions(JSON);
Если ТипЗнч(Результат) = Тип("Булево") Тогда
СообщитьПользователю("Пользовательские функции успешно загружены!");
Иначе
Ошибка = "Не удалось загрузить пользовательские функции: " + Символы.ПС + Результат.errorDescription;
ВывестиОшибку(Ошибка, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
ЭтотОбъект.РК_ИндексныйФайл = "";
Если ДопПараметры.СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКонсоль(СтандартноеЗакрытие)
Если ЗначениеЗаполнено(ЭтотОбъект.РК_ИндексныйФайл) Тогда
ПараметрыОповещения = Новый Структура("СтандартноеЗакрытие", СтандартноеЗакрытие);
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияИндексногоФайла", ЭтотОбъект, ПараметрыОповещения);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
Если СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеБыстрымиПодсказками()
Элементы.БыстрыеПодсказки.Пометка = ЭтотОбъект.БыстрыеПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюКартыКода()
Элементы.КартаКода.Пометка = ЭтотОбъект.ВидимостьКартыКода;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСтрокиСостояния()
Элементы.СтрокаСостояния.Пометка = ЭтотОбъект.ВидимостьСтрокиСостояния;
Если ЭтотОбъект.ВидимостьСтрокиСостояния Тогда
View().showStatusBar();
Иначе
View().hideStatusBar();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюПробеловТабуляций()
Элементы.ОтображатьПробелыИТабуляции.Пометка = ЭтотОбъект.ОтображатьПробелыИТабуляции;
View().renderWhitespace(ЭтотОбъект.ОтображатьПробелыИТабуляции);
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСравнения()
Элементы.СравнитьСОригиналом.Видимость = ЗначениеЗаполнено(ЭтотОбъект.ИмяСохраненногоФайла);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,36 @@
<?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.17">
<Catalog uuid="becb07b2-3415-43c9-a364-6c348a8d8f63">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.СкриптыСхемДляОбработокОбъектов" category="Object">
<xr:TypeId>20e4a80b-d769-492c-9ca7-68a679e948a8</xr:TypeId>
<xr:ValueId>a62de217-8fd6-4dc3-b71d-51af6272e4d6</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.СкриптыСхемДляОбработокОбъектов" category="Ref">
<xr:TypeId>2876af58-e292-4451-b674-084f1ff92a2f</xr:TypeId>
<xr:ValueId>e4803c91-1dae-4301-a47a-2ade72728837</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.СкриптыСхемДляОбработокОбъектов" category="Selection">
<xr:TypeId>8e46e63c-eda4-4a40-bd55-c203458458da</xr:TypeId>
<xr:ValueId>13863640-24d2-4534-9bc4-5c3d638ee350</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.СкриптыСхемДляОбработокОбъектов" category="List">
<xr:TypeId>900615a3-5df4-4f40-b2e1-71b44ac05e7e</xr:TypeId>
<xr:ValueId>63dc441d-a717-4fd7-9b2d-e891aad49203</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.СкриптыСхемДляОбработокОбъектов" category="Manager">
<xr:TypeId>d21e2119-ed9a-445a-8979-e7e414f2e1f8</xr:TypeId>
<xr:ValueId>00908c6f-dbb2-40d8-9c88-0248e12626c2</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>СкриптыСхемДляОбработокОбъектов</Name>
<Comment/>
<ExtendedConfigurationObject>6eddeb91-1eaf-46fe-8b28-a306634f399c</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Form>ФормаЭлемента</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="cc944102-1710-408d-83c2-ee96abd78b0d">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ФормаЭлемента</Name>
<Comment/>
<ExtendedConfigurationObject>455f37fc-043a-4701-a144-48f89eea1356</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,154 @@
<?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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="OnOpen" callType="After">РК_ПриОткрытииПосле</Event>
<Event name="BeforeWrite" callType="After">РК_ПередЗаписьюПосле</Event>
<Event name="OnCreateAtServer" callType="After">РК_ПриСозданииНаСервереПосле</Event>
</Events>
<ChildItems>
<InputField name="Наименование" id="1">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="3"/>
</InputField>
<InputField name="Родитель" id="4">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="РодительКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="6"/>
</InputField>
<InputField name="Выражение" id="7">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>80</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>12</Height>
<MultiLine>true</MultiLine>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Параметры.ОбработкаОбъект - СправочникОбъект.ОбработкиОбъектов - объект текущей обработки.</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="9"/>
</InputField>
<InputField name="Комментарий" id="21">
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="22"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="23"/>
</InputField>
<UsualGroup name="ГруппаДаты" id="19">
<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>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ThroughAlign>DontUse</ThroughAlign>
<ExtendedTooltip name="ГруппаДатыРасширеннаяПодсказка" id="20"/>
<ChildItems>
<InputField name="ДатаСоздания" id="10">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаСозданияКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="ДатаСозданияРасширеннаяПодсказка" id="12"/>
</InputField>
<InputField name="ДатаИзменения" id="13">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаИзмененияКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="ДатаИзмененияРасширеннаяПодсказка" id="15"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes/>
<BaseForm version="2.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<ChildItems>
<InputField name="Наименование" id="1">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="3"/>
</InputField>
<InputField name="Родитель" id="4">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="РодительКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="6"/>
</InputField>
<InputField name="Выражение" id="7">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>80</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>12</Height>
<MultiLine>true</MultiLine>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Параметры.ОбработкаОбъект - СправочникОбъект.ОбработкиОбъектов - объект текущей обработки.</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="9"/>
</InputField>
<InputField name="Комментарий" id="21">
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="22"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="23"/>
</InputField>
<UsualGroup name="ГруппаДаты" id="19">
<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>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ThroughAlign>DontUse</ThroughAlign>
<ExtendedTooltip name="ГруппаДатыРасширеннаяПодсказка" id="20"/>
<ChildItems>
<InputField name="ДатаСоздания" id="10">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаСозданияКонтекстноеМеню" id="11"/>
<ExtendedTooltip name="ДатаСозданияРасширеннаяПодсказка" id="12"/>
</InputField>
<InputField name="ДатаИзменения" id="13">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаИзмененияКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="ДатаИзмененияРасширеннаяПодсказка" id="15"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>

View File

@ -0,0 +1,967 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура РК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
РК_Сервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РК_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Объект[ЭтотОбъект.РК_РеквизитКода] = View().getText();
КонецПроцедуры
&НаКлиенте
Процедура РК_ПриОткрытииПосле(Отказ)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
Процедура ConsoleOnReady(Элемент)
Если ЭтотОбъект.РК_ИсходникиЗагружены Тогда
ИнициализацияРедактора();
//АктивироватьДополнительныеФункции();
ЗагрузитьКод();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ConsoleOnClick(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
РК_Клиент.ОбработатьСобытиеРедактора(ДанныеСобытия.Event.eventData1C, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИнициализацияРедактора
&НаКлиенте
Процедура ЗагрузитьКод() Экспорт
вью = View();
вью.minimap(Ложь);
вью.setText(Объект[ЭтотОбъект.РК_РеквизитКода], Неопределено, Ложь);
вью.setOriginalText(Объект[ЭтотОбъект.РК_РеквизитКода]);
КонецПроцедуры
&НаСервере
Функция ТекстОписанияПользовательскихОбъектов()
customObjects = Новый Структура;
СписокРеквизитов = Новый Массив;
МетаданныеТипаОбъекта = Метаданные.Справочники.ОбработкиОбъектов;
ДобавитьРеквизитОбъекта(СписокРеквизитов, МетаданныеТипаОбъекта.СтандартныеРеквизиты);
ДобавитьРеквизитОбъекта(СписокРеквизитов, МетаданныеТипаОбъекта.Реквизиты);
ОбъектПараметры = Новый Структура("properties", Новый Структура);
customObjects.Вставить("Параметры", ОбъектПараметры);
ОбъектОбработкаОбъект = Новый Структура("properties", Новый Структура);
ОбъектПараметры.properties.Вставить("ОбработкаОбъект", ОбъектОбработкаОбъект);
Для Каждого СтрокаСвойство Из СписокРеквизитов Цикл
ОбъектОбработкаОбъект.properties.Вставить(СтрокаСвойство, Новый Структура);
КонецЦикла;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("customObjects", customObjects));
ТекстJSON = ЗаписьJSON.Закрыть();
Возврат ТекстJSON;
КонецФункции
Процедура ДобавитьРеквизитОбъекта(СписокРеквизитов, Реквизиты)
Для Каждого Реквизит Из Реквизиты Цикл
СписокРеквизитов.Добавить(Реквизит.Имя);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Функция ИндексныйФайл()
Возврат ЭтотОбъект.РК_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
ЭтотОбъект.РК_HTML = СкопированныйФайл;
ЭтотОбъект.РК_ИсходникиЗагружены = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(ЭтотОбъект.РК_КаталогИсходников);
Файл = Новый ЗаписьТекста(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Исключение
Сообщить("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки()); //, Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеЗаписиФайлаМакета", ЭтотОбъект);
ИмяФайла = ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресМакета);
ДанныеМакета.НачатьЗапись(Оповещение, ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходникиНаКлиенте()
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияВременныхФайлов", ЭтотОбъект);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_КаталогИсходников, "*.*");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияИндексногоФайла", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияФайлаВерсии", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
Сообщить("Не удалось создать каталог для исходников"); // , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияКаталога", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
ЭтотОбъект.РК_КаталогИсходников = ИмяКаталога + "bsl_console\";
Оповещение = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект);
НачатьСозданиеКаталога(Оповещение, ЭтотОбъект.РК_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходники()
Оповещение = Новый ОписаниеОповещения("ПриПолученииКаталогаВременныхФайлов", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
ИзвлечьИсходники();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбнулитьМетаданные() Экспорт
View().clearMetadata();
ОбновитьСписокОбщихМодулей();
ОбновитьПользовательскиеОбъекты();
//View().updateMetadata(ТекстОписанияОбъекта());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПользовательскиеОбъекты()
View().updateMetadata(ТекстОписанияПользовательскихОбъектов());
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияРедактора()
Инфо = Новый СистемнаяИнформация();
View().init(Инфо.ВерсияПриложения);
View().setOption("autoResizeEditorLayout", Истина);
View().setOption("renderQueryDelimiters", Истина);
View().setOption("generateModificationEvent", Истина);
View().hideScrollX();
View().hideScrollY();
ПодключитьОбработчикОжидания("ОбнулитьМетаданные", 1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейсРедактора
&НаКлиенте
Функция View() Экспорт
Возврат Элементы.ПолеHTML.Документ.defaultView;
КонецФункции
&НаКлиенте
Процедура УстановитьТекст(Текст, Позиция, УчитыватьОтступПервойСтроки)
View().setText(Текст, Позиция, УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстКода() Экспорт
Объект[ЭтотОбъект.РК_РеквизитКода] = ЭтотОбъект.View().getText();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекст(ДляВыполнения = Ложь)
Код = View().getText();
Возврат Код;
КонецФункции
#КонецОбласти
#Область КонструкторЗапросов
&НаКлиенте
Процедура ПриЗакрытииКонструктораЗапросов(Текст, ДопПараметры) Экспорт
Если Текст <> Неопределено Тогда
Если Не View().queryMode Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, Символы.ПС + "|");
Текст = СтрЗаменить(Текст, """", """""");
Текст = """" + Текст + """";
КонецЕсли;
УстановитьТекст(Текст, ДопПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(Текст, ДопПараметры)
Конструктор = Новый КонструкторЗапроса();
Если ЗначениеЗаполнено(Текст) Тогда
Попытка
Конструктор.Текст = Текст;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте запроса:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораЗапросов", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовыйЗапрос(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторЗапроса("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьТекстЗапроса(Текст)
ТекстЗапроса = СтрЗаменить(Текст, "|", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """""", "$");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$", """");
Возврат ТекстЗапроса;
КонецФункции
&НаКлиенте
Процедура ВызватьКонструкторЗапроса(ПараметрыЗапроса) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовыйЗапрос", ЭтотОбъект);
ТекстВопроса = "Не найден текст запроса." + Символы.ПС + "Создать новый запрос?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТекстЗапроса = ПодготовитьТекстЗапроса(ПараметрыЗапроса.text);
ОткрытьКонструкторЗапроса(ТекстЗапроса, ПараметрыЗапроса.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонструкторФорматнойСтроки
&НаКлиенте
Процедура ПриЗакрытииКонструктораФорматнойСтроки(ФорматнаяСтрока, ДопПараметры) Экспорт
Если ФорматнаяСтрока <> Неопределено Тогда
ФорматнаяСтрока = СтрЗаменить(ФорматнаяСтрока, "'", "");
ФорматнаяСтрока = """" + ФорматнаяСтрока + """";
УстановитьТекст(ФорматнаяСтрока, ДопПараметры, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ДопПараметры)
Конструктор = Новый КонструкторФорматнойСтроки();
Попытка
Конструктор.Текст = ФорматнаяСтрока;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте форматной строки:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораФорматнойСтроки", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовуюФорматнуюСтроку(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторФорматнойСтроки("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВызватьКонструкторФорматнойСтроки(ПараметрыСтроки) Экспорт
Если ПараметрыСтроки = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовуюФорматнуюСтроку", ЭтотОбъект);
ТекстВопроса = "Форматная строка не найдена." + Символы.ПС + "Создать новую форматную строку?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ФорматнаяСтрока = СтрЗаменить(СтрЗаменить(ПараметрыСтроки.text, "|", ""), """", "");
ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ПараметрыСтроки.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДинамическоеОбновлениеМетаданных
&НаКлиенте
Функция ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьОписаниеОбъектаМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьСписокОбъектовМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбработкаСобытияПолученияМетаданных(Событие) Экспорт
ПараметрыЗапроса = НРег(Событие.metadata);
ВызыватьПодсказку = (Событие.trigger = "suggestion");
ДанныеОбновлены = Ложь;
Если 0 < СтрНайти(ПараметрыЗапроса, ".") Тогда
ЧастиЗапроса = СтрРазделить(ПараметрыЗапроса, ".");
Если ЧастиЗапроса[0] = "module" Тогда
Если ЧастиЗапроса.Количество() = 2 Тогда
ДанныеОбновлены = ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса);
Иначе
ДанныеОбновлены = ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Если Событие.trigger = "suggestion" И ДанныеОбновлены Тогда
View().triggerSuggestions();
КонецЕсли;
Если Событие.trigger = "snippet" Тогда
View().updateSnippetByGUID(Событие.snippet_guid);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСобытияПолученияПеременной(Событие) Экспорт
ИмяПеременной = Событие.variableName;
ИдентификаторПеременной = Событие.variableId;
ПутьКДанным = Событие.variablePath;
ПутьКДанным = СтрЗаменить(ПутьКДанным, "undefined", "");
Описание = РК_Сервер.ПолучитьОписаниеПеременной(ИдентификаторПеременной, ИмяПеременной, ПутьКДанным, Объект.РК_АдресХраненияПеременных);
Если ЗначениеЗаполнено(Описание) Тогда
View().updateVariableDescription(ИдентификаторПеременной, Описание);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаОбщихМодулейКлиент
&НаСервере
Функция СохранитьОбщиеМодулиВХранилище(КоллекцияОбщихМодулей) Экспорт
Файл = Новый ЗаписьJSON();
Файл.УстановитьСтроку();
Попытка
ЗаписатьJSON(Файл, КоллекцияОбщихМодулей.Общие);
Исключение
ВызватьИсключение("Не удалось сохранить коллекцию метаданных:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ЗначениеКоллекции = Файл.Закрыть();
Возврат ПоместитьВоВременноеХранилище(ЗначениеКоллекции, Новый УникальныйИдентификатор());
КонецФункции
&НаСервере
Процедура ЗаполнитьИменаОбщихМодулей(КоллекцияОбщихМодулей) Экспорт
// Соответствие между именем общего неглобального модуля в нижнем регистре
// и именем модуля, как оно задано в конфигураторе для правильной загрузки
// текстов общих модулей
ОбщиеМодули = Новый Соответствие();
Для Каждого Обход Из КоллекцияОбщихМодулей.Общие Цикл
ОбщиеМодули.Вставить(НРег(Обход.Ключ), Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ИменаОбщихМодулей = Новый ФиксированноеСоответствие(ОбщиеМодули);
// Именя глобальных модулей для загрузки текстов
Модули = Новый Массив();
Для Каждого Обход Из КоллекцияОбщихМодулей.Глобальные Цикл
Модули.Добавить(Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ГлобальныйМодули = Новый ФиксированныйМассив(Модули);
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
Путь = СтрРазделить(ПолноеИмяФайла, ЭтотОбъект.РК_РазделительПути, Ложь);
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
КонецФункции
&НаКлиенте
Функция НормализоватьПуть(Путь)
Путь = СокрЛП(Путь);
Если Прав(Путь, 1) <> ЭтотОбъект.РК_РазделительПути Тогда
Путь = Путь + ЭтотОбъект.РК_РазделительПути;
КонецЕсли;
Возврат Путь;
КонецФункции
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
КаталогИсходногоКода = ЭтотОбъект.РК_КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
Возврат КаталогИсходногоКода;
КонецФункции
&НаКлиенте
Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + ЭтотОбъект.РК_РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст);
КонецЦикла;
Состояние("Общие модули загружены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
ИмяВКонфигураторе = ЭтотОбъект.РК_ИменаОбщихМодулей.Получить(НРег(ИмяМодуля));
Если ИмяВКонфигураторе = Неопределено Тогда
ИмяВКонфигураторе = ИмяМодуля;
КонецЕсли;
ФайлМодуля = СтрШаблон("CommonModules%1%2%1Ext%1Module.bsl", ЭтотОбъект.РК_РазделительПути, ИмяВКонфигураторе);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
ИмяТипа = ?(ТипМодуля = "manager", "ManagerModule", "ObjectModule");
ФайлМодуля = СтрШаблон("%1%2Ext%2%3.bsl", СтруктураВыгрузки.ИмяКаталога, ЭтотОбъект.РК_РазделительПути, ИмяТипа);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = РК_Сервер.ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
ЗагруженоФункций = View().parseMetadataModule(Модуль.Текст, АдресЗагрузки);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ЭтотОбъект.РК_ГлобальныйМодули <> Неопределено И 0 < ЭтотОбъект.РК_ГлобальныйМодули.Количество());
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЕстьГлобальныеМодули Тогда
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
Если КаталогНаДиске.Существует() Тогда
Индекс = 0;
Пока Индекс < ЭтотОбъект.РК_ГлобальныйМодули.Количество() Цикл
ИмяМодуля = ЭтотОбъект.РК_ГлобальныйМодули.Получить(Индекс);
ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Истина);
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
ИмяМодуля = ЧастиЗапроса[1];
ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 4;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
СтруктураВыгрузки = Новый Структура();
СтруктураВыгрузки.Вставить("ТипМодуля" , ЧастиЗапроса[1]);
СтруктураВыгрузки.Вставить("ТипМетаданных" , ЧастиЗапроса[2]);
СтруктураВыгрузки.Вставить("ОбъектМетаданных" , ЧастиЗапроса[3]);
РК_Сервер.ДополнитьСтруктуруВыгрузкиИсходниковМетаданных(СтруктураВыгрузки, ЭтотОбъект.РК_РазделительПути);
Если ЗначениеЗаполнено(СтруктураВыгрузки.ИмяКаталога) Тогда
ЗагруженоФункций = ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокОбщихМодулей()
КоллекцияМетаданных = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресОбщихМодулей);
Если КоллекцияМетаданных <> Неопределено Тогда
Результат = View().updateMetadata(КоллекцияМетаданных, "commonModules.items");
ЗагрузитьГлобальныеМодули();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаВЧисло(Значение, ЗначениеПоУмолчанию = 0)
СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = ТипЧисло.ПривестиЗначение(Значение);
Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, ЗначениеПоУмолчанию);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(Текст)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыводаОшибки(ДопПараметры) Экспорт
Если ДопПараметры.ЗакрыватьКонсоль Тогда
ЗакрытьКонсоль(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Текст, ЗакрыватьКонсоль)
ПараметрыОповещения = Новый Структура("ЗакрыватьКонсоль", ЗакрыватьКонсоль);
Оповещение = Новый ОписаниеОповещения("ПослеВыводаОшибки", ЭтотОбъект, ПараметрыОповещения);
ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьРазделительПути()
ЭтотОбъект.РК_РазделительПути = ПолучитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИмяТемы()
ИмяТемы = Неопределено;
Имена = Новый Соответствие();
Имена.Вставить("СветлаяТема", "bsl-white");
Имена.Вставить("ТемнаяТема", "bsl-dark");
Для Каждого Элемент Из Элементы.Тема.ПодчиненныеЭлементы Цикл
Если Элемент.Пометка Тогда
ИмяТемы = Имена[Элемент.Имя];
КонецЕсли;
КонецЦикла;
Возврат ИмяТемы;
КонецФункции
&НаКлиенте
Процедура ПереключитьТему(Тема)
View().setTheme(Тема);
КонецПроцедуры
&НаСервере
Функция ЭтотОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект().ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция ПолучитьТекстМакета(ИмяМакета, УдалятьПереносыСтрок)
Макет = ПолучитьМакет(ИмяМакета);
Текст = Макет.ПолучитьТекст();
Если УдалятьПереносыСтрок Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ВебДокументДоступен()
Если Элементы.ПолеHTML.Документ <> Неопределено И Элементы.ПолеHTML.Документ.defaultView <> Неопределено Тогда
Попытка
ПолучитьТекст();
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьПользовательскиеФункции()
JSON = ПолучитьТекстМакета("ПользовательскиеФункции", Истина);
Результат = View().updateCustomFunctions(JSON);
Если ТипЗнч(Результат) = Тип("Булево") Тогда
СообщитьПользователю("Пользовательские функции успешно загружены!");
Иначе
Ошибка = "Не удалось загрузить пользовательские функции: " + Символы.ПС + Результат.errorDescription;
ВывестиОшибку(Ошибка, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
ЭтотОбъект.РК_ИндексныйФайл = "";
Если ДопПараметры.СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКонсоль(СтандартноеЗакрытие)
Если ЗначениеЗаполнено(ЭтотОбъект.РК_ИндексныйФайл) Тогда
ПараметрыОповещения = Новый Структура("СтандартноеЗакрытие", СтандартноеЗакрытие);
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияИндексногоФайла", ЭтотОбъект, ПараметрыОповещения);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
Если СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеБыстрымиПодсказками()
Элементы.БыстрыеПодсказки.Пометка = ЭтотОбъект.БыстрыеПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюКартыКода()
Элементы.КартаКода.Пометка = ЭтотОбъект.ВидимостьКартыКода;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСтрокиСостояния()
Элементы.СтрокаСостояния.Пометка = ЭтотОбъект.ВидимостьСтрокиСостояния;
Если ЭтотОбъект.ВидимостьСтрокиСостояния Тогда
View().showStatusBar();
Иначе
View().hideStatusBar();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюПробеловТабуляций()
Элементы.ОтображатьПробелыИТабуляции.Пометка = ЭтотОбъект.ОтображатьПробелыИТабуляции;
View().renderWhitespace(ЭтотОбъект.ОтображатьПробелыИТабуляции);
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСравнения()
Элементы.СравнитьСОригиналом.Видимость = ЗначениеЗаполнено(ЭтотОбъект.ИмяСохраненногоФайла);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,36 @@
<?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.17">
<Catalog uuid="90ad4bf3-5427-4145-8cfb-190210bdb092">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.СкриптыУсловийСхемДляКомплексныхПроцессов" category="Object">
<xr:TypeId>32d2f24c-2d6b-4a1f-9b04-6fe8dbe81922</xr:TypeId>
<xr:ValueId>d03fc6bb-908c-4cbb-8139-65dfa8086814</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.СкриптыУсловийСхемДляКомплексныхПроцессов" category="Ref">
<xr:TypeId>7d335741-ee9c-41eb-8fbd-14afd3519e50</xr:TypeId>
<xr:ValueId>f301f471-d03d-46b3-8ccc-fac3cd1b6296</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.СкриптыУсловийСхемДляКомплексныхПроцессов" category="Selection">
<xr:TypeId>90a6b43c-f9d8-4a1e-b1c1-f209bb55ef4d</xr:TypeId>
<xr:ValueId>55eaf0ed-cd9f-407f-a52d-bea991813f8c</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.СкриптыУсловийСхемДляКомплексныхПроцессов" category="List">
<xr:TypeId>ce671a65-eed6-444d-a613-6d6d9d86ddaf</xr:TypeId>
<xr:ValueId>f9bd35cd-f054-46d1-ba4e-7d79a7186ea9</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.СкриптыУсловийСхемДляКомплексныхПроцессов" category="Manager">
<xr:TypeId>d0ee05f9-ea3a-42f1-bbd7-4be7c87f87a5</xr:TypeId>
<xr:ValueId>0f7d6906-7072-4065-86b9-8a3c65e8822c</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>СкриптыУсловийСхемДляКомплексныхПроцессов</Name>
<Comment/>
<ExtendedConfigurationObject>184b05f3-b9dd-4e3c-b0a4-2f78b6b8d16c</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Form>ФормаЭлемента</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="e0131d93-102f-47c2-b059-0ac186185584">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ФормаЭлемента</Name>
<Comment/>
<ExtendedConfigurationObject>c585bedc-8cba-4e7e-9ff3-992aa13be8e5</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,538 @@
<?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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="OnOpen" callType="After">РК_ПриОткрытииПосле</Event>
<Event name="BeforeWrite" callType="After">РК_ПередЗаписьюПосле</Event>
<Event name="OnCreateAtServer" callType="After">РК_ПриСозданииНаСервереПосле</Event>
</Events>
<ChildItems>
<InputField name="Наименование" id="22">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="23"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="24"/>
</InputField>
<InputField name="Родитель" id="25">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="РодительКонтекстноеМеню" id="26"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="27"/>
</InputField>
<UsualGroup name="ГруппаВыражениеИПараметры" id="28">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа выражение и параметры</v8:content>
</v8:item>
</Title>
<Group>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаВыражениеИПараметрыРасширеннаяПодсказка" id="29"/>
<ChildItems>
<InputField name="Выражение" id="30">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>45</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>12</Height>
<MultiLine>true</MultiLine>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="31"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="32"/>
</InputField>
<UsualGroup name="ГруппаОтступКнопки" id="33">
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа отступ кнопки</v8:content>
</v8:item>
</ToolTip>
<Height>15</Height>
<VerticalStretch>false</VerticalStretch>
<Group>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаОтступКнопкиРасширеннаяПодсказка" id="34"/>
<ChildItems>
<Button name="ВставитьОбъектРеквизит" id="35">
<Type>UsualButton</Type>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<CommandName>0</CommandName>
<ExtendedTooltip name="ВставитьОбъектРеквизитРасширеннаяПодсказка" id="36"/>
</Button>
</ChildItems>
</UsualGroup>
<Table name="КонтекстВыполнения" id="37">
<Representation>Tree</Representation>
<CommandBarLocation>None</CommandBarLocation>
<ReadOnly>true</ReadOnly>
<ChangeRowSet>false</ChangeRowSet>
<ChangeRowOrder>false</ChangeRowOrder>
<Width>31</Width>
<Header>false</Header>
<HorizontalLines>false</HorizontalLines>
<AutoInsertNewRow>true</AutoInsertNewRow>
<InitialTreeView>ExpandTopLevel</InitialTreeView>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Контекст выполнения</v8:content>
</v8:item>
</Title>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<ContextMenu name="КонтекстВыполненияКонтекстноеМеню" id="38"/>
<AutoCommandBar name="КонтекстВыполненияКоманднаяПанель" id="39"/>
<ExtendedTooltip name="КонтекстВыполненияРасширеннаяПодсказка" id="40"/>
<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>
<ChildItems>
<InputField name="КонтекстВыполненияПредставление" id="50">
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Представление</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<Width>15</Width>
<ContextMenu name="КонтекстВыполненияПредставлениеКонтекстноеМеню" id="51"/>
<ExtendedTooltip name="КонтекстВыполненияПредставлениеРасширеннаяПодсказка" id="52"/>
</InputField>
<InputField name="КонтекстВыполненияТип" id="53">
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<ShowInFooter>false</ShowInFooter>
<Width>10</Width>
<TextColor>style:НедоступныеДанныеЦвет</TextColor>
<ContextMenu name="КонтекстВыполненияТипКонтекстноеМеню" id="54"/>
<ExtendedTooltip name="КонтекстВыполненияТипРасширеннаяПодсказка" id="55"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаПроверка" id="70">
<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>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ExtendedTooltip name="ГруппаПроверкаРасширеннаяПодсказка" id="71"/>
<ChildItems>
<UsualGroup name="Группа1" id="78">
<Group>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="Группа1РасширеннаяПодсказка" id="79"/>
<ChildItems>
<InputField name="Процесс" id="72">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Что проверить</v8:content>
</v8:item>
</Title>
<TitleLocation>None</TitleLocation>
<AutoMaxWidth>false</AutoMaxWidth>
<DropListButton>false</DropListButton>
<ChoiceButton>true</ChoiceButton>
<ChoiceButtonRepresentation>ShowInInputField</ChoiceButtonRepresentation>
<OpenButton>false</OpenButton>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Что проверить</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ПроцессКонтекстноеМеню" id="73"/>
<ExtendedTooltip name="ПроцессРасширеннаяПодсказка" id="74"/>
</InputField>
<Button name="ПроверитьУсловие" id="80">
<Type>UsualButton</Type>
<CommandName>0</CommandName>
<ExtendedTooltip name="ПроверитьУсловиеРасширеннаяПодсказка" id="81"/>
</Button>
</ChildItems>
</UsualGroup>
<InputField name="ИтогПроверки" id="75">
<ReadOnly>true</ReadOnly>
<TitleLocation>None</TitleLocation>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>2</Height>
<MultiLine>true</MultiLine>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Итог проверки</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ИтогПроверкиКонтекстноеМеню" id="76"/>
<ExtendedTooltip name="ИтогПроверкиРасширеннаяПодсказка" id="77"/>
</InputField>
</ChildItems>
</UsualGroup>
<InputField name="Комментарий" id="56">
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="57"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="58"/>
</InputField>
<UsualGroup name="ГруппаДатыХеш" id="59">
<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>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ThroughAlign>DontUse</ThroughAlign>
<ExtendedTooltip name="ГруппаДатыХешРасширеннаяПодсказка" id="60"/>
<ChildItems>
<InputField name="ДатаСоздания" id="61">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаСозданияКонтекстноеМеню" id="62"/>
<ExtendedTooltip name="ДатаСозданияРасширеннаяПодсказка" id="63"/>
</InputField>
<InputField name="ДатаИзменения" id="64">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаИзмененияКонтекстноеМеню" id="65"/>
<ExtendedTooltip name="ДатаИзмененияРасширеннаяПодсказка" id="66"/>
</InputField>
<InputField name="ХешВыражения" id="67">
<UserVisible>
<xr:Common>false</xr:Common>
</UserVisible>
<ReadOnly>true</ReadOnly>
<ContextMenu name="ХешВыраженияКонтекстноеМеню" id="68"/>
<ExtendedTooltip name="ХешВыраженияРасширеннаяПодсказка" id="69"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes/>
<BaseForm version="2.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<ChildItems>
<InputField name="Наименование" id="22">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="23"/>
<ExtendedTooltip name="НаименованиеРасширеннаяПодсказка" id="24"/>
</InputField>
<InputField name="Родитель" id="25">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="РодительКонтекстноеМеню" id="26"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="27"/>
</InputField>
<UsualGroup name="ГруппаВыражениеИПараметры" id="28">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа выражение и параметры</v8:content>
</v8:item>
</Title>
<Group>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаВыражениеИПараметрыРасширеннаяПодсказка" id="29"/>
<ChildItems>
<InputField name="Выражение" id="30">
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<Width>45</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>12</Height>
<MultiLine>true</MultiLine>
<Font ref="style:ШрифтСкрипта" kind="StyleItem"/>
<ContextMenu name="ВыражениеКонтекстноеМеню" id="31"/>
<ExtendedTooltip name="ВыражениеРасширеннаяПодсказка" id="32"/>
</InputField>
<UsualGroup name="ГруппаОтступКнопки" id="33">
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа отступ кнопки</v8:content>
</v8:item>
</ToolTip>
<Height>15</Height>
<VerticalStretch>false</VerticalStretch>
<Group>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаОтступКнопкиРасширеннаяПодсказка" id="34"/>
<ChildItems>
<Button name="ВставитьОбъектРеквизит" id="35">
<Type>UsualButton</Type>
<GroupVerticalAlign>Center</GroupVerticalAlign>
<CommandName>0</CommandName>
<ExtendedTooltip name="ВставитьОбъектРеквизитРасширеннаяПодсказка" id="36"/>
</Button>
</ChildItems>
</UsualGroup>
<Table name="КонтекстВыполнения" id="37">
<Representation>Tree</Representation>
<CommandBarLocation>None</CommandBarLocation>
<ReadOnly>true</ReadOnly>
<ChangeRowSet>false</ChangeRowSet>
<ChangeRowOrder>false</ChangeRowOrder>
<Width>31</Width>
<Header>false</Header>
<HorizontalLines>false</HorizontalLines>
<AutoInsertNewRow>true</AutoInsertNewRow>
<InitialTreeView>ExpandTopLevel</InitialTreeView>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Контекст выполнения</v8:content>
</v8:item>
</Title>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<ContextMenu name="КонтекстВыполненияКонтекстноеМеню" id="38"/>
<AutoCommandBar name="КонтекстВыполненияКоманднаяПанель" id="39"/>
<ExtendedTooltip name="КонтекстВыполненияРасширеннаяПодсказка" id="40"/>
<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>
<ChildItems>
<InputField name="КонтекстВыполненияПредставление" id="50">
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Представление</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<Width>15</Width>
<ContextMenu name="КонтекстВыполненияПредставлениеКонтекстноеМеню" id="51"/>
<ExtendedTooltip name="КонтекстВыполненияПредставлениеРасширеннаяПодсказка" id="52"/>
</InputField>
<InputField name="КонтекстВыполненияТип" id="53">
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<ShowInFooter>false</ShowInFooter>
<Width>10</Width>
<TextColor>style:НедоступныеДанныеЦвет</TextColor>
<ContextMenu name="КонтекстВыполненияТипКонтекстноеМеню" id="54"/>
<ExtendedTooltip name="КонтекстВыполненияТипРасширеннаяПодсказка" id="55"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаПроверка" id="70">
<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>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ExtendedTooltip name="ГруппаПроверкаРасширеннаяПодсказка" id="71"/>
<ChildItems>
<UsualGroup name="Группа1" id="78">
<Group>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="Группа1РасширеннаяПодсказка" id="79"/>
<ChildItems>
<InputField name="Процесс" id="72">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Что проверить</v8:content>
</v8:item>
</Title>
<TitleLocation>None</TitleLocation>
<AutoMaxWidth>false</AutoMaxWidth>
<DropListButton>false</DropListButton>
<ChoiceButton>true</ChoiceButton>
<ChoiceButtonRepresentation>ShowInInputField</ChoiceButtonRepresentation>
<OpenButton>false</OpenButton>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Что проверить</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ПроцессКонтекстноеМеню" id="73"/>
<ExtendedTooltip name="ПроцессРасширеннаяПодсказка" id="74"/>
</InputField>
<Button name="ПроверитьУсловие" id="80">
<Type>UsualButton</Type>
<CommandName>0</CommandName>
<ExtendedTooltip name="ПроверитьУсловиеРасширеннаяПодсказка" id="81"/>
</Button>
</ChildItems>
</UsualGroup>
<InputField name="ИтогПроверки" id="75">
<ReadOnly>true</ReadOnly>
<TitleLocation>None</TitleLocation>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>2</Height>
<MultiLine>true</MultiLine>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Итог проверки</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ИтогПроверкиКонтекстноеМеню" id="76"/>
<ExtendedTooltip name="ИтогПроверкиРасширеннаяПодсказка" id="77"/>
</InputField>
</ChildItems>
</UsualGroup>
<InputField name="Комментарий" id="56">
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ContextMenu name="КомментарийКонтекстноеМеню" id="57"/>
<ExtendedTooltip name="КомментарийРасширеннаяПодсказка" id="58"/>
</InputField>
<UsualGroup name="ГруппаДатыХеш" id="59">
<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>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ThroughAlign>DontUse</ThroughAlign>
<ExtendedTooltip name="ГруппаДатыХешРасширеннаяПодсказка" id="60"/>
<ChildItems>
<InputField name="ДатаСоздания" id="61">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаСозданияКонтекстноеМеню" id="62"/>
<ExtendedTooltip name="ДатаСозданияРасширеннаяПодсказка" id="63"/>
</InputField>
<InputField name="ДатаИзменения" id="64">
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДатаИзмененияКонтекстноеМеню" id="65"/>
<ExtendedTooltip name="ДатаИзмененияРасширеннаяПодсказка" id="66"/>
</InputField>
<InputField name="ХешВыражения" id="67">
<UserVisible>
<xr:Common>false</xr:Common>
</UserVisible>
<ReadOnly>true</ReadOnly>
<ContextMenu name="ХешВыраженияКонтекстноеМеню" id="68"/>
<ExtendedTooltip name="ХешВыраженияРасширеннаяПодсказка" id="69"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>

View File

@ -0,0 +1,953 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура РК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
РК_Сервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РК_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Объект[ЭтотОбъект.РК_РеквизитКода] = View().getText();
КонецПроцедуры
&НаКлиенте
Процедура РК_ПриОткрытииПосле(Отказ)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
Процедура ConsoleOnReady(Элемент)
Если ЭтотОбъект.РК_ИсходникиЗагружены Тогда
ИнициализацияРедактора();
//АктивироватьДополнительныеФункции();
ЗагрузитьКод();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ConsoleOnClick(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
РК_Клиент.ОбработатьСобытиеРедактора(ДанныеСобытия.Event.eventData1C, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИнициализацияРедактора
&НаКлиенте
Процедура ЗагрузитьКод() Экспорт
вью = View();
вью.minimap(Ложь);
вью.setText(Объект[ЭтотОбъект.РК_РеквизитКода], Неопределено, Ложь);
вью.setOriginalText(Объект[ЭтотОбъект.РК_РеквизитКода]);
КонецПроцедуры
&НаСервере
Функция ТекстОписанияПользовательскихОбъектов()
НовыйОбъект = Новый Структура;
НовыйОбъект.Вставить("properties", Новый Структура);
Дерево = РеквизитФормыВЗначение("КонтекстВыполнения");
Для Каждого Строка Из Дерево.Строки Цикл
РК_Сервер.РазобратьСтрокуДерева(НовыйОбъект.properties, Строка, "ПолныйПуть");
КонецЦикла;
customObjects = Новый Структура;
customObjects.Вставить("Параметры", НовыйОбъект);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("customObjects", customObjects));
ТекстJSON = ЗаписьJSON.Закрыть();
Возврат ТекстJSON;
КонецФункции
&НаКлиенте
Функция ИндексныйФайл()
Возврат ЭтотОбъект.РК_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
ЭтотОбъект.РК_HTML = СкопированныйФайл;
ЭтотОбъект.РК_ИсходникиЗагружены = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(ЭтотОбъект.РК_КаталогИсходников);
Файл = Новый ЗаписьТекста(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Исключение
Сообщить("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки()); //, Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеЗаписиФайлаМакета", ЭтотОбъект);
ИмяФайла = ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресМакета);
ДанныеМакета.НачатьЗапись(Оповещение, ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходникиНаКлиенте()
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияВременныхФайлов", ЭтотОбъект);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_КаталогИсходников, "*.*");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияИндексногоФайла", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияФайлаВерсии", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
Сообщить("Не удалось создать каталог для исходников"); // , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияКаталога", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
ЭтотОбъект.РК_КаталогИсходников = ИмяКаталога + "bsl_console\";
Оповещение = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект);
НачатьСозданиеКаталога(Оповещение, ЭтотОбъект.РК_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходники()
Оповещение = Новый ОписаниеОповещения("ПриПолученииКаталогаВременныхФайлов", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
ИзвлечьИсходники();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбнулитьМетаданные() Экспорт
View().clearMetadata();
ОбновитьСписокОбщихМодулей();
ОбновитьПользовательскиеОбъекты();
//View().updateMetadata(ТекстОписанияОбъекта());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПользовательскиеОбъекты()
View().updateMetadata(ТекстОписанияПользовательскихОбъектов());
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияРедактора()
Инфо = Новый СистемнаяИнформация();
View().init(Инфо.ВерсияПриложения);
View().setOption("autoResizeEditorLayout", Истина);
View().setOption("renderQueryDelimiters", Истина);
View().setOption("generateModificationEvent", Истина);
View().hideScrollX();
View().hideScrollY();
ПодключитьОбработчикОжидания("ОбнулитьМетаданные", 1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейсРедактора
&НаКлиенте
Функция View() Экспорт
Возврат Элементы.ПолеHTML.Документ.defaultView;
КонецФункции
&НаКлиенте
Процедура УстановитьТекст(Текст, Позиция, УчитыватьОтступПервойСтроки)
View().setText(Текст, Позиция, УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстКода() Экспорт
Объект[ЭтотОбъект.РК_РеквизитКода] = ЭтотОбъект.View().getText();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекст(ДляВыполнения = Ложь)
Код = View().getText();
Возврат Код;
КонецФункции
#КонецОбласти
#Область КонструкторЗапросов
&НаКлиенте
Процедура ПриЗакрытииКонструктораЗапросов(Текст, ДопПараметры) Экспорт
Если Текст <> Неопределено Тогда
Если Не View().queryMode Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, Символы.ПС + "|");
Текст = СтрЗаменить(Текст, """", """""");
Текст = """" + Текст + """";
КонецЕсли;
УстановитьТекст(Текст, ДопПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(Текст, ДопПараметры)
Конструктор = Новый КонструкторЗапроса();
Если ЗначениеЗаполнено(Текст) Тогда
Попытка
Конструктор.Текст = Текст;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте запроса:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораЗапросов", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовыйЗапрос(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторЗапроса("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьТекстЗапроса(Текст)
ТекстЗапроса = СтрЗаменить(Текст, "|", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """""", "$");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$", """");
Возврат ТекстЗапроса;
КонецФункции
&НаКлиенте
Процедура ВызватьКонструкторЗапроса(ПараметрыЗапроса) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовыйЗапрос", ЭтотОбъект);
ТекстВопроса = "Не найден текст запроса." + Символы.ПС + "Создать новый запрос?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТекстЗапроса = ПодготовитьТекстЗапроса(ПараметрыЗапроса.text);
ОткрытьКонструкторЗапроса(ТекстЗапроса, ПараметрыЗапроса.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонструкторФорматнойСтроки
&НаКлиенте
Процедура ПриЗакрытииКонструктораФорматнойСтроки(ФорматнаяСтрока, ДопПараметры) Экспорт
Если ФорматнаяСтрока <> Неопределено Тогда
ФорматнаяСтрока = СтрЗаменить(ФорматнаяСтрока, "'", "");
ФорматнаяСтрока = """" + ФорматнаяСтрока + """";
УстановитьТекст(ФорматнаяСтрока, ДопПараметры, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ДопПараметры)
Конструктор = Новый КонструкторФорматнойСтроки();
Попытка
Конструктор.Текст = ФорматнаяСтрока;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте форматной строки:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораФорматнойСтроки", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовуюФорматнуюСтроку(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторФорматнойСтроки("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВызватьКонструкторФорматнойСтроки(ПараметрыСтроки) Экспорт
Если ПараметрыСтроки = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовуюФорматнуюСтроку", ЭтотОбъект);
ТекстВопроса = "Форматная строка не найдена." + Символы.ПС + "Создать новую форматную строку?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ФорматнаяСтрока = СтрЗаменить(СтрЗаменить(ПараметрыСтроки.text, "|", ""), """", "");
ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ПараметрыСтроки.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДинамическоеОбновлениеМетаданных
&НаКлиенте
Функция ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьОписаниеОбъектаМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьСписокОбъектовМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбработкаСобытияПолученияМетаданных(Событие) Экспорт
ПараметрыЗапроса = НРег(Событие.metadata);
ВызыватьПодсказку = (Событие.trigger = "suggestion");
ДанныеОбновлены = Ложь;
Если 0 < СтрНайти(ПараметрыЗапроса, ".") Тогда
ЧастиЗапроса = СтрРазделить(ПараметрыЗапроса, ".");
Если ЧастиЗапроса[0] = "module" Тогда
Если ЧастиЗапроса.Количество() = 2 Тогда
ДанныеОбновлены = ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса);
Иначе
ДанныеОбновлены = ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Если Событие.trigger = "suggestion" И ДанныеОбновлены Тогда
View().triggerSuggestions();
КонецЕсли;
Если Событие.trigger = "snippet" Тогда
View().updateSnippetByGUID(Событие.snippet_guid);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСобытияПолученияПеременной(Событие) Экспорт
ИмяПеременной = Событие.variableName;
ИдентификаторПеременной = Событие.variableId;
ПутьКДанным = Событие.variablePath;
ПутьКДанным = СтрЗаменить(ПутьКДанным, "undefined", "");
Описание = РК_Сервер.ПолучитьОписаниеПеременной(ИдентификаторПеременной, ИмяПеременной, ПутьКДанным, Объект.РК_АдресХраненияПеременных);
Если ЗначениеЗаполнено(Описание) Тогда
View().updateVariableDescription(ИдентификаторПеременной, Описание);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаОбщихМодулейКлиент
&НаСервере
Функция СохранитьОбщиеМодулиВХранилище(КоллекцияОбщихМодулей) Экспорт
Файл = Новый ЗаписьJSON();
Файл.УстановитьСтроку();
Попытка
ЗаписатьJSON(Файл, КоллекцияОбщихМодулей.Общие);
Исключение
ВызватьИсключение("Не удалось сохранить коллекцию метаданных:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ЗначениеКоллекции = Файл.Закрыть();
Возврат ПоместитьВоВременноеХранилище(ЗначениеКоллекции, Новый УникальныйИдентификатор());
КонецФункции
&НаСервере
Процедура ЗаполнитьИменаОбщихМодулей(КоллекцияОбщихМодулей) Экспорт
// Соответствие между именем общего неглобального модуля в нижнем регистре
// и именем модуля, как оно задано в конфигураторе для правильной загрузки
// текстов общих модулей
ОбщиеМодули = Новый Соответствие();
Для Каждого Обход Из КоллекцияОбщихМодулей.Общие Цикл
ОбщиеМодули.Вставить(НРег(Обход.Ключ), Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ИменаОбщихМодулей = Новый ФиксированноеСоответствие(ОбщиеМодули);
// Именя глобальных модулей для загрузки текстов
Модули = Новый Массив();
Для Каждого Обход Из КоллекцияОбщихМодулей.Глобальные Цикл
Модули.Добавить(Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ГлобальныйМодули = Новый ФиксированныйМассив(Модули);
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
Путь = СтрРазделить(ПолноеИмяФайла, ЭтотОбъект.РК_РазделительПути, Ложь);
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
КонецФункции
&НаКлиенте
Функция НормализоватьПуть(Путь)
Путь = СокрЛП(Путь);
Если Прав(Путь, 1) <> ЭтотОбъект.РК_РазделительПути Тогда
Путь = Путь + ЭтотОбъект.РК_РазделительПути;
КонецЕсли;
Возврат Путь;
КонецФункции
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
КаталогИсходногоКода = ЭтотОбъект.РК_КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
Возврат КаталогИсходногоКода;
КонецФункции
&НаКлиенте
Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + ЭтотОбъект.РК_РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст);
КонецЦикла;
Состояние("Общие модули загружены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
ИмяВКонфигураторе = ЭтотОбъект.РК_ИменаОбщихМодулей.Получить(НРег(ИмяМодуля));
Если ИмяВКонфигураторе = Неопределено Тогда
ИмяВКонфигураторе = ИмяМодуля;
КонецЕсли;
ФайлМодуля = СтрШаблон("CommonModules%1%2%1Ext%1Module.bsl", ЭтотОбъект.РК_РазделительПути, ИмяВКонфигураторе);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
ИмяТипа = ?(ТипМодуля = "manager", "ManagerModule", "ObjectModule");
ФайлМодуля = СтрШаблон("%1%2Ext%2%3.bsl", СтруктураВыгрузки.ИмяКаталога, ЭтотОбъект.РК_РазделительПути, ИмяТипа);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = РК_Сервер.ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
ЗагруженоФункций = View().parseMetadataModule(Модуль.Текст, АдресЗагрузки);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ЭтотОбъект.РК_ГлобальныйМодули <> Неопределено И 0 < ЭтотОбъект.РК_ГлобальныйМодули.Количество());
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЕстьГлобальныеМодули Тогда
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
Если КаталогНаДиске.Существует() Тогда
Индекс = 0;
Пока Индекс < ЭтотОбъект.РК_ГлобальныйМодули.Количество() Цикл
ИмяМодуля = ЭтотОбъект.РК_ГлобальныйМодули.Получить(Индекс);
ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Истина);
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
ИмяМодуля = ЧастиЗапроса[1];
ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 4;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
СтруктураВыгрузки = Новый Структура();
СтруктураВыгрузки.Вставить("ТипМодуля" , ЧастиЗапроса[1]);
СтруктураВыгрузки.Вставить("ТипМетаданных" , ЧастиЗапроса[2]);
СтруктураВыгрузки.Вставить("ОбъектМетаданных" , ЧастиЗапроса[3]);
РК_Сервер.ДополнитьСтруктуруВыгрузкиИсходниковМетаданных(СтруктураВыгрузки, ЭтотОбъект.РК_РазделительПути);
Если ЗначениеЗаполнено(СтруктураВыгрузки.ИмяКаталога) Тогда
ЗагруженоФункций = ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокОбщихМодулей()
КоллекцияМетаданных = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресОбщихМодулей);
Если КоллекцияМетаданных <> Неопределено Тогда
Результат = View().updateMetadata(КоллекцияМетаданных, "commonModules.items");
ЗагрузитьГлобальныеМодули();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаВЧисло(Значение, ЗначениеПоУмолчанию = 0)
СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = ТипЧисло.ПривестиЗначение(Значение);
Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, ЗначениеПоУмолчанию);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(Текст)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыводаОшибки(ДопПараметры) Экспорт
Если ДопПараметры.ЗакрыватьКонсоль Тогда
ЗакрытьКонсоль(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Текст, ЗакрыватьКонсоль)
ПараметрыОповещения = Новый Структура("ЗакрыватьКонсоль", ЗакрыватьКонсоль);
Оповещение = Новый ОписаниеОповещения("ПослеВыводаОшибки", ЭтотОбъект, ПараметрыОповещения);
ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьРазделительПути()
ЭтотОбъект.РК_РазделительПути = ПолучитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИмяТемы()
ИмяТемы = Неопределено;
Имена = Новый Соответствие();
Имена.Вставить("СветлаяТема", "bsl-white");
Имена.Вставить("ТемнаяТема", "bsl-dark");
Для Каждого Элемент Из Элементы.Тема.ПодчиненныеЭлементы Цикл
Если Элемент.Пометка Тогда
ИмяТемы = Имена[Элемент.Имя];
КонецЕсли;
КонецЦикла;
Возврат ИмяТемы;
КонецФункции
&НаКлиенте
Процедура ПереключитьТему(Тема)
View().setTheme(Тема);
КонецПроцедуры
&НаСервере
Функция ЭтотОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект().ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция ПолучитьТекстМакета(ИмяМакета, УдалятьПереносыСтрок)
Макет = ПолучитьМакет(ИмяМакета);
Текст = Макет.ПолучитьТекст();
Если УдалятьПереносыСтрок Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ВебДокументДоступен()
Если Элементы.ПолеHTML.Документ <> Неопределено И Элементы.ПолеHTML.Документ.defaultView <> Неопределено Тогда
Попытка
ПолучитьТекст();
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьПользовательскиеФункции()
JSON = ПолучитьТекстМакета("ПользовательскиеФункции", Истина);
Результат = View().updateCustomFunctions(JSON);
Если ТипЗнч(Результат) = Тип("Булево") Тогда
СообщитьПользователю("Пользовательские функции успешно загружены!");
Иначе
Ошибка = "Не удалось загрузить пользовательские функции: " + Символы.ПС + Результат.errorDescription;
ВывестиОшибку(Ошибка, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
ЭтотОбъект.РК_ИндексныйФайл = "";
Если ДопПараметры.СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКонсоль(СтандартноеЗакрытие)
Если ЗначениеЗаполнено(ЭтотОбъект.РК_ИндексныйФайл) Тогда
ПараметрыОповещения = Новый Структура("СтандартноеЗакрытие", СтандартноеЗакрытие);
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияИндексногоФайла", ЭтотОбъект, ПараметрыОповещения);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
Если СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеБыстрымиПодсказками()
Элементы.БыстрыеПодсказки.Пометка = ЭтотОбъект.БыстрыеПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюКартыКода()
Элементы.КартаКода.Пометка = ЭтотОбъект.ВидимостьКартыКода;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСтрокиСостояния()
Элементы.СтрокаСостояния.Пометка = ЭтотОбъект.ВидимостьСтрокиСостояния;
Если ЭтотОбъект.ВидимостьСтрокиСостояния Тогда
View().showStatusBar();
Иначе
View().hideStatusBar();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюПробеловТабуляций()
Элементы.ОтображатьПробелыИТабуляции.Пометка = ЭтотОбъект.ОтображатьПробелыИТабуляции;
View().renderWhitespace(ЭтотОбъект.ОтображатьПробелыИТабуляции);
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСравнения()
Элементы.СравнитьСОригиналом.Видимость = ЗначениеЗаполнено(ЭтотОбъект.ИмяСохраненногоФайла);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,36 @@
<?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.17">
<Catalog uuid="58bdf66e-59c5-4de7-917c-8376c8afe0e4">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.УсловияЗадач" category="Object">
<xr:TypeId>15c6b8f7-279e-47e2-8afd-acc0dbf33745</xr:TypeId>
<xr:ValueId>51b01542-d8f9-40de-86d1-061ce57b7a81</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.УсловияЗадач" category="Ref">
<xr:TypeId>159ff335-cb74-4fed-879e-022a83138094</xr:TypeId>
<xr:ValueId>4428231e-0da2-427d-9d0b-f2a2f8686aa7</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.УсловияЗадач" category="Selection">
<xr:TypeId>7170d0fd-f49e-4013-a445-9112b5378a75</xr:TypeId>
<xr:ValueId>3ccb879b-b6ee-4616-98c5-27349d26969d</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.УсловияЗадач" category="List">
<xr:TypeId>511289ff-df4f-4c98-993a-19bb07d9d2a0</xr:TypeId>
<xr:ValueId>04baace8-13e7-49e7-9275-e692e60ea7fa</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.УсловияЗадач" category="Manager">
<xr:TypeId>ca17b0a6-619f-420d-acb8-2b2598f986fb</xr:TypeId>
<xr:ValueId>11a4d5c8-7225-4255-b86d-8c001559ba54</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>УсловияЗадач</Name>
<Comment/>
<ExtendedConfigurationObject>ad18e4b7-69b5-4c34-8a5f-bb802056987b</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<Form>ФормаЭлемента</Form>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Form uuid="77e29ae9-a72b-4922-9357-16f4ea1e7b03">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ФормаЭлемента</Name>
<Comment/>
<ExtendedConfigurationObject>867890ea-de86-43bd-b380-611315ee422b</ExtendedConfigurationObject>
<FormType>Managed</FormType>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,796 @@
<?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:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" 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.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="OnOpen" callType="After">РК_ПриОткрытииПосле</Event>
<Event name="BeforeWrite" callType="After">РК_ПередЗаписьюПосле</Event>
<Event name="OnCreateAtServer" callType="After">РК_ПриСозданииНаСервереПосле</Event>
</Events>
<ChildItems>
<InputField name="Наименование" id="3">
<EditMode>EnterOnInput</EditMode>
<AutoMaxWidth>false</AutoMaxWidth>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="4"/>
<ExtendedTooltip name="НаименованиеExtendedTooltip" id="51"/>
</InputField>
<InputField name="Родитель" id="117">
<AutoMaxWidth>false</AutoMaxWidth>
<ContextMenu name="РодительКонтекстноеМеню" id="118"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="119"/>
</InputField>
<InputField name="СпособЗаданияУсловия" id="7">
<EditMode>EnterOnInput</EditMode>
<HorizontalStretch>false</HorizontalStretch>
<ContextMenu name="СпособЗаданияУсловияКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="СпособЗаданияУсловияExtendedTooltip" id="54"/>
</InputField>
<Pages name="Страницы" id="20">
<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>
<PagesRepresentation>None</PagesRepresentation>
<ExtendedTooltip name="СтраницыExtendedTooltip" id="55"/>
<ChildItems>
<Page name="СтраницаВРежимеКонструктора" id="21">
<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="СтраницаВРежимеКонструктораExtendedTooltip" id="56"/>
<ChildItems>
<UsualGroup name="ГруппаКомпоновщик" id="46">
<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>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаКомпоновщикExtendedTooltip" id="57"/>
<ChildItems>
<Table name="КомпоновщикНастройкиОтбор" id="30">
<Representation>Tree</Representation>
<Autofill>true</Autofill>
<InitialTreeView>ExpandAllLevels</InitialTreeView>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<ViewMode>All</ViewMode>
<SettingsNamedItemDetailedRepresentation>false</SettingsNamedItemDetailedRepresentation>
<ContextMenu name="КомпоновщикНастройкиОтборКонтекстноеМеню" id="31"/>
<AutoCommandBar name="КомпоновщикНастройкиОтборКоманднаяПанель" id="32"/>
<ExtendedTooltip name="КомпоновщикНастройкиОтборExtendedTooltip" id="58"/>
<SearchStringAddition name="КомпоновщикНастройкиОтборСтрокаПоиска" id="72">
<AdditionSource>
<Item>КомпоновщикНастройкиОтбор</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="КомпоновщикНастройкиОтборСтрокаПоискаКонтекстноеМеню" id="73"/>
<ExtendedTooltip name="КомпоновщикНастройкиОтборСтрокаПоискаРасширеннаяПодсказка" id="74"/>
</SearchStringAddition>
<ViewStatusAddition name="КомпоновщикНастройкиОтборСостояниеПросмотра" id="75">
<AdditionSource>
<Item>КомпоновщикНастройкиОтбор</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="КомпоновщикНастройкиОтборСостояниеПросмотраКонтекстноеМеню" id="76"/>
<ExtendedTooltip name="КомпоновщикНастройкиОтборСостояниеПросмотраРасширеннаяПодсказка" id="77"/>
</ViewStatusAddition>
<SearchControlAddition name="КомпоновщикНастройкиОтборУправлениеПоиском" id="78">
<AdditionSource>
<Item>КомпоновщикНастройкиОтбор</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="КомпоновщикНастройкиОтборУправлениеПоискомКонтекстноеМеню" id="79"/>
<ExtendedTooltip name="КомпоновщикНастройкиОтборУправлениеПоискомРасширеннаяПодсказка" id="80"/>
</SearchControlAddition>
</Table>
</ChildItems>
</UsualGroup>
</ChildItems>
</Page>
<Page name="СтраницаНаВстроенномЯзыке" id="22">
<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="СтраницаНаВстроенномЯзыкеExtendedTooltip" id="59"/>
<ChildItems>
<UsualGroup name="ВыражениеИДерево" id="24">
<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>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ВыражениеИДеревоExtendedTooltip" id="60"/>
<ChildItems>
<InputField name="ВыражениеУсловия" id="9">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выражение на встроенном языке</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ExtendedEdit>true</ExtendedEdit>
<ContextMenu name="ВыражениеУсловияКонтекстноеМеню" id="10"/>
<ExtendedTooltip name="ВыражениеУсловияExtendedTooltip" id="61"/>
</InputField>
<UsualGroup name="ГруппаОтступКнопки" id="48">
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа отступ кнопки</v8:content>
</v8:item>
</ToolTip>
<Group>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ExtendedTooltip name="ГруппаОтступКнопкиExtendedTooltip" id="62"/>
<ChildItems>
<Button name="ВставитьРеквизитИзДерева" id="47">
<Type>UsualButton</Type>
<CommandName>0</CommandName>
<ExtendedTooltip name="ВставитьРеквизитИзДереваExtendedTooltip" id="63"/>
</Button>
</ChildItems>
</UsualGroup>
<Table name="ДеревоРеквизитовОбъекта" id="25">
<Representation>Tree</Representation>
<TitleLocation>Top</TitleLocation>
<ChangeRowSet>false</ChangeRowSet>
<ChangeRowOrder>false</ChangeRowOrder>
<AutoInsertNewRow>true</AutoInsertNewRow>
<InitialTreeView>ExpandTopLevel</InitialTreeView>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Реквизиты объекта</v8:content>
</v8:item>
</Title>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<ContextMenu name="ДеревоРеквизитовОбъектаКонтекстноеМеню" id="26"/>
<AutoCommandBar name="ДеревоРеквизитовОбъектаКоманднаяПанель" id="27"/>
<ExtendedTooltip name="ДеревоРеквизитовОбъектаExtendedTooltip" id="64"/>
<SearchStringAddition name="ДеревоРеквизитовОбъектаСтрокаПоиска" id="81">
<AdditionSource>
<Item>ДеревоРеквизитовОбъекта</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="ДеревоРеквизитовОбъектаСтрокаПоискаКонтекстноеМеню" id="82"/>
<ExtendedTooltip name="ДеревоРеквизитовОбъектаСтрокаПоискаРасширеннаяПодсказка" id="83"/>
</SearchStringAddition>
<ViewStatusAddition name="ДеревоРеквизитовОбъектаСостояниеПросмотра" id="84">
<AdditionSource>
<Item>ДеревоРеквизитовОбъекта</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="ДеревоРеквизитовОбъектаСостояниеПросмотраКонтекстноеМеню" id="85"/>
<ExtendedTooltip name="ДеревоРеквизитовОбъектаСостояниеПросмотраРасширеннаяПодсказка" id="86"/>
</ViewStatusAddition>
<SearchControlAddition name="ДеревоРеквизитовОбъектаУправлениеПоиском" id="87">
<AdditionSource>
<Item>ДеревоРеквизитовОбъекта</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="ДеревоРеквизитовОбъектаУправлениеПоискомКонтекстноеМеню" id="88"/>
<ExtendedTooltip name="ДеревоРеквизитовОбъектаУправлениеПоискомРасширеннаяПодсказка" id="89"/>
</SearchControlAddition>
<ChildItems>
<InputField name="ДеревоРеквизитовОбъектаИмяРеквизита" id="28">
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДеревоРеквизитовОбъектаИмяРеквизитаКонтекстноеМеню" id="29"/>
<ExtendedTooltip name="ДеревоРеквизитовОбъектаИмяРеквизитаExtendedTooltip" id="65"/>
</InputField>
<InputField name="ДеревоРеквизитовОбъектаТипРеквизита" id="33">
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДеревоРеквизитовОбъектаТипРеквизитаКонтекстноеМеню" id="34"/>
<ExtendedTooltip name="ДеревоРеквизитовОбъектаТипРеквизитаExtendedTooltip" id="66"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаОтветственныйИКомментарийВнутриПанели" id="101">
<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>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаОтветственныйИКомментарийВнутриПанелиРасширеннаяПодсказка" id="102"/>
<ChildItems>
<InputField name="ОтветственныйВнутри" id="103">
<HorizontalStretch>false</HorizontalStretch>
<ContextMenu name="ОтветственныйВнутриКонтекстноеМеню" id="104"/>
<ExtendedTooltip name="ОтветственныйВнутриРасширеннаяПодсказка" id="105"/>
</InputField>
<InputField name="КомментарийВнутри" id="106">
<ContextMenu name="КомментарийВнутриКонтекстноеМеню" id="107"/>
<ExtendedTooltip name="КомментарийВнутриРасширеннаяПодсказка" id="108"/>
</InputField>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаПроверка" id="109">
<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>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ExtendedTooltip name="ГруппаПроверкаРасширеннаяПодсказка" id="110"/>
<ChildItems>
<InputField name="Задача" id="111">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Что проверить</v8:content>
</v8:item>
</Title>
<TitleLocation>None</TitleLocation>
<AutoMaxWidth>false</AutoMaxWidth>
<DropListButton>false</DropListButton>
<ChoiceButton>true</ChoiceButton>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Что проверить</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ЗадачаКонтекстноеМеню" id="112"/>
<ExtendedTooltip name="ЗадачаРасширеннаяПодсказка" id="113"/>
</InputField>
<InputField name="ИтогПроверки" id="114">
<ReadOnly>true</ReadOnly>
<TitleLocation>None</TitleLocation>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>2</Height>
<MultiLine>true</MultiLine>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Итог проверки</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ИтогПроверкиКонтекстноеМеню" id="115"/>
<ExtendedTooltip name="ИтогПроверкиРасширеннаяПодсказка" id="116"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
</Page>
<Page name="СтраницаКомбинацияИзДругихУсловий" id="23">
<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="СтраницаКомбинацияИзДругихУсловийExtendedTooltip" id="68"/>
<ChildItems>
<Table name="КомпоновщикУсловийНастройкиОтбор" id="38">
<Representation>Tree</Representation>
<Autofill>true</Autofill>
<InitialTreeView>ExpandAllLevels</InitialTreeView>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<ViewMode>All</ViewMode>
<SettingsNamedItemDetailedRepresentation>false</SettingsNamedItemDetailedRepresentation>
<ContextMenu name="КомпоновщикУсловийНастройкиОтборКонтекстноеМеню" id="39"/>
<AutoCommandBar name="КомпоновщикУсловийНастройкиОтборКоманднаяПанель" id="40"/>
<ExtendedTooltip name="КомпоновщикУсловийНастройкиОтборExtendedTooltip" id="69"/>
<SearchStringAddition name="КомпоновщикУсловийНастройкиОтборСтрокаПоиска" id="90">
<AdditionSource>
<Item>КомпоновщикУсловийНастройкиОтбор</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="КомпоновщикУсловийНастройкиОтборСтрокаПоискаКонтекстноеМеню" id="91"/>
<ExtendedTooltip name="КомпоновщикУсловийНастройкиОтборСтрокаПоискаРасширеннаяПодсказка" id="92"/>
</SearchStringAddition>
<ViewStatusAddition name="КомпоновщикУсловийНастройкиОтборСостояниеПросмотра" id="93">
<AdditionSource>
<Item>КомпоновщикУсловийНастройкиОтбор</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="КомпоновщикУсловийНастройкиОтборСостояниеПросмотраКонтекстноеМеню" id="94"/>
<ExtendedTooltip name="КомпоновщикУсловийНастройкиОтборСостояниеПросмотраРасширеннаяПодсказка" id="95"/>
</ViewStatusAddition>
<SearchControlAddition name="КомпоновщикУсловийНастройкиОтборУправлениеПоиском" id="96">
<AdditionSource>
<Item>КомпоновщикУсловийНастройкиОтбор</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="КомпоновщикУсловийНастройкиОтборУправлениеПоискомКонтекстноеМеню" id="97"/>
<ExtendedTooltip name="КомпоновщикУсловийНастройкиОтборУправлениеПоискомРасширеннаяПодсказка" id="98"/>
</SearchControlAddition>
</Table>
</ChildItems>
</Page>
</ChildItems>
</Pages>
</ChildItems>
<Attributes/>
<BaseForm version="2.17">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<ChildItems>
<InputField name="Наименование" id="3">
<EditMode>EnterOnInput</EditMode>
<AutoMaxWidth>false</AutoMaxWidth>
<ContextMenu name="НаименованиеКонтекстноеМеню" id="4"/>
<ExtendedTooltip name="НаименованиеExtendedTooltip" id="51"/>
</InputField>
<InputField name="Родитель" id="117">
<AutoMaxWidth>false</AutoMaxWidth>
<ContextMenu name="РодительКонтекстноеМеню" id="118"/>
<ExtendedTooltip name="РодительРасширеннаяПодсказка" id="119"/>
</InputField>
<InputField name="СпособЗаданияУсловия" id="7">
<EditMode>EnterOnInput</EditMode>
<HorizontalStretch>false</HorizontalStretch>
<ContextMenu name="СпособЗаданияУсловияКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="СпособЗаданияУсловияExtendedTooltip" id="54"/>
</InputField>
<Pages name="Страницы" id="20">
<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>
<PagesRepresentation>None</PagesRepresentation>
<ExtendedTooltip name="СтраницыExtendedTooltip" id="55"/>
<ChildItems>
<Page name="СтраницаВРежимеКонструктора" id="21">
<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="СтраницаВРежимеКонструктораExtendedTooltip" id="56"/>
<ChildItems>
<UsualGroup name="ГруппаКомпоновщик" id="46">
<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>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаКомпоновщикExtendedTooltip" id="57"/>
<ChildItems>
<Table name="КомпоновщикНастройкиОтбор" id="30">
<Representation>Tree</Representation>
<Autofill>true</Autofill>
<InitialTreeView>ExpandAllLevels</InitialTreeView>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<ViewMode>All</ViewMode>
<SettingsNamedItemDetailedRepresentation>false</SettingsNamedItemDetailedRepresentation>
<ContextMenu name="КомпоновщикНастройкиОтборКонтекстноеМеню" id="31"/>
<AutoCommandBar name="КомпоновщикНастройкиОтборКоманднаяПанель" id="32"/>
<ExtendedTooltip name="КомпоновщикНастройкиОтборExtendedTooltip" id="58"/>
<SearchStringAddition name="КомпоновщикНастройкиОтборСтрокаПоиска" id="72">
<AdditionSource>
<Item>КомпоновщикНастройкиОтбор</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="КомпоновщикНастройкиОтборСтрокаПоискаКонтекстноеМеню" id="73"/>
<ExtendedTooltip name="КомпоновщикНастройкиОтборСтрокаПоискаРасширеннаяПодсказка" id="74"/>
</SearchStringAddition>
<ViewStatusAddition name="КомпоновщикНастройкиОтборСостояниеПросмотра" id="75">
<AdditionSource>
<Item>КомпоновщикНастройкиОтбор</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="КомпоновщикНастройкиОтборСостояниеПросмотраКонтекстноеМеню" id="76"/>
<ExtendedTooltip name="КомпоновщикНастройкиОтборСостояниеПросмотраРасширеннаяПодсказка" id="77"/>
</ViewStatusAddition>
<SearchControlAddition name="КомпоновщикНастройкиОтборУправлениеПоиском" id="78">
<AdditionSource>
<Item>КомпоновщикНастройкиОтбор</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="КомпоновщикНастройкиОтборУправлениеПоискомКонтекстноеМеню" id="79"/>
<ExtendedTooltip name="КомпоновщикНастройкиОтборУправлениеПоискомРасширеннаяПодсказка" id="80"/>
</SearchControlAddition>
</Table>
</ChildItems>
</UsualGroup>
</ChildItems>
</Page>
<Page name="СтраницаНаВстроенномЯзыке" id="22">
<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="СтраницаНаВстроенномЯзыкеExtendedTooltip" id="59"/>
<ChildItems>
<UsualGroup name="ВыражениеИДерево" id="24">
<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>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ВыражениеИДеревоExtendedTooltip" id="60"/>
<ChildItems>
<InputField name="ВыражениеУсловия" id="9">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выражение на встроенном языке</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<AutoMaxWidth>false</AutoMaxWidth>
<MultiLine>true</MultiLine>
<ExtendedEdit>true</ExtendedEdit>
<ContextMenu name="ВыражениеУсловияКонтекстноеМеню" id="10"/>
<ExtendedTooltip name="ВыражениеУсловияExtendedTooltip" id="61"/>
</InputField>
<UsualGroup name="ГруппаОтступКнопки" id="48">
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа отступ кнопки</v8:content>
</v8:item>
</ToolTip>
<Group>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ExtendedTooltip name="ГруппаОтступКнопкиExtendedTooltip" id="62"/>
<ChildItems>
<Button name="ВставитьРеквизитИзДерева" id="47">
<Type>UsualButton</Type>
<CommandName>0</CommandName>
<ExtendedTooltip name="ВставитьРеквизитИзДереваExtendedTooltip" id="63"/>
</Button>
</ChildItems>
</UsualGroup>
<Table name="ДеревоРеквизитовОбъекта" id="25">
<Representation>Tree</Representation>
<TitleLocation>Top</TitleLocation>
<ChangeRowSet>false</ChangeRowSet>
<ChangeRowOrder>false</ChangeRowOrder>
<AutoInsertNewRow>true</AutoInsertNewRow>
<InitialTreeView>ExpandTopLevel</InitialTreeView>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Реквизиты объекта</v8:content>
</v8:item>
</Title>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<ContextMenu name="ДеревоРеквизитовОбъектаКонтекстноеМеню" id="26"/>
<AutoCommandBar name="ДеревоРеквизитовОбъектаКоманднаяПанель" id="27"/>
<ExtendedTooltip name="ДеревоРеквизитовОбъектаExtendedTooltip" id="64"/>
<SearchStringAddition name="ДеревоРеквизитовОбъектаСтрокаПоиска" id="81">
<AdditionSource>
<Item>ДеревоРеквизитовОбъекта</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="ДеревоРеквизитовОбъектаСтрокаПоискаКонтекстноеМеню" id="82"/>
<ExtendedTooltip name="ДеревоРеквизитовОбъектаСтрокаПоискаРасширеннаяПодсказка" id="83"/>
</SearchStringAddition>
<ViewStatusAddition name="ДеревоРеквизитовОбъектаСостояниеПросмотра" id="84">
<AdditionSource>
<Item>ДеревоРеквизитовОбъекта</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="ДеревоРеквизитовОбъектаСостояниеПросмотраКонтекстноеМеню" id="85"/>
<ExtendedTooltip name="ДеревоРеквизитовОбъектаСостояниеПросмотраРасширеннаяПодсказка" id="86"/>
</ViewStatusAddition>
<SearchControlAddition name="ДеревоРеквизитовОбъектаУправлениеПоиском" id="87">
<AdditionSource>
<Item>ДеревоРеквизитовОбъекта</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="ДеревоРеквизитовОбъектаУправлениеПоискомКонтекстноеМеню" id="88"/>
<ExtendedTooltip name="ДеревоРеквизитовОбъектаУправлениеПоискомРасширеннаяПодсказка" id="89"/>
</SearchControlAddition>
<ChildItems>
<InputField name="ДеревоРеквизитовОбъектаИмяРеквизита" id="28">
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДеревоРеквизитовОбъектаИмяРеквизитаКонтекстноеМеню" id="29"/>
<ExtendedTooltip name="ДеревоРеквизитовОбъектаИмяРеквизитаExtendedTooltip" id="65"/>
</InputField>
<InputField name="ДеревоРеквизитовОбъектаТипРеквизита" id="33">
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДеревоРеквизитовОбъектаТипРеквизитаКонтекстноеМеню" id="34"/>
<ExtendedTooltip name="ДеревоРеквизитовОбъектаТипРеквизитаExtendedTooltip" id="66"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаОтветственныйИКомментарийВнутриПанели" id="101">
<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>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаОтветственныйИКомментарийВнутриПанелиРасширеннаяПодсказка" id="102"/>
<ChildItems>
<InputField name="ОтветственныйВнутри" id="103">
<HorizontalStretch>false</HorizontalStretch>
<ContextMenu name="ОтветственныйВнутриКонтекстноеМеню" id="104"/>
<ExtendedTooltip name="ОтветственныйВнутриРасширеннаяПодсказка" id="105"/>
</InputField>
<InputField name="КомментарийВнутри" id="106">
<ContextMenu name="КомментарийВнутриКонтекстноеМеню" id="107"/>
<ExtendedTooltip name="КомментарийВнутриРасширеннаяПодсказка" id="108"/>
</InputField>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаПроверка" id="109">
<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>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ExtendedTooltip name="ГруппаПроверкаРасширеннаяПодсказка" id="110"/>
<ChildItems>
<InputField name="Задача" id="111">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Что проверить</v8:content>
</v8:item>
</Title>
<TitleLocation>None</TitleLocation>
<AutoMaxWidth>false</AutoMaxWidth>
<DropListButton>false</DropListButton>
<ChoiceButton>true</ChoiceButton>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Что проверить</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ЗадачаКонтекстноеМеню" id="112"/>
<ExtendedTooltip name="ЗадачаРасширеннаяПодсказка" id="113"/>
</InputField>
<InputField name="ИтогПроверки" id="114">
<ReadOnly>true</ReadOnly>
<TitleLocation>None</TitleLocation>
<AutoMaxWidth>false</AutoMaxWidth>
<Height>2</Height>
<MultiLine>true</MultiLine>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Итог проверки</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ИтогПроверкиКонтекстноеМеню" id="115"/>
<ExtendedTooltip name="ИтогПроверкиРасширеннаяПодсказка" id="116"/>
</InputField>
</ChildItems>
</UsualGroup>
</ChildItems>
</Page>
<Page name="СтраницаКомбинацияИзДругихУсловий" id="23">
<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="СтраницаКомбинацияИзДругихУсловийExtendedTooltip" id="68"/>
<ChildItems>
<Table name="КомпоновщикУсловийНастройкиОтбор" id="38">
<Representation>Tree</Representation>
<Autofill>true</Autofill>
<InitialTreeView>ExpandAllLevels</InitialTreeView>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<ViewMode>All</ViewMode>
<SettingsNamedItemDetailedRepresentation>false</SettingsNamedItemDetailedRepresentation>
<ContextMenu name="КомпоновщикУсловийНастройкиОтборКонтекстноеМеню" id="39"/>
<AutoCommandBar name="КомпоновщикУсловийНастройкиОтборКоманднаяПанель" id="40"/>
<ExtendedTooltip name="КомпоновщикУсловийНастройкиОтборExtendedTooltip" id="69"/>
<SearchStringAddition name="КомпоновщикУсловийНастройкиОтборСтрокаПоиска" id="90">
<AdditionSource>
<Item>КомпоновщикУсловийНастройкиОтбор</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="КомпоновщикУсловийНастройкиОтборСтрокаПоискаКонтекстноеМеню" id="91"/>
<ExtendedTooltip name="КомпоновщикУсловийНастройкиОтборСтрокаПоискаРасширеннаяПодсказка" id="92"/>
</SearchStringAddition>
<ViewStatusAddition name="КомпоновщикУсловийНастройкиОтборСостояниеПросмотра" id="93">
<AdditionSource>
<Item>КомпоновщикУсловийНастройкиОтбор</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="КомпоновщикУсловийНастройкиОтборСостояниеПросмотраКонтекстноеМеню" id="94"/>
<ExtendedTooltip name="КомпоновщикУсловийНастройкиОтборСостояниеПросмотраРасширеннаяПодсказка" id="95"/>
</ViewStatusAddition>
<SearchControlAddition name="КомпоновщикУсловийНастройкиОтборУправлениеПоиском" id="96">
<AdditionSource>
<Item>КомпоновщикУсловийНастройкиОтбор</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="КомпоновщикУсловийНастройкиОтборУправлениеПоискомКонтекстноеМеню" id="97"/>
<ExtendedTooltip name="КомпоновщикУсловийНастройкиОтборУправлениеПоискомРасширеннаяПодсказка" id="98"/>
</SearchControlAddition>
</Table>
</ChildItems>
</Page>
</ChildItems>
</Pages>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>

View File

@ -0,0 +1,953 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура РК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
РК_Сервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РК_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Объект[ЭтотОбъект.РК_РеквизитКода] = View().getText();
КонецПроцедуры
&НаКлиенте
Процедура РК_ПриОткрытииПосле(Отказ)
Если Не РК_Клиент.ЕстьПолеHTML(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
Процедура ConsoleOnReady(Элемент)
Если ЭтотОбъект.РК_ИсходникиЗагружены Тогда
ИнициализацияРедактора();
//АктивироватьДополнительныеФункции();
ЗагрузитьКод();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ConsoleOnClick(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если НЕ ТолькоПросмотр Тогда
РК_Клиент.ОбработатьСобытиеРедактора(ДанныеСобытия.Event.eventData1C, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИнициализацияРедактора
&НаКлиенте
Процедура ЗагрузитьКод() Экспорт
вью = View();
вью.minimap(Ложь);
вью.setText(Объект[ЭтотОбъект.РК_РеквизитКода], Неопределено, Ложь);
вью.setOriginalText(Объект[ЭтотОбъект.РК_РеквизитКода]);
КонецПроцедуры
&НаСервере
Функция ТекстОписанияПользовательскихОбъектов()
customObjects = Новый Структура;
Дерево = РеквизитФормыВЗначение("ДеревоРеквизитовОбъекта");
Для Каждого Строка Из Дерево.Строки Цикл
РК_Сервер.РазобратьСтрокуДерева(customObjects, Строка, "ПолныйПуть");
КонецЦикла;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("customObjects", customObjects));
ТекстJSON = ЗаписьJSON.Закрыть();
Возврат ТекстJSON;
КонецФункции
&НаКлиенте
Функция ИндексныйФайл()
Возврат ЭтотОбъект.РК_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
ЭтотОбъект.РК_HTML = СкопированныйФайл;
ЭтотОбъект.РК_ИсходникиЗагружены = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(ЭтотОбъект.РК_КаталогИсходников);
Файл = Новый ЗаписьТекста(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Исключение
Сообщить("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки()); //, Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеЗаписиФайлаМакета", ЭтотОбъект);
ИмяФайла = ЭтотОбъект.РК_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресМакета);
ДанныеМакета.НачатьЗапись(Оповещение, ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходникиНаКлиенте()
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияВременныхФайлов", ЭтотОбъект);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_КаталогИсходников, "*.*");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ЭтотОбъект.РК_ИндексныйФайл = ИндексныйФайл();
ТочкаВхода = ЭтотОбъект.РК_КаталогИсходников + "index.html";
Оповещение = Новый ОписаниеОповещения("ПослеКопированияИндексногоФайла", ЭтотОбъект);
НачатьКопированиеФайла(Оповещение, ТочкаВхода, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияИндексногоФайла", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияФайлаВерсии", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников + ЭтотОбъект.РК_ВерсияОбработки + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
Иначе
Сообщить("Не удалось создать каталог для исходников"); // , Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("ПослеПроверкиСуществованияКаталога", ЭтотОбъект);
ФайлНаДиске = Новый Файл(ЭтотОбъект.РК_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
ЭтотОбъект.РК_КаталогИсходников = ИмяКаталога + "bsl_console\";
Оповещение = Новый ОписаниеОповещения("ПослеСозданияКаталога", ЭтотОбъект);
НачатьСозданиеКаталога(Оповещение, ЭтотОбъект.РК_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура ИзвлечьИсходники()
Оповещение = Новый ОписаниеОповещения("ПриПолученииКаталогаВременныхФайлов", ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
ИзвлечьИсходники();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбнулитьМетаданные() Экспорт
View().clearMetadata();
ОбновитьСписокОбщихМодулей();
ОбновитьПользовательскиеОбъекты();
//View().updateMetadata(ТекстОписанияОбъекта());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПользовательскиеОбъекты()
View().updateMetadata(ТекстОписанияПользовательскихОбъектов());
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияРедактора()
Инфо = Новый СистемнаяИнформация();
View().init(Инфо.ВерсияПриложения);
View().setOption("autoResizeEditorLayout", Истина);
View().setOption("renderQueryDelimiters", Истина);
View().setOption("generateModificationEvent", Истина);
View().hideScrollX();
View().hideScrollY();
ПодключитьОбработчикОжидания("ОбнулитьМетаданные", 1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейсРедактора
&НаКлиенте
Функция View() Экспорт
Возврат Элементы.ПолеHTML.Документ.defaultView;
КонецФункции
&НаКлиенте
Процедура УстановитьТекст(Текст, Позиция, УчитыватьОтступПервойСтроки)
View().setText(Текст, Позиция, УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстКода() Экспорт
Объект[ЭтотОбъект.РК_РеквизитКода] = ЭтотОбъект.View().getText();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекст(ДляВыполнения = Ложь)
Код = View().getText();
Возврат Код;
КонецФункции
#КонецОбласти
#Область КонструкторЗапросов
&НаКлиенте
Процедура ПриЗакрытииКонструктораЗапросов(Текст, ДопПараметры) Экспорт
Если Текст <> Неопределено Тогда
Если Не View().queryMode Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, Символы.ПС + "|");
Текст = СтрЗаменить(Текст, """", """""");
Текст = """" + Текст + """";
КонецЕсли;
УстановитьТекст(Текст, ДопПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(Текст, ДопПараметры)
Конструктор = Новый КонструкторЗапроса();
Если ЗначениеЗаполнено(Текст) Тогда
Попытка
Конструктор.Текст = Текст;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте запроса:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораЗапросов", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовыйЗапрос(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторЗапроса("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодготовитьТекстЗапроса(Текст)
ТекстЗапроса = СтрЗаменить(Текст, "|", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """""", "$");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$", """");
Возврат ТекстЗапроса;
КонецФункции
&НаКлиенте
Процедура ВызватьКонструкторЗапроса(ПараметрыЗапроса) Экспорт
Если ПараметрыЗапроса = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовыйЗапрос", ЭтотОбъект);
ТекстВопроса = "Не найден текст запроса." + Символы.ПС + "Создать новый запрос?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТекстЗапроса = ПодготовитьТекстЗапроса(ПараметрыЗапроса.text);
ОткрытьКонструкторЗапроса(ТекстЗапроса, ПараметрыЗапроса.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КонструкторФорматнойСтроки
&НаКлиенте
Процедура ПриЗакрытииКонструктораФорматнойСтроки(ФорматнаяСтрока, ДопПараметры) Экспорт
Если ФорматнаяСтрока <> Неопределено Тогда
ФорматнаяСтрока = СтрЗаменить(ФорматнаяСтрока, "'", "");
ФорматнаяСтрока = """" + ФорматнаяСтрока + """";
УстановитьТекст(ФорматнаяСтрока, ДопПараметры, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ДопПараметры)
Конструктор = Новый КонструкторФорматнойСтроки();
Попытка
Конструктор.Текст = ФорматнаяСтрока;
Исключение
Инфо = ИнформацияОбОшибке();
ПоказатьПредупреждение(, "Ошибка в тексте форматной строки:" + Символы.ПС + Инфо.Причина.Описание);
Возврат;
КонецПопытки;
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииКонструктораФорматнойСтроки", ЭтотОбъект, ДопПараметры);
Конструктор.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСоздатьНовуюФорматнуюСтроку(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ОткрытьКонструкторФорматнойСтроки("", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВызватьКонструкторФорматнойСтроки(ПараметрыСтроки) Экспорт
Если ПараметрыСтроки = Неопределено Тогда
Оповещение = Новый ОписаниеОповещения("ВопросСоздатьНовуюФорматнуюСтроку", ЭтотОбъект);
ТекстВопроса = "Форматная строка не найдена." + Символы.ПС + "Создать новую форматную строку?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ФорматнаяСтрока = СтрЗаменить(СтрЗаменить(ПараметрыСтроки.text, "|", ""), """", "");
ОткрытьКонструкторФорматнойСтроки(ФорматнаяСтрока, ПараметрыСтроки.range);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДинамическоеОбновлениеМетаданных
&НаКлиенте
Функция ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьОписаниеОбъектаМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса)
АдресОбновления = "";
ОписаниеМетаданных = РК_Сервер.ПолучитьСписокОбъектовМетаданных(ПараметрыЗапроса, АдресОбновления);
Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда
Если ТипЗнч(View().updateMetadata(ОписаниеМетаданных, АдресОбновления)) = Тип("Булево") Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбработкаСобытияПолученияМетаданных(Событие) Экспорт
ПараметрыЗапроса = НРег(Событие.metadata);
ВызыватьПодсказку = (Событие.trigger = "suggestion");
ДанныеОбновлены = Ложь;
Если 0 < СтрНайти(ПараметрыЗапроса, ".") Тогда
ЧастиЗапроса = СтрРазделить(ПараметрыЗапроса, ".");
Если ЧастиЗапроса[0] = "module" Тогда
Если ЧастиЗапроса.Количество() = 2 Тогда
ДанныеОбновлены = ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса);
Иначе
ДанныеОбновлены = ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьОбъектМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Иначе
ДанныеОбновлены = ЗагрузитьСписокМетаданныхПоЗапросу(ПараметрыЗапроса);
КонецЕсли;
Если Событие.trigger = "suggestion" И ДанныеОбновлены Тогда
View().triggerSuggestions();
КонецЕсли;
Если Событие.trigger = "snippet" Тогда
View().updateSnippetByGUID(Событие.snippet_guid);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСобытияПолученияПеременной(Событие) Экспорт
ИмяПеременной = Событие.variableName;
ИдентификаторПеременной = Событие.variableId;
ПутьКДанным = Событие.variablePath;
ПутьКДанным = СтрЗаменить(ПутьКДанным, "undefined", "");
Описание = РК_Сервер.ПолучитьОписаниеПеременной(ИдентификаторПеременной, ИмяПеременной, ПутьКДанным, Объект.РК_АдресХраненияПеременных);
Если ЗначениеЗаполнено(Описание) Тогда
View().updateVariableDescription(ИдентификаторПеременной, Описание);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаОбщихМодулейКлиент
&НаСервере
Функция СохранитьОбщиеМодулиВХранилище(КоллекцияОбщихМодулей) Экспорт
Файл = Новый ЗаписьJSON();
Файл.УстановитьСтроку();
Попытка
ЗаписатьJSON(Файл, КоллекцияОбщихМодулей.Общие);
Исключение
ВызватьИсключение("Не удалось сохранить коллекцию метаданных:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
ЗначениеКоллекции = Файл.Закрыть();
Возврат ПоместитьВоВременноеХранилище(ЗначениеКоллекции, Новый УникальныйИдентификатор());
КонецФункции
&НаСервере
Процедура ЗаполнитьИменаОбщихМодулей(КоллекцияОбщихМодулей) Экспорт
// Соответствие между именем общего неглобального модуля в нижнем регистре
// и именем модуля, как оно задано в конфигураторе для правильной загрузки
// текстов общих модулей
ОбщиеМодули = Новый Соответствие();
Для Каждого Обход Из КоллекцияОбщихМодулей.Общие Цикл
ОбщиеМодули.Вставить(НРег(Обход.Ключ), Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ИменаОбщихМодулей = Новый ФиксированноеСоответствие(ОбщиеМодули);
// Именя глобальных модулей для загрузки текстов
Модули = Новый Массив();
Для Каждого Обход Из КоллекцияОбщихМодулей.Глобальные Цикл
Модули.Добавить(Обход.Ключ);
КонецЦикла;
ЭтотОбъект.РК_ГлобальныйМодули = Новый ФиксированныйМассив(Модули);
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
Путь = СтрРазделить(ПолноеИмяФайла, ЭтотОбъект.РК_РазделительПути, Ложь);
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
КонецФункции
&НаКлиенте
Функция НормализоватьПуть(Путь)
Путь = СокрЛП(Путь);
Если Прав(Путь, 1) <> ЭтотОбъект.РК_РазделительПути Тогда
Путь = Путь + ЭтотОбъект.РК_РазделительПути;
КонецЕсли;
Возврат Путь;
КонецФункции
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
КаталогИсходногоКода = ЭтотОбъект.РК_КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
Возврат КаталогИсходногоКода;
КонецФункции
&НаКлиенте
Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + ЭтотОбъект.РК_РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст);
КонецЦикла;
Состояние("Общие модули загружены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
ИмяВКонфигураторе = ЭтотОбъект.РК_ИменаОбщихМодулей.Получить(НРег(ИмяМодуля));
Если ИмяВКонфигураторе = Неопределено Тогда
ИмяВКонфигураторе = ИмяМодуля;
КонецЕсли;
ФайлМодуля = СтрШаблон("CommonModules%1%2%1Ext%1Module.bsl", ЭтотОбъект.РК_РазделительПути, ИмяВКонфигураторе);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
ИмяТипа = ?(ТипМодуля = "manager", "ManagerModule", "ObjectModule");
ФайлМодуля = СтрШаблон("%1%2Ext%2%3.bsl", СтруктураВыгрузки.ИмяКаталога, ЭтотОбъект.РК_РазделительПути, ИмяТипа);
ФайлМодуля = КаталогИсходногоКода + ФайлМодуля;
ФайлНаДиске = Новый Файл(ФайлМодуля);
Если ФайлНаДиске.Существует() Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = РК_Сервер.ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
ЗагруженоФункций = View().parseMetadataModule(Модуль.Текст, АдресЗагрузки);
КонецЕсли;
Возврат ЗагруженоФункций;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ЭтотОбъект.РК_ГлобальныйМодули <> Неопределено И 0 < ЭтотОбъект.РК_ГлобальныйМодули.Количество());
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЕстьГлобальныеМодули Тогда
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
Если КаталогНаДиске.Существует() Тогда
Индекс = 0;
Пока Индекс < ЭтотОбъект.РК_ГлобальныйМодули.Количество() Цикл
ИмяМодуля = ЭтотОбъект.РК_ГлобальныйМодули.Получить(Индекс);
ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Истина);
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
ИмяМодуля = ЧастиЗапроса[1];
ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Функция ЗагрузитьСтруктуруМодуляМенеджераИлиОбъектаПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 4;
Если ЗначениеЗаполнено(КаталогИсходногоКода) И ЧастиЗапроса.Количество() = КоличествоЧастейЗапроса Тогда
СтруктураВыгрузки = Новый Структура();
СтруктураВыгрузки.Вставить("ТипМодуля" , ЧастиЗапроса[1]);
СтруктураВыгрузки.Вставить("ТипМетаданных" , ЧастиЗапроса[2]);
СтруктураВыгрузки.Вставить("ОбъектМетаданных" , ЧастиЗапроса[3]);
РК_Сервер.ДополнитьСтруктуруВыгрузкиИсходниковМетаданных(СтруктураВыгрузки, ЭтотОбъект.РК_РазделительПути);
Если ЗначениеЗаполнено(СтруктураВыгрузки.ИмяКаталога) Тогда
ЗагруженоФункций = ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки);
Если 0 < ЗагруженоФункций Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ОбновитьСписокОбщихМодулей()
КоллекцияМетаданных = ПолучитьИзВременногоХранилища(ЭтотОбъект.РК_АдресОбщихМодулей);
Если КоллекцияМетаданных <> Неопределено Тогда
Результат = View().updateMetadata(КоллекцияМетаданных, "commonModules.items");
ЗагрузитьГлобальныеМодули();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаВЧисло(Значение, ЗначениеПоУмолчанию = 0)
СтрокаБезНулей = СтрЗаменить(Значение, "0", "");
Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = ТипЧисло.ПривестиЗначение(Значение);
Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, ЗначениеПоУмолчанию);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СообщитьПользователю(Текст)
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыводаОшибки(ДопПараметры) Экспорт
Если ДопПараметры.ЗакрыватьКонсоль Тогда
ЗакрытьКонсоль(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Текст, ЗакрыватьКонсоль)
ПараметрыОповещения = Новый Структура("ЗакрыватьКонсоль", ЗакрыватьКонсоль);
Оповещение = Новый ОписаниеОповещения("ПослеВыводаОшибки", ЭтотОбъект, ПараметрыОповещения);
ПоказатьПредупреждение(Оповещение, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьРазделительПути()
ЭтотОбъект.РК_РазделительПути = ПолучитьРазделительПути();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИмяТемы()
ИмяТемы = Неопределено;
Имена = Новый Соответствие();
Имена.Вставить("СветлаяТема", "bsl-white");
Имена.Вставить("ТемнаяТема", "bsl-dark");
Для Каждого Элемент Из Элементы.Тема.ПодчиненныеЭлементы Цикл
Если Элемент.Пометка Тогда
ИмяТемы = Имена[Элемент.Имя];
КонецЕсли;
КонецЦикла;
Возврат ИмяТемы;
КонецФункции
&НаКлиенте
Процедура ПереключитьТему(Тема)
View().setTheme(Тема);
КонецПроцедуры
&НаСервере
Функция ЭтотОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции
&НаСервере
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект().ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция ПолучитьТекстМакета(ИмяМакета, УдалятьПереносыСтрок)
Макет = ПолучитьМакет(ИмяМакета);
Текст = Макет.ПолучитьТекст();
Если УдалятьПереносыСтрок Тогда
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Функция ВебДокументДоступен()
Если Элементы.ПолеHTML.Документ <> Неопределено И Элементы.ПолеHTML.Документ.defaultView <> Неопределено Тогда
Попытка
ПолучитьТекст();
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьПользовательскиеФункции()
JSON = ПолучитьТекстМакета("ПользовательскиеФункции", Истина);
Результат = View().updateCustomFunctions(JSON);
Если ТипЗнч(Результат) = Тип("Булево") Тогда
СообщитьПользователю("Пользовательские функции успешно загружены!");
Иначе
Ошибка = "Не удалось загрузить пользовательские функции: " + Символы.ПС + Результат.errorDescription;
ВывестиОшибку(Ошибка, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
ЭтотОбъект.РК_ИндексныйФайл = "";
Если ДопПараметры.СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьКонсоль(СтандартноеЗакрытие)
Если ЗначениеЗаполнено(ЭтотОбъект.РК_ИндексныйФайл) Тогда
ПараметрыОповещения = Новый Структура("СтандартноеЗакрытие", СтандартноеЗакрытие);
Оповещение = Новый ОписаниеОповещения("ПослеУдаленияИндексногоФайла", ЭтотОбъект, ПараметрыОповещения);
НачатьУдалениеФайлов(Оповещение, ЭтотОбъект.РК_ИндексныйФайл);
Иначе
Если СтандартноеЗакрытие Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеБыстрымиПодсказками()
Элементы.БыстрыеПодсказки.Пометка = ЭтотОбъект.БыстрыеПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюКартыКода()
Элементы.КартаКода.Пометка = ЭтотОбъект.ВидимостьКартыКода;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСтрокиСостояния()
Элементы.СтрокаСостояния.Пометка = ЭтотОбъект.ВидимостьСтрокиСостояния;
Если ЭтотОбъект.ВидимостьСтрокиСостояния Тогда
View().showStatusBar();
Иначе
View().hideStatusBar();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюПробеловТабуляций()
Элементы.ОтображатьПробелыИТабуляции.Пометка = ЭтотОбъект.ОтображатьПробелыИТабуляции;
View().renderWhitespace(ЭтотОбъект.ОтображатьПробелыИТабуляции);
КонецПроцедуры
&НаКлиенте
Процедура УправлениеВидимостьюСравнения()
Элементы.СравнитьСОригиналом.Видимость = ЗначениеЗаполнено(ЭтотОбъект.ИмяСохраненногоФайла);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,23 @@
<?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.17">
<CommonModule uuid="8fb01201-ead3-413f-ace9-874bed755b28">
<Properties>
<Name>РК_Клиент</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Р к клиент</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>false</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@ -0,0 +1,39 @@
Процедура ОбработатьСобытиеРедактора(Событие, ЭтотОбъект) Экспорт
Если Событие <> Неопределено Тогда
ИмяСобытия = Событие.event;
Если ИмяСобытия = "EVENT_QUERY_CONSTRUCT" Тогда
ЭтотОбъект.ВызватьКонструкторЗапроса(Событие.params);
КонецЕсли;
Если ИмяСобытия = "EVENT_FORMAT_CONSTRUCT" Тогда
ЭтотОбъект.ВызватьКонструкторФорматнойСтроки(Событие.params);
КонецЕсли;
Если ИмяСобытия = "EVENT_GET_METADATA" Тогда
ЭтотОбъект.ОбработкаСобытияПолученияМетаданных(Событие.params);
КонецЕсли;
Если ИмяСобытия = "EVENT_CONTENT_CHANGED" Тогда
ЭтотОбъект.УстановитьТекстКода();
КонецЕсли;
Если ИмяСобытия = "EVENT_ON_LINK_CLICK" Тогда
Если 0 < СтрНайти(Событие.params.href, "e1cib") Тогда
ПерейтиПоНавигационнойСсылке(Событие.params.href);
КонецЕсли;
КонецЕсли;
Если ИмяСобытия = "EVENT_GET_VARIABLE_DATA" Тогда
ЭтотОбъект.ОбработкаСобытияПолученияПеременной(Событие.params);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ЕстьПолеHTML(ЭтотОбъект) Экспорт
Возврат Не ЭтотОбъект.Элементы.Найти("ПолеHTML") = Неопределено;
КонецФункции

View File

@ -0,0 +1,23 @@
<?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.17">
<CommonModule uuid="c6fcb026-a4cd-44e5-990b-82400866e6ef">
<Properties>
<Name>РК_Сервер</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Сервер (РК)</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>true</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

File diff suppressed because it is too large Load Diff

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.17">
<CommonTemplate uuid="8874135a-5885-4145-9005-3d65ed1224a6">
<Properties>
<Name>рк_src</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>src</v8:content>
</v8:item>
</Synonym>
<Comment/>
<TemplateType>BinaryData</TemplateType>
</Properties>
</CommonTemplate>
</MetaDataObject>

Binary file not shown.

79
src/ConfigDumpInfo.xml Normal file
View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<ConfigDumpInfo xmlns="http://v8.1c.ru/8.3/xcf/dumpinfo" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" format="Hierarchical" version="2.17">
<ConfigVersions>
<Metadata name="Catalog.АвтоподстановкиДляОбъектов" id="d689b3e0-2560-4c67-ae0b-e7825c6bcbc5" configVersion="8da1572624f9a85f743f6f4bff33d2a8a00ad669"/>
<Metadata name="Catalog.АвтоподстановкиДляОбъектов.Form.ФормаЭлемента" id="2e93da04-68ff-4c30-bd2e-894dc6641ee2" configVersion="5579f965666ee4572f7b1fdf787a48922f2775a3"/>
<Metadata name="Catalog.АвтоподстановкиДляОбъектов.Form.ФормаЭлемента.Form" id="2e93da04-68ff-4c30-bd2e-894dc6641ee2.0" configVersion="7ea3867943e45ee8ea475975c003915401a25774"/>
<Metadata name="Catalog.АвтоподстановкиДляПроцессов" id="ed478949-9787-456a-89d5-dafe6e5de95a" configVersion="f3b60aa3a1795ba623fdde96917e4999065068e2"/>
<Metadata name="Catalog.АвтоподстановкиДляПроцессов.Form.ФормаЭлемента" id="37698159-c852-420d-a23d-f85305cbc0c5" configVersion="ed565d6602f3ed728c5af08109348f0bcbd018e3"/>
<Metadata name="Catalog.АвтоподстановкиДляПроцессов.Form.ФормаЭлемента.Form" id="37698159-c852-420d-a23d-f85305cbc0c5.0" configVersion="be5b36d5ae85cde47c1a7464df7fbe5da4738a2d"/>
<Metadata name="Catalog.Алгоритмы" id="a4bed30d-8af1-4aaa-bdbb-d0eee14e2861" configVersion="ff0063c7a7bc6245a3edb12adcba3fccb5c33c86">
<Metadata name="Catalog.Алгоритмы.Attribute.Выражение" id="e5d0cd79-2eac-4c47-86ed-379cea98254e"/>
</Metadata>
<Metadata name="Catalog.Алгоритмы.Form.ФормаЭлемента" id="337554c0-1d9b-439a-9d7a-7d88fb7534f8" configVersion="448ad06821d71a1815c25f7dd84351dd7faab95c"/>
<Metadata name="Catalog.Алгоритмы.Form.ФормаЭлемента.Form" id="337554c0-1d9b-439a-9d7a-7d88fb7534f8.0" configVersion="f1030d305778381da522ff92c7722a0fe1151f15"/>
<Metadata name="Catalog.АлгоритмыПроверки" id="57943e54-e7ea-4b98-985d-22fa1e6bbe41" configVersion="5af3301163dde4ab12f876a95f3d492113b8aff3">
<Metadata name="Catalog.АлгоритмыПроверки.Attribute.ВыражениеУсловия" id="3294de25-74ef-48b4-a812-03ed71da1cf3"/>
</Metadata>
<Metadata name="Catalog.АлгоритмыПроверки.Form.ФормаЭлемента" id="a21daede-f886-4be9-a949-02070ee70046" configVersion="307ee7446db86a6addd43c4d32df4414bac4bb8b"/>
<Metadata name="Catalog.АлгоритмыПроверки.Form.ФормаЭлемента.Form" id="a21daede-f886-4be9-a949-02070ee70046.0" configVersion="1737664eaebb27173d4c46ea025ab0cf210aad06"/>
<Metadata name="Catalog.ВычисляемыеПараметрыЧатБота" id="693e0054-19a0-4582-bc91-c91843469fa2" configVersion="6801cf63bed131b8c26a5e77ca676fdbe33a4768"/>
<Metadata name="Catalog.ВычисляемыеПараметрыЧатБота.Form.ФормаЭлемента" id="b76a1b94-0767-43a9-bca2-02efbfe5b7ce" configVersion="86bcf63c3f78a9ff2d794ef9ce33f1f997a48e90"/>
<Metadata name="Catalog.ВычисляемыеПараметрыЧатБота.Form.ФормаЭлемента.Form" id="b76a1b94-0767-43a9-bca2-02efbfe5b7ce.0" configVersion="9bd00b6ec981749ead4ba4a4f19ed6620d1a0d05"/>
<Metadata name="Catalog.ГрупповыеПоказатели" id="f66aa73a-4637-436a-8a89-7ac19d922e68" configVersion="740c996cd7d4f0e06730f5a62c9655e9108076a7"/>
<Metadata name="Catalog.ГрупповыеПоказатели.Form.ФормаЭлемента" id="fcdb174e-ab8e-4013-8514-1b4414f51b45" configVersion="636e419edaeff2904f61f74e41815a16b9f271c9"/>
<Metadata name="Catalog.ГрупповыеПоказатели.Form.ФормаЭлемента.Form" id="fcdb174e-ab8e-4013-8514-1b4414f51b45.0" configVersion="8064a8e1ed700ed703f83b6a5a3187bbcad5cdd7"/>
<Metadata name="Catalog.Метрики" id="aede0edc-a3ae-4cc2-856d-717f48458110" configVersion="da798f77ed4b6ed13d0b96478b1ec48dfa7ede8b"/>
<Metadata name="Catalog.Метрики.Form.ФормаЭлемента" id="c9802fce-e5d0-4da4-a859-51f629cd271a" configVersion="0c22b274291f2ac391e9be14413bfa5b0ceb0694"/>
<Metadata name="Catalog.Метрики.Form.ФормаЭлемента.Form" id="c9802fce-e5d0-4da4-a859-51f629cd271a.0" configVersion="ebe242213e318a955bbbd330c996fbca2461f339"/>
<Metadata name="Catalog.ОбластиПоискаЧатБота" id="49b3a2a8-a49d-4719-a147-d9c3be2870cc" configVersion="dccf62690cf4e5f6a12aabb8f4cfb646ec3f7546"/>
<Metadata name="Catalog.ОбластиПоискаЧатБота.Form.ФормаЭлемента" id="6d772ac6-84fd-4881-b8bf-7a79912695d3" configVersion="034eeb49d6ba3f97f7c570f80beed84c210f3fd9"/>
<Metadata name="Catalog.ОбластиПоискаЧатБота.Form.ФормаЭлемента.Form" id="6d772ac6-84fd-4881-b8bf-7a79912695d3.0" configVersion="844beaa2a2b4507f7cc51ef271784d23ea3ee5fb"/>
<Metadata name="Catalog.ПоказателиВиджетов" id="6963a31b-8997-4de9-b465-ea61f6ea8c3f" configVersion="00997875e073ffb3d6a2d214f25b57b3fede772c"/>
<Metadata name="Catalog.ПоказателиВиджетов.Form.ФормаЭлемента" id="d749e369-80cc-46cc-8363-6567aeba3204" configVersion="5b008b62d7088437d3a634dc8632a313e131b369"/>
<Metadata name="Catalog.ПоказателиВиджетов.Form.ФормаЭлемента.Form" id="d749e369-80cc-46cc-8363-6567aeba3204.0" configVersion="c4aeefa52d19afe7f7890f4b11beb800df10dc76"/>
<Metadata name="Catalog.Пользователи" id="b762a15b-44be-46ca-b442-809bad4208ed" configVersion="edb6e6cc05845a85b86574bb663eadabe32d1c4a"/>
<Metadata name="Catalog.ПравилаАвтозаполненияФайлов" id="e2d1ddfb-d646-4cf8-9d5b-3222f77901bc" configVersion="66747110d0dca4712f853680feb69ec3ed39f459"/>
<Metadata name="Catalog.ПравилаАвтозаполненияФайлов.Form.ВводСкрипта" id="feb4052b-d137-4772-8b02-454de28992ef" configVersion="7487c1a2e496683cbf125db4f4b4e6b769e4ccc9"/>
<Metadata name="Catalog.ПравилаАвтозаполненияФайлов.Form.ВводСкрипта.Form" id="feb4052b-d137-4772-8b02-454de28992ef.0" configVersion="ae1df19158cb1fd67de2a3a76b24454749f909cb"/>
<Metadata name="Catalog.СкриптыСхемДляКомплексныхПроцессов" id="d76951e5-6989-47e3-8bb4-45d1c3f497d4" configVersion="c8246a7959447220ba6fe392a4ddac0d402a0b4d"/>
<Metadata name="Catalog.СкриптыСхемДляКомплексныхПроцессов.Form.ФормаЭлемента" id="e4b83285-9c24-4518-8354-f052fd85f01e" configVersion="f67999aab22c38a44db6d7f5a0b409762a21a057"/>
<Metadata name="Catalog.СкриптыСхемДляКомплексныхПроцессов.Form.ФормаЭлемента.Form" id="e4b83285-9c24-4518-8354-f052fd85f01e.0" configVersion="43ebb7a793dd126281e6ad6fd13f1704951b6cb2"/>
<Metadata name="Catalog.СкриптыСхемДляОбработокОбъектов" id="becb07b2-3415-43c9-a364-6c348a8d8f63" configVersion="c93dae4851f954a1ae809fabf00e5af66c288625"/>
<Metadata name="Catalog.СкриптыСхемДляОбработокОбъектов.Form.ФормаЭлемента" id="cc944102-1710-408d-83c2-ee96abd78b0d" configVersion="72f2b0845791a73a4ac33e80ba34c5b5077a661b"/>
<Metadata name="Catalog.СкриптыСхемДляОбработокОбъектов.Form.ФормаЭлемента.Form" id="cc944102-1710-408d-83c2-ee96abd78b0d.0" configVersion="2d74d519e8dd0ba8aee17f7583b58cdbd29fef42"/>
<Metadata name="Catalog.СкриптыУсловийСхемДляКомплексныхПроцессов" id="90ad4bf3-5427-4145-8cfb-190210bdb092" configVersion="bb4890977b2bb9ac8937c461affed6ada3b61364"/>
<Metadata name="Catalog.СкриптыУсловийСхемДляКомплексныхПроцессов.Form.ФормаЭлемента" id="e0131d93-102f-47c2-b059-0ac186185584" configVersion="661bdcfa813c0359578d1b06c96bdf4eaef29268"/>
<Metadata name="Catalog.СкриптыУсловийСхемДляКомплексныхПроцессов.Form.ФормаЭлемента.Form" id="e0131d93-102f-47c2-b059-0ac186185584.0" configVersion="d1b5462c565bb859d808a34bccbce7d91506fc15"/>
<Metadata name="Catalog.УсловияЗадач" id="58bdf66e-59c5-4de7-917c-8376c8afe0e4" configVersion="52ef6cbb400066409b6616deb86677558c79f74d"/>
<Metadata name="Catalog.УсловияЗадач.Form.ФормаЭлемента" id="77e29ae9-a72b-4922-9357-16f4ea1e7b03" configVersion="88a2f8579221c786746a25b8285de424a01b228e"/>
<Metadata name="Catalog.УсловияЗадач.Form.ФормаЭлемента.Form" id="77e29ae9-a72b-4922-9357-16f4ea1e7b03.0" configVersion="8870ce4dbb3bad956f58c2aff3e577943e354f3e"/>
<Metadata name="CommonModule.РК_Клиент" id="8fb01201-ead3-413f-ace9-874bed755b28" configVersion="2135e79280c5babd09bb49e9a39064cdbb0cf31a"/>
<Metadata name="CommonModule.РК_Клиент.Module" id="8fb01201-ead3-413f-ace9-874bed755b28.0" configVersion="5be1cc4ea13de1a3d641eac2cf8b5de35f3e57fe"/>
<Metadata name="CommonModule.РК_Сервер" id="c6fcb026-a4cd-44e5-990b-82400866e6ef" configVersion="178603718bbd9125ee79fe39dd2c4e4be31efbf6"/>
<Metadata name="CommonModule.РК_Сервер.Module" id="c6fcb026-a4cd-44e5-990b-82400866e6ef.0" configVersion="7ad78ee6f1164def6fb912b4ebaa9c1694150424"/>
<Metadata name="CommonTemplate.рк_src" id="8874135a-5885-4145-9005-3d65ed1224a6" configVersion="4f3ddfd7cf2b5af3b97babcdb5b9445e9082087a"/>
<Metadata name="CommonTemplate.рк_src.Template" id="8874135a-5885-4145-9005-3d65ed1224a6.0" configVersion="a883be8ae17e3481530d86a18f2d9651393ecf67"/>
<Metadata name="Configuration.РедакторКода" id="cc029db7-c37b-45a1-9e48-f7d4d86d28e8" configVersion="f427f0859770dc832d970035f0c9f82442dcfaaf"/>
<Metadata name="Enum.ТипыОбъектов" id="fdb3750d-497a-4c43-9050-2830d619c5f6" configVersion="7a52b866397b47b551a58d8055fee25a52f45784">
<Metadata name="Enum.ТипыОбъектов.EnumValue.Файлы" id="3251d0ab-a060-4444-a0b0-d3824d9da055"/>
<Metadata name="Enum.ТипыОбъектов.EnumValue.ДокументыПредприятия" id="381b44e6-beb4-4ba1-a35c-4fb6f98d8f9d"/>
<Metadata name="Enum.ТипыОбъектов.EnumValue.ПроектныеЗадачи" id="50cf6c01-0fa1-4ba1-80e1-50dd2c551bd9"/>
<Metadata name="Enum.ТипыОбъектов.EnumValue.Пользователи" id="669992ac-f816-4eac-8264-e2db129faeed"/>
<Metadata name="Enum.ТипыОбъектов.EnumValue.Контрагенты" id="b4a1b4c2-8c18-452a-a401-5d06711544f2"/>
<Metadata name="Enum.ТипыОбъектов.EnumValue.Мероприятия" id="b4a3a4cb-afbc-40f5-91f1-a2be43e52b8b"/>
<Metadata name="Enum.ТипыОбъектов.EnumValue.Проекты" id="bc2d66da-1531-4c34-869d-e3b4204de6de"/>
<Metadata name="Enum.ТипыОбъектов.EnumValue.НаименованияОписанияЗадач" id="e01e84cd-31fe-4135-8e22-fc5685afe33f"/>
</Metadata>
<Metadata name="InformationRegister.РК_НастройкиПользователей" id="37552cd2-c1ec-4f07-8725-9080cfdc3ee4" configVersion="cd73076bb49cf33a48d5265f3d08453dac02a358">
<Metadata name="InformationRegister.РК_НастройкиПользователей.Resource.АдресВыгрузкиДО" id="362387a3-98c9-4578-aa88-b81cd3db8208"/>
<Metadata name="InformationRegister.РК_НастройкиПользователей.Dimension.Пользователь" id="7cdccf0f-0169-4d3d-88db-dc399a58184c"/>
<Metadata name="InformationRegister.РК_НастройкиПользователей.Resource.Включить" id="855813ec-c987-42af-8f32-1482a5bdc897"/>
</Metadata>
<Metadata name="Language.Русский" id="d6c8f128-e6d3-4256-b43d-1e0cd32dac1e" configVersion="17e89258ab5342733850f8ced16bf4eead96405f"/>
<Metadata name="StyleItem.ИнформационнаяНадпись" id="049a3170-eb02-4852-a183-f5d7230abbed" configVersion="969d6aa48682bbdc5d9f4998dc771a18eda42b38"/>
<Metadata name="StyleItem.НедоступныеДанныеЦвет" id="505710dd-6988-44e3-a2df-df5b13b78f67" configVersion="ccc8a0b90b5544643286508fde37e2ddf4943889"/>
<Metadata name="StyleItem.ОбъектПомеченНаУдаление" id="e954fd3d-39e8-41ae-afd7-783bc74198f8" configVersion="585838f92d4c029786a1bd4c45e8afbaac370fb9"/>
<Metadata name="StyleItem.ШрифтСкрипта" id="f49cd4c7-cd0a-436f-b2c4-495a699b4fe4" configVersion="1121a09c67de63f4270af61b33d5f44da61eb009"/>
</ConfigVersions>
</ConfigDumpInfo>

85
src/Configuration.xml Normal file
View File

@ -0,0 +1,85 @@
<?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.17">
<Configuration uuid="cc029db7-c37b-45a1-9e48-f7d4d86d28e8">
<InternalInfo>
<xr:ContainedObject>
<xr:ClassId>9cd510cd-abfc-11d4-9434-004095e12fc7</xr:ClassId>
<xr:ObjectId>89ddfee7-4a98-4dbe-a847-ad8d02e74e0d</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>9fcd25a0-4822-11d4-9414-008048da11f9</xr:ClassId>
<xr:ObjectId>d73b2ddb-7303-4227-985f-99aded34e7d7</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>e3687481-0a87-462c-a166-9f34594f9bba</xr:ClassId>
<xr:ObjectId>671fa439-b3d9-4214-854c-327aade70691</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>9de14907-ec23-4a07-96f0-85521cb6b53b</xr:ClassId>
<xr:ObjectId>33f06002-3c42-4915-a904-401785f26567</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>51f2d5d8-ea4d-4064-8892-82951750031e</xr:ClassId>
<xr:ObjectId>fc478b73-eee8-4e14-b5b8-ec5056f2c0b1</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>e68182ea-4237-4383-967f-90c1e3370bc7</xr:ClassId>
<xr:ObjectId>08e36f80-823d-4d27-b640-b29579aa899d</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>fb282519-d103-4dd3-bc12-cb271d631dfc</xr:ClassId>
<xr:ObjectId>e33c2c0f-9f4d-4b42-a862-0dd17587d991</xr:ObjectId>
</xr:ContainedObject>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>РедакторКода</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Редактор кода</v8:content>
</v8:item>
</Synonym>
<Comment/>
<ConfigurationExtensionPurpose>AddOn</ConfigurationExtensionPurpose>
<KeepMappingToExtendedConfigurationObjectsByIDs>true</KeepMappingToExtendedConfigurationObjectsByIDs>
<NamePrefix>РК_</NamePrefix>
<ConfigurationExtensionCompatibilityMode>Version8_3_21</ConfigurationExtensionCompatibilityMode>
<ScriptVariant>Russian</ScriptVariant>
<Vendor/>
<Version>1.0.0</Version>
<BriefInformation/>
<DetailedInformation/>
<Copyright/>
<VendorInformationAddress/>
<ConfigurationInformationAddress/>
</Properties>
<ChildObjects>
<Language>Русский</Language>
<StyleItem>ИнформационнаяНадпись</StyleItem>
<StyleItem>ШрифтСкрипта</StyleItem>
<StyleItem>ОбъектПомеченНаУдаление</StyleItem>
<StyleItem>НедоступныеДанныеЦвет</StyleItem>
<CommonTemplate>рк_src</CommonTemplate>
<CommonModule>РК_Сервер</CommonModule>
<CommonModule>РК_Клиент</CommonModule>
<Catalog>Алгоритмы</Catalog>
<Catalog>Пользователи</Catalog>
<Catalog>АлгоритмыПроверки</Catalog>
<Catalog>АвтоподстановкиДляОбъектов</Catalog>
<Catalog>АвтоподстановкиДляПроцессов</Catalog>
<Catalog>ГрупповыеПоказатели</Catalog>
<Catalog>Метрики</Catalog>
<Catalog>ПоказателиВиджетов</Catalog>
<Catalog>ПравилаАвтозаполненияФайлов</Catalog>
<Catalog>СкриптыСхемДляКомплексныхПроцессов</Catalog>
<Catalog>СкриптыСхемДляОбработокОбъектов</Catalog>
<Catalog>СкриптыУсловийСхемДляКомплексныхПроцессов</Catalog>
<Catalog>УсловияЗадач</Catalog>
<Catalog>ОбластиПоискаЧатБота</Catalog>
<Catalog>ВычисляемыеПараметрыЧатБота</Catalog>
<Enum>ТипыОбъектов</Enum>
<InformationRegister>РК_НастройкиПользователей</InformationRegister>
</ChildObjects>
</Configuration>
</MetaDataObject>

View File

@ -0,0 +1,99 @@
<?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.17">
<Enum uuid="fdb3750d-497a-4c43-9050-2830d619c5f6">
<InternalInfo>
<xr:GeneratedType name="EnumRef.ТипыОбъектов" category="Ref">
<xr:TypeId>5a313be9-084a-4ca7-ba10-dc1045785b82</xr:TypeId>
<xr:ValueId>6814e661-fa95-4246-81f4-9c918dbf68ee</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="EnumManager.ТипыОбъектов" category="Manager">
<xr:TypeId>58d6c79c-6a09-4253-a784-1a76b9831ea4</xr:TypeId>
<xr:ValueId>56b37a94-fb72-4fd2-b17e-fc8e8684a4ee</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="EnumList.ТипыОбъектов" category="List">
<xr:TypeId>5db659cf-8963-46d8-ab9d-8e7fa18b28eb</xr:TypeId>
<xr:ValueId>eea17b30-75a2-4c4c-aea7-5cee9dbb7879</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ТипыОбъектов</Name>
<Comment/>
<ExtendedConfigurationObject>68a8f775-79bf-4417-88b7-25028209f2a7</ExtendedConfigurationObject>
</Properties>
<ChildObjects>
<EnumValue uuid="381b44e6-beb4-4ba1-a35c-4fb6f98d8f9d">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ДокументыПредприятия</Name>
<Comment/>
<ExtendedConfigurationObject>3456fe64-bc85-4dbe-8711-8c81d0fde785</ExtendedConfigurationObject>
</Properties>
</EnumValue>
<EnumValue uuid="bc2d66da-1531-4c34-869d-e3b4204de6de">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>Проекты</Name>
<Comment/>
<ExtendedConfigurationObject>8ff274dc-f968-450e-b598-6d1cddf8d031</ExtendedConfigurationObject>
</Properties>
</EnumValue>
<EnumValue uuid="b4a1b4c2-8c18-452a-a401-5d06711544f2">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>Контрагенты</Name>
<Comment/>
<ExtendedConfigurationObject>d06a1772-8141-4c2f-83ec-7619dd4b16d8</ExtendedConfigurationObject>
</Properties>
</EnumValue>
<EnumValue uuid="b4a3a4cb-afbc-40f5-91f1-a2be43e52b8b">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>Мероприятия</Name>
<Comment/>
<ExtendedConfigurationObject>8caac3a2-5ce5-4101-8dce-39366459fede</ExtendedConfigurationObject>
</Properties>
</EnumValue>
<EnumValue uuid="3251d0ab-a060-4444-a0b0-d3824d9da055">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>Файлы</Name>
<Comment/>
<ExtendedConfigurationObject>ca078341-7edf-4aaf-a0a5-8cd8c9842b8f</ExtendedConfigurationObject>
</Properties>
</EnumValue>
<EnumValue uuid="50cf6c01-0fa1-4ba1-80e1-50dd2c551bd9">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ПроектныеЗадачи</Name>
<Comment/>
<ExtendedConfigurationObject>321dac85-a185-4aaf-82bc-83dd3638f147</ExtendedConfigurationObject>
</Properties>
</EnumValue>
<EnumValue uuid="669992ac-f816-4eac-8264-e2db129faeed">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>Пользователи</Name>
<Comment/>
<ExtendedConfigurationObject>b681b63e-6fe6-41ab-8a55-0f79e524c730</ExtendedConfigurationObject>
</Properties>
</EnumValue>
<EnumValue uuid="e01e84cd-31fe-4135-8e22-fc5685afe33f">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>НаименованияОписанияЗадач</Name>
<Comment/>
<ExtendedConfigurationObject>3cadc163-24b0-4372-84e9-41b07e3bf221</ExtendedConfigurationObject>
</Properties>
</EnumValue>
</ChildObjects>
</Enum>
</MetaDataObject>

View File

@ -0,0 +1,193 @@
<?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.17">
<InformationRegister uuid="37552cd2-c1ec-4f07-8725-9080cfdc3ee4">
<InternalInfo>
<xr:GeneratedType name="InformationRegisterRecord.РК_НастройкиПользователей" category="Record">
<xr:TypeId>ae80ba6a-5096-40bc-827f-d849b269bc83</xr:TypeId>
<xr:ValueId>978f775f-b898-46af-b462-45778557fff8</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="InformationRegisterManager.РК_НастройкиПользователей" category="Manager">
<xr:TypeId>da17e237-aad4-48d8-bf07-850362f58681</xr:TypeId>
<xr:ValueId>c458af40-4834-4218-b44e-32c6602b67ef</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="InformationRegisterSelection.РК_НастройкиПользователей" category="Selection">
<xr:TypeId>e7d9c808-961a-4bf1-9487-48e917ba963b</xr:TypeId>
<xr:ValueId>d35315b3-d2c3-4f59-b5e4-d4f4f9fbdbb4</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="InformationRegisterList.РК_НастройкиПользователей" category="List">
<xr:TypeId>b70c27bd-7f94-41eb-a39d-74988458a4e1</xr:TypeId>
<xr:ValueId>314160fc-e268-4d15-a7a2-46fd92b76fe9</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="InformationRegisterRecordSet.РК_НастройкиПользователей" category="RecordSet">
<xr:TypeId>2be35a72-efa0-4d6b-858e-0240df85e551</xr:TypeId>
<xr:ValueId>d5c4f864-2348-4273-b685-74c5b12047f3</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="InformationRegisterRecordKey.РК_НастройкиПользователей" category="RecordKey">
<xr:TypeId>53a37a9e-d745-4637-8a23-d1dc5ff1740e</xr:TypeId>
<xr:ValueId>85757350-52f5-4440-a62c-c9fd4651f414</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="InformationRegisterRecordManager.РК_НастройкиПользователей" category="RecordManager">
<xr:TypeId>458c178d-31b5-40cd-8ab2-8da2bd55099b</xr:TypeId>
<xr:ValueId>6a1a56ef-8b7c-480b-99ca-920773397e96</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>РК_НастройкиПользователей</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Настройки пользователей (РК ДО)</v8:content>
</v8:item>
</Synonym>
<Comment/>
<UseStandardCommands>true</UseStandardCommands>
<EditType>InDialog</EditType>
<DefaultRecordForm/>
<DefaultListForm/>
<AuxiliaryRecordForm/>
<AuxiliaryListForm/>
<InformationRegisterPeriodicity>Nonperiodical</InformationRegisterPeriodicity>
<WriteMode>Independent</WriteMode>
<MainFilterOnPeriod>false</MainFilterOnPeriod>
<IncludeHelpInContents>false</IncludeHelpInContents>
<DataLockControlMode>Managed</DataLockControlMode>
<FullTextSearch>DontUse</FullTextSearch>
<EnableTotalsSliceFirst>false</EnableTotalsSliceFirst>
<EnableTotalsSliceLast>false</EnableTotalsSliceLast>
<RecordPresentation/>
<ExtendedRecordPresentation/>
<ListPresentation/>
<ExtendedListPresentation/>
<Explanation/>
<DataHistory>DontUse</DataHistory>
<UpdateDataHistoryImmediatelyAfterWrite>false</UpdateDataHistoryImmediatelyAfterWrite>
<ExecuteAfterWriteDataHistoryVersionProcessing>false</ExecuteAfterWriteDataHistoryVersionProcessing>
</Properties>
<ChildObjects>
<Resource uuid="855813ec-c987-42af-8f32-1482a5bdc897">
<Properties>
<Name>Включить</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Включить</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Resource>
<Resource uuid="362387a3-98c9-4578-aa88-b81cd3db8208">
<Properties>
<Name>АдресВыгрузкиДО</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Адрес выгрузки ДО</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Resource>
<Dimension uuid="7cdccf0f-0169-4d3d-88db-dc399a58184c">
<Properties>
<Name>Пользователь</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пользователь</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>cfg:CatalogRef.Пользователи</v8:Type>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Master>false</Master>
<MainFilter>true</MainFilter>
<DenyIncompleteValues>false</DenyIncompleteValues>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Dimension>
</ChildObjects>
</InformationRegister>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<Language uuid="d6c8f128-e6d3-4256-b43d-1e0cd32dac1e">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>Русский</Name>
<Comment/>
<ExtendedConfigurationObject>7c9bc131-bc25-474d-979f-b84ebdb2145c</ExtendedConfigurationObject>
<LanguageCode>ru</LanguageCode>
</Properties>
</Language>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<StyleItem uuid="049a3170-eb02-4852-a183-f5d7230abbed">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ИнформационнаяНадпись</Name>
<Comment/>
<ExtendedConfigurationObject>41e9abc1-9859-4c4c-a9dd-55a11bb744b6</ExtendedConfigurationObject>
<Type>Color</Type>
</Properties>
</StyleItem>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<StyleItem uuid="505710dd-6988-44e3-a2df-df5b13b78f67">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>НедоступныеДанныеЦвет</Name>
<Comment/>
<ExtendedConfigurationObject>0d0ada8a-09bb-4634-bf50-199f3779dad5</ExtendedConfigurationObject>
<Type>Color</Type>
</Properties>
</StyleItem>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<StyleItem uuid="e954fd3d-39e8-41ae-afd7-783bc74198f8">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ОбъектПомеченНаУдаление</Name>
<Comment/>
<ExtendedConfigurationObject>d159887e-f1ef-488e-9117-4a09c96b6499</ExtendedConfigurationObject>
<Type>Color</Type>
</Properties>
</StyleItem>
</MetaDataObject>

View File

@ -0,0 +1,13 @@
<?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.17">
<StyleItem uuid="f49cd4c7-cd0a-436f-b2c4-495a699b4fe4">
<InternalInfo/>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>ШрифтСкрипта</Name>
<Comment/>
<ExtendedConfigurationObject>4e7db8d6-9ec4-45a6-9ed9-daa52c357067</ExtendedConfigurationObject>
<Type>Font</Type>
</Properties>
</StyleItem>
</MetaDataObject>