1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Запрос к табличной части

Тема в разделе "Базы данных и администрирование", создана пользователем dwight, 31 окт 2010.

  1. dwight

    dwight Гость

    Репутация:
    0
    Всем бодрого времени суток!

    Помогите новичку составить запрос.

    Есть документ "Закупка", в нём реквизит "Товар" (ссылается на справочник "Номеклатура") и табличная часть "СписокМагазинов" с реквезитом "Магазин".
    Реквизит "Магазин" ссылается на справочник "Магазины", в котором есть табличная часть "СписокТоваров". В ней есть реквизит "Товар" (ссылается на справочник "Номеклатура").

    Нужно чтобы при выборе товара в документе "Закупка" табличная часть заполнялась магазинами, в которых есть такой товар.
    Т.е. открыли док. "Закупка", выбрали товар, запустился запрос который возвращает те элементы справочника Магазины, в табличных частях которых есть выбранный товар.

    Итак, пробовал с таким запросом:

    Код:
    ВЫБРАТЬ
    |	Магазины.Ссылка,
    |	Магазины.СписокТоваров.(
    |		Товар
    |	)
    |ИЗ
    |	Справочник.Магазины КАК Магазины,
    |	Документ.Закупка КАК Закупка
    |ГДЕ
    |	Магазины.СписокТоваров.Товар= Закупка.Товар
    возвращает ошибку
    Код:
    Неоднозначное поле "Магазины.СписокТоваров.Товар"
    Чувствую нужно запрос сделать с ВНУТРЕННЕЕ СОЕДИНЕНИЕ, но не могу осилить.. Помогите пожалуйста!
     
  2. unknown181538

    unknown181538 НеГуру

    Репутация:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    1.417
    Симпатии:
    0
    Обычно, в качестве таблицы-источника выбирают саму табличную часть.
     
  3. dwight

    dwight Гость

    Репутация:
    0
    Т.е как я понял нужно примерно так (выбирать из табличной части СписокТоваров):
    Код:
    ВЫБРАТЬ
    |	Магазины.Ссылка,
    |	Магазины.СписокТоваров.(
    |		Товар
    |	)
    |ИЗ
    |	Справочник.Магазины.СписокТоваров КАК СписокТоваров,
    |	Документ.Закупка КАК Закупка
    |ГДЕ
    |	СписокТоваров.Товар= Закупка.Товар
    Выводит ошибку "Поле не найдено! (Справочник.Магазины.СписокТоваров)"

    Скорее всего я не в ту сторону копаю, можете на примере подсказать пожалуйста?
     
  4. unknown181538

    unknown181538 НеГуру

    Репутация:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    1.417
    Симпатии:
    0
    Код:
    ВЫБРАТЬ
    |	СписокТоваров.Ссылка,
    |  СписокТоваров.Товар
    |  
    |ИЗ
    |	Справочник.Магазины.СписокТоваров КАК СписокТоваров,
    |	Документ.Закупка КАК Закупка
    |ГДЕ
    |	СписокТоваров.Товар= Закупка.Товар
    И добавить соединение (ЛЕВОЕ, ВНЕШНЕЕ ВНУТРЕННЕЕ)
     
  5. dwight

    dwight Гость

    Репутация:
    0
    Это возвращает элементы табличной части "СписокТоваров". Не поможете подцепить сюда JOIN, чтобы возвращались элементы справочника "Магазины"?
     
  6. unknown181538

    unknown181538 НеГуру

    Репутация:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    1.417
    Симпатии:
    0
    Вызовите конструктор запросов, и заполните закладку "Связи".
     
  7. Darlock

    Darlock Well-Known Member

    Репутация:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    560
    Симпатии:
    1
    Комрады, в тексте запроса обращение к 2 таблицам сразу (док и ТЧ). Проще в разы будет если строить запрос напрямую к ТЧ. А ТЧ в себе содержит ссылку на сам док.

    2) Не стоит делать подобный запрос ПРИ ДОБАВЛЕНИИ КАЖДОЙ СТРОКИ в ТЧ.
     
  8. dwight

    dwight Гость

    Репутация:
    0
    Спасибо за ответ! Стыдно, но никак не могу реализовать сабж.

    Подскажи - вот есть на выходе из запроса элемент табличной части, как получить его родителя (элемента справочника)? Другими словами, как узнать к какому элементу справочника принадлежит запись из ТЧ?
     
  9. unknown181538

    unknown181538 НеГуру

    Репутация:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    1.417
    Симпатии:
    0
    Вопрос не понятен. Родителя получить можно чере ".Родитель")
     
  10. dwight

    dwight Гость

    Репутация:
    0
    Через .родитель() я так понимаю обращаются к объектам, а не к результатам запроса (может я чего не так понимаю?)

    Вот рабочий запрос:
    Код:
    ВЫБРАТЬ
    |	СписокТоваров.Товар
    |ИЗ
    |	Справочник.Магазины.СписокТоваров КАК СписокТоваров,
    |	Документ.Закупка КАК Закупка
    |ГДЕ
    |	СписокТоваров.Товар= Закупка.Товар
    - Возвращает товары из ТЧ "СписокТоваров" из ВСЕХ элементов справочника "Магазины" , которые совпали с указанным в док.Закупка товаром.
    Мне нужно чтобы возвращались только их родители-элементы справочника "Магазины".
    Т.е. запрос должен возвращать те элементы справочника "Магазины", в ТЧ которых есть выбранный товар (Документ.Закупка.Товар).
    Как такое провернуть?
    :ya_lamo: :KillMe:
    Помогите разобраться пожалуйста!
     
  11. unknown181538

    unknown181538 НеГуру

    Репутация:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    1.417
    Симпатии:
    0
    Понял, наконец. Это просто родителем не называется.

    Вообще, в этом запросе не нужен пока документ закупка. Нужно, например, выгрузить список товаров в СписокЗначений, и поставить условие на товар. Если же оставлять так, то нужно условие, что выбираем именно тот документ, в котором находимся.
     
  12. Darlock

    Darlock Well-Known Member

    Репутация:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    560
    Симпатии:
    1
    А "Родители" - где хранятся и как связаны с товарами?
     
  13. dwight

    dwight Гость

    Репутация:
    0
    В общем я уже получил что хотел.
    Вот что мне было нужно - запрос, который возвращает те элементы справочника "Магазины", в ТЧ ("СписокТоваров") которых есть определённая запись (Нужный_товар):
    Код:
    SELECT
    |	Магазины.Ссылка
    |FROM
    |	Справочник.Магазины КАК Магазины
    |LEFT JOIN Справочник.Магазины.СписокТоваров КАК СписокТоваров 
    |	ON (Магазины.Ссылка = СписокТоваров.Ссылка)
    |WHERE
    |	СписокТоваров.Товар = &Нужный_товар
     
Загрузка...

Поделиться этой страницей