Что такое автополе 1с
В данной статье разберем механизм работы пользовательских полей в системе компоновки данных. Вы можете создать новое пользовательское поле в отчете и запрограммировать в нём собственный алгоритм вывода данных. Название «пользовательское» у него тоже появилось не случайно. Предполагается, что работать с ним будет именно пользователь. Почему пользователь? Потому что эти поля доступны в настройках отчета, то есть Вам не нужно снимать с поддержки конфигурацию и даже не нужно иметь доступ в конфигуратор, чтобы доработать типовой отчет. Этот функционал доступен из пользовательского режима.
К слову, аналогичный функционал создан и для разработчиков, это – вычисляемые поля в отчете. Техническое отличие вычисляемых полей состоит только в том, что в их выражениях можно использовать собственные функции, написанные на языке программирования. Однако на них подробнее остановимся в будущих статьях, здесь же речь пойдет именно о пользовательских полях в 1С.
2. Доработка отчета "Ведомость расчетов с клиентами"
Отработаем следующий кейс: директор требует в типовой отчет ERP «Ведомость расчетов с клиентами» добавить дополнительное поле, которое явно бы указывало, кто должник: мы или партнер. Директор – человек занятой и во все эти цифры вникать времени не имеет. Задачу поставили руководителю отдела продаж. Штатного программиста в организации нет, доступа в конфигуратор также нет, платные работы директор не согласует, а результат нужен через час.
Рис. 1 Пользовательское поле в отчете "Ведомость расчетов с клиентами"
На самом деле уложиться в срок вполне реально. Приступаем.
Проваливаемся в «Продвинутые настройки отчета»
Рис. 2 Продвинутые настройки отчета для добавления пользовательского поля в 1С
Добавляем новое пользовательское поле в СКД, тут два варианта «Выбор» и «Выражение».
Поле выбор – специализированный механизм, работа с ним интуитивно понятна, но круг задач ограничивается выводом значения по заданному условию.
Поле выражение – универсальный механизм, как правило более трудоемкий и требующий больших знаний, однако способный решить гораздо больший круг задач.
Рис. 3 Изменение варианта отчета "Ведомость расчета с клиентами"
Наше поле должно сравнить задолженности и вывести нужное значение. Поле "Выбор" отлично справится с данной задачей, используем его.
В заголовке поля можно использовать пробелы. Добавляем отбор, проваливаемся в выражение.
Переносим долг клиента в отбор, теперь его можно сравнить с любым значением, а если наступить на значение и кликнуть правой кнопкой мышки, появится меню, в котором можно включить сравнение с другим полем.
Рис. 4 Сравнение полей в отчете "Ведомость расчетов с клиентами"
В значении выбираем "Наш долг". Отбор готов – завершаем редактирование условия.
Рис. 5 Завершение редактирования пользовательского поля в отчете
Теперь, если заданное условие будет выполняться, значением поля будет единица (это тоже можно использовать, например, при подсчете должников). Представление – это строка. Если представление не заполнено, в отчет будет выводиться значение поля. Аналогично настроим ситуацию, где должен выводиться маячок о нашей задолженности, только с учебной целью: настроим вывод надписи "Наш" прямо в значении.
Рис. 6 Редактирование пользовательского поля в 1С
В отборе действия аналогичные, только долг клиента теперь будет меньше нашего. Теперь провалимся в значение и видим: типом может быть не только число, но и строка, дата, галочка, а если выбрать тип "поле компоновки", то значением пользовательского поля может быть любое другое поле отчета. Нам нужна строка – выбираем, и теперь можем вписать слово "Наш" в значении.
Рис. 7 Редактирование пользовательского поля СКД
Пользовательское поле в СКД готово, нажимаем «Ок».
Рис. 8 Пользовательского поле в СКД готово
Теперь пользовательское поле в 1С СКД появилось в доступных полях, выводим его в отчет.
Рис. 9 Выводим пользовательское поле в отчет
Сохраним полученный вариант.
Рис. 10 Ведомость расчетов с клиентами с пользовательским полем
В название варианта добавим информацию об особенностях отчета и откроем доступность всем пользователям.
Рис. 11 Открытие доступа пользовательского поля в отчете всем пользователям
Рис. 12 Новая версия Ведомости расчетов с клиентами
Директор остался доволен, наградил выходным 31 декабря, но, как это часто бывает, главный бухгалтер Марья Ивановна была свидетелем Вашего триумфа и нам прилетает новый кейс.
3. Доработка поля "Валюта"
Необходимо в поле валюта добавить код этой валюты в скобочках. Валют много, с кодами им работать удобнее, а скобочки – это красиво.
Казалось бы, что может быть проще. Идем в "Продвинутые настройки", проваливаемся в группировку с валютой, находим её код, добавляем реквизит. Согласно настроек по умолчанию реквизит поля будет вместе с владельцем.
Рис. 13 Редактирование поля "Валюта"
Рис. 14 Результат редактирования поля "Валюта"
Сдаем главбуху, но Марья Ивановна непреклонна. Без скобочек – некрасиво, запятую – убрать, и пусть написано будет по-русски. Переделать!
Вариант решения мы нашли, это – пользовательское поле в СКД. Начинаем с размышлений, какой вариант пользовательского поля в отчете взять? Тут мы ничего не сравниваем, и нам потребуется написать выражение, которые не умеет поле "Выбор", поэтому используем поле "Выражение".
Наберем следующее выражение:
[Валюта.Наименование валюты] + " ( " + [Валюта.Цифровой код] + " ) "
Здесь мы в квадратных скобках прописываем доступные поля или их реквизиты, в кавычках – любые символы (не забывайте про пробелы), а плюсиками мы их всех соединяем в единое целое.
На ранних релизах платформы система не может перевести код валюты в строку и потребуется дополнить выражение командой СТРОКА — вот так :
[Валюта.Наименование валюты] + " ( " + СТРОКА([Валюта.Цифровой код]) + " ) "
Нижнее окошко (Выражение итоговых записей) требуется заполнить, если хотим сделать поле реквизитом, в нашем кейсе этого не требуется, но имейте это ввиду – пригодится.
Рис. 15 Редактирование пользовательского поля "Выражение"
Поле мы создали и можем его вставить в группировку, получив такой результат:
Рис. 16 Результат редактирования пользовательского поля в СКД
Но нам же нужно подменить валюту на наше самописное поле.
Обращаю внимание, просто заменить поле "Валюта" нельзя, даже если при тестировании отчет будет работать, нет гарантий, что при работе обменов или переносе данных из другой программы отчет не сломается. Поле "Валюта2" – это ссылка, а в пользовательском поле используется наименование и код, что может привести к дублям или ошибке.
Надежнее не заменять ссылку на "Валюту", а заменить ее представление. Я не зря упомянул функционал выражения-представления из конфигуратора. Фактически, в нашем кейсе мы движемся тем же путем. У нас есть ссылка – "Валюта", мы создали её представление –"Наименование валюты для бухгалтерии", осталось уговорить программу отображать данное представление валюты в отчете.
Для этого воспользуемся закладкой "Условное оформление". Найдите там параметр "Текст". Проваливаемся, выбираем "Поле компоновки данных", находим наше пользовательское поле для бухгалтерии.
Рис. 17 Поле компоновки данных
Картинка получилась такая
Рис. 18 Результат замены поля "Валюта"
Переходим на закладку "Оформляемые поля" и указываем, что данное представление мы задали для поля "Валюта".
Рис. 19 Представление для поля "Валюта"
Завершаем редактирование. Проверяем отчет, сохраняем вариант.
Рис. 20 Конечный результат в отчете "Ведомость расчетов с клиентами"
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Есть несколько вариантов вывода информации перед основным отчетом,какой лучше?! - зависит от задачи:
Допустим нам нужно вывести дату и время формирования отчета и свою шапку отчета, например так:
Варианты решения:
1. Использование группировки и макета заголовка:
1. Создаем в схеме новую группировку (без поля) и установим имя группировке Шапка отчета.
2. Удалим у данной группировки из выбранных полей автополе
В других настройках выберем макет оформления "Без оформления" (иначе на наш макет будет накладываться стандартный макет и вокруг всех ячеек будет рамка)
На вкладке макеты добавляем макет заголовка группировки (при добавлении указываем наше имя группировки (Шапка отчета) и указываем область с нашими данными), справа в табличном документе пишем необходимый текст и параметр
Сохраняем, формируем и видим результат как выше
2. Программное изменение текста заголовка
Код нужно установить в процедуре модуля отчета ПриКомпоновкеРезультата()
3. Вывод табличного макета с параметром перед формированием отчета
Создаем макет ВыводСформирован, в нем создаем параметр Сформирован и назначаем имя области Заголовок
Похожие FAQ
1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени QR код в 1С 20
Столкнулся с интересной задачей реализации генерации QR-кода в 1С 8.2 ( QR-код — матричный код (двухмерный штрихкод) ) Для генерации было использовано api от google (http://chart.apis.google.com/chart). Вот сайт , который работает с ним. После тог Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 10
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме Посмотреть все результаты поиска похожих
Еще в этой же категории
Ключевые слова и Изображения
Слова упорядочены по частоте использования в тексте
Изображения
Закладка повторяет пользовательский диалог «Настройка» доступный для настройки пользователем параметров отчета.
Заполнение настроек на этой закладке служит для настройки отчета по-умолчанию в пользователь-ском режиме работы отчета.
Окно для настройки отчета доступно в пользовательском режиме отчета, при этом отличие от на-стройки СКД в конфигураторе в том, что можно использовать значения не предопределенных дан-ных из базы данных.
Окно настроек состоит из основного окна, где выводятся списки группировок, таблиц и диаграмм и набора закладок в которых устанавливаются параметры настроек для объектов указанных в секции группировок. Какие именно редактируются настройки в данный момент мы можем указать нажав на кнопку с надписью о том какой объект мы редактируем:
Возможно, редактировать общие настройки для всего отчета, а нажав на соответствующую кнопку можно редактировать настройки исключительно для выбранного объекта: элемента группировки, таблицы, диаграммы.
Закладка «Параметры данных»
На этой закладке устанавливаются значения параметров данных. Список доступных параметров данных определяется на закладке «Параметры» схемы СКД, здесь же устанавливаются только пользовательские значения параметров. Причем доступны только те параметры, для которых в схеме СКД сброшена галочка «Ограничение доступности».
В таблице присутствуют несколько колонок:
1. «Использование» - галочкой пользователь указывает использовать или не использовать данный параметр для формирования отчета.
2. «Параметр» - имя параметра
3. «Значение параметра» - значением параметра или указание, откуда значение параметра можно извлечь. Например, если сбросить текущее значение, нажав на «Х», то нажав на кнопку «Т» откроется выбор типа параметра в диалоге:
Источником может служить, какое либо значение простого типа Строка, Дата, Число, Булево или ссылка на объект в базе данных. А также источником для данного параметра может быть значение другого параметра, для этого нужно выбрать значение «Поле компоновки данных» и выбрать нужное поле из списка параметров.
Для даты можно назначать автоматические значения для подстановки: «Начало этого дня», «Начало этой недели» и т.д.
Закладка «Выбранные поля»
На этой закладке определяются поля, кроме группировок, которые будут выводиться отчет. На за-кладке два списка с доступными полями и выбранными полями. Кроме полей определенных в наборах данных к выводу доступны параметры и системные поля «Номер по порядку», «НомерПоПорядкуВГруппировке», «Уровень», «УровеньВГруппировке», а также пользовательские поля определенные на закладке «Пользовательские поля».
Переносить поля можно двойным нажатием на название в левом окне или воспользовавшись специальной кнопкой в командной панели. Добавлять можно такие элементы «Новое поле», «Новая группа», «Новое автополе». «Новое поле» - добавляет элемент в котором можно выбрать поле из доступного списка полей. «Новая группа» - можно сгруппировать ряд полей под одной шапкой. «Новое автополе» - используется для того чтобы указать, что поля выводимые для группировок будут выбираться из настроек группировки вышестоящего уровня. Например, определив для всего отчета ряд полей-ресурсов, мы, указав новое автополе для группировок. Удалить элементы можно с помощью кнопки Удалить, передвинуть по позиции с помощью кнопок перемещения. Установкой галочек можно регулировать видимость полей в отчете.
После определения набора полей мы можем отредактировать поля в списке, нужно войти в режим редактирования поля, нажать на кнопку выбор и выбрать из списка нужное поле.
Для ресурсов доступны для выбора уточнения для расчетов реквизита: «% в группе» - используется для расчета доли значения ресурса для всей группировки в группе, т.е. в итоге в группе по совокупности значений ресурса будет 100%; «% общий» - общий процент не зависимо от группы по всем значениям ресурса.
Для полей объектного типа справочник, документ и т.д. возможно указать в выбранные поля реквизит объекта.
Закладка «Отбор»
На этой закладке определяются отборы, которые влияют на результат отчета.
Как и на закладке «Выбранные поля» есть два окна, слева все доступные поля СКД для выбора в отбор, в правом элементы и значения которые влияют на отбор. Добавить новый элемент или группу элементов можно также клавишей Добавить. Удалить элементы можно с помощью кнопки Удалить , передвинуть по позиции с помощью стрелок перемещения. Установкой галочек можно регулировать активность того или иного отбора в отчете. После нажатия кнопки «Подобно» в списке элементов отбора добавляются уточняющие реквизиты отбора: «Режим отображения» и «Представление».
После добавления нового элемента в список отборов для редактирования доступны поля:
• «Левое значение» - поле СКД или поле простого типа («Число», «Строка», «Дата», «Булево»), на которое накладывается отбор
• «Вид сравнения» - список возможный условий отбора: «Равно», «Не равно», «В списке», «В группе из списка», «В группе», «Не в списке», «Не в группе из списка», «Не в группе», «Со-держит», «Не содержит», «Заполнено», «Не заполнено»
• «Правое значение» - значение отбора, соответствует значению поля «Левое значение». В случае если «Вид сравнения» равен «В списке», «В группе из списка», «Не в списке», «Не в группе из списка» то для установки доступен список значений
• «Режим отображения» - возможный два варианта «Быстрый доступ» и «Обычный». В случае если установлен «Быстрый доступ» то если это возможно значения для выбора отображаются в виде выпадающего списка, особенно это актуально для небольших редко меняющихся справочников, перечислений или видов характеристик. «Обычный» - способ отображения значений принятый для объектов по-умолчанию в виде формы выбора или списка.
• «Представление» - текстовое представление отбора в сокращенном режиме (если не нажата кнопка «Подробно»), а также представление отбора при выводе отчета.
В отборы можно добавлять группы – которые служат для объединения нескольких отборов, по какому либо критерию «И», «ИЛИ», «НЕ».
Например, нужно объединить несколько условий с помощью оператора «И». Для этого нужно в отбор добавить «Группа И» в этой группе перечислить условия. Допускается вложенность групп, с помощью которых можно создавать сложные условия. Кроме «Группа И» доступны «Группа ИЛИ» и «Группа Не». По-умолчанию просто список условий отбора не принадлежащий, какой либо группе соединен между собой с помощью оператора «И».
Закладка «Сортировка»
На данной закладке указываются поля, по которым производится сортировка.
Добавление полей на данной закладке аналогичное тому, как это делается на закладке «Выбранные поля». Единственный параметр, который указывается в выбранных полях сортировки, это направление сортировки.
Закладка «Условное оформление»
На закладке «Условное оформление» мы указываем, какие поля, условия отборов и условия оформления будут применятся при выводе полей в отчет.
«Область» - список полей, на которые влияет условное оформление.
«Отбор» - условия отбора при которых условное оформление действует
Условия отбора указываются также как и на закладке «Отбор» основного окна настройки компоновки.
«Условное оформление» - при заполнении данного поля выводится окно с выбором возможных опций оформления для указанных полей.
Список возможных опций оформления:
Цвет фона - Определяет цвет фона в ячеках
Цвет текста - Определяет цвет текст в ячейках
Цвет в диаграмме - Определяет цвет линий в диа-грамме
Цвет границы - Цвет линий границы
Стиль границы - Типы линий границы
Стиль границы слева - слева
Стиль границы сверху - сверху
Стиль границы справа - справа
Стиль границы снизу - снизу
Шрифт - Вид шрифта, толщина, наклон и т.д.
Отступ - Количество знаков отступа
Авто отступ - Количество знаков отступа, применяется в группировках
Горизонтальное положение - Положение текста в ячейке по горизонтали
Вертикальное положение - Положение текста в ячейке по вертикале
Размещение - Размещение текста который не помещается в ячейку
Ориентация текста - Ориентация текст в градусах (например, 90-поворот перпендикулярно)
Формат - Форматная строка значения
Выделять отрицательные - Признак того чтобы выделять отрицательные значения
Минимальная ширина - Минимальная ширина ячейки в пунктах
Минимальная высота - Минимальная высота ячеки
Максимальная высота - Максимальная высота
Текст - Текст который выводится вместо значения
Закладка «Пользовательские поля»
На данной закладке можно указать пользовательские поля и формулы, по которым поля будут вычисляться.
При нажатии на добавление поля откроется выбор типа пользовательского поля: «Новое поле вы-бор», «Новое поле выражение».
«Поле выбор» - появляется диалог конструирования нового поля выбора. Данное поле будет принимать заданные значения в зависимости от условия отбора заданного в таблице «Варианты».
«Поле выражение» - используется в случае когда, нужно не меняя схемы компоновки вставить вы-числяемые поля. Например, в схеме указаны ресурсы «Количество» и «Сумма». В пользовательском режиме мы хотим вычислить цену. Для этого мы в поле конструирования выражения вставляем формулу:
В пользовательских полях можно использовать выражения из запросов.
Также для обозначения итоговых записей в выражении нужно использовать агрегатные функции СУММА(..), КОЛИЧЕСТВО(), МИНИМУМ(..), МАКСИМУМ(..)
Закладка «Другие настройки»
На закладке «Другие настройки» определяются настройки, которые влияют на расположение группировок, полей выбора, ресурсов и т.д.
Макет оформления Заданные предопределенные макеты оформления
Расположение итогов Параметр влияет на расположение итогов
Расположение полей группировок
Расположение группировок
Расположение реквизитов
Расположение ресурсов
Расположение общих итогов по горизонтали
Расположение общих итогов по вертикали
Тип заголовка полей
Тип диаграммы
Базовое значение
Пропускать базовое значение
Состав подписей
Режим раздвижения
Отображать таблицу данных
Максимальное значение
Минимальное значение
Окантовка
Градиент
Шрифт
Цвет фона
Стиль линии
Размещение легенды
Полосы измерительной диаграммы
Выводить заголовок
Заголовок
Выводить параметры данных
Выводить отбор
Окно настройки группировок
Настройки схемы компоновки данных могут содержать структуру, включающую в себя доступные элементы настроек.
Такими элементами являются:
• группировка;
• таблица;
• диаграмма;
• вложенный отчет.
Для группировки доступны следующие настройки:
• Флаг использования группировки - если установлен - группировка используется при компоновке;
• Поля группировки - набор полей, по которым осуществляется группировка. Каждое поле группировки системы компоновки данных обладает следующими свойствами:
- Флаг использования поля - если установлен - поле используется;
- Поле группировки - путь к данным поля, по которому осуществляется груп-пировка;
- Тип группировки – тип группировки (Иерархия, Только иерархия, Элемен-ты);
- Тип дополнения – необходимость дополнения дат в периоде;
- Начальная дата - начальная дата периода. Может содержать константное зна-чение, либо значение – поле;
- Конечная дата - конечная дата периода. Может содержать константное значе-ние, либо значение - поле;
Схема компоновки данных представляет собой большой конструктор, состоящий из наборов данных, вычисляемых полей, описания итоговых полей (ресурсов), макетов, вариантов настроек и т.д. Схему компоновки достаточно удобно создавать в конфигураторе при помощи конструктора схемы компоновки.
Но на практике часто встречаются задачи, когда схему компоновки нужно программно создать с нуля или доработать существующую схему при помощи кода на встроенном языке, настроить вариант отчета – добавить отбор, установить условное оформление, добавить группировку и т.д. Такие задачи решаются на внедрениях при адаптации типовых конфигураций фирмы “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С 8.3 - это механизм создания отчетов со сложно структурированной информацией (настройки, детализация и свертка, группировка и отборы, результирующие формы) на основе их декларативного описания. Архитектура: настройка, сама СКД, макет, результат, форма данных (например, таблица). Главной особенностью применения СКД это автоматическая генерация выходной формы и создание отчета без написания кода. Процессом построения отчета можно управлять программно, а непосредственно само исполнение отчета разбивать по этапам. При разработке и отладке удобно использовать КонсольСистемыКомпоновкиДанных.erf , которая позволяет в формате XML выводить промежуточные результаты запросов и анализировать отдельные составляющие СКД.
Функция СозданиеСКД ( НаборДанных , СтруктураРесурсов = Неопределено, АвтоЗаполнениеДоступныхПолей = Истина, ИмяМакета = "" )
// Универсальная функция которая принимает различные наборы данных и возвращающую готовую СКД
//
// Расшифровка параметров функции:
// НаборДанных (Тип: Строка, Запрос, ТЗ, ДЗ) - искомый набор данных
// СтруктураРесурсов (Тип: Структура) - структура полей ресурсов, где ключ - ИмяПоля, Значение(Строка) - агрег.функция
// ИмяМакета (Тип: Строка) - Имя макета оформления
Схема = Новый СхемаКомпоновкиДанных ;
// Заполнение основных данных СКД
ИсточникДанных = Схема . ИсточникиДанных . Добавить ();
ИсточникДанных . ТипИсточникаДанных = "Local" ;
ИсточникДанных . Имя = "ИсточникДанных" ;
Если ( ТипЗнч ( НаборДанных ) = Тип ( "Строка" )) или ( ТипЗнч ( НаборДанных ) = Тип ( "Запрос" )) Тогда
ТекНаборДанных = Схема . НаборыДанных . Добавить ( Тип ( "НаборДанныхЗапросСхемыКомпоновкиДанных" ));
ТекНаборДанных . Имя = "ОсновнойНабор" ;
ТекНаборДанных . Запрос = ?( ТипЗнч ( НаборДанных ) = Тип ( "Строка" ), НаборДанных , НаборДанных . Текст );
ТекНаборДанных . ИсточникДанных = "ИсточникДанных" ;
ТипНабора = "Запрос" ;
ТекНаборДанных . АвтоЗаполнениеДоступныхПолей = АвтоЗаполнениеДоступныхПолей ;
ИначеЕсли ( ТипЗнч ( НаборДанных ) = Тип ( "ТаблицаЗначений" )) или ( ТипЗнч ( НаборДанных ) = Тип ( "ДеревоЗначений" )) Тогда
ТекНаборДанных = Схема . НаборыДанных . Добавить ( Тип ( "НаборДанныхОбъектСхемыКомпоновкиДанных" ));
ТекНаборДанных . Имя = "ОсновнойНабор" ;
ТекНаборДанных . ИмяОбъекта = "ТаблицаИсточник" ;
ТекНаборДанных . ИсточникДанных = "ИсточникДанных" ;
ТипНабора = "Объект" ;
Иначе
Возврат Неопределено;
КонецЕсли;
// Создание структуры СКД
НастройкиСКД = Схема . НастройкиПоУмолчанию ;
// Группировка, записи и автополе СКД
ГруппировкаСКД = НастройкиСКД . Структура . Добавить ( Тип ( "ГруппировкаКомпоновкиДанных" ));
ГруппировкаСКД . Использование = Истина;
АвтоПоле = ГруппировкаСКД . Выбор . Элементы . Добавить ( Тип ( "АвтоВыбранноеПолеКомпоновкиДанных" ));
АвтоПоле . Использование = Истина;
КолонкиТЗ = Новый ТаблицаЗначений ;
КолонкиТЗ . Колонки . Добавить ( "Имя" );
КолонкиТЗ . Колонки . Добавить ( "ТипЗначения" );
КолонкиТЗ . Колонки . Добавить ( "Заголовок" );
Если ТипНабора = "Запрос" Тогда
ПостроительСКД = Новый ПостроительЗапроса ;
Если ТипЗнч ( НаборДанных ) = Тип ( "Строка" ) Тогда
ПостроительСКД . Текст = СокрЛП ( НаборДанных );
Иначе
ПостроительСКД . Текст = СокрЛП ( НаборДанных . Текст );
КонецЕсли;
ПостроительСКД . ЗаполнитьНастройки ();
Для Каждого ВыбранноеПоле Из ПостроительСКД . ВыбранныеПоля Цикл
НовКолонка = КолонкиТЗ . Добавить ();
НовКолонка . Имя = ВыбранноеПоле . Имя ;
НовКолонка . ТипЗначения = ПостроительСКД . ДоступныеПоля [ ВыбранноеПоле . ПутьКДанным ]. ТипЗначения ;
НовКолонка . Заголовок = ВыбранноеПоле . Представление
КонецЦикла;
ИначеЕсли ТипНабора = "Объект" Тогда
Для Каждого Колонка Из НаборДанных . Колонки Цикл
НовКолонка = КолонкиТЗ . Добавить ();
НовКолонка . Имя = Колонка . Имя ;
НовКолонка . ТипЗначения = Колонка . ТипЗначения ;
НовКолонка . Заголовок = Колонка . Имя ;
КонецЦикла;
// Добавление ресурсов СКД
Если ТипЗнч ( СтруктураРесурсов ) = Тип ( "Структура" ) Тогда
Для Каждого ЭлСтруктуры Из СтруктураРесурсов Цикл
// Проверка, а существует ли поле ресурса среди полей набора
Если КолонкиТЗ . Найти ( ЭлСтруктуры . Ключ ) <> Неопределено Тогда
// Проверка на правильность указания агрегатной функции
Если ( ЭлСтруктуры . Значение = "Сумма" )
ИЛИ ( ЭлСтруктуры . Значение = "Среднее" )
ИЛИ ( ЭлСтруктуры . Значение = "Максимум" )
ИЛИ ( ЭлСтруктуры . Значение = "Минимум" )
ИЛИ ( ЭлСтруктуры . Значение = "Количество" ) Тогда
ПолеРесурса = Схема . ПоляИтога . Добавить ();
ПолеРесурса . ПутьКДанным = ЭлСтруктуры . Ключ ;
ПолеРесурса . Выражение = ЭлСтруктуры . Значение + "(" + ЭлСтруктуры . Ключ + ")" ;
ИначеЕсли ЭлСтруктуры . Значение = "КоличествоРазличные" Тогда
ПолеРесурса = Схема . ПоляИтога . Добавить ();
ПолеРесурса . ПутьКДанным = ЭлСтруктуры . Ключ ;
ПолеРесурса . Выражение = "Количество(Различные " + ЭлСтруктуры . Ключ + ")" ;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
// Добавление полей в набор СКД
Для каждого НовКолонка Из КолонкиТЗ Цикл
ПолеНабораСКД = ТекНаборДанных . Поля . Добавить ( Тип ( "ПолеНабораДанныхСхемыКомпоновкиДанных" ));
ПолеНабораСКД . Заголовок = СокрЛП ( НовКолонка . Заголовок );
ПолеНабораСКД . Поле = СокрЛП ( НовКолонка . Имя );
ПолеНабораСКД . ПутьКДанным = СокрЛП ( НовКолонка . Имя );
// Удаление "Неопределено" и "NULL"
Массив = Новый Массив ;
Для каждого ТекущийТип Из НовКолонка . ТипЗначения . Типы () Цикл
Если ( ТекущийТип = Тип ( "Неопределено" )) или ( ТекущийТип = Тип ( "NULL" ))
или ( ТекущийТип = Неопределено) или ( ТекущийТип = Null) Тогда
Продолжить;
КонецЕсли;
Массив . Добавить ( ТекущийТип );
КонецЦикла;
ПолеНабораСКД . ТипЗначения = Новый ОписаниеТипов ( Массив , НовКолонка . ТипЗначения . КвалификаторыЧисла ,
НовКолонка . ТипЗначения . КвалификаторыСтроки , НовКолонка . ТипЗначения . КвалификаторыДаты );
ВыбранноеПолеКомпоновкиДанных = НастройкиСКД . Выбор . Элементы . Добавить ( Тип ( "ВыбранноеПолеКомпоновкиДанных" ));
ВыбранноеПолеКомпоновкиДанных . Поле = Новый ПолеКомпоновкиДанных ( ПолеНабораСКД . ПутьКДанным );
ВыбранноеПолеКомпоновкиДанных . Использование = Истина;
КонецЦикла;
// Оформление СКД
Если Не ПустаяСтрока ( ИмяМакета ) Тогда
МОф = НастройкиСКД . ПараметрыВывода . НайтиЗначениеПараметра (Новый ПараметрКомпоновкиДанных ( "МакетОформления" ));
ЗначениеПараметраВывода = МОф ;
ЗначениеПараметраВывода . Значение = ИмяМакета ;
ЗначениеПараметраВывода . Использование = Истина;
КонецЕсли;
Читайте также: