Добрый день, нахожусь на самом начальном этапе изучения программирования в 1С.

Создал форму в документе РеализацииТоваров, в которой есть колонки Количество, ЦенаРеализации и Стоимость. Хочу сделать, чтобы при изменении Цены или Количества автоматически рассчитывалась колонка Стоимость. Для этого создал процедуру на клиенте и в событиях "при изменении" для Цены и Количества указал данную процедуру. Она ниже:

```1c
    &НаКлиенте
    Процедура РасчетСтоимости(Элемент)

    Элементы.Товары.ТекущиеДанные.Стоимость =Элементы.Товары.ТекущиеДанные.ЦенаРеализации * Элементы.Товары.ТекущиеДанные.Количество;

    КонецПроцедуры
```

Это работает) Но посмотрел, что в конфигурации Розница работает так, что автоматически рассчитывается не только Стоимость, но и ЦенаРеализации (если указаны Стоимость и Количество).

И вот теперь я не могу разобраться, как сделать так, чтобы если заполнены Цена и Количество, то автоматически считалась Стоимость, а если заполнены Стоимость и Количество - автоматически считалась Цена.

Думал, добавить еще одну процедуру к событиям "при изменении", но, как я понял, там можно выбирать только одну процедуру для события (правильно же? или я не разобрался, как выбрать несколько?). Или как правильно реализовать эту вещь?

И еще параллельно хотел уточнить. В моем коде несколько раз подряд используется Элементы.Товары.ТекущиеДанные. Если я правильно понимаю, я могу записать это в переменную, например, ВыбранныйТовар и затем просто указывать ВыбранныйТовар.Стоимость = ВыбранныйТовар.Количество * ВыбранныйТовар.ЦенаРеализации, но это не работает...

1С:Предприятие 8.3, учебная версия (8.3.20.1838)
---
В событии ПриИзменении() у Количество, Цена и Стоимость нужно вызвать такую процедуру:

```1c
    Процедура ПересчетТовары()
    ТекущийЭлементИмя = ЭтаФорма.Элементы.Товары.ТекущийЭлемент.Имя;
    Если ТекущийЭлементИмя = "ТоварыЦена" Тогда
    Элементы.Товары.ТекущиеДанные.Стоимость =Элементы.Товары.ТекущиеДанные.ЦенаРеализации * Элементы.Товары.ТекущиеДанные.Количество;
    ИначеЕсли ТекущийЭлементИмя = "ТоварыКоличество" Тогда
    Элементы.Товары.ТекущиеДанные.Стоимость =Элементы.Товары.ТекущиеДанные.ЦенаРеализации * Элементы.Товары.ТекущиеДанные.Количество;
    ИначеЕсли ТекущийЭлементИмя = "ТоварыСтоимость" Тогда
    Элементы.Товары.ТекущиеДанные.ЦенаРеализации = Элементы.Товары.ТекущиеДанные.Стоимость / Элементы.Товары.ТекущиеДанные.Количество;
    КонецЕсли;
```
---
И вот теперь я не могу разобраться, как сделать так, чтобы если заполнены Цена и Количество, то автоматически считалась Стоимость, а если заполнены Стоимость и Количество - автоматически считалась Цена.
Ну так а в чём проблема ? Так и пиши:

```1c
    Если Элементы.Товары.ТекущиеДанные.ЦенаРеализации<>0 И Элементы.Товары.ТекущиеДанные.ЦенаРеализации.Количество<>0 Тогда
    // Считаем как нам надо
    Иначе
    // Считаем по другому
    КонецЕсли;
```

И еще параллельно хотел уточнить. В моем коде несколько раз подряд используется Элементы.Товары.ТекущиеДанные. Если я правильно понимаю, я могу записать это в переменную, например, ВыбранныйТовар и затем просто указывать ВыбранныйТовар.Стоимость = ВыбранныйТовар.Количество * ВыбранныйТовар.ЦенаРеализации, но это не работает...
Не нужно заниматься такой оптимизацией. При таком присвоении не происходит ожидаемое присвоение ссылки.
---
В событии ПриИзменении() у Количество, Цена и Стоимость нужно вызвать такую процедуру:

```1c
    Процедура ПересчетТовары()
    ТекущийЭлементИмя = ЭтаФорма.Элементы.Товары.ТекущийЭлемент.Имя;
    Если ТекущийЭлементИмя = "ТоварыЦена" Тогда
    Элементы.Товары.ТекущиеДанные.Стоимость =Элементы.Товары.ТекущиеДанные.ЦенаРеализации * Элементы.Товары.ТекущиеДанные.Количество;
    ИначеЕсли ТекущийЭлементИмя = "ТоварыКоличество" Тогда
    Элементы.Товары.ТекущиеДанные.Стоимость =Элементы.Товары.ТекущиеДанные.ЦенаРеализации * Элементы.Товары.ТекущиеДанные.Количество;
    ИначеЕсли ТекущийЭлементИмя = "ТоварыСтоимость" Тогда
    Элементы.Товары.ТекущиеДанные.ЦенаРеализации = Элементы.Товары.ТекущиеДанные.Стоимость / Элементы.Товары.ТекущиеДанные.Количество;
    КонецЕсли;
```