Здравствуйте, вопрос таков -
Есть расходная накладная, табличная часть которой содержит номенклатуру, количество, цену и сумму. Есть справочник номенклатуры, который содержит цену за одну единицу товара. Номенклатура в табличной части документа ссылается типом данных на этот справочник.
Мне нужно, при выборе элемента номенклатуры в табличной части расходной накладной, автоматически подставлялась цена на него из справочника
---
И покажи структуру конфигурации справочника номенклатуры (продукции, товара или как он там называется). По аналогии как в (10)

Так попробуй =)

```1c
    &НаКлиенте
    Процедура НоменклатураПродукцияПриИзменении(Элемент)
    ТекДанные = Объект.Номенклатура.НайтиПоИдентификатору(Элементы.Номенклатура.ТекущаяСтрока);
    Если ЗначениеЗаполнено(ТекДанные.Продукция) Тогда
    ТекДанные.Цена=ПолучитьЦенуНаСервере(ТекДанные.Продукция);
    КонецЕсли;
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПолучитьЦенуНаСервере(Продукция)
    Возврат Продукция.Цена
    КонецФункции
```
---
Что не получается? В событие при изменении поля номенклатура вставить запрос цены и изменять поле с ценой.
---
Я мало знаком с синтаксисом кода и с самой платформой 1С, к сожалению. Я догадался, что нужно написать маленький запрос в обработчик события, но я не знаю, как он будет выглядеть на языке 1С
---
Я догадался, что нужно написать маленький запрос в обработчик события, но я не знаю, как он будет выглядеть на языке 1С
Дело в том, что не зная ни конфигурации, ни даже вид формы, в которой должно происходить событие, как должен выглядеть этот код, никто другой так же не сможет сказать.
Максимум, чем смогут вам помочь - это общими советами. Но без базовых знаний синтаксиса эти советы будут совершенно бесполезны.
---
Да, вы правы. Не прикрепить скриншоты было ошибкой, надеюсь, это поможет
---
```1c
    ТекДанные = Объект.Товары.НайтиПоИдентификатору(Элементы.Товары.ТекущаяСтрока);
    Если ЗначениеЗаполнено(ТекДанные.Номенклатура) Тогда
    ТекДанные.Цена = ТекДанные.Номенклатура.Цена;
    КонецЕсли;
```

Это если у вас цена и вправду в справочнике товаров хранится.
Хотя как правило, это происходит в отдельном регистре.
---
```1c
    ТекДанные = Объект.Продукция.НайтиПоИдентификатору(Элементы.Продукция.ТекущаяСтрока);
    Если ЗначениеЗаполнено(ТекДанные.Номенклатура) Тогда
    ТекДанные.Цена = ТекДанные.Номенклатура.Цена;
    КонецЕсли;
```

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

    &НаСервереБезКонтекста
    Функция ПолучитьЦенуНаСервере(Номенклатура)
    Возврат Номенклатура.Цена
    КонецФункции
```
---
Значит, всё-таки не "продукция" он называется.
Или таблицы из формы вообще нет в объекте.
Можно заменить на
ТекДанные = Элементы.Продукция.ТекущиеДанные;
В этом случае ссылка строки будет получена непосредственно с самой формы и в ней таблица "продукция" точно будет
---
Ошибка та же в любом из случаев, но вот же дерево конфигурации, я не понимаю, что я делаю не так
---
хех -)
Таблица называется "Номенклатура"
А реквизит товара "Продукция".
Т.о. должно быть

```1c
    ТекДанные = Объект.Номенклатура.НайтиПоИдентификатору(Элементы.Номенклатура.ТекущаяСтрока);
    Если ЗначениеЗаполнено(ТекДанные.Продукция) Тогда
    ТекДанные.Цена = ТекДанные.Продукция.Цена;
    КонецЕсли;
```

Ну, или как в (8)

```1c
    ТекущиеДанные.Цена=ПолучитьЦенуНаСервере(ТекДанные.Продукция);
    &НаСервереБезКонтекста
    Функция ПолучитьЦенуНаСервере(Продукция)
    Возврат Продукция.Цена
    КонецФункции
```

Не помню точно, заберётся цена на клиенте или нет...
---
Мне кажется, я умираю(
Теперь ошибка на третьей строке(проверил дебаггером)
---
И покажи структуру конфигурации справочника номенклатуры (продукции, товара или как он там называется). По аналогии как в (10)

Так попробуй =)

```1c
    &НаКлиенте
    Процедура НоменклатураПродукцияПриИзменении(Элемент)
    ТекДанные = Объект.Номенклатура.НайтиПоИдентификатору(Элементы.Номенклатура.ТекущаяСтрока);
    Если ЗначениеЗаполнено(ТекДанные.Продукция) Тогда
    ТекДанные.Цена=ПолучитьЦенуНаСервере(ТекДанные.Продукция);
    КонецЕсли;
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПолучитьЦенуНаСервере(Продукция)
    Возврат Продукция.Цена
    КонецФункции
```
---
Огромное спасибо, это сработало!
---
а что за конфа "стулья" - может вы сами создаете конфигурацию ?
 раскройте наименование о программе.
---
это учебная версия.
вы откуда делали движения в конфигурации ?

или по какому учебнику..

есть видео курс , там преподаватель просит создавать объекты
с таким же названием , что он , чтобы легче было искать ошибки

но находятся умники , чтобы не как у всех .
а если плохо знаешь теорию , то лучше делать , как говорят

вы учитесь или хотите научиться ?
 откуда конфигурация и почему вам так захотелось сделать ?