Имя: Пароль:
1C
1С v8
Скд программный выбор настроек
0 JuliaT99
 
28.12.16
16:32
На форме имеем переключатель ВариантОтчета

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

Проблема в том, что выполняется только первый вариант по умолчанию, после выполнения вышенаписанной процедуры отчет зависает и потом вываливается по ошибке "Не хватает памяти". Настройка в обоих вариантах нормальные. Порядок вариантов меняла. Первый выполняется, а потом никак.
1 Franchiser
 
гуру
29.12.16
00:30
Насчтройка2 - опечатка?
2 JuliaT99
 
29.12.16
08:09
1- да опечатка, конечно.
3 Лохматые Уши
 
29.12.16
09:15
(0)
Более толковая реализация:

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

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

Процедура СменаВариантаНастройки (Элемент)
    Для каждого Настройка Из СхемаКомпоновкиДанных.ВариантыНастроек Цикл
        Если Элемент.Текст = Настройка.Представление Тогда
            КомпоновщикНастроек.ЗагрузитьНастройки(Настройка.Настройки);
            Прервать
        КонецЕсли
    КонецЦикла;
    
    ЭтаФорма.Заголовок = "Траляля";
    
    //Восстановление параметров
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаНачала").Значение = ПараметрНачалоПериода.Значение;
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаОкончания").Значение = ПараметрКонецПериода.Значение;
    //
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаНачала").Использование = Истина;
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаОкончания").Использование = Истина;
КонецПроцедуры
4 JuliaT99
 
29.12.16
10:25
3 - так тоже пробовала. Воз и ныне там - при переключении настроек отчет висит.
5 LeReve
 
29.12.16
10:57
(0) Процедура ВариантОтчетаПриИзменении(Элемент)
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек.Найти(Элемент.Значение).Настройки);
        
    ПараметрыКомпановки = ОтчетОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
    ПараметрыКомпановки.Использование = Истина;
    ПараметрыКомпановки.Значение = НачалоДня(НачалоПериода);
    
    ПараметрыКомпановки = ОтчетОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода"));
    ПараметрыКомпановки.Использование = Истина;
    ПараметрыКомпановки.Значение = КонецДня(КонецПериода);

КонецПроцедуры
6 Allexe
 
29.12.16
11:00
(0) А если вручную протестить эти настройки? Отчет работает не зависает?
7 JuliaT99
 
29.12.16
11:19
6 - вручную не зависает. Да и местами их меняла, по умолчанию же первый выполняется,если ничего не переключать
8 Allexe
 
29.12.16
11:21
Может на свежей платформе протестить?
9 JuliaT99
 
29.12.16
11:29
5 - спасибо. Оказывается надо было переопределить параметры начало и конец периода. Есть еще проблемы, но это уже совсем другая история. Спасибо еще раз.