Проект

Общее

Профиль

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

Всеволод Дорофеев, 12.04.2022 01:23

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 9 Всеволод Дорофеев
* Справочник ЗначенияСвойствОбъектов (Дополнительные значения)
14 9 Всеволод Дорофеев
* Справочник ЗначенияСвойствОбъектовИерархия (Дополнительные значения (иерархия))
15 1 Всеволод Дорофеев
* Справочник НаборыДополнительныхРеквизитовИСведений
16 1 Всеволод Дорофеев
* Регистр сведений ДополнительныеСведения
17 1 Всеволод Дорофеев
* Табличная часть "Дополнительные реквизиты" справочников и документов
18 1 Всеволод Дорофеев
19 10 Всеволод Дорофеев
*Использование для разных доп.реквизитов единого набора Значений дополнительных реквизитов.*
20 10 Всеволод Дорофеев
21 10 Всеволод Дорофеев
Для этого для дополнительного реквизита (ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения)  установить реквизит ВладелецДополнительныхЗначений = [ПВХ.ДРС владелец Значениий доп.реквизитов]
22 10 Всеволод Дорофеев
23 10 Всеволод Дорофеев
24 11 Всеволод Дорофеев
h3. Примеры работы
25 11 Всеволод Дорофеев
26 1 Всеволод Дорофеев
<pre>
27 13 Всеволод Дорофеев
	//Получение доп.реквизита при выгрузке
28 12 Всеволод Дорофеев
	ЗначениеДопРеквизита = УправлениеСвойствами.ЗначениеСвойства(ДанныеИБ.Ссылка, "ДокументПолучен_1571e91ee3854e3e93c31762011f3a4d"); 
29 12 Всеволод Дорофеев
	
30 12 Всеволод Дорофеев
	AdditionalInfoВставить(ДанныеXDTO, "ОригиналПолучен", ЗначениеЗаполнено(ЗначениеДопРеквизита));
31 12 Всеволод Дорофеев
32 12 Всеволод Дорофеев
</pre>
33 12 Всеволод Дорофеев
34 12 Всеволод Дорофеев
35 12 Всеволод Дорофеев
<pre>
36 1 Всеволод Дорофеев
	//получение доп.реквизита для объекта "Источник"
37 1 Всеволод Дорофеев
	ЭлементПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Серия", Истина);
38 1 Всеволод Дорофеев
	НайденнаяСтрока = Источник.ДополнительныеРеквизиты.Найти(ЭлементПВХ, "Свойство");
39 1 Всеволод Дорофеев
</pre>
40 2 Всеволод Дорофеев
41 2 Всеволод Дорофеев
<pre>
42 2 Всеволод Дорофеев
	//УТ11
43 2 Всеволод Дорофеев
	//Доп.сведение
44 2 Всеволод Дорофеев
	ЭлементПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Тип", Истина);
45 2 Всеволод Дорофеев
	МассивСвойств = новый массив;
46 2 Всеволод Дорофеев
	МассивСвойств.Добавить(ЭлементПВХ);	
47 2 Всеволод Дорофеев
	ТаблицаСвойств = УправлениеСвойствами.ПолучитьЗначенияСвойств(Источник, ложь, истина, МассивСвойств);
48 2 Всеволод Дорофеев
	НайденнаяСтрока = ТаблицаСвойств.Найти(ЭлементПВХ, "Свойство");
49 2 Всеволод Дорофеев
	Если не НайденнаяСтрока = Неопределено Тогда
50 2 Всеволод Дорофеев
		Значение = НайденнаяСтрока.Значение;
51 2 Всеволод Дорофеев
	КонецЕсли;
52 2 Всеволод Дорофеев
	
53 4 Всеволод Дорофеев
</pre>
54 2 Всеволод Дорофеев
55 4 Всеволод Дорофеев
<pre>
56 5 Всеволод Дорофеев
//Проверим и создадим строковый доп. реквизит к справочнику Номенклатура
57 5 Всеволод Дорофеев
&НаСервере
58 5 Всеволод Дорофеев
функция ПроверитьДобавитьСтроковыйДопРеквизитДляНоменклатуры(ИмяРеквизита, ДлинаСтроки=0)
59 5 Всеволод Дорофеев
60 5 Всеволод Дорофеев
    //ищем доп. реквизит по заголовку
61 5 Всеволод Дорофеев
    ЭлПВХ_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок",ИмяРеквизита);
62 5 Всеволод Дорофеев
    Если ЭлПВХ_Ссылка.Пустая() Тогда
63 5 Всеволод Дорофеев
        //если не найдено, то создадим новый
64 5 Всеволод Дорофеев
        ЭлПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
65 5 Всеволод Дорофеев
        ЭлПВХ.Заголовок = ИмяРеквизита;
66 5 Всеволод Дорофеев
        ЭлПВХ.НаборСвойств = Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура;
67 5 Всеволод Дорофеев
        ЭлПВХ.Наименование = ЭлПВХ.Заголовок+" ("+ЭлПВХ.НаборСвойств+")";
68 5 Всеволод Дорофеев
        ЭлПВХ.ТипЗначения = Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(ДлинаСтроки));
69 5 Всеволод Дорофеев
        ЭлПВХ.Записать();
70 5 Всеволод Дорофеев
        ЭлПВХ_Ссылка = ЭлПВХ.Ссылка;
71 5 Всеволод Дорофеев
    КонецЕсли;
72 5 Всеволод Дорофеев
73 5 Всеволод Дорофеев
    //проверим, что реквизит указан в наборе доп. реквизитов заказа покупателя
74 5 Всеволод Дорофеев
    НаборОб = Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура.ПолучитьОбъект();
75 5 Всеволод Дорофеев
    Если НаборОб.ДополнительныеРеквизиты.Найти(ЭлПВХ_Ссылка, "Свойство") = Неопределено Тогда
76 5 Всеволод Дорофеев
        //добавим реквизит в набор
77 5 Всеволод Дорофеев
        СтрНаборОб = НаборОб.ДополнительныеРеквизиты.Добавить();
78 5 Всеволод Дорофеев
        СтрНаборОб.Свойство = ЭлПВХ_Ссылка;
79 5 Всеволод Дорофеев
    КонецЕсли;
80 5 Всеволод Дорофеев
    Если НаборОб.Модифицированность() Тогда
81 5 Всеволод Дорофеев
        //запишем при необходимости
82 5 Всеволод Дорофеев
        НаборОб.Записать();
83 5 Всеволод Дорофеев
    КонецЕсли;
84 5 Всеволод Дорофеев
	Возврат ЭлПВХ_Ссылка;
85 5 Всеволод Дорофеев
КонецФункции
86 5 Всеволод Дорофеев
</pre>
87 5 Всеволод Дорофеев
88 5 Всеволод Дорофеев
89 5 Всеволод Дорофеев
<pre>
90 4 Всеволод Дорофеев
//Установка доп.реквизита Объекта
91 4 Всеволод Дорофеев
&НаСервере
92 4 Всеволод Дорофеев
Процедура УстановитьДополнительныйРеквизитОбъекта(Объект, ИмяРеквизита, ЗначениеРеквизита)
93 4 Всеволод Дорофеев
94 4 Всеволод Дорофеев
    ЭлПВХ_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок",ИмяРеквизита);
95 4 Всеволод Дорофеев
    Если ЭлПВХ_Ссылка.Пустая() Тогда
96 4 Всеволод Дорофеев
        Сообщить("Не найден доп. реквизит "+ИмяРеквизита+", значение не установлено!");
97 4 Всеволод Дорофеев
        Возврат;
98 4 Всеволод Дорофеев
    КонецЕсли;
99 4 Всеволод Дорофеев
100 4 Всеволод Дорофеев
    СтрДопРеквизиты = Объект.ДополнительныеРеквизиты.Найти(ЭлПВХ_Ссылка, "Свойство");
101 4 Всеволод Дорофеев
    Если СтрДопРеквизиты = Неопределено Тогда
102 4 Всеволод Дорофеев
        СтрДопРеквизиты = Объект.ДополнительныеРеквизиты.Добавить();
103 4 Всеволод Дорофеев
    КонецЕсли;
104 4 Всеволод Дорофеев
    СтрДопРеквизиты.Свойство = ЭлПВХ_Ссылка;
105 4 Всеволод Дорофеев
    СтрДопРеквизиты.Значение = ЗначениеРеквизита;
106 4 Всеволод Дорофеев
107 4 Всеволод Дорофеев
КонецПроцедуры
108 2 Всеволод Дорофеев
</pre>
109 6 Всеволод Дорофеев
110 6 Всеволод Дорофеев
h3. Установка доп.сведения Объекта
111 6 Всеволод Дорофеев
112 6 Всеволод Дорофеев
<pre>
113 6 Всеволод Дорофеев
&НаСервереБезКонтекста
114 6 Всеволод Дорофеев
Функция ЗаписатьЗначениеДополнительногоСведения(Объект, Свойство, Значение)
115 6 Всеволод Дорофеев
	
116 6 Всеволод Дорофеев
	Попытка
117 6 Всеволод Дорофеев
		УстановитьПривилегированныйРежим(Истина);
118 6 Всеволод Дорофеев
        НаборЗаписей = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();
119 6 Всеволод Дорофеев
120 6 Всеволод Дорофеев
        НаборЗаписей.Отбор.Объект.Установить(Объект);
121 6 Всеволод Дорофеев
        НаборЗаписей.Отбор.Свойство.Установить(Свойство);
122 6 Всеволод Дорофеев
123 6 Всеволод Дорофеев
        НоваяСтрокаНабора = НаборЗаписей.Добавить();
124 6 Всеволод Дорофеев
125 6 Всеволод Дорофеев
        НоваяСтрокаНабора.Объект = Объект;
126 6 Всеволод Дорофеев
        НоваяСтрокаНабора.Свойство = Свойство;
127 6 Всеволод Дорофеев
128 6 Всеволод Дорофеев
        НоваяСтрокаНабора.Значение = Значение;
129 6 Всеволод Дорофеев
130 6 Всеволод Дорофеев
        НаборЗаписей.Записать();
131 6 Всеволод Дорофеев
132 6 Всеволод Дорофеев
        Возврат Истина;
133 6 Всеволод Дорофеев
    Исключение
134 6 Всеволод Дорофеев
        Возврат Ложь;
135 6 Всеволод Дорофеев
    КонецПопытки;
136 6 Всеволод Дорофеев
КонецФункции
137 6 Всеволод Дорофеев
138 6 Всеволод Дорофеев
</pre>
139 7 Всеволод Дорофеев
140 7 Всеволод Дорофеев
h3. Поиск Объекта по значению доп.сведения
141 7 Всеволод Дорофеев
142 7 Всеволод Дорофеев
<pre>
143 7 Всеволод Дорофеев
&НаСервереБезКонтекста
144 7 Всеволод Дорофеев
Функция НайтиОбъектПоДопСведениюСервере(Свойство, Значение)
145 7 Всеволод Дорофеев
	Рез = неопределено;
146 7 Всеволод Дорофеев
	
147 7 Всеволод Дорофеев
	Запрос = Новый Запрос;
148 7 Всеволод Дорофеев
	Запрос.Текст = 
149 7 Всеволод Дорофеев
		"ВЫБРАТЬ
150 7 Всеволод Дорофеев
		|	ДополнительныеСведения.Объект КАК Объект
151 7 Всеволод Дорофеев
		|ИЗ
152 7 Всеволод Дорофеев
		|	РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
153 7 Всеволод Дорофеев
		|ГДЕ
154 7 Всеволод Дорофеев
		|	ДополнительныеСведения.Свойство = &Свойство
155 7 Всеволод Дорофеев
		|	И ДополнительныеСведения.Значение = &Значение";
156 7 Всеволод Дорофеев
	
157 7 Всеволод Дорофеев
	Запрос.УстановитьПараметр("Значение", Значение);
158 7 Всеволод Дорофеев
	Запрос.УстановитьПараметр("Свойство", Свойство);
159 7 Всеволод Дорофеев
	
160 7 Всеволод Дорофеев
	РезультатЗапроса = Запрос.Выполнить();
161 7 Всеволод Дорофеев
	
162 7 Всеволод Дорофеев
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
163 7 Всеволод Дорофеев
	
164 7 Всеволод Дорофеев
	Если ВыборкаДетальныеЗаписи.Следующий() Тогда
165 7 Всеволод Дорофеев
		Рез = ВыборкаДетальныеЗаписи.Объект; 
166 7 Всеволод Дорофеев
	КонецЕсли;
167 7 Всеволод Дорофеев
	Возврат Рез;
168 7 Всеволод Дорофеев
169 7 Всеволод Дорофеев
КонецФункции
170 7 Всеволод Дорофеев
171 7 Всеволод Дорофеев
</pre>
172 8 Всеволод Дорофеев
173 8 Всеволод Дорофеев
h3. Снятие ограничения в 150 символов на длину наименования для дополнительных значений (Справочник.ЗначенияСвойствОбъектов)
174 8 Всеволод Дорофеев
175 8 Всеволод Дорофеев
https://its.1c.ru/db/v8std#content:746:hdoc
176 8 Всеволод Дорофеев
177 8 Всеволод Дорофеев
<pre>
178 8 Всеволод Дорофеев
179 8 Всеволод Дорофеев
#Область ОбработчикиСобытий
180 8 Всеволод Дорофеев
181 8 Всеволод Дорофеев
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
182 8 Всеволод Дорофеев
	Поля.Добавить("Наименование");
183 8 Всеволод Дорофеев
	Поля.Добавить("ПолноеНаименование");
184 8 Всеволод Дорофеев
	СтандартнаяОбработка = Ложь;
185 8 Всеволод Дорофеев
КонецПроцедуры
186 8 Всеволод Дорофеев
187 8 Всеволод Дорофеев
188 8 Всеволод Дорофеев
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
189 8 Всеволод Дорофеев
	//ЛокализацияКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка);
190 8 Всеволод Дорофеев
	// 1cmanager.ru Снимаем ограничение на длину наименования в 150 символов
191 8 Всеволод Дорофеев
	Представление = ?(ПустаяСтрока(Данные.ПолноеНаименование), Данные.Наименование, Данные.ПолноеНаименование);
192 8 Всеволод Дорофеев
 	СтандартнаяОбработка = Ложь;	
193 8 Всеволод Дорофеев
КонецПроцедуры
194 8 Всеволод Дорофеев
195 8 Всеволод Дорофеев
#КонецОбласти
196 8 Всеволод Дорофеев
197 8 Всеволод Дорофеев
</pre>