Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 07:26

Расшифровка отчета СКД с двумя макетами

Автор kosalex, 17 апр 2015, 08:23

0 Пользователей и 1 гость просматривают эту тему.

kosalex

 Доброго времени суток, есть отчет СКД с двумя макетами, по кнопке "Сформировать" выполняется следующий код:

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

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




Вот что происходит на форме:

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

    ИначеЕсли Переключатель1 = 1 Тогда

        ОстаткиРеализации = Ложь;
        ЭлементыФормы.НадписьНаДату.Видимость = Ложь;
        ЭлементыФормы.ПолеВводаДатаОстаткиРеализации.Видимость = Ложь;
        ЭлементыФормы.ПолеВводаДатаОстаткиРеализации.Значение = Неопределено;
        НаДату = Неопределено;
       
        ЭлементыФормы.НадписьДатаНачала.Видимость = Истина;
        ЭлементыФормы.ПолеВводаСДаты.Видимость = Истина;
       
       
        ЭлементыФормы.НадписьДо.Видимость = Истина;
        ЭлементыФормы.ПолеВводаПоДату.Видимость = Истина;
               
        РасчетныеДанныеПоФючерсамЗаПериод = Истина;

       
        //Подставить ОТБОР
        МакетРасчетныеДанныеПоФьючерсамЗаПериод = ПолучитьМакет("РасчетныеДанныеПоФьючерсамЗаПериод");
        НастройкиПоУмолчанию = МакетРасчетныеДанныеПоФьючерсамЗаПериод.НастройкиПоУмолчанию;
        КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиПоУмолчанию);

    КонецЕсли;
КонецПроцедуры




Как я понимаю, то данные расшифроке беруться из основного макета, а как их можно передать после того как я сменил макет програмно?
   

kosalex

Получилось, немного подравил и дописал, вот код:

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

       
        //Подставить ОТБОР
        МакетРасчетныеДанныеПоФьючерсамЗаПериод = ПолучитьМакет("РасчетныеДанныеПоФьючерсамЗаПериод");
        НастройкиПоУмолчанию = МакетРасчетныеДанныеПоФьючерсамЗаПериод.НастройкиПоУмолчанию;
        КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиПоУмолчанию);
       
        ЭтотОбъект.СхемаКомпоновкиДанных = МакетРасчетныеДанныеПоФьючерсамЗаПериод;
       
       
    КонецЕсли;
КонецПроцедуры




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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск