Имя: Пароль:
1C
1С v8
Фиксация строк и колонок на СКД
0 MistaEr
 
16.11.17
11:31
Доброго времени!
Как бы решить вопрос по теме. Пробовал так:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь; // отключаем стандартный вывод отчета - будем выводить программно
    
    Настройки = КомпоновщикНастроек.ПолучитьНастройки() ;// Получаем настройки отчета
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; // Создаем данные расшифровки
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; // Создаем компоновщик макета
    // Инициализируем макет компоновки используя схему компоновки данных
    // и созданные ранее настройки и данные расшифровки
    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
    
    // Скомпонуем результат
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
    
    ДокументРезультат.Очистить();
    
    // Выводим результат в табличный документ
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);    
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    ДокументРезультат.ФиксацияСлева = 1;
    ДокументРезультат.ФиксацияСверху = 9;
КонецПроцедуры

Так работает, правда, если добавлять удалять отборы, фиксация сверху меняется. Не важно...

Есть у меня вычисляемое поле ОбщийМодульСервер.ПолучитьПлановуюСумму(&Организация, &ДатаКон, Статья), так вот при выоде компановки программно (методом выше) ругается Синтаксическая ошибка ОбщийМодульСервер.ПолучитьПлановуюСумму.

Я думаю, фиксацию мне нужно сделать другим способом
1 DrShad
 
16.11.17
12:07
казалось бы причем тут фиксация
2 MistaEr
 
16.11.17
12:24
(1) Скорее на СКД есть другие методы фиксации, вот про них я и хочу узнать)
3 DrShad
 
16.11.17
12:26
а ошибка к чему?
4 MistaEr
 
16.11.17
12:38
(3) Чтоб не предлагали этот вариант, ну а если предложат, вместе с решением проблемы. Может свойства общего модуля менять, там у меня пока только одна галочка Сервер
5 DrShad
 
16.11.17
12:40
(4) нужно последний параметр метода Инициализировать() в истину выставлять при программном формировании
6 MistaEr
 
16.11.17
13:00
(5) Получилось). Спасибо. Фиксацию сверху буду ориентировать на количество отборов. Используется отбор или нет попробую взять в МакетКомпоновки.ЗначенияПараметров
7 kittystark
 
16.11.17
17:12
(6) ориентироваться на кол-во отборов не совсем правильно
вот держи, поставь эти строки вместо ПроцессорВывода.Вывести(ПроцессорКомпоновки);:

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