Пользовательское представление номера версии. Функция из версии формата 99.99.999.9999 удаляет лидирующие нули, чтобы 08.02.019.0080 выглядело как 8.2.19.80.
// Функция из версии формата 99.99.999.9999 удаляет лидирующие нули, чтобы 08.02.019.0080 выглядело как 8.2.19.80.
//
// Параметры:
// Версия - Строка - строка формата 99.99.999.9999, в которой необходимо удалить лидирующие нули;
// СокращатьРазрядностьВерсии - Булево - разрешить сокращать версию (завершающуюся на 0000/000/00 или 9999/999/99) в следующих случаях:
// А.00.000.0000 = А,
// А.Б.000.0000 = А.Б,
// А.Б.В.0000 = А.Б.В,
// А.99.999.9999 = А.*,
// А.Б.999.9999 = А.Б.*,
// А.Б.В.9999 = А.Б.В.*.
//
// Возвращаемое значение:
// Строка - удобочитаемое представление версии.
//
Функция ПользовательскоеПредставлениеНомераВерсии(Версия, СокращатьРазрядностьВерсии = Ложь) Экспорт
Результат = "";
Если СокращатьРазрядностьВерсии = Истина Тогда
Версии = СтрЗаменить(Версия, ".", Символы.ПС);
Если СтрЧислоСтрок(Версии) <> 4 Тогда
Результат = Версия; // оставить как есть
Иначе
Версия1 = СтрПолучитьСтроку(Версии, 1);
Версия2 = СтрПолучитьСтроку(Версии, 2);
Версия3 = СтрПолучитьСтроку(Версии, 3);
Версия4 = СтрПолучитьСтроку(Версии, 4);
Если (Версия2 = "00") И (Версия3 = "000") И (Версия4 = "0000") Тогда
// А.00.000.0000 = А
Результат =
Формат(Число(Версия1), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0");
ИначеЕсли (СтрПолучитьСтроку(Версии, 3) = "000") И (СтрПолучитьСтроку(Версии, 4) = "0000") Тогда
// А.Б.000.0000 = А.Б
Результат =
Формат(Число(Версия1), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0")
+ "." + Формат(Число(Версия2), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0");
ИначеЕсли (СтрПолучитьСтроку(Версии, 4) = "0000") Тогда
// А.Б.В.0000 = А.Б.В
Результат =
Формат(Число(Версия1), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0")
+ "." + Формат(Число(Версия2), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0")
+ "." + Формат(Число(Версия3), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0");
ИначеЕсли (Версия2 = "99") И (Версия3 = "999") И (Версия4 = "9999") Тогда
// А.99.999.9999 = А.*
Результат =
Формат(Число(Версия1), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0")
+ ".*";
ИначеЕсли (Версия3 = "999") И (Версия4 = "9999") Тогда
// А.Б.999.9999 = А.Б.*
Результат =
Формат(Число(Версия1), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0")
+ "." + Формат(Число(Версия2), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0")
+ ".*";
ИначеЕсли (Версия4 = "9999") Тогда
// А.Б.В.9999 = А.Б.В.*
Результат =
Формат(Число(Версия1), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0")
+ "." + Формат(Число(Версия2), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0")
+ "." + Формат(Число(Версия3), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0")
+ ".*";
Иначе
Результат = Формат(Число(Версия1), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0")
+ "." + Формат(Число(Версия2), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0")
+ "." + Формат(Число(Версия3), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0")
+ "." + Формат(Число(Версия4), "ЧЦ=4; ЧДЦ=0; ЧН=0; ЧГ=0");
КонецЕсли;
КонецЕсли;
Иначе
НоваяВерсия = ВнутреннееПредставлениеНомераВерсии(Версия);
НовыйМассивЧиселВерсии = Новый Массив(4);
МассивЧиселВерсии = СтрРазделить(НоваяВерсия, ".", Истина);
Для С=1 По 4 Цикл
НовыйМассивЧиселВерсии[С-1] = 0;
Если МассивЧиселВерсии.Количество() >= С Тогда
Попытка
НовыйМассивЧиселВерсии[С-1] = ?(ПустаяСтрока(МассивЧиселВерсии[С-1]), 0, Число(МассивЧиселВерсии[С-1]));
Исключение
НовыйМассивЧиселВерсии[С-1] = 0;
КонецПопытки;
КонецЕсли;
КонецЦикла;
Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"%1.%2.%3.%4",
СокрЛП(Формат(НовыйМассивЧиселВерсии[0], "ЧЦ=4; ЧДЦ=; ЧН=0; ЧГ=0")),
СокрЛП(Формат(НовыйМассивЧиселВерсии[1], "ЧЦ=4; ЧДЦ=; ЧН=0; ЧГ=0")),
СокрЛП(Формат(НовыйМассивЧиселВерсии[2], "ЧЦ=4; ЧДЦ=; ЧН=0; ЧГ=0")),
СокрЛП(Формат(НовыйМассивЧиселВерсии[3], "ЧЦ=4; ЧДЦ=; ЧН=0; ЧГ=0")));
КонецЕсли;
Возврат Результат;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПользовательскоеПредставлениеИнтервалаВерсий (БСП)
ВнутреннееПредставлениеНомераВерсии (БСП)
УдалитьПользовательскиеПрефиксыИзНомераОбъекта (БСП)
ВерсияКонфигурацииБезНомераСборки (БСП)
СформироватьПредставлениеОтбора (БСП)