|
94 | 94 | Возврат 0; |
95 | 95 | КонецЕсли; |
96 | 96 |
|
97 | | - Если ПреРелиз.Количество() = 0 |
98 | | - И ВходящаяВерсия.ПреРелиз.Количество() = 0 Тогда |
99 | | - Возврат 0; |
100 | | - КонецЕсли; |
101 | | - |
102 | 97 | Если ПреРелиз.Количество() = 0 |
103 | 98 | И ВходящаяВерсия.ПреРелиз.Количество() > 1 Тогда |
104 | 99 | Возврат 1; |
|
109 | 104 | Возврат -1; |
110 | 105 | КонецЕсли; |
111 | 106 |
|
112 | | - Возврат 0; |
| 107 | + Возврат СравнитьПререлизы(ВходящаяВерсия.ПреРелиз); |
113 | 108 |
|
114 | 109 | КонецФункции |
115 | 110 |
|
|
173 | 168 | Возврат Сравнить(ВходящаяВерсия) >= 0; |
174 | 169 | КонецФункции |
175 | 170 |
|
| 171 | +Функция СравнитьПреРелизы(Знач Сравниваемое) |
| 172 | + // Поэлементное сравнение |
| 173 | + Для Сч = 0 По Макс(ПреРелиз.ВГраница(), Сравниваемое.ВГраница()) Цикл |
| 174 | + // Больший набор предрелизных символов имеет больший приоритет, |
| 175 | + // чем меньший набор, если сравниваемые идентификаторы равны => |
| 176 | + // если компоненты будут равны, побеждает тот, у кого компонентов больше |
| 177 | + |
| 178 | + Если Сч > ПреРелиз.ВГраница() Тогда |
| 179 | + Возврат -1; |
| 180 | + ИначеЕсли Сч > Сравниваемое.ВГраница() Тогда |
| 181 | + Возврат 1; |
| 182 | + КонецЕсли; |
| 183 | + |
| 184 | + Текущий = ПреРелиз[Сч]; |
| 185 | + Входящий = Сравниваемое[Сч]; |
| 186 | + |
| 187 | + Если Текущий = Входящий Тогда |
| 188 | + Продолжить; |
| 189 | + КонецЕсли; |
| 190 | + |
| 191 | + // Численные идентификаторы имеют низший приоритет |
| 192 | + Если ТипЗнч(Текущий) <> ТипЗнч(Входящий) Тогда |
| 193 | + Возврат ?(ТипЗнч(Текущий) = Тип("Строка"), 1, -1); |
| 194 | + КонецЕсли; |
| 195 | + |
| 196 | + Возврат ?(Текущий > Входящий, 1, -1); |
| 197 | + |
| 198 | + КонецЦикла; |
| 199 | + |
| 200 | + Возврат 0; |
| 201 | +КонецФункции |
| 202 | + |
176 | 203 | Процедура Прочитать(Знач ВерсияСтрокой) |
177 | 204 |
|
178 | 205 | Если СтрДлина(ВерсияСтрокой) = 0 Тогда |
|
283 | 310 | Токен = Парсер.Текущий(); |
284 | 311 | Если Токен.Тип = Парсер.ТипЧисло Тогда |
285 | 312 | Парсер.Следующий(); |
286 | | - Возврат Токен.Значение; |
| 313 | + Возврат Число(Токен.Значение); |
287 | 314 | ИначеЕсли Токен.Тип = Парсер.ТипТекст Тогда |
288 | 315 | Текст = ""; |
289 | 316 | ТекТокен = Парсер.Текущий(); |
|
0 commit comments