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

Запрос. Расход от перемещения попадает в продажу.

Автор Golickoff, 23 янв 2017, 04:43

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

Golickoff

Всем привет.

Расход товара, образованный его перемещением на другой склад, попадает в колонку расхода в отчёте. С точки зрения товародвижения это корректно, но отчёт формируется сразу по нескольким складам, поэтому в качестве расхода в отчёте я хочу видеть продажи и только продажи. То же самое касается и прихода — он должен быть образован поступлением товара на склад. Чтобы избавиться от расхода перемещением, можно написать в запросе что-то вроде
ВЫБОР
            КОГДА Регистр.Регистратор ССЫЛКА Документ.Перемещение
                    ТОГДА 0
            ИНАЧЕ Регистр.КоличествоРасход
      КОНЕЦ КАК Расход

Аналогично можно поступить с приходом, однако в этом случае необходимо включить периодичность по записи, или регистратору (ведь без них я не увижу какой документ сформировал движение). Если я это сделаю, отчёт будет формировать множество строк по каждому товару, образованных каждым его движением в заданный период, но он не подразумевает наличие колонки "Дата", поэтому будет некорректным. Я хочу видеть одну строку на каждый товар. Как можно решить данную проблему?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

alexandr_ll

Платформа? Конфигурация? Релиз?
Использовать регистр партии товаров с отбором по коду операции

Golickoff

Цитата: alexandr_ll от 23 янв 2017, 07:10
Платформа? Конфигурация? Релиз?
Использовать регистр партии товаров с отбором по коду операции

8.3, Далион:Тренд 1.0.19.41 (ни о чём не говорит, правда?)
Партионный учёт в этой конфигурации ведётся за счёт регистра сведений АналитикаУчетаПартийНоменклатуры и в нём нет кодов операций. Меня интересует решение проблемы языком запросов.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Kironten

Так исключи из запроса регистратор - ПеремещениеТоваров, и все.

depb

ГДЕ 
   ТИПЗНАЧЕНИЯ(Регистр.Регистратор)<>ТИП(Документ.ПеремещениеТоваров)

alex0402

Цитата: Golickoff от 23 янв 2017, 04:43Если я это сделаю, отчёт будет формировать множество строк по каждому товару, образованных каждым его движением в заданный период, но он не подразумевает наличие колонки "Дата", поэтому будет некорректным. Я хочу видеть одну строку на каждый товар. Как можно решить данную проблему?

решается конструкцией
СГРУППРОВАТЬ ПО .....
а в ВЫБРАТЬ все поля, не входящие в перечень СГРУППРОВАТЬ ПО СУММА(ИмяПоля)

Спасибо за Сказать спасибо

Golickoff

решается конструкцией
СГРУППРОВАТЬ ПО .....
а в ВЫБРАТЬ все поля, не входящие в перечень СГРУППРОВАТЬ ПО СУММА(ИмяПоля)
[/quote]

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

СГРУППИРОВАТЬ ПО
ОстаткиНоменклатурыОстаткиИОбороты.НомерГТД,
ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура,
ОстаткиНоменклатурыОстаткиИОбороты.Партия.ВалютаДокумента,
ПриходнаяНакладнаяТовары.СтранаПроисхождения,
ЕСТЬNULL(ПриходнаяНакладнаяТовары.Цена, 0)

УПОРЯДОЧИТЬ ПО
НомерГТД,
Номенклатура


Но здесь что-то не так. Предыдущий вариант, с которым я написал сюда, выдавал мне остаток на начало 43 483, а теперь стало 272 039.
Добавлено: 24 янв 2017, 04:01


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

СГРУППИРОВАТЬ ПО
ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура,
ОстаткиНоменклатурыОстаткиИОбороты.НомерГТД,
ОстаткиНоменклатурыОстаткиИОбороты.Партия.ВалютаДокумента,
ПриходнаяНакладнаяТовары.СтранаПроисхождения,
ЕСТЬNULL(ОстаткиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток, 0) + ЕСТЬNULL(ОстаткиНоменклатурыОстаткиИОбороты.КоличествоПриход, 0),
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоПриход,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоРасход,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток,
ЕСТЬNULL(ПриходнаяНакладнаяТовары.Цена, 0)

УПОРЯДОЧИТЬ ПО
НомерГТД,
Номенклатура

Добавлено: 24 янв 2017, 04:32


Я совсем не понимаю значений запроса с изменённым текстом. Отчёт специфический и весь приход за период попадает в остаток на начало. За указанный отрезок времени по некому товару было 3 движения, сформированных поступлением и реализацией без перемещений:
+остаток нач. 0, пришло 3, осталось 3.
-остаток нач. 3, ушёл 1, осталось 2.
-остаток нач. 2, ушёл 1, остался 1.

Что я вижу в исходном отчёте:
остаток нач. 3, реализовано 2, остался 1 (Всё корректно)

Что я вижу в изменённом отчёте:
остаток нач. 8, реализовано 2, осталось 6
Добавлено: 24 янв 2017, 04:36


Уже когда прочитал своё сообщение, значения изменённого отчёта стали ясны: 3+3+2 = 8, 3+2+1 = 6. Надеюсь, вы тоже поняли почему так. Но как от этого избавиться?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

alex0402

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

Golickoff

Цитата: alex0402 от 24 янв 2017, 17:23
Можно сделать микс. из одного запроса взять остатки, а из другого обороты и соединить левым соединением.
Но остатки всё равно придётся брать из таблицы ОстаткиИОбороты. Я ведь не могу задать 2 даты в таблице остатков.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

alex0402

Цитата: Golickoff от 25 янв 2017, 05:31Но остатки всё равно придётся брать из таблицы ОстаткиИОбороты. Я ведь не могу задать 2 даты в таблице остатков.

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

Теги: Запрос отчет 

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

Рейтинг@Mail.ru Rambler's Top100

Поиск