Здравствуйте! Такой вопрос, подскажите кто знает...в документ перемещение добавил два реквизита цена и сумма ну вопрос по цене, суть в том что в запросе в ТЧ у меня отображаются только записанные данные, то есть из ниже приведенного запроса я не могу добавить номенклатуру и чтобы по умолчанию подставлялась цена ибо документ не записан....вот колдую с массивами но пока идей нет...подскажите кто знает....

```1c
    &НаСервере
    Процедура ТоварыИзменениеСервер()

    МассивНоменклатуры = Новый Массив;

    Для Каждого Стр Из Объект.Товары Цикл

    МассивНоменклатуры.Добавить(Стр.Номенклатура);

    КонецЦикла;

    Запрос = Новый Запрос;

    Запрос.Текст =

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

    Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры);

    Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);

    Результат = Запрос.Выполнить().Выгрузить();

    Для Каждого Стр Из Объект.Товары Цикл;

    КонецЦикла;

    //Для Каждого Стр Из Результат

    КонецПроцедуры
```
---
Все правильно запрос выбирает номенклатуру записанного документа.
Вам вообще не нужен теперь документ "ПеремещениеТоваровТовары". У Вас есть массив номенклатуры и регистр "ЦеныНоменклатуры".

```1c
    Запрос.Текст =

    "ВЫБРАТЬ
    | ЦеныНоменклатуры.Номенклатура,
    | ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
    | ЦеныНоменклатуры.Цена КАК Цена
    |ИЗ
    | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
    |ГДЕ
    | ПеремещениеТоваровТовары.Номенклатура В (&МассивНоменклатуры)";

    Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры);

    Результат = Запрос.Выполнить().Выгрузить();
```

Это если Регистр не периодический.
Если периодческий, то лучше использовать срезПоследних с параметрами.
---
```1c
    "ВЫБРАТЬ
    | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
    |ИЗ
    | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
    | &Дата,
    | ВидЦены = &ВидЦены
    | И Номенклатура В (&МассивНоменклатуры)) КАК ЦеныНоменклатурыСрезПоследних"
    Выборка=Запрос.Выполнить.Выбрать();
    Пока Выборка.Следующий() Цикл
    стрНайд=Объект.Товары.НайтиСтроки(Новый Структура("Номенклатура",Выборка.Номенклатура));
    Если стрНайд.Количество()>0
    стрНайд[0].Цена=Выборка.Цена;
    стрНайд[0].Сумма=стрНайд[0].Количество*Выборка.Цена;
    КонецЕсли;
    КонецЦикла;
```
---
правильно ли я понял задачу: Нужно получить цену номенклатуры? и подставить в табличную часть?
Если это так, то:
можно потом в цикле искать номенклатуру в Таблице "Результат"

```1c
    Для Каждого Стр Из Объект.Товары Цикл;
    ИскомаяСтрока = Результат.Найти(Стр.Номенклатура, "Номенклатура")
    Если ИскомаяСтрока <> неопределено Тогда
    стр.Цена = ИскомаяСтрока.Цена;
    КонецЕсли;
    КонецЦикла;
```
---
стр.Цена = ИскомаяСтрока.Це

да, все верно....но запрос выбирает всю номенклатуру после записи документа, а я добавляю номенклатуру через кнопку добавить и соответственно запросом я выбрать не могу, так как документ записан...вот как-то так)
---
Все правильно запрос выбирает номенклатуру записанного документа.
Вам вообще не нужен теперь документ "ПеремещениеТоваровТовары". У Вас есть массив номенклатуры и регистр "ЦеныНоменклатуры".

```1c
    Запрос.Текст =

    "ВЫБРАТЬ
    | ЦеныНоменклатуры.Номенклатура,
    | ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
    | ЦеныНоменклатуры.Цена КАК Цена
    |ИЗ
    | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
    |ГДЕ
    | ПеремещениеТоваровТовары.Номенклатура В (&МассивНоменклатуры)";

    Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры);

    Результат = Запрос.Выполнить().Выгрузить();
```

Это если Регистр не периодический.
Если периодческий, то лучше использовать срезПоследних с параметрами.
---
ага, я понял...спасибо....то есть я взял все цены номенклатуры с ценой и при этом выбрал только те цены, которые есть в массиве....спасибо огромное)
---
```1c
    "ВЫБРАТЬ
    | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
    |ИЗ
    | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
    | &Дата,
    | ВидЦены = &ВидЦены
    | И Номенклатура В (&МассивНоменклатуры)) КАК ЦеныНоменклатурыСрезПоследних"
    Выборка=Запрос.Выполнить.Выбрать();
    Пока Выборка.Следующий() Цикл
    стрНайд=Объект.Товары.НайтиСтроки(Новый Структура("Номенклатура",Выборка.Номенклатура));
    Если стрНайд.Количество()>0
    стрНайд[0].Цена=Выборка.Цена;
    стрНайд[0].Сумма=стрНайд[0].Количество*Выборка.Цена;
    КонецЕсли;
    КонецЦикла;
```
---
д[0].Цена=Выборка.Цена;

да тоже как вариант) спасибо) все пошло.
---
а я пошел путем немного другим и создал временную таблицу и сделал её параметром

```1c
    Запрос = Новый Запрос;

    Запрос.Текст =

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

    Запрос.УстановитьПараметр("ТаблицаНоменклатура",Объект.Товары.Выгрузить( , "Номенклатура"));

    Запрос.УстановитьПараметр("СкладОтправительНаименовние", Объект.СкладОтправитель.Наименование);
```
---
Рекомендую все таки СрезПоследних, т.к. ваш запрос вернет все установленные за разные даты цены
---
понял, спасибо.
---
Если подошел вариант Дмитрия Мишарина, то лучше используйте тот Вариант - у вас периодический регистр, и быстрее и правильней будет использовать параметры.