|
СКД: две схемы в одном отчете (в N-й раз) | ☑ | ||
---|---|---|---|---|
0
Cmyk32
19.11.14
✎
13:16
|
Всем привет!
У меня есть отчет, который формирует данные либо по клиенту, либо по менеджеру + запросы несколько отличаются. Подготовила две схемы "СКД_Менеджер" и "СКД_Контрагент". На форме переключатель для выбора нужной схемы. Код: &НаСервере Процедура ИзменитьСкхему() ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); СКД_Менеджер = ОтчетОбъект.ПолучитьМакет("СКД_енеджер"); ОтчетОбъект.СхемаКомпоновкиДанных = СКД_Менеджер; ОтчетОбъект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД_Менеджер)); ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(СКД_Менеджер.НастройкиПоУМолчанию); ЗначениеВРеквизитФормы(ОтчетОбъект, "Отчет"); КонецПроцедуры Далее, жму "Сформировать". Ошибка: "Поле "Менеджер" не обнаружено". Подскажите, где ошибаюсь? |
|||
1
DS
19.11.14
✎
13:23
|
Кривая схема?
|
|||
2
Cmyk32
19.11.14
✎
13:29
|
(1) Может кривая. Как понять?
|
|||
3
sapphire
19.11.14
✎
13:30
|
(0) В способе решения проблемы
|
|||
4
Cmyk32
19.11.14
✎
13:32
|
(3) Отлично! Ждала этого ответа) Какая альтернатива?
|
|||
5
DS
19.11.14
✎
13:33
|
(2) Искать поле "Менеджер" в схеме.
|
|||
6
Cmyk32
19.11.14
✎
13:34
|
(5) Мой код меняет схему скд, но только в части настроек. Получается запрос остается от старой схемы, где был "Контрагент".
|
|||
7
sapphire
19.11.14
✎
13:36
|
(4) Источник данных - объединение запроса, туда добавляете по отдельности оба запроса.
в каждый запрос(как набор данных) добавить поле, например "Раздел" и присваивать ему номер, например 1,2 и т.п. В вариантах же отчета Вы используете отбор по полю раздел. |
|||
8
sapphire
19.11.14
✎
13:37
|
и никакого дополнительного кодинга не нужно
|
|||
9
Cmyk32
19.11.14
✎
13:37
|
(7) Поняла, сейчас попробую.
|
|||
10
sapphire
19.11.14
✎
13:40
|
ну и самая распространенная ошибка - это инициализация Компоновщика
ЭтотОбъект=РеквизитФормыВЗначение("Отчет"); Схема=ЭтотОбъект.ПолучитьМакет("СКД_енеджер"); АдресСхемы=ПоместитьВоВременноеХранилище(Схема,Новый УникальныйИдентификатор()); КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы)); КомпоновщикНастроек.ЗагрузитьНастройки(Схема.ВариантыНастроек[0].Настройки); |
|||
11
sapphire
19.11.14
✎
13:41
|
+(0) аще глянул в (10) таки очепятко исчо в модуле понеже
....ПолучитьМакет("СКД_Менеджер");//пропущена буква М |
|||
12
antoneus
19.11.14
✎
13:45
|
Я бы добавил реквизит объекта (именно объекта), в котором выбирается способ формирования и в процедуре ПриКомпоновкеРезультата в зависимости от значения реквизита уже бы выводил какой надо отчет.
|
|||
13
sapphire
19.11.14
✎
13:46
|
(12) хм.. а зачем?
|
|||
14
Cmyk32
19.11.14
✎
13:51
|
(7) Переделала. Так работает!
Но не лишняя ли выборка? - если нужен отчет по менеджеру, то формируются же оба запроса. А отбор по разделу накладывается после получается результата запроса по всем разделам. |
|||
15
antoneus
19.11.14
✎
13:53
|
(13) потому что могу)
|
|||
16
Cmyk32
19.11.14
✎
13:54
|
(12) Если Вы имеете ввиду это?
Процедура ПриКомпоновкеРезультата(...) СтандартнаяОбработка = Ложь; //ПРОГРАММНАЯ КОМПАНОВКА И ВЫВОД То пробовала. У меня засада с параметрами получилась. СКД = ЭтотОбъект.ПолучитьМакет("СКД_Менеджер"); Настройки = СКД.НастройкиПоУмолчанию; И когда пытаюсь присвоить параметрам значение, оказывается, что их нет в настройках. |
|||
17
sapphire
19.11.14
✎
13:55
|
(14) В чем проблема?
Добавить параметр какая выборка нужна :) Например, добавляем параметр - &ПоМенеджеру тип булево. В запросе по контрагентам в конце добавляем условие &ПоМенеджеру=ЛОЖЬ , а запросе по менеджеру, наоборот,&ПоМенеджеру=ИСТИНА |
|||
18
sapphire
19.11.14
✎
13:56
|
Да вообще можно изгаляться, как с параметрами, так и с чем угодно :)
|
|||
19
sapphire
19.11.14
✎
13:57
|
(16) Вы невнимательно читали.
см (10). Неверно инициализируется компоновщик настроек. |
|||
20
sapphire
19.11.14
✎
13:58
|
+(17) А в параметрах настройки варианта указать явно необходимое значение :)
|
|||
21
elCust
19.11.14
✎
14:26
|
(0) Капну чуть глубже.
СКД просто выводит строки? Если так, то легче пользоваться внешним источником, т.е. ТЗ формировать и в СКД выводить. |
|||
22
sapphire
19.11.14
✎
14:35
|
(21) Опять же, зачем?! :)))
|
|||
23
sapphire
20.11.14
✎
11:23
|
(0) Разобрались?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |