Компьютерные уроки

Скд макет ресурсов. Управление видом отчета на скд

Наиболее сложным в применении макетов является заполнение колонки “Макет” на вкладке “Макеты” в конструкторе СКД.

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

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

Макет поля

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


Макет заголовка группировки

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

Настройки

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

Настройки

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

Настройки

Однако если назначить строке макета высоту 1, то можно скрыть заголовки группировок текущего и следующего уровней. На рисунке ниже скрыты заголовки Должность и Сотрудник

Также заслуживает внимания использование типа макета Подвал, например для вывода подписантов.

Настройки

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


Макет группировки

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

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

Настройки

Если применить данную схему для группировки нижнего уровня, то получается вот что

Или, если дорисовать столбцы, то получится так

Если возникает задача изменить подвал с итогами, то нужно использовать этот макет с типом Общий итог подвал или Общий итог заголовок . Насколько я понял, эти два типа макета делают одно и то же

Настройки

Макет ресурсов

Макет используется только для ТАБЛИЦЫ. Он применяется на пересечении группировок, указанных в настройках

Настройки


Ограничения использования макетов

  1. Во многих случаях при использовании макетов теряется возможность настройки отчета пользователем. Он не сможет изменять порядок ресурсов и группировок, отключать ресурсы и группировки, т.к. при этом отчет принимает непонятный вид. Данный недостаток не распространяется только на макет поля.
  2. Нет возможности оформить с помощью макета ТОЛЬКО заголовок нужного ресурса (или группы ресурсов). Например, если нужно выровнять заголовки ресурсов по центру. Придется оформлять всю шапку таблицы полностью и получить ограничение из п.1
  3. Нет возможности оформить ТОЛЬКО заголовок итогов. Например, несколько раз требовалось заменить слово “Итого” на слово “Всего”. В этом случае придется отрисовывать всю строку итогов и получить ограничение из п.1 или придумывать что-нибудь другое.

Файлы

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


В

Конструируем отчёт в СКД.

Состав полей, например, такой:

В строках отчёта – группировка "Контрагент", в колонках – группировка "Проект". В данные отчёта попадает ресурс "Взаиморасчеты".

В результате получаем результат такого вида:

Видим, что в шапку отчёта попал заголовок ресурса "Взаиморасчёты". Этот заголовок нам тут не нужен, и поэтому будем от него избавляться.

Вариантов есть несколько.

Вариант 1.

Посредством настройки макета.

Открываем соответствующую вкладку в конструкторе системы компоновки данных. Выбираем пункт "Добавить макет группировки". В форме "Макет группировки" добавляем поле "Проект". Тип макета – "Заголовок".

Задаём область. Например, ячейку R1C1. Для ячейки устанавливаем свойство Заполение: "Параметр". Называем параметр, например, "Проект".

Задаём выражение для параметра: Представление(Проект). Это значит – представление поля "Проект".

В итоге должна получиться такая картина:

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

Вариант 2.

1. В выбранных полях всего отчета оставляем только ресурс
2. В выбранных полях группировки колонок убираем автополе, добавляем поле этой колонки (например, если группировка колонок по периоду, выбираем тут период)
3. На вкладке "Другие настройки" корня отчета выбираем "расположение ресурсов" - "вертикально".

В этом варианте макет не требуется.

Сегодня мы рассмотрим решение интересной задачи – вывод картинок в отчет .

Для чего это может быть полезно?

Вот несколько примеров :

  • Прайс-лист с картинками товаров и логотипом в шапке
  • Анкеты сотрудников с фотографиями
  • Сверка расчетов с печатью и подписью в подвале
  • Отчеты/печатные формы со сканом печати

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

Предопределенные макеты в СКД

С помощью предопределенных макетов можно переопределять стандартное оформление отчета.

В этом уроке помимо постановки задачи рассмотрим:

  • Хранение бинарных данных в модельной конфигурации
  • Возможность использования макетов СКД для вывода изображений

Программное формирование отчета на СКД

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

Именно при программном формировании отчета возможно обратиться к бинарным данным.

В ходе этого урока выполним:

  • Вывод результата компоновки в табличный документ
  • Использование объекта ДанныеРасшифровки
  • Получение бинарных данных из базы
  • Программное создание рисунков в табличном документе

Отображение картинки в отчете СКД

В этом уроке выполняем финальные действия: полученные ранее бинарные данные выводим в отчет.

Для этого рисунок добавляется в табличный документ, после чего он выводится в отчет.

Универсальность алгоритма вывода картинок

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

Собственно, это мы и докажем в данном уроке.

Кроме этого, рассмотрим особенность фонового формирования отчета на СКД (построение отчета с помощью регламентных заданий).

Вывод изображения в шапке отчета

Часто в шапке или подвале отчета нужно вывести статичную картинку.

Казалось бы, простая задача, но в случае с СКД нужно знать, как ее решить:

  • Шаг 1. Программно формируем отчет
  • Шаг 2. Создаем отдельный макет с нужной шапкой или подвалом
  • Шаг 3. Перед заполнением отчета СКД выводим секцию с нужными данными.

В этом видео наглядно показано решение задачи.

Приятного просмотра! :)

Последние несколько дней мы публикуем материалы по СКД.

А что если программист/внедренец 1С не знает СКД? Может, это реально не так важно?

Ok, давайте рассмотрим, что будет ждать специалиста, который пишет отчеты «на коленке» (например, с помощью ручного вывода в табличный документ).

Не стреляйте в пианиста, он играет, как умеет.

Отчеты практически во всех типовых конфигурациях базируется на СКД.

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

СКД – стандарт отчетов в типовых конфигурациях, и 1С не пишет комментарии в расчете на тех, кто стандарты еще так и не изучил:)

Куча времени к черту…

Без СКД разработка отчетов выполняется во многом вручную.

Это, конечно, круто – выйти как рембо с отверткой в зубах и типа сделать всех:)

В результате – большие трудозатраты на разработку отчета и его отладку . И любого руководителя/ заказчика это будет как минимум настораживать: “странно, а он точно в этом разбирается??”

А если речь заходит о последующей доработке отчета, это часто становится головной болью (особенно, если это чужой отчет)…

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

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

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

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

Поэтому – звонок, трамвай, поехали… Это такой профессиональный рост для 1С-ника…

“У вас нет такого же, но с перламутровыми пуговицами? – К сожалению – нет…” (с)

А если какие-то данные нужно получить из другой системы – из другой базы 1С или вообще не из 1С?

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

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

Если Вы хотите профессионально освоить СКД и ежедневно применять в своей работе , записывайтесь на курс:

Поддержка – 2 месяца . Объем курса – 34 учебных часа .

Не откладывайте свое обучение!

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

Наборы данных

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

Различают несколько видов наборов данных:

  • Запрос;
  • Объект;
  • Объединение .

Запрос – это обычный 1с-запрос только язык запросов немного расширен. Для удобства можно использовать конструктор запроса.

Объект – внешний набор данных, например таблица значений.

Объединение – объединение нескольких наборов данных типов запрос и объект.

В данной статье мы кратко пробежимся по всем вкладкам конструктора схемы компоновки данных. Наборы данных На данной вкладке можно создать неограниченное количество наборов данных. Набор данных – это источник получения данных. Различают несколько видов наборов данных: Запрос; Объект; Объединение. Запрос – это обычный 1с-запрос только язык запросов немного расширен. Для удобства можно использовать конструктор запроса. Объект – внешний набор данных, например таблица значений. Объединение – объединение нескольких наборов данных типов запрос и объект. Связи наборов данных На данной вкладке описываются связи наборов данных. Тут можно указать какие наборы данных связывать и по каким полям и с какими параметрами. Самое главное, что нужно запомнить: в схеме компоновки данных, при связывании наборов всегда используется Левое соединение! Вычисляемые поля На данной вкладке можно создавать дополнительные поля, не описанные на вкладке Наборы данных. В качестве выражений для расчета можно использовать язык выражений компоновки данных, поля из основных наборов данных, а также функции не глобальных общих модулей. Ресурсы Ресурсы – это итоговые данные по группировкам. На вкладке можно назначить ресурсом поля из наборов данных, а также из вычисляемых полей. Также для ресурсов указывается выражение, по которому они рассчитываются, и возможно указание группировки по которой будет рассчитываться выражение для ресурсов. На основании значений ресурсов также рассчитываются общие итоги отчета. Параметры Параметры данных, как правило, используются в наборе данных запрос. Все параметры, описанные в запросе, появляются на вкладке Параметры. На данной вкладке можно указать заголовок, доступные типы, доступные значение и некоторые другие вещи. Подробнее о параметрах чуть позже. Макеты По умолчанию макет сформированного отчета генерируется автоматически системой компоновки данных. Но в системе также имеется возможность разработчику самому оформлять отдельные области отчета(полей, группировок, ресурсов…). Все макеты отдельных областей, созданные на данной вкладке, привязаны только к текущему отчету. Вложенные схемы Вложенные схемы используются в случаях когда данные одного отчета необходимо использовать в другом. Другими словами мы “встраиваем” одну схему компоновки данных в другую, указывая связь по общему полю. Пример использования вложенных схем можно посмотреть в этой статье. Настройки На данной вкладке разработчик создает стандартные настройки формирования отчета. В верхней части окна задается иерархическая структура. Структура формирования отчета может состоять из следующих элементов: Группировка; Таблица; Диаграмма; Вложенная схема В нижнем части окна задаются настройки для всего отчета и для каждого элемента структуры отчета. Кратко в вкладках настроек: Выбранные поля – список полей выводимых в отчет; Отбор – всевозможные отборы записей отчета; Порядок – сортировка записей в отчете; Параметры данных – значение параметров отчета; Пользовательские поля – дополнительные поля отчета, создаваемые пользователем; Условное оформление – задается условное оформление записей отчета; Другие настройки – всевозможные дополнительные настройки такие как: заголовок отчета, макет оформления, расположение полей и тд....

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

Я знаю, что макет в СКД можно подменить (изменить) с применением кодирования непосредственно в форме отчета, но для меня было принципиально важно произвести изменения в СКД не прибегая к кодированию.

Текст запроса в отчете был такой:

ВЫБРАТЬ Номенклатура. Наименование, Номенклатура. Код, Номенклатура. БазоваяЕдиницаИзмерения, Номенклатура. ЕдиницаИзмеренияМест, Номенклатура. ЕдиницаХраненияОстатков, Номенклатура. ЕдиницаДляОтчетов, Номенклатура. Комментарий, Номенклатура. Артикул, Номенклатура. Ссылка КАК Номенклатура ИЗ Справочник. Номенклатура КАК Номенклатура ГДЕ НЕ Номенклатура. ЭтоГруппа

Момент 1. Произвольные заголовки отчета и колонок.


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

на выходе получаем:

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

Указал имя для детальных записей:


Нарисовал нужный мне макет в СКД

Там же, на закладке "Макет", обозначил границы макета заголовка группировки:

и указал имя группировки:

затем обозначил область макета, которое нужно вывести в заголовок отчета:

Если сформировать отчет, то:

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

и на выходе полуется нужный вид отчета:

Момент 2. Произвольная расшифровка полей отчета.

Задача следующая - при двойном клике по полю "Артикул" должна быть возможность открыть карточку номенклатуры, породившую эту строчку.

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

Например если кликнуть по полю "Артикул", то получим следующее:

Решение такое:

Добавляем макет поля:

указываем поле (Артикул), при клике на которое должна открываться карточка номенклатуры:

в макете, любое пустое поле заполняем текстом "Артикул", в свойствах указываем - Заполнение = "Параметр", ПараметрРасшифровки = "РасшифровкаНоменклатуры":

и указываем это поле область макет поля:

После этого должны появиться параметры макета:

В этих парметрах указываем выражение для "РасшифровкаНоменклатуры", в моем случае это ссылка на номенклатуру:


Получаем возможность открыть карточку товара при клике по полю "Артикул":

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

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