Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: отбор из регистра
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
kapibara
Добрый день, как сделать, чтобы в отчете с отбором по регистратору регистра результат выводился в разрезе номенклатуры, а не в разрезе регистратора?

Текст запроса:

ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&ДатаНач,ДЕНЬ),НАЧАЛОПЕРИОДА(&ДатаКон,ДЕНЬ), Регистратор, Движения, ) КАК ТоварыНаСкладахОстаткиИОбороты
ГДЕ
(НЕ ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров)
World1С
[b]ТоварыНаСкладахОстаткиИОбороты.Номенклатура[/b]
ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&ДатаНач,ДЕНЬ),НАЧАЛОПЕРИОДА(&ДатаКон,ДЕНЬ), Регистратор, Движения, ) КАК ТоварыНаСкладахОстаткиИОбороты
ГДЕ
(НЕ ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров)
Batchir
Попробуйте добавить поле Номенклатуры
ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
kapibara
Цитата(Batchir @ 01.02.10, 15:37) необходимо зарегистрироваться для просмотра ссылки
Попробуйте добавить поле Номенклатуры
ТоварыНаСкладахОстаткиИОбороты.Номенклатура,



я, извиняюсь, это я не скопировала первые 2 строчки, с номенклатурой таже самая фигня... подскажите плиз...
Vofka
У меня Ваш запрос выдает что надо.

Запрос:


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


Скрин:


Или я что-то не так понимаю?
kapibara
У Вас тоже строки с одинаковой номенклатурой повторяются (Телевизор Sony, пиво Bаvaria), т.е. выдает движения регистра, а не по каждой номенклатуре суммарное количество...
Vofka
Попробуйте так:


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

СГРУППИРОВАТЬ ПО
ТоварыНаСкладахОстаткиИОбороты.Номенклатура
World1С
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&ДатаНач,ДЕНЬ),НАЧАЛОПЕРИОДА(&ДатаКон,ДЕНЬ), Регистратор, ДвиженияИгранициПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты

Попробуйте вот так еще.
kapibara
Пробовала, выдает чушь, на Вашем примере:


Телевизор SamsungWR Нач. ост.: 17 Приход: 5 Расход: 5 Кон.ост.: 17
Vofka
Цитата
Пробовала, выдает чушь, на Вашем примере:
Телевизор SamsungWR 17 5 5 17


И в чем чушь?
kapibara
на начало было: 6, пришло: 5(по приходной накладной), ушло: 5(по расходной), осталось: 6
Vofka
Извините конечно, но "толи лыжи не едут, толи..."
kapibara
Цитата(kapibara @ 01.02.10, 16:24) необходимо зарегистрироваться для просмотра ссылки
на начало было: 6, пришло: 5(по приходной накладной), ушло: 5(по расходной), осталось: 6



С этим согласны?
В разрезе номенклатуры так должно быть
Vofka
6+5-5=?
World1С
Цитата
В разрезе номенклатуры так должно быть
как??? 09000000.gif

Чем пример показанный Vofk-ой вам не нравится.
kapibara
Цитата(World1С @ 01.02.10, 16:41) необходимо зарегистрироваться для просмотра ссылки
как??? 09000000.gif

Чем пример показанный Vofk-ой вам не нравится.



Чтоб одна и та же номенклатура в отчете не повторялась, и значения остатков соответствовали действительности
World1С
Цитата
, и значения остатков соответствовали действительности


Чудак - человек, Ты же вот этим условием
ГДЕ
    (НЕ ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров)
сам выбросил часть приходов и расходов.
Т.к. для одного склада "Перемещение" это приход или расход. Делай еще в разрезе складов.
kapibara
Цитата(World1С @ 01.02.10, 17:05) необходимо зарегистрироваться для просмотра ссылки
Чудак - человек, Ты же вот этим условием
ГДЕ
    (НЕ ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров)
сам выбросил часть приходов и расходов.
Т.к. для одного склада "Перемещение" это приход или расход. Делай еще в разрезе складов.




Да, перемещения выбросил, неправильно смотри что:

Допустим, есть 1 приходная накладная на 1 ручку шариковую и 1 расходная накладная на нее же...

1) в отчете выдает так (мой вариант):

ручка шариковая: нач.ост. 0 приход 1 расход 0 кон. ост. 1
ручка шариковая: нач.ост. 1 приход 0 расход 1 кон.ост. 0


2) вариант Vofka С СУММА и СГРУППИРОВАТЬ ПО:

ручка шариковая: нач.ост. 1 приход 1 расход 1 кон. ост. 1


3) А надо чтоб было:

ручка шариковая: нач.ост. 0 приход 1 расход 1 кон. ост. 0

И чтоб без перемещений...
World1С
Цитата
3) А надо чтоб было:

ручка шариковая: нач.ост. 0 приход 1 расход 1 кон. ост. 0

И чтоб без перемещений...


Это не возможно таким простым запросом... Или выбирай другой регистр.
zetovich
Например так:


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

СГРУППИРОВАТЬ ПО
ТКонОст.Номенклатура
ИТОГИ
СУММА(КоличествоКонОстаток),
СУММА(КоличествоНачОстаток),
СУММА(КоличествоПриход),
СУММА(КоличествоРасход)
ПО
ОБЩИЕ,
Номенклатура


надо курить 3 таблицы. 1-начальный остаток, 2 оборты, 3-коненый остаток
...если я правельно понял вопрос.
kapibara
А каким можно и какой другой регистр, какие нибудь предположения будут smile.gif ПАМАГИТЕ))))))))))))))))))))
zetovich
см мой предыдущий пост
kapibara
Цитата(zetovich @ 01.02.10, 17:43) необходимо зарегистрироваться для просмотра ссылки
см мой предыдущий пост



А де отсев перемещений?
Batchir
Может тогда так?

 


ТекстЗапроса = "


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

zetovich
Цитата(kapibara @ 02.02.10, 12:44) необходимо зарегистрироваться для просмотра ссылки
А де отсев перемещений?

я так понял сами можете доавить...недоглядел

Batchir, ну можно и пакетными запросами.....
kapibara
Цитата(Batchir @ 02.02.10, 14:15) необходимо зарегистрироваться для просмотра ссылки
Может тогда так?

 


ТекстЗапроса = "


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



Работает)))), спасибо огромное!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.