|
11.03.2012, 11:54 | #1 |
Участник
|
Замена фин.аналитик
Всем здравствуйте,
У нас возникла необходимость программно подменять фин.аналитики (перебираем все таблицы, где тип данных Dimension и подменяем аналитики согласно новым правилам). Но есть подозрение, что нужно запустить какие-нибудь процедуры пересчета общих таблиц, типа как InventSum в логистике. Есть ли такие ? |
|
11.03.2012, 12:19 | #2 |
Участник
|
У вас старое значение строго меняется на другое новое, до этого нигде не встречавшееся? Тогда это просто переименование первичного ключа. Никаких дополнительных действий не потребуется (ведь значения изменятся везде и в общих таблицах тоже).
Если же у вас происходит объединение нескольких значений в одно или наоборот, то в общем случая я вообще не уверен, что задним числом возможно такое реализовать без отката закрытых периодов. |
|
11.03.2012, 12:24 | #3 |
Участник
|
В принципе, есть, конечно, только вот, если Вы уж делаете процедуру замены значений аналитик, то автоматом "зацепите" и эти "суммарные" таблицы (бух.сальдо, например). Однако для этих суммарных таблиц надо будет не значение аналитик заменять, а просто сложить соответствующие строки (или создать новую).
Я это к тому, что при грамотном написании подобной процедуры никаких пересчетов запускать не требуется. Сам процедура должна создать/изменить соответствующие строки таблиц. Да и, собственно, у всех этих "суммарных" таблиц, как правило, есть уникальный индекс, включающий в себя поле Dimension. Т.е. Вы просто не сможете создать "дубли" в подобных таблицах. Кстати, это является одним из признаков подобных суммарных таблиц.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
11.03.2012, 13:40 | #4 |
Участник
|
Спасибо за ответ.
Переименовывать первичный ключ не получится, так как там есть и объединение аналитик и перенос из одной в другую - поэтому приходится перебором всех таблиц. "Сам процедура должна создать/изменить соответствующие строки таблиц." Подскажите, пожалуйста, какие таблиц стоит проверить? Я попробовала проделать процедуру на тестовом приложении просто по всем таблицам, содержащим анаитику - ошибок неуникального ключа не было, значит ли это, что все в порядке? :-) |
|
11.03.2012, 15:56 | #5 |
Участник
|
Цитата:
Цитата:
Вам надо смотреть на индексы со свойством AllowDuplicate = No в которые включены поля Dimension. Если подобный индекс указан как Primary-индекс таблицы, то это первое "подозрение" на то, что это и есть одна из "суммирующих" таблиц. ============================================ И еще один момент. Дело в том, что кроме собственно поля Dimension фин.аналитики могут быть представлены парой полей: DimensionCode + Num. Причем не только в таблице Dimensions. Как правило, в подобных случаях формализовать (запрограммировать) переименование фин.аналитик - невозможно. Эти справочники придется менять вручную. Например, таблица LedgerControlDimension PS: Надеюсь, Вы анализировали не только EDT с именем Dimension, но и все EDT созданные на его основе? В стандарте таких нет, но мало ли, что сделано конкретно у Вас.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
16.03.2012, 11:21 | #6 |
Участник
|
Владимир, если говорить про v3, то могли бы уточнить в каких еще таблицах нужно проверить/изменить аналитику?
|
|
19.03.2012, 16:53 | #8 |
Участник
|
Цитата:
X++: // Сканирую список таблиц, имеющих ЯВНУЮ ссылку на таблицу Dimensions while select TableName from xRefTableRelation group by TableName where xRefTableRelation.RelatedTableName == "Dimensions" { tableId = tableName2Id(xRefTableRelation.TableName); dictTable = new DictTable(tableId); (...) } Ну, и про таблицы с полями на базе DimensionCode + Num не стоит забывать. Это таблицы вроде InventJournalReportTable_RU LedgerControlDimension LedgerRRGDimensionInterval_RU Кроме того, следует иметь в виду, что не у всех таблиц можно просто заменить одно значение на другое. Возможно, потребуется сложение/удаление строк. Возможно, автоматизировать процесс замены в некоторых таблицах вообще нельзя. А есть еще таблицы очень большого размера без индекса по фин.аналитикам. Например, InventSettlement. Для таких таблиц модификацию лучше выполнять прямыми SQL-запросами. В противном случае, время выполнения катастрофически увелививается. Другими словами, часть таблиц Вы сможете найти и обновить автоматически, но часть придется исать и обновлять вручную.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: AX3 (1). |
11.03.2012, 18:11 | #9 |
Участник
|
|
|
12.03.2012, 10:43 | #10 |
Участник
|
Всем спасибо большое за ответы
|
|
19.03.2012, 16:30 | #11 |
Участник
|
Еще раз обращаю внимание на тот факт, что кроме собственно поля Dimension фин.аналитики могут быть представлены парой полей: DimensionCode + Num. И это возможно не только в таблице Dimensions. Соответственно, надо искать еще и EDT наследники от этих EDT.
Кроме того, возможна "кривая" кастомизация, когда надо просто знать, что вот это поле содержит значение фин.аналитики.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|