29.04.2010, 20:22 | #21 |
Участник
|
А то скоро для решения такого вопроса будут предлагать написать с нуля Аксапту 2010.
|
|
28.05.2010, 13:08 | #22 |
MCT
|
Цитата:
Сообщение от sukhanchik
А вообще почитайте про иерархию аналитик. Иерархия аналитик - это фактически перечень разрешенных значений аналитик. Т.е. можно задать перечень возможных значений, после чего нельзя будет выбрать запрещенную аналитику. А в зависимости от параметра "Активировать наборы" и сохранить запись с запрещенной аналитикой.
Для использования всего этого поставьте в параметрах главной книги параметр "Активировать наборы" (закладка Главная книга) в значение "При обновлении и разноске" в итоге - в закупке я могу сделать разноску без аналитик, в журнале ГК - без аналитик разноску сделать не могу. Это нормально? Разве тут не должно быть единообразия?
__________________
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. |
|
28.05.2010, 13:43 | #23 |
Участник
|
В журнале ГК выдается какая-то ошибка? Я когда настраивал стандартные иерархии не смог заставить систему контролировать заполнение конкретных аналитик (галка в параметрах работает для всех аналитик), приходилось делать доработку, включающую старые настройки аналитик для счетов ГК (в плане счетов) при использовании иерархий.
__________________
Ivanhoe as is.. |
|
28.05.2010, 14:38 | #24 |
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. |
|
29.05.2010, 00:45 | #25 |
Administrator
|
Цитата:
В журнале ГК сделали очень досадный баг в виде "упущенного" конфигурационного ключа. Дело в том, что в строке ЖГК (LedgerJournalTrans) существуют 2 набора аналитик: одни для счета (кстати - для корсчета никто аналитики и не думал делать почему-то) - это поле LedgerJournalTrans.Dimension и другие - для внутрихолдиногового учета.- поле LedgerJournalTrans.InterCoDimension. Проверка соответствия иерархии аналитики осуществляется сразу для двух полей (см метод LedgerJournalTrans.checkDimensions()). В проверке честно поставлено условие, что если конфигурационный ключ иерархии аналитик включен - то проверку выполнять. НО! Никто не позаботился о том, что если ключ внутрихолдингового учета выключен - то проверку по внутрихолдинговым аналитикам делать не надо - т.к. их нет! В связи с этим я изменил у себя код метода checkDimensions(): X++: public boolean checkDimensions(boolean _checkWriteValidation) { 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) && ok; if (isConfigurationkeyEnabled(configurationkeynum(LedgerAdvIntercompanyAccounting))) // Вот здесь не хватает проверки на конфигурационный ключ { dimensionSetCaller.parmDimensionFieldId(fieldnum(LedgerJournalTrans, InterCoDimension)); ok = appl.dimensionSetValidation(false, dimensionSetCaller.getCompanyId()).checkDimension(this, fieldnum(LedgerJournalTrans, InterCoDimension), _checkWriteValidation) && ok; } } return ok; }
__________________
Возможно сделать все. Вопрос времени |
|
29.05.2010, 00:53 | #26 |
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). |
29.05.2010, 18:21 | #27 |
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. |
|
29.05.2010, 20:59 | #28 |
Administrator
|
Цитата:
А... постараюсь повнимательнее глянуть
__________________
Возможно сделать все. Вопрос времени |
|
29.05.2010, 21:54 | #29 |
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. |
|
29.05.2010, 22:43 | #30 |
Administrator
|
Гм... тут дело-то не столько в технической реализации. Суть аналитик состоит в том, чтобы пометить некоторым образом операции, причем не одну-две - а как правило много (т.е. если к примеру, мы помечаем аналитиками "Подразделение", "Центр затрат", и т.д. операции - то количество операций, где аналитика счета (весь массив целиком) будет в точности совпадать с аналитикой корсчета (тоже весь массив целиком) будет гораздо меньше нежели количество отличающихся операций.
Поэтому для вводящего человека будет проще делать все однообразно - т.е. все полупроводками или все с корсчетами. Т.е. фактически корреспонденция будет отключена, хотя и галка будет стоять. Я согласен с Вами, что из моей фразы вытекает, что для создания полупроводок нужно снимать флажок, а это не так (спасибо за замечание - сам действительно не проверял). Но тем не менее, считаю, что если при включенном функционале его не использовать - то фактически можно считать, что функционал отключен.
__________________
Возможно сделать все. Вопрос времени |
|
29.05.2010, 23:49 | #31 |
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. |
|
26.07.2010, 16:57 | #32 |
MCT
|
вернусь к вопросу:
почему все-таки правила набора аналитик по-разному действуют на настроенные сущности: 1. заказ на покупку и заказ на продажу - "мягкий" подход: в lookup-ах предлагаются на первой закладке настроенные значения из набора аналитик. Но я могу оставлять аналитики пустыми или выбирать любые другие значения не из набора аналитик (с закладки "Все") 2. журнал ГК, журналы в модулях клиент/поставщик - жесткая проверка: если оставлю аналитики пустыми или выбираю значения, не соответствующие набору (с закладки "Все"), то при разноске получаю ошибку. Почему проверка набора аналитик для заказа/закупки отличается от проверки набора аналитик для Журнала ГК? Не берусь судить, что правильнее, мягка проверка (как в заказе/закупка) или жесткая проверка (как в журнале ГК), но разве тут не должно быть однообразия? Мои настройки: Заблокировать финансовую аналитику?
__________________
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. |
|
28.07.2010, 16:06 | #33 |
Модератор
|
Цитата:
Сообщение от 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). |
28.07.2010, 16:12 | #34 |
Модератор
|
Параметр для проверки пустых аналитик "Главная книга / Настройка / Параметры - "Отклонять пустые аналитики". (LedgerParameters.DenyBlankDimensions ) Не используется в \Classes\DimensionSetValidation
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|