Исполнение кода с функциями и процедурами в пользовательском режиме


Среди множества Консолей кода на Инфостарте так и не нашёл консоль, которая позволит не просто выполнить фрагмент кода, но и описать свои функции и процедуры и ими по необходимости воспользоваться. Т. Е. Пишем не стесняясь, как бы мы писали в модуле обработки.

Вставляем (пишем) код, жмём кнопку "выполнить" код исполняется (или выдаёт ошибку =)).

Обычные формы, никаких клиент-серверных заморочек.

*Добавил Версию с УФ и ОФ (21.11.2024)

Писалось и отлаживалось на УТ 10.3 (10.3.45.3). Платформа 1С:Предприятие 8.3 (8.3.10.2561)

Активно используется vbscript.regexp так что только Windows. Точно не сработает, если в функциях или процедурах будет больше 10 параметров =)

Может, кому-нибудь будет полезна. Если будет обработка шалить, то прошу в комментарии кидать код который не исполняется — буду допиливать. Конструктивная критика ну и похвалы приветствуются! 

8 Comments

  1. VmvLer

    плохо искали

    типовые обработки «ЗагрузкаДанныхИзТабличногоДокумента», «УниверсальныйПодборИОбработкаОбъектов» и под обычные и под управляемые формы позволяют выполнять произвольный код, причем без скриптов.

    Само собой для шаманства необходимы полные права.

    Reply
  2. dvsidelnikov

    (1) Туда можно вставить свою функцию/процедуру и запустить её?! Я достаточно плотно пользовался обработкой ЗагрузкаДанныхИзТабличногоДокумента и такой возможности не припоминаю.

    Reply
  3. Boneman

    (2) да любая обработка с произвольным алгоритмом подойдет.

    Я всегда пользовался универсальным подбором и обработкой объектов, там вставлял в произвольный алгоритм какой нужно код и получал тоже самое.

    Просто там это вспомогательная функция, а ты сделал самостоятельную обработку.

    Почему бы и нет. Может быть кому-то и окажется полезным.

    Но если уж делать консоль, то сделал бы и для УФ тоже. Там с раскраской кода поинтересней, да и клиент серверное взаимодействие тоже.

    Reply
  4. dvsidelnikov

    (3) давайте попробуем на пальцах. Может я плохо сформулировал особенность обработки или у меня такой маленький кругозор в этом направлении.

    Вот такой код будет работать в перечисленных вами обработках?!

    Функция ПоискПоРегулярномуВыражению(РегулярноеВыражение, Текст, IgnoreCase = Ложь, Global = Истина, Multiline = Истина)
    Экспорт МассивРезультатов = Новый Массив;
    RegExp = Новый COMОбъект(«VBScript.RegExp»);
    
    RegExp.IgnoreCase = IgnoreCase; //Игнорировать регистр
    RegExp.Global = Global; //Поиск всех вхождений шаблона
    RegExp.MultiLine = Multiline; //Многострочный режим
    
    RegExp.Pattern = РегулярноеВыражение;
    
    Matches=RegExp.Execute(Текст);
    ЧислоВхождений=Matches.Count();
    Если ЧислоВхождений>0 Тогда
    Для к = 0 По ЧислоВхождений-1 Цикл
    MatchesItem = Matches.Item(к);
    РезультатПоиска = Новый Структура(«Совпадение, МассивСубСовпадений»,MatchesItem.Value);
    ЧислоСубСовпадений = MatchesItem.SubMatches.Count();
    Если ЧислоСубСовпадений>0 Тогда
    РезультатПоиска.МассивСубСовпадений = Новый Массив;
    Для л = 0 По ЧислоСубСовпадений-1 Цикл
    SubMatchesItem = MatchesItem.SubMatches.Item(л);
    РезультатПоиска.МассивСубСовпадений.Добавить(SubMatchesItem);
    КонецЦикла;
    КонецЕсли;
    МассивРезультатов.Добавить(РезультатПоиска);
    КонецЦикла;
    КонецЕсли;
    Возврат МассивРезультатов;
    КонецФункции
    
    Процедура РазобратьПоСловам(Текст)
    МассивРезультатов = ПоискПоРегулярномуВыражению(«[а-я]*», Текст, истина);
    Для каждого Результат из МассивРезультатов Цикл
    Сообщить(Результат.Совпадение);
    КонецЦикла;
    КонецПроцедуры
    
    РазобратьПоСловам(«шла Саша по шоссе и сосала сушку»);
    

    Показать

    Reply
  5. Boneman

    (4)

    Вот такой код будет работать в перечисленных вами обработках?!

    нет, не будет.

    По крайней мере сходу видится 2 причины. Одинарные кавычки, и объявление функций и процедур, которые в обработках обязательно получатся внутри какой-то другой инициирующей функции.

    С другой стороны, вроде бы и незачем сложные целые модули делать, в пользовательских режимах. Тут проще накидать обработку.

    На практике произвольные алгоритмы часть для запуска каких примитивных вещей.

    а вообще да

    Может я плохо сформулировал НоуХаучика обработки

    об этом упомянуто, но подробностей нет.

    Распиши более красочно, о том как возникает ошибка последовательности операторов. Потому что читатель видит Произвольный алгоритм, который он использует раз в год под расход для того чтобы ОбновитьНумерациюОбъектов — вот и все.

    Ноу хау твоего, не заметно.

    Reply
  6. dvsidelnikov

    (5) Спасибо. Подправил описание. Надеюсь так понятней стало.

    Reply
  7. zekrus

    Доброе утро!

    Тема весьма актуальная, учитывая тренд использования веб технологий.

    А под управляемое приложение не пробовали запустить?

    П.С. скоро конфигуратор перейдет полностью в браузер — вопрос времени.

    (все хорошо воспитанные вендоры уже там).

    С уважением

    Reply
  8. dvsidelnikov

    (7) Добрый вечер. Сделано на уф.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *