Снегопат

Обсуждение Снегопата
Текущее время: 20 апр 2024, 14:07

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 83 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 9  След.
Автор Сообщение
СообщениеДобавлено: 05 дек 2011, 15:34 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Нет. События нет. Есть метод - parseTemplateString.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 дек 2011, 22:09 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
artbear писал(а):
orefkov писал(а):
А не желаете ли тогда в Снегопате события "обработка текста шаблона" при вставке шаблонов?
Ну, чтобы скрипт на обычных шаблонах мог отрабатывать?

Вроде уже есть какое-то событие Снегопата при вставке шаблонов?


А я не нашел, есть только метод parseTemplate(), который запускает стандартную интерпретацию шаблонов, я его и использую.

upd. Просмотрел, что Александр уже ответил.

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 дек 2011, 23:49 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Есть вот такая примерно мысль - сделать в шаблонах что-то типа как PHP, только на jscript.
В-принципе несложно должно быть.
Т.е. примерно такой шаблон
Код:
// Создание таблицы значений
<?js
var tzName = %%<?"Укажите имя переменной">%%
?>
<?= tzName? > = Новый ТаблицаЗначений;
// Добавляем колонки
<?js
var colCount = 0 + %%<?"Укажите количество колонок">%%
for(var i = 0; i < colCount; i++)
   echo(tzName + ".Колонки.Добавить();")
?>

преобразуется в такой текст скрипта:
Код:
echo("// Создание таблицы значений")
var tzName = snegopat.parseTemplateString("<?\"Укажите имя переменной\">")
echo(tzName)
echo(" = Новый ТаблицаЗначений;\n// Добавляем колонки\n")
var colCount = 0 + snegopat.parseTemplateString("<?\"Укажите количество колонок\">")
for(var i = 0; i < colCount; i++)
   echo(tzName + ".Колонки.Добавить();")

и далее этот текст выполняется в текущем скрипте через eval. В своем скрипте реализовать функцию
Код:
function echo(text) {resultText += text}

, которая добавляет текст к выводу.
Таким образом, все что находится в <?js ... ?> - остается как есть, скриптом.
Все что в <?js ... ?> и в %%...%% - преобразуется в parseTemplateString,
Все что вне <?js ... ?> - преобразуется в echo(parseTemplateString("текст заключенный в кавычки"))
Все что в <?= ... ?> - преобразуется в echo(текстКакЕсть)
Ну и помимо echo еще можно всяких сервис-функций в скрипте накидать для шаблонов...
Единственная засада - не будет работать такой вариант:
Код:
<?"Укажите имя переменной">
<?js
.....
?>
<?"Укажите имя переменной">

Если в обычном шаблоне "Укажите имя переменной" запросит только один раз, и подставит введенный текст и во второй вставке, то в варианте с обработкой скриптов текст разобъется на два несвязанных parseTemplateString, и будет второй раз запрашивать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 дек 2011, 07:05 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
Сложностей в реализации такого не вижу, ...но и потребности тоже, если честно. По крайней мере, сейчас.

Для таких сложных навороченных шаблонов, пожалуй, проще использовать непосредственно макросы в отдельных специализированных скриптах, также реализовав библиотеку с функциями-хелперами.

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 дек 2011, 10:26 
Не в сети

Зарегистрирован: 24 авг 2011, 15:32
Сообщения: 722
Мне тоже кажется, что так будет слишком заморочено. Кто будет писать такие шаблоны? Те же скриптописатели?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 дек 2011, 13:17 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
JohnyDeath, я исправил с отступами один баг, по возможности обновись, посмотри, пожалуйста, воспроизводится ли случай твоей ошибки.

При проверке также обрати внимание:
1. как установлены отступы в редакторе кода: пробелом или табуляцией?
2. как установлены отступы в шаблоне, на котором воспроизводится ошибка: пробелами или табуляцией?

Есть подозрение, что ошибка возникает только в случае, когда в модуле для отступов используются разные символы или в модуле стиль отступов перемешан: есть отступы пробелами, есть отступы табуляцией.

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 дек 2011, 13:59 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
В 1.1.3.1 добавлено событие snegopat::onProcessTemplate
В скрипте вписал пример, как к нему подключиться.
Событие вызывается уже после того, как 1С обработала текст на предмет управляющих конструкций, но до того, как он вставлен в редактор.
Так что можно подправить текст, обработать свои вставки.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 дек 2011, 14:17 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
Спасибо. Надо подумать теперь, что делать с тем, что событие возникает уже после отработки управляющих конструкций, а значит конструкция установки курсора уже будет удалена из шаблона.

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 дек 2011, 14:20 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Нет, эта единственная конструкция, которая еще остается :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 дек 2011, 14:25 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
Тогда отлично :)

А есть техническая возможность отлавливать событие так, чтобы типовой парсинг не выполнялся? Т.е. управляющие конструкции не заменялись?
Если да, то попрошу реализовать когда-нибудь в будущем. Есть идеи по более удобной организации ввода параметров подстановки, но реализовать ее можно на базе штатного механизма только занимаясь парсингом самостоятельно.

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 83 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 9  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB