Посты с тэгами "Табличный документ"

Вставка разрыва страницы в СКД

Отзывов (2)FavoriteLoadingВ закладки

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

Отчет будем формировать программно переопределив событие “ПриКомпоновкеРезультата”

Столкнувшись с достаточно типовой проблемой при разработке отчетов на системе компоновки данных(СКД), вставка разрыва страницы после в конце группировки, на форумах и в документации не нашел простого решения этой задачи. Пост-обработкой табличного документа заниматься не хотелось, хотя совсем этого избежать пока не удалось , поэтому было найдено не сложное решение которым я хочу с вами поделиться. Отчет будем формировать программно переопределив событие “ПриКомпоновкеРезультата”...

Далее

Полезные примеры: поместить таблицу значений в ячейку табличного документа

Ваш отзывFavoriteLoadingВ закладки

Иногда бывает необходимо поместить табличную часть документа или данные, которые представляют собой строки табличной части в одну ячейку табличного документа, например так:

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

  • Выражение – выражение, которое нужно вычислить. Тип Строка. В строке может быть перечислено несколько выражений через запятую. После каждого выражения может быть необязательное ключевое слово КАК и имя колонки таблицы значений. Например: “Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж”.
  • ВыраженияПолейГруппировки – выражения полей группировки, перечисленные через запятую. Например, “Контрагент, Партия”;
  • ОтборЗаписей – выражение, применяемое к детальным записям. Например, “ПометкаУдаления = Ложь”;
  • ОтборГруппировок – отбор, применяемый к групповым записям. Например: “Сумма(СуммаОборот) > &Параметр1”.
Иногда бывает необходимо поместить табличную часть документа или данные, которые представляют собой строки табличной части в одну ячейку табличного документа, например так: Для этого необходимо воспользоваться функцией: ВычислитьВыражениеСГруппировкойТаблицаЗначений(), у которой есть параметры: Выражение – выражение, которое нужно вычислить. Тип Строка. В строке может быть перечислено несколько выражений через запятую. После каждого выражения может быть необязательное ключевое слово КАК и имя колонки таблицы значений. Например: “Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж”. ВыраженияПолейГруппировки – выражения полей группировки, перечисленные через запятую. Например, “Контрагент, Партия”; ОтборЗаписей – выражение, применяемое к детальным записям. Например, “ПометкаУдаления = Ложь”; ОтборГруппировок – отбор, применяемый к групповым записям. Например: “Сумма(СуммаОборот) > &Параметр1”....

Далее

Как объединить заголовки колонок в таблице

Отзывов (5)FavoriteLoadingВ закладки

Данный пост родился в результате поиска решения проблемы из поста http://1cskd.ru/2010/07/kak-v-skd-nakryt-kolonki-shapkoj/

Имеем отчет вида:

:

Настройки отчета:

Необходимо одинаковые заголовки группировок объединить.

Данный пост родился в результате поиска решения проблемы из поста http://1cskd.ru/2010/07/kak-v-skd-nakryt-kolonki-shapkoj/ Имеем отчет вида: : Настройки отчета: Необходимо одинаковые заголовки группировок объединить. Предлагаю данную операцию произвести над сформированным табличным документом, используя следующий код: // Проверка двух смежных ячеек на идентичночность Функция ОбъединятьЯчейки(ТабДок, индСтр, индКол) Ячейка = ТабДок.Область(индСтр, индКол); ЯчейкаСлед = ТабДок.Область(индСтр, индКол+1); Если ПустаяСтрока(Ячейка.Текст) Тогда Возврат ложь ИначеЕсли //Проверяем на соответствие заголовка Ячейка.Текст = ЯчейкаСлед.Текст // Проверяем на соответствие имени (отсеиваем уже объединенные ячейки) и Ячейка.Имя = "R"+индСтр+"C"+индКол Тогда Возврат Истина; Иначе Возврат ложь КонецЕсли; КонецФункции // Обработка заголовков таблицы // // Параметры // Табл - < Тип.ТабличныйДокумент> - Табличный документ формы Процедура ОбработатьЗаголовки(ТабДок) ОбъединяемаяОбласть = Неопределено; //Для оптимизации здесь нужно будет ограничить высоту таблицы Для индСтр=1 По ТабДок.ВысотаТаблицы Цикл НачальнаяКолонка = 0; Для индКол=1 По ТабДок.ШиринаТаблицы Цикл // определяем начало объединения Если ОбъединятьЯчейки(ТабДок, индСтр, индКол) Тогда Если не НачальнаяКолонка Тогда НачальнаяКолонка = индКол; КонецЕсли; ИначеЕсли НачальнаяКолонка Тогда // завершаем объединение ТекстЗаголовка = ТабДок.Область(индСтр, индКол).Текст; ОбъединяемаяОбласть = ТабДок.Область(индСтр, НачальнаяКолонка, индСтр, индКол); ОбъединяемаяОбласть.Объединить(); ОбъединяемаяОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр; ОбъединяемаяОбласть.Текст = ТекстЗаголовка; НачальнаяКолонка = 0; Иначе НачальнаяКолонка = 0; КонецЕсли; КонецЦикла; // Если нашли в строке области для объединения, то прекращаем дальнейшие поиски Если не ОбъединяемаяОбласть = Неопределено Тогда возврат; КонецЕсли; КонецЦикла; КонецПроцедуры Вставляем вызов после формирования табличного документа: Результат представлен ниже: Главный недостаток этого способа, трудно заранее определить начальную и конечную область поиска, т. к. функция может отработать  и объединить любые другие смежные идентичные ячейки. Если есть идеи как однозначно идентифицировать ячейки заголовка группировок пишите. А пока этот код можно использовать с некоторыми изменения в каждом  конкретном случае....

Далее

Фиксация шапки в СКД

Отзывов (7)FavoriteLoadingВ закладки

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

Код вывода с фиксацией шапки:

Результат = ЭлементыФормы.Результат;
Результат.Очистить();

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанных
                                                   ВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);

ПроцессорВывода.НачатьВывод();

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

            ТаблицаЗафиксирована = Истина;
            Результат.ФиксацияСверху = Результат.ВысотаТаблицы - 1;

        КонецЕсли;
    КонецЕсли;
КонецЦикла;

ПроцессорВывода.ЗакончитьВывод();

Для того, чтобы зафиксировать колонку по горизонтали, можно просто выполнить следующее:

Результат.ФиксацияСлева = 1;

UPD В 1с 8.2 в отчете у модуля объекта появился метод ПриКомпоновкеРезультата(), у которого есть параметр ДокументРезультат – табдок, который генерирует СКД.
По сути в модуле объекта можно прописать следующее:

Для того, чтобы зафиксировать шапку в скд, необходимо обрабатывать табличный документ.  В инструментах скд этот механизм отсутствует. Код вывода с фиксацией шапки: Результат = ЭлементыФормы.Результат; Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанных ВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.НачатьВывод(); ТаблицаЗафиксирована = Ложь; Пока Истина Цикл ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий(); Если ЭлементРезультата= Неопределено Тогда Прервать; Иначе ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); Если Не ТаблицаЗафиксирована И ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда ТаблицаЗафиксирована = Истина; Результат.ФиксацияСверху = Результат.ВысотаТаблицы - 1; КонецЕсли; КонецЕсли; КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); Для того, чтобы зафиксировать колонку по горизонтали, можно просто выполнить следующее: Результат.ФиксацияСлева = 1; UPD В 1с 8.2 в отчете у модуля объекта появился метод ПриКомпоновкеРезультата(), у которого есть параметр ДокументРезультат – табдок, который генерирует СКД. По сути в модуле объекта можно прописать следующее:...

Далее

Устройство системы компоновки данных

Отзывов (6)FavoriteLoadingВ закладки

В данной статье мы попробуем объяснить устройство системы компоновки данных понятным языком.

Фактически, формирование отчета средствами СКД разбито на несколько этапов. Причем нужно понимать, что разработчик может внести свои изменения во время любого из этапов.

В данной статье мы попробуем объяснить устройство системы компоновки данных понятным языком. Фактически, формирование отчета средствами СКД разбито на несколько этапов. Причем нужно понимать, что разработчик может внести свои изменения во время любого из этапов. По сути, формирование отчета это всего лишь два “глобальных” этапа:  сама компоновка данных, согласно схемы, и вывод результата пользователю. На самом деле объектов компоновки немного больше чем два. Для того чтобы скомпоновать данные в СКД существуют объекты: Компоновщик макета и Процессор компоновки данных. Рассмотрим принцип их работы.  Компоновщик макета на основании схемы компоновки данных и настроек компоновки данных формирует макет компоновки данных: Теперь наш сформированный макет необходимо заполнить данными. Именно эту функцию и выполняет Процессор компоновки данных. Процессор формирует результат компоновки. Также покажем это графически: Далее результат компоновки обрабатывается Процессором вывода, который выводит результат компоновки данных в один из следующих форматов: Табличный документ; Таблица значений; Дерево значений. Таким образом, мы познакомились со структурой системы компоновки данных, основными её элементами. Более подробное изучение работы данных объектов в дальнейших статьях цикла “Первые шаги”....

Далее

Авторизация

Логин:
Пароль:
Регистрация

Архивы

Закладки

  • Your favorites will be here.