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

1. PavelZnaikin 175 11.06.14 18:40 Сейчас в теме
Создал в справочнике "Договора" дополнительный реквизит.

Как с помощь запроса получить значение этого реквизита?

Дайте пример кода или ссылку its где это описано. Как работать с дополнительными реквизитами.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. IvanBoychuk123 10 11.06.14 19:11 Сейчас в теме
(1) PavelZnaikin, Пример кода для типовых конфигураций обычное приложение
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ЗначенияСвойствОбъектов.Значение
		|ИЗ
		|	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
		|ГДЕ
		|	ЗначенияСвойствОбъектов.Объект = &Объект
		|	И ЗначенияСвойствОбъектов.Свойство = &Свойство";

	Запрос.УстановитьПараметр("Объект", НужныйДоговор);
	Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("код нужного свойства")); // или предопределенное значение

	Результат = Запрос.Выполнить();

	ВыборкаДетальныеЗаписи = Результат.Выбрать();

	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		// Вставить обработку выборки ВыборкаДетальныеЗаписи
	КонецЦикла;
Показать
3. PavelZnaikin 175 11.06.14 20:17 Сейчас в теме
У меня управляемое приложение

ВЫБРАТЬ
	ДополнительныеСведения.Значение
ИЗ
	РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
ГДЕ
	ДополнительныеСведения.Объект = &Объект
	И ДополнительныеСведения.Свойство = &Свойство


пишу вот так вот и нечего не получается
4. Boneman 298 11.06.14 20:22 Сейчас в теме
(3) PavelZnaikin, а что именно не получается ? ты бы в консоли запросов сначала добился результата. Запрос то элементарный, регистр тоже.
5. Alex_E 2353 11.06.14 20:25 Сейчас в теме
(3) PavelZnaikin, Вы создали дополнительный реквизит, а ищите дополнительное сведение? Про разницу писал тут: http://infostart.ru/public/188152/. Дополнительный реквизит хранится в табличной части объекта "ДополнительныеРеквизиты", поэтому запрос надо делать не к регистру, а к табличной части в Вашем случае справочника "Договоры".
Gendelf; Valerianich; vechiy; alanto23; adhocprog; Ujine1313; ksb; +7 Ответить
6. ksb 11.06.14 20:26 Сейчас в теме
(3) Дело не в регистре а в измененной архитектуре хранения доп данных
в конфигурациях построенных на БСП
теперь есть 2 вида доп. сведения

1. Доп. реквизиты (хранятся в подчиненной табличной части Объекта) редактируются в форме объекта (Документ, Справочник)
2. Доп. сведения (вызывается отдельная форма данные хранятся в регистре

поэтому если вы создали реквизит данные нужно искать в Доп.реквизитах так именуется табличная часть того объекта для которого создали реквизит
adhocprog; zif74; SagittariusA; demart-omsk; Stety; Alex_E; +6 Ответить
7. PavelZnaikin 175 11.06.14 20:41 Сейчас в теме
Если писать вот так

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


то получается ТЗ где хранится значение.

Тут надо соединять справочник и ПВХ
но как только не соединял, значение доп реквизита получить не могу
9. Alex_E 2353 11.06.14 20:51 Сейчас в теме
(7) PavelZnaikin,
ВЫБРАТЬ
	ДоговорыКонтрагентовДополнительныеРеквизиты.Значение
ИЗ
	Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты
ГДЕ
	ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство = &Свойство
	И ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка = &Ссылка
Romakon92; renaal; toliman; mburkin; +4 Ответить
8. ksb 11.06.14 20:48 Сейчас в теме

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

Показать
10. пользователь 11.06.14 20:52
Сообщение было скрыто модератором.
...
11. PavelZnaikin 175 11.06.14 21:02 Сейчас в теме
Ступил, не допер обратиться к ТЧ доп.реквизитов))))

Спасибо
natarezn; +1 Ответить
18. natarezn 22.08.15 16:16 Сейчас в теме
(11) PavelZnaikin, я тоже обратилась !
12. PavelZnaikin 175 11.06.14 22:28 Сейчас в теме
Получился вот такой запрос

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



У меня вопрос, а дополнительный реквизит можно найти только по наименованию?
Просто код доп.реквизита я негде не увидел.
Или другой какой способ есть. Так как поиск по наименованию хреновая идея, потому что его можно изменить
user861804; newbas; +2 Ответить
13. МимохожийОднако 141 12.06.14 07:08 Сейчас в теме
(12) PavelZnaikin, есть элементарная дисциплина ))) Проще обучить и мотивировать пользователя, чем вносить изменения в конфигурацию.
14. Alex_E 2353 12.06.14 11:32 Сейчас в теме
(12) PavelZnaikin,
Так как поиск по наименованию хреновая идея, потому что его можно изменить
В ТЧ "ДдополнительныеРеквизиты" есть поля "Свойство" и "Значение". Свойство дополнительного реквизита - это план видов характеристик, имеющий много реквизитов, в числе которых есть Наименование и Заголовок (я программно ищу нужное свойство именно по нему, но это конечно дело вкуса). Пользователь видит дополнительный реквизит на форме элемента, поенять свойство он оттуда не может, так что по наименованию (заголовку) поиск в этом случае не "хреновая идея" - запретите менять план видов характеристик пользователям - и будет вам счастье :-). Вообще добраться до установки дополнительных реквизитов и свойств - дело не рядового пользователя - доступ к этому механизму должен быть ограничен. Я широко использую и то и другое, доп. реквизиты и доп. свойства задаю программно, пользователь может только устанавливать их значения, поменять в дополнительных реквизитах/свойствах (в плане видов характеристик) ничего не может - всё работает.
ben19791010; natarezn; +2 Ответить
25. mp40 10 28.02.19 09:44 Сейчас в теме
(12) У меня по данному запросу выдавало пустую таблицу, если нет какого то допреквизита. По моему лучше через временную таблицу. Как то так.
	Запрос 				= Новый Запрос;
	Запрос.Текст 		= 
	"ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	Товары.Характеристика
	|ПОМЕСТИТЬ Товары
	|ИЗ
	|	Документ.РеализацияТоваровУслуг.Товары КАК Товары
	|ГДЕ
	|	Товары.Ссылка В(&МассивДокументов)
	|;
	|	
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	Товар.Характеристика,
	|	Размер.Значение КАК Размеры,
	|	Цвет.Значение КАК Цвета
	|ПОМЕСТИТЬ Размер
	|ИЗ
	|	Товары КАК Товар
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК Размер
	|		ПО Товар.Характеристика = Размер.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК Цвет
	|		ПО Товар.Характеристика = Цвет.Ссылка
	|ГДЕ
	|	Размер.Свойство = &Размер
	|	И Цвет.Свойство = &Цвет
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ДокуметТовары.Номенклатура КАК Номенклатура,
	|	ДокуметТовары.Характеристика КАК Характеристика,
	|	ДокуметТовары.Номенклатура.Артикул КАК Артикул,
	|	СУММА(ДокуметТовары.КоличествоУпаковок) КАК КоличествоЭтикеток,
	|	ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод,
	|	ЕстьNULL(Размер.Размеры,"""") КАК Размер,
	|	ЕстьNULL(Размер.Цвета,"""") КАК Цвет
	|ИЗ
	|	Документ.РеализацияТоваровУслуг.Товары КАК ДокуметТовары
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
	|		ПО ДокуметТовары.Номенклатура = ШтрихкодыНоменклатуры.Номенклатура
	|			И ДокуметТовары.Характеристика = ШтрихкодыНоменклатуры.Характеристика
	|			И ДокуметТовары.Упаковка = ШтрихкодыНоменклатуры.Упаковка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Размер КАК Размер
	|		ПО ДокуметТовары.Характеристика = Размер.Характеристика
	|ГДЕ
	|	ДокуметТовары.Ссылка В(&МассивДокументов)
	|
	|СГРУППИРОВАТЬ ПО
	|	ДокуметТовары.Номенклатура,
	|	ДокуметТовары.Характеристика,
	|	ДокуметТовары.Номенклатура.Артикул,
	|	ШтрихкодыНоменклатуры.Штрихкод,
	|	ЕстьNULL(Размер.Размеры,""""),
	|	ЕстьNULL(Размер.Цвета,"""")";
	
	Запрос.УстановитьПараметр("Размер"			, ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Размер"));
	Запрос.УстановитьПараметр("Цвет"			, ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Цвет"));
	Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
	Запрос.УстановитьПараметр("Дата"			, Дата);
Показать
15. PavelZnaikin 175 12.06.14 18:11 Сейчас в теме
16. mburkin 11 23.04.15 15:03 Сейчас в теме
Ой ребята, чуть с ума не сошёл пока не нашёл эту тему... уже три дня и три ночи ищу... Пусть расцветут в Ваших садах финики!!

У меня вопрос: ТОЛЬКО запросом можно получать значение доп.реквизита? Ещё какие-нибудь варианты есть?
Suslik_Johns; +1 Ответить
17. espero2000 13 11.08.15 11:59 Сейчас в теме
(16) mburkin,
Можно в цикле перебирать все доп.значения для объекта и искать нужное.
19. natarezn 22.08.15 16:19 Сейчас в теме
да. пусть цветут финики !
20. chesnokov-a-v 100 05.11.15 13:15 Сейчас в теме
помогите, если есть время.
Проблема следующая: сделал доп реквизиты для справочника "Физические лица" - Размер обуви, одежды, рост и т.п.
Пишу самый простой отчет на СКД
ВЫБРАТЬ
	ФизическиеЛицаДополнительныеРеквизиты.Ссылка,
	ФизическиеЛицаДополнительныеРеквизиты.НомерСтроки,
	ФизическиеЛицаДополнительныеРеквизиты.Свойство,
	ФизическиеЛицаДополнительныеРеквизиты.Значение,
	ФизическиеЛицаДополнительныеРеквизиты.ТекстоваяСтрока
ИЗ
	Справочник.ФизическиеЛица.ДополнительныеРеквизиты КАК ФизическиеЛицаДополнительныеРеквизиты


На управляемом приложении выдает пустой отчет, а если запустить отладку на обычном приложении - все работает.
Платформа 8.3.6.2100 конф БП 3.0.40.41 версия серверная.
21. PavelZnaikin 175 05.11.15 20:46 Сейчас в теме
(20) chesnokov-a-v, У тебя здесь нет условия. Тебе условие надо сделать по свойству "ФизическиеЛицаДополнительныеРеквизиты.Свойство" и указать свой доп реквизит.
А в качестве поля которое будет выводить значение выбрать "ФизическиеЛицаДополнительныеРеквизиты.Значение"
22. .1. 26.06.17 06:28 Сейчас в теме
Пример запроса на управляемом приложении:
Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	АктОбОказанииУслугДополнительныеРеквизиты.Значение
		|ИЗ
		|	Документ.АктОбОказанииУслуг.ДополнительныеРеквизиты КАК АктОбОказанииУслугДополнительныеРеквизиты
		|ГДЕ
		|	АктОбОказанииУслугДополнительныеРеквизиты.Ссылка = &Ссылка";
	
	Запрос.УстановитьПараметр("Ссылка", СсылкаНаДокумент);
Показать
23. milov.aleksey 398 15.08.18 22:52 Сейчас в теме
При загрузке из экселя поиск значения по наименованию. Но это среди присвоенных значений, а как найти в списке значений свойств?
Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	КонтрагентыДополнительныеРеквизиты.Значение КАК Значение
	|ИЗ
	|	Справочник.Контрагенты.ДополнительныеРеквизиты КАК КонтрагентыДополнительныеРеквизиты
	|ГДЕ
	|	КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство
	|	И КонтрагентыДополнительныеРеквизиты.Значение.Наименование ПОДОБНО &Наименование";
	Запрос.УстановитьПараметр("Свойство",     Свойство);
	Запрос.УстановитьПараметр("Наименование", Наименование);
Показать
24. Fox-trot 158 15.08.18 23:12 Сейчас в теме
Запрос.УстановитьПараметр("%Наименование%", Наименование);

оно?
26. kimskiysanya 09.10.19 06:16 Сейчас в теме
Функция БСП

// Возвращает значение дополнительного свойства объекта.
//
// Параметры:
//  Объект   - ЛюбаяСсылка - ссылка на объект, например, СправочникСсылка.Номенклатура,
//                           ДокументСсылка.ЗаказПокупателя, ...
//  Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на
//                           дополнительный реквизит, значение которого нужно получить.
//           - Строка - Имя дополнительного свойства.
//
// Возвращаемое значение:
//  Произвольный - любое значение, допустимое для свойства.
//
Функция ЗначениеСвойства(Объект, Свойство) Экспорт
Показать
Valerianich; GV.; RizhkovSergio; adhocprog; Ali_q; KirinaAS; boriscat; ivprovotorov; mybracho; rpgshnik; Invodev; diar01; alexovik; user1446119; arturlix; elephant_x; EugeneMIPT; Ворчун; user717534; mikl79; Ctrl P; gogik2006; romankoav; +23 Ответить
27. romankoav 4 11.10.19 10:33 Сейчас в теме
(26) Мне кажется из всех комментов самый полезный. Ко всем: Хватит велосипеды рожать пользуйтесь тем что есть
boriscat; ivprovotorov; alexovik; Alex_Iz; DrAku1a; user717534; Viktoriya_F; +7 Ответить
29. kimskiysanya 17.01.20 07:37 Сейчас в теме
Допишу функция находится
ОбщийМодуль.УправлениеСвойствами
Версия БСП 3.0.1.416.
GV.; RizhkovSergio; adhocprog; Ali_q; KirinaAS; serega_sun; boriscat; rpgshnik; Invodev; alexovik; Alex_Iz; user1446119; StAsya_1C; user717534; mikl79; lenchik_chik; wowik; Ctrl P; +18 Ответить
34. olololeg 11.05.21 16:35 Сейчас в теме
(29) немного переехала. теперь обитает в общем модуле
УправлениеСвойствами.ЗначениеСвойства(Объект, Свойство)
Oldsad; indefinitum000; johny1987; RizhkovSergio; d.zhukov; sapervodichka; elephant_x; alexovik; +8 Ответить
28. michaelbag 06.11.19 10:57 Сейчас в теме
А для какой версии БСП актуальна функция ЗначениеСвойства(Объект, Свойство) ?

У меня в 2.2.3.43 - нету такой... Что можно использовать вместо?
adhocprog; +1 Ответить
30. romankoav 4 12.02.20 15:51 Сейчас в теме
(28) Есть еще функция в этом же модуле ПолучитьЗначенияСвойств(), и да у меня например тоже нет отдельного ЗначениеСвойства()
Alex_Iz; user1446119; +2 Ответить
31. SOKOL_NORD 12.03.20 08:34 Сейчас в теме
У меня один реквизит на разные документы, поэтому справился вот так:

&НаСервере
Функция ПолучитьДопРеквизит(Ссылка)
	Выгружать = Ложь;
	ТаблицаДопСвойств = УправлениеСвойствами.ПолучитьЗначенияСвойств(Ссылка,,,);
	Если ТаблицаДопСвойств.Количество() > 0 Тогда
		Выгружать = ТаблицаДопСвойств[0].Значение;
	КонецЕсли;	
	Возврат Выгружать;
КонецФункции
Показать
Slava.62.ru; +1 Ответить
32. aag1985 27.12.20 19:13 Сейчас в теме
Ссылка на ИТС
https://its.1c.ru/db/bsp313doc#content:1769:hdoc:_top:значениесвойства

Штатная функция которая решает задачу получения дополнительного реквизита.
Oldsad; Дмитрий31178; goraleale; VAAngelov; anderson; krikmarin; ewics; О.Ж; user1225706; Rainger; user1281325; Alex_Iz; elephant_x; +13 Ответить
33. user1281325 3 11.05.21 16:34 Сейчас в теме
(32)
Вы просто гений!!
Теперь можно заменить все одной строкой, даже не нужно писать наименование реквизита заранее в макете.
ОбластьШапка.Параметры.ПредметДоговора = СтрШаблон(НСтр("ru = 'Предмет договора: %1'"), УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект, "НазваниеДопСвойстваИзПоляДляразработчиков"));
teca; goraleale; olgajane; ewics; alexovik; Hla; +6 1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот