diff --git a/VanessaAutomation.xml b/VanessaAutomation.xml
index 78afbe5df4..043d05a373 100644
--- a/VanessaAutomation.xml
+++ b/VanessaAutomation.xml
@@ -12107,6 +12107,44 @@ Default: ffmpeg
Auto
+
+
+ СтилиHTML
+
+
+ ru
+ Стили HTML
+
+
+
+
+ xs:string
+
+ 0
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
@@ -12134,6 +12172,7 @@ Default: ffmpeg
+
ОтчетТестирования
ШаблонПеревода
МакетСлужебныйКеш
diff --git a/VanessaAutomation/Ext/ObjectModule.bsl b/VanessaAutomation/Ext/ObjectModule.bsl
index 6d801e762a..f3cb260121 100644
--- a/VanessaAutomation/Ext/ObjectModule.bsl
+++ b/VanessaAutomation/Ext/ObjectModule.bsl
@@ -172,8 +172,9 @@
// Инструкция HTML
Настройки.Вставить("СоздаватьИнструкциюHTML", Ложь);
- ИнструкцияHTML = Новый Структура;
+ ИнструкцияHTML = Новый Структура;
ИнструкцияHTML.Вставить("КаталогВыгрузкиИнструкцийHTML", "");
+ ИнструкцияHTML.Вставить("СтилиHTML", "");
Настройки.Вставить("ИнструкцияHTML", ИнструкцияHTML);
// Инструкция Markdown
diff --git "a/VanessaAutomation/Forms/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\232\320\276\320\276\321\200\320\264\320\270\320\275\320\260\321\202\320\237\320\276\320\236\320\261\320\273\320\260\321\201\321\202\320\270/Ext/Form/Module.bsl" "b/VanessaAutomation/Forms/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\232\320\276\320\276\321\200\320\264\320\270\320\275\320\260\321\202\320\237\320\276\320\236\320\261\320\273\320\260\321\201\321\202\320\270/Ext/Form/Module.bsl"
index 9057768fee..3db60d25c9 100644
--- "a/VanessaAutomation/Forms/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\232\320\276\320\276\321\200\320\264\320\270\320\275\320\260\321\202\320\237\320\276\320\236\320\261\320\273\320\260\321\201\321\202\320\270/Ext/Form/Module.bsl"
+++ "b/VanessaAutomation/Forms/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\232\320\276\320\276\321\200\320\264\320\270\320\275\320\260\321\202\320\237\320\276\320\236\320\261\320\273\320\260\321\201\321\202\320\270/Ext/Form/Module.bsl"
@@ -77,7 +77,7 @@
Если Ванесса.Объект.ИспользоватьКомпонентуVanessaExt
И ДескрипторОсновногоОкнаVA <> 0 Тогда
- Оповещение = Новый ОписаниеОповещения("ОбработкаПослеНачатьВызовАктивироватьОкно", Ванесса);
+ Оповещение = Новый ОписаниеОповещения("ПустойОбработчикОповещения3", Ванесса);
Ванесса.ВнешняяКомпонентаДляСкриншотов.НачатьВызовАктивироватьОкно(Оповещение, ДескрипторОсновногоОкнаVA);
КонецЕсли;
@@ -112,7 +112,7 @@
Если ДескрипторОсновногоОкнаТекущегоКлиентаТестирования <> 0 Тогда
АктивноОкноТестКлиента = Истина;
- Оповещение = Новый ОписаниеОповещения("ОбработкаПослеНачатьВызовАктивироватьОкно", Ванесса);
+ Оповещение = Новый ОписаниеОповещения("ПустойОбработчикОповещения3", Ванесса);
Ванесса.ВнешняяКомпонентаДляСкриншотов.НачатьВызовАктивироватьОкно(Оповещение, ДескрипторОсновногоОкнаТекущегоКлиентаТестирования);
КонецЕсли;
diff --git "a/VanessaAutomation/Forms/\320\240\320\265\320\264\320\260\320\272\321\202\320\276\321\200\320\241\321\202\320\270\320\273\320\265\320\271HTML.xml" "b/VanessaAutomation/Forms/\320\240\320\265\320\264\320\260\320\272\321\202\320\276\321\200\320\241\321\202\320\270\320\273\320\265\320\271HTML.xml"
new file mode 100644
index 0000000000..7878bf11bb
--- /dev/null
+++ "b/VanessaAutomation/Forms/\320\240\320\265\320\264\320\260\320\272\321\202\320\276\321\200\320\241\321\202\320\270\320\273\320\265\320\271HTML.xml"
@@ -0,0 +1,22 @@
+
+
+
+
\ No newline at end of file
diff --git "a/VanessaAutomation/Forms/\320\240\320\265\320\264\320\260\320\272\321\202\320\276\321\200\320\241\321\202\320\270\320\273\320\265\320\271HTML/Ext/Form.xml" "b/VanessaAutomation/Forms/\320\240\320\265\320\264\320\260\320\272\321\202\320\276\321\200\320\241\321\202\320\270\320\273\320\265\320\271HTML/Ext/Form.xml"
new file mode 100644
index 0000000000..212fff1e2d
--- /dev/null
+++ "b/VanessaAutomation/Forms/\320\240\320\265\320\264\320\260\320\272\321\202\320\276\321\200\320\241\321\202\320\270\320\273\320\265\320\271HTML/Ext/Form.xml"
@@ -0,0 +1,71 @@
+
+
\ No newline at end of file
diff --git "a/VanessaAutomation/Forms/\320\240\320\265\320\264\320\260\320\272\321\202\320\276\321\200\320\241\321\202\320\270\320\273\320\265\320\271HTML/Ext/Form/Module.bsl" "b/VanessaAutomation/Forms/\320\240\320\265\320\264\320\260\320\272\321\202\320\276\321\200\320\241\321\202\320\270\320\273\320\265\320\271HTML/Ext/Form/Module.bsl"
new file mode 100644
index 0000000000..14a0d60407
--- /dev/null
+++ "b/VanessaAutomation/Forms/\320\240\320\265\320\264\320\260\320\272\321\202\320\276\321\200\320\241\321\202\320\270\320\273\320\265\320\271HTML/Ext/Form/Module.bsl"
@@ -0,0 +1,16 @@
+
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+ СтилиHTML = Параметры.СтилиHTML;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗаписатьИЗакрыть(Команда)
+
+ Закрыть(СтилиHTML);
+
+КонецПроцедуры
+
+
+
+
diff --git "a/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml"
index 6a4e70dd1b..ebe666478c 100644
--- "a/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml"
+++ "b/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml"
@@ -22361,6 +22361,7 @@ Also use special instructions in the script, see Help info.
Top
ShowBottom
+ false
true
true
@@ -22380,6 +22381,11 @@ Also use special instructions in the script, see Help info.
КаталогOutputИнструкцияHTMLНачалоВыбора
+
@@ -22487,6 +22493,7 @@ Also use special instructions in the script, see Help info.
Top
ShowBottom
+ false
true
true
@@ -42184,5 +42191,20 @@ If the voice acting file is not found in the directory, the process of generatin
ПроверкаПереводаЭлементовФормы
+
+
+
+ ru
+ Открыть редактор стилей HTML
+
+
+
+
+ ru
+ Открыть редактор HTML
+
+
+ ОткрытьStyleHTML
+
\ No newline at end of file
diff --git "a/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl"
index 4152b13215..6dd44f04a1 100644
--- "a/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl"
+++ "b/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl"
@@ -11657,6 +11657,7 @@
Элементы.КаталогВыгрузкиИнструкцийHTML.Видимость = Объект.СоздаватьИнструкциюHTML;
Элементы.КаталогВыгрузкиИнструкцийMarkdown.Видимость = Объект.СоздаватьИнструкциюMarkdown;
Элементы.АвтонумерацияШагов.Доступность = Объект.СоздаватьИнструкциюHTML Или Объект.СоздаватьИнструкциюMarkdown;
+ Элементы.ОткрытьРедакторHTML.Видимость = Объект.СоздаватьИнструкциюHTML;
Элементы.ГруппаjUnitНастройки.Видимость = Объект.ДелатьОтчетВФорматеjUnit;
Элементы.ГруппаCucumberНастройки.Видимость = Объект.ДелатьОтчетВФорматеCucumberJson;
@@ -12548,7 +12549,7 @@
Поз = Найти(НРег(КомментарийШага), ДирективаСнимкаПоОбласти);
Если Поз > 0 Тогда
СлужебнаяСтрокаСнимкаПоОбласти = СокрЛП(Сред(КомментарийШага, Поз + СтрДлина(ДирективаСнимкаПоОбласти)));
- КоординатыОбласти = _СтрРазделить(СлужебнаяСтрокаСнимкаПоОбласти, ",", Ложь);
+ КоординатыОбласти = _СтрРазделить(СлужебнаяСтрокаСнимкаПоОбласти, " ", Ложь);
Прервать;
КонецЕсли;
КонецЦикла;
@@ -24224,6 +24225,7 @@
ПараметрыЗапуска.Вставить("ДелатьСообщенияТранслитом", Ложь);
ПараметрыЗапуска.Вставить("АвтонумерацияШагов", Истина);
ПараметрыЗапуска.Вставить("СоздаватьИнструкциюHTML", Ложь);
+ ПараметрыЗапуска.Вставить("СтилиHTML", "");
ПараметрыЗапуска.Вставить("СоздаватьИнструкциюMarkdown", Ложь);
ПараметрыЗапуска.Вставить("СоздаватьИнструкциюВидео", Ложь);
ПараметрыЗапуска.Вставить("ОзвучиватьВыполнениеСценария", Ложь);
@@ -24744,6 +24746,7 @@
Новый Структура("Р, А", "ПутьКФайлуДляВыгрузкиСтатусаВыполненияСценариев", "logpath"));
КоллекцияКоманд.Вставить("СниматьСкриншотКаждогоОкна1С", Новый Структура("Р, А", "СниматьСкриншотКаждогоОкна1С", "onerrorscreenshoteverywindow"));
КоллекцияКоманд.Вставить("АвтонумерацияШагов", Новый Структура("Р, А", "АвтонумерацияШагов", "autonumberingofsteps"));
+ КоллекцияКоманд.Вставить("СтилиHTML", Новый Структура("Р, А", "СтилиHTML", "htmlstyles"));
КоллекцияКоманд.Вставить("СоздаватьИнструкциюHTML", Новый Структура("Р, А", "СоздаватьИнструкциюHTML", "htmlcreate"));
КоллекцияКоманд.Вставить("СоздаватьИнструкциюMarkdown", Новый Структура("Р, А", "СоздаватьИнструкциюMarkdown", "markdowncreate"));
КоллекцияКоманд.Вставить("СоздаватьИнструкциюВидео", Новый Структура("Р, А", "СоздаватьИнструкциюВидео", "videocreate"));
@@ -32394,11 +32397,21 @@
УзелSTYLE = ДокументHTML.СоздатьЭлемент("style");
УзелSTYLE.УстановитьАтрибут("type", "text/css");
УзелSTYLE.ТекстовоеСодержимое = "h1{font-size: 40px} h2{font-size: 35px; align: center} p{font-size: 30px}";
+ Если Не ПустаяСтрока(Объект.СтилиHTML) Тогда
+ УзелSTYLE.ТекстовоеСодержимое = Объект.СтилиHTML;
+ КонецЕсли;
УзелHEAD.ДобавитьДочерний(УзелSTYLE);
УзелBODY = ДокументHTML.СоздатьЭлемент("body");
ДокументHTML.ЭлементДокумента.ДобавитьДочерний(УзелBODY);
+ УзелHeader = ДокументHTML.СоздатьЭлемент("header");
+ УзелBODY.ДобавитьДочерний(УзелHeader);
+
+ УзелMain = ДокументHTML.СоздатьЭлемент("main");
+ УзелBODY.ДобавитьДочерний(УзелMain);
+
+
МассивФичи = ЗагрузитьФайлВМассив(МассивСценариевДляВыполнения[0].ПолныйПутьКФиче);
НайтиПризнакЧтоСлайдСЗаголовкомФичиНадоИгнорировать(МассивФичи, МассивСценариевДляВыполнения[0]);
Для Каждого Сценарий Из МассивСценариевДляВыполнения Цикл
@@ -32408,7 +32421,7 @@
Если Не МассивСценариевДляВыполнения[0].Свойство("ИгнорироватьСлайдСЗаголовкомФичиВАвтоинструкции") Тогда
ТекстовыйУзел = Неопределено;
УзелЗаголовок = ДокументHTML.СоздатьЭлемент("h1");
- УзелBODY.ДобавитьДочерний(УзелЗаголовок);
+ УзелHeader.ДобавитьДочерний(УзелЗаголовок);
Для Каждого Стр Из ЗаголовокФичи Цикл
Если ТекстовыйУзел <> Неопределено Тогда
ПереносСтроки = ДокументHTML.СоздатьЭлемент("br");
@@ -32425,7 +32438,7 @@
Если Не МассивСценариевДляВыполнения.Получить(Сценарий.ИдСценария).Свойство("ИгнорироватьСлайдСценарияВАвтоинструкции") Тогда
УзелЗаголовок = ДокументHTML.СоздатьЭлемент("h2");
УзелЗаголовок.ТекстовоеСодержимое = Сценарий.ИмяСценария;
- УзелBODY.ДобавитьДочерний(УзелЗаголовок);
+ УзелHeader.ДобавитьДочерний(УзелЗаголовок);
КонецЕсли;
ИмяФичи = Сценарий.ИмяФичи;
@@ -32482,39 +32495,17 @@
Стр = ПереданныеВШагТаблицы[Ккк].Кол1;
- Если _СтрНайти(Стр, "href=") Тогда
-
- УзелСсылка = ДокументHTML.СоздатьЭлемент("a");
- РаздленнаяСтрока = _СтрРазделить(Стр, """", Истина);
- Если РаздленнаяСтрока.Количество() = 0 Тогда
- Продолжить;
- КонецЕсли;
- УзелСсылка.УстановитьАтрибут("href", РаздленнаяСтрока[1]);
- УзелСсылка.УстановитьАтрибут("target", "_blank");
- УзелBODY.ДобавитьДочерний(УзелСсылка);
-
- ИначеЕсли _СтрНайти(Стр, "Img src=") Тогда
-
- Если УзелСсылка = Неопределено Тогда
- Продолжить;
- КонецЕсли;
+ Если ТипЗнч(Стр) = Тип("ДокументHTML") Тогда
- РазложеннаяСтрока = _СтрРазделить(Стр, """", Истина);
- Если РаздленнаяСтрока.Количество() = 0 Тогда
+ НайденныеУзлыStyle = Стр.ПолучитьЭлементыПоИмени("style");
+ Если НайденныеУзлыStyle.Количество() Тогда
+ НовыйУзелSTYLE = НайденныеУзлыStyle[0];
+ УзелSTYLE.ТекстовоеСодержимое = НовыйУзелSTYLE.ТекстовоеСодержимое;
Продолжить;
КонецЕсли;
- УзелИзображение = ДокументHTML.СоздатьЭлемент("Img");
- УзелИзображение.УстановитьАтрибут("src", РазложеннаяСтрока[1]);
- УзелИзображение.УстановитьАтрибут("alt", РазложеннаяСтрока[3]);
- УзелИзображение.УстановитьАтрибут("title", РазложеннаяСтрока[5]);
- УзелСсылка.ДобавитьДочерний(УзелИзображение);
-
- ИначеЕсли _СтрНайти(Стр, "page-break-after") Тогда
-
- УзелРазрывСтраницы = ДокументHTML.СоздатьЭлемент("div");
- УзелРазрывСтраницы.УстановитьАтрибут("style", "page-break-after: always;");
- УзелBODY.ДобавитьДочерний(УзелРазрывСтраницы);
+ НовыйУзел = ДокументHTML.ИмпортироватьУзел(Стр.ЭлементДокумента, Истина);
+ УзелMain.ДобавитьДочерний(НовыйУзел);
Иначе
@@ -32522,15 +32513,14 @@
Стр = стрЗаменить(Стр, "'", "");
Стр = СокрП(Стр);
- ДобавитьСтрокуКакТекст(ДокументHTML, УзелBODY, НомШага, Ккк, Стр);
-
+ ДобавитьСтрокуКакТекст(ДокументHTML, УзелMain, НомШага, Ккк, Стр, ЭтоШагБезСкриншота);
КонецЕсли;
Иначе
Стр = ПереданныеВШагТаблицы[Ккк];
- ДобавитьСтрокуКакТекст(ДокументHTML, УзелBODY, НомШага, Ккк, Стр);
+ ДобавитьСтрокуКакТекст(ДокументHTML, УзелMain, НомШага, Ккк, Стр, ЭтоШагБезСкриншота);
КонецЕсли;
@@ -32550,9 +32540,20 @@
СтрСкриншотаДляHTML = СтрЗаменить(ДополнитьСлешВПуть(ИмяФичи) + НовоеИмяФайлаСкриншота, " ", "_");
СтрСкриншотаДляHTML = СтрЗаменить(СтрСкриншотаДляHTML, "\", "/");
+ УзелФигура = ДокументHTML.СоздатьЭлемент("figure");
+ УзелФигура.УстановитьАтрибут("class", "caption");
+
+ УзелПодписьФигуры = ДокументHTML.СоздатьЭлемент("figcaption");
+ УзелПодписьФигуры.ТекстовоеСодержимое = Стр;
+
+ УзелФигура.ДобавитьДочерний(УзелПодписьФигуры);
+
УзелКартинка = ДокументHTML.СоздатьЭлемент("img");
УзелКартинка.УстановитьАтрибут("src", СтрСкриншотаДляHTML);
- УзелBODY.ДобавитьДочерний(УзелКартинка);
+
+ УзелФигура.ДобавитьДочерний(УзелКартинка);
+
+ УзелMain.ДобавитьДочерний(УзелФигура);
КонецЦикла;
КонецЦикла;
@@ -32574,7 +32575,7 @@
КонецПроцедуры
&НаКлиенте
-Процедура ДобавитьСтрокуКакТекст(ДокументHTML, УзелBODY, НомШага, Ккк, Стр)
+Процедура ДобавитьСтрокуКакТекст(ДокументHTML, УзелРодитель, НомШага, Ккк, Стр, ЭтоШагБезСкриншота)
УзелАбзац = ДокументHTML.СоздатьЭлемент("p");
Если Объект.АвтонумерацияШагов И Ккк = 0 Тогда
@@ -32590,11 +32591,13 @@
УзелКод = ДокументHTML.СоздатьЭлемент("pre");
УзелКод.ДобавитьДочерний(ТекстовыйУзел);
УзелАбзац.ДобавитьДочерний(УзелКод);
- Иначе
+ ИначеЕсли ЭтоШагБезСкриншота Тогда
УзелАбзац.ДобавитьДочерний(ТекстовыйУзел);
+ Иначе
+ // При оформлении стилей, текст будет добавлен в тег "figcaption"
КонецЕсли;
- УзелBODY.ДобавитьДочерний(УзелАбзац);
+ УзелРодитель.ДобавитьДочерний(УзелАбзац);
КонецПроцедуры
@@ -40607,9 +40610,16 @@
Типы.Добавить(Тип("Строка"));
Объект.МетаданныеБиблиотек.ТипЗначения = Новый ОписаниеТипов(Типы);
- СписокШаговБезСкриншота.Добавить("И я вставляю произвольный текст в автоинструкцию");
- СписокШаговБезСкриншота.Добавить("И я вставляю изображение в автоинструкцию");
- СписокШаговБезСкриншота.Добавить("И я вставляю разрыв страницы в автоинструкцию");
+ СписокШаговБезСкриншота.Добавить("И я добавляю произвольный текст в автоинструкцию");
+ СписокШаговБезСкриншота.Добавить("И я добавляю изображение в автоинструкцию");
+ СписокШаговБезСкриншота.Добавить("И я добавляю разрыв страницы в автоинструкцию");
+ СписокШаговБезСкриншота.Добавить("И я добавляю заголовок в автоинструкцию");
+ СписокШаговБезСкриншота.Добавить("И я добавляю якорь в автоинструкцию");
+ СписокШаговБезСкриншота.Добавить("И я добавляю гиперссылку в автоинструкцию");
+ СписокШаговБезСкриншота.Добавить("И я добавляю горизонтальную линию в автоинструкцию");
+ СписокШаговБезСкриншота.Добавить("И я добавляю стили в автоинструкцию");
+ СписокШаговБезСкриншота.Добавить("И я добавляю нумерованное оглавление в автоинструкцию");
+ СписокШаговБезСкриншота.Добавить("И я добавляю не нумерованное оглавление в автоинструкцию");
ВыполняласьИнициализацияФормы = Истина;
@@ -46501,6 +46511,7 @@
ТаблицаИменНоваяСтрока("ИспользоватьUIAutomation", "UseUIAutomation", ТаблицаИмен, НижнийРегистр);
ТаблицаИменНоваяСтрока("КоэффициентМасштабированияЭкрана", "scalefactor", ТаблицаИмен, НижнийРегистр);
ТаблицаИменНоваяСтрока("АвтонумерацияШагов", "autonumberingofsteps", ТаблицаИмен, НижнийРегистр);
+ ТаблицаИменНоваяСтрока("СтилиHTML", "htmlstyles", ТаблицаИмен, НижнийРегистр);
ТаблицаИменНоваяСтрока("СоздаватьИнструкциюHTML", "htmlcreate", ТаблицаИмен, НижнийРегистр);
ТаблицаИменНоваяСтрока("СоздаватьИнструкциюMarkdown", "markdowncreate", ТаблицаИмен, НижнийРегистр);
ТаблицаИменНоваяСтрока("СоздаватьИнструкциюВидео", "videocreate", ТаблицаИмен, НижнийРегистр);
@@ -49735,4 +49746,25 @@
Процедура ПустойОбработчикОповещения3(Параметр1, Параметр2, Параметр3) Экспорт
КонецПроцедуры
-#КонецОбласти
+&НаКлиенте
+Процедура ОткрытьStyleHTML(Команда)
+ ПараметрыФормы = Новый Структура;
+ ПараметрыФормы.Вставить("СтилиHTML", Объект.СтилиHTML);
+ ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗакрытияРедактораHTML", ЭтаФорма);
+ ОткрытьФорму(ПолучитьИмяОбработкиVA() + ".Форма.РедакторСтилейHTML", ПараметрыФормы, ЭтаФорма, , , , ОписаниеОповещения);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПослеЗакрытияРедактораHTML(Результат, ДополнительныеПараметры) Экспорт
+ Если Результат <> Неопределено Тогда
+ ПослеЗакрытияРедактораHTMLНаСервере(Результат);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Процедура ПослеЗакрытияРедактораHTMLНаСервере(Результат)
+ Объект.СтилиHTML = Результат;
+ СохранитьНастройки();
+КонецПроцедуры
+
+#КонецОбласти
\ No newline at end of file
diff --git "a/features/Libraries/\320\220\320\262\321\202\320\276\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\320\270/\320\220\320\262\321\202\320\276\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/features/Libraries/\320\220\320\262\321\202\320\276\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\320\270/\320\220\320\262\321\202\320\276\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl"
index 44b984561b..4fe719116b 100644
--- "a/features/Libraries/\320\220\320\262\321\202\320\276\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\320\270/\320\220\320\262\321\202\320\276\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl"
+++ "b/features/Libraries/\320\220\320\262\321\202\320\276\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\320\270/\320\220\320\262\321\202\320\276\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl"
@@ -34,9 +34,9 @@
Ванесса.ДобавитьШагВМассивТестов(
ВсеТесты,
- "ЯВставляюПроизвольныйТекстВАвтоинструкцию(Парам)",
- "ЯВставляюПроизвольныйТекстВАвтоинструкцию",
- "И я вставляю произвольный текст в автоинструкцию " + Символы.ПС +
+ "ЯДобавляюПроизвольныйТекстВАвтоинструкцию(Парам)",
+ "ЯДобавляюПроизвольныйТекстВАвтоинструкцию",
+ "И я добавляю произвольный текст в автоинструкцию " + Символы.ПС +
" |' '|" + Символы.ПС +
" |''|" + Символы.ПС +
" |' '|" + Символы.ПС +
@@ -48,28 +48,103 @@
" |' * Перейти к оглавлению '|" + Символы.ПС +
" |' * Глава 1 '|" + Символы.ПС +
" |' * Глава 2 '|",
- "Позволяет вставить произвольный текст в автоинструкцию без скриншота шага.
+ "Позволяет добавить произвольный текст в автоинструкцию без скриншота шага.
|Например в MD этот шаг используется для добавления оглавления, и его наполнения. В MD этот шаг не будет автонумерован.",
- "Прочее.Автоинструкции.ТекстовыеИнструкции");
+ "Прочее.Автоинструкции.ТекстовыеИнструкции.Универсальные");
Ванесса.ДобавитьШагВМассивТестов(
ВсеТесты,
- "ЯВставляюИзображениеВАвтоинструкцию(Парам)",
- "ЯВставляюИзображениеВАвтоинструкцию",
- "И я вставляю изображение в автоинструкцию " + Символы.ПС +
+ "ЯДобавляюИзображениеВАвтоинструкцию(Парам)",
+ "ЯДобавляюИзображениеВАвтоинструкцию",
+ "И я добавляю изображение в автоинструкцию " + Символы.ПС +
" |'АлтернативныйТекст'|'Изображение1'|" + Символы.ПС +
" |'Путь'|'https://1cbn.ru/images/trading_scheme.png'|" + Символы.ПС +
" |'Подсказка'|'Мое изображение №1'|" + Символы.ПС +
" |'Ссылка'|'https://1cbn.ru'|" + Символы.ПС,
- "Вставка изображения с гипрссылкой в автоинструкцию HTML или MD. Путь может быть задан
+ "Добавление изображения с гипрссылкой в автоинструкцию HTML или MD. Путь может быть задан
|как относительный ""../trading_scheme.png"", так и абсолютный ""https://1cbn.ru/images/trading_scheme.png"" ",
- "Прочее.Автоинструкции.ТекстовыеИнструкции");
+ "Прочее.Автоинструкции.ТекстовыеИнструкции.Универсальные");
Ванесса.ДобавитьШагВМассивТестов(
ВсеТесты,
- "ЯВставляюРазрывСтраницыВАвтоинструкцию()",
- "ЯВставляюРазрывСтраницыВАвтоинструкцию",
- "И я вставляю разрыв страницы в автоинструкцию","","");
+ "ЯДобавляюРазрывСтраницыВАвтоинструкцию()",
+ "ЯДобавляюРазрывСтраницыВАвтоинструкцию",
+ "И я добавляю разрыв страницы в автоинструкцию",
+ "Вставляет разрыв страницы в инструкции MD и HTML",
+ "Прочее.Автоинструкции.ТекстовыеИнструкции.Универсальные");
+
+ Ванесса.ДобавитьШагВМассивТестов(
+ ВсеТесты,
+ "ЯДобавляюЗаголовокВАвтоинструкцию(ТабПарам)",
+ "ЯДобавляюЗаголовокВАвтоинструкцию",
+ "И я добавляю заголовок в автоинструкцию " + Символы.ПС +
+ " |'Заголовок'|'Мой заголовок 2'|" + Символы.ПС +
+ " |'Уровень '|'2'|",
+ "Добавляет заголовок в инструкции MD и HTML. Уровень заголовка влияет на условное офомление заголовка.
+ |Доступные значения уровня: 1; 2; 3",
+ "Прочее.Автоинструкции.ТекстовыеИнструкции.Универсальные");
+
+ Ванесса.ДобавитьШагВМассивТестов(
+ ВсеТесты,
+ "ЯДобавляюЯкорьВАвтоинструкцию(ТабПарам)",
+ "ЯДобавляюЯкорьВАвтоинструкцию",
+ "И я добавляю якорь в автоинструкцию" + Символы.ПС +
+ " |'header'|",
+ "Добавляет якорь в автоинструкцию с указанным id якоря",
+ "Прочее.Автоинструкции.ТекстовыеИнструкции.Универсальные");
+
+ Ванесса.ДобавитьШагВМассивТестов(
+ ВсеТесты,
+ "ЯДобавляюГиперссылкуВАвтоинструкцию(ТабПарам)",
+ "ЯДобавляюГиперссылкуВАвтоинструкцию",
+ "И я добавляю гиперссылку в автоинструкцию" + Символы.ПС +
+ " |'Ссылка'|'#header'|" + Символы.ПС +
+ " |'Текст'|'Оглавление'|",
+ "Добавляет гиперссылку в автоинструкцию, например на ранее установленный якорь в документе (оглавление).",
+ "Прочее.Автоинструкции.ТекстовыеИнструкции.Универсальные");
+
+ Ванесса.ДобавитьШагВМассивТестов(
+ ВсеТесты,
+ "ЯДобавляюГоризонтальнуюЛиниюВАвтоинструкцию()",
+ "ЯДобавляюГоризонтальнуюЛиниюВАвтоинструкцию",
+ "И я добавляю горизонтальную линию в автоинструкцию",
+ "Добавляет горизонтальную линию разрыва в автоинструкцию",
+ "Прочее.Автоинструкции.ТекстовыеИнструкции.Универсальные");
+
+ Ванесса.ДобавитьШагВМассивТестов(
+ ВсеТесты,
+ "ЯДобавляюСтилиВАвтоинструкцию(ТабПарам)",
+ "ЯДобавляюСтилиВАвтоинструкцию",
+ "И я добавляю стили в автоинструкцию" + Символы.ПС +
+ " |'h1{font-size: 40px; color: red} '|" + Символы.ПС +
+ " |'h2{font-size: 35px; align: center}'|" + Символы.ПС +
+ " |'p{font-size: 30px}'|",
+ "Заменяет стили всего документа HTML автоинструкции.
+ |Шаг добавляется в любом месте инструкции, ограничений нет.
+ |Параметр можно указать как одной строкой, так и многострочно.",
+ "Прочее.Автоинструкции.ТекстовыеИнструкции.HTML");
+
+ Ванесса.ДобавитьШагВМассивТестов(
+ ВсеТесты,
+ "ЯДобавляюНумерованноеОглавлениеВАвтоинструкцию(ТабПарам)",
+ "ЯДобавляюНумерованноеОглавлениеВАвтоинструкцию",
+ "И я добавляю нумерованное оглавление в автоинструкцию" + Символы.ПС +
+ "|'ID якоря' |'Текст '|'ID якоря родителя'|" + Символы.ПС +
+ "|'#chapter1'|'Глава 1'|' '|" + Символы.ПС +
+ "|'#chapter2'|'Глава 2'|'#chapter1 '|",
+ "Добавляет секцию содержания с нумерацией в автоинструкцию.",
+ "Прочее.Автоинструкции.ТекстовыеИнструкции.HTML");
+
+ Ванесса.ДобавитьШагВМассивТестов(
+ ВсеТесты,
+ "ЯДобавляюНеНумерованноеОглавлениеВАвтоинструкцию(ТабПарам)",
+ "ЯДобавляюНеНумерованноеОглавлениеВАвтоинструкцию",
+ "И я добавляю не нумерованное оглавление в автоинструкцию" + Символы.ПС +
+ "|'ID якоря' |'Текст '|'ID якоря родителя'|" + Символы.ПС +
+ "|'#chapter1'|'Глава 1'|' '|" + Символы.ПС +
+ "|'#chapter2'|'Глава 2'|'#chapter1 '|",
+ "Добавляет секцию содержания без нумерации в автоинструкцию.",
+ "Прочее.Автоинструкции.ТекстовыеИнструкции.HTML");
Возврат ВсеТесты;
КонецФункции
@@ -112,11 +187,11 @@
///////////////////////////////////////////////////
&НаКлиенте
-//И я вставляю произвольный текст в автоинструкцию
-//@ЯВставляюПроизвольныйТекстВАвтоинструкцию()
-Функция ЯВставляюПроизвольныйТекстВАвтоинструкцию(Парам) Экспорт
+//И я добавляю произвольный текст в автоинструкцию
+//@ЯДобавляюПроизвольныйТекстВАвтоинструкцию()
+Функция ЯДобавляюПроизвольныйТекстВАвтоинструкцию(Парам) Экспорт
- Если ТипЗнч(Парам) <> Тип("Массив") И Парам.Количество() = 0 Тогда
+ Если ТипЗнч(Парам) <> Тип("Массив") Или (ТипЗнч(Парам) = Тип("Массив") И Парам.Количество()) = 0 Тогда
ВызватьИсключение НСтр("ru = 'Параметр текст не заполнен'");
@@ -125,13 +200,13 @@
КонецФункции
&НаКлиенте
-//И я вставляю изображение в автоинструкцию
-//@ЯВставляюИзображениеВАвтоинструкцию()
-Функция ЯВставляюИзображениеВАвтоинструкцию(Парам) Экспорт
+//И я добавляю изображение в автоинструкцию
+//@ЯДобавляюИзображениеВАвтоинструкцию()
+Функция ЯДобавляюИзображениеВАвтоинструкцию(Парам) Экспорт
- Если ТипЗнч(Парам) <> Тип("Массив") И Парам.Количество() = 0 Тогда
+ Если ТипЗнч(Парам) <> Тип("Массив") Или (ТипЗнч(Парам) = Тип("Массив") И Парам.Количество()) = 0 Тогда
- ВызватьИсключение НСтр("ru = 'Параметр текст не заполнен'");
+ ВызватьИсключение НСтр("ru = 'Параметры не заполнен'");
КонецЕсли;
@@ -142,7 +217,12 @@
ШаблонСтрокиMD = "[![%1](%2 ""%3"")](%4)";
// добавить проверки значений
- ПроизвольнаяСтрока = Ванесса._СтрШаблон(ШаблонСтрокиMD, ПринятыеПараметры[0].Кол2, ПринятыеПараметры[1].Кол2, ПринятыеПараметры[2].Кол2, ПринятыеПараметры[3].Кол2);
+ ПроизвольнаяСтрока = Ванесса._СтрШаблон(
+ ШаблонСтрокиMD,
+ ПринятыеПараметры[0].Кол2,
+ ПринятыеПараметры[1].Кол2,
+ ПринятыеПараметры[2].Кол2,
+ ПринятыеПараметры[3].Кол2);
Парам.Очистить();
Парам.Добавить(Новый Структура("Кол1", ПроизвольнаяСтрока));
@@ -150,15 +230,23 @@
// СоздаватьИнструкциюHTML
ИначеЕсли Не Ванесса.Объект.СоздаватьИнструкциюMarkdown И Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
- ШаблонСтрокиСсылкиHTML = "";
- ШаблонСтокиИзображения = "";
+ ДокументHTML = Новый ДокументHTML;
+ УзелBODY = ДокументHTML.СоздатьЭлемент("body");
+ ДокументHTML.ЭлементДокумента.ДобавитьДочерний(УзелBODY);
- СтрокаСсылки = Ванесса._СтрШаблон(ШаблонСтрокиСсылкиHTML, ПринятыеПараметры[3].Кол2);
- СтрокаИзображения = Ванесса._СтрШаблон(ШаблонСтокиИзображения, ПринятыеПараметры[1].Кол2, ПринятыеПараметры[0].Кол2, ПринятыеПараметры[2].Кол2);
+ УзелСсылка = ДокументHTML.СоздатьЭлемент("a");
+ УзелСсылка.УстановитьАтрибут("href", ПринятыеПараметры[3].Кол2);
+ УзелСсылка.УстановитьАтрибут("target", "_blank");
- Парам.Очистить();
- Парам.Добавить(Новый Структура("Кол1", СтрокаСсылки));
- Парам.Добавить(Новый Структура("Кол1", СтрокаИзображения));
+ УзелКартинка = ДокументHTML.СоздатьЭлемент("Img");
+ УзелКартинка.УстановитьАтрибут("src", ПринятыеПараметры[1].Кол2);
+ УзелКартинка.УстановитьАтрибут("alt", ПринятыеПараметры[0].Кол2);
+ УзелКартинка.УстановитьАтрибут("title", ПринятыеПараметры[2].Кол2);
+ УзелСсылка.ДобавитьДочерний(УзелКартинка);
+
+ УзелBODY.ДобавитьДочерний(УзелСсылка);
+
+ ЗаполнитьПереданныеВШагТаблицы(ДокументHTML);
Иначе
ВызватьИсключение "Не реализовано.";
@@ -167,15 +255,234 @@
КонецФункции
&НаКлиенте
-//И я вставляю разрыв страницы в автоинструкцию
-//@ЯВставляюРазрывСтраницыВАвтоинструкцию()
-Функция ЯВставляюРазрывСтраницыВАвтоинструкцию() Экспорт
+//И я добавляю разрыв страницы в автоинструкцию
+//@ЯДобавляюРазрывСтраницыВАвтоинструкцию()
+Функция ЯДобавляюРазрывСтраницыВАвтоинструкцию() Экспорт
+
+ // СоздаватьИнструкциюMarkdown
+ Если Ванесса.Объект.СоздаватьИнструкциюMarkdown И Не Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ ЗначениеПараметра = "";
+
+ // СоздаватьИнструкциюHTML
+ ИначеЕсли Не Ванесса.Объект.СоздаватьИнструкциюMarkdown И Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ ДокументHTML = Новый ДокументHTML;
+ УзелBODY = ДокументHTML.СоздатьЭлемент("body");
+ ДокументHTML.ЭлементДокумента.ДобавитьДочерний(УзелBODY);
+
+ НовыйУзел = ДокументHTML.СоздатьЭлемент("div");
+ НовыйУзел.УстановитьАтрибут("style", "page-break-after: always");
+ УзелBODY.ДобавитьДочерний(НовыйУзел);
+
+ ЗначениеПараметра = ДокументHTML;
+
+ Иначе
+ ВызватьИсключение "Не реализовано.";
+ КонецЕсли;
+
+ Парам = Новый Структура;
+ Парам.Вставить("Кол1", ЗначениеПараметра);
- ПереданныеВШагТаблицы = Новый Массив;
МассивПараметров = Новый Массив;
+ МассивПараметров.Добавить(Парам);
+
+ ПереданныеВШагТаблицы = Новый Массив;
+ ПереданныеВШагТаблицы.Добавить(МассивПараметров);
+
+ ТекущийШаг = Ванесса.ПолучитьСтруктуруТекущегоШагаИзМассивСценариевДляВыполнения();
+ ТекущийШаг.Вставить("ПереданныеВШагТаблицы", ПереданныеВШагТаблицы);
+
+КонецФункции
+
+&НаКлиенте
+//И я добавляю заголовок в автоинструкцию
+//@ЯДобавляюЗаголовокВАвтоинструкцию(ТабПарам)
+Функция ЯДобавляюЗаголовокВАвтоинструкцию(ТабПарам) Экспорт
+
+ Если ТипЗнч(ТабПарам) <> Тип("Массив") Или (ТипЗнч(ТабПарам) = Тип("Массив") И ТабПарам.Количество() = 0) Тогда
+
+ ВызватьИсключение НСтр("ru = 'Параметры не заполнены'");
+
+ КонецЕсли;
+
+ ПараметрЗаголовок = ТабПарам[0].Кол2;
+ Если ПустаяСтрока(ПараметрЗаголовок) Тогда
+
+ ВызватьИсключение НСтр("ru = 'Параметр ""Заголовок"" не заполнен'");
+
+ КонецЕсли;
+
+ ПараметрУровень = Число(ТабПарам[1].Кол2);
+ Если ПараметрУровень < 1 Или ПараметрУровень > 3 Тогда
+
+ ВызватьИсключение НСтр("ru = 'Параметр ""Уровень"" не заполнен'");
+
+ КонецЕсли;
+
+ // СоздаватьИнструкциюMarkdown
+ Если Ванесса.Объект.СоздаватьИнструкциюMarkdown И Не Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ ШаблонСтрокиMD = "%1 %2";
+ УровеньЗаголовка = "";
+ Для Уровень = 1 По ПараметрУровень Цикл
+ УровеньЗаголовка = УровеньЗаголовка + "#";
+ КонецЦикла;
+ ЗаголовокАвтоинструкции = Ванесса._СтрШаблон(ШаблонСтрокиMD, УровеньЗаголовка, ПараметрЗаголовок);
+
+ // СоздаватьИнструкциюHTML
+ ИначеЕсли Не Ванесса.Объект.СоздаватьИнструкциюMarkdown И Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ ШаблонИмяЭлемента = "h%1";
+ ИмяЭлемента = Ванесса._СтрШаблон(ШаблонИмяЭлемента, ПараметрУровень);
+
+ ДокументHTML = Новый ДокументHTML;
+ УзелBODY = ДокументHTML.СоздатьЭлемент("body");
+ ДокументHTML.ЭлементДокумента.ДобавитьДочерний(УзелBODY);
+
+ НовыйУзел = ДокументHTML.СоздатьЭлемент(ИмяЭлемента);
+ НовыйУзел.ТекстовоеСодержимое = ПараметрЗаголовок;
+ УзелBODY.ДобавитьДочерний(НовыйУзел);
+
+ ЗаголовокАвтоинструкции = ДокументHTML;
+
+ Иначе
+ ВызватьИсключение "Не реализовано.";
+ КонецЕсли;
+
+ ЗаполнитьПереданныеВШагТаблицы(ЗаголовокАвтоинструкции);
+
+КонецФункции
+
+&НаКлиенте
+//И я добавляю якорь в автоинструкцию
+//@ЯДобавляюЯкорьВАвтоинструкцию(ТабПарам)
+Функция ЯДобавляюЯкорьВАвтоинструкцию(ТабПарам) Экспорт
+
+ Если ТипЗнч(ТабПарам) <> Тип("Массив")
+ Или (ТипЗнч(ТабПарам) = Тип("Массив") И ТабПарам.Количество() = 0)
+ Или (ТипЗнч(ТабПарам) = Тип("Массив") И ПустаяСтрока(ТабПарам[0])) Тогда
+
+ ВызватьИсключение НСтр("ru = 'Параметр не заполнен'");
+
+ КонецЕсли;
+
+ ПараметрIDЯкоря = ТабПарам[0].Кол1;
+
+ // СоздаватьИнструкциюMarkdown
+ Если Ванесса.Объект.СоздаватьИнструкциюMarkdown И Не Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ ШаблонПараметра = "";
+ ЗначениеПараметра = Ванесса._СтрШаблон(ШаблонПараметра, ПараметрIDЯкоря);
+
+ // СоздаватьИнструкциюHTML
+ ИначеЕсли Не Ванесса.Объект.СоздаватьИнструкциюMarkdown И Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ ДокументHTML = Новый ДокументHTML;
+ УзелBODY = ДокументHTML.СоздатьЭлемент("body");
+ ДокументHTML.ЭлементДокумента.ДобавитьДочерний(УзелBODY);
+
+ НовыйУзел = ДокументHTML.СоздатьЭлемент("a");
+ НовыйУзел.УстановитьАтрибут("id", ПараметрIDЯкоря);
+ УзелBODY.ДобавитьДочерний(НовыйУзел);
+
+ ЗначениеПараметра = ДокументHTML;
+
+ Иначе
+ ВызватьИсключение "Не реализовано.";
+ КонецЕсли;
+
+ ЗаполнитьПереданныеВШагТаблицы(ЗначениеПараметра);
+
+КонецФункции
+
+&НаКлиенте
+//И я добавляю гиперссылку в автоинструкцию
+//@ЯДобавляюГиперссылкуВАвтоинструкцию(ТабПарам)
+Функция ЯДобавляюГиперссылкуВАвтоинструкцию(ТабПарам) Экспорт
+
+ Если ТипЗнч(ТабПарам) <> Тип("Массив")
+ Или (ТипЗнч(ТабПарам) = Тип("Массив") И ТабПарам.Количество() = 0) Тогда
+
+ ВызватьИсключение НСтр("ru = 'Параметры не заполнены'");
+
+ КонецЕсли;
+
+ ПараметрСсылка = ТабПарам[0].Кол2;
+ ПараметрТекст = ТабПарам[1].Кол2;
+
+ // СоздаватьИнструкциюMarkdown
+ Если Ванесса.Объект.СоздаватьИнструкциюMarkdown И Не Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ ШаблонПараметра = " * %2";
+ ЗначениеПараметра = Ванесса._СтрШаблон(ШаблонПараметра, ПараметрСсылка, ПараметрТекст);
+
+ // СоздаватьИнструкциюHTML
+ ИначеЕсли Не Ванесса.Объект.СоздаватьИнструкциюMarkdown И Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ ДокументHTML = Новый ДокументHTML;
+ УзелBODY = ДокументHTML.СоздатьЭлемент("body");
+ ДокументHTML.ЭлементДокумента.ДобавитьДочерний(УзелBODY);
+
+ УзелDiv = ДокументHTML.СоздатьЭлемент("div");
+ ДокументHTML.ЭлементДокумента.ДобавитьДочерний(УзелDiv);
+
+ ЗначениеСтиля = "margin-bottom: 10px; color:#1068bf; border-bottom: 1px solid #1068bf; padding-bottom: 2px;'";
+
+ НовыйУзел = ДокументHTML.СоздатьЭлемент("a");
+ НовыйУзел.УстановитьАтрибут("style", ЗначениеСтиля);
+ НовыйУзел.УстановитьАтрибут("href", ПараметрСсылка);
+
+ НовыйУзел.ТекстовоеСодержимое = ПараметрТекст;
+
+ УзелDiv.ДобавитьДочерний(НовыйУзел);
+
+ ЗначениеПараметра = ДокументHTML;
+
+ Иначе
+ ВызватьИсключение "Не реализовано.";
+ КонецЕсли;
+
+ ЗаполнитьПереданныеВШагТаблицы(ЗначениеПараметра);
+
+КонецФункции
+
+&НаКлиенте
+//И я добавляю горизонтальную линию в автоинструкцию
+//@ЯДобавляюГоризонтальнуюЛиниюВАвтоинструкцию()
+Функция ЯДобавляюГоризонтальнуюЛиниюВАвтоинструкцию() Экспорт
+
+ // СоздаватьИнструкциюMarkdown
+ Если Ванесса.Объект.СоздаватьИнструкциюMarkdown И Не Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ ЗначениеПараметра = "***";
+
+ // СоздаватьИнструкциюHTML
+ ИначеЕсли Не Ванесса.Объект.СоздаватьИнструкциюMarkdown И Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ ДокументHTML = Новый ДокументHTML;
+ УзелBODY = ДокументHTML.СоздатьЭлемент("body");
+ ДокументHTML.ЭлементДокумента.ДобавитьДочерний(УзелBODY);
+
+ ЗначениеСтиля = "border-bottom: medium solid; margin: 20px 0px";
+
+ УзелБлок = ДокументHTML.СоздатьЭлемент("div");
+ УзелБлок.УстановитьАтрибут("style", ЗначениеСтиля);
+ УзелBODY.ДобавитьДочерний(УзелБлок);
+
+ ЗначениеПараметра = ДокументHTML;
+
+ Иначе
+ ВызватьИсключение "Не реализовано.";
+ КонецЕсли;
+
Парам = Новый Структура;
- Парам.Вставить("Кол1", "");
+ Парам.Вставить("Кол1", ЗначениеПараметра);
+
+ МассивПараметров = Новый Массив;
МассивПараметров.Добавить(Парам);
+
+ ПереданныеВШагТаблицы = Новый Массив;
ПереданныеВШагТаблицы.Добавить(МассивПараметров);
ТекущийШаг = Ванесса.ПолучитьСтруктуруТекущегоШагаИзМассивСценариевДляВыполнения();
@@ -183,3 +490,256 @@
КонецФункции
+&НаКлиенте
+//И я добавляю стили в автоинструкцию
+//@ЯДобавляюСтилиВАвтоинструкцию(ТабПарам)
+Функция ЯДобавляюСтилиВАвтоинструкцию(ТабПарам) Экспорт
+
+ Если ТипЗнч(ТабПарам) <> Тип("Массив")
+ Или (ТипЗнч(ТабПарам) = Тип("Массив") И ТабПарам.Количество() = 0) Тогда
+
+ ВызватьИсключение НСтр("ru = 'Параметры не заполнены'");
+
+ КонецЕсли;
+
+ // СоздаватьИнструкциюHTML
+ Если Не Ванесса.Объект.СоздаватьИнструкциюMarkdown И Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ ДокументHTML = Новый ДокументHTML;
+ УзелHEAD = ДокументHTML.СоздатьЭлемент("head");
+
+ УзелSTYLE = ДокументHTML.СоздатьЭлемент("style");
+ УзелSTYLE.УстановитьАтрибут("type", "text/css");
+
+ ТекстовоеСодержимое = "";
+ ШаблонСтрокиСтилей = "%1 %2";
+ Для Каждого Параметр Из ТабПарам Цикл
+ ТекстовоеСодержимое = Ванесса._СтрШаблон(ШаблонСтрокиСтилей, ТекстовоеСодержимое, Параметр.Кол1);
+ КонецЦикла;
+ УзелSTYLE.ТекстовоеСодержимое = ТекстовоеСодержимое;
+
+ УзелHEAD.ДобавитьДочерний(УзелSTYLE);
+ ДокументHTML.ДобавитьДочерний(УзелHEAD);
+
+ ЗаполнитьПереданныеВШагТаблицы(ДокументHTML);
+
+ КонецЕсли;
+
+КонецФункции
+
+&НаКлиенте
+//И я добавляю нумерованное оглавление в автоинструкцию
+//@ЯДобавляюНумерованноеОглавлениеВАвтоинструкцию(ТабПарам)
+Функция ЯДобавляюНумерованноеОглавлениеВАвтоинструкцию(ТабПарам) Экспорт
+
+ Если ТипЗнч(ТабПарам) <> Тип("Массив")
+ Или (ТипЗнч(ТабПарам) = Тип("Массив") И ТабПарам.Количество() <= 1 ) Тогда
+
+ ВызватьИсключение НСтр("ru = 'Параметры не заполнены'");
+
+ КонецЕсли;
+
+ ЗначениеПараметра = Неопределено;
+
+ // СоздаватьИнструкциюMarkdown
+ Если Ванесса.Объект.СоздаватьИнструкциюMarkdown И Не Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ Оглавление = "
+ | ## Оглавление
+ |
+ |***
+ |
+ |";
+
+ ШаблонСтроки = "%1 %2. %4";
+
+ // Начинаем с 1 т.к. первая строка это заголовки.
+ Для Индекс = 1 По ТабПарам.ВГраница() Цикл
+
+ СтрокаПараметров = ТабПарам[Индекс];
+
+ ПараметрID = СокрЛП(СтрокаПараметров.Кол1);
+ ПараметрТекст = СокрЛП(СтрокаПараметров.Кол2);
+ ПараметрРодитель = СокрЛП(СтрокаПараметров.Кол3);
+
+ Если Не ПустаяСтрока(ПараметрРодитель) Тогда
+ СтрокаОглавления = Ванесса._СтрШаблон(ШаблонСтроки, " ", Индекс, ПараметрID, ПараметрТекст);
+ Иначе
+ СтрокаОглавления = Ванесса._СтрШаблон(ШаблонСтроки, "", Индекс, ПараметрID, ПараметрТекст);
+ КонецЕсли;
+
+ Оглавление = Оглавление + Символы.ПС + СтрокаОглавления;
+
+ КонецЦикла;
+
+ ЗаполнитьПереданныеВШагТаблицы(Оглавление);
+
+ // СоздаватьИнструкциюHTML
+ ИначеЕсли Не Ванесса.Объект.СоздаватьИнструкциюMarkdown И Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ СоздатьОглавление(ТабПарам, Истина, ЗначениеПараметра);
+ ЗаполнитьПереданныеВШагТаблицы(ЗначениеПараметра);
+
+ Иначе
+ ВызватьИсключение "Не реализовано.";
+ КонецЕсли;
+
+КонецФункции
+
+&НаКлиенте
+//И я добавляю не нумерованное оглавление в автоинструкцию
+//@ЯДобавляюНеНумерованноеОглавлениеВАвтоинструкцию(ТабПарам)
+Функция ЯДобавляюНеНумерованноеОглавлениеВАвтоинструкцию(ТабПарам) Экспорт
+
+ Если ТипЗнч(ТабПарам) <> Тип("Массив")
+ Или (ТипЗнч(ТабПарам) = Тип("Массив") И ТабПарам.Количество() <= 1 ) Тогда
+
+ ВызватьИсключение НСтр("ru = 'Параметры не заполнены'");
+
+ КонецЕсли;
+
+ ЗначениеПараметра = "";
+
+ // СоздаватьИнструкциюMarkdown
+ Если Ванесса.Объект.СоздаватьИнструкциюMarkdown И Не Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ Оглавление = "
+ | ## Оглавление
+ |
+ |***
+ |
+ |";
+
+ ШаблонСтроки = "%1 * %3";
+
+ // Начинаем с 1 т.к. первая строка это заголовки.
+ Для Индекс = 1 По ТабПарам.ВГраница() Цикл
+
+ СтрокаПараметров = ТабПарам[Индекс];
+
+ ПараметрID = СокрЛП(СтрокаПараметров.Кол1);
+ ПараметрТекст = СокрЛП(СтрокаПараметров.Кол2);
+ ПараметрРодитель = СокрЛП(СтрокаПараметров.Кол3);
+
+ Если Не ПустаяСтрока(ПараметрРодитель) Тогда
+ СтрокаОглавления = Ванесса._СтрШаблон(ШаблонСтроки, " ", ПараметрID, ПараметрТекст);
+ Иначе
+ СтрокаОглавления = Ванесса._СтрШаблон(ШаблонСтроки, "", ПараметрID, ПараметрТекст);
+ КонецЕсли;
+
+ Оглавление = Оглавление + Символы.ПС + СтрокаОглавления;
+
+ КонецЦикла;
+
+ ЗаполнитьПереданныеВШагТаблицы(Оглавление);
+
+ // СоздаватьИнструкциюHTML
+ ИначеЕсли Не Ванесса.Объект.СоздаватьИнструкциюMarkdown И Ванесса.Объект.СоздаватьИнструкциюHTML Тогда
+
+ СоздатьОглавление(ТабПарам, Ложь, ЗначениеПараметра);
+ ЗаполнитьПереданныеВШагТаблицы(ЗначениеПараметра);
+
+ Иначе
+ ВызватьИсключение "Не реализовано.";
+ КонецЕсли;
+
+КонецФункции
+
+#Область СлужебныеПроцедурыИФункции
+
+&НаКлиенте
+Процедура ЗаполнитьПереданныеВШагТаблицы(ЗначениеПараметра)
+
+ ТекущийШаг = Ванесса.ПолучитьСтруктуруТекущегоШагаИзМассивСценариевДляВыполнения();
+ ПереданныеВШагТаблицы = ТекущийШаг.ПереданныеВШагТаблицы[0];
+ ПереданныеВШагТаблицы.Очистить();
+ ПереданныеВШагТаблицы.Добавить(Новый Структура("Кол1", ЗначениеПараметра));
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура СоздатьОглавление(ТабПарам, НумерованныйСписок, ЗначениеПараметра)
+
+ ДокументHTML = Новый ДокументHTML;
+ УзелBODY = ДокументHTML.СоздатьЭлемент("body");
+ ДокументHTML.ЭлементДокумента.ДобавитьДочерний(УзелBODY);
+
+ УзелСекция = ДокументHTML.СоздатьЭлемент("nav");
+ УзелСекция.УстановитьАтрибут("class", "toc-wrapper");
+
+ УзелСодержание = ДокументHTML.СоздатьЭлемент("h1");
+ УзелСодержание.ТекстовоеСодержимое = "Содержание";
+
+ УзелСекция.ДобавитьДочерний(УзелСодержание);
+
+ Если НумерованныйСписок Тогда
+ УзелСписокСодержания = ДокументHTML.СоздатьЭлемент("ol");
+ УзелСписокСодержания.УстановитьАтрибут("class", "toc_ol");
+ Иначе
+ УзелСписокСодержания = ДокументHTML.СоздатьЭлемент("ul");
+ УзелСписокСодержания.УстановитьАтрибут("class", "toc_ul");
+ КонецЕсли;
+
+ // Начинаем с 1 т.к. первая строка это заголовки.
+ Для Индекс = 1 По ТабПарам.ВГраница() Цикл
+
+ СтрокаОглавления = ТабПарам[Индекс];
+
+ ПараметрID = СокрЛП(СтрокаОглавления.Кол1);
+ ПараметрТекст = СокрЛП(СтрокаОглавления.Кол2);
+ ПараметрРодитель = СокрЛП(СтрокаОглавления.Кол3);
+ IDЭлемента = Сред(ПараметрID, 2, СтрДлина(ПараметрID));
+ IDРодителя = Сред(ПараметрРодитель, 2, СтрДлина(ПараметрРодитель));
+ УзелРодитель = Неопределено;
+
+ Если Не ПустаяСтрока(IDРодителя) Тогда
+ УзелРодитель = ДокументHTML.ПолучитьЭлементПоИдентификатору(IDРодителя);
+ Если УзелРодитель <> Неопределено Тогда
+ УзелВложенныйСписок = Неопределено;
+ Для Каждого ДочернийУзел Из УзелРодитель.ДочерниеУзлы Цикл
+ Если ДочернийУзел.ИмяУзла = "ol" Или ДочернийУзел.ИмяУзла = "ul" Тогда
+ УзелВложенныйСписок = ДочернийУзел;
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+ Если УзелВложенныйСписок = Неопределено Тогда
+ Если НумерованныйСписок Тогда
+ УзелВложенныйСписок = ДокументHTML.СоздатьЭлемент("ol");
+ Иначе
+ УзелВложенныйСписок = ДокументHTML.СоздатьЭлемент("ul");
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ УзелЭлементСодержания = ДокументHTML.СоздатьЭлемент("li");
+ УзелЭлементСодержания.УстановитьАтрибут("id", IDЭлемента);
+ УзелЭлементСодержания.УстановитьАтрибутИдентификатор("id", Истина);
+
+ Если Не НумерованныйСписок Тогда
+ УзелЭлементСодержания.УстановитьАтрибут("content", "");
+ КонецЕсли;
+
+ НовыйУзел = ДокументHTML.СоздатьЭлемент("a");
+ НовыйУзел.УстановитьАтрибут("href", ПараметрID);
+ НовыйУзел.ТекстовоеСодержимое = ПараметрТекст;
+
+ УзелЭлементСодержания.ДобавитьДочерний(НовыйУзел);
+
+ Если УзелРодитель <> Неопределено И УзелВложенныйСписок <> Неопределено Тогда
+ УзелВложенныйСписок.ДобавитьДочерний(УзелЭлементСодержания);
+ УзелРодитель.ДобавитьДочерний(УзелВложенныйСписок);
+ Иначе
+ УзелСписокСодержания.ДобавитьДочерний(УзелЭлементСодержания);
+ КонецЕсли;
+
+ КонецЦикла;
+
+ УзелСекция.ДобавитьДочерний(УзелСписокСодержания);
+ УзелBODY.ДобавитьДочерний(УзелСекция);
+
+ ЗначениеПараметра = ДокументHTML;
+
+КонецПроцедуры
+
+#КонецОбласти
\ No newline at end of file