Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Расшифровка отчета СКД с двумя макетами          
kosalex Подменю пользователя
сообщение 16.04.15, 18:51
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Доброго времени суток, есть отчет СКД с двумя макетами, по кнопке "Сформировать" выполняется следующий код:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
        
    Если ОстаткиРеализации Тогда
        МакетОстаткиРеализаций = ПолучитьМакет("ОстаткиРеализаций");
        
        Настройки = МакетОстаткиРеализаций.НастройкиПоУмолчанию;
        
        Настройки.ПараметрыДанных.Элементы[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 Подменю пользователя
сообщение 17.04.15, 8:06
Сообщение #2

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

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

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


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

Vofka Подменю пользователя
сообщение 17.04.15, 9:39
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13956
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

А чем отличается код в процедуре РезультатОбработкаРасшифровки при Переключатель1 = 0 или Переключатель1 = 1 ?

kosalex Подменю пользователя
сообщение 17.04.15, 12:06
Сообщение #4

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(Vofka @ 17.04.15, 10:39) *
А чем отличается код в процедуре РезультатОбработкаРасшифровки при Переключатель1 = 0 или Переключатель1 = 1 ?



Ничем, можно убрать часть! Когда разбирался, нужно было так сделать smile.gif А как разобрался, оказывается что это условие уже не нужно.
Осталось это:
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    СтандартнаяОбработка = ложь;

        Если ДанныеРасшифровки = Неопределено Тогда Возврат КонецЕсли;

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


Сообщение отредактировал Vofka - 17.04.15, 12:13

Vofka Подменю пользователя
сообщение 17.04.15, 12:16
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13956
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

А что поменялось тогда?

kosalex Подменю пользователя
сообщение 17.04.15, 12:25
Сообщение #6

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(Vofka @ 17.04.15, 13:16) *
А что поменялось тогда?


Здесь "Процедура Переключатель1ПриИзменении(Элемент)" добавил это
ЭтотОбъект.СхемаКомпоновкиДанных = МакетОстаткиРеализации;

И
ЭтотОбъект.СхемаКомпоновкиДанных = МакетРасчетныеДанныеПоФьючерсамЗаПериод;


Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.05.24, 17:38
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!