|
СКД программное формирование группировок | ☑ | ||
---|---|---|---|---|
0
men47
31.08.15
✎
14:01
|
Здравствуйте, коллеги! Нужна ваша помощь!
Есть отчет на скд без форм (типовой, УТ 11.1, "ВедомостьПоТоварамОрганизаций"). Клиент задал задание: сделать на форме поля типа "ЧекБокс", при нажатии менялась группировка, т.е. поставили галочку на против "Организация", отчет строится по организации, поставили на против "Номенклатуры" и "Организация", отчет строится по группировкам "Организация", "Номенклатура" и т.п. Все хорошо, я прописал форму, вывел чек боксы. Вставил код на формирование отчета по кнопке, вставил код на формирование группировок. Все хорошо формирует, но есть одно НО. Если я ставлю галочку чисто организация, то он не выводит чисто организация, пока я не нажму кнопку "Установить стандартные настройки". После того как нажму, все строит. Нужна вот помощь, что нужно вписать=) |
|||
1
men47
31.08.15
✎
14:02
|
не только чисто организация, с любыми группировками так
|
|||
2
men47
31.08.15
✎
14:03
|
Если нужно код формирование отчета и группировок могу скинуть
|
|||
3
DexterMorgan
31.08.15
✎
14:11
|
Покажи код где передаешь настройки компоновщику
|
|||
4
men47
31.08.15
✎
14:14
|
Вот я задаю:
&НаСервереБезКонтекста Процедура ДобавитьГруппировки(ПараметрыОтчета, КомпоновщикНастроек) Если ТипЗнч(КомпоновщикНастроек) = Тип("КомпоновщикНастроекКомпоновкиДанных") Тогда СтруктураНастроек = КомпоновщикНастроек.Настройки.Структура; Иначе СтруктураНастроек = КомпоновщикНастроек; КонецЕсли; Для Каждого ЭлементСтруктуры Из СтруктураНастроек Цикл Группировка = ЭлементСтруктуры; Если ТипЗнч(Группировка) = Тип("ГруппировкаКомпоновкиДанных") Тогда Родитель = Группировка.Родитель; ПерваяГруппировка = Истина; Индекс = Родитель.Структура.Индекс(Группировка); Родитель.Структура.Удалить(Группировка); Для Каждого ПолеВыбраннойГруппировки Из ПараметрыОтчета.Группировки Цикл Если ПолеВыбраннойГруппировки.Использование Тогда Если ПерваяГруппировка Тогда Группировка = Родитель.Структура.Вставить(Индекс, Тип("ГруппировкаКомпоновкиДанных")); ПерваяГруппировка = Ложь; Иначе Группировка = Группировка.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); КонецЕсли; ПолеГруппировки = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Использование = Истина; ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ПолеВыбраннойГруппировки.Поле); Если ПолеВыбраннойГруппировки.ТипГруппировки = 1 Тогда ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия; ИначеЕсли ПолеВыбраннойГруппировки.ТипГруппировки = 2 Тогда ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.ТолькоИерархия; Иначе ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы; КонецЕсли; Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); Группировка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных")); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры Вот формирую &НаСервере Функция СформироватьОтчетНаСервере() Экспорт Результат.Очистить(); //Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Очистить(); ПараметрыОтчета = Новый Структура; ПараметрыОтчета.Вставить("Группировки" , Группировки.Выгрузить()); КомпоновщикНастроек = Отчет.КомпоновщикНастроек; ДобавитьГруппировки(ПараметрыОтчета, КомпоновщикНастроек); ЗначРеквизита = РеквизитФормыВЗначение("Отчет"); СхемаКомпоновкиДанных = ЗначРеквизита.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ,, Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Элементы.Результат.ОтображениеСостояния.Видимость = Ложь; Элементы.Результат.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать; КонецФункции |
|||
5
Aceforg
31.08.15
✎
14:21
|
Попробуй
СтруктураНастроек = КомпоновщикНастроек.ПользовательскиеНастройки.Структура; |
|||
6
men47
31.08.15
✎
14:22
|
(5) хм, и что мне получит получения структуры пользовательских настроек? попробовать поиграться с ней?
|
|||
7
men47
31.08.15
✎
14:23
|
{Форма.ФормаОтчета.Форма(39)}: Поле объекта не обнаружено (Структура)
СтруктураНастроек = КомпоновщикНастроек.ПользовательскиеНастройки.Структура; |
|||
8
Aceforg
31.08.15
✎
14:24
|
Ну ты же играешь со стандартными настройками, соответственно тебя спрашивают "Установить стандартные настройки". Играйся сразу пользовательскими настройками
|
|||
9
men47
31.08.15
✎
14:27
|
(8) не вариант=( там даже в структуре ПользовательскиеНастройки ничего интересного
|
|||
10
men47
31.08.15
✎
14:44
|
самое что грустно, это то, что если я в конфигураторе делаю так:
[URL=http://radikal.ru/fp/f043b41a0dfc41ffbbddef10d719ac42][IMG]http://s018.radikal.ru/i502/1508/35/7ac6479e7721t.jpg[/IMG][/URL] то он группировки корректно строит, т.е. ставлю организация, только организация, ставлю организация и номенклатура, он выводит. Но проблема заключается тогда вот в этом: [URL=http://radikal.ru/fp/8c51c2b82eca4a82be30a08700aaa212][IMG]http://s019.radikal.ru/i609/1508/c9/b9807e5f2afdt.jpg[/IMG][/URL] |
|||
11
men47
31.08.15
✎
14:45
|
||||
12
men47
31.08.15
✎
14:46
|
если я убираю в конфигураторе нижнюю номенклатуру, то он перестает автоматически генерировать при включении чек бокса
|
|||
13
DexterMorgan
31.08.15
✎
15:17
|
(7) МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
Замени Настройки на КомпоновщикНастроек.ПолучитьНастройки() |
|||
14
DexterMorgan
31.08.15
✎
15:18
|
(13) к (4)
|
|||
15
DexterMorgan
31.08.15
✎
15:19
|
(4) а блин сорри у тебя так и есть)))
|
|||
16
men47
31.08.15
✎
15:26
|
нашел я в чем проблема
|
|||
17
men47
31.08.15
✎
15:30
|
раскрывая я секрет=))
короче, код с группировкой я нашел из типового какого-то отчета, уже не помню. Если посмотреть код, то там видно, что изменения настроек идет в самих настройках, т.е. внутри. Я попробовал что сделать, я выгрузил настройки. Отправил в процедуру, сделал все изменения которые нужны и загрузил обратно. Вот после таких действий в пользовательском режиме работает на ура! |
|||
18
echo77
31.08.15
✎
21:33
|
По-моему, это все настройками делается, нет?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |