К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

СКД и значения полей группировок

WAR
0 - 03.04.2014 - 06:29
Допустим есть 2 группировки: Склад и Товар.
Интересует как при описании пользовательских полей проверить, для какой группировки рассчитывается значение пользовательского поля. Как организовать подобную проверку?

Хочу сделать поле, значение которого будет производиться только для группировки товар.
Например подобным образом:
ВЫБОР
КОГДА Товар ЕСТЬ NULL ТОГДА 0
ИНАЧЕ КоличествоОстаток
КОНЕЦ
Но так не работает.

Настройка состава авто-полей не совсем устраивает, потому что группировку товар можно поставить выше склада (1. Товар, 2. Склад), и в таком случае в группировке по складу будет присутствовать значение товара.



Гость
1 - 03.04.2014 - 07:31
Ни фига не понял. Зачем пользовательское поле? Чем не устраивает перечень группировок для расчета ресурса?.
WAR
2 - 03.04.2014 - 08:06
Расчет ресурсов не устраивает потому, что:
1) В ресурсах есть начальный и конечный остатки.
2) Идет разделение значения ресурсов (нач.ост. и кон.ост.) на 2 колонки: положительные значения ресурсов в одной колонке, отрицательные колонки - в другой.
3) Используется детализация отчета до регистраторов.

Всего перечисленного достаточно, чтобы у расчета остатков "снесло крышу" и он начал выводить некорректную информацию о начальном и конечном остатке.
Некорректный расчет я "вылечиваю" пользовательскими полями: сначала рассчитывается значение ресурса, потом в пользовательском поле проверяется значение на больше-меньше нуля.

Соответственно надо решить другую задачу - как реализовать вывод значений пользовательских полей только для определенных группировок.
WAR
3 - 03.04.2014 - 08:14
Можно отредактировать для каждой из группировок состав выводимых в ней полей (развернуть авто-поле и удалить "лишнее"), но это решение устраивает не на 100%, т.к. если поднять группировку, для которой должен выполняться расчет вверх, то получается, что расчет можно выполнить и для группировок ниже уровнем.
Гость
4 - 03.04.2014 - 08:35
2-WAR >
Всего перечисленного достаточно, чтобы у расчета остатков "снесло крышу" - у твоего СКД какая-то неправильная психическая организация.
В сторону: в выражении ресурса можно чёрти чего написать. Например Сумма(КоличествоНачОстаток - КоличествоКонОстаток) и даже Сумма(ВычислитьВыражение("бла-бла-бла"))
WAR
5 - 03.04.2014 - 11:13
4-roma n > У моего СКД она как раз правильная. Скорей всего ты с ней просто мало и узконаправленно работал.

То, что ты пишешь: в выражении ресурса можно чёрти чего написать. Например Сумма(КоличествоНачОстаток - КоличествоКонОстаток) и даже Сумма(ВычислитьВыражение("бла-бла-бла")) все оно верно ровно до тех пор, пока не пытаешься получить остатки в разрезе до документов движения.
Гость
6 - 03.04.2014 - 12:04
5-WAR > ИТС. Типичные проблемы при расчете остатков. ИМХО
WAR
7 - 03.04.2014 - 12:16
6-roma n > Но мы обсуждаем нетипичные проблемы.
Мне бы чего-нибудь по сабжу, ибо другого пути реализации я не вижу.
Гость
8 - 03.04.2014 - 12:31
7-WAR > Ты читал? Расчёт остатков на позицию регистратора самая типичная проблема
WAR
9 - 03.04.2014 - 12:35
8-roma n > Я по теме СКД много чего перечитал.
Ответа на свой вопрос не нашел.

Прежде, чем кому-то что-то советовать, может быть попробуете это сделать самостоятельно?
Вы попробуйте, например, начальные и конечные остатки по взаиморасчетам разделить на отрицательные и положительные. И попробуйте сделать это так, чтобы сумма начального и конечного остатков осталась такой, какая должна быть.
Гость
10 - 03.04.2014 - 12:59
9-WAR > Возможно, я просто не понимаю сути проблемы?

Я правильно понимаю, что вывод остатка ресурса на документ движения трудностей не вызывает? Но нужен не просто вывод остатка, а вывод в различные колонки в зависимости от знака?
В этом случае бери в выборку данные дважды, и определи для этой пары ресурсов свои макеты с примерно таким выражением для параметра
Выбор когда СуммаВзаиморасчетовКонечныйОстаток>0 Тогда СуммаВзаиморасчетовКонечныйОстаток иначе 0 Конец
Не?
WAR
11 - 03.04.2014 - 13:05
Цитата:
Сообщение от roma n Посмотреть сообщение
9-WAR > Возможно, я просто не понимаю сути проблемы? Я правильно понимаю, что вывод остатка ресурса на документ движения трудностей не вызывает? Но нужен не просто вывод остатка, а вывод в различные колонки в зависимости от знака? В этом случае бери в выборку данные дважды, и определи для этой пары ресурсов свои макеты с примерно таким выражением для параметра Выбор когда СуммаВзаиморасчетовКонечныйОстаток>0 Тогда СуммаВзаиморасчетовКонечныйОстаток иначе 0 Конец Не?
Такой вариант я еще не пробовал. И пару одинаковых ресурсов, кстати, создавать не обязательно. Достаточно будет и одного.
Спасибо!
WAR
12 - 03.04.2014 - 14:11
10-roma n > Попробовал. Получилось. Пусть не совсем в точности так, как ты описал, но ты, получается, навел меня на мысль, и за это тебе большое спасибо!

Итак, способ решения.
Мне нужно разделить остатки по взаиморасчетам на нашу задолженность (отрицательная сумма) и задолженность контрагентов (положительная сумма).
Запросом (остатки и обороты) получаю начальный и конечный остатки.
Т.к. на этапе выполнения запроса чревато вмешиваться в его работу (даже соединение с другой таблицей может привести к некорректному расчету остатков), то туда и не лезу. Единственное что дополнительно делаю - указываю группировки, по которым надо рассчитывать ресурсы (в моем случае это Договор, ВалютаВзаиморасчетов договора и Регистратор).

Создаю 4 "фиктивных" вычисляемых поля (наш долг и долг клиента на начало и конец), чтобы их можно было добавить в ресурсы. Почему "фиктивных" - потому что в выражении у них "0".

Добавляю эти 4 вычисляемых поля в ресурсы и в выбранные поля. Таким образом СуммаНачальныйОстаток и СуммаКонечныйОстаток напрямую в отчете не выводятся.

А далее создаю под вычисляемые поля 4 макета поля.
В поле пишется выражение вида:
ВЫБОР КОГДА СуммаНачальныйОстаток < 0 ТОГДА -СуммаНачальныйОстаток ИНАЧЕ 0 КОНЕЦ (наш долг начальный остаток).

Все, профит.


К списку вопросов






Copyright ©, Все права защищены