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

14.03.14

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

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

Файлы

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

Наименование Скачано Купить файл
ШаблонВариантыОтчетаСКД.erf
.erf 32,79Kb
42 2 500 руб. Купить

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Возврат;

КонецЕсли;

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

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

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

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

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

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


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

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

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

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

КонецЦикла;

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

......

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

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

...........

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

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

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

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

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

См. также

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

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

16500 руб.

02.09.2020    246902    1359    421    

1132

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

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

29.01.2026    5161    292    shapa_pro    25    

66

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

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

29.10.2025    15995    ovetgana    112    

105

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

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

01.07.2025    9315    krasnoshchekovpavel    5    

67

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

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

10.04.2025    8484    Neti    0    

41

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

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

27.02.2025    15608    ovetgana    50    

93

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

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

24.12.2024    13184    Akcium    17    

46

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

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

20.08.2024    9679    AlexeyPROSTO_1C    1    

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