Имя: Пароль:
1C
 
Вывод в построителе отчета
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
мне недо в поле табличного документа, я это и пытаюсь это сделать, но он не выводится