Получить очередной идентификатор объекта. Возвращает новый идентификатор объекта.
// Возвращает новый идентификатор объекта.
// Для получения нового идентификатора выбирает последний идентификатор объекта
// из регистра НаличиеПрисоединенныхФайлов увеличивает его значение
// на одну единицу и возвращает полученный результат.
//
// Возвращаемое значение:
// Строка (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
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПолучитьОбъектПоПользовательскомуИдентификатору (БСП)
ОбъектМетаданныхПоИдентификатору (БСП)
ОбъектыМетаданныхПоИдентификаторам (БСП)
ОписаниеПредопределенногоИдентификатораОбъектаМетаданных (БСП)
ДополнениеВыгрузкиИдентификаторВсехДокументов (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)