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

14.03.14

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

Добавляем кнопки вариантов отчёта в самодельном отчёте на СКД (обычные формы) на базе типового шаблона отчёта СКД с ИТС.

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

Наименование Файл Версия Размер
ШаблонВариантыОтчетаСКД.erf
.erf 32,79Kb
42
.erf 32,79Kb 42 Скачать

Я сделал свой отчёт на СКД с использованием обычной (т.е. не управляемой) формы. В качестве заготовки взял типовой шаблон отчёта на СКД с ИТС http://its.1c.ru/db/metod81#content:3048:1 .

В самом конце возникла неожиданная проблема - как организовать переключение вариантов отчета на форме?

На форме этого шаблона уже была изначально предусмотрена панель выбора вариантов отчёта - "ПанельВыбораВариантов" - в самом верху формы, и в левом углу её уже имелась надпись "Варианты отчёта".

Как добавить все варианты отчёта в виде кнопок этой панели?

В Интернете я нашёл лишь решение в виде добавления новой кнопки "Выбор варианта отчёта" на форму - но так не интересно, зачем изобретать велосипед, когда уже есть штатная панель кнопок варианта отчёта?

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

Я написал две процедуры, программно имитирующие нажатие кнопки с дискетой. Только вместо текущего варианта отчёта они сохраняют все имеющиеся варианты отчёта. Процедуры вызываются при открытии отчёта. При этом эти кнопки (при необходимости) создаются.

Вот программный код этих процедур:

Процедура СохранитьВариантНастроекПользователя(СохраненнаяНастройка, НастраиваемыйОбъект, ВариантНастроек)

Наименование = ВариантНастроек.Имя;

ТипНастройки = Перечисления.ТипыНастроек.НастройкиОтчета;

Пользователь = глЗначениеПеременной("глТекущийПользователь");

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СохраненныеНастройкиПользователи.Ссылка
|ИЗ
| Справочник.СохраненныеНастройки.Пользователи КАК СохраненныеНастройкиПользователи
|ГДЕ
| СохраненныеНастройкиПользователи.Ссылка.Наименование = &Наименование
| И СохраненныеНастройкиПользователи.Ссылка.ТипНастройки = &ТипНастройки
| И СохраненныеНастройкиПользователи.Ссылка.НастраиваемыйОбъект = &НастраиваемыйОбъект
| И СохраненныеНастройкиПользователи.Пользователь = &Пользователь";

Запрос.УстановитьПараметр("Наименование", Наименование);
Запрос.УстановитьПараметр("НастраиваемыйОбъект", НастраиваемыйОбъект);
Запрос.УстановитьПараметр("Пользователь", Пользователь);
Запрос.УстановитьПараметр("ТипНастройки", ТипНастройки);

Результат = Запрос.Выполнить();

Если НЕ Результат.Пустой() Тогда

//Сообщить("Такой элемент уже есть в справочнике.");

Возврат;

КонецЕсли;

// Создание новой настройки
НовыйЭлемент = Справочники.СохраненныеНастройки.СоздатьЭлемент();
НовыйЭлемент.Наименование = Наименование;
НовыйЭлемент.Описание     = Наименование;
НовыйЭлемент.НастраиваемыйОбъект = НастраиваемыйОбъект;
НовыйЭлемент.ТипНастройки = Перечисления.ТипыНастроек.НастройкиОтчета;
НовыйПользователь = НовыйЭлемент.Пользователи.Добавить();
НовыйПользователь.Пользователь = глЗначениеПеременной("глТекущийПользователь");
НовыйПользователь.ПравоИзменения = Истина;
Отказ = Ложь;
Сообщение = "";
НовыйЭлемент.ПроверитьОбязательныеРеквизиты(НовыйЭлемент, Отказ, Сообщение);
Если Отказ Тогда
Сообщить("Элемент не может быть записан! " + Сообщение, СтатусСообщения.Важное);
Возврат;
КонецЕсли;
НовыйЭлемент.Записать();
// Сохранение
СохраненнаяНастройка = НовыйЭлемент.Ссылка;

СтруктураНастроек = ТиповыеОтчеты.ПолучитьСтруктуруПараметровТиповогоОтчета(ЭтотОбъект);

СтруктураНастроек.НастройкиКомпоновщика = ВариантНастроек.Настройки;

СохранениеНастроек.СохранитьНастройкуОбъекта(СохраненнаяНастройка, СтруктураНастроек);

Модифицированность = Ложь;
Если Не ТиповыеОтчеты.ЭтоСтараяВерсияОтчета(ЭтотОбъект) Тогда
РежимРедактированияНастройки = Ложь;
ЭтоОтработкаРасшифровки = Ложь;
КонецЕсли;

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


Процедура СоздатьКнопкиПанелиВариантовОтчета(ОтчетОбъект, ФормаОтчета) Экспорт

Макет = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

Для каждого ВариантНастроек Из Макет.ВариантыНастроек Цикл

СохранитьВариантНастроекПользователя(ОтчетОбъект.СохраненнаяНастройка, ТиповыеОтчеты.ПолучитьИдентификаторОбъекта(ОтчетОбъект), ВариантНастроек);

КонецЦикла;

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

......

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

//Начало изменения
СоздатьКнопкиПанелиВариантовОтчета(ЭтотОбъект, ЭтаФорма);
//Конец изменения

...........

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

Такой вариант создания этих кнопок я считаю наиболее безопасным - потому что этот код в максимальной степени имитирует имеющийся функционал (функционал кнопки с дискетой). Всё это работает под любым пользователем.

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

Варианты отчета СКД

См. также

SALE! 20%

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

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122268    673    389    

715

Генератор схемы компоновки данных (СКД), написание кода схемы программно

Инструментарий разработчика СКД Платформа 1С v8.3 Конфигурации 1cv8 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

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

3 стартмани

05.02.2024    4050    25    obmailok    17    

63

Набор-объект для СКД по тексту или запросу

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

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2006    2    Yashazz    0    

29

СКД на JavaScript в 1С

СКД WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    8168    20    John_d    25    

123

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

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

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

05.12.2023    4662    PROSTO-1C    13    

61

Модель СКД

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

DSL для работы с СКД.

1 стартмани

15.11.2023    5813    15    kalyaka    5    

86

Пользовательские настройки отчетов 1С. Часть 1. Простые и расширенные настройки

СКД Инструкции пользователю Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Простые приемы работы с отчетами на СКД. Что нужно знать пользователю про настройку отчетов, чтобы использовать их на полную катушку.

18.09.2023    6718    accounting_cons    5    

29

Разрыв страницы в СКД. Легко!

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

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

01.09.2023    4528    KVIKS    15    

80
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. DAnry 8 19.03.14 15:08 Сейчас в теме
Проблема актуальна. Спасибо за статью, очень полезна (что бы не выдумывать велосипед).
2. chmv 19.01.16 12:11 Сейчас в теме
а нельзя ли сделать тоже самое для управляемых форм?
НЕ хотят выбрать вариант, а только помощью панелей
3. alon 171 16.03.17 00:04 Сейчас в теме
Спасибо, пригодилось. Как бы еще сделать возможность восстановления настроек из встроенного варианта по требованию? Актуально после доработки отчета.
4. for-elenak 11 13.11.18 11:34 Сейчас в теме
Оставьте свое сообщение