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

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

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

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

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

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

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

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

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

[/code]

PS
Реквизит "Примечание" - это для серийного номера.
1 vicof
 
01.11.14
17:58
|    РеализацияТоваровУслуг.Товары.(
    |        НомерСтроки,
    |        Номенклатура,
    |        Номенклатура.СрокГарантии,
    |        Количество,
2 Nikitich_NS
 
01.11.14
18:08
(1) Не помогает к сожалению((( Может для Вашего метода решения нужно добавить поле гарантии в документ? Ибо его там нету, у меня гарантия редактируется непосредственно в карточке объекта номенклатуры...
Если нужно добавить в документ соответствующее поле - так же прошу помощи в алгоритме действий, уже пытался это сделать ранее и потерпел неудачу((
3 КонецЕсли
 
01.11.14
18:16
|    РеализацияТоваровУслуг.Товары.(
    |        НомерСтроки,
    |        Номенклатура,
    |        Номенклатура."(добавил дополнительный реквизит)" как Примечание,
    |        Количество,
4 Nikitich_NS
 
02.11.14
14:40
(3)
[code]
{Документ.РеализацияТоваровУслуг.МодульМенеджера(12579)}: Ошибка при вызове метода контекста (Выполнить)
    Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(7, 16)}: Ожидается выражение ","
Номенклатура.<<?>>"Гарантия" КАК Гарантия,
[/code]

да и мне не кажется что этот вариант конструктивно отличается от первого варианта...
5 Mankubus
 
02.11.14
17:15
"ВЫБРАТЬ
    |    РеализацияТоваровУслуг.Ссылка.Дата,
    |    РеализацияТоваровУслуг.Ссылка.Номер,
    |    РеализацияТоваровУслуг.НомерСтроки,
    |    РеализацияТоваровУслуг.Номенклатура,
    |    РеализацияТоваровУслуг.Количество,
    |    РеализацияТоваровУслуг.Примечание
    |  
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
    |ГДЕ
    |    РеализацияТоваровУслуг.Ссылка В (&Ссылка)";
6 Mankubus
 
02.11.14
17:17
+(5) |РеализацияТоваровУслуг.Номенклатура.Гарантия,
забыл
7 КонецЕсли
 
02.11.14
18:04
Вообще тут трудный случай
8 Nikitich_NS
 
03.11.14
09:18
Если бы это был SQL я бы выбрал так:

SELECT Номенклатура.Гарантия FROM Номенклатура, РеализацияТоваровУслуг WHERE Номенклатура.Код=РеализацияТоваровУслуг.Товары.Код

Но в выборках 1с я к сожалению не силён((( Помогите пожалуйста!
9 Nikitich_NS
 
03.11.14
12:41
Я тут покумекал, почитал и начал смотреть в сторону соединительных запросов. Видимо каши мало ел, раз сразу об этом не подумал(( Получилось у меня вот что:

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



Но конструкция всё одно не работает, говорит якобы нельзя обращаться к табличной части (РеализацияТоваровУслуг.Товары.Номенклатура в строке ПО).
Опять в ступоре, помогите, как ассоциировать элемент номенклатуры в справочнике с элементом табличной части документа?
Основная теорема систематики: Новые системы плодят новые проблемы.