1с построитель отчета убрать первую колонку
Добрый день!
Есть два похожих отчета.
В 1-ом отчете 6 колонок, во 2-ом отчете 5 колонки из 1-го отчета: с 1-ой по 4-ю и 6-ая, т.е. без 5-ой.
Создаю один макет на два отчета (не СКД) из 6 колонок (рис. 1).
Можно ли теперь при выводе 2-го отчета программно удалить/скрыть 4 колонку?
Не хочется ведь создавать два макета из-за таких мелких различий.
Нашел только метод Очистить() у макета, но он очищает текст толкько, а пустое место остается при выводе (рис.2)
Например так -
ТабличныйДокумент (SpreadsheetDocument)
УдалитьОбласть (DeleteArea)
Синтаксис:
УдалитьОбласть(<Исходная область>, <Сдвиг>)
Параметры:
<Исходная область> (обязательный)
Тип: ОбластьЯчеекТабличногоДокумента. Удаляемая область.
<Сдвиг> (необязательный)
Тип: ТипСмещенияТабличногоДокумента. Определяет смещение ячеек таблицы при удалении.
Значение по умолчанию: БезСмещения
Описание:
Удаляет область из табличного документа.
Пример:
Смещать = ТипСмещенияТабличногоДокумента.ПоВертикали;
Область = ТабДок.Область("R2C2:R2C2");
ТабДок.УдалитьОбласть(Область, Смещать);
Хотя если, честно не понимаю зачем удалять - в типовых например счетах - чертова уйма колонок и ты думаешь они удаляются? Они просто выводятся тогда, когда надо.(ТабДок.Вывести())
ЗЫ Пользуй справку.
Хотя если, честно не понимаю зачем удалять - в типовых например счетах - чертова уйма колонок и ты думаешь они удаляются? Они просто выводятся тогда, когда надо.(ТабДок.Вывести())
Но при Вывести() в шапке например напечатается 5-я колонка, как же я ее НЕ выведу/скрою? Нужно удалять ее перед выводом. VirusB13; user1008893; user712426; guerro; user609070_grigorevvan2; burni4; mnitsi; Огонек; kar911; kotlovD; AllexSoft; + 11 – Ответить Насколько мне известно, то нельзя. Это для тебя это "колонка", а для машины - это горизонтальные секции. Можно сделать еще и вертикальные секции, и выводить в отчет необходимые пересечения горизонтальных и вертикальных секций. Но лучше все-таки сделать еще один макет. (4) Почему нельзя? Я удалял. Только горизонтальную область - нужно было в некоторых случаях удалять и создавать программно, но так, чтобы пользователи не смогли содрать макет (шел сразу на печать).
(5) Я не то имел виду - к примеру Счет на оплату покупателю - если есть скидка, то выводится колонка со скидками, если их нет, но ничего не выводится и документ получается как если бы этой колонки и не было. Работать надо с областями, а не с колонками. хе-хе, осталось только заменить текст "6" на "5" в последней колонке в шапке (8) Это не страшно, но все же проще через стандартный механизм.
К примеру в Счете при формировании таб документа - строчки
Если ПараметрыПечати.ЕстьСкидки Тогда
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
Т.е. надо формировать таб документ ТабДокумент = Новый ТабличныйДокумент;
Затем получать макет Макет = ПолучитьМакет("ИмяМакета");
А затем стандартная посекционная процедура ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
Затем уже ТабДокумент.Присоединить(
Пока сделал так, просто удаляю или заменяю текст в областях макета по адресу области:
Макет.Область("R12C7:R12C7").Текст = "5";
Макет.УдалитьОбласть(Макет.Область("R11C6:R11C6"), ТипСмещенияТабличногоДокумента.ПоГоризонтали);
Макет.УдалитьОбласть(Макет.Область("R12C6:R12C6"), ТипСмещенияТабличногоДокумента.ПоГоризонтали);
Макет.УдалитьОбласть(Макет.Область("R13C6:R14C6"), ТипСмещенияТабличногоДокумента.ПоГоризонтали);
Макет.УдалитьОбласть(Макет.Область("R14C7:R14C7"), ТипСмещенияТабличногоДокумента.ПоГоризонтали);
Получили один макет на 4 отчета-списка отличающиеся в незначительных деталях!
Спасибо всем откликнувшимся!
УдалитьОбласть(<Исходная область>, <Сдвиг>)
2 дня уже мучался. Скрыть колонку в Макете можно в контекстном меню (клацнуть правой кнопкой на выделенной колонке)
Если использовать группировку строк или колонок, предложенный вами метод не работает.
В момент разворачивания группы, все скрытые колонки и поля становятся видимыми.
а может проще сделать ширину колонки меньше 1 при выводе или после вывода.
я так делаю в СКД и это намного более простое решение чем ковырянее в настройках или кромсание результирующего табличного документа
Работа построителя отчета и построителя запроса с произвольным источником данных
При разработке отчетов иногда возникает необходимость вывести отчет, данные для которого не могут быть получены с помощью языка запросов. Такая ситуация может возникнуть, например, если для расчета данных используется некий сложный алгоритм, или же данные, для вывода отчет получаются не из информационной базы, а, например из внешнего файла. Построитель отчета предоставляет возможность вывода отчета из произвольного источника данных.
В качестве источника данных для вывода отчета могут быть использованы:
- ТаблицаЗначений,
- РезультатЗапроса,
- ОбластьЯчеекТабличногоДокумента,
- Табличная часть,
- РегистрНакопленияНаборЗаписей ,
- РегистрСведенийНаборЗаписей,
- РегистрБухгалтерииНаборЗаписей,
- РегистрРасчетаНаборЗаписей.
Для того чтобы построитель отчета выводил отчет для произвольного источника данных, достаточно установить описание источника данных в свойство построителя ИсточникДанных . Свойство построителя отчета ИсточникДанных может содержать значение типа ОписаниеИсточникаДанных . Объект ОписаниеИсточникаДанных содержит сам источник данных, а также содержит описание колонок источника данных. Каждое описание колонки источника данных содержит:
- Имя - содержит имя колонки в источнике данных,
- ПутьКДанным - содержит описание зависимости колонок друг от друга. Колонка, чей путь к данным получен через точку от пути к данным другого поля, считается реквизитом другой колонки. Если поле содержит через точку слово Представление, то данное поле считается представлением для колонки, от пути к данным которого получается представление. Примеры. Если колонка "Номенклатура" имеет путь к данным "Номенклатура", а колонка "Код" имеет путь к данным "Номенклатура.Код", то данная колонка будет считаться реквизитом колонки "Номенклатура". Колонка с путем к данным "Номенклатура.Представление" будет считаться представлением для колонки "Номенклатура",
- Поле - признак того, что данная колонка может быть использована в качестве поля отчета,
- Порядок - признак того, что по данной колонке возможно упорядочивание,
- Отбор - признак того, что на данную колонку возможно накладывать отбор,
- Измерение - признак того, что данная колонка может быть использовано как группировка отчета,
- Итог - строка, содержащая выражение для расчета итога. Для построителя отчета выражение данной строки соответствует выражению для вычисления итога, используемому в языке запросов,
При установке источника данных объекту ОписаниеИсточникаДанных , описания колонок создаются и заполняются автоматически.
Объект ОписаниеИсточникаДанных имеет конструктор, в качестве параметра которого может быть передан источник данных, для которого создается описание, при этом свойство ИсточникДанных будет заполнено переданным источником данных, описания колонок будут заполнены информацией о колонках из источника данных.
Пример установки источника данных построителю отчета:
ПостроительОтчета.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаЗначенийРезультат);
Дальнейшая работа с построителем отчета не отличается от работы с построителем отчета в режиме работы с запросом: построитель отчета предоставляет свою полную функциональность, за исключением вывода иерархических итогов. Кроме того, при работе с произвольным источником данных, у построителя отчета нельзя получить запрос, который будет использован для получения данных из информационной базы.
Работа построителя запроса с произвольным источником данных идентична работе с произвольным источником построителя отчета.
Пример использования построителя отчета с произвольным источником данных можно найти в универсальной обработке "Консоль анализа журнала регистрации".
(0) Ну хорошо, тогда задам вопрос. Оговоримся сразу, ту ветку я не читал.
Вопрос, собственно, в рациональности использования Построителя, т.е. в каких случаях надо его использовать, а в каких - нет?
Использовать, на мой взгляд, имеет смысл тогда, когда нужно что-то из нижеперечисленного:
1. Визуальный механизм конструктора запроса, то есть редактирование пользователем измерений по строкам/колонкам, дополнительных полей, отбора, порядка, макета оформления.
2. Вывод отчета любой сложности одной строкой.
Все остальное уже не так важно.
(6) результат запроса у построителя можно выгрузить в ТЗ, а можно ли до вывода поменять результат? т.е. изменить сумму и т.п.
(7) Нет
(8) Без дураков, только через макет, я других путей не знаю
(11) Впрочем, рисовать его не надо, нужно программно поменять существующий макет, то есть переместить ячейку с итогом
Можно ли в построителе отчета обратиться к внешним данным ?
А к ТЗ ?
(13) Сорри, попробовал, к сожалению месторасположение колонки с итогом в макете никакой роли не играет, выводится один фиг последней колонкой.
Остается только обработка таблицы, в которую выводится результат, после вывода.
(16) т.е после вывода? т.е я вывел отчет и потом что то обрабатывать?
(15) Можно, на ИТС есть пример.
ИТС за ноябрь 2005 года, раздел "1C. Методическая поддержка 1С :Предприятия 8.0", Статья "Работа построителя отчета и построителя запроса с произвольным источником данных".
(20) как можно обработать уже выведенный в полетабличногодокумента отчет?
(21) Очень просто, примерно как ЭлементыФормы.ТаблицаРезультат
В твоем случае можно использовать методы табличного документа ВставитьОбласть() и УдалитьОбласть().
Что, по-твоему, с таблицей, в которую ты выводишь что-то, после вывода в нее уже ничего нельзя сделать?
А как же по-твоему быть во всех остальных случаях, когда я не использую ПО и вывожу что-то несколькими командами? :)))
(22) понял..в понедельник попробую.. как раз ИТС почитаю по (19), даже легче будет забирать данные из ТЗ, см.(7) :))
(+26) Тогда уж делай без всякой ТЗ, просто выводи результат сам, вручную, ТЗ-то здесь зачем, я не понял, она не поможет тебе итоги вывести первой колонкой :o)
(27) мне иерархия не нужна.
вопрос - влияет ли Индекс колонки для построителя отчета?
+28 в случае если источник данных - ТЗ. а то у меня почему то метод вставить (ТЗ) неправильно иногда срабатывает
(28) А, так это к тому, чтобы изменить данные до вывода. А я думал, что речь про положение колонки итогов.
(29) Не понял, о чем речь?
+32 проехали :) конечно влияет, надо спать ложится..а то нагулялись сегодня, устали
(31) Это ты у меня спрашиваешь? Я-то откуда знаю, почему у ТЕБЯ код с ошибками?! :o)
(36) Если в запросе ты это сделашь, то можно. Используй ОБЪЕДИНИТЬ
(37) А, сорри тогда, проглядел :o)
(41) Для того, чтобы понять это, советую как минимум прочитать все, что есть по теме, на ИТС.
Методика в общем следующая:
Очень просто, у табличного документа есть соответствующие свойства: ФиксацияСверху, ФиксацияСнизу, ФиксацияСлева, ФиксацияСправа
Это да, но мне нужно получить высоту фиксации.
Мне нужно её получить исходя из высоты Заголовок + ШапкаТаблицы вот.
Ну вот и получили эту высоту из соответсвующих областей ПО
Делая запрос к справочнику контрагенты.
И левое внешнее соединение в к регистру заказы покупателей.
Мне нужно вывести только тех контрагентов, которые не сделали ни одного заказа за указанный период, что мне нужно написать в условии для построителя отчета ?
Вопрос - почему этот . не варит мне кофе? или он тупой?
Есть такой отчет в УПП - "ВаловаяПрибыль". Он отлично работает, за исключение группировок.
Пример:
Есть три колонки:
| СуммаПродажи | Себестоимость | Рентабельность
По элементам в отчете все нормально работает, а вот при группировании, колонка Ренабельность просто равна ИТОГО по колонке, в этом и есть ошибка, т.к групировка по Ретабельности должна расчитываться так же по формуле, но уже по итоговым группировкам:
группаРентабельность = (группаСуммаПродажи-группаСебестоимость)*100%/группаСуммаПродажи
В этом и суть вопроса, как можно указать ПостроителюОтчета чтоб не группировал он колонку обычным способом, а только по формуле.
В запросе нельзя так указать, или незнаю. там в ИТОГО только стандартные функции можно писать.
Написал как надо данный отчет без использования ПостроителяОтчета, но это убийство в ручную реализовывать такие универсальные механизмы по настройке и расшифровкам.
Спасибо! хорошо, теперь вроде понятно, но тут же непонятно:
как можно в секции ИТОГИ использовать произвольные выражения?
вместо СУММА(РентабельностьПродаж) написать:
| СУММА((СУММА(Стоимость)-СУММА(Себестоимость))*100/(СУММА(Стоимость))
Как именно результат от этого выражения записать в РентабельностьПродаж?
(56) Читай пост 197 в v8: Конкурс на лучший вопрос по построителю отчетов
Написанное там можно применить и к СУММА, СУММА одного значения ВСЕГДА равна этому значению :))
Да дело скорее не в этом, как результат выражения запихнуть в переменную? Как эту Итоговую сумму получить, 1с пишет не может выполнить запрос в таком случае..
Выходит в секции Итоги можно писать фривольные выражения, но как указать, что результат будет в таком-то поле.
Типа
Что-то я не рулю в этом вопросе..
(60) "Прозрачно намекаю", нужно не
писать, а просто
Еще один раз СУММА писать как мертвому припарка, так как после первого применения агрегатных функций УЖЕ получмлось ОДНО число, с чем ты его суммировать собрался?
(60) "Прозрачно намекаю", нужно не
писать, а просто
Еще один раз СУММА писать как мертвому припарка, так как после первого применения агрегатных функций УЖЕ получмлось ОДНО число, с чем ты его суммировать собрался?
(СУММА(Стоимость)-СУММА(Себестоимость))*100/(СУММА(Стоимость)
:))))))))
Да я понял на что ты намекал.
Хорошо, есть у нас выражение в секции итого:
Читайте также: