|
Как изменить вывод строк запроса в СКД? | ☑ | ||
---|---|---|---|---|
0
mirrr
30.11.11
✎
12:07
|
Есть запрос на СКД.
Нужно, при формировании документа-результата, обращаться к каждой текущей строке выборки и, проверяя значения на соответствие условиям, выводить определенные данные в свой макет группировки. Кроме того по каждой строке нужно в переменную записывать по условию сумму значений (т.е. из одной строки сумму включать в переменную, из другой нет), а затем выводить ее в свой макет общих итогов (стандартные общие итоги не считают по такому алгоритму). Подскажите, как это можно сделать? |
|||
1
mirrr
30.11.11
✎
12:17
|
?
|
|||
2
чувак
30.11.11
✎
12:23
|
Как-то так:
Пока Истина Цикл ЭлементРезультата = ПроцессорКомпановки.Следующий(); Если ЭлементРезультата = Неопределено Тогда Прервать; Иначе // Бла бла КонецЕсли; КонецЦикла; |
|||
3
mirrr
30.11.11
✎
12:25
|
это в модуле объекта надо писать в какой процедуре?
|
|||
4
mirrr
30.11.11
✎
12:32
|
(3)?
|
|||
5
чувак
30.11.11
✎
12:32
|
(3) А как формируется вообще отчет? Через какую кнопку?
|
|||
6
mirrr
30.11.11
✎
12:33
|
Стандартная команда "Сформировать"
|
|||
7
чувак
30.11.11
✎
12:37
|
(6) Этот код работает тогда, когда обработчик событий кнопки доступен. ИМХО
|
|||
8
mirrr
30.11.11
✎
12:42
|
а в других процедурах (ПриКомпоновкеРезультата или других) нельзя отловить каждую текущую строку выборки?
|
|||
9
PVV65
30.11.11
✎
12:46
|
(8) А пользовательские поля не подойдут?
|
|||
10
mirrr
30.11.11
✎
12:49
|
(9) нет, пробовал их.
у меня так(результат запроса): Договор____СуммаДоговора____Документ 1__________5000_____________Док1 1__________5000_____________Док2 1__________5000_____________Док3 1__________5000_____________Док4 В общих итогах по полю Договор выводит 20000, хотя сумма по договору=5000 и надо выводить 5000. Поэтому думал как-то программно проверять на значение текущей строки в выборке и суммировать в какую-то переменную реальную сумму по договору(5000) и потом значение этой переменной выводить в общие итоги. |
|||
11
mikecool
30.11.11
✎
12:51
|
(10) итоги суммируй только по договору
|
|||
12
mirrr
30.11.11
✎
12:55
|
(11)так я и суммирую только по договору. Договор есть в четырех документах, соответственно 5000*4=20000. А сумма по договору=5000.
|
|||
13
чувак
30.11.11
✎
12:56
|
В СКД в закладке "Ресурсы" у этого ресурса в колонке "Рассчитывать по" установи флажок на "Договор"
|
|||
14
mirrr
30.11.11
✎
12:56
|
т.е. надо так сделать:
Договор____СуммаДоговора____Документ__СуммаДока 1__________5000_____________Док1_______100 1__________5000_____________Док2_______5600 1__________5000_____________Док3_______4500 1__________5000_____________Док4_______1200 2__________3000_____________Док1_______500 2__________3000_____________Док2_______1600 2__________3000_____________Док3_______2500 2__________3000_____________Док4_______1250 Итого______8000________________________ХХХ т.е. чтобы итоговая сумма по всем договорам была равна 8000 |
|||
15
mirrr
30.11.11
✎
12:57
|
(13) см. (12)
|
|||
16
viktor_vv
30.11.11
✎
13:08
|
(10) Я так понял группировка Документ самая нижняя. Добавь в запросе еще одно поле для счетчика документов. На закладке ресурсы добавь еще один ресурс СуммаДоговора рассчитывать по договору, в выражении Сумма(СуммаДоговора)/Сумма(ПолеСчетчикаДокументов) и есстественно через выбор для проверки Сумма(ПолеСчетчикаДокументов) <> 0. Как-то так. Это если структура группировок жесткая.
|
|||
17
mirrr
30.11.11
✎
13:15
|
(16) пробовал этот вариант: для отдельного договора считает сумму по договору правильно, для общих итогов неправильно. Для примера (14) итог по сумме договора посчитает 32000/8=4000, а надо 8000
|
|||
18
viktor_vv
30.11.11
✎
13:17
|
(17) Ну да, насчет общих итогов засада получается.
|
|||
19
чувак
30.11.11
✎
13:18
|
(17) В общем-то можно в форму добавить новую кнопку "Сформировать" и прописать алгоритм формирования отчета через СКД. Если надо, я могу алгоритм обработки скинут
|
|||
20
mirrr
30.11.11
✎
13:21
|
(19) скинь, может поможет
|
|||
21
чувак
30.11.11
✎
13:23
|
Процедура ТвояПроцедура(Элемент)
СхемаКомпановки = ПолучитьМакет("ТвойМакет");//имеется ввиду макет компоновки Настройки = СхемаКомпановки.НастройкиПоУмолчанию; //если есть параметры запроса Настройки.ПараметрыДанных.Элементы[0].Значение = ДатаНач; Настройки.ПараметрыДанных.Элементы[1].Значение = КонецДня(ДатаКон); Расш = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпановщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпановки = КомпановщикМакета.Выполнить(СхемаКомпановки, Настройки,Расш); ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпановки.Инициализировать(МакетКомпановки,,Расш); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ТаблицаДок = Новый ТабличныйДокумент; ТаблицаДок.ТолькоПросмотр = Истина; ПроцессорВывода.УстановитьДокумент(ТаблицаДок); ПроцессорВывода.НачатьВывод(); Пока Истина Цикл ЭлементРезультата = ПроцессорКомпановки.Следующий(); Если ЭлементРезультата = Неопределено Тогда Прервать; Иначе ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); КонецЕсли; КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); ТаблицаДок.Показать(); КонецПроцедуры |
|||
22
mirrr
30.11.11
✎
13:28
|
(21) подскажите, как там проверить, какая группировка там текущая и в зависимости от этого выводить свой определенный макет вместо стандартного.
|
|||
23
PVV65
30.11.11
✎
13:33
|
(14) У тебя не правильно построен запрос. необходимо в компоновке создать два набора данных "Договор" и "Документы" и связать их на закладке "Связи наборов данных" и ВСЕ.
|
|||
24
mirrr
30.11.11
✎
13:40
|
(23) так то же самое получится. Для одного договора (и его суммы) есть несколько документов. При Левом соединениии (все договоры и документы удовлетворяющие условию связи по договору) будет таблица как в (14), т.е. суммы договоров будут повторяться для каждого документа. Далее в итогах они будут увеличиваться в столько раз, сколько документов по договору.
|
|||
25
PVV65
30.11.11
✎
13:42
|
(24) Связь в компоновке - это не просто "Левое соединение".
|
|||
26
PVV65
30.11.11
✎
13:43
|
+(25) Сначала попробуй - потом говори.
|
|||
27
mirrr
30.11.11
✎
13:44
|
(25) а какое?
|
|||
28
чувак
30.11.11
✎
13:44
|
(24) Есть еще вариант, не знаю, будет ли тебе это сложновато?
В СКД есть возможность импользовать "Вложенные схемы". Суть в том, чтоб строку с итогами выводить отдельной схемой |
|||
29
PVV65
30.11.11
✎
13:48
|
(28) Не путай человека.
(27) Если в СКД применять несколько наборов данных, то итоги рассчитываются в каждом из них отдельно. |
|||
30
mirrr
30.11.11
✎
13:51
|
(26) блин, не ожидал - работает
|
|||
31
mirrr
30.11.11
✎
13:52
|
(30) а я в одном запросе (наборе) их соединял...
|
|||
32
чувак
30.11.11
✎
13:55
|
(31) В СКД настоятельно рекомендуется соединить наборы данных, а не в запросе.
|
|||
33
PVV65
30.11.11
✎
13:56
|
(31) Все зависит от задачи. Ты можешь написать сколь угодно сложные запросы в наборах, а компоновка будет обрабатывать уже готовые наборы. В том числе и при помощи описания связей.
|
|||
34
mirrr
30.11.11
✎
14:12
|
еще вопрос в тему: если в какую-то колонку (поле) в скд нужно будет выводить результат выборки строк какой-то таблицы (прямо через запятую последовательно значения строк выборки), то как это можно сделать?
|
|||
35
mirrr
30.11.11
✎
14:15
|
т.е. примерно так (характеристики):
Договор____СуммаДоговора_____Характеристики_______Документ 1__________5000_______________доп.согл1,допсогл2___Док1___ 1__________5000_______________доп.согл1,допсогл2___Док2___ 1__________5000_______________доп.согл1,допсогл2___Док3___ 1__________5000_______________доп.согл1,допсогл2___Док4___ 2__________3000_______________доп.согл1,допсогл2___Док1___ 2__________3000_______________доп.согл1,допсогл2___Док2___ 2__________3000_______________доп.согл1,допсогл2___Док3___ 2__________3000_______________доп.согл1,допсогл2___Док4___ Итого______8000___________________________________________ |
|||
36
PVV65
30.11.11
✎
14:16
|
(34) Если правильно понял, то "Вычисляемое поле", в котором соединяешь нужные поля через запятую.
|
|||
37
mirrr
30.11.11
✎
14:21
|
(36) т.е. так же отдельным набором данных присоединить таблицу характеристик к таблице договоров по условию совпадения по договору, а как потом перебрать все значения таблицы характеристик по договору и вставить их в одну ячейку?
|
|||
38
PVV65
30.11.11
✎
14:22
|
(37) Для характеристик в СКД свой механизм - расширение языка запросов.
|
|||
39
mirrr
30.11.11
✎
14:26
|
(38) неправильно написал: в поле характеристики через запятую надо вывести значения строк регистра сведений по каждому договору.
|
|||
40
PVV65
30.11.11
✎
14:32
|
(39) Сворачивание нескольких строк в одну отдельная задача.
А в данном случае не понял структуру характеристик. "доп.согл." - это значение характеристики? Тип какой? Сколько может быть характеристик? Подозрение, что не совсем верно организовано хранение данных. Если доп.согл. - это документы, то лучше бы добавить в них реквизит с ссылкой на договор. В общем не понятно. |
|||
41
mirrr
30.11.11
✎
14:38
|
(40) мне как раз и нужно несколько строк в одну свернуть.Это можно сделать с помощью конструктора скд?
Характеристики - это периодический регистр сведений для договора. Хранит номера, даты, названия доп. соглашений с опред. даты. Нужно перебрать все строки регистра по договору, и вывести их результат через запятую в одном поле скд. |
|||
42
PVV65
30.11.11
✎
14:52
|
(41) СКД такой вопрос не решает. Можно при помощи запроса (много раз обсуждалось) или при помощи предварительной обработки характеристик - создаем программно ТЗ с колонками "Договор" и "Характеристики" (уже свернутые) и передаем в СКД как объект.
|
|||
43
mirrr
30.11.11
✎
14:57
|
(42) с созданием тз и набором данных-объектом попробую.
А при помощи запроса - где посмотреть можно? |
|||
44
mirrr
30.11.11
✎
14:59
|
я как раз запросом и пытаюсь сделать - добавил для характеристик набор-запрос, а как в одну строку-то свернуть?
|
|||
45
mirrr
30.11.11
✎
15:18
|
(44)?
|
|||
46
PVV65
30.11.11
✎
16:14
|
ВЫБРАТЬ
ЗначенияСвойствОбъектов.Объект, ЗначенияСвойствОбъектов.Значение, КОЛИЧЕСТВО(ЗначенияСвойствОбъектов.Значение) КАК Номер ПОМЕСТИТЬ Т1 ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов1 ПО ЗначенияСвойствОбъектов.Значение >= ЗначенияСвойствОбъектов1.Значение И ЗначенияСвойствОбъектов.Объект = ЗначенияСвойствОбъектов1.Объект СГРУППИРОВАТЬ ПО ЗначенияСвойствОбъектов.Объект, ЗначенияСвойствОбъектов.Значение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т.Объект, ВЫБОР КОГДА Т.Номер = 1 ТОГДА Т.Значение ИНАЧЕ NULL КОНЕЦ КАК Свойство1, ВЫБОР КОГДА Т.Номер = 2 ТОГДА Т.Значение ИНАЧЕ NULL КОНЕЦ КАК Свойство2, ВЫБОР КОГДА Т.Номер = 3 ТОГДА Т.Значение ИНАЧЕ NULL КОНЕЦ КАК Свойство3, ВЫБОР КОГДА Т.Номер = 4 ТОГДА Т.Значение ИНАЧЕ NULL КОНЕЦ КАК Свойство4 ПОМЕСТИТЬ Т2 ИЗ Т1 КАК Т ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т.Объект, МАКСИМУМ(Т.Свойство1) КАК Свойство1, МАКСИМУМ(Т.Свойство2) КАК Свойство2, МАКСИМУМ(Т.Свойство3) КАК Свойство3, МАКСИМУМ(Т.Свойство4) КАК Свойство4 ПОМЕСТИТЬ Т3 ИЗ Т2 КАК Т СГРУППИРОВАТЬ ПО Т.Объект ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т.Объект, ЕстьNULL(Т.Свойство1.Наименование,"") + " / " + ЕстьNULL(Т.Свойство2.Наименование,"") + " / " + ЕстьNULL(Т.Свойство3.Наименование,"") + " / " + ЕстьNULL(Т.Свойство4.Наименование,"") КАК Поле1 ИЗ Т3 КАК Т Немного адаптируешь. |
|||
47
PVV65
30.11.11
✎
16:56
|
Кстати. В 8.2.14 появилась в СКД функция ВычислитьВыражение, которая, если я правильно понял, может делать тоже самое, что и запрос из (46).
|
|||
48
mirrr
01.12.11
✎
10:15
|
(46) а если у меня для объекта может быть 1 св-во, а может быть и 20, то тогда надо добавлять 20 полей?
КАК Свойство1 ........... КАК Свойство20 |
|||
49
PVV65
01.12.11
✎
10:19
|
(48) Ну если кому то нужен отчет, в ячейке которого через запятую будет перечислено 20 свойств - пиши "КАК Свойство20".
А в приведенный запрос будет отображать первые четыре даже если реально 20. |
|||
50
mirrr
01.12.11
✎
10:23
|
(49) имел ввиду нет ли чего более универсального, т.к. хранить во врем. таблице 20 полей, которые не всегда будут использованы...
|
|||
51
PVV65
01.12.11
✎
10:26
|
(50) Более универсальное в (47).
|
|||
52
mirrr
01.12.11
✎
10:28
|
(51) кстати про нее - она только числа суммирует?
|
|||
53
PVV65
01.12.11
✎
10:32
|
нет
|
|||
54
mirrr
01.12.11
✎
10:39
|
а какой агрегатной функцией строковые поля суммировать? Сумма?
|
|||
55
mirrr
01.12.11
✎
10:42
|
"сумма" по строковому полю ошибку выдает
|
|||
56
mirrr
01.12.11
✎
10:47
|
ВычислитьВыражение("Количество(НаименованияПоля)",,,"Первая","Последняя")
ошибку пишет |
|||
57
PVV65
01.12.11
✎
11:00
|
У меня не стоит 8.2.14. Поэкспериментировать не могу. v8: Функция ВычислитьВыражение() в СКД - почитай тут и тут - http://infostart.ru/public/86764/
|
|||
58
mirrr
01.12.11
✎
11:12
|
там вычисляются выражения по полям-ресурсам, про сворачивание строк ничего нет
|
|||
59
PVV65
01.12.11
✎
11:50
|
ВычислитьВыражениеСГруппировкойМассив(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) -
Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю. Строка(<Выражение>) - Если в качестве параметра передан массив, то функция возвращает строку, содержащую строковые представления всех элементов массива, разделенных символами "; ". |
|||
60
mirrr
01.12.11
✎
11:55
|
почти сделал запросом (46), только при соединении
ЕстьNULL(Т.Свойство1,"") + " / " + ЕстьNULL(Т.Свойство2,"") + " / " + ЕстьNULL(Т.Свойство3,"") + " / " + ЕстьNULL(Т.Свойство4,"") КАК Поле1 если у свойств тип дата, тогда ест-но к ней символ прибавить нельзя. Пробовал эту дату перевести в строку (Представление, строка), все равно не хочет выводить 01.01.2011 00:00:00/01.02.2011 00:00:00 И кстати из этой даты время не убирается |
|||
61
PVV65
01.12.11
✎
12:07
|
(60) Собирай строку не в запросе, а в вычисляемом поле в зависимости от типов.
|
|||
62
mirrr
01.12.11
✎
12:09
|
а время как убрать можно?
|
|||
63
mirrr
01.12.11
✎
12:09
|
НАЧАЛОПЕРИОДА пробовал
|
|||
64
PVV65
01.12.11
✎
12:13
|
День(Дата) + Месяц(Дата) + Год(Дата)
|
|||
65
mirrr
01.12.11
✎
12:16
|
(61)
ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(Т.Свойство1)="ДАТА" ТОГДА ??? как тип дата в строку перевести |
|||
66
mirrr
01.12.11
✎
12:19
|
(64) вроде дата 01.01.2011 вернет результат 14?
|
|||
67
PVV65
01.12.11
✎
12:19
|
Строка(День(Т.Свойство1)) + Строка(Месяц(Т.Свойство1)) + Строка(Год(Т.Свойство1))
|
|||
68
mirrr
01.12.11
✎
12:24
|
(67) через Строка пробовал, но в тексте запроса это не работает, опять же непонятно, как какой-то тип (число, дата) преобразовать в строку в самом запросе
ВЫБОР КОГДА Т_Ном.НомерСтроки = 1 ТОГДА Строка(День(Т_Ном.ОснованиеДата)) +"."+ Строка(Месяц(Т_Ном.ОснованиеДата)) +"."+ Строка(Год(Т_Ном.ОснованиеДата)) ИНАЧЕ NULL КОНЕЦ КАК ДатаДС1, Есть еще представление, но то же самое будет |
|||
69
PVV65
01.12.11
✎
12:27
|
(68) Я же те написал в (61). А еще есть функция "Формат".
Читай справку. |
|||
70
mirrr
01.12.11
✎
12:42
|
(69) в вычисляемых полях нельзя использовать в выражении вычисляемые поля. У меня нужно сначала к дате добавить символ (", "), затем сложить несколько таких полей. Т.е. поле с датой и с символом(",") должно быть готовое уже в запросе, а потом в вычисляемом поле уже несколько таких полей сложить.
|
|||
71
PVV65
01.12.11
✎
12:47
|
В запросе получаешь поля Т.Свойство1 ..... Т.Свойство20.
в вычисляемом поле пишешь Формат(Свойство1,"ДЛФ=D") + ", " + ...... + Формат(Свойство20,"ДЛФ=D") |
|||
72
mirrr
01.12.11
✎
12:52
|
(71) я именно так и сделал. Не устраиваю лишние запятые в случае пустых значений. Поэтому нужна предварительная обработка, чтобы "Свойство1" уже содержало текст "Свойство1, " в случае наличия, и текст "" в случае отсутствия текста в "Свойство1".
|
|||
73
PVV65
01.12.11
✎
12:54
|
Формат(Свойство1,"ДЛФ=D") +
Выбор Когда Формат(Свойство1,"ДЛФ=D") = "" Тогда "" Иначе ", " Конец + ...... + Формат(Свойство20,"ДЛФ=D") |
|||
74
PVV65
01.12.11
✎
12:56
|
А еще есть функция СКД "ЗначениеЗаполнено"
|
|||
75
mirrr
01.12.11
✎
13:00
|
(74) опять только для вычисляемого поля, или и в запросе можно, при описании поля?
|
|||
76
mirrr
01.12.11
✎
13:02
|
(73) единственный минус - последняя запятая всегда выводится
|
|||
77
mirrr
01.12.11
✎
13:05
|
кстати в коде (46) ВТ уничтожать надо, или не обязательно?
|
|||
78
PVV65
01.12.11
✎
13:10
|
(75) в запросе - нет.
(76) у меня не выводится. (77) нет. |
|||
79
mirrr
01.12.11
✎
13:15
|
(78) последняя не выводится, даже если не все 20 свойств заполнены?
|
|||
80
PVV65
01.12.11
✎
13:28
|
Как напишешь - так и будет выводиться.
|
|||
81
mirrr
01.12.11
✎
13:31
|
(80) согласен. но кроме как (73) варианта не знаю, потому и спрашиваю.
|
|||
82
mirrr
01.12.11
✎
13:32
|
немного приукрасил, получилось
06.11.2011 ; 18.11.2011 ; |
|||
83
mirrr
01.12.11
✎
13:54
|
можно ли менять размер колонок в скд, не используя макеты? Потому как слишком широкие стандартные колонки.
|
|||
84
PVV65
01.12.11
✎
13:57
|
(83) Колонка "Оформление" в описании полей на закладках "Наборы данных" и "Вычисляемые поля".
Или постобработка табличного документа. |
|||
85
mirrr
01.12.11
✎
13:59
|
"постобработка табличного документа" - это через закладку "макеты"?
|
|||
86
mirrr
01.12.11
✎
14:02
|
то, что через запрос (46), можно через ВычислитьВыражениеСГруппировкойМассив сделать?
|
|||
87
PVV65
01.12.11
✎
14:04
|
(85) это из встроенного языка.
(86) я уже писал, что не знаю, а предполагаю (из описания функции). |
|||
88
mirrr
01.12.11
✎
14:09
|
ВычислитьВыражениеСГруппировкойМассив пока оставлю. Попробую еще вариант сделать то же через внешний набор данных.
|
|||
89
mirrr
01.12.11
✎
17:02
|
как можно шрифт заголовков полей группировок изменить?
|
|||
90
PVV65
01.12.11
✎
17:22
|
Шрифт заголовков можно изменить в "Макете оформления компоновки данных". Выбор макета осуществляется в настройках компоновки на закладке "Другие настройки". Создать свой макет можно либо в общих макетах ветки конфигурации. либо в другом объекте где возможно создание макетов. При создании макета надо указать тип макета - "Макет оформления компоновки данных". В открывшемся окне редактора макета, за основу возможно взять один из стандартных макетов и отредактировать его.
|
|||
91
mirrr
01.12.11
✎
17:41
|
В какой процедуре нужно этот макет оформления (созданный на основе стандартного) привязывать к компоновщику макета? При нажатии на кнопку "сформировать"? т.е. надо свою кнопку "сформировать" с обработчиком делать?
|
|||
92
PVV65
02.12.11
✎
15:28
|
>>>>>> Выбор макета осуществляется в настройках компоновки на закладке "Другие настройки".
|
|||
93
mirrr
02.12.11
✎
15:46
|
(92) это стандартный макет. Я так понял, чтобы изменить шрифт заголовков полей группировок, нужно создать свой макет оформления и в нем изменить шрифт. А потом программно его подвязать к компоновщику макета. Если не так, поясните.
|
|||
94
PVV65
02.12.11
✎
15:55
|
нет. на основе стандарта. сохраняешь свое. в настройках выбираешь.
|
|||
95
PVV65
02.12.11
✎
15:58
|
если создал макет и дал ему имя, он появится в настройках.
|
|||
96
mirrr
04.12.11
✎
17:08
|
(29) Вы писали, что если в СКД применять несколько наборов данных, то итоги рассчитываются в каждом из них отдельно.
Подскажите, если делать не через скд, а просто запросом в модуле отчета, то как результат запроса можно привести к виду (т.е. чтобы итоговая сумма по всем договорам была равна 8000)? таб1: Договор____СуммаДоговора____Документ__СуммаДока 1__________5000_____________Док1_______100 1__________5000_____________Док2_______5600 1__________5000_____________Док3_______4500 1__________5000_____________Док4_______1200 2__________3000_____________Док1_______500 2__________3000_____________Док2_______1600 2__________3000_____________Док3_______2500 2__________3000_____________Док4_______1250 Итого______8000________________________ХХХ т.е. чтобы итоговая сумма по всем договорам была равна 8000. Я кроме как объединением таблиц не знаю. В случае объединения будет так (таб2): Договор____СуммаДоговора____Документ__СуммаДока 1__________5000_____________""_________0 1__________0________________Док1_______5600 1__________0________________Док2_______4500 1__________0________________Док3_______1200 2__________3000_____________""_________0 2__________0________________Док1_______1600 2__________0________________Док2_______2500 2__________0________________Док3_______1250 Итого______8000________________________ХХХ Подскажите, можно ли такое сделать через соединение, т.к. в 1-ом результате (таб1) если делать итоги по сумме договора, получится 32000. |
|||
98
mirrr
04.12.11
✎
17:34
|
(94)-(95). Создал в разделе макетов отчета макет с типом "Макет оформления компоновки данных". В нем загрузил стандартный макет. Изменил его. Сохранил. Макет в настройках не появился.
|
|||
100
mirrr
04.12.11
✎
17:44
|
+(98)
Подвязал этот макет к компоновщику макета: МакетОформления=ПолучитьМакет("МойМакет"); МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки, МакетОформления); После этого отчет выводится через этот макет. Но в настройках его не нашел, поясните. |
|||
101
PVV65
05.12.11
✎
09:46
|
(100) К сожалению, макет появится в настойках только если будет создан в общих макетах.
|
|||
102
PVV65
05.12.11
✎
09:49
|
(96) Не понятно для чего надо извращаться, если есть нормальные решения. Или это конкурсное задание, в котором надо "левое соединение"?
|
|||
103
mirrr
05.12.11
✎
15:10
|
(102) собственно, с чего и ветка началась: неправильно был составлен запрос. Но я его составлял в консоли запросов, а там сделать отдельные наборы данных нельзя. Потому и результат получился такой (в итогах по сумме договора 32000):
Договор____СуммаДоговора____Документ__СуммаДока 1__________5000_____________Док1_______100 1__________5000_____________Док2_______5600 1__________5000_____________Док3_______4500 1__________5000_____________Док4_______1200 2__________3000_____________Док1_______500 2__________3000_____________Док2_______1600 2__________3000_____________Док3_______2500 2__________3000_____________Док4_______1250 Итого______32000________________________ХХХ Поэтому и вопрос: как через консоль запросов можно было то же сделать, но чтобы итоговая сумма по полю "Сумма договора" была равна 8000 (т.е правильно составить запрос). Я кроме как объединением (таб2 из (96) ) не знаю. Подскажите, если есть еще какие варианты. |
|||
104
mirrr
06.12.11
✎
13:02
|
(103) ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |