1с скд заголовок отчета по центру
Войдите как ученик, чтобы получить доступ к материалам школы
Система компоновки данных 1С 8.3 для начинающих: считаем итоги (ресурсы)
Автор уроков и преподаватель школы: Владимир Милькин
Ставим цель
Целью этого урока будет:
- Написать отчёт, который выводит список продуктов (справочник Еда), их калорийность и вкус.
- Сделать группировку продуктов по их цвету.
- Познакомиться с возможностью подведения итогов (ресурсы) и вычисляемыми полями.
Создаём новый отчёт
Как и на предыдущих уроках открываем базу "Гастроном" в конфигураторе и создаём новый отчёт через меню "Файл"->"Новый. ":
Вид документа - внешний отчёт:
В форме настройки отчёта пишем имя "Урок3" и нажимаем кнопку "Открыть схему компоновки данных":
Оставляем имя схемы по умолчанию и нажимаем кнопку "Готово":
Добавляем запрос через конструктор
На закладке "Набор данных" нажимаем зелёный плюсик и выбираем пункт "Добавить набор данных - запрос":
Вместо того, чтобы писать текст запроса вручную, вновь запускаем конструктор запроса:
На вкладке "Таблицы" перетягиваем таблицу "Еда" из первой колонки во вторую:
Выбираем из таблицы "Еда" поля, которые будем запрашивать. Для этого перетаскиваем поля "Наименование", "Вкус", "Цвет" и "Калорийность" из второй колонки в третью:
Получилось вот так:
Нажимаем кнопку "ОК" - текст запроса сформировался автоматически:
Формируем настройки представления отчёта
Переходим на закладку "Настройки" и нажимаем на волшебную палочку, чтобы вызвать конструктор настроек:
Выбираем вид отчета "Список. " и нажимаем кнопку "Далее":
Перетаскиваем из левой колонки в правую поля, которые будут отображаться в списке и нажимаем "Далее":
Перетаскиваем из левой колонки в правую поле "Цвет" - по нему будет происходить группировка строк в отчёте. Нажимаем "ОК":
А вот и результат работы конструктора. Иерархия нашего отчёта:
- отчёт в целом
- группировка "Цвет"
- детальные записи - строки с названиями еды
Сохраним отчёт (кнопка дискета) и не закрывая конфигуратора тут же откроем его в режиме пользователя. Получилось вот так:
Меняем порядок колонок
Но давайте поменяем порядок колонок (стрелки вверх-вниз), чтобы он был таким как на рисунке ниже:
Сохраним отчёт и вновь откроем в режиме пользователя:
Отлично, так гораздо лучше.
Подводим итог (сумму) по калорийности
Было бы неплохо выводить итог калорийности продуктов по группам. Чтобы видеть сумму калорийности всех продуктов, скажем, белого или жёлтого цвета. Или узнать общую калорийность вообще всех продуктов в базе.
Для этого существует механизм вычисления ресурсов.
Переходим на вкладку "Ресурсы" и перетаскиваем поле "Калорийность" (мы же по нему собираемся итог подводить) из левой колонки в правую.
При этом в поле выражение выбираем из выпадающего списка "Сумма(Калорийность)", так как итогом будет являться сумма всех входящих в итог элементов:
Сохраняем и формируем отчёт:
У нас появились итоги по каждой из групп и по отчёту в целом.
Подводим итог (среднее) по калорийности
Теперь давайте сделаем так, чтобы в ещё одной колонке выводилась средняя калорийность продуктов по группам и в целом по отчёту.
Трогать уже имеющуюся колонку "Калорийность" нельзя - в неё уже выводится итог-сумма, поэтому заведём ещё одно поле, которое будет являться точной копией поля "Калорийность".
Чтобы завести такое "виртуальное" поле воспользуемся механизмом вычисляемых полей.
Переходим на закладку "Вычисляемые поля" и нажимаем зелёный плюсик:
В колонке "Путь к данным" пишем имя нового поля (слитно, без пробелов). Пусть оно будет называться "СредняяКалорийность", а в колонке "Выражение" пишем имя уже существующего поля, на основании которого будет рассчитываться новое поле. Пишем туда "Калорийность". Колонка "Заголовок" заполнится автоматически.
Мы добавили новое поле ("СредняяКалорийность"), но в отчёте оно само по себе не появится - нужно или вновь вызывать конструктор настроек ("волшебная палочка") или добавить это поле вручную.
Поступим вторым способом. Для этого переходим на закладку "Настройки", выбираем "Отчет" (ведь мы хотим добавить поле в целом к отчёту), выбираем внизу закладку "Выбранные поля" и перетаскиваем поле "СредняяКалорийность" из левой колонки в правую:
Получилось вот так:
Сохраняем и формируем отчет:
Поле появилось и мы видим, что его значениями являются значения поля "Калорийность". Отлично!
Но мы помним, что конечная цель - посчитать среднюю калорийность по группам и в целом по отчёту.
Для этого вновь воспользуемся уже знакомым нам механизмом ресурсов (подведение итогов). Переходим на закладку "Ресурсы" и перетаскиваем поле "СредняяКалорийность" из левой колонки в правую:
При этом в колонке "Выражение" выбираем "Среднее(СредняяКалорийность)":
Сохраняем и формируем отчёт:
Видим, что по группам, то есть по каждому цвету, и по отчёту в целом совершенно верно посчиталось среднее значение. Но присутствуют лишние записи по отдельным продуктам (не по группам), которые хотелось бы убрать из отчёта.
Знаете почему они появились (значения не по группам)? Потому что, когда мы добавляли поле "СредняяКалорийность" в настройки отчёта, на втором шаге мы выделили весь отчёт в целом и это новое поле попало в элемент "Детальные записи".
Исправим ошибку. Для этого вернёмся на закладку "Настройки", выберем "Детальные записи" сначала сверху (шаг 2), а затем "Детальные записи" снизу (шаг 3), перейдём на закладку "Выбранные поля" и увидим в её правой колонке элемент "Авто".
Элемент "Авто" - это не одно поле. Это несколько полей, которые попадают сюда автоматически на основании вышестоящих настроек.
Чтобы увидеть, что это за поля - нажмём на элемент "Авто" правой кнопкой и выберем пункт "Развернуть":
Элемент "Авто" раскрылся в следующие поля:
А вот и наше поле "СредняяКалорийность", которое попало сюда из пункта "Отчет", когда мы его туда перетаскивали. Просто снимем галку рядом с этим полем, чтобы убрать его вывода:
Сохраним и сформируем отчёт:
То, что надо! Значения "СредняяКалорийность" остались только в группах (цвет) и в итоге по отчёту в целом.
Подводим итог (количество) по вкусам
Ну и напоследок, чтобы закрепить умение подводить итоги, сделаем вывод количества различных вкусов для продуктов каждого цвета.
Ну, например, для белого цвета, это значение будет равно 2 (всего два вкуса "Кислый" и "Сладкий"), а для жёлтого 3 ("Сладкий", "Солёный" и "Кислый").
Переходим на закладку "Ресурсы" и перетаскиваем поле "Вкус" из левой колонки в правую:
В качестве выражения выбираем "Количество(Различные Вкус)":
Сохраняем и формируем отчёт:
Эталонная обработка, после выполнения всех шагов этого урокаВойдите на сайт как ученик
Для учеников
Прибегайте к изучению эталонного варианта только после самостоятельного выполнения всех шагов.
На вопросы учеников — отвечаю по почте, но прежде загляните в ЧАВО (ссылка) .
Хитрости компоновки данных: программное формирование заголовков отчета и колонок без использования макетов.
Очень часто необходимо программно сформировать заголовок отчета, например добавить туда наименование валюты, в которой формируется отчет. Можно использовать макеты, но во многих случаях это не оправданно.
Молочников Олег Spb. 2012.
Хитрости компоновки данных: программное формирование заголовков отчета и колонок без использования макетов.
Очень часто необходимо программно сформировать заголовок отчета, например добавить туда наименование валюты, в которой формируется отчет. Можно использовать макеты, но во многих случаях это не оправданно.
Что-б заголовок выводился, убедитесь, что в схеме компоновки данных есть соответствующие настройки (текст заголовка может быть любым):
Сформировать программно заголовок отчета нам поможет следующий код:
Настройки = КомпоновщикНастроек . Настройки ;
ЗаголовокНастроек = Настройки . ПараметрыВывода . НайтиЗначениеПараметра (Новый ПараметрКомпоновкиДанных ( "Title" ));
ЗаголовокНастроек . Значение = "Сравнение остатков по взаиморасчетам в базе " + СокрНаимБазы1 + " и " + СокрНаимБазы2 ;
Для формирования заголовков колонок используем заголовки из схемы в качестве шаблонов (“_1” и “_2” будут позже заменены на сокращенные наименования баз данных в примере ниже):
Тогда формирование имен колонок в любых выбранных пользователем полях можно сформировать простейшим кодом:
Для Каждого ВыбранноеПоле из Настройки . Выбор . Элементы Цикл
ДоступноеПоле = Настройки . ПользовательскиеПоля . ДоступныеПоляЗначений . НайтиПоле ( ВыбранноеПоле . Поле );
ТекстЗаголовка = ДоступноеПоле . Заголовок ;
ТекстЗаголовка = СтрЗаменить ( ТекстЗаголовка , "_1" , СокрНаимБазы1 );
ВыбранноеПоле . Заголовок = СтрЗаменить ( ТекстЗаголовка , "_2" , СокрНаимБазы2 );
КонецЦикла;
Войдите как ученик, чтобы получить доступ к материалам школы
Система компоновки данных 1С 8.3 для начинающих: меняем оформление
Автор уроков и преподаватель школы: Владимир Милькин
Ставим цель
- Сделать копию отчёта с прошлого урока
- Изменить его имя на "Урок4.erf"
- Внести изменения в копию отчёта (сегодня разбираем примеры с условным оформлением)
Делаем копию отчёта с прошлого урока
Делаем копию отчёта с прошлого урока:
Переименовываем копию в "Урок4.erf":
Открываем базу "Гастроном" в конфигуратор:
Открываем отчёт "Урок4.erf":
В форме отчёта меняем имя на "Урок4" и открываем схему компоновки данных:
Давайте вспомним, как выглядит отчёт прошлого урока в режиме пользователя:
Сокращаем длину дробной части
Первая проблема, которую нам предстоит решить, это вывод слишком большого количества цифр после запятой (177,666666. ).
Причиной этого послужило деление при нахождении среднего. Чтобы устранить этот недостаток укажем в настройках поля "СредняяКалорийность" формат вывода чисел, подразумевающий только 2 числа в дробной части.
Для этого переходим на закладку "Настройки", там выделяем пункт "Отчет", далее в самом низу выделяем закладку "Условное оформление" и нажимаем зелёный плюсик, чтобы добавить новую запись:
В появившейся записи настраиваем поле "Оформляемые поля", чтобы указать к каким именно полям мы будем применять условное оформление:
В открывшемся диалоге нажимаем зелёный плюсик, чтобы добавить поле:
Добавляем поле "СредняяКалорийность" (именно в нём выводится слишком много чисел в дробной части), получилось вот так:
Теперь переходим к настройке поля "Оформление":
Наша задача задать правильный числовой формат:
Указываем значение точности равное двум:
Получилось вот так:
Итоговая запись условного оформления выглядит так:
Сохраняем отчёт и открываем (конфигуратор закрывать не нужно) в режиме пользователя:
Отлично, теперь дробная часть округляется до 2 чисел.
Выводим итоги жирным шрифтом
Теперь было бы здорово, чтобы итоговые значения вкуса, калорийности и средней калорийности выводились жирным шрифтом.
Это также легко сделать при помощи условного оформления.
Переходим на закладку "Настройки", далее выделяем пункт "Цвет" (потому что мы делаем настройку оформления, которая будет относится только к группировке цвет), далее переходим на закладку "Условное оформление" и снова нажимаем зелёный плюсик:
В новой записи настраиваем пункт "Оформляемые поля" (кнопка многоточие) и выбираем поля "Вкус", "Калорийность" и "СредняяКалорийность":
Переходим к настройке поля "Оформление":
Здесь находим пункт "Шрифт" и также открываем его по кнопке многоточие:
Начертание шрифта настраиваем вот так:
Нажимаем "Ок" и ещё раз "Ок":
Получилось вот так:
Сохраняем отчёт и формируем в режиме пользователя:
Отлично, но не совсем. Хочется, чтобы жирным выводились только значения итогов напротив цветов, а у нас условное оформление применилось ещё и к заголовкам полей и к общим итогам. Исправим это.
Для этого возвращаемся к записи условного оформления, которую мы только что создали и настраиваем поле "Область использования":
Снимаем галки напротив "В общем итоге" и "В заголовке полей":
Снова сохраняем отчёт и формируем в режиме пользователя:
Выводим жирным шрифтом общие итоги
А теперь давайте добьёмся, чтобы вся общая строка итогов (включая слово "Итого") выводилась жирным шрифтом.
Для этого переходим на закладку "Настройки", выделяем пункт "Отчет" (применяем настройки в целом к отчёту), далее переходим на закладку "Условное оформление" и добавляем ещё одну запись (зелёная кнопка плюс):
В новой записи не указывать "Оформляемые поля", что означает, что мы хотим применить оформление ко всем полям, а вместо этого настраиваем оформление:
Наконец, правильно настраиваем "Область использования" нашей записи:
Оставляем единственный пункт - "В общем итоге":
Получилось вот так:
Сохраняем отчёт и формируем в режиме пользователя:
Мы добились своего
Разукрашиваем фон заголовка полей и общие итоги
А что, если нам разукрасить фон заголовка полей и итоговой строки в зелёный цвет? А текст в белый?
Я покажу как легко это делается.
Вновь переходим на закладку "Настройки", выделяем пункт "Отчет", далее переходим на закладку "Условное оформление" и жмём зелёный плюсик, чтобы добавить ещё одну запись:
Сразу настраиваем "Область использования новой записи (оставляем только "В общем итоге" и "В заголовке полей"):
Далее переходим к полю "Оформление" новой записи, настраиваем цвет фона и цвет текста как на картинке ниже:
Получилось вот так:
Сохраняем отчёт и формируем в режиме пользователя:
Добавляем заголовок
Ну и в качестве завершающего приёма этого урока установим заголовок отчёта (мы это уже делали в прошлых уроках).
Для этого переходим на закладку "Настройки", выделяем пункт "Отчет", далее переходим на закладку "Другие настройки" и там настраиваем пункты "Выводить заголовок" и "Заголовок" вот так:
Сохраняем отчёт и формируем в режиме пользователя:
Эталонная обработка, после выполнения всех шагов этого урокаВойдите на сайт как ученик
Для учеников
Прибегайте к изучению эталонного варианта только после самостоятельного выполнения всех шагов.
На вопросы учеников — отвечаю по почте, но прежде загляните в ЧАВО (ссылка) .
Дабы избежать комментариев типа "тоже мне открытие!", оговорюсь сразу: статья рассчитана на неискушённых СКД-разработчиков, тем кто это и так знает не обязательно высказывать своё "фи!", поймите, то что очевидно для вас - не всегда бывает очевидно остальным.
Для наглядного представления реализации части трюков я сделал небольшие заготовки в виде внешних схем СКД. Описание трюков и скриншоты постарался делать так, чтобы суть и техника реализации трюка были понятны без необходимости скачивания схем. Для кого-то этого будет вполне достаточно, но если что-то непонятно, то всегда можно скачать соответствующую схему и посмотреть непосредственно реализацию.
Трюк №1. Многоликость правого значения.
Итак, для разогрева начнём с чего-нибудь попроще. В таких механизмах СКД, как "Отбор" или "Условное форматирование" вы наверняка сталкивались с колонками "Поле" (или "Левое значение") и "Значение" (или "Правое значение"). Профессионалы, наверняка знают этот трюк, но начинающим не всегда легко догадаться, что поле компоновки данных можно использовать как слева, так и справа (т.е. сравнивать не только заданные фиксированные значения, но и другие поля СКД в пределах одной строки). Для этого достаточно в поле правого значения зайти в режим редактирования, нажать кнопку очистки значения ("кретик"), затем нажать появившуюся кнопку выбора типа (буква "Т") и выбрать тип "Поле компоновки данных".
Пример.
В качестве примера я не стал изобретать велосипед, а взял самую обычную оборотно-сальдовую ведомость по счету 60 из демо-версии 1С:Бухгалтерии (я использую ред. 2.0.). Кто не знает, начиная с редакции 2.0 этот отчёт сделан на базе СКД.
Итак, зададим прямо в ней отбор для строк с условием "БУ Дт (оборот)" Равно "БУ Кт (оборот)", а также применим к отчёту условное оформление, подсветив жёлтым цветом ячейки строк, где "БУ Кт (кон. сальдо)" Больше "БУ Кт (оборот)". Если кто не знает, как включить панель "Оформление" - найдите кнопку "Параметры панели настроек" справа от надписи "Панель настроек".
Конечный результат должен получиться примерно таким:
Трюк №2. Отбор на группировках.
Все знают, что такое Отбор в СКД, но не все знают, что его можно применять не только для отчета в целом, но и на отдельных группировках строк и колонок. Прикладных задач для задействования такого средства много. Например, условная детализация (ограничение для каких группировок верхнего уровня выводить детализацию, а для каких нет), или вариативная детализация (для разных значений группировок верхнего уровня выводить разные расшифровки). На одном из проектов УПП, к примеру, пришлось делать форму калькуляции себестоимости с фиксированной структурой (отдельный справочник) и для разных статей калькуляции выводить расшифровки или по статьям затрат, или по конкретным затратам или не выводить ничего. Благодаря этому трюку не пришлось отказываться от СКД при разработке отчёта.
Пример.
Цель примера: отобразить ОСВ, в которой для взаиморасчетных счетов (60,62,76) показать расшифровку по контрагентам, а для затратных (20,23,25,26) - по статьям затрат.
Сама СКД реализована в виде набора данных, где используется запрос к виртуальной таблице остатков и оборотов регистра бухгалтерии "Хозрасчетный".
Размещаем вложенные группировки "Организация" и "Счет". В группировке "Счет" параллельно размещаем 2 группировки "Субконто1" и "Субконто2", для которых задаем соответствующие отборы.
Иллюстрацию настройки привожу в скриншоте:
Если в основных настройках отчёта на закладке "Другие настройки" вы не отключали вывод отборов, то это обязательно нужно будет сделать в "других настройках" наших группировок "Субконто1" и "Субконто2"
Трюк №3. Шапка-невидимка
Следующий трюк можно представить, как продолжение предыдущего. Если вы обратили внимание, в получившемся отчёте несмотря на то, что фактически у нас выводится только одно субконто, в шапку попадают оба (и "Субконто1" и "Субконто2"). К сожалению разработчики СКД не предусмотрели возможность регулирования видимостью шапки или использования какого-нибудь служебного символа, при установке которого в качестве заголовка, шапка поля бы не формировалась. Но, как вы уже, наверное, догадались есть трюк, который в какой-то степени поможет обойти данное ограничение.
При разработке схемы в предопределённом макете оформления добавьте макет группировки, с определением по имени группировки "Невидимка" так, как показано на скриншоте. Обратите внимание, что поле "Область" должно остаться пустым!
А затем задайте для группировки "Субконто2" имя "Невидимка":
И вуаля. шапка группировки "Субконто2" исчезает, а отчёт становится вот таким:
Спросите, почему макет оформления задаётся через имя, а не через указание конкретного поля группировки? Просто так получается более универсальное решение и впоследствии это имя группировки можно задать в вариантах отчёта на любой группировке, а вот менять предопределённый макет в вариантах уже не получится.
Да, есть ещё один ньюанс этого трюка: учитывайте, что "шапка-невидимка" накрывает не только эту группировку, но и все нижестоящие! Т.е. если вы назначите имя "Невидимка" группировке "Субконто1", то в шапке не будет видно ни "Субконто1", ни "Субконто2"!
Трюк №4. Называй меня как хочешь
Большинство разработчиков СКД знают, как можно задать заголовок поля запроса. На закладке СКД "Наборы данных", достаточно поставить галочку отмены автозаголовка и внести в поле "Заголовок" необходимый текст. Минус состоит в том, что в пользовательском режиме, этот способ недоступен, а переименовать заголовок хочется не прибегая к помощи конфигуратора. Так вот в настройках вариантов отчёта есть не только способ переименовать заголовки полей, но и "накрыть" их группировочной "шапкой". Для этого на закладке "Выбранные поля" необходимо выделить нужные поля и нажать правую кнопку мыши. Как видно на скриншоте для полей доступны опции "Установить заголовок" и "Сгруппировать поля".
Обратите внимание, что для полей группировок установку заголовка необходимо делать также именно через закладку "Выбранные поля", а не через контекстное меню "Установить имя" в верхней (структурной) части настройки варианта!
После всех настроек вариант отчёта выглядит вот так:
P.S.
Небольшая подсказка для тех, кто будет качать схему. Схема - одна, но все трюки выполнены в виде отдельных вариантов настроек отчёта этой схемы:
Читайте также: