{Справочник.Ремонт.Форма.ФормаПриемаВремонт.Форма(4)}: Преобразование значения к типу Число не может быть выполнено
 Элементы.СуммаМатериалов = Элементы.КоличествоМатериалов * Элементы.СтоимостьМатериалов;

Элементы.СуммаМатериалов - Тип: Число, 10;
Элементы.КоличествоМатериалов - Тип: Число, 10;
Элементы.СтоимостьМатериалов - Тип: СправочникСсылка.Номенклатура;

Табличная часть:

- Имя: МатериалыСписок, ПутьКДанным: Объект.МатериалыСписок;
- Объект табличной части "Стоимость": Объект.МатериалыСписок.Материал.Стоимость

Ну и Код:

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

    &НаКлиенте
    Процедура КоличествоМатериаловПриИзменении(Элемент)
    ПросчётСтроки();
    КонецПроцедуры
```

Откуда: Практическое пособие разработчика.
---
```1c
    &НаКлиенте
    Процедура ПросчётСтроки()
    СтрокаТабличнойЧасти = Элементы.МатериалыСписок.ТекущиеДанные;
    СтрокаТабличнойЧасти.СуммаМатериалов = СтрокаТабличнойЧасти.КоличествоМатериалов * ПолучитьСтоимость(СтрокаТабличнойЧасти.Материал);
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПолучитьСтоимость(Материал)
    Стоимость=?(Материал=Неопределено,0,Материал.Стомость);
    Возврат Стоимость;
    КонецФункции
```
---
&НаКлиенте
Процедура ПросчётСтроки()
    СтрокаТабличнойЧасти = Элементы.МатериалыСписок.ТекущиеДанные;
    Элементы.СуммаМатериалов = Элементы.КоличествоМатериалов * Элементы.СтоимостьМатериалов;
КонецПроцедуры

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

Сторно: в (8) про другое написали :) К реквизиту Номенклатуры, например, можно обратиться так: Номенклатура.Стоимость.
---
Я правильно понял, что Элементы.СуммаМатериалов = Элементы.КоличествоМатериалов * Элементы.СтоимостьМатериалов;
и
Элементы.КоличествоМатериалов - Тип: Число, 10;
Элементы.СтоимостьМатериалов - Тип: СправочникСсылка.Номенклатура;

То есть вы число умножаете на ссылку? А какой результат вы ожидали увидеть?
---
Отвечая на Ваш вопрос: логично было бы отметить, что я ожидал увидеть сумму. Но раз я здесь спрашиваю, значит я еще не знаю, что что-то из того, что я пытаюсь натворить - не сработает.

Вопрос вдогонку: что мне следует предпринять? В справочнике указана цена за единицу нужного мне товара(детали), могу ли я умножить количество на эту самую цену? Не вбивая её вручную, а брав напрямую из справочника?

Запросом? А как?

(Вы меня простите, я эту муть разводить еще неделю назад начал. До сего дня вопросов не возникало. Новичок. Конфигурация создается исключительно для личного производства)
---
нельзя умножить число на справочник ))
---
Ну, допустим, когда я занимался этой ахинеей, я подразумевал, что я умножаю не на справочник, а на значение в нём) Что мне сделать, чтобы исправить ситуёвину? Я понимаю, что на сам справочник умножить нельзя.
---
Приравнять ссылку к числу. Например Сумма = Число * Число(Ссылка);
---
Я таки, конечно, чайник. Да даже и скрывать не буду, но как в конкретном случае это сделать? Как мне эту ссылку написать? Я имею ввиду, что она из себя представляет, как выглядит? Можно ли скушать?
---
не на справочник, а на значение в нём
иначе говоря на значение реквизита справочника ?
тогда вам нужно извлечь значение этого реквизита
Справочник.Реквизит , через внеконтекстную серверную процедуру функцию

```1c
    СтрокаТабличнойЧасти = Элементы.МатериалыСписок.ТекущиеДанные;
    СтрокаТабличнойЧасти .СуммаМатериалов = СтрокаТабличнойЧасти .КоличествоМатериалов * СтимостьМатериала(СтрокаТабличнойЧасти.СтоимостьМатериалов);
```
---
Например так:

```1c
    Элементы.СуммаМатериалов = Элементы.КоличествоМатериалов * Число(Элементы.СтоимостьМатериалов);
```
---
Вам надо научиться пользоваться отладчиком. Тогда такие глупые вопросы не будете задавать.
Как вы уже поняли надо умножать два числа, а у вас на входе что то другое.
Перепишите код пойдёт. В отладке проверите переменные.
---
```1c
    &НаКлиенте
    Процедура ПросчётСтроки()
    СтрокаТабличнойЧасти = Элементы.МатериалыСписок.ТекущиеДанные;
    СтрокаТабличнойЧасти .СуммаМатериалов = СтрокаТабличнойЧасти .КоличествоМатериалов * СтрокаТабличнойЧасти .СтоимостьМатериалов;
    КонецПроцедуры
```
---
Да, уже успел попробовать. Оно и в книге так описано, но так же приводит к:

{Справочник.Ремонт.Форма.ФормаПриемаВремонт.Форма(4)}: Преобразование значения к типу Число не может быть выполнено
 СтрокаТабличнойЧасти.СуммаМатериалов = СтрокаТабличнойЧасти.КоличествоМатериалов * Число(СтрокаТабличнойЧасти.СтоимостьМатериалов);

Здесь с примером из (8)

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

    &НаКлиенте
    Процедура КоличествоМатериаловПриИзменении(Элемент)
    ПросчётСтроки();
    КонецПроцедуры
```
---
Потому что в книге явно тип СтрокаТабличнойЧасти.СтоимостьМатериалов другой.
---
Та в книге-то всюду числа. Если убрать ссылку и оставить лишь числовой тип, тогда всё работает, как и должно по примеру.
---
```1c
    &НаКлиенте
    Процедура ПросчётСтроки()
    СтрокаТабличнойЧасти = Элементы.МатериалыСписок.ТекущиеДанные;
    СтрокаТабличнойЧасти.СуммаМатериалов = СтрокаТабличнойЧасти.КоличествоМатериалов * ПолучитьСтоимость(СтрокаТабличнойЧасти.Материал);
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПолучитьСтоимость(Материал)
    Стоимость=?(Материал=Неопределено,0,Материал.Стомость);
    Возврат Стоимость;
    КонецФункции
```
---
Ух! Огроменнейшее! Спасибо! Я так понимаю это то самое, что говорил мне сделать (10) ? Только вот в моем случае справочник называется "Номенклатура". Но я поправил и всё как надо. Поклон! :)
---
для теста сойдет ,но в (9) правильно вам написали , довольно странно указывать значение для расчета в табличной части документа в виде справочника
---
Догадываюсь, конечно, что странно. Делал по примеру с регистром накоплений. Но в процессе так и не нашел, как для каждого элемента в "Номенклатуре" выводить его количество, т.е. остаток на складе. В реальном времени. Или такое невозможно, или я просто не знаю. Скорее всего - второе, что более вероятно. В том примере был вариант с отчётом, но какой в нём смысл, если мне нужно опять же знать остаток непосредственно в справочнике. Допустим - запросом, а как результат запроса вывести в нужное поле? (Например в форме списка "Номенклатуры", есть поле "Количество"). Вот туда и нужно выводить сумму остатка из регистра. А как сделать - тут я дуб.
---
Во избежание ошибки темы.
1. Первую переменную сообщения оборачивать в функцию Строка()
2. Арифметические действия проводить в круглых скобках