|
v7: Научите выводить секции | ☑ | ||
---|---|---|---|---|
0
e-9
31.07.14
✎
13:18
|
Все тот же табель отработанного времени:(((
По горизонтали он имеет секции: "Табель", в эту секцию вложены две секции: "Колонтитул" и "Работник". Выводим "Табель<", "Колонтитул", в цикле выводим секцию "Работник", наконец - "Табель>". Вертикальных секций сначала не было - просто столбцы, в том числе дни месяца, с 1 по 31 . Все было шоколадно. Но захотелось совершенства - чтобы выводилось ровно столько дней, сколько их в месяце, а не всегда 31. (ШиринаСтолбца(0) не помогла - столбец сжимался, но не до нуля и все равно сиротливо выглядывал). Решил разбить табель вертикальными секциями (см. наглядно https://yadi.sk/i/5m2CH9fjYbhfQ): "Левая" - до 28-го дня включительно, "29", "30", "31" и "Правая" (все, что после 31-го дня). И выводить сначала "Табель<|Левая", потом Для Сч=29 По ДатаЧисло(КонМесяца(ДатаДок)) Цикл Таб.ВывестиСекцию("Табель<|"+Сч); КонецЦикла; и наконец "Табель<|Правая". А потом уже "Колонтитул", всех работников и "Табель>". Замысел вроде чудесный - но, как всегда, споткнулся о серую реальность: 1. во-первых, клал он (1С) на то, что я в порядке испытания закомментировал вышеприведенный цикл с выводом секций "29", "30", "31" - он их все равно выводит!!! Т.е., никакого смысла во всех мучениях - как ни крути. выведутся все 31 день. 2. во-вторых, нормальной, заданной в конфигураторе, ширины, выводятся только столбцы секции "Левая". Все остальные разъехались (см. https://yadi.sk/i/ez4t83biYbtia) на какую-то одинаковую для всех ширину. 3. в-третьих, перед колонтитулом зачем-то появились 5 пустых строк - см. https://yadi.sk/i/2oZSIyqlYbvNv (справа в зеленом - как надо, как было до разбиения на вертикальные секции). ...Повторюсь: фактически, в нормально работающем, без вертикальных секций, программном коде было одно-единственное изменение: вместо одной строки Таб.ВывестиСекцию("Табель<"); появились строки Таб.ВывестиСекцию("Табель<|Левая"); //ДКМ = ДатаЧисло(КМ); //Для Сч=29 По ДКМ Цикл // Таб.ВывестиСекцию("Табель<|"+Сч); //КонецЦикла; Таб.ВывестиСекцию("Табель<|Правая"); |
|||
1
e-9
31.07.14
✎
13:21
|
[ппц](...лучше бы миста дала возможность самим выделять программный код тегами, а не делала это автоматически...)[/ппц]
|
|||
2
e-9
31.07.14
✎
13:24
|
...в частности, шо она зробила с первой ссылкой, ужассс! вот еще раз:
https://yadi.sk/i/5m2CH9fjYbhfQ |
|||
3
Teresa
31.07.14
✎
13:28
|
(0) Прочла название темы "Научите вводить санкции"... Перегрелась, видать) Простите за оффтоп)
|
|||
4
e-9
31.07.14
✎
13:29
|
(3) срочно на кухню! (компотика наварить на всю зиму, вареньица...помогает, по себе ощутил)
|
|||
5
Zhuravlik
31.07.14
✎
13:35
|
(0) Потренируйся сначала на чем-нить простом. Цель - понять как работают методы "ВывестиСекцию" и Присоединить(). Я бы все с одной вертикальной секцией попробовал замутить...
т.е. Таб.Вывести("ДеньТабеля") Пока сч = 1 По КоличествоДней Цикл Таб.Присоединить("ДеньТабеля"); КонецЦикла как-то так. |
|||
6
DGorgoN
31.07.14
✎
13:35
|
//ДКМ = ДатаЧисло(КМ);
//Для Сч=29 По ДКМ Цикл !!!!!!!!!!!!!!!!!!!!!!! Таб.ПрисоеденитьСекцию("Табель<|"+Сч); //КонецЦикла; |
|||
7
DGorgoN
31.07.14
✎
13:37
|
Логика такая.
ВывестиСекцию ПрисоеденитьСекцию ПрисоеденитьСекцию ------------> -----------------> -----------------> ВывестиСекцию ПрисоеденитьСекцию ПрисоеденитьСекцию ------------> -----------------> -----------------> ВывестиСекцию ПрисоеденитьСекцию ПрисоеденитьСекцию ------------> -----------------> -----------------> |
|||
8
DGorgoN
31.07.14
✎
13:38
|
Т.е. ВывестиСекцию это всегда новая строка, а ПрисоеденитьСекцию присоединяет к этой строке ячейки
|
|||
9
e-9
31.07.14
✎
13:43
|
DGorgoN, спасибо огромное! все понял - теперь все как надо!
|
|||
10
e-9
31.07.14
✎
13:44
|
(как всегда, не хватает времени на RTFM - в результате, куча времени уходит на поиск элементарных ошибок, проистекающих от недостатка RTFM:)))
|
|||
11
e-9
31.07.14
✎
13:48
|
упс....не все ок - самая первая-то проблема и не исчезла:(((
сделал табель за ИЮНЬ (раскомментировал, понятно, цикл) - все равно выводится и 31-е тоже, причем ненормальной ширины....а все остальное - ок! |
|||
12
e-9
31.07.14
✎
13:50
|
...в отладчике проверил: ДКМ = ДатаЧисло(КМ) равно 30, как и должно быть для июня
|
|||
13
DGorgoN
31.07.14
✎
14:03
|
(12) Вся инфа для размышления у тебя есть. думай, отладчиком или сообщить ищи ошибку.
|
|||
14
e-9
31.07.14
✎
14:03
|
ВСЕ!!! я тормоз
просто надо было не только секцию "Табель<" выводить "по кускам", через ПрисоединитьСекцию, но также и "Колонтитул", и "Работник", и "Табель>" |
|||
15
e-9
31.07.14
✎
14:04
|
(13) :))))) (ты опередил на секунду:))
|
|||
16
дедушка Вах
31.07.14
✎
14:22
|
(0) ну всё, теперь такой сделай:
за _ месяц Сотр|ВР(сумма)|ВР(сумма)|...|ВсегоНач|ВР(сумма)|ВР(сумма)|...|ВсегоУд|Итого|Выплачено|Остаток ЗЫ может адынеснегом станешь |
|||
17
DmitriyDI
31.07.14
✎
14:26
|
(3) аналогично прочитал)
|
|||
18
e-9
31.07.14
✎
14:42
|
(16) легко:) программистом стал давно, и семерке меня уже не изуродовать
(17) и это печально.... |
|||
19
e-9
31.07.14
✎
15:12
|
Да что ж это такое, в конце концов!...
Теперь поплыли левые столбцы - № п/п, ТабНомер, ФИО, даты до 15-го включительно: https://yadi.sk/i/ZYEbbDnWYdhQ5 до сегодняшних модификаций, все было ок (как в этом скриншоте https://yadi.sk/i/ez4t83biYbtia ) Вот почему, вместо заданной в конфигураторе ширины, у них выводится какая-то непонятная вообще ширина????? |
|||
20
e-9
31.07.14
✎
15:18
|
нет, я могу, конечно, перелопатить все 51 столбец, выставляя ширину программно - но ПОЧЕМУ???!!!
|
|||
21
Ёпрст
31.07.14
✎
15:18
|
скриншот макета покажи
|
|||
22
Ёпрст
31.07.14
✎
15:19
|
и вот это "<" в имени секций.. вообще никогда не используется.
Механизм вложенных секций, как правило, не используется нигде, он вообще не нужен для вывода. |
|||
23
e-9
31.07.14
✎
15:19
|
о!!...Ёпрст!!! наконец-то - я думал, ты местный дух и всегда тут присутствуешь!:) теперь мы всех победим
вот: https://yadi.sk/i/SSGWS4HYYdjuw |
|||
24
Ёпрст
31.07.14
✎
15:21
|
(23) у... какой фееричный пиз..дец!
|
|||
25
e-9
31.07.14
✎
15:21
|
я там кстати небольшие изменения внес, по сравнению с ранее приведенными скриншотами - вместо Сотрудник теперь, как и требовалось, выводится СотрДолж = Сотрудник.Наименование+РазделительСтрок+Сотрудник.Должность.Получить(НМ);
Однако, столбцы поплыли не из-за этого, и даже до этого |
|||
26
Ёпрст
31.07.14
✎
15:21
|
выкидывай все вертикальные секции в табеле, оставь только !одну! для дней, её и присоединяй в цикле.
Будет всегда всё ровно и одной ширины. |
|||
27
e-9
31.07.14
✎
15:22
|
(24) так. Раз и навсегда - я программист, а не 1сНЕГ с вывернутыми мозгами!
|
|||
28
e-9
31.07.14
✎
15:23
|
(26) не понял
мне в феврале, например, только 29-й день нужен (если високосный год) в июне - только 29-й и 30-й в июле - все, 29-31 и как я это реализую с ОДНОЙ вертикальной секцией???????????? |
|||
29
ДенисЧ
31.07.14
✎
15:24
|
(28) Это тайная магия 1с. Пока не освоишь - у тебя ничего не будет получаться.
|
|||
30
e-9
31.07.14
✎
15:25
|
(28) может, ты в смысле, "Левая" и "Правая" не нужны, только "29", "30", "31"
?? |
|||
31
Ёпрст
31.07.14
✎
15:25
|
||||
32
e-9
31.07.14
✎
15:30
|
ребята...(и девчата) простите меня - я тупо забыл приписать "|Левая" в самом конце всех приключений; т.е. в подвале у меня было
Таб.ВывестиСекцию("Табель>"); вместо Таб.ВывестиСекцию("Табель>|Левая"); (упс!) исправил - теперь все-все-все ОК!!! |
|||
33
Ёпрст
31.07.14
✎
15:46
|
а надо будет за 2 или 3 месяца табель, тоже будешь ручонками макет с 60 колонками рисовать ?
:)) |
|||
34
Ёпрст
31.07.14
✎
15:50
|
тебе надо было всего лишь
Таб.ВывестиСекцию("Шапка"); //вывод заголовков Таб.ВывестиСекцию("Заголовок|Левая"); Для к = НачДата По КонДата Цикл Таб.ПрисоединитьСекцию("Заголовок|Тело"); КонецЦикла; Таб.ПрисоединитьСекцию("Заголовок|Право"); //вывод всего остального Таб.ВывестиСекцию("Строка|Левая"); Для к = НачДата По КонДата Цикл Таб.ПрисоединитьСекцию("Строка|Тело"); КонецЦикла; Таб.ПрисоединитьСекцию("Строка|Право"); //вывод подписей: Таб.ВывестиСекцию("Подвал"); |
|||
35
Patrio_
O_Muerte 31.07.14
✎
16:20
|
Топикстартер похоже лопнул от наплыва семерошного интеллекта :)
|
|||
36
e-9
31.07.14
✎
17:41
|
(34) так...я что, могу одну секцию присоединить N раз, N>=0???
а как менять содержимое? вот у меня сейчас, в каждом столбце дня, выражение "Д"+Сч, Сч=1,...,ДатаЧисло(КонМесяца(ДатаДок)). Я его ввел в режиме макета. Как программно его поменять, перед выводом очередного экземпляра секции? И разве, если я сменю выражение, это затронет только выводимый экземпляр секции, а не все, ранее выведенные? (35) не то слово |
|||
37
e-9
31.07.14
✎
17:41
|
+(36) в смысле, у меня в макете Д1,....,Д31
|
|||
38
DGorgoN
31.07.14
✎
17:44
|
(36) Заноси данные сначала в таблицу значений, а из неё уже делай вывод в таблицу что-бы ничего не менять. Так проще.
|
|||
39
ДенисЧ
31.07.14
✎
17:44
|
(36) Выражение вычисляется в момент вывода секции. Так что и захочешь что-то поменять в выведенных - не так-тоо и просто_тебе_ будет
|
|||
40
Ёпрст
31.07.14
✎
17:46
|
(36) удивительное рядом, не так ли ?
:) |
|||
41
ДенисЧ
31.07.14
✎
17:48
|
(40) Он так мозги себе вывернет (см (27)) и станет настоящим 1сником :-)
|
|||
42
Ёпрст
31.07.14
✎
17:49
|
(41) новое слово в медицине - "заворот мозгов" ?
:) |
|||
43
e-9
31.07.14
✎
17:51
|
(38) а чего проще? и так проще некуда - данные в таблицу вносятся непосредственно из многострочной части документа (кроме всяких там итогов - они считаются программно, пишутся в переменные, которые указаны как Выражение, в соответствующих ячейках таблицы).
(40-42) да уж..... |
|||
44
uno-group
31.07.14
✎
19:03
|
Долго это все всего то надо было
Таб.ВывестиСекцию("Шапка"+(ДатаЧисло(КонМесяцаДатаДок))) И сделать 4 горизонтальных секции Шапка28,Шапка29,Шапка30,Шапка31). и остальные соответственно и работать будет быстрее |
|||
45
uno-group
31.07.14
✎
19:06
|
и все эти Таб.ВывестиСекцию("Табель<|"+Сч) в данном случае от лукавого. сделал 2 секции ТабельШапка. табель дно и о больше меньше забыл
|
|||
46
uno-group
31.07.14
✎
19:09
|
А лучше вообще 4 таблица бахнуть и 1 строку кода
таб.ИсходнаяТаблица(ДнейВмесяце) 4 копипасте и дел лишних столбцов |
|||
47
uno-group
31.07.14
✎
19:13
|
ну и последний вариант с чего ты начинал кроме ШиринаСтолбца(0) для несуществующих дат сделать еще объединение ячеек с последним днем и рамкой обвести
|
|||
48
Злопчинский
31.07.14
✎
19:24
|
слушай Епрста!
у меня табель отработанного времени ппост как две копейки http://screencast.com/t/vZNOSJ2J7yGn |
|||
49
Ёпрст
31.07.14
✎
19:47
|
||||
50
Dmitry1c
31.07.14
✎
20:11
|
Я один прочитал название темы - "Научитесь вводить санкции"?
|
|||
51
e-9
01.08.14
✎
15:52
|
(44-47) короче, нет предела безум...возможностям СЕМЕРКИ!
(48) а мне (т.е. организации) надо навороченный, как пицотевро (49) бережно сохранил в специальной папке Ёпрст! Для тщательного изучения долгими зимними днями... (50+3+17) лечитесь, пока не поздно (относится также ко всем, кто побоялся признаться) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |