Можно ли обойти ошибки компиляции?

1. LosevI 20.04.21 10:18 Сейчас в теме
Здравствуйте. Вопрос из рубрики бред.
Во внешней обработке хочу оставить совместимость для работы со старыми версиями платформы.
Уперся в непреодалимое, до этого подобные проблемы решал окольными путями...

Клиентский метод, появившийся в платформе только в 8.3.15, например "НачатьПомещениеФайлаНаСервер", вызывает ошибку компиляции модуля при запуске на 8.3.10, не смотря на то, что фактически данный код не будет вызван логикой (вообще работа с файловой системой не вызывается, если платформа не 8.3.13+, это все контролируется самой программой), однако, конечно, компилятору на это все равно.

И вот финальный гвоздь - на Сервере такое я решал через Выполнить(НекомпилируемыйКод), но на Клиенте Выполнить недоступен в ВебКлиенте, соответствено нужно решать для чего оставлять поддержку - для старых платформ, или для работы с файлами в веб-клиенте.

Мечтать не вредно: вот бы существовали директивы препроцессора для версий платформ. Как мне кажется это логично, но у них этого нет.

Есть еще решения, или я все варианты перебрал?
По теме из базы знаний
Найденные решения
7. SlavaKron 20.04.21 13:14 Сейчас в теме
(1) Код, вызывающий ошибку при компиляции модуля, можно хранить в экспортных процедурах в служебной форме. Модуль формы будет скомпилирован только при получении формы, значит мы сможем контролировать когда запускать этот код, а когда нет.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. SlavaKron 20.04.21 13:14 Сейчас в теме
(1) Код, вызывающий ошибку при компиляции модуля, можно хранить в экспортных процедурах в служебной форме. Модуль формы будет скомпилирован только при получении формы, значит мы сможем контролировать когда запускать этот код, а когда нет.
8. LosevI 20.04.21 13:43 Сейчас в теме
(7) Отличная идея, это проще, чем (3) с макетами, спасибо!! Не подумал что то сам, действительно, модуль формы же не компилируется без вызова.
Тем более что у меня уже есть служебная форма, используемая, по сути, как модуль на клиенте, для меня не проблема будет сделать подобные с кусками спорного кода.
2. soft_wind 20.04.21 10:19 Сейчас в теме
легко с помощью команды выполнить("ТекстКоманды");
3. LosevI 20.04.21 10:20 Сейчас в теме
(2) Дочитайте пожалуйста до конца мое сообщение. Там про особенности контекста исполнения.
4. soft_wind 20.04.21 10:25 Сейчас в теме
(3) упс, сам решал подобные зигзаги
еще как вариант, делайте макеты с бинарным кодом обработок по разные версии
запускаете свою обработку
определяете версию платформы, и режим совместимости
получаете нужный макет с кодом, формируете из него обработку и используете процедуры,
только во всех макетах должны быть одинаковые имена процедур,
5. LosevI 20.04.21 10:30 Сейчас в теме
(4) Интересный подход. Он, конечно, все еще больше усложняет, но я буду иметь его в виду, особенно если у меня таких методов станет больше чем один... Да и подумать над реализацией там тоже есть над чем, можно, например, в таких макетах держать только клиентский код общего назначения...
6. starik-2005 3036 20.04.21 12:21 Сейчас в теме
Про выполнить на клиенте - не знаю, может в этом и есть какой-то смысл, но вот помещать файлы я давненько уже не пользовал - обхожусь двоичными данными, которые просто передаю в серверную функцию ("СервернаяФункция( Новый ДвоичныеДанные(ИмяФайла) )"). Да, если файл триллион гигабайт - это, конечно, не комильфо, но откуда на клиенте такие файлы и сколько на сервере вообще места свободного? Ну и работа с потоками в памяти зачастую оставляет без необходимости это все на сервере в этот файл сохранять.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот