При ремонте спец техники VIN часто не заполняют, а уникальность наименования не всегда достигается. Текущая реализация данного функционала не позволит сохранить в справочнике автомобиль с не уникальным наименованием. Выходом из данной ситуации может оказаться внесение изменений в обработку обязательных реквизитов:
Код |
---|
Если обПраво("РазрешитьПустойVIN",Права) Тогда
ОбязательныеРеквизиты.Вставить("Наименование",1);
Иначе
ОбязательныеРеквизиты.Вставить("VIN",3);
КонецЕсли;
|
Правда в таком случае придется добавить проверку перед записью элемента, чтобы исключить возможность создания двух автомобилей с одинаковыми VIN кодами. Но в любом случае шанс появления ошибок достаточно высок.
Возможно корректнее было бы реализовать возможность записи автомобиля с не заполненым VIN кодом на уровне элемента справочника, а данным правом например регулировать доступность элементов управления.
Код |
---|
Процедура УправлениеДиалогом()
ЭлементыФормы.БезVIN.Доступность = обПраво("РазрешитьПустойVIN",Права);
ЭлементыФормы.VIN.Доступность = Не БезVIN;
|
В свое время я решил данную задачу добавлением в справочник Автомобили доп. реквизита БезVIN тип булево
Код |
---|
Функция ПолучитьОбязательныеРеквизиты(ДляЭлемента=Истина, ДляГруппы=Ложь) Экспорт
ОбязательныеРеквизиты=Новый Структура();
ОбязательныеРеквизиты.Вставить("Код",1);
ОбязательныеРеквизиты.Вставить("Наименование",3);
Если ДляЭлемента Тогда
Если БезVIN Тогда
ОбязательныеРеквизиты.Вставить("Наименование",1);
Иначе
ОбязательныеРеквизиты.Вставить("VIN",3);
КонецЕсли;
|
И в форме элемента
Код |
---|
Процедура БезVINПриИзменении(Элемент)
ЭлементыФормы.VIN.Доступность = Не БезVIN;
Если БезVIN Тогда
VIN="";
ФормированиеНаименованияАвтомобиля(ГосНомер);
Иначе
VINПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры // БезVINПриИзменении
|
Мне кажется что данный подход более корректен, так-как необходимо специально указать что записывается автомобиля без указания VIN кода каждый раз при создании нового элемента.