Поиск группировок СКД

1. silverr 13 14.12.21 17:05 Сейчас в теме
Всем доброго времени суток!
Как найти в СКД группировки детальных записей? Именно найти существующие, а не добавить новые, т.к. пользователь мог или самостоятельно добавить(найти и использовать) такую-же группировку и сохранить ее в настройках.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dmbarchenkov 14.12.21 17:29 Сейчас в теме
(1) "Настройки" содержат коллекцию "Структура", у элемента Структуры есть поле "ПоляГруппировки", которое содержит коллекцию группировок, как то так.....
ПоляГрупировки = Настройки.Структура[0].ПоляГруппировки.Элементы[0]; 
3. silverr 13 14.12.21 17:51 Сейчас в теме
(2)Спасибо!
Сам пытался через структуру получить эту коллекцию, но увы. Сообщение об ошибке:
Поле объекта не обнаружено (ПоляГруппировки)
{ВнешняяОбработка.МояОбработка.Форма.Форма.Форма(2434)}:	ПоляГрупировки = Настройки.Структура[0].ПоляГруппировки.Элементы[0];
{ВнешняяОбработка.МояОбработка.Форма.Форма.Форма(2407)}:		ЕстьГруппировка = ПроверитьГруппировкуСКДНаСервере("ДвижениеТоваров", "ОсновнаяСхемаКомпоновкиДанных", "Регистратор");


Ваш метод с первого раза не вошел, может я "Настройки" неправильно получаю.
	СКД = Отчеты[Отчет].ПолучитьМакет(Вариант);
	Настройки = СКД.ВариантыНастроек[0].Настройки;

Речь идет о необходимости добавление и использования группировки "Документ" в отчете "ДвиженияТоваров" 1С БП 3.0.
4. dmbarchenkov 14.12.21 18:04 Сейчас в теме
(3) попробуйте так:
СКД = Отчеты[Отчет].ПолучитьМакет(Вариант);
НастройкиСКД = СКД.ВариантыНастроек[0].Настройки;
КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиСКД);
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
5. silverr 13 14.12.21 18:56 Сейчас в теме
6. silverr 13 14.12.21 19:02 Сейчас в теме
(4) Такинет, эффект тотже.

Поле объекта не обнаружено (ПоляГруппировки)
7. SlavaKron 15.12.21 09:18 Сейчас в теме
(6) Потому, что первый элемент структуры в этом отчете – ТаблицаКомпоновкиДанных, а не ГруппировкаКомпоновкиДанных.
8. EVKash 16 15.12.21 10:00 Сейчас в теме
(1) Если конфигурация на БСП, то
	ГруппировкиСтруктуры = КомпоновкаДанныхКлиентСервер.ПолучитьГруппировки(КомпоновщикНастроек, Ложь);
	
	Для каждого ГруппировкаСтруктуры Из ГруппировкиСтруктуры Цикл
		
		Если ГруппировкаСтруктуры.Значение.ПоляГруппировки.Элементы.Количество() = 0 Тогда
9. silverr 13 15.12.21 10:47 Сейчас в теме
(8)Доброго времени суток!
Да, конфигурация на БСП, и общий модуль "КомпоновкаДанныхКлиентСервер", но вот процедуры с указанным именем там нет. Как я уже писал, конфигурация БП 3.0.
Хотел воспользоваться в общем модуле "БухгалтерскиеОтчетыКлиентСервер" процедурой "НайтиГруппировку"

// Возвращает элемент структуры настроек компоновки данных содержащий поле группировки с указанным именем.
// Поиск осуществляется по указанной структуре и все ее подчиненным структурам.
// В случае неудачи возвращает Неопределено.
//
// Параметры:
//   СтруктураГруппировки - ГруппировкаТаблицыКомпоновкиДанных, ГруппировкаКомпоновкиДанных, 
//               КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных - элемент структуры компоновки данных.
//   ИмяПоля - Строка - Имя поля группировки.
//
// Возвращаемое значение:
//   ГруппировкаТаблицыКомпоновкиДанных, ГруппировкаКомпоновкиДанных, Неопределено.
//
Функция НайтиГруппировку(СтруктураГруппировки, ИмяПоля) Экспорт
Показать


Пока безуспешно.
10. EVKash 16 15.12.21 13:15 Сейчас в теме
(9)
Как я уже писал, конфигурация БП 3.0.

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

// Добавляет вложенные группировки элемента структуры.
//
Процедура ДобавитьГруппировки(Структура, СписокГруппировок, ПоказыватьГруппировкиТаблиц = Истина)
	
	Для каждого ЭлементСтруктуры Из Структура Цикл
		Если ТипЗнч(ЭлементСтруктуры) = Тип("ТаблицаКомпоновкиДанных") Тогда
			ДобавитьГруппировки(ЭлементСтруктуры.Строки, СписокГруппировок);
			ДобавитьГруппировки(ЭлементСтруктуры.Колонки, СписокГруппировок);
		ИначеЕсли ТипЗнч(ЭлементСтруктуры) = Тип("ДиаграммаКомпоновкиДанных") Тогда
			ДобавитьГруппировки(ЭлементСтруктуры.Серии, СписокГруппировок);
			ДобавитьГруппировки(ЭлементСтруктуры.Точки, СписокГруппировок);
		Иначе
			СписокГруппировок.Добавить(ЭлементСтруктуры);
			Если ПоказыватьГруппировкиТаблиц Тогда
				ДобавитьГруппировки(ЭлементСтруктуры.Структура, СписокГруппировок);
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры
Показать
11. silverr 13 15.12.21 14:40 Сейчас в теме
(10)Спасибо за ответ!
Не хочется тащить к себе все подряд, даже если очень нужно))). Хочу использовать встроенные в конфигурацию методы БСП.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот