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

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



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

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

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

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

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


пиши проще

   Запрос.УстановитьПараметр("ТабличнаяЧастьЗаказа", Объект.Товары.Выгрузить());
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший