|  17.10.2012, 04:42 | #1 | 
| Участник | Ошибка TwC при использовании .setTmp() 
			
			Создавая вот такой статический метод на классе, получаем ошибку при проверке Bect Practice X++: static void Job6(Args _args) { CustTable custTable; ; custTable.setTmp(); } X++: TwC: Validate data inserted into temporary table is fetched using record level security. Dangerous API xRecord.setTmp used. | 
|  | 
|  17.10.2012, 05:12 | #2 | 
| Участник | 
			
			Попробуйте добавить следующую строку: X++: ct.recordLevelSecurity(true); | 
|  | 
|  17.10.2012, 05:17 | #3 | 
| Участник | 
			
			В АХ 2012 у меня кстати не получилось воспроизвести такую ошибку, видимо после изменения security framework ее убрали
		 | 
|  | 
|  17.10.2012, 05:21 | #4 | 
| Участник | 
			
			Microsoft Dynamics AX X++ Security White Paper Цитата: 
		
			New Best Practice Rules The compiler records a best practices error if the following is used in X++: • xRecord.setTmp() • SysTableLookup.parmTmp This is an intermediary dangerous class::method because it is passed a temporary table, and cannot validate whether RecordLevelSecurity was used when it populates the temporary table. | 
|  | 
|  17.10.2012, 07:25 | #5 | 
| Участник | Цитата: А вы создавали именно статический метод на классе? просто на джобах к примеру BP вообще не работает kav, ну с SysTableLookup.parmTmp, допустим понятно, возможно дейтвительно нехорошо выводить в лукапах поля без секьюрити, но что не так просто с xRecord.setTmp(), чем он опасен то. ведь при наполнении его записями все recordLevelSecurity будут работать | 
|  | 
|  17.10.2012, 07:37 | #6 | 
| Участник | 
			
			Тю. Вы ж сами в изначальном посте написали - создаем джоб, компилим с BP, получаем ошибку. Воспроизвел, //BP Deviation documented добавил, все ОК. recordLevelSecurity() не влияет, но его стоит использовать при заполнении, так как, насколько я помню, в Х++ по умолчанию recordLevelSecurity в query не включен, то есть выбраны будут все записи. ct, кстати, я имел ввиду таблицы, из которой заполняются данными, а не ту, которая является временной. | 
|  | 
|  17.10.2012, 08:19 | #7 | 
| Участник | Цитата: Возможно, отмечаем таблицу Журнал платежей временной, создаем запись, выгружаем в банк-клиент. Записей в системе, кто создал удалил - нет. В этом случае recordLevelSecurity можно использовать, как проверку на возможность удаления. | 
|  | 
|  11.12.2013, 12:39 | #8 | 
| Участник | 
			
			Мне помогло перед setTmp() - использования //BP Deviation documented
		 | 
|  | 
| Теги | 
| ax2012 | 
|  | 
| 
 |