1
0
mirror of https://github.com/BlizD/Tasks.git synced 2025-01-12 03:19:41 +02:00

Добавил возможность вставлять примеры кода в задачу.

Идея и примеры кода взяты с репозитория https://github.com/salexdv/bsl_console
This commit is contained in:
Anton Ivanov 2020-08-08 14:37:19 +03:00
parent e8923ba594
commit 829a487923
6 changed files with 434 additions and 3 deletions

View File

@ -3518,6 +3518,7 @@
<Form>ФормаВводаКомментария</Form>
<Form>ФормаВыбораМножественный</Form>
<Form>ФормаПолноэкранныйРежим</Form>
<Template>КонсольКода_src</Template>
<Command uuid="d49b1992-4273-4e37-9c1f-9d3aea548430">
<Properties>
<Name>КомандаСледитьЗаЗадачей</Name>

View File

@ -262,6 +262,14 @@
<Value xsi:type="xr:DesignTimeRef">Enum.узОформлениеТекста.EnumValue.Markdown</Value>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation/>
<Value xsi:type="xr:DesignTimeRef">Enum.узОформлениеТекста.EnumValue.Код</Value>
</xr:Value>
</xr:Item>
</ChoiceList>
<ContextMenu name="ОформлениеТекстаКонтекстноеМеню" id="436"/>
<ExtendedTooltip name="ОформлениеТекстаРасширеннаяПодсказка" id="437"/>
@ -575,6 +583,32 @@
</HTMLDocumentField>
</ChildItems>
</Page>
<Page name="ГруппаСтраницаКод" id="593">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Код</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа страница код</v8:content>
</v8:item>
</ToolTip>
<ExtendedTooltip name="ГруппаСтраницаКодРасширеннаяПодсказка" id="594"/>
<ChildItems>
<HTMLDocumentField name="КонсольКода_ПолеHTML" id="595">
<DataPath>КонсольКода_ПолеHTML</DataPath>
<TitleLocation>None</TitleLocation>
<ContextMenu name="КонсольКода_ПолеHTMLКонтекстноеМеню" id="596"/>
<ExtendedTooltip name="КонсольКода_ПолеHTMLРасширеннаяПодсказка" id="597"/>
<Events>
<Event name="DocumentComplete">КонсольКода_ПолеHTMLДокументСформирован</Event>
</Events>
</HTMLDocumentField>
</ChildItems>
</Page>
</ChildItems>
</Pages>
<UsualGroup name="ГруппаКомментарииЧекЛист" id="283">
@ -2437,6 +2471,77 @@
</Title>
<Type/>
</Attribute>
<Attribute name="КонсольКода_АдресМакета" id="18">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Консоль кода адрес макета</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="КонсольКода_ИндексныйФайл" id="19">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Консоль кода индексный файл</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="КонсольКода_КаталогИсходников" id="20">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Консоль кода каталог исходников</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="КонсольКода_ПолеHTML" id="22">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Поле HTML</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ОформлениеТекстаПредыдущий" id="23">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Оформление текста предыдущий</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>cfg:EnumRef.узОформлениеТекста</v8:Type>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="КомандаПоказатьСкрытьКомментарии" id="1">

View File

@ -61,6 +61,7 @@
//+ #104 Дзеса Ігор (capitoshko) 08.10.2018
УстановитьПараметрОтбораПоУчетуЗадач();
//- #104 Дзеса Ігор (capitoshko) 08.10.2018
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
@ -289,7 +290,10 @@
пТекстСодержания = ПолучитьСодержаниеТекстИзФорматированногоТекста();
ТекущийОбъект.ТекстСодержания = пТекстСодержания;
Конецесли;
Конецесли;
ТекущийОбъект.ЦветЗадачи = Новый ХранилищеЗначения(ЦветЗадачиНаФорме);
@ -313,6 +317,10 @@
Отказ = Истина;
Конецесли;
Если Объект.ОформлениеТекста = ПредопределенноеЗначение("Перечисление.узОформлениеТекста.Код") Тогда
Объект.ТекстСодержания = Элементы.КонсольКода_ПолеHTML.Документ.defaultView.getText();
КонецЕсли;
РезультатПроверкиWIPЛимит = ПроверитьWIPЛимитНаСервере();
Если РезультатПроверкиWIPЛимит.ПревышенWIPЛимит Тогда
Сообщить(РезультатПроверкиWIPЛимит.ТекстОшибки);
@ -371,6 +379,8 @@
РаботаСФайламиКлиент.ПоказатьПодтверждениеЗакрытияФормыСФайлами(ЭтотОбъект, Отказ, ЗавершениеРаботы, Объект.Ссылка);
// Конец СтандартныеПодсистемы.РаботаСФайлами
КонсольКода_ЗакрытьКонсоль();
КонецПроцедуры
#КонецОбласти
@ -447,6 +457,7 @@
Элементы.ГруппаСтраницаФорматированныйТекст.Видимость = Ложь;
Элементы.ГруппаСтраницаПросмотр.Видимость = Ложь;
Элементы.ГруппаСтраницаТекст.Видимость = Ложь;
Элементы.ГруппаСтраницаКод.Видимость = Ложь;
Элементы.ГруппаКоманднаяПанельMarkdown.Видимость = Ложь;
Элементы.ГруппаСтраницаНаблюдателиЗаОсновнойЗадачей.Видимость = Ложь;
@ -456,6 +467,8 @@
Элементы.ГруппаКоманднаяПанельMarkdown.Видимость = Истина;
Элементы.ГруппаСтраницаПросмотр.Видимость = Истина;
Элементы.ГруппаСтраницаТекст.Видимость = Истина;
ИначеЕсли Объект.ОформлениеТекста = ПредопределенноеЗначение("Перечисление.узОформлениеТекста.Код") Тогда
Элементы.ГруппаСтраницаКод.Видимость = Истина;
Иначе
Элементы.ГруппаСтраницаТекст.Видимость = Истина;
Конецесли;
@ -1206,6 +1219,11 @@
Если Элементы.ГруппаСтраницыОформлениеСодержания.ТекущаяСтраница = Элементы.ГруппаСтраницаПросмотр Тогда
ПолучитьMarkdown();
Конецесли;
ИначеЕсли Объект.ОформлениеТекста = ПредопределенноеЗначение("Перечисление.узОформлениеТекста.Код") Тогда
КонсольКода_ЗагрузитьИзМакета();
КонсольКода_ПриОткрытии();
Иначе
Конецесли;
КонецПроцедуры
@ -1229,17 +1247,39 @@
Элементы.ГруппаСтраницыОформлениеСодержания.ТекущаяСтраница = Элементы.ГруппаСтраницаТекст;
Конецесли;
Конецесли;
Если ОформлениеТекстаПредыдущий = ПредопределенноеЗначение("Перечисление.узОформлениеТекста.Код") Тогда
пТекстСодержания = Элементы.КонсольКода_ПолеHTML.Документ.defaultView.getText();
Объект.ТекстСодержания = пТекстСодержания;
Конецесли;
ОформлениеТекстаПриИзмененииНаСервере();
ВыполнитьДействиеДляСтраницы();
ОформлениеТекстаПредыдущий = Объект.ОформлениеТекста;
КонецПроцедуры
&НаСервере
Процедура ОформлениеТекстаПриИзмененииНаСервере()
Если Объект.ОформлениеТекста = ПредопределенноеЗначение("Перечисление.узОформлениеТекста.ФорматированныйТекст") Тогда
ФорматированныйТекст.УстановитьHTML(Объект.ТекстСодержания,Новый Структура);
ИначеЕсли Объект.ОформлениеТекста = ПредопределенноеЗначение("Перечисление.узОформлениеТекста.Markdown") Тогда
пТекстСодержания = ПолучитьСодержаниеТекстИзФорматированногоТекста();
Объект.ТекстСодержания = пТекстСодержания;
Если ОформлениеТекстаПредыдущий = ПредопределенноеЗначение("Перечисление.узОформлениеТекста.ФорматированныйТекст") Тогда
пТекстСодержания = ПолучитьСодержаниеТекстИзФорматированногоТекста();
Объект.ТекстСодержания = пТекстСодержания;
КонецЕсли;
ИначеЕсли Объект.ОформлениеТекста = ПредопределенноеЗначение("Перечисление.узОформлениеТекста.Код") Тогда
Если ОформлениеТекстаПредыдущий = ПредопределенноеЗначение("Перечисление.узОформлениеТекста.ФорматированныйТекст") Тогда
пТекстСодержания = ПолучитьСодержаниеТекстИзФорматированногоТекста();
Объект.ТекстСодержания = пТекстСодержания;
КонецЕсли;
Иначе
пТекстСодержания = ПолучитьСодержаниеТекстИзФорматированногоТекста();
Объект.ТекстСодержания = пТекстСодержания;
@ -1522,5 +1562,262 @@
КонецФункции
&НаСервере
Процедура КонсольКода_ЗагрузитьИзМакета()
Макет_src = КонсольКода_ПолучитьМакет("КонсольКода_src");
КонсольКода_АдресМакета = ПоместитьВоВременноеХранилище(Макет_src, Новый УникальныйИдентификатор());
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ПриОткрытии()
НачатьПодключениеРасширенияРаботыСФайлами(
Новый ОписаниеОповещения("КонсольКода_ПослеПодключенияРасширенияДляРаботыСФайлами",
ЭтаФорма));
КонецПроцедуры
&НаСервере
Функция КонсольКода_ПолучитьМакет(ИмяМакета)
пОбъект = РеквизитФормыВЗначение("Объект");
Возврат пОбъект.ПолучитьМакет(ИмяМакета);
КонецФункции
&НаСервере
Функция КонсольКода_ПолучитьТекстМакета(ИмяМакета)
Макет = КонсольКода_ПолучитьМакет(ИмяМакета);
Возврат СтрЗаменить(Макет.ПолучитьТекст(), Символы.ПС, " ");
КонецФункции
&НаКлиенте
Процедура КонсольКода_ПослеПодключенияРасширенияДляРаботыСФайлами(Подключено, ДопПараметры) Экспорт
Если Подключено Тогда
КонсольКода_ИзвлечьИсходники();
Иначе
#Если ВебКлиент Тогда
Если ДопПараметры = Неопределено Тогда
НачатьУстановкуРасширенияРаботыСФайлами(
Новый ОписаниеОповещения("ПослеУстановкиРасширенияДляРаботыСФайлами", ЭтаФорма))
Иначе
ПоказатьПредупреждение(, "К сожалению работа в веб-клиенте невозможна!");
КонецЕсли;
#КонецЕсли
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ИзвлечьИсходники()
Состояние("Инициализация...");
//#Если ВебКлиент Тогда
//КонсольКода_HTML = "https://salexdv.github.io/bsl_console/src/index.html";
//ИсходникиЗагружены = Истина;
//#Иначе
НачатьПолучениеКаталогаВременныхФайлов(
Новый ОписаниеОповещения("КонсольКода_ПриПолученииКаталогаВременныхФайлов", ЭтаФорма));
//#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ПриПолученииКаталогаВременныхФайлов(ИмяКаталога, ДопПараметры) Экспорт
КонсольКода_КаталогИсходников = ИмяКаталога + "bsl_console\";
НачатьСозданиеКаталога(
Новый ОписаниеОповещения("КонсольКода_ПослеСозданияКаталога", ЭтаФорма),
КонсольКода_КаталогИсходников);
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ПослеСозданияКаталога(ИмяКаталога, ДопПараметры) Экспорт
ФайлНаДиске = Новый Файл(КонсольКода_КаталогИсходников);
ФайлНаДиске.НачатьПроверкуСуществования(
Новый ОписаниеОповещения("КонсольКода_ПослеПроверкиСуществованияКаталога",
ЭтаФорма));
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ПослеПроверкиСуществованияКаталога(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ФайлНаДиске = Новый Файл(КонсольКода_КаталогИсходников + ".ver");
ФайлНаДиске.НачатьПроверкуСуществования(
Новый ОписаниеОповещения("КонсольКода_ПослеПроверкиСуществованияФайлаВерсии",
ЭтаФорма));
Иначе
КонсольКода_ВывестиОшибку("Не удалось создать каталог для исходников", Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ПослеПроверкиСуществованияФайлаВерсии(Существует, ДопПараметры) Экспорт
Если Существует Тогда
ФайлНаДиске = Новый Файл(КонсольКода_КаталогИсходников + "index.html");
ФайлНаДиске.НачатьПроверкуСуществования(
Новый ОписаниеОповещения("КонсольКода_ПослеПроверкиСуществованияИндексногоФайла",
ЭтаФорма));
Иначе
КонсольКода_ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ПослеПроверкиСуществованияИндексногоФайла(Существует, ДопПараметры) Экспорт
Если Существует Тогда
КонсольКода_ИндексныйФайл = КонсольКода_ИндексныйФайл();
НачатьКопированиеФайла(
Новый ОписаниеОповещения("КонсольКода_ПослеКопированияИндексногоФайла", ЭтаФорма),
КонсольКода_КаталогИсходников + "index.html", КонсольКода_ИндексныйФайл);
Иначе
КонсольКода_ИзвлечьИсходникиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ВывестиОшибку(Текст, ЗакрыватьКонсоль)
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ПослеКопированияИндексногоФайла(СкопированныйФайл, ДопПараметры) Экспорт
КонсольКода_ПолеHTML = СкопированныйФайл;
ИсходникиЗагружены = Истина;
//Элементы.ПолеHTML.Документ.defaultView.setText(Объект.ТекстСодержания);
Позиция = 1;
УчитыватьОтступПервойСтроки = Ложь;
//Элементы.ПолеHTML.Документ.defaultView.setText(
// Объект.ТекстСодержания,
// Позиция,
// УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ИзвлечьИсходникиНаКлиенте()
НачатьУдалениеФайлов(
Новый ОписаниеОповещения("КонсольКода_ПослеУдаленияВременныхФайлов", ЭтаФорма),
КонсольКода_КаталогИсходников,
"*.*");
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ПослеУдаленияВременныхФайлов(ДопПараметры) Экспорт
ИмяФайла = КонсольКода_КаталогИсходников + "bsl_console.zip";
ДанныеМакета = ПолучитьИзВременногоХранилища(КонсольКода_АдресМакета);
ДанныеМакета.НачатьЗапись(
Новый ОписаниеОповещения("КонсольКода_ПослеЗаписиФайлаМакета", ЭтаФорма),
ИмяФайла);
КонецПроцедуры
&НаКлиенте
Функция КонсольКода_ИндексныйФайл()
Возврат КонсольКода_КаталогИсходников + Формат(ТекущаяУниверсальнаяДатаВМиллисекундах(), "ЧГ=0") + ".html";
КонецФункции
&НаКлиенте
Процедура КонсольКода_ПослеЗаписиФайлаМакета(ДопПараметры) Экспорт
Попытка
Файл = Новый ЧтениеZipФайла(КонсольКода_КаталогИсходников + "bsl_console.zip");
Файл.ИзвлечьВсе(КонсольКода_КаталогИсходников);
Файл = Новый ЗаписьТекста(КонсольКода_КаталогИсходников + ".ver");
Файл.ЗаписатьСтроку(ТекущаяДата());
Файл.Закрыть();
КонсольКода_ИндексныйФайл = КонсольКода_ИндексныйФайл();
НачатьКопированиеФайла(
Новый ОписаниеОповещения("КонсольКода_ПослеКопированияИндексногоФайла", ЭтаФорма),
КонсольКода_КаталогИсходников + "index.html",
КонсольКода_ИндексныйФайл);
Исключение
КонсольКода_ВывестиОшибку("Не удалось извлечь исходники" + Символы.ПС + ОписаниеОшибки(), Истина);
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ЗакрытьКонсоль()
Если Объект.ОформлениеТекста <> ПредопределенноеЗначение("Перечисление.узОформлениеТекста.Код") Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(КонсольКода_ИндексныйФайл) Тогда
НачатьУдалениеФайлов(Новый ОписаниеОповещения(
"КонсольКода_ПослеУдаленияИндексногоФайла", ЭтаФорма),
КонсольКода_ИндексныйФайл);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ПослеУдаленияИндексногоФайла(ДопПараметры) Экспорт
КонсольКода_ИндексныйФайл = "";
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ЗагрузитьИзТекстСодержания()
Если Объект.ОформлениеТекста <> ПредопределенноеЗначение("Перечисление.узОформлениеТекста.Код") Тогда
Возврат;
КонецЕсли;
Позиция = 1;
УчитыватьОтступПервойСтроки = Ложь;
Элементы.КонсольКода_ПолеHTML.Документ.defaultView.setText(
Объект.ТекстСодержания,
Позиция,
УчитыватьОтступПервойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ПолеHTMLПриИзменении(Элемент)
//Объект.ТекстСодержания = Элементы.ПолеHTML.Документ.defaultView.getText();
КонецПроцедуры
&НаКлиенте
Процедура КонсольКода_ПолеHTMLДокументСформирован(Элемент)
КонсольКода_ЗагрузитьИзТекстСодержания();
КонецПроцедуры
#КонецОбласти

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.9">
<Template uuid="a12f6371-4e83-4ce8-bacf-318b186e6e5f">
<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>
</Template>
</MetaDataObject>

View File

@ -106,6 +106,18 @@
<Comment/>
</Properties>
</EnumValue>
<EnumValue uuid="f3c9ab3b-172e-4cad-84c2-6867db622ecd">
<Properties>
<Name>Код</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Код</v8:content>
</v8:item>
</Synonym>
<Comment/>
</Properties>
</EnumValue>
</ChildObjects>
</Enum>
</MetaDataObject>