Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 11:49

Вычисление суммы

Автор WarBoot, 10 мая 2015, 17:43

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

WarBoot

Здравствуйте, подскажите пожалуйста как рассчитать сумму в документе. Формула такая: "Сумма=Тарификация*СрокСтоянки" учитывая, что Тарификация - это перечисления словами, т.е. ещё нужно слово задать как число

nemox

Какой тип у реквизита Тарификация? Разные варианты есть.
Во первых создаете обработку события ПриИзменении() Тарификация и СрокСтоянки.
В них прописываете как вариант:

Если Объект.Тарификация = "Один рубль" Тогда
    Объект.Сумма = 1*Объект.СрокСтоянки;
ИначеЕсли Объект.Тарификация = "Два рубля" Тогда
    Объект.Сумма = 2*Объект.СрокСтоянки;
КонецЕсли;
И т.д.

WarBoot

Цитата: nemox от 10 мая 2015, 20:32
Какой тип у реквизита Тарификация? Разные варианты есть.
Во первых создаете обработку события ПриИзменении() Тарификация и СрокСтоянки.
В них прописываете как вариант:

Если Объект.Тарификация = "Один рубль" Тогда
    Объект.Сумма = 1*Объект.СрокСтоянки;
ИначеЕсли Объект.Тарификация = "Два рубля" Тогда
    Объект.Сумма = 2*Объект.СрокСтоянки;
КонецЕсли;
И т.д.


Тарификация типа (Ссылка из перечисления) имеет час, сутки, неделю, месяц
И вы можете чутка подробнее рассказать, а то я ещё очень новичёк

nemox

Выбираете на созданной вами форме в режиме конфигуратор реквизит Тарификация. Появляется справа палитра свойств. В ней в самом низу есть события. Напротив события ПриИзменении() щелкаете на лупу. Создаете процедуру #НаКлиенте, а затем Функцию #НаСервере:
#НаКлиенте
Процедура ТарификацияПриИзменении()
    Объект.СуммаСтоянки = ПолучитьСумму();
КонецПроцедуры

#НаСервере
Функция ПолучитьСумму()
    Если Объект.Тарификация = Перечисления.Тарификации.Час Тогда
        Сумма = Объект.СрокСтоянки*300;
    ИначеЕсли Объект.Тарификация = Перечисления.Тарификации.Сутки Тогда   
        Сумма = Объект.СрокСтоянки*1000;
    ИначеЕсли Объект.Тарификация = Перечисления.Тарификации.Неделя Тогда
        Сумма = Объект.СрокСтоянки*5000;
    ИначеЕсли Объект.Тарификация = Перечисления.Тарификации.МесяцТогда
        Сумма = Объект.СрокСтоянки*10000;
    КонецЕсли;

    Возврат Сумма;
КонецФункции


И по аналогии Создаете процедуру ПриИзменении для СрокСтоянки

WarBoot

Цитата: nemox от 11 мая 2015, 11:53
Выбираете на созданной вами форме в режиме конфигуратор реквизит Тарификация. Появляется справа палитра свойств. В ней в самом низу есть события. Напротив события ПриИзменении() щелкаете на лупу. Создаете процедуру #НаКлиенте, а затем Функцию #НаСервере:
#НаКлиенте
Процедура ТарификацияПриИзменении()
    Объект.СуммаСтоянки = ПолучитьСумму();
КонецПроцедуры

#НаСервере
Функция ПолучитьСумму()
    Если Объект.Тарификация = Перечисления.Тарификации.Час Тогда
        Сумма = Объект.СрокСтоянки*300;
    ИначеЕсли Объект.Тарификация = Перечисления.Тарификации.Сутки Тогда   
        Сумма = Объект.СрокСтоянки*1000;
    ИначеЕсли Объект.Тарификация = Перечисления.Тарификации.Неделя Тогда
        Сумма = Объект.СрокСтоянки*5000;
    ИначеЕсли Объект.Тарификация = Перечисления.Тарификации.МесяцТогда
        Сумма = Объект.СрокСтоянки*10000;
    КонецЕсли;

    Возврат Сумма;
КонецФункции


И по аналогии Создаете процедуру ПриИзменении для СрокСтоянки

Простите, может быть я вас сильно нагружаю, но у реквизитов в свойствах Событий я не увидел :(

nemox

Свойства смотрите не реквизита, а элемента формы(В редакторе форм). Во вложении пример.

WarBoot

Цитата: nemox от 12 мая 2015, 09:39
Свойства смотрите не реквизита, а элемента формы(В редакторе форм). Во вложении пример.

Получилась вот такая вот ерунда

Евгений@

Вместо #НаКлиенте #НаСервере нужно использовать &НаКлиенте и &НаСервере

WarBoot

Цитата: Евгений@ от 12 мая 2015, 19:11
Вместо #НаКлиенте #НаСервере нужно использовать &НаКлиенте и &НаСервере
Спасибо большое.
Добавлено: 12 мая 2015, 20:34


Цитата: nemox от 12 мая 2015, 09:39
Свойства смотрите не реквизита, а элемента формы(В редакторе форм). Во вложении пример.
И вам огромное спасибо

Евгений@


&НаКлиенте
Процедура ТарификацияПриИзменении()
    ТД = Элементы.ИмяТабличнойЧасти.ТекущиеДанные;
    ТД.СуммаОплаты = ПолучитьСумму(ТД.Тарификация);
КонецПроцедуры

&НаКлиенте
Процедура СрокСтоянкиПриИзменении()
    ТД = Элементы.ИмяТабличнойЧасти.ТекущиеДанные;
    ТД.СуммаОплаты = ПолучитьСумму(ТД.Тарификация);

КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСумму(Тарификация)
    Если Тарификация = Перечисления.Тарификации.Час Тогда
        Сумма = Объект.СрокСтоянки*300;
    ИначеЕсли Тарификация = Перечисления.Тарификации.Сутки Тогда   
        Сумма = Объект.СрокСтоянки*1000;
    ИначеЕсли Тарификация = Перечисления.Тарификации.Неделя Тогда
        Сумма = Объект.СрокСтоянки*5000;
    ИначеЕсли Тарификация = Перечисления.Тарификации.Месяц Тогда
        Сумма = Объект.СрокСтоянки*10000;
    КонецЕсли;

    Возврат Сумма;
КонецФункции

Я думаю должно как то так, только ИмяТабличнойЧасти поменять на нужное.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск