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

Выборка одинакового реквизита из разных документов

Автор Nail2010, 03 мар 2011, 06:28

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

cska-fanat-kz

Снова образный пример.
Выбрать все РКО у которых касса = касса ПКО и которые введены в один день с ПКО

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

cska-fanat-kz

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

Nail2010

Спасибо, уже догадался, все работает :)
Код такой - вдруг для других пригодиться

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

cska-fanat-kz

Вы же писали, что вам нужна выборка только реализаций?

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

Nail2010

По идее, конечно лишние, но они же нужны для привязки к документу Заказ покупателя. дело в том, что есть ПКО введенный на основании Реализации. если я сделаю такое условие, в выборку попадут ПКО, введенные и на основании заказа, и на основании реализации. А нужно что бы ПКО выбирались только те, которые на основании ЗаказаПокупателя.

теперь вопрос в другом - на форме 3 табличные части, в каждую из которызх помещается 3 разлиные результата выборки. Так как выборки разные, в каждую табЧасть результат выводиться отдельным циклом.
ПРИМЕР:

Запрос=Новый Запрос;
   Запрос.Текст="ВЫБРАТЬ
             |   ПриходныйКассовыйОрдер.ДокументОснование.Ссылка
             |ИЗ
             |   Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
             |ГДЕ ПриходныйКассовыйОрдер.ДокументОснование ССЫЛКА Документ.ЗаказПокупателя
             | И ПриходныйКассовыйОрдер.ДокументОснование<>ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)";
   Выборка=Запрос.Выполнить().Выбрать();         
   Пока Выборка.Следующий() Цикл;
      СтрокаТабличнойЧасти=ДокВыбор.Добавить();
      СтрокаТабличнойЧасти.ЗаказПокупателя=Выборка.ДокументОснованиеСсылка;

ДокВыбор - имя ТабЧасти.
Дак вот.
При выполнении второго цикла выборки - того самого кода, который вы подсказали - результат в первой таблице у меня вообще не выводиться. В чем причина?

Nail2010


cska-fanat-kz

"По идее, конечно лишние, но они же нужны для привязки к документу Заказ покупателя. дело в том, что есть ПКО введенный на основании Реализации. если я сделаю такое условие, в выборку попадут ПКО, введенные и на основании заказа, и на основании реализации. А нужно что бы ПКО выбирались только те, которые на основании ЗаказаПокупателя."

Если в запросе будет внутреннее соединение с условием

Реализация.ДокументОснование = ПКО.ДокументОснование

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

Nail2010

Так... То есть :
ВЫБРАТЬ
    |ЗаказПокупателя.Ссылка,
    |РеализацияТоваровУслуг.Ссылка КАК Ссылка1,
    |ПриходныйКассовыйОрдер.Ссылка КАК Ссылка2
    |ИЗ
    |Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
    |ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
    |ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ПО ЗаказПокупателя.Ссылка = РеализацияТоваровУслуг.Сделка.Ссылка
    |ПО ПриходныйКассовыйОрдер.ДокументОснование = ЗаказПокупателя.Ссылка
    |ГДЕ
    |РАЗНОСТЬДАТ(РеализацияТоваровУслуг.Дата, ПриходныйКассовыйОрдер.Дата, ДЕНЬ) = 0
            | И РеализацияТоваровУслуг.Сделка=ПриходныйКассовыйОрдер.ДокументОснование"

Таким образом? Выбирает все равно 3 документа... или я не там условие написал?


Nail2010

Написал условие на закладке СВЯЗИ, и запрос завис....

cska-fanat-kz

Условие соединения!

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

Теги:

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

Рейтинг@Mail.ru

Поиск