| 
    
            
         
         | 
    
    
  | 
Отчет с СКД | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        XiPyPg2012    
     02.02.13 
            ✎
    14:36 
 | 
         
        Народ подскажите нужно вот что. Есть три регистра накоплений никак не связанных ссобой. Нужен отчет если стоит параметр 1 в рекв 1, то тянем данный согласно запроса 1, если стоит парам 2 в рекв 1, то тянем данные согласно запроса 2 ну и так далее. Как более правильно это сделать?
  
        з.ы. Начинающий программист, так скажем учусь начальство заставило. Пока только одна идея сделать три макета компоновки на форме добавить этот реквезит и в модуле отчета прописать если у реквезита значение 1 тогда макет 1, если 2 тогда 2, ну и так далее...... Только тогда возникает проблема в том как прописать что использовать именно этот макет и выводить согласно его.....Подскажите что нибудь пожалуйста  | 
|||
| 
    1
    
        XiPyPg2012    
     02.02.13 
            ✎
    15:05 
 | 
         
        Ребят ну подскажите как это реализовать     
         | 
|||
| 
    2
    
        GANR    
     02.02.13 
            ✎
    15:08 
 | 
         
        (0) Может, конструкция ВЫБОР КОГДА ... КОНЕЦ поможет тебе? Подробнее - справка.     
         | 
|||
| 
    3
    
        GANR    
     02.02.13 
            ✎
    15:09 
 | 
         
        рекв 1 - это что?     
         | 
|||
| 
    4
    
        XiPyPg2012    
     02.02.13 
            ✎
    15:12 
 | 
         
        Да там три варянта Кредит - Страховка - Лизинг и в зависимости от того что там стоит надо чтоб использовал тот или иной набор данных или запрос, просто как в одной скд это сделать я не представляю. а как указать какую скд использовать не знаю синтаксис. 
  
        типо: если ВидОперации = "Кредит" тогда СхемаКомпоновкиДанных1(); иначеесли видОперации = "Страховка" тогда СхемаКомпоновкиДанных2(); конецесли; ну эт как пример))  | 
|||
| 
    5
    
        GANR    
     02.02.13 
            ✎
    15:18 
 | 
         
        (4) Если в один запрос - через ОБЪЕДИНИТЬ ВСЕ и в условии каждого запроса проверять ПЕРЕД остальными условиями 
  
        ВЫБРАТЬ Поле1, Поле2, ПолеN ИЗ Кредит ГДЕ &Параметр = 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Поле1, Поле2, ПолеN ИЗ Страховка ГДЕ &Параметр = 2 ВЫБРАТЬ Поле1, Поле2, ПолеN ИЗ Лизинг ГДЕ &Параметр = 3 Принцип понятен? Код не самый оптимальный, но простой.  | 
|||
| 
    6
    
        GANR    
     02.02.13 
            ✎
    15:18 
 | 
         
        ВЫБРАТЬ
  
        Поле1, Поле2, ПолеN ИЗ Кредит ГДЕ &Параметр = 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Поле1, Поле2, ПолеN ИЗ Страховка ГДЕ &Параметр = 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Поле1, Поле2, ПолеN ИЗ Лизинг ГДЕ &Параметр = 3  | 
|||
| 
    7
    
        XiPyPg2012    
     02.02.13 
            ✎
    15:22 
 | 
         
        честно не понятен.
  
        1-набор данных пока выглядит так ВЫБРАТЬ СтраховкиОформленныеОбороты.Организация КАК Организация, СтраховкиОформленныеОбороты.СтраховаяКомпания КАК СтраховаяКомпания, СтраховкиОформленныеОбороты.ВидСтраховки КАК ВидСтраховки, СтраховкиОформленныеОбороты.ПоСчету КАК ПоСчету, СтраховкиОформленныеОбороты.КоличествоОборот, СтраховкиОформленныеОбороты.СуммаКВОборот ИЗ РегистрНакопления.СтраховкиОформленные.Обороты(&ДатаНачала, &ДатаОкончания, , ) КАК СтраховкиОформленныеОбороты ну дальше там параметры отборы.....вот аналогичное надо еще по 2-м регистрам и в зависимости от того что стоит на форме к тому или иному обращался  | 
|||
| 
    8
    
        GANR    
     02.02.13 
            ✎
    15:33 
 | 
         
        (7) И не используй эти имена типа Парам1 и Рекв1
  
        ВЫБРАТЬ СтраховкиОформленныеОбороты.Организация КАК Организация, СтраховкиОформленныеОбороты.СтраховаяКомпания КАК СтраховаяКомпания, СтраховкиОформленныеОбороты.ВидСтраховки КАК ВидСтраховки, СтраховкиОформленныеОбороты.ПоСчету КАК ПоСчету, СтраховкиОформленныеОбороты.КоличествоОборот, СтраховкиОформленныеОбороты.СуммаКВОборот ИЗ РегистрНакопления.СтраховкиОформленные.Обороты(&ДатаНачала, &ДатаОкончания, , &РеквизитНаФорме = &Страховка) КАК СтраховкиОформленныеОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ КредитОформленныеОбороты.Организация КАК Организация, КредитОформленныеОбороты.КредитоваяКомпания КАК КредитоваяКомпания, КредитОформленныеОбороты.ВидКредитовки КАК ВидКредитовки, КредитОформленныеОбороты.ПоСчету КАК ПоСчету, КредитОформленныеОбороты.КоличествоОборот, КредитОформленныеОбороты.СуммаКВОборот ИЗ РегистрНакопления.КредитОформленные.Обороты(&ДатаНачала, &ДатаОкончания, , &РеквизитНаФорме = &Кредит) КАК КредитОформленныеОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЛизингОформленныеОбороты.Организация КАК Организация, ЛизингОформленныеОбороты.ЛизинговаяКомпания КАК ЛизинговаяКомпания, ЛизингОформленныеОбороты.ВидЛизинговки КАК ВидЛизинг, ЛизингОформленныеОбороты.ПоСчету КАК ПоСчету, ЛизингОформленныеОбороты.КоличествоОборот, ЛизингОформленныеОбороты.СуммаКВОборот ИЗ РегистрНакопления.ЛизингОформленные.Обороты(&ДатаНачала, &ДатаОкончания, , &РеквизитНаФорме = &Лизинг) КАК ЛизингОформленныеОбороты А теперь???  | 
|||
| 
    9
    
        XiPyPg2012    
     02.02.13 
            ✎
    15:43 
 | 
         
        вооо спасибо теперь понял ))     
         | 
|||
| 
    10
    
        XiPyPg2012    
     02.02.13 
            ✎
    15:55 
 | 
         
        =(( блин мы же в наборах данных 
  
        вот что пишет Ошибка получения информации набора данных по причине: Ошибка в запросе набора данных по причине: {(15, 2)}: Поле не найдено "КредитыОформленныеОбороты.Организация" <<?>>КредитыОформленныеОбороты.Организация,  | 
|||
| 
    11
    
        GANR    
     02.02.13 
            ✎
    16:05 
 | 
         
        (10) Ну, для решения этого вопроса собеседники с форума должны видеть конфу перед глазами. Это непросто, так как у меня, например, платформа не установлена на компе. Дальше - консоль СКД, запросов, отладчик - экспериментируй.     
         | 
|||
| 
    12
    
        mikecool    
     02.02.13 
            ✎
    17:10 
 | 
         
        (10) пользуйся конструктором запроса, раз начинающий и не имеешь понятия  о запросах     
         | 
|||
| 
    13
    
        XiPyPg2012    
     02.02.13 
            ✎
    17:25 
 | 
         
        Так я нашел выход делаю три макета СКД. Свою кнопку сформировать. 
  
        Дальше: Если ВидОперации = "Страховка" тогда ЭлементыФормы.Результат.Очистить(); ТабДок = ЭлементыФормы.Результат; СКД = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = КомпоновщикНастроек.Настройки; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД,Настройки,ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДок); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); иначеесли ......... тогда . . . иначе . . . конецесли; Только встал вопрос как теперь сделать чтоб пользователь мог у этого реквезита выбрать всего три варянта Страховка, Кредит или Лизинг :)  | 
|||
| 
    14
    
        GANR    
     02.02.13 
            ✎
    21:06 
 | 
         
        (13) В свойствах элемента формы сделай выбор из списка. Надеюсь, с этим справишься.     
         | 
|||
| 
    15
    
        Ork    
     02.02.13 
            ✎
    21:10 
 | 
         
        (0) Давай уже всю задачу. А то задолбал плодить темы. v8: Реквезиты     
         | 
|||
| 
    16
    
        Vertalex    
     03.02.13 
            ✎
    17:36 
 | 
         
        Еще вариант: создай перечисление (3 твоих варианта), сделай параметр СКД, при компоновке считывай этот параметр и формируй таблицу запросом. Далее передавай эту таблицу как внешний объект данных в СКД (только нужно поля и роли вручную  полей указать).     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |