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

Запрос

Автор mashencev_anton, 29 апр 2015, 10:28

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

mashencev_anton

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
    ЗаказПоставщикуТовары.Количество КАК КоличествоПредзаказ,
    ЗаявкаЗаказПодКлиента.Количество КАК КоличествоПлан,
    ЗаказПоставщикуТовары.Ссылка КАК ПредварительныйЗаказПоставщику,
    ЗаявкаЗаказПодКлиента.ЗаявкаКлиента,
    ЗаказПоставщикуТовары.Номенклатура
ПОМЕСТИТЬ ЗакПодКлПредвЗакПост
ИЗ
    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗаявкаЗаказПодКлиента КАК ЗаявкаЗаказПодКлиента
        ПО ЗаказПоставщикуТовары.ДокументРазмещение = ЗаявкаЗаказПодКлиента.ЗаказПодКлиента
            И ЗаказПоставщикуТовары.Номенклатура = ЗаявкаЗаказПодКлиента.ЗаказПодКлиентаНоменклатура
ГДЕ
    ЗаказПоставщикуТовары.Ссылка.Предварительный
    И ЗаказПоставщикуТовары.Ссылка.Проведен
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
    ЗаказПоставщикуТовары.Ссылка КАК ОсновнойЗаказПоставщику,
    ЗакПодКлПредвЗакПост.КоличествоПлан,
    ЗакПодКлПредвЗакПост.КоличествоПредзаказ,
    ЗаказПоставщикуТовары.Количество КАК КоличествоОсновнойЗаказ,
    ЗакПодКлПредвЗакПост.ЗаявкаКлиента,
    ЗаказПоставщикуТовары.Номенклатура
ПОМЕСТИТЬ ЗакПодКлПредвЗакПостосноЗакПост
ИЗ
    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗакПодКлПредвЗакПост КАК ЗакПодКлПредвЗакПост
        ПО ЗаказПоставщикуТовары.Ссылка.ДокументОснование = ЗакПодКлПредвЗакПост.ПредварительныйЗаказПоставщику
            И ЗаказПоставщикуТовары.Номенклатура = ЗакПодКлПредвЗакПост.Номенклатура
ГДЕ
    НЕ ЗаказПоставщикуТовары.Ссылка.Предварительный
    И ЗаказПоставщикуТовары.Ссылка.Проведен
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
    ЗакПодКлПредвЗакПостосноЗакПост.ЗаявкаКлиента,
    ПоступлениеТоваровУслугТовары.Номенклатура,
    ЗакПодКлПредвЗакПостосноЗакПост.КоличествоПлан,
    ЗакПодКлПредвЗакПостосноЗакПост.КоличествоПредзаказ,
    ЗакПодКлПредвЗакПостосноЗакПост.КоличествоОсновнойЗаказ,
    ПоступлениеТоваровУслугТовары.Количество КАК КоличествоФакт
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗакПодКлПредвЗакПостосноЗакПост КАК ЗакПодКлПредвЗакПостосноЗакПост
        ПО ПоступлениеТоваровУслугТовары.ЗаказПоставщику = ЗакПодКлПредвЗакПостосноЗакПост.ОсновнойЗаказПоставщику
            И ПоступлениеТоваровУслугТовары.Номенклатура = ЗакПодКлПредвЗакПостосноЗакПост.Номенклатура
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.Проведен

И это от части работает, но вот в чем Собственно вопрос, что если в Поступлении не было какого либо товара который был который присутствует во всех предыдущих доках из этой цепочки, то соответственно по нему никакой инфу не покажет.. как это исправить?? Я так понимаю в последнем пакете связи нужно наладить по другому?? или что-то другое??

cska-fanat-kz

Чистое ИМХО...
ЗаказПодКлиента, Предварительный и Основной ЗаказПоставщику - вполне себе могут быть одним документом...

По существу вопроса: замените внутреннее соединение на полное и будет вам счастье.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

vitasw

В запросе, вместо "Внутреннее соединение" установить "Левое..."

mashencev_anton

Цитата: cska-fanat-kz от 29 апр 2015, 11:14
Чистое ИМХО...
ЗаказПодКлиента, Предварительный и Основной ЗаказПоставщику - вполне себе могут быть одним документом...

По существу вопроса: замените внутреннее соединение на полное и будет вам счастье.
Возможно и даже спорить не буду с Вами, Но ведь в них могут разниться данные ведь так??
Добавлено: 29 апр 2015, 11:22


Цитата: vitasw от 29 апр 2015, 11:17
В запросе, вместо "Внутреннее соединение" установить "Левое..."
Вот ВЫБРАТЬ
ЗаказПодКлиентаТовары.Номенклатура КАК ЗаказПодКлиентаНоменклатура,
ЗаказПодКлиентаТовары.Ссылка.Контрагент,
ЗаказПодКлиентаТовары.Количество,
ЗаказПодКлиентаТовары.Ссылка КАК ЗаказПодКлиента,
ЗаказПокупателяТовары.Ссылка КАК ЗаявкаКлиента
ПОМЕСТИТЬ ЗаявкаЗаказПодКлиента
ИЗ
Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПодКлиента.Товары КАК ЗаказПодКлиентаТовары
ПО ЗаказПокупателяТовары.Номенклатура = ЗаказПодКлиентаТовары.Номенклатура
И ЗаказПокупателяТовары.Ссылка = ЗаказПодКлиентаТовары.Ссылка.ЗаказПокупателя
ГДЕ
ЗаказПокупателяТовары.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаявкаКлиента)
И ЗаказПокупателяТовары.Ссылка = &Ссылка
И ЗаказПодКлиентаТовары.Ссылка.Проведен
И ЗаказПокупателяТовары.Ссылка.Проведен
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказПоставщикуТовары.Количество КАК КоличествоПредзаказ,
ЗаявкаЗаказПодКлиента.Количество КАК КоличествоПлан,
ЗаказПоставщикуТовары.Ссылка КАК ПредварительныйЗаказПоставщику,
ЗаявкаЗаказПодКлиента.ЗаявкаКлиента,
ЗаказПоставщикуТовары.Номенклатура
ПОМЕСТИТЬ ЗакПодКлПредвЗакПост
ИЗ
Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗаявкаЗаказПодКлиента КАК ЗаявкаЗаказПодКлиента
ПО ЗаказПоставщикуТовары.ДокументРазмещение = ЗаявкаЗаказПодКлиента.ЗаказПодКлиента
И ЗаказПоставщикуТовары.Номенклатура = ЗаявкаЗаказПодКлиента.ЗаказПодКлиентаНоменклатура
ГДЕ
ЗаказПоставщикуТовары.Ссылка.Предварительный
И ЗаказПоставщикуТовары.Ссылка.Проведен
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказПоставщикуТовары.Ссылка КАК ОсновнойЗаказПоставщику,
ЗакПодКлПредвЗакПост.КоличествоПлан,
ЗакПодКлПредвЗакПост.КоличествоПредзаказ,
ЗаказПоставщикуТовары.Количество КАК КоличествоОсновнойЗаказ,
ЗакПодКлПредвЗакПост.ЗаявкаКлиента,
ЗаказПоставщикуТовары.Номенклатура
ПОМЕСТИТЬ ЗакПодКлПредвЗакПостосноЗакПост
ИЗ
Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗакПодКлПредвЗакПост КАК ЗакПодКлПредвЗакПост
ПО ЗаказПоставщикуТовары.Ссылка.ДокументОснование = ЗакПодКлПредвЗакПост.ПредварительныйЗаказПоставщику
И ЗаказПоставщикуТовары.Номенклатура = ЗакПодКлПредвЗакПост.Номенклатура
ГДЕ
НЕ ЗаказПоставщикуТовары.Ссылка.Предварительный
И ЗаказПоставщикуТовары.Ссылка.Проведен
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗакПодКлПредвЗакПостосноЗакПост.ЗаявкаКлиента,
ЕСТЬNULL(ПоступлениеТоваровУслугТовары.Номенклатура, ЗакПодКлПредвЗакПостосноЗакПост.Номенклатура) КАК Номенкатура,
ЗакПодКлПредвЗакПостосноЗакПост.КоличествоПлан,
ЗакПодКлПредвЗакПостосноЗакПост.КоличествоПредзаказ,
ЗакПодКлПредвЗакПостосноЗакПост.КоличествоОсновнойЗаказ,
ЕСТЬNULL(ПоступлениеТоваровУслугТовары.Количество, 0) КАК КоличествоФакт,
ПоступлениеТоваровУслугТовары.ЗаказПоставщику,
ЗакПодКлПредвЗакПостосноЗакПост.ОсновнойЗаказПоставщику
ИЗ
ЗакПодКлПредвЗакПостосноЗакПост КАК ЗакПодКлПредвЗакПостосноЗакПост
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ПО ПоступлениеТоваровУслугТовары.ЗаказПоставщику = ЗакПодКлПредвЗакПостосноЗакПост.ОсновнойЗаказПоставщику
И ПоступлениеТоваровУслугТовары.Номенклатура = ЗакПодКлПредвЗакПостосноЗакПост.Номенклатура
ГДЕ
ПоступлениеТоваровУслугТовары.Ссылка.Проведен
ничего не изменилось  :dfbbdrfb:

cska-fanat-kz

зачем вы их между собой пересоединяете?
получите выборку по номенклатуре (ну там с группировкой) по каждому документу по отдельности,
а потом соедините по номенклатуре.
в результате получите таблицу примерно следующую

номенклатура / заказ клиента / заказ под клиента / заказ поставщику предвар. / заказ поставщику осн / поступ-е
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

mashencev_anton

Цитата: cska-fanat-kz от 29 апр 2015, 11:54
зачем вы их между собой пересоединяете?
получите выборку по номенклатуре (ну там с группировкой) по каждому документу по отдельности,
а потом соедините по номенклатуре.
в результате получите таблицу примерно следующую

номенклатура / заказ клиента / заказ под клиента / заказ поставщику предвар. / заказ поставщику осн / поступ-е

А по ссылкам соединять их не нужно?

cska-fanat-kz

а они друг с другом как-то связаны?
через тот же документ-основание?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

mashencev_anton

Цитата: cska-fanat-kz от 29 апр 2015, 12:19
а они друг с другом как-то связаны?
через тот же документ-основание?
да связаны))))) Спасибо тебе за правильную мысль!!!!! Сделал так и всё работает...Надеюсь ты об этом говорил??
ВЫБРАТЬ
ЗаказПокупателяТовары.Ссылка,
ЗаказПокупателяТовары.Количество,
ЗаказПокупателяТовары.Номенклатура
ПОМЕСТИТЬ ЗаявкаКлиента
ИЗ
Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ГДЕ
ЗаказПокупателяТовары.Ссылка.Проведен
И ЗаказПокупателяТовары.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаявкаКлиента)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказПодКлиентаТовары.Ссылка КАК ЗаказПодКлиента,
ЗаказПодКлиентаТовары.Номенклатура,
ЗаказПодКлиентаТовары.Количество КАК КоличествоПодКлиента
ПОМЕСТИТЬ ЗаказПодКлиента
ИЗ
Документ.ЗаказПодКлиента.Товары КАК ЗаказПодКлиентаТовары
ГДЕ
ЗаказПодКлиентаТовары.Ссылка.Проведен
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказПоставщикуТовары.Ссылка КАК ПредварительныйЗаказПоставщику,
ЗаказПоставщикуТовары.Номенклатура,
ЗаказПоставщикуТовары.Количество КАК КоличествоПредварительный,
ЗаказПоставщикуТовары.ДокументРазмещение
ПОМЕСТИТЬ ПредварительныйЗаказПоставщику
ИЗ
Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
ГДЕ
ЗаказПоставщикуТовары.Ссылка.Проведен
И ЗаказПоставщикуТовары.Ссылка.Предварительный
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказПоставщикуТовары.Ссылка КАК ОсновнойЗаказПоставщику,
ЗаказПоставщикуТовары.Номенклатура,
ЗаказПоставщикуТовары.Количество КАК КоличествоОсновнойЗаказ
ПОМЕСТИТЬ ОсновнойЗаказПоставщику
ИЗ
Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
ГДЕ
ЗаказПоставщикуТовары.Ссылка.Проведен
И НЕ ЗаказПоставщикуТовары.Ссылка.Предварительный
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПоступлениеТоваровУслугТовары.Ссылка КАК ПоступлениеТоваров,
ПоступлениеТоваровУслугТовары.Номенклатура,
ПоступлениеТоваровУслугТовары.Количество КАК КоличествоПоступление
ПОМЕСТИТЬ ПоступлениеТоваров
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
ПоступлениеТоваровУслугТовары.Ссылка.Проведен
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказПодКлиента1.Номенклатура,
ЗаказПодКлиента1.КоличествоПодКлиента,
ОсновнойЗаказПоставщику1.КоличествоОсновнойЗаказ,
ПоступлениеТоваров1.КоличествоПоступление,
ПредварительныйЗаказПоставщику1.КоличествоПредварительный
ИЗ
ЗаявкаКлиента КАК ЗаявкаКлиента1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗаказПодКлиента КАК ЗаказПодКлиента1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПредварительныйЗаказПоставщику КАК ПредварительныйЗаказПоставщику1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОсновнойЗаказПоставщику КАК ОсновнойЗаказПоставщику1
ЛЕВОЕ СОЕДИНЕНИЕ ПоступлениеТоваров КАК ПоступлениеТоваров1
ПО ОсновнойЗаказПоставщику1.ОсновнойЗаказПоставщику = ПоступлениеТоваров1.ПоступлениеТоваров.Сделка
И ОсновнойЗаказПоставщику1.Номенклатура = ПоступлениеТоваров1.Номенклатура
ПО ПредварительныйЗаказПоставщику1.ПредварительныйЗаказПоставщику.Ссылка = ОсновнойЗаказПоставщику1.ОсновнойЗаказПоставщику.ДокументОснование
И ПредварительныйЗаказПоставщику1.Номенклатура = ОсновнойЗаказПоставщику1.Номенклатура
ПО ЗаказПодКлиента1.ЗаказПодКлиента = ПредварительныйЗаказПоставщику1.ДокументРазмещение
И ЗаказПодКлиента1.Номенклатура = ПредварительныйЗаказПоставщику1.Номенклатура
ПО ЗаявкаКлиента1.Ссылка = ЗаказПодКлиента1.ЗаказПодКлиента.ЗаказПокупателя
И ЗаявкаКлиента1.Номенклатура = ЗаказПодКлиента1.Номенклатура
ГДЕ
ЗаявкаКлиента1.Ссылка = &Ссылка

vitasw

Ну примерно, только вы все равно целенаправлено пихаете внутреннее соединение. Надеюсь вы понимаете, что в результате вы получите только ту номенклатуру, которая присутствует во всех документах цепочки. Если какая-то номенклатура, хоть в одном документе отсутствует или наоборот в любом документе есть какая-то новая номенклатура, то в результат эта информация не попадет.

mashencev_anton

Цитата: vitasw от 29 апр 2015, 14:58
Ну примерно, только вы все равно целенаправлено пихаете внутреннее соединение. Надеюсь вы понимаете, что в результате вы получите только ту номенклатуру, которая присутствует во всех документах цепочки. Если какая-то номенклатура, хоть в одном документе отсутствует или наоборот в любом документе есть какая-то новая номенклатура, то в результат эта информация не попадет.
НУ не знаю сейчас всё  получается так как нужно

Теги:

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

Рейтинг@Mail.ru

Поиск