Скрыть колонку табличного документа 1с программно

Условное оформление: скрытие строк в таблице

Скриншот «свойства формы»
В поле «Оформление» Видимость = Ложь

Скриншот «свойства формы»
В поле «Оформление» Видимость = Ложь

ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ДобавитьОтборУсловногоОформления(ЭлементОформления,»ПомещенияПлатаКУ.ФиктивноеПомещение»,ВидСравненияКомпоновкиДанных.Равно,Истина);
ДобавитьПолеУсловногоОформления(ЭлементОформления,»ПомещенияПлатаКУКолонка1″);
ДобавитьПолеУсловногоОформления(ЭлементОформления,»ПомещенияПлатаКУКолонка2″);
ДобавитьПолеУсловногоОформления(ЭлементОформления,»ПомещенияПлатаКУКолонка3″);
ДобавитьПолеУсловногоОформления(ЭлементОформления,»ПомещенияПлатаКУКолонка4″);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра(«Видимость», Ложь);

&НаСервере
Процедура ДобавитьОтборУсловногоОформления(ЭлементОформления, ЛевоеЗначение, ВидСравнения, ПравоеЗначение )

ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ЛевоеЗначение);
ЭлементОтбора.ВидСравнения = ВидСравнения;
ЭлементОтбора.ПравоеЗначение = ПравоеЗначение;
ЭлементОтбора.Использование = Истина;

&НаСервере
Процедура ДобавитьПолеУсловногоОформления(ЭлементОформления,Поле)

ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(Поле);
ПолеОформления.Использование = Истина;

Источник

СКД: скрываем нужные группы (блоки) по требованию пользователя

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

Отчёт выполнен на базе схемы компоновки данных (СКД).

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

Описание самого «увлекательного» процесса настройки СКД представлено ниже.

В параметры СКД вынесены необходимые параметры:

В данном случае, — Аналитика, ОбъектЭксплуатации и Управленческий.

В настройках СКД отчёт состоит из двух группировок: дополнительной информации и детальных записей.
В дополнительной информации выводится заголовок отчёта, а в детальных записях — его данные.
Обратим внимание, что в настройках отчёта необходимо вывести параметры: Аналитика, Объект эксплуатации и Управленческие аналитики.

Это показана на рисунке:

Зададим первоначальные значения этих параметров. В нашем случае, значение принимает следующий вид: «Ложь».

В детальных записях (вкладка Выбранные поля) выведены колонки отчёта и созданы группы, которые, в зависимости от выбранных пользователем параметров, будут выводиться в отчёт:

Не забываем, что эти параметры необходимо включить в пользовательские настройки:

На этом «увлекательный» процесс закончен. Перейдём к написанию кода для реализации скрытия нужных блоков (полный текст процедур можно найти после описания).

Достаточно много времени заняла отладка кода, чтобы попасть в нужный блок и установить свойство «Использование».
Все манипуляции будут проходить в модуле объекта отчёта, в процедуре «ПриКомпоновкеРезультата».

Итак, что мы делаем:

1) получаем пользовательские настройки элементов и структуры отчёта

2) создаём параметры видимости колонок

3) для удобства отладки вынесли названия выводимых заголовков (блоков)

4) перебираем параметры отчёта, получаем текущие значения видимости и обращаемся именно к нужному блоку отчёта с детальными записями. Если выбираемый блок относится к группе с заголовком «Расшифровки», а именно в этом блоке содержатся скрываемые колонки, то применяем процедуру «ОтображениеБлокаКолонок» для манипуляций с видимостью

5) манипуляции с видимостью заключаются в том, что в зависимости от установленного значения параметра видимости, свойство «Использование» принимает необходимое значение.

Источник

Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download

Полезные процедуры по работе с СКД и табличными документами (часть 1)

Данная публикация имеет две основные цели
— Зафиксировать полученный опыт, чтобы через некоторое время можно было его использовать повторно
— Получить обратную связь от сообщества относительно предлагаемых приемов. Альтернативные решения крайне приветствуются

1. Объединение, скрытие, замена

Пусть требуется получить отчет следующего вида


Этот отчет имеет несколько особенностей:
— Объединенные ячейки в шапке
— Количество и состав колонок в группе “Бонусы” — динамические. Выводятся только, если заполнено хотя бы для одного сотрудника в отчете. Если, например, никто из попавших в отчет сотрудников не получил надбавку за сверхурочные, то этой колонки в отчете быть не должно. Проектов в группе “за проекты” может быть неограниченное количество.
— Дополнительные требования к порядку полей: колонка “Оклад” должна выводиться первой, “Всего по сотруднику” — последней

В консоли можно получить следующий результат


Далее приведены универсальные процедуры, с помощью которых можно:
1. Объединить ячейки “Бонусы” и “За проекты” в шапке отчета с помощью процедуры ОбъединтьЯчейкиВТабличномДокументе()
2. Скрыть заголовок ресурса “Сумма” с помощью процедуры СкрытьСтрокиВТабличномДокументе()

2. Процедуры по выводу табличного документа

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

3. Вывод рядом двух независимых таблиц

Данная идея была взята с форума (отличный пример выложил ditp). Моя заслуга лишь в том, чтобы обернуть ее в функцию и незначительно оптимизировать.

4. Установка собственного формата для табличного документа

Данная процедура является оберткой над стандартной процедурой СоздатьФорматСтрок() (постоянно приходится вспоминать, как она называется). Позволяет выводить одну таблицу под другой с независимой шириной колонок. В сводном примере данная процедура применяется для корректного форматирования конечного документа

Процедуры тестировались на платформе 8.3 в режиме совместимости с 8.2 и без режима совмместимости, а также на платформе 8.1.

К статье прилагаются внешние отчеты со сводным примером (запускается в любой конфигурации 8.2/8.3 на обычных или управляемых формах, также отчет на 8.1)

Скачать файлы

Специальные предложения

Почему вместо этого:

нельзя использовать Группы полей? А вместо скрытия сумм использовать макеты?

И еще наблюдение: на больших объемах данных это:

Работает значительно медленнее, чем это:

(5) kser87, благодарю за критику.
Со второй частью комментария соглашусь. Редко попадаются отчеты, в которых скорость вывода через конструкцию Вывести() не устраивает заказчика. Но когда попадется, обязательно проверю предложенный вами способ.

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

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

Предлагаю Вам три типовые задачки на СКД, которые решаются средствами, описанными в данной публикации.
Прикладываю скрин. Текущий вид отчета слева. Требуемый вид отчета — справа.
Прикладываю прототип отчета с результатом как на скрине слева.

Предполагается, что Склад, Товар и ВидТовара — это справочники. В них может быть любое количество элементов, количество и состав которых нам заранее неизвестны

Сколько из трех случаев Вы сможете реализовать стандартными средствами СКД?

(11) смешные примеры) случаи 1 и 2. Вы про горизонтальные группировки не знаете что-ли?

Простой пример (вместо «Выбора» могут быть элементы справочника. Для наглядности так сделал)

Выбор когда Условие 1 тогда
«Мебель»
Когда Условие2 Тогда
«Продукты»
.
n вариантов

Конец как ГоризонтальнаяГруппировка

Потом это поле выбираете в качестве горизонтальной группировки в таблице. Еще и плюсик заработаете от того, что оно сворачиваемое и с итогами (возможно).

Случай 3 видимо не реализуем настройками СКД. Однако, следующее требование пользователя будет таким: выведите итог по виду товара. И куда вы его впихнете, позвольте узнать? От такого расположения группировок потому и отказались. Наиболее близкий вариант это поставить в параметре «Расположение полей группировок» значение «Отдельно и только в итогах».

Вообще когда вы корячите макеты СКД помните, что вы с вероятностью 99% что-нибудь сломаете. То есть не будут работать расшифровки, группировки и т.д. и т.п.

В вашем случае 1 недостаток сразу видно. В примере 1 можно вынести подразделение и сотрудника в отдельную группировку. Таблицу сделайте подчиненной сотруднику и в качестве группировки сделайте например Вид расчета. В таком случае, при количестве сотрудников от 1000 ваш отчет просто «умрет» на отрисовке макета. Будет формироваться минут 30, а вэб-морда тупо вылетит.

Да и вообще все примеры хорошо сработают лишь на небольших объемах данных. Нужно использовать механизмы СКД. Для замены текста точно УО нужно.

(12) kser87, из описания неточно понятно, что именно вы имеете ввиду. К посту 11 приложен внешний отчет. Попробуйте реализовать вашу идею в этом отчете и выложить. Чтобы можно было увидеть, что вы смогли получить требуемый результат без костылей. Можно переставлять так, как считаете правильным. Главное получить ожидаемый результат в виде готового табличного документа.

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

Вероятность вы взяли из головы. Расшифровки в шапке — дело редкое.

Вы заблуждаетесь. Если сделать таблицу, подчиненной к группировке, то получится несколько таблиц — по одной на каждую группировку.
Хочу посмотреть на примере, который вы выложите. Пока я увидел ваше предположение, которое не соответствует поведению СКД

Снова ваше предположение. Вы не можете знать при каком количестве сотрудников она вылетит, т.к. вы не провели эксперимент. Почему вы решили, что 30 минут а не 30 часов? Какое значение имеет количество сотрудников [строк отчета], если обработка производится только в шапке отчета? Почему нельзя формировать табличный документ на сервере?

По поводу вывода в отчет большого количества данных — я спорить не буду. Вопрос в другом: как часто необходимо выводить в отчет большое количество данных? Как часто в этом случае нужно делать сложные группировки? Действительно ли нельзя оптимизировать мою схему при работе с большим количеством данных?
В моей практике таких отчетов наберется максимум 5%. И какая-то малая доля из них будет со сложными группировками. Поэтому ваш аргумент по поводу больших данных не отменяет применимости методов, описанных в данной статье.

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

Источник

Читайте также:  Что было дальше колонка за кадром
Оцените статью
Наименование Файл Версия Размер