|
Использование параметра (шаблона) в СКД | ☑ | ||
---|---|---|---|---|
0
Ira_19
28.03.12
✎
20:18
|
В отчете нужно вывести в определенном месте некоторое значение, например, название детали, для которой формируется отчет, или ФИО сотрудника, формирующего отчет.
Для этого создала пустую группировку (Детальные записи) в настройках отчета, затем на Макете для этой группировки определила параметр в формате "Деталь - [Деталь]", и в качестве Заполнения - Шаблон. Затем в параметрах для параметра Деталь заполнила Выражение "Представление(Деталь)" (данные берутся из запроса). В итоге строка "Деталь - Значение" выводится столько раз, сколько строк в основной части отчёта. Как сделать так, чтобы эта строка выводилась только один раз? |
|||
1
Ira_19
28.03.12
✎
20:36
|
С этой частью справилась сама. Выводится 1 раз.
А вот как сделать так, чтобы выводилось ФИО, например, директора или другого сотрудника в шапке отчёта? |
|||
2
vmv
28.03.12
✎
20:49
|
это задача требует решения в тихой обстановке: бар, ресторан, пляж
|
|||
3
Новиков
28.03.12
✎
21:11
|
ФИО пользователя - обычно делают через колонтитулы.
Но если очень хочется нарисовать свою шапку, тогда самый простой путь - это не лезь в настройки компоновки, как ты решила, а просто определить отдельный макет (общий) и его вывести в табличный документ (или в поле табличного документа), предварительно заполнив нужные тебе параметры. Так кстати работает типовой шаблон в типовых. |
|||
4
Ira_19
28.03.12
✎
21:41
|
(3) А как использовать колонтитулы?
|
|||
5
Ira_19
28.03.12
✎
21:48
|
а если сделать собственную щапку, то как совместить стандартный макет СКД и собственный при формировании отчёта?
|
|||
6
Новиков
28.03.12
✎
22:11
|
(4)
ТабличныйДокумент.ВерхнийКолонтитул.Выводить = Истина; ТабличныйДокумент.ВерхнийКолонтитул.НачальнаяСтраница = ... ТабличныйДокумент.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ; ТабличныйДокумент.ВерхнийКолонтитул.ТекстСлева = "Твой текст слева"; ТабличныйДокумент.ВерхнийКолонтитул.ТекстВЦентре = "Твой текст в центре"; ТабличныйДокумент.ВерхнийКолонтитул.ТекстСправа = "Твой текст справа"; (5) ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ну и дальше стандартный вывод собственно. |
|||
7
Ira_19
28.03.12
✎
23:32
|
(6) я ещё не очень хорошо разбираюсь... дальше стандартный вывод - это какой?... может, есть, где почитать об этом?
|
|||
8
Конфигуратор1с
29.03.12
✎
00:06
|
(7)Хрусталева Разработка сложных отчетов
|
|||
9
Ira_19
29.03.12
✎
00:08
|
(8) спасибо! сейчас поищу и скачаю
|
|||
10
Конфигуратор1с
29.03.12
✎
00:20
|
(9)аяяй. Купили бы лучше
|
|||
11
Новиков
29.03.12
✎
09:08
|
Стр.478, "Вывод отчета средствами встроенного языка"
|
|||
12
Ira_19
01.04.12
✎
01:07
|
Спасибо большое Вам за помощь, но у меня всё равно не получается. Создала форму отчета, поместила в модуль формы код:
Перем Настройки; Перем СхемаКомпоновкиДанных; &НаСервере Процедура УстановитьНастройки() Настройки = Отчет.КомпоновщикНастроек.Настройки; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии() СхемаКомпоновкиДанных = ПолучитьОтчет(); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; УстановитьНастройки(); СформироватьОтчет(); КонецПроцедуры Функция ПолучитьОтчет() Возврат Отчеты.ВедомостьНормВремени.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); КонецФункции /////////////////////////////// Процедура СформироватьОтчет() Экспорт ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ДанныеРасшифровки); Элементы.Результат.Очистить(); ДокументРезультат = Элементы.Результат; //Вывод результатов компоновки в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); //Колонтитулы КолонтитулВывести(ДокументРезультат); //Колонтитулы ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры //вывод колонтитула Процедура КолонтитулВывести(ДокументРезультат) Экспорт ДокументРезультат.ВерхнийКолонтитул.Выводить = Истина; ДокументРезультат.ВерхнийКолонтитул.НачальнаяСтраница = 1; ДокументРезультат.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ; ДокументРезультат.ВерхнийКолонтитул.ТекстСлева = "Твой текст слева"; ДокументРезультат.ВерхнийКолонтитул.ТекстВЦентре = "Твой текст в центре"; ДокументРезультат.ВерхнийКолонтитул.ТекстСправа = "Твой текст справа"; КонецПроцедуры Результат: Если в СКД на закладке Настройки не выводить никаких группировок, отчёт будет пустым (код не сабатывает). Если выводить группировки, то собственно они выводятся. НО колонтитулов не видно ни в одном из случаев. Что я не так делаю, подскажите, пожалуйста? |
|||
13
Ira_19
01.04.12
✎
20:08
|
Аналогично, если добавить вывод колонтитула в печатную форму документа (добавила строки для колонтитулов в процедуру Печать, сформированную конструктором печати):
Процедура Печать(ТабДок, Ссылка) Экспорт //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать) Макет = Документы.ВедомостьНормВремениДляПроизТМЦ.ПолучитьМакет("Печать"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ..."; //текст запроса Запрос.Параметры.Вставить("Ссылка", Ссылка); Выборка = Запрос.Выполнить().Выбрать(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); Шапка = Макет.ПолучитьОбласть("Шапка"); ОбластьНормыВремениШапка = Макет.ПолучитьОбласть("НормыВремениШапка"); ОбластьНормыВремени = Макет.ПолучитьОбласть("НормыВремени"); ТабДок.Очистить(); //////////////////////////////////////////////// ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт; ТабДок.Автомасштаб = Истина; ТабДок.ВерхнийКолонтитул.Выводить = Истина; ТабДок.РазмерКолонтитулаСверху=7; ТабДок.ВерхнийКолонтитул.ВертикальноеПоложение=ВертикальноеПоложение.Верх; ТабДок.ВерхнийКолонтитул.НачальнаяСтраница=1; ТабДок.ВерхнийКолонтитул.ТекстВЦентре="Верхний колонтитул"; /////////////////////////////////////////////// ВставлятьРазделительСтраниц = Ложь; Пока Выборка.Следующий() Цикл Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ТабДок.Вывести(ОбластьЗаголовок); Шапка.Параметры.Заполнить(Выборка); ТабДок.Вывести(Шапка, Выборка.Уровень()); ТабДок.Вывести(ОбластьНормыВремениШапка); ВыборкаНормыВремени = Выборка.НормыВремени.Выбрать(); Пока ВыборкаНормыВремени.Следующий() Цикл ОбластьНормыВремени.Параметры.Заполнить(ВыборкаНормыВремени); ТабДок.Вывести(ОбластьНормыВремени, ВыборкаНормыВремени.Уровень()); КонецЦикла; ВставлятьРазделительСтраниц = Истина; КонецЦикла; //}} КонецПроцедуры Колонтитулов не видно ни при предварительном просмотре, ни после вывода на печать =( |
|||
14
Ira_19
02.04.12
✎
21:18
|
Вопрос всё ещё актуален. Буду благодарна за помощь.
|
|||
15
sanja26
02.04.12
✎
21:21
|
(6) не надо никакого стандартного вывода
Достаточно ДокументРезультат.ВерхнийКолонтитул.Выводить = Истина; ДокументРезультат.ВерхнийКолонтитул.НачальнаяСтраница = 1; ДокументРезультат.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ; ДокументРезультат.ВерхнийКолонтитул.ТекстСлева = "Твой текст слева"; ДокументРезультат.ВерхнийКолонтитул.ТекстВЦентре = "Твой текст в центре"; ДокументРезультат.ВерхнийКолонтитул.ТекстСправа = "Твой текст справа"; в при компоновке результата. Ну и шрифт надо задать |
|||
16
sanja26
02.04.12
✎
21:23
|
(14) ТабДок.ПолеСверху = 10;
ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт; ТабДок.Автомасштаб = Истина; ТабДок.ВерхнийКолонтитул.Выводить = Истина; ТабДок.РазмерКолонтитулаСверху=7; ТабДок.ВерхнийКолонтитул.ВертикальноеПоложение=ВертикальноеПоложение.Верх; ТабДок.ВерхнийКолонтитул.НачальнаяСтраница=1; ТабДок.ВерхнийКолонтитул.ТекстВЦентре="Верхний колонтитул"; |
|||
17
Ira_19
02.04.12
✎
21:36
|
(15), а то, что я писала в (12) правильно? Разве там не так?
|
|||
18
sanja26
02.04.12
✎
21:42
|
(17) колонтитул вывести в конец
|
|||
19
sanja26
02.04.12
✎
21:44
|
да, колонтитулы видны только на просмотр перед печатью
|
|||
20
Ira_19
02.04.12
✎
21:45
|
сейчас моя процедура такая:
Процедура СформироватьОтчет() Экспорт //В этот объект помещается информация о расшивровке данных ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; //Формирование макета компоновки данных //с помощью компоновщика макета КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //В макет компоновки передаются СхемаКомпоновкиДанных, ее Настройки //и ДанныеРасшифровки для заполнения информации о расшифровке МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); //Выполнение компоновки данных с помощью процессора компоновки ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ДанныеРасшифровки); //Очистка поля табличного документа - Результат Элементы.Результат.Очистить(); ДокументРезультат = Элементы.Результат; //Вывод результатов компоновки в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); //Колонтитулы КолонтитулВывести(ДокументРезультат); //Колонтитулы КонецПроцедуры правильно, в конце? ничего не выводит |
|||
21
sanja26
02.04.12
✎
21:50
|
А откуда взялись СхемаКомпоновкиДанных, Настрйки...
|
|||
22
sanja26
02.04.12
✎
21:54
|
СхемаКомпоновкиДанных = ПолучитьМакетНаСервере("ОсновнаяСхемаКомпоновкиДанных");
Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки(); РасшифровкаДанных = Новый ДанныеРасшифровкиКомпоновкиДанных; //ДанныеРасшифровки = ПоместитьВоВременноеХранилище(РасшифровкаДанных,Новый УникальныйИдентификатор); Данные = ПолучитьНаборДанныхОтчета(НачалоПериода,КонецПериода); ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ТаблицаДанных",Данные); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,РасшифровкаДанных); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,РасшифровкаДанных); ДанныеРасшифровки = ПоместитьВоВременноеХранилище(РасшифровкаДанных,Новый УникальныйИдентификатор); Результат = Элементы.Результат; Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); Результат.ФиксацияСверху = 0; ПроцессорВывода.НачатьВывод(); Попытка Пока Истина Цикл ЭлементРезультата = ПроцессорКомпоновки.Следующий(); Если ЭлементРезультата = Неопределено Тогда Прервать; КонецЕсли; Если Результат.ФиксацияСверху = 0 И ЭлементРезультата.ЗначенияПараметров.Количество() <> 0 Тогда Результат.ФиксацияСверху = Результат.ВысотаТаблицы; КонецЕсли; ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); КонецЦикла; Исключение Сообщить("Ошибка формирования отчета. Проверьте настройки"); КонецПопытки; ПроцессорВывода.ЗакончитьВывод(); Результат.ПолеСверху = 10; Результат.ВерхнийКолонтитул.Выводить = Истина; Результат.ВерхнийКолонтитул.НачальнаяСтраница = 1; Результат.ВерхнийКолонтитул.ТекстСправа ="[&НомерСтраницы]"; НовыйШрифт = Новый Шрифт ("verdana",9,Истина); // получили такой же шрифт, но жирный Результат.ВерхнийКолонтитул.Шрифт = НовыйШрифт; |
|||
23
Ira_19
02.04.12
✎
21:55
|
Я пишу запрос в СКД, получила набор данных. Потом создала форму отчёта, в модуле формы пишу всё, что есть в (12) (с исправлениями в (20).
|
|||
24
Конфигуратор1с
02.04.12
✎
21:59
|
(23) не получается, ибо нет фото в личке.
|
|||
25
Ira_19
02.04.12
✎
22:03
|
а у Вас тоже нет фотографии!
|
|||
26
sanja26
02.04.12
✎
22:04
|
(25) фотку в студию
|
|||
27
sanja26
02.04.12
✎
22:05
|
выдам секретную предопределенную процедуру
|
|||
28
Ira_19
02.04.12
✎
22:06
|
(24) и (26), как только вы разместите свои фото, я обещаю: свою тоже добавлю!
но вообще это к теме не относится. (27) что за процедура? |
|||
29
sanja26
02.04.12
✎
22:06
|
(28) ->(26)
|
|||
30
Ira_19
02.04.12
✎
22:08
|
Спасибо Вам за "ПОМОЩЬ"
|
|||
31
Ira_19
02.04.12
✎
22:13
|
Может, играет роль версия 1с? У меня 8.2.
|
|||
32
GenV
02.04.12
✎
22:27
|
||||
33
Ira_19
02.04.12
✎
22:29
|
(32) о, спасибо. Надеюсь, будет полезно!
|
|||
34
Конфигуратор1с
02.04.12
✎
22:40
|
(32)Вот Вам не стыдно? Мы тут клиента уже почти дожали, а Вы все поломали ((((
|
|||
35
GenV
02.04.12
✎
22:47
|
(34) Собственно, клиент предлагал взаимный обмен фотка на фотку )
|
|||
36
Ira_19
02.04.12
✎
22:48
|
(34) какого ещё клиента?
а с тем, что предложил (32) нужно ещё разбираться, что-то я плохо поняла пока. |
|||
37
GenV
02.04.12
✎
22:54
|
(36) Там предлагается создать группировки только для своих макетов шапки и подвала.
ЗЫ Вообще тебе уже предложили варианты вывода: 1) Колонтитулы 2) Программный вывод до/после формирования отчета своей области в Тб. документ - результат (так в типовых) 3) Использовать настройки группировок и собственные макеты |
|||
38
Ira_19
02.04.12
✎
22:59
|
(37) я понимаю, что мне предложили много вариантов, и я очень всем благодарна, но у меня не получается выводить, например, ФИО пользователя, дату формирования отчета (хотя бы текст "Текст справа", "текст слева" и т.д.). Наверно, я что-то не так делаю...
поэтому я и выложила полный код, который пишу. |
|||
39
Конфигуратор1с
02.04.12
✎
23:09
|
(35)ну так еще чучуть бы и перешла бы от обмена к демонстрации )))
|
|||
40
Конфигуратор1с
02.04.12
✎
23:10
|
(38) Еще раз. В (20) сам отчет выводит, а колонтитул не выводит или выдает пустой результат?
|
|||
41
Ira_19
02.04.12
✎
23:11
|
Пустой результат вообще: ни колонтитулов, ни самого результата
(на закладке Настройки в СКД нет никаких группировок - как описано в (12)) |
|||
42
Конфигуратор1с
02.04.12
✎
23:15
|
(41)группировки верните на место
|
|||
43
Конфигуратор1с
02.04.12
✎
23:16
|
(41) (22)Пробовали?
|
|||
44
Ira_19
02.04.12
✎
23:25
|
(43) пробовала. Ругается на некоторые строки:
ПолучитьМакетНаСервере и ПолучитьНаборДанныхОтчета НачалоПериода КонецПериода ну начала и конца периода у меня просто нет, а вот с двумя другими функциями что делать? Это не стандартные функции (их нет в СП). |
|||
45
GenV
02.04.12
✎
23:30
|
(37) Если не заморачисваться с программным выводом на УФ и если оставить типовой вывод отчета, то в ПриКомпоновкеРезультата достаточно:
Результат.ПолеСверху = 10; Результат.ВерхнийКолонтитул.Выводить = Истина; Результат.ВерхнийКолонтитул.НачальнаяСтраница = 1; Результат.ВерхнийКолонтитул.ТекстСправа ="[&НомерСтраницы]"; НовыйШрифт = Новый Шрифт ("verdana",9,Истина); // получили такой же шрифт, но жирный Результат.ВерхнийКолонтитул.Шрифт = НовыйШрифт; |
|||
46
Ira_19
02.04.12
✎
23:30
|
(42) если группировки оставить, то отчет сам выводится, колонтитулы нет (с моим кодом)
|
|||
47
Ira_19
02.04.12
✎
23:31
|
(45) Извините, но у где нужно писать процедуру / функцию ПриКомпоновкеРезультата и что там ещё нужно писать?
|
|||
48
GenV
02.04.12
✎
23:34
|
(47) Модуль отчета. Вывод стандартной кнопкой сформировать.
Процедура ПриКомпоновкеРезультата(Результат, ДанныеРасшифровки, СтандартнаяОбработка) Сообщить("ПриКомпоновкеРезультата"); Результат.ПолеСверху = 10; Результат.ВерхнийКолонтитул.Выводить = Истина; Результат.ВерхнийКолонтитул.НачальнаяСтраница = 1; Результат.ВерхнийКолонтитул.ТекстСправа ="[&НомерСтраницы]"; НовыйШрифт = Новый Шрифт ("verdana",9,Истина); // получили такой же шрифт, но жирный Результат.ВерхнийКолонтитул.Шрифт = НовыйШрифт; КонецПроцедуры |
|||
49
Ira_19
02.04.12
✎
23:37
|
(48) УРА!!!!!!!!!!! Спасибо Вам большое. Номер страницы уже выводится, буду смотреть дальше.
|
|||
50
sanja26
03.04.12
✎
01:49
|
не прошло и полгода. Выдали тебе секретную процедуру)))
|
|||
51
Ira_19
03.04.12
✎
02:05
|
Хоть и отклонились уже от предмета вопроса, но... вот ещё бы хотелось выводить шапку отчета на каждой странице.
Нашла процедуру Результат.ПовторятьПриПечатиСтроки = Результат.Область(ОбластьШапки.Верх, , ОбластьШапки.Низ); только вот как получить эту ОбластьШапки, если макет сделан на СКД? |
|||
52
Ira_19
03.04.12
✎
02:05
|
(50) мир не без добрых людей!
|
|||
53
Ira_19
04.04.12
✎
01:03
|
Всё сделала сама шапку на каждой странице. Всем спасибо, кто помогал с колонтитулами!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |