1. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Первый товар уже в продаже: Консультация на тему ИБ от Ondrik8

    Скрыть объявление
  2. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Второй товар маркетплейса: Надёжная обфускация вашей программы от PingVinich

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

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

Тема в разделе "1C и всё что с ней связано", создана пользователем dwight, 31 окт 2010.

  1. dwight

    dwight Гость

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

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

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

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

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

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

    unknown181538 НеГуру
    1C Team

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

    dwight Гость

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

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

    unknown181538 НеГуру
    1C Team

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

    dwight Гость

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

    unknown181538 НеГуру
    1C Team

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

    Darlock Well-Known Member
    1C Team

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

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

    dwight Гость

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

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

    unknown181538 НеГуру
    1C Team

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

    dwight Гость

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

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

    unknown181538 НеГуру
    1C Team

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

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

    Darlock Well-Known Member
    1C Team

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

    dwight Гость

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

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