Примеры работы с дополнительными реквизитами.

Как получить значение дополнительного реквизита:

Пример: мы делаем печатную форму документа "Заказ клиента" и хотим вывести на неё значение определённого дополнительного реквизита - "Должность покупателя".

Используем вложенный запрос, в котором соединяем левым соединением таблицу "Дополнительные реквизиты" документа "Заказ клиента" с Планом видов характеристик "Дополнительные реквизиты и сведения". Устанавливаем условие: заголовок дополнительного реквизита должен быть таким – "Должность покупателя". Таблицы соединяем по ссылке на "Заказ клиента".

Получается вот такой запрос:

"ВЫБРАТЬ
	|	ДополнительныеРеквизиты.ДолжностьПокупателя КАК ДолжностьПокупателя
	|ИЗ
	|	Документ.ЗаказКлиента КАК Заказ
	|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	|			ЗаказДополнительныеРеквизиты.Значение КАК ДолжностьПокупателя,
	|			ЗаказДополнительныеРеквизиты.Ссылка КАК Ссылка
	|		ИЗ
	|			Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказДополнительныеРеквизиты
	|				ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ПВХДополнительныеРеквизитыИСведения
	|				ПО ЗаказДополнительныеРеквизиты.Свойство = ПВХДополнительныеРеквизитыИСведения.Ссылка
	|		ГДЕ
	|			ПВХДополнительныеРеквизитыИСведения.Заголовок = ""Должность покупателя"") КАК ДополнительныеРеквизиты
	|		ПО (ДополнительныеРеквизиты.Ссылка = Заказ.Ссылка)
	|ГДЕ
	|	Заказ.Ссылка В(&МассивОбъектов)";

Также можно использовать метод НайтиПоНаименованию("***").

Пример запроса:

"ВЫБРАТЬ 
|	ДоговорыКонтрагентовДополнительныеРеквизиты.Значение, 
|	ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство 
|ИЗ 
|	Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты 
|ГДЕ 
|	ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка = &Ссылка 
|	И ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство = &Свойство"; 

Запрос.УстановитьПараметр("Ссылка", Ссылка); 
Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("КПП", Истина); 
Запрос.УстановитьПараметр("Свойство", Свойство);

Переменная Ссылка – это ссылка на "Договор контрагента".

 Проверка на предмет того, что дополнительный реквизит заполнен:

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

Если ЕстьСтроки.Количество() = 0 Тогда
	// Обработка условия
КонецЕсли;

 Как изменить значения дополнительных реквизитов:

Задействуем общий модуль УправлениеСвойствами, который входит в состав БСП.

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

МассивСтруктур = Новый Массив;
МассивСтруктур.Добавить(Новый Структура("Свойство, Значение", ДопРеквизитДатаОтправки, ТекущаяДата());
МассивСтруктур.Добавить(Новый Структура("Свойство, Значение", ДопРеквизитДоставка, Истина);
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ЗаказКлиентаСсылка, МассивСтруктур);

Комментарии

  • pavlo 18.09.2018 13:59
    У меня по второму варианту не получилось. При такой настройке появилась колонка построчно со словами названия колонки ресурса.

    Подробнее...

     
  • Altavista- 17.09.2018 20:51
    Не бесспорное решение: 1. В регистр логичнее добавить 2й ресурс ("вТрансфертныхЦенах"); 2. РС "Наценки"? Однозначно, нет. Это реквизит справочника; 3. Реквизита "Контрагент" в условии задачи тоже нет и ...

    Подробнее...

     
  • Андрей 02.08.2018 09:55
    Большое спасибо! По "Варианту 2": в выбранных полях группировки колонок (у меня их несколько) кроме поля самой колонки пришлось добавить и ресурс.

    Подробнее...