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
ЧтениеПараметровПриОткрытии
СерверныеВызовы
ПолучениеКоординатПоОбласти
+
РедакторСтилейHTML
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 @@ + + +
+ + РедакторСтилейHTML + + + ru + Редактор стилей HTML + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + + +
+
\ 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 @@ + +
+ + + + + + + ПриОткрытии + ПриСозданииНаСервере + + + + СтилиHTML + None + true + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Стили HTML</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Записать и закрыть</v8:content> + </v8:item> + + + + ru + Записать и закрыть + + + ЗаписатьИЗакрыть + + + + + + xs:string + + 0 + Variable + + + + +
\ 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 ПроверкаПереводаЭлементовФормы + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Открыть редактор стилей HTML</v8:content> + </v8:item> + + + + 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