Форма И Документы

  • Автор темы ovak
  • Дата начала
O

ovak

#1
Учусь по книге 1С: Предприятие 8.2 Радченко и Хрусталева. Создавая документ "Приходная Накладная" (стр. 127) столкнулся с проблемой. Создал элементы формы материлы, количество, цена, сумма. Затем прописал модуль для формы:
Листинг 4.2
Код:
&НаКлиенте
Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт 
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
КонецПроцедуры
.
Затем прописал обработчик формы:
Листинг 4.3.
Код:
&НаКлиенте
Процедура МатериалыКоличествоПриИзменении(Элемент) 
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные; 
РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
Проблема в том, что код листинга 4.3 из МатериалыКоличество продублировался в МатериалыМатериалы, МатериалыЦена и МатериалыСумма. Когда в МатериалыЦена
Код:
Процедура МатериалыКоличествоПриИзменении(Элемент)
заменяю на
Код:
Процедура МатериалыЦенаПриИзменении(Элемент)
, этот новый код вновь самопроизвольно копируется в другие элементы формы. Как можно исправить подобную ситуацию?
 

Allexei

Well-known member
02.05.2008
322
1
#2
Ничего не понял если честно. Обработчики событий назначаем через палитру свойств элемента, получаем 3 обработчика событий МатериалыЦенаПриИзменении, МатериалыКоличествоПриИзменении и МатериалыМатериалыПриИзменении. В качестве тела процедур вставляем то что в листинге 4.3. Все работает.
 
O

ovak

#3
Всё работало по началу. Но я допустил грамматическую ошибку в кодах и наименованиях. После исправления, начались проблемы. Раза 3 с 0 все создавал и переписывал, и продолжает клонироватся. Меняю в цене количество на цену, в количестве появляется код из цены, причем и в сумме, и в материалах. Погоня за собственным хвостом. :) Можно удалить и создать новый документ, не проблема. Но интересно разобратся, да и в будущем опыт пригодился бы. Для саморазвития, так сказать. Хотя может быть прогу выбил или ....
 
O

ovak

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

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

Дайнеко

Well-known member
19.11.2009
951
0
#5
Ть-фу ты! Опять запутал! Так в чем ошибка был? (Я один ничего не поня?)

А так писать слабо?
Код:
	РаботаСДокументами.РассчитатьСумму(Элементы.Материалы.ТекущиеДанные);
 
O

ovak

#7
Компиляция проходит по считыванию кода из количества, и пропускает считанный код в цене. Продолжает компиляцию на основе полученных ранее данных. Я при переходе в МатериалыЦенаПриИзменении() удалил предшедствующий код. Ладно, не заморачивайтесь. Решение проблемы найдено.