Запрос 1с 8.2

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

  1. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Подскажите как можно реализовать выборку документов ДокументЗаказ по условию что у документа ДокументСобытие (у которого заказ основание) состояние подтвержден, причем возможно что ДокументСобытие является основанием. и результат должен получится таблица типа заказ 1шт событие 1шт - причем недолжны дублировать ни заказы и ни события.
    можите дать какой-нибудь пример?
     
  2. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Сделал через СКД с объединением наборов данных но дубликаты события присутствуют:
    запрос НаборДанных1 :
    Код (Text):
    ВЫБРАТЬ
    RZ_РегистрацияСобытия.Ответственный КАК Ответственный,
    Заказы.Ссылка КАК Заказ,
    МИНИМУМ(РАЗНОСТЬДАТ(&ДатаНачала, RZ_РегистрацияСобытия.Дата, СЕКУНДА)) КАК МинДат
    ИЗ
    Документ.RZ_РегистрацияСобытия КАК RZ_РегистрацияСобытия
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК Заказы
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.RZ_Доставка КАК RZ_Доставка
    ПО (RZ_Доставка.ЗаказПокупателя = Заказы.Ссылка)
    ПО (Заказы.Ссылка = RZ_РегистрацияСобытия.Основание)
    ГДЕ
    Заказы.Проведен = ИСТИНА
    И RZ_Доставка.ДатаДоставки МЕЖДУ &ДатаНачала И &ДатаКонец
    И RZ_Доставка.Состояние = &СостояниеДоставки
    И RZ_РегистрацияСобытия.Состояние = &СостояниеСобытия
    И Заказы.Состояние = &СостояниеЗаказа
    И RZ_РегистрацияСобытия.ТипСобытия <> &ТипСобытия

    СГРУППИРОВАТЬ ПО
    Заказы.Ссылка,
    RZ_РегистрацияСобытия.Ответственный

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

    СГРУППИРОВАТЬ ПО
    Заказы.Ссылка,
    РАЗНОСТЬДАТ(&ДатаНачала, RZ_РегистрацияСобытия.Дата, СЕКУНДА),
    RZ_РегистрацияСобытия.Ответственный

    УПОРЯДОЧИТЬ ПО
    Ответственный,
    Заказ
    подскажите как их собырть вместе и убрать дубли событий
     
  3. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Соединить в один запрос и использовать "ВЫБРАТЬ РАЗЛИЧНЫЕ"?
     
  4. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Может и глупо вопрос прозвучит...но все таки задам: а зачем вы объединяете 2 документа, если вам нужно получить один документ (по набору условий) и взять его документ-основание?

    И подозреваю, что двойные записи у вас возникают из-за 2 левых соединений (но по разным реквизитам). Поэтому может поможет совет unknown181538 . А можно попробовать выбрать более "приоритетный документ" и через его реквизит вытаскивать вторую ссылку.
     
  5. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Нужно получить два документа: документзаказ и докуменсобытие, причем событие может быть основанием для заказа.
    Соединить в один запрос и использовать "ВЫБРАТЬ РАЗЛИЧНЫЕ"? - да!
     
  6. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    подскажите пример простой по выборке по основанием двух документов остальное я прикручу
    в моем случае главный документ: документЗаказ
     
  7. SeverBap

    SeverBap Well-Known Member

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

    СГРУППИРОВАТЬ ПО
    Заказы.Ссылка,
    RZ_РегистрацияСобытия.Ответственный

    ОБЪЕДИНИТЬ

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

    СГРУППИРОВАТЬ ПО
    Заказы.Ссылка,
    РАЗНОСТЬДАТ(&ДатаНачала, RZ_РегистрацияСобытия.Дата, СЕКУНДА),
    RZ_РегистрацияСобытия.Ответственный

    УПОРЯДОЧИТЬ ПО
    Ответственный,
    Заказ
     
  8. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Раз тема обновилась, то видимо от двойных записей вы не избавились... Попробуйте этот запрос поместить или в отдельный пакет запросов (вирт.таблица) или во вложенный запрос, а потом выполнить "ВЫБРАТЬ РАЗЛИЧНЫЕ" уже к итоговой выборке.
     
  9. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Избавился, два слова только поменялось!
     
Загрузка...

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