1с построитель отчета не видны поля
Построитель отчета 1С - это объект встроенного языка, предназначенный для динамического создания отчета как программными, так и интерактивными средствами, и позволяющий вывести данные в табличный документ или диаграмму.
При разработке отчетов иногда возникает необходимость вывести отчет, данные для которого не могут быть получены с помощью языка запросов. Такая ситуация может возникнуть, например, если для расчета данных используется некий сложный алгоритм, или же данные, для вывода отчет получаются не из информационной базы, а, например из внешнего файла.
Построитель отчета предоставляет возможность вывода отчета из произвольного источника данных.
Основными областями применения построителя отчетов являются:
- стандартные и аналитические отчеты;
- произвольные выборки для обработки информации;
- создание отчетов пользователями без доработки в конфигурации.
В качестве источника данных для построителя отчета могут выступать:
- ТаблицаЗначений;
- РезультатЗапроса;
- ОбластьЯчеекТабличногоДокумента;
- Табличная часть;
- РегистрНакопленияНаборЗаписей;
- РегистрСведенийНаборЗаписей;
- РегистрБухгалтерииНаборЗаписей;
- РегистрРасчетаНаборЗаписей.
Для того чтобы построитель отчета выводил отчет для произвольного источника данных, достаточно установить описание источника данных в свойство построителя ИсточникДанных . Свойство построителя отчета ИсточникДанных может содержать значение типа ОписаниеИсточникаДанных .
Объект ОписаниеИсточникаДанных содержит сам источник данных, а также содержит описание колонок источника данных.
Каждое описание колонки источника данных содержит:
- Имя - имя колонки в источнике данных;
- ПутьКДанным - описание зависимости колонок друг от друга. Колонка, чей путь к данным получен через точку от пути к данным другого поля, считается реквизитом другой колонки. Если поле содержит через точку слово Представление , то данное поле считается представлением для колонки, от пути к данным которого получается представление. Примеры: Если колонка "Номенклатура" имеет путь к данным "Номенклатура", а колонка "Код" имеет путь к данным "Номенклатура.Код", то данная колонка будет считаться реквизитом колонки "Номенклатура". Колонка с путем к данным "Номенклатура.Представление" будет считаться представлением для колонки "Номенклатура";
- Поле - признак того, что данная колонка может быть использована в качестве поля отчета;
- Порядок - признак того, что по данной колонке возможно упорядочивание;
- Отбор - признак того, что на данную колонку возможно накладывать отбор;
- Измерение - признак того, что данная колонка может быть использовано как группировка отчета;
- Итог - строка, содержащая выражение для расчета итога. Для построителя отчета выражение данной строки соответствует выражению для вычисления итога, используемому в языке запросов.
При установке источника данных объекту ОписаниеИсточникаДанных , описания колонок создаются и заполняются автоматически.
Объект ОписаниеИсточникаДанных имеет конструктор, в качестве параметра которого может быть передан источник данных, для которого создается описание, при этом свойство ИсточникДанных будет заполнено переданным источником данных, описания колонок будут заполнены информацией о колонках из источника данных.
(7) spacecraft, да ладно!! а какое тогда есть измерение? ВЕСЬ КОД я запостил в первом комменте. я не понимаю, что надо изменить, чтоб всё заработало. Возможно, конечно, туплю, глаз замылился. Но мне хотелось бы узнать, что мне надо дописать, чтоб всё заработало
(5) spacecraft, в любом случае, можно скопировать код, который я привёл, там не так много строк и попробовать отладить его на своей машине, если есть таковая возможность
Добавить поле в "ИзмеренияСтроки" нужно, чтобы по этому полю произошла группировка.
В моём случае мне обязательно надо использовать источник данных, т.к. данные я получаю не запросом.
Добавить поле в "ИзмеренияСтроки" интерактивно не получается - нет ни одного поля, которое можно выбрать.
Пробовал брать данные не из "ИсточникДанных" а путём установления Текста для Построителя запросов - всё работает норм, т.е. можно сделать группировки по тем полям, которые выведены в Итоги в запросе.
К сожалению, большим числом СМ не располагаю, могу прикрепить лишь монету, но мне очень нужна ваша помощь!
Надо вставить ещё одну строку. В справке об этом не написано, логически к этому не прийти, а случайно наткнувшись, надо просто запомнить и принять как есть. Вот эта строка:
а в моём случае текст запроса пустой (т.к. использую "ИсточникДанных"), да и нигде в справке ни слова о том, что не применив этот метод, можно столкнуться с проблемой группировок.
К тому же, этот метод просто заполняет настройки вывода отчёта настройками по умолчанию.
Например коллекция "ИзмеренияСтроки" автоматом после выполнения метода "ЗаполнитьНастройки()" заполняется всеми полями, которые могут быть измерениями, (т.е. им выставлено свойство "Измерение" в Истина).
Т.к. мне не надо добавлять все поля в группировки, то после "ЗаполнитьНастройки()" я выполняю ещё строку
чтобы пользователь на своё усмотрение заполнил группировки.
Опосляскриптум: что это, если не баг? (варианты ответа: "особенность реализации, которую надо учесть", "прикольная фишка, которой надо радоваться", "очевидные строчки кода, о написании которых, кроме меня никто и не задумывался, ибо их требует простейшая логика".)
Построитель отчетов — это объект, встроенного языка, предназначенный для динамического создания отчета в 1С 8.3 как программными, так и интерактивными средствами.
Основными областями применения построителя отчетов являются стандартные отчеты 1С и аналитические отчеты, произвольные выборки для обработки информации, создание отчетов пользователями без доработки в конфигурации.
В качестве источника данных для построителя отчета могут выступать: таблица значений, результаты запроса, область ячеек табличного документа, табличная часть, набор записей регистров (накопления, сведений, бухгалтерии, расчета).
1С Предприятие имеет особые расширения синтаксиса, предназначенные специально для построителя отчетов в 1С. Такие инструкции оформляются в фигурные скобки <. >. При обычном выполнении запроса они будут игнорироваться платформой. Механизм работы скобок прост: вне скобок прописывается текст запроса для построителя, в внутри – запрос для настроек.
2. Настройки из текста запроса 1С
Настройки формируются автоматически на основе исходного текста запроса 1С или же могут быть указаны явно в тексте запроса с использованием расширения языка запросов 1С.
Настройки включают в себя:
Можно предоставить пользователю возможность изменять настройки построителя отчета не с помощью табличных полей 1С 8.3, расположенных в форме, а с помощью полей ввода. Это может понадобиться, например, в тех случаях, когда пользователю нужно иметь возможность настроить лишь некоторые, заранее известные настройки построителя 1С. Например, даты формирования отчета в 1С, отбор по номенклатуре и т.д. В этом случае в форме можно разместить поля ввода и связать их со значениями соответствующих элементов отбора построителя отчета.
Для формирования табличного документа построитель отчета использует макет или созданный разработчиком, или генерируемый автоматически.
Построитель отчета 1С позволяет вывести данные в табличный документ или диаграмму.
Построитель отчетов может использоваться в тех случаях, когда СКД недоступна или существует вероятность, что она отработает неправильно.
При разработке отчетов 1С иногда возникает необходимость вывести отчет 1С, данные для которого не могут быть получены с помощью языка запросов 1С. Такое происходит, например, если для расчета данных в 1С используется некий сложный алгоритм, или же данные для вывода в отчет в 1С получаются не из информационной базы, а, например, из внешнего файла. В таком случае уместно использовать построитель отчета, так как он предоставляет возможность вывода данных для отчета из произвольного источника.
3. Пример разработки отчета 1С
Наш отчет будет выводить данные в элемент формы – табличный документ, а также в элемент формы – диаграмму. В отчете с использованием табличного документа мы настроим отбор по номенклатуре и (или) по периоду.
То есть в отчете можно будет посмотреть остатки по номенклатуре 1С, по периоду (условие больше или равно), и по номенклатуре и по периоду.
Итак, начнем.
1. Объявляем создание нового объекта типа ПостроительОтчета;
2. Источником данных мы выберем текст запроса 1С.
| ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
| ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток,
| ОстаткиНоменклатурыОстатки.СуммаОстаток КАК СуммаОстаток
| РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
|ИТОГИ СУММА(КоличествоОстаток), СУММА(СуммаОстаток) ПО
| Номенклатура КАК Номенклатура";
Конструкция ПостроительОтчета.ЗаполнитьНастройки(); Выполняет автоматическое заполнение настроек построителя из текста запроса.
Пример описания Таблицы значений в качестве источника данных.:
ПостроительОтчета.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаЗначенийРезультат);
3. Можно воспользоваться макетом, созданным разработчиком:
Или автоматически сформированным макетом, со своими настройками:
Макет.Область().ЦветФона = Новый Цвет(100,100,100);
Макет.Область().ЦветТекста = Новый Цвет(222,222,222);
// Установка макета построителя отчета
4. Настройка отбора, который связан с полями ввода формы: номенклатура и период
если не Номенклатура.Пустая() тогда
Если Отбор.Найти("Номенклатура") = Неопределено Тогда
если не Период="" тогда
Если Отбор.Найти("Период") = Неопределено Тогда
5. Некоторые настройки отчета в 1С 8.3
Построитель.ТекстЗаголовка="Отчет с использованием Запроса по периоду";
6. Запуск метод Вывести() (в табличный документ, или в соответствующий элемент формы).
ПостроительОтчета.Выполнить(); // выводит в отдельном окне
ПостроительОтчета.Вывести(ЭлементФормы.Диаграмма);// вывод в элемент формы диаграмму.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Построитель отчетов — это объект, встроенного языка, предназначенный для динамического создания отчета в 1С 8.3 как программными, так и интерактивными средствами.
Основными областями применения построителя отчетов являются стандартные отчеты 1С и аналитические отчеты, произвольные выборки для обработки информации, создание отчетов пользователями без доработки в конфигурации.
В качестве источника данных для построителя отчета могут выступать: таблица значений, результаты запроса, область ячеек табличного документа, табличная часть, набор записей регистров (накопления, сведений, бухгалтерии, расчета).
1С Предприятие имеет особые расширения синтаксиса, предназначенные специально для построителя отчетов в 1С. Такие инструкции оформляются в фигурные скобки <. >. При обычном выполнении запроса они будут игнорироваться платформой. Механизм работы скобок прост: вне скобок прописывается текст запроса для построителя, в внутри – запрос для настроек.
2. Настройки из текста запроса 1С
Настройки формируются автоматически на основе исходного текста запроса 1С или же могут быть указаны явно в тексте запроса с использованием расширения языка запросов 1С.
Настройки включают в себя:
Можно предоставить пользователю возможность изменять настройки построителя отчета не с помощью табличных полей 1С 8.3, расположенных в форме, а с помощью полей ввода. Это может понадобиться, например, в тех случаях, когда пользователю нужно иметь возможность настроить лишь некоторые, заранее известные настройки построителя 1С. Например, даты формирования отчета в 1С, отбор по номенклатуре и т.д. В этом случае в форме можно разместить поля ввода и связать их со значениями соответствующих элементов отбора построителя отчета.
Для формирования табличного документа построитель отчета использует макет или созданный разработчиком, или генерируемый автоматически.
Построитель отчета 1С позволяет вывести данные в табличный документ или диаграмму.
Построитель отчетов может использоваться в тех случаях, когда СКД недоступна или существует вероятность, что она отработает неправильно.
При разработке отчетов 1С иногда возникает необходимость вывести отчет 1С, данные для которого не могут быть получены с помощью языка запросов 1С. Такое происходит, например, если для расчета данных в 1С используется некий сложный алгоритм, или же данные для вывода в отчет в 1С получаются не из информационной базы, а, например, из внешнего файла. В таком случае уместно использовать построитель отчета, так как он предоставляет возможность вывода данных для отчета из произвольного источника.
3. Пример разработки отчета 1С
Наш отчет будет выводить данные в элемент формы – табличный документ, а также в элемент формы – диаграмму. В отчете с использованием табличного документа мы настроим отбор по номенклатуре и (или) по периоду.
То есть в отчете можно будет посмотреть остатки по номенклатуре 1С, по периоду (условие больше или равно), и по номенклатуре и по периоду.
Итак, начнем.
1. Объявляем создание нового объекта типа ПостроительОтчета;
2. Источником данных мы выберем текст запроса 1С.
| ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
| ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток,
| ОстаткиНоменклатурыОстатки.СуммаОстаток КАК СуммаОстаток
| РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
|ИТОГИ СУММА(КоличествоОстаток), СУММА(СуммаОстаток) ПО
| Номенклатура КАК Номенклатура";
Конструкция ПостроительОтчета.ЗаполнитьНастройки(); Выполняет автоматическое заполнение настроек построителя из текста запроса.
Пример описания Таблицы значений в качестве источника данных.:
ПостроительОтчета.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаЗначенийРезультат);
3. Можно воспользоваться макетом, созданным разработчиком:
Или автоматически сформированным макетом, со своими настройками:
Макет.Область().ЦветФона = Новый Цвет(100,100,100);
Макет.Область().ЦветТекста = Новый Цвет(222,222,222);
// Установка макета построителя отчета
4. Настройка отбора, который связан с полями ввода формы: номенклатура и период
если не Номенклатура.Пустая() тогда
Если Отбор.Найти("Номенклатура") = Неопределено Тогда
если не Период="" тогда
Если Отбор.Найти("Период") = Неопределено Тогда
5. Некоторые настройки отчета в 1С 8.3
Построитель.ТекстЗаголовка="Отчет с использованием Запроса по периоду";
6. Запуск метод Вывести() (в табличный документ, или в соответствующий элемент формы).
ПостроительОтчета.Выполнить(); // выводит в отдельном окне
ПостроительОтчета.Вывести(ЭлементФормы.Диаграмма);// вывод в элемент формы диаграмму.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Восьмая версия платформы 1С предлагает достаточно много новых объектов конфигурации, каждый из которых обладает своими методами и свойствами, позволяющими упростить процесс разработки приложений и оптимизировать производительность. Один из них – построитель отчетов.
О том, что такое построитель отчета в 1с, какие функции он выполняет, и какое применение он нашел в программировании, и хотелось бы поговорить в этой статье.
Построитель отчета в 1С – что это?
Это объект конфигурации, который позволяет вывести данные в табличный документ или диаграмму. В качестве источника данных могут выступать:
-
;
- Результат выполнения запроса;
- Область ячеек табличного документа;
- Табличная часть документа или справочника;
- Набор записей регистра.
Кроме этого построитель отчета в 1С имеет реквизит «Текст» в который может передаваться текст запроса, результат которого надо посмотреть.
На Рис.1 представлен участок кода, который позволяет с помощью «Построителя отчета» вывести на экран произвольную таблицу значений
Таким образом, очевидным вариантом использования построителя является проектирование отчетов. Не таким явным направлением использования построителя является его использование для настройки пользователем различных элементов запроса (группировок, отборов и т.д.).
Кстати, результат выполнения кода, указанного на Рис.1 можно увидеть на Рис.2
Настройка построителя
Построитель отчетов в некотором смысле напоминает систему компоновки данных и может использоваться в тех случаях, когда СКД по тем или иным причинам недоступна или существует вероятность, что она отработает неправильно.
Как и СКД построитель включает:
- Группировки (уровни иерархии при выводе информации);
- Показатели (значения, по которым необходимо получить итог);
- Дополнительные рассчитываемые поля (реквизиты элементов, результаты действий со значениями);
- Фильтры (отборы);
- Сортировки.
Настройки макета оформления построителя предполагают различные уровни и точности детализации.
Алгоритм использования построителя
Естественно, в зависимости от ситуации, код программы использования построителя отчета может серьезно различаться. Основной алгоритм использования не меняется:
- Объявляем создание нового объекта типа ПостроительОтчета;
- На этом этапе можно либо использовать ПостроительЗапроса для создания текста выборки, либо, используя объект ОписаниеИсточникаДанных воспользоваться существующей выборкой;
- Настройки построителя отчета можно задать, используя метод объекта построителя ЗаполнитьНастройки();
- Отказаться от использования стандартного макета оформления, создающегося методом автогенерации, можно определив свойство объекта Макет у построителя;
- Если не используется ОписаниеИсточникаДанных, на этом этапе необходимо выполнить запрос, используем метод Выполнить();
- Последним этапом является запуск метода Вывести(), вывод можно осуществить в табличный документ, или в соответствующий элемент формы.
Использование расшифровки в построителе
Третья строчка на Рис.1 включает расшифровку ячеек результата выполнения построителя.
Для этого мы воспользовались свойством ЗаполнениеРасшифровки. Тип этого свойства – ВидЗаполненияРасшифровкиПостроителяОтчета, оно может принимать одно из трех значений:
- ЗначенияГруппировок – при активизации ячейки будет использоваться значение указанной в ней группировки;
- НеЗаполнять – значение по умолчанию, означающее, что для конечного результата расшифровка использоваться не будет;
- Расшифровка – структура расшифровки будет заполнена значениями всех группировок исходной выборки.
Кроме этого пользователь имеет возможность самостоятельно задать расшифровку, используя метод НастроитьРасшифровку(). Участок кода, запускающий этот метод представлен на Рис.3
Пример использования построителя для включения отборов в отчете
Немного практической части. Иногда случается ситуация, когда необходимо создать отчет с некоторыми отборами. Решить эту задачу можно и с использованием СКД, а можно воспользоваться построителем:
- Начнем с создания внешнего отчета и добавление в него реквизита с произвольным именем и типизацией ПостроительОтчета (Рис.4);
- Создаем форму отчета и размещаем на ней интерфейсный объект ТабличноеПоле, типизируем его как Отбор и связываем со свойством Отбор созданного реквизита Рис.5
- Создаем процедуру ПриОткрытии(), связанную с соответствующем событием нашей формы;
- Код, прописанный в ней обязательно должен содержать запрос построителя отчета, пример кода приведен на Рис.6, для создания текста построителя можно воспользоваться конструктором запроса, в конструкторе условия построителя и дополнительные его настройки указываются на соответствующей закладке Рис.7;
Условия отбора, прописанные в фигурных <> скобках текста запроса будут исполняться только в случае если соответствующий отбор активирован и использован пользователем;
Внешний вид созданного нами отчета и его результат показан на Рис.9
Безусловно, в пределах одной статьи достаточно сложно продемонстрировать все возможности нового объекта, но получить о нем представление и начать его использовать с учетом полученных знаний, нам кажется, можно.
Читайте также: