helpf.pro
Регистрация

v8: Построитель отчетов

Bell
10.02.2012 21:06Прочитано: 18608
Здравствуйте
Слишком мало информации по построителю отчета Пытаюсь разобраться возникло очень много воросов.
Подскажите как результат из построителя отчета вставить в Таблицу значений.
На форме есть ТЗ с колонками (Сотрудник,ПМЖ). Из запроса знаю

САМ ЗАПРОС
Код 1C v 8.х
 Результат=Запрос.Выполнить();
Выборка=Результат.Выбрать();
Пока Выборка.Следующий()Цикл
НВС=ТЗ.Добавить();
НВС.Установить(0,Выборка.Ссылка);
НВС.Установить(1,Выборка.Ссылка.ПМЖ);
КонецЦикла;





Процедура ААА()
// ПОСТРОИТЕЛЬ
Построитель.ТекстЗаголовка="НАЗВАНИЕ МОЕГО ПОСТРОИТЕЛЯ";
Запрос=Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
| Спр.Ссылка
|ИЗ
| Справочник.ЗП_Сотрудники КАК Спр
|{ГДЕ
| Спр.Ссылка.*}
|
|УПОРЯДОЧИТЬ ПО
| Спр.Код";
Построитель.Текст=Запрос.Текст;


// В ТАБЛИЦУ ЗНАЧЕНИЙ ??????
// Построитель.ЗаполнитьНастройки();
Построитель.Выполнить();
Построитель.Вывести();

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

Изменено 10.02.12 21:24:19
Yandex
Возможно, вас также заинтересует
Реклама на портале
Mokey
13.02.2012 10:05Ответ № 1
Код 1C v 8.х
 
Процедура ААА()
// ПОСТРОИТЕЛЬ
Построитель.ТекстЗаголовка="НАЗВАНИЕ МОЕГО ПОСТРОИТЕЛЯ";
Запрос=Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
| Спр.Ссылка,
| Спр.Ссылка.ПМЖ
|ИЗ
| Справочник.ЗП_Сотрудники КАК Спр
|{ГДЕ
| Спр.Ссылка.*}
|
|УПОРЯДОЧИТЬ ПО
| Спр.Код";
Построитель.Текст=Запрос.Текст;


// В ТАБЛИЦУ ЗНАЧЕНИЙ ??????
// Построитель.ЗаполнитьНастройки();
Построитель.Выполнить();

ТЗ = Построитель.Результат.Выгрузить();

Построитель.Вывести();

КонецПроцедуры
Bell
13.02.2012 11:35Ответ № 2
Надо в таблицу значений загрузить определенные значения
В ТЗ есть колонки Сотрудник,ПМЖ (к примеру) а не все ахом
Вот как из ЗАПРОСА выгружаю в ТЗ
Код 1C v 8.х
 Пока Выборка.Следующий()Цикл
НВС=ТЗ.Добавить();
НВС.Установить(0,Выборка.Ссылка);
НВС.Установить(1,Выборка.Ссылка.ПМЖ);
КонецЦикла;

Изменено 13.02.12 11:39:23
Mokey
13.02.2012 12:06Ответ № 3
Так а я Вам что предложил? Посмторите внимательно, какие поля выбираются в тексте запроса построителя, других там не будет.
Mokey
13.02.2012 12:11Ответ № 4
Для пущей важности можно написать так:
Код 1C v 8.х
 
Запрос.Текст=
"ВЫБРАТЬ
|Спр.Ссылка КАК Ссылка,
|Спр.Ссылка.ПМЖ КАК ПМЖ
|{ВЫБРАТЬ
| Ссылка.*,
| ПМЖ.*}
|ИЗ
| Справочник.ЗП_Сотрудники КАК Спр
|{ГДЕ
| Спр.Ссылка.*}
|
|УПОРЯДОЧИТЬ ПО
| Спр.Код";
Построитель.Текст=Запрос.Текст;

Изменено 13.02.12 12:12:06
Bell
13.02.2012 12:41Ответ № 5
Я выбираю ссылку т.е.все поля (могу выбрать) Я хочу сделать построитель (вроду получился)для всех справочниок универсальный что бы алгоритм был общий ,только спр. менять в зависимости с какого документа открывать буду.
я поступил так ВСЕ РАБОТАЕТ , но сомнения по поводу корректности кода
// ПОСТРОИТЕЛЬ
Код 1C v 8.х
 Построитель.ТекстЗаголовка="НАЗВАНИЕ МОЕГО ПОСТРОИТЕЛЯ";
Запрос=Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
| Спр.Ссылка
|ИЗ
| Справочник.ЗП_Сотрудники КАК Спр
|{ГДЕ
| Спр.Ссылка.*}
|
|УПОРЯДОЧИТЬ ПО
| Спр.Код";
Построитель.Текст=Запрос.Текст;


// Построитель.ЗаполнитьНастройки();
Построитель.Выполнить();

ТЗ.Очистить();
Выборка=Построитель.Результат.Выбрать();
Пока Выборка.Следующий()Цикл

НВС=ТЗ.Добавить();
НВС.Установить(0,Выборка.Ссылка);
НВС.Установить(1,Выборка.Ссылка.ПМЖ);
КонецЦикла;

Построитель.Вывести();

Изменено 13.02.12 12:47:28
Mokey
13.02.2012 12:46Ответ № 6
А зачем перебирать выборку, если
Код 1C v 8.х
 Построитель.Результат.Выгрузить()   
сразу выгрузит данные в ТЗ?
Необходимые поля лучше сразу выбирать в запросе!
Изменено 13.02.12 12:47:54
Bell
13.02.2012 12:49Ответ № 7
Потому что мне из одного спр. в разных документах трубуются разные значения по полям
Mokey
13.02.2012 12:49Ответ № 8
(5) Bell, А во всех ли справочниках есть реквизит "ПМЖ"??? Если нет - то ни о какой универсальности речи тут не идёт.
Mokey
13.02.2012 12:50Ответ № 9
(7) Bell, А где у Вас тут разные поля для разных докумнетов?
Mokey
13.02.2012 12:52Ответ № 10
Хорошим вариантом в таком случае передавать требуемые поля в качестве параметров и подставлять в текст запроса.
Изменено 13.02.12 12:52:43
Bell
13.02.2012 12:59Ответ № 11
Реквизиты которые указаны в тексте это для примера Я перебираю результат построителя для того что бы документ перенести данные которые мне и нужны имеено для этого документа (вот и ссылка).Может и есть проблемы но пока я еще их наверное не допонимаю.. По поводу (10) как тогда лучше поступить/скомпоновать
Mokey
13.02.2012 14:21Ответ № 12
Если Вы пришлёте фрагмент, которым вызывете построитель (из документа) и целиком процедуру ААА() (так, как у Вас написана), то можно будет предметно поговорить
Mokey
13.02.2012 15:05Ответ № 13
Сейчас пример попробую набросать, чтобы Вы имели представление, о чём я говорю....
Код 1C v 8.х
 
Процедура ААА(ИмяСправочника, СписокРеквизитовСправочника)
ТекстЗапроса = "Выбрать";
Для Каждого Элемент Из СписокРеквизитовСправочника Цикл
ТекстЗапроса = ТекстЗапроса + "
|" + ИмяСправочника +"." + Элемент.Значение + " КАК " + Элемент.Значение + ",";
КонецЦикла;
//удаляем последнюю запятую
ТекстЗапроса = Сред(ТекстЗапроса, СтрДлина(ТекстЗапроса)-1);
ТекстЗапроса = ТекстЗапроса + "
|ИЗ Справочник." + ИмяСправочника + " КАК " + ИмяСправочника + "
|{ГДЕ
|" + ИмяСправочника + ".Ссылка.*}
|
|УПОРЯДОЧИТЬ ПО
|" + ИмяСправочника + ".Код";
КонецПроцедуры
Mokey
13.02.2012 15:08Ответ № 14
Можно оформить как функцию и возвращать ТЗ или Результат построителя, только зачем построитель, если всё равно ТЗ надо получить...
Bell
15.02.2012 13:09Ответ № 15
Вопрос закрыт!
Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или .
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.