Имя: Пароль:
1C
1С v8
Как по правильному на СКД реализовать отчет, содержащий внешние данные?
0 Cerera
 
19.02.14
10:16
В отчете нужно соединить две таблицы по датам и периоду
1)ПланПродаж
          Период
          Сценарий
          Номенклатура
          Количество
2)ПериодыСценариев (внешний источник данных - таблица значений), скорее всего

Сценарий
ДатаНачала
ДатаКонца


Еслиб нужно было просто соединить две таблицы в запросе, то сделал бы внутреннее соединение.

ВЫБРАТЬ
    ПланыПродажОбороты.Сценарий,
    ПланыПродажОбороты.Номенклатура,
    ПланыПродажОбороты.КоличествоОборот,
    ПланыПродажОбороты.Период КАК Период
ПОМЕСТИТЬ ПланыПродаж
ИЗ
    РегистрНакопления.ПланыПродаж.Обороты(&ВыбНачПериода, &ВыбКонПериода, Месяц, ) КАК ПланыПродажОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СценарииПланирования.Ссылка,
    &НачалоПериодаСценария,
    &КонецПериодаСценария
ПОМЕСТИТЬ ДатыСценариев
ИЗ
    Справочник.СценарииПланирования КАК СценарииПланирования
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПланыПродаж.Сценарий,
    ПланыПродаж.Номенклатура,
    ПланыПродаж.КоличествоОборот,
    ПланыПродаж.Период
ИЗ
    ПланыПродаж КАК ПланыПродаж
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДатыСценариев КАК ДатыСценариев
        ПО ПланыПродаж.Сценарий = ДатыСценариев.Ссылка
            И ПланыПродаж.Период >= ДатыСценариев.НачалоПериодаСценария
            И ПланыПродаж.Период <= ДатыСценариев.КонецПериодаСценария

Но когда два набора данных как реализовать это?
Пользователь заполняет периоды для каждого сценария. Потом эта таблица передается в СКД. а потом соединяем как соединит наборы, чтоб было внутреннее соединение или как вообще решить можно это?
1 Cerera
 
19.02.14
10:16
блин. по сценарию и периоду.
2 Ненавижу 1С
 
гуру
19.02.14
10:17
используй соединение наборов данных в схеме СКД
3 Cerera
 
19.02.14
10:19
(2)но ведь там нет внутреннего соединения. или как выкрутиться?
4 bvb
 
19.02.14
10:29
Сделай один набор данных с результирующей таблицой
5 Cerera
 
19.02.14
10:36
(4)это что означает? не совсем понял. пользователь ведь будет заполнять таблицу значений а нужно чтоб эта таблица использовалась в запросе
6 bvb
 
19.02.14
10:53
Таблицы на форме ?
1. Заряди ими запрос по ТЗ получи результат (используй там какие хочешь соеденения).
2.Резульатат отлаживай и контролируй в результирующей таблице значений (если нужно и удобно это тебе).
3.Результатом заряди набор данных типа "Объект".
4. Объект юзай стандартным СКД.
Как то так .
7 Cerera
 
19.02.14
11:10
(6)прекрасно! Благодарю! это в "ПриКомпоновкеРезультата" нужно запрос сделать и результирующую таблицу уже использовать в качестве набора?
8 mistеr
 
19.02.14
11:28
(3) Есть.
9 Cerera
 
19.02.14
11:29
(8)как это есть? вы говорите, что можно соединять наборы данных внутренним соединением?
10 bvb
 
19.02.14
13:10
(7) Да
1. Создать набор данных типа "объект"  определить поля с которыми будет работать СКД
2. Сделать запрос какой нужно и выгрузить его в ТЗ поля у которго совпадают с полями набора
затем :
Я так достаю в СКД данные из сторнней базы SQL

Процедура СформироватьОтчет() Экспорт
    
        
    
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    
    ВнешниеНаборыДанных = Новый Структура;
    
    
    
    ВнешниеНаборыДанных.Вставить("ЗапросSQL",ТЗSQL);   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных, ДанныеРасшифровки);
    
    ЭлементыФормы.ДокументРезультат.Очистить();
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.ДокументРезультат);
    
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
11 mistеr
 
19.02.14
13:42
(9) Если наложить отбор на подчиненный набор данных, соединение будет внутренним.
12 mistеr
 
19.02.14
13:43
(11) подчиненный = приемник
13 Cerera
 
19.02.14
14:02
(12)то есть поле завести какое-нибудь, например со значением "Истина" и отборчик сделать по этому полю?
14 Necessitudo
 
19.02.14
15:21
Забаньте его кто-нибудь.
15 Cerera
 
19.02.14
15:32
(14)ты нарочно нарываешься? Или чем объясняются твои никчемные сообщения во вполне не пятничных ветках? может быть ты мне в чём то завидуешь? или тебе не хватает внимания? Да. Пиариться за счет высеров в ветках, которые создают местные знаменитости - это лёгкий хлеб. Но ты всегда будешь в тени, тебе не видать славы.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс