Проект

Общее

Профиль

Использование дополнительных реквизитов и сведений » История » Версия 5

« Предыдущее - Версия 5/14 (Разница(diff)) - Следующее » - Текущая версия
Всеволод Дорофеев, 05.02.2017 14:15


Использование дополнительных реквизитов и сведений

Использование дополнительных реквизитов и сведений в БП 2.0

  • Справочник ЗначенияСвойствОбъектов
  • План видов характеристик НазначенияСвойствКатегорийОбъектов
  • План видов характеристик СвойстваОбъектов
  • Регистр сведений ЗначенияСвойствОбъектов

Использование дополнительных реквизитов и сведений в БП 3.0, УТ11,..

  • План видов характеристик ДополнительныеРеквизитыИСведения
  • Справочник НаборыДополнительныхРеквизитовИСведений
  • Регистр сведений ДополнительныеСведения
  • Табличная часть "Дополнительные реквизиты" справочников и документов

Пример:

    //получение доп.реквизита для объекта "Источник" 
    ЭлементПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Серия", Истина);
    НайденнаяСтрока = Источник.ДополнительныеРеквизиты.Найти(ЭлементПВХ, "Свойство");

    //УТ11
    //Доп.сведение
    ЭлементПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Тип", Истина);
    МассивСвойств = новый массив;
    МассивСвойств.Добавить(ЭлементПВХ);    
    ТаблицаСвойств = УправлениеСвойствами.ПолучитьЗначенияСвойств(Источник, ложь, истина, МассивСвойств);
    НайденнаяСтрока = ТаблицаСвойств.Найти(ЭлементПВХ, "Свойство");
    Если не НайденнаяСтрока = Неопределено Тогда
        Значение = НайденнаяСтрока.Значение;
    КонецЕсли;

//Проверим и создадим строковый доп. реквизит к справочнику Номенклатура
&НаСервере
функция ПроверитьДобавитьСтроковыйДопРеквизитДляНоменклатуры(ИмяРеквизита, ДлинаСтроки=0)

    //ищем доп. реквизит по заголовку
    ЭлПВХ_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок",ИмяРеквизита);
    Если ЭлПВХ_Ссылка.Пустая() Тогда
        //если не найдено, то создадим новый
        ЭлПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
        ЭлПВХ.Заголовок = ИмяРеквизита;
        ЭлПВХ.НаборСвойств = Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура;
        ЭлПВХ.Наименование = ЭлПВХ.Заголовок+" ("+ЭлПВХ.НаборСвойств+")";
        ЭлПВХ.ТипЗначения = Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(ДлинаСтроки));
        ЭлПВХ.Записать();
        ЭлПВХ_Ссылка = ЭлПВХ.Ссылка;
    КонецЕсли;

    //проверим, что реквизит указан в наборе доп. реквизитов заказа покупателя
    НаборОб = Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура.ПолучитьОбъект();
    Если НаборОб.ДополнительныеРеквизиты.Найти(ЭлПВХ_Ссылка, "Свойство") = Неопределено Тогда
        //добавим реквизит в набор
        СтрНаборОб = НаборОб.ДополнительныеРеквизиты.Добавить();
        СтрНаборОб.Свойство = ЭлПВХ_Ссылка;
    КонецЕсли;
    Если НаборОб.Модифицированность() Тогда
        //запишем при необходимости
        НаборОб.Записать();
    КонецЕсли;
    Возврат ЭлПВХ_Ссылка;
КонецФункции
//Установка доп.реквизита Объекта
&НаСервере
Процедура УстановитьДополнительныйРеквизитОбъекта(Объект, ИмяРеквизита, ЗначениеРеквизита)

    ЭлПВХ_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок",ИмяРеквизита);
    Если ЭлПВХ_Ссылка.Пустая() Тогда
        Сообщить("Не найден доп. реквизит "+ИмяРеквизита+", значение не установлено!");
        Возврат;
    КонецЕсли;

    СтрДопРеквизиты = Объект.ДополнительныеРеквизиты.Найти(ЭлПВХ_Ссылка, "Свойство");
    Если СтрДопРеквизиты = Неопределено Тогда
        СтрДопРеквизиты = Объект.ДополнительныеРеквизиты.Добавить();
    КонецЕсли;
    СтрДопРеквизиты.Свойство = ЭлПВХ_Ссылка;
    СтрДопРеквизиты.Значение = ЗначениеРеквизита;

КонецПроцедуры