1с постобработка отчета 1с скд при компоновке поменять значение поля
Схема компоновки данных представляет собой большой конструктор, состоящий из наборов данных, вычисляемых полей, описания итоговых полей (ресурсов), макетов, вариантов настроек и т.д. Схему компоновки достаточно удобно создавать в конфигураторе при помощи конструктора схемы компоновки.
Но на практике часто встречаются задачи, когда схему компоновки нужно программно создать с нуля или доработать существующую схему при помощи кода на встроенном языке, настроить вариант отчета – добавить отбор, установить условное оформление, добавить группировку и т.д. Такие задачи решаются на внедрениях при адаптации типовых конфигураций фирмы “1С” под требования конкретного заказчика.
Задача действительно очень актуальная, участники Мастер-группы по СКД задают много вопросов на эту тему :)
Также традиционно много вопросов возникает при программной работе с пользовательскими настройками отчетов:
- Почему отличаются значения параметра в настройках компоновщика и в пользовательских настройках? Которое из этих значений используется для формирования отчета?
- Как связываются между собой настройки компоновщика и пользовательские настройки?
- Как установить значение отбора или параметра, если они вынесены в пользовательские настройки?
- И многие другие…
Поэтому мы опубликовали серию видеоуроков, в которых рассказывается, как работать со схемой компоновки программно.
Общая длительность всех видеоуроков – 1 час 5 минут.
Для того, чтобы Вам было проще ориентироваться в материале, мы указали тайминг наиболее важных моментов в видео.
Видео 1 – Программное создание варианта отчета
00:37 – В каком обработчике можно расположить код для создания настроек компоновки
01:00 – Где в Синтакс-помощнике можно “подсмотреть” свойства, которые потребуются при написании кода
01:58 – Как настроить группировки отчета
02:28 – Какое свойство позволяет создавать вложенные группировки
03:11 – Как включить/выключить отдельные элементы настроек.
Видео 2 – Программное создание группировки
00:22 – Как создать структуру отчета
02:00 – Как указать поля, по которым выполняется группировка
04:10 – Как настроить выбранные поля
06:30 – Как создать автополе.
Видео 3 – Программное создание вложенной группировки
00:22 – Как создать подчиненную группировку
02:05 – Почему в отчете группировки могут выводиться несколько раз
02:40 – Как проверить наличие группировок в структуре отчета.
Видео 4 – Программное добавление отбора
00:18 – Где в Синтакс-помощнике найти типы данных, необходимые для создания отборов
00:55 – Какие свойства объекта типа ЭлементОтбораКомпоновкиДанных нужно использовать для создания отбора
01:20 – Как создать отбор при помощи программного кода.
Видео 5 – Программная установка сортировки
00:25– Где в Синтакс-помощнике найти типы данных, необходимые для включения сортировки
00:50 – Какие свойства объекта типа ЭлементПорядкаКомпоновкиДанных нужно использовать для включения сортировки
01:00 – Как установить сортировку при помощи программного кода.
Видео 6 – Программное добавление условного оформления
00:25 – Где в Синтакс-помощнике найти типы данных, необходимые для работы с условным оформлением
00:33 – Какие свойства объекта типа ЭлементУсловногоОформленияКомпоновкиДанных нужно использовать
02:08 – Как добавить условное оформление при помощи программного кода
02:31 – Как задать перечень полей, к которым будет применяться условное оформление
03:34 – Как отобрать оформляемые данные
04:15 – Как при помощи программного кода описать применяемое оформление.
Видео 7 – Программная работа с пользовательскими настройками
01:01 – Как программно установить значение параметра
02:00 – Почему значения параметров, выводимые на форму отчета, не совпадают со значениями в самом отчете
04:25 – Что делает метод ПолучитьНастройки
05:10 – Как нужно работать с пользовательскими настройками
06:17 – Для чего нужно свойство ИдентификаторПользовательскойНастройки
07:10 – Где в типовой конфигурации УТ 11 можно найти пример работы с пользовательскими настройками.
Видео 8 – Особенности использования метода ПолучитьНастройки
00:58 – Почему отличаются значения параметра в настройках компоновщика и в пользовательских настройках
01:23 – Как связываются между собой настройки компоновщика и пользовательские настройки
03:06 – Как работает метод ПолучитьНастройки и значение какого типа он возвращает
Видео 9 – Программное создание отборов в пользовательских настройках
00:34 – Чем отличается отбор в настройках компоновщика и отбор в пользовательских настройках
02:34 – Как используется свойство ИдентификаторПользовательскойНастройки
03:08 – Какой алгоритм должен использоваться для установки значения отбора в пользовательских настройках
03:42 – Как реализовать процедуру для установки значения отбора в пользовательских настройках.
Видео 10 – Программное создание схемы компоновки
00:40 – Как при компоновке отчета программно создать схему, по которой будет формироваться отчет
02:15 – Какой алгоритм должен использоваться для программного создания с нуля схемы компоновки
02:50 – Как программно создать источник данных схемы компоновки
04:00 – Как программно добавить в схему набор данных – объект
06:25 – Как программно добавить поля набора данных.
Хотите научиться грамотно создавать отчеты на СКД и дорабатывать отчеты в типовых конфигурациях?
Чтобы подробнее изучить возможности системы компоновки данных и уверенно применять механизм на практике, рекомендуем пройти курс Профессиональная разработка отчетов в 1С 8.3 на Системе Компоновки Данных (СКД)
В этой статье я расскажу, что такое постобработка в 1С СКД, какие методы постобработки существуют. Вы узнаете, как программно сформировать отчет в СКД, а также я приведу несколько практических примеров постобработки в СКД.
Итак, что же понимается под постобработкой в СКД. Обычно (если не всегда) такое словосочетание применяется для отчетов, построенных на СКД. В результате выполнения отчета пользователем мы имеем какой-то табличный документ. Не всегда с помощью функционала СКД удается получить необходимую форму табличного документа. Поэтому после (пост) выполнения отчета, с помощью методов объекта ТабличныйДокумент выполняется некоторая доработка результата до приемлемого вида (формы).
Чтобы вклиниться в процесс формирования отчета вам необходимо программно получить результат отчета. Поэтому постобработка ВСЕГДА связана с программным формированием отчета. Можно конечно на форме сделать специальную кнопку, чтобы пользователь нажимал ее после формирования отчета, но это будет выглядеть нелепо. Поэтому будем считать, что для постработки отчет на 1С СКД формируется программно всегда.
Есть два способа как можно программно выполнить отчет на СКД:
- Простой. Из формы отчета (нужно чтобы у отчета была форма) вызвать метод СкомпоноватьРезультат. Вы заменяете стандартную кнопку Сформировать собственной командой. В этой команде вызываете указанный выше метод, передав (в случае управляемой формы) режим компоновки – Непосредственно. Затем выполняете постобработку над полученным табличным документом (обычно это реквизит «Результат»). Метод неудобен тем, что нужно добавлять форму (если ее нет), нужно формировать отчет непосредственно, плюс довольно часто для доработки табличного документа нужно переходить на сервер (что не есть хорошо)
- Чуть сложнее. В модуле отчета в предопределенной процедуре «ПриКомпоновкеРезультата» программно формируете отчет. Стандартный шаблон (код) для этого приведен ниже. После получения табличного документа вы выполняете свой код постобработки. Для этого подхода существует еще один вариант реализации, когда обработка выполняется не после формирования табличного документа, а в процессе. Делается это с помощью поэлементного вывода в табличный документ с помощью методов процессора компоновки данных – НачатьВывод, Следующий, ВывестиЭлемент.
С помощью этого шаблона вы можете программно формировать отчет на СКД:
Теперь рассмотрим конкретные примеры, когда вам может понадобиться постобработка. В этих примерах я не всегда буду приводить полный код решения. Где-то будет достаточно идеи, а где-то ссылки на уже готовый отчет.
Вывод картинок
До недавнего времени только с помощью постобработки в отчетах на СКД можно было вывести картинки в отчете. Начиная с релиза платформы 8.3.14 в СКД 1С:Предприятие 8 появилась возможность вывода картинок без постобработки.
Вот такой кусок кода в ПриКомпоновкеРезультата выводить после программного формирования картинку в колонке прайса:
Отчет прайс лист мы разбирали в нашем курсе по СКД
Нумерация колонок отчета
Здесь мы рассмотрим вариант постобработки из формы отчета
Повторение шапки отчета и вывод колонтитулов
В этой статье на Инфостарте разбирается, как с помощью поэлементного вывода можно повторить шапку отчета на каждой странице и как вывести колонтитулы.
Повторение шапки реализуется кодом:
Вывод колонтитулов реализуется через свойство ВерхнийКолонтитул табличного документа:
«Красивые» заголовки для группировок колонок таблицы
Вот так заголовки выводятся совсем некрасиво:
Вот так чуть лучше:
Настройка для такого варианта (для второй и третей группировок колонок):
И только постобработкой (хотя может быть есть какой-то другой секретный способ) можно сделать так:
Вставить разрыв страницы для группировки
В этой статье на Инфостарте рассматривается способ как с помощью поэлементного вывода отчета можно добавить разрыв страницы для группировки в СКД
Одна из задач автоматизации — ускорение работы пользователя, что во многом достигается путем сокращения повторяющихся рутинных действий. У многих пользователей есть постоянные отчеты, для открытия которых они находят команду в меню, вводят отборы и параметры в открывшейся форме, нажимают «сформировать». В таких случаях разработчик 1С может создать команды программного запуска отчета с открытием и настройкой, что позволит сразу получить готовый отчет, а механизм системы компоновки данных, называемый в сокращении СКД, представляет ему для этого обширный инструментарий. В этой статье мы познакомимся с несколькими методами программного запуска отчета с открытием и различной настройкой, из которых каждый сможет выбрать наиболее подходящий.
Сначала получаем форму.
Если отчет хранится в базе тогда выполняем на клиенте код:
Если нужен не «вариант по умолчанию»
Далее получаем настройки:
Через серверный вызов получаем настройки и если нужно заполняем параметры Компоновщика в отдельной процедуре.
Загружаем измененные настройки в компоновщик
Код выполняется на клиенте, сначала мы формируем структуру с необходимыми параметрами формы, а потом вызываем процедуру открытия. Часто используемые параметры в данном случае это:
- СформироватьПриОткрытии — нужен чтобы отчет открылся сразу сформированным.
- Отбор — Устанавливает отбор на результат СКД.
- КлючВарианта — Имя варианта настроек для отчетов с несколькими вариантами.
Сначала получаем схему компоновки данных. Схема может быть получена из разных источников: общий макет, макет прикладного объекта, такого как справочник или отчет, макет из внешней обработки.
Код выполняется на сервере.
Получение локального макета
Получение макета произвольного отчета
Получение макета во внешней обработке
Получение макета из внешней обработки или отчета
Далее мы получаем настройки. Настройки СКД могут быть взяты из разных источников. Мы можем их получить из самой СКД:
Мы можем создать новый компоновщик настроек на основе схемы и получить настройки из него.
Мы можем получить настройки с отдельного компоновщика настроек, добавленного на произвольную форму.
И когда будем формировать
Далее программно заполняем параметры Компоновщика. Об этом подробно в разделе 4 .
Объявляем создаем необходимые объекты:
Создаем макет компоновки с помощью компоновщика макета:
Если результат выполнения СКД нужно вывести в таблицу значений то соответствующий тип генератора нужно указать в параметрах:
Инициализируем процессор компоновки данных
Создаем процессор вывода:
Для вывода в таблицу значений используется другой процессор вывода:
Запускаем процесс вывода:
Теперь мы можем проводить нужные операции с полученными данными.
Если вывод в таблицу значений завершился ошибкой “Не поддерживается вывод таблиц и диаграмм в универсальную коллекцию значений” значит настройки СКД не подходят для такой выгрузки, и нужно их изменить, об этом ниже.
При программном формировании СКД как в пункте 2 у нас есть огромное количество возможностей по управлению отчетом. Опишем самые часто используемые из них.
После того, как присвоено значение переменной СхемаКомпоновкиДанных — через нее мы можем получить доступ к формирующим запросам схемы через свойство коллекцию НаборыДанных . Элемент набора данных имеет интересующее нас свойство Запрос . Это текстовый параметр, содержащий в себе запрос. С помощью функций редактирования текста, его можно изменить, например, добавить отбор по недоступному через КомпоновщикНастроек полю.
Или если с добавлением нового параметра
Также при получении настроек можно выбрать не «настройки по умолчанию», а один из вариантов настроек.
Переменная Настройки содержит в себе всю палитру настроек которая доступна в редакторе СКД в разделе “Настройки”. Наиболее часто из них программно редактируются отборы, параметры и структура, в случае когда отчет с табличной структурой надо вывести в таблицу значений. Рассмотрим их подробнее.
Параметры
Все параметры создаются при создании исходного отчета, исключение если параметр был добавлен при редактировании запроса. Значение существующего параметра устанавливается следующим образом:
Добавление параметра делается следующим образом
Отбор
У отборов нет специальных функций по установке значений. Поэтому нужно перебирать коллекцию циклом.
Этот код установит значение для отбора, а если такого отбора нет в настройках, то добавит. В случае если точно известно, есть или нет такой отбор — то код можно упростить.
Структура
Для адаптации отчета к выводу в таблицу значений нужно очистить структуру группировок отчета и создать поле группировки “Детальные записи”.
Программист может упростить работу пользователя по вводу параметров и отборов если есть некоторая закономерность в них, но они всё таки не фиксированы. К примеру, сравнительный отчет по продажам за этот месяц этого года и аналогичные месяца трех предыдущих годов.
Приведенные примеры кода были протестированы на платформе 1С:Предприятие 8.3 (8.3.13.1690).
В этой статье мы разберем использование макетов в 1С СКД. При разработке отчетов иногда возникает необходимость в более сложной компоновке результата (в табличный документ) чем это позволяют типовые средства. Например, это может быть формирование печатной формы документа типа ТОРГ-12 – и такое тоже можно сделать средствами СКД, особенно если необходимы такие возможности как произвольные отборы. Или это могут быть какие-то особенные элементы отчета, которые нельзя сделать, используя стандартные возможности 1С – например, собственные итоги.
Сначала рассмотрим с вами стандартные возможности подсистемы СКД в 1С, которые позволяют получить отчет заданной формы.
Первое чем определяется форма (структура) отчета в СКД это настройка группировок
С помощью выбранных полей можно определить, какая информация будет выводиться в отчет. В выбранных полях имеется возможность компоновки выводимых полей с помощью групп:
На закладке «Другие настройки» есть также много параметров, отвечающих за компоновку отчетов – расположение полей в группировке, расположение ресурсов, вывод общих итогов, отборов, параметров. Про все эти настройки вы можете прочитать в нашей статье.
С помощью вкладки «Условное оформление» нельзя поменять структуру отчета, но можно сделать визуальное оформление ячеек табличного документа – установить цвет, шрифт, ширину или высоту ячейки и другие параметры.
В этом разделе мы рассмотрели основные типовые средства СКД, с помощью которых можно настроить структуру и оформление табличного документа без использования макета. Если вы использовали все эти возможности, но не получили желаемый результат – переходите к использованию макетов. О чем мы поговорим в следующем разделе.
Итак, вы поняли, что без использования макетов ваш отчет реализовать не получится и приняли решение о его (их) использовании. Должен вас сразу предупредить – применение макетов в отчете на СКД в 1С часто не дает возможность пользователю изменять структуру отчета. То есть макеты, настроенные для одного варианта отчета, могут неправильно работать в другом варианте отчета, если поменялся состав группировок. Если вас устраивает такое ограничение, то продолжим.
Настройка макетов производится на закладке «Макеты». Существуют несколько видов макеты, которые показаны на рисунке:
Основную сложность при настройке макетов вызывает (в том числе у меня) обилие видов макетов в сочетании с типом макета:
В этой статье я не буду расписывать какое сочетание в каком случае имеет смысл применять, потому что это не сильно интересно – это раз. Два – на этот счет есть документация от 1С и есть также хорошая шпаргалка в виде статьи на ИС.
Если мне нужно сделать отчет с использованием макетов, то я не запоминаю все варианты сочетаний, а руководствуюсь только следующими правилами:
- Макет поля. Практически никогда не нужен. Практически все можно сделать с помощью условного оформления. Разве что заполнить как-то хитро параметр расшифровки для этого поля.
- Макет группировки. Используется для строк (колонок), то есть для собственно вывода данных отчета. Используется в основном тип макета «заголовок»
- Макет заголовка группировки. Используется для вывода шапки (таблицы) отчета. Обычно использую этот макет только для первой группировки, чтобы «нарисовать» какую-то хитрую шапку для таблицы отчета (тип макета – заголовок). Если выбрать тип макета «подвал», то можно сделать подавал отчета – с подписями и т.п.
- Макет ресурсов. Используется для группировки заданной таблицей. Используется в основном тип макета «заголовок»
При добавлении любого макета вы можете привязать его к группировке или по имени или по набору полей.
Связывание макета с данными производится через параметры и параметры расшифровки.
В поле выражение вы связываете параметр макета (или параметр расшифровки) с данными. Как видно здесь можно использовать выражения на языке выражений СКД и также имеется доступ через точку к реквизитам объектов.
Нужно также понимать, что добавленные макеты разных видов (группировки, заголовка группировки, ресурсов) в 1С обычно связаны между собой. То есть, например, шапка (макет заголовка) таблицы обычно по количеству полей соответствует строкам (макет группировки), а макет ресурса по количеству полей обычно соответствует макету группировки колонки.
Небольшой пример макета и небольшой лайфхак в этом же отчете. Добавим макеты для отчета, на котором мы тренировались:
Здесь мы добавили макет группировки для группировки первого уровня (настойки отчета на картинке ниже):
И добавили макет заголовка для этой же группировки. Получим результат:
Как видно в отчете выводится заголовок второй группировки, который нам не нужен. Добавим макет заголовка группировки для второго уровня:
И не будем задавать для него область
В этом случае заголовок не выводится как нам было нужно:
Теперь разберем несколько примеров, когда даже с помощью макетов в 1С не получится реализовать задачу.
Первый пример. Казалось бы, простая задача – для отчета с двумя группировками выводить разрыва страницы для каждой строки первой группировки, чтобы новое значение выводилось с новой страницы. Вроде обычная задача для макета – тут по идее нам пригодится макет группировки и тип макета «подвал». Рассмотрим на примере нашего отчета
Мы добавили нужный нам макет. Добавили в область для этого макета разрыв страницы. Чтобы выводился подвал группировки, дополнительно нужно указать его вывод (не только в начале, но и в конце)
В итоге получим
Как видно разрыв страницы не выводится. Видимо удаляется при формировании результата. Такое вот странное поведение системы. По крайней мере в релизе платформы 8.3.14.
Существует вариант решения, основанный на программном формировании отчета и поэлементном выводе. Суть решения заключается в следующем – добавляем новый параметр «разрыв страницы», добавляем группировку, в которую включаем в выбранные поля только этот параметр, выводим программно отчет с помощью поэлементного вывода, при этом анализируем – если выводится строка, содержащая наш параметр, то ее пропускаем и вместо нее выводим разрыв страницы.
Для нашего отчета мы поступим немного иначе – добавлять новую группировку не будем. Ее роль будет выполнять макет подвала, в которую мы выведем наш параметр разрыва.
Текст модуля формирования возьмем из статьи. Учтем комментарий к статье, в котором указано, что мы можем просто пропустить строку с текстом «Разрыв», а не скрывать область, устанавливая ей высоту 1. И получим необходимый результат:
Как видно разрыв страницы теперь выводится.
Второй пример достаточно экзотичный, но также демонстрирует в некотором смысле «бессилие» типовых средств 1С СКД. Суть задачи заключается в том, что в отчет нужно вывести два несвязанных набора данных горизонтально. Типовые средства в СКД позволяют выводить такие наборы только вертикально. По этим двум ссылка приведено решение, которое мы с вами разберем.
Шаг 1. Выводим наши наборы с помощью детальных записей вертикально
Аналогично задаются выбранные поля для расхода.
Шаг 2. Нам нужно разделить таблицы друг от друга. Для этого добавляем макеты заголовка группировки.
Шаг 3. Копируем модуль формирования отчета из статьи и дорабатываем его для своего отчета. Тезисно, что мы делаем в модуле:
Сегодня мы рассмотрим одну из самых частых задач, с которой сталкиваются специалисты по 1С – доработку отчета типовой конфигурации.
О чем эта статья
В статье рассмотрен пример доработки типового отчета «Расчетный листок» в конфигурации «Зарплату и Управление Персоналом 3.0». На данном примере показываются общие шаги разработчика, в случае если он слабо знаком с конкретной реализацией конкретного типового отчета на базе СКД.
Применимость
В материалах статьи в качестве примера используется конфигурация, «Зарплата и Управление Персоналом», редакции 3 3.0.25.122. Но от этого примеры доработки, продемонстрированные в видео, не стали устаревшими, т.к. акцент сделал именно на логике рассуждений разработчика перед которым поставлена подобного рода задача. Смело смотрите видео, это must have!
В качестве конфигурации выбрали “Зарплату и Управление Персоналом 3.0” – в силу следующих причин:
- Отчеты из ЗУП традиционно считаются сложными
- Иногда даже задача – понять, откуда берутся данные в отчет – вызывает у специалистов сложности.
Что конкретно мы будем делать
Это реальная задача из Мастер-группы – доработаем отчет “Расчетный листок” так, чтобы в шапке выводилась информация о дате приема сотрудника на работу.
Очень простая задача :)
Но есть одна сложность – информацию о дате приема типовой отчет не содержит, её нужно получать с помощью отдельного запроса.
И запрос этот нужно интегрировать в типовой отчет…
А параллельно мы разберем и приемы работы с СКД:
- Анализ программного кода типового отчета – определение точек минимального воздействия на конфигурацию
- Использование расширения языка запросов для системы компоновки данных – выражения в фигурных скобках
- Программное формирование отчета на СКД – доработку процедуры ПриКомпоновкеРезультата
- Вывод результата компоновки в коллекцию – дерево значений
- Доработку текста запроса типового отчета – получение связанной информации
- Работу с настройками компоновки – определение структуры, использование нескольких группировочных полей в одной группировке
- Использование макета – табличного документа при выводе отчета на СКД
- Отладку типового отчета, запущенного в фоновом режиме
Итак, поехали! 21 минута видео :)
Видео 1: Как за 10 минут понять логику формирования типового отчета
В этом уроке приступаем к решению задачи по модификации Расчетного листка в ЗУП 3.0.
Суть задачи состоит в том, чтобы вывести в отчет связанную информацию из других объектов – необходимо запросом получать дополнительные данные.
Но прежде, чем писать код, нужно найти точки минимального воздействия – чтобы внести в конфигурацию как можно меньше изменений.
В данном уроке мы показываем, как понять логику формирования типового отчета на СКД с программным заполнением полей и ручным выводом данных в табличный документ.
Видео 2: Как с помощью 2 строк кода изменить заполнение отчета
В уроке показано, как найти, где хранятся требуемые пользователю данные – это могут быть различные объекты системы. В этой задаче очень помогает умение читать объемные запросы.
В итоге задача решается с минимальными изменениями:
- Новая строка в макете
- Левое соединение в запросе
- Две строки в программном коде.
Также из видео Вы узнаете, для чего в запросе может использоваться конструкция “Выбрать Первые 0”.
Эта тема детально раскрыта в курсе:
Поддержка – 2 месяца. Объем курса – 34 учебных часа.
Не откладывайте свое обучение!
Комментарии / обсуждение (65):
Добрый день! Вопрос по УТ 11. В типовых отчётах добавляются доп. реквизиты. Вопрос: как их исключить из отчетов?
Подробнее.
Существует, примерно, 100 видов номенклатуры, к каждому из которых привязан свой набор доп. реквизитов от 5 до 10).
При изменении варианта отчета, где используется номенклатура, при раскрытии её, вываливается список всех доп. реквизитов. Жуткий тормоз. Можно ли сделать так, чтобы при отборе или добавлении поля, не выводились эти доп. реквизиты?
Добрый день!
Нет, поскольку это платформенный механизм – для справочника Номенклатура в конфигураторе настроены характеристики на уровне объектов метаданных. Поэтому они будут добавляться в список полей номенклатуры при работе с отчетами, динамическими списками, т.е. в механизмах, базирующихся на системе компоновки данных.
Рассмотрите вариант переноса доп. реквизитов в обычные реквизиты справочника Номенклатура. Это должно увеличить производительность описанных действий.
Раньше, помнится, надо было настраивать в СКД на закладке “Характеристики”, а сейчас, выходит, на Табл. часть “Доп. реквизиты” программист повлиять не может?
В УТ 11 не требуется заполнять закладку Характеристики в тексте запроса набора данных.
Дело в том, что в этой конфигурации настроены характеристики на уровне объектов метаданных. Например, можно в конфигураторе обратиться к справочнику Номенклатура, в контекстном меню выбрать пункт Характеристики:
Здесь указано, откуда система будет получать перечень характеристик и их значения.
СКД учитывает эту настройку, поэтому дополнительно прописывать характеристики в запросе не нужно.
По поводу переноса в обычне реквизиты. Дело в том, что у каждого вида номенклатуры свои доп. реквизиты и они не пересекаются. Это сколько же их будет?!
Можно на копии базы сделать тестовый пример, проверить производительность и все остальные аспекты, принять решение, стоит ли выполнять такие действия на рабочей базе.
Добрый день! Прошу помощи подскажите пожалуйста?
Клиент попросил доработать типовой отчет в БП 3.0 , конфигурация на поддержке. Было принято решение сделать отчет внешним, но столкнулся с проблемой…
Сохраняю отчет как внешний и пытаюсь открыть его через файл открыть и тут же выдается ошибка “не известный тип объекта метаданных, ВнешнийОтчет.ЗадолженностьПокупателейПоСрокамДолга”. Как победить эту ошибку? В УТ 11.4 таких проблем не возникало.
Добрый день!
Причина ошибки заключается в том, что у внешнего отчета или обработки в принципе нет модуля менеджера. А у отчета или обработки из конфигурации такой модуль присутствует.
В БП в модуле менеджера отчетов есть программный код, а в УТ – нет. Этим объясняется разница в поведении конфигураций.
При сохранении отчета или обработки во внешний файл модуль менеджера будет потерян. Поэтому нужно учесть этот момент, доработать внешний отчет, например, добавив нужные процедуры в модуль объекта.
Альтернативный вариант – создать расширение, в котором реализовать новый отчет, модуль менеджера в таком случае будет доступен.
>> Также из видео Вы узнаете, для чего в запросе может использоваться конструкция “Выбрать Первые 0”
А я так и не понял для чего используется такая конструкция?
Ведь на выходе такой запрос будет возвращать пустую таблицу с колонками.
А как тогда выбираются данные для этой таблицы?
Добрый день!
Этот текст запроса программно при компоновке отчета будет заменен на сложный запрос, который действительно извлекает данные из базы, а нем уже не будет конструкции ВЫБРАТЬ ПЕРВЫЕ 0.
Текст такого запроса формируется программно из отдельных кусочков, временных таблиц, зависит от различных условий, поэтому указать его непосредственно в отчете не получится.
Но в то же самое время нужно определить, какие поля набора данных должны быть в отчете. Для этого создается фиктивный текст запроса в наборе данных отчета. Он не будет выполняться, единственная его задача – описать поля отчета, а также типы данных этих полей.
Благодарю за ответ.
То, что это не запрос, а его “набросок” – это понятно.
Но не понятно назначение конструкции “ВЫБРАТЬ ПЕРВЫЕ 0”. Ведь если ее убрать (заменить на “ВЫБРАТЬ”), то ничего не изменится, т.к. этот запрос все равно не исполняется, а модифицируется из кода.
Да, конечно, не изменится. Но можно выделить 2 способа использования именно такой конструкции:
1. Она обеспечивает формирование пустого результата запроса с набором колонок нужного типа. Если использовать просто ВЫБРАТЬ, то в результате будут данные (одна строка с пустыми значениями).
2. Это может быть удобным маркером, признаком, что именно этот запрос нужно подменить. Потому что в обычном запросе для получения данных из базы такая конструкция точно не будет применяться.
Да. Действительно. Для получения пустой таблицы, указанного пользователем формата – весьма интересный прием.
Благодарю за ответы.
Пожалуйста. Обращайтесь:)
И приходите к нам на курс по СКД. В Мастер-группе отвечаем на Ваши вопросы по СКД.
Процедура Печать(ТабДок, Ссылка) Экспорт
// Макет = Документы.РасчетСтипендии.ПолучитьМакет(“Печать”);
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| РасчетСтипендии.Дата КАК Дата,
| РасчетСтипендии.Номер КАК Номер,
| РасчетСтипендииСтуденты.Студент КАК Студент,
| РасчетСтипендииСтуденты.Группа КАК Группа,
| РасчетСтипендииСтуденты.ТипСтипендии КАК ТипСтипендии,
| РасчетСтипендииСтуденты.НомерСеместра КАК НомерСеместра
|ИЗ
| Документ.РасчетСтипендии.Студенты КАК РасчетСтипендииСтуденты
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасчетСтипендии КАК РасчетСтипендии
| ПО РасчетСтипендииСтуденты.Ссылка = РасчетСтипендии.Ссылка
|ГДЕ
| РасчетСтипендии.Ссылка В(&Ссылка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| РасчетСтипендииРезультатыСдачи.НомерСтроки КАК НомерСтроки,
| РасчетСтипендииРезультатыСдачи.Предмет КАК Предмет,
| РасчетСтипендииРезультатыСдачи.РезультатСдачи КАК РезультатСдачи,
| РасчетСтипендииРезультатыСдачи.Студент КАК Студент
|ИЗ
| Документ.РасчетСтипендии.РезультатыСдачи КАК РасчетСтипендииРезультатыСдачи
|ГДЕ
| РасчетСтипендииРезультатыСдачи.Ссылка В(&Ссылка)”;
РезультатЗапроса = Запрос.ВыполнитьПакет();
Выборка = РезультатЗапроса[0].Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть(“Заголовок”);
ОбластьИнформацияСтудента = Макет.ПолучитьОбласть(“ИнформацияСтудента”);
ОбластьРезультат = Макет.ПолучитьОбласть(“Результат”);
ОбластьРезультатыСдачиШапка = Макет.ПолучитьОбласть(“РезультатыСдачиШапка”);
ОбластьРезультатыСдачи = Макет.ПолучитьОбласть(“РезультатыСдачи”);
ОбластьЗаголовок.Параметры.Заполнить(Выборка);
ОбластьЗаголовок.Параметры.Дата = Формат(Выборка.Дата, “ДФ=dd.MM.yyyy”);
ТабДок.Вывести(ОбластьЗаголовок);
//ТабДок.Вывести(ОбластьРезультаты);
ОбластьИнформацияСтудента.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьИнформацияСтудента, Выборка.Уровень());
ТабДок.Вывести(ОбластьРезультат);
ТабДок.Вывести(ОбластьРезультатыСдачиШапка);
//Выборка = Выборка.РезультатыСдачи.Выбрать();
//Каждому студенту свои предметы
Выборка2.Следующий();
ОбластьРезультатыСдачи.Параметры.Заполнить(Выборка2);
ТабДок.Вывести(ОбластьРезультатыСдачи, Выборка2.Уровень());
Читайте также: