• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

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

  • Автор темы ge4r
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

ge4r

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

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

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

вот весь код:

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

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

КонецПроцедуры
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#2
во-первых можно отладчиком посмотреть содержит не пустое ли значение у Запрос.Контрагент. скорее всего пустое. тогда хотя бы посмотрнеть тип. но мне кажется строчка неверно добавлена в запрос.
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#4
сейчас с ходу не скажу - эт посмотреть в програме надо. но кое что в коде вызывает у мя неуверенность... отладчиком проверено?
P.S. еще можно воспользоваться конструктором запросов...
 

vbs

Well-known member
18.02.2007
1 708
1
#5
а чем неверно такое добавление в запрос?
Непонятно, с какой радости значение "контрагент" будет попадать в запрос
Навскидку, в запросе его нужно обозначить как владельца договора аренды или что-то в этом роде
 

Allexei

Well-known member
02.05.2008
322
1
#6
Мне кажется что лутше сделать что то типа запроса в запросе. Как я понимаю связь идет примерно такая Контрагент-> Договор->Торговая точка. Что мешает сделать запрос по контрагентам в этом запросе запрос по договорам с тем условием что договор принадлежит текущему контрагенту а в потом внутри запроса по договарам запрос по торговым точкам связана с текущим договором . В результате будет таблице контрогентов у которых есть договора у которых есть торговые точи.
 
H
#7
а может попробовать вместо Контрагент = Справочник.Контрагенты.Наименование написать так?

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

puh14

Well-known member
11.07.2008
1 412
0
#8
Владельцев н7адо обозначить в условиях, типа

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


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

Контрагент = Справочник.УсловияДоговораАренды.Владелец.Владелец.Наименование;
А вот это точно пошлет - итак обращение к владельцу в запросе идет через условие в основном, ежли хочешь как ты написал - тогда данное условие должно обязательно участвовать в группировке и точек все-таки максимум три насколько я помню
 
G

ge4r

#9
Контрагент = Справочник.УсловияДоговораАренды.Владелец.Владелец.Наименование;
нормально работает,спасибо
 
Статус
Закрыто для дальнейших ответов.