На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела:

  • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
  • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
  • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

Высказать своё мнение о модераторах раздела можно здесь: evGenius
Модераторы: evGenius
  
> Интроспективная программа, Задачка по программированию на 1С (убить время, так сказать)
Доброго дня!
Столкнулся с такой задачкой, не при выполнении обязанностей, а для общего развития, так сказать :)
Итак:
Интроспективная программа, это программа, которая печатает при выполнении свой собственный код.
Напрямую считывать код исходного текста программы и выводить его нельзя.
Код должен генерироваться самой программой. Нужно написать такой код на 1С 8.
Выводимый код должен полностью совпадать с исходным кодом самой программы.
Для проверки сгенерированный код будет использован в качестве программного кода решения.
Задача зацепила. Думаю заняться в свободное время. Ну и сюда кинул, вдруг кто тоже заинтересуется :)
Сообщение отредактировано: Rust -
[А что Если… КонецЕсли]
Цитата Rust @
Выводимый код должен полностью совпадать с исходным кодом самой программы.

Скомпилированный код нельзя обратно преобразовать до "полностью совпадать".
"Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
Цитата ^D^ima @
Скомпилированный код нельзя обратно преобразовать до "полностью совпадать".

не нужно преобразовывать :no: используй сообщить() и выполнить() :yes:
[А что Если… КонецЕсли]
Цитата Rust @
Напрямую считывать код исходного текста программы и выводить его нельзя.

Хм. Допустим можно. И как это сделать? Если знаешь, поделись как.
#define StandUp 1
life=(EndIf==StandUp)? continue:break;
нашел в интернетах:
ExpandedWrap disabled
    Стр="Сообщить(""Стр=""+Символ(34)+Стр+Символ(34)+"";Выполнить(Стр);"")";Выполнить(Стр);
"Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
Цитата niknet @
Хм. Допустим можно. И как это сделать? Если знаешь, поделись как.

Если коротко - пакетным запуском конфигуратора выгружаем конфигурацию в файлы, а потом из текстового файла получаем код нужного модуля.

Добавлено
Цитата ^D^ima @
нашел в интернетах:

Да, есть еще вариант, но смысл тот же.
[А что Если… КонецЕсли]
Цитата Rust @
выгружаем конфигурацию в файлы, а потом из текстового файла получаем код нужного модуля

Неуж. так просто. Я аж полез в конфигуратор посмотреть, мож. я от жизни отстал. Да нет, из конфигуратора выгружаем только в *.cf. А это бинарный файл. Я читал бинарные файлы (давно это было) и это были файлы *.dbf и на языке СИ. Нужно знать структуру файла, чтобы прочитать.
#define StandUp 1
life=(EndIf==StandUp)? continue:break;
Цитата niknet @
Неуж. так просто. Я аж полез в конфигуратор посмотреть, мож. я от жизни отстал. Да нет, из конфигуратора выгружаем только в *.cf. А это бинарный файл

Отстал. В конфигураторе меню Конфигурация - Выгрузить конфигурацию в файлы, указываешь каталог и конфигурация выгружается в набор файлов, формы в xml, модули в bsl. Все читается и редактируется обычным Блокнотом. У меня сейчас платформа 8.3.10.2561. А возможность такая появилась, если не ошибаюсь, в каком-то древнем релизе платформы 8.2.

Цитата niknet @
Я читал бинарные файлы (давно это было) и это были файлы *.dbf и на языке СИ. Нужно знать структуру файла, чтобы прочитать.

Это было раньше. Сейчас все можно сделать средствами 1С.
Сообщение отредактировано: Rust -
[А что Если… КонецЕсли]
Цитата Rust @
В конфигураторе меню Конфигурация - Выгрузить конфигурацию в файлы, указываешь каталог и конфигурация выгружается в набор файлов, формы в xml, модули в bsl.

Такой набор файлов я в гит складываю. Очень удобно.
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,1035 ]   [ 19 queries used ]   [ Generated: 20.11.17, 23:02 GMT ]