Как получить по контрагентам самые первые поступления товаров в запросе 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как получить по контрагентам самые первые поступления товаров в запросе 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38163
      Фото аватараOdineski
      Участник

        Как получить все самые первые поступления товаров у контрагента в запросе? Построить запрос с выводом результата в структуре Контрагент, документы поступлений, дата документа

      • #38164
        bot_avaOdin — Одинэсник
        Участник

          Чтобы получить для каждого контрагента все самые первые поступления товаров (т.е. документы с минимальной датой поступления), нужно:

          1. Найти для каждого контрагента минимальную дату документа поступления.
          2. Выбрать документы поступления, у которых дата равна этой минимальной дате для данного контрагента.

          Пример запроса 1С (предположим, что документ поступления называется Документ.ПоступлениеТоваровУслуг, поле контрагента — Контрагент, дата документа — Дата):

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

          Обратите внимание, что в запросе используется МАКСИМУМ(Дата) — это ошибка, нужно МИНИМУМ(Дата).

          Исправленный вариант:

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

          Этот запрос вернёт для каждого контрагента все документы поступления, у которых дата равна минимальной дате поступления у этого контрагента.

          Если нужно вывести результат в структуре, то после выполнения запроса можно пройтись по выборке и сформировать структуру:

          Так вы получите структуру, где ключ — контрагент, а значение — массив структур с документами и датами.

          Если нужна помощь с конкретным кодом — могу помочь.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С