Что бы сделать поле обязательным для заполнения, достаточно в свойствах реквизита выставить «Выдавать ошибку» для свойства «Проверка заполнения», а если нужно сделать, что бы поле не было обязательным, то у этого свойства нужно выставить «Не проверять».

А что, если для некоторых элементов, к примеру Справочника, нужно делать проверку заполнения, а для других элементов того же справочника проверку делать не нужно? Т.е. в зависимости от какого-либо условия делается проверка или не делается.
Пример.
Создаётся справочник товары, где будет два дополнительных реквизита:
- ВидТовара, с типом Перечисления.ВидыТоваров. Соответственно нужно создать такое перечисление, где в качестве значений установим — Товар и Комплект.
- КоличествоВКомплекте с типом Число. И сделаем поле обязательным для заполнения.
Соответственно необходимо делать проверку заполнения КоличествоВКомплекте только в том случае, если в качестве вида товара будет установлено Комплект.
Для этого необходимо зайти в Модуль объекта Справочника товары и написать следующий код:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) //Поиск в массиве ПроверяемыеРеквизиты реквизит, который нужно проверять НомерВМассиве = ПроверяемыеРеквизиты.Найти("КоличествоВКомплекте"); //Устанавливаем истину (т.е. не проверяем) в случае, если Вид товара не является Комплектом ЭтоНЕКомплект = ВидТовара <> Перечисления.ВидТовара.Комплект; Если НомерВМассиве <> Неопределено И ЭтоНЕКомплект Тогда //Удаляем из массива проверяемых реквизитов ПроверяемыеРеквизиты.Удалить(НомерВМассиве); КонецЕсли; КонецПроцедуры |
Всё. Теперь, в случае если Вид товара установлен в значение Комплект, то проверка заполнения будет осуществляться, а если нет — то не будет.
Но этого мало. Надо же и на форме как то показать, что является поле обязательным или нет. Либо вообще скрыть поле КоличествоВКомплекте.
Для этого в модуле формы необходимо написать следующий код:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ВидТовараПриИзмененииНаСервере(); КонецПроцедуры &НаСервере Процедура ВидТовараПриИзмененииНаСервере() //Истина, если выбран Комплект ЭтоКомплект = Объект.ВидТовара = Перечисления.ВидТовара.Комплект; //Убираем с формы Элемент //Элементы.КоличествоВКомплекте.Видимость = ЭтоКомплект; //Убираем подчеркивание у Элемента Элементы.КоличествоВКомплекте.АвтоОтметкаНезаполненного = ЭтоКомплект; Элементы.КоличествоВКомплекте.ОтметкаНезаполненного = ЭтоКомплект; КонецПроцедуры &НаКлиенте Процедура ВидТовараПриИзменении(Элемент) ВидТовараПриИзмененииНаСервере(); КонецПроцедуры |
Соответственно, если нужно убрать элемент с формы, то снимаем комментарий с 4 строчки кода и ставим у двух последних, а если нужно убрать подчеркивание, то так и оставляем.
