Выбор варианта отчета СКД для обычных форм

03.10.12

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

Выбор варианта отчета СКД для обычных форм

Всем добрый день!

Рассказать я хочу о том как мне пришлось бороться с выбором варианта отчета написанном при помощи СКД в НЕ управляемой форме. С управляемыми проблем нет. Там эта возможность включена по-умолчанию. Что касается обычных форм, то после безуспешного поиска в интернете стандартных решений, реализовал все сам вручную (кодом) через хранилище настроек. Может конечно я не умею искать, но думаю, что решение будет полезно и для других.

Вот ворма отчета:

Нижнее поле - результат, куда печ. форма выводится.

Чуть выше - стандартные настройки СКД Данные: "КомпоновщикНастроек.Настройки.ПараметрыДанных"

И верхнее - поле для выбора варианта, который нас и интересует.

Для выбора варианта отчета создал отдельную форму. На ней просто список вариантов.

Код из основной формы:

//////////////////////////////

Перем ИмяТекВар;

Процедура ЗаполнитьВарианты()
    Для каждого Вар из СхемаКомпоновкиДанных.ВариантыНастроек Цикл
        СЗВариантов.Добавить(Вар,Вар.Представление);
    КонецЦикла;    
КонецПроцедуры    

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    СписокВар = ХранилищеВариантовОтчетов.ПолучитьСписок("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля");    
    Для каждого вар из СписокВар Цикл
        ТекВар = СхемаКомпоновкиДанных.ВариантыНастроек.Найти(вар.Значение);
        Если ТекВар = Неопределено Тогда
            СхемаКомпоновкиДанных.ВариантыНастроек.Добавить();
            ТекВар = СхемаКомпоновкиДанных.ВариантыНастроек[СхемаКомпоновкиДанных.ВариантыНастроек.Количество()-1];
            ТекВар.Имя = вар.Значение;
            ТекВар.Представление = вар.Представление;            
        КонецЕсли;    
    КонецЦикла;    
    
    ЗаполнитьВарианты();
    ИмяТекВар = СокрЛП(СЗВариантов[0].Значение.Имя);
    ВыбВариант = СЗВариантов[0].Значение.Представление;
    ТекН = ХранилищеВариантовОтчетов.Загрузить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля",СокрЛП(СЗВариантов[0].Значение.Имя));
    Если ТекН = Неопределено Тогда
        КомпоновщикНастроек.ЗагрузитьНастройки(СЗВариантов[0].Значение.Настройки);    
    Иначе
        КомпоновщикНастроек.ЗагрузитьНастройки(ТекН);    
    КонецЕсли;    
КонецПроцедуры

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

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



Код в форме выбора:

////////////////////////

Перем Схема Экспорт;
Перем Компановщ Экспорт;

Процедура КоманднаяПанель1Добавить(Кнопка)
    имя = "";
    Если ВвестиСтроку(имя) Тогда
        Схема.ВариантыНастроек.Добавить();
        Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Представление = имя;
        Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Имя = СокрЛП(Схема.ВариантыНастроек.Количество()); 
        Варианты.Добавить(Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1],Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Представление);
        
        Он = Новый ОписаниеНастроек;
        Он.Представление =  СокрЛП(имя);
        
        ХранилищеВариантовОтчетов.Сохранить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля", СокрЛП(Схема.ВариантыНастроек.Количество()), Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Настройки, Он);
    КонецЕсли;
КонецПроцедуры

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    
КонецПроцедуры

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

Процедура КоманднаяПанель1Удалить(Кнопка)
    ТекДан = ЭлементыФормы.Варианты.ТекущиеДанные;
    Если НЕ (ТекДан = Неопределено) Тогда
        ХранилищеВариантовОтчетов.Удалить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля",ТекДан.Значение.Имя,ПользователиИнформационнойБазы.ТекущийПользователь().Имя);
        Варианты.Удалить(Варианты.НайтиПоЗначению(ТекДан.Значение));
    КонецЕсли;    
КонецПроцедуры

Процедура ВариантыПередУдалением(Элемент, Отказ)
    ХранилищеВариантовОтчетов.Удалить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля",Элемент.ТекущиеДанные.Значение.Имя,ПользователиИнформационнойБазы.ТекущийПользователь().Имя);
КонецПроцедуры

Процедура КоманднаяПанель1Копировать(Кнопка)
    Если НЕ(ЭлементыФормы.Варианты.ТекущиеДанные = Неопределено) Тогда
        имя = "";
        Если ВвестиСтроку(имя) Тогда
            Схема.ВариантыНастроек.Добавить();
            Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Представление = имя;
            Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Имя = СокрЛП(Схема.ВариантыНастроек.Количество()); 
            Варианты.Добавить(Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1],Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Представление);
            
            НастройкиСохранения = Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Настройки;
            
            ТекН = ХранилищеВариантовОтчетов.Загрузить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля",СокрЛП(ЭлементыФормы.Варианты.ТекущиеДанные.Значение.Имя));        
            Если НЕ(ТекН = Неопределено) Тогда
                НастройкиСохранения = ТекН;    
            КонецЕсли;    
            
            Он = Новый ОписаниеНастроек;
            Он.Представление =  СокрЛП(имя);
            
            ХранилищеВариантовОтчетов.Сохранить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля", СокрЛП(Схема.ВариантыНастроек.Количество()),НастройкиСохранения , Он);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

////////////////////

Вот как-то так.

Конечно, если кто-нибудь покажет, как сохранять и выбирать варианты СКД для обычных форм стандартными средствами, буду рад посмотреть :)

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

См. также

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

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

16500 руб.

02.09.2020    245117    1346    419    

1124

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

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

29.01.2026    4840    272    shapa_pro    25    

65

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

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

29.10.2025    15403    ovetgana    112    

105

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

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

01.07.2025    9021    krasnoshchekovpavel    5    

66

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

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

10.04.2025    8239    Neti    0    

41

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

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

27.02.2025    15421    ovetgana    50    

93

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

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

24.12.2024    13027    Akcium    17    

46

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

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

20.08.2024    9449    AlexeyPROSTO_1C    1    

32
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. samamoiloff 862 11.10.12 08:23 Сейчас в теме
В ЗУП интересные шаблоны типового отчета, когда варианты выбираются на спец.панели под верхним обрезом формы, их можно спрятать, а так же набор инструментов по созданию нового и выдаче прав по редактированию вариантов.
adhocprog; romankoav; cleaner_it; RustIG; +4 Ответить
2. Dimasik2007 430 11.10.12 08:25 Сейчас в теме
Когда давно скачал шаблон отчета на СКД с инфорстарта (авторство сейчас не помню), и добавил туда следующий блок

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

Процедура
УстановитьВариантыНастроек()
КП = ЭлементыФормы.ДействияФормы;
НоваяКнопка = КП.Кнопки.Вставить(1,"_ВариантыОтчетов", ТипКнопкиКоманднойПанели.Подменю, "Варианты отчетов", );
НовоеДействие = Новый Действие("_СменаВариантаНастройки");
ч = 1;
Для каждого
Настройка Из СхемаКомпоновкиДанных.ВариантыНастроек Цикл
НоваяКнопка = КП.Кнопки._ВариантыОтчетов.Кнопки.Добавить("Вариант"+Строка(ч), ТипКнопкиКоманднойПанели.Действие,
Настройка.Представление,
НовоеДействие);

ч = ч + 1;
КонецЦикла;
КонецПроцедуры

Процедура
ПриОткрытии()
УстановитьВариантыНастроек();
...


получается вот такое простое меню:

Прикрепленные файлы:
seperblunt; OdinokovMaxim; izidakg; baldorc; tsatsur; irtk; DimaP; trest30; arisgeser; Alex_Iz; user726666; БоНН; BoBaH; adhocprog; ITMS; VladimirMelnychenko; it-volna.com; IvanPoh; it.k.bondarev; AnnaKalacheva; rava_aal; Cobranet123; elizarovs; Aero; freeek; mp40; VanechkaDiev; toltec; feel_deep; NamelessPony; BorisKoo; Dmitrii D; gemini76; gusda; Pavel_Vladivostok; simich; VovkaPutin; rise; rainspb; teyana; kvk98; 1Снег; Xephone; Yasen; ftm; artichoke; +46 Ответить
3. Just 3 11.10.12 08:29 Сейчас в теме
Не совсем понял, в чем смысл статьи. Ведь есть стандартный шаблон отчета для СКД, как был и есть УниверсальныйОтчет для обычных запросов. На стандартном шаблоне отчетов для СКД построены все отчету по зарплате и проблемм с сохранение/востановлением настроек пользователем нет или я что-то не догнал?
4. Dimasik2007 430 11.10.12 08:32 Сейчас в теме
(3) Не путайте настройки отчета, созданные пользователем, и варианты отчетов, зашитые в макет СКД.
5. Just 3 11.10.12 08:36 Сейчас в теме
(4) Dimasik2007, http://comol.livejournal.com/3867.html
это разве не то? что в этой статье есть такого, чего нет в типовом шаблоне???
6. Dimasik2007 430 11.10.12 08:44 Сейчас в теме
А что накинулись то на ТС, он только учится еще, заодно и выкладывает вещи... Потом будет рефакторинг и левел-ап...
По типовому отчету от 1С, который с вертикальным меню вариантов отчета - вот все! мои пользователи кричат, что это гггг, работать не удобно, не понятно и т.п. Для 99% минималистичного отчета вполне достаточно.
FoxMara; adhocprog; +2 Ответить
7. Just 3 11.10.12 08:53 Сейчас в теме
так никто и не накидывался, я только спроисл в чём фокус, может я чего на понял в статье, да и человек просил ему типовые решение подсказать.....
8. webester 26 11.10.12 09:09 Сейчас в теме
эммм если, это статья которая должна чему то научить, то почему, тут тупо копипаст кода? Где подробное комментирование и документирование? Где ход мысли? Вы сами не понимаете что тут написано или просто лень нормально оформить? Я уж молчу про раскраску кода.
9. anig99 2864 11.10.12 12:25 Сейчас в теме
Как-то всё запутано...

Процедура ЗаполнитьВариантыОтчетов()
    Для Каждого стрВариант из ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек Цикл
        ЭтаФорма.ЭлементыФормы.ВариантОтчета.СписокВыбора.Добавить(стрВариант, стрВариант.Представление,, БиблиотекаКартинок.Отчет);
    КонецЦикла;
КонецПроцедуры

Процедура ПриОткрытии()
    СтруктураНастройки = Новый Структура;
    СтруктураНастройки.Вставить("Пользователь", глЗначениеПеременной("глТекущийПользователь"));
    СтруктураНастройки.Вставить("ИмяОбъекта", ЭтотОбъект.Метаданные().ПолноеИмя());
		
    Если УниверсальныеМеханизмы.ПолучитьНастройкуИспользоватьПриОткрытии(СтруктураНастройки) Тогда
        мТекущаяНастройкаИмя = СтруктураНастройки.НаименованиеНастройки;
        КомпоновщикНастроек.ЗагрузитьНастройки(СтруктураНастройки.СохраненнаяНастройка);
        УстановитьЗаголовокФормы();
    Иначе
        ВариантОтчета = ЭлементыФормы.ВариантОтчета.СписокВыбора[0].Значение;
        УстановитьЗаголовокФормы(" [Вариант: " + ВариантОтчета.Представление + "]");
    КонецЕсли;
КонецПроцедуры

Процедура ВариантОтчетаПриИзменении(Элемент)
    //Если НЕ ЗначениеЗаполнено(ЭтаФорма.ВариантОтчета) Тогда Возврат КонецЕсли;
    Если Вопрос("Заменить текущие настройки на стандартные настройки варианта?", РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет) = КодВозвратаДиалога.Нет Тогда 
        ЭтаФорма.ВариантОтчета = Неопределено;
        Возврат;
    КонецЕсли;
    ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(ЭтаФорма.ВариантОтчета.Настройки);
    мТекущаяНастройкаИмя = "";
    УстановитьЗаголовокФормы(" [Вариант: " + ЭтаФорма.ВариантОтчета.Представление + "]");
КонецПроцедуры
Показать
baracuda; pashamak; adhocprog; Najly; +4 Ответить
18. Najly 61 03.10.16 09:08 Сейчас в теме
(9) anig99, спасибо, то что надо!
10. y22-k 255 11.10.12 17:15 Сейчас в теме
Я делал немного по другому
При открытии на форме заполнял панель кнопками вариантов
Процедура ПриОткрытии()
    ЭлементыФормы.КоманднаяПанель1.Кнопки.Очистить();
    пВарианты = СхемаКомпоновкиДанных.ВариантыНастроек;
    Для Каждого пЭл ИЗ пВарианты Цикл
        СтруктураВариантов.Вставить(пЭл.Имя,пЭл.Настройки);
        ЭлементыФормы.КоманднаяПанель1.Кнопки.Добавить(пЭл.Имя,ТипКнопкиКоманднойПанели.Действие,пЭл.Представление,Новый Действие("НажатиеНаКнопкуВарианта"));
        ЭлементыФормы.КоманднаяПанель1.Кнопки.Добавить("",ТипКнопкиКоманднойПанели.Разделитель);
    КонецЦикла;
    ЭлементыФормы.КоманднаяПанель1.Кнопки.Добавить("",ТипКнопкиКоманднойПанели.Разделитель);
КонецПроцедуры
Показать

При нажатии на кнопку варианта вызывалось
Процедура Нажатие(Кнопка)
     пНастройки = СтруктураВариантов[Кнопка.Имя];
     Для Каждого Кнопка_ из ЭлементыФормы.КоманднаяПанель1.Кнопки цикл
         Кнопка_.Пометка = Ложь;
     КонецЦикла;
     Кнопка.Пометка = Истина;
	 
     СтарыйОтбор = КомпоновщикНастроек.Настройки.Отбор.Элементы; 
     КомпоновщикНастроек.ЗагрузитьНастройки(пНастройки);
     КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить();
	 
     НачПериодаПриИзменении(ЭлементыФормы.НачПериода);
     КонПериодаПриИзменении(ЭлементыФормы.КонПериода);
	 
     Для Каждого Строка из СтарыйОтбор Цикл
         СтрокаОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		 ЗаполнитьЗначенияСвойств(СтрокаОтбора,Строка);
     КонецЦикла;
     ДействияФормыСформировать(Неопределено);
КонецПроцедуры
Показать
Irwin; adhocprog; Chaotic; +3 Ответить
11. klel 11.10.12 20:42 Сейчас в теме
Большой + за старания =)
12. Гость 11.10.12 22:36
Так проще :)
Процедура ПриОткрытии()
	СписокВыбора = Новый СписокЗначений;
	Для Каждого Вариант Из ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек Цикл
		СписокВыбора.Добавить(Вариант, Вариант.Представление);
	КонецЦикла;
	ЭлементыФормы.Вариант.СписокВыбора = СписокВыбора;
КонецПроцедуры

Процедура ВариантПриИзменении(Элемент)
	ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(ЭлементыФормы.Вариант.Значение.Настройки);
КонецПроцедуры
Показать

Только пользовательские настройки сбрасывает.
Irwin; Alex_Iz; abrafaks; Aero; Pavel_Vladivostok; purgin; NittenRenegade; svilsa; ixijixi; Jazz2; cheburashka; +11 Ответить
13. cheburashka 45 12.10.12 14:00 Сейчас в теме
(12) Гость, делал так же.
15. Serge_ASB 06.11.14 15:39 Сейчас в теме
(12) Гость,
как сделать тип значения Произвольный?
УТ 10.3 - СКД
14. Pechenuych_ka 19.02.13 16:16 Сейчас в теме
Подскажите, пожалуйста, как в таком отчете сделать так,что выводило параметры?
Делаю в первые отчет при помощи СКД в НЕ управляемой форме и никак не могу настроить что бы выводило параметры отчета
16. vashkostya 40 04.01.16 10:18 Сейчас в теме
Вот проще:

Процедура _СменаВариантаНастройки (Элемент)
    Для Каждого Настройка Из СхемаКомпоновкиДанных.ВариантыНастроек Цикл
        Если Элемент.Текст = Настройка.Представление Тогда
            КомпоновщикНастроек.ЗагрузитьНастройки(Настройка.Настройки);
            Прервать;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Процедура УстановитьВариантыНастроек()
    КП = ЭлементыФормы.ДействияФормы; 
    НоваяКнопка = КП.Кнопки.Вставить(1,"_ВариантыОтчетов", ТипКнопкиКоманднойПанели.Подменю, "Варианты отчетов", );
    НовоеДействие = Новый Действие("_СменаВариантаНастройки");
    ч = 1;
    Для Каждого Настройка Из СхемаКомпоновкиДанных.ВариантыНастроек Цикл
        НоваяКнопка = КП.Кнопки._ВариантыОтчетов.Кнопки.Добавить("Вариант"+Строка(ч), ТипКнопкиКоманднойПанели.Действие, Настройка.Представление, НовоеДействие); 
        ч = ч + 1;
    КонецЦикла;
КонецПроцедуры

Процедура ПриОткрытии()
    УстановитьВариантыНастроек();
    ...
Показать
Прикрепленные файлы:
MonteCriZto; Maito; user1169791; pashamak; Aero; _p_; SamS; alexhline; +8 Ответить
17. victor_k 95 12.08.16 04:46 Сейчас в теме
Все представленные здесь варианты примеров загружают настройки из "КомпоновщикНастроек", которые создаются в режиме конфигуратора. Эти примеры не позволяют сохранять пользовательские изменения во ВСЕХ вариантов настроек. Что то более подходящее нашёл здесь http://infostart.ru/public/264758/.
19. ivs2000 31.08.18 14:36 Сейчас в теме
с сохранением заполненных настроек пример интересен.
а вот мой краткий без сохранения

ВариантыОтчетаСписок - поле выбора (элемент формы)

Процедура УстановитьНастройки()
	
	ВариантОтчета = ЭлементыФормы.ВариантыОтчетаСписок.Значение;
	КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек[ВариантОтчета].Настройки);
	
Конецпроцедуры	
//
Процедура ПриОткрытии()
	
	счетчикцикла = 0;
	
	Для каждого Настройка Из СхемаКомпоновкиДанных.ВариантыНастроек Цикл
		
		ЭлементыФормы.ВариантыОтчетаСписок.СписокВыбора.Добавить(счетчикцикла, Настройка.Представление);
		СчетчикЦикла = СчетчикЦикла + 1;
		
	КонецЦикла;
	
	попытка
		ЭлементыФормы.ВариантыОтчетаСписок.Значение = ВосстановитьЗначение("ВариантОтчета12345");
	исключение
	КонецПопытки;
	
	если ЭлементыФормы.ВариантыОтчетаСписок.Значение = Неопределено тогда
		ЭлементыФормы.ВариантыОтчетаСписок.Значение = 0;
	КонецЕсли;
	
	УстановитьНастройки();
	
КонецПроцедуры
//
Процедура ВариантОтчетаПриИзменении(Элемент)
	
	ВариантОтчета = ЭлементыФормы.ВариантыОтчетаСписок.Значение;
	КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек[ВариантОтчета].Настройки);
	
КонецПроцедуры
//
Процедура ПриЗакрытии()
	
	СохранитьЗначение("ВариантОтчета12345", ЭлементыФормы.ВариантыОтчетаСписок.Значение);
	
КонецПроцедуры
Показать
Для отправки сообщения требуется регистрация/авторизация