Имя: Пароль:
1C
1С v8
Вывод секции в печатной форме.
0 Kurbash
 
14.06.13
14:36
на форме документа есть ТЧ  с таблицой типа:
ЦЕХ/Номенклатура/количество/неделя

например
ЦЕХ1/Номенклатур1а/2/2
ЦЕХ2/Номенклатура2/6/1
ЦЕХ3/Номенклатура3/8/4

Хочу чтобы в печатной форме отображался как бы сетевой график, например
сверху номер недели, а по столбцам все остальное?

                    1/  2/  3/  4/
ЦЕХ1/Номенклатур1а/     2
ЦЕХ2/Номенклатура2/  6
ЦЕХ3/Номенклатура3/             8

никто не подскажет как делать?
1 Kurbash
 
14.06.13
14:37
я так понимаю нужно играться  с присоединить секцию..а вот как не догоню никак
2 mikecool
 
14.06.13
14:38
вывести векцию - выводишь начало
присоединить - цепляейшь к ней справа
3 Kurbash
 
14.06.13
14:41
это перед выводом горизонтальной секции ? или после нее?
4 Kurbash
 
14.06.13
14:43
ТабДок = Новый ТабличныйДокумент;
   Макет = Документы.ЗапускВПланирование.ПолучитьМакет("Печать");
   ОбластьГрафик = Макет.ПолучитьОбласть("График");
   ОбластьНеделя=Макет.ПолучитьОбласть("Неделя");
   Для Каждого стр Из СоставИзделияПодетально Цикл
       ОбластьГрафик.Параметры.Заполнить(стр);
       ТабДок.Вывести(ОбластьГрафик);ТабДок.Вывести(ОбластьНеделя);

   КонецЦикла;
так?
5 kosts
 
14.06.13
14:44
Для каждой строки один раз делаешь Вывести потом много раз присоединить
6 kosts
 
14.06.13
14:44
В т.ч. для шапки таблицы
7 kosts
 
14.06.13
14:48
На вскидку не скажу, но специально сформированным запросом и выборкой можно получить такой результат, что у тебя получиться кросс-таблица без всяких заморочек...
8 Kurbash
 
14.06.13
14:51
(5)-на моем коде можешь показать?
9 Kurbash
 
14.06.13
14:51
никак в голове не сращу
10 aleksonic
 
14.06.13
14:54
Цикл по строкам Вывести и внутри цикл по колонкам Присоединить.
11 kosts
 
14.06.13
14:55
12 Kurbash
 
14.06.13
14:55
ТабДок = Новый ТабличныйДокумент;
   Макет = Документы.ЗапускВПланирование.ПолучитьМакет("Печать");
   ОбластьГрафик = Макет.ПолучитьОбласть("График");
   ОбластьНеделя=Макет.ПолучитьОбласть("Неделя");
   Для Каждого стр Из СоставИзделияПодетально Цикл
       ОбластьГрафик.Параметры.Заполнить(стр);
       ТабДок.Присоединить(ОбластьНеделя);

       ТабДок.Вывести(ОбластьГрафик);
   КонецЦикла;


не канает..что не атк делаю?
13 НаборДанных
 
14.06.13
14:57
(12)Читай (5) до просветления.
14 Kurbash
 
14.06.13
14:58
хм.....
15 aleksonic
 
14.06.13
14:58
(11) подробный пример
16 НаборДанных
 
14.06.13
14:59
Вывести(ЦЕХ1)/Присоединить(Номенклатур1а)/Присоединить() Присоединить(2) Присоединить() Присоединить()
Так понятней?
17 Kurbash
 
14.06.13
15:01
я пока только до этого додумался

   ТабДок = Новый ТабличныйДокумент;
   Макет = Документы.ЗапускВПланирование.ПолучитьМакет("Печать");
   ОбластьГрафик = Макет.ПолучитьОбласть("График");
   ОбластьНеделя=Макет.ПолучитьОбласть("Неделя");
   Для Каждого стр Из СоставИзделияПодетально Цикл
       ОбластьГрафик.Параметры.Заполнить(стр);
       для каждого стр1 из СоставИзделияПодетально цикл
           ТабДок.Вывести(ОбластьНеделя);
           ТабДок.Присоединить(ОбластьНеделя);
       конеццикла;
       ТабДок.Вывести(ОбластьГрафик);
   КонецЦикла;
18 НаборДанных
 
14.06.13
15:02
(17)У тебя сверху и слева имена секций должны быть еще, так более понятно?
19 kosts
 
14.06.13
15:03
Пустые ячейки тоже нужно выводить (сказал так, на всякий случай)...
20 Kurbash
 
14.06.13
15:03
так у меня сверху секция Неделя, по горизонтали-График
21 aleksonic
 
14.06.13
15:03
ТабДок = Новый ТабличныйДокумент;
   Макет = Документы.ЗапускВПланирование.ПолучитьМакет("Печать");
   ОбластьГрафик = Макет.ПолучитьОбласть("График");
   ОбластьНеделя=Макет.ПолучитьОбласть("Неделя");
   Для Каждого стр Из СоставИзделияПодетально Цикл
       ОбластьГрафик.Параметры.Заполнить(стр);
       ТабДок.Вывести(ОбластьГрафик);
       для каждого стр1 из СоставИзделияПодетально цикл
           ТабДок.Присоединить(ОбластьНеделя);
       конеццикла;        
   КонецЦикла;

Примерно так
22 НаборДанных
 
14.06.13
15:04
ОбластьНеделя=Макет.ПолучитьОбласть("Неделя|День1"); Чет типа того. В(11) Есть код, очень замечательный ОбластьШапкаНоменклатура = Макет. ПолучитьОбласть("Шапка|Номенклатура");
23 НаборДанных
 
14.06.13
15:07
И там же есть код
//3. Левая верхняя ячейка отчёта. Печать начинается отсюда
ТабДок.Вывести(ОбластьШапкаНоменклатура);

Пока ВыборкаКонтрагент.Следующий() Цикл
       ОбластьШапкаКонтрагент.Параметры.Заполнить(ВыборкаКонтрагент);
      //4. Ячейку с наименованием контрагента печатаем не снизу, а справа от предыдущей
      ТабДок.Присоединить(ОбластьШапкаКонтрагент);
КонецЦикла;

В общем, реализуй отчет из (11) придет просветление.
24 Kurbash
 
14.06.13
15:08
парни гляньте конфу если не сложно?
http://zalil.ru/34580058
25 Kurbash
 
14.06.13
15:08
мысли в кучу уже
26 НаборДанных
 
14.06.13
15:09
(20)Сверху у тебя должны быть секции день1, день2, день3, если я верно понимаю (0)
27 Kurbash
 
14.06.13
15:09
нет, сверху должны стоять порядки недель
28 Kurbash
 
14.06.13
15:10
или как то их по индексу выводить...
29 kosts
 
14.06.13
15:10
Вот такие секции должны быть (примерно)
http://s47.radikal.ru/i117/1306/3b/070a8eabc823.jpg
30 Kurbash
 
14.06.13
15:13
у меня получается что недели идут не по порядку, и выводить надо и пустые тоже
31 kosts
 
14.06.13
15:13
Что бы было проще настроиться на нужную волну. Создай на форме обычную таблицу значений с нужным количеством колонок и заполни её. Как получиться, переходи к макету...
32 НаборДанных
 
14.06.13
15:13
33 НаборДанных
 
14.06.13
15:13
Выводишь номер строки например, потом присоединяешь областьданных, неделю1, неделю2, неделюN
34 kosts
 
14.06.13
15:15
Кстати, если у тебя фиксированное количество колонок (4 шт), то не нужно тогда таких заморочек с колонками...
35 НаборДанных
 
14.06.13
15:16
(34)Кстати да, если их 4е всего, то можно тупо строку заполнять и все и выводить без присоединения.
36 Kurbash
 
14.06.13
15:17
(34)-это как? заполнять строку у меня рядом одна колонка и получится, а мне надо как в (0)
37 Kurbash
 
14.06.13
15:20
парни не бросайте плиз горит курсач
38 kosts
 
14.06.13
15:21
(36) если как в (34), то в макете сразу делаешь сколько нужно колонок, параметры будут:
Номенклатура
ЗначениеКолонки_1
ЗначениеКолонки_2
ЗначениеКолонки_3
ЗначениеКолонки_4
39 kosts
 
14.06.13
15:22
(38)+ Перед выводом

Если ... Тогда
   Область.Параметры.ЗначениеКолонки_1 = ...
ИначеЕсли ... Тогда
   Область.Параметры.ЗначениеКолонки_2 = ...
и т.д.
40 Kurbash
 
14.06.13
15:23
вот..а в году получается 57 недель, это макет какой получится?
41 Kurbash
 
14.06.13
15:31
ау
42 kosts
 
14.06.13
16:13
Ну тогда только секции присоединять
43 Kurbash
 
15.06.13
08:30
блин вот я баран)))))

   номернедели="";
   н=0;//начала отсчета для количества присоединяемых пустых нулей
   
   ТабДок = Новый ТабличныйДокумент;
   Макет = Документы.ЗапускВПланирование.ПолучитьМакет("Печать");
   ОбластьГрафик = Макет.ПолучитьОбласть("График|Номен");
   //ОбластьНеделя=Макет.ПолучитьОбласть("График|Неделя");
       Для Каждого стр Из СоставИзделияПодетально Цикл
           
       ОбластьГрафик.Параметры.Заполнить(стр);
       ТабДок.Вывести(ОбластьГрафик);            
       //начали играться с секцией неделя    
       для  сч=н по стр.Неделя цикл    
       нед=стр.Неделя;
       номернедели="График|Неделя"+нед;

       ОбластьНеделя=Макет.ПолучитьОбласть(номернедели);
       ОбластьНеделя.Параметры.Заполнить(стр);
       ТабДок.Присоединить(ОбластьНеделя);
       н=н+1;
        конеццикла;
   КонецЦикла

вотткак сделал)))
44 Kurbash
 
15.06.13
08:52
а, нет...вот так:

   номернедели="";
   //н=0;//начала отсчета для количества присоединяемых пустых нулей
   
   ТабДок = Новый ТабличныйДокумент;
   Макет = Документы.ЗапускВПланирование.ПолучитьМакет("Печать");
   ОбластьГрафик = Макет.ПолучитьОбласть("График|Номен");
   //ОбластьНеделя=Макет.ПолучитьОбласть("График|Неделя");
       Для Каждого стр Из СоставИзделияПодетально Цикл
           
       ОбластьГрафик.Параметры.Заполнить(стр);
       ТабДок.Вывести(ОбластьГрафик);            
       //начали играться с секцией неделя    
       для  сч=1 по стр.Неделя цикл    
       нед=стр.Неделя;
       номернедели="График|Неделя"+нед;

       ОбластьНеделя=Макет.ПолучитьОбласть(номернедели);
       ОбластьНеделя.Параметры.Заполнить(стр);
       если
       сч<>стр.Неделя тогда
       ОбластьНеделя.Параметры.Количество="";
       конецесли;
       ТабДок.Присоединить(ОбластьНеделя);
       //н=н+1;
        конеццикла;
   КонецЦикла;
45 hhhh
 
15.06.13
08:57
можно

номернедели="График|Неделя";


то есть в макете делать не 52 колонки, а одну колонку. Она ведб подходит для всех недель.
46 Kurbash
 
15.06.13
08:58
это как?
47 Kurbash
 
15.06.13
08:58
колонки же по имени идут
48 hhhh
 
15.06.13
09:00
(47) ну, в макете будет одна колонка для этого. Называется "Неделя".В цикле присоединяется к табличному документу 52 раза.
49 Kurbash
 
15.06.13
09:05
а, ну да, не сразу догнал о чем ты)))у меня так и сделано))утро, не сразу въехал))
50 Wobland
 
15.06.13
09:12
(49) номернедели="График|Неделя"+нед;

       ОбластьНеделя=Макет.ПолучитьОбласть(номернедели);

не заметно
51 Kurbash
 
15.06.13
09:17
старый код
вт какой сейчас

   номернедели="";
   //н=0;//начала отсчета для количества присоединяемых пустых нулей
   
   ТабДок = Новый ТабличныйДокумент;
   Макет = Документы.ЗапускВПланирование.ПолучитьМакет("Печать");
   ОбластьГрафик = Макет.ПолучитьОбласть("График|Номен");
   //ОбластьНеделя=Макет.ПолучитьОбласть("График|Неделя");
       Для Каждого стр Из СоставИзделияПодетально Цикл
           
       ОбластьГрафик.Параметры.Заполнить(стр);
       ТабДок.Вывести(ОбластьГрафик);            
       //начали играться с секцией неделя    
       для  сч=1 по стр.Неделя цикл    
       ОбластьНеделя=Макет.ПолучитьОбласть("График|Неделя");
       ОбластьНеделя.Параметры.Заполнить(стр);
       если
       сч<>стр.Неделя тогда //забиваем пустыми значениями ненужные клетки в кроссе
       ОбластьНеделя.Параметры.Количество="";
       конецесли;
       ТабДок.Присоединить(ОбластьНеделя);
       //н=н+1;
        конеццикла;
   КонецЦикла;
52 Wobland
 
15.06.13
09:20
ПолучитьОбласть из цикла вынь
53 Kurbash
 
15.06.13
09:28
зачем? и так нормально
54 Wobland
 
15.06.13
09:29
(53) тогда ещё .ПолучитьМакет("Печать"); туда засунь