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

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

  • автор:

Как выдавать в итоги по строкам таблицы ресурсы, отличные от ресурсов в колонках таблицы

Иногда возникает потребность вывести в таблице некоторые ресурсы только в итоге по строкам. Например, требуется вывести в колонках таблицы номенклатуру с указанием суммы оборота и суммы по количеству проданной номенклатуры, а в итоге по строке требуется видеть только итог по сумме.

Если просто добавить в настройки таблицу, и указать, что нужно выводить ресурсы Сумма оборот и Количество оборот,

то результат отчета будет следующим:

Контрагент 1С:Бухгалтерия 7.7 Стандартная версия 1С:Бухгалтерия ПРОФ версия 7.7 1С:Торговля и Склад 7.7 Проф Итого
Количество оборот Сумма оборот Количество оборот Сумма оборот Количество оборот Сумма оборот Количество оборот Сумма оборот
Алекс-2002 2,00 480,00 2,00 560,00 4,00 1 040,00
Завод РТИ 1,00 240,00 1,00 280,00 2,00 520,00
Русская одежда 1,00 120,00 1,00 140,00 2,00 260,00
Эльбрус 2,00 280,00 2,00 480,00 2,00 560,00 6,00 1 320,00
Итого 2,00 280,00 6,00 1 320,00 6,00 1 540,00 14,00 3 140,00

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

Для этого, добавим в колонки группировку без полей группировки:

Результат исполнения такого отчета:

Контрагент 1С:Бухгалтерия 7.7 Стандартная версия 1С:Бухгалтерия ПРОФ версия 7.7 1С:Торговля и Склад 7.7 Проф Итого
Количество оборот Сумма оборот Количество оборот Сумма оборот Количество оборот Сумма оборот Количество оборот Сумма оборот Количество оборот Сумма оборот
Алекс-2002 2,00 480,00 2,00 560,00 4,00 1 040,00 4,00 1 040,00
Завод РТИ 1,00 240,00 1,00 280,00 2,00 520,00 2,00 520,00
Русская одежда 1,00 120,00 1,00 140,00 2,00 260,00 2,00 260,00
Эльбрус 2,00 280,00 2,00 480,00 2,00 560,00 6,00 1 320,00 6,00 1 320,00
Итого 2,00 280,00 6,00 1 320,00 6,00 1 540,00 14,00 3 140,00 14,00 3 140,00

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

Нам требуется, чтобы в итоге по строке выводилось только поле «Сумма оборот», поэтому перейдем в выбранные поля только что добавленной нами группировки (в конструкторе схемы компоновки данных для этого нужно выделить группировку и переключить текущие редактируемые настройки на «Детальные записи»).

В выбранных полях нашей группировки добавим поле СуммаОборот, и удалим авто поле, т.к. мы точно знаем, какие поля нам нужны.

Результат такого отчета будет выглядеть так:

Контрагент 1С:Бухгалтерия 7.7 Стандартная версия 1С:Бухгалтерия ПРОФ версия 7.7 1С:Торговля и Склад 7.7 Проф Итого
Количество оборот Сумма оборот Количество оборот Сумма оборот Количество оборот Сумма оборот Количество оборот Сумма оборот Сумма оборот
Алекс-2002 2,00 480,00 2,00 560,00 4,00 1 040,00 1 040,00
Завод РТИ 1,00 240,00 1,00 280,00 2,00 520,00 520,00
Русская одежда 1,00 120,00 1,00 140,00 2,00 260,00 260,00
Эльбрус 2,00 280,00 2,00 480,00 2,00 560,00 6,00 1 320,00 1 320,00
Итого 2,00 280,00 6,00 1 320,00 6,00 1 540,00 14,00 3 140,00 3 140,00

Теперь, для того, чтобы итог по строке не выдавался два раза, уберем вывод общего итога из группировки Номенклатура. Для этого установим параметр вывода «Расположение общих итогов» в значение «Нет».

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

Только продвижение ресурса
Всем привет! 🙂 Есть сайт со седующей продукцией: шкафы-купе, пластиковые окна, ворота.

Вывод из определенного ресурса
Добрый день у меня есть такое дерево ресурсов О компании -Факт 1(35) -Факт 2(40) -Факт 3(41).

Вывод информации из интернет-ресурса в RichTextBox
Люди тут у меня есть база .php мне нужно ее вывести в richTextBox1 не поможете с кодиком? Ну или.

Вывод строки в качествве ресурса отчета
Здравствуйте. в собственной конфигурации сделал отчет в СКД. Результат во вложении. Задача в.

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

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

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

Для примера я возьму отчет который мы создавали в прошлой статье. Выглядел он у нас вот так.

Итоги в отчете 1С

Давайте к нему добавим общий итог по колонке Сумма.

Как вывести общие итоги по колонке с помощью СКД 1С

И так запускаем конфигуратор открываем наш отчет Приход Товара и кликаем на Схему компоновки данных.

итоги в скд 1с

В открывшемся окне переходим на вкладку Ресурсы. Слева из окна доступные поля выбираем поле Сумма и перетаскиваем его в правое окно. Больше не чего не меняем.

скд итоги по группировкам

Запускаем 1С и смотрим что у нас получилось. Если вы все сделали правильно, то в конце таблицы должен появиться итог по колонке.

скд общие итоги

Если вам необходимо посчитать итог по другим колонкам, например, количество и цена. То для этого также на вкладке Ресурсы нужно перетащить эти поля в правое окно.

итоги в отчет 1с

В результате получим итоговую сумму по всем колонкам.

Общие итого по колонкам в скд

Ну вот мы и научились выводит итого по колонкам с помощью системы компоновки данных.

Скриншоты, опубликованные в данной статье, являются цитатами и иллюстрациями программного продукта «1C:Предприятие», авторское право на который принадлежит ЗАО 1С.

Скд выражение итоговых записей

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

Произвольные выражения в итогах

Синтаксис и функциональность выражения для расчета итогов аналогичны простому выражению языка запроса, однако имеются некоторые особенности:

  • в выражениях для расчета итогов нельзя использовать операции В и В ИЕРАРХИИ со вложенными запросами.
  • в выражениях для расчета итогов результат функции Представление() может быть использован в другом выражении.

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

ИТОГИ
100 * Сумма(Прибыль) / СУММА(Оборот) КАК ПроцентПрибыли

В данном примере результате выражения будет помещаться в поле "ПроцентПрибыли". Заметим, что поле "ПроцентПрибыли" должно присутствовать в списке выборки запроса.

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

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

ИТОГИ
Номенклатура КАК Номенклатура,// Правильно, т.к. поле присутствует в списке группировок итогов
СуммаОборот КАК СуммаОборот, // Неправильно, т.к. поле отсутствует в списке группировок итогов
Сумма(КоличествоОборот) КАК КоличествоОборот // Правильно, т.к. поле используется в агрегатной функции
ПО
Номенклатура,
Контрагент

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

Примеры использования

Расчет выражений от агрегатных функций

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

ВЫБРАТЬ
Номенклатура,
СуммаОборот КАК Оборот,
СуммаПрибыль КАК Прибыль,
100 * СуммаПрибыль / СуммаОборот КАК ПроцентПрибыли
ИЗ
РегистрНакопления.УчетПрибыли.Обороты
ИТОГИ
СУММА(Оборот),
СУММА(Прибыль),
100 * СУММА(Прибыль) / СУММА(Оборот) КАК ПроцентПрибыли
ПО
Номенклатура ИЕРАРХИЯ

В данном примере в поле "ПроцентПрибыли" итоговых записей будет помещено значение суммы по полю "Прибыль" умноженное на 100 и поделенное на значение суммы по полю "Оборот".

Расчет итогов только для уже полученных группировок

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

ВЫБРАТЬ
ОсновнойОстатки.Счет КАК Счет,
ОсновнойОстатки.Валюта КАК Валюта,
ОсновнойОстатки.СуммаОстаток КАК СуммаОстаток,
ОсновнойОстатки.ВалютнаяСуммаОстаток КАК ВалютнаяСуммаОстаток
ИЗ
РегистрБухгалтерии.Основной.Остатки КАК ОсновнойОстатки
ИТОГИ
СУММА(СуммаОстаток),
ВЫБОР
КОГДА Валюта ЕСТЬ НЕ NULL
ТОГДА СУММА(ВалютнаяСуммаОстаток)
КОНЕЦ КАК ВалютнаяСуммаОстаток
ПО
Счет,
Валюта

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

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

ВЫБРАТЬ
ОсновнойОстатки.Счет КАК Счет,
ОсновнойОстатки.Валюта КАК Валюта,
ОсновнойОстатки.СуммаОстаток КАК СуммаОстаток,
ОсновнойОстатки.ВалютнаяСуммаОстаток КАК ВалютнаяСуммаОстаток
ИЗ
РегистрБухгалтерии.Основной.Остатки КАК ОсновнойОстатки
ИТОГИ
СУММА(СуммаОстаток),
ВЫБОР
КОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюта) = 1
ТОГДА СУММА(ВалютнаяСуммаОстаток)
КОНЕЦ КАК ВалютнаяСуммаОстаток
ПО
Счет,
Валюта

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

Переопределение представлений для группировок

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

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

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

Отчет

Отчет получает остатки товаров на складах в различных разрезах (характеристики, серии, единицы измерения и т.д.). Чтобы не усложнять пример, оставим лишь группировку по номенклатуре и вывод лишь конечного остатка на дату отчета. Итоговая таблица будет показывать остатки по номенклатуре в зазрезе складов.

Но тут пользователь сообщил, что ему нужно добавить два дополнительных поля:

  1. Оповещение о количестве. Если количество меньше или равно 5, то оповещение "Недостаточно". Если количество больше 5, то меньше или равно 10, то оповещение "Нормально". Если количество больше 10, то "Переизбыток".
  2. Формула расчета конечного остатка. В дополнительной колонке пользователь хочет видеть какие действия выполнила программа чтобы получить значение конечного остатка. То есть формулу "Начальный остаток + Оборот = Конечный остаток", где будут подставлены соответствующие значения.

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

Дополнительные поля

И так, приступим. Зайдем в настройки варианта отчета:

Перед нами откроется конструктор настроек варианта отчета СКД. Перейдя на вкладку "Пользовательские поля" начнем их создание.

На скриншоте уже показаны два созданных пользовательских поля, функционал которых был описан выше. Рассмотрим настройки каждого. Начнем с поля "Оповещение".

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

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

" Выбор Когда Тогда Иначе Конец",

аналогичный оператору в языке запросов. Поля в выражениях пользовательских полей задаются по их представлению. Для того, чтобы платформа поняла, что введеное представление обозначает некоторое поле, имя представления обрамляется квадратными скобками "[]". Если представление поля имеет одно слово, то квадратные скобки не обязательны. В примере выше мы обращаемся к полю "Конечный остаток".

Аналогично заданы настройки для поля "Формула расчета конечного остатка":

Здесь нужно сказать о некоторых нюансах:

  1. Формулу в ячейке мы можем показать лишь в виде строки. Поэтому все числовые значения мы преобразуем к строке с помощью метода языка выражений СКД "Строка()", преобразующего любое значение в строку. После выполняем конкатенацию строк.
  2. Для того, чтобы поле отображалось в итогах отчета, добавим аналогичную формулу в выражение итоговых записей. Нужно лишь добавить агрегирующие функции "СУММА()" для каждого значения в соответствии с итогами.

Настраиваем и формируем отчет

Поле "Формула расчета конечного остатка" добавим в выводимые поля отчета:

Выражение "Оповещение" добавим к детальным записям номенклатуры. Для этого в группировку "Номенклатура" добавим поле выражения "Оповещение". После этого структура отчета примет следующий вид:

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

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

Поверьте мне, обучить его использовать эти возможности можно, ведь это куда проще, чем писать формулы в электронных таблицах Excel.

Программирование как созидательный процесс.

1С СКД: Суммирование значений на различных уровнях группировок

В данной небольшой заметке хочу показать, как можно произвести суммирование значений на различных уровнях группировки, в отчете с использованием системы компоновки данными.
Как показано на изображении, только на уровне группировки «Группы номенклатуры», рассчитывается ресурс «Заказать», в нем отображается, сколько нужно заказать по текущей группе номенклатуры исходя из определенных условий:

1С СКД: Суммирование значений на различных уровнях группировок

Соответственно, теперь необходимо рассчитать итоги, по выше находящимся группировкам («Склады», «ТипыСкладов») и общий итог.
Для этого используется функция ВычислитьВыражениеСГруппировкойМассив:
ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ (EVALEXPRESSIONWITHGROUPARRAY)
Синтаксис:
ВычислитьВыражениеСГруппировкойМассив( , , , )
Описание:
Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет преобразовано в НаборДанных.Контрагент.
Компоновщик макета при генерации выражений для вывода пользовательского поля, в выражении которого присутствует только функцияВычислитьМассивСГруппировкойМассив(), генерирует выводимое выражение таким образом, чтобы выводимая информация была упорядочена. Например, для пользовательского поля с выражением:

ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОборот)", "Контрагент")
Компоновщик макета сгенерирует для вывода следующее выражение:

Тип: Строка. Выражение, которое нужно вычислить. Строка, например, Сумма(СуммаОборот).

Тип: Строка. Выражения полей группировки – выражения полей группировки, перечисленные через запятую. Например, Контрагент, Партия.

Тип: Строка. Выражение, описывающее отбор, применяемый к детальным записям. В выражении не поддерживается использование агрегатных функций. Например,ПометкаУдаления = Ложь.

Тип: Строка. Выражение, описывающее отбор, применяемый к групповым записям. Например, Сумма(СуммаОборот) > &Параметр1.
Пример:

Максимум(ВычислитьВыражениеСГруппировкойМассив ("Сумма(СуммаОборот)", "Контрагент"));

Подробное описание синтаксиса функции можно найти по адресу http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Теперь для расчета, продублируем поле «Заказать», с различными значениями «Рассчитывать по…», используя следующие выражения, обратите внимание, что в каждом выше стоящем уровне используются значения уровней ниже стоящих группировок.

В итоге получаем следующую конструкцию:

1С СКД: Суммирование значений на различных уровнях группировок

1С СКД: Суммирование значений на различных уровнях группировок : 5 комментариев

Отлично, спасибо, очень помогла статья.

Хорошая статья. Благодарю.

А у меня не получилось…выходит ошибка — Отчет не сформирован ! Функция не найдена «ЧИСЛО».

Сумма(ВычислитьВыражениеСГруппировкойВМассив(«ВЫБОР КОГДА МесяцОтчета «» ТОГДА
ВЫРАЗИТЬ(Сумма(Показатель)+0.01, «ЧИСЛО(15,0)») ИНАЧЕ 0 КОНЕЦ
«,»МесяцОтчета»))

К предыдущему комментарию, вдруг кому пригодится:
1. ВычислитьВыражениеСГруппировкойВМассив — предлог «В» не нужен
2. Если внутри ВычислитьВыражениеСГруппировкойМассив используется ВЫРАЗИТЬ, то «»ЧИСЛО(15,0)»» обрамляется двойными кавычками

СКД. Вывод полей в отдельной колонке

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

НастройкаСКД

Конструктором настроек формируем таблицу, в строках будет группировка «Номенклатура», в колонках — «Период».

Ресурсы

Для всех прочих полей в ресурсах СКД укажем агрегатную функцию — пусть это будет Сумма.

Если сейчас в настройках отчета указать вывод общих итогов, то в это итоги будут выведены все ресурсы, в том числе и начальный/конечный остатки, что не имеет никакого прикладного смысла. Простое отключение расчета ресурсов по некоторым группировкам или общим итогам не уберет соответствующую колонку из общих итогов, поэтому мы переопределим наши итоги по следующей схеме.

ВычПоле

Добавим вычисляемое поле, назовем его «ДополнительнаяКолонка».

НастройкаСКД_ВычПоле

В колонки таблицы добавим новую группировку по этой колонке.

  • Мы хотим, чтобы поля «НачальныйОстаток», «КонечныйОстаток» не выводилось в итогах

НастройкаСКД_ОтключаемИтоги

Для этого нужно переопределить стандартные общие итоги. Отключим стандартный вывод горизонтальных и вертикальных итогов:

НастройкаСКД_ПереопределяемПоля

В группировке «ДополнительнаяКолонка» изменим состав выводимых полей следующим образом:

НастройкаСКД_Заголовок.png

Зададим заголовок группировке в условном оформлении:

НастройкаСКД_СвоиИтоги1

В результате наш отчет будет выглядеть вот так:

  • Мы хотим, чтобы поле «КоличествоДокументовПродажи» не выводилось в группировках, а вот в итогах пусть будет

НастройкаСКД_ПереопределяемПоля2

Изменим состав выводимых полей в группировке «НомерПериода»:

НастройкаСКД_ПереопределяемПоля3

А в группировке «ДополнительнаяКолонка» — вот так:

НастройкаСКД_СвоиИтоги2

Получим на выходе вот такой отчет:

Того же самого можно добиться через пользовательское поле «выражение», добавив его в новую группировку по колонкам и включив в состав выбранных полей в этой группировке нужный нам поля.

Полезные приемы для разработки отчетов на СКД

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

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

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

Как вывести заголовок колонки вертикально, а значения в ячейках горизонтально

При помощи условного оформления в отчете можно для ряда полей изменить направление текста с горизонтального на вертикальное.

Также можно ограничить область действия условного оформления, чтобы вертикально выводился только заголовок колонки, при этом сами значения в ячейках значения выводились как обычно – горизонтально.

Тайминг ключевых моментов в видео:

00:39 – Какой параметр в настройках условного оформления необходимо использовать для горизонтального вывода текста.
01:14 – Как сделать, чтобы условное оформление применялось только к заголовкам полей.
01:38 – Как ограничить список полей, к которым применяется условное оформление.

Как сделать, чтобы в итогах кросс-таблицы выводилась только часть ресурсов, при этом в самой таблице отображались все ресурсы

При помощи СКД достаточно просто и без написания программного кода можно создавать кросс-таблицы, где и в строках, и в колонках выводятся данные, а на их пересечении – значения.

Однако, чтобы в таблице вывести все ресурсы из схемы компоновки, а в итогах показать только часть ресурсов (например, в таблице вывести количество и сумму, в итогах – только сумму), нужно знать один простой прием.

Тайминг ключевых моментов в видео:

00:40 – Как настроить структуру отчета для вывода в виде кросс-таблицы.
02:22 – Как отключить вывод общих итогов.
02:55 – Как добавить группировку для вывода итогов по одному ресурсу.

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

Отчеты на СКД часто сравнивают с Excel: «там же просто: добавил колонку, протянул формулу – и всё готово» 🙂

А на СКД может быть даже ещё проще! Например, для расчета процентов по числовым показателям не надо прописывать никаких формул. Это можно сделать при помощи настроек компоновки. В видео покажем, как именно.

Тайминг ключевых моментов в видео:

00:30 – Какие «виртуальные» вложенные поля доступны в настройках компоновки для числовых ресурсов.
02:05 – Чем отличается поле «процент общий» от «процент в группировке».
02:35 – Как в отчете пронумеровать строки и вывести процент проданного количества без создания отдельного поля компоновки.

Как управлять порядком выводимых в отчет ресурсов

Часто встречается следующая ситуация. Разработчик в отчете настроил выбранные поля, указал, в каком порядке поля должны следовать в отчете. Но в отчет они выводятся совсем в другом порядке.

Причиной может быть всего одна настройка, про которую нужно просто знать. В видео мы покажем такую настройку.

Тайминг ключевых моментов в видео:

00:35 – Какие настройки нужно установить, чтобы вывести в отчете ресурсы после всех полей.
01:10 – Какие настройки нужно установить, чтобы поля выводились в порядке, указанном в списке выбранных полей.

Как в отчете отфильтровать данные при помощи сложного выражения с использованием И, ИЛИ, НЕ

Часто пользователям в отчетах нужно отбирать данные по условиям, намного сложнее, чем просто “Номенклатура = Стол”. Система компоновки позволяет конструировать такие фильтры, используя группы логических условий И, ИЛИ, НЕ. В видео мы покажем, как можно реализовать такие отборы.

Тайминг ключевых моментов в видео:

00:32 – Как в настройках компоновки создать группу отборов (И, ИЛИ, НЕ).
01:52 – Как назначить представление для группы отборов и включить группу отборов в пользовательские настройки.

Особенности расчета итогов при использовании нескольких наборов данных

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

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

Отличия расчета итогов в запросах и СКД

Тайминг ключевых моментов в видео:

02:41 – Почему отличаются итоги при использовании запроса и при использовании соединения наборов данных.
04:05 – Как можно изменить текст запроса набора данных для корректного расчета итогов.

Вывод табличной части документа и корректного итога по сумме документа

Тайминг ключевых моментов в видео:

00:30 – Как решить задачу при помощи одного запроса.
04:14 – Как решить задачу при помощи соединения двух наборов данных.
07:01 – В каких случаях использование запроса приводит к некорректному расчету итогов.

Хотите научиться грамотно создавать отчеты на СКД и дорабатывать отчеты в типовых конфигурациях?

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

Разница между ними просто огромная, в том числе и в заработке.

И если Вы хотите не просто «слышать про СКД», а на самом деле знать возможности и особенности системы компоновки данных и уверенно применять их на практике, рекомендуем пройти курс Профессиональная разработка отчетов в 1С 8.3 на Системе Компоновки Данных (СКД)

Комментарии / обсуждение (98):

Добрый день. Интересно, а вот как можно сделать отчёт с возможностью фильтрации по ресурсам. Например. Строки номенклатура колонки склады. Вот хочу увидеть в отчёте сколько на каком складе, если по определенному складу фильтранусь по значению, например 5. Т.е хочу иметь возможность делать отборы как в эксель. Как это можно сделать в 1С?

Добрый день!
Технически система компоновки данных предоставляет возможность устанавливать отбор по значениям ресурсов.
А вот интерфейс платформы 1С:Предприятие отличается от Excel. Поэтому, возможно, придется выполнить доработки в форме отчета. Например, можно реализовать обработчик расшифровки, при двойном щелчке по ячейке открывать своё меню для фильтрации, компоновать отчет с новыми настройками, включающими отбор.

Подскажите пожалуйста, как соединить два источника-запроса, если условием соединения является число, которое должно попадать в интервал (пример: DaysOfDebt BETWEEN LowerBoundOfInterval AND UpperBoundOfInterval). При выполнении компоновка выдает ошибку.

Добрый день!
Можно попробовать заменить соединение двух наборов данных на соединение в одном запросе. В запросе можно настроить соединение таблиц по такому условию.

Спасибо, именно так и сделал. Но хотел сделать с помощью соединения двух наборов.

В описании связи используются поля из наборов данных, поэтому нужно предусмотреть поля в наборах, по которым будет выполняться соединение. Если получится добавить такие поля в запросы наборов данных (например, при помощи функций языка запросов получить значения, по равенству которых можно было бы соединить эти наборы данных), то будет просто реализовать отчет при помощи соединения двух наборов.

Добрый день! Как в отчете сделать так чтобы в таблицу отчета выводились все документы в которых фигурировал условно какой то артикул, но список этих документов ограничен(т.е выводить только по определенным документам) как сделать этот отбор?

Добрый день!
Можно в запросе использовать объединение всех возможных таблиц:

ВЫБРАТЬ
ПриходТовараТовары.Ссылка КАК Ссылка,
ПриходТовараТовары.Товар КАК Товар,
ПриходТовараТовары.Сумма КАК Сумма
ИЗ
Документ.ПриходТовара.Товары КАК ПриходТовараТовары
ГДЕ
&ВыводитьПриходТовара = ИСТИНА

ВЫБРАТЬ
РасходТовараТовары.Ссылка,
РасходТовараТовары.Товар,
РасходТовараТовары.Сумма
ИЗ
Документ.РасходТовара.Товары КАК РасходТовараТовары
ГДЕ
&ВыводитьРасходТовара = ИСТИНА

Пользователь при помощи установки значений параметров ВыводитьПриходТовара и ВыводитьРасходТовара фактически будет управлять тем, из каких таблиц надо выбирать данные.
А фильтр по товару сделать при помощи отбора СКД. Т.е. пользователь будет сам отбирать товар(ы) при настройке отчета.

Как вывести заголовок колонки вертикально, а значения в ячейках горизонтально в таблице, а не в списке?
Спасибо

Добрый день!
Это можно сделать при помощи условного оформления. Прикрепил схему компоновки: ВертикальныйЗаголовокКолонки.zip
Внешний вид отчета:
Отчет

Добрый день.
Если две группировки строк (“СтатьяДДС”, “Проект”), вторая вложенная в первую.
Подскажите, пожалуйста, как при заданном условии относительно группировки №1, не выводить группировку №2 ? А во всех остальных случаях выводить?
Например, вот так:
https://prnt.sc/uZvAlRi-5az-
Т.е. если в группировке “СтатьяДДС=&СтатьяДДС2”, то выводится только строка “Статья ДДС 2”, а разбивка по проектах не выводится.

Добрый день!
Первое, что пришло в голову, – это в уже сформированном табличном документе удалить лишние строки после компоновки отчета.

Здравствуйте:)
Подскажите пожалуйста по работе с Диаграммами.
Диаграмма типа “График”, 2 вопроса:
1. Возможно ли график сделать “плавным”
2. На график выводится 2 линии – План продаж и Факт продаж. Возможно ли “План” выводить по 12 точкам, а “Факт” – только по нескольким (например План определен до конца года, а по Факту сейчас июнь – график Плана построить по 12 точкам, а график Факта – чтобы обрывался на 6й, а не “падал” и “стелился” по 0)

Добрый день!
Есть демо-конфигурация фирмы “1С” Диаграммы: https://demo.1c.ru/charts
В ней приведены примеры внешнего вида различных диаграмм, есть программный код для формирования этих диаграмм.
По Вашим вопросам можно посмотреть примеры Настройки стиля и Пропуск значений.

Здравствуйте:)
Подскажите пожалуйста, вопрос можно применить к скриншоту вашего ответа от 17.02.2022 / 16:50 (нижний, с итоговой таблицей) – общие итоги выводятся и по-горизонтали (“Итого” справа) и по вертикали.
Возможно ли по горизонтали выводить по одной логике – пусть это будет стандартная “Сумма()”, а вот по вертикали – по совершенно другой – например “Максимум()*25”?
Или же, например – вместо горизонтальных итогов выводить собственную строку, которая бы рассчитывала Максимум() по колонке и умножала на 25 – просто новое поле понятно как завести:) а как его вывести нижней строкой (по примеру “Итого”) и как получать “Максимум()” по колонке?
Спасибо:)

Добрый день!
Такой результат можно получить при помощи макетов ресурсов. Приложил пример схемы компоновки – МакетыРесурсов_РазныеВыражения.zip
Отчет выглядит следующим образом:
Отчет

Василий, спасибо за ответ:) Помогите пожалуйста дальше развить задачу.
Можете пожалуйста:
– Для каждого товара в запрос добавить поле “Цена” и поле “Склад” (например “Основной”)
– В строках выводить Дату, а в колонках – Склад, в который вложен товар.
– В ресурсы соответственно добавить Цену
– И в Настройки – Выбранные поля – добавить новый ресурс “Цена”

Теперь, если вывести отчет “красные” итоги у товара объединят 2 колонки, разделения “Сумма | Цена” – не будет.
А в колонке по складу – разделение будет, но итоги будут считаться по сумме, как и “Итого” справа. А у товаров – по максимум. То есть по товарам итоги выбираются по максимуму, а для склада и правого “Итого” – суммируются.

И вот теперь возможно ли сделать так, чтобы горизонтально, по строкам, суммировалось. А в КАЖДОЙ колонке (Склад, товар А, товар Б, Итого) итоги были разделены на Сумму и Цену и в итоги выводились максимумы по колонке?

Желаемый вид приведен ниже:)

Дата | Основной склад | ТоварА | ТоварБ | Итого
Сумма | Цена Сумма | Цена | Сумма | Цена | Сумма | Цена
01.01 150 | 60 | 100 | 25 | 50 | 35 | 150 | 60
02.01 175 | 100 | 200 | 150 | 100 | 40 | 300 | 190
__
Итого 175 | 100 | 200 | 150 | 100 | 40 | 300 | 190

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

Добрый день. В скд получаю два поля “дата/время” и “сумма”. Не получается сделать группировку по дням, чтобы выводило весь оборот за день. Группировку поставил, периодичность – день, датаначала и датаконца указаны, ресурс поставлен. Как правильно вывести? Спасибо

Добрый день!
В настройках компоновки для поля Период можно использовать вложенные поля – так получим группировку по дням:
Период
Или еще вариант – добавить в набор данных поле, в котором приводить дату к началу дня. По этому полю и сгруппировать.

Добрый день 🙂
Подскажите, как сделать условное оформление по значениям полей, которые сами в таблицу не выводятся? Пример: в реквизитах есть два счета. Если их значения не совпадают, то выделять строку цветом. При этом поля со значениями счетов не должны выводится в таблицу

Добрый день!
На форму добавил таблицу значений с несколькими колонками:
ТЗ
На форму вынес только две колонки, но для всех реквизитов таблицы установил галочку Использовать всегда.
Настраиваю условное оформление на уровне формы:
Условное оформление
Программно добавляю строки в таблицу (потому что не все колонки видны). Получается вот такой результат:
Внешний вид

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

Настройки будут аналогичные.
Настраиваем условное оформление. В условии используем поля, которые не выводятся в отчет:
Условное оформление
Выбранные поля
Получается вот такой отчет:
Отчет

Василий, спасибо за ответ. У меня почему-то так не получается. Настраиваю, как у вас, но выделение работает только в том случает, если в отчет выводятся оба поля, которые участвуют в сравнении. Если же хотя бы одно не выводится, то условное оформление не работает ((
К сожалению, не могу вставить сюда скрины.
Может, есть какая-то особенность у сравниваемых полей, которая должна быть обязательной?

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

Здравствуйте! Скажите, а можно ли вывести отчет, где будут две группировки: Контрагент и Договор, ресурс – сумма. Но вот только в названии контрагента, в той же ячейке через двоеточие будут перечислены значения реквизитов договоров, которые относятся к нему. Это могут быть номера или бренды договоров. Это нужно, например, для того, чтобы не раскрывать контрагента по договорам, а может даже вообще убрать группировку договоров – но информация по ним останется вместе с контрагентом в их группировке.

Добрый день!
Предлагаю сделать Договор ресурсом:
Ресурсы
Настройки компоновки будут выглядеть так:
Настройки
Получится вот такой отчет:
Отчет
Тогда не придется раскрывать группировку Контрагент, чтобы увидеть договоры по каждому контрагенту.

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

Добрый день!
Да, можно сделать вложенные колонки в таблице:
Настройки
Группировки колонок можно свернуть или развернуть:
Отчет

Спасибо, а если в СКД не таблица используется,а группировка?

Тогда свернуть/развернуть можно будет только строки.
Можно попробовать полностью самостоятельно выводить табличный документ, воспользоваться методом НачатьГруппуКолонок.

Добрый день!
Как при сворачивании данных отчета в одну строку все же показывать одинаковые данные в свернутой строке, соответственно неодинаковые – не выводить.

Добрый день!
Как вариант – программно в обработчике ПриКомпоновкеРезультата сформировать нужные данные в таблице значений, а затем передать таблицу в качестве внешних данных в набор данных – объект.

имя реквизита номенклатуры совпадает с характеристикой, скд выбирает реквизит. лучше бы характеристику

Добрый день!
Можно в наименовании характеристики перед записью добавлять суффикс, например, “(доп. реквизит)” или “(доп. свойство)“, чтобы не было путаницы.

Уже ничего не добавишь, ни в реквизит, ни в характеристику, необозримо внешних отчетов

Что-то менять всё равно придется – или имена полей, или в отчетах способ получения данных (например, вместо механизма характеристик явно использовать в запросе соединение с ТЧ ДополнительныеРеквизиты, где хранятся значения). Смотря, какой способ окажется менее трудозатратным.

Да так и сделал, соединил. Прописал бы кто, что не надо дублей делать, а еще лучше, будь возможность уточнять раз”именование

Отлично, что получилось решить задачу!

В Вашем комментарии нет текста или вложенных файлов.

Обращаем Ваше внимание, что Вы мoжете добавить к комментарию:
– изображение (JPG, PNG, GIF)
– архивы (ZIP, RAR)
– документы и текст (TXT, DOC, DOCX, XLS, XLSX, PPT, PPTX или PDF).

Из соображений безопасности максимальный размер файла установлен в 10 МБ.

Проверьте, пожалуйста, что Ваш комментарий соответствует этим требованиям, и опубликуйте его повторно.

Добрый день.
Может в курсе как в СКД настроить вывод табличной части результата порциями ,
например по 100 строк? по моемому где то есть такой параметр настройки в форме СКД, не могу найти

Добрый день!
Можно реализовать поэлементный вывод:

СхемаКомпоновки = Отчеты.ОстаткиТоваровНаСкладах.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
НастройкиКомпоновки = СхемаКомпоновки.НастройкиПоУмолчанию;

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновки, НастройкиКомпоновки);

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ТабДок = Новый ТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабДок);

Пока Истина Цикл

ЭлементРезультата = ПроцессорКомпоновки.Следующий();
Если ЭлементРезультата = Неопределено Тогда
Прервать;
Иначе
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
КонецЕсли;

Этот код выводит отдельно каждый элемент результата компоновки данных. Это не обязательно строка будет.

Другой вариант – вывести результат компоновки в таблицу значений, затем обходить ее, выводить в табличный документ по 100 строк.

Добрый день!
Несколько лет назад проходил Ваш курс.
Но как часто бывает, со сложными вопросами столкнулся только сейчас.
Если сможете ответить, буду очень признателен.
1. Автопозиция ресурсов – прекрасно работает, когда в отчете только детальные записи. Но когда есть несколько уровней группировки, в том числе без детальных записей, вывести ресурсы и группировочные поля в произвольном порядке – непонятно как. То есть, допустим, “через один” группировочное поле, ресурс и тд. Пробовал добавлять в нужном порядке все поля на вкладке Выбранные поля – не помогает, система выводит поля как ей вздумается. Даже письмо в 1с написал. Вы с такой проблемой не сталкивались?
2. Можно ли, используя язык системы компоновки данных, организовать следующий расчет ресурса в такой задаче: нужно посчитать количество листов прикрепленных файлов (в бп 3, к договорам, поступлениям и счетам-фактурам). Само количество у каждого файла посчитано и хранится отдельным реквизитом. При этом у каждого файла также есть реквизиты Вид, дата и номер файла (например, УПД, 1, 01.01.20). С одной стороны, к договору прикреплен Договор и доп. соглашение и оба помечены как “договор” от одной даты. С другой стороны, один и тот же УПД прикреплен к поступлению товаров и к счет фактуре и посчитать количество страниц по такому файлу нужно только один раз. То есть, я сначала бы рассмотрел файлы каждого отдельного документа, там сгруппировал их по полям вид, номер и дата, а количество страниц просуммировал (решается проблема договор+доп. соглашение). Дальше, на уровне контрагент+договор я бы взял максимум по каждому виду, номеру и дате (решается проблема двух одинаковых упд, количество страниц посчитается один раз). А затем, на уровне других группировок и общего итога, снова бы просуммировал количество страниц. Задать два выражения для ресурса (у вида, номера, даты, контрагента и договора как Максимум, в другой группировке у остальных полей – как Сумма) не получается – пишет Неоднозначное выражение. Хочется написать “вычислить с группировкой таблица значений”, а потом эту таблицу значений передать в следующее выражение и еще раз, чтобы посчитать сумма+максимум+сумма. Но похоже такое выражение не составить. Тут можете помочь? Спасибо.

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

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