Приветствую Вас ГостьСуббота, 18.05.2024, 23:39

Каталог статей


Отражение дополнительных характеристик в отчете СКД

Если в базе используется механизм дополнительных характеристик, через план видов характеристик, то можно использовать стандартный механизм "ХАРАКТЕРИСТИКИ" в СКД.

Например в базе есть справочник "Контрагенты" и для него заведены дополнительные характеристики:

ПланВидовХарактеристик - ВидыХарактеристик

Справочник значений характеристик - ЗначенияХарактеристик

Регистр сведений для хранения характеристик - ДополнительныеХарактеристики.

Настройка вывода значений характеристик:

В СКД открываем Конструктор запроса. Перейдем на закладку Характеристики. Нажмем кнопку Добавить и приступим к описанию полей характеристик. В поле "Тип" введем СправочникСсылка.Контрагенты – это тип данных, для которого описываются характеристики. Затем опишем источник списка характеристик. В нашем случае им является план видов характеристик ВидыХарактеристик. Поэтому в поле Источник видов выберем Таблица, а в поле Виды характеристик укажем ПланВидовХарактеристик.ВидыХарактеристик. Далее следует описать назначение полей источника, «поставляющего» виды характеристик. В поле Поле ключа выберем Ссылка, в поле Поле имени – Наименование, а в поле Поле типа значения – ТипЗначения. Если тип значения не указан, то типом будет считаться тип Булево.

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

Теперь опишем источник значений характеристик. В нашем случае им является регистр сведений ДополнительныеХарактеристики. Поэтому в поле Источник значений выберем – Таблица, а в поле Значения характеристик укажем РегистрСведений.ДополнительныеХарактеристики. Далее следует описать назначение полей источника, «поставляющего» значения характеристик. В поле Поле объекта выберем измерение регистра Объект, в поле Поле вида – измерение регистра ВидХарактеристики, а в поле Поле значения – ресурс регистра ЗначениеХарактеристики.

Если не указывать "Поле значения", то будет выводится Истина, если значение характеристики заполнено и Ложь, если нет. Таким образом если не заполнять "Тип значения" и "Поле значения", то получим механизм отображения категорий объекта (ценность данного метода сомнительная, но где-то может использоваться).

В приведенном примере рассмотрен самый простой и распространенный случай, когда виды характеристик хранятся в плане видов характеристик, а значения характеристик – в регистре сведений. Характеристики описываются для типа Справочник.Контрагенты, список видов характеристик получается из таблицы ПланВидовХарактеристик.ВидыХарактеристик, в качестве ключа характеристики используется поле Ссылка, в качестве имени характеристики используется поле Наименование, в качестве типа значения – поле ТипЗначения. Значения характеристик получаются из таблицы РегистрСведений.ДополнительныеХарактеристики. Объектом характеристики в данной таблице является поле Объект, видом характеристики – поле ВидХарактеристики, а значение находится в поле ЗначениеХарактеристики.

 В результате текст запроса, сформированный платформой, примет вид:

    ВЫБРАТЬ
        ПродажиОбороты.Контрагент,
        ПродажиОбороты.СтоимостьОборот
    ИЗ
        РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
    {ХАРАКТЕРИСТИКИ
        ТИП(Справочник.Контрагенты)
        ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.ВидыХарактеристик
        ПОЛЕКЛЮЧА Ссылка
        ПОЛЕИМЕНИ Наименование
        ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
        ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ДополнительныеХарактеристики
        ПОЛЕОБЪЕКТА Объект
        ПОЛЕВИДА ВидХарактеристики
        ПОЛЕЗНАЧЕНИЯ ЗначениеХарактеристики }


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

{ХАРАКТЕРИСТИКИ
    ТИП(Справочник.Оборудование)
    ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
            СвойстваОбъектов.Ссылка КАК Ссылка,
            СвойстваОбъектов.Наименование КАК Наименование,
            СвойстваОбъектов.ТипЗначения КАК ТипЗначения
        ИЗ
            ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
        ГДЕ
            СвойстваОбъектов.НазначениеСвойства.Наименование = "Назначение оборудование")
    ПОЛЕКЛЮЧА Ссылка
    ПОЛЕИМЕНИ Наименование
    ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
    ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
    ПОЛЕОБЪЕКТА Объект
    ПОЛЕВИДА Свойство
    ПОЛЕЗНАЧЕНИЯ Значение }

Могут возникнуть проблемы в связи с разными ключевыми словами в разных версиях платформ. В этом случае текст блока характеристик можно ввести вручную, например (источник примера):

{ХАРАКТЕРИСТИКИ
 ТИП(Справочник.Номенклатура)
 СПИСОК (ВЫБРАТЬ
   ВидыДопСвойств.Ссылка,
   ВидыДопСвойств.Наименование,
   ВидыДопСвойств.ТипЗначения
  ИЗ
   ПланВидовХарактеристик.ВидыДопСвойств КАК ВидыДопСвойств
  ГДЕ
   ВидыДопСвойств.ПометкаУдаления = ЛОЖЬ)
 ИДЕНТИФИКАТОР Ссылка
 ИМЯ Наименование
 ТИПЗНАЧЕНИЯ ТипЗначения
 ЗНАЧЕНИЯ РегистрСведений.ДопСвойства
 ОБЪЕКТ Номенклатура
 ХАРАКТЕРИСТИКА ВидСвойства
 ЗНАЧЕНИЕ Свойство }

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


Еще одним нюансом является то, что значение характеристики не должно быть безразмерной строкой. В этом случае при формировании отчета будет выходить ошибка. Чтобы решить данную проблему надо ЗНАЧЕНИЯХАРАКТЕРИСТИК сделать запросом, в котором ограничить длину значения. Например:

{ХАРАКТЕРИСТИКИ
    ТИП(Справочник.Контрагенты)
    ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
            ВидыКонтактнойИнформации.Ссылка КАК Ссылка,
            ВидыКонтактнойИнформации.Наименование КАК Наименование,
            "" КАК Тип
        ИЗ
            Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
        ГДЕ
            ВидыКонтактнойИнформации.Родитель = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.СправочникКонтрагенты))
    ПОЛЕКЛЮЧА Ссылка
    ПОЛЕИМЕНИ Наименование
    ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
            КонтактнаяИнформация.Объект КАК Объект,
            КонтактнаяИнформация.ВидКонтактнойИнформации КАК ВидКонтактнойИнформации,
            ПОДСТРОКА(КонтактнаяИнформация.Представление, 1, 1000) КАК ЗначениеКИ
        ИЗ
            РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация)
    ПОЛЕОБЪЕКТА Объект
    ПОЛЕВИДА ВидКонтактнойИнформации
    ПОЛЕЗНАЧЕНИЯ ЗначениеКИ }


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

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

Запрос, который сформирует СКД при формировании отчета будет выглядеть примерно так:

 ВЫБРАТЬ
        ПродажиОбороты.Контрагент,
        ПродажиОбороты.СтоимостьОборот
    ИЗ
        РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты

// для каждого выбранного доп. свойства

        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеХарактеристики КАК ДопСвойства
          ПО (ДопСвойства.Объект = ПродажиОбороты.Контрагент
            И ДопСвойства.ВидХарактеристики = &П1)

//

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

Характеристики в метаданных

Характеристики можно настроить в отдельном отчете, а можно настроить в метаданных, и они будут доступны во всех отчетах.

Если у нас настроены характеристики для справочника Контрагенты, то мы можем открыть в конфигураторе справочник Контрагенты, на вкладке Данные нажать кнопку "Характеристики".

В открывшейся форме настройка характеристик будет выглядеть следующим образом:

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

 

Категория: СКД | Добавил: leshic (25.11.2021)
Просмотров: 405 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [41]
Администрирование [35]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0