Вывод вариантов СКД в таблицы на управляемой форме

Публикация № 1032586 05.04.19

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

СКД КомпоновщикНастроекКомпоновкиДанных ДанныеФормыКоллекция ТаблицаЗначений ОтборКомпоновкиДанных

Задача стояла такая: есть 2 различных запроса, результаты которых выгружаются на форму обработки в таблицы значений (далее ТЗ) и программно "соприкасаются" между собой определенным образом (как именно- в рамках данной статьи неважно). Нюанс в том, что запросы должны иметь свой компоновщик настроек и могут интерактивно на форме изменяться пользователем. На оригинальность публикации не претендую - изначально в рамках поставленной задачи пытался найти что-то подобное (уже готовый шаблон) на инфостарте, возможно "плохо искал" ;)

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

  1. Создаем новый внешний отчет
  2. В нем формируем нужную основную СКД
  3. Далее на форме используем стандартный компоновщик, который уже имеет свой набор вариантов отчета, и самое главное: стандартную интерактивную "рулилку вариантов": когда можно добавить/удалить/сохранить вариант.
 
Отчет с СКД: отбор на форме, вывод в ТЗ
 
Вывод результата СКД в таблицу на форме

Далее можно сохранять/создавать варианты отчета и на основании этих настроек заполнять данные в ТЗ на форме.

Как говорится: это была присказка, а теперь сказка ;)

Отбор СКД на форме для нескольких запросов

Создаем новую обработку, назовем например "ВариантыТест"; предположим что 2 нужных запроса ранее были составлены в консоли запросов и помещены в СКД. Названия СКД "МакетСКДдляДДС", "МакетСКДдляНачисления"

  1. Для начала определимся с переменными обработки
  • ДатаРасчета: дата сбора остатков в запросах. Чтобы не загромождать форму, параметры данных решено на нее не "вывешивать", достаточно 1-ой даты: реквизита обработки. В дополнение донастроим СКД, добавив в нее 1 параметр "ДатаРасчета", дабы не мучаться с установкой дат вида "31.12.2018 23:59:59", а устанавливать начало/конец дня без времени. В данном случае остатки берутся на начало месяца (01.01.2019): 
  • Таблицы значений на форме по СКД. называться могут произвольным образом, нужны только чтобы по окончанию установки всех отборов по специальной кнопке вида "Сформировать" "залить" в них результат СКД. Допустим что мы хотим каждую строку отметить флагом: добавляем 1 колонку "Пометка", остальные колонки создадутся динамически из запроса: 
  • Набор реквизитов на каждую СКД. При этом каждый реквизит состоит из префикса и наименования СКД, название реквизита строго соотвествует шаблону "<Префикс>_<Имя СКД>" 
    • a) Компоновщики настроек - префикс "Компоновщик" 
    • b)Таблицы с ранее сохраненными вариантами настроек - префикс "Варианты" 
    • c) Описание состояния настроек СКД - префикс "Изменения": <пусто>-ничего не делать, "Изменено" - отбор изменен (нужно сохранить), "Сохранить" - признак сохранения варианта перед закрытием.
  • "СКДСписок": вспомогательный списочек макетов СКД по обработке для программных дейсвий на стороне клиента или сервера и исключения дублей кода.

Общий наглядный вид созданных реквизитов приведен на рисунке: 

 

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

Общий принцип: в стандартное хранилище настроек пользователя по имени обработки и имени СКД сохраняется некая ТЗ, которая содержит список вариантов настроек, 1 из них "активный".

 
 Сохранение/загрузка настроек

ПРИМЕЧАНИЕ: Полный программный код будет приведен в конце статьи.

3. Отбор СКД на форме. С целью удобства на форме использована отдельная закладка для отбора. Как ранее было упомянуто, параметры данных на форме не размещаем, параметр всего 1: дата Расчета. А отбор компоновки - это главный элемент, размещен на форме путем перетягивания из компоновщика-реквизита формы. Пример: 

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

В текстовом поле по умолчанию ставится текущий активный вариант, но при желании можно изменить название (например "Основной1"), тогда с новыми настройками будет создан еще 1 вариант, а старый останется без изменений.

Если нажать "Продолжить редактирование", то форма основная закрыта не будет, редактирование будет продолжено.

4. Выбор вариантов. Также по каждому отбору предусмотрен выбор ранее сохраненных вариантов, для этого создана специальная кнопка "Варианты... - Открыть", которая открывает форму просмотра, выбора, удаления сохраненных вариантов настроек.

По умолчанию на форме активен последний сохраненный/выбранный вариант, но если нужно выбрать другой вариант настроек - достаточно указать его в списке и нажать "Выбрать". После этого в компоновщике установятся настройки выбранного варианта.

5. Удаление вариантов. Если выясняется, что какие-то варианты отбор были черновые, или просто по ошибке созданы: можно аналогично выбрать в меню "Варианты... - Открыть", затем выбрать "ненужный" вариант в списке и нажать "Удалить". После этого из оставшихся вариантов выбрать любой, который станет активным.  ПРИМЕЧАНИЕ: удалить можно только пользовательские варианты, стандартные, заданные в конфигураторе механизм удалить не позволяет.

6. Сохранение вариантов. Для сохранения варианта, который "только что отредактировали" сделано специальное меню "Варианты... - Сохранение", по которому открывается та же форма, которая появляется по кнопке "Открыть" или при закрытии формы.

При этом можно указать новое имя варианта, можно выбрать существующий - тогда он будет перезаписан.

7. Механизм управления вариантами. При кодировании/конфигурировании действий по работе с вариантами настроек, лучше по возможности избегать дублирования кода, так как функционал для всех СКД единый: команды, функции использовать также единые для всех, параметры определять исходя из названий элементов управления/команд.

В частности для управления выбором/сохранением/изменением настроек СКД на форме использованы всего 4 команды, простое подменю "Варианты..." на форме. А действия по сохранению/изменению осуществляют всего 2 команды, которые получают имя используемой СКД из названия команды:

// <Команда открытия вариантов: вызывается по кнопке "Варианты... - Выбор" на форме>
// Параметры:
//  <Команда>  - <КомандаФормы> - имя команды формы: по конкретной СКД своя команда-кнопка
&НаКлиенте
Процедура КомандаОткрытьВарианты(Команда)
	
	//Команда.Имя = "<СКДИмя>ОткрытьВарианты";
	СКДИмя = Лев(Команда.Имя, СтрДлина(Команда.Имя) - СтрДлина("ОткрытьВарианты"));
	
	ВариантыОткрытьФормуНастройки(СКДИмя, ложь, ложь);

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

// <Команда сохранения варианта: вызывается по кнопке "Варианты... - Сохранение" на форме>
// Параметры:
//  <Команда>  - <КомандаФормы> - имя команды формы: по конкретной СКД своя команда-кнопка
&НаКлиенте
Процедура КомандаСохранитьВариант(Команда)
	
	//Команда.Имя = "<СКДИмя>СохранитьВариант";
	СКДИмя = Лев(Команда.Имя, СтрДлина(Команда.Имя) - СтрДлина("СохранитьВариант"));
	
	ВариантыОткрытьФормуНастройки(СКДИмя, истина, ложь);

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

Форма для управления настройками содержит 2 элемента управления "Список вариантов", "текущий вариант", 2 команды "Выбрать", "Продолжить редактирование".

 
 Программный код  формы настроек

 

Пример использования:

1. На 1-ой закладке устанавливаем дату получения бух.остатков, задаем нужный отбор СКД

2. На закладке №2 исполняем запрос по кнопке "Заполнить" - получаем нужное ТЗ на форме с данными 

Далее аналогично строим отбор и получаем нужное ТЗ на 3,4 закладках. ПРИМЕЧАНИЕ: в реальной задаче в отбор на 3-ей закладке программно "заливались" контрагенты из ТЗ закладки 2, отмеченные галочками.

3. При закрытии обработки: так как отбор СКД был интерактивно изменен - обработка выдаст форму сохранения настроек варианта отчета:

4. При повторном открытии обработки на форме будут установлены настройки активного варианта СКД, которые были сохранены при закрытии формы

В заключение. Целью публикации было описать методику, которая использовалась в реальной работе. Лучше все-таки подобную задачу повторить самостоятельно, как как в реальной работе подобный "простенький пример" это только начальные наработки - и одним отбором СКД на форме как правило не ограничиваются ;)

 
 Программный код обработки

 

Скачать файлы

Наименование Файл Версия Размер
Вывод вариантов СКД в таблицы на управляемой форме:

.epf 24,48Kb
5
.epf 24,48Kb 5 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. json 3213 09.04.19 07:59 Сейчас в теме
Автор, приложи скриншот с примером, на котором видно, что получается в итоге.
Из описания к статье трудно понять, какую задачу решаешь.
Оставьте свое сообщение

См. также

Обработка результатов запроса произвольными вычисляемыми полями. Обзор некоторых новых функций СКД

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

07.02.2023    3298    quazare    7    

36

Выборочная свертка группировок для СКД

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Россия Абонемент ($m)

Методика разработки отчета на СКД с возможностью свёртки части группировок по заданному программно условию. - свертка по значению поля (неотрицательные - сворачиваются); - свертка подчиненных в иерархии с произвольным количеством уровней.

1 стартмани

16.01.2023    1759    schthaxe    3    

27

Разрабатываем отчет на СКД, содержащий данные из расширения

СКД Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

17.10.2022    3972    al_zzz    9    

44

Хитрости СКД. Часть 4

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Столкнулся с тем, что мне приходится писать гору отчетов. Во многих приходится использовать повторяющиеся приемы. Решил написать шпаргалку, которая, надеюсь пригодится не только мне. В этой статье: Работа с 2 схемами в одном отчете, когда данные одной схемы являются исходными для другой. Копирование пользовательских отборов из одной схемы в другую. Корректная модификация формы отчета БСП.

12.10.2022    5115    milkers    17    

45

Тестовая задача: таблица умножения на СКД

СКД Платформа 1С v8.3 Бесплатно (free)

Альтернативное решение предложенной задачи.

14.06.2022    4235    81    echo77    6    

38

Хитрости СКД. Часть 3

СКД Универсальные функции Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Столкнулся с тем, что мне приходится писать гору отчетов. Во многих приходится использовать повторяющиеся приемы. Решил написать шпаргалку, которая, надеюсь пригодится не только мне. В этой статье: Объединение ячеек в отчете только на определенном уровне иерархии, Постобработка итогов в табличном документе, Скрытие колонок в зависимости от количества месяцев в периоде.

28.05.2022    6676    milkers    11    

87

Отчет на СКД с использованием форм из БСП. Варианты передачи списка значений в параметр СКД

БСП (Библиотека стандартных подсистем) СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Россия Абонемент ($m)

Показаны способы передачи списка значений в значение по умолчанию параметра СКД типового отчета из БСП, с возможностью последующей модификации пользователем.

1 стартмани

20.04.2022    5345    eugene-p    8    

28

По-настоящему свои макеты в отчетах СКД. Исследование процесса компоновки и генерация кода отчета

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Как скрестить формирование отчетных данных с помощью СКД и вывод в табличный документ с помощью Макет.ПолучитьОбласть(...) и ТабДок.Вывести(Секция)? А также сделать этот процесс простым и удобным? Об этом в статье ниже.

1 стартмани

22.03.2022    4873    Alxby    8    

47

Редактирование данных в ячейках СКД (простая реализация)

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

На примере справочника "Номенклатура" рассмотрим, как в отчёте можно редактировать его реквизиты, и изменения мгновенно будут записываться в элемент справочника.

1 стартмани

11.03.2022    8555    7    Flashill    20    

52

Убираем параметры из отбора СКД

Универсальные функции СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

Заметка о некоторых технических нюансах параметров данных и отборов СКД.

17.02.2022    5419    Yashazz    29    

31

Шаблон отчета на СКД (обычные формы)

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Улучшенный шаблон отчёта СКД, реализованный на обычных формах. Лаконичный и функциональный, весь необходимый минимум для управления отчётом вынесен на форму отчёта, что избавляет рядовых пользователей от необходимости лезть внутрь настроек отчёта. Форма сделана гибкой и позволяет легко себя адаптировать под Ваши потребности. Ряд элементов формы сделан сворачиваемыми и растягиваемыми.

2 стартмани

14.02.2022    6714    20    Eugen-S    4    

9

Отладка СКД

СКД Система компоновки данных Бесплатно (free)

На митапе «Практика применения СКД» выступил ведущий разработчик 1С аутсорсинговой компании Programming Store Павел Шемякин. Павел рассказал, как бороться с нежелательной «оптимизацией» запроса СКД, какие инструменты для отладки СКД можно использовать – в чем их отличия и преимущества, и показал, как работать с консолью компоновки данных – на какие элементы структуры XML-файла макета СКД обращать внимание при поиске причин неправильной работы отчета.

08.02.2022    10620    ProgrammingStore    5    

85

Программная работа и компоненты СКД

СКД Система компоновки данных Бесплатно (free)

На митапе «Практика применения СКД» выступил архитектор Digital Business Петр Базелюк. Он рассказал о том, как работать с СКД программно, и как, используя общедоступную библиотеку FoxyLink, создать свой процессор вывода результата СКД напрямую в формат JSON или в CSV.

04.02.2022    4560    pbazeliuk    4    

69

Доработка типового отчета на СКД с помощью расширения

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Доработка типового отчета на СКД в БП 3.0 с помощью расширения конфигурации. Пример, как можно внести изменения в типовой отчет "Бухгалтерии предприятия" 3.0 без снятия конфигурации с поддержки. Описан пошаговый алгоритм действий и способы решения возникающих при этом проблем.

1 стартмани

09.01.2022    9388    Spacer    9    

26

Реализация отборов на форме с помощью СКД

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

28.12.2021    14570    quazare    6    

131

Варианты применения СКД вне отчетов в отраслевых конфигурациях

СКД Система компоновки данных Бесплатно (free)

Директор и ведущий разработчик компании «Арт Порт» Максим Артеменко выступил на митапе, посвященном практике применения СКД. Максим рассказал о вариантах применения механизма настроек СКД для решения нестандартных задач – визуального оформления, сегментирования данных и автоматического заполнения примечаний к документам.

18.11.2021    3716    drmaxart    0    

42

Кейсы решения задач на СКД

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

Разработчик 1С в компании Neti Александр Крынецкий выступил на Infostart Meetup, посвященном практике работы с СКД. Александр поделился с коллегами кейсами по решению сложных задач при работе с СКД.

08.11.2021    6176    echo77    7    

99

Грабли на СКД

СКД Платформа 1С v8.3 Система компоновки данных Россия Бесплатно (free)

Наиболее частые проблемы, с которыми сталкиваются программисты 1С при разработке отчетов на СКД.

02.11.2021    15199    echo77    17    

136

СКД: 5 советов, как сделать лучше

СКД Платформа 1С v8.3 Система компоновки данных 8.3.14 Бесплатно (free)

Несколько примеров решения задач с использованием разных подходов

27.10.2021    12562    Neti    19    

192

Программное открытие отчета СКД с параметрами и отбором

СКД Платформа 1С v8.3 Управляемые формы Система компоновки данных Бесплатно (free)

Периодически возникает задача открытия формы отчёта СКД уже со сформированным отчётом, с определёнными параметрами и отборами. В данной публикации рассматриваются способы сделать это как в обычном приложении, так и в управляемом.

07.08.2021    29227    Eugen-S    35    

102

Объект "Схема запроса" и расширения языка запросов СКД

СКД Платформа 1С v8.3 Запросы Россия Бесплатно (free)

Если использовать объект СхемаЗапроса для модификации текстов запросов, содержащих расширения СКД, то могут возникнуть ошибки времени исполнения. И полученных запрос не будет работать. В статье расскажу, как этого избежать.

18.07.2021    3401    mysm    14    

27

Изменение расшифровки макета СКД до компоновки

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

Это не про работу с данными расшифровки. Это про изменение расшифровок полей ДО того, как СКД выполнилась. Быстрый способ сделать нужные расшифровки.

12.07.2021    4366    Yashazz    7    

37

Формирование отчета СКД с расшифровкой из обработки

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Формирование отчета СКД из обработки немного отличается от формирования из отчета.

27.04.2021    6837    John_d    14    

74

Эффективные приемы разработки

Математика и алгоритмы Рефакторинг и качество кода СКД Платформа 1С v8.3 Бесплатно (free)

На Infostart Meetup Ekaterinburg.Online выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами приемами разработки, которые помогут избежать потенциальных проблем при реализации сложных проектов.

07.04.2021    5334    SergeyN    13    

39

Полезные примеры СКД, ч.2

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

Еще несколько примеров решения задач в СКД.

06.04.2021    18271    Neti    9    

215

Полезные примеры СКД, ч.1

СКД Система компоновки данных Бесплатно (free)

Подборка видео по решению различных задач в отчетах на СКД.

30.03.2021    23043    Neti    21    

364

Динамическая расшифровка СКД (на примере отчета)

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Предлагаю Вашему неподкупному вниманию вариант более-менее унифицированной реализации динамически формирующейся расшифровки СКД на примере простейшего отчета для конфигурации УТ 11.

1 стартмани

08.12.2020    3675    mr_sav    3    

23

СКД: все, что вы хотели знать о подмене схемы компоновки данных в отчетах и обработках

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

07.12.2020    12030    user1502278    23    

58

Программная корректировка при выводе отчета СКД

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Большинство отчетов на СКД, требующих программной корректировки, реализуются с помощью программной настройки СКД или обработки табличного документа уже после вывода отчета. Но во многих случаях более оптимально будет выполнять программную корректировку в процессе вывода отчета. Для этого существуют программные объекты, о которых я расскажу в данной статье.

1 стартмани

08.10.2020    25404    dabu-dabu    18    

238

Пользовательское поле СКД одной процедурой

СКД Платформа 1С v8.3 Бесплатно (free)

Быстрое создание пользовательского поля "выражение" одной процедурой

05.08.2020    3170    Yashazz    0    

23

Быстрое формирование наборов данных Объект схемы СКД

СКД Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

При разработке отчета, использующего наборы данных Объект, зачастую много времени занимает описание самих наборов в схеме СКД. Если таких наборов несколько или количество полей в них достаточно велико, то задача усложняется. В публикации приводится способ сокращения подобных трудозатрат.

1 стартмани

05.07.2020    12702    8    Алексей Воробьев    16    

56

Роль "Остатки" поля набора данных СКД в отчете и в расшифровке

СКД Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

В СКД создан набор данных "Запрос". Запрос выполняется к виртуальной таблице "Остатки и обороты", периодичность регистра "Авто", выбираются все измерения и ресурсы регистра, а так же выбирается Регистратор и ПериодСекунда. Для полей содержащих остатки устанавливается роль "Остатки". Для полей "Регистратор" и "ПериодСекунда" устанавливается роль "Период". Для поля "Регистратор" устанавливается выражение упорядочивания.

24.05.2020    13359    kasper076    19    

26

СКД. Использование Менеджера временных таблиц в системе компоновки

СКД Платформа 1С v8.3 Запросы Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

С выпуском платформы 8.3.17 фирма 1С анонсировала возможность передачи в механизм системы компоновки данных менеджера временных таблиц. Платформа вышла из беты, самое время разобраться с новым механизмом, тем более в комментариях я встретил непонимание принципов работы этого нововведения. Постараюсь кратко.

29.04.2020    20108    ixijixi    50    

112

Ограничения полей, или как обмануть СКД?

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Каждое из ограничений полей можно обойти. Рассмотрим варианты обхода и способы обезопасить свой отчет.

15.04.2020    28944    SeiOkami    43    

125

Работа с запросами в 1С СКД. Отладка СКД

СКД Запросы Система компоновки данных Россия Бесплатно (free)

В предыдущем разделе мы изучали с вами особенности работы с запросами в СКД. Для изучения (отладки) работы различных схем компоновки данных я использовал консоль компоновки данных.

15.04.2020    7522    ProgrammingStore    3    

33

Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 3

СКД Запросы Система компоновки данных Россия Бесплатно (free)

Почему при отборе по контрагенту наш отчет работает неправильно. Посмотрим на примере другого отчета, в котором нам нужно выбрать данные из расходных накладных и связанные с номенклатурой данные по ВСЕМ заявкам.

13.04.2020    12774    ProgrammingStore    5    

51