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

01.10.19

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Вывод вариантов СКД в таблицы на управляемой форме:
.epf 24,48Kb
11 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

  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. При повторном открытии обработки на форме будут установлены настройки активного варианта СКД, которые были сохранены при закрытии формы

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

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

 

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

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

См. также

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

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

16500 руб.

02.09.2020    242368    1323    419    

1116

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

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

29.01.2026    3700    162    shapa_pro    24    

59

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

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

29.10.2025    14563    ovetgana    112    

104

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

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

01.07.2025    8587    krasnoshchekovpavel    5    

65

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

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

10.04.2025    7827    Neti    0    

40

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

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

27.02.2025    15191    ovetgana    50    

93

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

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

24.12.2024    12823    Akcium    17    

46

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

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

15.05.2024    23114    implecs    9    

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