|
![]() |
#1 |
Administrator
|
и еще вдогонку. Штатная проверка пустых аналитик действует сразу на все таблицы по всем аналитикам. Поэтому ее неудобно устанавливать. Я сделал аналог штатной проверки - для этого мне пришлось добавить всего одно поле DenyEmptyDimension в таблицу DimensionSetRuleTable (плюс вывести галку в нижний грид формы правил набора аналитик) и написать буквально 5 строчек кода в \Classes\DimensionSetValidation\checkDimension:
X++: public boolean checkDimension(Common _caller, fieldId _dimensionFieldId, boolean _checkWriteValidation, boolean _silent = false) { ........ if (validateDimension != emptyDimension) { if (_silent) { isValid = isValid && this.isValidCombination(setId, hierarchyId, validateDimension, prefixDimension); } else { isValid = isValid && this.checkCombination(setId, hierarchyId, validateDimension, prefixDimension); } } //Проверка на пустую аналитику --> else { if (_checkWriteValidation && dimensionSetRuleSearch.dimensionSetRuleTable().DenyEmptyDimension) { isValid = checkFailed("@SYS79468"); } } // Проверка на пустую аналитику <-- ........ }
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 29.05.2010 в 00:59. |
|
|
За это сообщение автора поблагодарили: gl00mie (3). |
![]() |
#2 |
MCT
|
Цитата:
![]() Цитата:
Проверка соответствия иерархии аналитики осуществляется сразу для двух полей (см метод LedgerJournalTrans.checkDimensions()). В проверке честно поставлено условие, что если конфигурационный ключ иерархии аналитик включен - то проверку выполнять. НО! Никто не позаботился о том, что если ключ внутрихолдингового учета выключен - то проверку по внутрихолдинговым аналитикам делать не надо - т.к. их нет!
В связи с этим я изменил у себя код метода checkDimensions(): Цитата:
Сообщение от sukhanchik
![]() и еще вдогонку. Штатная проверка пустых аналитик действует сразу на все таблицы по всем аналитикам. Поэтому ее неудобно устанавливать. Я сделал аналог штатной проверки - для этого мне пришлось добавить всего одно поле DenyEmptyDimension в таблицу DimensionSetRuleTable (плюс вывести галку в нижний грид формы правил набора аналитик) и написать буквально 5 строчек кода в \Classes\DimensionSetValidation\checkDimension:
Добавление таким образом галки позволило мне применить правило к целому набору (но не всему массиву) на уровне конкретной таблицы (а не всех таблиц) но хочется как раз, чтобы аналитики не были обязательны. Т.е. хочу заполняю, хочу не заполняю. Как в закупке - могу спокойно разнеси закупку с пустыми фин аналитиками.
__________________
Sometimes there is a moment as you are awakening - when you become aware of the real world around you, - but you are still dreaming. - You may think you can fly but you do better not try. |
|
![]() |
#3 |
Administrator
|
Цитата:
А... постараюсь повнимательнее глянуть
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#4 |
MCT
|
вовсе нет - полупроводки отлично работают при включенной корреспонденции.
__________________
Sometimes there is a moment as you are awakening - when you become aware of the real world around you, - but you are still dreaming. - You may think you can fly but you do better not try. |
|
![]() |
#5 |
Administrator
|
Гм... тут дело-то не столько в технической реализации. Суть аналитик состоит в том, чтобы пометить некоторым образом операции, причем не одну-две - а как правило много (т.е. если к примеру, мы помечаем аналитиками "Подразделение", "Центр затрат", и т.д. операции - то количество операций, где аналитика счета (весь массив целиком) будет в точности совпадать с аналитикой корсчета (тоже весь массив целиком) будет гораздо меньше нежели количество отличающихся операций.
Поэтому для вводящего человека будет проще делать все однообразно - т.е. все полупроводками или все с корсчетами. Т.е. фактически корреспонденция будет отключена, хотя и галка будет стоять. Я согласен с Вами, что из моей фразы вытекает, что для создания полупроводок нужно снимать флажок, а это не так (спасибо за замечание - сам действительно не проверял). Но тем не менее, считаю, что если при включенном функционале его не использовать - то фактически можно считать, что функционал отключен.
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#6 |
Модератор
|
![]() Цитата:
Сообщение от sukhanchik
![]() и еще вдогонку. Штатная проверка пустых аналитик действует сразу на все таблицы по всем аналитикам. Поэтому ее неудобно устанавливать. Я сделал аналог штатной проверки - для этого мне пришлось добавить всего одно поле DenyEmptyDimension в таблицу DimensionSetRuleTable (плюс вывести галку в нижний грид формы правил набора аналитик) и написать буквально 5 строчек кода в \Classes\DimensionSetValidation\checkDimension:
X++: public boolean checkDimension(Common _caller, fieldId _dimensionFieldId, boolean _checkWriteValidation, boolean _silent = false) { ........ if (validateDimension != emptyDimension) { if (_silent) { isValid = isValid && this.isValidCombination(setId, hierarchyId, validateDimension, prefixDimension); } else { isValid = isValid && this.checkCombination(setId, hierarchyId, validateDimension, prefixDimension); } } //Проверка на пустую аналитику --> else { if (_checkWriteValidation && dimensionSetRuleSearch.dimensionSetRuleTable().DenyEmptyDimension) { isValid = checkFailed("@SYS79468"); } } // Проверка на пустую аналитику <-- ........ } метод вызывается с параметром _checkEmptyDimension X++: public boolean checkDimension(Common _caller, fieldId _dimensionFieldId, boolean _checkWriteValidation, boolean _silent = false, boolean _checkEmptyDimension = false, boolean _isPrefix = false) X++: public boolean checkDimensions(boolean _checkWriteValidation) { #LedgerJournalFaults #define.ValidateEmptyDimensions(true) boolean ok = true; DimensionSetCaller dimensionSetCaller; ; if (isConfigurationkeyEnabled(configurationkeynum(DimensionSetHierarchy))) { dimensionSetCaller = DimensionSetCaller::construct(this, fieldnum(LedgerJournalTrans, Dimension)); ok = appl.dimensionSetValidation(false, dimensionSetCaller.getCompanyId()).checkDimension(this, fieldnum(LedgerJournalTrans, Dimension), _checkWriteValidation, false, #ValidateEmptyDimensions) && ok; if (ok) { // InterCoDimension field should only be set when the two accounts // are different or there is an offset account. X++: // don't check empty dimensions unless expressely told to if (validateDimension != emptyDimension || _checkEmptyDimension) { if (_silent) { isValid = this.isValidCombination(setId, hierarchyId, validateDimension, prefixDimension, _isPrefix) && isValid; } else { isValid = this.checkCombination(_caller, _dimensionFieldId, setId, hierarchyId, validateDimension, dimensionSetRule.RefLedgerAccount, prefixDimension, _isPrefix) && isValid; } } Стек вызова. Код: [s] \Classes\DimensionSetValidation\checkCombination 36 [s] \Classes\DimensionSetValidation\checkDimension 123 [s] \Data Dictionary\Tables\LedgerJournalTrans\Methods\checkDimensions 13 [s] \Classes\LedgerJournalCheckPost\checkJournal 212 [s] \Classes\LedgerJournalCheckPost\run 72 [c] \Classes\LedgerJournalCheck\main 41 [c] \Classes\FormFunctionButtonControl\Clicked
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
|
За это сообщение автора поблагодарили: sukhanchik (2). |
![]() |
#7 |
Модератор
|
Параметр для проверки пустых аналитик "Главная книга / Настройка / Параметры - "Отклонять пустые аналитики". (LedgerParameters.DenyBlankDimensions ) Не используется в \Classes\DimensionSetValidation
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
![]() |
#8 |
Участник
|
Цитата:
Можно также закрыть ее для разноски, что тоже не устраивает.
Или нужно чтобы её вообще не видели? Тогда - RLS. |
|
![]() |
#9 |
Участник
|
Для настройки RLS нужно знать исчерпывающий список мест, где аналитику не нужно видеть. Вопрос же был поставлен так: ни в заказе, ни в закупке, ни где либо еще. Ключевое слово - "ни где либо еще". То есть заранее неизвестно, либо надо полный-преполный список составлять по всей Аксапте. Лучше же иметь возможность просто отключить, и всё.
|
|
|
За это сообщение автора поблагодарили: Rezervforall (1). |