18.10.2022 Дмитрий Гречушкин 26984
Программное создание СКД – шпаргалка

Содержание:

1.       Программное добавление источника данных в СКД

2.       Программное добавление поля источника данных в СКД

3.       Программное добавление выбранных полей отчета в схеме компоновки данных

4.       Программное добавление группировки данных в СКД

5.       Программное добавление полей автогруппировки в СКД

6.       Программное добавление сортировки полей в СКД

7.       Программное добавление ресурса в СКД

8.       Программное добавление параметра запроса в СКД

9.       Программное добавление условного оформления в СКД

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

    

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


Сейчас практически ни один проект не обходится без программного создания СКД при адаптации программных продуктов нового поколения на платформе 1С:Предприятие.


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

-   Программное добавление источника данных в СКД

-   Программное добавление поля источника данных в СКД

-   Программное добавление выбранных полей отчета в схеме компоновки данных

-   Программное добавление группировки данных в СКД

-   Программное добавление полей автогруппировки в СКД

-   Программное добавление сортировки полей в СКД

-   Программное добавление ресурса в СКД

-   Программное добавление параметра запроса в СКД

-   Программное добавление условного оформления в СКД

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

 

Все действия производим в процедуре «ПриКомпоновкеРезультата» модуля отчета с флагом СтандартнаяОбработка равным Ложь.  


1.     Программное добавление источника данных в СКД


// Создаем схему компоновки данных

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

 

// Создаем источник данных для схемы компоновки данных

ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();

// Назначаем имя источника данных

ИсточникДанных.Имя = "ОсновнаяСхемаКомпоновки";

// Указываем тип источника данных. Для текущей информационной базы - "Local"

ИсточникДанных.ТипИсточникаДанных = "Local";

 

// Создаем набор данных для схемы компоновки данных.

НаборДанныхОбъектСхемыКомпоновкиДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));

НаборДанныхОбъектСхемыКомпоновкиДанных.Имя = "НаборДанных1";

НаборДанныхОбъектСхемыКомпоновкиДанных.ИмяОбъекта = "ТаблицаВходныхДанных";

НаборДанныхОбъектСхемыКомпоновкиДанных.ИсточникДанных = " ОсновнаяСхемаКомпоновки ";

Результатом выполнения будет программно-сформирована схема компоновки данных «ОсновнаяСхемаКомпоновки» и сформирован набор данных СКД «НаборДанных1» типа объект с именем объекта, содержащего данные - «ТаблицаВходныхДанных»   


2.     Программное добавление поля источника данных в СКД


// Создаем новое поле набор данных для схемы компоновки данных

ПолеНабораДанныхСхемыКомпоновкиДанных = НаборДанныхОбъектСхемыКомпоновкиДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));

// Инициализируем созданное поле

ПолеНабораДанныхСхемыКомпоновкиДанных.Поле = "Номенклатура";

ПолеНабораДанныхСхемыКомпоновкиДанных.ПутьКДанным = " Номенклатура ";

ПолеНабораДанныхСхемыКомпоновкиДанных.Заголовок = " Номенклатура ";

Результатом выполнения будет добавление поля «Номенклатура» набора данных СКД.  


3.     Программное добавление выбранных полей отчета в Схеме компоновки данных


// Создаем новое поле

ВыбранноеПолеКомпоновкиДанных = НастройкиКомпоновки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));

// Инициализируем созданное поле

ВыбранноеПолеКомпоновкиДанных.Использование = Истина;

ВыбранноеПолеКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");

Результатом выполнения будет добавление поля «Номенклатура» компоновщика настроек схемы компоновки данных.  

 

4.     Программное добавление группировки данных в Схеме компоновки данных


// Создаем новую группировку компоновщика настроек

ГруппировкаКомпоновкиДанных1 = НастройкиКомпоновки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

// Инициализируем созданную группировку

ГруппировкаКомпоновкиДанных1.Использование = Истина;

ПолеГруппировкиКомпоновкиДанных = ГруппировкаКомпоновкиДанных1.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));

ПолеГруппировкиКомпоновкиДанных.Использование = Истина;

ПолеГруппировкиКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("Номенклатура ");

Результатом выполнения будет добавление группировки «Номенклатура» компоновщика настроек схемы компоновки данных.  


5.     Программное добавление полей автогруппировки в Схеме компоновки данных


// Создаем новую группировку компоновщика настроек

АвтоВыбранноеПолеКомпоновкиДанных = ГруппировкаКомпоновкиДанных1.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

// Инициализация созданной группировки компоновщика настроек

АвтоВыбранноеПолеКомпоновкиДанных.Использование = Истина;

Результатом выполнения будет добавление авто группировки для поля «Номенклатура» компоновщика настроек СКД.  


6.     Программное добавление сортировки полей в СКД


// Создаем новую сортировку

ЭлементПорядкаКомпоновкиДанных = НастройкиКомпоновки.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));

// Инициализируем созданную сортировку

ЭлементПорядкаКомпоновкиДанных.Использование = Истина;

ЭлементПорядкаКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("Номенклатура ");

ЭлементПорядкаКомпоновкиДанных.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв;

Результатом выполнения будет создание сортировки по полю «Номенклатура» компоновщика настроек схемы компоновки данных.   


7.     Программное добавление ресурса в СКД


// Создаем новый ресурс

РесурсСКД = СхемаКомпоновкиДанных.ПоляИтога.Добавить();

РесурсСКД.ПутьКДанным = "Стоимость";

РесурсСКД.Выражение = "Сумма(Стоимость)";

Результатом выполнения будет создание ресурса по полю «Стоимость» компоновщика настроек схемы компоновки данных.  


8.     Программное добавление параметра запроса в СКД


// Создаем новый параметр

ПараметрСКД = СхемаКомпоновкиДанных.Параметры.Добавить();

// Инициализируем созданный параметр

ПараметрСКД.Использование = ИспользованиеПараметраКомпоновкиДанных.Авто;

ПараметрСКД.Имя = "ТипЦен";

ПараметрСКД.Заголовок = "Тип цен";

ПараметрСКД.Значение = Справочники.ТипыЦенНоменклатуры.Прайс;

 

Результатом выполнения будет создание параметра запроса «ТипЦен» компоновщика настроек СКД.  


9.     Программное добавление условного оформления в СКД


// Инициализируем компоновщик настроек

НастройкиКомпоновки = КомпоновщикНастроек.Настройки;

 

// Создаем условное оформление

УсловноеОформление = НастройкиКомпоновки.УсловноеОформление.Элементы.Добавить();

УсловноеОформление.Использование = Истина;

 

// Устанавливаем поле условного оформления

ВыбранноеПолеКомпоновкиДанных = УсловноеОформление.Поля.Элементы.Добавить();

ВыбранноеПолеКомпоновкиДанных.Использование = Истина;

ВыбранноеПолеКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");

 

// Устанавливаем область применения условного оформления

УсловноеОформление.ИспользоватьВЗаголовке        = ИспользованиеУсловногоОформленияКомпоновкиДанных. Использовать;

УсловноеОформление.ИспользоватьВЗаголовкеПолей  = ИспользованиеУсловногоОформленияКомпоновкиДанных. Использовать;

УсловноеОформление.ИспользоватьВОбщемИтоге       = ИспользованиеУсловногоОформленияКомпоновкиДанных. Использовать;

 

// Устанавливаем отбор по полям условного оформления

ЭлементОтбораКомпоновкиДанных = УсловноеОформление.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

ЭлементОтбораКомпоновкиДанных.Использование = Истина;

ЭлементОтбораКомпоновкиДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Цена");

ЭлементОтбораКомпоновкиДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;

ЭлементОтбораКомпоновкиДанных.ПравоеЗначение = 10;

 

// Устанавливаем графическое формление полей          

УсловноеОформление.Оформление.УстановитьЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ЦветФона"), WebЦвета. ПесочноКоричневый);

 

Результатом выполнения будет создание параметра запроса «ТипЦен» компоновщика настроек схемы компоновки данных.   


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


// Создаем компоновщик макета компоновки данных

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

// Инициализируем компоновщик макета компоновки данных ранее созданной схемой компоновки данных и настройками схемы

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

 

// Формируем таблицу набора данных СКД

      Запрос = Новый Запрос;

      Запрос.Текст =

      "...";

     

ТаблицаВходныхДанных = Запрос.Выполнить().Выгрузить();

ВнешниеНаборы = Новый Структура("ТаблицаВходныхДанных ", ТаблицаВходныхДанных);

// Формируем отчет

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

ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборы);

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

ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

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

 

Результатом выполнения будет сформированный отчет СКД.



Итоговый отчет СКД

 

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

Спасибо за внимание уважаемые коллеги.

 

Таким образом, данный опыт помогает решать  на проектах внедрения  и адаптации типовых программных продуктов на платформе 1С:Предприятие нового поколения огромное количество задач под индивидуальные и уникальные требования Заказчика (отчеты, динамические списки, задание произвольных отборов и прочее).


Специалист компании  «Кодерлайн»

Дмитрий Гречушкин

Наши проекты

Автоматизация складских операций на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

Внедренное типовое решение:
1С:Управление холдингом

Реализовали разработку уникального модуля «Интернет-магазины» на базе прог...

ООО «Аэроэкспресс»
ООО «Аэроэкспресс»

Отрасль:

Внедренное типовое решение:
1С:ERP. Управление холдингом

· Планирование закупок · Управление закупочными процедурами, включая 223 ФЗ ...

Московский филиал ООО «Авиакомпания «Икар»
Московский филиал ООО «Авиакомпания «Икар»

Отрасль:
Авиаперевозки

Внедренное типовое решение:
1С:Бухгалтерия КОРП

Бухгалтерский учет Производственные операции Регламентированная отчетнос...

ООО «Стейдж Энтертейнмент Россия»
ООО «Стейдж Энтертейнмент Россия»

Отрасль:
Театральная деятельность

Внедренное типовое решение:
Платформа 1С:Предприятие 8

Реализован процесс трансформации данных бухгалтерского учета по РСБУ в дан...

Автоматизация документооборота в компании ООО "Ликард"
ООО «Ликард» (ОАО ЛУКОЙЛ)

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:Документооборот КОРП

- Отказ от бумажного документооборота, от громоздких систем на базе офисного...

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

Управление цепочками поставок Оптовая торговля ...

Внедрение ПП «1С:Предприятие 8. Аренда и управление недвижимостью на базе "1С:Бухгалтерия 8"» в компании «Бутово Молл»
ООО «Бутово Молл»

Отрасль:
Недвижимость

Внедренное типовое решение:
1С:Аренда и управление недвижимостью на базе «1С:Бухгалтерия 8»

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Оформление зак...

ООО «Иви.ру»
ООО «Иви.ру»

Отрасль:
Медиаиндустрия

Внедренное типовое решение:
1С:Управление корпоративными финансами

Подсистема казначейства
Модуль бюджетного контроля по ДДС ...

АО «Аэроклуб»
АО «Аэроклуб»

Отрасль:
Услуги в области делового туризма

Внедренное типовое решение:
1С:Бухгалтерия 8 КОРП

Проведение серии интервью с руководством и ключевыми специалистами Разраб...

ООО «ПЛЮСПЭЙ»
ООО «ПЛЮСПЭЙ»

Отрасль:
Организацией расчетов посредством электронных средств платежа

Внедренное типовое решение:
1С:Комплексная автоматизация

- Разработка подсистемы оперативного учета транзакций...

ООО "ЛИКАРД" (Лукойл)
ООО "ЛИКАРД" (Лукойл)

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Делопроизводство
• Учет и контроль исполнения поручений
Учет и хранение...

Компания IBS
Компания IBS

Отрасль:
Системный интегратор

Внедренное типовое решение:
1С:Управление производственным предприятием

- Интеграция систем – АСУП и «1С:Управление производственным предприятием»...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение