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

Автор: 1С
ОбщийМодуль.ПрефиксацияОбъектовКлиентСервер
БСП

Удалить префиксы из номера объекта. Удаляет префикс информационной базы и префикс организации из переданной строки НомерОбъекта.

// Удаляет префикс информационной базы и префикс организации из переданной строки НомерОбъекта.
// Переменная НомерОбъекта должна соответствовать шаблону: ООГГ-ХХХ...ХХ или ГГ-ХХХ...ХХ, где:
//    ОО - префикс организации;
//    ГГ - префикс информационной базы;
//    "-" - разделитель;
//    ХХХ...ХХ - номер/код объекта.
// Незначащие символы префиксов (символ ноль - "0") также удаляются.
//
// Параметры:
//    НомерОбъекта - Строка - номер или код объекта из которого требуется удалить префиксы.
//    УдалитьПрефиксОрганизации - Булево - признак удаления префикса организации;
//                                         по умолчанию равен Ложь.
//    УдалитьПрефиксИнформационнойБазы - Булево - признак удаления префикса информационной базы;
//                                                по умолчанию равен Ложь.
//
// Возвращаемое значение:
//     Строка - Номер объекта без префиксов.
//
// Пример:
//    УдалитьПрефиксыИзНомераОбъекта("0ФГЛ-000001234", Истина, Истина) = "000001234"
//    УдалитьПрефиксыИзНомераОбъекта("0ФГЛ-000001234", Ложь, Истина)   = "Ф-000001234"
//    УдалитьПрефиксыИзНомераОбъекта("0ФГЛ-000001234", Истина, Ложь)   = "ГЛ-000001234"
//    УдалитьПрефиксыИзНомераОбъекта("0ФГЛ-000001234", Ложь, Ложь)     = "ФГЛ-000001234"
//
Функция УдалитьПрефиксыИзНомераОбъекта(Знач НомерОбъекта, УдалитьПрефиксОрганизации = Ложь, УдалитьПрефиксИнформационнойБазы = Ложь) Экспорт
	
	Если Не НомерСодержитСтандартныйПрефикс(НомерОбъекта) Тогда
		Возврат НомерОбъекта;
	КонецЕсли;
	
	// Изначально пустая строка префикса номера объекта.
	ПрефиксОбъекта = "";
	
	НомерСодержитПятизначныйПрефикс = НомерСодержитПятизначныйПрефикс(НомерОбъекта);
	
	Если НомерСодержитПятизначныйПрефикс Тогда
		ПрефиксОрганизации        = Лев(НомерОбъекта, 2);
		ПрефиксИнформационнойБазы = Сред(НомерОбъекта, 3, 2);
	Иначе
		ПрефиксОрганизации = "";
		ПрефиксИнформационнойБазы = Лев(НомерОбъекта, 2);
	КонецЕсли;
	
	ПрефиксОрганизации        = СтроковыеФункцииКлиентСервер.УдалитьПовторяющиесяСимволы(ПрефиксОрганизации, "0");
	ПрефиксИнформационнойБазы = СтроковыеФункцииКлиентСервер.УдалитьПовторяющиесяСимволы(ПрефиксИнформационнойБазы, "0");
	
	// Добавляем префикс организации.
	Если Не УдалитьПрефиксОрганизации Тогда
		
		ПрефиксОбъекта = ПрефиксОбъекта + ПрефиксОрганизации;
		
	КонецЕсли;
	
	// Добавляем префикс информационной базы.
	Если Не УдалитьПрефиксИнформационнойБазы Тогда
		
		ПрефиксОбъекта = ПрефиксОбъекта + ПрефиксИнформационнойБазы;
		
	КонецЕсли;
	
	Если Не ПустаяСтрока(ПрефиксОбъекта) Тогда
		
		ПрефиксОбъекта = ПрефиксОбъекта + "-";
		
	КонецЕсли;
	
	Возврат ПрефиксОбъекта + Сред(НомерОбъекта, ?(НомерСодержитПятизначныйПрефикс, 6, 4));
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

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

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

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

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

Как удалить префикс и лидирующие нули?

Удалить префикс объекта и лидирующие нули (ЗУП 3)

ПриОпределенииПрефиксаИнформационнойБазыПоУмолчанию (БСП)

УдалитьЛидирующиеНулиИзНомераОбъекта (БСП)

Номер без префикса и лидирующих нулей

НомерНаПечать (БСП)

Получает номер документа для вывода на печать; из номера удаляются префиксы и лидирующие нули

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