Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 15:01

Проверка по наличию дубля

Автор Артём Сурмин, 09 июл 2020, 14:31

0 Пользователей и 1 гость просматривают эту тему.

Артём Сурмин

Была задача , чтобы у поля Идентификатор при создании находило максимальный из всех возможных и +1. но если сделать вручную и вбить уже существующий то получается дубль , как сделать проверку чтобы у пользователя не было возможности такой

вот код (процедура при открытии )

Если Не ЗначениеЗаполнено(Идентификатор) Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДисконтныеКарты.Ссылка КАК Ссылка,
| ДисконтныеКарты.Идентификатор КАК Идентификатор
|ИЗ
| Справочник.ДисконтныеКарты КАК ДисконтныеКарты
|ГДЕ
| НЕ ДисконтныеКарты.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| Идентификатор УБЫВ";

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
Если СтрДлина(Выборка.Идентификатор) = 13 Тогда
Идентификатор = СтрЗаменить(Строка(Число(Выборка.Идентификатор)+1)," ","");
Дубль = Справочники.ДисконтныеКарты.НайтиПоРеквизиту("Идентификатор" ,Идентификатор);


Пока Дубль <> Справочники.ДисконтныеКарты.ПустаяСсылка() Цикл
Идентификатор = СтрЗаменить(Строка(Число(Идентификатор)+1)," ","");
Дубль = Справочники.ДисконтныеКарты.НайтиПоРеквизиту("Идентификатор" ,Идентификатор);
КонецЦикла;
Если Дубль = Справочники.ДисконтныеКарты.ПустаяСсылка() Тогда
Прервать;
КонецЕсли;
КонецЕсли;

КонецЦикла;
КонецЕсли;

Optiman

Давайте начнем с того, что нужно в запросе указать
"ВЫБРАТЬ ПЕРВЫЕ 1 ..."
тогда выберется 1 наибольший идентификатор. А у вас получается перебор всех в порядке убывания.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск