Имя: Пароль:
1C
1С v8
Заполнение табличной части по значениям текущей ячейки.
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
В общем, я идиот, у меня просто была ошибка в названии процедуры и она не вызывалась.)
Кстати, спасибо за вот это, буду пользоваться.
Если Объект.Тариф = ПредопределенноеЗначение("Перечисления.ВидыТарифа.Фиксированный")
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.