|
СКД: Цифры вместо расшифровки | ☑ | ||
---|---|---|---|---|
0
mirrr
04.12.11
✎
22:44
|
Программно делаю вывод отчета на скд. При попытке расшифровать ячейку выдается окно с цифрой.
Настройки = КомпоновщикНастроек.Настройки; компоновщикнастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); МакетОформления=ПолучитьМакет("МойМакет"); ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки, МакетОформления); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина); ТабличныйДокумент.Очистить(); // Инициализируем процессор вывода ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
1
mirrr
04.12.11
✎
22:46
|
можно ли сделать стандартную расшифровку, как по стандартной кнопке "сформировать", не используя обработчик расшифровки "РезультатОбработкаРасшифровки"?
|
|||
2
fly7
04.12.11
✎
23:24
|
я мутил макет для каждого поля с параметром
|
|||
3
mirrr
05.12.11
✎
00:39
|
форма управляемая, на клиенте при нажатии на свою кнопку вызывается серверная процедура, из которой идет обращение к процедуре в модуле объекта-отчета. В нем код из (0). Вроде правильно все написано, но выводит цифры в окне вместо расшифровки.
|
|||
4
Живой Ископаемый
05.12.11
✎
00:41
|
какое число?
|
|||
5
mirrr
05.12.11
✎
01:15
|
разные, видимо порядковые номера полей.
|
|||
6
mirrr
05.12.11
✎
01:26
|
так почему (0) не работает?
|
|||
7
Живой Ископаемый
05.12.11
✎
11:48
|
можешь выложить отчет?
|
|||
8
mirrr
05.12.11
✎
15:26
|
(7) конфа там нетиповая, выкладываю код:
У упр. формы реквизиты: Результат(таб. документ), ДанныеРасшифровки. &НаКлиенте Процедура Сформировать(Команда) СформироватьНаСервере(); КонецПроцедуры &НаСервере Процедура СформироватьНаСервере() ОтчетОбъект=ЭтаФорма.РеквизитФормыВЗначение("Отчет"); Дог=ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].Значение; НачДог=ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[1].Значение.ДатаНачала; КонДог=ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[1].Значение.ДатаОкончания; НачСрок=ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[2].Значение.ДатаНачала; КонСрок=ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[2].Значение.ДатаОкончания; Стр1=Новый Структура("Дог,НачДог,КонДог,НачСрок,КонСрок"); Стр1.Вставить("Дог",Дог); Стр1.Вставить("НачДог",НачДог); Стр1.Вставить("КонДог",КонДог); Стр1.Вставить("НачСрок",НачСрок); Стр1.Вставить("КонСрок",КонСрок); ОтчетОбъект.СформироватьОтчет(ЭтаФорма.Результат, ЭтаФорма.ДанныеРасшифровки, Стр1); КонецПроцедуры // СформироватьНаСервере() В модуле объекта: Процедура СформироватьОтчет(ТабличныйДокумент, ДанныеРасшифровки, Стр1) Экспорт <Здесь заполняю ТЗ (ТаблицаРезультат) - внеш. набор данных> ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ДанныеДС", ТаблицаРезультат); Настройки = КомпоновщикНастроек.Настройки; // Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; ДанныеРасшифровки1 = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки1); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки1); ТабличныйДокумент.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры Вообщем перерыл уже весь инет, всякими способами пробовал (и в модуле формы НаСервере делал компоновку), результат один - при 2-ом щелчке - окошко с цифрой. Причем этот же код работает на обычной форме в 8.1, если компоновку делать в модуле формы. Вообщем, сделал расшифровку только через обработчик события "ОбработкаРасшифровки" у таб. документа "Результат" на форме. Подскажите, можно как-то стандартную расшифровку сделать при программной компоновке, не используя обработчик расшифровки у таб. документа? |
|||
9
PVV65
05.12.11
✎
15:29
|
(8) Ни как не могу понять - что должно появиться (какая расшифровка) при двойном щелчке мышью на цифре?
|
|||
10
Живой Ископаемый
05.12.11
✎
15:31
|
2(8)нах... не нужен код.. нужна форма - выложи ее, покажу
|
|||
11
mirrr
06.12.11
✎
13:01
|
через час выложу отчет
|
|||
12
viktor_vv
06.12.11
✎
13:38
|
(10) А словами можно, хотя бы в общих чертах озвучить. А то у меня только через
СкомпоноватьРезультат(ЭлементыФормы.Результат,ДанныеРасшифровки); в форме получилось. Но таким макаром, вроде как, внешние наборы данных туда не закинешь. |
|||
13
mirrr
06.12.11
✎
14:04
|
выкладываю отчет. Вместо расшифровки выходит цифра.
http://narod.ru/disk/33490284001/ВнешнийОтчет1.erf.html |
|||
14
Живой Ископаемый
06.12.11
✎
15:03
|
а... оно еще на УФ... тогда не знаю
|
|||
15
mirrr
06.12.11
✎
15:11
|
(14) пробовал то же на обыч. форме, результат тот же - цифра, а не расшифровка.
|
|||
16
Живой Ископаемый
06.12.11
✎
15:13
|
выкладывай файл с обычной формой, покажу
|
|||
17
mirrr
06.12.11
✎
15:15
|
||||
18
Aprobator
06.12.11
✎
15:18
|
ДанныеРасшифровки - расширение формы отчета. Нефиг их еще раз конструировать.
|
|||
19
Aprobator
06.12.11
✎
15:20
|
а соррь - управляемые формы опять прогладел (
|
|||
20
mirrr
06.12.11
✎
15:22
|
(18),(19) если не делать
ДанныеРасшифровкиСКД = Новый ДанныеРасшифровкиКомпоновкиДанных; а использовать ДанныеРасшифровки - реквизит на форме, то работает, но только на обычной форме. А на управляемой как? |
|||
21
Aprobator
06.12.11
✎
15:28
|
(20) не знаю. На управляемых еще не ваял. Цифры то, это он тебе идентификатор расшифровки показывает.
|
|||
22
mirrr
06.12.11
✎
15:30
|
+(20) т.е. если не создавать ДанныеРасшифровки (ДанныеРасшифровкиСКД = Новый ДанныеРасшифровкиКомпоновкиДанных; ), а использовать ДанныеРасшифровки - расширение формы отчета, то выдает ошибку:
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина); по причине: Несоответствие типов (параметр номер '3') т.е. ДанныеРасшифровки - расширение формы отчета с типом строка. |
|||
23
Живой Ископаемый
06.12.11
✎
15:30
|
2(17) в общем у меня такое было, когда я в свойстве формы "РезультатОтчета" не указал свое поле табличного документа. Но у тебя стоит...
|
|||
24
Стальная Крыса
06.12.11
✎
15:35
|
там все разъяснят:
http://1cskd.ru/2010/06/5-videourokov-rasshifrovki-v-otchetax-skd/ |
|||
25
Aprobator
06.12.11
✎
15:35
|
(23) не тут сложнее. Управляемая форма. Вон СП глянул, так Метод СкомпоноватьРезультат уже другие параметры содержит и есть расширение для формы отчета Расшифровка. Вот только тип у нее нефига не ДанныеРасшифровкиКомпоновкиДанных.
|
|||
26
mirrr
06.12.11
✎
15:38
|
(24) там такого примера нет, делают через обработчик "РезультатОбработкаРасшифровки".
|
|||
27
viktor_vv
06.12.11
✎
15:45
|
(23) О, у меня наверное такая фигня была, кинул свое поле табличного документа, а вот про свойство формы не знал.
|
|||
28
mirrr
06.12.11
✎
15:54
|
с обычной формой понятно: указать в св-ве формы "Результат отчета" поле таб. документа, в коде везде использовать расширение формы отчета "ДанныеРасшифровки".
А в управляемой как? |
|||
29
Стальная Крыса
06.12.11
✎
16:04
|
(28) вообще-то посмотрев уроки по ссылке в (25)
я научился делать расшифровку любых своих отчетов в работе тонкого клиента, т.е. в упр.формах |
|||
30
mirrr
06.12.11
✎
16:07
|
(29) Я хочу сделать без использования обработчика расшифровки "РезультатОбработкаРасшифровки".
|
|||
31
Megas
06.12.11
✎
16:10
|
(0) И чё.. тебе выдают цифру расшифровки, дальше надо с ней работать! В книге по СКД , да и в (25) подозреваю пишут что с ними делать =)
|
|||
32
mirrr
06.12.11
✎
16:11
|
(31) в какой книге по скд?
|
|||
33
Стальная Крыса
06.12.11
✎
16:12
|
(30) как можно сделать расшифровку без обработчика который за это отвечает ? :)
|
|||
34
mirrr
06.12.11
✎
16:14
|
(33) в обычной форме это работает без всяких обработчиков. Есть ДанныеРасшифровки, куда компоновщик макета помещает данные расшифровки
|
|||
35
Стальная Крыса
06.12.11
✎
16:14
|
ведь в 8.2 Расшифровка это "ИдентификаторРасшифровкиКомпоновкиДанных",
через который из временного хранилища получают уже саму расшифровку и т.д. |
|||
36
mirrr
06.12.11
✎
16:20
|
(35) в обычной форме на 8.2 без обработчиков работает при условиях из (28)
|
|||
37
mirrr
06.12.11
✎
16:31
|
как отчет из (13) можно переделать, чтобы была станд. расшифровка (как по станд. команде "Сформировать") без использования обработчика "РезультатОбработкаРасшифровки" ?
|
|||
38
mirrr
06.12.11
✎
16:55
|
^
|
|||
39
Стальная Крыса
06.12.11
✎
17:21
|
никак
ведь нет "стандартной команды" : Расшифровать Расшифровку можно сделать только в соответствующем обработчике |
|||
40
mirrr
06.12.11
✎
17:25
|
(39) я имею ввиду сделать через использование ДанныеРасшифровки - расширение формы отчета.
Настройки = ОтчетОбъект.КомпоновщикНастроек.Настройки; ОтчетОбъект.компоновщикнастроек.ЗагрузитьНастройки(ОтчетОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию); ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина); |
|||
41
Стальная Крыса
06.12.11
✎
17:29
|
ну так все и делается через ДанныеРасшифровки - ведь это по сути данные всего отчета целиком
|
|||
42
mirrr
06.12.11
✎
17:42
|
(41) так зачем надо делать обработчик, если без него в обычной форме это работает. Достаточно написать:
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина); Если это специфика упр. форм, что если этот код будет &НаСервере , то он работать не будет (цифра вместо расшифровки), то так и напишите. А для обыч. формы он работает без обработчика. |
|||
43
viktor_vv
06.12.11
✎
17:50
|
Вроде получилось. У меня там правда отчет чисто для проверки. Примерно так.
В форме &НаСервере Процедура СформироватьотчетСервер() ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); ОтчетОбъект.Сформироватьотчет(Результат,УникальныйИдентификатор,ДанныеРасшифровки); КонецПроцедуры &НаКлиенте Процедура Сформировать(Команда) СформироватьотчетСервер(); КонецПроцедуры В модуле отчета. Процедура СформироватьОтчет(лТаб,пИдентФормы,пДанныеРасшифровки) Экспорт ОсновнаяСхема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных") ; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //НастройкиКомпоновкиДанных = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки(); НастройкиКомпоновкиДанных = ОсновнаяСхема.НастройкиПоУмолчанию; ДанныеРасшифровкиКомпоновки = Новый ДанныеРасшифровкиКомпоновкиДанных; //Адрес = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиКомпоновки,пИдентФормы); МакетКомпоновки = КомпоновщикМакета.Выполнить(ОсновнаяСхема, НастройкиКомпоновкиДанных,ДанныеРасшифровкиКомпоновки); //Создадим и инициализируем процессор компоновки ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ,ДанныеРасшифровкиКомпоновки, Истина); //Создадим и инициализируем процессор вывода результата ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(лТаб); ПроцессорВывода.Вывести(ПроцессорКомпоновки); Адрес = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиКомпоновки,пИдентФормы); пДанныеРасшифровки = Адрес ; КонецПроцедуры Попробуй у себя. |
|||
44
viktor_vv
06.12.11
✎
17:56
|
По крайней мере появляется стандартное меню, у меня просто результат отчета строка с пустой ссылкой.
|
|||
45
mirrr
06.12.11
✎
18:04
|
(44) написал то же, только &НаСервере, а не в модуле отчета. По старому-выводит цифру
|
|||
46
viktor_vv
06.12.11
✎
18:07
|
Ну не знаю, у меня работает, может я где лоханулся. Но без
Адрес = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиКомпоновки,пИдентФормы); пДанныеРасшифровки = Адрес ; Тоже выводило цифру, теперь нормально выводит меню. |
|||
47
mirrr
06.12.11
✎
18:11
|
(46) а &НаСервере не пробовал написать этот код?
|
|||
48
viktor_vv
06.12.11
✎
18:12
|
И в форме &НаСервере работает.
&НаСервере Процедура СформироватьотчетСервер() ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); //ОтчетОбъект.Сформироватьотчет(Результат,УникальныйИдентификатор,ДанныеРасшифровки); ОсновнаяСхема = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных") ; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //НастройкиКомпоновкиДанных = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки(); НастройкиКомпоновкиДанных = ОсновнаяСхема.НастройкиПоУмолчанию; ПараметрСсылка = НастройкиКомпоновкиДанных.ПараметрыДанных.Элементы.Найти("Ссылка") ; ПараметрСсылка.Использование = Истина ; ПараметрСсылка.Значение = ОтчетОбъект.СсылкаНаОбъект ; ДанныеРасшифровкиКомпоновки = Новый ДанныеРасшифровкиКомпоновкиДанных; //Адрес = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиКомпоновки,пИдентФормы); МакетКомпоновки = КомпоновщикМакета.Выполнить(ОсновнаяСхема, НастройкиКомпоновкиДанных,ДанныеРасшифровкиКомпоновки); //Создадим и инициализируем процессор компоновки ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ,ДанныеРасшифровкиКомпоновки, Истина); //Создадим и инициализируем процессор вывода результата ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); Адрес = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиКомпоновки,УникальныйИдентификатор); ДанныеРасшифровки = Адрес ; КонецПроцедуры |
|||
49
viktor_vv
06.12.11
✎
18:13
|
Коментирую
// Адрес = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиКомпоновки,УникальныйИдентификатор); // ДанныеРасшифровки = Адрес ; Выводит цифры. |
|||
50
mirrr
06.12.11
✎
18:19
|
да, непонятно как-то. Код из (48) вставил - то же самое. Можете отчет скинуть?
|
|||
51
viktor_vv
06.12.11
✎
18:22
|
Из (13) ? Просто на работе нету конф под управляемые формы. Только пробная для обучения. Дома могу попробовать, вроде была УТ 11.
|
|||
52
mirrr
06.12.11
✎
18:24
|
(51) отчет Ваш, который работает, из (48), можете скинуть? Т.к. у меня тот же код, а результат прежний.
|
|||
53
viktor_vv
06.12.11
✎
18:28
|
В (13) добавил.
ПроцессорВывода.УстановитьДокумент(ЭтаФорма.Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); // Добавил Адрес = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиСКД,УникальныйИдентификатор); ДанныеРасшифровки = Адрес ; Все работает. |
|||
54
viktor_vv
06.12.11
✎
18:30
|
Кроме этих двух строк ничего не добавлял. Платформа 8.2.13.219 .
|
|||
55
mirrr
06.12.11
✎
18:33
|
(54) да, действительно, скачал заново, добавил. Работает.
Я видимо чего-то упустил. |
|||
56
viktor_vv
06.12.11
✎
18:53
|
Спасибо (35) , натолкнул на мысль :).
|
|||
57
badboychik
29.12.11
✎
08:17
|
Функция ПолучитьЗначениеРасшифровки(РАсшифровка)
Поля = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля(); Возврат ?(Поля.КОличество()=0,Неопределено,Поля[0].Значение); КонецФункции "Расшифровка" - цифра, а на выходе уже будет например "СправочникСсылка.Номенклатура" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |