gifts2017

ERP. Отображение доп. реквизитов при создании номенклатуры в соответствии с Видом номенклатуры

Опубликовал Дмитрий Сидоренко (dsdred) в раздел Обработки - Обработка справочников

В ЕРП есть проблемы… Да, их много. Сегодня используя Расширение конфигурации решим одну из них.
Я не утверждаю, что эта проблема актуальна всем, но нашей компании она актуальна. Проблема связана с отображением доп. реквизитов при создании номенклатуры на основании вида номенклатуры.

В чем, собственно, проблема?

Проблема вот в чем. Когда вы создаете новый вид номенклатуры или правите уже созданный на закладке «Настройка создания», Вы настраиваете, какие доп. реквизиты нужно отображать при создании и какие нужно контролировать на заполнение и на уникальность. Выставляем нужные галочки и создаем номенклатуру, выбираем вид… Что мы видим? Видим мы то, что галочка в поле «Отображать при создании» не функционирует или несет абсолютно другой какой-то глубинный смысл.

Покажу все на примере вида номенклатуры «Кабели силовые NYM»

Теперь смотрим закладку «Настройка Создания». Видим, что «Мин. поставка» не должна отображаться при создании.

Создаем номенклатуру и выбираем вид «Кабели силовые NYM» и наблюдаем следующее.

И как это понимать? Лично я понимаю это словом «баг». Хотя разработчики скорее всего скажут «фича».


Начнем.

Где хранятся данные?

Справочник «ВидыНоменклатуры» в табличной части «РеквизитыДляКонтроляНоменклатуры»

Какую форму нужно доработать?

Справочник «Номенклатура», форма «ФормаЭлемента»

 

Соответственно создаем Расширение конфигурации и добавляем в него форму и таблицу с реквизитами.

Что еще нам понадобится?

Набор свойств – Справочник «НаборыДополнительныхРеквизитовИСведений»

Планы видов характеристик «ДополнительныеРеквизитыИСведения»

 

Сразу оговорюсь, видимость истина лично я буду делать для тех доп. реквизитов из табличной части «РеквизитыДляКонтроляНоменклатуры», у которых ОтображатьПриСоздании или ОбязателенДляЗаполнения равен Истине.

Собственно, запрос для реквизитов берем из конфигурации и делаем небольшую доработку:

ВЫБРАТЬ
      НаборыДополнительныхРеквизитов.Свойство КАК Свойство,
      ВидыНоменклатуры.НаборСвойств КАК НаборСвойств,
      НаборыДополнительныхРеквизитов.Свойство.Заголовок КАК ПредставлениеРеквизита,
      НоменклатураДополнительныеРеквизиты.Значение КАК Значение,
      ЛОЖЬ КАК ОбщееСвойство,
      НаборыДополнительныхРеквизитов.НомерСтроки КАК НомерСтрокиДляСортировки
ПОМЕСТИТЬ НаборыДопРеквезитов
ИЗ
      Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
                      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыДополнительныхРеквизитов
                      ПО (ВидыНоменклатуры.НаборСвойств = НаборыДополнительныхРеквизитов.Ссылка)
                      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
                      ПО (НоменклатураДополнительныеРеквизиты.Ссылка = &Номенклатура)
                                      И (НаборыДополнительныхРеквизитов.Свойство = НоменклатураДополнительныеРеквизиты.Свойство)
ГДЕ
      НЕ НаборыДополнительныхРеквизитов.Свойство.ЭтоДополнительноеСведение
      И ВидыНоменклатуры.Ссылка = &ВидНоменклатуры
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
      НаборыДополнительныхРеквизитов.Свойство,
      ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура_Общие),
      НаборыДополнительныхРеквизитов.Свойство.Заголовок,
      НоменклатураДополнительныеРеквизиты.Значение,
      ИСТИНА,
      НаборыДополнительныхРеквизитов.НомерСтроки
ИЗ
      Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыДополнительныхРеквизитов
                      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
                      ПО (НоменклатураДополнительныеРеквизиты.Ссылка = &Номенклатура)
                                      И НаборыДополнительныхРеквизитов.Свойство = НоменклатураДополнительныеРеквизиты.Свойство
ГДЕ
      НЕ НаборыДополнительныхРеквизитов.Свойство.ЭтоДополнительноеСведение
      И НаборыДополнительныхРеквизитов.Ссылка = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура_Общие)
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
      НаборыДопРеквезитов.Свойство,
      НаборыДопРеквезитов.НаборСвойств,
      ВЫБОР
                      КОГДА ВидыНоменклатурыРеквизитыДляКонтроляНоменклатуры.ОтображатьПриСоздании
ИЛИ ВидыНоменклатурыРеквизитыДляКонтроляНоменклатуры.ОбязателенДляЗаполнения
                                      ТОГДА ИСТИНА
                      ИНАЧЕ ЛОЖЬ
      КОНЕЦ КАК Видимость
ИЗ
      НаборыДопРеквезитов КАК НаборыДопРеквезитов
                      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.РеквизитыДляКонтроляНоменклатуры КАК ВидыНоменклатурыРеквизитыДляКонтроляНоменклатуры
                      ПО НаборыДопРеквезитов.Свойство.Ссылка = ВидыНоменклатурыРеквизитыДляКонтроляНоменклатуры.Свойство.Ссылка
ГДЕ
      ВидыНоменклатурыРеквизитыДляКонтроляНоменклатуры.Ссылка = &ВидНоменклатуры

 

Осталось в нужный момент на форме найти необходимый доп реквизит и сделать его видимым или нет.

Делаться это должно при открытии формы и при изменении вида номенклатуры. Учтите, что вид номенклатуры на форме меняется в двух местах так как есть возможность показать все реквизиты или только основные. Собственно, проверяем новый ли элемент, заполнен ли вид номенклатуры и используем УстановитьВыполнениеПослеОбработчиковСобытия.

 

С реквизитами все понятно, но с допами, как оказалось, не все так просто. В общем, нам надо получить такое же имя доп. реквизитов, которое они имеют на форме.

 

Это делается так:

ИмяРеквизитаЗначение = "ДополнительныйРеквизитЗначение_"
+ СтрЗаменить(ВРег(Строка(ДопРеквизит.НаборСвойств.УникальныйИдентификатор())), "-", "x")
+ "_"
+ СтрЗаменить(ВРег(Строка(ДопРеквизит.Свойство.УникальныйИдентификатор())), "-", "x");

 

Вот и все тонкости. Выкладываю исходник для ЕРП 2.1.3.136. Спасибо за внимание, всем удачи!

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
ERP2.1.3.1
.cfe 108,23Kb
21.05.16
1
.cfe 1 108,23Kb 1 Скачать

См. также

Contragent+ 5.0 от 2 500
Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа