Отчет для демонстрации работы с программной расшифровкой СКД

Публикация № 938639 08.11.18

Разработка - СКД

расшифровка отчет СКД ОбработкаРасшифровкиКомпоновкиДанных

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

Демонстрирует работу:

  • Программное формирование дополнительных пунктов меню в расшифровке отчета СКД
  • Формирование отчета-расшифровки
  • Получение информации о группировках поля, по которому требуется расшифровка
  • Передача информации от открываемой формы расшифровки

При добавлении пользовательского пункта меню в расшифровку отчета возникает проблема: перестаёт работать стандартная расшифровка-детализация отчета, например, по регистратору.

В демо примере показано, как программно сформировать отчет-детализацию с передачей параметров детализации в новый отчет.

В качестве основного запроса отчета используется запрос к регистру накоплений ВыручкаИСебестоимостьПродаж из УТ 11.4. Для вашей конфигурации запрос нужно изменить.

Используется работа с объектом ОбработкаРасшифровкиКомпоновкиДанных

ОбработкаРасшифровки =  Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет));
НастройкиКомпоновкиДанных = ОбработкаРасшифровки.Расшифровать(Расшифровка, ПолеКомпоновкиДанных);

Для открытия меню выбора используется метод ПоказатьВыборДействия:

ОбработкаРасшифровки.ПоказатьВыборДействия(ОписаниеОповещенияОЗакрытии, Расшифровка, ДоступныеДействия, ДополнительныеДействия, Ложь);

 

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


&НаКлиенте
Процедура РезультатОбработкаРасшифровки_Продолжение(ВыполненноеДействие, ПараметрВыполненногоДействия, ДополнительныеПараметры = Неопределено) Экспорт
	
	Если ВыполненноеДействие = "ДополнительноеДействиеКотороеНамНужноЛеваяКнопка" Тогда
		
		// Для демонстрации возможностей покажем пользователю структуру текущего поля расшифровки.
		СтруктураДанных = ПолучитьСтруктуруДанныхНаСервере(ДополнительныеПараметры);
		
	ИначеЕсли ВыполненноеДействие = "ДополнительноеДействиеКотороеНамНужноПраваяКнопка" Тогда
		
		// Для демонстрации возможностей покажем пользователю структуру текущего поля расшифровки.
		СтруктураДанных = ПолучитьСтруктуруДанныхНаСервере(ДополнительныеПараметры);
		
	ИначеЕсли ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда
		
		ПоказатьЗначение(, ПараметрВыполненногоДействия);
		
	ИначеЕсли ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать Тогда
		
		// Поле компоновки данных получаем из ПараметрВыполненногоДействия. Почему там нет остальных параметров (Отбора, ПользовательскихНастроек) - Непонятно
		ПолеКомпоновкиДанных = ПолучитьПолеКомпоновкиДанных(ПараметрВыполненногоДействия.Структура);
		
		// Получаем настройки компоновки данных функцией Расшифровать. Работает только на сервере.
		НастройкиКомпоновкиДанныхРасшифровка = ПолучитьНастройкиРасшифроки(ДополнительныеПараметры, ПолеКомпоновкиДанных);
		
		// Параметры формы передаются в открываемую форму в реквизит Параметры. Но почему-то не все реквизиты срабатывают. В частности, должны срабатывать реквизиты "ПользовательскиеНастрйоки", "Настройки", "ФиксированныеНастройки", "Вариант".
		ПараметрыФормы = Новый Структура("Вариант, СформироватьПриОткрытии", НастройкиКомпоновкиДанныхРасшифровка, Истина);

		ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("ОповещениеЗакрытиеФормыРасшифровки", ЭтаФорма);
		
		// Открываем форму отчета-расшифровки. Указываем форму-владельца, чтобы на этой форме обработать оповещение. Уникальынй идентификатор указываем, чтобы можно было открывать много расшифровок параллельно.
		ОткрытьФорму("ВнешнийОтчет.ОтчетДемоСРасшифровкой.Форма.ФормаОтчета", ПараметрыФормы, ЭтаФорма, Новый УникальныйИдентификатор, , , ОписаниеОповещенияОЗакрытии); 	
		
	КонецЕсли;
	
	// Удалим описание оповещения, иначе будут выдаваться непонятные ошибки при вызове этой процедуры из непонятно чего.
	ОписаниеОповещенияОЗакрытии = Неопределено;
	
КонецПроцедуры    

&НаКлиенте
Функция ПолучитьПолеКомпоновкиДанных(Структура)
	Для каждого Поле из Структура Цикл
		Если ТипЗнч(Поле) = Тип("ГруппировкаКомпоновкиДанных") Тогда
			Возврат ПолучитьПолеКомпоновкиДанных(Поле.ПоляГруппировки.Элементы);
		ИначеЕсли ТипЗнч(Поле) = Тип("ПолеГруппировкиКомпоновкиДанных") Тогда
			Возврат Поле.Поле;
		КонецЕсли;
	КонецЦикла;
КонецФункции

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

&НаСервере
Функция ПолучитьСтруктуруДанныхНаСервере(Расшифровка)
	
	// и работает эта хрень только на сервере
	Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
	
	СтруктураДанных = Новый Структура;
	ПолучитьДанныеРасшифровкиРекурсивно(Данные, Расшифровка, СтруктураДанных);
	
	Для каждого КлючЗначение из СтруктураДанных Цикл
		Сообщить(КлючЗначение.Ключ+" "+КлючЗначение.Значение);
	КонецЦикла;
	
	Возврат СтруктураДанных;
	
КонецФункции

&НаСервере
Функция ПолучитьДанныеРасшифровкиРекурсивно(Данные, Расшифровка, СтруктураДанных)
	ЭлементРасшифровка = Данные.Элементы.Получить(Расшифровка);
	Если ЭлементРасшифровка <> Неопределено И ТипЗнч(ЭлементРасшифровка) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда
		Поля = ЭлементРасшифровка.ПолучитьПоля(); //Тут получаем поля расшифровки, среди которых находим нужное.
		Для каждого ЭлементПоле из Поля Цикл
			СтруктураДанных.Вставить(ЭлементПоле.Поле, ЭлементПоле.Значение);
		КонецЦикла;
		Родители = Данные.Элементы.Получить(Расшифровка).ПолучитьРодителей();
		Для каждого ЭлементРодитель из Родители Цикл
			ПолучитьДанныеРасшифровкиРекурсивно(Данные, ЭлементРодитель.Идентификатор, СтруктураДанных);
		КонецЦикла;
	ИначеЕсли ЭлементРасшифровка <> Неопределено И ТипЗнч(ЭлементРасшифровка) = Тип("ЭлементРасшифровкиКомпоновкиДанныхГруппировка") Тогда
		Родители = Данные.Элементы.Получить(Расшифровка).ПолучитьРодителей();
		Для каждого ЭлементРодитель из Родители Цикл
			ПолучитьДанныеРасшифровкиРекурсивно(Данные, ЭлементРодитель.Идентификатор, СтруктураДанных);
		КонецЦикла;
	КонецЕсли;
КонецФункции


Тестировалась на Управление торговлей, редакция 11 (11.4.5.111).

Скачать файлы

Наименование Файл Версия Размер
Отчет для демонстрации работы с программной расшифровкой СКД:

.erf 13,02Kb
20
.erf 1.1 13,02Kb 20 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. a45 87 23.09.20 13:53 Сейчас в теме
// Удалим описание оповещения, иначе будут выдаваться непонятные ошибки при вызове этой процедуры из непонятно чего.
ОписаниеОповещенияОЗакрытии = Неопределено;


вот за это спасибо )
Оставьте свое сообщение

См. также

Параметры открытия формы выбора отборов и параметров СКД ("связи параметров выбора" списочных значений СКД)

СКД Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

17.10.2022    3387    4    arman1997    1    

9

Заполнение параметра/отбора во всех отчетах списком товаров из документа

Универсальные обработки Учет ТМЦ Ценообразование, анализ цен СКД Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Добавление кнопки на форму общего отчет для заполнения параметра/отбора номенклатуры товарами из любого документа для любого отчета использующего общую форму отчёта

1 стартмани

23.08.2022    2644    1    user1209971    0    

2

Отчет с выводом заголовка на СКД

СКД Платформа 1С v8.3 Система компоновки данных Платформа 1C v8.2 Конфигурации 1cv8 Управленческий учет Абонемент ($m)

Отчёты "Ведомость товаров на складах" демонстрируют два способах вывода заголовка на СКД. Эти отчеты тестировались на конфигурации Управление торговым предприятием для Казахстана, редакции 2.0.19.2. Могут работать на любой конфигурации, если имеются регистры накопления «ТоварыНаСкладах» и «РеализованныеТовары».

2 стартмани

07.04.2021    5668    7    softmaker    0    

1

Поиск заказов по массиву номенклатуры

СКД Платформа 1С v8.3 Система компоновки данных 1С:Комплексная автоматизация 2.х Россия Управленческий учет Абонемент ($m)

Отчет показывает все заказы, в которые входят только заданный в параметрах массив номенклатуры.

1 стартмани

14.06.2022    3191    2    Dunga    4    

0

Универсальный конструктор отчетов СКД (управляемые формы, тонкий клиент)

Инструментарий разработчика СКД Платформа 1С v8.3 Управляемые формы Система компоновки данных Конфигурации 1cv8 Россия Абонемент ($m)

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

3 стартмани

20.11.2017    37663    422    Boneman    30    

115

Отчет-календарь СКД

Банковские операции СКД Платформа 1С v8.3 Бухгалтерский учет Конфигурации 1cv8 Бухгалтерский учет Абонемент ($m)

Хотите повысить наглядность отчетов и выходных форм? Достаточно совместить их с календарем ) Это довольно легко реализовать при помощи СКД.

1 стартмани

01.06.2017    39231    70    kiberiq    13    

96

СКД: красивые надписи в заголовках колонок

СКД Платформа 1С v8.3 Система компоновки данных 1С:Управление производственным предприятием Россия Абонемент ($m)

Необходимо немного исправить вывод надписей в заголовках колонок, сделать более читаемый вариант. Как это сделать?

2 стартмани

27.02.2020    17245    10    wowik    36    

66

Отчет на СКД с выводом остатков по всем датам периода для УТ 10.3 (обычные формы)

СКД Система компоновки данных 1С:Управление торговлей 10 Россия Управленческий учет Абонемент ($m)

Требовалось получить остатки на каждую дату периода с целью дальнейшего вывода в любых целях. В обработке используется вспомогательный макет СКД, из которого и получается таблица остатков. Далее ее просто вывожу через другое СКД, так как это просто пример. Вы можете встроить это себе в любую обработку.

1 стартмани

23.12.2019    9420    8    jump0    0    

1

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

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

В данной публикации приводится пример программного добавления параметров редактирования для поля выборки в СКД.

1 стартмани

25.11.2019    14753    4    Isonic    8    

32

Расчет сложных итогов СКД

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Малоизвестный прием для расчета итогов в отчетах на СКД.

1 стартмани

05.08.2019    71581    55    masterkio    28    

169

Иерархическая нумерация в отчете СКД с помощью макета поля

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Представляю Вашему вниманию вариант решения задачи нумерации строк иерархического отчета на СКД.

1 стартмани

28.06.2019    17968    19    Isonic    15    

27

Поле "Отбор" в управляемой форме используя СКД

СКД Управляемые формы Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Пример, который осуществляет отбор ссылок при помощи СКД, макет компоновки создается программно.

1 стартмани

17.05.2019    26161    22    artms    4    

18

Отладка сложных отчетов на СКД

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Россия Абонемент ($m)

Расширение для отладки сложных отчетов на СКД (в т.ч. для собираемых программно "на лету") и быстрого перехода к отладке таких отчетов в консоли запросов и отчетов на СКД.

1 стартмани

28.12.2018    50833    181    maxx    65    

185

И снова группировка столбцов в СКД

СКД Платформа 1С v8.3 Система компоновки данных 1С:Управление торговлей 11 Россия Абонемент ($m)

В публикации описано создание отчета "Остатки по складам" с группировкой по строкам и столбцам.

1 стартмани

23.10.2018    25356    2    vasilievil    9    

8

Получение родителей верхних уровней отчетом на СКД

СКД Платформа 1С v8.3 Система компоновки данных 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Абонемент ($m)

Выводит данные по группам верхних уровней по иерархии номенклатуры. Можно выбрать число верхних групп.

1 стартмани

05.10.2018    13788    23    3s7    2    

11

Параметризованные заголовки полей СКД

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Доработанный шаблон типового отчета, который это позволяет менять заголовки полей в зависимости от значений параметров.

2 стартмани

21.09.2018    16360    4    echo77    3    

27

Преобразование отбора компоновки данных к линейному условию для запроса

СКД Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m)

Описание механизма преобразования интерактивного отбора компоновки данных в условие для использования в запросе, данный механизм можно использовать в конфигурации Бухгалтерия предприятия 3.0 и везде в управляемых приложениях, где используется регистр бухгалтерии "Хозрасчетный", также можно адаптировать к любому источнику данных

10 стартмани

10.09.2018    9226    3    scarabey2006    4    

2

Вывод результата отчета СКД в разные табличные документы

СКД Система компоновки данных Конфигурации 1cv8 Россия Абонемент ($m)

В ходе выполнения своей повседневной работы столкнулся с интересной клиентской задачей - требовалось результат отчета СКД вывести на форму отчета в разные вкладки формы в разные табличные документы. Как оказалось, информации по такому выводу отчета в интернете маловато, поэтому решил скомпоновать свой опыт решения этой задачи в одной статье.

1 стартмани

21.08.2018    24460    23    Dipod    4    

20

Расшифровка табличного документа, сформированного СКД

СКД Система компоновки данных Конфигурации 1cv8 Россия Абонемент ($m)

Функция делает постобработку табличного документа, чтобы можно было открыть поля ссылочного типа, не имея данных расшифровки (например, после сохранения в mxl)

2 стартмани

29.06.2017    23070    10    SITR-utyos    11    

42

Расстояние между населенными пунктами в виде таблицы лесенкой

СКД Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

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

5 стартмани

05.05.2017    8587    1    user745658    2    

3

Произвольная иерархия в СКД (системе компоновки данных)

СКД Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Как сгруппировать данные из таблицы значений по любой выдуманной иерархии в СКД (системе компоновки данных)

1 стартмани

06.12.2016    9613    25    338050247    2    

4