Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Как в одном отчете совместить несколько источников данных ? (http://forums.kuban.ru/f1040/kak_v_odnom_otchete_sovmestit-_neskol-ko_istochnikov_dannyh-2682405.html)

med 04.06.2012 09:59

Как в одном отчете совместить несколько источников данных ?
 
Работаю в восьмерке еще недолго, сразу не ругайтесь.
Дали задание создать отчетик
в несколько столбцов:
в первом должна быть номенклатура и ее розничные цены на сегодня, во втором столбце её же розничные цены на начало месяца, а третьем и последующих, на эту же номенклатуру цены из приходных документов в среднем помесячно.
Как в отдельности каждый столбик сваять - это без проблем.
А вот как это всё в одну экранную форму объединить ума не приложу, причем номенклатура должна быть с учетом Иерархии, т.е. с "+" .
Никак не придумаю.
Если я, скажем всю эту инфу загоню в ТаблицуЗначений
Смогу я потом как то иерархически вывести на экран ?

med 04.06.2012 12:15

?

СоболиныйГлаз 04.06.2012 12:59

Вообще-то возможны вложенные запросы с последующим извлечением данных из полученных в запросе верхнего уровня. Насколько я помню, примеры таких запросов есть в отчетах типовых конф. Насчет штатного отображения иерархии в ТЗ точно не помню, хотя и мелькает что-то. Просто я вот уже полтора года отошел от 1С.
Но загнать данные в ТЗ в соответствии с иерархией номенклатуры, а затем отобразить хитрости не составляет. Если ты программер, конечно, а не юзер.

СоболиныйГлаз 04.06.2012 13:06

Простейший способ: при создании строки ТЗ кроме столбца с идентификатором номенклатуры создается столбец с идентификатором владельца. После вывода всех данных ТЗ сортируется и обрабатывается сначала по идентификатору номенклатуры, а затем в цикле - по идентификатору владельца, создаются строки, содержащие итоговые данные для владельца, в которых в качестве идентификатора номенклатуры ставится идентификатор владельца обрабатываемой группы номенклатуры,а в качестве владельца - владелец этой группы. И так до упора, т.е. до самых верхних элементов. Целесообразно такие строки создавать во временных таблицах, по одной на каждый "этаж" и только в конце перенести их данные в основную таблицу.
как-то так.

med 04.06.2012 14:25

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

med 05.06.2012 07:20

А вообще - можно как то таблицу передать в качестве параметра в СКД ?
И если можно, то как ?

roma n 05.06.2012 07:47

Зачем [u]в качестве параметра[/u]?

Климов Сергей 05.06.2012 08:51

2(0) А не проще ли объединением запросов сразу все получить? И не мутить никаких ТЗ.

Климов Сергей 05.06.2012 08:55

+(7) Как-то так:

ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаНачМесяца,
NULL КАК ЦенаКонМесяца
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НачМесяца, ТипЦен = &Розничная) КАК ЦеныНоменклатурыСрезПоследних

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
NULL,
ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонМесяца, ТипЦен = &Розничная) КАК ЦеныНоменклатурыСрезПоследних

Uho 05.06.2012 09:19

5-med > если так хочется, то можно передать ТЗ как источник данных - объект

med 05.06.2012 09:42

8-Климов Сергей > так я и говорю, - как раз вот первые две цены так и получаются, а дальше то идут цены из приходных документов - документов поступления.

med 05.06.2012 09:44

Просто отчет я сделал
первые две цены так и получаются
Остальные получаю через
"ВЫБРАТЬ
| ПоступлениеТоваровУслуг.Дата,
| ПоступлениеТоваровУслуг.Проведен,
| ПоступлениеТоваровУслуг.СуммаВключаетНДС КАК СуммВклНДС,
| ПоступлениеТоваровУслуг.Товары.(
| Номенклатура КАК Тов,
| Количество КАК Кол,
| Цена,
| Сумма КАК Сум_ма,
| СуммаНДС КАК СумНДС
| )
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
|ГДЕ
| ПоступлениеТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2
| И ПоступлениеТоваровУслуг.Проведен = ИСТИНА";


Объединяю в единое целое и вывожу на экран, но получается просто отчет без группировок

roma n 05.06.2012 11:10

11-med > Итоги

med 05.06.2012 11:35

12-roma n > Можно чуть подробнее ?
ИТОГИ куда, к чему ?

med 06.06.2012 06:32

?

Maximus 06.06.2012 12:54

Павел Чистов в видео хорошо разжевывает про запросы. Качни, учись

Климов Сергей 06.06.2012 13:04

2(13)
ВЫБРАТЬ
ЗакупкиОбороты.Номенклатура КАК Номенклатура,
ВЫБОР
КОГДА ЗакупкиОбороты.КоличествоОборот = 0
ТОГДА 0
ИНАЧЕ ЗакупкиОбороты.СтоимостьОборот / ЗакупкиОбороты.КоличествоОборот
КОНЕЦ КАК Себестоимость,
NULL КАК Цена
ИЗ
РегистрНакопления.Закупки.Обороты(&НачДата, &КонДата, Период, ) КАК ЗакупкиОбороты

ОБЪЕДИНИТЬ ВСЕ

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

med 08.06.2012 08:34

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


Текущее время: 18:39. Часовой пояс GMT +3.