Выборка реквизита номенклатуры в отчете

1. Nikitich_NS 01.11.14 17:26 Сейчас в теме
Помогите пожалуйста по такому вопросу:
УТ11, документ РеализацияТоваровУслуг. Сделал ему комманду печати товарного чека. Подцепил шаблон, всё как надо. Информацию из документа (номенклатура, количество, серийник) берёт исправно. Но в гарантийнике помимо этого должно выводить срок гарантии по каждой позиции номенклатуры. Данные о сроке гарантии хранятся в самой номенклатуре (добавил дополнительный реквизит).
В общем не могу справиться с выдёргиванием в гарантийник этого самого реквизита со сроком гарантии. Вот ниже код процедуры вывода гарантийника, как заставить процедуру забирать в документ то, что мне надо???

Процедура ГарантийныйТалон(ТабДок, Ссылка) Экспорт
    //{{_КОНСТРУКТОР_ПЕЧАТИ(ГарантийныйТалон)

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

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьЗапасыШапка = Макет.ПолучитьОбласть("ЗапасыШапка");
    ОбластьЗапасы = Макет.ПолучитьОбласть("Запасы");
    Подвал = Макет.ПолучитьОбласть("Подвал");
    ТабДок.Очистить();

    ВставлятьРазделительСтраниц = Ложь;
    Пока Выборка.Следующий() Цикл
        Если ВставлятьРазделительСтраниц Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;

        ОбластьЗаголовок.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(ОбластьЗаголовок);

        Шапка.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Шапка, Выборка.Уровень());

        ТабДок.Вывести(ОбластьЗапасыШапка);
        ВыборкаТовары = Выборка.Товары.Выбрать();
        Пока ВыборкаТовары.Следующий() Цикл
            ОбластьЗапасы.Параметры.Заполнить(ВыборкаТовары);
            ТабДок.Вывести(ОбластьЗапасы, ВыборкаТовары.Уровень());
        КонецЦикла;

        Подвал.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Подвал);

        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    //}}

КонецПроцедуры
Показать


Реквизит "Примечание" - это для серийного номера.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dj_serega 393 01.11.14 22:18 Сейчас в теме
(1) Nikitich_NS, ну так оно в ТЧ номенклатуры хранится вроде.
3. Nikitich_NS 03.11.14 12:43 Сейчас в теме
Я тут покумекал, почитал и начал смотреть в сторону соединительных запросов. Видимо каши мало ел, раз сразу об этом не подумал(( Получилось у меня вот что:

Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Дата,
| РеализацияТоваровУслуг.Номер,
| РеализацияТоваровУслуг.Товары.(
| НомерСтроки,
| Номенклатура,
| Количество,
| Примечание
| ),
| Номенклатура.Гарантия КАК Гарантия
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО РеализацияТоваровУслуг.Товары.Номенклатура = Номенклатура.Ссылка
|ГДЕ
| РеализацияТоваровУслуг.Ссылка В (&Ссылка)";



Но конструкция всё одно не работает, говорит якобы нельзя обращаться к табличной части (РеализацияТоваровУслуг.Товары.Номенклатура в строке ПО).
Опять в ступоре, помогите, как ассоциировать элемент номенклатуры в справочнике с элементом табличной части документа?
4. LTrigubovich 03.11.14 16:02 Сейчас в теме
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслугНоменклатура.Ссылка.Дата,
| РеализацияТоваровУслугНоменклатура.Ссылка.Номер,
| РеализацияТоваровУслугНоменклатура.НомерСтроки,
| РеализацияТоваровУслугНоменклатура.Номенклатура,
| РеализацияТоваровУслугНоменклатура.Номенклатура.Гарантия КАК Гарантия,
| РеализацияТоваровУслугНоменклатура.Количество,
| РеализацияТоваровУслугНоменклатура.Примечание
|ИЗ
| Документ.РеализацияТоваровУслуг.Номенклатура КАК РеализацияТоваровУслугНоменклатура
|ГДЕ
| РеализацияТоваровУслугНоменклатура.Ссылка = &Ссылка";

Запрос.Параметры.Вставить("Ссылка", Ссылка);

Дальше без изменений.
А вообще, проще такие запросы рисовать в конструкторе.
Там меньше шансов "накосячить" или запутаться.
6. Nikitich_NS 03.11.14 16:28 Сейчас в теме
(4) LTrigubovich, что бы обратиться через документ к гарантии нужно что бы присутствовал реквизит табличной части документа с сылкой, который я не могу правильно создать (соседняя тема). Именно по этой причине я и пытался объединить таблицы в запросе.
Ваш способ не сработал, извините((
5. LTrigubovich 03.11.14 16:26 Сейчас в теме
Прошу прощения!
При моем варианте придется все же подправить печать.
Поскольку в выборку попадут данные строк таб.части с гарантией.
Поэтому в "выборке" уже не будет таблицы "Товары".

Но принцип я полагаю Вы поняли.
Остальное - сами напишете:)
7. Nikitich_NS 03.11.14 16:30 Сейчас в теме
(5) LTrigubovich, а второе Ваше сообщение меня совсем запутало((( Я так до конца и не понял, какую конструкцию запроса Вы предложили
8. Nikitich_NS 03.11.14 16:40 Сейчас в теме
Всё, разобрался! Спасибо товарищу LTrigubovich!
Вот полный код запроса для тех, у кого похожие проблемы:

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот