7.7 табличная часть документа

Тема в разделе "Типовые решения "1С:Предприятие 7.7"", создана пользователем Nik_T, 15 июл 2007.

  1. TopicStarter Overlay
    Nik_T
    Offline

    Nik_T

    Регистрация:
    11 июл 2007
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Конфигурация Торговля +Склад
    Простейший отчет сделанный с помощью конструктора.

    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Док = Документ.Реализация.ТекущийДокумент;
    |Дата = Документ.Реализация.ДатаДок;
    |Номенклатура = Документ.Реализация.Номенклатура;
    |Контрагент = Документ.Реализация.Контрагент;
    |Количество = Документ.Реализация.Количество;
    |Валюта = Документ.Реализация.Валюта;
    |Сумма = Документ.Реализация.Сумма;

    |Функция СуммаСумма = Сумма(Сумма);
    |Функция КоличествоСумма = Сумма(Количество);
    |Группировка Документ;
    |Группировка Контрагент без групп;
    |Группировка Номенклатура без групп;
    |Условие(Номенклатура в ВыбНоменклатура);
    |"//}}ЗАПРОС

    Получаем доступ к реквизитам как шапки документа, так и табличной части.
    Кроме того, получаем возможность обратиться к документу-основанию(например ЗаявкиПокупателя) по крайней мере таким путем:

    Если ПустоеЗначение(Запрос.Док.ДокОснование) = 0 Тогда
    Если Запрос.Док.ДокОснование.Вид() ="ЗаявкаПокупателя" Тогда
    ДокОснование =СоздатьОбъект("Документ.ЗаявкаПокупателя");
    ДокОснование.НайтиДокумент(Запрос.Док.ДокОснование);
    И вот здесь из табличной части документа значение получить уже не удается.Из шапки, пожалуйста.
    Например:ПечДатаОплаты = ДокОснование.ДатаОплаты;
    Из табличной части-нет.
    Конкретно речь идет о реквизите ПроцентСкидки.Выдает 0.Там, понятно, не 0.
    Может кто знает, в чем дело?
  2. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    А какая версия конфигурации? Что то я в ТиС 9.2 не увидел такого реквизита табличной части...
  3. landay
    Offline

    landay Опытный в 1С

    Регистрация:
    23 янв 2007
    Сообщения:
    103
    Симпатии:
    0
    Баллы:
    26
    Так надо выборку таб. части открывать.... тогда и будет доступ до нее
  4. TopicStarter Overlay
    Nik_T
    Offline

    Nik_T

    Регистрация:
    11 июл 2007
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    ТиС 9.2.Реквизит дописали.

    Спасибо.На примере пояснить не можешь?
  5. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Я так пологаю, Landay говорит о методе ВыбратьСтроки().
    Nik_T код, где обращение к табличной части в студию.
  6. landay
    Offline

    landay Опытный в 1С

    Регистрация:
    23 янв 2007
    Сообщения:
    103
    Симпатии:
    0
    Баллы:
    26
    Да
    ВыбратьСтроки()
    Пока ПолучитьСтроку() = 1 Цикл
    КонецЦикла
  7. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Также можно в самом запросе указать:
    |ПроцентСкидки = Документ.Реализация.ДокОснование.ПроцентСкидки;
    А потом обращаться к этому реквизиту
    "Запрос.ПроцентСкидки".
    Только необходимо либо по нему выборку сделать, для перебора строк, либо функцию, для обобщения результата.
  8. TopicStarter Overlay
    Nik_T
    Offline

    Nik_T

    Регистрация:
    11 июл 2007
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Большое всем спасибо.
    Данные появились.Однако все же любопытная ситуация.Например в Реализации есть поле ПроцентСкидки, и конструкция:
    |ПроцентСкидки = Документ.Реализация.ПроцентСкидки;
    выводит данные, а если выводить это поле из другого документа через ДокОснование:
    |ПроцентСкидки = Документ.Реализация.ДокОснование.ПроцентСкидки;

    тогда необходимо выборку делать.
  9. TopicStarter Overlay
    Nik_T
    Offline

    Nik_T

    Регистрация:
    11 июл 2007
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Пока ехал до работы, все понял.
    В случае: |
    ПроцентСкидки = Документ.Реализация.ПроцентСкидки;

    Строки документа со скидкой раскручиваются здесь:
    Пока Запрос.Группировка(1) = 1 Цикл
    Пока Запрос.Группировка(2) = 1 Цикл
    Пока Запрос.Группировка(3) = 1 Цикл
    Если идем дальше:
    |ПроцентСкидки = Документ.Реализация.ДокОснование.ПроцентСкидки; ,
    тогда строки этого документа надо перебирать еще одним циклом.

    Огромное спасибо за помощь!!
  10. TopicStarter Overlay
    Nik_T
    Offline

    Nik_T

    Регистрация:
    11 июл 2007
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Спасибо за помощь.
    Уже наверное не актуально, но раз просил, то вот обращение:
    Пока Запрос.Группировка(1) = 1 Цикл
    Пока Запрос.Группировка(2) = 1 Цикл
    Пока Запрос.Группировка(3) = 1 Цикл
    ПечДок =Запрос.Док;
    ПечДата =Запрос.Дата;
    ПечНом=Запрос.Номенклатура;
    ПечСвой=Запрос.Свойство

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