Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 04:04

Свойства и Категории в Запросе.

Автор ***Vjacheslav***, 25 мар 2011, 13:26

0 Пользователей и 1 гость просматривают эту тему.

***Vjacheslav***

Опишите пожалуйста, кто знает, как использовать категории и свойства в запросах. Суть задачи такова. У документов РеализацияТоваровУслуг есть категория Судебная. И нужно вывести все реализации у которых эта категория установлена. Чета я запарилься не получается никак.

Klyacksa

1. Категория - значение катагории хранится в регистре сведений "КатегорииОбъекта". То есть, если
    1.1. Док1 имеет Категорию1, то в регистре есть запись: Док1->Категория1
    1.1. Док1 не имеет Категорию1, то в регистре нет такой записи
2. Свойство - значение свойства хранится в регистре сведений "ЗначенияСвойствОбъектов". То есть, в регистре есть записи вида:
    Объект1          Свойство1              Значение1

То есть, для того, чтобы выбрать запросом все доки с определенной категорией, нужно просто сделать внутреннее соединение с регистром "КатегорииОбъекта" (ставим в регистре отбор по нужной нам категории), связь по Объекту - то есть по доку.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

***Vjacheslav***

Я так и предпологал, но почему то выдает ошибку 

{Обработка.КонсольОтчетов.Форма.Форма(801)}: Ошибка при вызове метода контекста (Вывести)
      ПостроительОтчетов.Вывести(ЭлементыФормы.РезультатТабДокСвод);
по причине:

по причине:
Ошибка выполнения запроса
по причине:
Построенный запрос к СУБД использует слишком много таблиц. Допустимо не более 256.
Microsoft OLE DB Provider for SQL Server: Слишком много имен таблиц в запросе. Максимально допустимое значение - 256.
HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14,
И т.д.

Вот сам запрос 

ВЫБРАТЬ
РеализацияТоваровУслуг.Ссылка,
ЕСТЬNULL(КатегорииОбъектов.Категория,"НЕТ")
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов
ПО РеализацияТоваровУслуг.Ссылка = КатегорииОбъектов.Объект.Ссылка


вчем ошибка???

***Vjacheslav***

Все сам понял свой косяк. Условие связи не так написано, нужно ПО РеализацияТоваровУслуг.Ссылка = КатегорииОбъектов.Объект и все нормально работает.

Klyacksa

Рекомендация: когда отбираете регистры Категории или Свойства, лучше выносить их в отдельный запрос с отбором по нужной категории/свойству. Как показывает практика, так работает намного быстрее.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск