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

СКД - Запрос

Автор xdto, 16 мая 2023, 09:24

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

Максим75

xdto, можно пакетным, можно вложенным запросом, можно разными наборами в СКД,как Вам удобнее.
просто частями всегда проще есть слона.
Вам самому будет легче во всем разобраться, когда разными наборами данных сделаете.

LexaK

(было упомянуто здесь про движения документов)

как вы думаете зачем в 1С-ке созданы и используются множество регистров?
правильно! что бы из них брать уже предварительно посчитанные/обработанные данные 
как раз с учетом возвратов, корректировок, платежей взаимозачетов и т.д.

строить отчет только по данным документов - это неправильно!  :befhbt:

(что бы все правильно заработало, переписывайте запрос по данным из Регистров)
если помогло нажмите: Спасибо!

Максим75

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

xdto

LexaK, Я полностью с Вами согласен что отчеты надо строить по данным регистров. Я сам тоже не сторонник делать отчеты по документам но в данном ситуации приходиться стоить по документам так как говорит Максим75 выгрибать этих документов через регистратор это просто яма.

xdto

В 1с рознице 2 есть такой отчет похожий с вот таким запросом пытался сделать по такому же алгоритму набору данных но тут не понятно как отсечь документы продажи которых нет оплаты.


ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ЧекиИПозицииПродажиВозврата.Чек КАК ЧекККМ,
   ЧекиИПозицииПродажиВозврата.Позиция КАК КоличествоПозиций,
   ВЫБОР
      КОГДА ТИПЗНАЧЕНИЯ(ЧекиИПозицииПродажиВозврата.Чек.Ссылка) = ТИП(Документ.ЧекККМ)
         ТОГДА ЧекиИПозицииПродажиВозврата.Позиция
      ИНАЧЕ 0
   КОНЕЦ КАК КоличествоПозицийПродажи,
   ВЫБОР
      КОГДА ТИПЗНАЧЕНИЯ(ЧекиИПозицииПродажиВозврата.Чек.Ссылка) = ТИП(Документ.ЧекККМВозврат)
         ТОГДА ЧекиИПозицииПродажиВозврата.Позиция
      ИНАЧЕ 0
   КОНЕЦ КАК КоличествоПозицийВозврата
ПОМЕСТИТЬ ЧекиИКоличествоПозиций
ИЗ
   (ВЫБРАТЬ
      ЧекиИПозиции.Чек КАК Чек,
      СУММА(ЧекиИПозиции.Позиция) КАК Позиция
   ИЗ
      (ВЫБРАТЬ РАЗЛИЧНЫЕ
         ЧекККМТовары.Ссылка КАК Чек,
         ЧекККМТовары.Номенклатура КАК Номенклатура,
         ЧекККМТовары.Характеристика КАК Характеристика,
         1 КАК Позиция
      ИЗ
         Документ.ЧекККМ.Товары КАК ЧекККМТовары
      ГДЕ
         ЧекККМТовары.Ссылка.Архивный
         И ЧекККМТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
      
      ОБЪЕДИНИТЬ ВСЕ
      
      ВЫБРАТЬ
         ЧекККМВозвратТовары.Ссылка,
         ЧекККМВозвратТовары.Номенклатура,
         ЧекККМВозвратТовары.Характеристика,
         1
      ИЗ
         Документ.ЧекККМВозврат.Товары КАК ЧекККМВозвратТовары
      ГДЕ
         ЧекККМВозвратТовары.Ссылка.Архивный
         И ЧекККМВозвратТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода) КАК ЧекиИПозиции
   
   СГРУППИРОВАТЬ ПО
      ЧекиИПозиции.Чек) КАК ЧекиИПозицииПродажиВозврата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ЧекККМ.Ссылка КАК ЧекККМ,
   ВЫБОР
      КОГДА ТИПЗНАЧЕНИЯ(ЧекККМ.Ссылка) = ТИП(Документ.ЧекККМ)
         ТОГДА ЧекККМ.СуммаДокумента
      ИНАЧЕ 0
   КОНЕЦ КАК СуммаПродажи,
   ВЫБОР
      КОГДА ТИПЗНАЧЕНИЯ(ЧекККМ.Ссылка) = ТИП(Документ.ЧекККМВозврат)
         ТОГДА ЧекККМ.СуммаДокумента
      ИНАЧЕ 0
   КОНЕЦ КАК СуммаВозврата,
   1 КАК КоличчествоЧеков,
   ВЫБОР
      КОГДА ТИПЗНАЧЕНИЯ(ЧекККМ.Ссылка) = ТИП(Документ.ЧекККМ)
         ТОГДА 1
      ИНАЧЕ 0
   КОНЕЦ КАК КоличествоЧековПродажи,
   ВЫБОР
      КОГДА ТИПЗНАЧЕНИЯ(ЧекККМ.Ссылка) = ТИП(Документ.ЧекККМВозврат)
         ТОГДА 1
      ИНАЧЕ 0
   КОНЕЦ КАК КоличествоЧековВозврата
ПОМЕСТИТЬ ЧекиИСумма
ИЗ
   (ВЫБРАТЬ РАЗЛИЧНЫЕ
      ЧекККМПродажи.Ссылка КАК Ссылка,
      ЧекККМПродажи.СуммаДокумента КАК СуммаДокумента
   ИЗ
      Документ.ЧекККМ КАК ЧекККМПродажи
   ГДЕ
      ЧекККМПродажи.Ссылка.Архивный
      И ЧекККМПродажи.Дата >= &НачалоПериода
      И (ЧекККМПродажи.Дата <= &КонецПериода
            ИЛИ &КонецПериода = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
      ЧекККМВозврат.Ссылка,
      ЧекККМВозврат.СуммаДокумента
   ИЗ
      Документ.ЧекККМВозврат КАК ЧекККМВозврат
   ГДЕ
      ЧекККМВозврат.Ссылка.Архивный
      И ЧекККМВозврат.Дата >= &НачалоПериода
      И (ЧекККМВозврат.Дата <= &КонецПериода
            ИЛИ &КонецПериода = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))) КАК ЧекККМ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ЧекиИСумма.ЧекККМ.КассаККМ КАК КассаККМ,
   ЧекиИСумма.ЧекККМ.Кассир КАК Кассир,
   ЧекиИСумма.ЧекККМ.Склад КАК Магазин,
   ЧекиИСумма.ЧекККМ,
   ЧекиИСумма.СуммаПродажи,
   ЧекиИСумма.СуммаВозврата,
   ЧекиИСумма.КоличчествоЧеков,
   ЧекиИСумма.КоличествоЧековПродажи,
   ЧекиИСумма.КоличествоЧековВозврата,
   ЧекиИКоличествоПозиций.КоличествоПозиций,
   ЧекиИКоличествоПозиций.КоличествоПозицийПродажи,
   ЧекиИКоличествоПозиций.КоличествоПозицийВозврата
ИЗ
   ЧекиИСумма КАК ЧекиИСумма
      ЛЕВОЕ СОЕДИНЕНИЕ ЧекиИКоличествоПозиций КАК ЧекиИКоличествоПозиций
      ПО ЧекиИСумма.ЧекККМ = ЧекиИКоличествоПозиций.ЧекККМ

LexaK

xdto, вроде задача у вас как дважды два!
попробуйте свой запрос погонять в консоли запросов?
попробуйте убрать условие по менеджеру (он же явно отсекает часть реализаций)
для учета корректировок добавьте в формулу сравнения ее сумму (свяжите ее по Основанию с реализацией)
если помогло нажмите: Спасибо!

xdto

LexaK, Да делаю в консоли. Условие по менеджеру в данном случае не как не влияет на результат.
Сотрите здесь ситуация какая запрос выполняется выводит результат правильный но есть один не до счет. Если оплата реализация закрывается не одним (ПКО или Покарте) а оплата проходи несколько документами оплаты (ПКО или Покарте). Как учесть это тоже в запросе? 

LexaK

xdto, вот для чего регистры то и нужны! они как раз все считают! (остатки, обороны, ...)
а если собираете по документам, это все самому считать надо! агрегировать! 

...
Сумма(...) как Сумма,
...
сгруппировать по ...

вообще какая у вас база? (вроде не встречал в вашем описании)
если помогло нажмите: Спасибо!

xdto


LexaK

xdto, реализация связана с заказами клиентов?
если помогло нажмите: Спасибо!

Теги: УТ 11 

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

Рейтинг@Mail.ru

Поиск