1с скд не выводить параметры в отчет
Вкратце, если тяжко продираться через мой стиль изложения: сделали СКД программно, получили в отборе картинку, как на рисунке. Заметка - о том, как такое убрать, и о сопутствующих наблюдениях.
Параметры данных СКД - сущность, равно относимая к "основе" СКД и к её настройкам. Сущность, претерпевающая серьёзные преобразования при компоновке рабочих коллекций СКД. Само понятие "Настройки СКД" неоднозначно - если рассуждать, исходя из интерфейса, то речь может идти о содержимом закладки "Настройки" конструктора СКД, а если исходить из состава свойств объекта "НастройкиКомпоновкиДанных", то также фигурируют и параметры данных. Разумеется, потому, что параметры могут упоминаться во многих конструкциях настроек. Но, параметры также могут применяться помимо настроек - в самых разных выражениях и в самых разных местах СКД. Коллекция параметров данных стоит особняком, она вроде бы и связана с сущностью настроек, и при этом требует независимого объявления/указания, обработки, наладки. Параметры принципиально отличаются от настроек уже хотя бы тем, что их механика (появившаяся ещё во времена Построителя запроса и Построителя отчёта) допускает указание разметкой в тексте исходного запроса, а значит, учитывается первичным компилятором набора схемы, читающим этот запрос.
Про параметры, и "жёсткие", и "мягкие", сказано предостаточно, например,
Всё более чем тривиально.
Обращаем внимание на пресловутое Автозаполнение полей. На, допустим, заполнение для виртуальных таблиц и т.д. - оно влияет, и ровно так же влияет на Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы, т.е. поведение при заполнении всех коллекций - ожидаемое; но вот на Параметры оно не оказывает никакого действия. Этот флаг вообще более важен для последующего поведения СКД, чем для его инициализации - недаром сама по себе сериализованная СКД с этим флагом и без него отличается лишь наличием тега autoFillFields.
Будем исходить из выключенного автозаполнения.
Обратимся к коллекциям СКД и увидим, что:
Аналогично, ничего нет в сериализованной СКД и её настройках по умолчанию.
Но - в табличном поле отборов 1С предложит пользователю доступное "поле отбора" из папки "Параметры", с именем "Усл ИНН". И это надо убрать.
Пытаться повлиять на это через настройки компоновщика бесполезно, но следует помнить, что сами-то параметры на настройки влияют и, хоть несколько неочевидно, но в них отражаются.
Смотрим отладчиком по ранее сделанной схеме:
Вообще замечу, что сериализация и обратная десериализация в плане манипуляции компоновщиком настроек, или самими его настройками, или вообще любой сущностью контура СКД, для решения данной проблемы ничего не даёт.
То есть, мы располагаем подробным описанием параметров, т.е. именами, типами, ограничением функц.доступности, хотя не совсем там, где ожидали (в СКД.Параметры). Если попытаться принудительно открыть в толстом клиенте диалог конструктора СКД, то параметры инициализируются при его открытии и на закладке "Параметры", конечно, появятся, а потом появятся и в этой коллекции, но это же не вариант. То есть, СКД неявно "подразумевает" параметры данных, и лишь при декларативном обращении их заносит "в явном виде", а если таковое не случилось, то лишь при компоновке макета в процессе исполнения. И лишь в компоновщике настроек эти неявные сведения находят такое ненужное нам явное отражение.
Вывод прост: чтобы убрать что-то ненужное, надо явным образом добавить это ненужное.
И нет, конфликта добавления не происходит:
Запуская Предприятие, мы видим, что из пользовательских отборов эти параметры, да и вся ветка "Параметры данных", исчезли, но на их работе собственно как параметров, естественно, это не сказалось.
Конечно, такие параметры надо будет устанавливать программно и принудительно.
Специфически ведут себя в отборах параметры, для которых разрешён список; но, поскольку мне известны 2-3 разных поведения, видимо, зависящие от релизов, делать однозначные выводы не рискну, просто укажу, что такие требуют ещё большего внимания.
Собственно, всё. Если я изобрёл велосипед и есть более простой способ - тухлые помидоры приветствуются.
Здравствуйте.
Кто-нибудь может предложить решение как в СКД разрешить пользователю задавать параметр в пользовательских настройках, но не выводить его в табличный документ?
Задача следующая. Нужно обязательно в печатной форме указать дату, на которую сформирован отчет. Есть параметр "НаДату", который пользователь может не установить, тогда этот параметр не выведется в табличный документ, а отчет сформируется на текущую дату - однако видно это не будет.
Создать форму отчета и после загрузки пользовательских настроек проверять параметр на заполненность. Если параметр не заполнен - подставлять текущую дату.
(2) Это не относится к другим параметрам - другие надо выводить. А эта настройка выключит вывод всех параметров.
(3) так можно было бы сделать, но этот параметр является параметром виртуальной таблицы остатков. Получается, что я ограничиваю выбор остатков текущей датой, а там могут быть остатки за будущие периоды. А так, если не указать параметр, то запрос выберет самые последние.
А есть событие СКД (или Формы отчета), где я бы смог очистить параметр уже после формирования табличного документа?
В общем, решил задачу программным выводом отчета. Долго получилось, но раз стандартно это не предусмотрено, то и это имеет право на жизнь, потому как работает.
Кому интересно, суть в следующем.
Перехватываем компоновку в событии ПриКомпоновкеРезультата в модуле отчета. Далее стандартную обработку отменяем, формируем и выводим полностью программным способом. При этом предварительно по настройкам определяем что параметр не установлен, устанавливаем его, выводим отчет с этим параметром, а затем возвращаем его в неустановленный.
"а затем возвращаем его в неустановленный." - занафига?
Я предлагал то же самое, только проще. Нафиг не надо писывать процедуру вывода. Просто меняещь переданные ползователем параметры и все.
Ну, как говорится, дурная голова вечно найдет приключения на задницу.
(11) Нужно было сделать два параметра. Один доступный пользователю и обязательный, но не используемый в запросе, а другой не доступный пользователю не обязательный и используемый в запросе. В ПриКомпоновкеРезультата устанавливать значение и использование второго параметра на основе первого (если он был задан). В отчет первый всегда выводиться, а скрытый никогда .
Система компоновки данных (СКД) это самый простой и быстрый способ создать отчет в 1С. С её помощью можно сделать неплохой отчет буквально за несколько минут. Если честно то для этого не потребуется особых знаний программирования, так как там все делается с помощью интерфейса. Но в нем самостоятельно разобраться будет ну очень не просто. Поэтому я решил написать несколько небольших статей посвященных СКД, в которых буду рассказывать про создание и настройку отчетов. Сегодня расскажу о том как можно отключить отображение секции параметров и отборов в СКД.
Как убрать параметры и отбор в отчете
И так для начала рассмотрим что такое параметры и отборы в СКД. Для примера возьмем вот такой простенький отчет, у него есть параметры это «Дата начала» и «Дата окончания» а так же отбор по контрагенту. Если установить параметры и отбор то все это про дублируется и в сформированном отчете. Чисто внешне это выглядит не очень, зачем отображать одну и туже информацию дважды, логичней формировать отчет без параметров и отборов.
Вариант с параметрами может пригодиться если Вы этот отчет будет распечатывать.
Отключить отображения параметров и отбора достаточно просто, для этого необходимо открыть «Основную схему компоновки данных», перейти в раздел «Настройки» после чего открыть вкладку «Другие настройки», найти там два пункта «Выводить параметры» и «Выводить отбор», для отключения в значениях вместо «Авто» выбираем «Не выводить».
Сохраняем и проверяем что получилось, согласитесь теперь отчет выглядит намного лучше.
Вообще рекомендую поближе ознакомиться с вкладкой «Другие настройки», так как там Вы найдете очень много полезного. В первую очередь она отвечает за внешний вид отчета, например, можно изменить макет оформления, выбрать например «Зеленый».
Вообще внешнему виду отчетов стоить уделять намного больше внимания, так как грамотно оформленный отчет будет восприниматься намного легче.
Отключить отображение параметром можно и с помощью кода, но зачем его писать если все можно сделать намного проще.
Самый простой и быстрый способ создать отчет в 1С это воспользоваться СКД (Системой компоновки данных). Это очень популярный а самое главное очень удобный инструмент, по сути для того чтобы создать отчет с помощью СКД даже не нужно знать 1С программирование. Так как у системы компоновки данных есть графический интерфейс. В сегодняшней статьи поговорим о добавление периодов. Т.е добавим возможность отбора за определенный промежуток времени. Данная возможность должны быть в любом нормальном отчете.
Я хоть и не являюсь гуру программистом 1С, но все же имею кое какой опыт и стараюсь им поделиться в своих небольших статьях, с теми кто в этом нуждается, поэтому рекомендую прочитать следующие статьи.
Добавление периода в СКД
И так добавить отбор по периоду можно в самом запросе, если открыть вкладку «Условия». Нажимаем на плюсик, выбираем дату документа, указываем что условие будет «Между» и пишем названия полей «ДатаНачала» и «ДатаОкончания».
Тоже самое можно сделать просто дописав в запрос вот такую строчку.
ГДЕ
АктОбОказанииУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
АктОбОказанииУслуг.Дата — ваш документ
Для того чтобы период стал доступным для пользователя необходимо во вкладке «Параметры» снять галочки в колонке «Ограничение доступности».
Остается перейти в «Настройки» выбрать «Отчет» и во вкладке «Параметры» настроить добавленный период. Например, если установить галочку то по умолчанию будет производиться отбор по указанной дате. Можно установить по умолчанию необходимое значения «Начало этого дня, недели, месяца и т.д.» или же точную дату.
Теперь если запустить отчет в пользовательском режиме и открыть настройки, можно установить отбор по дате. Для удобства данные параметры можно вынести на форму, для этого жмем на пункт «Показать» и выбираем «Показать в шапке».
Но лучше сделать это в самих настройках СКД.
В этом случае параметры будут отображаться у всех пользователей которые будут открывать отчет.
Вот так добавляется период в СКД. Как сами видите все достаточно просто и понятно, самое главное не торопиться и внимательно читать названия пунктов.
Редко какой отчет в 1С не использует отборы, разве что печатные формы и какие-то специальные отчеты. В большинстве отчетов в 1С требуется возможность выборочного анализа. Поэтому в этой статье мы поговорим про настройку отборов в отчетах, построенных с помощью 1С СКД.
После того как вы добавили наборы, определили ресурсы, задали структуру отчета с помощью группировок , можно приступать к настройке фильтров. В СКД это делается на закладке «Отбор», которая доступна или для всего отчета или для определенной группировки.
Новый элемент в список отбора можно добавить несколькими способами – двойной клик по доступному полю, перетаскивание, клавиша в меню:
При этом только через клавишу в меню можно добавить группу в отбор, которая объединяет элементы внутри этой группы по заданному условию (И, ИЛИ).
По умолчанию если элементы отбора не включены ни в какую группу и объединяются с помощью оператора «И».
Вид сравнения в элементе отбора зависит от типа поля (левого значения):
Операции доступные для числа:
Операции доступные для строки:
Для строки добавлены операции – «содержит», «начинается с», «соответствует шаблону» и те же операции с оператором «Не» (Не содержит и т.д.).
Операции доступные для ссылки:
Далее разберем типовые ситуации при использовании отбора
Самый простой вариант использование отбора – добавить фиксированный отбор, который будет действовать всегда (если конечно пользователь не изменит его в варианте отчета):
Обычно такие отборы имеет смысл переносить в текст запроса. Особенно в том случае, если пользователь не должен его менять вообще ни при каком условии.
Иногда в отчете на 1С СКД возникает необходимость исключить в отчете значения некоторых группировок (колонок или строк). Причем сделать это в запросе не представляется возможным, потому что исключать такие строки возможно только после компоновки.
В этом случае используется возможность СКД накладывать отборы на заданную группировку. Рассмотрим, например, такой отчет:
Допустим нам нужно исключить из отчета все строки, в которых итоговое количество по номенклатуре меньше 15. В запросе мы такое условие применить не можем. Установим для этого отбора для группировки «Номенклатура»:
Получим такой отчет:
Отборы на группировках часто используются в отчетах вида «Ведомость по остаткам»:
При использовании группировки по периоду (регистратору) в таких отчетах появляются строки, отвечающие за начальный остаток при использовании даты начала периода отличной от самой ранней. Чтобы убрать такие строки, можно использовать отбор на группировке по регистратору:
Чтобы убрать отбор, выделенный на рисунке на закладке «Другие настройки» для этой же группировки отключим вывод отбора:
Обычно мы редко используем фиксированные отборы. Чаще нам нужны отборы, которые может изменять пользователь. Можно, чтобы пользователь изменял отборы через функционал 1С СКД «Изменить вариант», но это не совсем верный путь – вариант отчета это скорее постоянный «скелет», который настраивается один раз и потом используется многократно. Отборы же это что-то часто изменяемое, поэтому правильнее редактировать их через механизм пользовательских настроек.
Итак, вернемся к нашему отчету. Допустим нам необходимо добавить в отчет отбор по группе номенклатуры (или по элементу) и чтобы этот отбор был доступен для изменения пользователем.
Добавим для этого отбор на уровне отчета. Вид сравнения по умолчанию сделаем «В группе», отключим по умолчанию использование отбора и в диалоге редактирования пользовательских настроек включим наш отбор в пользовательские настройки.
Перейдем теперь в режим предприятия.
Наш отбор доступен для редактирования на форме. За доступность прямо в форме отчета отвечает «Режим редактирования». Значение «Быстрый доступ» означает, что отбор доступен прямо на форме отчета. Если значение равно «Обычный», отбор доступен через кнопку «Настройки». Как видно на рисунке пользователь может выбирать вариант сравнения, управлять действием (включен / отключен) отбора.
Если вам необходимо установить фиксированный отбор (вид сравнения и правое значение константы), но пользователь должен управлять включением / отключением отбора, тогда вам необходимо заполнить представление отбора в пользовательской настройке:
В этом случае в настройки добавляется только флаг использования отбора, которым может управлять пользователь:
Если вам в отборе нужно изменить представления поля, по которому делается отбор, то для этого есть еще одно представление:
Получается вот так:
Мы можем вывести все отборы для редактирования пользователем. Для этого на уровне отчета вызовем диалог редактирования пользовательских настроек:
То же самое можно сделать на уровне любой группировки, если нужно, чтобы была возможность редактирования отборов для заданной группировки. В режиме предприятия это выглядит следующим образом:
Как известно, в 1С СКД используется не только в отчетах, но и в формах, содержащих динамические списки. У динамического списка есть несколько свойств, которые относятся к СКД. Среди этих свойств имеется свойство «Отбор» с типом «ОтборКомпоновкиДанных». Чтобы установить отбор в динамическом списке есть два способа. Первый способ – передать отборы через параметр формы с одноименным названием – «Отбор». Этот параметр является структурой, в которой ключ ссылается на поле, для которого устанавливается отбор. Значение же содержит данные, с которыми производится сравнение. Можно также передать в качестве правого значения – массив, фиксированный массив, список значений. В этом случае вид сравнения равняется «ВСписке», для одиночного элемента вид сравнения устанавливается как «Равно». Этот способ ограничен в возможностях – с его помощью нельзя накладывать сложные условия с операторами «И» и «ИЛИ», нельзя использовать виды сравнения кроме двух указанных.
Отбор, установленный таким образом, передается в фиксированные настройки компоновщика настроек, связанного с динамическим списком. Он не виден пользователю и недоступен для изменения.
Второй способ – непосредственное редактирование отбора в динамическом списке или в компоновщике. Обычно в типовых конфигурация для этого есть ряд методов и функций для установки таких отборов.
Например, вызов основного метода для установки отбора выглядит так:
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, «Ссылка», Параметры.ДобавитьДля, ВидСравненияКомпоновкиДанных.НеРавно);
Данная функция производит поиск существующего элемента отбора, изменяет его если нашла, а если не нашла, то добавляет с помощью такой процедуры:
В форме содержащей динамический список также как в отчете на СКД, возможно настроить пользовательский отбор. Как это можно сделать показано на рисунке:
Также у элемента формы, с которым связан список нужно установить группу пользовательских настроек, в которой будут отображаться настройки для пользователя:
Читайте также: