ПользовательскоеПредставлениеНомераВерсии (БСП)

Автор: 1С
ОбщийМодуль.ИнтернетПоддержкаПользователейКлиентСервер
БСП

Пользовательское представление номера версии. Функция из версии формата 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
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПользовательскоеПредставлениеИнтервалаВерсий (БСП)

ВнутреннееПредставлениеНомераВерсии (БСП)

ПользовательскийПрефикс (БСП)

УдалитьПользовательскиеПрефиксыИзНомераОбъекта (БСП)

ВерсияКонфигурацииБезНомераСборки (БСП)

СформироватьПредставлениеОтбора (БСП)

ВерсияКлассификатора (БСП)

ПользовательскиеВариантыОтчетов (БСП)

Версия (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз