Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/33: Рейтинг темы: голосов - 33, средняя оценка - 4.85
284 / 184 / 18
Регистрация: 20.02.2012
Сообщений: 925
1
1C 8.x

Формат ячейки табличного документа

10.09.2013, 12:32. Просмотров 6678. Ответов 6
Метки нет (Все метки)

Всем доброго времени суток!

Есть такая ситуация:

Формируется некий отчет, данные которого заполняются в макет и далее макет выводится на печать. Данные формата "Число", и пользователю дано выбирать выводить в рублях, тысячах, миллионах. Используется такая конструкция

Кликните здесь для просмотра всего текста
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    ТочностьЕдиницыИзмерения = 0;
    Если ЕдиницаИзмерения = "1" Тогда
        мДелитель = 1;
        мСтрокаФормата = "ЧЦ = 15; ЧДЦ = " + ТочностьЕдиницыИзмерения + "; ЧРД=,; ЧН=-; ЧО=0; ЧС = 0";
 
    ИначеЕсли ЕдиницаИзмерения = "1 000" Тогда
        мДелитель = 1000;
        мСтрокаФормата = "ЧЦ = 15; ЧДЦ = " + ТочностьЕдиницыИзмерения + "; ЧРД=,; ЧН=-; ЧО=0; ЧС = 3";
 
    ИначеЕсли ЕдиницаИзмерения = "1 000 000" Тогда
        мДелитель = 1000000;
        мСтрокаФормата = "ЧЦ = 15; ЧДЦ = " + ТочностьЕдиницыИзмерения + "; ЧРД=,; ЧН=-; ЧО=0; ЧС = 6";
 
    КонецЕсли;
    мОбласть.формат = мСтрокаФормата;


то есть основной момент - это сдвиг "ЧС". Так вот, при сохранении макета в Ёксель, сохраняются данные в рублях и представляются в виде нашего формата (соответственно тысячи, рубли, миллионы). Так вот, как сделать так, чтобы выводилось не в рублях, а в том формате, в которым мы видим в макете. Например

Число полученное в ходе выполнения процедуры = 586 900
в макете стоит "В тысячах", и получаем отображение числа как = 587
И необходимо сохранить в ексель именно = 587 а не 586 900 с форматом числовом с количеством знаков после запятой 3..

Если не понятно, уточняйте. Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2013, 12:32
Ответы с готовыми решениями:

Получение значения ячейки поля табличного документа.
Подскажите, можно ли как-то получить значение любой ячейки поля таб документа? К примеру, мне нужно...

Печать табличного документа
Здравствуйте. Существует табличный документ, состоящий из 2-ух страниц. Как програмно реализовать...

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

Поле табличного документа
В поле табличного документа загружаю файл Excel. Делее нужно выбирать нужные ячейки из нужных...

6
Шизофреник
360 / 363 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
10.09.2013, 18:39 2
округляйте само число, как вариант, а не с представлением играйтесь
0
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
11.09.2013, 00:36 3
Цитата Сообщение от SonicQ Посмотреть сообщение
ЕдиницаИзмерения = "1 000"
если бы мы мне кто-нибудь объяснил бы, что это, я бы, наверное, смог бы что-нибудь посоветовать. Имеется в виду:
1. тип и статус "ЕдиницаИзмерения"
2. якобы "пробел" - это точно пробел (Символ(32))?
0
284 / 184 / 18
Регистрация: 20.02.2012
Сообщений: 925
11.09.2013, 09:16  [ТС] 4
Цитата Сообщение от SonicQ Посмотреть сообщение
ЕдиницаИзмерения = "1 000"
это "Поле выбора" где имеются такие процедуры

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
Процедура ПолеВыбораЕдиницаИзмеренияНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
    ДанныеВыбора = новый СписокЗначений;
    ДанныеВыбора.Вставить(0, перечисления.ПорядкиОкругленияОтчетности.Окр1);
    ДанныеВыбора.Вставить(1, перечисления.ПорядкиОкругленияОтчетности.Окр1000);
    ДанныеВыбора.Вставить(2, перечисления.ПорядкиОкругленияОтчетности.Окр1000000);
    Элемент.СписокВыбора = ДанныеВыбора;
КонецПроцедуры
Процедура ПолеВыбораЕдиницаИзмеренияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    ЕдиницаИзмерения = ВыбранноеЗначение;
    мУстановитьФорматТаблицы();
    //Показать код единицы измерения
    ПоказатьКодЕИ();
КонецПроцедуры
Добавлено через 3 минуты
Цитата Сообщение от wladimir_ui Посмотреть сообщение
округляйте само число, как вариант, а не с представлением играйтесь
используя Окр(Значение, 2) ? но в с.п. написано

1C
1
2
3
4
Тип: Число. 
Определяет число знаков дробной части, до которых производится округление. Если параметр отрицательный, то число округляется до соответствующего разряда в целой части, начиная с младших разрядов.
Параметр обязательный, если указан параметр <РежимОкругления>.
Значение по умолчанию: 0
Или есть другие ? Подтолкните плиз

Добавлено через 3 минуты
причем деление на 1000 не подходит, нужно именно округлить и вывести в макет результат округления
0
Шизофреник
360 / 363 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
11.09.2013, 16:02 5
окр(знач,-3)

сначало округлите, потом делите на 1000
1
284 / 184 / 18
Регистрация: 20.02.2012
Сообщений: 925
11.09.2013, 16:17  [ТС] 6
Цитата Сообщение от wladimir_ui Посмотреть сообщение
окр(знач,-3)

сначало округлите, потом делите на 1000
так и сделал, спасибо

Добавлено через 1 минуту
Кликните здесь для просмотра всего текста
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Процедура УстановитьОкругление ()
    
    ТабличноеПоле = ЭлементыФормы.ПолеТабличногоДокумента1;
    мФормаОтчета = ТабличноеПоле;
    
    Для Инд = 0 По ТабличноеПоле.Области.Количество() - 1 Цикл
        ТекущаяОбласть = ТабличноеПоле.Области[Инд];
 
        Если Не ТекущаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник Тогда
            Продолжить;
        КонецЕсли;
        
        Если НЕ(ТекущаяОбласть.СодержитЗначение) Тогда
            Продолжить;
        КонецЕсли;
 
        ИмяПоказателя      = ТекущаяОбласть.Имя;
        ЗначениеПоказателя = ТекущаяОбласть.Значение;
        
        НоваяСтрока =  СтруктураДанныхПоля.Добавить();
        НоваяСтрока.ИмяПоказателя = ИмяПоказателя;
        НоваяСтрока.ЗначениеПоказателя = ЗначениеПоказателя;
        
        
        
        
    КонецЦикла;
    
    Для каждого  поле из СтруктураДанныхПоля цикл
        
        Попытка
            мТаблица.Области[поле.ИмяПоказателя].Значение = Окр(поле.ЗначениеПоказателя/мДелитель, 0);    
        Исключение
            Сообщить("Не удалось округлить  - " + поле.ИмяПоказателя );
        КонецПопытки;
        
    КонецЦикла;
    
    
    
КонецПроцедуры
0
Шизофреник
360 / 363 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
11.09.2013, 20:40 7
Окр(поле.ЗначениеПоказателя/мДелитель, 0)
собсно у тебя как раз наоборот, сначало деление, потом округление... ну да это фиолетово, ибо делитель кратен 1000/1000000/итд и результат будет монопенисуальный
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.09.2013, 20:40

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

Формирование табличного документа из макета
Осваиваю печать в табличный док-т. Почитал в толстой книжке: Область.Параметры.Клиент_Адрес =...

Группировки строк табличного документа 1c 8.1
Необходимо сделать группировку строк в табличном документе. Чтобы можно было пользователю...

Заполнение параметров табличного документа
Добрый день. Есть такая проблемка. Есть документ &quot;Анкета&quot;, регистр сведений &quot;данные анкеты&quot;, ПВХ...

Макет табличного документа. Не заполняются параметры
Всем доброго времени суток! В 1С8.2 сформировала макет табличного документа. Заполняю его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.