Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Догрузка кода в модуль документа из внешнего файла
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
GerasimAndMumu
Уважаемые форумчане. Я давно работаю с 1с 7.7 и родился вопрос- есть ли возможность догружать исполняемый код (функции и процедуры) в модуль документов из внешних файлов. И конечно выполнять их после загрузки. Может ктото это знает или есть написанная компонета, что это раелизует. Большое спасибо. Надеюсь на помощь.
Ardi
На самом деле модуль перед исполнением компилируется. И менять модуль из самого себя без пересоздания экземпляра объекта (перекомпиляции) я думаю нельзя. (Сорри если программерские термины попутал).
Но можно менять модуль, потом "переоткрывать" документ - и тогда будет другой модуль.

Внешний модуль можно тянуть штатными средствами или например крутой компонентой "turboMD".

====
А чтобы что-то сгенерировать и выполнить из самого модуля можно передавать контекст в обработку. Модуль которой во внешнем текстовом файле.
Zaval
А чем не устраивает вполне себе штатно весь модуль?

#ЗагрузитьИзФайла .......txt
DartRomanius
Цитата(Zaval @ 09.02.11, 23:53) необходимо зарегистрироваться для просмотра ссылки
А чем не устраивает вполне себе штатно весь модуль?

#ЗагрузитьИзФайла .......txt


О как!....

Прошу о сим штатном методе подробнее....

Заранее сенкс.
shurik_shurik
Просто в начале файла пишиТЕ инструкцию #ЗагрузитьИзФайла....
Только в текстовом файле должен быть полный код модуля... (не часть)
DartRomanius
Цитата(shurik_shurik @ 10.02.11, 12:31) необходимо зарегистрироваться для просмотра ссылки
Просто в начале файла пишиТЕ инструкцию #ЗагрузитьИзФайла....
Только в текстовом файле должен быть полный код модуля... (не часть)


А это штатный механизм, или требуется что-то типа 1С++, ВК вообщем?
mister-x
Із синтакс-помічника:
#ЗагрузитьИзФайла <?>

Синтаксис:
#ЗагрузитьИзФайла <ИмяФайла>

Назначение:
Переключение загрузки программного модуля на загрузку из текстового файла.
Параметры:
<ИмяФайла> - имя файла, содержащего исходный текст программного модуля (записывается без кавычек и скобок).
Замечание:
Конструкция
#ЗагрузитьИзФайла
должна записываться в первой строке программного модуля с первой позиции.
Подробнее см. в документации, глава 'Управляющие операторы'
wasdik
Цитата(mister-x @ 10.02.11, 13:53) необходимо зарегистрироваться для просмотра ссылки
Із синтакс-помічника:
#ЗагрузитьИзФайла <?>

Синтаксис:
#ЗагрузитьИзФайла <ИмяФайла>

Назначение:
Переключение загрузки программного модуля на загрузку из текстового файла.
Параметры:
<ИмяФайла> - имя файла, содержащего исходный текст программного модуля (записывается без кавычек и скобок).
Замечание:
Конструкция
#ЗагрузитьИзФайла
должна записываться в первой строке программного модуля с первой позиции.
Подробнее см. в документации, глава 'Управляющие операторы'


Насколько я понимаю, в таком случае код выполняется только из файла, а не догружается, как хотел автор первого поста. Поправьте, если ошибаюсь... Интересно попробовать...
mister-x
Цитата
Насколько я понимаю, в таком случае код выполняется только из файла, а не догружается, как хотел автор первого поста. Поправьте, если ошибаюсь... Интересно попробовать...

Це директива препроцесору - ось напр., при провірці на синтакс в модулі форми/об'єкту спочатку загружається код из файлу і тоді вже відбуваються провірка на синтаксис (номер стрічки із помилкою шукаємо у зовнішньому файлі, який підгружаємо). В самому зовн. файлі Ви таку провірку не зробите.
wasdik
Сделал маленький эксперимент, результаты рассказываю.
Скопировал код модуля формы во внешний файл. При открытии документа считывался и выполнялся код именно из внешнего файла, а код самого модуля не выполнялся. При этом код во внешнем файле можно менять "на лету"... При открытии документа повторно, выполняется уже новый код внешнего файла. У изменении одного реквизита вызывалась процедура. Я удалил эту процедуру во внешнем файле, но оставил её в модуле формы. В результате 1С выдала ошибку, что процедура не найдена, следовательно в таком случае код модуля формы не выполняется, а выполняется только код из внешнего файла.
Из вышесказанного следует что нельзя во внешнем файле использовать только часть кода, а нужно в нём располагать весь код модуля.
mister-x
Так працює платфома 1С 7.7- тут немає нічого нового. А для початківців буде інформацією (уроком).
Zaval
Цитата(wasdik @ 10.02.11, 14:37) необходимо зарегистрироваться для просмотра ссылки
Из вышесказанного следует что нельзя во внешнем файле использовать только часть кода, а нужно в нём располагать весь код модуля.


Господа, читайте сообщение 2 от Ardi.

Хотите вписать в модуль нечто, выполняющее наряду с кодом модуля фрагмент динамически изменяемого кода? Почему это не может быть вызов обработки(тот же ПодборНоменклатуры вызывается из нескольких документов)?
ЗЫ. Создать/отредактировать текстовый файл программно тоже никто не запрещает)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.