01.06.2009, 13:54 | #1 |
Участник
|
Ax3.0: Зарплата и Time
Пишу код
X++: select * from payTblTrans1 where (payTblTrans1.EmplId == emplTable.EmplId && (payTblTrans1.SourceDate >= fromDate && payTblTrans1.SourceDate <= toDate )); t1 = payTblTrans1.TimeTime9; Смотрю в отладчике: 1. раскрываю payTblTrans1 и он находит сумму часов и дней 2. пишу показать payTblTrans1.TimeTime9 пишет 0 3. а вот this.payTblTrans1.TimeTime9 показывает сумму часов и дней. 4. если запросить payTblTrans1.TimeTime15 (это уже другое время), то он покажет суиму часов и дней. Такие проблемы есть только у некоторых Time. Почему? |
|
01.06.2009, 14:16 | #2 |
MCTS
|
В приложении, в котором вы программируете, не были корректно добавлены таймы и в данной таблице не создались поля TimeTimeХ, где Х - больше 7...
__________________
farlander.ru |
|
01.06.2009, 14:42 | #3 |
Участник
|
Я догадалась, что что-то некорректно. Просто странно, ведь в этой таблице есть такие поля. Т.е. в AOT ее открываю и там есть TimeTime9. Где еще он должен был быть добавлен?
Где можно прочесть как корректно добавлять времена. |
|
02.06.2009, 07:01 | #4 |
MCTS
|
Таймы создаются в форме Справочник времен (Расчеты с персоналом / Учет рабочего времени / Настройка). При заведении тайма срабатывает код, который создает в определенных таблицах новые поля...
__________________
farlander.ru |
|
02.06.2009, 09:29 | #5 |
Участник
|
Мда...
У меня следующий прикол: 1. В самом приложении вижу два поля TimeTime9 с разными ID 2. Открываю SQL и смотрю структуру таблицы TimeXime9 и TimeTime9. Такая фигня на всех проблемных временах. Пыталась из Аксапты удалить поле. Начинает ругаться на несоответствие справочника структуре RPayTblTrans. 1. Я удаляла вначале первый дубликат - поле ругалось. 2. Восстановила базу и попробывала удалить второе-дубликат поле - ругается 3. Удалила оба поля - глобальная компиляция - создала поле, т.к. он его не создал - ругается 4. Глобальная компиляция без удаления полей - не ругается, но и не помогает Что еще можно попробывать? |
|
02.06.2009, 09:52 | #6 |
MCTS
|
Да видимо по новой АХ развернуть, создать корректно таймы и залить данные...
__________________
farlander.ru |
|
02.06.2009, 09:58 | #7 |
Участник
|
А что в SQL в таблице SQLDictionary для этой таблицы и полей?
Еще можно воспользоваться Администрированием SQL (Администрирование - Периодические операции - Администрирование SQL и там Проверка-Синхронизация) - чинит несоответствие в структуре данных приложения и БД. Мне помогало всякие конфликты устранять без потери данных и тем более переустановки. |
|
02.06.2009, 10:59 | #8 |
Участник
|
Синхронизация - это первая мысль. Не помогло.
По поводу удаления и пересоздания. Совсем не хочется. У меня они работают с перерывом в 4 часа. Т.е. я не могу отрубить всех пользователей от базы. Может еще есть какое решение? Попробывала следующее: 1. Удаление поле из RPayTblTrans 2. Удаление через SQL этого поле из таблицы Справочник времен 3. Синхронизация 4. Повторное создание поля в справочник времен Нигде не ругается, но запускаю формирование отчета и он пишет: не найде поле с ID таким-то. Ругается также при открытии табеля на fieldName2Id(tableNum(RPayTblTrans),#DayFieldPrefix + rPayTimeGroupMember.PayCalendarTimeCode). Почему не могу понять. Как же тогда удалять правильно? Последний раз редактировалось Arahnid; 02.06.2009 в 12:33. |
|
02.06.2009, 12:28 | #9 |
Ищущий знания...
|
Цитата:
Такая ругань обыно бывает, если в таблицу добавили новое поле, а в мэп нет. В дальнейшем данные присваиваются в Map и в этот момент программа как правило ругается.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
02.06.2009, 13:27 | #10 |
Участник
|
Дело не в map.
Проблема в том, что у меня два поля в аксапте с одним именем, но разными id. Они их не воспринимает. |
|
02.06.2009, 13:33 | #11 |
Ищущий знания...
|
Цитата:
Переименовать одно из полей. Но тогда придется искать все места где оно используется, и справлять. Если места уже известны, то проще
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
02.06.2009, 15:37 | #12 |
Участник
|
Это жестко.
По итогам обсуждения 2 предложения: 1. Пересоздать таблицу времен и перегружать все данные 2. Переименовать время, а потом искать упоминания Мне кажется это очень жестокие предложения. Есть ли более мягкие решения? Последний раз редактировалось Arahnid; 02.06.2009 в 15:49. |
|
03.06.2009, 13:44 | #13 |
Участник
|
Выполнила такие действия.
1. Экспорт таблиц1: RPayTblDayHourTrans RPayTblTrans RPayTimeLine RPayCalendarDateLine (не виртуал) 2. Экспорт таблиц2: RPayTimeGroupMember (виртуал) 3. В Analyzer use AxTest delete from bmssa.RPAYTBLDAYHOURTRANS delete from bmssa.RPAYTBLTRANS delete from bmssa.RPAYTIMELINE delete from bmssa.RPAYCALENDARDATELINE delete from bmssa.RPAYTIMEGROUPMEMBER 4. В Аксапте удалить все времена в таблице Коды времен, начиная с Time8 5. В Аксапте удалить все времена в таблице Справочник времен, начиная с 8 6. Проверить, что RPayTblTrans не осталось лишних полей типа TimeTimeX, Day_TimeX 7. Провести Компиляцию RPayTblTrans, полную Синхронизацию 8. Перезайти в Аксапту и создать в справочнике Справочник времен, Коды времен руками все времена 9. Импорт таблиц 2 10. Импорт таблиц 1 11. Перевыбрать в строках Счетчика Times, начиная с 8. Потеряна связь со справочником времен. 12. Синхронизация Попробывала посчитать больничные, отпуска, командир, табеля, расчет всех процедур. Ошибок нет. В RPayTblTrans нет дублирующих полей, TimeXime убрались. Отчет при обращении payTblTrans.TimeTime9 корректно отражает часы. Кто-нибудь может подсказать, где подвох с перезаливкой табеля и строк к нему. Может какие таблицы используют recId? Может еще что протестировать? |
|
04.06.2009, 07:13 | #14 |
MCTS
|
Дадада... строки табеля связаны с журналом табеля через refRecId...
__________________
farlander.ru |
|
04.06.2009, 11:03 | #15 |
Участник
|
RPayTblJournal не трогала, но он корректно подвязался к RPAYTBLTRANS и RPAYTBLDAYHOURTRANS.
|
|
Теги |
ax3.0, расчеты с персоналом, табель |
|
|