Конструктор схемы компоновки данных - закладка настройки. Особенности создания отчетов (1Cv8) Как добавить нередактируемый пользователем параметр
В конструкторе запросов, когда он вызывается из формы настройки источника данных, для схемы компоновки данных. Есть закладка “характеристики”, использование которой не вполне ясно описано в документации. В этой статье я постараюсь объяснить, как и для чего используются характеристики в СКД.
В конструкторе запросов, когда он вызывается из формы настройки источника данных, для схемы компоновки данных. Есть закладка “характеристики”, использование которой не вполне ясно описано в документации. В этой статье я постараюсь объяснить, как и для чего используются характеристики в СКД. В типовых конфигурациях активно используется механизм свойств и значений свойств доступный практически для любых объектов. Примитивно, на справочниках, этот механизм реализовывался еще в конфигурациях 7.7. Сейчас этот механизм реализован с использованием плана видов характеристик и регистра сведений, но идея осталась прежней. Когда я впервые столкнулся с необходимостью использования этого механизма, в схеме СКД, я очень долго мучился, организовывал вложенные запросы, присоединял к основной выборке и ломал голову над тем, как учесть возможность появления новых видов свойств, которых нет на момент разработки отчета. Весь механизм свойств, будучи простым и логичным с точки зрения пользователя, не поддавался никакой нормальной обработке, пока я не разобрался с закладкой “Характеристики”. Таблица на закладке очень капризная, либо вы введете всю строку корректно, либо откажетесь от ввода строки совсем, оставить “на потом” не до конца заполненную строку система не даст. Итак, перейдем к конкретике. Первая колонка: Тип – здесь выбираем тип объекта, к которому привяжутся характеристики, например “СправочникСсылка.Номенклатура” Это означает, что теперь для всех объектов указанного типа можно будет получить значения свойств. Далее в следующей колонке Источник видов мы должны задать параметры источника видов свойств. Возможны варианты таблица м запрос, зачем нужен вариант запрос расскажу позже, сейчас выберем пункт таблица. В колонке Виды характеристик мы должны выбрать таблицу информационной базы, в которой хранятся нужные виды характеристик, в нашем примере это будет “ПланВидовХарактеристик.СвойстваОбъектов”. Далее, значения доступные нам для выбора в колонках Поле ключа, Поле имени и Поле типа значения, непосредственно зависят от полей выбранной нами таблицы. В Поле ключа мы выбираем Ссылка, в Поле имени – Представление (именно его пользователь увидит в качестве имени реквизита), а в Поле типа соответственно ТипЗначения. Теперь перейдем к источнику значений. Источником значений у нас будет регистр сведений “ЗначенияСвойствОбъектов”, поэтому мы выбираем в колонке Источник значений – таблица, а в колонке Значения характеристик – “РегистрСведений.ЗначенияСвойствОбъектов”. В колонках Объект, Свойство, Значение, выбираем соответствующие поля регистра Объект, Свойство, Значение. Казалось бы, на этом все. Заходим в настройки схемы, добавляем группировку по товарам, и добавляем подчиненную ей группировку, допустим по Брендам, есть у нас такое свойство. Разворачиваем список реквизитов группировки Номенклатура и … не видим там никаких свойств: Дело в том, что мы находимся в конфигураторе, откуда нет доступа к данным. Как же сделать нужную настройку? Удобнее всего для этого использовать консоль компоновки данных, ту что на диске ИТС, или ту что входит в подсистему “Инструменты разработчика”. Но можно и просто открыть настройку отчета в режиме предприятия. Итак, откроем ту же настройку, но в режиме предприятия: Как видите, у нас добавились новые “Реквизиты”, при этом...
Вопрос: СКД, Как для параметра открыть нужную форму выбора?
Добрый день! Есть отчет на СКД, в нем есть параметр Бренд - тип Справочник.Номенклатура. Как для этого параметра вызвать определенную форму выбора? Пробовал в СКД на закладке "Параметры" вставал на нужный параметр - двойной клик по колонке "Параметры редактирования" - ставлю галочку "Форма выбора" и прописываю значение Справочник.Номенклатура.Форма.ФормаВыбораНужная. При запуске отчета форма выбора все равно используется по умолчанию, а не та, которая прописана в "Форме выбора". Конфигурация УТ, обычные формы. Подскажите, пжл, где, чего не так?
Ответ:
Ключевая фраза Обычные формы, переходи на управляемые
Вопрос: Выбрать значение на форме выборе
Ответ:
Вопрос: Кнопка "Выбрать" на форме выбора или как выполнить нажатие кнопки "Выбрать"
Добрый день!
Обычное приложение.
Какие мысли есть, чтобы выполнить нажатие на кнопку "Выбрать" на форме выбора документа/справочника?
Кликать мышкой и СОМ не предлагать делаю автоматизацию.
Хотелка: в форме выбора симитировать нажатие кнопки "Выбрать".
Ответ: Вроде решил задачу...пару прогонов теста.
Добавлено через 17 минут
Пока работает вот так:
1C | ||
|
Вопрос: Почему перестало выбиратся значение из формы выбора?
Ответ:
Вопрос: Помогите пожалуйста задать отбор в форме выбора справочника
Ответ:
Вопрос: Форма выбора с отбором для списка значений
Добрый день. Нужна Ваша помощь в решении простой задачки.
Конфа ЗУП 2
.5
.113
.1
Есть внешний отчет, у отчета есть реквизит "список баз", тип список значений.
Есть форма отчета. На форме отчете поле "ввода список баз", ТипЗначения = "СписокЗначений", а типЗначенияСписка = "СправочникССылка.ЗначениеСвойствОбъектов".
Как открыть форму выбора с отбором по владельцу некоторого свойства?
Заранее спасибо!
Ответ:
На закладке Параметры есть колонка Параметры редактирования. там можно попробовать настроить связи параметров выбора или параметр выбора
Вопрос: Программно открыть форму выбора документа 1с 8.3
Как программно открыть форму выбора документа 1с 8.3 и сохранить выбранное значение в переменную?
Гугл давал какие то костылявые решения, хотелось бы знать как правильно.
Ответ: + () Еще у ТЧ есть такой волшебный метод - загрузить.
Табличная часть (Tabular section)
Загрузить (Load)
Синтаксис:
Загрузить(<Таблица>)
Параметры:
<Таблица> (обязательный)
Тип: ТаблицаЗначений.
Таблица значений, откуда загружается табличная часть. Колонки таблиц совмещаются по именам.
Описание:
Загружает табличную часть из таблицы значений. При этом все прежние строки табличной части удаляются. При загрузке значения в колонках табличной части заполняются значениями из колонок таблицы значений с совпадающими именами.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
Пример:
Состав.Загрузить(ТаблицаСостава);
Вопрос: Передача параметров в форму выбора.
Прошу подсказки.
Из документа "Реализация товаров и услуг" вызывается форма выбора по договору (ERP). Конфа правленая, сравниваю с типовой. В ОбработкеСозданияНаСервере формы выбора смотрю в отладчике Параметры.Отбор. Никак не могу понять как список отбора формируется - явного вызова этой формы с параметрами нет, в свойстве "СвязиПараметровВыбора" только один элемент отбора, а в Параметры.Отбор уже несколько. Может кто подскажет где искать.
Особенности создания отчетов в 1С v8 в режиме толстого клиента
Как сделать выбор варианта?
- На панель отчета помещаем кнопку "ВыбратьВариант"
- На форму помещаем поле "НаДату"
Пример кода:
выбор = спВарианты.ВыбратьЭлемент(); Если выбор = Неопределено Тогда Возврат; КонецЕсли;
КомпоновщикНастроек.ЗагрузитьНастройки(выбор.Значение);
Сформировать(); КонецПроцедуры
Процедура НаДатуПриИзменении(Элемент) Сформировать(); КонецПроцедуры
Процедура Сформировать() ЭлементыФормы.Результат.Очистить(); КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", НаДату); СкомпоноватьРезультат(ЭлементыФормы.Результат); КонецПроцедуры
Процедура ПриОткрытии() НаДату = ТекущаяДата(); Сформировать(); КонецПроцедуры
Особенности создания отчетов через СКД
Поэтапное создание отчета
- Создать Отчет в узле Отчетов
- Создать Макет в отчете, тип которого - Схема компоновки данных
- В свойствах отчета установить: Основная схема компоновки данных = Созданный Макет
- В свойствах отчета установите подсистему, которой он принадлежит (отчет в Предприятии будет выведен в верхней навигационной панели)
- Создать запрос в Макете (пункт: Добавить набор данных - Запрос)
- В закладке Параметры у Макета необходимо убрать галочки у всех строк в колонке ОграничениеДоступности - т.е. все параметры будут доступны для редактирования пользователю
- В закладке Настройки у Макета необходимо в окне, где выводится узел Отчет, создать новую группировку без указания поля группировки - будет создана детальная строка
- В закладке Настройки у Макета, в окне где выводится дополнительный набор закладок, выбрать доп. закладку Параметры - пометить все параметры галочкой и на каждом параметре нажать кнопку Свойства элемента пользовательских настроек, откроется окно настройки параметра, где необходимо поставить галочку - Включать параметр в пользовательские настройки
- В закладке Настройки у Макета, в окне где выводится дополнительный набор закладок, выбрать доп. закладку ВыбранныеПоля - там необходимо добавить колонки которые будут выводиться в отчете
- Запускайте Предприятие, открывайте отчет, устанавливайте значения параметров, Сформировать (проверьте что выбран Основной вариант формирования отчета)
Как добавить нередактируемый пользователем параметр?
Например, нам нужно установить параметр запроса "Информационная база"
- В форме макета компоновки на закладке Параметры у нужного параметра снять флаги "Включать в доступные поля" и "Ограничение доступности"
- В форме макета компоновки на закладке Настройка на подзакладке (внизу) Параметры у нужного параметра снять флаг, открыть свойства (кнопка с гаечным ключом), на этой форме:
- Снять флаг "Включать в пользовательские настройки"
- Режим редактирования установить "Недоступный"
- В модуле формы отчета в обработчике события "ПриЗагрузкеВариантаНаСервере" (можно и ПриОткрытии, но НЕ ПриСозданииНаСервере, т.к. она выполняется ДО загрузки настроек отчета и настройки будут перезаписаны) программно установить параметр:
//Установка параметра Настройки = Отчет.КомпоновщикНастроек.Настройки; Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ИнформационнаяБаза", Отчет.ИнформационнаяБаза); КонецПроцедуры
Как задать варианты отчета?
- В форме макета компоновки на закладке Настройки в поле слева можно создать необходимые варианты отчета
Как задать группировки?
- В форме макета компоновки на закладке Настройки в поле справа вверху можно создать необходимые группировки
Как программно вывести отчет?
В модуле формы:
ЭтаФорма.СкомпоноватьРезультат();
КонецПроцедуры
Как тестировать отчет?
Нужно выполнить:
- Сформировать ситуацию в клиентском тесте - удобнее всего через таблицу ситуации
- получить форму отчета - форма = ПолучитьФорму("Отчет.ДвижениеПроцесов.Форма.ФормаОтчета");
- загрузить нужный вариант отчета - установить параметр расширения формы отчета "КлючВарианта" (имя настройки в макете компоновки данных)
- загрузить нужные настройки отчета - ? заполнить параметр расширения формы отчета "ПользовательскиеНастройки" (тип "ПользовательскиеНастройкиКомпоновкиДанных ") так не получилось, все сложно, см. ниже.
- открыть форму - форма.Открыть()
- выполнить формирование - форма.СкомпоноватьРезультат();
- проверить содержимое табличного документа форма.Результат - хорошо бы иметь функции сравнения с эталонной mxl
- закрыть форму - форма.Закрыть(); - а может быть, можно и не открывать, надо проверить
см. также
- описание: меню Справка/Синтакс-помощник/закладка Содержание/Интерфейсные объекты управляемого приложения/Расширения управляемой формы/Расширение управляемой формы для отчета/Параметры формы
Как загрузить нужные настройки отчета?
В документации описано, что есть такой параметр расширения формы отчета "ПользовательскиеНастройки" типа "ПользовательскиеНастройкиКомпоновкиДанных", но там очень сложная объектная структура, не удалось её использовать.
Реально работающая схема:
1. Создаём в отчете параметры
- Период типа СтандартныйПериод
- Отбор типа СписокЗначений (лучше было бы Структура, но её нет в списке типов параметров, как и произвольного типа)
2. В процедуру ПолучитьФорму передаем нужные параметры:
отбор = Новый СписокЗначений; отбор.Добавить(Тестирование.ПолучитьОбъект(стСитуация, "БП1"), "БизнесПроцесс");
стПараметры = Новый Структура("КлючВарианта,Период,Отбор", "Основной", период, отбор); // ОткрытьФормуМодально("Отчет.ДвижениеПроцессов.Форма.ФормаОтчета", стПараметры); форма = ПолучитьФорму("Отчет.ДвижениеПроцессов.Форма.ФормаОтчета", стПараметры);
3. В обработчиках событий формы устанавливаем параметры
&НаСервере Процедура УстановитьЗначениеПользовательскойНастройки(Настройки, Имя, Значение) Для Каждого элемент Из Настройки.Элементы Цикл Если ТипЗнч(элемент) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда Если Строка(элемент.Параметр) = Имя Тогда элемент.Значение = Значение; элемент.Использование = Истина; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры
&НаСервере Процедура УстановитьЗначениеПользовательскогоОтбора(Настройки, Имя, Значение) Для Каждого элемент Из Настройки.Элементы Цикл Если ТипЗнч(элемент) = Тип("ОтборКомпоновкиДанных") Тогда Для Каждого отбор Из элемент.Элементы Цикл Если Строка(отбор.ЛевоеЗначение) = Имя Тогда отбор.ПравоеЗначение = Значение; отбор.Использование = Истина; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры
&НаСервере Процедура ПриЗагрузкеВариантаНаСервере(Настройки)
НаименованиеТекущегоВарианта = ПредставлениеТекущегоВарианта;
Настройки = Отчет.КомпоновщикНастроек.Настройки; Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ИнформационнаяБаза", Отчет.ИнформационнаяБаза);
КонецПроцедуры
&НаСервере Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Настройки) Настройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки;
<> "00010101" Тогда Настройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки; УстановитьЗначениеПользовательскойНастройки(Настройки, "Период", Параметры.Период); КонецЕсли;
ссБизнесПроцесс = спПолучить(Параметры.Отбор, "БизнесПроцесс"); Если ссБизнесПроцесс <> Неопределено Тогда УстановитьЗначениеПользовательскогоОтбора(Настройки, "БизнесПроцесс", ссБизнесПроцесс); КонецЕсли;
КонецПроцедуры
Замечания:
- Есть ПараметрыДанных, то есть то что устанавливается в параметры запроса СКД
- Некоторые из них назначаются в настройке варианта в ПользовательскиеНастройки (в свойтсвах параметра есть флаг "Включить в пользовательские настройки"
- Даже если при загрузке на сервере в параметры данных загрузить нужные значения, потом открывается форма, в которую автоматически загружаются сохраненные в прошлый раз настройки. Эти настноки при формировании отчета "перебивают" настройки данных
- В обработчике ПриЗагрузкеПользовательскихНастроекНаСервере передаваемый объект Настройки является копией реальных настроек, поэтому чтобы изменить настройки, которые появятся на форме, надо заполнять объект Отчет.КомпоновщикНастроек.ПользовательскиеНастройки
Как сделать множественные (списком) параметры запроса в СКД?
В запросе нужно использовать выражение "В (&ИмяПараметра)" (см. Логические выражения в языке запросов 1Cv8)
В настройке макета схемы СКД на закладке "Параметры" для этого параметра надо поставить галочку в колонке "Доступен список значений". В этом случае при выборе параметра СКД выдает форму редактирования списка, в которой можно добавить любое значение параметров.
Как сделать отключаемые параметры запроса в СКД?
В запросе СКД надо использовать конструкции, окруженные фигурными скобками "{}" .
Если галочка в форме отчета (панель быстрой настройки) у соответствующего параметра снята, то эта конструкция убирается из запроса.
Подробнее см. Расширение языка запросов для системы компоновки данных (1Cv8)
Как сделать отчет с разворотом по колонкам?
Для этого в настройке варианта отчета (редактирование макета компоновки данных, закладка "Настройка", поле справа вверху), нужно в качестве первой группировки добавить "Таблица".
После этого в узле "Таблица" появляются ветки "Строки" и "Колонки", куда и добавляются нужные группировки.
Как настроить формат вывода полей?
В редакторе макета компоновки данных на закладке "Наборы данных" в правой верхней области есть список полей отчёта.
Есть две возможности:
- Настроить значение колонки "Выражение представления"
- здесь можно ввести выражение языка, выдающее нужную строку
- с полям ресурсов это не работает
- Настроить значение колонки "Оформление"
- в оформлении есть свойство "Формат" - это значение, аналогичное параметру функции языка "Формат", можно задать нужный вид
- преобразование типов здесь не сделать
Для полей ресурсов можно задавать выражения вычисления (закладка "Ресурсы") - например,
Сумма(Время)/3600.0
для перевода из секунд в часы.
Нужную точность можно задать через "Оформление" поля на закладке "Наборы данных".
Особенности установки параметров системы компоновки данных
Существуют и требуют различной обработки по крайней мере ТРИ вида параметров:
ПараметрыДанных
ПараметрыДанных определяются в запросе (источнике данных) СКД.
Параметры данных передаются в запрос источника данных и определяют извлекаемые данные.
В объекта КомпоновщикНастроек есть специальное свойство для работы с параметрами данных КомпоновщикНастроек.Настройки.ПараметрыДанных
Можно установить вызовом вида
Отбор
Отборы накладываются на полученные данные после извлечения из источника данных.
В объекта КомпоновщикНастроек есть специальное свойство для работы с отборами КомпоновщикНастроек.Настройки.Отбор .
Например:
Для каждого элемент Из Параметры.Отбор Цикл ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(элемент.Представление); ЭлементОтбора.ПравоеЗначение = элемент.Значение; КонецЦикла;
ПользовательскиеНастройки
Пользовательские настройки определяют данные, которые пользователь может настроить на форме.
Пользовательские настройки могут отображаются на форме в специальной таблице и могут быть вызваны по кнопке "Настройки" и из меню "Все действия".
Пользовательские настройки связаны с параметрами данных и отборами каким-то достаточно сложным образом, эту связь можно настраивать визуально, но программно с ними работать как-то очень неудобно.
Пока не нашлось ничего лучшего, как устанавливать значения существующей коллекции по индексу , что само собой может отъехать при изменении макета СКД в визуальном редакторе.
Кроме того, если какой-то параметр данных объявлен пользовательским, то программной установки параметра данных (см.выше) недостаточно, восстанавливаемое значение пользовательской настройки перебивает установку параметра данных. Поэтому для таких параметров нет смысла устанавливать параметр данных , нужно сразу устанавливать пользовательскую настройку .
Удобное место для установки нужных значений - обработчик события "ПриЗагрузкеПользовательскихНастроекНаСервере" расширения формы отчёта.
Если Параметры.Период.ДатаОкончания <> "00010101" Тогда Настройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки; Настройки.Элементы.Значение = Параметры.Период; КонецЕсли;
КонецПроцедуры
Использование источника данных в виде объекта
Для использования набора данных типа объект нужно передать внешний источник данных методу Инициализировать объекта "Процессор компоновки данных".
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, Новый Структура("Данные", ПолучитьДанныеВнешнегоИсточника()), ДанныеРасшифровки);
Простой пример приложен (для работы примера необходимо наличие справочников "Контрагенты" и "Договоры контрагентов").
Здравствуйте, уважаемый читатель! У нас очередной урок по основам системы компоновки. В вы познакомились с функциями языка выражений СКД, увидели особенности работы системы компоновки, а также разобрались с основными настройками полей компоновки. А сейчас мы рассмотрим новый материал. Поехали!
Дополнительные настройки полей СКД.
Колонка «Тип значения» позволяет указать тип данных для поля компоновки. Зачем указывать тип, например для поля «Номенклатура», если итак известно какого он типа? Это необходимо в случае, если поле компоновки составного типа. Можно выбрать определенный тип, тогда при отборе по этому полю будут выбираться значения данного типа.
Колонка «Доступные значения» позволяет указать доступные для выбора значения и ограничить выбор пользователя определёнными рамками.
Колонка «Оформление» позволяет задавать оформление полю компоновки, не используя макеты. Можно указать цвет шрифта, цвет рамки, ориентацию текста и т.д.
Колонка «Параметры редактирования» позволяет указать, как редактировать поле компоновки. Например, можно указать быстрый выбор элементов из списка в отборе. По умолчанию поле компоновки все параметры редактирования наследует от объекта метаданных.
Вычисляемые поля
На закладке «Вычисляемые поля» компоновки данных можно создавать свои вычисляемые поля.
Зачем нужны вычисляемые поля, если их можно создавать на уровне запроса? Не все поля можно описать с помощью запроса. Если нужно составить сложное поле из разных наборов данных, например типа запрос и объект, тогда без вычисляемых полей не обойтись. Добавить поле компоновки данных нельзя, если источником данных является запрос и стоит автозаполнение, а с помощью вычисляемых можно добавить сколько угодно полей.
В колонке вычисляемого поля «Выражение» нужно написать произвольное выражение, которое использует поля компоновки данных, обращаясь по их пути (колонка «Путь» на закладке «Наборы данных»). Либо можно использовать функции математического преобразования, либо обращаться к функциям общих модулей. Например, запишем в колонке «Путь к данным» название вычисляемого поля «Отклонение», а в поле «Выражение» следующее.