Отбор в обычной форме на основе СКД в 1С

21.09.15

Разработка - СКД

Отбор в обычной форме на основе СКД в 1С

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

ВЫБРАТЬ
     Контрагенты.Ссылка КАК Контрагент
ИЗ
    Справочник.Контрагенты КАК Контрагенты

 

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

 

   Сколько трудов стоит описать программисту разные виды сравнения (равно, не равно, в списке, в группе…) и исходя из этих видов сравнения дорабатывать свой конечный запрос получения данных.

Рассмотрим, как это можно сделать при помощи СКД. Создадим в нашей обработке Макет с типом Схема компоновки данных и заполним его нашим запросом:

 

На вкладке Настройки добавим новую группировку без детализации и, в нашем примере, поле Контрагент, так как в итоге мы получим все в таблицу значений:

И на вкладке Отбор добавим в отбор Контрагента:

 

Далее в самой обработке создадим реквизит Компоновщик типа КомпоновщикНастроекКомпоновкиДанных:

 

Теперь займемся оформлением формы. Выведем на форму самой обработки Отбор, с которым будет работать пользователь. На форму выведем элемент типа Табличное поле и дадим ему имя Отбор с типом данных Компоновщик.Настройки.Отбор:

 

Далее ниже выведем эелемент Табличное поле с именем Результат и типом ТаблицаЗначений и кнопку Выполнить, по которой и будем выводить таблицу с контрагентами:

Теперь создадим обработчики событий формы ПриОткрытии и обработчик нажатия кнопки Выполнить, код представлен ниже:

Перем Макет;

Процедура КнопкаВыполнитьНажатие(Кнопка)

    Результат.Очистить();

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

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;

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

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

    Если ЭлементыФормы.Результат.Колонки.Количество() = 0 Тогда
        ЭлементыФормы.Результат.СоздатьКолонки();
    КонецЕсли;

КонецПроцедуры

Процедура ПриОткрытии()

    Макет = ПолучитьМакет("Макет");

    ИсточникДоступныхНастроек  = Новый ИсточникДоступныхНастроекКомпоновкиДанных(Макет);

    Компоновщик.Инициализировать(ИсточникДоступныхНастроек);
    Компоновщик.ЗагрузитьНастройки(Макет.НастройкиПоУмолчанию);

КонецПроцедуры

Обработка готова, запустив ее, можно при запуске сразу увидеть в нашем Отборе появившегося Контрагента, у которого можно выбирать любой тип сравнения, а также и добавлять дополнительные строки отбора по реквизитам справочника Контрагенты:

На этом все, надеюсь, данная статья поможет Вам улучшить гибкость отборов в Ваших обработках.

Кононов Сергей

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    245781    1350    419    

1128

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    4947    279    shapa_pro    25    

66

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    15556    ovetgana    112    

105

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    9114    krasnoshchekovpavel    5    

66

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    8300    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    15474    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

СКД – инструмент, на базе которого в современных конфигурациях реализованы практически все отчеты. СКД используется в динамических списках, печатных формах и универсальных механизмах. Если построить простейший отчет может каждый разработчик, то с нюансами знакомы далеко не все. Расскажем о неочевидных на первый взгляд приемах, способных значительно повысить качество отчетов.

24.12.2024    13059    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

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

20.08.2024    9505    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. cerg110 3 22.09.15 10:24 Сейчас в теме
А лучше сделать по отдельным вкладкам(Результат, отбор).
2. orfos 219 22.09.15 11:46 Сейчас в теме
Знаем, делали :) На УФ стало еще проще выводить отборы на форму отчета.
3. chmv 22.09.15 13:20 Сейчас в теме
А все равно интересно
4. Xershi 1541 22.09.15 13:26 Сейчас в теме
Для реквизитов используем типовую обработку ПоискОбъектовВСпискахДанных.
5. user839609 06.11.17 12:19 Сейчас в теме
Как сделать ТабПоле отборов "резиновым", чтобы менять его высоту в режиме Предприятия?
6. user1304317 18.11.20 17:31 Сейчас в теме
Спасибо за статью! Вы лучший!
7. yuraskas 178 24.03.21 09:39 Сейчас в теме
Подскажите пожалуйста, а вот в настройках на закладке отбор есть кнопка "Подробно", которая дает возможность раскрыть группировки отбора. А как на форме сделать, чтобы группировки могли раскрываться?
8. user1046602 09.06.21 13:28 Сейчас в теме
Не работают кнопки сохранить/восстановить настройки. Почему?
Прикрепленные файлы:
9. ResAndDev 23.06.21 07:18 Сейчас в теме
Очень помогла статья, спасибо!
10. n131 25.01.22 17:30 Сейчас в теме
Здравствуйте.
Попробовал.
Не все виды сравнения показывает.
Нет Между.

Не получается сделать выбор по периоду дат документов (от - до).
Не быстрый отбор, а в таблице отбора.

Подскажите, пожалуйста.

Спасибо.
Для отправки сообщения требуется регистрация/авторизация