|
Как оптимизировать обращение на сервер с формы? 🠗 (Волшебник 18.03.2025 10:13)
program345, Ильф, Мультук, DiMel_77, PR, Ненавижу 1С, Prog_man, ass1c, Галахад, RVN, Волшебник, Затейник, Timon1405, H A D G E H O G s, tir654, BDA80, arsik, toypaul, Bigbro, Crusher, МаленькийВопросик, youalex, sikuda, LuckyStar, Прохожий, alexela, _Batoo, Hawk_1c, Builder, , kir-g, Amfiaray, alex_kld_2024, boozin, who respawn, ЕRPe, Hmster, WhiteDragon93, alexxx961503, Niveus, Chai Nic, PLUT, Хряк, SleepyHead, reg0303, GreenLab, piter3, Кир Пластелинин, Silgis, dmt, vicof
| ☑ |
0
program345
18.03.25
✎
09:16
|
Добрый день!
С клиента обращаюсь на сервер, для получения Значения реквизита справочника из текущие данные.
Как я понимаю Скидка = ПолучитьСкидку(ТекДанные.Скидка); не оч хорошо, может проще создать реквизит в ТаблЧасти?
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
ТекДанные = Элементы.Товары.ТекущиеДанные;
Попытка
Скидка = ПолучитьСкидку(ТекДанные.Скидка);
Исключение
Скидка = 0;
КонецПопытки;
ТекДанные.Сумма = ТекДанные.Количество * ТекДанные.Цена;
ТекДанные.СуммаСкидки = ТекДанные.Сумма * Скидка/100;
ТекДанные.Всего = ТекДанные.Сумма - ТекДанные.СуммаСкидки;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекДанные = Элементы.Товары.ТекущиеДанные;
Попытка
Скидка = ПолучитьСкидку(ТекДанные.Скидка);
Исключение
Скидка = 0;
КонецПопытки;
ТекДанные.Сумма = ТекДанные.Количество * ТекДанные.Цена;
ТекДанные.СуммаСкидки = ТекДанные.Сумма * Скидка/100;
ТекДанные.Всего = ТекДанные.Сумма - ТекДанные.СуммаСкидки;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекДанные = Элементы.Товары.ТекущиеДанные;
Попытка
Скидка = ПолучитьСкидку(ТекДанные.Скидка);
Исключение
Скидка = 0;
КонецПопытки;
//ТекДанные.Сумма = ТекДанные.Количество * ТекДанные.Цена;
ТекДанные.СуммаСкидки = ТекДанные.Сумма * Скидка/100;
ТекДанные.Всего = ТекДанные.Сумма - ТекДанные.СуммаСкидки;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкидкаПриИзменении(Элемент)
ТекДанные = Элементы.Товары.ТекущиеДанные;
Попытка
Скидка = ПолучитьСкидку(ТекДанные.Скидка);
Исключение
Скидка = 0;
КонецПопытки;
//ТекДанные.Сумма = ТекДанные.Количество * ТекДанные.Цена;
ТекДанные.СуммаСкидки = ТекДанные.Сумма * Скидка/100;
ТекДанные.Всего = ТекДанные.Сумма - ТекДанные.СуммаСкидки;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаСкидкиПриИзменении(Элемент)
ТекДанные = Элементы.Товары.ТекущиеДанные;
//Попытка
// Скидка = ПолучитьСкидку(ТекДанные.Скидка);
//Исключение
// Скидка = 0;
//КонецПопытки;
//ТекДанные.Сумма = ТекДанные.Количество * ТекДанные.Цена;
//ТекДанные.СуммаСкидки = ТекДанные.Сумма * Скидка/100;
ТекДанные.Всего = ТекДанные.Сумма - ТекДанные.СуммаСкидки;
КонецПроцедуры
&НаСервере
Функция ПолучитьСкидку(Скидка)
Возврат Скидка.ЗначениеСкидки;
КонецФункции // ()
|
|
1
Волшебник
18.03.25
✎
09:17
|
Тут нечего оптимизировать
|
|
2
ass1c
18.03.25
✎
09:18
|
&НаСервереБезКонтекста
Функция ПолучитьСкидку(Скидка)
Возврат Скидка.ЗначениеСкидки;
КонецФункции // ()
|
|
3
arsik
гуру
18.03.25
✎
09:18
|
&НаСервере
поменяй на
&НаСервереБезКонтекста
И норм
|
|
4
BDA80
18.03.25
✎
09:20
|
Через точку от ссылки - ай ай яй
|
|
5
Маленький Вопросик
18.03.25
✎
09:25
|
(4) выучил фразу с берестяных скрижалей?
|
|
6
ass1c
18.03.25
✎
09:28
|
ну или если кому не нравится через точку, красиво и по БСП шному
&НаСервереБезКонтекста
Функция ПолучитьСкидку(Скидка)
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Скидка, "ЗначениеСкидки");
КонецФункции // ()
|
|
7
H A D G E H O G s
18.03.25
✎
09:28
|
ПроверятьПоМетаданным=Истина;
Скидка = пргОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекДанные.Скидка,"ЗначениеСкидки",ПроверятьПоМетаданным);
|
|
8
Маленький Вопросик
18.03.25
✎
09:40
|
мне не нравится вот такой подход:
Попытка
Скидка = ПолучитьСкидку(ТекДанные.Скидка);
Исключение
Скидка = 0;
КонецПопытки;
надо работать через ТекДанные = неопределено, а не через вот эту всю шляпу...
но - мы не знаем, что за текущие данные там у него
|
|
9
H A D G E H O G s
18.03.25
✎
09:42
|
(8) это неуверенность в завтрашнем дне новичка. Нужно смело собирать ошибки!
|
|
10
Волшебник
18.03.25
✎
09:49
|
тут редактирование 1 строки. Что вы пытаетесь оптимизировать?
|
|
11
Прохожий
18.03.25
✎
09:53
|
(8) Через попытку даже сам вендор часто пишет. Скоро при начале работы системы будет написано Попытка на весь сеанс. И в любой момент в исключение ПоказатьРекламу(); ЗавершитьРаботуСистемы()
|
|
12
Мультук
гуру
18.03.25
✎
09:53
|
(9)
А потом также смело пожирать их в
Исключение
//ну и хрен с ней, с ошибкой
КонецПопытки;
program345, еще немного и ваши "рыжие кудри" примелькаются
(8)
Он ниже присваивает в возможные ТекДанные = неопределено, так что медицина тут пока "нервно курит".
|
|
13
program345
18.03.25
✎
10:09
|
(8)
|
|
14
Мультук
гуру
18.03.25
✎
10:13
|
(13)
Вам говорят про условие (см код)
&НаКлиенте
Процедура ТоварыСкидкаПриИзменении(Элемент)
ТекДанные = Элементы.Товары.ТекущиеДанные;
Если ТекДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Скидка = ПолучитьСкидку(ТекДанные.Скидка);
//ТекДанные.Сумма = ТекДанные.Количество * ТекДанные.Цена;
ТекДанные.СуммаСкидки = ТекДанные.Сумма * Скидка/100;
ТекДанные.Всего = ТекДанные.Сумма - ТекДанные.СуммаСкидки;
КонецПроцедуры
|
|
15
Волшебник
18.03.25
✎
10:13
|
Хватит разврата... Не надо оптимизировать учебную конфигурацию из 4 документов
|
|
16
program345
18.03.25
✎
10:46
|
(8) (14) Неопределено нету, есть пустая ссылка справочника Скидки, а на клиенте пустую ссылку не получить...
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший