Имя: Пароль:
1C
 
Значение не является значением объектного типа (ДокСкидка)
, ,
0 amadeus2010
 
29.08.14
17:23
добрый вечер, в очередной раз Заказчик изменил условие задания, теперь вместо расчета скидки по строке товара, он хочет расчитывать скидку от суммы документа и чтобы на строке проставлялась одинаковая скидка например если сумма больше 500 то скидка на всех строках была 3%. Изменил код процедуры
////////////////////////////////////////////////////////////////////
Процедура РасчетСкидки() //SIP-DIMA
    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    //Если СтрокаТабличнойЧасти.Сумма>= 500 Тогда
    //      СтрокаТабличнойЧасти.ДокСкидка = 3;
    //     ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 300 Тогда
    //     СтрокаТабличнойЧасти.ДокСкидка = 2;
    //     ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 150 Тогда
    //         СтрокаТабличнойЧасти.ДокСкидка = 1;
    //    КонецЕсли;    
       Если СуммаДокумента>= 500 Тогда
          СтрокаТабличнойЧасти.ДокСкидка = 3;
         ИначеЕсли СуммаДокумента>= 300 Тогда
         СтрокаТабличнойЧасти.ДокСкидка = 2;
         ИначеЕсли СуммаДокумента>= 150 Тогда
             СтрокаТабличнойЧасти.ДокСкидка = 1;
        КонецЕсли;    
                    
КонецПроцедуры    
/////////////////////////////////////////////////////////////////
но мне дает ошибку
{Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента(2712)}: Значение не является значением объектного типа (ДокСкидка)
          СтрокаТабличнойЧасти.ДокСкидка = 3;
убрал вызов процедуры в строках сумма, цена, количество, ДокСкидка, также при выводе строки убрал из расчета всего вычет ДокСкидка.Не могу понять в чем ошибка
1 Ёпрст
 
29.08.14
17:26
отладчик то че хоть говорит ?
2 Ёпрст
 
29.08.14
17:26
че там у тя в СтрокаТабличнойЧасти ?
3 amadeus2010
 
29.08.14
17:30
пока отладчик не запускал
4 Ёпрст
 
29.08.14
17:35
а ну ладно, форум телепатов подскажет, тут онлайн отладчик завсегда работает
5 amadeus2010
 
29.08.14
17:41
сейчас проверил отладчиком он срабатывает при создании документа, потом при выборе всех элементов ТЧ в итоге выбрал товар 20 шт. по цене 8.40 отладчик вошел в процедуру и показал после нажатия на кнопку записать в строке скидка 1%.
6 Ёпрст
 
29.08.14
17:43
Этот код (проца) где хоть вызывается то хоть ?
На чем висит ?
7 amadeus2010
 
29.08.14
17:43
но если убрать отладчик тогда опять выходит ошибка Значение не является значением объектного типа ДокСкидка
8 amadeus2010
 
29.08.14
17:44
это УТ 10.3 вызывается в ОбновитьПодвал
9 amadeus2010
 
29.08.14
17:46
в Обновить подвал есть еще такие строки
ЭлементыФормы.Скидка.Значение = ОбщегоНазначения.ФорматСумм(Товары.Итог("ДокСкидка"));
    ЭлементыФормы.Всего.Значение = ОбщегоНазначения.ФорматСумм(Товары.Итог("Сумма")-Товары.Итог("Сумма")*(Товары.Итог("ДокСкидка")/100) + ?(СуммаВключаетНДС, 0, Товары.Итог("СуммаНДС")));
10 Ёпрст
 
29.08.14
17:48
(8) да уж..
а вам не кажется, что вызов этого кода там - это п..ц полный ?
11 Крошка Ру
 
29.08.14
17:49
(0)Вариант только один на момент выполнения

СтрокаТабличнойЧасти.ДокСкидка = 3


в этой строке нет поля ДокСкидка
12 Ёпрст
 
29.08.14
17:49
и это, на досуге, неплохо бы подумать, что есть
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
там..

а лучше поглядеть в отладчике :)
особенно, если строк в ТЧ больше одной
:)
13 Крошка Ру
 
29.08.14
17:50
(10) Да обсуждали уже... И вызов кода, и установка скидок примо в коде...
14 Крошка Ру
 
29.08.14
17:50
*прямо
15 Ёпрст
 
29.08.14
17:54
(13) аа.. ну ладно, тогда пусть лепит, чего уж там.
16 amadeus2010
 
29.08.14
18:06
удивительно но код работает только когда открываешь заново документ выходит ошибка в (0)
17 amadeus2010
 
29.08.14
18:07
прошу вас если возможно ткните меня в причину ошибки
18 Ёпрст
 
29.08.14
18:10
Даже не знаю, как с помощью инета в тебя ткнуть пальцем, разве что кого попросить ?
Кто там у вас рядом работает, сидит ? Попросите его, пусть ткнёт вас от моего имени, я разрешаю.
19 shuhard
 
29.08.14
18:12
(16) глянул я и действительно, окуительно, окуительно ...
20 amadeus2010
 
29.08.14
18:16
насчет ткнуть это я образно, сам что-то не соображу где ошибка в коде или не из той процедуры вызываю Расчет скидки()?
21 hhhh
 
29.08.14
19:05
(20) при открытии похоже нет ЭлементыФормы.Товары.ТекущиеДанные

сделай

Процедура РасчетСкидки() //SIP-DIMA

    Если ЭлементыФормы.Товары.ТекущиеДанные = Неопределено Тогда
       Возврат;
   КонецЕсли;


    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    //Если СтрокаТабличнойЧасти.Сумма>= 500 Тогда

    //      СтрокаТабличнойЧасти.ДокСкидка = 3;

    //     ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 300 Тогда

    //     СтрокаТабличнойЧасти.ДокСкидка = 2;

    //     ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 150 Тогда

    //         СтрокаТабличнойЧасти.ДокСкидка = 1;

    //    КонецЕсли;    

       Если СуммаДокумента>= 500 Тогда
          СтрокаТабличнойЧасти.ДокСкидка = 3;
         ИначеЕсли СуммаДокумента>= 300 Тогда
         СтрокаТабличнойЧасти.ДокСкидка = 2;
         ИначеЕсли СуммаДокумента>= 150 Тогда
             СтрокаТабличнойЧасти.ДокСкидка = 1;
        КонецЕсли;    
                    
КонецПроцедуры
22 amadeus2010
 
30.08.14
11:02
большое спасибо за помощь
Независимо от того, куда вы едете — это в гору и против ветра!