Имя: Пароль:
1C
 
Убрать нули из дробной части при форматировании
0 Nic1
 
22.10.09
16:44
Использую при выводе таблицы:
Таб.ИспользоватьФормат("Ч15.2,");

Можно ли убирать нули из дробной части, если дробной части нету? Т.Е, вместо "0,00" выводить "0"?
1 Nic1
 
22.10.09
16:45
или вместо "5,00" выводить "5"
2 Ochkarito
 
22.10.09
16:48
Можно не использовать форматирование)
3 Nic1
 
22.10.09
16:51
Форматирование нужно, в огромной таблице нужно проставить формат, отличный от системного
4 Ёпрст
 
гуру
22.10.09
17:18
заместо Формат используй Окр() и наслаждайся.
5 Nic1
 
22.10.09
17:21
это как?
во-первых, мне нужно сразу применить формат ко всей таблице,
во-вторых, округление нужно до сотых, если дробная часть есть.
6 Ёпрст
 
гуру
22.10.09
17:22
(5) Прочитать про Окр ужо религия не позволяет?..
7 Ёпрст
 
гуру
22.10.09
17:22
+6 а вот ко всей таблице - обломись.
8 Nic1
 
22.10.09
17:23
(7) суть в том, чтобы ко всей таблице. По каждой ячейке это гемор, таблица огромная
9 Ёпрст
 
гуру
22.10.09
17:24
(8) "огромная" - это сколько столбиков?
10 Nic1
 
22.10.09
17:25
20 столбиков и 70 строк - фиксированный формат выходной формы
11 Ёпрст
 
гуру
22.10.09
17:26
а вообще, тупо отмена форматирования вообще и при выводе все числовые значения делать через Окр и привет..
12 Nic1
 
22.10.09
17:26
то бишь, 1400 ячеек))
13 Ёпрст
 
гуру
22.10.09
17:26
(10) дык это детская табличка..
14 Ёпрст
 
гуру
22.10.09
17:27
(12) и чего ? она же не "руками" заполняется..
15 NS
 
22.10.09
17:28
Если Цел(зн)=зн тогда
печЗн=формат(зн,"Ч012");
иначе
печзн=Формат(зн,"ч012.3,");
конецесли;
16 Nic1
 
22.10.09
17:29
В каждой из этой ячеек стоит свое уникальное выражение, к каждому тогда придется применять еще какую-то формулу. Чтобы обработать 1400 ячеек, время придется потратить немало.
17 Nic1
 
22.10.09
17:30
(14) типа того))
18 Ёпрст
 
гуру
22.10.09
17:37
(15) Нафига так то ? Окр(Зн,2,1) и привет
19 Ёпрст
 
гуру
22.10.09
17:38
(16) ну ты же потратил ужо его, забивая выражения в ячейках ?
Данные для выражений же находятся в модуле формы, не так ли ?
Там и правь... нафик тебе в таблицу лезть руками.. не вкурю..
20 Nic1
 
22.10.09
17:41
(19) потратил один раз, больше не хочу))
Тем более, отчетов несколько, некоторые из них весьма объемные.
И какая разница, в таблице или в модуле? Ну в модуле править 1400 выражений, что я от этого выиграю?
21 Nic1
 
22.10.09
17:42
(18) Окр - не даст запятую в разделителе))
22 Ёпрст
 
гуру
22.10.09
17:42
(20) проще..
23 Ёпрст
 
гуру
22.10.09
17:43
(21) Чего курим ?
Окр(0.00,2,1) = 0
Окр(5.00,2,1) = 5
Окр(5.009,2,1) = 5.01
24 zak555
 
22.10.09
17:45
(21) запятая тебе нужна ?

ЧислоСЗапятой = СтрЗаменить(Окр(Зн,2,1),".",",");
25 Nic1
 
22.10.09
17:45
(24) все, я счастлив, побежал делать))))))
26 zak555
 
22.10.09
17:46
(25) что? о_О
27 zak555
 
22.10.09
17:47
(25) НО : (24) - это уже число!
28 Nic1
 
22.10.09
17:49
(23)(24) * 1400 ячеек))
29 Nic1
 
22.10.09
17:49
* несколько отчетов
30 zak555
 
22.10.09
17:51
(28) что это?
31 Nic1
 
22.10.09
17:53
(30) суть всей темы в том, как это сделать сразу во ВСЕЙ ТАБЛИЦЕ...
32 Nic1
 
22.10.09
17:54
а не к каждому выражению
33 zak555
 
22.10.09
17:54
(31) что у тя за таблиц такая?
34 Ёпрст
 
гуру
22.10.09
17:55
(31) Ответ никак устроит ?
И покажи-ка код формирования этого чуда..
Не верю я в 1400 переменных для его формирования.
35 zak555
 
22.10.09
17:56
(34) у него наверное таблица эта есть, в которой написаны числа 1400 раз
36 Nic1
 
22.10.09
17:58
(34)
Отчет бюджет, 20 подразделений, 70 статей издержек (в т.ч. сводные показатели). Формат отчета фиксированный, т.е., всегда именно 70 строк.
Стало быть, в каждой ячейке - уникальное выражение. Хочешь верь, хочешь не верь))
37 Ёпрст
 
гуру
22.10.09
17:59
(35) Если она есть, то пробежаться по всей и через область поменять числа - пара сек. понадобится..
38 Ёпрст
 
гуру
22.10.09
17:59
(36) код то покажи - где выводятся 1400 переменных.
39 Nic1
 
22.10.09
18:00
(37) можно и так, была такая идея, просто думал, может в функции Формат есть такая возможность, так было бы проще
40 zak555
 
22.10.09
18:01
(39) нет, только когда заполняешь
41 Nic1
 
22.10.09
18:02
(38) зачем он тебе?
42 Ёпрст
 
гуру
22.10.09
18:02
(41) как-то в сказки не верится..
43 Ёпрст
 
гуру
22.10.09
18:03
+42 и в макет таблицы из 1400 ячеек.
44 Nic1
 
22.10.09
18:04
дык это чистая правда, зачем бы мне спрашивать, если бы все было так просто?
Кстати, код отрабатывает быстро, формируется мухой))
45 Ёпрст
 
гуру
22.10.09
18:04
Хотя бы скриншот макета покажи...
46 Nic1
 
22.10.09
18:05
(43) хе, так это еще по-детски, мне рассказывал знакомый прогер про таблички в десятки раз больше))
47 Ёпрст
 
гуру
22.10.09
18:06
(46) Ты это ..показывай скриншот..
48 Nic1
 
22.10.09
18:10
49 zak555
 
22.10.09
18:12
(48) там переменные ? О__0
50 Ёпрст
 
гуру
22.10.09
18:12
(48) и чего, хочешь сказать, что ВСЁ это не делается через вывестисекцию-ПрисоединитьСекцию, т.е динамически ?
Не верю.
51 Nic1
 
22.10.09
18:13
(50)
ага, через Таб.Вывести()
Все это переменные
52 zak555
 
22.10.09
18:13
(51) ТАб.Показать()
53 Nic1
 
22.10.09
18:13
так как дынные динамически меняются, а структура таблицы должна быть постянной
54 zak555
 
22.10.09
18:14
(53) и какие проблемы?
55 zak555
 
22.10.09
18:14
(53) сколько таблицу писал?
56 Ёпрст
 
гуру
22.10.09
18:15
(51) извращение какое-то....
Не верю всё равно в НеВозможность создания такой таблички динамически, без 1400 переменных.
57 Nic1
 
22.10.09
18:15
(54) проблемы такие, что пришлось заводить столько переменных
58 Nic1
 
22.10.09
18:16
(55) ну, не очень долго, там названия однотипные, сделал одну строку, а потом через поиск-заменить...
59 Ёпрст
 
гуру
22.10.09
18:16
(57) может того, переписать всё заново ?
60 Nic1
 
22.10.09
18:17
(59) если подскажешь идею, сделаем))
61 zak555
 
22.10.09
18:17
(58) переписывай
62 zak555
 
22.10.09
18:18
(60) ПрисоеднитьСекцию !!
63 Nic1
 
22.10.09
18:20
ладно, пока убегаю, завтра продолжим))
64 Ёпрст
 
гуру
22.10.09
18:20
(60) идея - в (50)
65 mad hatter
 
22.10.09
18:57
аааа...
застрелица автору еще не предлагали? )))
66 Ёпрст
 
гуру
22.10.09
19:00
тссс... не спугни. Нужно выявить их всех, в (46) еще один такой есть где-то..
:0
67 KishMish
 
23.10.09
08:08
Соообщить(СтрЗаменить("15.00",".00",""));
Окно сообщений
15
68 Шахид
 
23.10.09
08:13
после вывода таблицы
но перед тем как ее показать
через Область измени формат в нужных ячейках
69 Шахид
 
23.10.09
08:14
кури Атрибуты и методы Области Таблицы
70 Nic1
 
23.10.09
09:43
> и чего, хочешь сказать, что ВСЁ это не делается через вывестисекцию
ПрисоединитьСекцию, т.е динамически ?
Не верю.

- Распишу задачу поподробнее, может быть кто предложит более оптимальный и менее трудоемкий алгоритм решения. В чем я правда сильно сомневаюсь, но попытка не пытка))

Итак, есть выборка данных в виде: «Подразделение - статья затрат - сумма», отсортированная по подразделениям и статьям.

Требуется вывести данные в таблицу фиксированного формата. Например:
----------------------------------------------------------------------
           Подразд1   Подразд2   Подразд3   Пордразд4   Подразд5
Статья1
Статья2
Статья3
Статья4
Статья5
-----------------------------------------------------------------------
Данные от месяца к месяцу могут меняться, т.е., какие-то статьи или подразделения могут быть или не быть. Но структура выходной таблицы остается именно такой.

Как это можно сделать через «Вывести секцию-присоединить секцию», чтобы написание алгоритма было менее трудоемким и можно было обойтись без большого количества переменных?
71 Nic1
 
23.10.09
09:44
(68) да, это хороший вариант, попробую его)
72 Ёпрст
 
гуру
23.10.09
09:48
(70) Ё..
Завести ОДНУ вертикальную секцию и 2 горизонтальных в макете и ВСЁ:
           "Заголовок"
"Шапка"   | ПечСтатья    |
"Строка"  | ПечПоказатель|

Всё..

Далее вывод через ВывестиСекцию() + ПрисоединитьСекцию()
73 Nic1
 
23.10.09
09:50
(72) ты пишешь о технике вывода таблицы, а говорю про алгоритм вывода данных в принципе, чтобы все это не обернулось в итоге еще больши гемороем, чем через переменные.
Алгоритм можешь преложить примерный?
74 Шахид
 
23.10.09
09:56
(0) у тебя таблица
так что смело используй циклы оп стоокам или столбцам
и будет тебе счастье
75 Ёпрст
 
гуру
23.10.09
10:00
(73)а чего там сложного?
76 Ёпрст
 
гуру
23.10.09
10:01
+75 У тебя же есть все данные в ТЗ, на сколько я понял - далее тупой вывод в Таблицу и всё..
77 Nic1
 
23.10.09
10:04
(75) ну предложи алгоритм, если просто.
Как бы ты начал выводить данные в ту таблицу, которая приведена в (70)
78 azernot
 
23.10.09
10:04
ТабДанных - сврёрнута по статье и подразделнию, имеетются общие списки статей и подразделений


Вывод Шапки...

Для А = 1 По ОбщийСписокСтатей.РазмерСписка() Цикл

Статья = ОбщийСписокСтатей.Получить(А);

Вывод первого столбца таблицы с именем статьи

Для Б = 1 По ОбщийСписокПодразделений.РазмерСписка() Цикл

Подразделение = ОбщийСписокПодразделений.РазмерСписка();

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

Присоединение столбца таблицы с суммой нужного подразделения

КонецЦикла;
КонецЦикла;

Вывод подвала таблицы
79 Nic1
 
23.10.09
10:05
Например, давай заполним одну строку для начала
80 Шахид
 
23.10.09
10:06
(79) зря ты уважаемый ведешься
Ёпрст3 он умный
81 azernot
 
23.10.09
10:07
+(78) Ну я там накосячил слегка (7.7 это так давно было!), цикл не закрыл, подразделение неверно присвоил, но суть понятна.
82 Nic1
 
23.10.09
10:11
(81) ну да, на первый взгляд подходящее решение)
83 azernot
 
23.10.09
10:18
(82) Ха! На первый взгляд.. Знал бы ты сколько собак на этом съедено... Вообще, уже на уровне формирования выборки надо думать о его выводе. Приведённый алгоритм - это решение в лоб, не оптимальное (потому как перебор лишних данных присутствует при поиске подразделений).

Я обычно делал вложенные ТЗ, при формировании выборки закладывал наличие всех возможных вариантов и т.д. и т.п.
84 Ёпрст
 
гуру
23.10.09
10:18
http://webfile.ru/4027467
на вот... как пример
85 Ёпрст
 
гуру
23.10.09
10:20
вот еще метода..
http://djkxfhf.nm.ru/TZN/Rabota_s_TZN.html