Имя: Пароль:
1C
1C 7.7
v7: Что можно придумать с областью табличного документа ?
Ø (Волшебник 09.07.2024 10:27)
0 ALCAPONA
 
05.07.24
15:42
Всем доброго дня.
Есть табличный документ.
В нём в цикле выводятся секции шапки, детализации, подвала.
Возможно ли каким-то способом после вычисления значений подвала удалить всю область с последней шапки и до конца таблицы ?

В 7.7 нет Область.Удалить(), УдалитьОбласть() и т.п. методов.

Как вариант можно было бы делать через 2 табличных документа: вычислять во втором документе необходимые данные и в зависимости от этого переносить 2-й документ в первый или очищать, но и этого 7.7 не умеет. Метод "Вывести" работает со всем макетом в целом.

Гугл предлагает много способов, но все они для 1с8.
1 Злопчинский
 
05.07.24
16:00
Нихера не понял.
Что ты хочешь решить?
Избавиться от полностью или частично висящего подвала? - так это штано решается
2 Злопчинский
 
05.07.24
16:02
И какая "последняя шапка"
Та что повторятьстрокиприпечати или шапка, которая выводится прямым кодом?
3 ALCAPONA
 
05.07.24
16:02
Я формирую печатную форму, в процессе проводя вычисления и при определённом результате этих вычислений мне нужно из готовой сформированной печатной формы к примеру удалить строки с 20-й по 30-ю.
Как это сделать в 7.7 ?
4 Мультук
 
05.07.24
16:05
(3)

Сначала всё посчитать в уме
Потом вывести то что нужно
5 Участковый
 
05.07.24
16:05
Делай виртуальные вычисления и готовый результат уже пиши в табличный документ.
6 DCKiller
 
05.07.24
16:06
(3) Может, стоит сначала все вычисления провести, а потом уже из них удалить то, что не нужно, и вывести результат в таблицу?
7 Злопчинский
 
05.07.24
16:07
(3) пихай вычисленное в ТЗ.
Потом готовую тз тупо выводи на печать
8 ALCAPONA
 
05.07.24
16:08
Это двойная работа программы получится: сначала всё обсчитать до конца, понять, устраивает ли нас результат. Если устраивает, считать всё заново во второй раз, выводя всё это в секции шапки и детализаций.
Долго и нерационально.
9 ALCAPONA
 
05.07.24
16:09
В ТЗ красиво не запихаешь всё это, там много разнокалиберных значений, будет куча разных ТЗ.
10 Злопчинский
 
05.07.24
16:11
Да один хрен куда выводить в печформу или в нет пизировпнную тз.
11 ALCAPONA
 
05.07.24
16:13
Ясно, думал может есть способ более правильный и простой, но видимо нет.
Всем спасибо.
12 Злопчинский
 
05.07.24
16:13
(8) ну если хочется гемора читай сформированный моксель поячеечно и перекидывай в новый моксель. Озеренно быстро будет по сравнению с выводом ране прочитанного результата ;-)
13 Мультук
 
05.07.24
16:18
[skip]
14 MarySue
 
05.07.24
18:51
я в шоке
15 Злопчинский
 
05.07.24
19:02
(14) это да, слабонервным тут не выжить ;-)
16 Salimbek
 
07.07.24
13:13
(11) Создаешь новый ТабДок с нужной структурой и нужным количеством секций, потом перебираешь первый ТабДок через Область = ТабДок.ПолучитьОбласть(Х,У); и во втором документе устанавливаешь значения через ТабДок2.ПолучитьОбласть(Х2,У2).Текст = Область.Текст;
17 Волшебник
 
07.07.24
13:48
(5) Чем виртуальные вычисления отличаются от реальных?
18 Злопчинский
 
07.07.24
18:01
(16) в (12) предлагал уже.
Но это редкостное извращение если сложное оформление
19 Salimbek
 
07.07.24
22:57
(18) Проще всего, конечно, для секций Шапки и подвала формировать секции, которые выводились в первую таблицу, в отдельных переменных. И если первая таблица оказалась ненужна, то сделать в итоге просто:
ТабДок2.ВывестиСекцию(СекцияШапки);
ТабДок2.ВывестиСекцию(СекцияПодвала);
20 Злопчинский
 
08.07.24
00:07
(19) ничего не понял.
Тут произвольная часть тела таблицы в конце формирования оказывается ненужной...
21 Salimbek
 
08.07.24
02:16
(20) Таблицу то до этого формируют, а для этого Секции создают.
Даже, лучше сразу два Табличных дока создавать. В один выводить все секции, в другой только избранные. А в конце вывести только нужный.
22 MarySue
 
08.07.24
04:08
(21) для таких случаев (предварительные вычисления, свёртки, сортировки, преобразования) придуман максимально удобный инструмент, называется - ТАБЛИЦА ЗНАЧЕНИЙ
перестаньте удалять гланды через неподобающее место, юзайте нормальые практики
23 DJ Anthon
 
08.07.24
06:24
(8) а удалять уже сформированные строки табличного документа офигеть как рационально
24 Злопчинский
 
08.07.24
11:50
(21) избранные становятся известны только после полного формирования. Поэтому таб1 и таб2 будут совпадать
25 maxab72
 
08.07.24
11:53
Если автор очень хочет геморроя, то в 77 можно не удалять область, а очищать все ее содержимое.
26 ALCAPONA
 
08.07.24
12:06
(25)
Можно очищать, но она всё равно останется в табличном документе, и следующая секция будет добавлена ниже неё.
27 LienXo
 
08.07.24
13:14
(26) давно это было, но если верно помню в 77 можно играть с высотой строки, очисти и высоту строки в 0. Но это неточно
28 maxab72
 
08.07.24
13:17
(26) так я же говорю про геморрой, где у меня сказано про заполнение таблицы по секциям? Только хардкор, только прямой адресацией ячеек.
29 ALCAPONA
 
08.07.24
14:14
(27)
Пробовал, установка 0 ничего не даёт, установка 1 даёт довольно обширный белый кусок на странице.
30 ALCAPONA
 
08.07.24
14:17
Да ладно, забейте, нет красивого способа в клюшках.
Уже сделал облегчённый предварительный расчёт результата, и если результат положительный, делаю полный расчёт с выводом всех секций.
Программа само собой работает чуть дольше, но оказывается не критично дольше.
А всё остальное потребовало бы или гемора с перебором ячеек, или множества ТЗ с кучей мусорной информации.
31 MarySue
 
09.07.24
09:04
беда отрасли 1С в том, что программистами становятся люди без профильного образования,  слыхом не слыхавшие о методологии решения задач, и понятия не имеющие о том, что такое "best practice"
а самое удручающее - когда они и не желают ничему учиться
32 trad
 
09.07.24
09:08
(31) так можно сказать про любую отрасль
33 АЛьФ
 
09.07.24
09:33
Не выводить секции в таблицу, а сохранять их в список значений. В случае необходимости удалить из списка ненужные секции. В конце прой
34 АЛьФ
 
09.07.24
09:33
+(33) В конце пройтись по списку значений и вывести все в таблицу.
35 АЛьФ
 
09.07.24
09:35
А еще можно использовать объект "ТабличныйДокумент" из Йокселя. Он умеет удалять строки.
36 Масянька
 
09.07.24
09:43
(35) +100500!
Один раз потратить полдня, зато потом за 5 минут долететь! ©