В чем, собственно, проблема?
Проблема вот в чем. Когда вы создаете новый вид номенклатуры или правите уже созданный на закладке «Настройка создания», Вы настраиваете, какие доп. реквизиты нужно отображать при создании и какие нужно контролировать на заполнение и на уникальность. Выставляем нужные галочки и создаем номенклатуру, выбираем вид… Что мы видим? Видим мы то, что галочка в поле «Отображать при создании» не функционирует или несет абсолютно другой какой-то глубинный смысл.
Покажу все на примере вида номенклатуры «Кабели силовые NYM»
Теперь смотрим закладку «Настройка Создания». Видим, что «Мин. поставка» не должна отображаться при создании.
Создаем номенклатуру и выбираем вид «Кабели силовые NYM» и наблюдаем следующее.
И как это понимать? Лично я понимаю это словом «баг». Хотя разработчики скорее всего скажут «фича».
Начнем.
Где хранятся данные?
Справочник «ВидыНоменклатуры» в табличной части «РеквизитыДляКонтроляНоменклатуры»
Какую форму нужно доработать?
Справочник «Номенклатура», форма «ФормаЭлемента»
Соответственно создаем Расширение конфигурации и добавляем в него форму и таблицу с реквизитами.
Что еще нам понадобится?
Набор свойств – Справочник «НаборыДополнительныхРеквизитовИСведений»
Планы видов характеристик «ДополнительныеРеквизитыИСведения»
Сразу оговорюсь, видимость истина лично я буду делать для тех доп. реквизитов из табличной части «РеквизитыДляКонтроляНоменклатуры», у которых ОтображатьПриСоздании или ОбязателенДляЗаполнения равен Истине.
Собственно, запрос для реквизитов берем из конфигурации и делаем небольшую доработку:
ВЫБРАТЬ
НаборыДополнительныхРеквизитов.Свойство КАК Свойство,
ВидыНоменклатуры.НаборСвойств КАК НаборСвойств,
НаборыДополнительныхРеквизитов.Свойство.Заголовок КАК ПредставлениеРеквизита,
НоменклатураДополнительныеРеквизиты.Значение КАК Значение,
ЛОЖЬ КАК ОбщееСвойство,
НаборыДополнительныхРеквизитов.НомерСтроки КАК НомерСтрокиДляСортировки
ПОМЕСТИТЬ НаборыДопРеквезитов
ИЗ
Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыДополнительныхРеквизитов
ПО (ВидыНоменклатуры.НаборСвойств = НаборыДополнительныхРеквизитов.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
ПО (НоменклатураДополнительныеРеквизиты.Ссылка = &Номенклатура)
И (НаборыДополнительныхРеквизитов.Свойство = НоменклатураДополнительныеРеквизиты.Свойство)
ГДЕ
НЕ НаборыДополнительныхРеквизитов.Свойство.ЭтоДополнительноеСведение
И ВидыНоменклатуры.Ссылка = &ВидНоменклатуры
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
НаборыДополнительныхРеквизитов.Свойство,
ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура_Общие),
НаборыДополнительныхРеквизитов.Свойство.Заголовок,
НоменклатураДополнительныеРеквизиты.Значение,
ИСТИНА,
НаборыДополнительныхРеквизитов.НомерСтроки
ИЗ
Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыДополнительныхРеквизитов
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
ПО (НоменклатураДополнительныеРеквизиты.Ссылка = &Номенклатура)
И НаборыДополнительныхРеквизитов.Свойство = НоменклатураДополнительныеРеквизиты.Свойство
ГДЕ
НЕ НаборыДополнительныхРеквизитов.Свойство.ЭтоДополнительноеСведение
И НаборыДополнительныхРеквизитов.Ссылка = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура_Общие)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
НаборыДопРеквезитов.Свойство,
НаборыДопРеквезитов.НаборСвойств,
ВЫБОР
КОГДА ВидыНоменклатурыРеквизитыДляКонтроляНоменклатуры.ОтображатьПриСоздании
ИЛИ ВидыНоменклатурыРеквизитыДляКонтроляНоменклатуры.ОбязателенДляЗаполнения
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК Видимость
ИЗ
НаборыДопРеквезитов КАК НаборыДопРеквезитов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.РеквизитыДляКонтроляНоменклатуры КАК ВидыНоменклатурыРеквизитыДляКонтроляНоменклатуры
ПО НаборыДопРеквезитов.Свойство.Ссылка = ВидыНоменклатурыРеквизитыДляКонтроляНоменклатуры.Свойство.Ссылка
ГДЕ
ВидыНоменклатурыРеквизитыДляКонтроляНоменклатуры.Ссылка = &ВидНоменклатуры
Осталось в нужный момент на форме найти необходимый доп реквизит и сделать его видимым или нет.
Делаться это должно при открытии формы и при изменении вида номенклатуры. Учтите, что вид номенклатуры на форме меняется в двух местах так как есть возможность показать все реквизиты или только основные. Собственно, проверяем новый ли элемент, заполнен ли вид номенклатуры и используем УстановитьВыполнениеПослеОбработчиковСобытия.
С реквизитами все понятно, но с допами, как оказалось, не все так просто. В общем, нам надо получить такое же имя доп. реквизитов, которое они имеют на форме.
Это делается так:
ИмяРеквизитаЗначение = "ДополнительныйРеквизитЗначение_"
+ СтрЗаменить(ВРег(Строка(ДопРеквизит.НаборСвойств.УникальныйИдентификатор())), "-", "x")
+ "_"
+ СтрЗаменить(ВРег(Строка(ДопРеквизит.Свойство.УникальныйИдентификатор())), "-", "x");
Вот и все тонкости. Выкладываю исходник для ЕРП 2.1.3.136. Спасибо за внимание, всем удачи!