Программное формирование скд управляемые формы

Как известно, с помощью Системы Компоновки Данных (СКД) в 1С 8.3 и 8.2 можно быстро построить отчет практически любой сложности. Простота и скорость создания отчета достигается удобным визуальным конструктором, который обеспечивает необходимый результат без написания кода. Но все же бывает необходимость «вмешаться» в работу конструктора и программно сформировать отчет.

Когда может потребоваться программный вывод отчета в 1С на СКД:

  • программная установка параметров СКД;
  • использование внешних данных в отчете;
  • специфика табличного документа при выводе на печать;
  • прочие нестандартные ситуации.

Предлагаю на примере рассмотреть, как можно сформировать отчет на СКД и заполнить его параметры программно.

Создадим новый внешний отчет. Напишем простейший запрос на примере 1С Бухгалтерия, который выводит начальный и конечный остатки и обороты по счету:

ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Счет,
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.Субконто2,
ХозрасчетныйОстаткиИОбороты.Субконто3,
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток,
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток,
ХозрасчетныйОстаткиИОбороты.СуммаОборот
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , Счет = &Счет, , ) КАК ХозрасчетныйОстаткиИОбороты

Вот, как выглядит отчет в стандартном виде:

Теперь сформируем его программно. Для этого нам нужно добавить Основную Форму:

Добавим команду и кнопку на форме:

Получите 267 видеоуроков по 1С бесплатно:

В действиях команды пропишем следующий код (читать код на сайте достаточно трудно, поэтому рекомендуем скачать уже готовый пример отчета и посмотреть код в нем):

Автор: Admin 28 октября, 2019 0 комментария

Иногда бывает так, что систему компоновки данных (далее ‘СКД’) необходимо вывести программным способом. И практически никто и ни когда не станет писать основной алгоритм с нуля из головы. Зачем это делать, если есть готовый шаблон! Сейчас на простом примере рассмотрим как за 5 минут сделать быстро не сложный отчет на СКД и вывести его программным способом.

Читайте также  Принтер xerox phaser 3100 mfp драйвер

Итак, создаем новый отчет:

  • Добавляем реквизит ‘Результат‘ типа ‘Табличный документ’. В него мы будем выводить результат полученный в ‘СКД’.
  • Добавляем команду формы ‘СформироватьОтчет‘. Через эту команду мы будем программно формировать вывод ‘СКД’ на форму отчета. Устанавливаем свойство команды ‘КнопкаПоУмолчанию’ = Истина.
  • Добавляем на форму параметры ‘СКД’. В моем случае этим параметром будет реквизит ‘Страна’ типа ‘СправочникСсылка.Страны’.

Теперь создаем макет СКД и описываем его: в нашем примере мы должны вывести данные футбольных клубов из справочника ‘Футбольные клубы’ и на форме предусмотреть возможность построения отчета с указанием страны (наш отбор или параметр ‘СКД’):

Что бы параметр ‘СКД’ был доступен в коде, необходимо снять у него флаг ‘Ограничение доступности’ на закладке ‘Параметры’:

Формируем основные настройки вывода информации:

И теперь самое интересное, то ради чего была сделана заметка. Это наш шаблон программного вывода системы компоновки данных по кнопке ‘СформироватьОтчет’:

Обучение программированию на 1С

Программное формирование отчёта на СКД

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

Зачем программировать СКД?

Какие случаи требуют программного формирования отчёта СКД? Это такие случаи как:

  • Специфические свойства табличного документа при формировании или выводе на печать;
  • Необходимость формирования отчёта на основе внешних данных;
  • Особое управление входными параметрами данных отчёта;
  • Необходимость по-особому развёртывать/свёртывать группы строк/столбцов отчёта;
  • Динамическое изменение параметров формирования отчёта и/или структуры вывода группировок по отчёту в зависимости от входных параметров.
Читайте также  Расчет времени скачивания файла по скорости

Как создать программируемый отчёт СКД?

Для того, чтобы создать программируемый отчёт СКД необходимо:

1. Создать сам отчёт (внешний или внутренний) в системе 1С.

2. В отчёте создать Схему Компоновки Данных.

3. Создать форму отчёта с использованием Системы Компоновки Данных.

4. Назначить свой обработчик для кнопки «Сформировать».

5. В модуле формы отчёта прописать необходимый код.

Какой нужно написать код 1С?

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

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

Если отчёт использует входные параметры, что почти наверняка, то рекомендую добавить в код инициализацию параметров для использования в запросе СКД значений по умолчанию:

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

Процедура ДополнитьПараметрыКомпоновки ( МакетКомпоновки )
ДобавитьПараметрКомпоновки ( МакетКомпоновки , «НачалоПериода» , Дата ( ‘00010101’ ));
ДобавитьПараметрКомпоновки ( МакетКомпоновки , «КонецПериода» , Дата ( ‘00010101’ ));
КонецПроцедуры

Процедура ДобавитьПараметрКомпоновки ( МакетКомпоновки , Имя , Значение )
Если МакетКомпоновки . ЗначенияПараметров . Найти ( Имя ) = Неопределено Тогда
ПараметрКомпоновки = МакетКомпоновки . ЗначенияПараметров . Добавить ();
ПараметрКомпоновки . Имя = Имя ;
ПараметрКомпоновки . Значение = Значение ;
КонецЕсли;
КонецПроцедуры

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

Ссылка на основную публикацию
Adblock
detector