Имя: Пароль:
1C
1С v8
Отчет с СКД
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 твоих варианта), сделай параметр СКД, при компоновке считывай этот параметр и формируй таблицу запросом. Далее передавай эту таблицу как внешний объект данных в СКД (только нужно поля и роли вручную  полей указать).
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.