Всем привет гении !!!
У меня документ "Ценообразование" и в нем есть ТЧ с полями "Номенклатура" и "Себестоимость"
Нужно чтоб при изменении строки "Номенклатура" поле "Себестоимость" данной Номенклатуры заполнилось.

запрос у меня такой :

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Закупки.Номенклатура КАК Номенклатура,
    | СУММА(Закупки.Себестоимость) / СУММА(Закупки.Количество) КАК СредняяСебестоимость
    |ИЗ
    | РегистрНакопления.Закупки КАК Закупки
    |ГДЕ
    |Закупки.Ссылка = &Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    | Закупки.Номенклатура";
```

как можно реализовать это ?
---
```1c
    Процедура ТЧНоменклатураИСебестоимостьПриИзменении(Элемент)
    ТекущиеДанные = ЭлементыФормы.ТЧ.ТекущиеДанные;
    Если ТекущиеДанные = Неопределено тогда возврат КонецЕсли;

    ТекущиеДанные.Себестоимость = ПолучитьСреднююЦену(ТекущиеДанные.Номенклатура);
    КонецПроцедуры

    Функция ПолучитьСреднююЦену(Номенклатура)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Закупки.Номенклатура КАК Номенклатура,
    | СУММА(Закупки.Себестоимость / Закупки.Количество) КАК СредняяСебестоимость
    |ИЗ
    | РегистрНакопления.Закупки КАК Закупки
    |ГДЕ
    | Закупки.Номенклатура = &Номенклатура
    |
    |СГРУППИРОВАТЬ ПО
    | Закупки.Номенклатура";
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    РезультатЗапроса = Запрос.Выполнить().Выбрать();
    Если РезультатЗапроса.Следующий() Тогда
    Возврат РезультатЗапроса.СредняяСебестоимость;
    Иначе
    Возврат 0;
    КонецЕсли;

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

    ТекущиеДанные.Себестоимость = ПолучитьСреднююЦену(ТекущиеДанные.Номенклатура);
    КонецПроцедуры

    Функция ПолучитьСреднююЦену(Номенклатура)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Закупки.Номенклатура КАК Номенклатура,
    | СУММА(Закупки.Себестоимость / Закупки.Количество) КАК СредняяСебестоимость
    |ИЗ
    | РегистрНакопления.Закупки КАК Закупки
    |ГДЕ
    | Закупки.Номенклатура = &Номенклатура
    |
    |СГРУППИРОВАТЬ ПО
    | Закупки.Номенклатура";
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    РезультатЗапроса = Запрос.Выполнить().Выбрать();
    Если РезультатЗапроса.Следующий() Тогда
    Возврат РезультатЗапроса.СредняяСебестоимость;
    Иначе
    Возврат 0;
    КонецЕсли;

    КонецФункции
```
---
это и есть решение ! Только вот один маленький ньюанс для других кому может быть полезным !
(9) СУММА(Закупки.Себестоимость / Закупки.Количество) КАК СредняяСебестоимость вот здесь нужна маленькая поправочка.

вот правильный вариант который у меня сработал :

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

    ТекущиеДанные.Себестоимость = ПолучитьСреднююЦену(ТекущиеДанные.Номенклатура);

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

    Функция ПолучитьСреднююЦену(Номенклатура)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Закупки.Номенклатура КАК Номенклатура,
    | СУММА(Закупки.Себестоимость) / СУММА (Закупки.Количество) КАК СредняяСебестоимость
    |ИЗ
    | РегистрНакопления.Закупки КАК Закупки
    |ГДЕ
    | Закупки.Номенклатура = &Номенклатура
    |
    |СГРУППИРОВАТЬ ПО
    | Закупки.Номенклатура";
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    РезультатЗапроса = Запрос.Выполнить().Выбрать();
    Если РезультатЗапроса.Следующий() Тогда
    Возврат РезультатЗапроса.СредняяСебестоимость;
    Иначе
    Возврат 0;
    КонецЕсли;

    КонецФункции
```

Спасибо этому человеку !!
---
Сообщение было скрыто модератором.