|
![]() |
#1 |
Участник
|
"Доступ фильтр" из "Прав доступа"
это примочка для SQL Option я посмотрел форму 113 Финансы\Бюджеты вероятнее всего дело в следующем Этот фильтр безопасности стоит скажем на таблице 96 (G/L Budget Entry). где-то в в форме мы делаем для таблицы 374 (G/L Acc. Budget Buffer) CALCFIELDS для поля "Budgeted Amount", которое соответственно построено по таблице 96. Перед вычислением поля тоже можно соответственно наложить фильтры, т.е. присвоить "G/L Acc. Budget Buffer"."Budget Dimension 2 Filter" какое-то значение или не присвоить. Если фильтры перед CALCFIELDS не накладывались, т.е. считаем-вычисляем поле как бы по всему диапазону, а таблица по которой считаем имеет фильтр безопасности ее ограничивающий, то получается что при CALCFIELDS пытаемся залесть в закрытую зону и идет сбой. Это очевидно баг. Единственное что можно сделать - так подправить код формы 113, что бы расхождения между фильтрами перед вычислением "G/L Acc. Budget Buffer".CALCFIELDS("Budget Dimension 2 Filter") и фильтром безопасности по "G/L Budget Entry" не возникало я сделал так: 1. в роли наложил фильтры безопасности на 2 таблицы - Table Data 96 Фин. Бюджет Операция G/L Budget Entry: Бюджет Измерение 2 Код = ЗИМА -Table Data 374 Фин. Счет Бюджет Буфер G/L Acc. Budget Buffer: Бюджет Измерение 2 Фильтр =ЗИМА 2. в форме 113 добавил некоторый код (исправления смотри между ALFI) ******* - на OpenForm() CurrForm.GlobalDim1Filter.ENABLED := (GLSetup."Global Dimension 1 Code" <> '') AND (GLAccBudgetBuf.GETFILTER("Global Dimension 1 Filter") = ''); CurrForm.GlobalDim2Filter.ENABLED := (GLSetup."Global Dimension 2 Code" <> '') AND (GLAccBudgetBuf.GETFILTER("Global Dimension 2 Filter") = ''); // ALFI > //до этого объявил 4 глобальные переменные BudgetDim1PremissionFilter (2,3,4) BudgetDim1PremissionFilter := FALSE; BudgetDim2PremissionFilter := FALSE; BudgetDim3PremissionFilter := FALSE; BudgetDim4PremissionFilter := FALSE; IF GLAccBudgetBuf.GETFILTER("Budget Dimension 1 Filter") <> '' THEN BEGIN BudgetDim1Filter := GLAccBudgetBuf.GETFILTER("Budget Dimension 1 Filter"); BudgetDim1PremissionFilter := TRUE; END; IF GLAccBudgetBuf.GETFILTER("Budget Dimension 2 Filter") <> '' THEN BEGIN BudgetDim2Filter := GLAccBudgetBuf.GETFILTER("Budget Dimension 2 Filter"); BudgetDim2PremissionFilter := TRUE; END; IF GLAccBudgetBuf.GETFILTER("Budget Dimension 3 Filter") <> '' THEN BEGIN BudgetDim3Filter := GLAccBudgetBuf.GETFILTER("Budget Dimension 3 Filter"); BudgetDim3PremissionFilter := TRUE; END; IF GLAccBudgetBuf.GETFILTER("Budget Dimension 4 Filter") <> '' THEN BEGIN BudgetDim4Filter := GLAccBudgetBuf.GETFILTER("Budget Dimension 4 Filter"); BudgetDim4PremissionFilter := TRUE; END; CurrForm.BudgetDim1Filter.ENABLED := (GLAccBudgetBuf.GETFILTER("Budget Dimension 1 Filter") = ''); CurrForm.BudgetDim2Filter.ENABLED := (GLAccBudgetBuf.GETFILTER("Budget Dimension 2 Filter") = ''); CurrForm.BudgetDim3Filter.ENABLED := (GLAccBudgetBuf.GETFILTER("Budget Dimension 3 Filter") = ''); CurrForm.BudgetDim4Filter.ENABLED := (GLAccBudgetBuf.GETFILTER("Budget Dimension 4 Filter") = ''); // ALFI < ValidateBudgetName; ******* - в BudgetDrillDown() WITH GLBudgetEntry DO IF (GETFILTER("Global Dimension 1 Code") <> '') OR (GETFILTER("Global Dimension 2 Code") <> '') OR (GETFILTER("Business Unit Code") <> '') THEN SETCURRENTKEY("Budget Name","G/L Account No.","Business Unit Code","Global Dimension 1 Code") ELSE SETCURRENTKEY("Budget Name","G/L Account No.",Date); // ALFI > GLBudgetEntry.FILTERGROUP(4); // это что бы провалившись в суммы не могли сделать Вид\Показать все // ALFI < FORM.RUN(0,GLBudgetEntry); ******* - в ValidateBudgetName() //закоментировал ALFI { IF PrevGLBudgetName.Name <> '' THEN BEGIN IF (GLBudgetName."Budget Dimension 1 Code" <> PrevGLBudgetName."Budget Dimension 1 Code") THEN BudgetDim1Filter := ''; IF (GLBudgetName."Budget Dimension 2 Code" <> PrevGLBudgetName."Budget Dimension 2 Code") THEN BudgetDim2Filter := ''; IF (GLBudgetName."Budget Dimension 3 Code" <> PrevGLBudgetName."Budget Dimension 3 Code") THEN BudgetDim3Filter := ''; IF (GLBudgetName."Budget Dimension 4 Code" <> PrevGLBudgetName."Budget Dimension 4 Code") THEN BudgetDim4Filter := ''; END; } // ALFI > IF PrevGLBudgetName.Name <> '' THEN BEGIN IF (GLBudgetName."Budget Dimension 1 Code" <> PrevGLBudgetName."Budget Dimension 1 Code") AND (NOT BudgetDim1PremissionFilter) THEN BudgetDim1Filter := ''; IF (GLBudgetName."Budget Dimension 2 Code" <> PrevGLBudgetName."Budget Dimension 2 Code") AND (NOT BudgetDim2PremissionFilter) THEN BudgetDim2Filter := ''; IF (GLBudgetName."Budget Dimension 3 Code" <> PrevGLBudgetName."Budget Dimension 3 Code") AND (NOT BudgetDim3PremissionFilter) THEN BudgetDim3Filter := ''; IF (GLBudgetName."Budget Dimension 4 Code" <> PrevGLBudgetName."Budget Dimension 4 Code") AND (NOT BudgetDim4PremissionFilter) THEN BudgetDim4Filter := ''; END; // ALFI < //закоментировал ALFI { GLAccBudgetBuf.SETFILTER("Budget Dimension 1 Filter",BudgetDim1Filter); GLAccBudgetBuf.SETFILTER("Budget Dimension 2 Filter",BudgetDim2Filter); GLAccBudgetBuf.SETFILTER("Budget Dimension 3 Filter",BudgetDim3Filter); GLAccBudgetBuf.SETFILTER("Budget Dimension 4 Filter",BudgetDim4Filter); } // ALFI > IF (NOT BudgetDim1PremissionFilter) THEN GLAccBudgetBuf.SETFILTER("Budget Dimension 1 Filter",BudgetDim1Filter); IF (NOT BudgetDim2PremissionFilter) THEN GLAccBudgetBuf.SETFILTER("Budget Dimension 2 Filter",BudgetDim2Filter); IF (NOT BudgetDim3PremissionFilter) THEN GLAccBudgetBuf.SETFILTER("Budget Dimension 3 Filter",BudgetDim3Filter); IF (NOT BudgetDim4PremissionFilter) THEN GLAccBudgetBuf.SETFILTER("Budget Dimension 4 Filter",BudgetDim4Filter); // ALFI < //закоментировал ALFI { CurrForm.BudgetDim1Filter.ENABLED := (GLBudgetName."Budget Dimension 1 Code" <> ''); CurrForm.BudgetDim2Filter.ENABLED := (GLBudgetName."Budget Dimension 2 Code" <> ''); CurrForm.BudgetDim3Filter.ENABLED := (GLBudgetName."Budget Dimension 3 Code" <> ''); CurrForm.BudgetDim4Filter.ENABLED := (GLBudgetName."Budget Dimension 4 Code" <> ''); } // ALFI > IF (NOT BudgetDim1PremissionFilter) THEN CurrForm.BudgetDim1Filter.ENABLED := (GLBudgetName."Budget Dimension 1 Code" <> ''); IF (NOT BudgetDim2PremissionFilter) THEN CurrForm.BudgetDim2Filter.ENABLED := (GLBudgetName."Budget Dimension 2 Code" <> ''); IF (NOT BudgetDim3PremissionFilter) THEN CurrForm.BudgetDim3Filter.ENABLED := (GLBudgetName."Budget Dimension 3 Code" <> ''); IF (NOT BudgetDim4PremissionFilter) THEN CurrForm.BudgetDim4Filter.ENABLED := (GLBudgetName."Budget Dimension 4 Code" <> ''); // ALFI < PrevGLBudgetName := GLBudgetName; ..... |
|
|
![]() |
||||
Тема | Ответов | |||
Navision Attain через Citrix | 2 | |||
Серьезно про RBO (Attain) | 8 | |||
Переход на Navision Attain | 3 | |||
attain - Переход на attain | 8 | |||
1С и Attain | 2 |
|