Перейти к содержимому

1с скд как вывести ресурс только в итогах

  • автор:

1с скд как вывести ресурс только в итогах

Ну, есть простая табличка в СКД.
Одна группировка строк и одна группировка колонок.
Нужно чтобы итоги по одному из ресурсов выводились только в общих итогах по строке и больше нигде.

Есть, поставить галочку Общие итоги «Рассчитывать по. »

(4)
Забыл немаловажное дополнение, например для группировки
Ресурс = СУММА(Ресурс)

для итогов
Ресурс = СовсемДругойРесурс

(4) Ага, чичас. Рассчитывать по группировкам он конечно перестает, но колонки этого ресурса все равно выводит (пустые).

(3) в оформлении детальных записей Текст = «» поставь, или в представлении на закладке данных
(7) Дык колонки лишние от этих манипуляций никуда не денутся.
(6) А куда вывести итоги, без колонки ресурса?
(9) у него горизонтальные итоги по строке
(10) Они самые.
или я туплю или нарисуй и заскриньшоть сюда, что хочешь сделать
А так тулит их еще и по каждому значению группировки колонок.
Вот такое хочу:
http://i47.tinypic.com/qpf0xi.png
не, без пузыря тут с ходу не осилить.
Что-то я через макеты никак шапку общих итогов зацепить не могу.

Что-то я затупил. Все ж проще гораздо.
При вычислении ресурсов прихода и расхода играю знаком в зависимости от значения группировки — тогда итоги сразу дают дельту.

Похоже решена задача, но все равно хочу кинуть полезную ссылку http://1cskd.ru/2010/06/vyvod-polej-v-nuzhnoj-kolonke/

(18) Спасибо. Однозначно я затупил. Прием же простенький и эту статью от IronDemon я фиг знает когда читал. Пора в отпуск 🙂
А у меня по итогу вообще без ухищрений решается.

Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший

Как в СКД вывести ресурс только по нужным уровням иерархии

Рассмотрим, как в СКД вывести ресурс только по нужным уровням иерархии.

Имеем отчет с вот такой структурой:

Структура СКД

У нас есть ресурс «Количество», который вычисляется для всей иерархии:

Ресурс СКД

Задача: необходимо выводить «Количество» только в верхнем уровне иерархии. Сейчас получаемый отчет выглядит так (красным выделены поля, которые должны быть пустыми):

Как в СКД вывести ресурс только по нужным уровням иерархии

Что нужно сделать?

Все очень просто, хоть и не совсем очевидно.

Заходим в условное оформление нужной нам группировки и добавляем новое условие:

Новое условное оформление

В поле Оформление ставим флажок напротив «текст» и НИЧЕГО не пишем в текст. Таким образом мы говорим СКД, что надо выводить пустое поле. Выглядеть настройка будет вот так:

Пустой текст в оформлении

В условии используем системное поле «УровеньВГруппировке» и ставим «Не равно» «1». Таким образом мы говорим СКД, что наше оформление распространяется на все уровни группировки, кроме первого (соответственно, если вам надо выводить итоги только для первого и второго уровня, то вид сравнения ставите «Не в списке»,а в значение: «1,2»)

Условие СКД

В оформляемых полях выбираем наш ресурс:

Оформляемые поля СКД

Все, больше ничего делать не нужно. Сохраняем наш отчет и проверяем результат:

Результат СКД

Готово! Теперь вы знаете, как в СКД вывести ресурс только по нужным уровням иерархии

Вывод ресурса в СКД только один раз, а не во всех группировках

  • Рисунок 1
  • Рисунок 2
  • Рисунок 3
  • Рисунок 4

Частая задача при создании отчетов на СКД (и не только), сделать так, чтобы некий ресурс при выводе отчета в виде кросс-таблицы, выводился не в каждой колоночной группировке а только один раз. Например отчет по номенклатуре, где сначала выводятся например цена, а потом остатки по складам. Если сделать обычный отчет в виде кросс-таблицы, то ресурс цена будет попадать во все склады. Посмотрим как это обойти. Для начала создадим простой отчет, который будет выводить обороты регистра по контрагентам и товарам показывая два ресурса.

Как мы видим, все работает, но нам нужно сделать так, чтобы колонка количество была только один раз, а сумма на каждый склад. В СКД, нам дали возможность указать выводимые поля не только для всего отчета, но и для любой выбранной группировки. Сделаем это.

количество исчезла, но совсем(( Нас это не устраивает. Немножечко обманем СКД. Создадим новое поле в запросе с одним значением для всех записей.

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

СКД: 5 советов, как сделать лучше

В отчете есть поле ссылочного типа (Номенклатура, Клиент, Приходная накладная). А мы выводим его дочернее поле. Например, для номенклатуры — полное наименование, для Клиента — публичное наименование. Красота! Только карточку номенклатуры или клиента уже не открыть (но иногда очень хочется) — в данных расшифровки нет ссылки.

СКД: 5 советов, как сделать лучше

В отчет выведено дочернее поле тип строка

Как же сохранить расшифровку? Есть три варианта — с помощью условного оформления, с помощью выражения представления, и последний способ — создать свой макет поля.

Вариант с использованием условного оформления наиболее практичный, так как позволяет решить задачу без конфигурирования, и более гибкий. Итак, там, где выводилось поле Клиент.Публичное наименование выводим поле Клиент и создаем элемент условного оформления: оформляемое поле Клиент, условие не ставим, оформление в параметре Текст — выбираем поле компоновки данных Клиент.Публичное наименование.

СКД: 5 советов, как сделать лучше

Настройка условного оформления для отображения дочернего поля

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

СКД: 5 советов, как сделать лучше

Настройка свойства Выражение представления

Решение с помощью макета поля — создаем макет поля Партнер. Указываем ячейку поля. В ячейке указываем параметр и параметр расшифровки. Соответственно, параметр — это выводимый текст, для него указываем поле Партнер.НаименованиеПолное, а в параметре расшифровки указываем поле, которое содержит ссылку, т.к. ссылка нужна для открытия карточки элемента. И не забываем указать основное действие — Открыть значение.

СКД: 5 советов, как сделать лучше

Настройка макета поля

Все три способа продемонстрированы в этом видео → https://youtu.be/BY996hZF968

Чем соединение наборов данных лучше соединения таблиц в запросе

Здесь мы видим результаты расчета итогов, когда в запросе одну таблицу присоединяем к другой, и когда таблицы расположены в разных наборах данных, которые соединяем. При соединение таблиц в запросе можем получить ситуацию, когда данные «задваиваются». При соединении наборов данных в СКД такого не произойдет.

СКД: 5 советов, как сделать лучше

Различия в результатах при соединении таблиц и соединении наборов данных СКД

А вот что пишут на ИТС: Несмотря на то, что запись встречается в группировке несколько раз, при расчете итога каждая запись будет учтена только один раз. Как это работает в динамике можно посмотреть в этом видео → https://youtu.be/FIbRuSR_0O8

Функция ВычислитьВыражение не всесильна. Иногда надо просто правильно посчитать итоги

Начиная с платформы 8.2.14 появились несколько функций языка выражений СКД, в том числе функции Вычислить, ВычислитьВыражение. С помощью них можно выполнить много интересных расчетов, но не всегда их использование оправдано.

Есть структура отчета Контрагент, в нее вложенные детальные записи с полем период, есть ресурс Сумма. Наша задача в группировке по контрагенту и в общих итогах показать сумму на последнюю дату.

СКД: 5 советов, как сделать лучше

Решение в лоб — получить последнюю запись, используя функцию ВычислитьВыражение() и параметры «Последняя» — «Последняя».
Но не все так просто. Написав такое в вычисляемых полях, а в ресурсах Сумма по этому полю, получим интересный результат.

СКД: 5 советов, как сделать лучше

Решение с помощью ВычислитьВыражение. Промежуточный результат

На уровне группировки Контрагент появляются неведомые значения.

Исправляем выражение в ресурсе — помещаем детальные записи в массив, берем максимум — Максимум (ВычислитьВыражениеСГруппировкойМассив («СуммаПоследняя»)).

В этом случае в группировке Контрагент последняя сумма отображается правильно.

СКД: 5 советов, как сделать лучше

Решение с помощью ВычислитьВыражение. Итоги в группировках верные

Идем дальше. А что в общих итогах? В общих итогах вовсе не сумма. Поэтому все, что далось непосильным трудом, имеет ограниченное применение. Как это решалось можно посмотреть в этом видео → https://youtu.be/cq4Bokc7RsA

СКД: 5 советов, как сделать лучше

Решение с помощью ВычислитьВыражение. Общие итоги неверные

Как эта задача решается с помощью расчета итогов в СКД?

Это достигается посредством введения в набор данных поля-двойника для Суммы — в него можно вывести те же данные, что и в поле Сумма. Добавляем поле СуммаНачальныйОстаток, настраиваем роли полей: указываем, что Контрагент — это измерение, Период — поле периода, а поля Сумма, СуммаНачальныйОстаток входят в группу Сумма: одно поле является начальным остатком, другое конечным.

В выражении ресурсов для поля Сумма — просто Сумма(Сумма).

СКД: 5 советов, как сделать лучше

Настройка ролей для расчета остатков

И вот результат — для ресурса Сумма в группировках точно такие же значения, что и для ресурса Сумма последняя, и в общих итогах все правильно.

СКД: 5 советов, как сделать лучше

Результат решения с помощью расчета остатков

Более детально можно посмотреть в этом видео → https://youtu.be/FhQQi1OPvAI

Макеты можно использовать не только для оформления

Каждый, кто хотя бы один раз что-то создавал в конструкторе СКД на вкладке Макеты, знает, что макеты бывают четырех видов. И что, как правило, создание собственного макета приводит к потере гибкости. Но сегодня не про это.

Можно создать макет Поля и это никак не будет влиять на внешний вид результата. НО для поля можно задать Параметр расшифровки, и в СКД значение расшифровки может содержать не одно значение, а целую коллекцию — чем мы можем воспользоваться при расшифровке ячеек каким-либо другим отчетом.

СКД: 5 советов, как сделать лучше

Настройка полей расшифровки макета поля

После всех действий в данных расшифровки появится не одно, а несколько полей. В режиме 1С:Предприятие при попытке расшифровать поле это будет выглядеть так:

СКД: 5 советов, как сделать лучше

Результат работы расшифровки

Для чего стоит использовать расширения языка запросов при включенном Автозаполнении

Что такое расширение языка запросов? Это такие синтаксические конструкции в тексте запроса, заключенные в фигурные скобки, которые определяют поведение для компоновщика макета компоновки данных. В конструкторе запроса они доступны на вкладке Компоновка данных.

СКД: 5 советов, как сделать лучше

Что такое расширение языка запросов

Зачем, когда используем флаг автозаполнение?

Есть минимум два сценария, когда это оправдано. Первый — когда требуется установить необязательный отбор по дате документа. Что значит необязательный? Это значит, что мы предлагаем пользователю установить параметры, но если пользователь откажется их использовать, ошибки не будет.

СКД: 5 советов, как сделать лучше

Необязательный отбор по дате документа

Второй пример — добавление единого поля отбора в схему. Когда у нас два несвязанных набора данных, то и поля имеют разные пути. Соответственно, для отбора по полю придется накладывать отбор на поля разных наборов данных. Добавляя в два набора данных поле с одинаковым наименованием, мы создаем единое поле несвязанных наборов данных, которое используется только для отбора.

Поля несвязанных наборов данных не могут называться одинаково — мы выкручиваемся, но отбор накладывать становится неудобно.

СКД: 5 советов, как сделать лучше

Добавление своего поля отбора

Так выглядит настройка, когда два поля отбора, и когда единое поле отбора (так удобнее). Подробнее можно посмотреть в этом видео → https://youtu.be/vNuYJSBAZxI

СКД: 5 советов, как сделать лучше

Преимущество настройки — единое поле отбора

Когда надо наложить отбор на одно и то же поле в объединении запросов. Если в этом случае наложить отбор на поле Склад, это приведет к тому, что в запросе по РН Продажи ничего не будет выбрано.

СКД: 5 советов, как сделать лучше

Поле склад в объединении запросов

СКД: 5 советов, как сделать лучше

Результат наложения отбора по полю Склад при такой настройке

Поэтому, когда выполняется объединение запросов и требуется накладывать не во всех запросах объединения, обычно в этом случае отключается отбор по полю (в данном случае Склад) и используется добавленное поле (в нашем случае СкладОтбор). И все работает.

Отбор по полю СкладОтбор больше не выпиливает продажи, а только фильтрует остатки по складу.

Естественно, таких проблем не будет, когда схема создана без использования флага автозаполнение и все поля расставлены вручную.

СКД: 5 советов, как сделать лучше

Добавление своего поля отбора. Результат при такой настройке

Рекомендуем освоить создание схемы без Автозаполнения — сразу придет понимание, как это работает.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *