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

08.11.18

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

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

Скачать исходный код

Наименование Файл Версия Размер
Отчет для демонстрации работы с программной расшифровкой СКД:
.erf 13,02Kb
21
.erf 1.1 13,02Kb 21 Скачать

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

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

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

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

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

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

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

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

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

 

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


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

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

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

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

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

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


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

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

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    125052    683    389    

732

Генератор схемы компоновки данных (СКД), написание кода схемы программно

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

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

3 стартмани

05.02.2024    4382    31    obmailok    19    

69

Набор-объект для СКД по тексту или запросу

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

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2155    2    Yashazz    0    

31

СКД на JavaScript в 1С

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

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    8389    20    John_d    25    

124

Использование менеджера временных таблиц в СКД

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

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

05.12.2023    4937    PROSTO-1C    13    

63

Модель СКД

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

DSL для работы с СКД.

1 стартмани

15.11.2023    6021    15    kalyaka    5    

87

Пользовательские настройки отчетов 1С. Часть 1. Простые и расширенные настройки

СКД Инструкции пользователю Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Простые приемы работы с отчетами на СКД. Что нужно знать пользователю про настройку отчетов, чтобы использовать их на полную катушку.

18.09.2023    7381    accounting_cons    7    

29

Разрыв страницы в СКД. Легко!

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

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

01.09.2023    4774    KVIKS    15    

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


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