Механизм СКД с момента своего появления постоянно набирает популярность среди разработчиков 1С, что весьма предсказуемо. Несмотря на простоту и скорость работы этого механизма, для решения определенных задач программисту необходимо уметь работать с программным формированием отчета. Эта возможность позволяет изменить стандартную работу конструктора отчета и внести нужные изменения, но, выполняя подобный шаг, необходимо четко понимать свои действия. Поэтому, если вы не уверены в своих силах, обращайтесь за консультацией по программам 1С к нашим специалистам – мы с радостью вам поможем.
Программное формирование отчета в 1С 8.3
Для использования некоторых возможностей, включая использование различных внешних данных, программистам приходится использовать форму отчета, то есть писать код для его формирования. Для наглядности приведем пример вывода отчета с помощью формы документа и программного кода. Возьмем простой отчет с 1 параметром и схемой СКД:
ВЫБРАТЬ
ЗанятостьАвтомобилей.ДатаДоставки,
ЗанятостьАвтомобилей.Автомобиль,
ЗанятостьАвтомобилей.Занятость КАК СтатусДоставки
ИЗ
РегистрСведений.ЗанятостьАвтомобилей КАК ЗанятостьАвтомобилей
{ГДЕ
(ЗанятостьАвтомобилей.ДатаДоставки = &ДатаДоставки)}
Чтобы формировать его программно, необходимо действовать по простому алгоритму
Добавляем к отчету форму, использующую СКД.
В открывшейся форме нам нужно убрать основную панель команд и добавить собственную команду, чтобы в дальнейшей описать весь алгоритм.
самые свежие новости 1 раз в месяц
Через контекстное меню создать обработчик команды на клиенте и сервере и прописать следующий код:
- На клиенте передаем управление на сервер, а после формирования отчета отключаем справочные сообщения об успехе формирования отчета;
&НаКлиенте
Процедура Сформировать(Команда)
СформироватьНаСервере(Результат);
Элементы.Результат.ОтображениеСостояния.Видимость = Ложь;
Элементы.Результат.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;
КонецПроцедуры
- На сервере в первую очередь получаем запрос из схемы компоновки данных;
&НаСервере
Процедура СформироватьНаСервере(ТаблДок)
ОбъектОтчетНаСервере = РеквизитФормыВЗначение("Отчет");
СхемаСКД = ОбъектОтчетНаСервере.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
- Следующий блок подгружает к запросу значения параметров, которые выбрал пользователь;
КомпоновщикНастроекДанныхОтчета = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроекДанныхОтчета.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаСКД));
КомпоновщикНастроекДанныхОтчета.ЗагрузитьНастройки(СхемаСКД.НастройкиПоУмолчанию);
КомпоновщикНастроекДанныхОтчета.ЗагрузитьПользовательскиеНастройки(Отчет.КомпоновщикНастроек.ПользовательскиеНастройки);
КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакетаОСКД.Выполнить(СхемаСКД, КомпоновщикНастроекДанныхОтчета.ПолучитьНастройки());
- Следующий блок необходимо использовать вместо предыдущего, если вы хотите задавать параметр автоматически;
НастройкиСхемыОСКД = СхемаСКД.НастройкиПоУмолчанию;
ПараметрыДанныхОСКД = НастройкиСхемыОСКД.ПараметрыДанных.Элементы;
ЭлементНачалоПериода = ПараметрыДанныхОСКД.Найти("ДатаДоставки");
ЭлементНачалоПериода.Использование = Истина;
ЭлементНачалоПериода.Значение = ДАТА(2017,01,01,00,00,00);
КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакетаОСКД.Выполнить(СхемаСКД, НастройкиСхемыОСКД);
- В результате выполнения в переменную Макет попадают данные типа МакетКомпоновкиДанных. Остается только построить отчет с помощью встроенного в платформу процессора компоновки данных и вывести его на экран.
ПроцессорКомпоновкиОСКД = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиОСКД.Инициализировать(Макет);
ТаблДок.Очистить();
ПроцессорВыводаОСКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВыводаОСКД.УстановитьДокумент(ТаблДок);
ПроцессорВыводаОСКД.Вывести(ПроцессорКомпоновкиОСКД);
КонецПроцедуры
В результате этих манипуляций вы получите отчет, формирующийся программно, и сможете добавить дополнительных функций. К примеру, можно сделать простую версию отчета для новичков, где не нужно вводить значения параметров, и расширенную – для опытных пользователей. Это хороший прием, который часто используют специалисты по сопровождению систем 1С. Его использование поможет вам в нахождении нестандартных решений и, как следствие, в развитии профессиональных навыков.
консультация эксперта
самые свежие новости 1 раз в месяц