Вход | Регистрация
 

Передача таблицы документа в запрос для выбоки когда документ ещё не записан

Передача таблицы документа в запрос для выбоки когда документ ещё не записан
Я
   falselight
 
08.06.19 - 10:49
При изменении поля на форме документа, выполняется запрос. В который передается табличная часть документа
как временная таблица. Берется по ссылке документа. Но если документ сделан копированием то у него нет ссылки.
Как передать таблицу документа в запрос, если он ещё не записан?
 
 
   Сияющий в темноте
 
1 - 08.06.19 - 10:59
зайти на сервер с контекстом,там выгрузить в таблицу значений и передать параметром в запрос.

по ссылке ни в коем случае нельзя,так как будет значение табличной части,сохраненное в базе.
   falselight
 
2 - 08.06.19 - 11:49
(1) Сейчас работает так.
Подскажите пожалуйста как нужно?


//

&НаСервере
Процедура УстановитьЦенуСравненияНаСервере()
    //

    ДокОбъект = РеквизитФормыВЗначение("Объект");
    Если Не ЗначениеЗаполнено(ДокОбъект.Ссылка) Тогда
        ДокОбъект.Записать();
    КонецЕсли;
    //

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

        |ВЫБРАТЬ
        |    ВТ_ЗаказПоставщику.Номенклатура КАК Номенклатура,
        |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
        |    ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены
        |ИЗ
        |    ВТ_ЗаказПоставщику КАК ВТ_ЗаказПоставщику
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
        |                &Период,
        |                ВидЦены = &ВидЦены
        |                    И Номенклатура В
        |                        (ВЫБРАТЬ
        |                            ЗаказПоставщику.Номенклатура
        |                        ИЗ
        |                            ВТ_ЗаказПоставщику КАК ЗаказПоставщику)) КАК ЦеныНоменклатурыСрезПоследних
        |        ПО ВТ_ЗаказПоставщику.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
        |        И  ВТ_ЗаказПоставщику.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика";
    Запрос.УстановитьПараметр("Период",  ТекущаяДата());
    Запрос.УстановитьПараметр("Ссылка",  ДокОбъект.Ссылка);
    Запрос.УстановитьПараметр("ВидЦены", Объект.ДополнительнаяЦена);
    Рез = Запрос.Выполнить();
    Если Не Рез.Пустой() Тогда
   МимохожийОднако
 
3 - 08.06.19 - 12:27
(2) см (1)
ЗЫ. Как в армии.
   falselight
 
4 - 08.06.19 - 12:31
Вот я её выгрузил в таблицу значений

ДокОбъект.Товары.Выгрузить()

Подскажите пожалуйста по коду как передать её в запрос
   falselight
 
5 - 08.06.19 - 12:37
Так верно???

&НаСервере
Процедура УстановитьЦенуСравненияНаСервере()
    //

    ДокОбъект = РеквизитФормыВЗначение("Объект");
    //

    Запрос       = Новый Запрос;
    Запрос.Текст = "
        |ВЫБРАТЬ
        |    ТабличнаяЧастьЗаказа.Номенклатура   КАК Номенклатура,
        |    ТабличнаяЧастьЗаказа.Характеристика КАК Характеристика
        |ПОМЕСТИТЬ ВТ_ЗаказПоставщику
        |ИЗ
        |    &ТабличнаяЧастьЗаказа КАК ТабличнаяЧастьЗаказа
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    ВТ_ЗаказПоставщику.Номенклатура КАК Номенклатура,
        |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
        |    ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены
        |ИЗ
        |    ВТ_ЗаказПоставщику КАК ВТ_ЗаказПоставщику
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
        |                &Период,
        |                ВидЦены = &ВидЦены
        |                    И Номенклатура В
        |                        (ВЫБРАТЬ
        |                            ЗаказПоставщику.Номенклатура
        |                        ИЗ
        |                            ВТ_ЗаказПоставщику КАК ЗаказПоставщику)) КАК ЦеныНоменклатурыСрезПоследних
        |        ПО ВТ_ЗаказПоставщику.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
        |        И  ВТ_ЗаказПоставщику.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика";
    Запрос.УстановитьПараметр("Период",               ТекущаяДата());
    Запрос.УстановитьПараметр("ТабличнаяЧастьЗаказа", ДокОбъект.Товары.Выгрузить());
    Запрос.УстановитьПараметр("ВидЦены",               Объект.ДополнительнаяЦена);
    Рез = Запрос.Выполнить();
   Сияющий в темноте
 
6 - 08.06.19 - 15:04
да,именно так
   hhhh
 
7 - 09.06.19 - 09:20
(5) вот это лишнее
   ДокОбъект = РеквизитФормыВЗначение("Объект");


пиши проще

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.