2. В дереве сервисов найти сервис таблицы Счета (tbl_Invoice), открыть (\Invoices\General\Main Grid\tbl_Invoice).
3. В Indexes, с помощью контекстного меню добавить индекс, указать ему название, как показано на скриншоте ниже.
4. Установите для поля галочку «Уникальное»
5. Затем добавьте индексное поле
6. И свяжите его с номером счета:
7. Сохраните таблицу:
В результате при дублировании номера счета программа будет уведомлять оператора:
Согласен с Алёной. Такая ошибка слишком жестка для пользователя.
Выходом может быть автоматическое формирования уникального поля и закрытие его редактирования пользователем.
Как вариант, можно в scr_BaseDBEditUtils в функции SaveChangesWithCheck отлавливать сообщение об ошибке и анализировать его (благо имя индекса уникально):
...
catch(e){
var Message = e.message;if(Message.indexOf('IInvoiceNumber')!=-1){
Message ="Номер не уникальный!"+'\n'+"невозможно сохранить запись";
System.MessageDialog(Message, mdtInformation, mdbOK, 0);}else{
System.MessageDialog(Message, mdtError, mdbOK, 0);}
Result =false;}
...
Здорово :) Пока я думала над решением, Максим меня опередил :)
В принципе, хотела предложить то же самое:
в скрипте scr_BaseDBEditUtils в функции function SaveChangesWithCheck в блоке catch добавить проверку:
if(e.number==-2147418113){
MessageBox("Невозможно сохранить счет, так как счет с таким номером уже существует! Введите другой номер.");
Result =false;}else
Скрипт в итоге будет выглядеть так:
А программа будет выдавать то сообщение, которое Вы введете в MessageBox:
В любом случае, реализация Максима лучше, поэтому рекомендую использовать ее.