Внешний отчет по справочнику

Тема в разделе "1C и всё что с ней связано", создана пользователем ge4r, 29 июл 2009.

Статус темы:
Закрыта.
  1. ge4r

    ge4r Гость

    Вопрос вот в чем:
    есть справочник контрагенты,ему подчинен справочник договора,и в свою очередь ему подчинен справочник условия договора аренды...
    вся информация в отчете берется из "условия договора аренды"...и теперь инфо для одного столбца должна браться из "контрагенты"
    что делаю я:
    в запрос добавляю строку

    Код (Text):
    Контрагент = Справочник.Контрагенты.Наименование
    и в таблице в нужной ячейке прописываю Запрос.Контрагент

    но при выводе отчета ячейка контрагент пуста...в чем косяк?

    вот весь код:

    Код (Text):
    //*******************************************
    Процедура Проверить_Дату() //Проверка заданного периода
    Если НачДата>КонДата Тогда
    Предупреждение("Неправильно задан период формирования отчета!"+РазделительСтрок+
    "Дата начала больше даты окончания периода.");
    КонецЕсли;
    КонецПроцедуры

    Процедура Сформировать()
    Перем Запрос, Таб, ТекстЗапроса, Итер, Спр;
    Проверить_Дату();  
    Запрос = СоздатьОбъект("Запрос");   //Запрос к справочнику
    ТекстЗапроса = "
    |Контрагент = Справочник.Контрагенты.Наименование;
    |Аренда = Справочник.УсловияДоговораАренды.ТекущийЭлемент;
    |ТорговаяТочка = Справочник.УсловияДоговораАренды.ТорговаяТочка;
    |Площадь = Справочник.УсловияДоговораАренды.Площадь;
    |СуммаОплаты = Справочник.УсловияДоговораАренды.СуммаОплаты;
    |ДатаНачала = Справочник.УсловияДоговораАренды.ДатаНачалаДействия;
    |ДатаКонца = Справочник.УсловияДоговораАренды.ДатаКонцаОплаты;
    |Комментарий = Справочник.УсловияДоговораАренды.Комментарий;
    |Группировка ТорговаяТочка Упорядочить по ТорговаяТочка.Наименование без групп;
    |";
    Спр = СоздатьОбъект("Справочник.УсловияДоговораАренды");
    Запрос.Выполнить(ТекстЗапроса);
    Таб = СоздатьОбъект("Таблица");
    Таб.ВывестиСекцию ("Шапка");
    Итер = 0;
    Пока Запрос.Группировка(1) = 1 Цикл
    Если (НачДата<= Запрос.ДатаНачала) И (Запрос.ДатаКонца<=КонДата) Тогда  //Вывод договоров соответствующих периоду
    Таб.ВывестиСекцию("Строка");
    Итер = Итер + 1 ;
    КонецЕсли;
    КонецЦикла;
    Таб.ТолькоПросмотр(1);
    Таб.Опции(0,0,0,0);
    Таб.ПараметрыСтраницы(2,,,,,,,,,1);
    Если Итер > 0 Тогда
    Таб.Показать();
    Иначе
    Предупреждение ("Нет договоров на данный период");
    КонецЕсли;

    КонецПроцедуры
     
  2. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    во-первых можно отладчиком посмотреть содержит не пустое ли значение у Запрос.Контрагент. скорее всего пустое. тогда хотя бы посмотрнеть тип. но мне кажется строчка неверно добавлена в запрос.
     
  3. ge4r

    ge4r Гость

    а чем неверно такое добавление в запрос?
     
  4. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    сейчас с ходу не скажу - эт посмотреть в програме надо. но кое что в коде вызывает у мя неуверенность... отладчиком проверено?
    P.S. еще можно воспользоваться конструктором запросов...
     
  5. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Непонятно, с какой радости значение "контрагент" будет попадать в запрос
    Навскидку, в запросе его нужно обозначить как владельца договора аренды или что-то в этом роде
     
  6. Allexei

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    Мне кажется что лутше сделать что то типа запроса в запросе. Как я понимаю связь идет примерно такая Контрагент-> Договор->Торговая точка. Что мешает сделать запрос по контрагентам в этом запросе запрос по договорам с тем условием что договор принадлежит текущему контрагенту а в потом внутри запроса по договарам запрос по торговым точкам связана с текущим договором . В результате будет таблице контрогентов у которых есть договора у которых есть торговые точи.
     
  7. has

    has Гость

    а может попробовать вместо Контрагент = Справочник.Контрагенты.Наименование написать так?

    Контрагент = Справочник.УсловияДоговораАренды.Владелец.Владелец.Наименование;
     
  8. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Владельцев н7адо обозначить в условиях, типа

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


    А вот это точно пошлет - итак обращение к владельцу в запросе идет через условие в основном, ежли хочешь как ты написал - тогда данное условие должно обязательно участвовать в группировке и точек все-таки максимум три насколько я помню
     
  9. ge4r

    ge4r Гость

    Контрагент = Справочник.УсловияДоговораАренды.Владелец.Владелец.Наименование;
    нормально работает,спасибо
     
  10. ge4r

    ge4r Гость

    разобрался [deleted]
     
Загрузка...
Статус темы:
Закрыта.

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