Помощь - Поиск - Пользователи - Календарь
Полная версия: Кнопки и переключатели в обработке
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 7.7" > (7.7) Отчеты и обработки для платформы "1С:Предприятие 7.7"
Kirill_NN
Есть простенькая обработка "Округление цен"

Код
//*******************************************
Процедура Поехали()
СпрЦен = СоздатьОбъект("Справочник.Цены");
СпрЦен.ИспользоватьДату(ВыбДата);
СпрЦен.ИспользоватьВладельца("Справочник.Номенклатура");
Режим = 0;
СпрЦен.ВыбратьЭлементы(Режим);
Пока СпрЦен.ПолучитьЭлемент() = 1 Цикл
//Начинаем обработку
Если СпрЦен.Валюта = ВыбВалюта Тогда
СпрЦен.Цена = Окр(СпрЦен.Цена,1,1);
СпрЦен.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры


Как в нее правельно добавить кнопки вида "Округлять до десятой" "Округлять до рубля"
И "использовать правила математики" (0,05 в 0,1), "просто обнулить"

Заренее благодарен
Саму обработку тоже прикрепил
Prospero
Раздел "Процедуры и функции форматирования".
Код
Формат
тебе поможет, только не винт форматируй.
AndreySc
А разве Формат возвращает не текстовое представление числа???? Я не понял надо округление или форматирование?
Prospero
Цитата(AndreySc @ 4.12.2007, 9:27) *

А разве Формат возвращает не текстовое представление числа???? Я не понял надо округление или форматирование?


Дано:
"реквизит диалога" идентификатор "деньга", тип "число" длина 10 точность 2, (для денег).
кнопка "Округлить до десятых" - формула: деньга=Формат(деньга,"Ч10.1")
кнопка "Округлить до рубля" - формула: деньга=Формат(деньга,"Ч10.0")

вводим 12.56

Результат:
кнопка 1 даст 12.60
кнопка 2 даст 13.00

В коде человек уже использовал округление
Код
СпрЦен.Цена = Окр(СпрЦен.Цена,1,1);
Видать, не получается. Альтернатива -формат, мож с ним будет проще :)
Prospero
А, дошло. (извините, болею, туго соображаю...)
Нужно, чтобы в зависимости от выбранной кнопочки округляло до десятых или до целых..
Дык добавь 2 переключателя на форму ("до 10 коп" и "до рубля", добавь переменную "Округление"", при выборе присваивай ей 1 или 0 соответственно, а в коде измени
Код
СпрЦен.Цена = Окр(СпрЦен.Цена,1,1);
на
Код
СпрЦен.Цена = Окр(СпрЦен.Цена,Округление,1);

Вроде так...

Или тебе сделать? :)

P.S А если еще добавить выбор "правила округления" (3 параметр) - будет ваще круто.
Kirill_NN
Цитата(Prospero @ 4.12.2007, 10:49) *

А, дошло. (извините, болею, туго соображаю...)
Нужно, чтобы в зависимости от выбранной кнопочки округляло до десятых или до целых..
Дык добавь 2 переключателя на форму ("до 10 коп" и "до рубля", добавь переменную "Округление"", при выборе присваивай ей 1 или 0 соответственно, а в коде измени
Код
СпрЦен.Цена = Окр(СпрЦен.Цена,1,1);
на
Код
СпрЦен.Цена = Окр(СпрЦен.Цена,Округление,1);

Вроде так...

Или тебе сделать? :)

P.S А если еще добавить выбор "правила округления" (3 параметр) - будет ваще круто.

Вабще я так и хотел...

Тока как мне их правильно записать
Я вабще только учусь работе с 1С, а с кнопками туго как то получается...

Допустим я делаю переключатели: "до рубля" и до "10 копеек" - объединяю их в группу "ВыбДеньги"
и делаю так:
Код
//*******************************************
Перем Округление;
Перем ВыбДеньги;
Процедура Поехали()
Если ВыбДеньги = 1
Тогда Округление = 0
Иначе Округление = 1
КонецЕсли;
СпрЦен = СоздатьОбъект("Справочник.Цены");
СпрЦен.ИспользоватьДату(ВыбДата);
СпрЦен.ИспользоватьВладельца("Справочник.Номенклатура");
Режим = 0;
СпрЦен.ВыбратьЭлементы(Режим);
Пока СпрЦен.ПолучитьЭлемент() = 1 Цикл
//Начинаем обработку
Если СпрЦен.Валюта = ВыбВалюта Тогда
СпрЦен.Цена = Окр(СпрЦен.Цена,Округление,1);
СпрЦен.Записать();
КонецЕсли;
КонецЦикла;


Используйте тэг [CODE]
Kirill_NN
Ерунда какая то...
все вроде правильно, но кнопки почему то "заедают"
Посмотрите, поправьте что не так...

Заренее благодарен!
Prospero
Немного не понял про "заедают кнопки"...
Что касается кода:
Код
 Если Округление = 1 Тогда     //Запускаем проверку на переключателе Округление
ОкрЦен = 0
ИначеЕсли Округление = 2 Тогда
ОкрЦен = 1
КонецЕсли;


ИМХО, Округление или 0 или 1, но никак не 1 или 2 (выбран=1, не выбран=0)
то же с переключателем "Правила"....
Kirill_NN
Цитата(Prospero @ 20.12.2007, 17:13) *

Немного не понял про "заедают кнопки"...
Что касается кода:
Код
 Если Округление = 1 Тогда     //Запускаем проверку на переключателе Округление
ОкрЦен = 0
ИначеЕсли Округление = 2 Тогда
ОкрЦен = 1
КонецЕсли;


ИМХО, Округление или 0 или 1, но никак не 1 или 2 (выбран=1, не выбран=0)
то же с переключателем "Правила"....


Попробуй понажимай эти переключатели...

Хм... это вроде "Флажок" либо нажат = 1, либо нет = 0
А с переключателями может быть неск-ко значений...
WaRDeR
Держи и не парься
В форме исправлен порядок обхода элементов, модуль переписан весь.

Вся работа заняла чуть более 5 мин.

ВНИМАТЕЛЬНО ЧИТАЙ КРАСНО-ЖЕЛТЫЕ-КНИГИ.
Kirill_NN
Цитата(WaRDeR @ 21.12.2007, 11:48) *

Держи и не парься
В форме исправлен порядок обхода элементов, модуль переписан весь.

Вся работа заняла чуть более 5 мин.

ВНИМАТЕЛЬНО ЧИТАЙ КРАСНО-ЖЕЛТЫЕ-КНИГИ.

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

буду читать внимательнее...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.