Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 апр 2024, 10:45

ТаблицаЗначений в запросе к табличной части документа основания

Автор Вадим Ф, 25 июл 2018, 15:17

0 Пользователей и 1 гость просматривают эту тему.

Вадим Ф

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



Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
    |ГрузовыеОтправления.ДокументОснование.Услуги.Номенклатура КАК Номенклатура
|ИЗ
| Документ.ГрузовыеОтправления КАК ГрузовыеОтправления";


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

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

НоваяСтрока = Услуги.Добавить();
НоваяСтрока.Номенклатура               = ВыборкаДетальныеЗаписи.Номенклатура;

КонецЦикла;



Задача: нужно чтобы в табличную часть документа РеализацияТовараИУслуг добавлялась табличная часть документа основания.Сейчас пытаюсь добавить хотя бы номенклатуру.

Спасибо)

AIFrame

Эта фигня вообще в одну строку решается.
Услуги.ЗагрузитьКолонку(ДокументОснование.Услуги.Выгрузить(,"Номенклатура").ВыгрузитьКолонку("Номенклатура"), "Номенклатура");

Вадим Ф

Цитата: AIFrame от 25 июл 2018, 15:26
Эта фигня вообще в одну строку решается.
Услуги.ЗагрузитьКолонку(ДокументОснование.Услуги.Выгрузить(,"Номенклатура").ВыгрузитьКолонку("Номенклатура"), "Номенклатура");

Спасибо вам большое, но если честно не совсем понял...(

LexaK


Услуги.ЗагрузитьКолонку(ДокументОснование.Услуги.Выгрузить(,"Номенклатура").ВыгрузитьКолонку("Номенклатура"), "Номенклатура");

бред какой-то.
наверно это имелось ввиду

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


Вадим Ф,
а вам немного запрос надо поправить

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

   
    //РезультатЗапроса = Запрос.Выполнить();
   
    //ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    //Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    //    НоваяСтрока = Услуги.Добавить();
    //    НоваяСтрока.Номенклатура               = ВыборкаДетальныеЗаписи.Номенклатура;
    //КонецЦикла;

    //можно все проще записать, одной командой
    Услуги.Загрузить(Запрос.Выполнить().Выгрузить());


если помогло нажмите: Спасибо!

Sy4a

Ну если по полочкам разложить то
ТЗ=ДокументОснование.Услуги.Выгрузить() // выгружает в таблицу значения (ТЗ) таблицу вашего документа основания
Услуги.загрузить(ТЗ) // загружает в вашу таблицу Услуги Таблицу значений ТЗ.
Короче если вы внутри своего документа код пишите то не нужен вам запрос. И смотрите в Синтикс-помощнике эти команды (Выгузить, выгрузитьКолонку, загрузить, загрузитьКолонку) для таблицы значения.


Вадим Ф

Цитата: Sy4a от 25 июл 2018, 16:12
Ну если по полочкам разложить то
ТЗ=ДокументОснование.Услуги.Выгрузить() // выгружает в таблицу значения (ТЗ) таблицу вашего документа основания
Услуги.загрузить(ТЗ) // загружает в вашу таблицу Услуги Таблицу значений ТЗ.
Короче если вы внутри своего документа код пишите то не нужен вам запрос. И смотрите в Синтикс-помощнике эти команды (Выгузить, выгрузитьКолонку, загрузить, загрузитьКолонку) для таблицы значения.



Спасибо большое, чудесный вариант. Но только он мне не подойдет, так как некоторые колонки мне нужно будет заполнять уже с текущего документа, а не с документа основания.

Добавлено: 25 июл 2018, 16:32


Цитата: LexaK от 25 июл 2018, 16:11

Услуги.ЗагрузитьКолонку(ДокументОснование.Услуги.Выгрузить(,"Номенклатура").ВыгрузитьКолонку("Номенклатура"), "Номенклатура");

бред какой-то.
наверно это имелось ввиду

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


Вадим Ф,
а вам немного запрос надо поправить

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

   
    //РезультатЗапроса = Запрос.Выполнить();
   
    //ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    //Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    //    НоваяСтрока = Услуги.Добавить();
    //    НоваяСтрока.Номенклатура               = ВыборкаДетальныеЗаписи.Номенклатура;
    //КонецЦикла;

    //можно все проще записать, одной командой
    Услуги.Загрузить(Запрос.Выполнить().Выгрузить());




Спасибо вам большое. Сейчас буду пробовать.

Sy4a

Цитата: Вадим Ф от 25 июл 2018, 16:32Спасибо большое, чудесный вариант. Но только он мне не подойдет, так как некоторые колонки мне нужно будет заполнять уже с текущего документа, а не с документа основания.
ТЗ.Колонки.Удалить("Номенклатура"); // удаляет колонку номенклатура из таблицы ТЗ. а потом без этих колонок загружаете. или как вам писал AIFrame выше можете просто нужные колонки повыгружать в вашу таблицу значений.
Короче дело ваше, просто я категорически против использования запросов на получения данных от документа который можно получить через реквизит, в вашем случае "ДокументОснование".



Вадим Ф

Цитата: Sy4a от 25 июл 2018, 16:39
Цитата: Вадим Ф от 25 июл 2018, 16:32Спасибо большое, чудесный вариант. Но только он мне не подойдет, так как некоторые колонки мне нужно будет заполнять уже с текущего документа, а не с документа основания.
ТЗ.Колонки.Удалить("Номенклатура"); // удаляет колонку номенклатура из таблицы ТЗ. а потом без этих колонок загружаете. или как вам писал AIFrame выше можете просто нужные колонки повыгружать в вашу таблицу значений.
Короче дело ваше, просто я категорически против использования запросов на получения данных от документа который можно получить через реквизит, в вашем случае "ДокументОснование".






Если честно, даже смешно.
Это так просто... нужно читать литературу.
Ваша правда, а остальные буду добавлять как писал AIFrame или LexaK.

Спасибо всем большое.

AIFrame

Цитата: LexaK от 25 июл 2018, 16:11бред какой-то.
наверно это имелось ввиду
Не проверял, от типизации зависит.
Не все методы инстанса таблицы значений доступны в табличной части метаданных. И наоборот.
Поэтому иногда приходится выгружать\загружать.
Например
ТЧ_Выбрано = Данные.Выгрузить(, "Выбрано");
ТЧ_Выбрано.ЗаполнитьЗначения(Истина, "Выбрано");
Данные.ЗагрузитьКолонку(ТЧ_Выбрано.ВыгрузитьКолонку("Выбрано"), "Выбрано");



Вадим Ф

Ребята спасибо, сделал все получилось.

Только еще один вопрос.
Колонка которая мне нужна вставляется, она содержит число, которое должно пересчитываться и в итоге выходить сумма.

Только это число просто вставляется, не влияет на сумму. Только когда я руками изменю, тогда сумма меняется.

Подскажите, если не трудно... куда копать?


Добавлено: 26 июл 2018, 14:12


Вот изображение

Похожие темы (5)

Рейтинг@Mail.ru

Поиск