Имя: Пароль:
1C
 
Табличный документ. Использование функций Вывести() и Присоединить()
,
0 Svetlana_Kazan
 
13.09.17
11:23
Помогите разобраться. Не могу понять, почему у меня фактически табличный документ СекцияГод не присоединяется, а выводится друг под другом.
ТабДок = Новый ТабличныйДокумент;
...
Счетчик = 0;
Для каждого Элемента Из Год Цикл
    СекцияГод = Новый ТабличныйДокумент;
    //Здесь формируется табличный документ СекцияГод на каждый год
    ...
    //для вывода по два табличных документа на странице рядом
    Если Цел(счетчик/2)*2 = счетчик Тогда
        ТабДок.Вывести(СекцияГод);                
    Иначе
        ТабДок.Присоединить(СекцияГод);
        ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;
    счетчик = счетчик + 1;
Конец Цикла
//так выводится. Счетчик=0 - это табличный документ при Счетчик равным 0 и т.д.
Счетчик=0    Счетчик=1
Счетчик=2    Счетчик=2
и т.д.
1 DrShad
 
13.09.17
11:26
потому что 1 / 1 * 2 = 1
2 Svetlana_Kazan
 
13.09.17
11:29
А почему (1/1)*2?
Там делится на 2 и умножается на 2
3 DrShad
 
13.09.17
11:31
(2) сорри опечатлся, но результат от деления и умножения числа на одно и то же число все равно даст вам именно это число
4 DrShad
 
13.09.17
11:31
так что 1 / 2 * 2 = 1
5 DrShad
 
13.09.17
11:31
проверку на четность числа нужно делать по другому
6 Svetlana_Kazan
 
13.09.17
11:31
Там же функция Цел() применяется.
7 DrShad
 
13.09.17
11:32
еще раз сорри, сегодня 256-й день  - туплю
8 catena
 
13.09.17
11:33
(5)С праздником?
9 DrShad
 
13.09.17
11:34
(8) угу...
10 Svetlana_Kazan
 
13.09.17
11:35
Счетчик = 0:
Цел(0/2)*2 = 0
Счетчик = 1:
Цел(1/2)*2 = 0
Счетчик = 2:
Цел(2/2)*2 = 2
Счетчик = 3:
Цел(3/2)*2 = 2
и т.д.
Вроде все правильно.
Но вот при Присоединить() почему-то табличный документ не справа присоединяется, а выводится ниже.
11 DrShad
 
13.09.17
11:36
(6) ну тогда чудес не бывает и хотя определение четности немного странное, но по коду все нормально

можно скрин результата?
12 catena
 
13.09.17
11:38
(10)Присоединять надо области. Видимо, ваш табличный документ не ограничен "самой правой выведенной колонкой"
13 Svetlana_Kazan
 
13.09.17
11:42
(6) к сожалению не получается скрин разместить.
14 Svetlana_Kazan
 
13.09.17
11:43
(10) не совсем поняла.
Если я использую всегда Присоединить(), то у меня справа присоединяет нормально, но вот в чередованием Вывести() и Присоединить() не получается.
15 DrShad
 
13.09.17
11:45
(14) не получается не в чередовании, а в размерах таб доков
16 catena
 
13.09.17
11:48
(14)
Синтаксис:

Присоединить(<Таблица>, <Уровень>, <ИмяГруппы>, <Открыта>)

Присоединяет табличный документ к результирующему табличному документу, помещая его в следующей колонке правее самой правой выведенной колонки, начиная со строки, с которой выводился предыдущий табличный документ.


Т.е., у предыдущей секции должна быть четко-определенная правая граница.
17 Svetlana_Kazan
 
13.09.17
11:48
Табличные документы идентичные по размеру. Количество строк не меняется и всегда = 20.
18 DrShad
 
13.09.17
11:49
а речь про количество колонок
19 Svetlana_Kazan
 
13.09.17
11:50
(18)Тоже всегда одинаковое = 15
20 DrShad
 
13.09.17
11:51
(19) не всегда ))), то что вам кажется, является таковым
21 DrShad
 
13.09.17
11:52
выводить и присоединять нужно не сам таб док СекцияГод, а лишь его область (1,1,20,15)
22 Svetlana_Kazan
 
13.09.17
12:29
(16) catena, а вы могли бы пример какой-нибудь привести? что означает "у предыдущей секции должна быть четко-определенная правая граница"?
23 Ёпрст
 
13.09.17
12:35
(0)

//Если Цел(счетчик/2)*2 = счетчик Тогда
Если счетчик%2 = 0 Тогда

ЗЫ: Присоединяй Область, а не табличный документ
24 h-sp
 
13.09.17
12:38
(22) ну как быть для Вывести

Область = ПолучитьОбласть("Строка|Колонка");

а

Область = ПолучитьОбласть("Строка");

не прокатит.
25 Ёпрст
 
13.09.17
12:39
(24) прокатит, только Присоединить будет аналогичен Вывести .
26 DrShad
 
13.09.17
12:40
(22) что из (21) непонятно?
27 aka AMIGO
 
13.09.17
12:45
(13) не получается скрин разместить.

Скачай GreenShot , скопируй вот этот адрес/сайтик в свой браузер: https://pastenow.ru/

В настройках GreenShot"а можно установить режим вырезки прямоугольной области экрана.
Жми PrtScr, выделяй область
После Ctrl+V на сайтике, жми "Подробнее, и верхнюю строчку копируй сюда.
28 aka AMIGO
 
13.09.17
12:47
+27 GreenShot - не обязателен, тогда выкладывается весь экран.

И - да, выкладывается то, что находится в буфере обмена.
29 Svetlana_Kazan
 
13.09.17
12:49
Все заработало. Спасибо всем!
Если счетчик%2 = 0 Тогда
    НовыйТабДок.Вывести(СекцияГод.ПолучитьОбласть(1,1,20,15));
Иначе
    НовыйТабДок.Присоединить(СекцияГод.ПолучитьОбласть(1,1,20,15));
    НовыйТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
Так как у меня строки - это месяцы года, то количество строк и столбцов у меня строго одинаковое всегда.
30 Svetlana_Kazan
 
13.09.17
12:49
(28) Спасибо! Теперь буду знать.
31 DrShad
 
13.09.17
12:51
(29) вот только беда - в году 12 месяцев, а не 20 ))))
32 Svetlana_Kazan
 
13.09.17
12:52
Так ведь еще шапка + итоговая строка
33 catena
 
13.09.17
12:53
Так это все ради календаря?
34 Svetlana_Kazan
 
13.09.17
12:56
(33) не совсем, данные собираются по месяцам за год. В выводить надо по 2 года вместе.
35 aka AMIGO
 
13.09.17
12:58
Вот когда-то я трудился над календарным графиком..
http://catalog.mista.ru/public/20905/
36 Ёпрст
 
13.09.17
12:59
(29) задавать числа в методе - моветон. Пользуй ШиринаТаблицы, ВысотаТаблицы
37 Svetlana_Kazan
 
13.09.17
13:02
вот что получилось http://pastenow.ru/8d1b6fb88a240e47327567fee7dd49e0

я только начинаю и большое спасибо, что не оставили мой крик о помощи без внимания!
38 DrShad
 
13.09.17
13:05
(37) присоедини пустую колонку между ними