новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Фиксируем колонку в отчете на СКД

  • Добавить свою публикацию
  • для этого требуется регистрация

Задача

... достаточно простая. Нужно создать отчет на СКД, который выводит остатки по номенклатуре в разрезе складов. Рассмотрим два варианта решения.

Изображение

Первый будет осуществлен стандартными возможностями СКД без единой строчки кода. Второй вариант будет усложнен дополнительным условием при выводе отчета. Но обо всем по порядку.

Стандартные возможности

Система компоновки данных имеет стандартные возможности по фиксации колонок в отчете. Настройки фиксации как таковые отсутствуют, но мы можем влиять на нее через изменение структуры отчета. Например, если нам нужно в отчете, скриншот которого представлен выше, сделать фиксацию для колонки "Номенклатура", то достаточно настроить структуру вывода следующим образом:

Изображение

Тогда при формировании отчета мы получим необходимый результат. Фиксация будет происходить для всех полей, которые находятся в разделе "Строки".

Изображение

Таким образом, без единой строчки кода, используя только стандартные возможности СКД, мы решили задачу с фиксацией колонки в отчете. Но что, если нам нужно зафиксировать не только первую колонку "Номенклатура", но и первую колонку склада (в нашем случае это "Главный склад"). Стандартные возможности СКД тут не помогут, пойдем другим путем.

Другой путь

Используя отчет из предыдущей части статьи зафиксируем первую колонку "Склад" в выводимом табличном документе. Для этого программно сформируем отчет в обработке "ПриКомпоновкеРезультата" модуля объекта отчета. Листинг этой процедуры-обработчика представлен на следующем листинге:

 Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь; // отключаем стандартный вывод отчета - будем выводить программно 

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

КонецПроцедуры

 Чтобы провести фиксацию первой колонки выводимого склада, выполним вывод отчета в табличный документа. Затем установим фиксацию в табличном документе слева в значение 3 (3 ячейки).

 	//........
	ДокументРезультат.Очистить();

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

	// Устанавливаем фиксацию в табличном документе
	ДокументРезультат.ФиксацияСлева = 3;

КонецПроцедуры

 Почему фиксация имеет значение именно 3? Обратимся к следующему скриншоту:

Изображение

И так, задача решена. Конечно, не универсальным образом, но пример изначально планировался простым.

 

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

 

В результате формирования отчета мы увидим следующий результат:

Изображение

Заключение

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

Скчать пример отчета на СКД с фиксацией колонок

 
0
Читайте также
Работа с хранилищем конфигурации
Хранилище конфигурации в 1С8
СКД. Вывод произвольного изображения в шапку отчета
Как добавить изображение в шапку отчета на СКД
Разработки
Консоль компоновки данных
Обработка состоит их запросов, СКД и объектов
Реестр документов .
БП 2.0 Отчет на СКД
Общий журнал документов в Управляемом приложении на СКД
Журнал документов для любой конфигурации 1С Предприятие (тонкий клиент)
Еще от автора
≡ к списку статей