Инструменты пользователя

Инструменты сайта


dev1c:extra_addon

Это старая версия документа!


Коротко об дополнительных реквизитах/сведениях

Источник

Задача: оснастить документ/справочник дополнительными реквизитами или сведениями.

Настройка объектов с дополнительными реквизитами

Нужно у объекта создать табличную часть ДополнительныеРеквизиты с реквизитами:

ИмяТипПодсказка
СвойствоПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведенияДополнительный реквизит
ЗначениеХарактеристика.ДополнительныеРеквизитыИСведенияЗначение дополнительного реквизита
ТекстоваяСтрокаСтрока неограниченной длиныПолный текст строкового дополнительного реквизита

Реквизиту Значение в свойстве Связи параметров выбора установить связь: Отбор.Владелец (ДополнительныеРеквизиты.Свойство).

1. В форме объекта рекомендуется создать специальную группу полей или страницу с наименованием ГруппаДополнительныеРеквизиты для размещения элементов управления, редактирующих свойства объекта.

2. В обработчике события ПриСозданииНаСервере формы объекта необходимо выполнить вызов:

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

где ГруппаДополнительныеРеквизиты – имя группы формы, созданной на шаге 2, в которой будут располагаться поля формы, предназначенные для редактирования дополнительных реквизитов. Если этот параметр не указывать, то элементы управления для редактирования свойств будут размещаться в нижней части формы.

3. этот пункт из ИТС пропускаем

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

ФормаОбъекта
#Область ОбработчикиКомандФормы
// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
    УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства
#КонецОбласти

5. В обработчике события ПриОткрытии добавить код:

ПриОткрытии
// СтандартныеПодсистемы.Свойства
    УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
// Конец СтандартныеПодсистемы.Свойства

6. В обработчике события ОбработкаОповещения добавить код:

ОбработкаОповещения
// СтандартныеПодсистемы.Свойства 
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
    ОбновитьЭлементыДополнительныхРеквизитов();
    УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.Свойства

7. Добавить вспомогательные процедуры:

ФормаОбъекта
#Область СлужебныеПроцедурыИФункции
// СтандартныеПодсистемы.Свойства 
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
    УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
    УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
    УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства
#КонецОбласти

8. В обработчике события ПриЧтенииНаСервере добавить код:

ПриЧтенииНаСервере
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.Свойства

9. В обработчике события ОбработкаПроверкиЗаполненияНаСервере добавить код:

ОбработкаПроверкиЗаполненияНаСервере
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
// Конец СтандартныеПодсистемы.Свойства

10. В обработчике события ПередЗаписьюНаСервере добавить код:

ПередЗаписьюНаСервере
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.Свойства

Настройка объектов с дополнительными сведениями

Перечислить типы объектов с дополнительными сведениями в составе определяемого типа ВладелецДополнительныхСведений. Поддерживаемые типы объектов: документы, справочники, планы видов характеристик, планы счетов, планы видов расчета, бизнес-процессы и задачи.

Настройка динамических списков

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

Настройка наборов свойств объектов

Тут описан простой случай: у всех элементов/документов единый набор доп реквизитов/сведений, не зависящий от самих элементов/документов.

В процедуре ПриПолученииПредопределенныхНаборовСвойств общего модуля УправлениеСвойствамиПереопределяемый описать предопределенный набор свойств с именем по шаблону Справочник_<ИмяОбъекта> (если объект – справочник; Документ_<ИмяОбъекта>, если объект – документ, и т.д., например, Справочник_Сотрудники, Документ_АвансовыйОтчет, БизнесПроцесс_Продажа), а также указать уникальный идентификатор.

Пример
&После("ПриПолученииПредопределенныхНаборовСвойств")
Процедура ФЕС_ПриПолученииПредопределенныхНаборовСвойств(Наборы)
	// Вставить содержимое метода.      
	Набор = Наборы.Строки.Добавить();
	Набор.Имя = "Документ_ФЕС_КартаДвиженияУпаковки";
	Набор.Идентификатор = Новый УникальныйИдентификатор("e1331e45-669c-45c0-b7bf-36a70cb61e31");	    
	
	Набор = Наборы.Строки.Добавить();
	Набор.Имя = "Документ_ФЕС_Рейс";
	Набор.Идентификатор = Новый УникальныйИдентификатор("e1331e45-669c-45c0-b7bf-36a70cb61e32");	    
КонецПроцедуры

Идентификатор этот должен указывать на элемент справочника НаборыДополнительныхРеквизитовИСведений

Пример
ид = Новый УникальныйИдентификатор("e1331e45-669c-45c0-b7bf-36a70cb61e32");
спр = справочники.НаборыДополнительныхРеквизитовИСведений.ПолучитьСсылку(ид);

Если такого элемента нет, то его нужно создать. Возможно, есть способ при помощи инструментов БСП, но я его не нашел. сделал через СоздатьЭлемент. Важно: у созданного элемента должно быть установлено свойство Используется.

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

dev1c/extra_addon.1712640839.txt.gz · Последнее изменение: 2024/04/09 05:33 — admin16

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki