БП 2.0 Как вытащить доп.реквизит из РС запросом

1. Shecurok 18.11.20 15:47 Сейчас в теме
Всем привет.

Необходимо из РС ЗначенияСвойствОбъектов вытащить значение одного реквизита который я указал в справочнике Физ.лица.
И в этом же запросе вытащить фамилию лица в котором стоит этот доп. реквизит. Насчет фамилии я конечно сомневаюсь, т.к. фамилии физ.лиц заносятся в РС ФИОФизЛиц.

Реквизит у меня называется id. В запросе есть возможность как то "найти реквизит по имени"?
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. nomad_irk 76 18.11.20 15:55 Сейчас в теме
(1)Стройте запрос к РС "ЗначенияСвойствОбъектов, левым соединением свяжете с РС "ФИОФизЛиц".
4. Shecurok 18.11.20 16:03 Сейчас в теме
(3) так примерно?:

 Запрос = Новый Запрос;
	Запрос.Текст = 
	  "ВЫБРАТЬ
	  |	ЗначенияСвойствОбъектов.Значение КАК Значение,
	  |	ФИОФизЛиц.Фамилия КАК Фамилиля
	  |ИЗ
	  |	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
	  |ЛЕВОЕ СОЕДИНЕНИЕ
	  |	РегистрСведений.ФИОФизЛиц КАК ФИОФизЛиц
	  |ПО
      | ЗначенияСвойствОбъектов.Значение = ФИОФизЛиц.Фамилия";
Показать
5. nomad_irk 76 18.11.20 16:04 Сейчас в теме
6. Shecurok 18.11.20 16:06 Сейчас в теме
(5) не вытянуло фамилию и надо как то сделать отбор именно по имени доп.реквизита. Не подскажте как?
7. nomad_irk 76 18.11.20 16:13 Сейчас в теме
(6)Потому что
ПО
  ЗначенияСвойствОбъектов.Значение = ФИОФизЛиц.Фамилия


Должно быть

ПО
  ЗначенияСвойствОбъектов.Объект = ФИОФизЛиц.ФизЛицо


Вообще, по-хорошему, запрос к РС "ЗначенияСвойствОбъектов" вынести в отдельный запрос с созданием временной таблицы.
Что-то вроде такого:

Выбрать 
Объект КАК ФизЛицо, 
Значение КАК ДопРеквизит 
ПОМЕСТИТЬ ВТ_ДопРеквизиты
ИЗ РегистрСведений.ЗначенияСвойствОбъектов
ГДЕ
      Свойство.Наименование = "Наименование"
      Свойство.Назначение = Справочник.НазначенияКатегорийСвойствОбъектов.ФизЛица
;

Выбрать
ДопРеквизиты.*,
ФИОФизЛиц.Фамилия
Из 
ВТ_ДопРеквизиты КАК ДопРеквизиты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц КАК ФИОФизЛиц
ПО ДопРеквизиты.ФизЛицо = ФИОФизЛиц.ФизЛицо
Показать
9. independ 1543 18.11.20 19:21 Сейчас в теме
(1) Для БП2, УТ 10.3 и проч
Функция ОпределитьЗначениеСвойства(ЗначениеСвойства,ВыбОбъект) Экспорт
	ЗначСвойства = Неопределено;
	ПВХ = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(ЗначениеСвойства);
	Запрос = Новый Запрос;
	Запрос.Текст = "
	|ВЫБРАТЬ 
	|ЗСО.Значение
	|ИЗ
	|РегистрСведений.ЗначенияСвойствОбъектов КАК ЗСО
	|ГДЕ Объект = &ВыбОбъект И Свойство = &ВыбСвойство";
	Запрос.УстановитьПараметр("ВыбОбъект",ВыбОбъект);
	Запрос.УстановитьПараметр("ВыбСвойство",ПВХ);
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
	     ЗначСвойства = Выборка.Значение;
        КонецЕсли; 
	Возврат ЗначСвойства;    
КонецФункции
Показать
2. Shecurok 18.11.20 15:51 Сейчас в теме
Если конечно можно не запросом, то тоже не плохо. Просто это хначение мне надод будет складывать с другим
8. delta 687 18.11.20 17:13 Сейчас в теме
(1) В 1С:Бухгалтерия 8 (редакция 3.0) мы делаем так:
1. Берём имя доп. сведения в режиме Предприятие (как на рисунке).
2. В конфигураторе пишем такой код:

Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ДополнительныеСведения.Значение КАК КонтрагентаЭДО,
		|	ДополнительныеСведения.Объект КАК Контрагент
		|ПОМЕСТИТЬ ВТ_ТипЭДО
		|ИЗ
		|	РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
		|ГДЕ
		|	ДополнительныеСведения.Свойство = &ТипЭДО
		|	И ДополнительныеСведения.Объект = &ТекКонтрагент
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ЕСТЬNULL(ВТ_ТипЭДО.КонтрагентаЭДО, НЕОПРЕДЕЛЕНО) КАК КонтрагентаЭДО,
		|	ЕСТЬNULL(ВложенныйЗапрос.ТекДока, НЕОПРЕДЕЛЕНО) КАК РеализацияЭДО
		|ИЗ
		|	ВТ_ТипЭДО КАК ВТ_ТипЭДО
		|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
		|			ДополнительныеСведения.Значение КАК ТипЭДОДока,
		|			ДополнительныеСведения.Свойство КАК Свойство,
		|			ДополнительныеСведения.Объект КАК ТекДока
		|		ИЗ
		|			РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
		|		ГДЕ
		|			ДополнительныеСведения.Объект = &ТекРеализация
		|			И ДополнительныеСведения.Свойство = &ТипЭДО) КАК ВложенныйЗапрос
		|		ПО ВТ_ТипЭДО.КонтрагентаЭДО = ВложенныйЗапрос.ТипЭДОДока";
	
	ТекСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя","ТипЭДО_3f5e1013ee924a85ad63b6f084bebd37");
	Запрос.УстановитьПараметр("ТекКонтрагент", Контрагент);
	Запрос.УстановитьПараметр("ТипЭДО",ТекСвойство);
	Запрос.УстановитьПараметр("ТекРеализация", Ссылка);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Если ВыборкаДетальныеЗаписи.КонтрагентаЭДО = Неопределено Тогда
			//у контрагента не установлен Тип ЭДО - тогда ничего и не делаем
		Иначе
			Если ВыборкаДетальныеЗаписи.РеализацияЭДО = Неопределено Тогда 
				//у текущего документа ещё не установлен Тип ЭДО - надо установить по текущему значению
				Рег = РегистрыСведений.ДополнительныеСведения.СоздатьМенеджерЗаписи();
				
				Рег.Объект = Ссылка;
				Рег.Свойство = ТекСвойство;
				Рег.Значение = ВыборкаДетальныеЗаписи.КонтрагентаЭДО;
				
				Рег.Записать();

			Иначе
				//у документа уже установлен Тип ЭДО - менять его не будем
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
Показать
Прикрепленные файлы:
Оставьте свое сообщение

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