Имя: Пароль:
1C
1С v8
СКД. Значения и представления ресурсов в табличном документе
0 fisher
 
02.11.12
14:49
Экономисты хотят округление в отчете до целых, но при выгрузке в excel иметь полную точность значения (для своих целей).
И в excel и в mxl ячейка может содержать значение и иметь формат представления. Проблема в том, что СКД при выводе значений ресурсов в табличный документ выводит только представление... И только оно, ессно, и выгружается в excel.
А самое смешное, что у меня стойкое дежавю, что я как-то искомое в 1С получал...
Может, таки есть способ? Ежели да - то как?
1 pessok
 
02.11.12
14:53
ну хз... по утру надо бы член 20 см, а вечером 22... имхо не взлетит
2 France
 
02.11.12
14:55
причем тут СКД то??...  автор еще раз обЯсни в чем проблема?? для тугих))
3 fisher
 
02.11.12
15:00
(2) Объяснялка сломалась. Пускай отвечают те кто понял.
Вон (1) понял.
4 pessok
 
02.11.12
15:04
(3) понять то понял, но мнение не изменил. не взлетит. надо так. два поля под одному ресурсу, в одном одно оформление, в другом другое. при выводе на форму - отбирать один показатель, перед сохранение в эксель, другой
5 France
 
02.11.12
15:11
(3) ну, как знаешь..... дело хозяйское.. и не говори потом, что не пытались тебе помочь..
6 fisher
 
02.11.12
15:12
Для тех, кто не понял, вид сбоку:
- создаем пустой mxl
- в свойствах ячейки ставим "Содержит значение", тип число, точность 14,3
- вбиваем 15,365
- ставим в свойствах ячейки формат 14,0
- выгружаем в excel и видим аналогичную картину - представление до целых, значение - с полной точностью.
Вопрос - как бы заставить СКД именно так выводить ресурсы в табличный документ? Может, через макеты? Пока мучаю - плохо получается (не удается задать макет для ресурса). Я в макетах пока не настоящий сварщик.
7 pessok
 
02.11.12
15:14
(4) присмотрись к (4) ужасно, топорно, но будет работать :)
8 pessok
 
02.11.12
15:14
(7) @ (6)
9 France
 
02.11.12
15:15
(6) скд умеет формитировать... посмотри в условном оформлении.. там можно задать формат представления...
10 fisher
 
02.11.12
15:21
(7) И как это сделать прозрачным для пользователя? Как отловить событие сохранения в ексель? Не говоря уже о проблемах формирования другой версии отчета с теми же настройками пользователя (а отчет может небыстро формироваться). И наконец - результат будет отличаться от описанного. Необходимо, чтобы в ексель было и нужное значение и нужное форматирование.
(9) Так вот проблема именно в том, что в табличный документ выводится только результат форматирования (как текст). Без исходного значения
11 pessok
 
02.11.12
15:24
(10) тогда сделай свою выгрузку в эксель, в которой будет правильное число и нужное тебе оформление. но это сам понимаешь...
12 France
 
02.11.12
15:24
(10) попробуй уболтать следующий образом: наложи формат на ячейки табличного поля: если поставить тип Число, то взлетает... только что пробовал, полет был нормальный..
13 pessok
 
02.11.12
15:26
(12) блин, откуда только такие идеи у людей появляются :) но да, почти тоже самое, что я в 11 предложил, но намного филиграннее)
14 France
 
02.11.12
15:28
(13) автор был настолько лоялен к моим попыткам помочь, что идеегенерирующий отдел мозга выдал на гора результат))
15 fisher
 
02.11.12
16:02
(12) Эммм... Типа сформировать с полной точностью, а потом пробежаться по ячейкам табличного документа и переформатировать всё как надо? Это грустный запасной вариант :)
16 pessok
 
02.11.12
16:03
(15) нормальный вариант вроде, делов-то, 3 строчки навалять
17 fisher
 
02.11.12
16:04
(16) Ну, наваляй. Удиви.
18 pessok
 
02.11.12
16:11
как-то так

Процедура ОбработатьТабДок(ТабДок)
   Ит = 1;
   Пока Истина Цикл
       
       Область = ТабДок.Область("R"+Ит+"C"+НомерКолонкиРесурса);
       
       Если Область.Текст = "" Тогда
           
           Прервать;
           
       КонецЕсли;
       
       Область.Формат = "ЧДЦ=2";
   Ит=Ит+1;    
   КонецЦикла;
   
КонецПроцедуры
19 pessok
 
02.11.12
16:12
не проверял, есессна)
20 fisher
 
02.11.12
16:15
"НомерКолонкиРесурса" - это да, тонко...
И строки результата тоже зачетно определяешь...
Короче, всё у тебя просто, если делать криво или не тебе.
21 pessok
 
02.11.12
16:22
(20) ну блин. колонку ресурса ищи обходом в цикле колонок ТД, по имени параметра... первую строчку тоже можно определять, к примеру, по первой границе ячейки... я тебе рыбу накидал )
22 fisher
 
02.11.12
16:28
Самое обидное, что процессор компоновки скармливает процессору вывода готовый кусочек макета и список параметров, где все числа с полной точностью. Что, блин, ему стоит их в значения записать? Эх...
Как хоть зная ячейку, добраться до её СКД-х расшифровок?
23 pessok
 
02.11.12
16:29
(22) а зачем? у твоего ТабДока те же самые расшифровки же
24 fisher
 
02.11.12
16:31
О них и речь.
25 Aprobator
 
02.11.12
16:33
(0) нефиг не понял. Формат вывода программно не подкрутить? Просто для отчета пусть с округлением делается, при выгрузке с требуемой точностью.
26 France
 
02.11.12
16:36
(22) создай свой макет, определи тип ячеек, выводи в него результат. И СКД все правильно будет скармивать, и доп программирования не нужно.
27 pessok
 
02.11.12
16:40
(26) в своем макете минусы, что, при смене структуры отчеты он будет работать криво

(24) ТД.Область().Расшифровка, не?
28 Aprobator
 
02.11.12
16:40
(26) при сохранении вроде пофиг. Там все равно представление записывается.
29 fisher
 
02.11.12
16:43
(26) Это аналитический отчет. Максимально универсальный.
30 France
 
02.11.12
16:47
(38) не, не пофиг.... учитывает тип ячейки...
(29) ок, успехов..
31 fisher
 
02.11.12
16:52
(27) О! Точно. Там номер элемента расшифровки лежит.
Тогда я знаю, как правильно сделать.
Красиво определять строки с данными я умею. Количество столбцов - это ширина таблицы. А из расшифровок ячеек с данными я достану имена ресурсов и их неокругленные значения.
Вроде всё должно получиться как надо... Жалко проще нельзя...
<катятся слезы обиды>
32 Aprobator
 
02.11.12
16:53
(30) и чего при выводе числа тип ячейки строка?
33 France
 
02.11.12
16:54
(32) вопрос в том, чтобы переопределить тип после вывода..
34 Aprobator
 
02.11.12
16:55
(33) зачем, если тип число?
35 France
 
02.11.12
17:00
(34) так, смешались люди кони.
в общем, если в СКД для ресурсов поставить форматирование (по условиям задачи в 0), то после вывода результата попытка сохранить его в эксель ведет к потере точности..
но, если для табличного документа, где есть результата скд установить для ресурса тип ячейки число и задать формат, то можно сохранить в эксель с заданной точностью...
36 Aprobator
 
02.11.12
17:01
(35) т.е. СКД по умолчанию тип ячейки для ресурсов не число ставит? Собственно с этого то сыр бор и начался.
37 fisher
 
02.11.12
17:05
Аааааа!!! Ненависть! Значения ресурсов (именно ресурсов!) в расшифровках не хранятся! Придется таки через опу из текста в число, потом обратно в текст...
(36) СКД вообще выводит нетипизированные ячейки. Тупо свойство "Текст" заполняет и всё.
38 Aprobator
 
02.11.12
17:07
(37) во, а то мне тут понимаете ли мозг чел парит )))
Грю меняй строку формата находу. Сделай кнопку выгрузка в эксель и пусть через нее сохраняются. Делов то минут на 10.
39 fisher
 
02.11.12
17:09
(38) Пользователи привыкли к хорошему. Они и в екселе хотят видеть округленные представления и неокругленные значения (чтобы дальше можно было в екселе считать правильно). Из других систем им именно так выгружает. Не срамить же 1С :)
40 Aprobator
 
02.11.12
17:14
(39) так они этого и не увидят. Кнопка показать отчет и кнопка выгрузить в ексель. И все.
41 France
 
02.11.12
17:15
а если полезут "Файл - сохранить копию"??
42 Aprobator
 
02.11.12
17:16
(41) ТабПоле.Вывод = ...
43 Aprobator
 
02.11.12
17:16
запретить сохранение табличного документа имелось ввиду.
44 France
 
02.11.12
17:21
а как же тогда "Не срамить же 1С :)"))
45 Aprobator
 
02.11.12
17:25
ну это уже не ко мне) Учет в Экселе сам по себе срам, имхо. Особенно при наличии управленческого учета.
46 fisher
 
02.11.12
18:02
Всё получилось.
Сделал по схеме (31).
Только значение пришлось брать из текста и переформатировать.
47 Aprobator
 
02.11.12
19:23
Во ты монстр, однако :-)
48 vmv
 
02.11.12
19:32
(0) не читал бред профанов выше

так вот, в СКД это делают так

Заводим в общаковом модуле метод, второй параметр способ округления и прочая ересь
МойОбщийМодул.Округлить(Хрень, ПараметрОкругленияСмещенияИ прочая)

заводим Вычисляемые поля:
ИмяПоля........./Выражение......./
РСуммаХрени...../Хрень........../
РСуммаХрениЦел../МойОбщийМодул.Округлить(Хрень, 1)  
РСуммаХрениТыс../МойОбщийМодул.Округлить(Хрень, 2)  
РСуммаХрениМлн../МойОбщийМодул.Округлить(Хрень, 2)  

заводим Ресурсы:

Ресурс........./Выражение......./
..............................
РСуммаХрени.../СУММА(СуммаХрени)/
РСуммаХрениЦел/СУММА(РСуммаХрениЦел)/
РСуммаХрениЦел/СУММА(РСуммаХрениТыс)/
РСуммаХрениЦел/СУММА(РСуммаХрениМлн)/

достаем два пальца и конструктором ваяеем отчет - все!

Все кто поступают иначе - дураки!
49 Aprobator
 
02.11.12
19:39
Пятнично, причём очень.
50 fisher
 
06.11.12
11:36
+(46) Пришлось отказаться от такого решения.
На больших табличных документах начинает нереально тормозить.
Замерять было лень, но полное впечатление, что рост тормозов нелинейный к увеличению размера документа. Думаю, что связано с режимом ячеек "Содержит значение", которое видать заточено на режим ввода данных и не оптимизировано для больших табличных документов.
51 Aprobator
 
06.11.12
12:28
делай по моей схеме ) Быстро и просто.
52 Classic
 
06.11.12
12:36
(10)
Значение валяется в расшифровке
53 fisher
 
06.11.12
14:43
(52) Значения ресурсов в расшифровках пусты. Значения группировок - да, есть.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой