Расчет количества строк и колонок фиксации для отчетов на СКД

30.04.12

Разработка - СКД

Функции рассчитывают сколько строк или колонок нужно зафиксировать в отчете на СКД, в зависимости от структуры отчета, количество отборов и ресурсов

 

 

 



Функция СтрокФиксироватьСверху(КомпоновщикНастроек, ПоказыватьЗаголовок = Истина) Экспорт


   
СтрокОтборова = 0;
   
ВыводитьПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыВывода.Элементы.Найти("FilterOutput");
    Если
ВыводитьПараметрыДанных.Значение = ТипВыводаТекстаКомпоновкиДанных.Авто ИЛИ
        (
ВыводитьПараметрыДанных.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить И ВыводитьПараметрыДанных.Использование = Истина) Тогда

        Для Каждого
ЭлементОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл

            Если
ЭлементОтбора.Использование Тогда
               
СтрокОтборова = 3;
                Прервать;
            КонецЕсли;

        КонецЦикла;

    КонецЕсли;

   
СтрокЗаголовка = 0;

    Если
ПоказыватьЗаголовок Тогда
       
СтрокЗаголовка = 3;
    КонецЕсли;

   
СтрокГрупировокСтрок = 0;
   
ЭлемСтруктуры = КомпоновщикНастроек.Настройки.Структура[0];
    Если
ТипЗнч(ЭлемСтруктуры) = Тип("ТаблицаКомпоновкиДанных")  Тогда

        Если
ЭлемСтруктуры.Строки.Количество() > 0 Тогда
           
Узел = ЭлемСтруктуры.Строки[0];
        Иначе
           
Узел = 0;
        КонецЕсли;

    ИначеЕсли
ТипЗнч(ЭлемСтруктуры) = Тип("ГруппировкаКомпоновкиДанных")  Тогда
       
Узел = ЭлемСтруктуры;
    КонецЕсли;

    Пока
Узел <> 0 И Узел.Структура.Количество() > 0 Цикл

       
СтрокГрупировокСтрок = СтрокГрупировокСтрок + 1;

        Если
ТипЗнч(Узел.Структура[0]) = Тип("ГруппировкаКомпоновкиДанных") ИЛИ ТипЗнч(Узел.Структура[0]) = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда

            Если НЕ
Узел.Структура[0].Использование Тогда
                Прервать;
            КонецЕсли;

           
Узел = Узел.Структура[0];

        Иначе
            Прервать;
        КонецЕсли;

    КонецЦикла;

   
СтрокГруппПолей = 0;
   
ВыводитьПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыВывода.Элементы.Найти("РасположениеРесурсов");
    Если
ВыводитьПараметрыДанных.Значение = РасположениеРесурсовКомпоновкиДанных.Горизонтально Тогда

        Для Каждого
ПолеКД Из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл

            Если
ТипЗнч(ПолеКД) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда

               
СтрокГруппПолей = 1;
                Прервать;

            КонецЕсли;

        КонецЦикла;

    КонецЕсли;

    Возврат
СтрокОтборова + СтрокЗаголовка + СтрокГрупировокСтрок + СтрокГруппПолей + ?(СтрокОтборова > 0 И СтрокЗаголовка > 0, 0, 1);

КонецФункции




Функция
СтрокФиксироватьСлева(КомпоновщикНастроек) Экспорт

   
СтрокФиксироватьСлева = 1;

   
ВыводитьПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыВывода.Элементы.Найти("ГоризонтальноеРасположениеОбщихИтогов");
    Если (
ВыводитьПараметрыДанных.Значение = РасположениеИтоговКомпоновкиДанных.Начало
        ИЛИ ВыводитьПараметрыДанных.Значение = РасположениеИтоговКомпоновкиДанных.НачалоИКонец)
        И
ВыводитьПараметрыДанных.Использование = Истина Тогда

       
СтрокФиксироватьСлева = СтрокФиксироватьСлева + 1;

    КонецЕсли;

   
ВыводитьПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыВывода.Элементы.Найти("РасположениеРесурсов");
    Если
ВыводитьПараметрыДанных.Значение = РасположениеРесурсовКомпоновкиДанных.Вертикально
        И ВыводитьПараметрыДанных.Использование = Истина Тогда

       
СтрокФиксироватьСлева = СтрокФиксироватьСлева + 1;

    КонецЕсли;

    Возврат
СтрокФиксироватьСлева;

КонецФункции



 

Пользоваться этими функциями очень просто. Достаточно после вывода отчета написать следующий код:

 

ТабличныйДокумент.ФиксацияСверху = СтрокФиксироватьСверху(КомпоновщикНастроек, ПоказыватьЗаголовок);
ТабличныйДокумент.ФиксацияСлева СтрокФиксироватьСлева(КомпоновщикНастроек);
  

 




Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    252851    1400    421    

1150

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    6096    321    shapa_pro    25    

69

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    18025    ovetgana    112    

110

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    10520    krasnoshchekovpavel    5    

68

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    9996    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    16247    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    13887    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    10611    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. khaoos 239 02.05.12 06:38 Сейчас в теме
За идею плюс и за то что выложил текстом, а не прикрепленным файлом. Единственное, есть небрежность в именовании переменных (издержки копипаста, видимо :)): в функции СтрокФиксироватьСлева используется переменная ВыводитьПараметрыДанных, наименование которой не отражает смысл ее использования
Для отправки сообщения требуется регистрация/авторизация