БП 2.0 Как вытащить доп.реквизит из РС запросом
Всем привет.
Необходимо из РС ЗначенияСвойствОбъектов вытащить значение одного реквизита который я указал в справочнике Физ.лица.
И в этом же запросе вытащить фамилию лица в котором стоит этот доп. реквизит. Насчет фамилии я конечно сомневаюсь, т.к. фамилии физ.лиц заносятся в РС ФИОФизЛиц.
Реквизит у меня называется id. В запросе есть возможность как то "найти реквизит по имени"?
Необходимо из РС ЗначенияСвойствОбъектов вытащить значение одного реквизита который я указал в справочнике Физ.лица.
И в этом же запросе вытащить фамилию лица в котором стоит этот доп. реквизит. Насчет фамилии я конечно сомневаюсь, т.к. фамилии физ.лиц заносятся в РС ФИОФизЛиц.
Реквизит у меня называется id. В запросе есть возможность как то "найти реквизит по имени"?
Прикрепленные файлы:
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) так примерно?:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Значение КАК Значение,
| ФИОФизЛиц.Фамилия КАК Фамилиля
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ФИОФизЛиц КАК ФИОФизЛиц
|ПО
| ЗначенияСвойствОбъектов.Значение = ФИОФизЛиц.Фамилия";
Показать
(6)Потому что
Должно быть
Вообще, по-хорошему, запрос к РС "ЗначенияСвойствОбъектов" вынести в отдельный запрос с созданием временной таблицы.
Что-то вроде такого:
ПО
ЗначенияСвойствОбъектов.Значение = ФИОФизЛиц.Фамилия
Должно быть
ПО
ЗначенияСвойствОбъектов.Объект = ФИОФизЛиц.ФизЛицо
Вообще, по-хорошему, запрос к РС "ЗначенияСвойствОбъектов" вынести в отдельный запрос с созданием временной таблицы.
Что-то вроде такого:
Выбрать
Объект КАК ФизЛицо,
Значение КАК ДопРеквизит
ПОМЕСТИТЬ ВТ_ДопРеквизиты
ИЗ РегистрСведений.ЗначенияСвойствОбъектов
ГДЕ
Свойство.Наименование = "Наименование"
Свойство.Назначение = Справочник.НазначенияКатегорийСвойствОбъектов.ФизЛица
;
Выбрать
ДопРеквизиты.*,
ФИОФизЛиц.Фамилия
Из
ВТ_ДопРеквизиты КАК ДопРеквизиты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц КАК ФИОФизЛиц
ПО ДопРеквизиты.ФизЛицо = ФИОФизЛиц.ФизЛицо
Показать
(1) Для БП2, УТ 10.3 и проч
Функция ОпределитьЗначениеСвойства(ЗначениеСвойства,ВыбОбъект) Экспорт
ЗначСвойства = Неопределено;
ПВХ = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(ЗначениеСвойства);
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|ЗСО.Значение
|ИЗ
|РегистрСведений.ЗначенияСвойствОбъектов КАК ЗСО
|ГДЕ Объект = &ВыбОбъект И Свойство = &ВыбСвойство";
Запрос.УстановитьПараметр("ВыбОбъект",ВыбОбъект);
Запрос.УстановитьПараметр("ВыбСвойство",ПВХ);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ЗначСвойства = Выборка.Значение;
КонецЕсли;
Возврат ЗначСвойства;
КонецФункции
Показать
(1) В 1С:Бухгалтерия 8 (редакция 3.0) мы делаем так:
1. Берём имя доп. сведения в режиме Предприятие (как на рисунке).
2. В конфигураторе пишем такой код:
1. Берём имя доп. сведения в режиме Предприятие (как на рисунке).
2. В конфигураторе пишем такой код:
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ДополнительныеСведения.Значение КАК КонтрагентаЭДО,
| ДополнительныеСведения.Объект КАК Контрагент
|ПОМЕСТИТЬ ВТ_ТипЭДО
|ИЗ
| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
|ГДЕ
| ДополнительныеСведения.Свойство = &ТипЭДО
| И ДополнительныеСведения.Объект = &ТекКонтрагент
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ЕСТЬNULL(ВТ_ТипЭДО.КонтрагентаЭДО, НЕОПРЕДЕЛЕНО) КАК КонтрагентаЭДО,
| ЕСТЬNULL(ВложенныйЗапрос.ТекДока, НЕОПРЕДЕЛЕНО) КАК РеализацияЭДО
|ИЗ
| ВТ_ТипЭДО КАК ВТ_ТипЭДО
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ДополнительныеСведения.Значение КАК ТипЭДОДока,
| ДополнительныеСведения.Свойство КАК Свойство,
| ДополнительныеСведения.Объект КАК ТекДока
| ИЗ
| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
| ГДЕ
| ДополнительныеСведения.Объект = &ТекРеализация
| И ДополнительныеСведения.Свойство = &ТипЭДО) КАК ВложенныйЗапрос
| ПО ВТ_ТипЭДО.КонтрагентаЭДО = ВложенныйЗапрос.ТипЭДОДока";
ТекСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя","ТипЭДО_3f5e1013ee924a85ad63b6f084bebd37");
Запрос.УстановитьПараметр("ТекКонтрагент", Контрагент);
Запрос.УстановитьПараметр("ТипЭДО",ТекСвойство);
Запрос.УстановитьПараметр("ТекРеализация", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.КонтрагентаЭДО = Неопределено Тогда
//у контрагента не установлен Тип ЭДО - тогда ничего и не делаем
Иначе
Если ВыборкаДетальныеЗаписи.РеализацияЭДО = Неопределено Тогда
//у текущего документа ещё не установлен Тип ЭДО - надо установить по текущему значению
Рег = РегистрыСведений.ДополнительныеСведения.СоздатьМенеджерЗаписи();
Рег.Объект = Ссылка;
Рег.Свойство = ТекСвойство;
Рег.Значение = ВыборкаДетальныеЗаписи.КонтрагентаЭДО;
Рег.Записать();
Иначе
//у документа уже установлен Тип ЭДО - менять его не будем
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПоказатьПрикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот