Имя: Пароль:
1C
1С v8
Присоединить() не получается, помогите..
,
0 AugustBlack
 
13.10.11
08:39
сабж, не получается правильно вывести пересечение областей,вот мой макет с областями:
http://imglink.ru/show-image.php?id=ec10cadd610c81c802091d3e0921801d
вот код:
//---получение областей---///    
ОбластьСодержаниеСправки = Макет.ПолучитьОбласть("СодержаниеСправки");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьДанныеТаблицы = Макет.ПолучитьОбласть("ДанныеТаблицы");
ОбластьСодержаниеСправки2 = Макет.ПолучитьОбласть("СодержаниеСправки2");
ОбластьТаблицаИтогов = Макет.ПолучитьОбласть("ИтогиПоСправке");
ОбластьКопирования = Макет.ПолучитьОбласть("Область1|Область2");
ОбластьКопирования2 = Макет.ПолучитьОбласть("ДанныеТаблицы|Область2");
//---получение областей---///
   ВыборкаПоГоду = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ПоГоду");

   Пока ВыборкаПоГоду.Следующий() Цикл        
       ОбластьКопирования.Параметры.Год = Год(ВыборкаПоГоду.ПоГоду);
       ТабДок.Присоединить(ОбластьКопирования);
       ВыборкаДетальныеЗаписи = ВыборкаПоГоду.Выбрать();
       Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
           ОбластьКопирования2.Параметры.Дни = ВыборкаДетальныеЗаписи.ДнейВсего;
           ОбластьКопирования2.Параметры.Сумма = ВыборкаДетальныеЗаписи.СуммаВсего;
           ТабДок.Вывести(ОбластьКопирования2);
       КонецЦикла;
       //ТабДок.Вывести(ОбластьТаблицаИтогов);        
   КонецЦикла;    

что получается, вот сам вывод:
http://imglink.ru/show-image.php?id=7fefc9c0c9360724483181c06f3afa2d
последовательность нарисовал стрелочками

нужно так:
http://imglink.ru/show-image.php?id=8dd7833a2717a4338398cdf085f28100

как правильно присоединять пересечение ОбластьКопирования2 чтобы было как на последнем скрине?
1 vmv
 
13.10.11
08:40
я не буду это смотреть, увы слишком много, а ошибка наверняка пустяковая
2 vmv
 
13.10.11
08:42
ТабДок.Присоединить() вижу а Вывести*() не вижу перед ним при начала вывода документа - как-то странно
3 AugustBlack
 
13.10.11
08:45
(2)т.е вы имеете ввиду эту часть кода:
ОбластьКопирования.Параметры.Год = Год(ВыборкаПоГоду.ПоГоду);
ТабДок.Присоединить(ОбластьКопирования);
добавить:
ТабДок.Вывести(ОбластьКопирования);
ТабДок.Присоединить(ОбластьКопирования);
?
4 НЕА123
 
13.10.11
08:46
(0)
сначала,отдельно, шапку делай.
5 vmv
 
13.10.11
08:47
(3) ну да - как можно присоединить что-то, если еще ничего не выведено - я прям теряюсь, как гимназистка на первом свидании и краснею.

так можно да, дяденька?
6 AugustBlack
 
13.10.11
08:47
(4) шапку я еще до этого кода вывожу
7 vmv
 
13.10.11
08:49
(6) и код в этом методе обладает нанотехнологией и это понимает телепатически?
8 AugustBlack
 
13.10.11
08:49
(5) дык просто вот что получается:
http://imglink.ru/show-image.php?id=de447c18afef3b325cea210490b0d58d
9 AugustBlack
 
13.10.11
08:51
если делать без вывести,а через присоединить но не выводить ОбластьКопирования2 тогда почти нормально выводит:http://imglink.ru/show-image.php?id=c695766967c8cb73e650f5e9678d7ae2
10 НЕА123
 
13.10.11
08:52
(6)
речь про шапку таблицы.
судя по картинке дальше будет трахома раскидывания данных по клеточкам отчета.
11 catena
 
13.10.11
08:52
Когда делаешь присоединить, надо выводить построчно. Не получится присоединять столбец.
У тебя "года" в столбцах должныбыть? Сортируй выборку по годам и делай "вывести" как год сменился, а все остальное "присоединить". Только обработать пустые надо будет.
12 AugustBlack
 
13.10.11
20:54
ну не понимаю это, хоть убейся,с горя начал разбирать примеры из справки..
обьясните мне почему это так:

А1    А2    А3
10        
20        
30        
40        
50        
60    

http://imglink.ru/show-image.php?id=65ddd662ee9639f7bdb854192dcda2a4    

мне нада сделать вот так:
А1    А2    А3
10    40    
20    50    
30    60    
   
код:

   ТабДок = Новый ТабличныйДокумент;
   Для К=1 По 3 Цикл
       Секция = ТабДок.ПолучитьОбласть("R1C1");
       Секция.Область().Текст = "А"+К;
       Секция.Область().ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
       ТабДок.Присоединить(Секция,2,"Группа 2",Истина);
   КонецЦикла;

   Цена = 10; Итог = Цена;
   Для К=1 По 3 Цикл
       Секция = ТабДок.ПолучитьОбласть("R1C1");
       Секция.Область().Текст = Цена;
       ТабДок.Вывести(Секция,2,"Группа 2",Истина);
       Цена = Цена + 10;
       Итог = Итог + Цена;
   КонецЦикла;
   
       Для К=1 По 3 Цикл
       Секция = ТабДок.ПолучитьОбласть("R1C2");
       Секция.Область().Текст = Цена;
       ТабДок.Вывести(Секция,2,"Группа 2",Истина);
       Цена = Цена + 10;
       Итог = Итог + Цена;
   КонецЦикла;

   
   ТабДок.ЗакончитьАвтогруппировкуКолонок();
   ТабДок.ИтогиСправа = Истина;
   ТабДок.ОтображатьСетку = Ложь;
   ТабДок.Защита = Ложь;
   ТабДок.ТолькоПросмотр = Ложь;
   ТабДок.Показать("Пример");
13 MaxS
 
13.10.11
21:22
на СКД это можно сделать?
14 vmv
 
13.10.11
21:29
(12) поименуй области для начала нормально, тогда все срастется. непонятки лезут от плохой идентификации сначала в голову, потом в код, потом наружу
15 vmv
 
13.10.11
21:40
почитай описание

ВставитьОбласть(<ИсходнаяОбласть>, <ОбластьПриемник>, <Сдвиг>, <ЗаполнятьПараметры>)

в такой реализации поможет
16 catena
 
14.10.11
05:09
(12)Я тебе еще раз говорю - нельзя присоединить столбец!
17 AugustBlack
 
14.10.11
08:30
Q_Q щас попробуй через вставить область
18 AugustBlack
 
14.10.11
08:43
*попробую*