Новости экономики и финансов. Курсы валют, ситуация на биржах, акции, котировки, аналитика: 💫 💫 💫 💫 💫 читайте на сайте

Построитель Отчета 1C Вывести Дерево Значений • Понедельник 13 октября 2014 г

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

1С:Эксперт по технологическим вопросам
Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Данная статья написана с учебными целями, чтобы показать, как при помощи расширений конфигурации можно делать такие доработки, ради которых раньше приходилось снимать конфигурацию с поддержки. Мои заметки по 1с: Программный вывод отчета и установка настроек Обращайтесь в форму связи

Подстановка и добавление в отчет на СКД произвольных значений, которые нельзя получить запросом

Часто требуется сделать отчет, в котором какую-то цифру или значение не получается получить в запросе, а требуются вызовы каких-то процедур и функций. При этом отказываться от СКД с её мощной системой отборов и группировок просто глупо. Предлагается два подхода для решения этой проблемы.

Обратите внимание, что в этой схеме набор данных — Объект и все поля создаются вручную. Также обязательно нужно указать типы полей компоновки, иначе отбор по ссылочным типам работать не будет. И еще эта схема является основной схемой отчета, т.е. в ней мы создаем макет, отборы и т.д.

Обратим внимание на один важный момент. Схемы мы используем две, а настройка отчета — одна.

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

Второй подход, назовем «Подстановка», заключается в том, что вывод результата компоновки происходит в цикле построчно и в этот момент заменяются значения элемента результата на произвольные.

Схема используется одна, особенность только в том, что в обработчик модуля объекта отчета ПриКомпоновкеРезультата подставляется следующий код:

Итак, у каждого из подходов есть свои плюсы и минусы.

  • Плюсы:
    • Более полные возможности интерактивной компоновки: измененные данные можно полноценно фильтровать, группировать и т.д.
    • Нет проблем с получением ссылочных типов данных
    • Медленно формируется (выгрузка в таблицу значений, перебор, обратная загрузка)
    • Возможны трудности с отбором по изменяемым полям, поскольку настройка одна, а схемы две и нужно понимать что и как будет отбираться
    • Вторую схему нужно делать вручную — прописывать поля и их типы. Если полей много, то можно выгрузить первую схему в xml, слегка модифицировать и загрузить во вторую
    • Плюсы:
      • Быстрота формирования отчета (нет никаких промежуточных схем и выгрузов в таблицы значений)
      • Не нужно заботиться о пользовательском отборе, поскольку схема одна — настройка одна. Нужно только помнить, что нельзя отбирать по изменяемым полям
      • Меньше возможности интерактивной компоновки: измененные данные нельзя отбирать, группировать и т.д., поскольку замена значений происходит уже после всех процедур компоновки в момент вывода данных
      • Возможны проблемы с получением ссылок данных из их представления

      Я использую в практике отчеты с обоими вариантами замены значений. Подстановка намного быстрее работает, но не всегда ее можно применить.

      Промокоды на Займер на скидки

      Займы для физических лиц под низкий процент

      • 💲Сумма: от 2 000 до 30 000 рублей
      • 🕑Срок: от 7 до 30 дней
      • 👍Первый заём для новых клиентов — 0%, повторный — скидка 500 руб

      Надеюсь, что пост получилось написать понятным языком и кому-нибудь пригодится.

      Дерево значений обход рекурсией | Услуги 1С программиста, обслуживание, автоматизация, разработка ПО.
      // Инициализация процессора компоновки
      ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных ;
      ПроцессорКомпоновки . Инициализировать ( Макет );

      Вывод скд в дерево значений

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

      1С:Эксперт по технологическим вопросам
      Мнение эксперта
      1С:Эксперт по технологическим вопросам
      Задавайте мне вопросы, и я помогу разобраться!
      В системе компоновки данных существует возможность выводить отчет не только в табличный документ, но и в коллекции значений таблица значений, дерево значений. Заметки по 1С: Предприятие 8.2, 8.3: Выгрузка результата СКД в таблицу значений Обращайтесь в форму связи

      Вывод отчета в Таблицу значений или Дерево значений:

      // Отключение вывода общих итогов
      Настройки . ПараметрыВывода . УстановитьЗначениеПараметра ( «ГоризонтальноеРасположениеОбщихИтогов» , РасположениеИтоговКомпоновкиДанных . Нет );
      Настройки . ПараметрыВывода . УстановитьЗначениеПараметра ( «ВертикальноеРасположениеОбщихИтогов» , РасположениеИтоговКомпоновкиДанных . Нет );

      // Компоновка макета
      КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных ;
      Макет = КомпоновщикМакета . Выполнить ( СхемаКомпоновкиДанных , Настройки . Тип ( «ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений» ));

      // Инициализация процессора компоновки
      ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных ;
      ПроцессорКомпоновки . Инициализировать ( Макет );

      // Дерево значений, в которую будет получен результат
      Результат = Новый ДеревоЗначений ;

      // Получение результата
      ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений ;
      ПроцессорВывода . ОтображатьПроцентВывода = Истина;
      ПроцессорВывода . УстановитьОбъект ( Результат );

      ПроцессорВывода . Вывести ( ПроцессорКомпоновки , Истина);

      Вывод отчета в табличный документ:

      ЭтотОбъект = РеквизитФормыВЗначение ( «Объект» );
      СхемаКомпоновкиПродажи = ЭтотОбъект . ПолучитьСхемуПродажи ();

      КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных ;
      Макет = КомпоновщикМакета . Выполнить ( СхемаКомпоновкиПродажи , КомпоновщикНастроекПродаж . ПолучитьНастройки (),
      ,, Тип ( «ГенераторМакетаКомпоновкиДанных» ));

      ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных ;
      ПроцессорКомпоновки . Инициализировать ( Макет );

      ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент ;
      ПроцессорВывода . ОтображатьПроцентВывода = Истина;

      ПроцессорВывода . УстановитьДокумент ( ТабличноеПолеРезультат );

      ПроцессорВывода . Вывести ( ПроцессорКомпоновки , Истина);

      Пример установки параметров:

      ПериодОтчета . ДатаНачала = НачалоДня ( НачалоДня ( ТекущаяДата ()) — ( 44 * 3600 * 24 ));
      ПериодОтчета . ДатаОкончания = КонецДня ( ТекущаяДата ());

      //устанавливаем параметры тербования выгрузки по периоду 45 дней
      Отчет . КомпоновщикНастроек . Настройки . ПараметрыДанных . УстановитьЗначениеПараметра (Новый ПараметрКомпоновкиДанных ( «ПериодОтчета» ), ПериодОтчета );

      Пример установки пользовательской настройки:

      Важно, пользовательская настройка доступна только в ПриОткрытии

      ПериодОтчета = Новый СтандартныйПериод ;
      ПериодОтчета . ДатаНачала = НачалоДня ( НачалоДня ( ТекущаяДата ()) — ( 44 * 3600 * 24 ));
      ПериодОтчета . ДатаОкончания = КонецДня ( ТекущаяДата ());

      ИдентификаторПользНастройки = Отчет . КомпоновщикНастроек . ПользовательскиеНастройки . ПолучитьИдентификаторПоОбъекту ( Отчет . КомпоновщикНастроек . Настройки . ПараметрыДанных . НайтиЗначениеПараметра (Новый ПараметрКомпоновкиДанных ( «ПериодОтчета» )));
      ПараметрПользовНастройки = Отчет . КомпоновщикНастроек . ПользовательскиеНастройки . Элементы . Найти ( ИдентификаторПользНастройки );

      Работа с деревом значений для новичков (Управляемые формы 8.3)

      В обычном приложение аналогом является процедура СоздатьКолонки , которая удаляет старые колонки и загружает новые колонки из источника данных в табличное поле.

      1С:Эксперт по технологическим вопросам
      Мнение эксперта
      1С:Эксперт по технологическим вопросам
      Задавайте мне вопросы, и я помогу разобраться!
      Б для тонкого клиента обработку коллекции необходимо выполнять на сервере, там же следует обеспечить вывод результата на экран. Построитель Отчета 1C Вывести Дерево Значений Обращайтесь в форму связи

      Вывод построителя отчета

      Метод “Выполнить()” выполняет запрос построителя отчета и заполняет свойство “Результат”.
      С помощью метода “ПолучитьЗапрос()” можно получить запрос построителя отчета, который выполняется при вызове метода “Выполнить()”.

      Метод “Вывести()” выводит результат в табличный документ или диаграмму. Если не указать объект, в который требуется выполнить вывод, то будет создан новый табличный документ.

      Пример вывода в новый табличный документ:
      Построитель.Вывести();

      Пример вывода в существующий табличный документ:
      Построитель.Вывести(ЭлементыФормы.РезультатТаблица);

      Пример вывода в диаграмму:
      Построитель.Вывести(ЭлементыФормы.РезультатДиаграмма, » Количество»);

      Волшебство программирования на 1С: Предприятие 7.7 и 8.0. Выпуск 68 (1c): Рассылка.

      • “РазмещениеИзмеренийВСтроках,
      • РазмещениеИзмеренийВКолонках,
      • РазмещениеИтоговВСтроках,
      • РазмещениеИтоговВКолонках,
      • РазмещениеРеквизитовИзмеренийВСтроках,
      • РазмещениеРеквизитовИзмеренийВКолонках

      Группировки и поля построителя отчета

      Измерение построителя отчета – это группировка по строкам или колонкам.

      • “Имя” (идентификатор реквизита) (пример: “Номенклатура”, “Контрагент”…),
      • “Представление” (представление при выводе) (пример: “Документ продажи”, “Единица измерения”…),
      • “ПутьКДанным” (путь к полю выборки запроса) (пример: “Номенклатура”, “ДокументПродажи.Организация”…)

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

      • “Макет” – имя области в макете построителя отчета или отдельный макет, используемый при выводе группировки.
      • “МакетИерархии” – имя области в макете построителя отчета или отдельный макет, используемый при выводе иерархии группировки.
      • “МакетПодвала” – имя области в макете построителя или отдельный макет, используемый при выводе подвала группировки.
      • “МакетПодвалаИерархии” – имя области в макете построителя или отдельный макет, используемый при выводе подвала иерархии группировки.
      • “МакетыПодваловУровней” – массив макетов подвалов для различных уровней группировок.
      • “МакетыУровней” – массив макетов для различных уровней группировок.
      • “Имя” (идентификатор поля) (пример: “Количество”, “КодНоменклатуры”, “Период”…),
      • “Представление” (представление при выводе) (пример: “Кол-во”, “Код”, “Период”…) и
      • “ПутьКДанным” (путь к полю выборки запроса) (пример: “Количество”, “Номенклатура. Код”, “Период”…).

      Со списком группировок или полей можно выполнять ряд действий.

      • “Вставить()“ – добавить группировку/поле в указанную позицию.
      • “Добавить()“ – добавить группировку/поле в конец списка.
      • “Индекс()“ – получить индекс группировки/поля в списке.
      • “Количество()“ – получить количество группировок/полей в списке.
      • “Найти()“ – найти группировку/поле в списке по имени.
      • “Очистить()“ – очистить список группировок/полей.
      • “Получить()“ – получить группировку/поле по индексу.
      • “Сдвинуть()“ – сдвинуть группировку/поле на указанное количество позиций.
      • “Удалить()“ – удалить группировку/поле из списка

      💥Принимайте участие в опросе и получайте бесплатную консультацию

Related posts