ПолучитьОчереднойИдентификаторОбъекта (БСП)

Автор: 1С
ОбщийМодуль.РаботаСФайламиСлужебный
БСП

Получить очередной идентификатор объекта. Возвращает новый идентификатор объекта.

// Возвращает новый идентификатор объекта.
//  Для получения нового идентификатора выбирает последний идентификатор объекта
// из регистра НаличиеПрисоединенныхФайлов увеличивает его значение
// на одну единицу и возвращает полученный результат.
//
// Возвращаемое значение:
//  Строка (10) - новый идентификатор объекта.
//
Функция ПолучитьОчереднойИдентификаторОбъекта() Экспорт
	
	// Вычисление нового идентификатора объекта.
	Результат = "0000000000"; // По длине ресурса ИдентификаторОбъекта.
	
	ТекстЗапроса =
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	НаличиеФайлов.ИдентификаторОбъекта КАК ИдентификаторОбъекта
	|ИЗ
	|	РегистрСведений.НаличиеФайлов КАК НаличиеФайлов
	|
	|УПОРЯДОЧИТЬ ПО
	|	ИдентификаторОбъекта УБЫВ";
	
	Запрос = Новый Запрос;
	Запрос.Текст = ТекстЗапроса;
	
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		Идентификатор = Выборка.ИдентификаторОбъекта;
		
		Если ПустаяСтрока(Идентификатор) Тогда
			Возврат Результат;
		КонецЕсли;
		
		// Правила вычисления, как в обычном сложении: при 
		// заполнении текущего разряда следующий разряд увеличивается
		// на единицу, при этом, в текущем разряде значение становится
		// равным нулю. Значениями разрядов выступают символы
		// [0..9] и [a..z]. Таким образом один разряд может содержать
		// 36 значений.
		
		Позиция = 10; // 9- индекс 10-го символа
		Пока Позиция > 0 Цикл
			
			Символ = Сред(Идентификатор, Позиция, 1);
			
			Если Символ = "z" Тогда
				Идентификатор = Лев(Идентификатор, Позиция-1) + "0" + Прав(Идентификатор, 10 - Позиция);
				Позиция = Позиция - 1;
				Продолжить;
				
			ИначеЕсли Символ = "9" Тогда
				НовыйСимвол = "a";
			Иначе
				НовыйСимвол = Символ(КодСимвола(Символ)+1);
			КонецЕсли;
			
			Идентификатор = Лев(Идентификатор, Позиция-1) + НовыйСимвол + Прав(Идентификатор, 10 - Позиция);
			Прервать;
		КонецЦикла;
		
		Результат = Идентификатор;
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

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

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

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

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

ОбъектМетаданныхПоИдентификатору (БСП)

ОбъектыМетаданныхПоИдентификаторам (БСП)

ИдентификаторПодсистемы (БСП)

ОписаниеПредопределенногоИдентификатораОбъектаМетаданных (БСП)

ДополнениеВыгрузкиИдентификаторВсехДокументов (БСП)

ДополнениеВыгрузкиИдентификаторВсехСправочников (БСП)

ПраваПоИдентификаторам (БСП)

ТипФормыОбъекта (БСП)

1С Менеджер конфигураций