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

Автоматический расчет суммы, на форме документа.

Автор AIBOLIT47, 05 мая 2014, 19:58

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

cska-fanat-kz

перед этим мое сообщение тоже прочитайте...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

AIBOLIT47

Цитата: cska-fanat-kz от 06 мая 2014, 19:08
Не совсем правильно. Данные для расчетов должны быть на форме. А у вас для их получения приходится обращаться на сервер.
Это не есть гуд.

Я воспользовался вашим советом, исправил пути и изменил НаКлиент, формула перестала работать.
А почему обращение за данными на сервер не есть гуд?

cska-fanat-kz

Воспринимайте обращение на сервер как очень затратной операцией. Их по возможности следует избегать.
Тем более что у вас на форме все для расчета есть.

Приведите исправленный вариант.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

AIBOLIT47

Цитата: cska-fanat-kz от 08 мая 2014, 16:34
Воспринимайте обращение на сервер как очень затратной операцией. Их по возможности следует избегать.
Тем более что у вас на форме все для расчета есть.

Приведите исправленный вариант.

Да кстати о коде, вот исправленный:

&НаКлиенте
Процедура РасчетСуммыВыкупа()
   Объект.СуммаВыкупаЗалога = (Объект.Процент/100 * Объект.ОцененнаяСтоимость) + Объект.ОцененнаяСтоимость;
КонецПроцедуры

&НаКлиенте
Процедура ТарифнаяСтавкаПриИзменении(Элемент)
РасчетСуммыВыкупа();
КонецПроцедуры

&НаКлиенте
Процедура ТоварПриИзменении(Элемент)
РасчетСуммыВыкупа();
КонецПроцедуры

cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Константин5825

Все прочитал, но не получилось) помогите!!!

Проблема таже, в документе в форме не рассчитывает прибыль.

Поля:
Ставка заказчику - числовое
Ставка Перевозчику - числовое
Форма оплаты перевозчику -ссылка на справочник
прибыль -числовое
Формула расчета прибыли: Прибль = СтавкаЗаказчику - СтавкаПеревозчику.
Так считает.
Но нужно учесть ФормуОплатыПеревозчику
Тогда
Формула расчета прибыли: Если ФормаОплаты = Наличными То Прибль = СтавкаЗаказчику - СтавкаПеревозчику.

Вот сам код процедуры:

&НаСервере
Процедура РасчетПрибыли()
   Если Объект.ФормаОплатыПеревозчика = "Наличными" Тогда
      Объект.Прибыль = Объект.СтавкаЗаказчику - Объект.СтавкаПеревозчику;
      КонецЕсли
КонецПроцедуры

&НаКлиенте
Процедура СтавкаЗаказчикуПриИзменении(Элемент)
РасчетПрибыли();
КонецПроцедуры

&НаКлиенте
Процедура СтавкаПеревозчикуПриИзменении(Элемент)
РасчетПрибыли();
КонецПроцедуры

&НаКлиенте
Процедура ФормаОплатыПеревозчикаПриИзменении(Элемент)
РасчетПрибыли();
КонецПроцедуры


В конечном коде будет много если)
Но пока пытался хотя бы на простом примере запустить!

Спасибо за помощь!

alex0402

Цитата: Константин5825 от 06 мар 2017, 14:22Если Объект.ФормаОплатыПеревозчика = "Наличными" Тогда
это условие не сработает.
какой тип ФормаОплатыПеревозчика?
если перечисление, то нужно
Если Объект.ФормаОплатыПеревозчика = ПредопределенноеЗначение(Перечивдение.тратара.Наличными) тогда
- это можно сделать на клиенте.
Если Справочник, то точно так же, если есть предопределенное значение, если нет и добавить предопределенное не возможно, то можно специально для этого завести константу.
Спасибо за Сказать спасибо

Константин5825

Да, ФормаОплатыПеревозчика это ссылка на справочник.
Я правильно Вас понял?
&НаСервере
Процедура РасчетПрибыли()
Если Объект.ФормаОплатыПеревозчика = Справочники.Значение(Справочники.ФормыОплаты.Наличными) Тогда
Объект.Прибыль = Объект.СтавкаЗаказчику - Объект.СтавкаПеревозчику;
КонецЕсли
КонецПроцедуры

&НаКлиенте
Процедура СтавкаЗаказчикуПриИзменении(Элемент)
РасчетПрибыли();
КонецПроцедуры

&НаКлиенте
Процедура СтавкаПеревозчикуПриИзменении(Элемент)
РасчетПрибыли();
КонецПроцедуры

&НаКлиенте
Процедура ФормаОплатыПеревозчикаПриИзменении(Элемент)
РасчетПрибыли();
КонецПроцедуры



Но как ничего не заработало) думаю что не правильно)

Norfolk

Цитата: Константин5825 от 06 мар 2017, 15:28
Да, ФормаОплатыПеревозчика это ссылка на справочник.
Я правильно Вас понял?
&НаСервере
Процедура РасчетПрибыли()
Если Объект.ФормаОплатыПеревозчика = Справочники.Значение(Справочники.ФормыОплаты.Наличными) Тогда
Объект.Прибыль = Объект.СтавкаЗаказчику - Объект.СтавкаПеревозчику;
КонецЕсли
КонецПроцедуры

&НаКлиенте
Процедура СтавкаЗаказчикуПриИзменении(Элемент)
РасчетПрибыли();
КонецПроцедуры

&НаКлиенте
Процедура СтавкаПеревозчикуПриИзменении(Элемент)
РасчетПрибыли();
КонецПроцедуры

&НаКлиенте
Процедура ФормаОплатыПеревозчикаПриИзменении(Элемент)
РасчетПрибыли();
КонецПроцедуры



Но как ничего не заработало) думаю что не правильно)
ЦитироватьПроцедура РасчетПрибыли()
   Если Объект.ФормаОплатыПеревозчика = Справочники.Значение(Справочники.ФормыОплаты.Наличными) Тогда
      Объект.Прибыль = Объект.СтавкаЗаказчику - Объект.СтавкаПеревозчику;
      КонецЕсли
КонецПроцедуры
А если попробовать
Если Объект.ФормаОплатыПеревозчика = Справочники.ФормыОплаты.НайтиПоКоду("ВашКод") Тогда
Объект.Прибыль = Объект.СтавкаЗаказчику - Объект.СтавкаПеревозчику;
КонецЕсли

вот так?

alex0402

Цитата: Константин5825 от 06 мар 2017, 15:28Если Объект.ФормаОплатыПеревозчика = Справочники.Значение(Справочники.ФормыОплаты.Наличными) Тогда
правильно:
На сервере:
Если Объект.ФормаОплатыПеревозчика = Справочники.ФормыОплаты.Наличными Тогда
На клиенте:
Если Объект.ФормаОплатыПеревозчика = ПредопределенноеЗначение(Справочник.ФормыОплаты.Наличными) Тогда

Добавлено: 06 мар 2017, 17:25


Справочники.ФормыОплаты.Наличными - должно быть предопределенным.
Можно Справочники.ФормыОплаты.НайтиПоНаименованию("Наличными"), но это г-но код.
Спасибо за Сказать спасибо

Теги:

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

Рейтинг@Mail.ru

Поиск