Тема: 1С 7.7 , печатная форма в Документе

Ответить в теме
Показано с 1 по 11 из 11
  1. Вверх #1
    Частый гость Аватар для wladwww
    Пол
    Мужской
    Адрес
    Одесса
    Сообщений
    510
    Репутация
    36

    По умолчанию 1С 7.7 , печатная форма в Документе

    Доброе время суток. У меня проблемка, связанная с выводом данных в таблицу( печатную форму).
    Значит дело обстоит так. Мне необходимо данные(число формата Ч18.8) из табличной части документа перенести в Печатную форму. Но т.к. числа бывают с дробной частью и без, то в печатной форме дробная часть не всегда удобно отображается.
    Например мне нужно числа 156.789 , 400.4 и 99 перенести в печатную форму. В табличной части Документа они отображаются следующим образом :
    156.78900000
    400.40000000
    99.00000000

    А в печатной они должны выглядеть следующим образом :
    156.789
    400.40
    99.00

    Вот в том то и беда. У меня не получается их заставить так выглядеть.
    Либо у меня не добавляются нули(в дробной части) для целого числа. Либо у меня целое число округляется до 2-го разряда в дробной части.
    Что странно, то если я ячейку делаю типом "Выржение", то у меня число автоматически округляется!
    Хотелось бы знать, как можно заставить всю таблицу( или конкретную ячейку) не округляться( или округляться) до нужного разряда ?


  2. Вверх #2
    Новичок
    Пол
    Мужской
    Сообщений
    33
    Репутация
    14
    Цитата Сообщение от wladwww Посмотреть сообщение
    Доброе время суток. У меня проблемка, связанная с выводом данных в таблицу( печатную форму).
    Значит дело обстоит так. Мне необходимо данные(число формата Ч18.8) из табличной части документа перенести в Печатную форму. Но т.к. числа бывают с дробной частью и без, то в печатной форме дробная часть не всегда удобно отображается.
    Например мне нужно числа 156.789 , 400.4 и 99 перенести в печатную форму. В табличной части Документа они отображаются следующим образом :
    156.78900000
    400.40000000
    99.00000000

    А в печатной они должны выглядеть следующим образом :
    156.789
    400.40
    99.00

    Вот в том то и беда. У меня не получается их заставить так выглядеть.
    Либо у меня не добавляются нули(в дробной части) для целого числа. Либо у меня целое число округляется до 2-го разряда в дробной части.
    Что странно, то если я ячейку делаю типом "Выржение", то у меня число автоматически округляется!
    Хотелось бы знать, как можно заставить всю таблицу( или конкретную ячейку) не округляться( или округляться) до нужного разряда ?
    ну во первых надо использовать функцию число():

    НужныеДанные=число(нужныеДанные);

    это обрежет "ненужные" нули, а потом определять скока знаков после запятой и соответственно форматировать.примерно так:

    ДлинаСтроки=0;
    ДлинаСтроки=СтрДлина(НужныеДанные);
    ПозицияЗапятой=0;
    ПозицияЗапятой=найти(НужныеДанные,",");
    ДлинаДробнЧасти=0;

    если ПозицияЗапятой<>0 тогда
    ДлинаДробнЧасти=ДлинаСтроки-ПозицияЗапятой;
    КонецЕсли;

    если ДлинаДробнЧасти<2 тогда
    НужныеДанные=формат(НужныеДанные,"Ч12.2")
    КонецЕсли;

    т.о. если в числе меньше 2-х знаков в дробной части - оно добавить недостающие нули, если больше - ничего делать не будет т.к. после после функции число мы и так получили нужный нам формат.

  3. Вверх #3
    Модератор Аватар для Mulder_1
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    44
    Сообщений
    710
    Репутация
    52
    Функция ЧислоВТаблице(_чсл)
    _чсл=Число(_чсл);// на всякий случай
    Возврат ?( ((_чсл*100)-цел(_чсл*100))>0,Число(_чсл),формат(_чсл,"Ч12.2") );
    КонецФункции


    как то так может ?
    а в печатной форме прописываешь эту функцию
    Кратк. - сестр. тал. !

  4. Вверх #4
    Новичок
    Пол
    Мужской
    Сообщений
    33
    Репутация
    14
    Цитата Сообщение от Mulder_1 Посмотреть сообщение
    Функция ЧислоВТаблице(_чсл)
    _чсл=Число(_чсл);// на всякий случай
    Возврат ?( ((_чсл*100)-цел(_чсл*100))>0,Число(_чсл),формат(_чсл,"Ч12.2") );
    КонецФункции


    как то так может ?
    а в печатной форме прописываешь эту функцию
    а вот и нет - если будет 3 и более знака после запятой - округлит до 2-х, да и если не будет знаков после запятой тогда тоже не выведет два нуля. а ему же надо выводить столько значащийх цифр после запятой -сколько есть.

  5. Вверх #5
    Модератор Аватар для Mulder_1
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    44
    Сообщений
    710
    Репутация
    52
    я чесно говоря не проверял ... но все нормально ...
    если будет больше 2 знаков после зяпятой : ((_чсл*100)-цел(_чсл*100))>0
    он выведет просто число, соответсвенно отрубив лишние нули :Число(_чсл)
    если будет меньше - тогда выведет с нулём : формат(_чсл,"Ч12.2")
    Кратк. - сестр. тал. !

  6. Вверх #6
    Новичок
    Пол
    Мужской
    Сообщений
    33
    Репутация
    14
    ну с 3-мя и больше знаками Вы правы - а вот с одним нет:
    например 400.40
    40040-40000=40 это больше 0, значит применится "Число(_чсл)" которое выдаст 400,4 - а надо 400,40

  7. Вверх #7
    Модератор Аватар для Mulder_1
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    44
    Сообщений
    710
    Репутация
    52
    =) не ... вы не правы =)

    рассматриваем ваш пример : 400,40
    смотрим формулу : ((_чсл*100)-цел(_чсл*100))>0
    подставляем : 400,40*100 - цел(400,40*100)= 0 т.к. условие 0>0 не выполняется - значит выводим число по формату : формат(_чсл,"Ч12.2")

    з.ы. 1:0 я веду ? =)
    Кратк. - сестр. тал. !

  8. Вверх #8
    Частый гость Аватар для wladwww
    Пол
    Мужской
    Адрес
    Одесса
    Сообщений
    510
    Репутация
    36
    Всем спасибо за подсказки и обсуждения темы
    Особое спасибо Mulder_1 - его подсказки навели на рассуждения, которые вылились вот в это )
    ?(Найти(ПЕРЕМЕННАЯ,".") <> 0,?(Найти(ПЕРЕМЕННАЯ*10,".") = 0,Строка(ПЕРЕМЕННАЯ)+"0",ПЕРЕМЕННАЯ), ?(ПЕРЕМЕННАЯ= 0,"",Формат(ПЕРЕМЕННАЯ, "Ч12.2")))
    Это я запихнул в ячейку, типа Выражение и все заработало )

  9. Вверх #9
    Модератор Аватар для Mulder_1
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    44
    Сообщений
    710
    Репутация
    52
    громоздко как то... не факт что разделитель дробной будет "." (это зависит от региональных настроек).....
    .. а так .. работет - и хорошо =)

    з.ы. все равно мой вариант красивее и универсальнее =)
    Кратк. - сестр. тал. !

  10. Вверх #10
    Новичок
    Пол
    Мужской
    Сообщений
    33
    Репутация
    14
    если перефразировать изместную пословицу - скока программистов стока и мнений!главное чтобы решение исполняло поставленую задачу.

    to Mulder 1
    ладно, соглашусь 1:0
    но ведь только в споре рожается истина.

  11. Вверх #11
    Модератор Аватар для Mulder_1
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    44
    Сообщений
    710
    Репутация
    52
    Цитата Сообщение от monsad Посмотреть сообщение
    но ведь только в споре рожается истина.
    100% =)
    Кратк. - сестр. тал. !


Ответить в теме

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения