Прверка на уникальность

  • Автор темы Ogion7
  • Дата начала
Статус
Закрыто для дальнейших ответов.
O

Ogion7

Гость
#1
Усем привет. Такая проблемка: в поле Name висит формула валидации
Код:
x:= @DbLookup("Notes":"Nocache";@DbName;"groups"; Name;1;[FailSilent]);

@If(
@ThisValue="";@Failure("Название - обязательное поле");

(@IsNewDoc & @Elements(x)>=1);@Failure("Обнаружен дубликат группы");

@Elements(x)>1;@Failure("Обнаружен дубликат группы");

@Success
)
при создании дока все нормально. Открываю уже существующий, и меняю поле Name на неуникальное(т.е есть документ с таким значением в поле Name). Жму кнтрл+с -- молчание, жму второй раз -- сообщение об дубликации названия поля.
Заковыка по моему в строке перед @Success -- в представлении еще нет данных о новом значении(одно есть), полсе первого сохранения вьюха обновилась и их уже два. Если поставить >= то будет плеваться при сохранении. Есть идея сделать поле в котором хранить старое имя, и если оно не совпадает с новым, а элементов нашло 1 -- то ошибка. Но может можно как то проще?
 
O

Ogion7

Гость
#2
Решил с помощью представления (Duplicate_groups) из двух столбцов: первый категория по Name, второй--унид документа. В валидации след-й код:
List:=@If(@IsError(@DbLookup("":"NoCache";"":"";"(Duplicate_groups) ";@Text(Name);2));"";@DbLookup("":"NoCache";"":"";"(Duplicate_groups) ";@Text(Name);2));
IsDubl:=@If(@IsMember(@Text(@DocumentUniqueID);List) & @Elements(List)>1;@False;@IsNewDoc & List!="";@False;@IsNotMember(@Text(@DocumentUniqueID);List) & @Elements(List)>=1 & List!="";@False;@True);

@If(Name="" & @IsDocBeingSaved;@Failure("Название - обязательное поле");! IsDubl & @IsDocBeingSaved;@Failure("Обнаружен дубликат группы");@Success)
:)
 
Статус
Закрыто для дальнейших ответов.