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

Запрос остатков выводит строки для каждого склада

Автор Golickoff, 12 июл 2016, 05:09

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

Golickoff

Всем привет.
Есть отчёт, который должен выводить остатки товара с возможностью выбора нескольких складов. Он выводит остатки по каждому складу (создаёт строки с одинаковой номенклатурой и разными остатками) и от этого нужно избавиться. Требуется, чтобы он выводил общий начальный и конечный остатки (а также приходы и расходы) для всех выбранных складов и выводил их в одной строке. Вот текст:
"ВЫБРАТЬ
                   |   ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура КАК Номенклатура,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.НомерГТД КАК НомерГТД,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.Партия.ВалютаДокумента,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
                   |   ПриходнаяНакладнаяТовары.Цена,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход
                   |ИЗ
                   |   РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор, , ) КАК ОстаткиНоменклатурыОстаткиИОбороты
                   |      ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары
                   |      ПО ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура = ПриходнаяНакладнаяТовары.Номенклатура
                   |         И ОстаткиНоменклатурыОстаткиИОбороты.Партия = ПриходнаяНакладнаяТовары.Ссылка
                   |ГДЕ
                   |   ОстаткиНоменклатурыОстаткиИОбороты.Организация = &Организация
                   |   И ОстаткиНоменклатурыОстаткиИОбороты.Склад В(&Склады)
                   |   И НЕ ОстаткиНоменклатурыОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |   НомерГТД,
                   |   Номенклатура
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Luzer1C

Попробуй в группировки добавить все измерения, а в суммируемые поля все ресурсы.
У виртуальных таблиц лучше не использовать секцию "ГДЕ", а задавать отбор сразу в настройках.
Почему так? Диск ИТС в помощь.
Халамбалам.

Golickoff

Пробовал. Начальный остаток 0, приход 100, конечный остаток 100. Отчёт выдаёт начальный 100, приход 100, конечный 200.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Luzer1C

Вот так:
РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор, , Организация = &Организация И Склад В(&Склады))
Халамбалам.

Golickoff

Сделал, из запроса те же условия убрал, установил сумму для ресурсов. По-прежнему выводит 2 строки с одинаковой номенклатурой для склада и магазина.
Добавлено: 12 июл 2016, 05:50


Нет, я наврал. Ресурсы не поместились в сумму (не проверил этот момент). Переделал, теперь по одной строке на номенклатуру, но проблема с количеством осталась. Было 0, пришло 100, осталось 100. В отчёте было 100, пришло 100, осталось 200. Вот текст:
"ВЫБРАТЬ
                   |   ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура КАК Номенклатура,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.НомерГТД КАК НомерГТД,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.Партия.ВалютаДокумента,
                   |   СУММА(ОстаткиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
                   |   СУММА(ОстаткиНоменклатурыОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
                   |   СУММА(ОстаткиНоменклатурыОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
                   |   СУММА(ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
                   |   ПриходнаяНакладнаяТовары.Цена
                   |ИЗ
                   |   РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты(
                   |         &ДатаНач,
                   |         &ДатаКон,
                   |         Регистратор,
                   |         ,
                   |         Организация = &Организация
                   |            И Склад В (&Склады)) КАК ОстаткиНоменклатурыОстаткиИОбороты
                   |      ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары
                   |      ПО ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура = ПриходнаяНакладнаяТовары.Номенклатура
                   |         И ОстаткиНоменклатурыОстаткиИОбороты.Партия = ПриходнаяНакладнаяТовары.Ссылка
                   |ГДЕ
                   |   НЕ ОстаткиНоменклатурыОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
                   |
                   |СГРУППИРОВАТЬ ПО
                   |   ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.НомерГТД,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.Партия.ВалютаДокумента,
                   |   ПриходнаяНакладнаяТовары.Цена
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |   НомерГТД,
                   |   Номенклатура
Добавлено: 12 июл 2016, 06:22


Если убрать условие с регистратором, текст становится таким
ВЫБРАТЬ
                   |   ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура КАК Номенклатура,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.НомерГТД КАК НомерГТД,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.Партия.ВалютаДокумента,
                   |   СУММА(ОстаткиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
                   |   СУММА(ОстаткиНоменклатурыОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
                   |   СУММА(ОстаткиНоменклатурыОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
                   |   СУММА(ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
                   |   ПриходнаяНакладнаяТовары.Цена
                   |ИЗ
                   |   РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты(
                   |         &ДатаНач,
                   |         &ДатаКон,
                   |         Период,
                   |         ,
                   |         Организация = &Организация
                   |            И Склад В (&Склады)) КАК ОстаткиНоменклатурыОстаткиИОбороты
                   |      ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары
                   |      ПО ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура = ПриходнаяНакладнаяТовары.Номенклатура
                   |         И ОстаткиНоменклатурыОстаткиИОбороты.Партия = ПриходнаяНакладнаяТовары.Ссылка
                   |
                   |СГРУППИРОВАТЬ ПО
                   |   ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.НомерГТД,
                   |   ОстаткиНоменклатурыОстаткиИОбороты.Партия.ВалютаДокумента,
                   |   ПриходнаяНакладнаяТовары.Цена
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |   НомерГТД,
                   |   Номенклатура
Чтобы стало яснее, есть 2 склада: склад и магазин. Ни на одном из них не было товара. На склад пришло 100 единиц номенклатуры, 20 из них переместили в магазин и ничего не продали. То есть, в организации было 0 товаров, пришло 100 и ничего не ушло. А  показывает, что было 0 товаров, пришло 120, ушло 20 и осталось 100. Я думаю, это максимально понятное описание проблемы.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

cska-fanat-kz

обычно динамические колонки - это фишка СКД в виде двумерной таблицы.
если то же самое надо запросом получить, то текст запроса надо кусками собирать, в зависимости от выбранных складов.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Luzer1C

Халамбалам.

Golickoff

Цитата: Luzer1C от 12 июл 2016, 06:32
Это какая-то самописная база?
Далион:Тренд
Добавлено: 12 июл 2016, 08:07


В общем, делаю две таблицы: одна как я описал в последнем варианте, вторая чисто по движениям, формируемым перемещениями. Затем из первой вычитаю значения второй и всё встаёт красиво.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

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

Рейтинг@Mail.ru

Поиск