Идея реализовать подобную возможность пришла ко мне в ходе освоения замечательного языка Pythоn.. и изначально я думал написать транслятор 1С <=> Python, но бесшовного способа вызывать код Python'а из 1С и получать результаты вычислений обратно - никак не находилось (кстати, если кто видел удачную интеграцию 1С и Python - поделитесь наработками или ссылками, может быть тоже получится что интересное)..
Несколько позже я поближе познакомился на githab'е 1C_Script и его расширениями языка - что позволяло импортировать внешние библиотеки.. и вроде бы всё замечательно, но всё же меня никак не покидала мысль - что 1С'у всё же было-бы гораздо больше пользы, если добавить в язык "удобностей", дабы писать в ООП- и функциональной парадигме ..
Я стал экспериментировать и искать способ, как бы приспособить то, что есть в платформе под ООП подход и обнаружил, что в качестве классов удобнее всего использовать обычные формы (не открывая их). Через некоторое время обнаруженные приёмы помогли мне отрефакторить сложную обработку.. Потом заказчик захотел запускать алгоритм в фоновом задании - а формы в таком контексте недоступны :((
Замена нашлась в лице модуля Обработок.. все было переделано и запущенно (в фоновых заданиях) - код практически без переделок был перенесен из модулей форм в модули "пустых" обработок (у них, кроме, соответственно, модуля, ничего и нет).
После я несколько раз пытался сделать заметку о том, что у меня получилось - но конец года порадовал кучей проблем и полным отсутствием свободного времени.. однако, я продолжал использовать найденный подход - и он мне всё больше нравился.. Наконец, достаточно освоившись с эмуляцией ООП, захотелось попробовать сделать собственные функции-объекты..ведь если бы функции были бы объектами - т.е. их можно было бы присваивать переменным - и умели бы принимать в качестве аргуметов - другие функции - то было бы совсем интересно (до этого меня совершенно очаровал python - замечательный мультипарадигменный язык, попробовав который - хочеться делать подобные безобразия постоянно)..
Ну и - долго ли, коротко ли - на этих праздниках выпало время, которое я потратил на реализацию своих грязных фантазий :))
Представляю Вам первую в мире консоль, умеющую превращать описанные в ней функции - в функции-объекты высшего порядка - и, таким образом, прокладывающую для программистов 1С небольшую тропинку в чуднОй мир приёмов из функционального программирования..
Но даже если Вы не интересуетесь функциональным программированием - Вам наверняка понравится возможность определять функции непосредственно в консоли кода.. Насколько мне известно - это первая консоль такого рода.. все известные мне реализации - попытка вынести алгоритмы в отдельные сущности - страдали существенным недостатком - область видимости у этих алгоритмов была та же самая, что и у основного потока исполнения.. в этой обработке - у каждой функции своя область видимости переменных - но с несколькими предопределенными переменными и функциями (методами самого объекта-функции).. тем не менее - это куда лучше, чем вариант с общей областью видимости..
PS Конечно, написанное за 2 дня приложение с такими извращениями - глюкавый прототип.. но он работает, судя по примерам..
Единственное - я не долго заморачивался с регулярными выражениями, поэтому - в параметрах вызываемых функций не указывайте вызов других функций.. предварительно - присвойте результат функции переменной и её подставляйте в параметры следующей функции - тогда должно всё работать..
Жду отзывов и надеюсь на интерес. Что думаете, коллеги?
В общем, прошу доната ;) если будет отклик - попробую добавить возможность писать вызовы функций в параметрах функций и подумать над (1) возможностью описания функций внутри функций и (2) как добавить возможности эмуляции "замыканий"... возможно, поработать над синтаксическим сахаром - после python создание массивов / хешированных списков так, как это сделано в 1С - кажется в некотором роде мазохизмом, знаете :)