• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

ge4r

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

Код:
Контрагент = Справочник.Контрагенты.Наименование

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

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

вот весь код:

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

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

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

KiR

во-первых можно отладчиком посмотреть содержит не пустое ли значение у Запрос.Контрагент. скорее всего пустое. тогда хотя бы посмотрнеть тип. но мне кажется строчка неверно добавлена в запрос.
 
G

ge4r

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

KiR

сейчас с ходу не скажу - эт посмотреть в програме надо. но кое что в коде вызывает у мя неуверенность... отладчиком проверено?
P.S. еще можно воспользоваться конструктором запросов...
 
V

vbs

а чем неверно такое добавление в запрос?
Непонятно, с какой радости значение "контрагент" будет попадать в запрос
Навскидку, в запросе его нужно обозначить как владельца договора аренды или что-то в этом роде
 
A

Allexei

Мне кажется что лутше сделать что то типа запроса в запросе. Как я понимаю связь идет примерно такая Контрагент-> Договор->Торговая точка. Что мешает сделать запрос по контрагентам в этом запросе запрос по договорам с тем условием что договор принадлежит текущему контрагенту а в потом внутри запроса по договарам запрос по торговым точкам связана с текущим договором . В результате будет таблице контрогентов у которых есть договора у которых есть торговые точи.
 
H

has

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

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

puh14

Владельцев н7адо обозначить в условиях, типа

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


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

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

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

ge4r

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!