1с убрать нули в дробной части

Обновлено: 05.07.2024

Конфигурация 1с Бух 8.3, в документе реализация в печатной форме в графе количество всегда выходит с 000 через точку, хоть штуки хоть кг. Беда какая то.
Если продаешь 100 тон, то не входит в печатную форму(100000.000)

Андрей Неважно , 100 000 000 грамм это тоже 100 "тон".

В печатной форме "отрезать" нули проще простого. Через редактирование макета печатной формы. Сейчас для этого даже Конфигуратор открывать не надо. Администрирование-Печатные формы. В макете в соответствующей ячейке открываем Свойства-Формат и далее всё интуитивно понятно. А так, если уж торгуете тоннами, может проще и единицу измерения соответствующую завести, и приходовать в ней, и продавать.

ИП продает металл сотнями тонн . А говорят, что плохо живем.

Денис (САМАРА) , теперь ты знаешь куда деваются крышки с люков, ж.д. рельсы, провода, кабели и ворота с гаражей.

Рисовод , при чем ж/д рельсы исчезают вместе с электричками.

Денис (САМАРА) , а крышки с люками, провода с напряжением и ворота с гаражами!

нашли чему удивляться.
Неужто никто не в курсе что у всего холдинга "Юкос" управляющей компанией был ИП Ходорковский?
И я сам лично работал с ИП-шником из Омска, у которого в подчинении было несколько юр.лиц.

vak , Ааааа! так это ИП Мардашов А.А.?

Читают тему:

Мероприятия

1C:Лекторий: 25 ноября 2021 года (четверг, начало в 12:00) — Специальные механизмы в "1С:ЗУП 8" (ред. 3)

  • Где купить СОФТ
  • Вакансии фирм-партнеров "1С"
  • Центры Сертифицированного Обучения
  • Интернет курсы обучения "1С"
  • Самоучители
  • Учебный центр № 1
  • Учебный центр № 3
  • Сертификация по "1С:Профессионал"
  • Организация обучения под заказ
  • Книги по 1С:Предприятию

При использовании материалов активная прямая гиперссылка на перепечатанный материал обязательна.

Редакция БУХ.1С не несет ответственности за мнения и информацию, опубликованную в комментариях к материалам.

Редакция уважает мнение авторов, но не всегда разделяет его.

Дизайн сайта

Мы используем файлы cookie, чтобы анализировать трафик, подбирать для вас подходящий контент и рекламу, а также дать вам возможность делиться информацией в социальных сетях. Если вы продолжите использовать сайт, мы будем считать, что вас это устраивает.

Использую при выводе таблицы: Можно ли убирать нули из дробной части, если дробной части нету? Т.Е, вместо "0,00" выводить "0"?

Форматирование нужно, в огромной таблице нужно проставить формат, отличный от системного

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

суть в том, чтобы ко всей таблице. По каждой ячейке это гемор, таблица огромная

20 столбиков и 70 строк - фиксированный формат выходной формы

а вообще, тупо отмена форматирования вообще и при выводе все числовые значения делать через Окр и привет..

В каждой из этой ячеек стоит свое уникальное выражение, к каждому тогда придется применять еще какую-то формулу. Чтобы обработать 1400 ячеек, время придется потратить немало.

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

суть всей темы в том, как это сделать сразу во ВСЕЙ ТАБЛИЦЕ.

Ответ никак устроит ? И покажи-ка код формирования этого чуда.. Не верю я в 1400 переменных для его формирования.

у него наверное таблица эта есть, в которой написаны числа 1400 раз

Отчет бюджет, 20 подразделений, 70 статей издержек (в т.ч. сводные показатели). Формат отчета фиксированный, т.е., всегда именно 70 строк. Стало быть, в каждой ячейке - уникальное выражение. Хочешь верь, хочешь не верь))

Если она есть, то пробежаться по всей и через область поменять числа - пара сек. понадобится..

можно и так, была такая идея, просто думал, может в функции Формат есть такая возможность, так было бы проще

дык это чистая правда, зачем бы мне спрашивать, если бы все было так просто? Кстати, код отрабатывает быстро, формируется мухой))

хе, так это еще по-детски, мне рассказывал знакомый прогер про таблички в десятки раз больше))

и чего, хочешь сказать, что ВСЁ это не делается через вывестисекцию-ПрисоединитьСекцию, т.е динамически ? Не верю.

так как дынные динамически меняются, а структура таблицы должна быть постянной

извращение какое-то. Не верю всё равно в НеВозможность создания такой таблички динамически, без 1400 переменных.

проблемы такие, что пришлось заводить столько переменных

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

тссс. не спугни. Нужно выявить их всех, в еще один такой есть где-то.. :0

после вывода таблицы но перед тем как ее показать через Область измени формат в нужных ячейках

> и чего, хочешь сказать, что ВСЁ это не делается через вывестисекцию Не верю. - Распишу задачу поподробнее, может быть кто предложит более оптимальный и менее трудоемкий алгоритм решения. В чем я правда сильно сомневаюсь, но попытка не пытка)) Итак, есть выборка данных в виде: «Подразделение - статья затрат - сумма», отсортированная по подразделениям и статьям. Требуется вывести данные в таблицу фиксированного формата. Например: ---------------------------------------------------------------------- Подразд1 Подразд2 Подразд3 Пордразд4 Подразд5 Статья1 Статья2 Статья3 Статья4 Статья5 ----------------------------------------------------------------------- Данные от месяца к месяцу могут меняться, т.е., какие-то статьи или подразделения могут быть или не быть. Но структура выходной таблицы остается именно такой. Как это можно сделать через «Вывести секцию-присоединить секцию», чтобы написание алгоритма было менее трудоемким и можно было обойтись без большого количества переменных?

Ё.. Завести ОДНУ вертикальную секцию и 2 горизонтальных в макете и ВСЁ: "Заголовок" "Шапка" | ПечСтатья | "Строка" | ПечПоказатель| Всё.. Далее вывод через ВывестиСекцию + ПрисоединитьСекцию

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

у тебя таблица так что смело используй циклы оп стоокам или столбцам и будет тебе счастье

ну предложи алгоритм, если просто. Как бы ты начал выводить данные в ту таблицу, которая приведена в

ТабДанных - сврёрнута по статье и подразделнию, имеетются общие списки статей и подразделений Вывод Шапки. Для А = 1 По ОбщийСписокСтатей.РазмерСписка Цикл Вывод первого столбца таблицы с именем статьи Для Б = 1 По ОбщийСписокПодразделений.РазмерСписка Цикл Присоединение столбца таблицы с суммой нужного подразделения КонецЦикла; Вывод подвала таблицы

+ Ну я там накосячил слегка (7.7 это так давно было!), цикл не закрыл, подразделение неверно присвоил, но суть понятна.

Ха! На первый взгляд.. Знал бы ты сколько собак на этом съедено. Вообще, уже на уровне формирования выборки надо думать о его выводе. Приведённый алгоритм - это решение в лоб, не оптимальное (потому как перебор лишних данных присутствует при поиске подразделений). Я обычно делал вложенные ТЗ, при формировании выборки закладывал наличие всех возможных вариантов и т.д. и т.п.

Полазил по инету - ничего не нашел, в голову лезет только смотреть с последнего симвла и удалять, если он ноль, но ведь наверняка есть более красивый способ?


49.5k 72 72 золотых знака 250 250 серебряных знаков 480 480 бронзовых знаков 255 1 1 золотой знак 7 7 серебряных знаков 23 23 бронзовых знака


10.9k 1 1 золотой знак 18 18 серебряных знаков 29 29 бронзовых знаков Работает только со строкой, представляющее вещественное число. С целым числом, например 100 , выдаст 1.

Если убрать лишние нули нужно на выводе, то используйте функцию printf() и sprintf() Например:

Выведет на экран только 12.12

1,208 1 1 золотой знак 9 9 серебряных знаков 23 23 бронзовых знака Также стоит добавить что число округлится до заданной точности. sprintf("%.2f", 12.12945); выведет: 12.13

ну да, в этом случае лучше всего rtrim('0.100','0'); ибо явно подразумевается вывод куда-то.

@Ilya Pirogov, работает только со строкой, представляющей вещественное число в интервале (-10; 10). С числом, например, 100.00 , выдаст 1 .

Эм. Что-то други мои вы надумываете великие велосипеды, есть же готовое решение round()

в голову лезет только смотреть с моследнего симвла и удалять, если он ноль

Это же просто ппц.

11.9k 1 1 золотой знак 20 20 серебряных знаков 41 41 бронзовый знак Ну вывести выведет \+ округлит. но циклом бежать по числу ИМХО бред. @alexlz >0,100 = 0,1 в вопросе стоит до 1 символа после точки. Так понятнее? А вообще я сам его написал. А кто до меня придумал цифру 1 не знаю, даже и не интересно, но пользуюсь ею :) @Shrek Да я про то, что теперь надо ждать вопроса, как убрать лишние нули в хвосте "0,120".

во первых, работа round выдаст идентичный результат sprintf.

во вторых проблемы нету:

C другой стороны если мы зададим число как строку:

Поэтому мы преобразуем строку в число и выйдет то что нам нужно:

11.6k 17 17 серебряных знаков 22 22 бронзовых знака Ну я только этим могу объяснить эту задачу. что число задается строкой / вырезается откуда то / . / но в итоге получается строка. Иначе вопроса не было бы

(float) при очень маленьких числах даст E нотацию. типа: 4.343434E-5

Часто возникает необходимость вывести в печатную форму номер документа без префикса и лидирующих нулей.

Для этого можно воспользоватся маленькой обработкой прикрепленной к статьи или использовать ниже приведенный код.

НомерБезНулей = НомерБезПрефикса ;
Пока Найти ( НомерБезНулей ,"0") = 1 Цикл
НомерБезНулей = Сред( НомерБезНулей , 2 ); //удаляет лидирующие нули
КонецЦикла;
Объект . ОбработанныйНомер = НомерБезНулей ;

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Забавно. Буквально вчера решал эту общеизвестную задачку и думал, как бы поэффективнее. Способ замен, конечно, тоже рассматривал, но. Автор, простите, а если номер "00012034", что будет? Верно, лажа будет. Вот если использовать Лев(,1) и Прав(,1) или новомодные СтрНачинаетсяС и СтрЗаканчиваетсяНа, тогда ещё куда ни шло. А так явный минус.

Ну и вообще, кажется мне, что не самый это изящный и быстрый способ.

(2) Yashazz, функции СтрНачинаетсяС и СтрЗаканчиваетсяНа не на всех релизах конфигурации работают.
Если номер документа "00012034" после обработки станет "12034", что вполне корректно..

(5) не релизах конфигурации, а релизах платформы. Не ниже 8.3.7, ну я и написал, что "новомодные")

Хожу второй день и пытаюсь решить задачу в духе работ Ильдаровича. Чтобы стильно и извратно)))

а зачем изобретать "велосипед", если можно вызвать готовую функцию общего модуля ОбщегоНазначения.ПолучитьНомерНаПечать(документ); KDZorkov; intelligentvadik; zoikins; unduty; wolfsoft; Eillecho; user598655_ilia-bers; timurkhann; TManukovskaya; temdj; mark_oilbass; synelf; BIT_vnedr; vadimlp77; vovan_victory; eksdak; + 16 – Ответить (3) alex-l19041, ОбщегоНазначения.ПолучитьНомерНаПечать(документ) удаляет только ПрефиксПодразделения или ПрефиксИнформационнойБазы. Если вручную бухгалтер поменял префикс на какой захотел, он не удалится стандартной функцией. (4) ОбщегоНазначения.ПолучитьНомерНаПечать если её вызывать в цикле и много документов, то она очень медленно работает. в БП 3.0 с нумерацией типа ААББ-000001 корректно работает? (6) c300pm, не могу сказать не проверял на БП 3.0.
Тем не менее была просьба доработать такой механизм для печати, поскольку стандартный не отрабатывал.
Какая конфигурация и какой релиз уже не помню.
Мой способ не является эталоном, но как мне кажется имеет право на жизнь)) Очевидно, что это вариант не сработает с номером АА-123, так как в нем ни одного нуля нет. Или, например, с номером АА-101 сработает неверно, оставив от него только 1 Думаю, более правильно будет просматривать посимвольно справа налево до первой не цифры, затем полученную подстроку чистить от ведущих нулей, например так Строка(Число("0"+ПромежуточнаяПодстрока)) (9) v3rter, согласен Ваш вариант более коректный чем мой. Хотя есть альтернативный способ - выкинуть из номера все нецифровые символы, затем ведущие нули. Недостаток: кривые номера типа Н1АБ0000021 превратятся в 10000021, а не в 21. Такие "чудо-номера" бывают от кривых префиксов при обмене. Если исходить из того, что все нецифровые префиксы уже отброшены, то самое топорное решение это Формат(Число(Номер)). Вот простой код, который сработает, если номер содержит число.

Как всегда шедевры. Математики поймут )

Попробую расшифровать для тех, кому лень разбираться.

Первая функция: рекурсивно проверяются символы справа налево до первой не цифры,
затем происходит возврат правой части строки по накопленному значению К;
( КодСимвола() / 5 - 10.5 ) возвращает значение от -0,9 до 0,9 для символов с "0" до "9",
Цел() отсекает дробную часть, в результате для цифр получится 0, для остальных символов не ноль;
?(Цел(КодСимвола(Прав("!" + Стр, К + 1)) / 5 - 10.5),<не цифра>,<цифра>) базируется на особенности преобразования нуля в булево ложь, а "!" + Стр - подстраховка от пустой строки на входе.

Вторая функция: все числа заменяются пробелами "матрёшкой" вложенных функций
СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Номер
, "0", " "), "1", " "), "2", " "), "3", " "), "4", " "), "5", " "), "6", " "), "7", " "), "8", " "), "9", " ")
СокрП отсекает пробелы справа, остаток замереятся через СтрДлина и вырезается часть с середины до конца с позиции +1, где должны начинаться цифры.

Формат( , "ЧГ=") в обоих случаях убирает разделители разрядов при обратном преобразовании числа в текст, потом что через Строка() "формируется . полное представление в стандартном виде, соответствующем национальным установкам". Или как у Ovrfox в (16) вместо Формат(, "ЧГ=") можно попробовать неявное преобразование в строку ""+Число(

Читайте также: