Для этого на вкладках Включать в доступные поля и Ограничение доступности можно поставить или убирать флажок, чтобы активизировать данные свойства.
СКД и таблицы значений
День добрый. В сегодняшней статье хотел бы рассказать о том, как использовать инструмент СКД для выборки данных из разных источников и выводе результата в таблицу значений.
СКД — система компоновки данных. Появился этот инструмент в 1С 8.2. Чаще всего этот инструмент используется для быстрого построения отчетов практически без применения программирования. Но есть у СКД и другое применение — обработка произвольных наборов данных заранее не известной структуры.
Настройка параметров отчёта, внешние функции СКД. | Всё о программировании на 1С: Предприятие
От теории к практике
Дана обработка, которая позволяет удалять любые данные. При запуске обработка анализирует объекты метаданных и создает список, в котором выбираются нужные объекты. Теперь в эту обработку необходимо добавить возможность отбора, что бы не выбирать из списка со всеми объектами по одному.
Цифрой 1 обозначена таблица из НастройкиОтбора.Настройки.Отбор.ДоступныеПоляОтбора
Цифрой 2 обозначена таблица из НастройкиОтбора.Настройки.Отбор
На этом подготовительный этап собственно и заканчивается. Далее требуется при закрытии этой формы вернуть в основную форму обработки настройки схемы компоновки данных. Есть разные способы это сделать, но к теме статьи это не имеет отношения.
Для начала создадим схему и укажем источник данных. В нашем случае СКД будет брать данные из внешней таблицы.Возможно использовать в качестве источника разные объекты. Часто источником выступает «Запрос», но в этом случае схема обработки данных менее наглядна.
Далее добавляем поля СКД и установить их связь с полями источника данных.
В моем случае источник данных это таблица значений, которая формируется из всех полей объекта метаданных. Выглядит этот запрос следующим образом:
В запросе код «ОбработкаОбъект().СтрокаДляЗапросаТипа(ВидМетаданных, ВыборМетаданные)» отвечает за получение имени объекта метаданных для использования в запросе.
Промокоды на Займер на скидки
Далее для работы отбора необходимо добавить поля схемы компоновки данных. Если поле, что указано в отборе не будет добавлено, то это приведет к ошибке. Перебор полей настроек отбора выполняется, как у любой коллекции в 1С:
Следующим шагом будет создание компоновщика настроек для нашей СКД:
Последняя строка отвечает за загрузку настроек, которые были сделаны в форме отбора и переданы в родительскую форму. Дальше производим донастройку СКД:
Первый блок кода указывает схеме компоновки данных, что для вывода будет использовано одно поле — «Ссылка», а второй блок содержит указание, что выводится детальную запись.
На этом шаге уже имеется готовый набор данных, обработанный нашей схемой компановки и осталось только вывести их в таблицу значений, но тут есть своё нюанс: таблица значений, в которую мы будем выводить данные, должна быть создана и иметь колонки с названиями нужных названием полей, как в СКД. Все остальные колонки будут проигнорированы.
Теперь осталось только вывести данные в таблицу значений через обход коллекции:
Теперь создана таблица значений, которая содержит выборку по заданным правилам.
Создаём новый файл, это можно сделать нажав на значок на панели быстрого доступа или воспользоваться меню Файл пунктом Новый.
1С скд вычисляемые поля условие если
В схеме компоновки данных определим набор данных — запрос:
В приведенном запросе получаются данные из регистра продаж и регистра планов продаж. Результатом запроса будет таблица, где для каждого подразделения и каждой номенклатуры будет получено плановое и фактическое количество продаж.
Определим вычисляемое поле. Для этого перейдем в конструкторе схемы компоновки данных на вкладку Вычисляемые поля и добавим поле.
Назовем поле ПеревыполнениеПлана . В качестве выражения поля введем:
Таким образом, значением данного поля в случае, если значение поля СтоимостьПлан равно 0 , будет строка Не запланировано , и процент от перевыполнения плана в противном случае.
Для того чтобы в результат данное поле выводилось с точностью два знака, установим для поля в оформлении формат ЧДЦ=2 .
Определим настройки отчета, для этого добавим группировку — детальные записи (группировку без полей группировки) и в выбранные поля добавим поля Номенклатура , Подразделение , Стоимость план , Стоимость факт , Перевыполнение плана .
Т.е. для каждой строчки было рассчитано значение вычисляемого поля.
Для того чтобы по вычисляемому полю можно было рассчитывать итоги, добавим данное поле в список ресурсов. В конструкторе схемы компоновки это делается на вкладке Ресурсы . Выберем поле и добавим его в список ресурсов. Аналогичную операцию выполним и для полей СтоимостьПлан и СтоимостьФакт .
Теперь в итог отчета будет выводиться сумма по полям, в том числе и по полю ПеревыполнениеПлана :
Однако, простым суммированием, мы получили не вполне адекватный итог по перевыполнению плана. Мы получили сумму процентов по каждой комбинации Номенклатура / Подразделение .
Для того чтобы получить правильный итог по выполнению плана изменим формулу расчета итога по полю Выполнение плана :
В этой формуле уже получается не сумма отношений факта к плану, а отношения суммы факта к сумме плана. Кроме того, в итоге учитываются только те записи, для которых был установлен план.
Как правило, в основе набора данных Схемы Компоновки Данных (СКД) лежит запрос. Запросы в программе 1С: Предприятие предоставляют программисту богатые возможности для получения данных. В связи с этим возникает вопрос, зачем нужны еще и вычисляемые поля?
Думаю, что никого не удивлю, если скажу, что не все поля можно выразить с помощью запроса.
Рассмотрим несколько примеров, как пользоваться вычисляемыми полями.
Создадим новый отчет и зайдем в Схему Компоновки Данных. Вычисляемые поля 1С СКД настраиваются на одноименной вкладке:
Колонка «Путь к данным» задает наименование поля. В колонке «Выражение» прописывается формула для вычисления поля. Можно использовать арифметические выражения, конструкцию «ВЫБОР КОГДА ТОГДА КОНЕЦ», и даже обращаться к экспортным функциям общих модулей системы.
ВЫБОР КОГДА СуммаНачОстаток > 0 ТОГДА
«Имеется долг за организацией»
ИНАЧЕ «Долг отсутствует» КОНЕЦ
Краткое описание | Путь к данным | Выражение |
Вычисление суммы отклонения | Отклонение |
1С скд вычисляемые поля условие если
В выражениях системы компоновки данных помимо внутренних функций, можно использовать экспортные функции серверных общих модулей глобальных и не глобальных.
Использование функций внешнего отчета в вычисляемых полях системы компоновки данных. Добавлена поддержка расшифровки.
Нужно ли при необходимости использования новой функции в вычисляемых полях СКД всякий раз описывать её в общем модуле ?
НЕТ ! Если один раз описать в общем модуле универсальную функцию.
По предложению sam441 добавлена поддержка расшифровки в отчете.
В демонстрационном примере расшифровка открывается для всех полей отчета.
Некоторым эта статья покажется диким баяном — бабаяном . но не все же являются матерыми одинэсниками в седьмом поколении. Так что эта статья для тех, кто не является.
- в сопровождаемую конфигурацию внедряем экспортную функцию общего модуля;
- добавляем параметр со своим любимым именем в макет СКД отчета (в примере это имя «Отчет»);
- в модуле формы этому параметру при запуске отчета присваиваем значение объекта;
- в вычисляемом поле вызываем функцию модуля отчета через посредника — функцию общего модуля, например: ом.Фу(&Отчет,»Ф2″,Наименование,5). В этом вызове &Отчет — это введенный нами параметр, Ф2 — имя функции, размещенной в модуле отчета, Наименование и 5 — это аргументы, которые будут переданы в Ф2.
Небольшой пример: демо-база и демонстрационный внешний отчет для управляемого приложения прилагаются. Но и для обычного нет преград. Тоже всё работает. Представленная технология позволяет вызывать экспортные функции модулей внешних отчетов и обработок.
Внедрение одной небольшой универсальной экспортной функции-посредника в общий модуль конфигурации позволяет забыть об ограничении платформы — разрешении на использование в вычисляемых полях СКД только экспортных функций общих модулей конфигурации.
В ходе тестирования обнаружилось различное поведение конфигурации при запуске под платформой 8.3, несмотря на то, что установлен режим совместимости с версией 8.2.16.
Сравнивались версии платформы 1С:Предприятие 8.3 (8.3.2.172) и 1С:Предприятие 8.2 (8.2.17.153)
Тестирование для режимов запуска «Тонкий клиент» и «Толстый клиент (управляемое приложение).
В серверной функции модуля формы внешнего отчета в платформе 8.2 успешно работает метод
ПоместитьВоВременноеХранилище(ЭтотОбъект,УникальныйИдентификатор) и в «Толстом» и в «Тонком» клиентах.
При запуске под платформой 8.3 метод не работает (и в «Толстом» и в «Тонком»), отображается сообщение об ошибке:
«Переданное значение не может быть помещено во временное хранилище».
Пока не знаю — это баг 8.3 или запланированное изменение поведение системы. Странно, что это проявляется в режиме совместимости с 8.2. На всякий случай отправил письмо на v8@1c.ru с описанием ситуации.
Объектная Схема компоновки данных в 1С 8. х
Микрофинансирование → Микрокредиты → Специальные предложения → Скачать файлы → Обзор Быстроденег → Предмет договора → Ответственность сторон → Отличные наличные→ Экспресс займы
💥Принимайте участие в опросе и получайте бесплатную консультацию
Кредиты в регионах: Москва · Санкт-Петербург · Новосибирск · Екатеринбург · Казань · Нижний Новгород · Омск · Самара · Краснодар · Саратов
Спасибо!
В ближайшее время мы опубликуем информацию.