Имя: Пароль:
1C
1С v8
v8: По книге Радченко
,
0 Magashpaga
 
09.02.13
16:17
По книге Редченко создал обработчик в модуле формы:

&НаКлиенте
Процедура МатериалыКоличествоПриИзменении(Элемент)
   СтрокаТабличнойЧасти=Элементы.Материалы.ТекущиеДанные;
   РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);    
   КонецПроцедуры

В общем модуле:

Процедура РассчитатьСумму(СтрокаТабличнойЧасти)Экспорт
       СтрокаТабличнойЧасти.Сумма=СтрокаТабличнойЧасти.Количество*СтрокаТабличнойЧасти.Цена;
   КонецПроцедуры

При таком коде, в режиме 1С Предприятие, рассчитывается сумма при изменении количества и ЦЕНЫ. Хотя в книге говорится, что для поля Цена так же надо создать обработчик ПриИзменении. В чем дело? Если же я меняю в модуле формы МатериалыКоличество на МатериалыЦена, то вообще ничто не считает. Однако ошибку не выдает.
1 kotletka
 
09.02.13
16:18
кто такое Редченко?
2 PR
 
09.02.13
16:18
(0) Выкинь эту лажу. Почитай что-нить более стоящее. Радченко хоть что ли :))
3 Magashpaga
 
09.02.13
16:23
Ну... Радченко, то есть ;)
4 servs
 
09.02.13
16:26
в свойствах элемента управления есть ссылки на обработчики, их смотри, имена должны совпадать!
5 Magashpaga
 
09.02.13
16:49
Спасибо. Там и ошибка.
Однако, когда в элементе Количество и в элементе Цена, в свойствах, стоит событие МатериалыКоличествоПриИзменении, все отлично считается и не надо прописывать МатериалыЦенаПриИзменении ))
6 shuhard
 
09.02.13
16:51
(5) за прицепленный к контролу цена обработчик МатериалыКоличествоПриИзменении руки режут сразу
7 servs
 
09.02.13
16:54
(5) не так нельзя, делай 1 процедуру, и 2 разных обработчика, потом в каждом из обработчиков вызывай процеруду, так по стандарту будет.
8 Magashpaga
 
09.02.13
17:04
Ок. А чем это черевато?
9 Надсмотрщик
 
09.02.13
18:22
(8) Спеца не сдашь
10 МастерВопросов
 
09.02.13
18:45
(8) ничем особо страшным не чревато, разве что поматерят тебя последующие программисты. На клюшках в типовых так и писали, в свойствах каждой колонки стояла одна и та же процедура что то вроде глПересчетТабличнойЧасти(ИмяКолонки). А внутри этой процедуры уже условиями разруливалось вызов из какой колонки как обрабатывать.
Я когда осваиал снеговика прифигевал зачем писать десять процедур всего с одной строчкой, которая представляет собой вызов процедуры из общего модуля.
Вообщем идеологии 1С8 не противоречит что ты на разные события будешь ставить вызов одной и той же процедуры, для этого и оставлена возможность руками, как в семерке вписать название процедуры, в поле обработчика. Но так обычно не делают - проще лупу в обработчике щелкнуть, опять же в дальнейшем может еще чего понадобится в этот обработчик понапихать.
11 mistеr
 
09.02.13
21:03
(10) Это Delphi-style, оттуда взяли. И параметр Элемент, чтобы разруливать.
12 Magashpaga
 
22.02.13
16:46
А если просто обратиться к элементу Материалы(вызвав оброботчик из свойств), вот так:

&НаКлиенте
Процедура МатериалыПриИзменении(Элемент)
   СтрокаТабличнойЧасти=Элементы.Материалы.ТекущиеДанные;
   РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
   
КонецПроцедуры

Без Количества и Цены. Тоже не положено? Все работает.
13 GROOVY
 
22.02.13
16:51
Вот форум на котором отвечает автор книги, в книге, кстати, об это упоминается. http://devtrainingforum.v8.1c.ru/forum/
14 GANR
 
22.02.13
17:23
(0) Если ты этот код подвязал к таблице, а не к её полю, конечно будет для всего срабатывать..
15 mikecool
 
22.02.13
17:44
(6) с хрена ли? периодически так пишу, ибо не считаю нужным плодить 500 лишних процедур
Программист всегда исправляет последнюю ошибку.