Вертикальная автофиксация для СКД В СКД очень не хватает возможности автофиксации строк. Обусловлено это невозможностью однозначно определить их количество в общем случае. Однако в большинстве случаев это можно сделать
Обращаю ваше внимание, что приведенная процедура работает не всегда корректно. Но в большинстве случаев она сделает свое дело.
Код 1C v 8.х
Процедура ЛксВывестиРезультатКомпоновкиСАвтофиксациейСтрок(Таб, ПроцессорКомпоновкиДанных, ЭлементыРасшировки,
Знач МассивИгнорируемыхПолей = Неопределено, РазрешитьПрерывание = Истина) Экспорт
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода. УстановитьДокумент( Таб) ;
ПроцессорВывода. НачатьВывод( ) ;
ФиксацияВыполнена = Ложь ;
Если МассивИгнорируемыхПолей = Неопределено Тогда
МассивИгнорируемыхПолей = Новый Массив;
КонецЕсли ;
Пока Истина Цикл
ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновкиДанных. Следующий( ) ;
Если ЭлементРезультатаКомпоновкиДанных = Неопределено Тогда
Прервать ;
КонецЕсли ;
Если Не ФиксацияВыполнена Тогда
Для Каждого ЗначениеПараметра Из ЭлементРезультатаКомпоновкиДанных. ЗначенияПараметров Цикл
Если ТипЗнч( ЗначениеПараметра. Значение) = Тип( "ИдентификаторРасшифровкиКомпоновкиДанных" ) Тогда
ЗначенияПолейРасшифровки = ЭлементыРасшировки[ЗначениеПараметра. Значение]. ПолучитьПоля( ) ;
Для Каждого ЗначениеПоляРасшифровки Из ЗначенияПолейРасшифровки Цикл
Если МассивИгнорируемыхПолей. Найти( ЗначениеПоляРасшифровки. Поле) = Неопределено Тогда
Таб. ФиксацияСверху = Таб. ВысотаТаблицы;
ФиксацияВыполнена = Истина ;
Прервать ;
КонецЕсли ;
КонецЦикла ;
Если ФиксацияВыполнена Тогда
Прервать ;
КонецЕсли ;
КонецЕсли ;
КонецЦикла ;
КонецЕсли ;
ПроцессорВывода. ВывестиЭлемент( ЭлементРезультатаКомпоновкиДанных) ;
Если РазрешитьПрерывание Тогда
ОбработкаПрерыванияПользователя( ) ;
КонецЕсли ;
КонецЦикла ;
ПроцессорВывода. ЗакончитьВывод( ) ;
КонецПроцедуры
tormozit Категория:
Схема Компоновки Данных