|
Группировки в отчете | ☑ | ||
---|---|---|---|---|
0
bonny
08.09.11
✎
10:00
|
Добрый день! Подскажите, пожалуйста, каким образом в отчете на СКД можно программно задавать порядок группировок. Ситуация следующая: есть отчет на СКД и он вызывается из 2х справочников, необходимо, чтобы верхней группировкой был элемент того справочника, из которого вызывается отчет.
Заранее благодарна. |
|||
1
Wobland
08.09.11
✎
10:08
|
как это - отчёт вызывается из справочника?
отсортировать тебе результат нужно что-ли? тогда предложу добавить доп. поле и сортировать по нему. ну и что-то типа ВЫБОР КОГДА Элемент=&НужныйЭлемент ТОГДА 1 ИНАЧЕ 0 КОНЕЦ |
|||
2
Wobland
08.09.11
✎
10:09
|
и, кстати, где же оно?
|
|||
3
bonny
08.09.11
✎
10:11
|
Нет. На форме списка справочника есть кнопка, по которой формирую отчет.
Процедура ПерейтиВрегистр(Команда) ФормаРегистра = ПолучитьФорму("РегистрНакопления.Движение.ФормаСписка"); УсловияОтбора = Новый Структура("Сотрудник", Элементы.Список.ТекущаяСтрока); ПараметрыФормы = Новый Структура("Отбор", УсловияОтбора); ОткрытьФорму(ФормаРегистра.ИмяФормы,ПараметрыФормы); КонецПроцедуры В настройках отчета задан порядок группировки: Сотрудник, номенклатура. Нужно открыть отчет из справочника "Номенклатура" с группировкой Номенклатура, сотрудник. Как это задать программно? Может я что-то не так объясняю, извините, я просто новичок |
|||
4
Wobland
08.09.11
✎
10:15
|
(3) ещё раз ничего не понял. как программно запустить отчёт?
может, как-то я не так понимаю, извините, я не местный |
|||
5
bonny
08.09.11
✎
10:19
|
простите, пожалуйста, я закрутилась совсем, сейчас
|
|||
6
bonny
08.09.11
✎
10:21
|
&НаКлиенте
Процедура СформироватьОтчетПоДвижениям(Команда) ФормаОтчета = ПолучитьФорму("Отчет.ОтчетПоДвижению.ФормаОбъекта"); УсловияОтбора = Новый Структура("Сотрудник", Элементы.Список.ТекущаяСтрока); ПараметрыФормы = Новый Структура("Отбор, СформироватьПриОткрытии", УсловияОтбора, Истина); ОткрытьФорму(ФормаОтчета.ИмяФормы, ПараметрыФормы); КонецПроцедуры |
|||
7
bonny
08.09.11
✎
10:22
|
(3) это совсем не та процедура
|
|||
8
Wobland
08.09.11
✎
10:23
|
(7) ты это... раскрутись обратно, собери всё в один пост и выскажи. и фото не забудь
|
|||
9
askharlov
08.09.11
✎
10:27
|
Надо программно создавать структуру: КомпоновщикНастроек.Настройки.Структура.Добавить()
В одном случае в верхнюю группировку добавлять одну группировку, во втором - другую |
|||
10
bonny
08.09.11
✎
10:30
|
Подскажите, пожалуйста, каким образом в отчете на СКД можно программно задавать порядок группировок. Ситуация следующая: есть отчет на СКД и он вызывается из 2х справочников, необходимо, чтобы верхней группировкой был элемент того справочника, из которого вызывается отчет.
В настройках отчета задан порядок группировки: Сотрудник, номенклатура, при открытии из справочника "Сотрудники" отчет формируется нормально. Нужно открыть отчет из справочника "Номенклатура" с группировкой Номенклатура, сотрудник. Как это задать программно, чтобы группировкой первого уровня была номенклатура, а группировкой второго уровня сотрудник? &НаКлиенте Процедура СформироватьОтчетПоДвижениям(Команда) ФормаОтчета = ПолучитьФорму("Отчет.ОтчетПоДвижению.ФормаОбъекта"); УсловияОтбора = Новый Структура("Сотрудник", Элементы.Список.ТекущаяСтрока); ПараметрыФормы = Новый Структура("Отбор, СформироватьПриОткрытии", УсловияОтбора, Истина); ОткрытьФорму(ФормаОтчета.ИмяФормы, ПараметрыФормы); КонецПроцедуры Можно ли как-нибудь передать параметры группировки в СКД? |
|||
11
bonny
08.09.11
✎
10:34
|
Я поробовала вот так:
Настройки = ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки; ГруппировкаНоменклатура = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ГруппировкаНоменклатура.Использование = ИСТИНА; ПолеНоменклатура = ГруппировкаНоменклатура.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеНоменклатура.Использование = ИСТИНА; ПолеНоменклатура.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия; ПолеНоменклатура.Поле = Новый ПолеКомпоновкиДанных("Номенклатура"); ФормаОтчета.Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); Но в итоге ничего не получилось:( |
|||
12
askharlov
08.09.11
✎
10:57
|
У тебя не добавлены поля выбора.
Необходимо в конце дописать еще: ТиповыеОтчеты.ДобавитьАвтоВыбранноеПоле(ГруппировкаНоменклатура); |
|||
13
askharlov
08.09.11
✎
10:58
|
Вот рабочий код:
// Добавляем первую группировку НоваяГруппировка = КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ПолеГруппировки = НоваяГруппировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных ("Цех"); ТиповыеОтчеты.ДобавитьАвтоВыбранноеПоле(НоваяГруппировка); ТиповыеОтчеты.ДобавитьАвтоЭлементПорядка(НоваяГруппировка); // Добавляем вторую группировку НоваяГруппировка = НоваяГруппировка.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ПолеГруппировки = НоваяГруппировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных ("Склад"); ТиповыеОтчеты.ДобавитьАвтоВыбранноеПоле(НоваяГруппировка); ТиповыеОтчеты.ДобавитьАвтоЭлементПорядка(НоваяГруппировка); // Добавляем детальные записи НоваяГруппировка = НоваяГруппировка.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ТиповыеОтчеты.ДобавитьАвтоВыбранноеПоле(НоваяГруппировка); ТиповыеОтчеты.ДобавитьАвтоЭлементПорядка(НоваяГруппировка); |
|||
14
askharlov
08.09.11
✎
10:58
|
Детальные записи и автоэлемент порядка не обязательны, а вот автовыбранное поле обязательно должно быть
|
|||
15
bonny
08.09.11
✎
14:22
|
Что такое "ТиповыеОтчеты"?
|
|||
16
bonny
08.09.11
✎
15:21
|
Люди, ну подскажите, что не так?
&НаКлиенте Процедура СформироватьОтчетПоДвижениям(Команда) ФормаОтчета = ПолучитьФорму("Отчет.ОтчетПоДвижению.ФормаОбъекта"); Настройки = ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки; Настройки.Структура.Очистить(); //добавить группировку // ГруппировкаПоНоменклатуре = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ГруппировкаПоНоменклатуре.Имя = "Номенклатура"; ГруппировкаПоНоменклатуре.Использование = Истина; ////созданная группировка по полю "Номенклатура" // ПолеГруппировкиНоменклатура = ГруппировкаПоНоменклатуре.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировкиНоменклатура.Использование = Истина; ПолеГруппировкиНоменклатура.Поле = Новый ПолеКомпоновкиДанных("Номенклатура"); ПолеГруппировкиНоменклатура.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия; ПолеГруппировкиНоменклатура.ТипДополнения = ТипДополненияПериодаКомпоновкиДанных.БезДополнения; ////добавить выводимые поля в группировке: Номенклатура и количество остаток для данной группировки // ВыбранноеПоле = ГруппировкаПоНоменклатуре.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Номенклатура"); ВыбранноеПоле = ГруппировкаПоНоменклатуре.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток"); ////добавим детальные записи как подгруппу в "Номенклатура". Все отличие только в том, что нет группировки // ДетальныеЗаписи = ГруппировкаПоНоменклатуре.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ДетальныеЗаписи.Имя = "Детальные"; ДетальныеЗаписи.Использование = Истина; ////добавить выводимые поля в детальных записях: Рабочее место и количество остаток // ВыбранноеПоле = ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("РабочееМесто"); ВыбранноеПоле = ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток"); ФормаОтчета.Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); ПараметрыФормы = Новый Структура("СформироватьПриОткрытии", Истина); ОткрытьФорму(ФормаОтчета.ИмяФормы, ПараметрыФормы); КонецПроцедуры |
|||
17
askharlov
08.09.11
✎
17:40
|
ТиповыеОтчеты это Общий модуль. Если в твоей конфигурации этого модуля нет, то вот код соответствующих функций:
Функция ДобавитьАвтоВыбранноеПоле(Структура) Экспорт ВыбранноеПоле = Структура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); Возврат ВыбранноеПоле; КонецФункции Процедура ДобавитьАвтоЭлементПорядка(Строка) Экспорт ПолеПолеПорядок = Строка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных")); КонецПроцедуры |
|||
18
bonny
09.09.11
✎
15:36
|
(17) спасибо, большое, только все равно у меня ничего не формируется:(
что-то все же не так я делаю:( |
|||
19
bonny
09.09.11
✎
15:38
|
В (16) неправильный код?
|
|||
20
Челмедведосвин
09.09.11
✎
15:39
|
А если тебе 2 СКД или 2 варианта сделать и выбирать правильный в зависимости от справочника?
|
|||
21
bonny
09.09.11
✎
15:45
|
(20) а как передать при формировании не основную схему, а вторую?
|
|||
22
NorthWoman
09.09.11
✎
15:49
|
Аналогичную проблему решила через создание 2х схем настроек и в зависимости откуда вызывается отчет, выбирала нужную схему.
|
|||
23
bonny
09.09.11
✎
16:00
|
(22) подскажите, как выбрать схему нужную?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |