|
Маленький вопрос по СКД | ☑ | ||
---|---|---|---|---|
0
ДенисЧ
03.03.16
✎
14:12
|
Есть две таблички:
первая: документ, номенклатура, количество1 вторая: документ, номенклатура, документДвижения, количество2 В СКД я их соединяю, имея соединение один ко многим от первой ко второй. Делаю вычисляемое поле дельта = Количество1 - количество2 в Детальных записях (разумеется) эта дельта не ноль, но в итоге по номенклатура и документу - 0. В ресурсе ставлю вычислять по документ, номенклатура. в детальных всё равно оно вычисляется. А потом в отбор добавляю дельта <> 0, но всё равно выводятся записи, где в деталях не ноль... Надеюсь, понятно объяснил? )) Как сделать так, чтобы отбор работал только по группировкам, а детальные не трогал? |
|||
1
mikecool
03.03.16
✎
14:13
|
может добавить еще один ресурс только по группировкам и по нему отбирать?
|
|||
2
ObjectRelation Model
03.03.16
✎
14:13
|
сделай всё это в запросе
|
|||
3
Defender aka LINN
03.03.16
✎
14:13
|
Делай отбор в группировке. ВНЕЗАПНО, да?
|
|||
4
mikecool
03.03.16
✎
14:14
|
(3) это в какой момент? в запросе?
|
|||
5
Defender aka LINN
03.03.16
✎
14:14
|
(4) В СКД
|
|||
6
ДенисЧ
03.03.16
✎
14:15
|
(3) Внезапно. Не умею.
(2) Таблички собираются вручную. Например, юзвери сами вводят. Запроса тут нет. И условие должно быть или не быть. От желания зависит. |
|||
7
ДенисЧ
03.03.16
✎
14:18
|
(3) а, я понял, что ты имеешь в виду...
но группировок больше одной... Пользаку что, на всех задавать? |
|||
8
Defender aka LINN
03.03.16
✎
14:20
|
(6) Я поражен (с)
http://screencast.com/t/3xKxvAlaN |
|||
9
Defender aka LINN
03.03.16
✎
14:21
|
(7) Ну, я бы может и посоветовал чего, но сломался на фразе "в отбор добавляю дельта <> 0, но всё равно выводятся записи, где в деталях не ноль..."
|
|||
10
aleks_default
03.03.16
✎
14:24
|
(9) я тоже на ней завис
|
|||
11
ДенисЧ
03.03.16
✎
14:24
|
вот примерик картинки...
http://pics.rsh.ru/img/rep_pf994bv2.png |
|||
12
ДенисЧ
03.03.16
✎
14:25
|
Видим, что по одному из документов получается дубление...
В итоге по номенклатуре должно быть 0. А имеем 24... |
|||
13
ObjectRelation Model
03.03.16
✎
14:26
|
(11) картинки нет
|
|||
14
Defender aka LINN
03.03.16
✎
14:27
|
(12) Не видим %)
|
|||
15
ДенисЧ
03.03.16
✎
14:29
|
||||
16
Defender aka LINN
03.03.16
✎
14:31
|
Дык у тебя ж небось формула ресурса "Сумма(Разница)".
А надо "Сумма(Количество1)-Сумма(Количество2)" |
|||
17
ДенисЧ
03.03.16
✎
14:37
|
(16) Хм...
Цифры стали правильные, а вот отбор всё равно не срабатывает... Хотя.. Сейчас попробую в самом отчёте... |
|||
18
ObjectRelation Model
03.03.16
✎
14:37
|
ты же все равно документ-движения не выводишь?
|
|||
19
also
03.03.16
✎
14:38
|
(17) отбор на уровне всего отчета ставишь?
|
|||
20
Defender aka LINN
03.03.16
✎
14:39
|
(17) А что именно за отбор? "Количество <> 0"? Посмотри на мой скрин и найди 10 отличий
|
|||
21
ДенисЧ
03.03.16
✎
14:53
|
(18) Вывожу. Он нужен
(19) и так и так. В пользовательском - не срабатывает, в схеме компоновки срабатывает... (20) отбор Дельта <> 0, где Дельта = Сумма(количество1) - сумма(количество2) |
|||
22
Defender aka LINN
03.03.16
✎
14:54
|
(21) Так вот "Дельта <> 0" и "Дельта Заполнено" - это 2 большие разницы, если что.
|
|||
23
ДенисЧ
03.03.16
✎
14:59
|
(22) Если что, у меня оба количества гарантированно числа. Поэтому не нуль и заполнено - это одна разница, причём маленькая.
|
|||
24
Defender aka LINN
03.03.16
✎
15:04
|
(23) У тебя 2 набора, т.е. левое соединение. Так что никаких гарантий.
|
|||
25
ДенисЧ
03.03.16
✎
15:10
|
(24) и как быть?
|
|||
26
Живой Ископаемый
03.03.16
✎
15:12
|
Объеднить таким образом чтобы ресурсы второй таблички были отдельными, и потом сгруппировать по тем поляем, по которым ты бы соединял.
|
|||
27
ДенисЧ
03.03.16
✎
15:16
|
(26) Они и так отдельные - количество1 из первой, количество2 из другой.
|
|||
28
aleks_default
03.03.16
✎
15:28
|
может завязаться на уровеньВГруппировке в отборе?
|
|||
29
Живой Ископаемый
03.03.16
✎
15:34
|
2(27)хы... ща.
Таблица1 имеет такую запись: Номенклатура1, Документ1, КоличествоТаблицы1. Таблица2 имеет такую запись: Номенклатура1. Документ2, КоличествоТаблицы2. Что можно сделать. Соединение. в результате которого родится таблица с одной записью: Номенклатура1, Документ1, Документ2, КоличествоТаблицы1, Количествотаблицы2, (очевидно. что тут можно добавить высиляемое поле разницы.) А можно сделать ОБЪЕДИНЕНИЕ, в результате котоого родится таблица с двумя записями: Номенклатура1, Документ1, КоличествоТаблицы1, 0(Как КоличествоТаблицы2) Номенклатура1, Документ2, 0(Как КоличествоТаблицы1), Как КоличествоТаблицы2 Во втором случае Ты еще сгруппируешь по Номенклатуре1 (по тому полю, по которому бы ты соединил в первом случае) |
|||
30
Defender aka LINN
03.03.16
✎
15:34
|
(27) Ты внятно объясни - что надо-то.
|
|||
31
ДенисЧ
03.03.16
✎
15:37
|
(30) мне надо:
по документу и номенклатуре слева составить а) список документов справа и б) вывести только те номенклатуры, где есть расхождение на уровне группировки номенклатуры (в моём случае - справок А и Б). |
|||
32
Defender aka LINN
03.03.16
✎
15:39
|
(31) Ну так и ставь отбор на уровне группировки номенклатуры
|
|||
33
ДенисЧ
03.03.16
✎
16:38
|
Мда...
С отборами вроде разобрался, но возникла новая вопроса... Отчёт у меня компонуется программно. Ибо нужно сначала данные получить, потом их через источники данных подсунуть... Установил отчёту схему компоновки, кнопки стандартные в форме подставилсьь... Но если я делаю настройку в пользовательском режиме, то отчёт на них не реагирует. примерный код: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; тзРеализация = ""; тзТТН = ""; РасчетДанных(тзРеализация, тзТТН); СхемаКомпоновкиДанных = ПолучитьМакет("СхемаКомпоновки"); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; данные расшифровки МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); компоновки ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; внДанные = Новый Структура("Реализация, ЕГАИС", тзРеализация, тзТТН); ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, внДанные, ДанныеРасшифровки); Результат = ДокументРезультат; Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры Понятно, что берутся НастройкиПоУмолчанию... А вот как и откуда взять те настройки, что я сделал через форму? В отладчике смотрел ЭтотОбъект - там даже следов моего вмешательства не наблюдается... |
|||
34
LordCMEPTb
03.03.16
✎
16:43
|
(33) Настройки = СхемаКомпоновкиДанных.ПолучитьНастройки()
|
|||
35
LordCMEPTb
03.03.16
✎
16:44
|
(34) Тьфу, то есть КомпоновщикНастроек.ПолучитьНастройки()
|
|||
36
ДенисЧ
03.03.16
✎
16:47
|
О! Точно... Склеротик старый...
Помогло, спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |