Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
12 Дек 2017, 19:09
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Округление  (Прочитано 10370 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн eXpert

  • *
  • Сообщений: 13
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-11-03
  • Сайт: 
  • Профессия: Ученик 1С
Здравствуйте! Очень нужна помощь с округлением розничной цены при вводе товара!
Значения в сумме до 25 рублей отбрасываются, от 25 рублей включительно до 75 рублей округляются до 50 рублей, от 75 рублей включительно и выше округляются до 100 рублей.

если 7810 р. то получится 7800
если 7840 р. то получится 7850
если 7880 р. то получится 7900

Пожалуйста помогите!


Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
Re: Округление
« Ответ #1: 03 Ноя 2011, 10:35 »
Пишешь свою функцию округления и ей пользуешься
Простейший пример
Функция Округлить(Сумма)
Сотен = 100 * Цел(Сумма/100);
Рублей = Сумма - Сотен;
Если Рублей>=75 Тогда
Рублей = 100;
ИначеЕсли Рублей >= 25 Тогда
Рублей = 50;
Иначе
Рублей = 0;
КонецЕсли;
Возврат Сотен+Рублей;
КонецФункции
Кнопочка Спасибо - слева!

Оффлайн eXpert

  • *
  • Сообщений: 13
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-11-03
  • Сайт: 
  • Профессия: Ученик 1С
Re: Округление
« Ответ #2: 03 Ноя 2011, 12:35 »
Если ТипТовара=Перечисление.ТипыТоваров.Тара тогда
// РозничнаяЦена=Окр(ЦенаСндс,0);
РозничнаяЦена = Окр(ЦенаСндс,0,1);
РозничнаяЦена=Окр(РозничнаяЦена,-1,1);
Иначе

Если ЦенаСНДС>1000 тогда
// РозничнаяЦена=Окр((ЦенаСНДС+СтеклоТара.РозничнаяЦена)/10,1,1)*10 - СтеклоТара.РозничнаяЦена;
РозничнаяЦена=Окр(ЦенаСНДС,0,1);
РозничнаяЦена=Окр(РозничнаяЦена+СтеклоТара.РозничнаяЦена,-1,1) - СтеклоТара.РозничнаяЦена;
ИначеЕсли ТипЦены=Перечисление.ТипЦены.Фиксированная тогда
//   РозничнаяЦена=Окр((ЦенаСНДС+СтеклоТара.РозничнаяЦена)/5,1,1)*5 - СтеклоТара.РозничнаяЦена;   
РозничнаяЦена=Окр(ЦенаСНДС,0,1);
РозничнаяЦена=Окр(РозничнаяЦена+СтеклоТара.РозничнаяЦена,-1,1) - СтеклоТара.РозничнаяЦена;
Иначе
// РозничнаяЦена=Окр((ЦенаСНДС+СтеклоТара.РозничнаяЦена)/10,1,1)*10 - СтеклоТара.РозничнаяЦена;
РозничнаяЦена=Окр(ЦенаСНДС,0,1);
    РозничнаяЦена=Окр(РозничнаяЦена+СтеклоТара.РозничнаяЦена,-1,1) - СтеклоТара.РозничнаяЦена;
КонецЕсли;
КонецЕсли;
Если не сложно, то как с этим сделать?

Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
Re: Округление
« Ответ #3: 03 Ноя 2011, 12:53 »
РозничнаяЦена=Окр(РозничнаяЦена,-1,1);
заменить на
РозничнаяЦена=Округлить(РозничнаяЦена);
. Далее по аналогии.
Функцию  Округлить(Сумма) поставить перед твоим кодом
Кнопочка Спасибо - слева!

Оффлайн eXpert

  • *
  • Сообщений: 13
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-11-03
  • Сайт: 
  • Профессия: Ученик 1С
Re: Округление
« Ответ #4: 03 Ноя 2011, 13:26 »
Чет невыходит. :(
Посмотрите пожалуйста, так или нет:

Функция округлить(сумма)
      Сотен = 100 * Цел(Сумма/100);
      Рублей = Сумма - Сотен;
      Если Рублей>=75 тогда
      Рублей = 100;
   ИначеЕсли Рублей>=25 тогда
      Рублей = 50;
   иначе
      Рублей=0;
      КонецЕсли;
   Возврат Сотен + Рублей;
   
      КонецФункции

Процедура РасчетРознЦены()
   Если ТипЦены=Перечисление.ТипЦены.Свободная тогда
      //Если ТипТовара=Перечисление.ТипыТоваров.Тара тогда
         //ЦенаСНДС=(Себестоимость*(100+(Процент))/100)*100/(100-НалогСпродаж);
      //Иначе
         Если ПРоцентУпл<>0 тогда
            Если прямойНП<>1 Тогда
            ЦенаСНДС=(ПервыйИмпортер*(100+Процент)/100)*(100+СтавкаНДС.Ставка)/100*100/(100-НалогСпродаж);
         Иначе
            ЦенаСНДС=(ПервыйИмпортер*(100+Процент)/100)*(100+СтавкаНДС.Ставка)/100*(1+НалогСПродаж/100); 
         КонецЕсли;
         
      Иначе 
            Если прямойНП<>1 Тогда
            ЦенаСНДС=(Себестоимость*(100+Процент)/100)*(100+СтавкаНДС.Ставка)/100*100/(100-НалогСпродаж);
         Иначе
            ЦенаСНДС=(Себестоимость*(100+Процент)/100)*(100+СтавкаНДС.Ставка)/100*(1+НалогСПродаж/100);
         КонецЕсли;
         
         КонецЕсли;
      //КонецЕсли;
   ИначеЕсли ТипЦены=Перечисление.ТипЦены.Фиксированная тогда
      Если ПрямойНП<>1 Тогда
         ЦенаСНДС=Себестоимость*100/(100-НалогСпродаж);
      Иначе
         ЦенаСНДС=Себестоимость*(1+НалогСпродаж/100);
      КонецЕсли;

   КонецЕсли;

   Если ТипТовара=Перечисление.ТипыТоваров.Тара тогда
   //   РозничнаяЦена=Окр(ЦенаСндс,0);
      РозничнаяЦена = Окр(ЦенаСндс,0,1);

      
      РозничнаяЦена=Окр(РозничнаяЦена);
   Иначе

      Если ЦенаСНДС>1000 тогда
         //   РозничнаяЦена=Окр((ЦенаСНДС+СтеклоТара.РозничнаяЦена)/10,1,1)*10 - СтеклоТара.РозничнаяЦена;
         РозничнаяЦена=Окр(ЦенаСНДС,0,1);
         РозничнаяЦена=Окр(РозничнаяЦена+СтеклоТара.РозничнаяЦена) - СтеклоТара.РозничнаяЦена;
      ИначеЕсли ТипЦены=Перечисление.ТипЦены.Фиксированная тогда
         //     РозничнаяЦена=Окр((ЦенаСНДС+СтеклоТара.РозничнаяЦена)/5,1,1)*5 - СтеклоТара.РозничнаяЦена;   
         РозничнаяЦена=Окр(ЦенаСНДС,0,1);
         РозничнаяЦена=Окр(РозничнаяЦена+СтеклоТара.РозничнаяЦена) - СтеклоТара.РозничнаяЦена;
      Иначе
      //   РозничнаяЦена=Окр((ЦенаСНДС+СтеклоТара.РозничнаяЦена)/10,1,1)*10 - СтеклоТара.РозничнаяЦена;
         РозничнаяЦена=Окр(ЦенаСНДС,0,1);
          РозничнаяЦена=Окр(РозничнаяЦена+СтеклоТара.РозничнаяЦена) - СтеклоТара.РозничнаяЦена;
      КонецЕсли;
   КонецЕсли;
   //Если ЦенаСНДС>1000 тогда
   //РозничнаяЦена=Окр(ЦенаСНДС/5)*5;
   //Иначе
   //РозничнаяЦена=Окр(ЦенаСндс,0);
   //КонецЕсли;
   если ТипТовара=Перечисление.ТипыТоваров.Тара тогда
      ЦенаРН=ЦенаСНДС;
   Иначе
      ЦенаРН=РозничнаяЦена;
   конецесли;
    РНсТР = РозничнаяЦена + СтеклоТара.РозничнаяЦена;
    ЦенаСелМаг= ЦенаСНДС+ЦенаСНДС*НалСпрод1/100;   
    ЦенаОбщепита = ЦенаСНДС+ЦенаСНДС*Наценка/100;
    Если ТипТовара=Перечисление.ТипыТоваров.Тара тогда
       ЦенаСелМаг = Окр(ЦенаСндс,0);
    ИначеЕсли ЦенаСелМаг>1000 тогда
       ЦенаСелМаг=Окр((ЦенаСелМаг + СтеклоТара.РозничнаяЦена)/10,0,0)*10 - СтеклоТара.РозничнаяЦена;   
    ИначеЕсли  ТипЦены=Перечисление.ТипЦены.Фиксированная тогда
       ЦенаСелМаг=Окр((ЦенаСелМаг + СтеклоТара.РозничнаяЦена)/5,0,0)*5 - СтеклоТара.РозничнаяЦена;
    Иначе   
       ЦенаСелМаг=Окр((ЦенаСелМаг + СтеклоТара.РозничнаяЦена)/10,0,0)*10 - СтеклоТара.РозничнаяЦена; 
    конецесли;   
   
    Если ТипТовара=Перечисление.ТипыТоваров.Тара тогда
       ЦенаОбщепита = Окр(ЦенаСндс,0);
    ИначеЕсли ЦенаОбщепита>1000 тогда
       ЦенаОбщепита = Окр((ЦенаОбщепита + СтеклоТара.РозничнаяЦена)/10,0,0)*10 - СтеклоТара.РозничнаяЦена;
    ИначеЕсли  ТипЦены=Перечисление.ТипЦены.Фиксированная тогда
       ЦенаОбщепита = Окр((ЦенаОбщепита + СтеклоТара.РозничнаяЦена)/5,0,0)*5 - СтеклоТара.РозничнаяЦена;
    Иначе   
       ЦенаОбщепита=Окр((ЦенаОбщепита + СтеклоТара.РозничнаяЦена)/10,0,0)*10 - СтеклоТара.РозничнаяЦена; 
    конецесли;
   
    СуммаСТР = ЦенаСелМаг + СтеклоТара.РозничнаяЦена;
    Код_ст=СтеклоТара.Код;
    Код_т=Тара.Код;
   
   
КонецПроцедуры //ПриВводеПроцентаУпл

Оффлайн volodya1122

  • ***
  • Сообщений: 215
  • РЕПУТАЦИЯ: 31
  • КПД: 14%
  • Регистрация: 2011-01-24
  • Сайт: 
  • Профессия: Программист 7.7
Re: Округление
« Ответ #5: 03 Ноя 2011, 13:46 »
Еще раз внимательно прочтите Ответ №3 . и сделайте замены в своем тексте как там говорится. (лучще не заменять а закоментировать сстроки а сразу после них вставить нужные)

Оффлайн eXpert

  • *
  • Сообщений: 13
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-11-03
  • Сайт: 
  • Профессия: Ученик 1С
Re: Округление
« Ответ #6: 03 Ноя 2011, 13:53 »
Если я правильно понял то
Функция Округлить(РозничнаяЦена)
Сотен = 100 * Цел(РозничнаяЦена/100);
Рублей = РозничнаяЦена - Сотен;
Если Рублей>=75 Тогда
Рублей = 100;
ИначеЕсли Рублей >= 25 Тогда
Рублей = 50;
Иначе
Рублей = 0;
КонецЕсли;
Возврат Сотен + Рублей;
КонецФункции

РозничнаяЦена = Окр(РозничнаяЦена);
так?

Оффлайн volodya1122

  • ***
  • Сообщений: 215
  • РЕПУТАЦИЯ: 31
  • КПД: 14%
  • Регистрация: 2011-01-24
  • Сайт: 
  • Профессия: Программист 7.7
Re: Округление
« Ответ #7: 03 Ноя 2011, 13:58 »
не совсем. Начало верно.
а дальше в твоем тексте где написано
РозничнаяЦена = Окр(ЦенаСндс......
нужно заменить на
РозничнаяЦена = Окр(РозничнаяЦена);

p.s.
хотя в даном случае не нужно заменять, а всего дишь вставить после строки
РозничнаяЦена = Окр(ЦенаСндс......
вставить
РозничнаяЦена = Окр(РозничнаяЦена);

Оффлайн volodya1122

  • ***
  • Сообщений: 215
  • РЕПУТАЦИЯ: 31
  • КПД: 14%
  • Регистрация: 2011-01-24
  • Сайт: 
  • Профессия: Программист 7.7
Re: Округление
« Ответ #8: 03 Ноя 2011, 13:59 »
вернее вставить это:
РозничнаяЦена=Округлить(РозничнаяЦена);

Оффлайн eXpert

  • *
  • Сообщений: 13
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-11-03
  • Сайт: 
  • Профессия: Ученик 1С
Re: Округление
« Ответ #9: 03 Ноя 2011, 15:00 »
вернее вставить это:
РозничнаяЦена=Округлить(РозничнаяЦена);

Большое спасибо:)


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
168 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
55 Сообщений
alex0402
48 Сообщений
andron81_81
42 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 365
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal