|
СКД ошибка расшифровки | ☑ | ||
|---|---|---|---|---|
|
0
kavonline
09.02.11
✎
16:45
|
При программном формировании отчета:
СхемаКомпоновкиДанных = Отчеты.АналитикаДвиженийНоменклатуры.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки(); ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); Результат = Элементы.Результат; Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); выдает ошибку ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); по причине: Несоответствие типов (параметр номер '3') не пойму в чем мой косяк, помогите плз. иначе расшифровка в отчете не работает |
|||
|
1
kavonline
09.02.11
✎
17:36
|
Если перед ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки) вывести
ТипЗнч(ДанныеРасшифровки) то получим Строка. Помогите плз, в чем косяк может быть? Уже весь инет облазил. |
|||
|
2
kavonline
10.02.11
✎
13:22
|
У реквизита формы отчета ДанныеРасшифровки стоит тип Строка, видимо дело в этом. Подскажите плз какой должен быть тип?
|
|||
|
3
Megas
10.02.11
✎
13:29
|
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
Закоменть строчку |
|||
|
4
kavonline
10.02.11
✎
13:38
|
Ну если закоментить то тим Строка (это же реквизит формы) и ошибка ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки) т.к. ДанныеРасшифровки неправильный тип. Если например сделать
ДанныеРасшифровки1=Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки1); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки1); то ошибки нет но при клике по ячейке отчета выскакивает окошко с цифрой, видимо какой то идентификатор. |
|||
|
5
Megas
10.02.11
✎
13:54
|
(4) У реквизита формы?
Удали его нафиг.. тыж создаёшь новый ! |
|||
|
6
Megas
10.02.11
✎
13:54
|
(5) к (2)
|
|||
|
7
kavonline
10.02.11
✎
14:11
|
Ну тогда ошибок нет, но по щелчку вылетает окошко с какой то цифиркой, как ее обработать подскажите плз.
|
|||
|
8
Megas
10.02.11
✎
14:26
|
Это и есть расшифровка.
Если Расшифровка <> Неопределено тогда ИндексРасшифровки = Число(Расшифровка); ОбработкаРасшифорки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); ЭлементРасшифровкиДанных = ДанныеРасшифровки.Элементы[ИндексРасшифровки]; ЭлементРасшифровкиДанныхПоля = ЭлементРасшифровкиДанных.ПолучитьПоля()[0]; Если ЭлементРасшифровкиДанныхПоля.Поле = "Контрагент" тогда ОбработкаРасшифорки.ОткрытьЗначение(ЭлементРасшифровкиДанных.Идентификатор,Новый ПолеКомпоновкиДанных(ЭлементРасшифровкиДанныхПоля.Поле)); КонецЕсли; иначеЕсли Область.Текст = "Контрагент" или Область.Текст = "Город" или Область.Текст = "Тип цен" тогда Если Область.Текст = "Контрагент" тогда ПолеПорядка = "Контрагент"; ИначеЕсли Область.Текст = "Город" тогда ПолеПорядка = "Город"; ИначеЕсли Область.Текст = "Тип цен" тогда ПолеПорядка = "ТипЦен"; КонецЕсли; ПолеПорядка = Новый ПолеКомпоновкиДанных(ПолеПорядка); КомпоновщикНастроек.Настройки.Порядок.Элементы.Очистить(); ЭлементПорядка = КомпоновщикНастроек.Настройки.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); ЭлементПорядка.Использование = истина; ЭлементПорядка.Поле = ПолеПорядка; ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; Сформировать(); КонецЕсли; Как простенький пример, а так почитай в книжке Про СКД |
|||
|
9
Megas
10.02.11
✎
14:27
|
ИндексРасшифровки = Число(Расшифровка);
ОбработкаРасшифорки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); ЭлементРасшифровкиДанных = ДанныеРасшифровки.Элементы[ИндексРасшифровки]; ЭлементРасшифровкиДанныхПоля = ЭлементРасшифровкиДанных.ПолучитьПоля()[0]; Если ЭлементРасшифровкиДанныхПоля.Поле = "Контрагент" тогда ОбработкаРасшифорки.ОткрытьЗначение(ЭлементРасшифровкиДанных.Идентификатор,Новый ПолеКомпоновкиДанных(ЭлементРасшифровкиДанныхПоля.Поле)); КонецЕсли; Ещё можно не ЭлементРасшифровкиДанных.ПолучитьПоля()[0]; а ЭлементРасшифровкиДанных.ПолучитьРодителя() //так вроде В общем смотри в отладчике |
|||
|
10
Megas
10.02.11
✎
14:29
|
Пишется это в Событии "Выбор" или "ОбработкаРасшифровку" у Табличного дркумента
|
|||
|
11
Megas
10.02.11
✎
14:33
|
в (8) я просто сморю куда кликнул , и если в шапку то сортировку делаю, а если по контрагенту то открываю справочник.
Это тупо и топорно, а так по клеточке используя ЭлементРасшифровкиДанных.ПолучитьПоля() и Получая родителей можно получить любые данные ячейки (строка , колонка.) |
|||
|
12
kavonline
10.02.11
✎
14:36
|
Да, спс за пример, но ДанныеРасшифровки недоступно т.к. реквизит формы я грохнул, как теперь его предеть в процедуру РезультатОбработкаРасшифровки()
|
|||
|
13
Megas
10.02.11
✎
14:44
|
(12) мм.. а попробуй ещё не писать
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; или объяви его вне процедур тоесть перем ДанныеРасшифровки ... .. всякие функции и в конце ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; |
|||
|
14
kavonline
10.02.11
✎
14:52
|
Ну так не будет работать, а вот в ПриСозданииНаСервере() проходит. Я пытаюсь сделать так
&НаКлиенте Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; РезультатОбработкаРасшифровкиНаСервере(Расшифровка); КонецПроцедуры &НаСервере Процедура РезультатОбработкаРасшифровкиНаСервере(Расшифровка) ТипЗнч(ДанныеРасшифровки) // выдает Неопределено КонецПроцедуры Может надо через ВременноеХранилище перекидывать? Кстати, все это реализуется в модуле формы |
|||
|
15
Megas
10.02.11
✎
14:55
|
Чёто то мутиш =)
Кстати я 8.2 не знаю... |
|||
|
16
kavonline
10.02.11
✎
15:00
|
да уж, приколол :)
|
|||
|
17
kavonline
10.02.11
✎
16:48
|
Я домучал вопрос, если кому интересно то описываю свое решение:
1. Реализуется все в модуле формы отчета 2. Реквизит формы ДанныеРасшифровки (Строка) переименовал в АдресДанныхРасшифровки. 3. Процедура СформироватьОтчетНаСервере() СхемаКомпоновкиДанных = Отчеты.АналитикаДвиженийНоменклатуры.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); АдресДанныхРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровки, УникальныйИдентификатор); Результат = Элементы.Результат; Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина); 4. Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(ПолучитьАдресСКД()); ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(АдресДанныхРасшифровки,ИсточникДоступныхНастроек); Результ = Неопределено; Параметр = Неопределено; ДоступныеДействия = Новый Массив; ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение); ОбработкаРасшифровки.ВыбратьДействие(Расшифровка,Результ,Параметр,ДоступныеДействия); ОткрытьЗначение(Параметр); 5. Функция ПолучитьАдресСКД() (на сервере) СхемаКомпДанных = Отчеты.АналитикаДвиженийНоменклатуры.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); АдресСКД = ПоместитьВоВременноеХранилище(СхемаКомпДанных); Возврат АдресСКД; Если кто то порекомендует лучший вариант буду благодарен |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |