Отбор на форму (документа, справочника, обработки) с помощью СКД
Добавим на форму реквизит с типом КомпоновщикНастроекКомпоновкиДанных
Найдем отбор и перенесем его на форму
Чтобы отбор отображался компактно на форме у группы, в которой находится отбор, поставим поведение «Всплывающая»
Добавим в процедуру ПриСозданииНаСервере следующий код:
Создадим на форме команду «Загрузить» и добавим код:
Далее добавляем макет с типом «Схема компоновки данных». В набор данных добавим простенький запрос
В поля перенесем все данные, которые хотим видеть в результате
в отбор добавим отборы по умолчанию
В предприятии устанавливаем отбор, также можно добавить новые отборы через точку. Нажимаем кнопку загрузить.
Платформа 1С:Предприятие 8.3 (8.3.18.1289).
Управление торговлей, редакция 11 (11.4.7.128).
Специальные предложения
Чисто гипотетически хочу быстро увидеть строки по определенному виду номенклатуры с ценой, ниже определенной границы при условии, что недостаточного количества по строке для её использования. Прикрутить сюда программную инициализацию механизма для масштабирования на другие объекты и вот уже можно полноценно применять.)
(6)Делал подобный механизм для отбора сотрудников. Этот отбор сотрудников использовался как фильтр. Т.е. только сотрудники из этого фильтра могли использовать тот или иной функционал внешней компоненты.
Фильтры автоматически обновляемые, и регулярно выгружаемые.
Сумбурно, но надеюсь понятна идея
Обновление 09.02.21 10:10
См. также
Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо
В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.
Поле «Отбор» в управляемой форме используя СКД
Несмотря на опыт работы, такая задача, как вытащить отбор СКД на управляемую форму, часто становится многочасовой потерей времени.
Поэтому реализовал пример, который осуществляет отбор ссылок при помощи СКД.
Работает, например, в УТ 11.4.
Для реализации примера достаточно добавить поля в новую обработку согласно изображениям. У поля «ОбъектНазначения» 2 события:
«ОбъектНазначенияОкончаниеВводаТекста» И «ОбъектНазначенияНачалоВыбора», параметр кнопка выбора «Да»
И добавлена одна команда «Отобрать» с одноименным событием.
Привожу модуль формы:
Скачать файлы
Специальные предложения
Обновление 17.05.19 08:00
См. также
Шпаргалка разработчика для работы с формами Промо
Сборник помогает быстро освоить встроенный язык и средства конфигурирования при разработке обычных и управляемых форм.
31.10.2018 18479 87 ELAM 3
K-SOFT: Улучшенная форма отчета
Если вы любитель добавлять много отборов на форму отчета, и вас раздражает, что отборы занимают большую часть отчета, и их никак не убрать, то вам сюда. Простая доработка, что позволит скрыть отборы на время анализа отчета.
19.05.2021 6185 6 karpik666 18
Отчет с выводом заголовка на СКД
Отчёты «Ведомость товаров на складах» демонстрируют два способах вывода заголовка на СКД. Эти отчеты тестировались на конфигурации Управление торговым предприятием для Казахстана, редакции 2.0.19.2. Могут работать на любой конфигурации, если имеются регистры накопления «ТоварыНаСкладах» и «РеализованныеТовары».
07.04.2021 2017 3 softmaker 0
1С Специалист ЗУП 3
Решение билетов по 1С Специалист ЗУП 3. Решения подготовлены на Зарплата и Управление Персоналом 3.1.12.144
16.04.2020 4699 25 MoiseevSN 11
Каталог игр с приставок из моего детства Промо
Каталог игр Dendy, Sega, Nintendo из нашего детства.
06.02.2018 17444 70 user621724_Dimav1979 37
СКД. Объединение ячеек на примере «Справка инвентаризации расчетов с покупателями и поставщиками по форме ИНВ-17»
Шпаргалка. Объединение ячеек в отчете на СКД с произвольным макетом.
11.03.2020 10527 1 boobzx 7
Создание контекстного отчета на БСП (Лист ознакомления с графиком отпусков, ЗУП 3.1)
Создание контектного отчета с использованием БСП 3.1.2. Внешний отчет Лист ознакомления с Графиком отпусков для программы ЗУП 3.1.12.
03.03.2020 4833 2 angler225 0
СКД: красивые надписи в заголовках колонок
Необходимо немного исправить вывод надписей в заголовках колонок, сделать более читаемый вариант. Как это сделать?
27.02.2020 13171 8 wowik 36
Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула Промо
Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.
29.12.2017 54435 38 agent00mouse 0
Отбор в обычной форме на основе СКД в 1С
Нередко программистам для написания обработок приходилось использовать запросы для получения данных и последующей их обработке. Данные в свою очередь, получались из запроса. Ну а запрос без отбора или фильтра это редкость. Поговорим об отборах в таких запросах, на примере запроса:
Для того, чтобы организовать отбор по контрагенту для пользователя в обычной форме, программисту приходилось размещать три элемента на форме, что выглядело примерно так:
Сколько трудов стоит описать программисту разные виды сравнения (равно, не равно, в списке, в группе…) и исходя из этих видов сравнения дорабатывать свой конечный запрос получения данных.
Рассмотрим, как это можно сделать при помощи СКД. Создадим в нашей обработке Макет с типом Схема компоновки данных и заполним его нашим запросом:
На вкладке Настройки добавим новую группировку без детализации и, в нашем примере, поле Контрагент, так как в итоге мы получим все в таблицу значений:
И на вкладке Отбор добавим в отбор Контрагента:
Далее в самой обработке создадим реквизит Компоновщик типа КомпоновщикНастроекКомпоновкиДанных:
Теперь займемся оформлением формы. Выведем на форму самой обработки Отбор, с которым будет работать пользователь. На форму выведем элемент типа Табличное поле и дадим ему имя Отбор с типом данных Компоновщик.Настройки.Отбор:
Далее ниже выведем эелемент Табличное поле с именем Результат и типом ТаблицаЗначений и кнопку Выполнить, по которой и будем выводить таблицу с контрагентами:
Теперь создадим обработчики событий формы ПриОткрытии и обработчик нажатия кнопки Выполнить, код представлен ниже:
Обработка готова, запустив ее, можно при запуске сразу увидеть в нашем Отборе появившегося Контрагента, у которого можно выбирать любой тип сравнения, а также и добавлять дополнительные строки отбора по реквизитам справочника Контрагенты:
На этом все, надеюсь, данная статья поможет Вам улучшить гибкость отборов в Ваших обработках.
Отбор компоновки данных в колонке таблицы формы
Из данной ситуации вышел следующим образом:
При начале редактирования инициализируются доступные поля отбора
Основные сложности начинаются, когда эти отборы необходимо сохранить и восстанавливать где-нибудь в табличной части справочника. После чтения на сервере доступные поля отбора теряются при передаче на клиент. Изменение отбора в одной строке приводит к изменению отбора в других строках.
Выкрутился тем, что сохранял копию настроек компоновки данных и при необходимости инициализировал уже из копии настроек.
Приложил конфигурацию, в которой организовано хранение отборов компоновки данных в табличной части справочника. С возможностью редактирования, чтения, сохранения отборов. Версия 8.3.1 и выше.
Скачать файлы
Специальные предложения
Обновление 30.11.17 10:05
См. также
Универсальный редактор данных (УРД) Промо
27.08.2021 5478 118 Adeptus 51
Конвертация данных 3 расширение: Редактор кода.
08.09.2020 11565 30 Viktor_Ermakov 32
Предлагаю широкой общественности расширение А1Э, используемое в нескольких продуктивных базах для выполнения широкого круга задач.
14.08.2020 13656 0 Enigma 47
Генерация кода для автоматизированного тестирования
28.07.2020 4008 10 rsamt 2
Программа Faster 9.4 позволяет ускорить процесс работы программиста (работает в любом текстовом редакторе). Подсказка при вводе текста на основе ранее введенного текста и настроенных шаблонов. Программа Faster позволяет делится кодом с другими программистами в два клика или передать ссылку через QR Код. Исправление введенных фраз двойным Shift (с помощью speller.yandex). Переводчик текста. Переворачивает текст случайно набранный на другой раскладке. Полезная утилита для тех, кто печатает много однотипного текста, кодирует в среде Windows на разных языках программирования. Через некоторое время работы с программой у вас соберется своя база часто используемых словосочетаний и кусков кода. Настройка любых шорткатов под себя с помощью скриптов. Никаких установок и лицензий, все бесплатно.
24.05.2012 84626 965 moolex 157
Должно быть NULL в регистре бухгалтерии Хозрасчетный
Обработка проверяет наличие и решает проблему с ошибкой развернутого сальдо в Оборотно-сальдовой ведомости (регистр бухгалтерии Хозрасчетный) из-за ошибки Универсального редактора реквизитов или кода программиста, устанавливающего пустые ссылки в значениях Валюты, Подразделения, Направления деятельности не равными NULL. И пересчёт итогов тут точно не поможет.
21.10.2019 18329 74 sapervodichka 33
CF & SQL : конструктор прямых запросов к БД 1С
Программа для чтения и анализа внутренней структуры данных 1С V8.х, Содержит конструктор прямых SQL запросов, позволяет обрабатывать и редактировать тексты SQL-запросов, выполнять прямые запросы к базе данных 1С и обрабатывать полученные результаты.
02.10.2019 30334 296 dmitrydemenew 63
Сервис «Конструктор запросов» (управляемое приложение без использования модальности)
Версия уже давно созданной обработки для отладки запросов в режиме предприятия. Создавалась с нуля, приоритетным отличием от существующих аналогов является то, что результаты запроса и содержимое временных таблиц выводятся не в табличные документы, а в таблицы и дерево значений, что по моему мнению более «читабельно» и даёт возможность поиска по значениям результата. Обработка намного сократила время на получение отлаженного запроса, а также позволила однократно обрабатывать данные без создания простых обработок в режиме «Конфигуратор». Разрабатывалась и тестировалась на версии платформы 8.3.12. Исправлена для поддержки версии платформы 8.3.15.1700
19.09.2019 5329 9 KPAMOP 5
Установка предопределенных элементов: просмотр, исправление и поиск ошибок (задвоенных и отсутствующих) Промо
Простая обработка для просмотра и установки значений предопределенных элементов. Позволяет заменить значение предопределенного элемента с одного элемента справочника на другой, удалить предопределенный элемент (снять пометку предопределенности), установить пометку переопределенного элемента. Проверяет предопределенные данные на наличие задвоений и отсутствующих. Работает со справочниками, планами счетов, планами видов характеристик, планами видов расчетов.
06.10.2014 169452 2757 ekaruk 170
Конвейер проверки качества кода
Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.
04.09.2019 37615 27 Stepa86 46
Полные имена открытых форм
Обработка показывает полные имена управляемых форм, открытых в сеансе.
06.08.2019 5444 5 Yashazz 2
Обработки генерации кода для создания справочника/документа
Обработка позволяют быстро накидать текст создания документа или справочника.
02.08.2019 3947 5 bes_d 3
[Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении Промо
Расширение позволяет без изменений конфигурации проверять остатки по регистру бухгалтерии при проведении каждого документа и запрещает проведение при появлении отрицательных остатков после проведения.
17.08.2015 54692 170 ekaruk 32
Модель объекта
Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.
30.06.2019 16502 1 vadim1980 5
Модификация управляемых форм
Подсистема позволяет изменять управляемые формы типовой конфигурации с помощью макета табличного документа, что позволяет упростить процесс обновления. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.
29.06.2019 7490 3 vadim1980 3
Генерация QR кодов через API Google (обычные и управляемые формы)
22.06.2019 8023 9 lisrws 5
[x1c.ru] 1CDBin: Работа с файлами *.1CD на низком уровне средствами языка 1С с возможностью чтения таблиц (поддерживается формат 8.3.8.0) Промо
Обработка позволяет просматривать файловые базы 1CD на низком уровне средствами встроенного языка. Реализована часть функциональности Tool_1CD, но на языке 1С Предприятия. Показываются таблицы, параметры таблиц, поля таблиц, записи таблиц, значения полей BLOB, есть 16-ричный просмотр страниц базы и консоль кода. Можно использовать для изучения структуры файлов 1CD, просмотра баз 1CD для выявления повреждений, создания своих обработок для выгрузки данных без открытия исследуемой базы в 1С:Предприятии.
07.10.2014 62897 392 GusevNA 78
Вывод таблицы значений в табличный документ через СКД
Простой способ вывода таблицы значений в табличный документ, используя схему компоновки данных.
20.06.2019 8763 30 servs 5
Выполнение кода (Предприятие 1С)
Выполнить код, Управляемая форма, Обычная форма, Конструктор запросов.
06.06.2019 5992 4 t_prog 6
Переводим рутину ручного тестирования 1C на рельсы Jenkins-а и ADD
Вы все еще тестируете свои конфигурации 1С вручную? Да вы просто тратите жизнь впустую! В данном туториале попробуем скрестить ADD и jenkins для автоматического запуска тестов.
03.06.2019 37013 9 ripreal1 92
Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.
09.01.2019 62164 269 informa1555 236
СКД не только для отчетов – реализация универсальных отборов
Для чего может применяться СКД?
Устоявшееся мнение – для отчетов.
На самом деле возможности СКД выходят за рамки построения универсальных отчетов.
И сегодня мы покажем, как с помощью СКД пользователь сможет настраивать гибкий отбор данных. Далее этот отбор будет использоваться при получении и обработке данных.
Для каких задач это будет полезно?
Приведем примеры из типовых конфигураций:
То есть инструмент полезен везде, где нужно предоставить пользователю широкие возможности отбора.
Что важно – есть возможность сохранить в ИБ настроенные отборы для дальнейшего использования. Так, например, можно зафиксировать сегменты партнеров.
Создание произвольного отбора в управляемой форме с использованием СКД
В уроке рассмотрена работа с компоновщиком настроек схемы компоновки данных:
Получение данных из базы с фильтрацией по отбору СКД
В видео показано, как можно выбрать данные с помощью ранее установленного отбора в компоновщике настроек.
Используется “страшный” объект – ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.
На самом деле, не все так сложно – за 8 минут мы решаем поставленную задачу.
Хранение отборов СКД в информационной базе
В уроке рассмотрим сохранение настроек компоновщика СКД с помощью Хранилища значений.
Разбираемся, как решить эту задачу в конфигурации “1С:Управление производственным предприятием 1.3”.
Вообще, СКД предоставляет массу возможностей.
Вот несколько “фишечек”, которые мы даже не успели описать на странице курса.
Если нужно собрать данные из разных источников, есть три варианта.
Можно пытаться составлять один “универсальный” запрос для всех данных (долго), можно в цикле выводить данные нескольких запросов (жесткая, негибкая структура) – а можно просто задействовать СКД и соединение наборов данных вместо одного запроса.
При этом важно получить корректные итоги – в этом есть особенности, если источников несколько
При помощи СКД можно просто получить срез последних на каждую дату в отчете.
Или, для наглядности, – получить цену товара на каждую дату продажи.
С помощью СКД можно организовать вывод в отчет всех дат за период, а не только тех, на которые были данные в отчете (дополнение дат без программирования, только возможностями СКД)
С помощью СКД можно организовать вложенные группировки с дополнением периодов (год/квартал/месяц и т.д.)
Произвольно оформить отчет, например, вывести заголовок колонки вертикально, а данные в этой колонке – горизонтально.
Дать пользователю самому выбирать периодичность, с которой данные будут выводиться в отчет (по годам, по кварталам, по месяцам) – исключительно настройками, без редактирования модуля отчета.
Как в отчете соединить несколько условий по ИЛИ? Такой возможности, например, в построителе отчета нет – но есть в СКД
Если Вы выводите сводные данные в виде диаграммы, нужно уметь точно управлять внешним ее видом: видимостью маркеров для серии, чередованием цветов серий графика, отделять на графике вертикальной линией прошлые данные от будущих и т.п.
Безусловно, здесь есть и нюансы, на которые нужно обращать внимание
При создании отчета разработчик отладил текст запроса, но при использовании этого запроса в отчете на СКД система выдает неверный результат.
Поэтому важно уметь получить запрос, который на самом деле выполняет система для получения данных из базы, и отладить такой запрос.
При добавлении в отчет детализации до документа-регистратора система иногда выдает “некорректные” начальные и конечные остатки.
Поэтому важно корректно настроить поля в отчете на СКД, чтобы остатки выводились корректно и с детализацией до документа, и без нее.
Результат отчета может измениться в зависимости от того, где настроен отбор по значению ресурса – на уровне отчета и на уровне отдельной группировки, за этим нужно следить.
Если Вы хотите профессионально освоить СКД и ежедневно применять в своей работе, записывайтесь на курс:
Поддержка – 2 месяца. Объем курса – 34 учебных часа.
Не откладывайте свое обучение!
Комментарии / обсуждение (55):
Здравствуйте, м.б. не в тему, но как мне, например, программно (не нажимая на пиктограмму корня) развернуть/свернуть дерево динамического списка, которое группируется при помощи компоновщика настроек?
Добрый день!
В БСП в общем модуле СтандартныеПодсистемыКлиент есть готовая процедура РазвернутьУзлыДерева, которая разворачивает узлы дерева на форме.
В процедуре используется метод Развернуть таблицы формы. По аналогии можно использовать метод Свернуть для сворачивания дерева.
Ошибка:
<ОбщийМодуль.СтандартныеПодсистемыКлиент.Модуль(861)>: Метод объекта не обнаружен (ПолучитьЭлементы)
Узлы = Форма[ИмяЭлементаФормы].ПолучитьЭлементы();
Предполагаю, что дело в типах данных. В комментарии перед процедурой есть комментарий:
ИмяЭлементаФормы – Строка – имя элемента с таблицей формы (деревом значений) и связанного с ней реквизита формы (должны совпадать).
А в Вашем случае получается, что Список – это не дерево значений. Поэтому данный метод и не работает.
Значит, идентификатором строки динамического списка будет ссылка справочника, который является основной таблицей списка.
Можно попробовать выбрать программно все значения группировок и передать их в метод Развернуть:
Т.е. программно выполняем действия по последовательному разворачиванию всех групп из справочника.
Все не так (жаль, невозможно присоединить снимок), постараюсь описать на словах.
Есть форма справочника “Файлы”. Справочник – не иерархический.
На форме есть элемент, он же – реквизит – “Список”. У реквизита “Список”, тип – Динамический список. У элемента “Список”, отображение – Дерево.
Так же есть реквизит – “Файл”, тип – СправочникСсылка.Файлы.
В этом динамическом списке – “Список”, отображены UNC-пути к файлам.
Этот список можно настраивать стандартным интерфейсным механизмом – Настройка списков.
Список имеет многоуровневую группировку.
Задача: необходимо кнопкой сворачивать/разворачивать многоуровневую группировку.
У меня это получается при помощи кода:
ВершинаДерева = Элементы.Список.ТекущаяСтрока;
Если Элементы.Список.Развернут(ВершинаДерева) Тогда
Элементы.Список.Свернуть(ВершинаДерева);
Иначе
Элементы.Список.Развернуть(ВершинаДерева, Истина);
КонецЕсли;
Но вся проблема состоит в том, что это работает, когда находишься на какой-то конкретной строке (ТекущаяСтрока), а требуется, чтобы независимо на какой строке находишься, по нажатию кнопки, группировка сворачивалась/разворачивалась.
Используемая конфигурация: 1С:PM Управление проектами.
В целом у Вас получился такой же код, как и в моем предыдущем комментарии.
Существует один метод Развернуть, который разворачивает ветвь дерева. Нужно этому методу передать правильные параметры – вызвать его для тех строк, которые требуется развернуть.
Для этого нужно определить список всех идентификаторов строк, которые должны быть развернуты. В моем примере это группы справочника (ссылки, т.к. основной таблицей динамического списка является справочник Номенклатура), в Вашем случае будут определяться по другой логике. Вот эту логику и необходимо реализовать – определить, какие именно строки дерева должны развораиваться, затем программно их развернуть.
Также важно, что ТекущаяСтрока для динамического списка содержит значение, идентифицирующее строку (это может быть как порядковый номер, так и ссылка в зависимости от того, есть ли основная таблица у динамического списка). Со ссылками в общем случае будет удобнее работать, удобнее идентифицировать строки списка.
Или еще вариант – вместо динамического списка сделать дерево на форме, тогда можно будет использовать метод СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева.
Вот таким образом я представляю себе решение задачи.
Добрый день!
1. Разработчики платформы рекомендуют для управляемых форм применять такой способ – поместить схему во временное хранилище и инициализировать источник доступных настроек полученным адресом:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СКД = РеквизитФормыВЗначение(«Объект»).ПолучитьМакет(«Макет»);
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресВоВременномХранилище);
КомпоновщикНастроек.Инициализировать(ИсточникНастроек);
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
В противном случае может возникать непонятное поведение системы, например, в пользовательском режиме список доступных полей отбора окажется пустым.
Тут дело в том, что в управляемом приложении на клиенте схема компоновки данных отсутствует. Подробнее в статье на сайте ИТС – Редактирование настроек для не основной схемы компоновки данных.
2. Для объектов из основной конфигурации можно использовать указанный фрагмент кода, чтобы не получать сам объект:
В типовых конфигурациях в большинстве случаев так и делается.
Но если мы создаем внешнюю обработку, то так сделать не получится, поэтому выполняем конвертацию реквизита формы в значение: