Имя: Пароль:
1C
1C 7.7
v7: Попытка присвоить значение недоступной для записи переменной
,
0 max02021989
 
04.07.12
13:33
такая вот ошибка появилась
   если доставка=1 тогда
   

   форма.Всего=Окр(Итог("Сумма")*(100-Скидка+константа.Доставка)/100,2,1);
   
   иначе
   форма.Всего=Окр(Итог("Сумма")*(100-Скидка)/100,2,1);
   конецесли;

форма.Всего=Окр(Итог("Сумма")*(100-Скидка+константа.Доставка)/100,2,1);
{Документ.Заказ.Форма.Модуль(2562)}: Попытка присвоить значение недоступной для записи переменной (Всего)

пробовал присваивать без указания формы, но реквизиту значение не присваивалось
1 1Сергей
 
04.07.12
13:34
Всего - реквизит шапки, табличной части или формы?
2 max02021989
 
04.07.12
13:38
реквизит шапки
3 1Сергей
 
04.07.12
13:38
если доставка=1 тогда
   

   Всего=Окр(Итог("Сумма")*(100-Скидка+константа.Доставка)/100,2,1);
   
   иначе
   Всего=Окр(Итог("Сумма")*(100-Скидка)/100,2,1);
   конецесли;
4 max02021989
 
04.07.12
13:41
на форме присутствует поле со значением реквизита "Всего" и при таком варианте значение не меняется, функция сообщить говорит что оно изменилось на форме изменений нет
5 1Сергей
 
04.07.12
13:42
(4) удали свой реквизит с формы. Потом меню Вставить - Реквизиты... поставь галку у "Всего", потом подвинь куда надо
6 1Сергей
 
04.07.12
13:43
(5)* ...поставь галку у "Всего" и нажми Вставить
7 max02021989
 
04.07.12
13:45
вот так и сделал но изменений нет
8 max02021989
 
04.07.12
13:48
может как то разрешить изменение переменной
9 1Сергей
 
04.07.12
13:48
(7) а где этот код выполняется, в какой процедуре/функции?
10 max02021989
 
04.07.12
13:48
реквизита, правда когда его запретили не понятно
11 ДенисЧ
 
04.07.12
13:49
Форма.Всего - это не данные. Это ссылка на реквизит формы.. Естественно, ему ничего не присвоить...
12 Гость2
 
04.07.12
13:49
Форма.Обновить(1);
13 1Сергей
 
04.07.12
13:50
(10) этого же реквизита?
14 max02021989
 
04.07.12
13:55
да этого же реквизита, форма.обновить(1) тоже не помогло
15 1Сергей
 
04.07.12
13:56
Чего-то недоговариваешь
16 max02021989
 
04.07.12
13:57
чистой воды правду говорю, пишу, вот полная процедура
Процедура НаценкаЗаДоставку()

   если доставка=1 тогда
   

   Всего=Окр(Итог("Сумма")*(100-Скидка+константа.Доставка)/100,2,1);
   
   иначе
   Всего=Окр(Итог("Сумма")*(100-Скидка)/100,2,1);
конецесли;

КонецПроцедуры
17 Ёпрст
 
04.07.12
13:57
телепатирую

форма.Всего.Заголовок(Окр(Итог("Сумма")*(100-Скидка+константа.Доставка)/100,2,1));
18 max02021989
 
04.07.12
13:58
вызывается при нажатии на галочку
19 1Сергей
 
04.07.12
14:00
(18) а говорил того же реквизита. Всего - это поле ввода или просто текст?
20 1Сергей
 
04.07.12
14:00
или галка? тогда (17)+1
21 max02021989
 
04.07.12
14:05
всего это поле ввода , (17) не работает
22 1Сергей
 
04.07.12
14:06
(21) а галка откуда взялась?
23 Ёпрст
 
04.07.12
14:07
(21) уже лучше..
в код в (16) воткни
Форма.Обновить(0) в конец процедуры.
24 max02021989
 
04.07.12
14:11
галка это реквизит шапки доставка, если есть доставка тогда цена увеличивается на наценку константа.Доставка

попробовать вставить (23) не помогло
25 Ёпрст
 
04.07.12
14:11
(24) вставлял то куда хоть ?
Проца эта откуда вызывается ?

Сообщить(Всего) туда воткни, кажет че ?
26 max02021989
 
04.07.12
14:13
сообщает как раз норм посчитанное, а вызыватся из галочки доставка
27 1Сергей
 
04.07.12
14:14
Процедура НаценкаЗаДоставку()
   
   Если (доставка = 1) Тогда
       Всего = Окр(Итог("Сумма")*(100-Скидка+константа.Доставка)/100,2,1);
   Иначе
       Всего = Окр(Итог("Сумма")*(100-Скидка)/100,2,1);
   КонецЕсли;
   
   Форма.Обновить(0);
   
КонецПроцедуры

так?
28 Zmich
 
04.07.12
14:17
Так не бывает.
Разве что предположить маловероятный вариант, что на форме висит текст с формулой вычисления Всего без учета Доставки.
29 max02021989
 
04.07.12
14:20
Так посмотрю щас
30 1Сергей
 
04.07.12
14:22
а вообще, так считать доставку неправильно
31 max02021989
 
04.07.12
14:30
а как правильно, решилось, дело было в (28), извиняюсь за невнимательность всем спасибо!!!!
Программист всегда исправляет последнюю ошибку.