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