|
47 | 47 | // Сначала пытаемся использовать семвер |
48 | 48 | РезультатСравнения = Версии.СравнитьВерсии(УстановленнаяВерсия, ОписаниеЗависимости.МинимальнаяВерсия); |
49 | 49 | Исключение |
50 | | - // Если семвер не может обработать версию (например, 4-значную), используем старый механизм |
51 | | - РезультатСравнения = РаботаСВерсиями.СравнитьВерсии(УстановленнаяВерсия, ОписаниеЗависимости.МинимальнаяВерсия); |
| 50 | + // Если семвер не может обработать версию (например, 4-значную), используем простое сравнение |
| 51 | + // Это базовый fallback для не-семвер версий |
| 52 | + РезультатСравнения = СравнитьВерсииПростое(УстановленнаяВерсия, ОписаниеЗависимости.МинимальнаяВерсия); |
52 | 53 | КонецПопытки; |
53 | 54 |
|
54 | 55 | УстановленаКорректнаяВерсия = РезультатСравнения >= 0; |
|
171 | 172 |
|
172 | 173 | Возврат ПутьКФайлуМетаданных; |
173 | 174 |
|
174 | | -КонецФункции |
175 | | - |
| 175 | +КонецФункции |
| 176 | + |
| 177 | +// Простое сравнение версий для не-семвер форматов (например, 4-значных версий) |
| 178 | +// Возвращает 1, если ЭтаВерсия > БольшеЧемВерсия, -1 если ЭтаВерсия < БольшеЧемВерсия и 0, если они равны |
| 179 | +Функция СравнитьВерсииПростое(Знач ЭтаВерсия, Знач БольшеЧемВерсия) |
| 180 | + |
| 181 | + // Разбиваем версии на компоненты |
| 182 | + КомпонентыЭтойВерсии = СтрРазделить(ЭтаВерсия, "."); |
| 183 | + КомпонентыБольшеЧемВерсии = СтрРазделить(БольшеЧемВерсия, "."); |
| 184 | + |
| 185 | + // Определяем максимальное количество компонентов |
| 186 | + МаксКоличествоКомпонентов = Макс(КомпонентыЭтойВерсии.Количество(), КомпонентыБольшеЧемВерсии.Количество()); |
| 187 | + |
| 188 | + // Сравниваем по компонентам |
| 189 | + Для Сч = 0 По МаксКоличествоКомпонентов - 1 Цикл |
| 190 | + |
| 191 | + КомпонентЭтаВерсия = 0; |
| 192 | + КомпонентБольшеЧем = 0; |
| 193 | + |
| 194 | + Если Сч < КомпонентыЭтойВерсии.Количество() Тогда |
| 195 | + Попытка |
| 196 | + КомпонентЭтаВерсия = Число(КомпонентыЭтойВерсии[Сч]); |
| 197 | + Исключение |
| 198 | + КомпонентЭтаВерсия = 0; |
| 199 | + КонецПопытки; |
| 200 | + КонецЕсли; |
| 201 | + |
| 202 | + Если Сч < КомпонентыБольшеЧемВерсии.Количество() Тогда |
| 203 | + Попытка |
| 204 | + КомпонентБольшеЧем = Число(КомпонентыБольшеЧемВерсии[Сч]); |
| 205 | + Исключение |
| 206 | + КомпонентБольшеЧем = 0; |
| 207 | + КонецПопытки; |
| 208 | + КонецЕсли; |
| 209 | + |
| 210 | + Если КомпонентЭтаВерсия > КомпонентБольшеЧем Тогда |
| 211 | + Возврат 1; |
| 212 | + ИначеЕсли КомпонентЭтаВерсия < КомпонентБольшеЧем Тогда |
| 213 | + Возврат -1; |
| 214 | + КонецЕсли; |
| 215 | + |
| 216 | + КонецЦикла; |
| 217 | + |
| 218 | + Возврат 0; |
| 219 | + |
| 220 | +КонецФункции |
| 221 | + |
176 | 222 | Процедура ПриСозданииОбъекта(КаталогПоискаБиблиотек = "") |
177 | 223 |
|
178 | 224 | Лог = Логирование.ПолучитьЛог("oscript.app.opm"); |
|
0 commit comments