Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )

> Особенность использования механизма характеристик в СКД          
Vofka Подменю пользователя
сообщение 27.12.15, 16:44
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 12175
Из: Киев
Спасибо сказали: 3557 раз
Рейтинг: 2700.1

Что у нас есть?

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



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

Создаем отчет и настраиваем характеристики

Создадим простой отчет. В нем будет один набор данных со следующим запросом:

ТекстЗапроса = 
"ВЫБРАТЬ
|    Организации.Ссылка КАК Организация,
|    Организации.ИНН,
|    Организации.КПП
|ИЗ    Справочник.Организации КАК Организации";


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



На скриншоте ниже представлен вывод отчета с текущими настройками.



Отлично. Теперь перейдем к настройке характеристик, но перед этим напомню в общих чертах работу механизма характеристик в большинстве типовых конфигураций, в том числе и УПП. Для этого используются несколько объектов конфигурации.
  • План видов характеристик "СвойстваОбъектов".
  • Регистр сведений "ЗначенияСвойствОбъектов".

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



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

Теперь перейдем к настройке характеристик в схеме компоновки данных. Для этого запустим конструктор запроса и перейдем на вкладку "Характеристики". Здесь нужно добавить поле связи объекта информационной базы с таблицами свойств и значений свойств. Ранее мы рассматривали схему связи между объектами конфигурации для хранения доп. свойств/характеристик. В соответствии с этой информацией настройка будет следюущей:



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

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


На этом все. Функционал отчета теперь позволяет выбрать поля дополнительных характеристик в отчете (поля вывода, отборы и т.д.). Но есть одно НО. Использовать эти поля в настройках отчета мы можем только в режиме 1С:Предприятия. В конфигураторе мы не можем увидеть поля характеристик, что логично, ведь характеристики вводятся пользователем и хранятся в информационной базе.

Но если есть необходимость, мы можем добавить поля характеристик, например, в отбор перед его открытием. Рассмотрим небольшой пример.

Программная работа с характеристиками

При открытии формы отчета выполним следующим программный код:

    ТекущиеНастройки = КомпоновщикНастроек.Настройки;
    КоллекцияОтборов = ТекущиеНастройки.Отбор.Элементы;

    // Добавляем отбор по доп. реквизиту номенклатуры "Основной склад"
    НовЭл = КоллекцияОтборов.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовЭл.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    НовЭл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация.[Основной склад]");
    НовЭл.Использование = Ложь;
    
    // Добавляем отбор по доп. реквизиту номенклатуры "Страна размещения"
    НовЭл = КоллекцияОтборов.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовЭл.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    НовЭл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация.[Страна размещения]");
    НовЭл.Использование = Ложь;
    
    // Добавляем отбор по доп. реквизиту номенклатуры "Связанный контрагент"
    НовЭл = КоллекцияОтборов.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовЭл.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    НовЭл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация.[Связанный контрагент]");
    НовЭл.Использование = Ложь;


Тогда если мы посмотрим в отбор отчета в режиме 1С:Предприятие, то увидим следующиую картину:



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

Новый ПолеКомпоновкиДанных("Организация.[Связанный контрагент]")


а именно на текст "[Связанный контрагент]". Если мы напишем вот так:

Новый ПолеКомпоновкиДанных("Организация.СвязанныйКонтрагент")


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



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

Новый ПолеКомпоновкиДанных(".[]")


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

Вывод

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

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

[необходимо зарегистрироваться для просмотра ссылки]

[необходимо зарегистрироваться для просмотра ссылки]

Сообщение отредактировал Vofka - 27.12.15, 16:45


Signature
Услуги 1С программиста

Спасибо сказали: Alegzander,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 31.03.17, 2:26
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!

Курсы валют: доллар США к гривне Курсы валют: евро к гривне Курсы валют: российский рубль к гривне