ВЫБРАТЬ
ДополнительныеСведения.Значение
ИЗ
РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
ГДЕ
ДополнительныеСведения.Объект = &Объект
И ДополнительныеСведения.Свойство = &Свойство
(3) PavelZnaikin, Вы создали дополнительный реквизит, а ищите дополнительное сведение? Про разницу писал тут: http://infostart.ru/public/188152/. Дополнительный реквизит хранится в табличной части объекта "ДополнительныеРеквизиты", поэтому запрос надо делать не к регистру, а к табличной части в Вашем случае справочника "Договоры".
(3) Дело не в регистре а в измененной архитектуре хранения доп данных
в конфигурациях построенных на БСП
теперь есть 2 вида доп. сведения
1. Доп. реквизиты (хранятся в подчиненной табличной части Объекта) редактируются в форме объекта (Документ, Справочник)
2. Доп. сведения (вызывается отдельная форма данные хранятся в регистре
поэтому если вы создали реквизит данные нужно искать в Доп.реквизитах так именуется табличная часть того объекта для которого создали реквизит
ВЫБРАТЬ
ДоговорыКонтрагентов.ДополнительныеРеквизиты.(
Значение
)
ИЗ
Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
ДоговорыКонтрагентов.Ссылка = &Ссылка
то получается ТЗ где хранится значение.
Тут надо соединять справочник и ПВХ
но как только не соединял, значение доп реквизита получить не могу
ВЫБРАТЬ
ДоговорыКонтрагентовДополнительныеРеквизиты.Значение
ИЗ
Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты
ГДЕ
ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство = &Свойство
И ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка = &Ссылка
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Наименование,
| Контрагенты.ИНН,
| Контрагенты.КПП,
| БанковскиеСчета.НомерСчета,
| БанковскиеСчета.Банк.Наименование,
| БанковскиеСчета.Банк.Код,
| БанковскиеСчета.Банк.КоррСчет,
| ДоговорыКонтрагентов.Номер,
| Название.Значение,
| Цена.Значение КАК Значение1,
| Количество.Значение КАК Значение2,
| ФиоДиректора.Значение КАК Значение3,
| ДоговорыКонтрагентов.Дата
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчета
| ПО Контрагенты.ОсновнойБанковскийСчет = БанковскиеСчета.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК Название
| ПО ДоговорыКонтрагентов.Ссылка = Название.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК Цена
| ПО ДоговорыКонтрагентов.Ссылка = Цена.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК Количество
| ПО ДоговорыКонтрагентов.Ссылка = КоличествоЧасов.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ФиоДиректора
| ПО ДоговорыКонтрагентов.Ссылка = ФиоДиректора.Ссылка
| ПО Контрагенты.ОсновнойДоговорКонтрагента = ДоговорыКонтрагентов.Ссылка
|ГДЕ
| Контрагенты.Ссылка В(&МассивОбъектов)
| И Цена.Свойство = &Цена
| И Количество.Свойство = &Количество
| И Название.Свойство = &Название
| И ФиоДиректора.Свойство = &ФиоДиректора";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("Цена", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоКоду();
Запрос.УстановитьПараметр("Количество", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоКоду());
Запрос.УстановитьПараметр("Название", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоКоду());
Запрос.УстановитьПараметр("ФиоДиректора", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоКоду());
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
КонецЦикла;
Показать
У меня вопрос, а дополнительный реквизит можно найти только по наименованию?
Просто код доп.реквизита я негде не увидел.
Или другой какой способ есть. Так как поиск по наименованию хреновая идея, потому что его можно изменить
Так как поиск по наименованию хреновая идея, потому что его можно изменить
В ТЧ "ДдополнительныеРеквизиты" есть поля "Свойство" и "Значение". Свойство дополнительного реквизита - это план видов характеристик, имеющий много реквизитов, в числе которых есть Наименование и Заголовок (я программно ищу нужное свойство именно по нему, но это конечно дело вкуса). Пользователь видит дополнительный реквизит на форме элемента, поенять свойство он оттуда не может, так что по наименованию (заголовку) поиск в этом случае не "хреновая идея" - запретите менять план видов характеристик пользователям - и будет вам счастье :-). Вообще добраться до установки дополнительных реквизитов и свойств - дело не рядового пользователя - доступ к этому механизму должен быть ограничен. Я широко использую и то и другое, доп. реквизиты и доп. свойства задаю программно, пользователь может только устанавливать их значения, поменять в дополнительных реквизитах/свойствах (в плане видов характеристик) ничего не может - всё работает.
(12) У меня по данному запросу выдавало пустую таблицу, если нет какого то допреквизита. По моему лучше через временную таблицу. Как то так.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.Характеристика
|ПОМЕСТИТЬ Товары
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК Товары
|ГДЕ
| Товары.Ссылка В(&МассивДокументов)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товар.Характеристика,
| Размер.Значение КАК Размеры,
| Цвет.Значение КАК Цвета
|ПОМЕСТИТЬ Размер
|ИЗ
| Товары КАК Товар
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК Размер
| ПО Товар.Характеристика = Размер.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК Цвет
| ПО Товар.Характеристика = Цвет.Ссылка
|ГДЕ
| Размер.Свойство = &Размер
| И Цвет.Свойство = &Цвет
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокуметТовары.Номенклатура КАК Номенклатура,
| ДокуметТовары.Характеристика КАК Характеристика,
| ДокуметТовары.Номенклатура.Артикул КАК Артикул,
| СУММА(ДокуметТовары.КоличествоУпаковок) КАК КоличествоЭтикеток,
| ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод,
| ЕстьNULL(Размер.Размеры,"""") КАК Размер,
| ЕстьNULL(Размер.Цвета,"""") КАК Цвет
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК ДокуметТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
| ПО ДокуметТовары.Номенклатура = ШтрихкодыНоменклатуры.Номенклатура
| И ДокуметТовары.Характеристика = ШтрихкодыНоменклатуры.Характеристика
| И ДокуметТовары.Упаковка = ШтрихкодыНоменклатуры.Упаковка
| ЛЕВОЕ СОЕДИНЕНИЕ Размер КАК Размер
| ПО ДокуметТовары.Характеристика = Размер.Характеристика
|ГДЕ
| ДокуметТовары.Ссылка В(&МассивДокументов)
|
|СГРУППИРОВАТЬ ПО
| ДокуметТовары.Номенклатура,
| ДокуметТовары.Характеристика,
| ДокуметТовары.Номенклатура.Артикул,
| ШтрихкодыНоменклатуры.Штрихкод,
| ЕстьNULL(Размер.Размеры,""""),
| ЕстьNULL(Размер.Цвета,"""")";
Запрос.УстановитьПараметр("Размер" , ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Размер"));
Запрос.УстановитьПараметр("Цвет" , ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Цвет"));
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Запрос.УстановитьПараметр("Дата" , Дата);
помогите, если есть время.
Проблема следующая: сделал доп реквизиты для справочника "Физические лица" - Размер обуви, одежды, рост и т.п.
Пишу самый простой отчет на СКД
ВЫБРАТЬ
ФизическиеЛицаДополнительныеРеквизиты.Ссылка,
ФизическиеЛицаДополнительныеРеквизиты.НомерСтроки,
ФизическиеЛицаДополнительныеРеквизиты.Свойство,
ФизическиеЛицаДополнительныеРеквизиты.Значение,
ФизическиеЛицаДополнительныеРеквизиты.ТекстоваяСтрока
ИЗ
Справочник.ФизическиеЛица.ДополнительныеРеквизиты КАК ФизическиеЛицаДополнительныеРеквизиты
На управляемом приложении выдает пустой отчет, а если запустить отладку на обычном приложении - все работает.
Платформа 8.3.6.2100 конф БП 3.0.40.41 версия серверная.
(20) chesnokov-a-v, У тебя здесь нет условия. Тебе условие надо сделать по свойству "ФизическиеЛицаДополнительныеРеквизиты.Свойство" и указать свой доп реквизит.
А в качестве поля которое будет выводить значение выбрать "ФизическиеЛицаДополнительныеРеквизиты.Значение"
При загрузке из экселя поиск значения по наименованию. Но это среди присвоенных значений, а как найти в списке значений свойств?
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КонтрагентыДополнительныеРеквизиты.Значение КАК Значение
|ИЗ
| Справочник.Контрагенты.ДополнительныеРеквизиты КАК КонтрагентыДополнительныеРеквизиты
|ГДЕ
| КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство
| И КонтрагентыДополнительныеРеквизиты.Значение.Наименование ПОДОБНО &Наименование";
Запрос.УстановитьПараметр("Свойство", Свойство);
Запрос.УстановитьПараметр("Наименование", Наименование);
Функция БСП
// Возвращает значение дополнительного свойства объекта.
//
// Параметры:
// Объект - ЛюбаяСсылка - ссылка на объект, например, СправочникСсылка.Номенклатура,
// ДокументСсылка.ЗаказПокупателя, ...
// Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на
// дополнительный реквизит, значение которого нужно получить.
// - Строка - Имя дополнительного свойства.
//
// Возвращаемое значение:
// Произвольный - любое значение, допустимое для свойства.
//
Функция ЗначениеСвойства(Объект, Свойство) Экспорт
(32)
Вы просто гений!!
Теперь можно заменить все одной строкой, даже не нужно писать наименование реквизита заранее в макете.
ОбластьШапка.Параметры.ПредметДоговора = СтрШаблон(НСтр("ru = 'Предмет договора: %1'"), УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект, "НазваниеДопСвойстваИзПоляДляразработчиков"));