![]() |
![]() |
![]() |
|
Вывод в построителе отчета | ☑ | ||
---|---|---|---|---|
0
tohkaru
17.02.09
✎
15:13
|
При выводе построитель формирует печатную форму автоматически а не так как указано в коде, я так полагаю что ошибка либо в областях либо именно что то неправильно вывожу, подскажите в чем дело
ТабДокумент = ЭлементыФормы.ПолеТабличногоДокумента; ПостроительОтчетаНормаФакт.Макет = ПолучитьМакет ("Макет3"); ОбластьСтрока = ПостроительОтчетаНормаФакт.Макет.ПолучитьОбласть("Детали"); Ном= 0; йй = 0; СписокПродуктов = СтрокаПродукция.Скопировать(, "Спецификация,Продукция,ПродукцияКоличество,ПродукцияЕдиницаИзмерения,ХарактеристикаПродукции, Качество"); СписокПродуктов.Свернуть("Спецификация, Продукция,ПродукцияКоличество,ПродукцияЕдиницаИзмерения,ХарактеристикаПродукции, Качество" ); Для Каждого ВыборкаСтрок Из СписокПродуктов Цикл ОбластьМакета = ПостроительОтчетаНормаФакт.Макет.ПолучитьОбласть("Детали"); Ном = Ном + 1; йй = йй + 1; // Проверим, помещается ли строка с данными и последняя строка (или итоги) на странице. СтрокаТаблицы = Новый Массив; СтрокаТаблицы.Добавить(ОбластьСтрока); ОбластьМакета.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрок.Продукция) + "(" + СокрЛП(ВыборкаСтрок.ХарактеристикаПродукции) + ")" + " " + СокрЛП(ВыборкаСтрок.Качество); ОбластьМакета.Параметры.ПродукцияКоличество = ВыборкаСтрок.ПродукцияКоличество; ОбластьМакета.Параметры.ПродукцияЕдиницаИзмерения = ВыборкаСтрок.ПродукцияЕдиницаИзмерения; ОбластьМакета.Параметры.йй = йй; ТабДокумент.Вывести(ОбластьМакета); МассивМатериалов = СтрокаПродукция.НайтиСтроки(Новый Структура("Спецификация, Качество", ВыборкаСтрок.Спецификация, ВыборкаСтрок.Качество)); Для Каждого ТекСтрока ИЗ МассивМатериалов Цикл ОбластьМакета = ПостроительОтчетаНормаФакт.Макет.ПолучитьОбласть("Детали"); ОбластьМакета.Параметры.Номенклатура = СокрЛП(ТекСтрока.Номенклатура); ОбластьМакета.Параметры.КоличествоФакт = ТекСтрока.КоличествоФакт; ОбластьМакета.Параметры.КоличествоПлан = ТекСтрока.КоличествоПлан; ОбластьМакета.Параметры.Разница = ТекСтрока.Разница; ОбластьМакета.Параметры.ЕдиницаИзмерения = ТекСтрока.ЕдиницаИзмерения; ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; КонецЦикла; ПостроительОтчетаНормаФакт.Вывести(ТабДокумент); |
|||
1
Defender aka LINN
17.02.09
✎
15:15
|
А кто макет построителю присваивать будет?
|
|||
2
tohkaru
17.02.09
✎
15:17
|
(1) а это ПостроительОтчетаНормаФакт.Макет = ПолучитьМакет ("Макет3"); разве не присваивает?
|
|||
3
tohkaru
17.02.09
✎
15:34
|
или я не прав?
|
|||
4
MoneG
17.02.09
✎
16:19
|
(1) неа.. всё дело в таинственном параметре "йй" ;))
|
|||
5
tohkaru
17.02.09
✎
16:20
|
(4)подскажите что я делаю не так?
|
|||
6
MoneG
17.02.09
✎
16:23
|
ты хотя бы пару раз подряд запусти отчет на форме, уже ясно станет.
|
|||
7
Defender aka LINN
17.02.09
✎
16:24
|
(2) Ну дык ты присваиваешь макет, а потом начинаешь его менять.
|
|||
8
tohkaru
17.02.09
✎
16:27
|
(7) тоесть мне надо потом еще раз его перед вывод присвоить?
|
|||
9
MoneG
17.02.09
✎
16:34
|
1. ТабДок не очищается.
2. Это что такое?! СтрокаТаблицы = Новый Массив; СтрокаТаблицы.Добавить(ОбластьСтрока); 3. За подобное вообще уволить надо: ОбластьСтрока = ПостроительОтчетаНормаФакт.Макет.ПолучитьОбласть("Детали"); ... Для Каждого ВыборкаСтрок Из СписокПродуктов Цикл ОбластьМакета = ПостроительОтчетаНормаФакт.Макет.ПолучитьОбласть("Детали"); ... Для Каждого ТекСтрока ИЗ МассивМатериалов Цикл ОбластьМакета = ПостроительОтчетаНормаФакт.Макет.ПолучитьОбласть("Детали"); ... КОнецЦикла; КонецЦикла; |
|||
10
tohkaru
17.02.09
✎
16:42
|
(9) у меня обработка работала, когда код находился в модуле объекта, и часть третья которую вы скопировали тоже нормально функционировала, правда там был просто Макет а не ПостроительОтчетаНормаФакт.Макет а теперь же надо сделать через построитель отчета и вывести не автоматически как он заполняет а по моему макету
|
|||
11
MoneG
17.02.09
✎
16:48
|
(10) : часть 3 в (9) конечно функциклирует, но..
По-вашему, откуда Построитель знает про "автоматический" макет? |
|||
12
tohkaru
17.02.09
✎
16:54
|
(11) он просто берет все поля из запроса и выводит их в столбцы
|
|||
13
MoneG
17.02.09
✎
16:58
|
(12) это потому, что построитель про структуру макета вообще не в курсах.. Полистайте справку встроенную хотя бы.
|
|||
14
tohkaru
17.02.09
✎
17:01
|
а если я присваиваю макету построителя свой макет, с такими же именами полей он не приобретает его структуру?
|
|||
15
MoneG
17.02.09
✎
17:08
|
В запросе всяко есть группировки. Даже самый интеллектуальный построитель не разберется, где что в макете, пусть и "проименованном".
|
|||
16
tohkaru
17.02.09
✎
17:14
|
(15)так что же остается делать?
|
|||
17
MoneG
17.02.09
✎
17:22
|
(15) Посмотреть справку.
кстати, приведенный код в (0) никоим образом на вывод результата построителя не влияет. Ну кроме посл. строчки разве что. |
|||
18
tohkaru
17.02.09
✎
17:24
|
(17) так может можно вывести табличный документ на форме в ПолеТабличногоДокумента?
|
|||
19
MoneG
17.02.09
✎
17:27
|
(17) что за бред?!
что есть "табличный документ на форме" и "ПолеТабличногоДокумента" ? |
|||
20
tohkaru
17.02.09
✎
17:28
|
ПолеТабличногоДокумента - элемент формы
|
|||
21
MoneG
17.02.09
✎
17:29
|
а "табличный документ на форме" ?
|
|||
22
tohkaru
17.02.09
✎
17:31
|
а это я неправильно выразился.имел в виду что просто вывести полученный табличный документ в форму
|
|||
23
MoneG
17.02.09
✎
17:35
|
(22) Можно конечно. Тогда вопрос: на форме есть эл-ты, привязанные к построителю?
Хотя посл строка кода (0) именно в ТабДок формы выводит. Осталось лишь макет настроить ) |
|||
24
tohkaru
17.02.09
✎
17:38
|
(23)собсветнно форма делалась констурктором выходной формы
что значит настроить макет? |
|||
25
MoneG
17.02.09
✎
17:44
|
(24) До справки, видимо, как до Китая пешком.. Хорошо.
Вот ты как понимаешь, что Детали в отчете - это Детали и их нужно выводить, используя именно строчку для Деталей? "Расскажи" это Построителю, и если он тебя правильно поймет, будет счастье ) |
|||
26
Eksterulo
17.02.09
✎
17:46
|
1. До строки второй строки был как бы пустой макет.
2. Строка ПостроительОтчетаНормаФакт.Макет = ПолучитьМакет ("Макет3"); указывает построителю конкретный наш макет. Однако области должны называться также как в стандартном, например, "Детали" или "РесурсыУровень1" (зависит от группировок/оформления). 3. Строка ПостроительОтчетаНормаФакт.Вывести(ТабДокумент); означает "очистить всё в ТабДокумент; выполнить запрос; вывести области, взяв их из макета". Т.е. если уж ты сам заполнил табличный документ, то вместо последней строки сам же его и выводи - ТабДокумент.Показать() . Понятное дело, что отборы и порядок будут как настроено в построителе, а оформление как в макете. |
|||
27
tohkaru
17.02.09
✎
17:51
|
ТабДокумент.Показать() - ничего не выводит по нажатию кнопки сформировать
|
|||
28
Eksterulo
17.02.09
✎
18:03
|
Ну, скажем так. Я что хотел сказать: ты уже вручную сформировал результат - табличный документ ТабДокумент. Теперь его просто и стандартно отобрази: или в поле табличного документа, или просто как отдельное окошко.
|
|||
29
tohkaru
17.02.09
✎
23:30
|
мне недо в поле табличного документа, я это и пытаюсь это сделать, но он не выводится
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |