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

Содержание:

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С:Управление производственным предприятием

- Адаптации блоков/подсистем планирования продаж, закупок и казначейства. ...

ООО "Эскорт-Центр"
ООО "Эскорт-Центр"

Отрасль:
Профессиональные услуги

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

- Сквозной учет затрат по объектам
- Бухгалтерский учет
- Расчет зарплаты...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

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

Оформление заказов поставщикам Оформление заказов покупателей Управление ...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО "ДЕКОР"
ООО «ДЕКОР»

Отрасль:
Производство

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

Управление персоналом и кадровый учет (HRM):
- Кадровый учет
- Расчет зарпл...

ООО «ПраксисКом»
ООО «ПраксисКом»

Отрасль:
Аутсорсинг бухгалтерских услуг

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

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные ...

Доработка конфигурации Заказчика «1С:Управление строительной организацией»
ЗАО «Стройтрансгаз»

Отрасль:
Проектирование

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

Взаиморасчеты с поставщиками;
- Оформление заказов поставщикам;
- Склад ...

Внедрение ПП "1С:Корпоративный инструментальный пакет 8" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

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

Различная отраслевая специфика:
- Переработка давальческого сырья
- Уче...

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

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

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

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

ООО "НЦКТ"
ООО "НЦКТ"

Отрасль:
Профессиональные услуги

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

Производственные операции
Автоматизация бизнес-процессов...

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

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

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходо...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО «Союз Три» (Кондитерский дом Renardi)
ООО «Союз Три»

Отрасль:
Производство

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

Бухгалтерский учет
- Банк и касса
- Расчеты с контрагентами
Налоговый ...

ООО «ДАФ Тракс Рус» (DAF Trucks Rus)
ООО «ДАФ Тракс Рус» (DAF Trucks Rus)

Отрасль:
Машиностроение

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

- Осуществлена разработка матрицы прав и ролей для финансового подразделени...

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

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

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

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