![]() |
![]() |
|
СКД. Почему нет расшифровки | ☑ | ||
---|---|---|---|---|
0
Point
13.08.10
✎
16:58
|
Если флСразбивкойПонедельно Тогда
СКД = ЭтотОбъект.ПолучитьМакет("Обороты"); Иначе СКД = ЭтотОбъект.ПолучитьМакет("ОтчетВертикальный"); КонецЕсли; Настройки = СКД.НастройкиПоУмолчанию; СформироватьУсловия(Настройки); ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД,Настройки,ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,Истина); ТабДок = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДок); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Мне кажеться, что здесь их нужно самому определить - но вот где? |
|||
1
borik
13.08.10
✎
17:05
|
(0) Так не бедет работать: ТабДок = Новый ТабличныйДокумент;
Сделай с табличным документом и открывай форму. |
|||
2
Point
13.08.10
✎
17:07
|
(1) у меня ТабДок потом в поле табличного документа грузится
|
|||
3
Point
13.08.10
✎
17:08
|
(0) расшифровка открывается, но отображает только номер ячейки по порядку.
|
|||
4
borik
13.08.10
✎
17:14
|
(2) Сходи сюда почитай: http://1cskd.ru/
|
|||
5
borik
13.08.10
✎
17:17
|
(4) + 5 видеоуроков: Расшифровки в отчетах СКД
|
|||
6
Point
13.08.10
✎
17:24
|
(4) читал - не помогает, надо посмотреть (5)
|
|||
7
borik
13.08.10
✎
17:32
|
(6) У тебя 8.2 или 8.1 ?
|
|||
8
Point
13.08.10
✎
17:33
|
(7) 8.1
|
|||
9
borik
13.08.10
✎
17:35
|
(2) Боюсь, что так не покатит. Сделай с табличным документом на форме.
|
|||
10
Point
13.08.10
✎
17:56
|
(9) пробовал - тоже самое.
|
|||
11
borik
13.08.10
✎
18:05
|
(10) У меня вот так работает:
ФормаОтчета = ОбъектОтчет.ПолучитьФорму("ФормаОтчета"); тдТабличныйДокумент = ФормаОтчета.ЭлементыФормы.Результат; // Новый ТабличныйДокумент; ОбъектОтчет.СкомпоноватьРезультат(тдТабличныйДокумент, ФормаОтчета.ДанныеРасшифровки); ФормаОтчета.Открыть(); |
|||
12
fisher
13.08.10
✎
18:29
|
(0) ЭтотОбъект - это отчет? Если нет, то автоматическая расшифровка работать не будет. Нужно руками обрабатывать (но это несложно). У Хрусталёвой есть пример.
|
|||
13
Point
13.08.10
✎
19:00
|
(12) ЭтотОбъект - это отчет.
Пробовал я пример Хрусталевой - результат тот же. И еще вот немного переписал процедуру: Если флСразбивкойПонедельно Тогда СКД = ЭтотОбъект.ПолучитьМакет("Обороты"); Иначе СКД = ЭтотОбъект.ПолучитьМакет("ОтчетВертикальный"); КонецЕсли; Настройки = СКД.НастройкиПоУмолчанию; СформироватьУсловия(Настройки); КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД)); КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД,Настройки,ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,Истина); ТабДок = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДок); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
14
fisher
14.08.10
✎
13:29
|
Если отчет - тогда используй свойства и методы объекта "Отчет" для работы с СКД, вместо того, чтобы полностью вручную выводить.
|
|||
15
Point
17.08.10
✎
11:52
|
(14) Использую методы и свойства отчета:
Процедура вывода отчета: ЭтотОбъект.СхемаКомпоновкиДанных = СКД//макет в отчете; Настройки = ЭтотОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию; СформироватьУсловия(Настройки); ЭтотОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; ТабДок = Новый ТабличныйДокумент; ЭтотОбъект.СкомпоноватьРезультат(ТабДок,ДанныеРасшифровки); Результат тот же - выводит расшифровку с индексом поля. |
|||
16
Point
17.08.10
✎
11:58
|
Вверх
|
|||
17
Point
17.08.10
✎
12:14
|
Где все те кто так хвалил СКД?
|
|||
18
IronDemon
17.08.10
✎
12:17
|
Выводишь в модуле?
|
|||
19
Point
17.08.10
✎
12:18
|
(18) да
|
|||
20
IronDemon
17.08.10
✎
12:19
|
Вот.
|
|||
21
IronDemon
17.08.10
✎
12:20
|
В формирование отчета в модуле нужно передавать ДанныеРасшифровки из формы
|
|||
22
Point
17.08.10
✎
12:21
|
(21) поясни, не совсем понятно.
|
|||
23
IronDemon
17.08.10
✎
12:25
|
СформироватьОтчет(ЭлементыФормы.Результат, ДанныеРасшифровки);
|
|||
24
Point
17.08.10
✎
12:28
|
(23)
А если я в ПолеТабличногоДокумента вывожу ТабличныйДокумент ка кв (15) |
|||
25
IronDemon
17.08.10
✎
12:30
|
Этот код в модуле? Как ты его взываешь?
|
|||
26
Point
17.08.10
✎
12:39
|
(25)
Вообще схема следующая: 1. Форма отчета (на ней ПолеТабличногоДокумента) 2. Форма с настройками - открывается модально из 1, где работает следубщая процедура процедура: Процедура ДействияФормыкнПрименить(Кнопка) Если ВидОтчета = НЕопределено Тогда Предупреждение("Не выбран ыид отчета",60); Возврат; КонецЕсли; Если флСразбивкойПонедельно Тогда Если ВидОтчета = 1 Тогда СКД = ЭтотОбъект.ПолучитьМакет("Обороты"); ИначеЕсли ВидОтчета = 2 Тогда СКД = ЭтотОбъект.ПолучитьМакет("НезавершенныеОбороты"); ИначеЕсли ВидОтчета = 3 Тогда СКД = ЭтотОбъект.ПолучитьМакет("ЗавершенныеОбороты"); КонецЕсли; Иначе Если ВидОтчета = 1 Тогда СКД = ЭтотОбъект.ПолучитьМакет("ОтчетВертикальный"); ИначеЕсли ВидОтчета = 2 Тогда СКД = ЭтотОбъект.ПолучитьМакет("НезавершенныеВертикальный"); ИначеЕсли ВидОтчета = 3 Тогда СКД = ЭтотОбъект.ПолучитьМакет("ЗавершенныеВертикальный"); КонецЕсли; КонецЕсли; ЭтотОбъект.СхемаКомпоновкиДанных = СКД; Настройки = ЭтотОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию; СформироватьУсловия(Настройки); ЭтотОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; ТабДок = Новый ТабличныйДокумент; ЭтотОбъект.СкомпоноватьРезультат(ТабДок,ДанныеРасшифровки); СтруктураОтчета = Новый Структура; СтруктураОтчета.Вставить("Заголовок",СформироватьЗаголовокОтчета()); СтруктураОтчета.Вставить("СКД",ТабДок); СохранитьНастройки(); ЭтаФорма.Закрыть(СтруктураОтчета); КонецПроцедуры 3. в форме отчета процедура: Если СтруктураОтчета <> Неопределено Тогда ЭлементыФормы.ТабДокумент.Очистить(); ЭлементыФормы.ТабДокумент.Вывести(СтруктураОтчета.Заголовок); ЭлементыФормы.ТабДокумент.Вывести(СтруктураОтчета.СКД); КонецЕсли; |
|||
27
IronDemon
17.08.10
✎
12:44
|
ДействияФормыкнПрименить(Кнопка, ДанныеРасшифровки)
|
|||
28
Point
17.08.10
✎
12:47
|
(27) Что в "ДанныеРасшифровки" передавать?
|
|||
29
IronDemon
17.08.10
✎
12:47
|
ДанныеРасшифровки это "реквизит" формы
|
|||
30
Point
17.08.10
✎
12:49
|
(29) нет у меня такого реквизита, ни у формы, ни у объекта.
|
|||
31
rasswet
17.08.10
✎
13:34
|
в РезультатОбработкаРасшифровки чему равно ДанныеРасшифровки? в отладчике
|
|||
32
Point
17.08.10
✎
14:20
|
(31) неопределено. Я же говорю - нет у меня такого реквизита.
|
|||
33
rasswet
17.08.10
✎
14:33
|
(32) и без реквизита работает у меня...но я передаю из формы как параметр в модуль объекта. и работает. когда не предавал не работало.
|
|||
34
fisher
17.08.10
✎
14:43
|
(32) Это свойство расширения формы отчета. Ты с формой не мудрил? В качестве основного реквизита для неё объект отчет выбран?
|
|||
35
Point
17.08.10
✎
15:18
|
(34) Основной реквизит как положено стоит - Объект.
Я переделал немного процедуру вывода - теперь все делается в модуле формы отчета. Но результат тот же. Просто тупо скопировал пример с сайта по СКД. Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; СформироватьУсловия(Настройки,СтруктураНастроек); //Помещаем в переменную данные о расшифровке данных ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; //Формируем макет, с помощью компоновщика макета КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //Передаем в макет компоновки схему, настройки и данные расшифровки МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки, ДанныеРасшифровки); //Выполним компоновку с помощью процессора компоновки ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,Истина); //Очищаем поле табличного документа ЭлементыФормы.ТабДокумент.Очистить(); ТабДок = ЭлементыФормы.ТабДокумент; //Выводим результат в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДок); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
36
Point
17.08.10
✎
15:36
|
(35) или пример на "1cskd.ru" - не работает или я что-то не догоняю.
|
|||
37
fisher
17.08.10
✎
15:37
|
Этот пример не адаптирован под "вкусности" СКД, предоставляемые объектом отчет.
Это по сути "автономный" вывод. Поэтому ничего удивительного, что стандартная расшифровка не формируется - это тоже "вкусность" объекта отчет. |
|||
38
Point
17.08.10
✎
15:50
|
(37) поделись вкусным пирожком если не жалко.
|
|||
39
fisher
17.08.10
✎
19:12
|
Объект отчет имеет встроенный компоновщик настроек. Настройки надо брать оттуда. И менять тоже через него. Форма отчета имеет встроенные данные расшифровки. Использовать нужно их.
Если отчет делается мастером, вся лабудень, что ты написал, вообще не нужна. Это функционал стандартной кнопки "Сформировать". По своей кнопке можно заменить на СкомпоноватьРезультат(). Ну а если всё-таки нужно что-то продвинутое реализовывать, тогда как у тебя, но с учетом замечаний. Вот так у меня работает с расшфровкой: //Формируем макет, с помощью компоновщика макета КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //Передаем в макет компоновки схему, настройки и данные расшифровки МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.Настройки, ДанныеРасшифровки); //Выполним компоновку с помощью процессора компоновки ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,Истина); //Очищаем поле табличного документа ЭлементыФормы.Результат.Очистить(); //Выводим результат в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |