Хотелка: Сервис.ПолучитьМодульОбработки(<ИмяОбработки>)

Автор Пиит, 02 апреля 2024, 13:02

« назад - далее »

Forum123

Цитата: АЛьФ от 02 апреля 2024, 14:56Каким образом?
Класс ВыполняемыйМодуль / ExecuteModule

УстановитьМодуль / AssignSource Устанавливает текст модуля на выполнение.
...

АЛьФ

Цитата: Forum123 от 02 апреля 2024, 14:57
Цитата: АЛьФ от 02 апреля 2024, 14:56Каким образом?
Класс ВыполняемыйМодуль / ExecuteModule
И как с помощью этого класса добавить динамически в модуль новые процедуры и функции?

Пиит

Цитата: АЛьФ от 02 апреля 2024, 14:49Почему тогда не дополнительные глобальники, а выполняемый модуль?

Что-то можно и в глобальные модули, и даже правильнее будет так, вопросов нет.
А ВыполняемыйМодуль в том случае, когда нужно завернуть в объект, с переменными и тд.
Без классов и прочего ООП, попроще, как в восьмерке типа.


Djelf

Цитата: item от 02 апреля 2024, 14:42Имхо, весь функционал ВыполняемыйМодуль должен быть в формексе, а не в iсpp.
Концепцию ООП он там нарушает, как бельмо, а к формексу пристегнулся бы, как родной.
И не путали бы почитатели в своих хотелках формы с модулями.

FormEx как бы намекает на то что это расширение форм, ну а в 1с++ всякого разного много натыкано.
А Классы и  ВыполняемыйМодуль выполняют примерно идентичные задачи, так что совсем не место этому в  FormEx. Да и кто же нынче будет это перетаскивать? Тем более что многочисленные попытки собрать 1с++ не увенчались успехом.

Djelf

Можно скомуниздить код из 1с++ ModuleString.cpp CModuleString::LoadModuleFromMD там кода кот наплакал...

Forum123

Назначаем исходник, компилируем и используем.

   ВыполняемыйМодуль01 = СоздатьОбъект( "ВыполняемыйМодуль" );
 
   ВыполняемыйМодуль01.НазначитьКонтекст( КонтОбъекта );

     глВыполняемыйМодуль.ВыполнитьПроцедуруКонтекста(
      Конт,
      VpНаимФункции,
      спСписок
     );

// --- Если вызываем процедуру или функцию
//
    if  ( VpTypeFormul <> -1 )  Then

     глВыполняемыйМодуль.ВыполнитьПроцедуруКонтекста(
      Конт,
      VpНаимФункции,
      спСписок
     );

    endif;

// --- Если просто выражение
//
    if  VpTypeFormul = -1  Then

     глВыполняемыйМодуль.ВыполнитьПроцедуруКонтекста(
      Конт,
      FormulaWWW,
      спСписок
     );

    endif;

   endif;                                                  // if  2 = 2  Then

  endif;                                                   // if  ПустоеЗначение( ИмяПоляWWW ) = 0  Then


Forum123

Цитата: Djelf от 02 апреля 2024, 15:04Можно скомуниздить код из 1с++ ModuleString.cpp CModuleString::LoadModuleFromMD там кода кот наплакал...
Non problem.
Код не сложный.

АЛьФ

Цитата: Forum123 от 02 апреля 2024, 15:05Назначаем исходник, компилируем и используем.

   ВыполняемыйМодуль01 = СоздатьОбъект( "ВыполняемыйМодуль" );
 
   ВыполняемыйМодуль01.НазначитьКонтекст( КонтОбъекта );

     глВыполняемыйМодуль.ВыполнитьПроцедуруКонтекста(
      Конт,
      VpНаимФункции,
      спСписок
     );




Это создание нового модуля, а не добавление новых функций и процедур в существующий.

АЛьФ

Цитата: Djelf от 02 апреля 2024, 15:04Можно скомуниздить код из 1с++ ModuleString.cpp CModuleString::LoadModuleFromMD там кода кот наплакал...
Не вижу смысла тянуть этот код. Дорабатывать и расширять там вроде нечего, со своими задачами он и в нынешнем виде  составе 1С++ справляется.

Пиит

Цитата: Djelf от 02 апреля 2024, 14:53Почему тогда не классы? Они прекрасно живут и в составе md.
Классы, согласитесь, чуть сложнее в описании и прочем.
Я думаю, что 90% написанных сообществом классов не имеет наследников и применяется исключительно для красоты кода, по сути как ВыполняемыйМодуль.

Forum123

Цитата: АЛьФ от 02 апреля 2024, 15:14Это создание нового модуля, а не добавление новых функций и процедур в существующий.
НазначитьКонтекст / AssignContext Устанавливает контекст модуля.
УстановитьМодуль(стрТекстМодуля)
КомпилироватьМодуль / Compile Компилирует модуль, установленный с помощью метода УстановитьМодуль.
ВыполнитьМодуль / Execute Выполняет модуль, установленный с помощью метода УстановитьМодуль и откомпилированный методом КомпилироватьМодуль.

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

Кстати 1С 7.7 легко интегрируется с Net и из нёё можно много функционала использовать.

Пиит

Цитата: Djelf от 02 апреля 2024, 15:01FormEx как бы намекает на то что это расширение форм, ну а в 1с++ всякого разного много натыкано.
А Классы и  ВыполняемыйМодуль выполняют примерно идентичные задачи, так что совсем не место этому в  FormEx...

Формекс тоже был в составе 1с++ ))
И сейчас обе компоненты кое-где пересекаются друг с другом, и как мы видим, не могу друг без друга.
Есть ведь в формексе события, глобальные модули и ВыполнитьПроцедуру, а это немного не про формы.

Forum123

Цитата: item от 02 апреля 2024, 15:25Формекс тоже был в составе 1с++ ))
Тогда лучше не в формекс добавлять, а новую ВК разработать, которая полностью заменит formex и 1cpp.

Djelf

Цитата: АЛьФ от 02 апреля 2024, 15:15Не вижу смысла тянуть этот код. Дорабатывать и расширять там вроде нечего, со своими задачами он и в нынешнем виде  составе 1С++ справляется.
Если был бы доступ из кода 1С то да, но такого метода нет.

Пиит

Цитата: Forum123 от 02 апреля 2024, 15:28
Цитата: item от 02 апреля 2024, 15:25Формекс тоже был в составе 1с++ ))
Тогда лучше не в формекс добавлять, а новую ВК разработать, которая полностью заменит formex и 1cpp.


Да, да, только в сутках 24 часа... ))
Дружище, когда мы уже пощупаем Ваше API ?