Как сделать копейки в 1с
Эта статья будет о том, как получить представление числа или суммы прописью, используя стандартную функцию ЧислоПрописью().
Пишу это в качестве шпаргалки, в том числе и для себя, ибо требуется достаточно часто, а запоминать все эти конструкции нет никакого желания (синтаксис помощник, как-то не сильно помогает).
В этой статье я не буду приводить описание функции ЧислоПрописью() и ее параметров — это есть в синтаксис-помощнике.
Число прописью
Начнем с простой записи числа прописью:
Результат правда будет немного не таким, каким хотелось бы — дробная часть будет записана цифрами.
Можно попробовать сделать так:
Но это все равно не то, так как нельзя понять где заканчивается целая часть и начинается дробная.
Для решения этой проблемы можно задействовать третий параметр:
Результат выгляди уже более или менее приемлемо, но такой способ совершенно не подходит, если количество знаков после запятой неизвестно заранее.
Стандартного и универсального решения этой проблемы, к сожалению, не существует (поправьте меня, если я ошибаюсь).
Сумма прописью
Теперь перейдем к представлению сумм прописью (по суммой подразумевается пара — число+валюта). Здесь все гораздо лучше — знаков после запятой практически всегда два.
Сумма в российских рублях на разных языках:
Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "карбованець,карбованцi,карбованцiв,м,копiйка,копiйки,копiйок,м,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "rublis,rubli,rublu,v,kapeika,kapeiki,kapeiku,s,2"));
Сумма в долларах США на разных языках:
Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "доллар,доллара,долларов,м,цент,цента,центов,м,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "долар,долара,доларiв,м,цент,цента,центiв,м,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "dolars,dolari,dolaru,v,cent,centi,centu,v,2"));
Сумма в евро на разных языках:
Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "евро,евро,евро,м,евроцент,евроцента,евроцентов,м,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "євро,євро,євро,м,євроцент,євроцента,євроцентів,м,2"));
Сумма в украинских гривнах на разных языках:
Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "гривна,гривны,гривен,ж,копейка,копейки,копеек,ж,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "гривня,гривнi,гривень,ж,копiйка,копiйки,копiйок,ж,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "grivna,grivni,grivnu,s,kapeika,kapeiki,kapeiku,s,2"));
Сумма в латвийских латах на разных языках:
Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "лат,лата,латов,м,сантим,сантима,сантимов,м,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "лат,лата,латiв,м,сантим,сантима,сантимiв,м,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "lats,lati,latu,v,santims,santimi,santimu,v,2"));
Сумма в румынских леях на разных языках:
Сумма в болгарских львах на разных языках:
Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "лев,лева,левов,м,стотинка,стотинки,стотинок,ж,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "лев,лева,левів,м,стотинка,стотинки,стотинок,ж,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "leva,levas,levas,s,stotinka,stotinki,stotinki,s,2"));
Казахский язык и валюту я пропустил из-за сложностей с отображением символов.
На этом все, надеюсь данная статья вам помогла.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
(оценок: 13, средняя оценка: 4,38 из 5)
Сразу скажу что я не гуру 1С программист, опыт у меня не совсем большой но все же он есть. Я достаточно часто пишу статьи в которых стараюсь поделиться полезными советами или дать более полный ответ на какой либо вопрос касаемый 1С разработки. Я когда то сам был новичком и пытался найти ответы на свои вопросы на различных форумах. Где как правило сидят опытные программисты и они дают советы с высоты своего опыта. Которые в свою очередь новичкам мало чем помогают. Сегодня хочу разобрать тему округления чисел. Поговорим об округление целой и дробной части.
Если вы только начинаете свой путь 1С программиста то рекомендую прочитать следующие статьи.
Программное округление целой и дробной части числа
И так программно можно округлить любое число как до целых так и до десятых , сотых. Делается это с помощью функции Окр, синтаксис такой.
Окр — сама функция
Число — соответственно число которое хотим округлить
0 — разрядность, число знаков после запятой
0 — Режим округления 0 в меньшую сторону 1 в большую, его можно не указывать по умолчанию всегда 0
Скажем если взять число = 12,123 то после применения Окр(Число , 0, 0); число будет 12.
Надеюсь объяснил понятно если нет то можете открыть Синтаксис-помощник.
Третья и четвертая кнопка округляет дробную часть, т.е копейки, возьмем тоже число 10,12. Если нажмем третью кнопку результатом будет число 10,20, а если нажмем четвертую то 10,10.
Допустим у вас есть табличная часть, в которой выбирается номенклатура и подставляется цена из справочника. Что бы округлить число в этом случае нужно создать событие при изменение табличной части и написать вот такой код.
В результате все суммы будут округлены до сотых причем в меньшую сторону. Надеюсь все объяснил достаточно подробно но если остались вопросы обязательно спрашивайте!
Такая же фигня, стала исправлять предыдущие ведомости на копии базы, смотрю, а там округляет до рублей и исправлять не дает. Что за фигня.
"Чем сильнее зверь, тем он спокойнее. " или так : чем спокойней зверь, тем он сильнее.
MarinaAnna, а что такое "исправлять предыдущие ведомости на копии базы"?
Перепровела прошлые периоды и там выплата по факту была с коп, а исправилась на полные рубли?
Такая же фигня, стала исправлять предыдущие ведомости на копии базы, смотрю, а там округляет до рублей и исправлять не дает. Что за фигня.
а что такое "исправлять предыдущие ведомости на копии базы"?
Перепровела прошлые периоды и там выплата по факту была с коп, а исправилась на полные рубли?
"Чем сильнее зверь, тем он спокойнее. " или так : чем спокойней зверь, тем он сильнее.
Посмотрела. Ведомость на экране выдает без копеек, открываю печатную форму в 1С-ке , там прописано с копейками, соответствнно и РКО подцепляется и в РКО прописывает сумму с копейками, но это так неудобно, когда ты н-р составла ведомость , в ней видишь что к выплате 1000 руб, а в печатной форме например 1000 руб 80 коп. Печатную же форму не всегда сразу распечатывают и не всегда открывают сразу, а в кассе например денег есть только 1000 или их нет, их решили займом положить туда, а в результате 80 коп повисают, ну в общем доп геморр, теперь для того чтобы знать хватает ли денег в кассе, нужно сначала ведомость открыть печатную форму и увидеть сколько там в результате нужно денег, а это я посмотрела по ведомости , там где у меня в ведомости 1 чел, а если в ведомости 100 чел и у каждого с копейками к выплате ? в общем бред какой-то. 1-Сники намудрили чего-то . И раньше в ведомстях не было колонки НДФЛ, а с каким-то обновлением она появилась, у меня в другой фирме 1С 8.3 базовая релиз 64.54, там до последней версии не обновляла, потому что нужно платформу обновлять, поэтому там до последней не стала обновлять, и там все все с копейками в ведомости и без колонки НДФЛ , а в этой обновлена и платформа и релиз 65.80, и вот там такая фигня.
"Чем сильнее зверь, тем он спокойнее. " или так : чем спокойней зверь, тем он сильнее.
Aisha12 --> Aisha12
Здравствуйте! Вопрос такой: 1С:7.7 в документе Перемещение ОС в печатную форму не выводятся копейки от суммы, я прописывала в модуле Стоимость =
БалансоваяСтоимость-ИзносНаКонецМесяца; БалансоваяСтоимость и ИзносНаКонецМесяца это столбцы в диалоге, как вывести копейки? Если просто вывести в
печатную форму шаблон [БалансоваяСтоимость-ИзносНаКонецМесяца], тогда сумма выводится с копейками, как положено, но мне надо именно в модуле прописать.
Домовик --> Домовик
у вас запятая в форматной строке - первое что бросается в глаза. должно по идее "Ч015.2"
Aisha12 --> Aisha12
у вас запятая в форматной строке - первое что бросается в глаза. должно по идее "Ч015.2"
запятая это как разделитель вместо него можно - поставить, мне сначала главное, чтоб Стоимость правильно выводила, Стоимость= БалансоваяСтоимость-ИзносНаКонецМесяца, что не так в этой формуле и почему он выводит как-будто бы округленное число? Никаких функций Окр() и Цел() я не прописывала. Конфигурация написана с нуля.
Домовик --> Домовик
Aisha12 --> Aisha12
Домовик --> Домовик
удивительно, что с запятой идет.
проверяйте далее.
Aisha12 --> Aisha12
Все исходит отсюда. До этого в печатных формах не было колонок Сумма и Цена, то есть просто балансовая стоимость и сумма износа указывалась, а сейчас сумма и цена. И сверяясь с Бухгалтерией 8.2 пришла к выводу, что сумма перемещения и есть БалансоваяСтоимость отнять Износ, может изначально все не правильно?
vadim007 --> vadim007
Здравствуйте! Вопрос такой: 1С:7.7 в документе Перемещение ОС в печатную форму не выводятся копейки от суммы, я прописывала в модуле Стоимость =
Aisha12 --> Aisha12
Нет, конфигурация написанная с нуля, писала не я, но сейчас поставить печатную форму пытаюсь
vadim007 --> vadim007
Aisha12 --> Aisha12
Поняла в чем ошибка!! Не знаю где но кажется для Стоимости уже стоит значение,
Поставила другое имя
Домовик --> Домовик
Стоим - переменная, которую вы придумали, по умолчанию она безразмерная, и принимает тип и размерность значения, кот вы ей присваиваете.
Но Стоим - не реквизит документа, поэтому Итог() конечно же не может применяться.
Стоимость - реквизит табличной части вашего документа, Итог() можно применять, но, скорее всего, а точнее это должны проверить Вы, этому реквизиту задана точность 0.
Используйте Сообщить() на каждом этапе, где возникают сомнения.
Aisha12 --> Aisha12
Стоим - переменная, которую вы придумали, по умолчанию она безразмерная, и принимает тип и размерность значения, кот вы ей присваиваете.
Но Стоим - не реквизит документа, поэтому Итог() конечно же не может применяться.
Стоимость - реквизит табличной части вашего документа, Итог() можно применять, но, скорее всего, а точнее это должны проверить Вы, этому реквизиту задана точность 0.
Используйте Сообщить() на каждом этапе, где возникают сомнения.
Спасибо, кажется, начала соображать. То есть, Итог - это есть реквизит? Я его не задавала. Оказывается есть реквизит Стоимость, просто он не используется, но получается ему присваивается значение 0, хотя я не нашла в каком именно месте присваивается. Мне сейчас сделать реквизит Стоим, чтобы просчитывался Итог?
Домовик --> Домовик
Заходите в конфигуратор находите документ ПеремещениеОС, находите реквизиты Табличной части, среди них Стоимость, смотрите свойства реквизита и какая установлена точность.
если ноль, то уточните у бухгалтера, можно ли задать точность 2.
пока ничего не меняйте в конфигураторе, а обойдитесь только изменением кода:
Aisha12 --> Aisha12
Итог() - метод, кот. применяется к реквизиту документа Стоимость:
Заходите в конфигуратор находите документ ПеремещениеОС, находите реквизиты Табличной части, среди них Стоимость, смотрите свойства реквизита и какая установлена точность.
если ноль, то уточните у бухгалтера, можно ли задать точность 2.
пока ничего не меняйте в конфигураторе, а обойдитесь только изменением кода:
АА!! Вы гений!! Как я до этого не додумаалась?? Это же мелочь такая!! Вот как после этого головой не разбиваться?? Если изменить код Всего=Всего+Стоим; то ничего не выводит, только пустую строку. А если поставить точность для реквизита Стоимость, то выводит копейки!! Спасибо огромное.
При создании документа "Выплата заработной платы" нужно нажать кнопку "Рассчитать" там будет пункт "Округлить сумму к выплате". Дальше вылезет окошко с вариантами округления, выберете подходящее и все суммы округлятся
Но ведь округлить просили начисления и удержания, а не выплату
А это разве вообще законно округлять сами начисления. Сколько положено столько и должно быть начисленно:-) А вот выдавать с копейками неудобно. И обычно бухгалтерия округляет сумму к выдаче, при этом остается долг за предприятием в виде этих копеек. И в программе в настройках указывается Округление ВЫПЛАТ по умолчанию.
Читайте также: