Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Создание отчета по справочнику  (Прочитано 48062 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
ge4r
Участник

ru
Offline Offline

« : 17-07-2009 09:48 » 

Добрый день.
проблема следующая:
есть подчиненный справочник УсловияДоговораАренды в котором содержится инфо о имени арендатора,арендуемой точке,ее площади,сумме оплаты,начале и конце срока.
по этому справочнику нужно создать отчет...
таблица отчета должна содержать те же столбцы что и поля в справочнике

вот код

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

    Запрос.Выполнить(ТекстЗапроса);

Таб = СоздатьОбъект("Таблица");
Таб.ВывестиСекцию ("Шапка");
Таб.ВывестиСекцию ("Строка")
    Таб.Показать();


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


Сначала выполню запрос к нужному справочнику...а вот как потом все это перенести в таблицу?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 17-07-2009 10:18 » 

Таблица - имеется в виду печатная форма?
Код:
Пока Запрос.Группировка() Цикл
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Только боюсь запрос в том виде, как он написан, не выполниться...
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #2 : 17-07-2009 10:23 » 

да,имеется в виду печатная форма...сейчас попробую
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #3 : 17-07-2009 10:26 » 

у меня еще вопрос назрел..меняю в конфигураторе диалоговое окно,сохраняю отчет,но при запуске в обычном режиме мне все равно выдает окно без тех изменений,которые я в носил...возможно глупый вопрос,но знаком с 1с всего неделю ...)
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #4 : 17-07-2009 10:37 » 

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

Таб = СоздатьОбъект("Таблица");
Таб.ВывестиСекцию ("Шапка");
Пока Запрос.Группировка(1) = 1 Цикл
Таб.ВывестиСекцию("Строка")
КонецЦикла;
    Таб.Показать();


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


выдает ошибки:
Запрос = СоздатьОбъект("Запрос");     <<?>>.//Запрос к справочнику
{D:\Базы\nikel20090717\Условия договора аренды.ert(4)}: Неопознанный оператор
Пока Запрос<<?>>.Группировка(1) = 1 Цикл
{D:\Базы\nikel20090717\Условия договора аренды.ert(19)}: Переменная не определена (Запрос)
Таб<<?>>.ВывестиСекцию("Строка")
{D:\Базы\nikel20090717\Условия договора аренды.ert(20)}: Переменная не определена (Таб)
Таб<<?>>.Показать();
{D:\Базы\nikel20090717\Условия договора аренды.ert(22)}: Переменная не определена (Таб)
Таб.Показать();<<?>>

не пойму, почему пишет ,что переменные не определены....
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #5 : 17-07-2009 10:40 » 

оу,нашел косяк)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 17-07-2009 10:46 » 

Отчет внешний? В режиме предприятия нужно обязательно закрыть окно отчета и открыть снова, иначе в памяти остается старая версия, с которой и продолжаешь работать.

Исправлять ошибки всегда нужно начинать с первой. У тебя в строке определения переменной Запрос синтаксическая ошибка (лишня точка перед комментарием). Исправишь эту ошибку - и переменная будет уже определена
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #7 : 17-07-2009 10:48 » 

да,точку я нашел....)

Код:
Пока Запрос.Группировка() Цикл
Таб.ВывестиСекцию("Строка");
КонецЦикла;
а так действительно форма не заполняется...
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #8 : 17-07-2009 11:01 » 

вот отчет...

* Условия договора аренды.ert (45 Кб - загружено 899 раз.)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 17-07-2009 11:26 » 

Перенес группировку в конец,
поменял реквизит запроса Аренда:
Аренда = Справочник.УсловияДоговораАренды.ТекущийЭлемент;
исправил таблицу вывода (в ячейках не надо ставить символы "<" и ">" - надо в совйствах ячейки указать Тип - Выражение)
У меня работает

* Условия договора аренды.ert (8.5 Кб - загружено 1047 раз.)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 17-07-2009 11:28 » 

Запрос.Группировка() используется когда в запросе присутствует ключевая фраза "Без итогов", в противном случае правильно использовать вложенные циклы Запрос.Группировка(<Номер группировки>)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 17-07-2009 11:31 » 

А, еще - простую ошибку в выбоде таблицы оставил умышленно Ага
Разбирайся как исправить...
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #12 : 17-07-2009 11:38 » 

ошибка я так понимаю это
в таблице ячейку запрос.наименование  нужно заменить на запрос.аренда?)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 17-07-2009 11:40 » 

Угу. Но лучше: Запрос.Аренда.Наименование
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #14 : 17-07-2009 11:41 » 

спасибо,пойду дальше читать маны)
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #15 : 17-07-2009 16:14 » 

делитед,разобрался
« Последнее редактирование: 17-07-2009 16:33 от ge4r » Записан
ge4r
Участник

ru
Offline Offline

« Ответ #16 : 24-07-2009 08:04 » 

Возник еще вопрос..
Есть справочник "Условия договора аренды",есть внешний отчет...нужно,что бы в режиме "предприятия" при выводе отчета при клике на одну из ячеек с условиями открывалось диалоговое окно справочника,и можно было редактировать данные...это нужно прописывать через конфигуратор в таблице?

То есть ,например,выводится отчет,смотрим,а "площадь" выводится не та,кликаем на нее,открывается диалоговое окно редактирования справочника для этого контрагента,изменяем площадь и эти изменения сохраняются в БД
« Последнее редактирование: 24-07-2009 08:09 от ge4r » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #17 : 24-07-2009 08:28 » 

Смотри в сторону расшифровки ячейки. Чтобы расшифровка была на всю строку - нужно добавить символ # в начало либо конец выражения расшифровки
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #18 : 24-07-2009 08:49 » 

Сейчас пытаюсЬ,пишу в расшифровке Справочник.УсловияДоговораАренды.ТекущийЭлемент() ,но 1с пишет, что переменные не объявлены
Текущий вариант отчета выглядит так:

* Условия договора аренды.ert (46.5 Кб - загружено 977 раз.)
« Последнее редактирование: 24-07-2009 08:55 от ge4r » Записан
ge4r
Участник

ru
Offline Offline

« Ответ #19 : 24-07-2009 09:02 » 

иль нужно в код добавить что то вроде этого:
Код:
Спр = СоздатьОбъект("Справочник.УсловияДоговораАренды")
и расшифровке писать спр.текущийэлемент()
?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #20 : 24-07-2009 09:03 » 

Естественно не объявлены...
В расшифроке нужно указать существующий объект, в твоем случае: Запрос.Аренда
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #21 : 24-07-2009 09:04 » 

Можно конечно почти так, как ты написал, но будет сложнее:
После Спр = СоздатьОбъект("Справочник.УсловияДоговораАренды") и перед выводом секции с расшифровкой спр.текущийэлемент() тебе еще нужно спозиционироваться на нужный элемент:
Спр.НайтиЭлемент(Запрос.Аренда);
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #22 : 24-07-2009 09:06 » 

все,понял...спасибо
« Последнее редактирование: 24-07-2009 09:13 от ge4r » Записан
ge4r
Участник

ru
Offline Offline

« Ответ #23 : 29-07-2009 09:27 » 

Еще вопрос...)
В сей отчет нужно добавить колонку контрагенты,то есть есть справочник контрагенты,ему подчинен справочник договора,и в свою очередь ему подчинен справочник условия договора аренды...
вся информация в отчете берется из "условия договора аренды"...и теперь инфо для одного столбца должна браться из "контрагенты"
что делаю я:
в запрос добавляю строку
Код:
Контрагент = Справочник.Контрагенты.Наименование
и в таблице в нужной ячейке прописываю Запрос.Контрагент

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

* Условия договора аренды.ert (47 Кб - загружено 963 раз.)
« Последнее редактирование: 29-07-2009 09:37 от ge4r » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #24 : 30-07-2009 11:30 » 

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

Иначе 1С не знает как нужно связать данные запроса
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #25 : 01-08-2009 11:30 » 

спасибо
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #26 : 05-08-2009 06:02 » 

еще косяк нашел....
у меня стоит группировка по торговой точке,по наименованию,но если есть повторяющаяся торговая точка,подчиненая разным контрагентам, то выводится только одна из них....
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #27 : 05-08-2009 06:31 » 

разобрался,сделал двойную группировку и всё ок
Записан
Ольга111
Интересующийся

ua
Offline Offline

« Ответ #28 : 13-05-2010 10:04 » 

Здравствуйте, у меня простое задание, и мне даже стыдно обращаться к вам с таким вопросом, но помощь ОЧЕНЬ нужна Здесь была моя ладья...
Конфигурация элементарня, самописная. Есть справочник Альбомы. Нужен отчет, который выведет Наименование и Группу (оба они реквизиты справочника Альбомы) альбома, вышедшего позже 2005 года. Я написала так:
Код:
Процедура Сформировать()
 Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса = "
|ГодВыпуска = Справочник.Альбомы.ГодВыпуска;
|Альбом = Справочник.Альбомы.Наименование;
|Условие (ГодВыпуска>1999);
|";   
Запрос.Выполнить(ТекстЗапроса);
Таб = СоздатьОбъект("Таблица");
Таб.ВывестиСекцию("Заголовок");
Таб.ВывестиСекцию("Данные");
Таб.Показать("ОтчетПоСправочнику");
КонецПроцедуры
В секции данные выводит только ГодВыпуска первого попавшегося элемента, который подходит под условие... Чувствую, что надо выводить векцию в цикле, но не могу понять как именно... Помогите, пожалуйста... А черт его знает...
Записан
Ольга111
Интересующийся

ua
Offline Offline

« Ответ #29 : 13-05-2010 10:15 » 

Пока Запрос.Группировка() Цикл
   Таб.ВывестиСекцию("Данные");
КонецЦикла;
Если выводить таким образом, что написать в условии цикла, у меня же нет Группировки в ТекстеЗапроса? Ну, пожалуйста, помогите! Жаль(((
Записан
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines