Иногда бывает лень ради трех-пяти строчек кода создавать обработку. Да и хранить такой программный мусор тяжело (у меня отдельная папка, но как показывает практика, когда таких штук с полсотни, то быстрее написать новую обработку, чем отыскивать, то, что может подойти). А вообще еще позавчера я и не думал, что 7-ка такое умеет. Вот думал 8-ка молодец, она может, а на семерке, таже если строчку кода хочешь куда-то встроить или изменить программно - фиг тебе!
Но не все так оказалось плохо как казалось. Столкнувшись с необходимостью динамически менять именно код а не переменные походил по Инфостарту (и не только) изрядно, но все редакторы и технологии редактирования кода сделаны для восьмерки. Например //infostart.ru/public/62374/ и еще какие-то. Но для семерки не нашел НИЧЕГО.
Опять же, не утверждаю, что ничего подобного нет, но встречается не часто. Короче показалось мне, что быстрее написать самому, чем найти. Ну а когда решил свою маленькую проблему, подумал, что неплохо было бы те принципы, которые использовал оформить чем-то полезным. Так и родилась эта публикация.
Суть проста. В форме видим поле - в поле пишем код. Нажимаем "Исполнить" видим либо ругательства в окне сообщений, либо результат работы. Исполняем хоть одну команду хоть сто одну.
Пдробности:
1. Код исполняется либо непосредственно как одна процедура без названия (процедура в этом случае создается по умолчанию) либо делим его на процедуры / функции как обычно. В последнем случае не забываем ставить соответствующую галочку на форме и помним, что первой запустится последняя по счету процедура.
2. Если хотим большего подключаем текстовую библиотеку. Это обычный текстовый файл с кодом процедур / функций.
Используем его так как будто мы все это уже написали сверху нашего поля с кодом.
3. Так как не 8-ка все таки, то я не смог уйти от связки двух файлов для работы данного редактора.
Как говорится один бьет, а другой - держит. Поэтому избрал более простой и логичной пару двух ert, а не ert с текстовым.
Файл TextCode.ert и есть собственно редактор. Открываем его как внешний отчет в режиме Предприятие пишем код и запускаем.
Файл RunCode.ert должен просто находиться рядом с TextCode.ert (в одной папке).
Так как все это рассчитано на программистов, думаю Вы легко, в случае необходимости, разберетесь как эту пару встроить в конфигурацию.
Сейчас путь к RunCode.ert берется именно в каталоге внешней обработки TextCode. Если она перестанет быть внешней,
то и путь к RunCode.ert нужно указать по другому.
Текстовый файл в комплекте поставки просто библиотека на которой я тестировал как загружаются и работают библиотеки.
Там две функции не подавляющие своей сложностью.
P.S. Для людей которым просто захочется поиграться в программистов БОЛЬШОЙ совет и предупреждение "Если Вы своим кодом, а точнее бездумным его написанием и исполнением, запортите свою базу я никакой ответственности за последствия ВАШИХ действий НЕ НЕСУ!!!" Исполняется только то что пишется, а написать теперь выходит может кто угодно...
Версия 2.
На продолжение и развитие данной публикации меня подтолкнули советы и комментарии к предыдущей версии редактора, а также собственный опыт использования данной разработки. Особая благодарность пользователям Арчибальд
http://forum.infostart.ru/user/46936/ и Warenic http://forum.infostart.ru/user/36483/.
Вторая версия состоит всего из одного файла ert (победил таки неспособность семерки работать с двоичными файлами) и отличается от предыдущей наличием таблицы подстановок куда можно вводить как базовые типы данных, так и объекты метаданных (справочники, документы, перечисления и константы) и назначать для них переменные. Таблица подстановок редактируется как кнопками Добавить/Удалить так и непосредственно двойным кликом по ячейке.
Таблица подстановок может содержать как базовые так и агрегатные типы данных. Правила включения их в модуль конечного исполнения таковы:
Если код разделен на процедуры и функции то переменные таблицы объявляются как глобальные (в самом начале модуля) и определяются (получают значения) в конце вне процедур и функций. Т.е. могут использоваться в любой из процедур.
Если в коде отсутствует такое деление, то определение переменных располагается после обявления процедуры по умолчанию, перед тем кодом, который будет написан в поле.
Особое замечание. Если при определении значения переменной а необходимо знать значение переменной b то в таблице определение b должно находиться раньше.
То есть если а = b+c, b=с-3, с=8 то в таблице значений мы сначала определяем с, затем b и в последнюю очередь a, так как построитель кода набивает их в порядке следования в таблице подстановк. Вроде бы очевидно, но я сам с этим однажды тупанул:)
Выражаю благодарность всем пользователям, принявшим участие в обсуждении и оценке проекта, без Ваших отзывов и замечаний, вторая версия редактора просто бы не случилась.