AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.07.2010, 09:30   #1  
Programmer2 is offline
Programmer2
Участник
 
7 / 10 (1) +
Регистрация: 25.06.2010
Компонент MatrixBox имеет название Matrix.
Свойство MatrixSourceTable у элемента MatrixBox = таблица Date
А что это за таблица Date? Там уже есть данные или нужно будет делать вставку в эту таблицу?

В левой части MatrixBox указан столбец "Сотрудник" из таблицы PwExecution.
В matrixheader SourceExpr = dtMatrixDate (переменная типа Date)
Для строк (в правой части) SourceExpr указан столбец "Сумма" из таблицы PwExecution.

"в качестве SourceExpr надо указать переменную, которую вы будете присваивать в OnAfterGetRecord матрицы, находя соответствующую запись в таблице PwExecution"
Не могу сообразить как это сделать мне в Matrix - OnAfterGetRecord() ??
Старый 14.07.2010, 10:45   #2  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Programmer2 Посмотреть сообщение
Компонент MatrixBox имеет название Matrix.
Свойство MatrixSourceTable у элемента MatrixBox = таблица Date
А что это за таблица Date? Там уже есть данные или нужно будет делать вставку в эту таблицу?
Это виртуальная таблица навижен. Вставлять туда записи не нужно. Они там уже "есть". Объявите в окне глобальных переменных, посмотрите структуру, поиграйтесь...

Цитата:
Сообщение от Programmer2 Посмотреть сообщение
Не могу сообразить как это сделать мне в Matrix - OnAfterGetRecord() ??
Выделяете элемент управления MatrixBox, по F9 переходите в окно кода и триггеры этого элемента. Среди них будет и OnAfterGetRecord(). Пишете туда код по подсчету значения в вычисляемом поле (сумма у вас ведь выч поле), накладывая на Date Filter (наверняка используется в формуле) фильтр по конкретной дате Матрикса, по его текущему значению. Если вводить значения в ячейки матрикса не нужно я бы сделал функцию, которая бы возвращала значение суммы, посчитанное на день. Это позволит не париться с переменными и тем, в какие триггеры вписывать код. Просто в свойство поля матрикса SourceExpr сразу пишете значение вашей функции GetEmplAmount(). Но это только в случае, когда данные надо только отображать.
Старый 19.07.2010, 08:40   #3  
Programmer2 is offline
Programmer2
Участник
 
7 / 10 (1) +
Регистрация: 25.06.2010
Спасибо за разъяснения и подсказки, разобрался.

Компонент MatrixBox имеет название Matrix.
Свойство MatrixSourceTable у элемента MatrixBox = таблица Date

В правой части в столбце в свойстве SourceExpr = CurrForm.Matrix.MatrixRec."Period Start".
На "Form - OnOpenForm()" или до открытия формы в функции ставим фильтр
CurrForm.Matrix.MatrixRec.SETRANGE("Period Type",2); (0 -день, 2 - месяц)
CurrForm.Matrix.MatrixRec.SETFILTER(CurrForm.Matrix.MatrixRec."Period Start",'>=%1 & <=%2',dtStart_MatrixDate,dtEnd_MatrixDate);
Т.о. в столбце появляются нужные даты.

В правой части (где будут отображаться строки) SourceExpr = decMatrixSum.
decMatrixSum - глобальная переменная типа Decimal.
В триггере "Matrix - OnAfterGetRecord()" пишем небольшой код
recPwExecution - запись таблицы PwExecution
recPwExecution.RESET;
recPwExecution.SETRANGE(recPwExecution.HR_Employee,HR_Employee);
recPwExecution.SETFILTER(recPwExecution.PA_WorkDate,'>=%1 & <=%2',CurrForm.Matrix.MatrixRec."Period Start"
,CurrForm.Matrix.MatrixRec."Period End");
IF recPwExecution.FINDFIRST THEN decMatrixSum := recPwExecution.PA_ActualOutput
ELSE decMatrixSum :=0;

В рез-те получаем то, что нужно:
Сотрудник| 2010-08-02|
E0000110 | 100 |
E0001486 | 200 |
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:55.