|
14.07.2010, 09:30 | #1 |
Участник
|
Компонент 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 |
Участник
|
Цитата:
Выделяете элемент управления MatrixBox, по F9 переходите в окно кода и триггеры этого элемента. Среди них будет и OnAfterGetRecord(). Пишете туда код по подсчету значения в вычисляемом поле (сумма у вас ведь выч поле), накладывая на Date Filter (наверняка используется в формуле) фильтр по конкретной дате Матрикса, по его текущему значению. Если вводить значения в ячейки матрикса не нужно я бы сделал функцию, которая бы возвращала значение суммы, посчитанное на день. Это позволит не париться с переменными и тем, в какие триггеры вписывать код. Просто в свойство поля матрикса SourceExpr сразу пишете значение вашей функции GetEmplAmount(). Но это только в случае, когда данные надо только отображать. |
|
19.07.2010, 08:40 | #3 |
Участник
|
Спасибо за разъяснения и подсказки, разобрался.
Компонент 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 | |
|