Проект

Общее

Профиль

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

Всеволод Дорофеев, 27.09.2019 10:12

1 1 Всеволод Дорофеев
h1. Использование дополнительных реквизитов и сведений
2 1 Всеволод Дорофеев
3 1 Всеволод Дорофеев
h3. Использование дополнительных реквизитов и сведений в БП 2.0
4 1 Всеволод Дорофеев
5 1 Всеволод Дорофеев
* Справочник ЗначенияСвойствОбъектов
6 1 Всеволод Дорофеев
* План видов характеристик НазначенияСвойствКатегорийОбъектов
7 1 Всеволод Дорофеев
* План видов характеристик СвойстваОбъектов
8 1 Всеволод Дорофеев
* Регистр сведений ЗначенияСвойствОбъектов
9 1 Всеволод Дорофеев
10 3 Всеволод Дорофеев
h3. Использование дополнительных реквизитов и сведений в БП 3.0, УТ11,..
11 1 Всеволод Дорофеев
12 1 Всеволод Дорофеев
* План видов характеристик ДополнительныеРеквизитыИСведения
13 1 Всеволод Дорофеев
* Справочник НаборыДополнительныхРеквизитовИСведений
14 1 Всеволод Дорофеев
* Регистр сведений ДополнительныеСведения
15 1 Всеволод Дорофеев
* Табличная часть "Дополнительные реквизиты" справочников и документов
16 1 Всеволод Дорофеев
17 1 Всеволод Дорофеев
Пример:
18 1 Всеволод Дорофеев
<pre>
19 1 Всеволод Дорофеев
	//получение доп.реквизита для объекта "Источник"
20 1 Всеволод Дорофеев
	ЭлементПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Серия", Истина);
21 1 Всеволод Дорофеев
	НайденнаяСтрока = Источник.ДополнительныеРеквизиты.Найти(ЭлементПВХ, "Свойство");
22 1 Всеволод Дорофеев
</pre>
23 2 Всеволод Дорофеев
24 2 Всеволод Дорофеев
<pre>
25 2 Всеволод Дорофеев
	//УТ11
26 2 Всеволод Дорофеев
	//Доп.сведение
27 2 Всеволод Дорофеев
	ЭлементПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Тип", Истина);
28 2 Всеволод Дорофеев
	МассивСвойств = новый массив;
29 2 Всеволод Дорофеев
	МассивСвойств.Добавить(ЭлементПВХ);	
30 2 Всеволод Дорофеев
	ТаблицаСвойств = УправлениеСвойствами.ПолучитьЗначенияСвойств(Источник, ложь, истина, МассивСвойств);
31 2 Всеволод Дорофеев
	НайденнаяСтрока = ТаблицаСвойств.Найти(ЭлементПВХ, "Свойство");
32 2 Всеволод Дорофеев
	Если не НайденнаяСтрока = Неопределено Тогда
33 2 Всеволод Дорофеев
		Значение = НайденнаяСтрока.Значение;
34 2 Всеволод Дорофеев
	КонецЕсли;
35 2 Всеволод Дорофеев
	
36 4 Всеволод Дорофеев
</pre>
37 2 Всеволод Дорофеев
38 4 Всеволод Дорофеев
<pre>
39 5 Всеволод Дорофеев
//Проверим и создадим строковый доп. реквизит к справочнику Номенклатура
40 5 Всеволод Дорофеев
&НаСервере
41 5 Всеволод Дорофеев
функция ПроверитьДобавитьСтроковыйДопРеквизитДляНоменклатуры(ИмяРеквизита, ДлинаСтроки=0)
42 5 Всеволод Дорофеев
43 5 Всеволод Дорофеев
    //ищем доп. реквизит по заголовку
44 5 Всеволод Дорофеев
    ЭлПВХ_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок",ИмяРеквизита);
45 5 Всеволод Дорофеев
    Если ЭлПВХ_Ссылка.Пустая() Тогда
46 5 Всеволод Дорофеев
        //если не найдено, то создадим новый
47 5 Всеволод Дорофеев
        ЭлПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
48 5 Всеволод Дорофеев
        ЭлПВХ.Заголовок = ИмяРеквизита;
49 5 Всеволод Дорофеев
        ЭлПВХ.НаборСвойств = Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура;
50 5 Всеволод Дорофеев
        ЭлПВХ.Наименование = ЭлПВХ.Заголовок+" ("+ЭлПВХ.НаборСвойств+")";
51 5 Всеволод Дорофеев
        ЭлПВХ.ТипЗначения = Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(ДлинаСтроки));
52 5 Всеволод Дорофеев
        ЭлПВХ.Записать();
53 5 Всеволод Дорофеев
        ЭлПВХ_Ссылка = ЭлПВХ.Ссылка;
54 5 Всеволод Дорофеев
    КонецЕсли;
55 5 Всеволод Дорофеев
56 5 Всеволод Дорофеев
    //проверим, что реквизит указан в наборе доп. реквизитов заказа покупателя
57 5 Всеволод Дорофеев
    НаборОб = Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура.ПолучитьОбъект();
58 5 Всеволод Дорофеев
    Если НаборОб.ДополнительныеРеквизиты.Найти(ЭлПВХ_Ссылка, "Свойство") = Неопределено Тогда
59 5 Всеволод Дорофеев
        //добавим реквизит в набор
60 5 Всеволод Дорофеев
        СтрНаборОб = НаборОб.ДополнительныеРеквизиты.Добавить();
61 5 Всеволод Дорофеев
        СтрНаборОб.Свойство = ЭлПВХ_Ссылка;
62 5 Всеволод Дорофеев
    КонецЕсли;
63 5 Всеволод Дорофеев
    Если НаборОб.Модифицированность() Тогда
64 5 Всеволод Дорофеев
        //запишем при необходимости
65 5 Всеволод Дорофеев
        НаборОб.Записать();
66 5 Всеволод Дорофеев
    КонецЕсли;
67 5 Всеволод Дорофеев
	Возврат ЭлПВХ_Ссылка;
68 5 Всеволод Дорофеев
КонецФункции
69 5 Всеволод Дорофеев
</pre>
70 5 Всеволод Дорофеев
71 5 Всеволод Дорофеев
72 5 Всеволод Дорофеев
<pre>
73 4 Всеволод Дорофеев
//Установка доп.реквизита Объекта
74 4 Всеволод Дорофеев
&НаСервере
75 4 Всеволод Дорофеев
Процедура УстановитьДополнительныйРеквизитОбъекта(Объект, ИмяРеквизита, ЗначениеРеквизита)
76 4 Всеволод Дорофеев
77 4 Всеволод Дорофеев
    ЭлПВХ_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок",ИмяРеквизита);
78 4 Всеволод Дорофеев
    Если ЭлПВХ_Ссылка.Пустая() Тогда
79 4 Всеволод Дорофеев
        Сообщить("Не найден доп. реквизит "+ИмяРеквизита+", значение не установлено!");
80 4 Всеволод Дорофеев
        Возврат;
81 4 Всеволод Дорофеев
    КонецЕсли;
82 4 Всеволод Дорофеев
83 4 Всеволод Дорофеев
    СтрДопРеквизиты = Объект.ДополнительныеРеквизиты.Найти(ЭлПВХ_Ссылка, "Свойство");
84 4 Всеволод Дорофеев
    Если СтрДопРеквизиты = Неопределено Тогда
85 4 Всеволод Дорофеев
        СтрДопРеквизиты = Объект.ДополнительныеРеквизиты.Добавить();
86 4 Всеволод Дорофеев
    КонецЕсли;
87 4 Всеволод Дорофеев
    СтрДопРеквизиты.Свойство = ЭлПВХ_Ссылка;
88 4 Всеволод Дорофеев
    СтрДопРеквизиты.Значение = ЗначениеРеквизита;
89 4 Всеволод Дорофеев
90 4 Всеволод Дорофеев
КонецПроцедуры
91 2 Всеволод Дорофеев
</pre>
92 6 Всеволод Дорофеев
93 6 Всеволод Дорофеев
h3. Установка доп.сведения Объекта
94 6 Всеволод Дорофеев
95 6 Всеволод Дорофеев
<pre>
96 6 Всеволод Дорофеев
&НаСервереБезКонтекста
97 6 Всеволод Дорофеев
Функция ЗаписатьЗначениеДополнительногоСведения(Объект, Свойство, Значение)
98 6 Всеволод Дорофеев
	
99 6 Всеволод Дорофеев
	Попытка
100 6 Всеволод Дорофеев
		УстановитьПривилегированныйРежим(Истина);
101 6 Всеволод Дорофеев
        НаборЗаписей = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();
102 6 Всеволод Дорофеев
103 6 Всеволод Дорофеев
        НаборЗаписей.Отбор.Объект.Установить(Объект);
104 6 Всеволод Дорофеев
        НаборЗаписей.Отбор.Свойство.Установить(Свойство);
105 6 Всеволод Дорофеев
106 6 Всеволод Дорофеев
        НоваяСтрокаНабора = НаборЗаписей.Добавить();
107 6 Всеволод Дорофеев
108 6 Всеволод Дорофеев
        НоваяСтрокаНабора.Объект = Объект;
109 6 Всеволод Дорофеев
        НоваяСтрокаНабора.Свойство = Свойство;
110 6 Всеволод Дорофеев
111 6 Всеволод Дорофеев
        НоваяСтрокаНабора.Значение = Значение;
112 6 Всеволод Дорофеев
113 6 Всеволод Дорофеев
        НаборЗаписей.Записать();
114 6 Всеволод Дорофеев
115 6 Всеволод Дорофеев
        Возврат Истина;
116 6 Всеволод Дорофеев
    Исключение
117 6 Всеволод Дорофеев
        Возврат Ложь;
118 6 Всеволод Дорофеев
    КонецПопытки;
119 6 Всеволод Дорофеев
КонецФункции
120 6 Всеволод Дорофеев
121 6 Всеволод Дорофеев
</pre>
122 7 Всеволод Дорофеев
123 7 Всеволод Дорофеев
h3. Поиск Объекта по значению доп.сведения
124 7 Всеволод Дорофеев
125 7 Всеволод Дорофеев
<pre>
126 7 Всеволод Дорофеев
&НаСервереБезКонтекста
127 7 Всеволод Дорофеев
Функция НайтиОбъектПоДопСведениюСервере(Свойство, Значение)
128 7 Всеволод Дорофеев
	Рез = неопределено;
129 7 Всеволод Дорофеев
	
130 7 Всеволод Дорофеев
	Запрос = Новый Запрос;
131 7 Всеволод Дорофеев
	Запрос.Текст = 
132 7 Всеволод Дорофеев
		"ВЫБРАТЬ
133 7 Всеволод Дорофеев
		|	ДополнительныеСведения.Объект КАК Объект
134 7 Всеволод Дорофеев
		|ИЗ
135 7 Всеволод Дорофеев
		|	РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
136 7 Всеволод Дорофеев
		|ГДЕ
137 7 Всеволод Дорофеев
		|	ДополнительныеСведения.Свойство = &Свойство
138 7 Всеволод Дорофеев
		|	И ДополнительныеСведения.Значение = &Значение";
139 7 Всеволод Дорофеев
	
140 7 Всеволод Дорофеев
	Запрос.УстановитьПараметр("Значение", Значение);
141 7 Всеволод Дорофеев
	Запрос.УстановитьПараметр("Свойство", Свойство);
142 7 Всеволод Дорофеев
	
143 7 Всеволод Дорофеев
	РезультатЗапроса = Запрос.Выполнить();
144 7 Всеволод Дорофеев
	
145 7 Всеволод Дорофеев
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
146 7 Всеволод Дорофеев
	
147 7 Всеволод Дорофеев
	Если ВыборкаДетальныеЗаписи.Следующий() Тогда
148 7 Всеволод Дорофеев
		Рез = ВыборкаДетальныеЗаписи.Объект; 
149 7 Всеволод Дорофеев
	КонецЕсли;
150 7 Всеволод Дорофеев
	Возврат Рез;
151 7 Всеволод Дорофеев
152 7 Всеволод Дорофеев
КонецФункции
153 7 Всеволод Дорофеев
154 7 Всеволод Дорофеев
</pre>