|
|
|
Фиксация в отчетах на СКД
|
|||
|---|---|---|---|
|
#18+
Столкнулся с примитивной задачкой, а как оно делается на СКД и не знаю :( Подскажите кто-нибудь, как заставить отчет на СКД "автоматом" делать фиксацию слева и сверху для таблицы данных?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2009, 16:41 |
|
||
|
Фиксация в отчетах на СКД
|
|||
|---|---|---|---|
|
#18+
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКД,СхемаКДНастройки);//Настройки); ПроцессорКД = Новый ПроцессорКомпоновкиДанных; ПроцессорКД.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных); //Вывожу Результат компоновки данных в табличный документ. ДокументРезультат = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКД); ДокументРезультат.ОтображатьСетку = Ложь; //Фиксация колонок слева ДокументРезультат.ФиксацияСверху=?(ПоРубрикам,?(ИспользоватьРазрезы,?(ПоСкладам,5,4),?(ПоСкладам,4,3)),?(ИспользоватьРазрезы,?(ПоСкладам,6,5),?(ПоСкладам,5,?(ДоляПродаж,4,3)))); ДокументРезультат.ФиксацияСлева=?(КодРубрика,2,1); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2009, 14:17 |
|
||
|
Фиксация в отчетах на СКД
|
|||
|---|---|---|---|
|
#18+
//Фиксация сверху и слева ДокументРезультат.ФиксацияСверху=?(ПоРубрикам,?(ИспользоватьРазрезы,?(ПоСкладам,5,4),?(ПоСкладам,4,3)),?(ИспользоватьРазрезы,?(ПоСкладам,6,5),?(ПоСкладам,5,?(ДоляПродаж,4,3)))); ДокументРезультат.ФиксацияСлева=?(КодРубрика,2,1); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2009, 14:19 |
|
||
|
Фиксация в отчетах на СКД
|
|||
|---|---|---|---|
|
#18+
В данном примере вывод осуществляется средствами СКД в табличный документ. Фиксация делается свойством табличного документа ФиксацияСлева(сверху). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2009, 14:22 |
|
||
|
Фиксация в отчетах на СКД
|
|||
|---|---|---|---|
|
#18+
Это-то понятно. но у меня написано: авторзаставить отчет на СКД "автоматом" Вопрос, можно ли задать в самом конструкторе СКД, чтобы не дорабатывая напильником скд сама фиксировала заголовок таблицы/строки (отделяла фиксацией ту часть таблицы, где выводятся ресурсы). Видимо, такой возможности действительно нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2009, 14:53 |
|
||
|
Фиксация в отчетах на СКД
|
|||
|---|---|---|---|
|
#18+
Аналогичный вопрос Как зафиксировать Отчет в том месте, где начинаются ресурсы? Корректнее наверно сформулировать так: Как определить ячейку табличного докумена, где появляется первый ресурс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2009, 09:15 |
|
||
|
Фиксация в отчетах на СКД
|
|||
|---|---|---|---|
|
#18+
В СКД не предусмотрена фиксация строк и колонок табличного документа. Высоту таблицы после вывода шапки (за строчку до того как начнут выводиться ресурсы :) можно определить по настройкам СКД на момент вывода процессором, т.е. вывод в процедуре, а не по стандартной кнопке Сформировать. Высота таблицы зависит от режимов вывода заголовка, параметров(и их числа) и отбора. Все сказанное работает при использовании встроенного макета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2010, 16:42 |
|
||
|
Фиксация в отчетах на СКД
|
|||
|---|---|---|---|
|
#18+
Sergeyrm(at)mailточкаru, Процедура глВывестиРезультатКомпоновкиСАвтофиксациейСтрок( Таб, ПроцессорКомпоновкиДанных, ЭлементыРасшировки, Знач МассивИгнорируемыхПолей = Неопределено, РазрешитьПрерывание = Истина) Экспорт ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Таб); ПроцессорВывода.НачатьВывод(); ФиксацияВыполнена = Ложь; Если МассивИгнорируемыхПолей = Неопределено Тогда МассивИгнорируемыхПолей = Новый Массив; КонецЕсли; Пока Истина Цикл ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновкиДанных.Следующий(); Если ЭлементРезультатаКомпоновкиДанных = Неопределено Тогда Прервать; КонецЕсли; // Автофиксация Если Не ФиксацияВыполнена Тогда Для Каждого ЗначениеПараметра Из ЭлементРезультатаКомпоновкиДанных.ЗначенияПараметров Цикл Если ТипЗнч(ЗначениеПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда ЗначенияПолейРасшифровки = ЭлементыРасшировки[ЗначениеПараметра.Значение].ПолучитьПоля(); Для Каждого ЗначениеПоляРасшифровки Из ЗначенияПолейРасшифровки Цикл Если МассивИгнорируемыхПолей.Найти(ЗначениеПоляРасшифровки.Поле) = Неопределено Тогда Таб.ФиксацияСверху = Таб.ВысотаТаблицы; ФиксацияВыполнена = Истина; Прервать; КонецЕсли; КонецЦикла; Если ФиксацияВыполнена Тогда Прервать; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; ПроцессорВывода.ВывестиЭлемент(ЭлементРезультатаКомпоновкиДанных); Если РазрешитьПрерывание Тогда #Если Клиент тогда ОбработкаПрерыванияПользователя(); #КонецЕсли КонецЕсли; КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); КонецПроцедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2010, 10:34 |
|
||
|
|

start [/forum/topic.php?fid=28&msg=36372051&tid=1521927]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
248ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 538ms |

| 0 / 0 |
