|
Подскажите по процедурам при изменениях полей в табличной части документа. | ☑ | ||
---|---|---|---|---|
0
Начинающий Программер
25.08.11
✎
12:13
|
Создал документ в 8.1 по внесению данных о зарплате, с одной табличной частью, со следующими полями (полей больше, но приведу ключевые):
1. Сотрудник 2. Оклад 3. Дни по норме 4. Дни по факту 5. Итого оклад 6. Больничный 7. Итого начислено. В каждое поле прикрутил процедуру в событие "ПриИзменении" в свойствах реквизита формы. Например в окладе: Процедура ТабличнаяЧастьОкладПриИзменении(Элемент) ТД = ЭлементыФормы.ТабличнаяЧасть.ТекущиеДанные; Если ТД.ДниНорма<>0 Тогда ТД.ИтогоНачисленоПоОкладу = Окр(ТД.Оклад*(ТД.ДниФакт/ТД.ДниНорма), 2); Сообщить("ТабличнаяЧастьОкладПриИзменении"); КонецЕсли; КонецПроцедуры Тут всё работает. Дальше, в поле Итого Оклад ставлю процедуру: Процедура ТабличнаяЧастьИтогоНачисленоПоОкладуПриИзменении(Элемент) ТД = ЭлементыФормы.ТабличнаяЧасть.ТекущиеДанные; ТД.ИтогоНачислено = ТД.ИтогоНачисленоПоОкладу + ТД.Больничные + ТД.Отпускные; Сообщить("ТабличнаяЧастьИтогоНачисленоПоОкладуПриИзменении"); КонецПроцедуры А вот теперь, когда меняю значение оклада, изменяется только поле "Итого оклад". Если же это поле изменять вручную - то только тогда начинает работать процедура ТабличнаяЧастьИтогоНачисленоПоОкладуПриИзменении() и изменяется поле "Итого начислено". Правильно ли я понимаю, что событие "ПриИзменении" рабьотает только для ручных изменений, но не для программных? И какие приемы тогда применять, если я хочу, чтобы при изменении одного поля изменялись и другие поля, в том числе через вызовы отдельных процедур? |
|||
1
Wobland
25.08.11
✎
12:16
|
>событие "ПриИзменении" рабьотает только для ручных изменений, но не для программных
да >И какие приемы тогда применять изменять другие поля |
|||
2
Начинающий Программер
25.08.11
✎
12:18
|
(1) То есть в первой процедуре писать изменения для всех полей?
|
|||
3
Wobland
25.08.11
✎
12:20
|
(2) код не читал, но мыслишь верно, похоже.
// я себе не могу представить такого, чтобы ожидать вызов события при присвоении |
|||
4
Начинающий Программер
25.08.11
✎
12:22
|
(3) А почему бы нет? Значение поля-то меняется?
|
|||
5
Wobland
25.08.11
✎
12:30
|
я понимаю, когда какие-нибудь поля ввода начинают сообщения слать. но чтобы область памяти...
|
|||
6
Начинающий Программер
25.08.11
✎
12:39
|
(5) Область памяти - это что именно? В данном случае же ведь поле именно видимо изменяется, практически то же самое, что если и вручную вводить. На мой взгляд первого месяца программирования в восьмерке вполне логично:-)
|
|||
7
Wobland
25.08.11
✎
12:50
|
(6) Область памяти - кусок памяти, в который пишется/из которого читается значение поля. пока не записано в базу. а ввод вручную подразумевает взаимодействие с элементом управления
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |