Как программно сформировать отчет СКД 1С 8.3
Меню

Как программно сформировать отчет СКД 1С 8.3

Содержание статьи
  1. Программное формирование отчета в 1С 8.3
  2. Чтобы формировать его программно, необходимо действовать по простому алгоритму

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

Программное формирование отчета в 1С 8.3

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

Программное формирование отчета в 1С 8.3
Программное формирование отчета в 1С 8.3


	 ВЫБРАТЬ
	         ЗанятостьАвтомобилей.ДатаДоставки,
	         ЗанятостьАвтомобилей.Автомобиль,
	         ЗанятостьАвтомобилей.Занятость КАК СтатусДоставки
	 ИЗ
	         РегистрСведений.ЗанятостьАвтомобилей КАК ЗанятостьАвтомобилей
	 {ГДЕ
	        (ЗанятостьАвтомобилей.ДатаДоставки = &ДатаДоставки)}

Чтобы формировать его программно, необходимо действовать по простому алгоритму

Добавляем к отчету форму, использующую СКД.

Добавляем к отчету форму, использующую СКД
Добавляем к отчету форму, использующую СКД

В открывшейся форме нам нужно убрать основную панель команд и добавить собственную команду, чтобы в дальнейшей описать весь алгоритм.

В открывшейся форме нам нужно убрать основную панель команд и добавить собственную команду
В открывшейся форме нам нужно убрать основную панель команд и добавить собственную команду

Через контекстное меню создать обработчик команды на клиенте и сервере и прописать следующий код:

  • На клиенте передаем управление на сервер, а после формирования отчета отключаем справочные сообщения об успехе формирования отчета;


&НаКлиенте
Процедура Сформировать(Команда)
       СформироватьНаСервере(Результат);
Элементы.Результат.ОтображениеСостояния.Видимость = Ложь;

Элементы.Результат.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;

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

  • На сервере в первую очередь получаем запрос из схемы компоновки данных;


&НаСервере
       Процедура СформироватьНаСервере(ТаблДок)
       ОбъектОтчетНаСервере = РеквизитФормыВЗначение("Отчет");
       СхемаСКД = ОбъектОтчетНаСервере.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

  • Следующий блок подгружает к запросу значения параметров, которые выбрал пользователь;


КомпоновщикНастроекДанныхОтчета = Новый КомпоновщикНастроекКомпоновкиДанных;

КомпоновщикНастроекДанныхОтчета.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаСКД));

КомпоновщикНастроекДанныхОтчета.ЗагрузитьНастройки(СхемаСКД.НастройкиПоУмолчанию);

КомпоновщикНастроекДанныхОтчета.ЗагрузитьПользовательскиеНастройки(Отчет.КомпоновщикНастроек.ПользовательскиеНастройки);

КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных;

Макет = КомпоновщикМакетаОСКД.Выполнить(СхемаСКД, КомпоновщикНастроекДанныхОтчета.ПолучитьНастройки());

  • Следующий блок необходимо использовать вместо предыдущего, если вы хотите задавать параметр автоматически;


	 НастройкиСхемыОСКД = СхемаСКД.НастройкиПоУмолчанию;

	 ПараметрыДанныхОСКД = НастройкиСхемыОСКД.ПараметрыДанных.Элементы;

	 ЭлементНачалоПериода = ПараметрыДанныхОСКД.Найти("ДатаДоставки");

	 ЭлементНачалоПериода.Использование = Истина;

	 ЭлементНачалоПериода.Значение = ДАТА(2017,01,01,00,00,00);

	 КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных;

	 Макет = КомпоновщикМакетаОСКД.Выполнить(СхемаСКД, НастройкиСхемыОСКД);

  • В результате выполнения в переменную Макет попадают данные типа МакетКомпоновкиДанных. Остается только построить отчет с помощью встроенного в платформу процессора компоновки данных и вывести его на экран.


	 ПроцессорКомпоновкиОСКД = Новый ПроцессорКомпоновкиДанных;

	 ПроцессорКомпоновкиОСКД.Инициализировать(Макет);

	 ТаблДок.Очистить();

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

	 ПроцессорВыводаОСКД.УстановитьДокумент(ТаблДок);

	 ПроцессорВыводаОСКД.Вывести(ПроцессорКомпоновкиОСКД);

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

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

Рассказать друзьям
Предыдущая статья статья
Контролируемые сделки в 1С 8.3 Бухгалтерия
Следующая статья статья
1С:Управление торговлей 8 версия 11.5: обзор возможностей
Комментарии