как описать в запросе..

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

  1. umbra

    umbra Гость

    Задача такова: необходимо связать в запросе данные взятые из документа Поступление товаров и услуг с розничными ценами на товар взятыми из регистра сведений "цены автоматизированной торговой точки" По какому принципу и параметру их нужно соединять?
    Я понимаю что это вопрос может и не серьезный, но для меня очень актуальный...важен не столько код сколько объяснение...
    Буду очень признателен за проявленное терпение и объяснения.
     
  2. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Запускаете конструктор.
    Выбераете таблицы "ПоступлениеТоваровУслуг.Товары" и "Регистр сведений цены в АТТ срез последних". На закладке связи указываете левое соединение по номенклатуре.
    И на первой закладке выбираете нужные поля.
    Примерно так...
     
  3. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Только, условие в запросе наложить не забудьте:

    Код ( (Unknown Language)):
    ПоступлениеТоваровУслуг.Товары.Ссылка = &Ссылка
    Если вам это надо в конкретном документе (параметр ссылка = ссылка на документ).

    Если вам необходимо по нескольким документам получить выборку, то лучше использовать пакет запросов, в котором во временную таблицу поместить всю номенклатуру, а в основном запросе уже делать ЛЕВОЕ СОЕДИНЕНИЕ с временной талицей
     
  4. umbra

    umbra Гость

    Это все хорошо и понятно и огромное спасибо за это) НО в регистре несколько цен...и товар у нас далеко не один в накладной...так как же выбрать\сопоставить только актуальные цены? Документ один.
     
  5. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Регистр сведений периодический (странно будет, если нет)?

    когда вы используете виртуальную таблицу
    платформа сама отбирает последние записи в регистре по каждой номенклатуре. Левое соединение нужно для того, чтоб у вас не возникло падение БД из-за объема выборки. Посему у вас на закладке связи должно быть следующее:

    Код ( (Unknown Language)):
    ПоступлениеТоваровИУслугТовары  |  V  | РегистрСведенийЦеныВАТТСрезПоследних  |  | |  Номенклатура  |  Номенклатура
    По этому условию установится отбор на выборку записей из регистра сведений. Т.е. каждой строке таблицы документа будет соответсвовать одна запись из регистра сведений (самая посленяя по периоду)
     
  6. umbra

    umbra Гость

    Простите мою безграмотность но...

    Код ( (Unknown Language)):
    ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Номенклатура,
    ЦеныАТТСрезПоследних.Цена
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныАТТ.СрезПоследних КАК ЦеныАТТСрезПоследних
    ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЦеныАТТСрезПоследних.Номенклатура
    ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка = &ТекДок
    в документа ОДИН товар .... на выходе он превратился в 5 с разными ценами... ;) :please:
     
  7. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    При условии, что у вас для этого товара назначено 5 разных типов цен. Нужен один, укажите тип цен в параметрах виртуальной таблицы.

    Код ( (Unknown Language)):
    ...
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныАТТ.СрезПоследних КАК ЦеныАТТСрезПоследних(, &ТипЦен)
    ...
    Запрос.УстановитьПараметр("ТипЦен", ИнтересующийТипЦен);
    или, если интересующий тип цен предопределен в системе, то

    Код ( (Unknown Language)):
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныАТТ.СрезПоследних КАК ЦеныАТТСрезПоследних(, ЗНАЧЕНИЕ(Справочник.ТипыЦен.ПредопределенныйТипЦен))
     
  8. evgenyatam

    evgenyatam Well-Known Member

    Регистрация:
    7 сен 2007
    Сообщения:
    175
    Симпатии:
    0
    а если вместо левого соединения использовать "ВНУТРЕННЕЕ СОЕДИНЕНИЕ"?
     
  9. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Не уверен. Никогда не пользовался, т.к. в "библии" (она же "книга убийца) написано, что в 8.1 быстрее всего работает ЛЕВОЕ СОЕДИНЕНИЕ.
     
  10. evgenyatam

    evgenyatam Well-Known Member

    Регистрация:
    7 сен 2007
    Сообщения:
    175
    Симпатии:
    0
    да я уже понял, что отбор по типу цен необходим. а внутреннее соединение в данном случае возьмет последнюю физически записанную цену, что не есть хорошо.
     
  11. umbra

    umbra Гость

    спасибо выручили\объяснили)
    сделал так:
    Код ( (Unknown Language)):
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
    только непонятно почему без наложения группировки двоятся некоторые позиции...
    P.S. взял данные из другого регистра...нужны были просто розничные цены на товар....
     
  12. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Без полного текста запроса трудно угадать ответ на вопрос "почему?"
     
  13. umbra

    umbra Гость

    да конечно...
    Код ( (Unknown Language)):
    ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаВРознице,
    ПоступлениеТоваровУслугТовары.Номенклатура.Артикул,
    ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
    ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
    И ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
    И ПоступлениеТоваровУслугТовары.Номенклатура.Артикул = ЦеныНоменклатурыСрезПоследних.Номенклатура.Артикул
    ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка = &ТекущийДокумент
    соответственно при наложении группировки все становится как надо..
     
  14. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Группировку делаете по Номенклатуре?
    Если да, то у вас ведется учет по характеристикам. И в регистре цены в разрезе характеристик. Отсюда и 5 строк (5 характеристик)
     
Загрузка...

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