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

Содержание:

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 ПРОФ» в компании «Мостехника»
ООО «Мостехника»

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

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

Документооборот (ECM):
- Учет рабочего времени;
Управление персоналом и ка...

ХИТЕК-ГРУП
ХИТЕК-ГРУП

Отрасль:
Продажа парикмахерского инструмента и аксессуаров

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

Документооборот (ECM)
• Делопроизводство
Управление бизнес-процессами и И...

ОАО «Фаберлик»
ОАО «Фаберлик»

Отрасль:

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

- Регламентированный учет;
- Кадровый учет;...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1с-РАРУС МСК
1с-РАРУС МСК

Отрасль:
Разработка компьютерного программного обеспечения

Внедренное типовое решение:

- Совместная работа по внедрению разных решений, в том числе «1С:ERP Управление...

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

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

Внедренное типовое решение:
1С:Управление нашей фирмой 8 ПРОФ

Взаиморасчеты с покупателями
Автоматизация бизнес-процессов...

ООО "АСК ИНЖИНИРИНГ"
ООО "АСК ИНЖИНИРИНГ"

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

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

Делопроизводство
Учет и хранение документов
Ведение номенклатуры дел
...

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

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

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

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

ООО «Вистеон Автоприбор Электроникс»
ООО «Вистеон Автоприбор Электроникс»

Отрасль:

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

- Управленческий учет; - Расчет зарплаты; - Логистика адресного склада; - Учет ...

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

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

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

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