Всем привет!
Столкнулся с задачей. Необходимо в карточке номенклатуры перед записью проверять заполнение реквизитов (Необходимо проверять поле НаименованиеДляПечати)
p.s. Это могут быть и другие реквизиты, в том числе и нетиповые.
Проверка заполнения типовая сделана программно в процедуре модуля формы элемента - ПроверитьЗаполнениеОбязательныхРеквизитов(Отказ)
Я покажу пример, как это сделать через расширение.
Как видно в коде данные для проверки берутся из таблицы - ТаблицаНастроекРеквизитов
Находим поиском, где заполняется эта таблица. Это функция вызывается из модуля менеджера Номенклатуры.
Далее нам нужно эту функцию из модуля менеджера добавить в расширение с вызовом &Вместо("ТаблицаНастроекРеквизитов")
Эта функция возвращает таблицу значений.
Далее нам нужно найти строку с этим реквизитом и поменять значение ЗаполнятьОбязательно на Истина.
В результате у нас получится вот такой код в расширении.
В МассивРеквизитов можно добавить не только НаименованиеПолное, но и другие реквизиты, в том числе и нетиповые.
&Вместо("ТаблицаНастроекРеквизитов") Функция ДМ_ТаблицаНастроекРеквизитов(ВидНоменклатуры, ТипНоменклатуры, ОсобенностьУчета, ИспользованиеХарактеристик, ИспользоватьСрокГодностиСерии, ВладелецРеквизитов) // Вставить содержимое метода. Результат = ПродолжитьВызов(ВидНоменклатуры, ТипНоменклатуры, ОсобенностьУчета, ИспользованиеХарактеристик, ИспользоватьСрокГодностиСерии, ВладелецРеквизитов); //++ Андрей //обязательная проверка реквизитов НаименованиеПолное и НоменклатураПоставщика МассивРеквизитов = Новый Массив; МассивРеквизитов.Добавить("НаименованиеПолное"); Для Каждого Стр Из МассивРеквизитов Цикл СтрокаПоиска = Результат.Найти(Стр, "ИмяРеквизита"); Если СтрокаПоиска <> Неопределено Тогда СтрокаПоиска.ЗаполнятьОбязательно = Истина; КонецЕсли; КонецЦикла; //-- Андрей Возврат Результат; КонецФункции
Спасибо, что дочитали до конца.