|
Экранирование кода в зависимости от совместимости конфигурации | ☑ | ||
---|---|---|---|---|
0
aspirator23
21.12.15
✎
10:07
|
В новых платформах есть новые методы языка.
Например СтрНайти(), вместо старой Найти(). Есть ли способ экранировать "новый" код, "ходить" по разным веткам кода, в программах, которые хотя и запускаются на новых платформе( 8.3), но стоит режим совместимости с 8.2(получаем ошибку компиляции)? Инструкции препроцессору более общие, не позволяют разделить совместимость. Простой выход - не использовать новые методы. |
|||
1
Мимохожий Однако
21.12.15
✎
10:11
|
Сам себе и ответил.
|
|||
2
aspirator23
21.12.15
✎
10:12
|
Собственно аналогичная проблема - запуск универсальных обработок на разных платформах.
|
|||
3
Мимохожий Однако
21.12.15
✎
10:13
|
У каждой конфигурации есть имя и свойства. Можно ориентироваться на это.
|
|||
4
aspirator23
21.12.15
✎
10:15
|
(3) Это так. Но как, зная это, экранировать код?
|
|||
5
vasbur
21.12.15
✎
10:21
|
(0) "Выполнить", других способов не знаю
|
|||
6
aspirator23
21.12.15
✎
10:23
|
(5) Спасибо. Применять конечно можно с оглядкой, но хоть какое - то решение.
|
|||
7
Лефмихалыч
21.12.15
✎
10:23
|
(0) Вот это в какой-нибудь ОбщегоНазначения засунь
Функция ЭтоВосемьТриСемь() Экспорт Результат = Истина; Попытка СтрНайти("123", "1"); Исключение Результат = Ложь; КонецПопытки; Возврат Результат; КонецФункции |
|||
8
Лефмихалыч
21.12.15
✎
10:25
|
а, замес в том, чтобы оно еще и компилировалось. Тогда только выполнить, но уж лучше пусть компилятор при сохранении ругается, чем Выполнить()...
|
|||
9
aspirator23
21.12.15
✎
10:25
|
В общем не пробовал, но в обработке ПопыткаИсключение не спасает: падает с ошибкой компиляции
|
|||
10
Fragster
гуру
21.12.15
✎
10:27
|
(7)
ОбъектМетаданныхКонфигурация (ConfigurationMetadataObject) РежимСовместимости (CompatibilityMode) Использование: Только чтение. Описание: Тип: РежимСовместимости. Показывает, установлен ли режим совместимости конфигурации с платформой версии 8.1 или 8.2.13, или 8.2.16. Доступность: Сервер, толстый клиент, внешнее соединение. -------------------------------------------------------------------------------- |
|||
11
Fragster
гуру
21.12.15
✎
10:27
|
РежимСовместимости (CompatibilityMode)
Значения Версия8_1 (Version8_1) Версия8_2_13 (Version8_2_13) Версия8_2_16 (Version8_2_16) Версия8_3_1 (Version8_3_1) Версия8_3_2 (Version8_3_2) Версия8_3_3 (Version8_3_3) Версия8_3_4 (Version8_3_4) Версия8_3_5 (Version8_3_5) НеИспользовать (DontUse) Описание: Некоторые усовершенствования, внесенные в текущую версию, могут вызвать конфликт с существующими конфигурациями, разработанными на более ранних версиях платформы. Использование данного перечисления позволяет отключить эти усовершенствования и использовать ранее разработанные конфигурации без внесения каких-либо исправлений. Доступность: Сервер, толстый клиент, внешнее соединение. См. также: ОбъектМетаданныхКонфигурация, свойство РежимСовместимости ПеречислимыеСвойстваОбъектовМетаданных, свойство РежимСовместимости -------------------------------------------------------------------------------- Методическая информация |
|||
12
Лефмихалыч
21.12.15
✎
10:28
|
(11) да не в этом дело
|
|||
13
aspirator23
21.12.15
✎
10:28
|
(11) Тут проблема в другом. Совместимость и версию платформы мы имеем. Как зная их экранировать код?
|
|||
14
mikecool
21.12.15
✎
10:30
|
код - в макеты, в зависимости от версии брать нужный макет и как то Выполнить
:) |
|||
15
ЧеловекДуши
21.12.15
✎
10:30
|
(0) Можно, но только в разных модулях В разных формах...
Т.е. писать так, что бы все выполнялось в различных модулях, в зависимости от версии :) |
|||
16
vde69
21.12.15
✎
10:31
|
(13)
если Версия(Версия8_2_13) тогда делаемпоПравиламВерсия8_2_13 () Иначеесли Версия(Версия8_3_3) тогда делаемпоПравиламВерсия8_3_3 () конецесли |
|||
17
Fragster
гуру
21.12.15
✎
10:32
|
(13) не использовать новые возможности. или поставить в системных требованиях минимальную версию платформы, как делает фирма 1с.
Один раз, когда писал обработку для БП 2.0 и 3.0 одновременно - использовал выполнить. |
|||
18
aspirator23
21.12.15
✎
10:32
|
(14) да макет тоже решение. Правда все через Выполнить
|
|||
19
aspirator23
21.12.15
✎
10:33
|
(16) Скорее всего будет тоже ошибка компиляции.
|
|||
20
aspirator23
21.12.15
✎
10:34
|
(15) Формы, модули скорее всего не спасут. Они тоже не будут компилироваться.
|
|||
21
vde69
21.12.15
✎
10:41
|
(19) точно не будет если сделаешь несколько общих модулей типа МодульВерсия8_2_13
внутрь модулей засунешь функция НайтиСтроку() и вызовы будешь использовать так если Версия(Версия8_2_13) тогда МенеджерМодуля = делаемпоПравиламВерсия8_2_13 конецесли МенеджерМодуля.НайтиСтроку() |
|||
22
cw014
21.12.15
✎
10:42
|
Обратной совместимости никто не гарантировал
|
|||
23
vde69
21.12.15
✎
10:42
|
если Версия(Версия8_2_13) тогда
МенеджерМодуля = МодульВерсия8_2_13 конецесли МенеджерМодуля.НайтиСтроку() |
|||
24
aspirator23
21.12.15
✎
10:44
|
(23) Если общие модули компилируются при первом обращении к ним то пожалуй сработает. Попробую.
|
|||
25
sash-ml
21.12.15
✎
10:45
|
+(7) а если так
Функция ЭтоВосемьТриСемь() Экспорт Результат = Истина; Попытка Выполнить("СтрНайти(""123"", ""1"")"); Исключение Результат = Ложь; КонецПопытки; Возврат Результат; КонецФункции |
|||
26
aspirator23
21.12.15
✎
10:46
|
(25) Попытки не работают. Лефмихалыч уже предлагал.
|
|||
27
vde69
21.12.15
✎
10:48
|
(24) это точно работает, я так делал когда пытался реализовать модульные обновления
|
|||
28
ЧеловекДуши
21.12.15
✎
10:49
|
(20) Формы компилируются только при создании.
Модули, тоже так же делают :) |
|||
29
aspirator23
21.12.15
✎
10:49
|
(25) Это вариант Выполнить(). Он работает. Интересный вариант в (23)
|
|||
30
aspirator23
21.12.15
✎
10:50
|
(28) (27) спасибо. Попробую. Тему закрываю - решение найдено.
|
|||
31
ЧеловекДуши
21.12.15
✎
10:50
|
(29) Все дело в скорости. :)
|
|||
32
aspirator23
21.12.15
✎
10:51
|
(31) Это, да. :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |