Не отключаемая уникальность кода транспортного средства. УНФ 3.0
Дорабатывал справочник транспортных средств для клиента в УНФ. Столкнулся с тем, что в качестве кода справочника используется регистрационный номер, а он не всегда заранее известен. Т.е. реквизит код длиной 16 символов — называется в форме «Регистрационный номер».
Не заполнять код нельзя — не дает сохранять. А прочерк поставить тоже не получится — контролируется уникальность кода.
Отключить заполненность кода можно программно:
&Вместо("ОбработкаПроверкиЗаполнения") Процедура БС_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) //Разрешаем записывать без наименования Иск = ПроверяемыеРеквизиты.Найти("Код"); Если Иск <> Неопределено Тогда ПроверяемыеРеквизиты.Удалить(Иск); КонецЕсли; ПродолжитьВызов(Отказ, ПроверяемыеРеквизиты); КонецПроцедуры
Но это не решает проблему уникальности кода, его отключить нельзя ни программно, ни расширением.
Тогда я решил, что код будет кодом и заполняться автоматом:
&После("ПередЗаписью") Процедура БС_ПередЗаписью(Отказ) //Чтобы отключить контроль кодов Если СокрЛП(ЭтотОбъект.Код) = "" Тогда УстановитьНовыйКод("ТС"); КонецЕсли; КонецПроцедуры
Завел отдельное поле «Регистрационный номер» длиной 16 символов — именно туда пользователь может прописывать регистрационный номер.
А в качестве представления используется наименование:
&Вместо("ОбработкаПолученияПредставления") Процедура БС_ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) СтандартнаяОбработка = ложь; Представление = "" + Данные.Наименование; КонецПроцедуры &Вместо("ОбработкаПолученияПолейПредставления") Процедура БС_ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) СтандартнаяОбработка = ложь; Поля.Добавить("Наименование"); //Поля.Добавить("Код"); КонецПроцедуры
Которое формируется так:
&НаКлиенте &Вместо("СформироватьНаименование") Процедура БС_СформироватьНаименование() //Осипов - отключаем автоматическое формирование наименования, наименование вводим вручную Если Объект.Наименование <> "" Тогда Возврат; КонецЕсли; Объект.Наименование = Объект.РегистрационныйНомер; Возврат; //не формируем наименование вручную ПродолжитьВызов(); КонецПроцедуры
Среда: УНФ 3.0.5.164 Объем: 0.6 час
Свежие комментарии