8.х Выборка атрибута документа и атрибута табличной части

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Anikolai, 5 окт 2009.

  1. TopicStarter Overlay
    Anikolai
    Offline

    Anikolai

    Регистрация:
    5 окт 2009
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте. Изучая 1С, столкнулся с такой проблемой: при выборке атрибутов одновременно из документа и из табличной части документа не получается прочитать данные из табличной части. Имеется документ с табличной частью "ДобычаРуды", и выбрать надо только документы за конкретную дату. Код такой:


    Код:
    Запрос2 = Новый Запрос;
    Запрос2.Текст = "ВЫБРАТЬ
    |    ВводДанныхКарьера.Смена,
    |    ВводДанныхКарьера.ДобычаРуды.(
    |        НомЭкс КАК НомЭкс,
    |        Фабрика КАК Фабрика,
    |        Склад КАК Склад
    |    )
    |ИЗ
    |    Документ.ВводДанныхКарьера КАК ВводДанныхКарьера
    |ГДЕ
    |ВводДанныхКарьера.Дата1 = &Мес";
    Запрос2.УстановитьПараметр("Мес", Мес);
    Результат2 = Запрос2.Выполнить();
    Выборка2 = Результат2.Выбрать();
    Пока Выборка2.Следующий() цикл
    если выборка2.смена="1"    тогда x=3 иначе x=4; конецесли;
    сообщить(выборка3.НомЭкс);
    
    конеццикла;
    
    К полю "Смена" обращаюсь как обычно, а вот, например, поле "НомЭкс" никак не могу достать. Если пытаюсь выбрать только табличное поле, исчезает возможность указать в условии дату(атрибут справочника).



    Это решается?
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!

    Изложим 2-а варианта, взависимоти от задачи можно использовать тот или иной вариант работы.

    1. Обработка ТЧ в цикле выборки
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |	РеализацияТоваровУслуг.Ссылка,
    |	РеализацияТоваровУслуг.Подразделение,
    |	РеализацияТоваровУслуг.Товары.(
    |		Ссылка,
    |		НомерСтроки,
    |		ЕдиницаИзмерения,
    |		ЕдиницаИзмеренияМест,
    |		Качество,
    |		Количество,
    |		КоличествоМест,
    |		Коэффициент,
    |		Номенклатура,
    |		ПроцентСкидкиНаценки,
    |		СерияНоменклатуры,
    |		СпособСписанияОстаткаТоваров,
    |		СтавкаНДС,
    |		Сумма,
    |		СуммаНДС,
    |		ХарактеристикаНоменклатуры,
    |		Цена,
    |		Склад,
    |		ПроцентАвтоматическихСкидок,
    |		УсловиеАвтоматическойСкидки,
    |		ЗначениеУсловияАвтоматическойСкидки,
    |		КлючСтроки,
    |		КлючСвязи,
    |		ЗаказПокупателя
    |	)
    |ИЗ
    |	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    |	РеализацияТоваровУслуг.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка", ПолеВвода1);
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
    
    Товары = Выборка.Товары.Выгрузить();
    // Обрабатываем табличную часть
    
    
    КонецЦикла;
    
    Т.е. при обходе выборки можно выгрузить ТЧ в переменную, и далее работать с ней по своему усмотрению

    2. Непосредственная выборка данных из ТЧ в запросе к БД

    Код:
    ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка,
    РеализацияТоваровУслуг.Подразделение,
    ВложенныйЗапрос.КоличествоЛиквида
    ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ВЫБОР
    КОГДА РеализацияТоваровУслугТовары.Количество > 2
    ТОГДА "Ускоренные продажи"
    ИНАЧЕ "Штучный отпуск товара"
    КОНЕЦ КАК КоличествоЛиквида,
    РеализацияТоваровУслугТовары.Ссылка КАК Ссылка
    ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары) КАК ВложенныйЗапрос
    ПО РеализацияТоваровУслуг.Ссылка = ВложенныйЗапрос.Ссылка
    ГДЕ
    РеализацияТоваровУслуг.Ссылка = &Ссылка
    
    т.е. в запросе выбирается два объекта, непосредственно документ и табличная часть документа, это условие контролируется в условии
    Код:
    ПО РеализацияТоваровУслуг.Ссылка = ВложенныйЗапрос.Ссылка
    
    Удачи!
  3. TopicStarter Overlay
    Anikolai
    Offline

    Anikolai

    Регистрация:
    5 окт 2009
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Спасибо, разобрался. Вы меня буквально спасли.

Поделиться этой страницей