Мне почему-то кажется, что проблема в архитектуре системы и поэтому возникают такие проблемы. Может Вы приведете какой-то конкретный пример формы и данных и что потом нужно сделать? Если у Вас пользователь сохраняет данные "на решетку", то они ложатся на определенный срез, а потом Вы хотите срез "поменять". В кубах любого производителя в таком случае может быть определена только операция сторнирования всего среза и заполнение другого заново. Попробую предположить. Если подразумевается, что сумма с решетки может быть потом распределена по каким-то значениям, то не совсем понятно, что мешает это сделать, вроде бы нет проблемы потом добавлять записи с отличными от решетки значениями? Если хочется, чтобы просто пользователь не обнулял или менял вручную значение на решетке, то просто реализовать свою сложную логику функциями планирования. У меня в похожей ситуации (необходимость более сложно, чем в стандарте менять зависимые значения) была только проблема в том, чтобы иметь возможность определить - какие показатели были изменены пользователем. В этом случае можно просто добавить признак и разделить по срезам. Например добавить признак "срез" и значения "текущий" и "сохранено". На форме использовать уровень планирования, ограниченный значением признака "срез" = "текущий", а функцию планирования написать и запускать в контексте уровня с неограниченным признаком "срез", тогда в функции можно будет сравнить - что было и что ввел пользователь и обработать согласно своему алгоритму. При сохранении, разумеется, надо копировать информацию с уровня "срез"="текущий" на уровень "срез"="сохранено" (через последовательность функций планирования). Таким способом можно попробовать реализовать и "замену" (сделать отдельную форму, на которой вывести введенные признаки, дать дропдаунлисты со справочников не введенных признаков, пользователь выбирает и потом жмет кнопку "заменить" и далее функциями копируем данные, а на старом срезе - обнуляем или не обнуляем, но предусматриваем потом в отчетах и дальнейших расчетах, что на решетке лежат данные, которые не надо учитывать). Также я могу ошибаться, но в случае, если сумму надо распределять, то в форме значение на решетке будет само корректироваться. То есть, если в куб "год, месяц, количество" и введем "2009, #, 100", а потом "2009, 1, 20" и "2009, 2,30", то в кубе запись на решетке изменится на "2009, #, 50" (верне, после первой на решетку запишется сторно -20 и после второй -30). Или нет? Ну и для системы бюджетирования выглядит немного странной ситуация, что кто-то вводит цифры, а кто-то другой знает на каком срезе эти цифры должны быть. Мне кажется, что или первый знает на каких срезах или второй знает какие цифры. Вот кто знает - тот пусть вводит все. Или, возможно, просто неправильно выбран инструмент, это же не универсальные формы для ввода, а именно система сбора бюджетных показателей.
З.Ы. Если ошибся, то буду рад, если поправят, у меня опыта в SEM немного и его, к тому же, сейчас нет под рукой, чтобы проверить.
|
|