Такой вопрос: есть справочник СтатьиРасходов с иерархической структурой: все элементы - по группам, вложенных групп нет.
И есть документ ПланРасходов, в котором в табличной части - 2 колонки: СтатьяЗатрат и Сумма, причем в колонке СтатьяЗатрат - строго ссылка на группу справочника (не на отдельный элемент, а всегда на группу).
Делаю отчет с скд, но не получается сделать так, чтобы сумма выводилась именно возле группы: почему-то добавляется в группе дополнительный элемент с названием как у группы, и напротив него ставится сумма.
Делаю так.
Два набора данных:
первый Статьи
ВЫБРАТЬ
СтатьиРасходов.Ссылка КАК Статьи
ИЗ
Справочник.СтатьиРасходов КАК СтатьиРасходов
и второй ПланРасходов
ВЫБРАТЬ
ПланРасходов.СтатьяЗатрат,
ПланЗатратСписокОпераций.Сумма,
ПланЗатрат.Проект
ИЗ
Документ.ПланЗатрат.СписокОпераций КАК ПланЗатратСписокОпераций
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПланЗатрат КАК ПланЗатрат
ПО ПланЗатратСписокОпераций.Ссылка = ПланЗатрат.Ссылка
ГДЕ
ПланЗатрат.Проект В (&Проект)
Показать
На вкладке Связи наборов данных они связаны через статью затрат.
Во вложении - итоговый вид отчета и пример группы в справочнике.
(2)
В смысле, один набор данных, один запрос с соединением?
ВЫБРАТЬ
ПланРасходов.СтатьяЗатрат,
ПланЗатратСписокОпераций.Сумма,
ПланЗатрат.Проект,
СтатьиРасходов.Ссылка КАК СЗ
ИЗ
Документ.ПланЗатрат.СписокОпераций КАК ПланЗатратСписокОпераций
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПланЗатрат КАК ПланЗатрат
ПО ПланЗатратСписокОпераций.Ссылка = ПланЗатрат.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтатьиРасходов КАК СтатьиРасходов
ПО ПланЗатратСписокОпераций.СтатьяЗатрат = СтатьиРасходов.Ссылка
ГДЕ
ПланЗатрат.Проект В (&Проект)
Показать
Выводит ТОЛЬКО группы справочника, как во вложении.
Я хочу, чтобы выводилась группа справочника, элементы этой группы (с возможностью раскрытия группы) и напротив именно группы - число.
(4) Как убрать дубли в иерархии я писала в теме СКД. Иерархия элементов. Посмотрите, может подойдет.
Идея в том, чтобы создать пользовательское поле, содержащее Родителя элемента и потом установить по нему отбор с такими условиями, чтобы дубли групп не выводились.
(6) Если уровень иерархии > 2, то в Вашем варианте дубли строк будут отображаться.
А в 8.1 есть функция Вычислить()? По идее, она должна работать также, как ВычислитьВыражение(), просто устаревший вариант.
Сейчас нет под рукой 8.1, не могу посмотреть.
(7)
Уровень иерархии ровно 1, всегда.
Сделал так, как во вложении, действительно, дубли убрались, однако суммы напротив группы не появились, хотя в документе, откуда они берутся, есть (последняя картинка - документ, из которого делается запрос).
Покажите схему, так проще разобраться.
У Вас в группировке по иерархии в таблице поле "Статья справ", а в функции "СтатьяСправ". Может в этом проблема?
Откуда берется "Статья справ"?
(12)
Да, Вы правы, криво переименованные поля не давали применять Вычислить(), сейчас получилось, но поле Родитель-1 с Вычислить() не видно в пользовательских полях.
Ну вроде все нормально. Или нет? Вопрос в том, где суммы?
Подитожу:
1. если Вас устраивает уровень иерархии не больше 2 (и больше уровней никогда не понадобится, т.к. отчет в этом случае будет работать некорректно), то все нормально. Правда, в этом случае можно было обойтись без Пользовательского поля, а просто наложить отбор на поле СтатьиСправ.Родитель.
2. для общего случая используем Пользовательское поле с Вычислить(…) и отбором по нему, как сказано выше.
Ну и для красоты не выводить отбор для группировки (Настройки/Другие настройки)
(17)
Да, уровень всегда будет равен 2.
С отбором для группировки большое спасибо, все не понимал, как убрать эту строчку, теперь красиво.
Фишка моего отчета вот в чем. Данные в него собираются из двух документов: ПланРасходов и Авансы. В ПланРасходов в табличной части указываются расходы ТОЛЬКО групп справочника, в Авансы - ТОЛЬКО элементов справочника. В свой итоговый отчет я хочу собирать данные из этих документов: из Авансы суммы попадают в элементы, из ПланРасходов - в группы, причем, как всегда,суммы по элементам итожатся и прибавляются к той, что уже стоит в группе.
Пример документов и того, что хочу видеть в отчете - в приложении.
У меня получается брать данные из Авансы - числа суммируются в группах, но завяз именно с числами по группе из ПланРасходов.
В качестве идеи. Есть сумма по группе – СуммаГруппа и сумма по элементам – СуммаЭл.
Далее создаем вычисляемое поле СуммаИтог с выражением
ЕстьNull(СуммаЭл,0)
при расчете ресурса для этого поля указываем выражение:
Сумма(СуммаИтог) + ЕстьNull(СуммаГруппа,0)
Мне трудно точь-в-точь воспроизвести Ваши данные, а малейший нюанс – и выражение уже другое.
Так что только идея – свое выражение в Вычисляемом поле и в ресурсе по нему.