|
Заполнение табличной части по значениям текущей ячейки. |
☑ |
0
Maikroft
04.04.18
✎
19:58
|
Добрый день.
То ли вечер, то ли что.
Помогите заполнить табличную часть в зависимости от вида тарифа по значениям выделенной ячейки. Вот что сделал, но не работает.
&НаСервере
Функция ПолучитьВидТарифа(Тариф)
Возврат Перечисления.ВидыТарифа;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьТарифыПоВыделеннойСТрокеНаСервере(Команда)
ТекСтрока = ЭтаФорма.Элементы.ТорговыеТочки.ТекущиеДанные;
Тариф = ПолучитьВидТарифа(Объект.Тариф);
Если Тариф = "Фиксированный" Тогда
ТекСумма = ТекСтрока.Сумма;
Для Каждого СтрокаТЧ Из Объект.ТорговыеТочки Цикл
СтрокаТЧ.Сумма = ТекСумма;
КонецЦикла;
ИначеЕсли Тариф = "ПоSKU" Тогда
ТекКоличествоSKU = ТекСтрока.Количество;
ТекЦенаSKUВМесяц = ТекСтрока.Цена;
Для Каждого СтрокаТЧ Из Объект.ТорговыеТочки Цикл
СтрокаТЧ.Цена = ТекЦенаSKUВМесяц;
СтрокаТЧ.Количество = ТекКоличествоSKU;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
|
|
1
AlvlSpb
04.04.18
✎
20:57
|
(0) код хоть и замороченный (сокращается почти в два раза), но кажется работающим.
Ошибку скорей всего в этом (и далее в подобном):
Если Тариф = "Фиксированный"
Тариф - это просто строка или все же элемент справочника Тарифы? Если второе тогда
Если Тариф = Справочники.Тарифы.НайтиПоНаименованию("Фиксированный")
Причем получение значения справочника надо делать НаСервере
|
|
2
Малыш Джон
04.04.18
✎
21:02
|
чет у меня подозрение, что должно быть:
&НаСервере
Функция ПолучитьВидТарифа(Тариф)
Возврат Перечисления.ВидыТарифа[Тариф];
КонецФункции
|
|
3
Малыш Джон
04.04.18
✎
21:02
|
+(2)
и на клиенте:
Если Тариф = ПолучитьВидТарифа("Фиксированный") Тогда
|
|
4
Малыш Джон
04.04.18
✎
21:03
|
+(3)
и:
Тариф = Объект.Тариф;
|
|
5
Малыш Джон
04.04.18
✎
21:04
|
ТС, а как же дедуктивный метод? Шерлок был бы недоволен...
|
|
6
Maikroft
04.04.18
✎
22:12
|
Спасибо, я пробую.
В этот раз дедукция подвела.)
|
|
7
Maikroft
04.04.18
✎
22:20
|
Да, тариф это, конечно, перечисление.
Но не работает и все тут, хотя все верно по сути.
Попробовал без функции по возврату тарифа - та же беда, не заполняется ТЧ, в ней проблема.
ТЧ сделана хитро, у нее заголовок меняется в зависимости от тарифа, но это не должно влиять. Простейшая задача ведь.(
Если Объект.Тариф = Перечисления.ВидыТарифа.Фиксированный Тогда
Элементы.ТорговыеТочкиЦена.Видимость = Ложь;
Элементы.ТорговыеТочкиКоличество.Видимость = Ложь;
Элементы.ТорговыеТочкиСумма.ТолькоПросмотр = Ложь;
Элементы.ТорговыеТочкиСумма.Заголовок = "Сумма в месяц";
|
|
8
AlvlSpb
05.04.18
✎
00:06
|
(7) "Если Объект.Тариф = Перечисления.ВидыТарифа.Фиксированный Тогда"
Это надо делать НаСервере
|
|
9
zwei
05.04.18
✎
00:22
|
(7)
Если Объект.Тариф = ПредопределенноеЗначение("Перечисления.ВидыТарифа.Фиксированный") Тогда
Или перебирать коллекцию на сервере, но это будет плюс контекстный вызов и таскание всей таблицы сюда-туда.
|
|
10
Maikroft
05.04.18
✎
13:31
|
В общем, я идиот, у меня просто была ошибка в названии процедуры и она не вызывалась.)
Кстати, спасибо за вот это, буду пользоваться.
Если Объект.Тариф = ПредопределенноеЗначение("Перечисления.ВидыТарифа.Фиксированный")
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший